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/start/index.js CHANGED
@@ -1,382 +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 qrcode = require('qrcode-terminal');
7
- const logSymbols = require('log-symbols');
8
- const { createServer } = require('vite');
9
- const chii = require('chii');
10
- const { hri } = require('human-readable-ids');
11
-
12
- const config = require('../config');
13
- const envUtils = require('../utils/env');
14
- const fs = require('../utils/fs-extra');
15
- const fse = require('../utils/fs-extra');
16
- const findFreePort = require('../utils/find-free-port');
17
- const { openTunnel } = require('../utils/tunnel');
18
- const { deviceModeSetup } = require('../utils/constants');
19
- const { generateHrFromIndex } = require('./generate-hr-config');
20
-
21
- const spinner = ora('Starting mini app...');
22
-
23
- module.exports = async (options = {}, logger, { exitOnError = true } = {}) => {
24
- function errorExit(err) {
25
- logger.error(err.stderr || err);
26
- if (exitOnError) process.exit(1);
27
- }
28
- if (!logger) {
29
- // eslint-disable-next-line
30
- logger = {
31
- statusStart() {},
32
- statusDone() {},
33
- statusError() {},
34
- text() {},
35
- error() {},
36
- };
37
- }
38
- spinner.start();
39
- const cwd = options.cwd || process.cwd();
40
- const appId = options.appId || envUtils.getEnv(config.env.appId);
41
- const previewOnZalo = options.previewOnZalo;
42
- const isIOS = options.ios;
43
- const iosHostName = options.iosHostName;
44
- const usingFrame = options.frame;
45
- const host = isIOS ? iosHostName : 'localhost';
46
- const port = options.port;
47
- const remoteDebugPort = port - 2;
48
- const mode = options.mode || (previewOnZalo ? 'production' : 'development');
49
- const deviceMode = options.deviceMode;
50
- try {
51
- if (previewOnZalo) {
52
- const hrConfigPath = path.join(cwd, 'hr.config.json');
53
- const remoteDebugScript = {
54
- id: 'remote-debug-script',
55
- innerHTML: `(function () { var script = document.createElement('script'); script.src='http://${host}:${remoteDebugPort}/target.js'; document.body.appendChild(script); })()`,
56
- type: 'text/javascript',
57
- };
58
- if (!fs.existsSync(hrConfigPath)) {
59
- const hrConfig = {
60
- listCSS: [],
61
- listJS: [
62
- {
63
- src: '/src/app.js',
64
- type: 'module',
65
- async: true,
66
- },
67
- remoteDebugScript,
68
- ],
69
- };
70
- fs.writeFileSync(hrConfigPath, JSON.stringify(hrConfig, undefined, 4));
71
- } else {
72
- const fileData = fs.readFileSync(hrConfigPath);
73
- const hrConfig = JSON.parse(fileData);
74
-
75
- let listJS = hrConfig.listJS;
76
- if (!Array.isArray(listJS)) {
77
- listJS = [];
78
- }
79
- const remoteDebugScriptIndex = listJS.findIndex(
80
- (js) => js.id === 'remote-debug-script'
81
- );
82
-
83
- if (remoteDebugScriptIndex <= 0) {
84
- listJS.push(remoteDebugScript);
85
- } else {
86
- listJS.splice(remoteDebugScriptIndex, 1);
87
- listJS.push(remoteDebugScript);
88
- }
89
- hrConfig.listJS = listJS;
90
- fs.writeFileSync(hrConfigPath, JSON.stringify(hrConfig, undefined, 4));
91
- }
92
- }
93
- const localServer = {};
94
-
95
- const publicServer = {
96
- host: '0.0.0.0',
97
- hmr: {
98
- host: host,
99
- protocol: 'ws',
100
- },
101
- };
102
-
103
- let viteConfig = 'vite.config.js';
104
- const isTypeScriptProject = fse.existsSync(
105
- path.join(cwd, 'vite.config.ts')
106
- );
107
- if (isTypeScriptProject) {
108
- viteConfig = 'vite.config.ts';
109
- }
110
-
111
- let server;
112
- let subdomain;
113
- let freePort;
114
- if (deviceMode) {
115
- // generate a subdomain for the tunnel
116
- subdomain = hri.random();
117
- // start the chii server
118
- freePort = await findFreePort();
119
- chii.start({
120
- port: freePort,
121
- });
122
- // expose the chii server by using localtunnel
123
- const chiiUrl = await openTunnel(freePort);
124
- const remoteHost = `${subdomain}.${deviceModeSetup.TUNNEL_SERVER_HOST}`;
125
-
126
- server = await createServer({
127
- configFile: path.join(cwd, viteConfig),
128
- root: cwd,
129
- mode,
130
- define: {
131
- 'process.env.NODE_ENV': JSON.stringify(mode),
132
- 'process.env.previewOnZalo': true,
133
- },
134
- server: {
135
- port: port,
136
- host: 'localhost',
137
- origin: `https://${remoteHost}`,
138
- base: `/zapps/${appId}/`,
139
- hmr: {
140
- host: remoteHost,
141
- clientPort: 443,
142
- protocol: 'wss',
143
- },
144
- https: false,
145
- },
146
- plugins: [
147
- {
148
- name: 'hr-config-plugin',
149
- configureServer(server) {
150
- const setupCors = (req, res) => {
151
- if (
152
- ['https://h5.zdn.vn', 'zbrowser://h5.zdn.vn'].includes(
153
- req.headers.origin
154
- )
155
- ) {
156
- res.setHeader(
157
- 'Access-Control-Allow-Origin',
158
- req.headers.origin
159
- );
160
- }
161
- };
162
- server.middlewares.use('/app-config.json', (req, res, next) => {
163
- // there would be another originalUrl - app-config.json?module that would be dynamicly imported in js format
164
- if (req.originalUrl === '/app-config.json') {
165
- res.setHeader('Content-Type', 'application/javascript');
166
- setupCors(req, res);
167
- return res.end(
168
- fs.readFileSync(path.join(cwd, 'app-config.json'))
169
- );
170
- } else {
171
- return next();
172
- }
173
- });
174
- server.middlewares.use('/hr.config.json', async (req, res) => {
175
- res.setHeader('Content-Type', 'application/json');
176
- setupCors(req, res);
177
- const hrConfig = await generateHrFromIndex(
178
- `http://localhost:${app.httpServer.address().port}`,
179
- {
180
- chiiUrl,
181
- exposedUrl: `https://${subdomain}.${deviceModeSetup.TUNNEL_SERVER_HOST}`,
182
- }
183
- );
184
- res.end(JSON.stringify(hrConfig));
185
- });
186
- server.middlewares.use('/studio.module.js', async (req, res) => {
187
- res.setHeader('Content-Type', 'text/javascript');
188
- setupCors(req, res);
189
- res.end(`
190
- import { createHotContext } from "/@vite/client";
191
- import.meta.hot = createHotContext("${subdomain}");
192
- if (import.meta.hot) {
193
- import.meta.hot.on("vite:beforeFullReload", () => {
194
- window.location.href = window.BACKUP_URL;
195
- ZJSBridge.callCustomAction("action.ma.menu.reload", {}, () => {});
196
- throw "(skipping full reload)";
197
- });
198
- import.meta.hot.on('zmp:close', (data) => {
199
- ZJSBridge.callCustomAction("action.window.close", {}, () => {});
200
- });
201
- }
202
- try {
203
- let shownTip = false;
204
- window.onerror = function (message, url, line, column, error) {
205
- if (!error) {
206
- console.error(
207
- "An uncaught error has occurred, but the detailed error message cannot be displayed due to the cross-origin policy."
208
- );
209
- if (!shownTip) {
210
- console.warn(
211
- "To view the detailed error message, you can try one of the following methods:\\n\\n1. Wrap your code in a try-catch block, use .catch with Promises, or use <ErrorBoundary> in React to catch the detailed error object.\\n2. Try to reproduce the issue using a simulator."
212
- );
213
- shownTip = true;
214
- }
215
- } else {
216
- console.error("[" + error.name + "] " + error.message);
217
- }
218
- };
219
- } catch (error) {
220
- console.error(error);
221
- }
222
- `);
223
- });
224
- },
225
- },
226
- ],
227
- });
228
- } else {
229
- server = await createServer({
230
- configFile: path.join(cwd, viteConfig),
231
- root: cwd,
232
- mode,
233
- define: {
234
- 'process.env.NODE_ENV': JSON.stringify(mode),
235
- 'process.env.previewOnZalo': previewOnZalo,
236
- },
237
- server: {
238
- port: usingFrame ? port - 1 : port,
239
- ...(previewOnZalo ? publicServer : localServer),
240
- },
241
- });
242
- }
243
- const app = await server.listen();
244
-
245
- if (!previewOnZalo) {
246
- if (!deviceMode) {
247
- if (usingFrame) {
248
- //run frame server
249
- const serverFrame = await createServer({
250
- // any valid user config options, plus `mode` and `configFile`
251
- configFile: false,
252
- root: __dirname + '/frame',
253
- server: {
254
- port: app.httpServer.address().port + 1,
255
- strictPort: true,
256
- open: true,
257
- },
258
- });
259
- spinner.stop();
260
- await serverFrame.listen();
261
- const info = serverFrame.config.logger.info;
262
- info(chalk.green(`Zalo Mini App dev server is running at:\n`));
263
- serverFrame.printUrls();
264
- } else {
265
- spinner.stop();
266
- const info = server.config.logger.info;
267
- info(chalk.green(`Zalo Mini App dev server is running at:\n`));
268
- server.printUrls();
269
- }
270
- }
271
- } else {
272
- try {
273
- chii.start({
274
- port: remoteDebugPort,
275
- });
276
- logger.text(
277
- chalk.green(
278
- `${logSymbols.info} ${chalk.bold(
279
- `Remote debugging tool is running at: http://localhost:${remoteDebugPort}`
280
- )}`
281
- )
282
- );
283
- if (!isIOS) {
284
- const processAdbReverseRemoteDEbug = require('child_process').spawn(
285
- `adb`,
286
- ['reverse', `tcp:${remoteDebugPort}`, `tcp:${remoteDebugPort}`]
287
- );
288
-
289
- processAdbReverseRemoteDEbug.stderr.on('data', function (data) {
290
- logger.error(data.toString());
291
- });
292
- }
293
- } catch (error) {
294
- logger.text(
295
- `${logSymbols.info} ${chalk.red(`Can not start remote debug server`)}`
296
- );
297
- }
298
- }
299
-
300
- spinner.stop();
301
- return await new Promise(async () => {
302
- if (previewOnZalo) {
303
- const previewOnZaloURL = `https://zalo.me/app/link/zapps/${appId}/?env=TESTING_LOCAL&clientIp=http://${host}:${app.config.server.port}`;
304
- qrcode.generate(previewOnZaloURL, { small: true }, function (qrcode) {
305
- logger.text(
306
- chalk.green(
307
- `${logSymbols.info} ${chalk.bold(
308
- `Zalo Mini App dev server is running at: ${host}:${app.config.server.port}`
309
- )}`
310
- )
311
- );
312
- logger.text(
313
- chalk.green(
314
- `${logSymbols.info} ${chalk.bold(
315
- `Trying reverse socket connection`
316
- )}`
317
- )
318
- );
319
- if (isIOS) {
320
- const qrCode = `${logSymbols.info} ${chalk.bold(
321
- `Scan the QR code with Zalo app:\n${qrcode}`
322
- )}`;
323
- logger.text(qrCode);
324
- } else {
325
- const processAdbReverse = require('child_process').spawn(`adb`, [
326
- 'reverse',
327
- `tcp:${app.config.server.port}`,
328
- `tcp:${app.config.server.port}`,
329
- ]);
330
-
331
- processAdbReverse.stderr.on('data', function (data) {
332
- logger.error(data.toString());
333
- });
334
-
335
- processAdbReverse.on('exit', function (code) {
336
- if (code !== 0) {
337
- throw new Error(`adb reverse error: ${code}`);
338
- } else {
339
- const qrCode = `${logSymbols.info} ${chalk.bold(
340
- `Scan the QR code with Zalo app:\n${qrcode}`
341
- )}`;
342
- logger.text(qrCode);
343
- const processAdbDevices = require('child_process').spawn(
344
- `adb`,
345
- ['devices']
346
- );
347
-
348
- processAdbDevices.stdout.on('data', function (data) {
349
- logger.text(`${chalk.yellow(data.toString())}`);
350
- });
351
- }
352
- });
353
- }
354
- });
355
- }
356
- if (deviceMode) {
357
- const port = app.httpServer.address().port;
358
- const remoteUrl = await openTunnel(port, subdomain);
359
- const deviceModeUrl = `https://zalo.me/app/link/zapps/${appId}/?env=TESTING_LOCAL&clientIp=${remoteUrl}`;
360
- qrcode.generate(deviceModeUrl, { small: true }, function (qrcode) {
361
- const qrCode = `${logSymbols.info} ${chalk.bold(
362
- `Scan the QR code with Zalo app:\n${qrcode}`
363
- )}`;
364
- logger.text(qrCode);
365
- logger.text(
366
- `${logSymbols.info} ${chalk.bold(
367
- `To inspect your app, open: http://localhost:${freePort} in ${chalk.green(
368
- `Google Chrome`
369
- )} or a ${chalk.blue(`Chromium-based`)} browser.`
370
- )}`
371
- );
372
- });
373
- }
374
- });
375
- } catch (err) {
376
- logger.statusError('Error starting project');
377
- // if (err) logger.error(err.stderr || err);
378
- logger.error(err);
379
- errorExit(err);
380
- return;
381
- }
382
- };
1
+ 'use strict';const _0x57967b=_0x5b23;(function(_0x19f108,_0xa1dead){const _0x53fecb=_0x5b23,_0x3ffb17=_0x19f108();while(!![]){try{const _0x1ecfe5=-parseInt(_0x53fecb(0x164))/0x1+parseInt(_0x53fecb(0x160))/0x2+parseInt(_0x53fecb(0x16f))/0x3+-parseInt(_0x53fecb(0x168))/0x4+parseInt(_0x53fecb(0x134))/0x5*(parseInt(_0x53fecb(0x135))/0x6)+parseInt(_0x53fecb(0x13f))/0x7*(parseInt(_0x53fecb(0x133))/0x8)+-parseInt(_0x53fecb(0x15c))/0x9;if(_0x1ecfe5===_0xa1dead)break;else _0x3ffb17['push'](_0x3ffb17['shift']());}catch(_0x30509e){_0x3ffb17['push'](_0x3ffb17['shift']());}}}(_0x34f8,0x2c90b));const e=require(_0x57967b(0x141)),r=require(_0x57967b(0x166)),t=require(_0x57967b(0x16d)),i=require(_0x57967b(0x16e)),o=require(_0x57967b(0x137)),n=require(_0x57967b(0x162)),{hri:s}=require(_0x57967b(0x129)),{startLocal:a,startDevice:p}=require(_0x57967b(0x15b)),l=require(_0x57967b(0x127)),c=require(_0x57967b(0x138)),{errorExit:d}=require(_0x57967b(0x15d)),u=require('../utils/fs-extra'),f=require(_0x57967b(0x158)),{openTunnel:g}=require('../utils/tunnel'),$=r(_0x57967b(0x146));function _0x34f8(){const _0x22b13c=['join','Zalo\x20Mini\x20App\x20dev\x20server\x20is\x20running\x20at:\x20','listJS','app','parse','/target.js\x27;\x20document.body.appendChild(script);\x20})()','1245097PYJwKj','Zalo\x20Mini\x20App\x20dev\x20server\x20is\x20running\x20at:\x0a','chalk','reverse','splice','stop','data','Starting\x20mini\x20app...','error','random','exit','server','adb\x20reverse\x20error:\x20','generate','devices','existsSync','bold','\x20browser.','isArray','Scan\x20the\x20QR\x20code\x20with\x20Zalo\x20app:\x0a','deviceMode','previewOnZalo','green','printUrls','tcp:','../utils/find-free-port','Error\x20starting\x20project','stderr','zmp-cli-core','4769127lOPbgc','../utils/error','blue','Chromium-based','437882IzWNQb','(function\x20()\x20{\x20var\x20script\x20=\x20document.createElement(\x27script\x27);\x20script.src=\x27http://','chii','createServer','106177dUISxk','Google\x20Chrome','ora','cwd','1303664inwnOb','iosHostName','writeFileSync','appId','toString','path','qrcode-terminal','934536jIFsHQ','\x20in\x20','yellow','stringify','/frame','child_process','start','config','\x20or\x20a\x20','exports','To\x20inspect\x20your\x20app,\x20open:\x20http://localhost:','appConfigJson','env','port','remote-debug-script','https://zalo.me/app/link/zapps/','adb','../config','stdout','human-readable-ids','readFileSync','address','text','httpServer','/src/app.js','red','ios','/?env=TESTING_LOCAL&clientIp=http://','spawn','16JrJgIl','1291700eMyBUu','6GRdqps','info','log-symbols','../utils/env'];_0x34f8=function(){return _0x22b13c;};return _0x34f8();}function _0x5b23(_0x5e9eac,_0x434aab){const _0x34f8dc=_0x34f8();return _0x5b23=function(_0x5b232b,_0x315398){_0x5b232b=_0x5b232b-0x11e;let _0x2a4bce=_0x34f8dc[_0x5b232b];return _0x2a4bce;},_0x5b23(_0x5e9eac,_0x434aab);}module[_0x57967b(0x11f)]=async(_0x39b572={},_0x603c5a)=>{const _0x4124be=_0x57967b;let _0x231b0c;_0x603c5a||(_0x603c5a={'statusStart'(){},'statusDone'(){},'statusError'(){},'text'(){},'error'(){}}),$[_0x4124be(0x175)]();let _0x4fffdc=_0x39b572[_0x4124be(0x167)]||process[_0x4124be(0x167)](),_0xf839a8=_0x39b572[_0x4124be(0x16b)]||c['getEnv'](l[_0x4124be(0x122)][_0x4124be(0x16b)]),_0x41e63c=_0x39b572[_0x4124be(0x154)],_0x14ca8f=_0x39b572[_0x4124be(0x130)],_0x4bfbc4=_0x39b572[_0x4124be(0x169)],_0x32888e=_0x39b572['frame'],_0x534f77=_0x14ca8f?_0x4bfbc4:'localhost',_0x28f06f=_0x39b572[_0x4124be(0x123)],_0x260781=_0x28f06f-0x2,_0x47951f=_0x39b572[_0x4124be(0x121)]||require((_0x231b0c=l['filename']['appConfig'],t[_0x4124be(0x139)](_0x4fffdc,_0x231b0c))),_0xd29404=_0x39b572[_0x4124be(0x153)];try{let _0x4c8e1f,_0x37b0d3,_0x216544;if(_0x41e63c){let _0x5ce553=t[_0x4124be(0x139)](_0x4fffdc,'hr.config.json'),_0x226f19={'id':_0x4124be(0x124),'innerHTML':_0x4124be(0x161)+_0x534f77+':'+_0x260781+_0x4124be(0x13e),'type':'text/javascript'};if(u[_0x4124be(0x14e)](_0x5ce553)){let _0xfcbf49=u[_0x4124be(0x12a)](_0x5ce553),_0x5951d2=JSON[_0x4124be(0x13d)](_0xfcbf49),_0x4ee43d=_0x5951d2[_0x4124be(0x13b)];Array[_0x4124be(0x151)](_0x4ee43d)||(_0x4ee43d=[]);let _0x5b2e03=_0x4ee43d['findIndex'](_0x458516=>_0x4124be(0x124)===_0x458516['id']);_0x5b2e03<=0x0||_0x4ee43d[_0x4124be(0x143)](_0x5b2e03,0x1),_0x4ee43d['push'](_0x226f19),_0x5951d2[_0x4124be(0x13b)]=_0x4ee43d,u[_0x4124be(0x16a)](_0x5ce553,JSON[_0x4124be(0x172)](_0x5951d2,void 0x0,0x4));}else u[_0x4124be(0x16a)](_0x5ce553,JSON[_0x4124be(0x172)]({'listCSS':[],'listJS':[{'src':_0x4124be(0x12e),'type':'module','async':!0x0},_0x226f19]},void 0x0,0x4));}if(_0xd29404){_0x4c8e1f=s[_0x4124be(0x148)](),_0x37b0d3=await f(),n['start']({'port':_0x37b0d3});let _0x5f04f8=await g(_0x37b0d3);_0x216544=await p({'appId':_0xf839a8,'chiiUrl':_0x5f04f8,'cwd':_0x4fffdc,'subdomain':_0x4c8e1f});}else{if(_0x216544=await a({'cwd':_0x4fffdc,'appConfig':_0x47951f,'config':{'host':'0.0.0.0','port':_0x32888e?_0x28f06f-0x1:_0x28f06f},'hmr':_0x41e63c?{'host':_0x534f77,'protocol':'ws'}:void 0x0}),_0x32888e&&!_0x41e63c){let _0x550550=await _0x216544['vite'][_0x4124be(0x163)]({'configFile':!0x1,'root':__dirname+_0x4124be(0x173),'server':{'port':_0x216544[_0x4124be(0x13c)][_0x4124be(0x12d)][_0x4124be(0x12b)]()[_0x4124be(0x123)]+0x1,'strictPort':!0x0,'open':!0x0}});$['stop'](),await _0x550550['listen'](),(0x0,_0x550550['config']['logger'][_0x4124be(0x136)])(e[_0x4124be(0x155)](_0x4124be(0x140))),_0x550550['printUrls']();}else $[_0x4124be(0x144)](),(0x0,_0x216544[_0x4124be(0x14a)][_0x4124be(0x176)]['logger'][_0x4124be(0x136)])(e[_0x4124be(0x155)](_0x4124be(0x140))),_0x216544['server'][_0x4124be(0x156)]();}let _0x518153=_0x216544['app'];if(_0x41e63c)try{n[_0x4124be(0x175)]({'port':_0x260781}),_0x603c5a[_0x4124be(0x12c)](e['green'](o['info']+'\x20'+e[_0x4124be(0x14f)]('Remote\x20debugging\x20tool\x20is\x20running\x20at:\x20http://localhost:'+_0x260781))),_0x14ca8f||require(_0x4124be(0x174))['spawn'](_0x4124be(0x126),[_0x4124be(0x142),_0x4124be(0x157)+_0x260781,_0x4124be(0x157)+_0x260781])[_0x4124be(0x15a)]['on'](_0x4124be(0x145),function(_0x59766e){const _0x2b3963=_0x4124be;_0x603c5a['error'](_0x59766e[_0x2b3963(0x16c)]());});}catch(_0x4ad662){_0x603c5a[_0x4124be(0x12c)](o[_0x4124be(0x136)]+'\x20'+e[_0x4124be(0x12f)]('Can\x20not\x20start\x20remote\x20debug\x20server'));}if($[_0x4124be(0x144)](),_0x41e63c){let _0x59dc74=_0x4124be(0x125)+_0xf839a8+_0x4124be(0x131)+_0x534f77+':'+_0x518153[_0x4124be(0x176)][_0x4124be(0x14a)][_0x4124be(0x123)];i['generate'](_0x59dc74,{'small':!0x0},function(_0x1863d6){const _0x1f9282=_0x4124be;if(_0x603c5a[_0x1f9282(0x12c)](e[_0x1f9282(0x155)](o[_0x1f9282(0x136)]+'\x20'+e[_0x1f9282(0x14f)](_0x1f9282(0x13a)+_0x534f77+':'+_0x518153[_0x1f9282(0x176)][_0x1f9282(0x14a)][_0x1f9282(0x123)]))),_0x603c5a[_0x1f9282(0x12c)](e['green'](o[_0x1f9282(0x136)]+'\x20'+e[_0x1f9282(0x14f)]('Trying\x20reverse\x20socket\x20connection'))),_0x14ca8f){let _0x1c5fc5=o[_0x1f9282(0x136)]+'\x20'+e['bold'](_0x1f9282(0x152)+_0x1863d6);_0x603c5a['text'](_0x1c5fc5);}else{let _0x574df5=require('child_process')[_0x1f9282(0x132)]('adb',[_0x1f9282(0x142),_0x1f9282(0x157)+_0x518153[_0x1f9282(0x176)][_0x1f9282(0x14a)]['port'],_0x1f9282(0x157)+_0x518153[_0x1f9282(0x176)]['server'][_0x1f9282(0x123)]]);_0x574df5[_0x1f9282(0x15a)]['on'](_0x1f9282(0x145),function(_0x52ad7c){const _0x547e0b=_0x1f9282;_0x603c5a[_0x547e0b(0x147)](_0x52ad7c[_0x547e0b(0x16c)]());}),_0x574df5['on'](_0x1f9282(0x149),function(_0x26d963){const _0x23f1ae=_0x1f9282;if(0x0!==_0x26d963)throw Error(_0x23f1ae(0x14b)+_0x26d963);{let _0x1f38c8=o[_0x23f1ae(0x136)]+'\x20'+e[_0x23f1ae(0x14f)](_0x23f1ae(0x152)+_0x1863d6);_0x603c5a[_0x23f1ae(0x12c)](_0x1f38c8),require(_0x23f1ae(0x174))[_0x23f1ae(0x132)](_0x23f1ae(0x126),[_0x23f1ae(0x14d)])[_0x23f1ae(0x128)]['on'](_0x23f1ae(0x145),function(_0x5927f){const _0x52482e=_0x23f1ae;_0x603c5a['text'](''+e[_0x52482e(0x171)](_0x5927f[_0x52482e(0x16c)]()));});}});}});}if(_0xd29404){let _0x1f89f6=_0x518153[_0x4124be(0x12d)][_0x4124be(0x12b)]()[_0x4124be(0x123)],_0x4d56ab=await g(_0x1f89f6,_0x4c8e1f),_0x1f7e17='https://zalo.me/app/link/zapps/'+_0xf839a8+'/?env=TESTING_LOCAL&clientIp='+_0x4d56ab;i[_0x4124be(0x14c)](_0x1f7e17,{'small':!0x0},function(_0x3e6706){const _0x2c3ecf=_0x4124be;let _0x332ecd=o[_0x2c3ecf(0x136)]+'\x20'+e[_0x2c3ecf(0x14f)](_0x2c3ecf(0x152)+_0x3e6706);_0x603c5a[_0x2c3ecf(0x12c)](_0x332ecd),_0x603c5a[_0x2c3ecf(0x12c)](o[_0x2c3ecf(0x136)]+'\x20'+e[_0x2c3ecf(0x14f)](_0x2c3ecf(0x120)+_0x37b0d3+_0x2c3ecf(0x170)+e[_0x2c3ecf(0x155)](_0x2c3ecf(0x165))+_0x2c3ecf(0x11e)+e[_0x2c3ecf(0x15e)](_0x2c3ecf(0x15f))+_0x2c3ecf(0x150)));});}return await new Promise(()=>{});}catch(_0x446828){$[_0x4124be(0x144)](),_0x603c5a['error'](_0x4124be(0x159)),d(_0x446828);return;}};
@@ -1,146 +1 @@
1
- const DomParser = require('dom-parser');
2
- const fs = require('fs');
3
- const { axiosClient } = require('../utils/axios');
4
-
5
- async function generateListResourcesFromIndex(
6
- html,
7
- { outputDir, rootElement }
8
- ) {
9
- const listCSS = [];
10
- const listSyncJS = [];
11
- const listAsyncJS = [];
12
- let inlineJS = '';
13
- try {
14
- const parser = new DomParser();
15
- const doc = parser.parseFromString(html, 'text/html');
16
- const headInlines = [];
17
- const bodyInlines = [];
18
-
19
- const scripts = doc.getElementsByTagName('script');
20
- for (const script of scripts) {
21
- const src = script.getAttribute('src');
22
- const type = script.getAttribute('type');
23
- const async = script.getAttribute('async');
24
- const inline = script.innerHTML;
25
- try {
26
- if (inline) {
27
- bodyInlines.push(script.outerHTML);
28
- } else {
29
- let scriptName = src;
30
- if (src.includes('://')) {
31
- let filename = src.substring(src.lastIndexOf('/') + 1);
32
- filename = `cdn.` + filename;
33
- const response = await axiosClient({
34
- method: 'get',
35
- url: src,
36
- responseType: 'stream',
37
- });
38
- const fileStream = fs.createWriteStream(`${outputDir}/${filename}`);
39
- response.data.pipe(fileStream);
40
-
41
- await new Promise((resolve, reject) => {
42
- fileStream.on('finish', resolve);
43
- fileStream.on('error', reject);
44
- });
45
- scriptName = filename;
46
- }
47
- if (type === 'module' && !scriptName.endsWith('module.js')) {
48
- const newName = src.slice(0, -3).concat('.module.js');
49
- fs.rename(scriptName, newName);
50
- scriptName = newName;
51
- }
52
- (async ? listAsyncJS : listSyncJS).push(scriptName);
53
- }
54
- } catch (error) {
55
- console.warn(
56
- '\n⚠️ Unable to download resource from CDN. Please handle this file manually!',
57
- src
58
- );
59
- console.error(error.message);
60
- }
61
- }
62
-
63
- const styles = doc.getElementsByTagName('style');
64
- styles.forEach((style) => {
65
- const inline = style.innerHTML;
66
- if (inline) {
67
- headInlines.push(style.outerHTML);
68
- }
69
- });
70
-
71
- const links = doc.getElementsByTagName('link');
72
- for (const link of links) {
73
- const rel = link.getAttribute('rel');
74
- const href = link.getAttribute('href');
75
- try {
76
- if (rel === 'stylesheet') {
77
- let filename = href;
78
- if (href.includes('://')) {
79
- filename = href.substring(href.lastIndexOf('/') + 1);
80
- filename = `cdn.` + filename;
81
- const response = await axiosClient({
82
- method: 'get',
83
- url: href,
84
- responseType: 'stream',
85
- });
86
- const fileStream = fs.createWriteStream(`${outputDir}/${filename}`);
87
- response.data.pipe(fileStream);
88
-
89
- await new Promise((resolve, reject) => {
90
- fileStream.on('finish', resolve);
91
- fileStream.on('error', reject);
92
- });
93
- }
94
- listCSS.push(filename);
95
- }
96
- } catch (error) {
97
- console.error(
98
- '\n⚠️ Unable to download resource from CDN. Please handle this file manually!',
99
- href
100
- );
101
- console.error(error.message);
102
- }
103
- }
104
-
105
- const metas = doc.getElementsByTagName('meta');
106
- metas.forEach((meta) => {
107
- headInlines.push(meta.outerHTML);
108
- });
109
-
110
- if (rootElement && rootElement !== '#app') {
111
- let html = `<${rootElement} />`;
112
- if (rootElement.startsWith('#')) {
113
- html = `<div id="${rootElement.substring(1)}" />`;
114
- }
115
- if (rootElement.startsWith('.')) {
116
- html = `<div class="${rootElement.substring(1)}" />`;
117
- }
118
- if (rootElement.startsWith('<')) {
119
- html = rootElement;
120
- }
121
- bodyInlines.unshift(html);
122
- }
123
-
124
- inlineJS += headInlines
125
- .map(
126
- (inline) =>
127
- `document.head.innerHTML += \`${inline.replaceAll('`', '\\`')}\`;`
128
- )
129
- .join('\n');
130
- inlineJS += '\n';
131
- inlineJS += bodyInlines
132
- .map(
133
- (inline) =>
134
- `document.body.innerHTML += \`${inline.replaceAll('`', '\\`')}\`;`
135
- )
136
- .join('\n');
137
- listSyncJS.unshift('inline.js');
138
- } catch (error) {
139
- console.error(error.message);
140
- }
141
- return { listCSS, listSyncJS, listAsyncJS, inlineJS };
142
- }
143
-
144
- module.exports = {
145
- generateListResourcesFromIndex,
146
- };
1
+ 'use strict';const _0x3155fe=_0x1f52;function _0x1f52(_0x2091a8,_0x5243b8){const _0x21bc91=_0x21bc();return _0x1f52=function(_0x1f5219,_0x4a0211){_0x1f5219=_0x1f5219-0x1f1;let _0xeb896a=_0x21bc91[_0x1f5219];return _0xeb896a;},_0x1f52(_0x2091a8,_0x5243b8);}(function(_0x5c3f57,_0x386a24){const _0x449469=_0x1f52,_0x3e8037=_0x5c3f57();while(!![]){try{const _0x5ecefc=parseInt(_0x449469(0x22b))/0x1*(-parseInt(_0x449469(0x214))/0x2)+parseInt(_0x449469(0x20b))/0x3*(parseInt(_0x449469(0x222))/0x4)+parseInt(_0x449469(0x1fa))/0x5*(parseInt(_0x449469(0x1fc))/0x6)+-parseInt(_0x449469(0x1f4))/0x7*(parseInt(_0x449469(0x218))/0x8)+parseInt(_0x449469(0x20d))/0x9+parseInt(_0x449469(0x1f1))/0xa+-parseInt(_0x449469(0x204))/0xb;if(_0x5ecefc===_0x386a24)break;else _0x3e8037['push'](_0x3e8037['shift']());}catch(_0x5327e4){_0x3e8037['push'](_0x3e8037['shift']());}}}(_0x21bc,0xcc76f));const e=require(_0x3155fe(0x209)),t=require('fs'),{axiosClient:r}=require(_0x3155fe(0x202));async function s(_0x586047,{outputDir:_0x122e3a,rootElement:_0x3ceaa7}){const _0x94dd82=_0x3155fe;let _0x5d5e4c=[],_0xf571e1=[],_0x36749b=[],_0x36fe51='';try{let _0x29c59b=new e()['parseFromString'](_0x586047,_0x94dd82(0x216)),_0x1d2967=[],_0x5449e6=[];for(let _0x2ca9de of _0x29c59b[_0x94dd82(0x21a)](_0x94dd82(0x205))){let _0x4486fc=_0x2ca9de['getAttribute'](_0x94dd82(0x20c)),_0x213753=_0x2ca9de[_0x94dd82(0x219)](_0x94dd82(0x211)),_0x4c64e6=_0x2ca9de[_0x94dd82(0x219)]('async'),_0x3918e9=_0x2ca9de[_0x94dd82(0x229)];try{if(_0x3918e9)_0x5449e6[_0x94dd82(0x20a)](_0x2ca9de[_0x94dd82(0x22a)]);else{let _0x1f519c=_0x4486fc;if(_0x4486fc['includes'](_0x94dd82(0x225))){let _0x3ab95d=_0x4486fc[_0x94dd82(0x1f3)](_0x4486fc[_0x94dd82(0x1f6)]('/')+0x1);_0x3ab95d='cdn.'+_0x3ab95d;let _0x210364=await r({'method':_0x94dd82(0x1f2),'url':_0x4486fc,'responseType':_0x94dd82(0x1fb)}),_0x126195=t[_0x94dd82(0x223)](_0x122e3a+'/'+_0x3ab95d);_0x210364[_0x94dd82(0x1fe)][_0x94dd82(0x220)](_0x126195),await new Promise((_0x5c7715,_0x17dbad)=>{_0x126195['on']('finish',_0x5c7715),_0x126195['on']('error',_0x17dbad);}),_0x1f519c=_0x3ab95d;}if(_0x94dd82(0x20e)===_0x213753&&!_0x1f519c['endsWith'](_0x94dd82(0x203))){let _0x1984ea=_0x4486fc[_0x94dd82(0x20f)](0x0,-0x3)[_0x94dd82(0x210)](_0x94dd82(0x21e));t[_0x94dd82(0x201)](_0x1f519c,_0x1984ea),_0x1f519c=_0x1984ea;}(_0x4c64e6?_0x36749b:_0xf571e1)[_0x94dd82(0x20a)](_0x1f519c);}}catch(_0x672d1f){console['warn'](_0x94dd82(0x221),_0x4486fc),console[_0x94dd82(0x1f5)](_0x672d1f[_0x94dd82(0x21d)]);}}for(let _0x1c0480 of(_0x29c59b['getElementsByTagName']('style')[_0x94dd82(0x224)](_0x56beb3=>{const _0x45a65b=_0x94dd82;_0x56beb3[_0x45a65b(0x229)]&&_0x1d2967[_0x45a65b(0x20a)](_0x56beb3['outerHTML']);}),_0x29c59b[_0x94dd82(0x21a)](_0x94dd82(0x213)))){let _0x28c14b=_0x1c0480[_0x94dd82(0x219)](_0x94dd82(0x1f9)),_0x5b5ff7=_0x1c0480['getAttribute'](_0x94dd82(0x21b));try{if(_0x94dd82(0x212)===_0x28c14b){let _0x454642=_0x5b5ff7;if(_0x5b5ff7[_0x94dd82(0x206)](_0x94dd82(0x225))){_0x454642=_0x5b5ff7[_0x94dd82(0x1f3)](_0x5b5ff7[_0x94dd82(0x1f6)]('/')+0x1),_0x454642=_0x94dd82(0x1f8)+_0x454642;let _0x42c3ef=await r({'method':_0x94dd82(0x1f2),'url':_0x5b5ff7,'responseType':_0x94dd82(0x1fb)}),_0x2e0bf0=t[_0x94dd82(0x223)](_0x122e3a+'/'+_0x454642);_0x42c3ef[_0x94dd82(0x1fe)][_0x94dd82(0x220)](_0x2e0bf0),await new Promise((_0x30cc6e,_0x47acc0)=>{const _0x36f148=_0x94dd82;_0x2e0bf0['on'](_0x36f148(0x200),_0x30cc6e),_0x2e0bf0['on']('error',_0x47acc0);});}_0x5d5e4c[_0x94dd82(0x20a)](_0x454642);}}catch(_0x5b08bb){console[_0x94dd82(0x1f5)](_0x94dd82(0x221),_0x5b5ff7),console[_0x94dd82(0x1f5)](_0x5b08bb['message']);}}if(_0x29c59b[_0x94dd82(0x21a)]('meta')['forEach'](_0x23f7c7=>{const _0x19311b=_0x94dd82;_0x1d2967['push'](_0x23f7c7[_0x19311b(0x22a)]);}),_0x3ceaa7&&_0x94dd82(0x1fd)!==_0x3ceaa7){let _0x42549c='<'+_0x3ceaa7+_0x94dd82(0x228);_0x3ceaa7[_0x94dd82(0x215)]('#')&&(_0x42549c=_0x94dd82(0x226)+_0x3ceaa7[_0x94dd82(0x1f3)](0x1)+_0x94dd82(0x1ff)),_0x3ceaa7['startsWith']('.')&&(_0x42549c='<div\x20class=\x22'+_0x3ceaa7[_0x94dd82(0x1f3)](0x1)+'\x22\x20/>'),_0x3ceaa7['startsWith']('<')&&(_0x42549c=_0x3ceaa7),_0x5449e6[_0x94dd82(0x21c)](_0x42549c);}_0x36fe51+=_0x1d2967[_0x94dd82(0x1f7)](_0x4fc011=>_0x94dd82(0x227)+_0x4fc011[_0x94dd82(0x207)]('`','\x5c`')+'`;')[_0x94dd82(0x208)]('\x0a')+'\x0a'+_0x5449e6['map'](_0x489416=>_0x94dd82(0x217)+_0x489416['replaceAll']('`','\x5c`')+'`;')[_0x94dd82(0x208)]('\x0a'),_0xf571e1[_0x94dd82(0x21c)]('inline.js');}catch(_0x4cf76d){console[_0x94dd82(0x1f5)](_0x4cf76d[_0x94dd82(0x21d)]);}return{'listCSS':_0x5d5e4c,'listSyncJS':_0xf571e1,'listAsyncJS':_0x36749b,'inlineJS':_0x36fe51};}function _0x21bc(){const _0x4bcb94=['8Fbueyz','getAttribute','getElementsByTagName','href','unshift','message','.module.js','exports','pipe','\x0a⚠️\x20Unable\x20to\x20download\x20resource\x20from\x20CDN.\x20Please\x20handle\x20this\x20file\x20manually!','2427992SeehBn','createWriteStream','forEach','://','<div\x20id=\x22','document.head.innerHTML\x20+=\x20`','\x20/>','innerHTML','outerHTML','2rVveHx','15578660bilAXY','get','substring','9996889HknlxO','error','lastIndexOf','map','cdn.','rel','5EsAvpY','stream','2055162hfDMlP','#app','data','\x22\x20/>','finish','rename','../utils/axios','module.js','8018428QAFbPl','script','includes','replaceAll','join','dom-parser','push','3ovTepo','src','8956125QIyPhI','module','slice','concat','type','stylesheet','link','507954qlDSdZ','startsWith','text/html','document.body.innerHTML\x20+=\x20`'];_0x21bc=function(){return _0x4bcb94;};return _0x21bc();}module[_0x3155fe(0x21f)]={'generateListResourcesFromIndex':s};
package/sync/index.js CHANGED
@@ -1,55 +1 @@
1
- const path = require('path');
2
- const chalk = require('chalk');
3
- const fse = require('../utils/fs-extra');
4
- const config = require('../config');
5
- const { generateListResourcesFromIndex } = require('./index-to-app-config');
6
-
7
- const waitText = chalk.gray('(Please wait, it can take a while)');
8
- const defaultLogger = {
9
- statusStart() {},
10
- statusDone() {},
11
- statusText() {},
12
- statusError() {},
13
- text() {},
14
- error() {},
15
- showOnUI() {},
16
- };
17
-
18
- module.exports = async (options = {}, logger = defaultLogger) => {
19
- logger.statusStart(`Synchronization configuration ${waitText}`);
20
- const cwd = process.cwd();
21
- const { source, rootElement } = options;
22
- const appConfigFilename = config.filename.appConfig;
23
- const resolvePath = (dir) => {
24
- return path.join(cwd, dir);
25
- };
26
- function errorExit(err) {
27
- logger.error(err.stderr || err);
28
- process.exit(1);
29
- }
30
- let appConfigJson;
31
- try {
32
- appConfigJson = require(resolvePath(appConfigFilename));
33
- } catch (err) {
34
- errorExit(new Error(config.error_msg.app_config_not_found));
35
- }
36
-
37
- const html = fse.readFileSync(source).toString();
38
- const outputDir = path.dirname(source);
39
- const { listCSS, listSyncJS, listAsyncJS, inlineJS } =
40
- await generateListResourcesFromIndex(html, { outputDir, rootElement });
41
- Object.assign(appConfigJson, {
42
- listCSS,
43
- listSyncJS,
44
- listAsyncJS,
45
- });
46
- if (inlineJS) {
47
- fse.writeFileSync(resolvePath(`${outputDir}/inline.js`), inlineJS);
48
- }
49
- const output = JSON.stringify(appConfigJson, null, 2);
50
- fse.writeFileSync(resolvePath(appConfigFilename), output);
51
- logger.statusDone(
52
- `${chalk.bold.green('Configuration synchronization completed!')} 💪`
53
- );
54
- logger.text({ listCSS, listSyncJS, listAsyncJS });
55
- };
1
+ 'use strict';const _0x9392ec=_0x39f5;(function(_0x35f777,_0xfd56ed){const _0x46b8f1=_0x39f5,_0x4cdb9b=_0x35f777();while(!![]){try{const _0x178fff=-parseInt(_0x46b8f1(0x1d5))/0x1+parseInt(_0x46b8f1(0x1d2))/0x2*(-parseInt(_0x46b8f1(0x1e6))/0x3)+parseInt(_0x46b8f1(0x1e3))/0x4*(parseInt(_0x46b8f1(0x1d6))/0x5)+-parseInt(_0x46b8f1(0x1d7))/0x6*(-parseInt(_0x46b8f1(0x1d1))/0x7)+parseInt(_0x46b8f1(0x1e4))/0x8+-parseInt(_0x46b8f1(0x1e8))/0x9+parseInt(_0x46b8f1(0x1cc))/0xa*(parseInt(_0x46b8f1(0x1d8))/0xb);if(_0x178fff===_0xfd56ed)break;else _0x4cdb9b['push'](_0x4cdb9b['shift']());}catch(_0x45c709){_0x4cdb9b['push'](_0x4cdb9b['shift']());}}}(_0x388e,0x505c1));function _0x39f5(_0x1abcb2,_0x3f8b16){const _0x388e06=_0x388e();return _0x39f5=function(_0x39f55a,_0x584696){_0x39f55a=_0x39f55a-0x1c8;let _0x166789=_0x388e06[_0x39f55a];return _0x166789;},_0x39f5(_0x1abcb2,_0x3f8b16);}const t=require('path'),e=require(_0x9392ec(0x1df)),r=require('../utils/fs-extra'),i=require(_0x9392ec(0x1d0)),{errorExit:n}=require(_0x9392ec(0x1c9)),{generateListResourcesFromIndex:a}=require(_0x9392ec(0x1d4)),o=e[_0x9392ec(0x1e9)]('(Please\x20wait,\x20it\x20can\x20take\x20a\x20while)'),s={'statusStart'(){},'statusDone'(){},'statusText'(){},'statusError'(){},'text'(){},'error'(){},'showOnUI'(){}};function _0x388e(){const _0x32b514=['232181lgGXgQ','40PABHEe','1908822pxfCjp','44TkdMso','toString','/inline.js','writeFileSync','assign','stringify','bold','chalk','error_msg','app_config_not_found','join','47504pdNDrl','514520ugbVdP','Synchronization\x20configuration\x20','325203tzZkZF','Configuration\x20synchronization\x20completed!','3755637ObmMZd','gray','green','exports','cwd','../utils/error','text','readFileSync','2607930dpMZqO','\x20💪','filename','statusDone','../config','7RFQRbI','10PoKRSP','statusStart','./index-to-app-config'];_0x388e=function(){return _0x32b514;};return _0x388e();}module[_0x9392ec(0x1eb)]=async(_0x251bee={},_0x1085b6=s)=>{const _0x111e0f=_0x9392ec;let _0x2ebb18;_0x1085b6[_0x111e0f(0x1d3)](_0x111e0f(0x1e5)+o);let _0x1b25b2=process[_0x111e0f(0x1c8)](),{source:_0x4e89fc,rootElement:_0x1603bd}=_0x251bee,_0x3dfe15=i[_0x111e0f(0x1ce)]['appConfig'],_0x547b4e=_0x497cee=>t[_0x111e0f(0x1e2)](_0x1b25b2,_0x497cee);try{_0x2ebb18=require(_0x547b4e(_0x3dfe15));}catch(_0x11ea3c){n(Error(i[_0x111e0f(0x1e0)][_0x111e0f(0x1e1)]));}let _0x46fb85=r[_0x111e0f(0x1cb)](_0x4e89fc)[_0x111e0f(0x1d9)](),_0x53e773=t['dirname'](_0x4e89fc),{listCSS:_0x2de309,listSyncJS:_0x2541ab,listAsyncJS:_0x12e15f,inlineJS:_0x10eb54}=await a(_0x46fb85,{'outputDir':_0x53e773,'rootElement':_0x1603bd});Object[_0x111e0f(0x1dc)](_0x2ebb18,{'listCSS':_0x2de309,'listSyncJS':_0x2541ab,'listAsyncJS':_0x12e15f}),_0x10eb54&&r[_0x111e0f(0x1db)](_0x547b4e(_0x53e773+_0x111e0f(0x1da)),_0x10eb54);let _0xb37953=JSON[_0x111e0f(0x1dd)](_0x2ebb18,null,0x2);r[_0x111e0f(0x1db)](_0x547b4e(_0x3dfe15),_0xb37953),_0x1085b6[_0x111e0f(0x1cf)](e[_0x111e0f(0x1de)][_0x111e0f(0x1ea)](_0x111e0f(0x1e7))+_0x111e0f(0x1cd)),_0x1085b6[_0x111e0f(0x1ca)]({'listCSS':_0x2de309,'listSyncJS':_0x2541ab,'listAsyncJS':_0x12e15f});};
package/utils/axios.js CHANGED
@@ -1,15 +1 @@
1
- const { ProxyAgent } = require('proxy-agent');
2
- const axios = require('axios');
3
-
4
- const agent = new ProxyAgent();
5
-
6
- const axiosClient = axios.create({
7
- proxy: false,
8
- httpsAgent: agent,
9
- httpAgent: agent,
10
- });
11
-
12
- module.exports = {
13
- agent,
14
- axiosClient,
15
- };
1
+ 'use strict';function _0x5c13(_0x326f18,_0x3ce6b3){const _0x28e482=_0x28e4();return _0x5c13=function(_0x5c132b,_0x17470c){_0x5c132b=_0x5c132b-0x128;let _0x37d610=_0x28e482[_0x5c132b];return _0x37d610;},_0x5c13(_0x326f18,_0x3ce6b3);}const _0xf1c02a=_0x5c13;(function(_0x21bf25,_0x480e83){const _0x10f7a9=_0x5c13,_0xeddc47=_0x21bf25();while(!![]){try{const _0x4e96c3=parseInt(_0x10f7a9(0x129))/0x1+-parseInt(_0x10f7a9(0x131))/0x2+-parseInt(_0x10f7a9(0x12e))/0x3+parseInt(_0x10f7a9(0x12b))/0x4*(parseInt(_0x10f7a9(0x12d))/0x5)+-parseInt(_0x10f7a9(0x12f))/0x6+-parseInt(_0x10f7a9(0x130))/0x7+parseInt(_0x10f7a9(0x12c))/0x8;if(_0x4e96c3===_0x480e83)break;else _0xeddc47['push'](_0xeddc47['shift']());}catch(_0x36b772){_0xeddc47['push'](_0xeddc47['shift']());}}}(_0x28e4,0x3ec74));const {ProxyAgent:e}=require('proxy-agent'),t=require(_0xf1c02a(0x128)),r=new e(),o=t['create']({'proxy':!0x1,'httpsAgent':r,'httpAgent':r});function _0x28e4(){const _0x5e86a2=['276604SBXDuu','exports','10700mDftLL','3799128XDfRcL','535kIYOmp','806385kZaIiz','1077228QNZQZH','1450281LwVOtQ','250128uZrOLz','axios'];_0x28e4=function(){return _0x5e86a2;};return _0x28e4();}module[_0xf1c02a(0x12a)]={'agent':r,'axiosClient':o};