zmp-cli 3.15.6 → 3.15.7

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 (166) hide show
  1. package/README.md +1 -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/init-zmp-ui.js +1 -216
  6. package/create/templates/app-parameters.js +9 -25
  7. package/create/templates/common/webpack/build.js +2 -40
  8. package/create/templates/copy-assets.js +1 -158
  9. package/create/templates/core/copy-assets.js +14 -82
  10. package/create/templates/core/generate-home-page.js +16 -38
  11. package/create/templates/core/generate-root.js +28 -63
  12. package/create/templates/core/generate-routes.js +12 -38
  13. package/create/templates/core/generate-scripts.js +16 -65
  14. package/create/templates/create-folders.js +1 -30
  15. package/create/templates/generate-config-xml.js +2 -9
  16. package/create/templates/generate-index.js +10 -35
  17. package/create/templates/generate-manifest.js +1 -49
  18. package/create/templates/generate-recoil.js +4 -16
  19. package/create/templates/generate-routes.js +1 -16
  20. package/create/templates/generate-scripts.js +1 -16
  21. package/create/templates/generate-service-worker.js +4 -10
  22. package/create/templates/generate-store.js +4 -15
  23. package/create/templates/generate-styles.js +10 -64
  24. package/create/templates/generate-webpack-config.js +43 -125
  25. package/create/templates/generate-zmp-custom.js +14 -72
  26. package/create/templates/react/copy-assets.js +1 -85
  27. package/create/templates/react/generate-home-page.js +20 -50
  28. package/create/templates/react/generate-root.js +15 -44
  29. package/create/templates/react/generate-routes.js +1 -16
  30. package/create/templates/react/generate-scripts.js +12 -38
  31. package/create/templates/react/pages/404.js +2 -10
  32. package/create/templates/react/pages/about.js +2 -10
  33. package/create/templates/react/pages/catalog.js +3 -17
  34. package/create/templates/react/pages/dynamic-route.js +2 -10
  35. package/create/templates/react/pages/form.js +6 -26
  36. package/create/templates/react/pages/index copy.js +1 -17
  37. package/create/templates/react/pages/index.js +1 -17
  38. package/create/templates/react/pages/settings.js +3 -17
  39. package/create/templates/react/pages/user.js +8 -27
  40. package/create/templates/react-typescript/components/app-items.js +2 -9
  41. package/create/templates/react-typescript/components/index.js +1 -9
  42. package/create/templates/react-typescript/components/navbar-back.js +2 -9
  43. package/create/templates/react-typescript/components/user-card.js +2 -9
  44. package/create/templates/react-typescript/copy-assets.js +1 -94
  45. package/create/templates/react-typescript/generate-home-page.js +20 -52
  46. package/create/templates/react-typescript/generate-root.js +14 -45
  47. package/create/templates/react-typescript/generate-routes.js +1 -12
  48. package/create/templates/react-typescript/generate-scripts.js +12 -37
  49. package/create/templates/react-typescript/pages/404.js +2 -10
  50. package/create/templates/react-typescript/pages/about.js +2 -10
  51. package/create/templates/react-typescript/pages/catalog.js +3 -17
  52. package/create/templates/react-typescript/pages/dynamic-route.js +2 -10
  53. package/create/templates/react-typescript/pages/form.js +6 -26
  54. package/create/templates/react-typescript/pages/index.js +1 -17
  55. package/create/templates/react-typescript/pages/settings.js +3 -17
  56. package/create/templates/react-typescript/pages/user.js +8 -27
  57. package/create/templates/svelte/copy-assets.js +1 -47
  58. package/create/templates/svelte/generate-home-page.js +20 -56
  59. package/create/templates/svelte/generate-root.js +22 -80
  60. package/create/templates/svelte/generate-routes.js +7 -22
  61. package/create/templates/svelte/generate-scripts.js +7 -23
  62. package/create/templates/vue/copy-assets.js +1 -67
  63. package/create/templates/vue/generate-home-page.js +2 -8
  64. package/create/templates/vue/generate-root.js +3 -13
  65. package/create/templates/vue/generate-routes.js +1 -7
  66. package/create/templates/vue/generate-scripts.js +9 -26
  67. package/create/templates/vue/global-components.d.js +1 -0
  68. package/create/templates/zaui/copy-assets.js +1 -90
  69. package/create/templates/zaui/generate-home-page.js +27 -53
  70. package/create/templates/zaui/generate-root.js +14 -34
  71. package/create/templates/zaui/generate-routes.js +1 -10
  72. package/create/templates/zaui/generate-scripts.js +6 -20
  73. package/create/templates/zaui/generate-user-card.js +3 -18
  74. package/create/templates/zaui/pages/about.js +3 -20
  75. package/create/templates/zaui/pages/form.js +3 -20
  76. package/create/templates/zaui/pages/index.js +1 -9
  77. package/create/templates/zaui/pages/user.js +3 -20
  78. package/create/utils/colors.js +1 -94
  79. package/create/utils/generate-app-config.js +1 -34
  80. package/create/utils/generate-gitignore.js +1 -43
  81. package/create/utils/generate-npm-scripts.js +1 -26
  82. package/create/utils/generate-package-json.js +1 -132
  83. package/create/utils/generate-readme.js +1 -28
  84. package/create/utils/get-options.js +1 -204
  85. package/create/utils/indent.js +1 -31
  86. package/create/utils/npm-scripts.js +1 -62
  87. package/create/utils/string.js +1 -13
  88. package/create/utils/styles-extension.js +1 -9
  89. package/create/utils/template-if.js +1 -9
  90. package/deploy/index.js +1 -149
  91. package/deploy/utils/get-options.js +1 -69
  92. package/deploy/utils/request-upload.js +1 -34
  93. package/deploy/utils/upload-app.js +1 -82
  94. package/index.js +1 -319
  95. package/login/index.js +1 -169
  96. package/login/utils/get-options.js +1 -58
  97. package/login/utils/zalo-login.js +1 -32
  98. package/migrate/icons/update-icon-v3.js +1 -19
  99. package/migrate/index.js +1 -60
  100. package/migrate/utils/get-options.js +1 -46
  101. package/migrate/utils/migrate-react.js +1 -33
  102. package/package.json +11 -39
  103. package/start/generate-hr-config.js +1 -59
  104. package/start/index.js +1 -382
  105. package/sync/index-to-app-config.js +1 -146
  106. package/sync/index.js +1 -55
  107. package/utils/axios.js +1 -15
  108. package/utils/check-update.js +1 -53
  109. package/utils/constants.js +1 -20
  110. package/utils/env.js +1 -39
  111. package/utils/error.js +1 -16
  112. package/utils/find-files-by-ext.js +1 -27
  113. package/utils/find-free-port.js +1 -11
  114. package/utils/fs-extra.js +1 -90
  115. package/utils/generate-pages-map.js +1 -17
  116. package/utils/get-app-info.js +1 -22
  117. package/utils/get-current-project.js +1 -25
  118. package/utils/get-ip.js +1 -19
  119. package/utils/log.js +1 -19
  120. package/utils/node-blob.js +1 -106
  121. package/utils/resumable.d.js +1 -0
  122. package/utils/resumable.js +1 -1204
  123. package/utils/spinner.js +1 -25
  124. package/utils/tunnel.js +1 -36
  125. package/.editorconfig +0 -15
  126. package/.eslintignore +0 -8
  127. package/.eslintrc.js +0 -10
  128. package/.vscode/launch.json +0 -23
  129. package/LICENSE +0 -21
  130. package/README.git.md +0 -37
  131. package/assets/index.js +0 -147
  132. package/build/dist/index.dev.js +0 -217
  133. package/config/dist/index.dev.js +0 -48
  134. package/create/templates/dist/generate-styles.dev.js +0 -46
  135. package/create/templates/react/dist/generate-scripts.dev.js +0 -23
  136. package/create/templates/react-typescript/dist/generate-scripts.dev.js +0 -23
  137. package/create/utils/dist/get-options.dev.js +0 -277
  138. package/deploy/dist/index.dev.js +0 -227
  139. package/deploy/utils/dist/request-upload.dev.js +0 -62
  140. package/deploy/utils/dist/upload-app.dev.js +0 -113
  141. package/dist/bundle.js +0 -1
  142. package/dist/index.dev.js +0 -352
  143. package/jsconfig.json +0 -8
  144. package/login/dist/index.dev.js +0 -223
  145. package/login/utils/dist/zalo-login.dev.js +0 -41
  146. package/screenshots/wellcome.jpg +0 -0
  147. package/show-qr-app/assets/css/style.css +0 -87
  148. package/show-qr-app/assets/js/qrcode.min.js +0 -1
  149. package/show-qr-app/index.html +0 -57
  150. package/show-qr-app/package.json +0 -14
  151. package/start/dist/index.dev.js +0 -312
  152. package/ui/server.js +0 -194
  153. package/ui/www/css/app.css +0 -1
  154. package/ui/www/css/app.css.map +0 -1
  155. package/ui/www/fonts/ZMPIcons-Regular.eot +0 -0
  156. package/ui/www/fonts/ZMPIcons-Regular.ttf +0 -0
  157. package/ui/www/fonts/ZMPIcons-Regular.woff +0 -0
  158. package/ui/www/fonts/ZMPIcons-Regular.woff2 +0 -0
  159. package/ui/www/images/logo.png +0 -0
  160. package/ui/www/index.html +0 -1
  161. package/ui/www/js/app.js +0 -3
  162. package/ui/www/js/app.js.LICENSE.txt +0 -20
  163. package/ui/www/js/app.js.map +0 -1
  164. package/ui/www/static/icons/apple-touch-icon.png +0 -0
  165. package/ui/www/static/icons/favicon.png +0 -0
  166. package/utils/dist/get-app-info.dev.js +0 -54
package/README.md CHANGED
@@ -0,0 +1 @@
1
+ ""
package/build/index.js CHANGED
@@ -1,184 +1 @@
1
- #!/usr/bin/env node
2
- /* eslint no-console: off */
3
- const chalk = require('chalk');
4
- const ora = require('ora');
5
- const path = require('path');
6
- const { build } = require('vite');
7
- const dynamicImportVars = require('@rollup/plugin-dynamic-import-vars').default;
8
- const _ = require('lodash');
9
- const replace = require('@rollup/plugin-replace');
10
- const log = require('../utils/log');
11
- const fse = require('../utils/fs-extra');
12
- const getAppInfo = require('../utils/get-app-info');
13
- const envUtils = require('../utils/env');
14
- const config = require('../config');
15
- const generatePagesMap = require('../utils/generate-pages-map');
16
-
17
- const env = envUtils.getEnv('NODE_ENV') || 'production';
18
-
19
- const waitText = chalk.gray('Building... (Please wait, it can take a while)');
20
- const frameworkWarning = chalk.yellow(
21
- 'Warning: This CLI version will work better with zmp-framework version 1.5.0 or higher'
22
- );
23
- const spinner = ora(
24
- env === 'production'
25
- ? 'Building for production...'
26
- : 'Building development version...'
27
- );
28
-
29
- module.exports = async (options = {}, logger, { exitOnError = true } = {}) => {
30
- const cwd = options.cwd || process.cwd();
31
- const resolvePath = (dir) => {
32
- return path.join(cwd, dir);
33
- };
34
- const appConfig =
35
- options.appConfigJson || require(resolvePath(config.filename.appConfig));
36
- function errorExit(err) {
37
- log.error(err.stderr || err);
38
- if (exitOnError) process.exit(1);
39
- }
40
- if (!logger) {
41
- // eslint-disable-next-line
42
- logger = {
43
- statusStart() {},
44
- statusDone() {},
45
- statusError() {},
46
- text() {},
47
- error() {},
48
- };
49
- }
50
- logger.text(frameworkWarning);
51
- spinner.start();
52
- logger.statusStart(waitText);
53
- try {
54
- const appId = envUtils.getEnv(config.env.appId);
55
- let nextVersion = options.nextVersion;
56
- if (!nextVersion) {
57
- const appInfo = await getAppInfo(appId, options);
58
- let currentVersion =
59
- appInfo && appInfo.latestVersion && Number(appInfo.latestVersion);
60
- if (currentVersion === undefined || currentVersion === null) {
61
- currentVersion = 0;
62
- }
63
- nextVersion = currentVersion + 1;
64
- }
65
-
66
- let viteConfig = 'vite.config.js';
67
- const isTypeScriptProject = fse.existsSync(
68
- path.join(cwd, 'vite.config.ts')
69
- );
70
- if (isTypeScriptProject) {
71
- viteConfig = 'vite.config.ts';
72
- }
73
- // eslint-disable-next-line
74
- const res = await build({
75
- configFile: path.join(cwd, viteConfig),
76
- root: cwd,
77
- base: `${config.zdn_url}${appId}/${nextVersion}/`,
78
- css: {
79
- modules: {
80
- scopeBehaviour: 'local',
81
- },
82
- },
83
- mode: options.mode,
84
- build: {
85
- target: 'es2015',
86
- outDir: path.join(cwd, 'www'),
87
- assetsInlineLimit: 0,
88
- cssCodeSplit: false,
89
- cssTarget: ['es2015', 'safari13.1'],
90
- rollupOptions: {
91
- plugins: [
92
- replace({
93
- values: {
94
- ZMP_IMPORT_PAGES: () => generatePagesMap(cwd),
95
- },
96
- }),
97
- dynamicImportVars({
98
- warnOnError: true,
99
- }),
100
- ],
101
- output: {
102
- entryFileNames: 'assets/[name].[hash].module.js',
103
- chunkFileNames: 'assets/[name].[hash].module.js',
104
- },
105
- },
106
- },
107
- logLevel: 'error',
108
- });
109
-
110
- const output = res.output.map((obj) =>
111
- _.pick(obj, [
112
- 'fileName',
113
- 'type',
114
- 'imports',
115
- 'isEntry',
116
- 'isImplicitEntry',
117
- 'isDynamicEntry',
118
- ])
119
- );
120
-
121
- const outputMap = new Map();
122
- output.forEach((obj) => {
123
- outputMap.set(obj.fileName, obj);
124
- });
125
-
126
- // Entry files, cần đc load sync bằng thẻ script
127
- const jsFiles = output.filter((file) => {
128
- return file.type === 'chunk' && file.isEntry;
129
- });
130
-
131
- // Các file cần preload
132
- const modulePreloadFiles = [];
133
- const getImportedChunks = (chunk, seen = new Set()) => {
134
- const chunks = [];
135
- chunk.imports.forEach((file) => {
136
- const importee = outputMap.get(file);
137
- if (importee?.type === 'chunk' && !seen.has(file)) {
138
- seen.add(file);
139
- chunks.push(...getImportedChunks(importee, seen));
140
- chunks.push(importee);
141
- }
142
- });
143
- return chunks;
144
- };
145
- jsFiles.forEach((file) => {
146
- const chunks = getImportedChunks(file);
147
- modulePreloadFiles.push(...chunks);
148
- });
149
-
150
- const cssFiles = output.filter((file) => {
151
- if (file.type !== 'asset' || !file.fileName.endsWith('.css'))
152
- return false;
153
- // const name = file.fileName.replace(/\.([a-z0-9]{8})\.css$/, '');
154
- // if (!jsFiles.find((js) => js.fileName.startsWith(name))) return false;
155
- return true;
156
- });
157
- const appConfigJson = {
158
- ...appConfig,
159
- listCSS: [
160
- ...(Array.isArray(appConfig.listCSS) ? appConfig.listCSS : []),
161
- ...cssFiles.map((f) => f.fileName),
162
- ],
163
- listSyncJS: [
164
- ...(Array.isArray(appConfig.listSyncJS) ? appConfig.listSyncJS : []),
165
- ...jsFiles.map((f) => f.fileName),
166
- ],
167
- listAsyncJS: [
168
- ...modulePreloadFiles.map((f) => f.fileName),
169
- ...(Array.isArray(appConfig.listAsyncJS) ? appConfig.listAsyncJS : []),
170
- ],
171
- };
172
- fse.writeFileSync(
173
- resolvePath(`www/${config.filename.appConfig}`),
174
- JSON.stringify(appConfigJson)
175
- );
176
- logger.statusDone(`${chalk.bold.green('Build Done!\n')}`);
177
- return appConfigJson;
178
- } catch (err) {
179
- logger.statusError('Error building project');
180
- // if (err) logger.error(err.stderr || err);
181
- errorExit(err);
182
- return;
183
- }
184
- };
1
+ 'use strict';const _0x50ffc2=_0x4ef1;(function(_0x16aacd,_0x3acc14){const _0x4df43b=_0x4ef1,_0x5518e3=_0x16aacd();while(!![]){try{const _0x45e8cc=parseInt(_0x4df43b(0x1fb))/0x1*(parseInt(_0x4df43b(0x1d3))/0x2)+parseInt(_0x4df43b(0x1e2))/0x3*(parseInt(_0x4df43b(0x1ef))/0x4)+-parseInt(_0x4df43b(0x1d8))/0x5*(parseInt(_0x4df43b(0x1cb))/0x6)+-parseInt(_0x4df43b(0x200))/0x7+-parseInt(_0x4df43b(0x1f7))/0x8+parseInt(_0x4df43b(0x1c7))/0x9+parseInt(_0x4df43b(0x1ce))/0xa;if(_0x45e8cc===_0x3acc14)break;else _0x5518e3['push'](_0x5518e3['shift']());}catch(_0x4443a9){_0x5518e3['push'](_0x5518e3['shift']());}}}(_0xbd49,0xcfd36));function _0x4ef1(_0x2b03a3,_0x39ca5f){const _0xbd491e=_0xbd49();return _0x4ef1=function(_0x4ef15e,_0x2ec769){_0x4ef15e=_0x4ef15e-0x1c1;let _0x5966c5=_0xbd491e[_0x4ef15e];return _0x5966c5;},_0x4ef1(_0x2b03a3,_0x39ca5f);}const e=require(_0x50ffc2(0x1fc)),r=require(_0x50ffc2(0x1c5)),t=require('path'),{build:i}=require(_0x50ffc2(0x1e6)),s=require(_0x50ffc2(0x202))[_0x50ffc2(0x1e0)],a=require(_0x50ffc2(0x1e4)),l=require('@rollup/plugin-replace'),n=require(_0x50ffc2(0x1cc)),o=require(_0x50ffc2(0x1dd)),u=require('../utils/get-app-info'),p=require('../utils/env'),c=require('../config'),m=require(_0x50ffc2(0x1c9)),g=p[_0x50ffc2(0x1ff)](_0x50ffc2(0x205))||_0x50ffc2(0x1ea),y=e['gray'](_0x50ffc2(0x1f1)),d=e[_0x50ffc2(0x208)]('Warning:\x20This\x20CLI\x20version\x20will\x20work\x20better\x20with\x20zmp-framework\x20version\x201.5.0\x20or\x20higher'),f=r(_0x50ffc2(0x1ea)===g?'Building\x20for\x20production...':_0x50ffc2(0x1c2));function _0xbd49(){const _0x47f768=['30392840NJfDbb','statusStart','zdn_url','Build\x20Done!\x0a','appConfig','43220ZlAgUz','appId','latestVersion','vite.config.ts','es2015','5zSyQgp','forEach','mode','imports','listCSS','../utils/fs-extra','exit','stderr','default','error','3IUoEJr','writeFileSync','lodash','statusDone','vite','set','stringify','fileName','production','exports','appConfigJson','has','get','947740MwFYEL','local','Building...\x20(Please\x20wait,\x20it\x20can\x20take\x20a\x20while)','asset','isArray','bold','filename','filter','13065976UHeZEU','isImplicitEntry','statusError','nextVersion','20vhsCOH','chalk','isDynamicEntry','chunk','getEnv','9992766aOAtPF','type','@rollup/plugin-dynamic-import-vars','join','assets/[name].[hash].module.js','NODE_ENV','pick','map','yellow','listSyncJS','push','Building\x20development\x20version...','cwd','www/','ora','www','14191083hkyApS','.css','../utils/generate-pages-map','vite.config.js','8239002chnzRi','../utils/log','env'];_0xbd49=function(){return _0x47f768;};return _0xbd49();}module[_0x50ffc2(0x1eb)]=async(_0x26d613={},_0x589c30,{exitOnError:_0x1dae75=!0x0}={})=>{const _0x108297=_0x50ffc2;let _0x1fb8b7=_0x26d613[_0x108297(0x1c3)]||process[_0x108297(0x1c3)](),_0xd0dbec=_0x53cab6=>t[_0x108297(0x203)](_0x1fb8b7,_0x53cab6),_0x2c6223=_0x26d613[_0x108297(0x1ec)]||require(_0xd0dbec(c[_0x108297(0x1f5)][_0x108297(0x1d2)]));_0x589c30||(_0x589c30={'statusStart'(){},'statusDone'(){},'statusError'(){},'text'(){},'error'(){}}),_0x589c30['text'](d),f['start'](),_0x589c30[_0x108297(0x1cf)](y);try{let _0x5a5aad=p[_0x108297(0x1ff)](c[_0x108297(0x1cd)][_0x108297(0x1d4)]),_0x534b5c=_0x26d613[_0x108297(0x1fa)];if(!_0x534b5c){let _0x495547=await u(_0x5a5aad,_0x26d613),_0x3d948a=_0x495547&&_0x495547[_0x108297(0x1d5)]&&Number(_0x495547[_0x108297(0x1d5)]);null==_0x3d948a&&(_0x3d948a=0x0),_0x534b5c=_0x3d948a+0x1;}let _0x1385f0=_0x108297(0x1ca);o['existsSync'](t['join'](_0x1fb8b7,_0x108297(0x1d6)))&&(_0x1385f0=_0x108297(0x1d6));let _0x13549d=(await i({'configFile':t[_0x108297(0x203)](_0x1fb8b7,_0x1385f0),'root':_0x1fb8b7,'base':''+c[_0x108297(0x1d0)]+_0x5a5aad+'/'+_0x534b5c+'/','css':{'modules':{'scopeBehaviour':_0x108297(0x1f0)}},'mode':_0x26d613[_0x108297(0x1da)],'build':{'target':_0x108297(0x1d7),'outDir':t[_0x108297(0x203)](_0x1fb8b7,_0x108297(0x1c6)),'assetsInlineLimit':0x0,'cssCodeSplit':!0x1,'cssTarget':[_0x108297(0x1d7),'safari13.1'],'rollupOptions':{'plugins':[l({'values':{'ZMP_IMPORT_PAGES':()=>m(_0x1fb8b7)}}),s({'warnOnError':!0x0})],'output':{'entryFileNames':_0x108297(0x204),'chunkFileNames':_0x108297(0x204)}}},'logLevel':'error'}))['output'][_0x108297(0x207)](_0x30ff99=>a[_0x108297(0x206)](_0x30ff99,['fileName',_0x108297(0x201),_0x108297(0x1db),'isEntry',_0x108297(0x1f8),_0x108297(0x1fd)])),_0x1b4210=new Map();_0x13549d[_0x108297(0x1d9)](_0x2dd165=>{const _0x42ff32=_0x108297;_0x1b4210[_0x42ff32(0x1e7)](_0x2dd165[_0x42ff32(0x1e9)],_0x2dd165);});let _0x427893=_0x13549d[_0x108297(0x1f6)](_0x421f2e=>_0x108297(0x1fe)===_0x421f2e[_0x108297(0x201)]&&_0x421f2e['isEntry']),_0x5f4a72=[],_0x27b279=(_0x50d18c,_0x1cafa3=new Set())=>{const _0x20b56e=_0x108297;let _0x432269=[];return _0x50d18c['imports'][_0x20b56e(0x1d9)](_0x53a34b=>{const _0x251ec3=_0x20b56e;let _0x479c40=_0x1b4210[_0x251ec3(0x1ee)](_0x53a34b);_0x479c40?.['type']!==_0x251ec3(0x1fe)||_0x1cafa3[_0x251ec3(0x1ed)](_0x53a34b)||(_0x1cafa3['add'](_0x53a34b),_0x432269['push'](..._0x27b279(_0x479c40,_0x1cafa3)),_0x432269[_0x251ec3(0x1c1)](_0x479c40));}),_0x432269;};_0x427893[_0x108297(0x1d9)](_0x228b6a=>{const _0x179957=_0x108297;let _0x32e4c3=_0x27b279(_0x228b6a);_0x5f4a72[_0x179957(0x1c1)](..._0x32e4c3);});let _0x57c9b9=_0x13549d[_0x108297(0x1f6)](_0x623a58=>!!(_0x108297(0x1f2)===_0x623a58[_0x108297(0x201)]&&_0x623a58[_0x108297(0x1e9)]['endsWith'](_0x108297(0x1c8)))),_0x45c6b8={..._0x2c6223,'listCSS':[...Array['isArray'](_0x2c6223[_0x108297(0x1dc)])?_0x2c6223['listCSS']:[],..._0x57c9b9[_0x108297(0x207)](_0x581813=>_0x581813[_0x108297(0x1e9)])],'listSyncJS':[...Array[_0x108297(0x1f3)](_0x2c6223[_0x108297(0x209)])?_0x2c6223['listSyncJS']:[],..._0x427893[_0x108297(0x207)](_0x1a6ea3=>_0x1a6ea3[_0x108297(0x1e9)])],'listAsyncJS':[..._0x5f4a72[_0x108297(0x207)](_0x5aebd2=>_0x5aebd2[_0x108297(0x1e9)]),...Array[_0x108297(0x1f3)](_0x2c6223['listAsyncJS'])?_0x2c6223['listAsyncJS']:[]]};return o[_0x108297(0x1e3)](_0xd0dbec(_0x108297(0x1c4)+c['filename'][_0x108297(0x1d2)]),JSON[_0x108297(0x1e8)](_0x45c6b8)),_0x589c30[_0x108297(0x1e5)](''+e[_0x108297(0x1f4)]['green'](_0x108297(0x1d1))),_0x45c6b8;}catch(_0x5980a5){_0x589c30[_0x108297(0x1f9)]('Error\x20building\x20project'),n[_0x108297(0x1e1)](_0x5980a5[_0x108297(0x1df)]||_0x5980a5),_0x1dae75&&process[_0x108297(0x1de)](0x1);return;}};
package/config/index.js CHANGED
@@ -1,44 +1 @@
1
- module.exports = {
2
- filename: {
3
- appConfig: 'app-config.json',
4
- zmpConfig: 'zmp-cli.json',
5
- packageJson: 'package.json',
6
- },
7
- api_domain: 'https://zmp-api.developers.zalo.me/',
8
- zdn_url: '//h5.zdn.vn/zapps/',
9
- path: {
10
- login: 'admin/login',
11
- requestLogin: 'admin/request-login',
12
- checkLoginStatus: 'admin/get-login-status',
13
- // uploadApp: 'admin/upload-app',
14
- uploadAppByChunk: 'app/upload-chunk',
15
- requestUploadResumable: 'app/request-upload',
16
- getAppInfo: 'app/get-info',
17
- },
18
- dirname: __dirname,
19
- root_env: () => `${process.cwd()}/.env`,
20
- env: {
21
- appId: 'APP_ID',
22
- token: 'ZMP_TOKEN',
23
- },
24
- error_code: {
25
- app_config_not_found: -1400,
26
- permission_denied: -2001,
27
- request_timeout: -2003,
28
- },
29
- error_msg: {
30
- app_config_not_found:
31
- "App config not found. Please re-init project. (Tips: Run 'zmp init')",
32
- permission_denied:
33
- "Permission denied. Please login again. (Tips: Run 'zmp login')",
34
- request_timeout: 'Request Timeout',
35
- },
36
- resumable_option: {
37
- chunkSize: 512 * 1000, // bytes -> 512kb/chunk
38
- simultaneousUploads: 4,
39
- testChunks: true,
40
- throttleProgressCallbacks: 1,
41
- method: 'octet',
42
- forceChunkSize: false,
43
- },
44
- };
1
+ 'use strict';function _0x3de9(){var _0x74353b=['559094VOgVWB','4570192EMtOSa','5FpArbb','app/upload-chunk','1257815YecOKr','app/get-info','184368fhFdDX','octet','3712590EGHUZu','admin/login','app-config.json','cwd','Request\x20Timeout','App\x20config\x20not\x20found.\x20Please\x20re-init\x20project.\x20(Tips:\x20Run\x20\x27zmp\x20init\x27)','/.env','https://zmp-api.developers.zalo.me/','exports','8QBAKfs','332066mydmUE','//h5.zdn.vn/zapps/','18917082GvxAPm'];_0x3de9=function(){return _0x74353b;};return _0x3de9();}function _0x5d9c(_0x3660cf,_0x4de083){var _0x3de97b=_0x3de9();return _0x5d9c=function(_0x5d9c45,_0x2ba2ab){_0x5d9c45=_0x5d9c45-0x6b;var _0x183c8b=_0x3de97b[_0x5d9c45];return _0x183c8b;},_0x5d9c(_0x3660cf,_0x4de083);}var _0x498ba1=_0x5d9c;(function(_0x54d27b,_0x16bd2f){var _0xb105ee=_0x5d9c,_0x3e3c6c=_0x54d27b();while(!![]){try{var _0x4097df=-parseInt(_0xb105ee(0x70))/0x1*(parseInt(_0xb105ee(0x6e))/0x2)+-parseInt(_0xb105ee(0x74))/0x3+parseInt(_0xb105ee(0x6f))/0x4+-parseInt(_0xb105ee(0x72))/0x5+-parseInt(_0xb105ee(0x76))/0x6+parseInt(_0xb105ee(0x6b))/0x7*(parseInt(_0xb105ee(0x7f))/0x8)+parseInt(_0xb105ee(0x6d))/0x9;if(_0x4097df===_0x16bd2f)break;else _0x3e3c6c['push'](_0x3e3c6c['shift']());}catch(_0x4d4d3d){_0x3e3c6c['push'](_0x3e3c6c['shift']());}}}(_0x3de9,0xeaf3d));module[_0x498ba1(0x7e)]={'filename':{'appConfig':_0x498ba1(0x78),'zmpConfig':'zmp-cli.json','packageJson':'package.json'},'api_domain':_0x498ba1(0x7d),'zdn_url':_0x498ba1(0x6c),'path':{'login':_0x498ba1(0x77),'requestLogin':'admin/request-login','checkLoginStatus':'admin/get-login-status','uploadAppByChunk':_0x498ba1(0x71),'requestUploadResumable':'app/request-upload','getAppInfo':_0x498ba1(0x73)},'dirname':__dirname,'root_env':()=>process[_0x498ba1(0x79)]()+_0x498ba1(0x7c),'env':{'appId':'APP_ID','token':'ZMP_TOKEN'},'error_code':{'app_config_not_found':-0x578,'permission_denied':-0x7d1,'request_timeout':-0x7d3},'error_msg':{'app_config_not_found':_0x498ba1(0x7b),'permission_denied':'Permission\x20denied.\x20Please\x20login\x20again.\x20(Tips:\x20Run\x20\x27zmp\x20login\x27)','request_timeout':_0x498ba1(0x7a)},'resumable_option':{'chunkSize':0x7d000,'simultaneousUploads':0x4,'testChunks':!0x0,'throttleProgressCallbacks':0x1,'method':_0x498ba1(0x75),'forceChunkSize':!0x1}};
package/create/index.js CHANGED
@@ -1,230 +1 @@
1
- #!/usr/bin/env node
2
- /* eslint no-console: off */
3
- const exec = require('exec-sh');
4
- const path = require('path');
5
- const chalk = require('chalk');
6
- const logSymbols = require('log-symbols');
7
- const fse = require('../utils/fs-extra');
8
- const generatePackageJson = require('./utils/generate-package-json');
9
- const generateNpmScripts = require('./utils/generate-npm-scripts');
10
- const { generateTailWindScripts } = require('./utils/generate-npm-scripts');
11
-
12
- const generateAppConfig = require('./utils/generate-app-config');
13
-
14
- const createFolders = require('./templates/create-folders');
15
- const copyAssets = require('./templates/copy-assets');
16
- const generateReadme = require('./utils/generate-readme');
17
- const generateGitignore = require('./utils/generate-gitignore');
18
- const log = require('../utils/log');
19
- const config = require('../config');
20
- const initZMPUI = require('./init-zmp-ui');
21
-
22
- const waitText = chalk.gray('(Please wait, it can take a while)');
23
-
24
- module.exports = async (
25
- options = {},
26
- logger,
27
- { exitOnError = true, iconFile = null } = {}
28
- ) => {
29
- if (options.newProject && options.package === 'zmp-ui') {
30
- await initZMPUI(options, logger);
31
- return;
32
- }
33
- const cwd = options.cwd || process.cwd();
34
- const isRunningInCwd = cwd === process.cwd();
35
- function errorExit(err) {
36
- log.error(err.stderr || err);
37
- if (exitOnError) process.exit(1);
38
- }
39
- if (!logger) {
40
- // eslint-disable-next-line
41
- logger = {
42
- statusStart() {},
43
- statusDone() {},
44
- statusError() {},
45
- text() {},
46
- error() {},
47
- };
48
- }
49
- // App config
50
- logger.statusStart('Generating app-config.json');
51
- const appConfig = generateAppConfig(options);
52
-
53
- fse.writeFileSync(
54
- path.join(cwd, config.filename.appConfig),
55
- appConfig.content
56
- );
57
- logger.statusDone('Generating app-config.json');
58
-
59
- if (!options.newProject) {
60
- const deployScripts = generateNpmScripts(['r']).map((s) => {
61
- return `${s.icon} Run "npm run ${s.name}" - ${s.description}`;
62
- });
63
- logger.text(deployScripts.join('\n'));
64
- process.exit(0);
65
- }
66
-
67
- // Package
68
- logger.statusStart('Generating package.json');
69
- const packageJson = generatePackageJson(options);
70
-
71
- fse.writeFileSync(path.join(cwd, 'package.json'), packageJson.content);
72
- fse.writeFileSync(
73
- path.join(cwd, config.filename.zmpConfig),
74
- JSON.stringify(options, '', 2)
75
- );
76
-
77
- logger.statusDone('Generating package.json');
78
-
79
- // Create Folders
80
- logger.statusStart('Creating required folders structure');
81
- try {
82
- createFolders(options);
83
- } catch (err) {
84
- logger.statusError('Error creating required folders structure');
85
- // if (err) logger.error(err.stderr);
86
- errorExit(err);
87
- }
88
- logger.statusDone('Creating required folders structure');
89
-
90
- // Install NPM depenencies
91
- logger.statusStart(`${'Installing NPM Dependencies'} ${waitText}`);
92
- try {
93
- if (!isRunningInCwd) {
94
- await exec.promise(
95
- `cd ${cwd.replace(
96
- / /g,
97
- '\\ '
98
- )} && npm install ${packageJson.dependencies.join(' ')} --save`,
99
- true
100
- );
101
- } else {
102
- await exec.promise(
103
- `npm install ${packageJson.dependencies.join(' ')} --save`,
104
- true
105
- );
106
- }
107
- } catch (err) {
108
- logger.statusError('Error installing NPM Dependencies');
109
- // if (err) logger.error(err.stderr);
110
- errorExit(err);
111
- return;
112
- }
113
- logger.statusDone('Installing NPM Dependencies');
114
- // Install NPM dev depenencies
115
- logger.statusStart(`${'Installing NPM Dev Dependencies'} ${waitText}`);
116
- try {
117
- if (!isRunningInCwd) {
118
- await exec.promise(
119
- `cd ${cwd.replace(
120
- / /g,
121
- '\\ '
122
- )} && npm install ${packageJson.devDependencies.join(' ')} --save-dev`,
123
- true
124
- );
125
- } else {
126
- await exec.promise(
127
- `npm install ${packageJson.devDependencies.join(' ')} --save-dev`,
128
- true
129
- );
130
- }
131
- } catch (err) {
132
- logger.statusError('Error installing NPM Dev Dependencies');
133
- // if (err) logger.error(err.stderr);
134
- errorExit(err);
135
- return;
136
- }
137
- logger.statusDone('Installing NPM Dev Dependencies');
138
-
139
- if (packageJson.postInstall && packageJson.postInstall.length) {
140
- logger.statusStart('Executing NPM Scripts');
141
- try {
142
- if (!isRunningInCwd) {
143
- await exec.promise(
144
- `cd ${cwd.replace(/ /g, '\\ ')} && npm run postinstall`,
145
- true
146
- );
147
- } else {
148
- await exec.promise('npm run postinstall', true);
149
- }
150
- } catch (err) {
151
- logger.statusError('Error executing NPM Scripts');
152
- // if (err) logger.error(err.stderr);
153
- errorExit(err);
154
- return;
155
- }
156
- logger.statusDone('Executing NPM Scripts');
157
- }
158
-
159
- // Create Project Files
160
- logger.statusStart('Creating project files');
161
- const filesToCopy = copyAssets(options, iconFile);
162
- try {
163
- // eslint-disable-next-line
164
- await Promise.all(
165
- filesToCopy.map((f) => {
166
- if (f.from) {
167
- return fse.copyFileAsync(f.from, f.to);
168
- }
169
- if (f.content) {
170
- return fse.writeFileAsync(f.to, f.content);
171
- }
172
- return Promise.resolve();
173
- })
174
- );
175
- } catch (err) {
176
- logger.statusError('Error creating project files');
177
- // if (err) logger.error(err.stderr || err);
178
- errorExit(err);
179
- return;
180
- }
181
-
182
- // Generate Readme
183
- const readMeContent = generateReadme(options);
184
- try {
185
- fse.writeFileSync(path.join(cwd, 'README.md'), readMeContent);
186
- } catch (err) {
187
- logger.statusError('Error creating project files');
188
- // if (err) logger.error(err.stderr || err);
189
- errorExit(err);
190
- return;
191
- }
192
-
193
- // Generate .gitignore
194
- const gitignoreContent = generateGitignore(options);
195
- try {
196
- fse.writeFileSync(path.join(cwd, '.gitignore'), gitignoreContent);
197
- } catch (err) {
198
- logger.statusError('Error creating project files');
199
- // if (err) logger.error(err.stderr || err);
200
- errorExit(err);
201
- return;
202
- }
203
-
204
- logger.statusDone('Creating project files');
205
-
206
- let npmScripts = generateNpmScripts(['s', 'r']).map((s) => {
207
- return `- ${s.icon} Run "npm run ${s.name}" - ${s.description}`;
208
- });
209
-
210
- if (options.includeTailwind) {
211
- const tailwindScript = generateTailWindScripts(['t']).map((s) => {
212
- return `- ${s.icon} Run "npm run ${s.name}" - ${s.description}`;
213
- });
214
- npmScripts = [...npmScripts, ...tailwindScript];
215
- }
216
-
217
- // Final Text
218
- const finalText = `
219
- ${chalk.bold(logSymbols.success)} ${chalk.bold('Done!')} 💪
220
-
221
- ${chalk.bold(logSymbols.info)} ${chalk.bold('Next steps:')}
222
- ${npmScripts.join('\n ')}
223
- - 📖 Visit documentation at ${chalk.bold('https://mini.zalo.me/')}
224
- - 📖 Check ${chalk.bold(
225
- 'README.md'
226
- )} in project root folder with further instructions
227
- `;
228
-
229
- logger.text(finalText);
230
- };
1
+ 'use strict';const _0x3f729c=_0x1130;(function(_0x1edfe5,_0x5409b0){const _0x3881c4=_0x1130,_0x50741b=_0x1edfe5();while(!![]){try{const _0x4f6731=parseInt(_0x3881c4(0x163))/0x1+-parseInt(_0x3881c4(0x15c))/0x2*(parseInt(_0x3881c4(0x149))/0x3)+parseInt(_0x3881c4(0x193))/0x4*(parseInt(_0x3881c4(0x16f))/0x5)+parseInt(_0x3881c4(0x173))/0x6+parseInt(_0x3881c4(0x146))/0x7+parseInt(_0x3881c4(0x170))/0x8+parseInt(_0x3881c4(0x16c))/0x9;if(_0x4f6731===_0x5409b0)break;else _0x50741b['push'](_0x50741b['shift']());}catch(_0x31baff){_0x50741b['push'](_0x50741b['shift']());}}}(_0x2554,0xae118));function _0x1130(_0x18c96f,_0x2f654f){const _0x2554d2=_0x2554();return _0x1130=function(_0x1130b1,_0x47158c){_0x1130b1=_0x1130b1-0x142;let _0x2dc3ef=_0x2554d2[_0x1130b1];return _0x2dc3ef;},_0x1130(_0x18c96f,_0x2f654f);}const e=require(_0x3f729c(0x16e)),t=require(_0x3f729c(0x186)),r=require(_0x3f729c(0x165)),n=require(_0x3f729c(0x14a)),i=require(_0x3f729c(0x148)),s=require(_0x3f729c(0x17b)),a=require(_0x3f729c(0x166)),{generateTailWindScripts:o}=require('./utils/generate-npm-scripts'),c=require('./utils/generate-app-config'),l=require(_0x3f729c(0x157)),u=require(_0x3f729c(0x191)),p=require(_0x3f729c(0x16a)),g=require(_0x3f729c(0x14d)),d=require(_0x3f729c(0x16b)),m=require(_0x3f729c(0x147)),f=require(_0x3f729c(0x15a)),j=r[_0x3f729c(0x17d)](_0x3f729c(0x14e));function _0x2554(){const _0x5bc2d2=['../utils/fs-extra','222123uOoSXM','log-symbols','length','from','./utils/generate-gitignore','(Please\x20wait,\x20it\x20can\x20take\x20a\x20while)','content','package.json','stderr','zmp-ui','\x20Run\x20\x22npm\x20run\x20','resolve','dependencies','\x22\x20-\x20','./templates/create-folders','icon','name','./init-zmp-ui','\x20&&\x20npm\x20install\x20','36NQbmoc','filename','error','Creating\x20project\x20files','\x0a\x20\x20','Executing\x20NPM\x20Scripts','cd\x20','491333MgltRZ','https://mini.zalo.me/','chalk','./utils/generate-npm-scripts','newProject','\x20in\x20project\x20root\x20folder\x20with\x20further\x20instructions\x0a\x20\x20\x20\x20','.gitignore','./utils/generate-readme','../utils/log','6101235LdtrLe','text','exec-sh','54185RdIstn','5219584OHWoIm','exit','\x20--save','427782mZeQzs','promise','Error\x20installing\x20NPM\x20Dependencies','description','npm\x20run\x20postinstall','\x0a\x20\x20-\x20📖\x20Check\x20','writeFileSync','Error\x20creating\x20project\x20files','./utils/generate-package-json','writeFileAsync','gray','statusError','Error\x20installing\x20NPM\x20Dev\x20Dependencies','Next\x20steps:','package','postInstall','appConfig','exports','\x0a\x20\x20-\x20📖\x20Visit\x20documentation\x20at\x20','path','statusDone','join','includeTailwind','replace','success','stringify','bold','statusStart','README.md','Generating\x20package.json','./templates/copy-assets','Creating\x20required\x20folders\x20structure','52xDhdIV','Generating\x20app-config.json','\x20--save-dev','npm\x20install\x20','map','Done!','cwd','copyFileAsync','\x20&&\x20npm\x20run\x20postinstall','82936DxNHNw','../config'];_0x2554=function(){return _0x5bc2d2;};return _0x2554();}module[_0x3f729c(0x184)]=async(_0x358c4d={},_0x37d631,{exitOnError:_0x25c141=!0x0,iconFile:_0x556e11=null}={})=>{const _0x5cf00f=_0x3f729c;if(_0x358c4d[_0x5cf00f(0x167)]&&_0x5cf00f(0x152)===_0x358c4d[_0x5cf00f(0x181)]){await f(_0x358c4d,_0x37d631);return;}let _0x3d2aa3=_0x358c4d[_0x5cf00f(0x143)]||process['cwd'](),_0x196bea=_0x3d2aa3===process[_0x5cf00f(0x143)]();function _0x5dad30(_0x3cd6ad){const _0x2220e1=_0x5cf00f;d[_0x2220e1(0x15e)](_0x3cd6ad[_0x2220e1(0x151)]||_0x3cd6ad),_0x25c141&&process['exit'](0x1);}_0x37d631||(_0x37d631={'statusStart'(){},'statusDone'(){},'statusError'(){},'text'(){},'error'(){}}),_0x37d631[_0x5cf00f(0x18e)](_0x5cf00f(0x194));let _0x3f9fb0=c(_0x358c4d);if(i[_0x5cf00f(0x179)](t[_0x5cf00f(0x188)](_0x3d2aa3,m[_0x5cf00f(0x15d)][_0x5cf00f(0x183)]),_0x3f9fb0['content']),_0x37d631['statusDone'](_0x5cf00f(0x194)),!_0x358c4d[_0x5cf00f(0x167)]){let _0x9ae5c0=a(['r'])[_0x5cf00f(0x197)](_0x248905=>_0x248905[_0x5cf00f(0x158)]+_0x5cf00f(0x153)+_0x248905[_0x5cf00f(0x159)]+_0x5cf00f(0x156)+_0x248905[_0x5cf00f(0x176)]);_0x37d631['text'](_0x9ae5c0[_0x5cf00f(0x188)]('\x0a')),process[_0x5cf00f(0x171)](0x0);}_0x37d631[_0x5cf00f(0x18e)](_0x5cf00f(0x190));let _0x36a667=s(_0x358c4d);i['writeFileSync'](t[_0x5cf00f(0x188)](_0x3d2aa3,_0x5cf00f(0x150)),_0x36a667['content']),i['writeFileSync'](t['join'](_0x3d2aa3,m[_0x5cf00f(0x15d)]['zmpConfig']),JSON[_0x5cf00f(0x18c)](_0x358c4d,'',0x2)),_0x37d631[_0x5cf00f(0x187)](_0x5cf00f(0x190)),_0x37d631['statusStart']('Creating\x20required\x20folders\x20structure');try{l(_0x358c4d);}catch(_0x1d6f68){_0x37d631[_0x5cf00f(0x17e)]('Error\x20creating\x20required\x20folders\x20structure'),_0x5dad30(_0x1d6f68);}_0x37d631['statusDone'](_0x5cf00f(0x192)),_0x37d631[_0x5cf00f(0x18e)]('Installing\x20NPM\x20Dependencies\x20'+j);try{_0x196bea?await e['promise'](_0x5cf00f(0x196)+_0x36a667[_0x5cf00f(0x155)][_0x5cf00f(0x188)]('\x20')+_0x5cf00f(0x172),!0x0):await e['promise'](_0x5cf00f(0x162)+_0x3d2aa3[_0x5cf00f(0x18a)](/ /g,'\x5c\x20')+_0x5cf00f(0x15b)+_0x36a667['dependencies'][_0x5cf00f(0x188)]('\x20')+_0x5cf00f(0x172),!0x0);}catch(_0xbbca43){_0x37d631[_0x5cf00f(0x17e)](_0x5cf00f(0x175)),_0x5dad30(_0xbbca43);return;}_0x37d631[_0x5cf00f(0x187)]('Installing\x20NPM\x20Dependencies'),_0x37d631[_0x5cf00f(0x18e)]('Installing\x20NPM\x20Dev\x20Dependencies\x20'+j);try{_0x196bea?await e[_0x5cf00f(0x174)](_0x5cf00f(0x196)+_0x36a667['devDependencies'][_0x5cf00f(0x188)]('\x20')+_0x5cf00f(0x195),!0x0):await e[_0x5cf00f(0x174)](_0x5cf00f(0x162)+_0x3d2aa3[_0x5cf00f(0x18a)](/ /g,'\x5c\x20')+_0x5cf00f(0x15b)+_0x36a667['devDependencies']['join']('\x20')+_0x5cf00f(0x195),!0x0);}catch(_0x2b813d){_0x37d631['statusError'](_0x5cf00f(0x17f)),_0x5dad30(_0x2b813d);return;}if(_0x37d631['statusDone']('Installing\x20NPM\x20Dev\x20Dependencies'),_0x36a667['postInstall']&&_0x36a667[_0x5cf00f(0x182)][_0x5cf00f(0x14b)]){_0x37d631[_0x5cf00f(0x18e)](_0x5cf00f(0x161));try{_0x196bea?await e[_0x5cf00f(0x174)](_0x5cf00f(0x177),!0x0):await e['promise'](_0x5cf00f(0x162)+_0x3d2aa3['replace'](/ /g,'\x5c\x20')+_0x5cf00f(0x145),!0x0);}catch(_0x216f58){_0x37d631[_0x5cf00f(0x17e)]('Error\x20executing\x20NPM\x20Scripts'),_0x5dad30(_0x216f58);return;}_0x37d631[_0x5cf00f(0x187)](_0x5cf00f(0x161));}_0x37d631['statusStart'](_0x5cf00f(0x15f));let _0x49dbbb=u(_0x358c4d,_0x556e11);try{await Promise['all'](_0x49dbbb['map'](_0x3fd442=>_0x3fd442[_0x5cf00f(0x14c)]?i[_0x5cf00f(0x144)](_0x3fd442['from'],_0x3fd442['to']):_0x3fd442['content']?i[_0x5cf00f(0x17c)](_0x3fd442['to'],_0x3fd442[_0x5cf00f(0x14f)]):Promise[_0x5cf00f(0x154)]()));}catch(_0x5b5527){_0x37d631[_0x5cf00f(0x17e)](_0x5cf00f(0x17a)),_0x5dad30(_0x5b5527);return;}let _0x1b9212=p(_0x358c4d);try{i[_0x5cf00f(0x179)](t[_0x5cf00f(0x188)](_0x3d2aa3,_0x5cf00f(0x18f)),_0x1b9212);}catch(_0x197fdd){_0x37d631['statusError'](_0x5cf00f(0x17a)),_0x5dad30(_0x197fdd);return;}let _0x2a390c=g(_0x358c4d);try{i[_0x5cf00f(0x179)](t['join'](_0x3d2aa3,_0x5cf00f(0x169)),_0x2a390c);}catch(_0x3562e3){_0x37d631['statusError'](_0x5cf00f(0x17a)),_0x5dad30(_0x3562e3);return;}_0x37d631[_0x5cf00f(0x187)](_0x5cf00f(0x15f));let _0x3315d6=a(['s','r'])[_0x5cf00f(0x197)](_0x9a7671=>'-\x20'+_0x9a7671[_0x5cf00f(0x158)]+_0x5cf00f(0x153)+_0x9a7671[_0x5cf00f(0x159)]+_0x5cf00f(0x156)+_0x9a7671[_0x5cf00f(0x176)]);_0x358c4d[_0x5cf00f(0x189)]&&(_0x3315d6=[..._0x3315d6,...o(['t'])[_0x5cf00f(0x197)](_0xd61556=>'-\x20'+_0xd61556[_0x5cf00f(0x158)]+_0x5cf00f(0x153)+_0xd61556[_0x5cf00f(0x159)]+_0x5cf00f(0x156)+_0xd61556[_0x5cf00f(0x176)])]);let _0x3f111f='\x0a'+r[_0x5cf00f(0x18d)](n[_0x5cf00f(0x18b)])+'\x20'+r[_0x5cf00f(0x18d)](_0x5cf00f(0x142))+'\x20💪\x0a\x0a'+r[_0x5cf00f(0x18d)](n['info'])+'\x20'+r[_0x5cf00f(0x18d)](_0x5cf00f(0x180))+'\x0a\x20\x20'+_0x3315d6[_0x5cf00f(0x188)](_0x5cf00f(0x160))+_0x5cf00f(0x185)+r[_0x5cf00f(0x18d)](_0x5cf00f(0x164))+_0x5cf00f(0x178)+r['bold'](_0x5cf00f(0x18f))+_0x5cf00f(0x168);_0x37d631[_0x5cf00f(0x16d)](_0x3f111f);};