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.
- package/README.md +37 -0
- package/build/index.js +1 -184
- package/config/index.js +1 -44
- package/create/index.js +1 -230
- package/create/utils/generate-app-config.js +1 -34
- package/create/utils/generate-npm-scripts.js +1 -26
- package/create/utils/get-options.js +1 -204
- package/create/utils/npm-scripts.js +1 -62
- package/deploy/index.js +1 -149
- package/deploy/utils/get-options.js +1 -69
- package/deploy/utils/request-upload.js +1 -34
- package/deploy/utils/upload-app.js +1 -82
- package/index.js +1 -319
- package/login/index.js +1 -169
- package/login/utils/get-options.js +1 -58
- package/login/utils/zalo-login.js +1 -32
- package/migrate/icons/update-icon-v3.js +1 -19
- package/migrate/index.js +1 -60
- package/migrate/utils/get-options.js +1 -46
- package/migrate/utils/migrate-react.js +1 -33
- package/package.json +13 -40
- package/start/frame/index.html +264 -254
- package/start/index.js +1 -382
- package/sync/index-to-app-config.js +1 -146
- package/sync/index.js +1 -55
- package/utils/axios.js +1 -15
- package/utils/check-update.js +1 -53
- package/utils/constants.js +1 -20
- package/utils/env.js +1 -39
- package/utils/error.js +1 -16
- package/utils/find-files-by-ext.js +1 -27
- package/utils/find-free-port.js +1 -11
- package/utils/fs-extra.js +1 -90
- package/utils/generate-pages-map.js +1 -17
- package/utils/get-app-info.js +1 -22
- package/utils/get-current-project.js +1 -25
- package/utils/get-ip.js +1 -19
- package/utils/log.js +1 -19
- package/utils/node-blob.js +1 -106
- package/utils/resumable.d.js +1 -0
- package/utils/resumable.js +1 -1204
- package/utils/spinner.js +1 -25
- package/utils/tunnel.js +1 -36
- package/.editorconfig +0 -15
- package/.eslintignore +0 -8
- package/.eslintrc.js +0 -10
- package/.vscode/launch.json +0 -23
- package/LICENSE +0 -21
- package/README.git.md +0 -37
- package/assets/index.js +0 -147
- package/build/dist/index.dev.js +0 -217
- package/config/dist/index.dev.js +0 -48
- package/create/init-zmp-ui.js +0 -216
- package/create/templates/app-parameters.js +0 -33
- package/create/templates/common/css/icons.css +0 -60
- package/create/templates/common/icons/512x512.png +0 -0
- package/create/templates/common/icons/apple-touch-icon.png +0 -0
- package/create/templates/common/icons/favicon.png +0 -0
- package/create/templates/common/postcss.config.js +0 -5
- package/create/templates/common/splash-2732x2732.png +0 -0
- package/create/templates/common/tailwind/postcss.config.js +0 -5
- package/create/templates/common/tailwind/tailwind.config.js +0 -9
- package/create/templates/common/tailwind/tailwind.css +0 -3
- package/create/templates/common/webpack/build.js +0 -41
- package/create/templates/copy-assets.js +0 -158
- package/create/templates/core/babel.config.js +0 -11
- package/create/templates/core/copy-assets.js +0 -83
- package/create/templates/core/generate-home-page.js +0 -143
- package/create/templates/core/generate-root.js +0 -283
- package/create/templates/core/generate-routes.js +0 -155
- package/create/templates/core/generate-scripts.js +0 -94
- package/create/templates/core/pages/404.html +0 -20
- package/create/templates/core/pages/about.html +0 -26
- package/create/templates/core/pages/catalog.html +0 -40
- package/create/templates/core/pages/dynamic-route.html +0 -115
- package/create/templates/core/pages/form.html +0 -258
- package/create/templates/core/pages/left-page-1.html +0 -24
- package/create/templates/core/pages/left-page-2.html +0 -23
- package/create/templates/core/pages/product.html +0 -36
- package/create/templates/core/pages/request-and-load.html +0 -35
- package/create/templates/core/pages/settings.html +0 -252
- package/create/templates/create-folders.js +0 -30
- package/create/templates/dist/generate-styles.dev.js +0 -46
- package/create/templates/generate-config-xml.js +0 -18
- package/create/templates/generate-index.js +0 -49
- package/create/templates/generate-manifest.js +0 -49
- package/create/templates/generate-recoil.js +0 -56
- package/create/templates/generate-routes.js +0 -16
- package/create/templates/generate-scripts.js +0 -16
- package/create/templates/generate-service-worker.js +0 -126
- package/create/templates/generate-store.js +0 -88
- package/create/templates/generate-styles.js +0 -110
- package/create/templates/generate-webpack-config.js +0 -335
- package/create/templates/generate-zmp-custom.js +0 -81
- package/create/templates/react/babel.config.js +0 -12
- package/create/templates/react/components/app-items.jsx +0 -44
- package/create/templates/react/components/navbar-back.jsx +0 -25
- package/create/templates/react/components/user-card.jsx +0 -18
- package/create/templates/react/copy-assets.js +0 -85
- package/create/templates/react/dist/generate-scripts.dev.js +0 -23
- package/create/templates/react/generate-home-page.js +0 -111
- package/create/templates/react/generate-root.js +0 -84
- package/create/templates/react/generate-routes.js +0 -16
- package/create/templates/react/generate-scripts.js +0 -68
- package/create/templates/react/pages/404.js +0 -27
- package/create/templates/react/pages/about.js +0 -52
- package/create/templates/react/pages/catalog.js +0 -112
- package/create/templates/react/pages/dynamic-route.js +0 -80
- package/create/templates/react/pages/form.js +0 -152
- package/create/templates/react/pages/index copy.js +0 -17
- package/create/templates/react/pages/index.js +0 -17
- package/create/templates/react/pages/settings.js +0 -76
- package/create/templates/react/pages/user.js +0 -56
- package/create/templates/react/vite.config.js +0 -11
- package/create/templates/react-typescript/_tsconfig.json +0 -33
- package/create/templates/react-typescript/components/app-items.js +0 -53
- package/create/templates/react-typescript/components/index.js +0 -9
- package/create/templates/react-typescript/components/navbar-back.js +0 -40
- package/create/templates/react-typescript/components/user-card.js +0 -32
- package/create/templates/react-typescript/copy-assets.js +0 -94
- package/create/templates/react-typescript/dist/generate-scripts.dev.js +0 -23
- package/create/templates/react-typescript/generate-home-page.js +0 -113
- package/create/templates/react-typescript/generate-root.js +0 -81
- package/create/templates/react-typescript/generate-routes.js +0 -12
- package/create/templates/react-typescript/generate-scripts.js +0 -67
- package/create/templates/react-typescript/pages/404.js +0 -27
- package/create/templates/react-typescript/pages/about.js +0 -52
- package/create/templates/react-typescript/pages/catalog.js +0 -112
- package/create/templates/react-typescript/pages/dynamic-route.js +0 -80
- package/create/templates/react-typescript/pages/form.js +0 -152
- package/create/templates/react-typescript/pages/index.js +0 -17
- package/create/templates/react-typescript/pages/settings.js +0 -76
- package/create/templates/react-typescript/pages/user.js +0 -56
- package/create/templates/react-typescript/vite.config.js +0 -21
- package/create/templates/svelte/babel.config.js +0 -10
- package/create/templates/svelte/copy-assets.js +0 -47
- package/create/templates/svelte/generate-home-page.js +0 -158
- package/create/templates/svelte/generate-root.js +0 -235
- package/create/templates/svelte/generate-routes.js +0 -91
- package/create/templates/svelte/generate-scripts.js +0 -47
- package/create/templates/svelte/pages/404.svelte +0 -10
- package/create/templates/svelte/pages/about.svelte +0 -16
- package/create/templates/svelte/pages/catalog.svelte +0 -31
- package/create/templates/svelte/pages/dynamic-route.svelte +0 -34
- package/create/templates/svelte/pages/form.svelte +0 -175
- package/create/templates/svelte/pages/left-page-1.svelte +0 -13
- package/create/templates/svelte/pages/left-page-2.svelte +0 -12
- package/create/templates/svelte/pages/product.svelte +0 -21
- package/create/templates/svelte/pages/request-and-load.svelte +0 -21
- package/create/templates/svelte/pages/settings.svelte +0 -175
- package/create/templates/vue/babel.config.js +0 -10
- package/create/templates/vue/components/header.vue +0 -28
- package/create/templates/vue/components/sun-and-moon.vue +0 -34
- package/create/templates/vue/copy-assets.js +0 -67
- package/create/templates/vue/generate-home-page.js +0 -56
- package/create/templates/vue/generate-root.js +0 -50
- package/create/templates/vue/generate-routes.js +0 -7
- package/create/templates/vue/generate-scripts.js +0 -63
- package/create/templates/vue/global-components.d.ts +0 -121
- package/create/templates/vue/icons/moon.svg +0 -3
- package/create/templates/vue/icons/sun.svg +0 -3
- package/create/templates/vue/pages/404.vue +0 -12
- package/create/templates/vue/pages/about.vue +0 -15
- package/create/templates/vue/pages/catalog.vue +0 -39
- package/create/templates/vue/pages/dynamic-route.vue +0 -34
- package/create/templates/vue/pages/form.vue +0 -162
- package/create/templates/vue/pages/left-page-1.vue +0 -14
- package/create/templates/vue/pages/left-page-2.vue +0 -11
- package/create/templates/vue/pages/product.vue +0 -31
- package/create/templates/vue/pages/request-and-load.vue +0 -25
- package/create/templates/vue/pages/settings.vue +0 -18
- package/create/templates/vue/vite.config.js +0 -11
- package/create/templates/zaui/_tsconfig.json +0 -33
- package/create/templates/zaui/babel.config.js +0 -12
- package/create/templates/zaui/components/user-card.jsx +0 -16
- package/create/templates/zaui/copy-assets.js +0 -90
- package/create/templates/zaui/generate-home-page.js +0 -117
- package/create/templates/zaui/generate-root.js +0 -53
- package/create/templates/zaui/generate-routes.js +0 -10
- package/create/templates/zaui/generate-scripts.js +0 -39
- package/create/templates/zaui/generate-user-card.js +0 -55
- package/create/templates/zaui/pages/about.js +0 -129
- package/create/templates/zaui/pages/form.js +0 -123
- package/create/templates/zaui/pages/index.js +0 -9
- package/create/templates/zaui/pages/user.js +0 -109
- package/create/templates/zaui/vite.config.js +0 -11
- package/create/utils/colors.js +0 -94
- package/create/utils/dist/get-options.dev.js +0 -277
- package/create/utils/generate-gitignore.js +0 -43
- package/create/utils/generate-package-json.js +0 -132
- package/create/utils/generate-readme.js +0 -28
- package/create/utils/indent.js +0 -31
- package/create/utils/string.js +0 -13
- package/create/utils/styles-extension.js +0 -9
- package/create/utils/template-if.js +0 -9
- package/deploy/dist/index.dev.js +0 -227
- package/deploy/utils/dist/request-upload.dev.js +0 -62
- package/deploy/utils/dist/upload-app.dev.js +0 -113
- package/dist/bundle.js +0 -1
- package/dist/index.dev.js +0 -352
- package/jsconfig.json +0 -8
- package/login/dist/index.dev.js +0 -223
- package/login/utils/dist/zalo-login.dev.js +0 -41
- package/screenshots/wellcome.jpg +0 -0
- package/show-qr-app/assets/css/style.css +0 -87
- package/show-qr-app/assets/js/qrcode.min.js +0 -1
- package/show-qr-app/index.html +0 -57
- package/show-qr-app/package.json +0 -14
- package/start/dist/index.dev.js +0 -312
- package/start/generate-hr-config.js +0 -59
- package/ui/server.js +0 -194
- package/ui/www/css/app.css +0 -1
- package/ui/www/css/app.css.map +0 -1
- package/ui/www/fonts/ZMPIcons-Regular.eot +0 -0
- package/ui/www/fonts/ZMPIcons-Regular.ttf +0 -0
- package/ui/www/fonts/ZMPIcons-Regular.woff +0 -0
- package/ui/www/fonts/ZMPIcons-Regular.woff2 +0 -0
- package/ui/www/images/logo.png +0 -0
- package/ui/www/index.html +0 -1
- package/ui/www/js/app.js +0 -3
- package/ui/www/js/app.js.LICENSE.txt +0 -20
- package/ui/www/js/app.js.map +0 -1
- package/ui/www/static/icons/apple-touch-icon.png +0 -0
- package/ui/www/static/icons/favicon.png +0 -0
- package/utils/dist/get-app-info.dev.js +0 -54
package/README.md
CHANGED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# ZMP-CLI
|
|
2
|
+
CLI dùng để start, build, deploy Zalo Mini App
|
|
3
|
+
|
|
4
|
+
## Contribute
|
|
5
|
+
Project bao gồm các nhánh:
|
|
6
|
+
- master: nhánh chính tương ứng với version đang release
|
|
7
|
+
- develop: nhánh chính, source code mới nhất bao gồm các tính năng chuẩn bị cho lần release tiếp theo
|
|
8
|
+
- feature/*: nhánh tương ứng với chức năng đang phát triển (xoá sau khi hoàn thành)
|
|
9
|
+
- release/*-rc: nhánh tương ứng với các release candidate (xoá sau khi hoàn thành)
|
|
10
|
+
- hotfix/*: nhánh tương ứng với bug cần fix cho version đang release (xoá sau khi hoàn thành)
|
|
11
|
+
|
|
12
|
+
Suggest sử dụng git flow để quản lí các nhánh:
|
|
13
|
+
1. Cài đặt và tìm hiểu git flow theo [hướng dẫn](https://danielkummer.github.io/git-flow-cheatsheet/index.vi_VN.html)
|
|
14
|
+
2. Init git flow tương ứng với các branch trên: ```git flow init```
|
|
15
|
+
|
|
16
|
+
Phát triển một tính năng mới:
|
|
17
|
+
1. Để bắt đầu code tính năng mới: ```git flow feature start feature_1```
|
|
18
|
+
2. Sau khi code và test xong: ```git flow feature finish feature_1```, tính năng sẽ được merge vào nhánh develop
|
|
19
|
+
|
|
20
|
+
Tạo một release candidate (suffix "-rc"):
|
|
21
|
+
1. ```git flow release start <major>.<minor>.<patch>-rc```
|
|
22
|
+
2. Sau khi test xong: ```git flow release finish <major>.<minor>.<patch>-rc```, tính năng sẽ được merge vào nhánh master để chờ release và nhánh develop
|
|
23
|
+
|
|
24
|
+
Để fix bug trên bản release:
|
|
25
|
+
1. ```git flow hotfix start bug-a```
|
|
26
|
+
2. Sau khi fix xong: ```git flow hotfix finish bug-a```, tính năng sẽ được merge vào nhánh master để chờ release và nhánh develop
|
|
27
|
+
|
|
28
|
+
Để fix bug trên bản release-candidate:
|
|
29
|
+
1. Tạo nhánh mới từ nhánh rc muốn fix với refix: ```git branch ```
|
|
30
|
+
2. Sau khi fix xong: ```git flow hotfix finish bug-a```, tính năng sẽ được merge vào nhánh master để chờ release và nhánh develop
|
|
31
|
+
|
|
32
|
+
Để release nhánh master:
|
|
33
|
+
1. ```npm run release```
|
|
34
|
+
2. Nhập version:
|
|
35
|
+
- patch: fix bug
|
|
36
|
+
- minor: thêm tính năng
|
|
37
|
+
- major: thay đổi lớn có ảnh hưởng tới version cũ
|
package/build/index.js
CHANGED
|
@@ -1,184 +1 @@
|
|
|
1
|
-
|
|
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 _0x309964=_0x1432;(function(_0x11c86c,_0x15d438){const _0x24b6f7=_0x1432,_0x5e6ba5=_0x11c86c();while(!![]){try{const _0x5e1f17=-parseInt(_0x24b6f7(0x205))/0x1+-parseInt(_0x24b6f7(0x208))/0x2*(parseInt(_0x24b6f7(0x1f3))/0x3)+parseInt(_0x24b6f7(0x211))/0x4+parseInt(_0x24b6f7(0x206))/0x5+-parseInt(_0x24b6f7(0x1fe))/0x6+-parseInt(_0x24b6f7(0x1fc))/0x7+parseInt(_0x24b6f7(0x1fa))/0x8;if(_0x5e1f17===_0x15d438)break;else _0x5e6ba5['push'](_0x5e6ba5['shift']());}catch(_0x237d14){_0x5e6ba5['push'](_0x5e6ba5['shift']());}}}(_0x4323,0x743ae));function _0x1432(_0x5a7de1,_0xfc557e){const _0x4323f0=_0x4323();return _0x1432=function(_0x143283,_0x494574){_0x143283=_0x143283-0x1e8;let _0x4ffc72=_0x4323f0[_0x143283];return _0x4ffc72;},_0x1432(_0x5a7de1,_0xfc557e);}const e=require('chalk'),r=require(_0x309964(0x20b)),t=require(_0x309964(0x20a)),i=require(_0x309964(0x1ff))['default'],o=require(_0x309964(0x1ee)),{buildApp:n}=require(_0x309964(0x214)),u=require(_0x309964(0x203)),a=require(_0x309964(0x1ea)),l=require(_0x309964(0x1eb)),{errorExit:s}=require('../utils/error'),p=require(_0x309964(0x1f5)),g=require(_0x309964(0x1f0)),{existsSync:c}=require('fs'),w=l[_0x309964(0x1fb)]('NODE_ENV')||_0x309964(0x215),d=e[_0x309964(0x200)](_0x309964(0x213)),f=e[_0x309964(0x207)]('Warning:\x20This\x20CLI\x20version\x20will\x20work\x20better\x20with\x20zmp-framework\x20version\x201.5.0\x20or\x20higher'),m=r('production'===w?_0x309964(0x1f6):_0x309964(0x202));function _0x4323(){const _0x4b28ce=['217976yNFMCS','Error\x20building\x20project','Building...\x20(Please\x20wait,\x20it\x20can\x20take\x20a\x20while)','zmp-cli-core','production','exports','nextVersion','../utils/get-app-info','../utils/env','statusError','bold','@rollup/plugin-replace','latestVersion','../utils/generate-pages-map','statusDone','join','80643ulOfrT','text','../config','Building\x20for\x20production...','start','green','writeFileSync','17862824flUkVf','getEnv','757960hlYrlv','node_modules','5045952vWgBuv','@rollup/plugin-dynamic-import-vars','gray','Build\x20Done!\x0a','Building\x20development\x20version...','../utils/fs-extra','www/','800165RzEXuv','2110130ICRyiQ','yellow','36fLVumk','filename','path','ora','cwd','statusStart','appConfig','zmp-framework','www'];_0x4323=function(){return _0x4b28ce;};return _0x4323();}module[_0x309964(0x1e8)]=async(_0x3766c4={},_0x4e3c21)=>{const _0x9f488e=_0x309964;let _0x14310d=_0x3766c4[_0x9f488e(0x20c)]||process['cwd'](),_0x1a6837=_0xd09c84=>t[_0x9f488e(0x1f2)](_0x14310d,_0xd09c84),_0x5cf312=_0x3766c4['appConfigJson']||require(_0x1a6837(p[_0x9f488e(0x209)][_0x9f488e(0x20e)]));_0x4e3c21||(_0x4e3c21={'statusStart'(){},'statusDone'(){},'statusError'(){},'text'(){},'error'(){}}),c(t[_0x9f488e(0x1f2)](_0x14310d,_0x9f488e(0x1fd),_0x9f488e(0x20f)))&&_0x4e3c21[_0x9f488e(0x1f4)](f),m[_0x9f488e(0x1f7)](),_0x4e3c21[_0x9f488e(0x20d)](d);try{let _0x52b0ca=l[_0x9f488e(0x1fb)](p['env']['appId']),_0x3b9aca=_0x3766c4[_0x9f488e(0x1e9)];if(!_0x3b9aca){let _0x54592f=await a(_0x52b0ca,_0x3766c4),_0x3366dd=_0x54592f&&_0x54592f[_0x9f488e(0x1ef)]&&Number(_0x54592f[_0x9f488e(0x1ef)]);null==_0x3366dd&&(_0x3366dd=0x0),_0x3b9aca=_0x3366dd+0x1;}let {appConfigJson:_0x5e6a48}=await n({'cwd':_0x14310d,'mode':w,'appId':_0x52b0ca,'nextVersion':_0x3b9aca,'appConfig':_0x5cf312,'outDir':_0x9f488e(0x210),'vite2RollupPlugins':[o({'values':{'ZMP_IMPORT_PAGES':()=>g(_0x14310d)}}),i({'warnOnError':!0x0})],'customLogger':{'info':_0x4e3c21[_0x9f488e(0x1f4)],'warn':_0x4e3c21[_0x9f488e(0x1f4)],'warnOnce':_0x4e3c21['text'],'error':_0x4e3c21['error']}});return _0x5e6a48&&u[_0x9f488e(0x1f9)](_0x1a6837(_0x9f488e(0x204)+p[_0x9f488e(0x209)][_0x9f488e(0x20e)]),JSON['stringify'](_0x5e6a48)),_0x4e3c21[_0x9f488e(0x1f1)](''+e[_0x9f488e(0x1ed)][_0x9f488e(0x1f8)](_0x9f488e(0x201))),_0x5e6a48;}catch(_0x4fa4ac){_0x4e3c21[_0x9f488e(0x1ec)](_0x9f488e(0x212)),s(_0x4fa4ac);return;}};
|
package/config/index.js
CHANGED
|
@@ -1,44 +1 @@
|
|
|
1
|
-
|
|
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';var _0x5a419c=_0x2ec7;(function(_0x50a01a,_0x4e2596){var _0x34c54a=_0x2ec7,_0x276bd6=_0x50a01a();while(!![]){try{var _0x21b374=parseInt(_0x34c54a(0x15e))/0x1+-parseInt(_0x34c54a(0x14a))/0x2*(parseInt(_0x34c54a(0x157))/0x3)+parseInt(_0x34c54a(0x148))/0x4*(parseInt(_0x34c54a(0x15a))/0x5)+parseInt(_0x34c54a(0x159))/0x6*(parseInt(_0x34c54a(0x151))/0x7)+-parseInt(_0x34c54a(0x14e))/0x8*(parseInt(_0x34c54a(0x15f))/0x9)+-parseInt(_0x34c54a(0x15d))/0xa*(-parseInt(_0x34c54a(0x14b))/0xb)+-parseInt(_0x34c54a(0x158))/0xc;if(_0x21b374===_0x4e2596)break;else _0x276bd6['push'](_0x276bd6['shift']());}catch(_0x4f0ec1){_0x276bd6['push'](_0x276bd6['shift']());}}}(_0x18e7,0x6d73b));function _0x2ec7(_0x93a5d6,_0x52e9e1){var _0x18e70f=_0x18e7();return _0x2ec7=function(_0x2ec7ae,_0x510523){_0x2ec7ae=_0x2ec7ae-0x147;var _0x97f336=_0x18e70f[_0x2ec7ae];return _0x97f336;},_0x2ec7(_0x93a5d6,_0x52e9e1);}function _0x18e7(){var _0x48aae0=['app-config.json','https://zmp-api.developers.zalo.me/','//h5.zdn.vn/zapps/','638967jHLJtE','8292300THGbmE','1584QeOtjl','3471345wyVAaC','admin/login','app/upload-chunk','2087570PPVAmC','32432MqZbPO','9EprKkN','octet','exports','ZMP_TOKEN','4MnHCtS','cwd','4PGwLEw','33ToOZAF','app/get-info','zmp-cli.json','1186224MbRYdK','Request\x20Timeout','APP_ID','9562wAkUtO','/.env','App\x20config\x20not\x20found.\x20Please\x20re-init\x20project.\x20(Tips:\x20Run\x20\x27zmp\x20init\x27)'];_0x18e7=function(){return _0x48aae0;};return _0x18e7();}module[_0x5a419c(0x161)]={'filename':{'appConfig':_0x5a419c(0x154),'zmpConfig':_0x5a419c(0x14d),'packageJson':'package.json'},'api_domain':_0x5a419c(0x155),'zdn_url':_0x5a419c(0x156),'path':{'login':_0x5a419c(0x15b),'requestLogin':'admin/request-login','checkLoginStatus':'admin/get-login-status','uploadAppByChunk':_0x5a419c(0x15c),'requestUploadResumable':'app/request-upload','getAppInfo':_0x5a419c(0x14c)},'dirname':__dirname,'root_env':()=>process[_0x5a419c(0x149)]()+_0x5a419c(0x152),'env':{'appId':_0x5a419c(0x150),'token':_0x5a419c(0x147)},'error_code':{'app_config_not_found':-0x578,'permission_denied':-0x7d1,'request_timeout':-0x7d3},'error_msg':{'app_config_not_found':_0x5a419c(0x153),'permission_denied':'Permission\x20denied.\x20Please\x20login\x20again.\x20(Tips:\x20Run\x20\x27zmp\x20login\x27)','request_timeout':_0x5a419c(0x14f)},'resumable_option':{'chunkSize':0x7d000,'simultaneousUploads':0x4,'testChunks':!0x0,'throttleProgressCallbacks':0x1,'method':_0x5a419c(0x160),'forceChunkSize':!0x1}};
|
package/create/index.js
CHANGED
|
@@ -1,230 +1 @@
|
|
|
1
|
-
|
|
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 _0x465e0a=_0x5a08;(function(_0x585675,_0x43c162){const _0x19f2e2=_0x5a08,_0x10d8ff=_0x585675();while(!![]){try{const _0xf8e42b=-parseInt(_0x19f2e2(0x107))/0x1*(parseInt(_0x19f2e2(0x133))/0x2)+parseInt(_0x19f2e2(0x10d))/0x3*(parseInt(_0x19f2e2(0x11b))/0x4)+parseInt(_0x19f2e2(0x11c))/0x5+parseInt(_0x19f2e2(0x134))/0x6+-parseInt(_0x19f2e2(0x109))/0x7*(-parseInt(_0x19f2e2(0x12f))/0x8)+parseInt(_0x19f2e2(0x135))/0x9+-parseInt(_0x19f2e2(0x100))/0xa;if(_0xf8e42b===_0x43c162)break;else _0x10d8ff['push'](_0x10d8ff['shift']());}catch(_0x3788cf){_0x10d8ff['push'](_0x10d8ff['shift']());}}}(_0x221a,0x1c882));function _0x5a08(_0x5ca05f,_0x4b2d15){const _0x221a01=_0x221a();return _0x5a08=function(_0x5a088f,_0x1ceae1){_0x5a088f=_0x5a088f-0xfb;let _0xe3f64=_0x221a01[_0x5a088f];return _0xe3f64;},_0x5a08(_0x5ca05f,_0x4b2d15);}const e=require(_0x465e0a(0x113)),t=require(_0x465e0a(0x11f)),n=require(_0x465e0a(0x132)),r=require(_0x465e0a(0x115)),{initProject:i}=require('zmp-cli-core'),o=require(_0x465e0a(0xff)),{errorExit:s}=require(_0x465e0a(0x137)),a=require(_0x465e0a(0xfe)),c=require(_0x465e0a(0xfc)),l=require(_0x465e0a(0x12b)),{renameSync:u,existsSync:p}=require('fs'),d=n[_0x465e0a(0x11d)](_0x465e0a(0x110));async function f(_0x26492a,_0x3d626e){const _0x55246a=_0x465e0a;_0x3d626e[_0x55246a(0x11e)](_0x55246a(0x12d));try{let {cwd:_0x24451e,template:_0x695392,folderName:_0x18c58a,name:_0x590c0d}=_0x26492a;await i({'cwd':_0x24451e,'template':_0x695392,'folderName':_0x18c58a,'projectName':_0x590c0d});}catch(_0x5aaa2){_0x3d626e[_0x55246a(0x12c)]('Error\x20creating\x20project\x20files'),s(_0x5aaa2);}_0x3d626e[_0x55246a(0x123)](_0x55246a(0x12d));}async function m(_0xd24745){const _0x505856=_0x465e0a;let _0x3536e6=t[_0x505856(0x10c)](_0xd24745[_0x505856(0x124)],_0x505856(0x117)),_0x3d577f=t[_0x505856(0x10c)](_0xd24745[_0x505856(0x124)],_0xd24745[_0x505856(0x10b)],_0x505856(0x117));p(_0x3536e6)&&!p(_0x3d577f)&&u(_0x3536e6,_0x3d577f);}async function g(_0x84c60a,_0x1e1307){const _0x59a298=_0x465e0a;let {cwd:_0x2040c5}=_0x84c60a;_0x1e1307[_0x59a298(0x11e)](_0x59a298(0x108));let _0x4a203f=c(_0x84c60a);o[_0x59a298(0x126)](t[_0x59a298(0xfd)](_0x2040c5,a[_0x59a298(0x125)]['appConfig']),_0x4a203f[_0x59a298(0x11a)]),_0x1e1307[_0x59a298(0x123)]('Generating\x20app-config.json');}async function $(_0x447488,_0x330d1c){const _0xee1252=_0x465e0a;let _0x59b09c=t['join'](_0x447488[_0xee1252(0x124)],_0x447488[_0xee1252(0x10b)]);_0x330d1c['statusStart'](_0xee1252(0x120)+d);let _0x490e4b=_0x59b09c===process['cwd']();try{_0x490e4b?await e[_0xee1252(0x102)](_0xee1252(0x12e),!0x0):await e[_0xee1252(0x102)](_0xee1252(0x112)+_0x59b09c['replace'](/ /g,'\x5c\x20')+_0xee1252(0x131),!0x0);}catch(_0x17f78f){_0x330d1c['statusError'](_0xee1252(0x116)),s(_0x17f78f);return;}_0x330d1c[_0xee1252(0x123)](_0xee1252(0x118));}function _0x221a(){const _0x4cc4cd=['../utils/fs-extra','3768150tUOIDg','name','promise','https://mini.zalo.me/','README.md','text','icon','41fXmeCv','Generating\x20app-config.json','204442AEsRji','info','folderName','resolve','10929zVCCha','Next\x20steps:','\x0a-\x20📖\x20Visit\x20documentation\x20at\x20','(Please\x20wait,\x20it\x20can\x20take\x20a\x20while)','bold','cd\x20','exec-sh','\x0a-\x20📖\x20Check\x20','log-symbols','Error\x20installing\x20NPM\x20Dependencies','.env','Installing\x20NPM\x20Dependencies','description','content','20XEEWWd','790290tZTibO','gray','statusStart','path','Installing\x20NPM\x20Dependencies\x20','\x20Run\x20\x22npm\x20run\x20','\x0a-\x20🔥\x20Run\x20\x22zmp\x20deploy\x22\x20-\x20deploy\x20mini\x20app\x20for\x20production\x0a-\x20📖\x20Visit\x20instruction\x20at\x20','statusDone','cwd','filename','writeFileSync','exports','https://mini.zalo.me/blog/huong-dan-chuyen-doi-web-app-thanh-zalo-mini-app-trong-30-phut/','success','\x0a-\x20👉\x20Run\x20\x22cd\x20','./utils/generate-npm-scripts','statusError','Creating\x20project\x20files','npm\x20install','40hVTpdd','\x20💪\x0a\x0a','\x20&&\x20npm\x20install','chalk','2180qKwCUk','1048446BXqnYD','371943KWZxeD','newProject','../utils/error','Done!','./utils/generate-app-config','join','../config'];_0x221a=function(){return _0x4cc4cd;};return _0x221a();}async function h(_0x348b42,_0x4a066f){const _0x4ea2e0=_0x465e0a;let _0x3a0a14=l(['s','r'])['map'](_0x10dfdf=>'-\x20'+_0x10dfdf[_0x4ea2e0(0x106)]+_0x4ea2e0(0x121)+_0x10dfdf[_0x4ea2e0(0x101)]+'\x22\x20-\x20'+_0x10dfdf[_0x4ea2e0(0x119)]),_0x1eefb2='\x0a'+n[_0x4ea2e0(0x111)](r[_0x4ea2e0(0x129)])+'\x20'+n[_0x4ea2e0(0x111)](_0x4ea2e0(0xfb))+_0x4ea2e0(0x130)+n[_0x4ea2e0(0x111)](r['info'])+'\x20'+n['bold'](_0x4ea2e0(0x10e))+_0x4ea2e0(0x12a)+_0x348b42[_0x4ea2e0(0x10b)]+'\x22\x0a'+_0x3a0a14[_0x4ea2e0(0xfd)]('\x0a')+_0x4ea2e0(0x10f)+n[_0x4ea2e0(0x111)](_0x4ea2e0(0x103))+_0x4ea2e0(0x114)+n[_0x4ea2e0(0x111)](_0x4ea2e0(0x104))+'\x20in\x20project\x20root\x20folder\x20with\x20further\x20instructions\x0a\x20\x20';_0x4a066f[_0x4ea2e0(0x105)](_0x1eefb2);}async function y(_0x4473ea,_0x3d79a3){const _0x40f31f=_0x465e0a;let _0x17efb7='\x0a'+n['bold'](r[_0x40f31f(0x129)])+'\x20'+n['bold']('Done!')+'\x20💪\x0a\x0a'+n['bold'](r[_0x40f31f(0x10a)])+'\x20'+n['bold'](_0x40f31f(0x10e))+_0x40f31f(0x122)+n[_0x40f31f(0x111)](_0x40f31f(0x128))+'\x0a\x20\x20';_0x3d79a3[_0x40f31f(0x105)](_0x17efb7);}module[_0x465e0a(0x127)]=async(_0x2a663d={},_0x2e8d7a)=>{const _0x33a748=_0x465e0a;for(let _0x3a990b of(_0x2e8d7a||(_0x2e8d7a={'statusStart'(){},'statusDone'(){},'statusError'(){},'text'(){},'error'(){}}),_0x2a663d[_0x33a748(0x136)]?[f,m,$,h]:[g,y]))await _0x3a990b(_0x2a663d,_0x2e8d7a);};
|
|
@@ -1,34 +1 @@
|
|
|
1
|
-
module
|
|
2
|
-
const { name } = options;
|
|
3
|
-
|
|
4
|
-
// Window config
|
|
5
|
-
const appConfig = {
|
|
6
|
-
title: name,
|
|
7
|
-
headerTitle: name,
|
|
8
|
-
headerColor: '#1843EF',
|
|
9
|
-
textColor: 'white',
|
|
10
|
-
statusBarColor: '#1843EF',
|
|
11
|
-
leftButton: 'back',
|
|
12
|
-
statusBar: 'normal',
|
|
13
|
-
actionBarHidden: false,
|
|
14
|
-
hideAndroidBottomNavigationBar: false,
|
|
15
|
-
hideIOSSafeAreaBottom: false,
|
|
16
|
-
};
|
|
17
|
-
// Content
|
|
18
|
-
const content = JSON.stringify(
|
|
19
|
-
{
|
|
20
|
-
app: appConfig,
|
|
21
|
-
debug: false,
|
|
22
|
-
listCSS: [],
|
|
23
|
-
listSyncJS: [],
|
|
24
|
-
listAsyncJS: [],
|
|
25
|
-
},
|
|
26
|
-
'',
|
|
27
|
-
2
|
|
28
|
-
).trim();
|
|
29
|
-
|
|
30
|
-
return {
|
|
31
|
-
content,
|
|
32
|
-
appConfig,
|
|
33
|
-
};
|
|
34
|
-
};
|
|
1
|
+
'use strict';const _0x10b754=_0x569d;(function(_0x5d7d65,_0x50fcc5){const _0x59f066=_0x569d,_0x373103=_0x5d7d65();while(!![]){try{const _0xffce73=parseInt(_0x59f066(0x1a5))/0x1*(-parseInt(_0x59f066(0x1a6))/0x2)+parseInt(_0x59f066(0x19e))/0x3+-parseInt(_0x59f066(0x19b))/0x4*(-parseInt(_0x59f066(0x1a3))/0x5)+parseInt(_0x59f066(0x1a7))/0x6+parseInt(_0x59f066(0x1a0))/0x7*(parseInt(_0x59f066(0x19a))/0x8)+-parseInt(_0x59f066(0x19d))/0x9+parseInt(_0x59f066(0x19f))/0xa*(-parseInt(_0x59f066(0x199))/0xb);if(_0xffce73===_0x50fcc5)break;else _0x373103['push'](_0x373103['shift']());}catch(_0x57f8e3){_0x373103['push'](_0x373103['shift']());}}}(_0x5aa7,0xc55e2));module[_0x10b754(0x1a2)]=function(_0x59a9b8){const _0x407f11=_0x10b754;let {name:_0x396ec2}=_0x59a9b8,_0x4a7fd1={'title':_0x396ec2,'headerTitle':_0x396ec2,'headerColor':_0x407f11(0x1a4),'textColor':_0x407f11(0x1a1),'leftButton':'back','statusBar':_0x407f11(0x19c),'actionBarHidden':!0x1,'hideAndroidBottomNavigationBar':!0x1,'hideIOSSafeAreaBottom':!0x1};return{'content':JSON[_0x407f11(0x1a8)]({'app':_0x4a7fd1,'listCSS':[],'listSyncJS':[],'listAsyncJS':[]},'',0x2)['trim'](),'appConfig':_0x4a7fd1};};function _0x569d(_0x16f1b6,_0x3461da){const _0x5aa7bc=_0x5aa7();return _0x569d=function(_0x569d3,_0x36fcd7){_0x569d3=_0x569d3-0x199;let _0x130add=_0x5aa7bc[_0x569d3];return _0x130add;},_0x569d(_0x16f1b6,_0x3461da);}function _0x5aa7(){const _0x5cf2d2=['40GgUrsl','4aKYMuv','normal','5345289gjkACG','970800eJAMSz','50RUuVfe','222243kDmNhq','white','exports','7922785GgUQIX','#1843EF','205152RqxQyd','12WbInqX','7393584TfEZrC','stringify','1465013iGmgnY'];_0x5aa7=function(){return _0x5cf2d2;};return _0x5aa7();}
|
|
@@ -1,26 +1 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
const generateNpmScripts = (tokens = ['s', 'r']) => {
|
|
4
|
-
return tokens.map((token) => {
|
|
5
|
-
return {
|
|
6
|
-
icon: npmScripts.default[token].icon,
|
|
7
|
-
name: npmScripts.default[token].name,
|
|
8
|
-
script: npmScripts.default[token].script,
|
|
9
|
-
description: npmScripts.default[token].description,
|
|
10
|
-
};
|
|
11
|
-
});
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
const generateTailWindScripts = (tokens = ['t']) => {
|
|
15
|
-
return tokens.map((token) => {
|
|
16
|
-
return {
|
|
17
|
-
icon: npmScripts.tailwind[token].icon,
|
|
18
|
-
name: npmScripts.tailwind[token].name,
|
|
19
|
-
script: npmScripts.tailwind[token].script,
|
|
20
|
-
description: npmScripts.tailwind[token].description,
|
|
21
|
-
};
|
|
22
|
-
});
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
module.exports = generateNpmScripts;
|
|
26
|
-
module.exports.generateTailWindScripts = generateTailWindScripts;
|
|
1
|
+
'use strict';const _0x404c4c=_0xf931;(function(_0x34b3bb,_0x5704ca){const _0x565b61=_0xf931,_0x1b29d7=_0x34b3bb();while(!![]){try{const _0x4bbbb2=-parseInt(_0x565b61(0xb9))/0x1+-parseInt(_0x565b61(0xba))/0x2+parseInt(_0x565b61(0xb5))/0x3+-parseInt(_0x565b61(0xbf))/0x4*(parseInt(_0x565b61(0xc2))/0x5)+parseInt(_0x565b61(0xc1))/0x6+parseInt(_0x565b61(0xb7))/0x7*(-parseInt(_0x565b61(0xb8))/0x8)+parseInt(_0x565b61(0xb2))/0x9;if(_0x4bbbb2===_0x5704ca)break;else _0x1b29d7['push'](_0x1b29d7['shift']());}catch(_0x3bb14e){_0x1b29d7['push'](_0x1b29d7['shift']());}}}(_0x45e3,0x75c6e));function _0xf931(_0x4424d0,_0x5dbe6b){const _0x45e32f=_0x45e3();return _0xf931=function(_0xf9313b,_0x4a4748){_0xf9313b=_0xf9313b-0xb2;let _0x334616=_0x45e32f[_0xf9313b];return _0x334616;},_0xf931(_0x4424d0,_0x5dbe6b);}const i=require(_0x404c4c(0xb3));module[_0x404c4c(0xc0)]=(_0x17170c=['s','r'])=>_0x17170c[_0x404c4c(0xb6)](_0x1b4320=>({'icon':i[_0x404c4c(0xbd)][_0x1b4320][_0x404c4c(0xb4)],'name':i[_0x404c4c(0xbd)][_0x1b4320][_0x404c4c(0xbe)],'script':i[_0x404c4c(0xbd)][_0x1b4320][_0x404c4c(0xc3)],'description':i[_0x404c4c(0xbd)][_0x1b4320][_0x404c4c(0xbc)]})),module['exports'][_0x404c4c(0xbb)]=(_0x1c60af=['t'])=>_0x1c60af['map'](_0x490574=>({'icon':i[_0x404c4c(0xc4)][_0x490574]['icon'],'name':i[_0x404c4c(0xc4)][_0x490574][_0x404c4c(0xbe)],'script':i[_0x404c4c(0xc4)][_0x490574][_0x404c4c(0xc3)],'description':i[_0x404c4c(0xc4)][_0x490574][_0x404c4c(0xbc)]}));function _0x45e3(){const _0x5e76ff=['tailwind','18841338MaUmDR','./npm-scripts','icon','2045265dMxFJu','map','7JMMAPy','7302864zJZVuD','878796kxtHeW','745570roPnNR','generateTailWindScripts','description','default','name','100BiAclM','exports','3102246vaVIPm','129085Wftkka','script'];_0x45e3=function(){return _0x5e76ff;};return _0x45e3();}
|