zmp-cli 3.15.6 → 3.15.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/README.md +37 -0
  2. package/build/index.js +1 -184
  3. package/config/index.js +1 -44
  4. package/create/index.js +1 -230
  5. package/create/utils/generate-app-config.js +1 -34
  6. package/create/utils/generate-npm-scripts.js +1 -26
  7. package/create/utils/get-options.js +1 -204
  8. package/create/utils/npm-scripts.js +1 -62
  9. package/deploy/index.js +1 -149
  10. package/deploy/utils/get-options.js +1 -69
  11. package/deploy/utils/request-upload.js +1 -34
  12. package/deploy/utils/upload-app.js +1 -82
  13. package/index.js +1 -319
  14. package/login/index.js +1 -169
  15. package/login/utils/get-options.js +1 -58
  16. package/login/utils/zalo-login.js +1 -32
  17. package/migrate/icons/update-icon-v3.js +1 -19
  18. package/migrate/index.js +1 -60
  19. package/migrate/utils/get-options.js +1 -46
  20. package/migrate/utils/migrate-react.js +1 -33
  21. package/package.json +13 -40
  22. package/start/frame/index.html +264 -254
  23. package/start/index.js +1 -382
  24. package/sync/index-to-app-config.js +1 -146
  25. package/sync/index.js +1 -55
  26. package/utils/axios.js +1 -15
  27. package/utils/check-update.js +1 -53
  28. package/utils/constants.js +1 -20
  29. package/utils/env.js +1 -39
  30. package/utils/error.js +1 -16
  31. package/utils/find-files-by-ext.js +1 -27
  32. package/utils/find-free-port.js +1 -11
  33. package/utils/fs-extra.js +1 -90
  34. package/utils/generate-pages-map.js +1 -17
  35. package/utils/get-app-info.js +1 -22
  36. package/utils/get-current-project.js +1 -25
  37. package/utils/get-ip.js +1 -19
  38. package/utils/log.js +1 -19
  39. package/utils/node-blob.js +1 -106
  40. package/utils/resumable.d.js +1 -0
  41. package/utils/resumable.js +1 -1204
  42. package/utils/spinner.js +1 -25
  43. package/utils/tunnel.js +1 -36
  44. package/.editorconfig +0 -15
  45. package/.eslintignore +0 -8
  46. package/.eslintrc.js +0 -10
  47. package/.vscode/launch.json +0 -23
  48. package/LICENSE +0 -21
  49. package/README.git.md +0 -37
  50. package/assets/index.js +0 -147
  51. package/build/dist/index.dev.js +0 -217
  52. package/config/dist/index.dev.js +0 -48
  53. package/create/init-zmp-ui.js +0 -216
  54. package/create/templates/app-parameters.js +0 -33
  55. package/create/templates/common/css/icons.css +0 -60
  56. package/create/templates/common/icons/512x512.png +0 -0
  57. package/create/templates/common/icons/apple-touch-icon.png +0 -0
  58. package/create/templates/common/icons/favicon.png +0 -0
  59. package/create/templates/common/postcss.config.js +0 -5
  60. package/create/templates/common/splash-2732x2732.png +0 -0
  61. package/create/templates/common/tailwind/postcss.config.js +0 -5
  62. package/create/templates/common/tailwind/tailwind.config.js +0 -9
  63. package/create/templates/common/tailwind/tailwind.css +0 -3
  64. package/create/templates/common/webpack/build.js +0 -41
  65. package/create/templates/copy-assets.js +0 -158
  66. package/create/templates/core/babel.config.js +0 -11
  67. package/create/templates/core/copy-assets.js +0 -83
  68. package/create/templates/core/generate-home-page.js +0 -143
  69. package/create/templates/core/generate-root.js +0 -283
  70. package/create/templates/core/generate-routes.js +0 -155
  71. package/create/templates/core/generate-scripts.js +0 -94
  72. package/create/templates/core/pages/404.html +0 -20
  73. package/create/templates/core/pages/about.html +0 -26
  74. package/create/templates/core/pages/catalog.html +0 -40
  75. package/create/templates/core/pages/dynamic-route.html +0 -115
  76. package/create/templates/core/pages/form.html +0 -258
  77. package/create/templates/core/pages/left-page-1.html +0 -24
  78. package/create/templates/core/pages/left-page-2.html +0 -23
  79. package/create/templates/core/pages/product.html +0 -36
  80. package/create/templates/core/pages/request-and-load.html +0 -35
  81. package/create/templates/core/pages/settings.html +0 -252
  82. package/create/templates/create-folders.js +0 -30
  83. package/create/templates/dist/generate-styles.dev.js +0 -46
  84. package/create/templates/generate-config-xml.js +0 -18
  85. package/create/templates/generate-index.js +0 -49
  86. package/create/templates/generate-manifest.js +0 -49
  87. package/create/templates/generate-recoil.js +0 -56
  88. package/create/templates/generate-routes.js +0 -16
  89. package/create/templates/generate-scripts.js +0 -16
  90. package/create/templates/generate-service-worker.js +0 -126
  91. package/create/templates/generate-store.js +0 -88
  92. package/create/templates/generate-styles.js +0 -110
  93. package/create/templates/generate-webpack-config.js +0 -335
  94. package/create/templates/generate-zmp-custom.js +0 -81
  95. package/create/templates/react/babel.config.js +0 -12
  96. package/create/templates/react/components/app-items.jsx +0 -44
  97. package/create/templates/react/components/navbar-back.jsx +0 -25
  98. package/create/templates/react/components/user-card.jsx +0 -18
  99. package/create/templates/react/copy-assets.js +0 -85
  100. package/create/templates/react/dist/generate-scripts.dev.js +0 -23
  101. package/create/templates/react/generate-home-page.js +0 -111
  102. package/create/templates/react/generate-root.js +0 -84
  103. package/create/templates/react/generate-routes.js +0 -16
  104. package/create/templates/react/generate-scripts.js +0 -68
  105. package/create/templates/react/pages/404.js +0 -27
  106. package/create/templates/react/pages/about.js +0 -52
  107. package/create/templates/react/pages/catalog.js +0 -112
  108. package/create/templates/react/pages/dynamic-route.js +0 -80
  109. package/create/templates/react/pages/form.js +0 -152
  110. package/create/templates/react/pages/index copy.js +0 -17
  111. package/create/templates/react/pages/index.js +0 -17
  112. package/create/templates/react/pages/settings.js +0 -76
  113. package/create/templates/react/pages/user.js +0 -56
  114. package/create/templates/react/vite.config.js +0 -11
  115. package/create/templates/react-typescript/_tsconfig.json +0 -33
  116. package/create/templates/react-typescript/components/app-items.js +0 -53
  117. package/create/templates/react-typescript/components/index.js +0 -9
  118. package/create/templates/react-typescript/components/navbar-back.js +0 -40
  119. package/create/templates/react-typescript/components/user-card.js +0 -32
  120. package/create/templates/react-typescript/copy-assets.js +0 -94
  121. package/create/templates/react-typescript/dist/generate-scripts.dev.js +0 -23
  122. package/create/templates/react-typescript/generate-home-page.js +0 -113
  123. package/create/templates/react-typescript/generate-root.js +0 -81
  124. package/create/templates/react-typescript/generate-routes.js +0 -12
  125. package/create/templates/react-typescript/generate-scripts.js +0 -67
  126. package/create/templates/react-typescript/pages/404.js +0 -27
  127. package/create/templates/react-typescript/pages/about.js +0 -52
  128. package/create/templates/react-typescript/pages/catalog.js +0 -112
  129. package/create/templates/react-typescript/pages/dynamic-route.js +0 -80
  130. package/create/templates/react-typescript/pages/form.js +0 -152
  131. package/create/templates/react-typescript/pages/index.js +0 -17
  132. package/create/templates/react-typescript/pages/settings.js +0 -76
  133. package/create/templates/react-typescript/pages/user.js +0 -56
  134. package/create/templates/react-typescript/vite.config.js +0 -21
  135. package/create/templates/svelte/babel.config.js +0 -10
  136. package/create/templates/svelte/copy-assets.js +0 -47
  137. package/create/templates/svelte/generate-home-page.js +0 -158
  138. package/create/templates/svelte/generate-root.js +0 -235
  139. package/create/templates/svelte/generate-routes.js +0 -91
  140. package/create/templates/svelte/generate-scripts.js +0 -47
  141. package/create/templates/svelte/pages/404.svelte +0 -10
  142. package/create/templates/svelte/pages/about.svelte +0 -16
  143. package/create/templates/svelte/pages/catalog.svelte +0 -31
  144. package/create/templates/svelte/pages/dynamic-route.svelte +0 -34
  145. package/create/templates/svelte/pages/form.svelte +0 -175
  146. package/create/templates/svelte/pages/left-page-1.svelte +0 -13
  147. package/create/templates/svelte/pages/left-page-2.svelte +0 -12
  148. package/create/templates/svelte/pages/product.svelte +0 -21
  149. package/create/templates/svelte/pages/request-and-load.svelte +0 -21
  150. package/create/templates/svelte/pages/settings.svelte +0 -175
  151. package/create/templates/vue/babel.config.js +0 -10
  152. package/create/templates/vue/components/header.vue +0 -28
  153. package/create/templates/vue/components/sun-and-moon.vue +0 -34
  154. package/create/templates/vue/copy-assets.js +0 -67
  155. package/create/templates/vue/generate-home-page.js +0 -56
  156. package/create/templates/vue/generate-root.js +0 -50
  157. package/create/templates/vue/generate-routes.js +0 -7
  158. package/create/templates/vue/generate-scripts.js +0 -63
  159. package/create/templates/vue/global-components.d.ts +0 -121
  160. package/create/templates/vue/icons/moon.svg +0 -3
  161. package/create/templates/vue/icons/sun.svg +0 -3
  162. package/create/templates/vue/pages/404.vue +0 -12
  163. package/create/templates/vue/pages/about.vue +0 -15
  164. package/create/templates/vue/pages/catalog.vue +0 -39
  165. package/create/templates/vue/pages/dynamic-route.vue +0 -34
  166. package/create/templates/vue/pages/form.vue +0 -162
  167. package/create/templates/vue/pages/left-page-1.vue +0 -14
  168. package/create/templates/vue/pages/left-page-2.vue +0 -11
  169. package/create/templates/vue/pages/product.vue +0 -31
  170. package/create/templates/vue/pages/request-and-load.vue +0 -25
  171. package/create/templates/vue/pages/settings.vue +0 -18
  172. package/create/templates/vue/vite.config.js +0 -11
  173. package/create/templates/zaui/_tsconfig.json +0 -33
  174. package/create/templates/zaui/babel.config.js +0 -12
  175. package/create/templates/zaui/components/user-card.jsx +0 -16
  176. package/create/templates/zaui/copy-assets.js +0 -90
  177. package/create/templates/zaui/generate-home-page.js +0 -117
  178. package/create/templates/zaui/generate-root.js +0 -53
  179. package/create/templates/zaui/generate-routes.js +0 -10
  180. package/create/templates/zaui/generate-scripts.js +0 -39
  181. package/create/templates/zaui/generate-user-card.js +0 -55
  182. package/create/templates/zaui/pages/about.js +0 -129
  183. package/create/templates/zaui/pages/form.js +0 -123
  184. package/create/templates/zaui/pages/index.js +0 -9
  185. package/create/templates/zaui/pages/user.js +0 -109
  186. package/create/templates/zaui/vite.config.js +0 -11
  187. package/create/utils/colors.js +0 -94
  188. package/create/utils/dist/get-options.dev.js +0 -277
  189. package/create/utils/generate-gitignore.js +0 -43
  190. package/create/utils/generate-package-json.js +0 -132
  191. package/create/utils/generate-readme.js +0 -28
  192. package/create/utils/indent.js +0 -31
  193. package/create/utils/string.js +0 -13
  194. package/create/utils/styles-extension.js +0 -9
  195. package/create/utils/template-if.js +0 -9
  196. package/deploy/dist/index.dev.js +0 -227
  197. package/deploy/utils/dist/request-upload.dev.js +0 -62
  198. package/deploy/utils/dist/upload-app.dev.js +0 -113
  199. package/dist/bundle.js +0 -1
  200. package/dist/index.dev.js +0 -352
  201. package/jsconfig.json +0 -8
  202. package/login/dist/index.dev.js +0 -223
  203. package/login/utils/dist/zalo-login.dev.js +0 -41
  204. package/screenshots/wellcome.jpg +0 -0
  205. package/show-qr-app/assets/css/style.css +0 -87
  206. package/show-qr-app/assets/js/qrcode.min.js +0 -1
  207. package/show-qr-app/index.html +0 -57
  208. package/show-qr-app/package.json +0 -14
  209. package/start/dist/index.dev.js +0 -312
  210. package/start/generate-hr-config.js +0 -59
  211. package/ui/server.js +0 -194
  212. package/ui/www/css/app.css +0 -1
  213. package/ui/www/css/app.css.map +0 -1
  214. package/ui/www/fonts/ZMPIcons-Regular.eot +0 -0
  215. package/ui/www/fonts/ZMPIcons-Regular.ttf +0 -0
  216. package/ui/www/fonts/ZMPIcons-Regular.woff +0 -0
  217. package/ui/www/fonts/ZMPIcons-Regular.woff2 +0 -0
  218. package/ui/www/images/logo.png +0 -0
  219. package/ui/www/index.html +0 -1
  220. package/ui/www/js/app.js +0 -3
  221. package/ui/www/js/app.js.LICENSE.txt +0 -20
  222. package/ui/www/js/app.js.map +0 -1
  223. package/ui/www/static/icons/apple-touch-icon.png +0 -0
  224. package/ui/www/static/icons/favicon.png +0 -0
  225. package/utils/dist/get-app-info.dev.js +0 -54
package/index.js CHANGED
@@ -1,320 +1,2 @@
1
1
  #!/usr/bin/env node
2
- /* eslint no-console: off */
3
- const chalk = require('chalk');
4
- const clear = require('clear');
5
- const figlet = require('figlet');
6
- const program = require('commander');
7
- const logSymbols = require('log-symbols');
8
- const fse = require('./utils/fs-extra');
9
- const checkUpdate = require('./utils/check-update');
10
- const spinner = require('./utils/spinner');
11
- const log = require('./utils/log');
12
- const getCurrentProject = require('./utils/get-current-project');
13
- const getOptions = require('./create/utils/get-options');
14
- const getLoginOptions = require('./login/utils/get-options');
15
- const getDeployOptions = require('./deploy/utils/get-options');
16
- const getMigrateOptions = require('./migrate/utils/get-options');
17
- const loginApp = require('./login/index');
18
- const createApp = require('./create/index');
19
- const startApp = require('./start/index');
20
- const buildApp = require('./build/index');
21
- const deployApp = require('./deploy/index');
22
- const syncApp = require('./sync/index');
23
- const migrateApp = require('./migrate/index');
24
- const os = require('os');
25
- // const generateAssets = require('./assets/index');
26
- // const server = require('./ui/server');
27
- const pkg = require('./package.json');
28
- const config = require('./config');
29
- const { versionStatus } = require('./utils/constants');
30
-
31
- const cwd = process.cwd();
32
-
33
- const logger = {
34
- statusStart: (text) => spinner.start(text),
35
- statusDone: (text) => spinner.done(text),
36
- statusText: (text) => spinner.text(text),
37
- statusError: (text) => spinner.error(text),
38
- text: (text) => log.text(text),
39
- error: (text) => log.error(text),
40
- showOnUI: () => {},
41
- };
42
- /* =============================================
43
- Header
44
- ============================================= */
45
-
46
- clear();
47
- if (!fse.existsSync(config.root_env())) {
48
- fse.writeFileSync(config.root_env());
49
- }
50
-
51
- console.log(
52
- chalk.cyan(
53
- figlet.textSync('ZMP CLI', {
54
- horizontalLayout: 'full',
55
- verticalLayout: 'full',
56
- })
57
- ),
58
- chalk.cyan(`Version: ${pkg.version}\n`)
59
- );
60
- /* =============================================
61
- Commands
62
- ============================================= */
63
- program
64
- .version(pkg.version)
65
- .usage('<command> [options]')
66
- .command('init')
67
- .option('--skipUpdate', 'Skip checking for update of zmp-cli')
68
- .description('Init ZMP project')
69
- .action(async (options) => {
70
- if (!options.skipUpdate) await checkUpdate();
71
-
72
- const currentProject = getCurrentProject(cwd);
73
- if (currentProject) {
74
- log.text(
75
- `${logSymbols.error} ZMP project already set up in current directory`
76
- );
77
- process.exit(1);
78
- }
79
- const optsLogin = await getLoginOptions();
80
- await loginApp({ cwd, ...optsLogin }, logger);
81
- const opts = await getOptions();
82
- await createApp({ cwd, ...opts }, logger);
83
- process.exit(0);
84
- });
85
-
86
- program
87
- .usage('<command> [options]')
88
- .command('login')
89
- .description('Login ZMP')
90
- .action(async () => {
91
- // const currentProject = getCurrentProject(cwd);
92
- // if (!currentProject) {
93
- // log.text(`${logSymbols.error} This is not ZMP project`);
94
- // process.exit(1);
95
- // }
96
-
97
- const optsLogin = await getLoginOptions();
98
- await loginApp(
99
- {
100
- cwd,
101
- ...optsLogin,
102
- },
103
- logger
104
- );
105
- process.exit(0);
106
- });
107
-
108
- program
109
- .usage('<command> [options]')
110
- .command('start')
111
- .option(
112
- '-iosH, --ios-host-name <n>',
113
- 'Specify server hostname. By default it is os.hostname'
114
- )
115
- .option(
116
- '-P, --port <n>',
117
- 'Specify server port. By default it is 3000',
118
- parseInt
119
- )
120
- .option('-Z, --zalo-app', 'Preview on Zalo')
121
- .option('-ios, --ios', 'Run on ios')
122
- .option('-nF, --no-frame', 'Run without Zalo frame')
123
- .option('-D, --device', 'Device mode')
124
- .option('-M, --mode <m>', 'Env mode')
125
- .description('Start a ZMP project')
126
- .action(async (options) => {
127
- const currentProject = getCurrentProject(cwd);
128
-
129
- if (!currentProject) {
130
- log.text(`${logSymbols.error} This is not ZMP project`);
131
- process.exit(1);
132
- }
133
-
134
- if (options && options.showMobileUi) {
135
- try {
136
- console.log(require.resolve('nw'));
137
- } catch (e) {
138
- console.error(
139
- 'NW.js module is not found. Please run "npm install -g nw@sdk"'
140
- );
141
- process.exit(e.code);
142
- }
143
- }
144
-
145
- let defaultIOSHostName = os.hostname();
146
- if (!defaultIOSHostName.includes('.local')) {
147
- defaultIOSHostName = `${defaultIOSHostName}.local`;
148
- }
149
-
150
- await startApp(
151
- {
152
- cwd,
153
- port: (options && options.port) || 3000,
154
- iosHostName: (options && options.iosHostName) || defaultIOSHostName,
155
- showMobileUI: (options && options.showMobileUi) || false,
156
- previewOnZalo: (options && options.zaloApp) || false,
157
- ios: (options && options.ios) || false,
158
- mode: options && options.mode,
159
- frame:
160
- options &&
161
- (typeof options.frame === 'undefined' || options.frame === null)
162
- ? true
163
- : options.frame,
164
- deviceMode: (options && options.device) || false,
165
- },
166
- logger
167
- );
168
- process.exit(0);
169
- });
170
-
171
- program
172
- .usage('<command> [options]')
173
- .command('build')
174
- .description('Build a ZMP project')
175
- .action(async () => {
176
- const currentProject = getCurrentProject(cwd);
177
-
178
- if (!currentProject) {
179
- log.text(`${logSymbols.error} This is not ZMP project`);
180
- process.exit(1);
181
- }
182
-
183
- await buildApp(
184
- {
185
- cwd,
186
- },
187
- logger
188
- );
189
- process.exit(0);
190
- });
191
-
192
- program
193
- .usage('<command> [options]')
194
- .command('deploy')
195
- .option('-D, --dev', 'Deploy in Development server')
196
- .option('-M, --mode <m>', 'Env mode')
197
- .option('-p, --passive', 'Passive mode (non-interactive)')
198
- .option('-e, --existing', 'Deploy existing project')
199
- .option('-t, --testing', 'Deploy testing version')
200
- .option('-m, --desc <message>', 'Version description')
201
- .option('-o, --outputDir <output>', 'Output folder. Default www')
202
- .option(
203
- '-P, --port <n>',
204
- 'Specify UI server port. By default it is 3001',
205
- parseInt
206
- )
207
- .description('Deploy a ZMP project')
208
- .action(async (options) => {
209
- const currentProject = getCurrentProject(cwd);
210
- let opts = options;
211
- if (options.existing) {
212
- opts.customProject = true;
213
- } else {
214
- if (!options.passive) {
215
- opts = await getDeployOptions(currentProject);
216
- }
217
- }
218
- if (options.testing) {
219
- opts.versionStatus = versionStatus.TESTING;
220
- }
221
- if (opts.quit) process.exit(1);
222
- await deployApp(
223
- {
224
- cwd,
225
- dev: options && options.dev,
226
- mode: options && options.mode,
227
- ...opts,
228
- },
229
- logger
230
- );
231
- process.exit(0);
232
- });
233
-
234
- program
235
- .usage('<command> [options]')
236
- .command('sync-config <source>')
237
- .option(
238
- '-r, --root-element <selector>',
239
- 'Custom entry point, default is #app'
240
- )
241
- .description(
242
- 'Automatically update app-config.json resources list based on index.html'
243
- )
244
- .action(async (source, options) => {
245
- await syncApp(
246
- {
247
- source,
248
- ...options,
249
- },
250
- logger
251
- );
252
- process.exit(0);
253
- });
254
-
255
- program
256
- .usage('<command> [options]')
257
- .command('migrate')
258
- .action(async function () {
259
- const currentProject = getCurrentProject(cwd);
260
- if (!currentProject) {
261
- logger.text(`${logSymbols.error} This is not ZMP project`);
262
- process.exit(1);
263
- }
264
- const opts = await getMigrateOptions();
265
- await migrateApp(
266
- {
267
- cwd,
268
- ...opts,
269
- ...currentProject,
270
- },
271
- logger
272
- );
273
- process.exit(0);
274
- });
275
-
276
- // program
277
- // .command('assets')
278
- // .alias('generate-assets')
279
- // .option('--skipUpdate', 'Skip checking for update of zmp-cli')
280
- // .option('--ui', 'Launch assets generation UI')
281
- // .option(
282
- // '-P, --port <n>',
283
- // 'Specify UI server port. By default it is 3001',
284
- // parseInt
285
- // )
286
- // .description('Generate ZMP app icons and splash screens')
287
- // .action(async (options) => {
288
- // // Check update
289
- // if (options.skipUpdate === undefined) {
290
- // await checkUpdate();
291
- // }
292
-
293
- // const currentProject = getCurrentProject(cwd);
294
- // if (!currentProject) {
295
- // log.text(
296
- // `${logSymbols.error} ZMP project not found in current directory`
297
- // );
298
- // process.exit(1);
299
- // }
300
-
301
- // if (options.ui) {
302
- // spinner.start('Launching ZMP UI server');
303
- // server('/assets/', options.port);
304
- // spinner.end('Launching ZMP UI server');
305
- // } else {
306
- // await generateAssets({}, currentProject, logger);
307
- // process.exit(0);
308
- // }
309
- // });
310
-
311
- program.on('command:*', (cmd) => {
312
- program.outputHelp();
313
- log.text(`\n Unknown command ${cmd}`);
314
- });
315
-
316
- program.parse(process.argv);
317
-
318
- if (!program.args.length) {
319
- program.outputHelp();
320
- }
2
+ 'use strict';function _0x3356(){const _0x533b0e=['parse','port','./config','hostname','iosHostName','resolve','start','Automatically\x20update\x20app-config.json\x20resources\x20list\x20based\x20on\x20index.html','writeFileSync','2982930bzKVqQ','22fqHlnz','Login\x20ZMP','Build\x20a\x20ZMP\x20project','full','<command>\x20[options]','./migrate/utils/get-options','Version:\x20','build','.local','customProject','--skipUpdate','command','Env\x20mode','709090cmDeWu','./login/utils/get-options','./sync/index','ios','\x0a\x20Unknown\x20command\x20','./utils/constants','./build/index','\x20This\x20is\x20not\x20ZMP\x20project','Init\x20ZMP\x20project','Deploy\x20a\x20ZMP\x20project','root_env','commander','usage','6kwoUtI','Run\x20without\x20Zalo\x20frame','-m,\x20--desc\x20<message>','8293416OypNoc','./utils/check-update','24IdzRHy','Device\x20mode','action','Deploy\x20existing\x20project','passive','ZMP\x20CLI','cyan','option','-P,\x20--port\x20<n>','./migrate/index','command:*','./utils/log','figlet','chalk','mode','outputHelp','./package.json','existsSync','frame','Version\x20description','./utils/get-current-project','device','./login/index','Specify\x20UI\x20server\x20port.\x20By\x20default\x20it\x20is\x203001','login','./create/utils/get-options','-r,\x20--root-element\x20<selector>','sync-config\x20<source>','4htbsgI','161BKNpuU','init','Skip\x20checking\x20for\x20update\x20of\x20zmp-cli','-p,\x20--passive','argv','error','1025538GabXNM','exit','-D,\x20--dev','-iosH,\x20--ios-host-name\x20<n>','versionStatus','Run\x20on\x20ios','cwd','log-symbols','done','Deploy\x20testing\x20version','-M,\x20--mode\x20<m>','zaloApp','TESTING','909162QysyHl','-t,\x20--testing','-nF,\x20--no-frame','clear','-ios,\x20--ios','./deploy/index','log','./utils/spinner','-o,\x20--outputDir\x20<output>','Passive\x20mode\x20(non-interactive)','version','text','57187ySDxxl','Specify\x20server\x20port.\x20By\x20default\x20it\x20is\x203000','description','dev','170346RDcsZE'];_0x3356=function(){return _0x533b0e;};return _0x3356();}function _0x47dc(_0x55e4ba,_0x499364){const _0x335643=_0x3356();return _0x47dc=function(_0x47dc71,_0x59086e){_0x47dc71=_0x47dc71-0x1be;let _0x533a56=_0x335643[_0x47dc71];return _0x533a56;},_0x47dc(_0x55e4ba,_0x499364);}const _0x4c2053=_0x47dc;(function(_0x37dced,_0x51371c){const _0x1540aa=_0x47dc,_0x21a2f5=_0x37dced();while(!![]){try{const _0x38d3bd=-parseInt(_0x1540aa(0x211))/0x1*(-parseInt(_0x1540aa(0x1d0))/0x2)+-parseInt(_0x1540aa(0x1f8))/0x3*(parseInt(_0x1540aa(0x1f1))/0x4)+-parseInt(_0x1540aa(0x21f))/0x5+parseInt(_0x1540aa(0x215))/0x6*(parseInt(_0x1540aa(0x1f2))/0x7)+-parseInt(_0x1540aa(0x1d5))/0x8*(parseInt(_0x1540aa(0x205))/0x9)+parseInt(_0x1540aa(0x1c3))/0xa*(parseInt(_0x1540aa(0x220))/0xb)+parseInt(_0x1540aa(0x1d3))/0xc;if(_0x38d3bd===_0x51371c)break;else _0x21a2f5['push'](_0x21a2f5['shift']());}catch(_0x9ee85){_0x21a2f5['push'](_0x21a2f5['shift']());}}}(_0x3356,0x65904));const e=require(_0x4c2053(0x1e2)),o=require(_0x4c2053(0x208)),t=require(_0x4c2053(0x1e1)),i=require(_0x4c2053(0x1ce)),s=require(_0x4c2053(0x1ff)),r=require('./utils/fs-extra'),n=require(_0x4c2053(0x1d4)),a=require(_0x4c2053(0x20c)),c=require(_0x4c2053(0x1e0)),p=require(_0x4c2053(0x1e9)),u=require(_0x4c2053(0x1ee)),l=require(_0x4c2053(0x1c4)),d=require('./deploy/utils/get-options'),m=require(_0x4c2053(0x225)),g=require(_0x4c2053(0x1eb)),x=require('./create/index'),y=require('./start/index'),v=require(_0x4c2053(0x1c9)),w=require(_0x4c2053(0x20a)),f=require(_0x4c2053(0x1c5)),q=require(_0x4c2053(0x1de)),h=require('os'),M=require(_0x4c2053(0x1e5)),P=require(_0x4c2053(0x218)),{versionStatus:j}=require(_0x4c2053(0x1c8)),Z=process[_0x4c2053(0x1fe)](),D={'statusStart':_0x241b60=>a[_0x4c2053(0x21c)](_0x241b60),'statusDone':_0x3a062c=>a[_0x4c2053(0x200)](_0x3a062c),'statusText':_0x34a8e1=>a['text'](_0x34a8e1),'statusError':_0x15736d=>a['error'](_0x15736d),'text':_0x7e40fc=>c[_0x4c2053(0x210)](_0x7e40fc),'error':_0x237316=>c[_0x4c2053(0x1f7)](_0x237316),'showOnUI':()=>{}};o(),r[_0x4c2053(0x1e6)](P[_0x4c2053(0x1cd)]())||r[_0x4c2053(0x21e)](P[_0x4c2053(0x1cd)]()),console[_0x4c2053(0x20b)](e[_0x4c2053(0x1db)](t['textSync'](_0x4c2053(0x1da),{'horizontalLayout':_0x4c2053(0x223),'verticalLayout':_0x4c2053(0x223)})),e[_0x4c2053(0x1db)](_0x4c2053(0x226)+M[_0x4c2053(0x20f)]+'\x0a')),i[_0x4c2053(0x20f)](M[_0x4c2053(0x20f)])[_0x4c2053(0x1cf)](_0x4c2053(0x224))[_0x4c2053(0x1c1)](_0x4c2053(0x1f3))[_0x4c2053(0x1dc)](_0x4c2053(0x1c0),_0x4c2053(0x1f4))[_0x4c2053(0x213)](_0x4c2053(0x1cb))[_0x4c2053(0x1d7)](async _0x1c24be=>{_0x1c24be['skipUpdate']||await n();let _0x8509fa=await l();await g({'cwd':Z,..._0x8509fa},D);let _0x668713=await u();await x({'cwd':Z,..._0x668713},D),process['exit'](0x0);}),i['usage'](_0x4c2053(0x224))[_0x4c2053(0x1c1)](_0x4c2053(0x1ed))['description'](_0x4c2053(0x221))[_0x4c2053(0x1d7)](async()=>{const _0x1fe924=_0x4c2053;let _0xbefa95=await l();await g({'cwd':Z,..._0xbefa95},D),process[_0x1fe924(0x1f9)](0x0);}),i['usage'](_0x4c2053(0x224))[_0x4c2053(0x1c1)](_0x4c2053(0x21c))['option'](_0x4c2053(0x1fb),'Specify\x20server\x20hostname.\x20By\x20default\x20it\x20is\x20os.hostname')[_0x4c2053(0x1dc)](_0x4c2053(0x1dd),_0x4c2053(0x212),parseInt)[_0x4c2053(0x1dc)]('-Z,\x20--zalo-app','Preview\x20on\x20Zalo')['option'](_0x4c2053(0x209),_0x4c2053(0x1fd))[_0x4c2053(0x1dc)](_0x4c2053(0x207),_0x4c2053(0x1d1))[_0x4c2053(0x1dc)]('-D,\x20--device',_0x4c2053(0x1d6))[_0x4c2053(0x1dc)](_0x4c2053(0x202),_0x4c2053(0x1c2))[_0x4c2053(0x213)]('Start\x20a\x20ZMP\x20project')[_0x4c2053(0x1d7)](async _0x32299a=>{const _0x375e40=_0x4c2053;if(p(Z)||(c[_0x375e40(0x210)](s['error']+_0x375e40(0x1ca)),process[_0x375e40(0x1f9)](0x1)),_0x32299a&&_0x32299a['showMobileUi'])try{console['log'](require[_0x375e40(0x21b)]('nw'));}catch(_0x5833dc){console['error']('NW.js\x20module\x20is\x20not\x20found.\x20Please\x20run\x20\x22npm\x20install\x20-g\x20nw@sdk\x22'),process[_0x375e40(0x1f9)](_0x5833dc['code']);}let _0xcec3c4=h[_0x375e40(0x219)]();_0xcec3c4['includes'](_0x375e40(0x1be))||(_0xcec3c4=_0xcec3c4+_0x375e40(0x1be)),await y({'cwd':Z,'port':_0x32299a&&_0x32299a[_0x375e40(0x217)]||0xbb8,'iosHostName':_0x32299a&&_0x32299a[_0x375e40(0x21a)]||_0xcec3c4,'showMobileUI':_0x32299a&&_0x32299a['showMobileUi']||!0x1,'previewOnZalo':_0x32299a&&_0x32299a[_0x375e40(0x203)]||!0x1,'ios':_0x32299a&&_0x32299a[_0x375e40(0x1c6)]||!0x1,'mode':_0x32299a&&_0x32299a[_0x375e40(0x1e3)],'frame':!!_0x32299a&&(void 0x0===_0x32299a[_0x375e40(0x1e7)]||null===_0x32299a[_0x375e40(0x1e7)])||_0x32299a[_0x375e40(0x1e7)],'deviceMode':_0x32299a&&_0x32299a[_0x375e40(0x1ea)]||!0x1},D),process[_0x375e40(0x1f9)](0x0);}),i['usage'](_0x4c2053(0x224))[_0x4c2053(0x1c1)](_0x4c2053(0x227))[_0x4c2053(0x213)](_0x4c2053(0x222))[_0x4c2053(0x1d7)](async()=>{const _0x24a41d=_0x4c2053;p(Z)||(c[_0x24a41d(0x210)](s[_0x24a41d(0x1f7)]+_0x24a41d(0x1ca)),process[_0x24a41d(0x1f9)](0x1)),await v({'cwd':Z},D),process[_0x24a41d(0x1f9)](0x0);}),i['usage']('<command>\x20[options]')[_0x4c2053(0x1c1)]('deploy')[_0x4c2053(0x1dc)](_0x4c2053(0x1fa),'Deploy\x20in\x20Development\x20server')[_0x4c2053(0x1dc)](_0x4c2053(0x202),'Env\x20mode')[_0x4c2053(0x1dc)](_0x4c2053(0x1f5),_0x4c2053(0x20e))[_0x4c2053(0x1dc)]('-e,\x20--existing',_0x4c2053(0x1d8))[_0x4c2053(0x1dc)](_0x4c2053(0x206),_0x4c2053(0x201))[_0x4c2053(0x1dc)](_0x4c2053(0x1d2),_0x4c2053(0x1e8))[_0x4c2053(0x1dc)](_0x4c2053(0x20d),'Output\x20folder.\x20Default\x20www')[_0x4c2053(0x1dc)](_0x4c2053(0x1dd),_0x4c2053(0x1ec),parseInt)[_0x4c2053(0x213)](_0x4c2053(0x1cc))[_0x4c2053(0x1d7)](async _0x2425b3=>{const _0x484732=_0x4c2053;let _0x509c09=p(Z),_0x1202e5=_0x2425b3;_0x2425b3['existing']?_0x1202e5[_0x484732(0x1bf)]=!0x0:_0x2425b3[_0x484732(0x1d9)]||(_0x1202e5=await d(_0x509c09)),_0x2425b3['testing']&&(_0x1202e5[_0x484732(0x1fc)]=j[_0x484732(0x204)]),_0x1202e5['quit']&&process['exit'](0x1),await w({'cwd':Z,'dev':_0x2425b3&&_0x2425b3[_0x484732(0x214)],'mode':_0x2425b3&&_0x2425b3[_0x484732(0x1e3)],..._0x1202e5},D),process[_0x484732(0x1f9)](0x0);}),i[_0x4c2053(0x1cf)](_0x4c2053(0x224))[_0x4c2053(0x1c1)](_0x4c2053(0x1f0))[_0x4c2053(0x1dc)](_0x4c2053(0x1ef),'Custom\x20entry\x20point,\x20default\x20is\x20#app')[_0x4c2053(0x213)](_0x4c2053(0x21d))[_0x4c2053(0x1d7)](async(_0x3462da,_0x16be51)=>{await f({'source':_0x3462da,..._0x16be51},D),process['exit'](0x0);}),i[_0x4c2053(0x1cf)](_0x4c2053(0x224))[_0x4c2053(0x1c1)]('migrate')[_0x4c2053(0x1d7)](async function(){const _0x548bf1=_0x4c2053;let _0x2cc529=p(Z);_0x2cc529||(D['text'](s['error']+_0x548bf1(0x1ca)),process[_0x548bf1(0x1f9)](0x1));let _0x2cf82c=await m();await q({'cwd':Z,..._0x2cf82c,..._0x2cc529},D),process[_0x548bf1(0x1f9)](0x0);}),i['on'](_0x4c2053(0x1df),_0x59d049=>{const _0x284ff4=_0x4c2053;i[_0x284ff4(0x1e4)](),c[_0x284ff4(0x210)](_0x284ff4(0x1c7)+_0x59d049);}),i[_0x4c2053(0x216)](process[_0x4c2053(0x1f6)]),i['args']['length']||i[_0x4c2053(0x1e4)]();
package/login/index.js CHANGED
@@ -1,169 +1 @@
1
- #!/usr/bin/env node
2
- /* eslint no-console: off */
3
- const chalk = require('chalk');
4
- const ora = require('ora');
5
- const jwt = require('jsonwebtoken');
6
- const qrcode = require('qrcode-terminal');
7
- const logSymbols = require('log-symbols');
8
- const config = require('../config');
9
- const envUtils = require('../utils/env');
10
- const log = require('../utils/log');
11
- const zaloLogin = require('./utils/zalo-login');
12
- const { axiosClient } = require('../utils/axios');
13
- const qs = require('qs');
14
-
15
- const waitText = chalk.gray('Login...');
16
- const spinner = ora(waitText);
17
-
18
- module.exports = async (options = {}, logger, { exitOnError = true } = {}) => {
19
- function errorExit(err) {
20
- log.error(err.stderr || err);
21
- if (exitOnError) process.exit(1);
22
- }
23
- if (!logger) {
24
- // eslint-disable-next-line
25
- logger = {
26
- statusStart() {},
27
- statusDone() {},
28
- statusText() {},
29
- statusError() {},
30
- text() {},
31
- error() {},
32
- };
33
- }
34
- logger.statusStart(waitText);
35
- spinner.start();
36
- const loginMethod = options.loginMethod;
37
- const appId = options.appId || envUtils.getEnv(config.env.appId);
38
- const token = options.token;
39
-
40
- const apiLogin = `${config.api_domain}${config.path.login}`;
41
-
42
- let intervalCheckLogin;
43
- try {
44
- spinner.start();
45
- if (loginMethod === 'zalo') {
46
- let zmpsk;
47
- await new Promise((resolve, reject) => {
48
- zaloLogin
49
- .getQRCode(appId)
50
- .then(function (response) {
51
- //handle success
52
- spinner.stop();
53
- const resData = response.data;
54
- if (!resData || resData.err < 0) {
55
- return reject(new Error(resData.msg));
56
- }
57
- const loginUrl = resData.data && resData.data.loginUrl;
58
- // const loginUrl = 'jaflksdjfalksdjfalksd'
59
- zmpsk = resData.data && resData.data.zmpsk;
60
- qrcode.generate(loginUrl, { small: true }, function (qrcode) {
61
- const qrCode = `${logSymbols.info} ${chalk.bold(
62
- `Scan the QR code with Zalo app:\n${qrcode}`
63
- )}`;
64
- logger.text(qrCode);
65
- });
66
- envUtils.setEnv(config.env.appId, appId);
67
- return resolve();
68
- })
69
- .catch(function (error) {
70
- //handle error
71
- spinner.stop();
72
- return reject(error);
73
- });
74
- });
75
- await new Promise((resolve, reject) => {
76
- if (!zmpsk) return reject(new Error('Token Invalid!'));
77
- let count = 0;
78
-
79
- intervalCheckLogin = setInterval(() => {
80
- logger.statusText(`${waitText} (Time out after ${60 - count}s)`);
81
- if (count > 60) {
82
- clearInterval(intervalCheckLogin);
83
- return reject(new Error(config.error_msg.request_timeout));
84
- }
85
- count++;
86
- zaloLogin
87
- .checkStatus(zmpsk)
88
- .then(function (response) {
89
- //handle success
90
- spinner.stop();
91
- const resData = response.data;
92
- if (
93
- resData &&
94
- resData.err === config.error_code.permission_denied
95
- ) {
96
- clearInterval(intervalCheckLogin);
97
- return reject(new Error(config.error_msg.permission_denied));
98
- }
99
-
100
- if (
101
- resData &&
102
- resData.err === config.error_code.request_timeout
103
- ) {
104
- clearInterval(intervalCheckLogin);
105
- return reject(new Error(config.error_msg.request_timeout));
106
- }
107
-
108
- if (resData && resData.err >= 0) {
109
- clearInterval(intervalCheckLogin);
110
- const token = resData.data && resData.data.jwt;
111
- envUtils.setEnv(config.env.token, token);
112
- logger.statusDone('Login Success!');
113
- return resolve();
114
- }
115
- })
116
- .catch(function (error) {
117
- //handle error
118
- clearInterval(intervalCheckLogin);
119
- spinner.stop();
120
- return reject(error);
121
- });
122
- }, 2000);
123
- });
124
- } else {
125
- await new Promise((resolve, reject) => {
126
- axiosClient({
127
- url: apiLogin,
128
- method: 'POST',
129
- headers: {
130
- 'cache-control': 'no-cache',
131
- 'content-type': 'application/x-www-form-urlencoded',
132
- },
133
- data: qs.stringify({
134
- accessToken: token,
135
- appId: appId,
136
- }),
137
- withCredentials: true,
138
- })
139
- .then(function (response) {
140
- //handle success
141
- spinner.stop();
142
- const resData = response.data;
143
- if (!resData || resData.err < 0) {
144
- return reject(new Error(resData.msg));
145
- }
146
- const token = resData.data && resData.data.jwt;
147
- try {
148
- const dataDecoded = jwt.decode(token);
149
- envUtils.setEnv(config.env.appId, dataDecoded.appId);
150
- envUtils.setEnv(config.env.token, token);
151
- } catch (error) {
152
- return reject(error);
153
- }
154
- logger.statusDone('Login Success!');
155
- return resolve();
156
- })
157
- .catch(function (error) {
158
- //handle error
159
- spinner.stop();
160
- return reject(error);
161
- });
162
- });
163
- }
164
- } catch (err) {
165
- logger.statusError('Login failed!');
166
- errorExit(err);
167
- return;
168
- }
169
- };
1
+ 'use strict';function _0x1013(){const _0x3cf4a4=['login','1051665NyzIxb','catch','statusDone','permission_denied','./utils/zalo-login','statusStart','../utils/log','statusError','1690MyDmpE','request_timeout','2snxJYs','appId','Login...','ora','loginUrl','error_code','qrcode-terminal','stringify','getEnv','start','7326429COjrWW','../utils/axios','no-cache','setEnv','getQRCode','text','\x20(Time\x20out\x20after\x20','153vcZLEX','loginMethod','707754EMDzYv','generate','228208dLHruL','statusText','Token\x20Invalid!','stderr','msg','exports','env','stop','path','then','../utils/env','10VNLCCq','Login\x20failed!','token','192995rsdXvm','256608DMIfSd','Scan\x20the\x20QR\x20code\x20with\x20Zalo\x20app:\x0a','POST','api_domain','zmpsk','decode','info','jsonwebtoken','7OqiHKN','2884YfCMFl','error_msg','Login\x20Success!','data','err'];_0x1013=function(){return _0x3cf4a4;};return _0x1013();}const _0x5f245f=_0x546f;(function(_0x1737c6,_0x46e3a9){const _0xc44cfc=_0x546f,_0x456174=_0x1737c6();while(!![]){try{const _0x3fdac6=parseInt(_0xc44cfc(0x20f))/0x1+parseInt(_0xc44cfc(0x1ec))/0x2*(parseInt(_0xc44cfc(0x1e2))/0x3)+parseInt(_0xc44cfc(0x1dc))/0x4*(-parseInt(_0xc44cfc(0x1ea))/0x5)+parseInt(_0xc44cfc(0x1ff))/0x6*(-parseInt(_0xc44cfc(0x1db))/0x7)+parseInt(_0xc44cfc(0x201))/0x8*(-parseInt(_0xc44cfc(0x1fd))/0x9)+-parseInt(_0xc44cfc(0x20c))/0xa*(-parseInt(_0xc44cfc(0x1f6))/0xb)+parseInt(_0xc44cfc(0x210))/0xc;if(_0x3fdac6===_0x46e3a9)break;else _0x456174['push'](_0x456174['shift']());}catch(_0x5f1572){_0x456174['push'](_0x456174['shift']());}}}(_0x1013,0x5dd76));function _0x546f(_0x1a87b9,_0x39b6d4){const _0x1013e3=_0x1013();return _0x546f=function(_0x546f40,_0x5f4b3f){_0x546f40=_0x546f40-0x1d7;let _0x28fb69=_0x1013e3[_0x546f40];return _0x28fb69;},_0x546f(_0x1a87b9,_0x39b6d4);}const e=require('chalk'),t=require(_0x5f245f(0x1ef)),r=require(_0x5f245f(0x1da)),a=require(_0x5f245f(0x1f2)),n=require('log-symbols'),o=require('../config'),s=require(_0x5f245f(0x20b)),i=require(_0x5f245f(0x1e8)),u=require(_0x5f245f(0x1e6)),{axiosClient:l}=require(_0x5f245f(0x1f7)),c=require('qs'),d=e['gray'](_0x5f245f(0x1ee)),p=t(d);module[_0x5f245f(0x206)]=async(_0x133070={},_0x38ca9f)=>{const _0x4fdbaa=_0x5f245f;let _0x43f9c0;_0x38ca9f||(_0x38ca9f={'statusStart'(){},'statusDone'(){},'statusText'(){},'statusError'(){},'text'(){},'error'(){}}),_0x38ca9f[_0x4fdbaa(0x1e7)](d),p['start']();let _0x567bdd=_0x133070[_0x4fdbaa(0x1fe)],_0x39a474=_0x133070[_0x4fdbaa(0x1ed)]||s[_0x4fdbaa(0x1f4)](o[_0x4fdbaa(0x207)][_0x4fdbaa(0x1ed)]),_0x410ad2=_0x133070['token'],_0x3b6649=''+o[_0x4fdbaa(0x213)]+o[_0x4fdbaa(0x209)][_0x4fdbaa(0x1e1)];try{if(p[_0x4fdbaa(0x1f5)](),'zalo'===_0x567bdd){let _0x3e4bde;await new Promise((_0x21f914,_0xf01b44)=>{const _0x36ff3c=_0x4fdbaa;u[_0x36ff3c(0x1fa)](_0x39a474)['then'](function(_0x2eb8be){const _0x9e6864=_0x36ff3c;p['stop']();let _0x1590cb=_0x2eb8be[_0x9e6864(0x1df)];if(!_0x1590cb||_0x1590cb[_0x9e6864(0x1e0)]<0x0)return _0xf01b44(Error(_0x1590cb['msg']));let _0x2bbede=_0x1590cb['data']&&_0x1590cb[_0x9e6864(0x1df)][_0x9e6864(0x1f0)];return _0x3e4bde=_0x1590cb[_0x9e6864(0x1df)]&&_0x1590cb[_0x9e6864(0x1df)][_0x9e6864(0x1d7)],a[_0x9e6864(0x200)](_0x2bbede,{'small':!0x0},function(_0x57869d){const _0x2810dc=_0x9e6864;let _0x41948f=n[_0x2810dc(0x1d9)]+'\x20'+e['bold'](_0x2810dc(0x211)+_0x57869d);_0x38ca9f[_0x2810dc(0x1fb)](_0x41948f);}),s[_0x9e6864(0x1f9)](o[_0x9e6864(0x207)][_0x9e6864(0x1ed)],_0x39a474),_0x21f914();})['catch'](function(_0x5e46db){return p['stop'](),_0xf01b44(_0x5e46db);});}),await new Promise((_0x4795aa,_0x5550d3)=>{const _0x561dd4=_0x4fdbaa;if(!_0x3e4bde)return _0x5550d3(Error(_0x561dd4(0x203)));let _0x24c81c=0x0;_0x43f9c0=setInterval(()=>{const _0x1615f1=_0x561dd4;if(_0x38ca9f[_0x1615f1(0x202)](d+_0x1615f1(0x1fc)+(0x3c-_0x24c81c)+'s)'),_0x24c81c>0x3c)return clearInterval(_0x43f9c0),_0x5550d3(Error(o[_0x1615f1(0x1dd)][_0x1615f1(0x1eb)]));_0x24c81c++,u['checkStatus'](_0x3e4bde)[_0x1615f1(0x20a)](function(_0x46b3fb){const _0x2f5270=_0x1615f1;p[_0x2f5270(0x208)]();let _0x33b5b8=_0x46b3fb['data'];if(_0x33b5b8&&_0x33b5b8[_0x2f5270(0x1e0)]===o[_0x2f5270(0x1f1)][_0x2f5270(0x1e5)])return clearInterval(_0x43f9c0),_0x5550d3(Error(o[_0x2f5270(0x1dd)][_0x2f5270(0x1e5)]));if(_0x33b5b8&&_0x33b5b8[_0x2f5270(0x1e0)]===o[_0x2f5270(0x1f1)]['request_timeout'])return clearInterval(_0x43f9c0),_0x5550d3(Error(o[_0x2f5270(0x1dd)][_0x2f5270(0x1eb)]));if(_0x33b5b8&&_0x33b5b8[_0x2f5270(0x1e0)]>=0x0){clearInterval(_0x43f9c0);let _0x4afb9f=_0x33b5b8[_0x2f5270(0x1df)]&&_0x33b5b8['data']['jwt'];return s[_0x2f5270(0x1f9)](o[_0x2f5270(0x207)]['token'],_0x4afb9f),_0x38ca9f['statusDone'](_0x2f5270(0x1de)),_0x4795aa();}})[_0x1615f1(0x1e3)](function(_0x4e667b){const _0x11ac3e=_0x1615f1;return clearInterval(_0x43f9c0),p[_0x11ac3e(0x208)](),_0x5550d3(_0x4e667b);});},0x7d0);});}else await new Promise((_0x4e197a,_0x159a3c)=>{const _0x53f916=_0x4fdbaa;l({'url':_0x3b6649,'method':_0x53f916(0x212),'headers':{'cache-control':_0x53f916(0x1f8),'content-type':'application/x-www-form-urlencoded'},'data':c[_0x53f916(0x1f3)]({'accessToken':_0x410ad2,'appId':_0x39a474}),'withCredentials':!0x0})['then'](function(_0x4fc994){const _0x3dd443=_0x53f916;p[_0x3dd443(0x208)]();let _0x26343e=_0x4fc994[_0x3dd443(0x1df)];if(!_0x26343e||_0x26343e[_0x3dd443(0x1e0)]<0x0)return _0x159a3c(Error(_0x26343e[_0x3dd443(0x205)]));let _0x41b7e4=_0x26343e['data']&&_0x26343e['data']['jwt'];try{let _0x291d99=r[_0x3dd443(0x1d8)](_0x41b7e4);s[_0x3dd443(0x1f9)](o[_0x3dd443(0x207)]['appId'],_0x291d99[_0x3dd443(0x1ed)]),s[_0x3dd443(0x1f9)](o[_0x3dd443(0x207)][_0x3dd443(0x20e)],_0x41b7e4);}catch(_0x4648c4){return _0x159a3c(_0x4648c4);}return _0x38ca9f[_0x3dd443(0x1e4)](_0x3dd443(0x1de)),_0x4e197a();})[_0x53f916(0x1e3)](function(_0x5e1bf3){const _0x2a2262=_0x53f916;return p[_0x2a2262(0x208)](),_0x159a3c(_0x5e1bf3);});});}catch(_0x30c964){_0x38ca9f[_0x4fdbaa(0x1e9)](_0x4fdbaa(0x20d)),i['error'](_0x30c964[_0x4fdbaa(0x204)]||_0x30c964);return;}};
@@ -1,58 +1 @@
1
- /* eslint no-param-reassign: ["off"] */
2
- const inquirer = require('inquirer');
3
- const envUtils = require('../../utils/env');
4
- const config = require('../../config');
5
-
6
- module.exports = function getOptions() {
7
- const questions = [
8
- {
9
- type: 'input',
10
- name: 'appId',
11
- message: 'Mini App ID:',
12
- when: () => !envUtils.getEnv(config.env.appId),
13
- validate(input) {
14
- return new Promise((resolve, reject) => {
15
- if (!input) reject(new Error('Mimi App ID is required'));
16
- else resolve(true);
17
- });
18
- },
19
- },
20
- {
21
- type: 'list',
22
- name: 'loginMethod',
23
- message: 'Choose a Login Method',
24
- choices: [
25
- {
26
- name: '1. Login Via QR Code With Zalo App',
27
- value: 'zalo',
28
- },
29
- {
30
- name: '2. Login With App Access Token',
31
- value: 'accessToken',
32
- },
33
- ],
34
- validate(input) {
35
- return new Promise((resolve, reject) => {
36
- if (!input || !input.length)
37
- reject(new Error('Login method is required!'));
38
- else resolve(true);
39
- });
40
- },
41
- },
42
- {
43
- type: 'input',
44
- name: 'token',
45
- message: 'Zalo Access Token:',
46
- when: (opts) => opts.loginMethod === 'accessToken',
47
- validate(input) {
48
- return new Promise((resolve, reject) => {
49
- if (!input) reject(new Error('Zalo Access Token is required'));
50
- else resolve(true);
51
- });
52
- },
53
- },
54
- ];
55
- return inquirer.prompt(questions).then((options) => {
56
- return Promise.resolve(options);
57
- });
58
- };
1
+ 'use strict';function _0xe8d3(_0x23f70e,_0x3167cb){const _0x185190=_0x1851();return _0xe8d3=function(_0xe8d3ad,_0x4c44c7){_0xe8d3ad=_0xe8d3ad-0x188;let _0x3ffcf4=_0x185190[_0xe8d3ad];return _0x3ffcf4;},_0xe8d3(_0x23f70e,_0x3167cb);}const _0x25efae=_0xe8d3;(function(_0x3aa002,_0x35cece){const _0x16c406=_0xe8d3,_0x436f15=_0x3aa002();while(!![]){try{const _0x23513a=-parseInt(_0x16c406(0x1a3))/0x1*(-parseInt(_0x16c406(0x19b))/0x2)+-parseInt(_0x16c406(0x196))/0x3*(parseInt(_0x16c406(0x192))/0x4)+-parseInt(_0x16c406(0x1a0))/0x5*(-parseInt(_0x16c406(0x19f))/0x6)+parseInt(_0x16c406(0x1a2))/0x7+-parseInt(_0x16c406(0x190))/0x8+parseInt(_0x16c406(0x19c))/0x9*(-parseInt(_0x16c406(0x1a4))/0xa)+parseInt(_0x16c406(0x188))/0xb*(parseInt(_0x16c406(0x19e))/0xc);if(_0x23513a===_0x35cece)break;else _0x436f15['push'](_0x436f15['shift']());}catch(_0x2aaddc){_0x436f15['push'](_0x436f15['shift']());}}}(_0x1851,0xab304));const e=require(_0x25efae(0x19d)),i=require(_0x25efae(0x195)),o=require('../../config');function _0x1851(){const _0x1c97d7=['Mimi\x20App\x20ID\x20is\x20required','131092kmIucx','then','list','../../utils/env','54TQGkoJ','1.\x20Login\x20Via\x20QR\x20Code\x20With\x20Zalo\x20App','Zalo\x20Access\x20Token\x20is\x20required','length','token','2tBfPMv','1107xzKetN','inquirer','12YhdqnG','6FOUVMA','3099710nCGQgg','2.\x20Login\x20With\x20App\x20Access\x20Token','6617555LxgDXV','595937SqDSaA','98970YtxFiR','env','Login\x20method\x20is\x20required!','4707681bGqzYo','Mini\x20App\x20ID:','zalo','loginMethod','appId','Choose\x20a\x20Login\x20Method','input','accessToken','646256omsvIZ'];_0x1851=function(){return _0x1c97d7;};return _0x1851();}module['exports']=function(){const _0x4258f1=_0x25efae;let _0x1b4a5b=[{'type':_0x4258f1(0x18e),'name':_0x4258f1(0x18c),'message':_0x4258f1(0x189),'when':()=>!i['getEnv'](o[_0x4258f1(0x1a5)][_0x4258f1(0x18c)]),'validate':_0x20b29d=>new Promise((_0x5d05df,_0x5a236d)=>{const _0x56d740=_0x4258f1;_0x20b29d?_0x5d05df(!0x0):_0x5a236d(Error(_0x56d740(0x191)));})},{'type':_0x4258f1(0x194),'name':'loginMethod','message':_0x4258f1(0x18d),'choices':[{'name':_0x4258f1(0x197),'value':_0x4258f1(0x18a)},{'name':_0x4258f1(0x1a1),'value':_0x4258f1(0x18f)}],'validate':_0xf68da8=>new Promise((_0x102117,_0x3bcf7e)=>{const _0x14020d=_0x4258f1;_0xf68da8&&_0xf68da8[_0x14020d(0x199)]?_0x102117(!0x0):_0x3bcf7e(Error(_0x14020d(0x1a6)));})},{'type':_0x4258f1(0x18e),'name':_0x4258f1(0x19a),'message':'Zalo\x20Access\x20Token:','when':_0x3ed0fc=>_0x4258f1(0x18f)===_0x3ed0fc[_0x4258f1(0x18b)],'validate':_0x55d5e4=>new Promise((_0x3cabaf,_0x1ee8c3)=>{const _0x4edbf9=_0x4258f1;_0x55d5e4?_0x3cabaf(!0x0):_0x1ee8c3(Error(_0x4edbf9(0x198)));})}];return e['prompt'](_0x1b4a5b)[_0x4258f1(0x193)](_0x1df721=>Promise['resolve'](_0x1df721));};
@@ -1,32 +1 @@
1
- const config = require('../../config');
2
- const { axiosClient } = require('../../utils/axios');
3
-
4
- module.exports = (function () {
5
- const apiRequestLogin = `${config.api_domain}${config.path.requestLogin}`;
6
-
7
- const apiCheckStatusLogin = `${config.api_domain}${config.path.checkLoginStatus}`;
8
- const getQRCode = (appId) => {
9
- return axiosClient({
10
- method: 'get',
11
- url: `${apiRequestLogin}?appId=${appId}`,
12
- headers: {
13
- 'cache-control': 'no-cache',
14
- },
15
- withCredentials: true,
16
- });
17
- };
18
- const checkStatus = (zmpsk) => {
19
- return axiosClient({
20
- method: 'get',
21
- url: `${apiCheckStatusLogin}?zmpsk=${zmpsk}`,
22
- headers: {
23
- 'cache-control': 'no-cache',
24
- },
25
- withCredentials: true,
26
- });
27
- };
28
- return {
29
- getQRCode,
30
- checkStatus,
31
- };
32
- })();
1
+ 'use strict';const _0x1c59ef=_0x3048;function _0x30e6(){const _0x52e43f=['2703840LZlGOw','path','50OHIpsd','get','1183762gBTtSU','requestLogin','8492428egDmYY','621380awjYXU','../../utils/axios','31340241QpfZTM','exports','api_domain','no-cache','8qrlQqX','5277594nMQbzC','?zmpsk=','../../config','866940pqjmGS'];_0x30e6=function(){return _0x52e43f;};return _0x30e6();}(function(_0x4e4d99,_0x564816){const _0x19b75f=_0x3048,_0x1be0b3=_0x4e4d99();while(!![]){try{const _0x2ec388=-parseInt(_0x19b75f(0x1a9))/0x1+-parseInt(_0x19b75f(0x1a4))/0x2+parseInt(_0x19b75f(0x1a5))/0x3+-parseInt(_0x19b75f(0x1ac))/0x4*(parseInt(_0x19b75f(0x1a7))/0x5)+parseInt(_0x19b75f(0x1a1))/0x6+-parseInt(_0x19b75f(0x1ab))/0x7+-parseInt(_0x19b75f(0x1a0))/0x8*(-parseInt(_0x19b75f(0x1ae))/0x9);if(_0x2ec388===_0x564816)break;else _0x1be0b3['push'](_0x1be0b3['shift']());}catch(_0x3308d3){_0x1be0b3['push'](_0x1be0b3['shift']());}}}(_0x30e6,0xd6a8a));function _0x3048(_0x5050f1,_0x9be8db){const _0x30e626=_0x30e6();return _0x3048=function(_0x304843,_0x592e71){_0x304843=_0x304843-0x19f;let _0xad6eb=_0x30e626[_0x304843];return _0xad6eb;},_0x3048(_0x5050f1,_0x9be8db);}const e=require(_0x1c59ef(0x1a3)),{axiosClient:t}=require(_0x1c59ef(0x1ad));module[_0x1c59ef(0x1af)]=(function(){const _0x2a6aa5=_0x1c59ef;let _0x2c4271=''+e[_0x2a6aa5(0x1b0)]+e[_0x2a6aa5(0x1a6)][_0x2a6aa5(0x1aa)],_0x4f4334=''+e[_0x2a6aa5(0x1b0)]+e[_0x2a6aa5(0x1a6)]['checkLoginStatus'];return{'getQRCode':_0x1744c0=>t({'method':_0x2a6aa5(0x1a8),'url':_0x2c4271+'?appId='+_0x1744c0,'headers':{'cache-control':_0x2a6aa5(0x19f)},'withCredentials':!0x0}),'checkStatus':_0x321cfa=>t({'method':'get','url':_0x4f4334+_0x2a6aa5(0x1a2)+_0x321cfa,'headers':{'cache-control':_0x2a6aa5(0x19f)},'withCredentials':!0x0})};}());
@@ -1,19 +1 @@
1
- const fse = require('../../utils/fs-extra');
2
- const path = require('path');
3
- const exec = require('exec-sh');
4
-
5
- async function updateIcon(options) {
6
- if (options.uiFramework === 'zmp-framework') {
7
- fse.copyFileAsync(
8
- path.resolve(__dirname, './icons.css'),
9
- path.resolve(options.cwd, './src/css/icons.css')
10
- );
11
- await exec.promise(`npm install zmp-framework@latest`, true);
12
- } else if (options.uiFramework === 'zmp-ui') {
13
- await exec.promise(`npm install zmp-ui@latest`, true);
14
- } else {
15
- return;
16
- }
17
- }
18
-
19
- module.exports = updateIcon;
1
+ 'use strict';const _0x10c4fe=_0x5190;function _0x1ed5(){const _0x2b86ca=['../../utils/fs-extra','path','4018wYyozN','exports','npm\x20install\x20zmp-framework@latest','3570424ScWscx','5URQGoa','resolve','449913CiJsSD','4keCVDx','440BUaXwL','3974470YIqtEd','58177WvZfmT','promise','./src/css/icons.css','236vMcqBG','cwd','copyFileAsync','zmp-framework','uiFramework','11565228EMpKss','9tKJOoR','zmp-ui','1646394gKtXMe'];_0x1ed5=function(){return _0x2b86ca;};return _0x1ed5();}(function(_0x3915a6,_0x14d7f0){const _0x20f73f=_0x5190,_0x5e9097=_0x3915a6();while(!![]){try{const _0x1cc721=-parseInt(_0x20f73f(0x117))/0x1*(-parseInt(_0x20f73f(0x124))/0x2)+parseInt(_0x20f73f(0x11d))/0x3*(-parseInt(_0x20f73f(0x11e))/0x4)+-parseInt(_0x20f73f(0x11b))/0x5*(parseInt(_0x20f73f(0x12c))/0x6)+parseInt(_0x20f73f(0x121))/0x7*(parseInt(_0x20f73f(0x11f))/0x8)+parseInt(_0x20f73f(0x12a))/0x9*(parseInt(_0x20f73f(0x120))/0xa)+parseInt(_0x20f73f(0x11a))/0xb+-parseInt(_0x20f73f(0x129))/0xc;if(_0x1cc721===_0x14d7f0)break;else _0x5e9097['push'](_0x5e9097['shift']());}catch(_0x4052d2){_0x5e9097['push'](_0x5e9097['shift']());}}}(_0x1ed5,0x40ba1));function _0x5190(_0x4c7025,_0x10cbe0){const _0x1ed5f6=_0x1ed5();return _0x5190=function(_0x5190ba,_0xf03235){_0x5190ba=_0x5190ba-0x115;let _0x1e532a=_0x1ed5f6[_0x5190ba];return _0x1e532a;},_0x5190(_0x4c7025,_0x10cbe0);}const e=require(_0x10c4fe(0x115)),s=require(_0x10c4fe(0x116)),r=require('exec-sh');async function i(_0x3c78ba){const _0x1c8cb4=_0x10c4fe;if(_0x1c8cb4(0x127)===_0x3c78ba[_0x1c8cb4(0x128)])e[_0x1c8cb4(0x126)](s[_0x1c8cb4(0x11c)](__dirname,'./icons.css'),s[_0x1c8cb4(0x11c)](_0x3c78ba[_0x1c8cb4(0x125)],_0x1c8cb4(0x123))),await r[_0x1c8cb4(0x122)](_0x1c8cb4(0x119),!0x0);else{if(_0x1c8cb4(0x12b)!==_0x3c78ba[_0x1c8cb4(0x128)])return;await r[_0x1c8cb4(0x122)]('npm\x20install\x20zmp-ui@latest',!0x0);}}module[_0x10c4fe(0x118)]=i;