张延森 3 年前
父节点
当前提交
b607971c88
共有 10 个文件被更改,包括 374 次插入27 次删除
  1. 1
    0
      .env.development
  2. 1
    0
      .env.production
  3. 3
    1
      package.json
  4. 1
    1
      public/index.html
  5. 二进制
      public/wx.jpg
  6. 6
    18
      src/App.vue
  7. 222
    0
      src/pages/index/index.vue
  8. 39
    0
      src/utils/request.js
  9. 10
    1
      vue.config.js
  10. 91
    6
      yarn.lock

+ 1
- 0
.env.development 查看文件

1
+VUE_APP_SERVER=

+ 1
- 0
.env.production 查看文件

1
+VUE_APP_SERVER=http://15-puzzle.njyunzhi.com

+ 3
- 1
package.json 查看文件

18
     "@vue/cli-plugin-eslint": "~5.0.0",
18
     "@vue/cli-plugin-eslint": "~5.0.0",
19
     "@vue/cli-service": "~5.0.0",
19
     "@vue/cli-service": "~5.0.0",
20
     "eslint": "^7.32.0",
20
     "eslint": "^7.32.0",
21
-    "eslint-plugin-vue": "^8.0.3"
21
+    "eslint-plugin-vue": "^8.0.3",
22
+    "less": "^4.1.2",
23
+    "less-loader": "^10.2.0"
22
   },
24
   },
23
   "eslintConfig": {
25
   "eslintConfig": {
24
     "root": true,
26
     "root": true,

+ 1
- 1
public/index.html 查看文件

5
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
5
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
6
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
7
     <link rel="icon" href="<%= BASE_URL %>favicon.ico">
7
     <link rel="icon" href="<%= BASE_URL %>favicon.ico">
8
-    <title><%= htmlWebpackPlugin.options.title %></title>
8
+    <title>16宫格最优步数计算工具 - 云致</title>
9
   </head>
9
   </head>
10
   <body>
10
   <body>
11
     <noscript>
11
     <noscript>

二进制
public/wx.jpg 查看文件


+ 6
- 18
src/App.vue 查看文件

1
 <template>
1
 <template>
2
-  <img alt="Vue logo" src="./assets/logo.png">
3
-  <HelloWorld msg="Welcome to Your Vue.js App"/>
2
+  <PageIndex />
4
 </template>
3
 </template>
5
 
4
 
6
-<script>
7
-import HelloWorld from './components/HelloWorld.vue'
8
-
9
-export default {
10
-  name: 'App',
11
-  components: {
12
-    HelloWorld
13
-  }
14
-}
5
+<script setup>
6
+  import PageIndex from './pages/index/index.vue';
15
 </script>
7
 </script>
16
 
8
 
17
 <style>
9
 <style>
18
-#app {
19
-  font-family: Avenir, Helvetica, Arial, sans-serif;
20
-  -webkit-font-smoothing: antialiased;
21
-  -moz-osx-font-smoothing: grayscale;
22
-  text-align: center;
23
-  color: #2c3e50;
24
-  margin-top: 60px;
10
+html, body, #app {
11
+  height: 100%;
12
+  margin: 0;
25
 }
13
 }
26
 </style>
14
 </style>

+ 222
- 0
src/pages/index/index.vue 查看文件

1
+<template>
2
+  <h2 style="text-align:center">16宫格最优步数计算工具</h2>
3
+  <div>
4
+    <div class="order-no">单号: {{ orderNo }}</div>
5
+    <p style="text-align: center">单号很重要, 您需要用它来查询结果!!!</p>
6
+    <div class="box">
7
+      <input v-for="i in size" type="text" :key="i" :value="values[i - 1]" @input="handleInput($event, i - 1)">
8
+    </div>
9
+    <div class="tip">请按照待解密属性填写 1 - 15 数字, 没有则不填</div>
10
+    <!-- <div class="email">
11
+      <label for="">邮箱*</label>
12
+      <input type="text" :value="email" @input="handleEmail">
13
+    </div> -->
14
+    <div class="btns">
15
+      <button @click="handleSumbit">确定</button>
16
+      <button @click="handleReset">重置</button>
17
+    </div>
18
+    <div class="pay" v-html="payForm"></div>
19
+  </div>
20
+  <div>
21
+    <h3 style="text-align:center">支付成功之后, 请通过单号查询结果</h3>
22
+    <div class="query">
23
+      <label for="">单号</label>
24
+      <input type="text" v-model="queryNo">
25
+      <button @click="handleQuery">查询</button>
26
+    </div>
27
+    <div class="answer">
28
+      <div v-for="(it, inx) in answerList" :key="inx">
29
+        <span>{{inx + 1}} : </span>
30
+        <font color="red">{{it}}</font>
31
+      </div>
32
+    </div>
33
+  </div>
34
+  <div class="help">
35
+    <div>任何疑问请微信联系</div>
36
+    <img width="256" src="wx.jpg" alt="">
37
+  </div>
38
+</template>
39
+
40
+<script setup>
41
+  import { onMounted, ref } from 'vue'
42
+  import request, { postJSON } from '../../utils/request';
43
+
44
+  const size = 16;
45
+  const emptyBlocks = Array(size).fill()
46
+  const values = ref(emptyBlocks.slice())
47
+  const orderNo = ref('请刷新页面')
48
+  const email = ref()
49
+  const payForm = ref()
50
+  const queryNo = ref()
51
+  const answerList = ref([])
52
+
53
+  const handleInput = (e, i) => values.value[i] = e.target.value;
54
+  // const handleEmail = e => email.value = e.target.value
55
+  const handleReset = () => {
56
+    values.value = emptyBlocks.slice()
57
+    payForm.value = ""
58
+  }
59
+  const handleSumbit = () => {
60
+    // if (!email.value) {
61
+    //   alert('请填写邮箱')
62
+    // }
63
+
64
+    const data = {
65
+      orderId: orderNo.value,
66
+      email: email.value,
67
+      gameContent: values.value.join(","),
68
+      payRtnUrl: `${window.location.origin}${window.location.path || ''}`
69
+    }
70
+
71
+    postJSON('/order-save', { data }).then(res => {
72
+      // v-html 暂时不知道为什么不能执行 JS
73
+      // 也不执行 JS
74
+      // payForm.value = res
75
+      document.querySelector('.pay').innerHTML = res
76
+      // 手动执行
77
+      document.forms[0].submit();
78
+    }).catch(err => {
79
+      alert(err.message)
80
+    })
81
+  }
82
+
83
+  const queryAnswer = (orderId) => {
84
+    request(`/order/${orderId}/answer`).then(x => {
85
+        if (!x) {
86
+          alert("未支付成功或者单号不正确")
87
+          answerList.value = []
88
+          return
89
+        }
90
+
91
+        answerList.value = x.split(',')
92
+      })
93
+  }
94
+
95
+  const handleQuery = () => {
96
+    queryAnswer(queryNo.value)
97
+  }
98
+
99
+  onMounted(() => {
100
+    request('/order-no').then(x => orderNo.value = x)
101
+
102
+    const { search } = window.location
103
+    const matched = /out_trade_no=([^&]*)/.exec(search)
104
+    if (matched && matched.length > 1) {
105
+      queryNo.value = matched[1]
106
+      queryAnswer(matched[1])
107
+    }
108
+  })
109
+
110
+</script>
111
+
112
+<style lang="less">
113
+
114
+    :root {
115
+      --boxwidth: 240px;
116
+      word-wrap:break-word;
117
+      word-break:normal; 
118
+    }
119
+
120
+    .tip {
121
+      text-align: center;
122
+      font-size: 1.4em;
123
+      margin-top: 1em;
124
+    }
125
+
126
+    .email, .query {
127
+      text-align: center;
128
+      margin-top: 1em;
129
+      input {
130
+        padding: .5em 0;
131
+        margin-left: 1em;
132
+        min-width: 200px;
133
+      }
134
+
135
+      button {
136
+        display: inline-block;
137
+        font-size: 1em;
138
+        padding: 0.4em 1em;
139
+        margin-left: 1em;
140
+      }
141
+    }
142
+
143
+    .order-no {
144
+      text-align: center;
145
+      font-size: 1.4em;
146
+      margin-top: 1em;
147
+      color: #d4380d;
148
+    }
149
+
150
+    .box {
151
+      width: var(--boxwidth);
152
+      height: var(--boxwidth);
153
+      margin-top: 2em;
154
+      margin-left: auto;
155
+      margin-right: auto;
156
+      display: flex;
157
+      flex-wrap: wrap;
158
+
159
+      input {
160
+        text-align: center;
161
+        font-size: 2em;
162
+        flex: 1;
163
+        box-sizing: border-box;
164
+        width: 60px;
165
+        height: 60px;
166
+      }
167
+    }
168
+
169
+    .btns {
170
+      text-align: center;
171
+      margin-top: 1em;
172
+
173
+      button {
174
+        display: inline-block;
175
+        font-size: 1em;
176
+        padding: 1em 2em;
177
+        margin-bottom: 60px;
178
+        appearance: none;
179
+        background-color: #fff;
180
+        color: #000;
181
+        border-radius: 4px;
182
+        border: 1px solid rgba(0, 0, 0, 0.6);
183
+        cursor: pointer;
184
+        transition: transform ease-in 0.1s;
185
+        
186
+        &:focus {
187
+          outline: 0;
188
+        }
189
+        &:active{
190
+          transform: scale(0.9);
191
+        }
192
+      }
193
+
194
+      button + button {
195
+        margin-left: 1em;
196
+      }
197
+    }
198
+
199
+    .answer {
200
+      width: 80%;
201
+      margin: 1em;
202
+      margin-left: auto;
203
+      margin-right: auto;
204
+      display: flex;
205
+      flex-wrap: wrap;
206
+
207
+      & > div {
208
+        text-align: right;
209
+        flex: auto;
210
+        width: 12.5%;
211
+        line-height: 1.8em;
212
+      }
213
+    }
214
+
215
+    .help {
216
+      width: 256px;
217
+      margin-top: 1em;
218
+      margin-left: auto;
219
+      margin-right: auto;
220
+    }
221
+
222
+</style>

+ 39
- 0
src/utils/request.js 查看文件

1
+
2
+export default function request(url, options) {
3
+  // eslint-disable-next-line no-undef
4
+  const prefix = (process.env.VUE_APP_SERVER || '') + '/api'
5
+  
6
+  const { timeout = 6000, ...opts } = options || {}
7
+
8
+  const controller = new AbortController();
9
+  const signal = controller.signal;
10
+  const tid = setTimeout(() => controller.abort(), timeout);
11
+
12
+  const resp = fetch(prefix + url, { signal, ...opts }).then(res => res.json()).then((res) => {
13
+    clearTimeout(tid);
14
+    if (res.code === 1000) {
15
+      return res.data
16
+    } else {
17
+      return Promise.reject(res)
18
+    }
19
+  }).catch(err => {
20
+    clearTimeout(tid);
21
+    return Promise.reject(err);
22
+  })
23
+
24
+  return resp;
25
+}
26
+
27
+export function postJSON(url, options) {
28
+  const { data, ...others } = options
29
+  const newOpts = {
30
+    method: 'POST',
31
+    headers: {
32
+      'Content-Type': 'application/json'
33
+    },
34
+    body: JSON.stringify(data),
35
+    ...others,
36
+  }
37
+
38
+  return request(url, newOpts)
39
+}

+ 10
- 1
vue.config.js 查看文件

1
 const { defineConfig } = require('@vue/cli-service')
1
 const { defineConfig } = require('@vue/cli-service')
2
 module.exports = defineConfig({
2
 module.exports = defineConfig({
3
-  transpileDependencies: true
3
+  publicPath: '.',
4
+  transpileDependencies: true,
5
+  devServer: {
6
+    proxy: {
7
+      '/api': {
8
+        target: 'http://localhost:9000/',
9
+        changeOrigin: true
10
+      }
11
+    }
12
+  }
4
 })
13
 })

+ 91
- 6
yarn.lock 查看文件

2410
   resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
2410
   resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
2411
   integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
2411
   integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
2412
 
2412
 
2413
+copy-anything@^2.0.1:
2414
+  version "2.0.6"
2415
+  resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480"
2416
+  integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==
2417
+  dependencies:
2418
+    is-what "^3.14.1"
2419
+
2413
 copy-webpack-plugin@^9.0.1:
2420
 copy-webpack-plugin@^9.0.1:
2414
   version "9.1.0"
2421
   version "9.1.0"
2415
   resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz#2d2c460c4c4695ec0a58afb2801a1205256c4e6b"
2422
   resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz#2d2c460c4c4695ec0a58afb2801a1205256c4e6b"
2608
   dependencies:
2615
   dependencies:
2609
     ms "2.0.0"
2616
     ms "2.0.0"
2610
 
2617
 
2611
-debug@^3.1.1:
2618
+debug@^3.1.1, debug@^3.2.6:
2612
   version "3.2.7"
2619
   version "3.2.7"
2613
   resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
2620
   resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
2614
   integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
2621
   integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
2850
   resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
2857
   resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
2851
   integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
2858
   integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
2852
 
2859
 
2860
+errno@^0.1.1:
2861
+  version "0.1.8"
2862
+  resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
2863
+  integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
2864
+  dependencies:
2865
+    prr "~1.0.1"
2866
+
2853
 error-ex@^1.3.1:
2867
 error-ex@^1.3.1:
2854
   version "1.3.2"
2868
   version "1.3.2"
2855
   resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
2869
   resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
3591
   resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
3605
   resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
3592
   integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
3606
   integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
3593
 
3607
 
3594
-iconv-lite@0.4.24:
3608
+iconv-lite@0.4.24, iconv-lite@^0.4.4:
3595
   version "0.4.24"
3609
   version "0.4.24"
3596
   resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
3610
   resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
3597
   integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
3611
   integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
3618
   resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
3632
   resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
3619
   integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
3633
   integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
3620
 
3634
 
3635
+image-size@~0.5.0:
3636
+  version "0.5.5"
3637
+  resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
3638
+  integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=
3639
+
3621
 import-fresh@^3.0.0, import-fresh@^3.2.1:
3640
 import-fresh@^3.0.0, import-fresh@^3.2.1:
3622
   version "3.3.0"
3641
   version "3.3.0"
3623
   resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
3642
   resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
3799
   resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
3818
   resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
3800
   integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
3819
   integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
3801
 
3820
 
3821
+is-what@^3.14.1:
3822
+  version "3.14.1"
3823
+  resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1"
3824
+  integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==
3825
+
3802
 is-wsl@^2.1.1, is-wsl@^2.2.0:
3826
 is-wsl@^2.1.1, is-wsl@^2.2.0:
3803
   version "2.2.0"
3827
   version "2.2.0"
3804
   resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
3828
   resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
3925
   resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
3949
   resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
3926
   integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
3950
   integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
3927
 
3951
 
3928
-klona@^2.0.5:
3952
+klona@^2.0.4, klona@^2.0.5:
3929
   version "2.0.5"
3953
   version "2.0.5"
3930
   resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc"
3954
   resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc"
3931
   integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==
3955
   integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==
3945
     picocolors "^1.0.0"
3969
     picocolors "^1.0.0"
3946
     shell-quote "^1.6.1"
3970
     shell-quote "^1.6.1"
3947
 
3971
 
3972
+less-loader@^10.2.0:
3973
+  version "10.2.0"
3974
+  resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-10.2.0.tgz#97286d8797dc3dc05b1d16b0ecec5f968bdd4e32"
3975
+  integrity sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg==
3976
+  dependencies:
3977
+    klona "^2.0.4"
3978
+
3979
+less@^4.1.2:
3980
+  version "4.1.2"
3981
+  resolved "https://registry.yarnpkg.com/less/-/less-4.1.2.tgz#6099ee584999750c2624b65f80145f8674e4b4b0"
3982
+  integrity sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA==
3983
+  dependencies:
3984
+    copy-anything "^2.0.1"
3985
+    parse-node-version "^1.0.1"
3986
+    tslib "^2.3.0"
3987
+  optionalDependencies:
3988
+    errno "^0.1.1"
3989
+    graceful-fs "^4.1.2"
3990
+    image-size "~0.5.0"
3991
+    make-dir "^2.1.0"
3992
+    mime "^1.4.1"
3993
+    needle "^2.5.2"
3994
+    source-map "~0.6.0"
3995
+
3948
 levn@^0.4.1:
3996
 levn@^0.4.1:
3949
   version "0.4.1"
3997
   version "0.4.1"
3950
   resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
3998
   resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
4084
   dependencies:
4132
   dependencies:
4085
     sourcemap-codec "^1.4.8"
4133
     sourcemap-codec "^1.4.8"
4086
 
4134
 
4135
+make-dir@^2.1.0:
4136
+  version "2.1.0"
4137
+  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
4138
+  integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
4139
+  dependencies:
4140
+    pify "^4.0.1"
4141
+    semver "^5.6.0"
4142
+
4087
 make-dir@^3.0.2, make-dir@^3.1.0:
4143
 make-dir@^3.0.2, make-dir@^3.1.0:
4088
   version "3.1.0"
4144
   version "3.1.0"
4089
   resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
4145
   resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
4155
   dependencies:
4211
   dependencies:
4156
     mime-db "1.52.0"
4212
     mime-db "1.52.0"
4157
 
4213
 
4158
-mime@1.6.0:
4214
+mime@1.6.0, mime@^1.4.1:
4159
   version "1.6.0"
4215
   version "1.6.0"
4160
   resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
4216
   resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
4161
   integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
4217
   integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
4265
   resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
4321
   resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
4266
   integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
4322
   integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
4267
 
4323
 
4324
+needle@^2.5.2:
4325
+  version "2.9.1"
4326
+  resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684"
4327
+  integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==
4328
+  dependencies:
4329
+    debug "^3.2.6"
4330
+    iconv-lite "^0.4.4"
4331
+    sax "^1.2.4"
4332
+
4268
 negotiator@0.6.3:
4333
 negotiator@0.6.3:
4269
   version "0.6.3"
4334
   version "0.6.3"
4270
   resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
4335
   resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
4527
     json-parse-even-better-errors "^2.3.0"
4592
     json-parse-even-better-errors "^2.3.0"
4528
     lines-and-columns "^1.1.6"
4593
     lines-and-columns "^1.1.6"
4529
 
4594
 
4595
+parse-node-version@^1.0.1:
4596
+  version "1.0.1"
4597
+  resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b"
4598
+  integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
4599
+
4530
 parse5-htmlparser2-tree-adapter@^6.0.0:
4600
 parse5-htmlparser2-tree-adapter@^6.0.0:
4531
   version "6.0.1"
4601
   version "6.0.1"
4532
   resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6"
4602
   resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6"
4607
   resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
4677
   resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
4608
   integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
4678
   integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
4609
 
4679
 
4680
+pify@^4.0.1:
4681
+  version "4.0.1"
4682
+  resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
4683
+  integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
4684
+
4610
 pkg-dir@^4.1.0:
4685
 pkg-dir@^4.1.0:
4611
   version "4.2.0"
4686
   version "4.2.0"
4612
   resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
4687
   resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
4931
     forwarded "0.2.0"
5006
     forwarded "0.2.0"
4932
     ipaddr.js "1.9.1"
5007
     ipaddr.js "1.9.1"
4933
 
5008
 
5009
+prr@~1.0.1:
5010
+  version "1.0.1"
5011
+  resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
5012
+  integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
5013
+
4934
 pseudomap@^1.0.2:
5014
 pseudomap@^1.0.2:
4935
   version "1.0.2"
5015
   version "1.0.2"
4936
   resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
5016
   resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
5190
   resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
5270
   resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
5191
   integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
5271
   integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
5192
 
5272
 
5273
+sax@^1.2.4:
5274
+  version "1.2.4"
5275
+  resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
5276
+  integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
5277
+
5193
 schema-utils@^2.6.5:
5278
 schema-utils@^2.6.5:
5194
   version "2.7.1"
5279
   version "2.7.1"
5195
   resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7"
5280
   resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7"
5230
   dependencies:
5315
   dependencies:
5231
     node-forge "^1"
5316
     node-forge "^1"
5232
 
5317
 
5233
-"semver@2 || 3 || 4 || 5", semver@^5.5.0:
5318
+"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0:
5234
   version "5.7.1"
5319
   version "5.7.1"
5235
   resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
5320
   resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
5236
   integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
5321
   integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
5716
   resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
5801
   resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
5717
   integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
5802
   integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
5718
 
5803
 
5719
-tslib@^2.0.3:
5804
+tslib@^2.0.3, tslib@^2.3.0:
5720
   version "2.3.1"
5805
   version "2.3.1"
5721
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
5806
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
5722
   integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
5807
   integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==