zmp-cli 3.15.7 → 3.15.9
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 +97 -1
- package/build/index.js +1 -1
- package/config/index.js +1 -1
- package/create/index.js +1 -1
- package/create/utils/generate-app-config.js +1 -1
- package/create/utils/generate-npm-scripts.js +1 -1
- package/create/utils/get-options.js +1 -1
- package/create/utils/npm-scripts.js +1 -1
- package/deploy/index.js +1 -1
- package/deploy/utils/get-options.js +1 -1
- package/deploy/utils/request-upload.js +1 -1
- package/deploy/utils/upload-app.js +1 -1
- package/index.js +1 -1
- package/login/index.js +1 -1
- package/login/utils/get-options.js +1 -1
- package/login/utils/zalo-login.js +1 -1
- package/migrate/icons/update-icon-v3.js +1 -1
- package/migrate/index.js +1 -1
- package/migrate/utils/get-options.js +1 -1
- package/migrate/utils/migrate-react.js +1 -1
- package/package.json +3 -2
- package/start/frame/index.html +264 -254
- package/start/index.js +1 -1
- package/sync/index-to-app-config.js +1 -1
- package/sync/index.js +1 -1
- package/utils/axios.js +1 -1
- package/utils/check-update.js +1 -1
- package/utils/constants.js +1 -1
- package/utils/env.js +1 -1
- package/utils/error.js +1 -1
- package/utils/find-files-by-ext.js +1 -1
- package/utils/find-free-port.js +1 -1
- package/utils/fs-extra.js +1 -1
- package/utils/generate-pages-map.js +1 -1
- package/utils/get-app-info.js +1 -1
- package/utils/get-current-project.js +1 -1
- package/utils/get-ip.js +1 -1
- package/utils/log.js +1 -1
- package/utils/node-blob.js +1 -1
- package/utils/resumable.d.js +1 -1
- package/utils/resumable.js +1 -1
- package/utils/spinner.js +1 -1
- package/utils/tunnel.js +1 -1
- package/create/init-zmp-ui.js +0 -1
- package/create/templates/app-parameters.js +0 -17
- 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 -3
- package/create/templates/copy-assets.js +0 -1
- package/create/templates/core/babel.config.js +0 -11
- package/create/templates/core/copy-assets.js +0 -15
- package/create/templates/core/generate-home-page.js +0 -121
- package/create/templates/core/generate-root.js +0 -248
- package/create/templates/core/generate-routes.js +0 -129
- package/create/templates/core/generate-scripts.js +0 -45
- 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 -1
- package/create/templates/generate-config-xml.js +0 -11
- package/create/templates/generate-index.js +0 -24
- package/create/templates/generate-manifest.js +0 -1
- package/create/templates/generate-recoil.js +0 -44
- package/create/templates/generate-routes.js +0 -1
- package/create/templates/generate-scripts.js +0 -1
- package/create/templates/generate-service-worker.js +0 -120
- package/create/templates/generate-store.js +0 -77
- package/create/templates/generate-styles.js +0 -56
- package/create/templates/generate-webpack-config.js +0 -253
- package/create/templates/generate-zmp-custom.js +0 -23
- 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 -1
- package/create/templates/react/generate-home-page.js +0 -81
- package/create/templates/react/generate-root.js +0 -55
- package/create/templates/react/generate-routes.js +0 -1
- package/create/templates/react/generate-scripts.js +0 -42
- package/create/templates/react/pages/404.js +0 -19
- package/create/templates/react/pages/about.js +0 -44
- package/create/templates/react/pages/catalog.js +0 -98
- package/create/templates/react/pages/dynamic-route.js +0 -72
- package/create/templates/react/pages/form.js +0 -132
- package/create/templates/react/pages/index copy.js +0 -1
- package/create/templates/react/pages/index.js +0 -1
- package/create/templates/react/pages/settings.js +0 -62
- package/create/templates/react/pages/user.js +0 -37
- 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 -46
- package/create/templates/react-typescript/components/index.js +0 -1
- package/create/templates/react-typescript/components/navbar-back.js +0 -33
- package/create/templates/react-typescript/components/user-card.js +0 -25
- package/create/templates/react-typescript/copy-assets.js +0 -1
- package/create/templates/react-typescript/generate-home-page.js +0 -81
- package/create/templates/react-typescript/generate-root.js +0 -50
- package/create/templates/react-typescript/generate-routes.js +0 -1
- package/create/templates/react-typescript/generate-scripts.js +0 -42
- package/create/templates/react-typescript/pages/404.js +0 -19
- package/create/templates/react-typescript/pages/about.js +0 -44
- package/create/templates/react-typescript/pages/catalog.js +0 -98
- package/create/templates/react-typescript/pages/dynamic-route.js +0 -72
- package/create/templates/react-typescript/pages/form.js +0 -132
- package/create/templates/react-typescript/pages/index.js +0 -1
- package/create/templates/react-typescript/pages/settings.js +0 -62
- package/create/templates/react-typescript/pages/user.js +0 -37
- 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 -1
- package/create/templates/svelte/generate-home-page.js +0 -122
- package/create/templates/svelte/generate-root.js +0 -177
- package/create/templates/svelte/generate-routes.js +0 -76
- package/create/templates/svelte/generate-scripts.js +0 -31
- 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 -1
- package/create/templates/vue/generate-home-page.js +0 -50
- package/create/templates/vue/generate-root.js +0 -40
- package/create/templates/vue/generate-routes.js +0 -1
- package/create/templates/vue/generate-scripts.js +0 -46
- package/create/templates/vue/global-components.d.js +0 -1
- 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 -1
- package/create/templates/zaui/generate-home-page.js +0 -91
- package/create/templates/zaui/generate-root.js +0 -33
- package/create/templates/zaui/generate-routes.js +0 -1
- package/create/templates/zaui/generate-scripts.js +0 -25
- package/create/templates/zaui/generate-user-card.js +0 -40
- package/create/templates/zaui/pages/about.js +0 -112
- package/create/templates/zaui/pages/form.js +0 -106
- package/create/templates/zaui/pages/index.js +0 -1
- package/create/templates/zaui/pages/user.js +0 -92
- package/create/templates/zaui/vite.config.js +0 -11
- package/create/utils/colors.js +0 -1
- package/create/utils/generate-gitignore.js +0 -1
- package/create/utils/generate-package-json.js +0 -1
- package/create/utils/generate-readme.js +0 -1
- package/create/utils/indent.js +0 -1
- package/create/utils/string.js +0 -1
- package/create/utils/styles-extension.js +0 -1
- package/create/utils/template-if.js +0 -1
- package/start/generate-hr-config.js +0 -1
package/start/frame/index.html
CHANGED
|
@@ -1,289 +1,299 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8" />
|
|
5
|
-
<meta
|
|
6
|
-
http-equiv="Content-Security-Policy"
|
|
7
|
-
content="default-src * 'self' 'unsafe-inline' 'unsafe-eval' data: gap: content:"
|
|
8
|
-
/>
|
|
9
|
-
<meta
|
|
10
|
-
name="viewport"
|
|
11
|
-
content="width=device-width, initial-scale=1, viewport-fit=cover"
|
|
12
|
-
/>
|
|
13
3
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
rel="stylesheet"
|
|
20
|
-
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css"
|
|
21
|
-
integrity="sha512-1ycn6IcaQQ40/MKBW2W4Rhis/DbILU74C1vSrLJxCq57o941Ym01SwNsOMqvEBFlcgUa6xLiPY/NS5R+E6ztJQ=="
|
|
22
|
-
crossorigin="anonymous"
|
|
23
|
-
referrerpolicy="no-referrer"
|
|
24
|
-
/>
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8" />
|
|
6
|
+
<meta http-equiv="Content-Security-Policy"
|
|
7
|
+
content="default-src * 'self' 'unsafe-inline' 'unsafe-eval' data: gap: content:" />
|
|
8
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
|
25
9
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
10
|
+
<meta name="theme-color" content="#007aff" />
|
|
11
|
+
<meta name="format-detection" content="telephone=no" />
|
|
12
|
+
<meta name="msapplication-tap-highlight" content="no" />
|
|
13
|
+
<link rel="icon" href="/src/static/icons/favicon.png" />
|
|
14
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css"
|
|
15
|
+
integrity="sha512-1ycn6IcaQQ40/MKBW2W4Rhis/DbILU74C1vSrLJxCq57o941Ym01SwNsOMqvEBFlcgUa6xLiPY/NS5R+E6ztJQ=="
|
|
16
|
+
crossorigin="anonymous" referrerpolicy="no-referrer" />
|
|
32
17
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
18
|
+
<title>Zalo Mini Program</title>
|
|
19
|
+
<style>
|
|
20
|
+
body {
|
|
21
|
+
font-family: -apple-system, BlinkMacSystemFont, sans-serif;
|
|
22
|
+
margin: 0px;
|
|
23
|
+
}
|
|
40
24
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
25
|
+
#zalo-frame {
|
|
26
|
+
width: 100%;
|
|
27
|
+
height: calc(100vh - 74px);
|
|
28
|
+
border: none;
|
|
29
|
+
overflow: auto;
|
|
30
|
+
cursor: grab;
|
|
31
|
+
}
|
|
44
32
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
background-color: black;
|
|
49
|
-
margin: auto;
|
|
50
|
-
overflow: hidden;
|
|
51
|
-
}
|
|
33
|
+
#zalo-frame.no-header {
|
|
34
|
+
height: calc(100vh - 30px);
|
|
35
|
+
}
|
|
52
36
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
color: white;
|
|
57
|
-
font-size: 13px;
|
|
58
|
-
}
|
|
37
|
+
#zalo-frame.no-header.no-nav {
|
|
38
|
+
height: 100vh;
|
|
39
|
+
}
|
|
59
40
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
41
|
+
.wrapper-frame {
|
|
42
|
+
width: 100%;
|
|
43
|
+
height: 100vh;
|
|
44
|
+
background-color: black;
|
|
45
|
+
margin: auto;
|
|
46
|
+
overflow: hidden;
|
|
47
|
+
}
|
|
64
48
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
49
|
+
.status-bar {
|
|
50
|
+
height: 30px;
|
|
51
|
+
background-color: #0068ff;
|
|
52
|
+
color: white;
|
|
53
|
+
font-size: 13px;
|
|
54
|
+
}
|
|
70
55
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
56
|
+
.status-bar .right {
|
|
57
|
+
float: right;
|
|
58
|
+
padding: 6px;
|
|
59
|
+
}
|
|
74
60
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
color: #fff;
|
|
81
|
-
padding-top: 12px;
|
|
82
|
-
}
|
|
61
|
+
.status-bar .left {
|
|
62
|
+
float: left;
|
|
63
|
+
padding: 6px;
|
|
64
|
+
margin-left: 5px;
|
|
65
|
+
}
|
|
83
66
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
justify-content: space-around;
|
|
88
|
-
align-items: center;
|
|
89
|
-
font-size: 14px;
|
|
90
|
-
position: absolute;
|
|
91
|
-
right: 6px;
|
|
92
|
-
top: 36px;
|
|
93
|
-
height: 28px;
|
|
94
|
-
width: max-content;
|
|
95
|
-
border-radius: 16px;
|
|
96
|
-
border: 1px solid rgba(0, 0, 0, 0.1);
|
|
97
|
-
}
|
|
67
|
+
.status-bar .right i {
|
|
68
|
+
margin-right: 5px;
|
|
69
|
+
}
|
|
98
70
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
71
|
+
.header {
|
|
72
|
+
position: relative;
|
|
73
|
+
height: 32px;
|
|
74
|
+
background-color: #0068ff;
|
|
75
|
+
text-align: center;
|
|
76
|
+
color: #fff;
|
|
77
|
+
padding-top: 12px;
|
|
78
|
+
}
|
|
103
79
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
80
|
+
#right-buttons,
|
|
81
|
+
#left-buttons {
|
|
82
|
+
display: flex;
|
|
83
|
+
justify-content: space-around;
|
|
84
|
+
align-items: center;
|
|
85
|
+
font-size: 14px;
|
|
86
|
+
position: absolute;
|
|
87
|
+
right: 6px;
|
|
88
|
+
top: 36px;
|
|
89
|
+
height: 28px;
|
|
90
|
+
width: max-content;
|
|
91
|
+
border-radius: 16px;
|
|
92
|
+
border: 1px solid rgba(0, 0, 0, 0.1);
|
|
93
|
+
}
|
|
107
94
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
95
|
+
#left-buttons {
|
|
96
|
+
left: 6px;
|
|
97
|
+
top: 6px;
|
|
98
|
+
}
|
|
111
99
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
width: 100%;
|
|
116
|
-
height: 100%;
|
|
117
|
-
justify-content: center;
|
|
118
|
-
align-items: center;
|
|
119
|
-
display: flex;
|
|
120
|
-
padding: 0 4px;
|
|
121
|
-
}
|
|
100
|
+
.text-white {
|
|
101
|
+
color: white;
|
|
102
|
+
}
|
|
122
103
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
104
|
+
.text-black {
|
|
105
|
+
color: black;
|
|
106
|
+
}
|
|
126
107
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
108
|
+
#right-buttons i,
|
|
109
|
+
#left-buttons i {
|
|
110
|
+
min-width: 23px;
|
|
111
|
+
width: 100%;
|
|
112
|
+
height: 100%;
|
|
113
|
+
justify-content: center;
|
|
114
|
+
align-items: center;
|
|
115
|
+
display: flex;
|
|
116
|
+
padding: 0 4px;
|
|
117
|
+
}
|
|
134
118
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
.text-white #right-buttons {
|
|
139
|
-
color: white;
|
|
140
|
-
background-color: rgba(0, 0, 0, 0.1);
|
|
141
|
-
}
|
|
119
|
+
#right-buttons i:first-child {
|
|
120
|
+
border-right: 1px solid rgba(0, 0, 0, 0.1);
|
|
121
|
+
}
|
|
142
122
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
123
|
+
.text-black #statusbar,
|
|
124
|
+
.text-black #header,
|
|
125
|
+
.text-black #left-buttons,
|
|
126
|
+
.text-black #right-buttons {
|
|
127
|
+
color: black;
|
|
128
|
+
background-color: rgba(255, 255, 255, 0.6);
|
|
129
|
+
}
|
|
148
130
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
131
|
+
.text-white #statusbar,
|
|
132
|
+
.text-white #header,
|
|
133
|
+
.text-white #left-buttons,
|
|
134
|
+
.text-white #right-buttons {
|
|
135
|
+
color: white;
|
|
136
|
+
background-color: rgba(0, 0, 0, 0.1);
|
|
137
|
+
}
|
|
156
138
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
139
|
+
#statusbar.hidden {
|
|
140
|
+
display: none;
|
|
141
|
+
}
|
|
160
142
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
</head>
|
|
143
|
+
#statusbar.transparent {
|
|
144
|
+
background-color: transparent;
|
|
145
|
+
position: absolute;
|
|
146
|
+
width: 100%;
|
|
147
|
+
}
|
|
167
148
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
<i class="fas fa-battery-full"></i>
|
|
174
|
-
</div>
|
|
175
|
-
<div class="left">12:00</div>
|
|
176
|
-
</div>
|
|
149
|
+
.btn-none,
|
|
150
|
+
.btn-back #btn-home,
|
|
151
|
+
.btn-home #btn-back {
|
|
152
|
+
display: none !important;
|
|
153
|
+
}
|
|
177
154
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
155
|
+
.btn-both,
|
|
156
|
+
.btn-back,
|
|
157
|
+
.btn-back #btn-back,
|
|
158
|
+
.btn-home,
|
|
159
|
+
.btn-home #btn-home {
|
|
160
|
+
display: flex !important;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.btn-back.btn-home #btn-back {
|
|
164
|
+
border-right: 1px solid rgba(0, 0, 0, 0.1);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.btn-back:not(.btn-home) {
|
|
168
|
+
background-color: transparent !important;
|
|
169
|
+
border: none !important;
|
|
170
|
+
}
|
|
171
|
+
</style>
|
|
172
|
+
</head>
|
|
173
|
+
|
|
174
|
+
<body>
|
|
175
|
+
<div id="wrapper-frame" class="wrapper-frame">
|
|
176
|
+
<div id="statusbar" class="status-bar">
|
|
177
|
+
<div class="right">
|
|
178
|
+
<i class="fas fa-wifi"></i>
|
|
179
|
+
<i class="fas fa-battery-full"></i>
|
|
184
180
|
</div>
|
|
185
|
-
<div
|
|
186
|
-
|
|
187
|
-
|
|
181
|
+
<div class="left">12:00</div>
|
|
182
|
+
</div>
|
|
183
|
+
|
|
184
|
+
<div id="header" class="header">
|
|
185
|
+
<div class="btn-none" id="left-buttons">
|
|
186
|
+
<i id="btn-back" class="fas fa-chevron-left"></i>
|
|
187
|
+
<i id="btn-home" class="fas fa-home"></i>
|
|
188
188
|
</div>
|
|
189
|
+
<span id="title"></span>
|
|
190
|
+
</div>
|
|
191
|
+
<div id="right-buttons">
|
|
192
|
+
<i class="fas fa-ellipsis-h"></i>
|
|
193
|
+
<i class="fas fa-power-off"></i>
|
|
189
194
|
</div>
|
|
190
|
-
</
|
|
195
|
+
</div>
|
|
196
|
+
</body>
|
|
191
197
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
198
|
+
<script>
|
|
199
|
+
window.configLeftButton = function (type) {
|
|
200
|
+
switch (type) {
|
|
201
|
+
case 'none':
|
|
202
|
+
document.getElementById('left-buttons').classList.remove('btn-home');
|
|
203
|
+
document.getElementById('left-buttons').classList.remove('btn-back');
|
|
204
|
+
document.getElementById('left-buttons').classList.add('btn-none');
|
|
205
|
+
break;
|
|
206
|
+
case 'home':
|
|
207
|
+
document.getElementById('left-buttons').classList.remove('btn-none');
|
|
208
|
+
document.getElementById('left-buttons').classList.remove('btn-back');
|
|
209
|
+
document.getElementById('left-buttons').classList.add('btn-home');
|
|
210
|
+
break;
|
|
211
|
+
case 'back':
|
|
212
|
+
document.getElementById('left-buttons').classList.remove('btn-none');
|
|
213
|
+
document.getElementById('left-buttons').classList.remove('btn-home');
|
|
214
|
+
document.getElementById('left-buttons').classList.add('btn-back');
|
|
215
|
+
break;
|
|
216
|
+
case 'both':
|
|
217
|
+
document.getElementById('left-buttons').classList.remove('btn-none');
|
|
218
|
+
document.getElementById('left-buttons').classList.add('btn-back');
|
|
219
|
+
document.getElementById('left-buttons').classList.add('btn-home');
|
|
220
|
+
default:
|
|
221
|
+
break;
|
|
222
|
+
}
|
|
223
|
+
};
|
|
218
224
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
225
|
+
function configTextColor(color) {
|
|
226
|
+
if (color) {
|
|
227
|
+
document
|
|
228
|
+
.getElementById('wrapper-frame')
|
|
229
|
+
.classList.add(color === 'white' ? 'text-white' : 'text-black');
|
|
230
|
+
document
|
|
231
|
+
.getElementById('wrapper-frame')
|
|
232
|
+
.classList.remove(color === 'white' ? 'text-black' : 'text-white');
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
function configTopBar(navColor, actionBarHidden, statusBarType) {
|
|
236
|
+
document.getElementById('header').style.backgroundColor = navColor;
|
|
237
|
+
document.getElementById('statusbar').style.backgroundColor = navColor;
|
|
238
|
+
if (actionBarHidden) {
|
|
239
|
+
document.getElementById('zalo-frame').classList.add('no-header');
|
|
240
|
+
document.getElementById('header').style.display = 'none';
|
|
241
|
+
} else {
|
|
242
|
+
document.getElementById('zalo-frame').classList.remove('no-header')
|
|
243
|
+
document.getElementById('header').style.display = 'block';
|
|
228
244
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
} else if (statusBarColor) {
|
|
235
|
-
document.getElementById('zalo-frame').classList.add('transparent-nav');
|
|
236
|
-
document.getElementById('header').style.display = 'none';
|
|
237
|
-
document.getElementById('statusbar').style.backgroundColor =
|
|
238
|
-
statusBarColor;
|
|
239
|
-
}
|
|
245
|
+
document.getElementById('statusbar').className = ["status-bar", statusBarType].join(" ");
|
|
246
|
+
if (statusBarType === "hidden" || statusBarType === 'transparent') {
|
|
247
|
+
document.getElementById('zalo-frame').classList.add('no-nav');
|
|
248
|
+
} else {
|
|
249
|
+
document.getElementById('zalo-frame').classList.remove('no-nav');
|
|
240
250
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
251
|
+
}
|
|
252
|
+
function configTitle(title) {
|
|
253
|
+
if (title) {
|
|
254
|
+
document.getElementById('title').innerHTML = title;
|
|
255
|
+
document.title = title;
|
|
246
256
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
257
|
+
}
|
|
258
|
+
window.addEventListener('message', function (event) {
|
|
259
|
+
const { type, data } = event.data;
|
|
260
|
+
switch (type) {
|
|
261
|
+
case 'config-left-button':
|
|
262
|
+
configLeftButton(data);
|
|
263
|
+
break;
|
|
264
|
+
case 'config-text-color':
|
|
265
|
+
configTextColor(data);
|
|
266
|
+
break;
|
|
267
|
+
case 'config-top-bar':
|
|
268
|
+
configTopBar(data.navColor, data.actionBarHidden, data.statusBar);
|
|
269
|
+
break;
|
|
270
|
+
case 'config-title':
|
|
271
|
+
configTitle(data);
|
|
272
|
+
break;
|
|
273
|
+
case 'custom':
|
|
274
|
+
eval(data);
|
|
275
|
+
break;
|
|
276
|
+
default:
|
|
277
|
+
break;
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
fetch(
|
|
281
|
+
`${window.location.protocol}//${window.location.hostname}:${window.location.port - 1
|
|
282
|
+
}/app-config.json`
|
|
283
|
+
)
|
|
284
|
+
.then((response) => response.json())
|
|
285
|
+
.then((data) => {
|
|
286
|
+
configTitle(data.app.title);
|
|
287
|
+
configTopBar(data.app.headerColor, data.app.actionBarHidden, data.app.statusBar);
|
|
288
|
+
configTextColor(data.app.textColor);
|
|
289
|
+
window.configLeftButton(data.app.leftButton);
|
|
268
290
|
});
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
configTextColor(data.app.textColor);
|
|
279
|
-
window.configLeftButton(data.app.leftButton);
|
|
280
|
-
});
|
|
281
|
-
const iframe = document.createElement('iframe');
|
|
282
|
-
iframe.id = 'zalo-frame';
|
|
283
|
-
iframe.src = `${window.location.protocol}//${window.location.hostname}:${
|
|
284
|
-
window.location.port - 1
|
|
285
|
-
}`;
|
|
286
|
-
iframe.allow = 'geolocation; microphone; camera; midi; encrypted-media;';
|
|
287
|
-
document.body.firstElementChild.appendChild(iframe);
|
|
288
|
-
</script>
|
|
289
|
-
</html>
|
|
291
|
+
const iframe = document.createElement('iframe');
|
|
292
|
+
iframe.id = 'zalo-frame';
|
|
293
|
+
iframe.src = `${window.location.protocol}//${window.location.hostname}:${window.location.port - 1
|
|
294
|
+
}${location.pathname}${location.search}${location.hash}`;
|
|
295
|
+
iframe.allow = 'geolocation; microphone; camera; midi; encrypted-media;';
|
|
296
|
+
document.body.firstElementChild.appendChild(iframe);
|
|
297
|
+
</script>
|
|
298
|
+
|
|
299
|
+
</html>
|
package/start/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';const _0x54c847=_0x573a;(function(_0x4f442c,_0xa7f2eb){const _0x1f27f8=_0x573a,_0x5df9b2=_0x4f442c();while(!![]){try{const _0x4d3c5c=-parseInt(_0x1f27f8(0x1ea))/0x1*(parseInt(_0x1f27f8(0x1cb))/0x2)+-parseInt(_0x1f27f8(0x1f8))/0x3+parseInt(_0x1f27f8(0x1d0))/0x4*(parseInt(_0x1f27f8(0x1b4))/0x5)+-parseInt(_0x1f27f8(0x1b7))/0x6+-parseInt(_0x1f27f8(0x1a9))/0x7+-parseInt(_0x1f27f8(0x20e))/0x8*(parseInt(_0x1f27f8(0x1b0))/0x9)+parseInt(_0x1f27f8(0x1ae))/0xa;if(_0x4d3c5c===_0xa7f2eb)break;else _0x5df9b2['push'](_0x5df9b2['shift']());}catch(_0x4d50b0){_0x5df9b2['push'](_0x5df9b2['shift']());}}}(_0x3078,0x246be));function _0x573a(_0x3d1c13,_0x1d6c25){const _0x3078b8=_0x3078();return _0x573a=function(_0x573a0b,_0x2c9648){_0x573a0b=_0x573a0b-0x1a6;let _0x1626df=_0x3078b8[_0x573a0b];return _0x1626df;},_0x573a(_0x3d1c13,_0x1d6c25);}const e=require(_0x54c847(0x1c8)),r=require('ora'),t=require(_0x54c847(0x1f2)),o=require(_0x54c847(0x216)),i=require(_0x54c847(0x204)),{createServer:n}=require(_0x54c847(0x1a7)),s=require('chii'),{hri:a}=require('human-readable-ids'),l=require(_0x54c847(0x1e9)),c=require(_0x54c847(0x1e1)),p=require('../utils/fs-extra'),d=require('../utils/fs-extra'),u=require(_0x54c847(0x212)),{openTunnel:g}=require(_0x54c847(0x1f1)),{deviceModeSetup:h}=require(_0x54c847(0x1ce)),{generateHrFromIndex:f}=require(_0x54c847(0x1d4)),m=r(_0x54c847(0x1ff));function _0x3078(){const _0x4220e5=['chalk','stop','isArray','90TszFFh','exit','devices','../utils/constants','reverse','8NDTQFt','random','yellow','/hr.config.json','./generate-hr-config','application/javascript','getEnv','localhost','deviceMode','listen','module','start','port','middlewares','spawn','stderr','server','../utils/env','text/javascript','setHeader','remote-debug-script','includes','readFileSync','/frame','httpServer','../config','2791lhvmYr','address','Trying\x20reverse\x20socket\x20connection','stringify','use','Access-Control-Allow-Origin','Can\x20not\x20start\x20remote\x20debug\x20server','../utils/tunnel','path','iosHostName','listJS','production','text','Scan\x20the\x20QR\x20code\x20with\x20Zalo\x20app:\x0a','817503AatXEk','vite.config.ts','end','logger','config','error','generate','Starting\x20mini\x20app...','/app-config.json','adb\x20reverse\x20error:\x20','wss','\x20browser.','log-symbols','join','\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(import.meta.hot)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20import.meta.hot.on(\x22vite:beforeFullReload\x22,\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.location.href\x20=\x20window.BACKUP_URL;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ZJSBridge.callCustomAction(\x22action.ma.menu.reload\x22,\x20{},\x20()\x20=>\x20{});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20\x22(skipping\x20full\x20reload)\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20import.meta.hot.on(\x27zmp:close\x27,\x20(data)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ZJSBridge.callCustomAction(\x22action.window.close\x22,\x20{},\x20()\x20=>\x20{});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20shownTip\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.onerror\x20=\x20function\x20(message,\x20url,\x20line,\x20column,\x20error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22An\x20uncaught\x20error\x20has\x20occurred,\x20but\x20the\x20detailed\x20error\x20message\x20cannot\x20be\x20displayed\x20due\x20to\x20the\x20cross-origin\x20policy.\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!shownTip)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22To\x20view\x20the\x20detailed\x20error\x20message,\x20you\x20can\x20try\x20one\x20of\x20the\x20following\x20methods:\x5cn\x5cn1.\x20Wrap\x20your\x20code\x20in\x20a\x20try-catch\x20block,\x20use\x20.catch\x20with\x20Promises,\x20or\x20use\x20<ErrorBoundary>\x20in\x20React\x20to\x20catch\x20the\x20detailed\x20error\x20object.\x5cn2.\x20Try\x20to\x20reproduce\x20the\x20issue\x20using\x20a\x20simulator.\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20shownTip\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x22[\x22\x20+\x20error.name\x20+\x20\x22]\x20\x22\x20+\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(error);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Error\x20starting\x20project','Chromium-based','/?env=TESTING_LOCAL&clientIp=','app-config.json','printUrls','Zalo\x20Mini\x20App\x20dev\x20server\x20is\x20running\x20at:\x0a','Remote\x20debugging\x20tool\x20is\x20running\x20at:\x20http://localhost:','136IDGJzB','TUNNEL_SERVER_HOST','mode','Content-Type','../utils/find-free-port','cwd','appId','application/json','qrcode-terminal','parse','vite','push','962122SeKzuS','vite.config.js','originalUrl','/src/app.js','child_process','6181550oSMaEh','adb','89415kcDrAO','data','https://','To\x20inspect\x20your\x20app,\x20open:\x20http://localhost:','681485qQJhYJ','zbrowser://h5.zdn.vn','bold','222780gJyOqH','headers','origin','(function\x20()\x20{\x20var\x20script\x20=\x20document.createElement(\x27script\x27);\x20script.src=\x27http://','hr-config-plugin','tcp:','existsSync','/target.js\x27;\x20document.body.appendChild(script);\x20})()','development','toString','previewOnZalo','info','green','frame','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20import\x20{\x20createHotContext\x20}\x20from\x20\x22/@vite/client\x22;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20import.meta.hot\x20=\x20createHotContext(\x22','writeFileSync','splice'];_0x3078=function(){return _0x4220e5;};return _0x3078();}module['exports']=async(_0x4faaf9={},_0x5683c1,{exitOnError:_0x5a4c1a=!0x0}={})=>{const _0x41c058=_0x54c847;_0x5683c1||(_0x5683c1={'statusStart'(){},'statusDone'(){},'statusError'(){},'text'(){},'error'(){}}),m[_0x41c058(0x1db)]();let _0x395d95=_0x4faaf9[_0x41c058(0x213)]||process[_0x41c058(0x213)](),_0x4cf538=_0x4faaf9[_0x41c058(0x214)]||c[_0x41c058(0x1d6)](l['env'][_0x41c058(0x214)]),_0x47b72b=_0x4faaf9[_0x41c058(0x1c1)],_0x2b6082=_0x4faaf9['ios'],_0x303c29=_0x4faaf9[_0x41c058(0x1f3)],_0x923711=_0x4faaf9[_0x41c058(0x1c4)],_0x4a33d8=_0x2b6082?_0x303c29:_0x41c058(0x1d7),_0x76cc17=_0x4faaf9[_0x41c058(0x1dc)],_0x1d8e5d=_0x76cc17-0x2,_0x44920e=_0x4faaf9[_0x41c058(0x210)]||(_0x47b72b?_0x41c058(0x1f5):_0x41c058(0x1bf)),_0x50bae3=_0x4faaf9[_0x41c058(0x1d8)];try{let _0xbed404,_0x3261e0,_0x216a25;if(_0x47b72b){let _0x1585ae=t[_0x41c058(0x205)](_0x395d95,'hr.config.json'),_0x16cc44={'id':_0x41c058(0x1e4),'innerHTML':_0x41c058(0x1ba)+_0x4a33d8+':'+_0x1d8e5d+_0x41c058(0x1be),'type':'text/javascript'};if(p['existsSync'](_0x1585ae)){let _0x4d3a04=p[_0x41c058(0x1e6)](_0x1585ae),_0x5c529d=JSON[_0x41c058(0x1a6)](_0x4d3a04),_0xb98f5a=_0x5c529d[_0x41c058(0x1f4)];Array[_0x41c058(0x1ca)](_0xb98f5a)||(_0xb98f5a=[]);let _0x40c416=_0xb98f5a['findIndex'](_0x5679e7=>_0x41c058(0x1e4)===_0x5679e7['id']);_0x40c416<=0x0||_0xb98f5a[_0x41c058(0x1c7)](_0x40c416,0x1),_0xb98f5a[_0x41c058(0x1a8)](_0x16cc44),_0x5c529d[_0x41c058(0x1f4)]=_0xb98f5a,p[_0x41c058(0x1c6)](_0x1585ae,JSON[_0x41c058(0x1ed)](_0x5c529d,void 0x0,0x4));}else p[_0x41c058(0x1c6)](_0x1585ae,JSON[_0x41c058(0x1ed)]({'listCSS':[],'listJS':[{'src':_0x41c058(0x1ac),'type':_0x41c058(0x1da),'async':!0x0},_0x16cc44]},void 0x0,0x4));}let _0x494d58=_0x41c058(0x1aa);if(d[_0x41c058(0x1bd)](t[_0x41c058(0x205)](_0x395d95,_0x41c058(0x1f9)))&&(_0x494d58='vite.config.ts'),_0x50bae3){_0x3261e0=a[_0x41c058(0x1d1)](),_0x216a25=await u(),s[_0x41c058(0x1db)]({'port':_0x216a25});let _0x4de27c=await g(_0x216a25),_0x445e59=_0x3261e0+'.'+h[_0x41c058(0x20f)];_0xbed404=await n({'configFile':t[_0x41c058(0x205)](_0x395d95,_0x494d58),'root':_0x395d95,'mode':_0x44920e,'define':{'process.env.NODE_ENV':JSON[_0x41c058(0x1ed)](_0x44920e),'process.env.previewOnZalo':!0x0},'server':{'port':_0x76cc17,'host':_0x41c058(0x1d7),'origin':_0x41c058(0x1b2)+_0x445e59,'base':'/zapps/'+_0x4cf538+'/','hmr':{'host':_0x445e59,'clientPort':0x1bb,'protocol':_0x41c058(0x202)},'https':!0x1},'plugins':[{'name':_0x41c058(0x1bb),'configureServer'(_0x369461){const _0x57d045=_0x41c058;let _0x3ed697=(_0x89cee0,_0x479dbf)=>{const _0x186508=_0x573a;['https://h5.zdn.vn',_0x186508(0x1b5)][_0x186508(0x1e5)](_0x89cee0['headers'][_0x186508(0x1b9)])&&_0x479dbf[_0x186508(0x1e3)](_0x186508(0x1ef),_0x89cee0[_0x186508(0x1b8)]['origin']);};_0x369461[_0x57d045(0x1dd)][_0x57d045(0x1ee)](_0x57d045(0x200),(_0x11f281,_0x4c4e00,_0x5a6896)=>_0x57d045(0x200)===_0x11f281[_0x57d045(0x1ab)]?(_0x4c4e00['setHeader'](_0x57d045(0x211),_0x57d045(0x1d5)),_0x3ed697(_0x11f281,_0x4c4e00),_0x4c4e00['end'](p[_0x57d045(0x1e6)](t[_0x57d045(0x205)](_0x395d95,_0x57d045(0x20a))))):_0x5a6896()),_0x369461[_0x57d045(0x1dd)]['use'](_0x57d045(0x1d3),async(_0x1adaf4,_0x47fa98)=>{const _0x178b48=_0x57d045;_0x47fa98[_0x178b48(0x1e3)](_0x178b48(0x211),_0x178b48(0x215)),_0x3ed697(_0x1adaf4,_0x47fa98);let _0x4a394a=await f('http://localhost:'+_0x4db3ef['httpServer'][_0x178b48(0x1eb)]()[_0x178b48(0x1dc)],{'chiiUrl':_0x4de27c,'exposedUrl':_0x178b48(0x1b2)+_0x3261e0+'.'+h['TUNNEL_SERVER_HOST']});_0x47fa98['end'](JSON['stringify'](_0x4a394a));}),_0x369461[_0x57d045(0x1dd)]['use']('/studio.module.js',async(_0x171dd8,_0x3a9b45)=>{const _0x16cd17=_0x57d045;_0x3a9b45[_0x16cd17(0x1e3)](_0x16cd17(0x211),_0x16cd17(0x1e2)),_0x3ed697(_0x171dd8,_0x3a9b45),_0x3a9b45[_0x16cd17(0x1fa)](_0x16cd17(0x1c5)+_0x3261e0+_0x16cd17(0x206));});}}]});}else _0xbed404=await n({'configFile':t['join'](_0x395d95,_0x494d58),'root':_0x395d95,'mode':_0x44920e,'define':{'process.env.NODE_ENV':JSON['stringify'](_0x44920e),'process.env.previewOnZalo':_0x47b72b},'server':{'port':_0x923711?_0x76cc17-0x1:_0x76cc17,..._0x47b72b?{'host':'0.0.0.0','hmr':{'host':_0x4a33d8,'protocol':'ws'}}:{}}});let _0x4db3ef=await _0xbed404[_0x41c058(0x1d9)]();if(_0x47b72b)try{s[_0x41c058(0x1db)]({'port':_0x1d8e5d}),_0x5683c1['text'](e[_0x41c058(0x1c3)](i[_0x41c058(0x1c2)]+'\x20'+e['bold'](_0x41c058(0x20d)+_0x1d8e5d))),_0x2b6082||require(_0x41c058(0x1ad))[_0x41c058(0x1de)](_0x41c058(0x1af),[_0x41c058(0x1cf),_0x41c058(0x1bc)+_0x1d8e5d,_0x41c058(0x1bc)+_0x1d8e5d])['stderr']['on']('data',function(_0x3e1cb5){const _0xf64454=_0x41c058;_0x5683c1[_0xf64454(0x1fd)](_0x3e1cb5['toString']());});}catch(_0x2e0608){_0x5683c1[_0x41c058(0x1f6)](i['info']+'\x20'+e['red'](_0x41c058(0x1f0)));}else{if(!_0x50bae3){if(_0x923711){let _0x4e7e9c=await n({'configFile':!0x1,'root':__dirname+_0x41c058(0x1e7),'server':{'port':_0x4db3ef[_0x41c058(0x1e8)]['address']()[_0x41c058(0x1dc)]+0x1,'strictPort':!0x0,'open':!0x0}});m[_0x41c058(0x1c9)](),await _0x4e7e9c['listen'](),(0x0,_0x4e7e9c[_0x41c058(0x1fc)][_0x41c058(0x1fb)][_0x41c058(0x1c2)])(e[_0x41c058(0x1c3)](_0x41c058(0x20c))),_0x4e7e9c[_0x41c058(0x20b)]();}else m[_0x41c058(0x1c9)](),(0x0,_0xbed404[_0x41c058(0x1fc)][_0x41c058(0x1fb)]['info'])(e[_0x41c058(0x1c3)](_0x41c058(0x20c))),_0xbed404[_0x41c058(0x20b)]();}}return m[_0x41c058(0x1c9)](),await new Promise(async()=>{const _0x5775af=_0x41c058;if(_0x47b72b){let _0x5c0e32='https://zalo.me/app/link/zapps/'+_0x4cf538+'/?env=TESTING_LOCAL&clientIp=http://'+_0x4a33d8+':'+_0x4db3ef[_0x5775af(0x1fc)][_0x5775af(0x1e0)]['port'];o[_0x5775af(0x1fe)](_0x5c0e32,{'small':!0x0},function(_0x57f17c){const _0xb736d2=_0x5775af;if(_0x5683c1[_0xb736d2(0x1f6)](e[_0xb736d2(0x1c3)](i[_0xb736d2(0x1c2)]+'\x20'+e[_0xb736d2(0x1b6)]('Zalo\x20Mini\x20App\x20dev\x20server\x20is\x20running\x20at:\x20'+_0x4a33d8+':'+_0x4db3ef[_0xb736d2(0x1fc)]['server'][_0xb736d2(0x1dc)]))),_0x5683c1['text'](e['green'](i[_0xb736d2(0x1c2)]+'\x20'+e[_0xb736d2(0x1b6)](_0xb736d2(0x1ec)))),_0x2b6082){let _0x4caf1a=i['info']+'\x20'+e[_0xb736d2(0x1b6)](_0xb736d2(0x1f7)+_0x57f17c);_0x5683c1[_0xb736d2(0x1f6)](_0x4caf1a);}else{let _0x5a7893=require(_0xb736d2(0x1ad))[_0xb736d2(0x1de)](_0xb736d2(0x1af),[_0xb736d2(0x1cf),'tcp:'+_0x4db3ef[_0xb736d2(0x1fc)][_0xb736d2(0x1e0)][_0xb736d2(0x1dc)],_0xb736d2(0x1bc)+_0x4db3ef[_0xb736d2(0x1fc)]['server'][_0xb736d2(0x1dc)]]);_0x5a7893[_0xb736d2(0x1df)]['on'](_0xb736d2(0x1b1),function(_0x2f4786){const _0x4c968d=_0xb736d2;_0x5683c1[_0x4c968d(0x1fd)](_0x2f4786[_0x4c968d(0x1c0)]());}),_0x5a7893['on'](_0xb736d2(0x1cc),function(_0x37683f){const _0x5ac969=_0xb736d2;if(0x0!==_0x37683f)throw Error(_0x5ac969(0x201)+_0x37683f);{let _0x1b6899=i['info']+'\x20'+e[_0x5ac969(0x1b6)]('Scan\x20the\x20QR\x20code\x20with\x20Zalo\x20app:\x0a'+_0x57f17c);_0x5683c1[_0x5ac969(0x1f6)](_0x1b6899),require('child_process')[_0x5ac969(0x1de)](_0x5ac969(0x1af),[_0x5ac969(0x1cd)])['stdout']['on'](_0x5ac969(0x1b1),function(_0x2f4a3f){const _0x16511b=_0x5ac969;_0x5683c1[_0x16511b(0x1f6)](''+e[_0x16511b(0x1d2)](_0x2f4a3f['toString']()));});}});}});}if(_0x50bae3){let _0x5b2c83=_0x4db3ef['httpServer'][_0x5775af(0x1eb)]()[_0x5775af(0x1dc)],_0x4adcc5=await g(_0x5b2c83,_0x3261e0),_0x1f5919='https://zalo.me/app/link/zapps/'+_0x4cf538+_0x5775af(0x209)+_0x4adcc5;o[_0x5775af(0x1fe)](_0x1f5919,{'small':!0x0},function(_0x57fe41){const _0x5e7818=_0x5775af;let _0x5368dc=i[_0x5e7818(0x1c2)]+'\x20'+e[_0x5e7818(0x1b6)]('Scan\x20the\x20QR\x20code\x20with\x20Zalo\x20app:\x0a'+_0x57fe41);_0x5683c1['text'](_0x5368dc),_0x5683c1[_0x5e7818(0x1f6)](i[_0x5e7818(0x1c2)]+'\x20'+e[_0x5e7818(0x1b6)](_0x5e7818(0x1b3)+_0x216a25+'\x20in\x20'+e[_0x5e7818(0x1c3)]('Google\x20Chrome')+'\x20or\x20a\x20'+e['blue'](_0x5e7818(0x208))+_0x5e7818(0x203)));});}});}catch(_0x309c9f){_0x5683c1['statusError'](_0x41c058(0x207)),_0x5683c1['error'](_0x309c9f),_0x5683c1['error'](_0x309c9f[_0x41c058(0x1df)]||_0x309c9f),_0x5a4c1a&&process[_0x41c058(0x1cc)](0x1);return;}};
|
|
1
|
+
'use strict';function _0x3cd5(_0x5de609,_0x248c62){const _0x26da60=_0x26da();return _0x3cd5=function(_0x3cd5e0,_0x4de1cc){_0x3cd5e0=_0x3cd5e0-0x1f4;let _0x2f22a1=_0x26da60[_0x3cd5e0];return _0x2f22a1;},_0x3cd5(_0x5de609,_0x248c62);}const _0x51b6b5=_0x3cd5;(function(_0x5f36ed,_0x26d911){const _0xca3776=_0x3cd5,_0x4166ac=_0x5f36ed();while(!![]){try{const _0x2ca563=parseInt(_0xca3776(0x218))/0x1+parseInt(_0xca3776(0x20d))/0x2+parseInt(_0xca3776(0x23c))/0x3*(parseInt(_0xca3776(0x1fe))/0x4)+-parseInt(_0xca3776(0x21b))/0x5+parseInt(_0xca3776(0x247))/0x6*(-parseInt(_0xca3776(0x238))/0x7)+parseInt(_0xca3776(0x219))/0x8+-parseInt(_0xca3776(0x244))/0x9*(parseInt(_0xca3776(0x208))/0xa);if(_0x2ca563===_0x26d911)break;else _0x4166ac['push'](_0x4166ac['shift']());}catch(_0x1d003c){_0x4166ac['push'](_0x4166ac['shift']());}}}(_0x26da,0x2290e));const e=require(_0x51b6b5(0x228)),r=require(_0x51b6b5(0x22b)),t=require('path'),i=require(_0x51b6b5(0x243)),o=require(_0x51b6b5(0x1f5)),n=require(_0x51b6b5(0x240)),{hri:s}=require(_0x51b6b5(0x1fb)),{startLocal:a,startDevice:p}=require(_0x51b6b5(0x24e)),l=require(_0x51b6b5(0x246)),c=require(_0x51b6b5(0x22c)),{errorExit:d}=require('../utils/error'),u=require(_0x51b6b5(0x20c)),f=require(_0x51b6b5(0x214)),{openTunnel:g}=require(_0x51b6b5(0x217)),$=r('Starting\x20mini\x20app...');module[_0x51b6b5(0x204)]=async(_0x4240a3={},_0x4096cd)=>{const _0x11e615=_0x51b6b5;let _0x3b4495;_0x4096cd||(_0x4096cd={'statusStart'(){},'statusDone'(){},'statusError'(){},'text'(){},'error'(){}}),$[_0x11e615(0x237)]();let _0xf75cf2=_0x4240a3[_0x11e615(0x231)]||process[_0x11e615(0x231)](),_0x445b34=_0x4240a3[_0x11e615(0x250)]||c[_0x11e615(0x216)](l['env'][_0x11e615(0x250)]),_0x323f5b=_0x4240a3[_0x11e615(0x23e)],_0x260876=_0x4240a3[_0x11e615(0x212)],_0xb100a7=_0x4240a3['iosHostName'],_0x5b120f=_0x4240a3[_0x11e615(0x235)],_0x58cd50=_0x260876?_0xb100a7:_0x11e615(0x21c),_0x5cc79a=_0x4240a3[_0x11e615(0x201)],_0x476670=_0x5cc79a-0x2,_0x497e0a=_0x4240a3[_0x11e615(0x249)]||require((_0x3b4495=l[_0x11e615(0x21e)][_0x11e615(0x203)],t[_0x11e615(0x23f)](_0xf75cf2,_0x3b4495))),_0x17e58f=_0x4240a3[_0x11e615(0x24f)];try{let _0x5ea9c9,_0x35c3b7,_0x26db27;if(_0x323f5b){let _0x2b42e9=t[_0x11e615(0x23f)](_0xf75cf2,_0x11e615(0x227)),_0x52a67c={'id':_0x11e615(0x23a),'innerHTML':_0x11e615(0x209)+_0x58cd50+':'+_0x476670+_0x11e615(0x20e),'type':_0x11e615(0x248)};if(u[_0x11e615(0x1f9)](_0x2b42e9)){let _0x2714fe=u[_0x11e615(0x230)](_0x2b42e9),_0x2a169c=JSON[_0x11e615(0x234)](_0x2714fe),_0x3b5054=_0x2a169c['listJS'];Array[_0x11e615(0x24a)](_0x3b5054)||(_0x3b5054=[]);let _0x2ec615=_0x3b5054[_0x11e615(0x21a)](_0x9c6439=>_0x11e615(0x23a)===_0x9c6439['id']);_0x2ec615<=0x0||_0x3b5054[_0x11e615(0x242)](_0x2ec615,0x1),_0x3b5054['push'](_0x52a67c),_0x2a169c[_0x11e615(0x233)]=_0x3b5054,u[_0x11e615(0x220)](_0x2b42e9,JSON[_0x11e615(0x24c)](_0x2a169c,void 0x0,0x4));}else u[_0x11e615(0x220)](_0x2b42e9,JSON[_0x11e615(0x24c)]({'listCSS':[],'listJS':[{'src':'/src/app.js','type':'module','async':!0x0},_0x52a67c]},void 0x0,0x4));}if(_0x17e58f){_0x5ea9c9=s[_0x11e615(0x226)](),_0x35c3b7=await f(),n['start']({'port':_0x35c3b7});let _0x530d75=await g(_0x35c3b7);_0x26db27=await p({'appId':_0x445b34,'chiiUrl':_0x530d75,'cwd':_0xf75cf2,'subdomain':_0x5ea9c9});}else{if(_0x26db27=await a({'cwd':_0xf75cf2,'appConfig':_0x497e0a,'config':{'host':_0x11e615(0x21f),'port':_0x5b120f?_0x5cc79a-0x1:_0x5cc79a},'hmr':_0x323f5b?{'host':_0x58cd50,'protocol':'ws'}:void 0x0}),_0x5b120f&&!_0x323f5b){let _0x3c8ab5=await _0x26db27[_0x11e615(0x210)][_0x11e615(0x1fd)]({'configFile':!0x1,'root':__dirname+_0x11e615(0x1f4),'server':{'port':_0x26db27[_0x11e615(0x1fa)][_0x11e615(0x252)][_0x11e615(0x23d)]()[_0x11e615(0x201)]+0x1,'strictPort':!0x0,'open':!0x0}});$['stop'](),await _0x3c8ab5[_0x11e615(0x22d)](),(0x0,_0x3c8ab5['config'][_0x11e615(0x232)][_0x11e615(0x1fc)])(e[_0x11e615(0x24d)](_0x11e615(0x223))),_0x3c8ab5['printUrls']();}else $[_0x11e615(0x22e)](),(0x0,_0x26db27['server'][_0x11e615(0x251)][_0x11e615(0x232)]['info'])(e[_0x11e615(0x24d)]('Zalo\x20Mini\x20App\x20dev\x20server\x20is\x20running\x20at:\x0a')),_0x26db27[_0x11e615(0x20a)][_0x11e615(0x239)]();}let _0x39f5f6=_0x26db27[_0x11e615(0x1fa)];if(_0x323f5b)try{n[_0x11e615(0x237)]({'port':_0x476670}),_0x4096cd[_0x11e615(0x213)](e[_0x11e615(0x24d)](o['info']+'\x20'+e['bold'](_0x11e615(0x229)+_0x476670))),_0x260876||require(_0x11e615(0x224))[_0x11e615(0x21d)](_0x11e615(0x241),[_0x11e615(0x221),_0x11e615(0x23b)+_0x476670,_0x11e615(0x23b)+_0x476670])[_0x11e615(0x202)]['on'](_0x11e615(0x20b),function(_0x3d0071){_0x4096cd['error'](_0x3d0071['toString']());});}catch(_0x7c3c65){_0x4096cd[_0x11e615(0x213)](o[_0x11e615(0x1fc)]+'\x20'+e[_0x11e615(0x22a)](_0x11e615(0x1ff)));}if($[_0x11e615(0x22e)](),_0x323f5b){let _0x39b347=_0x11e615(0x200)+_0x445b34+_0x11e615(0x205)+_0x58cd50+':'+_0x39f5f6[_0x11e615(0x251)][_0x11e615(0x20a)][_0x11e615(0x201)];i[_0x11e615(0x245)](_0x39b347,{'small':!0x0},function(_0xf6db32){const _0x263188=_0x11e615;if(_0x4096cd[_0x263188(0x213)](e[_0x263188(0x24d)](o[_0x263188(0x1fc)]+'\x20'+e[_0x263188(0x22f)]('Zalo\x20Mini\x20App\x20dev\x20server\x20is\x20running\x20at:\x20'+_0x58cd50+':'+_0x39f5f6[_0x263188(0x251)][_0x263188(0x20a)][_0x263188(0x201)]))),_0x4096cd[_0x263188(0x213)](e[_0x263188(0x24d)](o[_0x263188(0x1fc)]+'\x20'+e[_0x263188(0x22f)]('Trying\x20reverse\x20socket\x20connection'))),_0x260876){let _0x5e0724=o[_0x263188(0x1fc)]+'\x20'+e[_0x263188(0x22f)](_0x263188(0x24b)+_0xf6db32);_0x4096cd[_0x263188(0x213)](_0x5e0724);}else{let _0x21e843=require(_0x263188(0x224))[_0x263188(0x21d)](_0x263188(0x241),['reverse',_0x263188(0x23b)+_0x39f5f6[_0x263188(0x251)]['server'][_0x263188(0x201)],_0x263188(0x23b)+_0x39f5f6[_0x263188(0x251)]['server'][_0x263188(0x201)]]);_0x21e843[_0x263188(0x202)]['on'](_0x263188(0x20b),function(_0x327419){_0x4096cd['error'](_0x327419['toString']());}),_0x21e843['on'](_0x263188(0x207),function(_0x4d7e07){const _0x25e798=_0x263188;if(0x0!==_0x4d7e07)throw Error(_0x25e798(0x206)+_0x4d7e07);{let _0x3bdf11=o[_0x25e798(0x1fc)]+'\x20'+e[_0x25e798(0x22f)]('Scan\x20the\x20QR\x20code\x20with\x20Zalo\x20app:\x0a'+_0xf6db32);_0x4096cd['text'](_0x3bdf11),require(_0x25e798(0x224))[_0x25e798(0x21d)](_0x25e798(0x241),['devices'])['stdout']['on'](_0x25e798(0x20b),function(_0x69b9f5){const _0x3fcd0c=_0x25e798;_0x4096cd[_0x3fcd0c(0x213)](''+e['yellow'](_0x69b9f5[_0x3fcd0c(0x1f8)]()));});}});}});}if(_0x17e58f){let _0x319895=_0x39f5f6[_0x11e615(0x252)][_0x11e615(0x23d)]()[_0x11e615(0x201)],_0x42a8f3=await g(_0x319895,_0x5ea9c9),_0x51ca87=_0x11e615(0x200)+_0x445b34+_0x11e615(0x1f7)+_0x42a8f3;i['generate'](_0x51ca87,{'small':!0x0},function(_0x26ab6c){const _0x245fdf=_0x11e615;let _0x7093d7=o['info']+'\x20'+e['bold'](_0x245fdf(0x24b)+_0x26ab6c);_0x4096cd[_0x245fdf(0x213)](_0x7093d7),_0x4096cd[_0x245fdf(0x213)](o[_0x245fdf(0x1fc)]+'\x20'+e[_0x245fdf(0x22f)]('To\x20inspect\x20your\x20app,\x20open:\x20http://localhost:'+_0x35c3b7+_0x245fdf(0x20f)+e[_0x245fdf(0x24d)](_0x245fdf(0x225))+_0x245fdf(0x211)+e['blue'](_0x245fdf(0x215))+_0x245fdf(0x222)));});}return await new Promise(()=>{});}catch(_0x399a5f){$[_0x11e615(0x22e)](),_0x4096cd[_0x11e615(0x1f6)](_0x11e615(0x236)),d(_0x399a5f);return;}};function _0x26da(){const _0x448ade=['chii','adb','splice','qrcode-terminal','108KlKxfO','generate','../config','162Kktxpw','text/javascript','appConfigJson','isArray','Scan\x20the\x20QR\x20code\x20with\x20Zalo\x20app:\x0a','stringify','green','zmp-cli-core','deviceMode','appId','config','httpServer','/frame','log-symbols','error','/?env=TESTING_LOCAL&clientIp=','toString','existsSync','app','human-readable-ids','info','createServer','52644tPzIrs','Can\x20not\x20start\x20remote\x20debug\x20server','https://zalo.me/app/link/zapps/','port','stderr','appConfig','exports','/?env=TESTING_LOCAL&clientIp=http://','adb\x20reverse\x20error:\x20','exit','67370OcwUOD','(function\x20()\x20{\x20var\x20script\x20=\x20document.createElement(\x27script\x27);\x20script.src=\x27http://','server','data','../utils/fs-extra','331880zjmOYO','/target.js\x27;\x20document.body.appendChild(script);\x20})()','\x20in\x20','vite','\x20or\x20a\x20','ios','text','../utils/find-free-port','Chromium-based','getEnv','../utils/tunnel','40430HcWRHu','1157520Olvqby','findIndex','619050CYNwZu','localhost','spawn','filename','0.0.0.0','writeFileSync','reverse','\x20browser.','Zalo\x20Mini\x20App\x20dev\x20server\x20is\x20running\x20at:\x0a','child_process','Google\x20Chrome','random','hr.config.json','chalk','Remote\x20debugging\x20tool\x20is\x20running\x20at:\x20http://localhost:','red','ora','../utils/env','listen','stop','bold','readFileSync','cwd','logger','listJS','parse','frame','Error\x20starting\x20project','start','42196rrLClc','printUrls','remote-debug-script','tcp:','36sqarUL','address','previewOnZalo','join'];_0x26da=function(){return _0x448ade;};return _0x26da();}
|