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.
Files changed (184) hide show
  1. package/README.md +97 -1
  2. package/build/index.js +1 -1
  3. package/config/index.js +1 -1
  4. package/create/index.js +1 -1
  5. package/create/utils/generate-app-config.js +1 -1
  6. package/create/utils/generate-npm-scripts.js +1 -1
  7. package/create/utils/get-options.js +1 -1
  8. package/create/utils/npm-scripts.js +1 -1
  9. package/deploy/index.js +1 -1
  10. package/deploy/utils/get-options.js +1 -1
  11. package/deploy/utils/request-upload.js +1 -1
  12. package/deploy/utils/upload-app.js +1 -1
  13. package/index.js +1 -1
  14. package/login/index.js +1 -1
  15. package/login/utils/get-options.js +1 -1
  16. package/login/utils/zalo-login.js +1 -1
  17. package/migrate/icons/update-icon-v3.js +1 -1
  18. package/migrate/index.js +1 -1
  19. package/migrate/utils/get-options.js +1 -1
  20. package/migrate/utils/migrate-react.js +1 -1
  21. package/package.json +3 -2
  22. package/start/frame/index.html +264 -254
  23. package/start/index.js +1 -1
  24. package/sync/index-to-app-config.js +1 -1
  25. package/sync/index.js +1 -1
  26. package/utils/axios.js +1 -1
  27. package/utils/check-update.js +1 -1
  28. package/utils/constants.js +1 -1
  29. package/utils/env.js +1 -1
  30. package/utils/error.js +1 -1
  31. package/utils/find-files-by-ext.js +1 -1
  32. package/utils/find-free-port.js +1 -1
  33. package/utils/fs-extra.js +1 -1
  34. package/utils/generate-pages-map.js +1 -1
  35. package/utils/get-app-info.js +1 -1
  36. package/utils/get-current-project.js +1 -1
  37. package/utils/get-ip.js +1 -1
  38. package/utils/log.js +1 -1
  39. package/utils/node-blob.js +1 -1
  40. package/utils/resumable.d.js +1 -1
  41. package/utils/resumable.js +1 -1
  42. package/utils/spinner.js +1 -1
  43. package/utils/tunnel.js +1 -1
  44. package/create/init-zmp-ui.js +0 -1
  45. package/create/templates/app-parameters.js +0 -17
  46. package/create/templates/common/css/icons.css +0 -60
  47. package/create/templates/common/icons/512x512.png +0 -0
  48. package/create/templates/common/icons/apple-touch-icon.png +0 -0
  49. package/create/templates/common/icons/favicon.png +0 -0
  50. package/create/templates/common/postcss.config.js +0 -5
  51. package/create/templates/common/splash-2732x2732.png +0 -0
  52. package/create/templates/common/tailwind/postcss.config.js +0 -5
  53. package/create/templates/common/tailwind/tailwind.config.js +0 -9
  54. package/create/templates/common/tailwind/tailwind.css +0 -3
  55. package/create/templates/common/webpack/build.js +0 -3
  56. package/create/templates/copy-assets.js +0 -1
  57. package/create/templates/core/babel.config.js +0 -11
  58. package/create/templates/core/copy-assets.js +0 -15
  59. package/create/templates/core/generate-home-page.js +0 -121
  60. package/create/templates/core/generate-root.js +0 -248
  61. package/create/templates/core/generate-routes.js +0 -129
  62. package/create/templates/core/generate-scripts.js +0 -45
  63. package/create/templates/core/pages/404.html +0 -20
  64. package/create/templates/core/pages/about.html +0 -26
  65. package/create/templates/core/pages/catalog.html +0 -40
  66. package/create/templates/core/pages/dynamic-route.html +0 -115
  67. package/create/templates/core/pages/form.html +0 -258
  68. package/create/templates/core/pages/left-page-1.html +0 -24
  69. package/create/templates/core/pages/left-page-2.html +0 -23
  70. package/create/templates/core/pages/product.html +0 -36
  71. package/create/templates/core/pages/request-and-load.html +0 -35
  72. package/create/templates/core/pages/settings.html +0 -252
  73. package/create/templates/create-folders.js +0 -1
  74. package/create/templates/generate-config-xml.js +0 -11
  75. package/create/templates/generate-index.js +0 -24
  76. package/create/templates/generate-manifest.js +0 -1
  77. package/create/templates/generate-recoil.js +0 -44
  78. package/create/templates/generate-routes.js +0 -1
  79. package/create/templates/generate-scripts.js +0 -1
  80. package/create/templates/generate-service-worker.js +0 -120
  81. package/create/templates/generate-store.js +0 -77
  82. package/create/templates/generate-styles.js +0 -56
  83. package/create/templates/generate-webpack-config.js +0 -253
  84. package/create/templates/generate-zmp-custom.js +0 -23
  85. package/create/templates/react/babel.config.js +0 -12
  86. package/create/templates/react/components/app-items.jsx +0 -44
  87. package/create/templates/react/components/navbar-back.jsx +0 -25
  88. package/create/templates/react/components/user-card.jsx +0 -18
  89. package/create/templates/react/copy-assets.js +0 -1
  90. package/create/templates/react/generate-home-page.js +0 -81
  91. package/create/templates/react/generate-root.js +0 -55
  92. package/create/templates/react/generate-routes.js +0 -1
  93. package/create/templates/react/generate-scripts.js +0 -42
  94. package/create/templates/react/pages/404.js +0 -19
  95. package/create/templates/react/pages/about.js +0 -44
  96. package/create/templates/react/pages/catalog.js +0 -98
  97. package/create/templates/react/pages/dynamic-route.js +0 -72
  98. package/create/templates/react/pages/form.js +0 -132
  99. package/create/templates/react/pages/index copy.js +0 -1
  100. package/create/templates/react/pages/index.js +0 -1
  101. package/create/templates/react/pages/settings.js +0 -62
  102. package/create/templates/react/pages/user.js +0 -37
  103. package/create/templates/react/vite.config.js +0 -11
  104. package/create/templates/react-typescript/_tsconfig.json +0 -33
  105. package/create/templates/react-typescript/components/app-items.js +0 -46
  106. package/create/templates/react-typescript/components/index.js +0 -1
  107. package/create/templates/react-typescript/components/navbar-back.js +0 -33
  108. package/create/templates/react-typescript/components/user-card.js +0 -25
  109. package/create/templates/react-typescript/copy-assets.js +0 -1
  110. package/create/templates/react-typescript/generate-home-page.js +0 -81
  111. package/create/templates/react-typescript/generate-root.js +0 -50
  112. package/create/templates/react-typescript/generate-routes.js +0 -1
  113. package/create/templates/react-typescript/generate-scripts.js +0 -42
  114. package/create/templates/react-typescript/pages/404.js +0 -19
  115. package/create/templates/react-typescript/pages/about.js +0 -44
  116. package/create/templates/react-typescript/pages/catalog.js +0 -98
  117. package/create/templates/react-typescript/pages/dynamic-route.js +0 -72
  118. package/create/templates/react-typescript/pages/form.js +0 -132
  119. package/create/templates/react-typescript/pages/index.js +0 -1
  120. package/create/templates/react-typescript/pages/settings.js +0 -62
  121. package/create/templates/react-typescript/pages/user.js +0 -37
  122. package/create/templates/react-typescript/vite.config.js +0 -21
  123. package/create/templates/svelte/babel.config.js +0 -10
  124. package/create/templates/svelte/copy-assets.js +0 -1
  125. package/create/templates/svelte/generate-home-page.js +0 -122
  126. package/create/templates/svelte/generate-root.js +0 -177
  127. package/create/templates/svelte/generate-routes.js +0 -76
  128. package/create/templates/svelte/generate-scripts.js +0 -31
  129. package/create/templates/svelte/pages/404.svelte +0 -10
  130. package/create/templates/svelte/pages/about.svelte +0 -16
  131. package/create/templates/svelte/pages/catalog.svelte +0 -31
  132. package/create/templates/svelte/pages/dynamic-route.svelte +0 -34
  133. package/create/templates/svelte/pages/form.svelte +0 -175
  134. package/create/templates/svelte/pages/left-page-1.svelte +0 -13
  135. package/create/templates/svelte/pages/left-page-2.svelte +0 -12
  136. package/create/templates/svelte/pages/product.svelte +0 -21
  137. package/create/templates/svelte/pages/request-and-load.svelte +0 -21
  138. package/create/templates/svelte/pages/settings.svelte +0 -175
  139. package/create/templates/vue/babel.config.js +0 -10
  140. package/create/templates/vue/components/header.vue +0 -28
  141. package/create/templates/vue/components/sun-and-moon.vue +0 -34
  142. package/create/templates/vue/copy-assets.js +0 -1
  143. package/create/templates/vue/generate-home-page.js +0 -50
  144. package/create/templates/vue/generate-root.js +0 -40
  145. package/create/templates/vue/generate-routes.js +0 -1
  146. package/create/templates/vue/generate-scripts.js +0 -46
  147. package/create/templates/vue/global-components.d.js +0 -1
  148. package/create/templates/vue/global-components.d.ts +0 -121
  149. package/create/templates/vue/icons/moon.svg +0 -3
  150. package/create/templates/vue/icons/sun.svg +0 -3
  151. package/create/templates/vue/pages/404.vue +0 -12
  152. package/create/templates/vue/pages/about.vue +0 -15
  153. package/create/templates/vue/pages/catalog.vue +0 -39
  154. package/create/templates/vue/pages/dynamic-route.vue +0 -34
  155. package/create/templates/vue/pages/form.vue +0 -162
  156. package/create/templates/vue/pages/left-page-1.vue +0 -14
  157. package/create/templates/vue/pages/left-page-2.vue +0 -11
  158. package/create/templates/vue/pages/product.vue +0 -31
  159. package/create/templates/vue/pages/request-and-load.vue +0 -25
  160. package/create/templates/vue/pages/settings.vue +0 -18
  161. package/create/templates/vue/vite.config.js +0 -11
  162. package/create/templates/zaui/_tsconfig.json +0 -33
  163. package/create/templates/zaui/babel.config.js +0 -12
  164. package/create/templates/zaui/components/user-card.jsx +0 -16
  165. package/create/templates/zaui/copy-assets.js +0 -1
  166. package/create/templates/zaui/generate-home-page.js +0 -91
  167. package/create/templates/zaui/generate-root.js +0 -33
  168. package/create/templates/zaui/generate-routes.js +0 -1
  169. package/create/templates/zaui/generate-scripts.js +0 -25
  170. package/create/templates/zaui/generate-user-card.js +0 -40
  171. package/create/templates/zaui/pages/about.js +0 -112
  172. package/create/templates/zaui/pages/form.js +0 -106
  173. package/create/templates/zaui/pages/index.js +0 -1
  174. package/create/templates/zaui/pages/user.js +0 -92
  175. package/create/templates/zaui/vite.config.js +0 -11
  176. package/create/utils/colors.js +0 -1
  177. package/create/utils/generate-gitignore.js +0 -1
  178. package/create/utils/generate-package-json.js +0 -1
  179. package/create/utils/generate-readme.js +0 -1
  180. package/create/utils/indent.js +0 -1
  181. package/create/utils/string.js +0 -1
  182. package/create/utils/styles-extension.js +0 -1
  183. package/create/utils/template-if.js +0 -1
  184. package/start/generate-hr-config.js +0 -1
@@ -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
- <meta name="theme-color" content="#007aff" />
15
- <meta name="format-detection" content="telephone=no" />
16
- <meta name="msapplication-tap-highlight" content="no" />
17
- <link rel="icon" href="/src/static/icons/favicon.png" />
18
- <link
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
- <title>Zalo Mini Program</title>
27
- <style>
28
- body {
29
- font-family: -apple-system, BlinkMacSystemFont, sans-serif;
30
- margin: 0px;
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
- #zalo-frame {
34
- width: 100%;
35
- height: calc(100vh - 74px);
36
- border: none;
37
- overflow: auto;
38
- cursor: grab;
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
- #zalo-frame.transparent-nav {
42
- height: calc(100vh - 30px);
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
- .wrapper-frame {
46
- width: 100%;
47
- height: 100vh;
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
- .status-bar {
54
- height: 30px;
55
- background-color: #0068ff;
56
- color: white;
57
- font-size: 13px;
58
- }
37
+ #zalo-frame.no-header.no-nav {
38
+ height: 100vh;
39
+ }
59
40
 
60
- .status-bar .right {
61
- float: right;
62
- padding: 6px;
63
- }
41
+ .wrapper-frame {
42
+ width: 100%;
43
+ height: 100vh;
44
+ background-color: black;
45
+ margin: auto;
46
+ overflow: hidden;
47
+ }
64
48
 
65
- .status-bar .left {
66
- float: left;
67
- padding: 6px;
68
- margin-left: 5px;
69
- }
49
+ .status-bar {
50
+ height: 30px;
51
+ background-color: #0068ff;
52
+ color: white;
53
+ font-size: 13px;
54
+ }
70
55
 
71
- .status-bar .right i {
72
- margin-right: 5px;
73
- }
56
+ .status-bar .right {
57
+ float: right;
58
+ padding: 6px;
59
+ }
74
60
 
75
- .header {
76
- position: relative;
77
- height: 32px;
78
- background-color: #0068ff;
79
- text-align: center;
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
- #right-buttons,
85
- #left-buttons {
86
- display: flex;
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
- #left-buttons {
100
- left: 6px;
101
- top: 6px;
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
- .text-white {
105
- color: white;
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
- .text-black {
109
- color: black;
110
- }
95
+ #left-buttons {
96
+ left: 6px;
97
+ top: 6px;
98
+ }
111
99
 
112
- #right-buttons i,
113
- #left-buttons i {
114
- min-width: 23px;
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
- #right-buttons i:first-child {
124
- border-right: 1px solid rgba(0, 0, 0, 0.1);
125
- }
104
+ .text-black {
105
+ color: black;
106
+ }
126
107
 
127
- .text-black #statusbar,
128
- .text-black #header,
129
- .text-black #left-buttons,
130
- .text-black #right-buttons {
131
- color: black;
132
- background-color: rgba(255, 255, 255, 0.6);
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
- .text-white #statusbar,
136
- .text-white #header,
137
- .text-white #left-buttons,
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
- .btn-none,
144
- .btn-back #btn-home,
145
- .btn-home #btn-back {
146
- display: none !important;
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
- .btn-both,
150
- .btn-back,
151
- .btn-back #btn-back,
152
- .btn-home,
153
- .btn-home #btn-home {
154
- display: flex !important;
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
- .btn-back.btn-home #btn-back {
158
- border-right: 1px solid rgba(0, 0, 0, 0.1);
159
- }
139
+ #statusbar.hidden {
140
+ display: none;
141
+ }
160
142
 
161
- .btn-back:not(.btn-home) {
162
- background-color: transparent !important;
163
- border: none !important;
164
- }
165
- </style>
166
- </head>
143
+ #statusbar.transparent {
144
+ background-color: transparent;
145
+ position: absolute;
146
+ width: 100%;
147
+ }
167
148
 
168
- <body>
169
- <div id="wrapper-frame" class="wrapper-frame">
170
- <div id="statusbar" class="status-bar">
171
- <div class="right">
172
- <i class="fas fa-wifi"></i>
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
- <div id="header" class="header">
179
- <div class="btn-none" id="left-buttons">
180
- <i id="btn-back" class="fas fa-chevron-left"></i>
181
- <i id="btn-home" class="fas fa-home"></i>
182
- </div>
183
- <span id="title"></span>
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 id="right-buttons">
186
- <i class="fas fa-ellipsis-h"></i>
187
- <i class="fas fa-power-off"></i>
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
- </body>
195
+ </div>
196
+ </body>
191
197
 
192
- <script>
193
- window.configLeftButton = function (type) {
194
- switch (type) {
195
- case 'none':
196
- document.getElementById('left-buttons').classList.remove('btn-home');
197
- document.getElementById('left-buttons').classList.remove('btn-back');
198
- document.getElementById('left-buttons').classList.add('btn-none');
199
- break;
200
- case 'home':
201
- document.getElementById('left-buttons').classList.remove('btn-none');
202
- document.getElementById('left-buttons').classList.remove('btn-back');
203
- document.getElementById('left-buttons').classList.add('btn-home');
204
- break;
205
- case 'back':
206
- document.getElementById('left-buttons').classList.remove('btn-none');
207
- document.getElementById('left-buttons').classList.remove('btn-home');
208
- document.getElementById('left-buttons').classList.add('btn-back');
209
- break;
210
- case 'both':
211
- document.getElementById('left-buttons').classList.remove('btn-none');
212
- document.getElementById('left-buttons').classList.add('btn-back');
213
- document.getElementById('left-buttons').classList.add('btn-home');
214
- default:
215
- break;
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
- function configTextColor(color) {
220
- if (color) {
221
- document
222
- .getElementById('wrapper-frame')
223
- .classList.add(color === 'white' ? 'text-white' : 'text-black');
224
- document
225
- .getElementById('wrapper-frame')
226
- .classList.remove(color === 'white' ? 'text-black' : 'text-white');
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
- function configTopBar(navColor, statusBarColor) {
230
- if (navColor) {
231
- document.getElementById('zalo-frame').classList.remove('transparent-nav')
232
- document.getElementById('header').style.backgroundColor = navColor;
233
- document.getElementById('statusbar').style.backgroundColor = navColor;
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
- function configTitle(title) {
242
- if (title) {
243
- document.getElementById('title').innerHTML = title;
244
- document.title = title;
245
- }
251
+ }
252
+ function configTitle(title) {
253
+ if (title) {
254
+ document.getElementById('title').innerHTML = title;
255
+ document.title = title;
246
256
  }
247
- window.addEventListener('message', function (event) {
248
- const { type, data } = event.data;
249
- switch (type) {
250
- case 'config-left-button':
251
- configLeftButton(data);
252
- break;
253
- case 'config-text-color':
254
- configTextColor(data);
255
- break;
256
- case 'config-top-bar':
257
- configTopBar(data.navColor, data.statusBarColor);
258
- break;
259
- case 'config-title':
260
- configTitle(data);
261
- break;
262
- case 'custom':
263
- eval(data);
264
- break;
265
- default:
266
- break;
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
- fetch(
270
- `${window.location.protocol}//${window.location.hostname}:${
271
- window.location.port - 1
272
- }/app-config.json`
273
- )
274
- .then((response) => response.json())
275
- .then((data) => {
276
- configTitle(data.app.title);
277
- configTopBar(data.app.headerColor, data.app.statusBarColor);
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();}