clickgo 3.16.28 → 4.0.1

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 (301) hide show
  1. package/README.md +19 -8
  2. package/dist/app/{demo/res/video.mp4 → demo.cga} +0 -0
  3. package/dist/app/task.cga +0 -0
  4. package/dist/clickgo.d.ts +119 -13
  5. package/dist/control/arteditor.cgc +0 -0
  6. package/dist/control/box.cgc +0 -0
  7. package/dist/control/captcha.cgc +0 -0
  8. package/dist/control/common.cgc +0 -0
  9. package/dist/control/desc.cgc +0 -0
  10. package/dist/control/drawer.cgc +0 -0
  11. package/dist/control/echarts.cgc +0 -0
  12. package/dist/control/form.cgc +0 -0
  13. package/dist/control/iconview.cgc +0 -0
  14. package/dist/control/jodit.cgc +0 -0
  15. package/dist/control/map.cgc +0 -0
  16. package/dist/control/monaco.cgc +0 -0
  17. package/dist/control/mpegts.cgc +0 -0
  18. package/dist/control/nav.cgc +0 -0
  19. package/dist/control/novnc.cgc +0 -0
  20. package/dist/control/page.cgc +0 -0
  21. package/dist/control/pdf.cgc +0 -0
  22. package/dist/control/property.cgc +0 -0
  23. package/dist/control/qrcode.cgc +0 -0
  24. package/dist/control/table.cgc +0 -0
  25. package/dist/control/task.cgc +0 -0
  26. package/dist/control/tplink.cgc +0 -0
  27. package/dist/control/tuieditor.cgc +0 -0
  28. package/dist/control/tuiviewer.cgc +0 -0
  29. package/dist/control/tums.cgc +0 -0
  30. package/dist/control/xterm.cgc +0 -0
  31. package/dist/ext/tums-player/audio.wasm +0 -0
  32. package/dist/ext/tums-player/decoder.worker.js +129 -0
  33. package/dist/ext/tums-player/libaudio.js +1 -0
  34. package/dist/ext/tums-player/libaudio.wasm +0 -0
  35. package/dist/ext/tums-player/libffmpeg.js +1 -0
  36. package/dist/ext/tums-player/libffmpeg.wasm +0 -0
  37. package/dist/ext/tums-player/libs.worker.js +92 -0
  38. package/dist/ext/tums-player/tums-player.umd.min.js +35 -0
  39. package/dist/ext/tums-player/webgl.js +2 -0
  40. package/dist/ext/tums-player/webgl.worker.js +42 -0
  41. package/dist/global.css +1 -1
  42. package/dist/index.js +1 -175
  43. package/dist/theme/dark.cgt +0 -0
  44. package/dist/theme/light.cgt +0 -0
  45. package/package.json +16 -10
  46. package/dist/app/demo/app.js +0 -48
  47. package/dist/app/demo/config.json +0 -252
  48. package/dist/app/demo/form/control/alayout2/alayout2.js +0 -43
  49. package/dist/app/demo/form/control/alayout2/alayout2.xml +0 -16
  50. package/dist/app/demo/form/control/alert/alert.js +0 -43
  51. package/dist/app/demo/form/control/alert/alert.xml +0 -32
  52. package/dist/app/demo/form/control/arteditor/arteditor.js +0 -64
  53. package/dist/app/demo/form/control/arteditor/arteditor.xml +0 -12
  54. package/dist/app/demo/form/control/arteditor/img.js +0 -61
  55. package/dist/app/demo/form/control/arteditor/img.xml +0 -6
  56. package/dist/app/demo/form/control/block/block.css +0 -1
  57. package/dist/app/demo/form/control/block/block.scss +0 -17
  58. package/dist/app/demo/form/control/block/block.xml +0 -7
  59. package/dist/app/demo/form/control/box/box.js +0 -87
  60. package/dist/app/demo/form/control/box/box.xml +0 -23
  61. package/dist/app/demo/form/control/button/button.css +0 -1
  62. package/dist/app/demo/form/control/button/button.js +0 -51
  63. package/dist/app/demo/form/control/button/button.scss +0 -18
  64. package/dist/app/demo/form/control/button/button.xml +0 -133
  65. package/dist/app/demo/form/control/calendar/calendar.js +0 -62
  66. package/dist/app/demo/form/control/calendar/calendar.xml +0 -34
  67. package/dist/app/demo/form/control/captcha/captcha.js +0 -60
  68. package/dist/app/demo/form/control/captcha/captcha.xml +0 -10
  69. package/dist/app/demo/form/control/check/check.js +0 -54
  70. package/dist/app/demo/form/control/check/check.xml +0 -17
  71. package/dist/app/demo/form/control/circle/circle.xml +0 -36
  72. package/dist/app/demo/form/control/content/content.js +0 -47
  73. package/dist/app/demo/form/control/content/content.xml +0 -16
  74. package/dist/app/demo/form/control/date/date.js +0 -56
  75. package/dist/app/demo/form/control/date/date.xml +0 -28
  76. package/dist/app/demo/form/control/datepanel/datepanel.js +0 -63
  77. package/dist/app/demo/form/control/datepanel/datepanel.xml +0 -32
  78. package/dist/app/demo/form/control/daterange/daterange.js +0 -54
  79. package/dist/app/demo/form/control/daterange/daterange.xml +0 -22
  80. package/dist/app/demo/form/control/delete/delete.js +0 -47
  81. package/dist/app/demo/form/control/delete/delete.xml +0 -20
  82. package/dist/app/demo/form/control/desc/desc.js +0 -82
  83. package/dist/app/demo/form/control/desc/desc.xml +0 -44
  84. package/dist/app/demo/form/control/dialog/dialog.js +0 -49
  85. package/dist/app/demo/form/control/dialog/dialog.xml +0 -46
  86. package/dist/app/demo/form/control/drawer/drawer.js +0 -45
  87. package/dist/app/demo/form/control/drawer/drawer.xml +0 -34
  88. package/dist/app/demo/form/control/echarts/echarts.js +0 -137
  89. package/dist/app/demo/form/control/echarts/echarts.xml +0 -12
  90. package/dist/app/demo/form/control/empty/empty.js +0 -44
  91. package/dist/app/demo/form/control/empty/empty.xml +0 -9
  92. package/dist/app/demo/form/control/file/file.js +0 -60
  93. package/dist/app/demo/form/control/file/file.xml +0 -25
  94. package/dist/app/demo/form/control/flow/flow.css +0 -1
  95. package/dist/app/demo/form/control/flow/flow.js +0 -86
  96. package/dist/app/demo/form/control/flow/flow.scss +0 -18
  97. package/dist/app/demo/form/control/flow/flow.xml +0 -101
  98. package/dist/app/demo/form/control/form/form.css +0 -1
  99. package/dist/app/demo/form/control/form/form.js +0 -66
  100. package/dist/app/demo/form/control/form/form.scss +0 -5
  101. package/dist/app/demo/form/control/form/form.xml +0 -29
  102. package/dist/app/demo/form/control/grid/grid.js +0 -45
  103. package/dist/app/demo/form/control/grid/grid.xml +0 -27
  104. package/dist/app/demo/form/control/group/group.js +0 -50
  105. package/dist/app/demo/form/control/group/group.xml +0 -46
  106. package/dist/app/demo/form/control/hske/hske.js +0 -44
  107. package/dist/app/demo/form/control/hske/hske.xml +0 -19
  108. package/dist/app/demo/form/control/html/html.js +0 -70
  109. package/dist/app/demo/form/control/html/html.xml +0 -18
  110. package/dist/app/demo/form/control/icon/icon.xml +0 -49
  111. package/dist/app/demo/form/control/iconview/iconview.js +0 -174
  112. package/dist/app/demo/form/control/iconview/iconview.xml +0 -45
  113. package/dist/app/demo/form/control/img/img.xml +0 -26
  114. package/dist/app/demo/form/control/imgviewer/imgviewer.js +0 -46
  115. package/dist/app/demo/form/control/imgviewer/imgviewer.xml +0 -9
  116. package/dist/app/demo/form/control/jodit/jodit.js +0 -64
  117. package/dist/app/demo/form/control/jodit/jodit.xml +0 -24
  118. package/dist/app/demo/form/control/label/label.js +0 -51
  119. package/dist/app/demo/form/control/label/label.xml +0 -34
  120. package/dist/app/demo/form/control/layout/layout.js +0 -45
  121. package/dist/app/demo/form/control/layout/layout.xml +0 -18
  122. package/dist/app/demo/form/control/link/link.js +0 -42
  123. package/dist/app/demo/form/control/link/link.xml +0 -30
  124. package/dist/app/demo/form/control/list/list.css +0 -1
  125. package/dist/app/demo/form/control/list/list.js +0 -375
  126. package/dist/app/demo/form/control/list/list.scss +0 -7
  127. package/dist/app/demo/form/control/list/list.xml +0 -150
  128. package/dist/app/demo/form/control/loading/loading.xml +0 -8
  129. package/dist/app/demo/form/control/map/map.js +0 -206
  130. package/dist/app/demo/form/control/map/map.xml +0 -44
  131. package/dist/app/demo/form/control/marquee/marquee.js +0 -64
  132. package/dist/app/demo/form/control/marquee/marquee.xml +0 -33
  133. package/dist/app/demo/form/control/menu/menu.js +0 -56
  134. package/dist/app/demo/form/control/menu/menu.xml +0 -125
  135. package/dist/app/demo/form/control/monaco/monaco.js +0 -136
  136. package/dist/app/demo/form/control/monaco/monaco.xml +0 -28
  137. package/dist/app/demo/form/control/mpegts/mpegts.js +0 -70
  138. package/dist/app/demo/form/control/mpegts/mpegts.xml +0 -11
  139. package/dist/app/demo/form/control/nav/nav.js +0 -60
  140. package/dist/app/demo/form/control/nav/nav.xml +0 -106
  141. package/dist/app/demo/form/control/novnc/novnc.js +0 -75
  142. package/dist/app/demo/form/control/novnc/novnc.xml +0 -13
  143. package/dist/app/demo/form/control/page/page.js +0 -51
  144. package/dist/app/demo/form/control/page/page.xml +0 -22
  145. package/dist/app/demo/form/control/palette/palette.js +0 -46
  146. package/dist/app/demo/form/control/palette/palette.xml +0 -16
  147. package/dist/app/demo/form/control/panel/panel.js +0 -106
  148. package/dist/app/demo/form/control/panel/panel.xml +0 -16
  149. package/dist/app/demo/form/control/panel/test1.js +0 -84
  150. package/dist/app/demo/form/control/panel/test1.xml +0 -22
  151. package/dist/app/demo/form/control/panel/test2.xml +0 -4
  152. package/dist/app/demo/form/control/pdf/pdf.js +0 -65
  153. package/dist/app/demo/form/control/pdf/pdf.xml +0 -12
  154. package/dist/app/demo/form/control/pdf/test.pdf +0 -0
  155. package/dist/app/demo/form/control/progress/progress.js +0 -54
  156. package/dist/app/demo/form/control/progress/progress.xml +0 -9
  157. package/dist/app/demo/form/control/property/property.js +0 -166
  158. package/dist/app/demo/form/control/property/property.xml +0 -6
  159. package/dist/app/demo/form/control/qrcode/qrcode.js +0 -45
  160. package/dist/app/demo/form/control/qrcode/qrcode.xml +0 -13
  161. package/dist/app/demo/form/control/radio/radio.js +0 -51
  162. package/dist/app/demo/form/control/radio/radio.xml +0 -15
  163. package/dist/app/demo/form/control/scroll/scroll.js +0 -52
  164. package/dist/app/demo/form/control/scroll/scroll.xml +0 -38
  165. package/dist/app/demo/form/control/select/select.js +0 -273
  166. package/dist/app/demo/form/control/select/select.xml +0 -141
  167. package/dist/app/demo/form/control/setting/setting.xml +0 -11
  168. package/dist/app/demo/form/control/sgroup/sgroup.xml +0 -28
  169. package/dist/app/demo/form/control/step/step.js +0 -61
  170. package/dist/app/demo/form/control/step/step.xml +0 -16
  171. package/dist/app/demo/form/control/svg/svg.js +0 -61
  172. package/dist/app/demo/form/control/svg/svg.xml +0 -24
  173. package/dist/app/demo/form/control/switch/switch.js +0 -53
  174. package/dist/app/demo/form/control/switch/switch.xml +0 -29
  175. package/dist/app/demo/form/control/tab/tab.js +0 -102
  176. package/dist/app/demo/form/control/tab/tab.xml +0 -22
  177. package/dist/app/demo/form/control/table/table.js +0 -218
  178. package/dist/app/demo/form/control/table/table.xml +0 -97
  179. package/dist/app/demo/form/control/tag/tag.js +0 -44
  180. package/dist/app/demo/form/control/tag/tag.xml +0 -52
  181. package/dist/app/demo/form/control/text/text.js +0 -116
  182. package/dist/app/demo/form/control/text/text.xml +0 -70
  183. package/dist/app/demo/form/control/timeline/timeline.js +0 -43
  184. package/dist/app/demo/form/control/timeline/timeline.xml +0 -19
  185. package/dist/app/demo/form/control/tip/tip.js +0 -43
  186. package/dist/app/demo/form/control/tip/tip.xml +0 -42
  187. package/dist/app/demo/form/control/tplink/tplink.js +0 -74
  188. package/dist/app/demo/form/control/tplink/tplink.xml +0 -13
  189. package/dist/app/demo/form/control/tuieditor/tuieditor.js +0 -62
  190. package/dist/app/demo/form/control/tuieditor/tuieditor.xml +0 -22
  191. package/dist/app/demo/form/control/tuiviewer/tuiviewer.js +0 -45
  192. package/dist/app/demo/form/control/tuiviewer/tuiviewer.xml +0 -14
  193. package/dist/app/demo/form/control/uploader/uploader.js +0 -80
  194. package/dist/app/demo/form/control/uploader/uploader.xml +0 -15
  195. package/dist/app/demo/form/control/vflow/vflow.css +0 -1
  196. package/dist/app/demo/form/control/vflow/vflow.js +0 -101
  197. package/dist/app/demo/form/control/vflow/vflow.scss +0 -22
  198. package/dist/app/demo/form/control/vflow/vflow.xml +0 -89
  199. package/dist/app/demo/form/control/video/video.js +0 -47
  200. package/dist/app/demo/form/control/video/video.xml +0 -14
  201. package/dist/app/demo/form/control/web/web.js +0 -43
  202. package/dist/app/demo/form/control/web/web.xml +0 -4
  203. package/dist/app/demo/form/control/xterm/xterm.js +0 -100
  204. package/dist/app/demo/form/control/xterm/xterm.xml +0 -6
  205. package/dist/app/demo/form/event/form/form.css +0 -1
  206. package/dist/app/demo/form/event/form/form.js +0 -169
  207. package/dist/app/demo/form/event/form/form.scss +0 -24
  208. package/dist/app/demo/form/event/form/form.xml +0 -16
  209. package/dist/app/demo/form/event/other/other.js +0 -78
  210. package/dist/app/demo/form/event/other/other.xml +0 -5
  211. package/dist/app/demo/form/event/screen/screen.js +0 -86
  212. package/dist/app/demo/form/event/screen/screen.xml +0 -9
  213. package/dist/app/demo/form/event/task/task.js +0 -96
  214. package/dist/app/demo/form/event/task/task.xml +0 -20
  215. package/dist/app/demo/form/main.css +0 -1
  216. package/dist/app/demo/form/main.js +0 -515
  217. package/dist/app/demo/form/main.scss +0 -9
  218. package/dist/app/demo/form/main.xml +0 -163
  219. package/dist/app/demo/form/method/acontrol/acontrol.js +0 -42
  220. package/dist/app/demo/form/method/acontrol/acontrol.xml +0 -5
  221. package/dist/app/demo/form/method/aform/aform.js +0 -104
  222. package/dist/app/demo/form/method/aform/aform.xml +0 -60
  223. package/dist/app/demo/form/method/aform/sd.js +0 -47
  224. package/dist/app/demo/form/method/aform/sd.xml +0 -7
  225. package/dist/app/demo/form/method/core/core.js +0 -86
  226. package/dist/app/demo/form/method/core/core.xml +0 -23
  227. package/dist/app/demo/form/method/dom/dom.css +0 -1
  228. package/dist/app/demo/form/method/dom/dom.js +0 -228
  229. package/dist/app/demo/form/method/dom/dom.scss +0 -10
  230. package/dist/app/demo/form/method/dom/dom.xml +0 -76
  231. package/dist/app/demo/form/method/form/form.js +0 -244
  232. package/dist/app/demo/form/method/form/form.xml +0 -74
  233. package/dist/app/demo/form/method/form/test.xml +0 -5
  234. package/dist/app/demo/form/method/fs/fs.js +0 -209
  235. package/dist/app/demo/form/method/fs/fs.xml +0 -18
  236. package/dist/app/demo/form/method/fs/text.js +0 -48
  237. package/dist/app/demo/form/method/fs/text.xml +0 -3
  238. package/dist/app/demo/form/method/native/native.js +0 -100
  239. package/dist/app/demo/form/method/native/native.xml +0 -22
  240. package/dist/app/demo/form/method/storage/storage.js +0 -77
  241. package/dist/app/demo/form/method/storage/storage.xml +0 -18
  242. package/dist/app/demo/form/method/system/system.js +0 -63
  243. package/dist/app/demo/form/method/system/system.xml +0 -14
  244. package/dist/app/demo/form/method/task/locale1.json +0 -3
  245. package/dist/app/demo/form/method/task/locale2.json +0 -3
  246. package/dist/app/demo/form/method/task/task.js +0 -177
  247. package/dist/app/demo/form/method/task/task.xml +0 -61
  248. package/dist/app/demo/form/method/theme/theme.js +0 -92
  249. package/dist/app/demo/form/method/theme/theme.xml +0 -12
  250. package/dist/app/demo/form/method/tool/tool.js +0 -122
  251. package/dist/app/demo/form/method/tool/tool.xml +0 -40
  252. package/dist/app/demo/form/method/zip/zip.js +0 -126
  253. package/dist/app/demo/form/method/zip/zip.xml +0 -12
  254. package/dist/app/demo/form/solution/backpanel/backpanel.js +0 -76
  255. package/dist/app/demo/form/solution/backpanel/backpanel.xml +0 -31
  256. package/dist/app/demo/global.css +0 -3
  257. package/dist/app/demo/res/custombtn.cgc +0 -0
  258. package/dist/app/demo/res/icon.svg +0 -5
  259. package/dist/app/demo/res/img.jpg +0 -0
  260. package/dist/app/demo/res/marker.svg +0 -5
  261. package/dist/app/demo/res/r-1.svg +0 -32
  262. package/dist/app/demo/res/r-2.svg +0 -38
  263. package/dist/app/demo/res/sql.svg +0 -25
  264. package/dist/app/demo/res/txt.svg +0 -21
  265. package/dist/app/demo/res/zip.svg +0 -21
  266. package/dist/app/task/app.js +0 -46
  267. package/dist/app/task/config.json +0 -29
  268. package/dist/app/task/form/bar/bar.js +0 -406
  269. package/dist/app/task/form/bar/bar.xml +0 -46
  270. package/dist/app/task/form/desktop/desktop.xml +0 -1
  271. package/dist/app/task/locale/en.json +0 -11
  272. package/dist/app/task/locale/ja.json +0 -11
  273. package/dist/app/task/locale/sc.json +0 -11
  274. package/dist/app/task/locale/tc.json +0 -11
  275. package/dist/clickgo.js +0 -109
  276. package/dist/index.d.ts +0 -55
  277. package/dist/lib/control.d.ts +0 -53
  278. package/dist/lib/control.js +0 -584
  279. package/dist/lib/core.d.ts +0 -47
  280. package/dist/lib/core.js +0 -1005
  281. package/dist/lib/dom.d.ts +0 -75
  282. package/dist/lib/dom.js +0 -2147
  283. package/dist/lib/form.d.ts +0 -222
  284. package/dist/lib/form.js +0 -2961
  285. package/dist/lib/fs.d.ts +0 -35
  286. package/dist/lib/fs.js +0 -1183
  287. package/dist/lib/native.d.ts +0 -43
  288. package/dist/lib/native.js +0 -197
  289. package/dist/lib/storage.d.ts +0 -6
  290. package/dist/lib/storage.js +0 -215
  291. package/dist/lib/task.d.ts +0 -32
  292. package/dist/lib/task.js +0 -1831
  293. package/dist/lib/theme.d.ts +0 -8
  294. package/dist/lib/theme.js +0 -176
  295. package/dist/lib/tool.d.ts +0 -122
  296. package/dist/lib/tool.js +0 -1021
  297. package/dist/lib/zip.d.ts +0 -40
  298. package/dist/lib/zip.js +0 -382
  299. package/dist/theme/blue.cgt +0 -0
  300. package/dist/theme/byterun.cgt +0 -0
  301. package/types/index.d.ts +0 -1374
package/dist/lib/fs.js DELETED
@@ -1,1183 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.mount = mount;
37
- exports.unmount = unmount;
38
- exports.getContent = getContent;
39
- exports.putContent = putContent;
40
- exports.readLink = readLink;
41
- exports.symlink = symlink;
42
- exports.unlink = unlink;
43
- exports.stats = stats;
44
- exports.isDir = isDir;
45
- exports.isFile = isFile;
46
- exports.mkdir = mkdir;
47
- exports.rmdir = rmdir;
48
- exports.rmdirDeep = rmdirDeep;
49
- exports.chmod = chmod;
50
- exports.rename = rename;
51
- exports.readDir = readDir;
52
- exports.copyFolder = copyFolder;
53
- exports.copyFile = copyFile;
54
- const tool = __importStar(require("./tool"));
55
- const task = __importStar(require("./task"));
56
- const form = __importStar(require("./form"));
57
- const core = __importStar(require("./core"));
58
- const native = __importStar(require("./native"));
59
- const clickgoFiles = ['/app/', '/app/demo/', '/app/demo/app.js', '/app/demo/config.json', '/app/demo/form/', '/app/demo/form/control/', '/app/demo/form/control/alayout2/', '/app/demo/form/control/alayout2/alayout2.js', '/app/demo/form/control/alayout2/alayout2.xml', '/app/demo/form/control/alert/', '/app/demo/form/control/alert/alert.js', '/app/demo/form/control/alert/alert.xml', '/app/demo/form/control/arteditor/', '/app/demo/form/control/arteditor/arteditor.js', '/app/demo/form/control/arteditor/arteditor.xml', '/app/demo/form/control/arteditor/img.js', '/app/demo/form/control/arteditor/img.xml', '/app/demo/form/control/block/', '/app/demo/form/control/block/block.css', '/app/demo/form/control/block/block.xml', '/app/demo/form/control/box/', '/app/demo/form/control/box/box.js', '/app/demo/form/control/box/box.xml', '/app/demo/form/control/button/', '/app/demo/form/control/button/button.css', '/app/demo/form/control/button/button.js', '/app/demo/form/control/button/button.xml', '/app/demo/form/control/calendar/', '/app/demo/form/control/calendar/calendar.js', '/app/demo/form/control/calendar/calendar.xml', '/app/demo/form/control/captcha/', '/app/demo/form/control/captcha/captcha.js', '/app/demo/form/control/captcha/captcha.xml', '/app/demo/form/control/check/', '/app/demo/form/control/check/check.js', '/app/demo/form/control/check/check.xml', '/app/demo/form/control/circle/', '/app/demo/form/control/circle/circle.xml', '/app/demo/form/control/content/', '/app/demo/form/control/content/content.js', '/app/demo/form/control/content/content.xml', '/app/demo/form/control/date/', '/app/demo/form/control/date/date.js', '/app/demo/form/control/date/date.xml', '/app/demo/form/control/datepanel/', '/app/demo/form/control/datepanel/datepanel.js', '/app/demo/form/control/datepanel/datepanel.xml', '/app/demo/form/control/daterange/', '/app/demo/form/control/daterange/daterange.js', '/app/demo/form/control/daterange/daterange.xml', '/app/demo/form/control/delete/', '/app/demo/form/control/delete/delete.js', '/app/demo/form/control/delete/delete.xml', '/app/demo/form/control/desc/', '/app/demo/form/control/desc/desc.js', '/app/demo/form/control/desc/desc.xml', '/app/demo/form/control/dialog/', '/app/demo/form/control/dialog/dialog.js', '/app/demo/form/control/dialog/dialog.xml', '/app/demo/form/control/drawer/', '/app/demo/form/control/drawer/drawer.js', '/app/demo/form/control/drawer/drawer.xml', '/app/demo/form/control/echarts/', '/app/demo/form/control/echarts/echarts.js', '/app/demo/form/control/echarts/echarts.xml', '/app/demo/form/control/empty/', '/app/demo/form/control/empty/empty.js', '/app/demo/form/control/empty/empty.xml', '/app/demo/form/control/file/', '/app/demo/form/control/file/file.js', '/app/demo/form/control/file/file.xml', '/app/demo/form/control/flow/', '/app/demo/form/control/flow/flow.css', '/app/demo/form/control/flow/flow.js', '/app/demo/form/control/flow/flow.xml', '/app/demo/form/control/form/', '/app/demo/form/control/form/form.css', '/app/demo/form/control/form/form.js', '/app/demo/form/control/form/form.xml', '/app/demo/form/control/grid/', '/app/demo/form/control/grid/grid.js', '/app/demo/form/control/grid/grid.xml', '/app/demo/form/control/group/', '/app/demo/form/control/group/group.js', '/app/demo/form/control/group/group.xml', '/app/demo/form/control/hske/', '/app/demo/form/control/hske/hske.js', '/app/demo/form/control/hske/hske.xml', '/app/demo/form/control/html/', '/app/demo/form/control/html/html.js', '/app/demo/form/control/html/html.xml', '/app/demo/form/control/icon/', '/app/demo/form/control/icon/icon.xml', '/app/demo/form/control/iconview/', '/app/demo/form/control/iconview/iconview.js', '/app/demo/form/control/iconview/iconview.xml', '/app/demo/form/control/img/', '/app/demo/form/control/img/img.xml', '/app/demo/form/control/imgviewer/', '/app/demo/form/control/imgviewer/imgviewer.js', '/app/demo/form/control/imgviewer/imgviewer.xml', '/app/demo/form/control/jodit/', '/app/demo/form/control/jodit/jodit.js', '/app/demo/form/control/jodit/jodit.xml', '/app/demo/form/control/label/', '/app/demo/form/control/label/label.js', '/app/demo/form/control/label/label.xml', '/app/demo/form/control/layout/', '/app/demo/form/control/layout/layout.js', '/app/demo/form/control/layout/layout.xml', '/app/demo/form/control/link/', '/app/demo/form/control/link/link.js', '/app/demo/form/control/link/link.xml', '/app/demo/form/control/list/', '/app/demo/form/control/list/list.css', '/app/demo/form/control/list/list.js', '/app/demo/form/control/list/list.xml', '/app/demo/form/control/loading/', '/app/demo/form/control/loading/loading.xml', '/app/demo/form/control/map/', '/app/demo/form/control/map/map.js', '/app/demo/form/control/map/map.xml', '/app/demo/form/control/marquee/', '/app/demo/form/control/marquee/marquee.js', '/app/demo/form/control/marquee/marquee.xml', '/app/demo/form/control/menu/', '/app/demo/form/control/menu/menu.js', '/app/demo/form/control/menu/menu.xml', '/app/demo/form/control/monaco/', '/app/demo/form/control/monaco/monaco.js', '/app/demo/form/control/monaco/monaco.xml', '/app/demo/form/control/mpegts/', '/app/demo/form/control/mpegts/mpegts.js', '/app/demo/form/control/mpegts/mpegts.xml', '/app/demo/form/control/nav/', '/app/demo/form/control/nav/nav.js', '/app/demo/form/control/nav/nav.xml', '/app/demo/form/control/novnc/', '/app/demo/form/control/novnc/novnc.js', '/app/demo/form/control/novnc/novnc.xml', '/app/demo/form/control/page/', '/app/demo/form/control/page/page.js', '/app/demo/form/control/page/page.xml', '/app/demo/form/control/palette/', '/app/demo/form/control/palette/palette.js', '/app/demo/form/control/palette/palette.xml', '/app/demo/form/control/panel/', '/app/demo/form/control/panel/panel.js', '/app/demo/form/control/panel/panel.xml', '/app/demo/form/control/panel/test1.js', '/app/demo/form/control/panel/test1.xml', '/app/demo/form/control/panel/test2.xml', '/app/demo/form/control/pdf/', '/app/demo/form/control/pdf/pdf.js', '/app/demo/form/control/pdf/pdf.xml', '/app/demo/form/control/pdf/test.pdf', '/app/demo/form/control/progress/', '/app/demo/form/control/progress/progress.js', '/app/demo/form/control/progress/progress.xml', '/app/demo/form/control/property/', '/app/demo/form/control/property/property.js', '/app/demo/form/control/property/property.xml', '/app/demo/form/control/qrcode/', '/app/demo/form/control/qrcode/qrcode.js', '/app/demo/form/control/qrcode/qrcode.xml', '/app/demo/form/control/radio/', '/app/demo/form/control/radio/radio.js', '/app/demo/form/control/radio/radio.xml', '/app/demo/form/control/scroll/', '/app/demo/form/control/scroll/scroll.js', '/app/demo/form/control/scroll/scroll.xml', '/app/demo/form/control/select/', '/app/demo/form/control/select/select.js', '/app/demo/form/control/select/select.xml', '/app/demo/form/control/setting/', '/app/demo/form/control/setting/setting.xml', '/app/demo/form/control/sgroup/', '/app/demo/form/control/sgroup/sgroup.xml', '/app/demo/form/control/step/', '/app/demo/form/control/step/step.js', '/app/demo/form/control/step/step.xml', '/app/demo/form/control/svg/', '/app/demo/form/control/svg/svg.js', '/app/demo/form/control/svg/svg.xml', '/app/demo/form/control/switch/', '/app/demo/form/control/switch/switch.js', '/app/demo/form/control/switch/switch.xml', '/app/demo/form/control/tab/', '/app/demo/form/control/tab/tab.js', '/app/demo/form/control/tab/tab.xml', '/app/demo/form/control/table/', '/app/demo/form/control/table/table.js', '/app/demo/form/control/table/table.xml', '/app/demo/form/control/tag/', '/app/demo/form/control/tag/tag.js', '/app/demo/form/control/tag/tag.xml', '/app/demo/form/control/text/', '/app/demo/form/control/text/text.js', '/app/demo/form/control/text/text.xml', '/app/demo/form/control/timeline/', '/app/demo/form/control/timeline/timeline.js', '/app/demo/form/control/timeline/timeline.xml', '/app/demo/form/control/tip/', '/app/demo/form/control/tip/tip.js', '/app/demo/form/control/tip/tip.xml', '/app/demo/form/control/tplink/', '/app/demo/form/control/tplink/tplink.js', '/app/demo/form/control/tplink/tplink.xml', '/app/demo/form/control/tuieditor/', '/app/demo/form/control/tuieditor/tuieditor.js', '/app/demo/form/control/tuieditor/tuieditor.xml', '/app/demo/form/control/tuiviewer/', '/app/demo/form/control/tuiviewer/tuiviewer.js', '/app/demo/form/control/tuiviewer/tuiviewer.xml', '/app/demo/form/control/uploader/', '/app/demo/form/control/uploader/uploader.js', '/app/demo/form/control/uploader/uploader.xml', '/app/demo/form/control/vflow/', '/app/demo/form/control/vflow/vflow.css', '/app/demo/form/control/vflow/vflow.js', '/app/demo/form/control/vflow/vflow.xml', '/app/demo/form/control/video/', '/app/demo/form/control/video/video.js', '/app/demo/form/control/video/video.xml', '/app/demo/form/control/web/', '/app/demo/form/control/web/web.js', '/app/demo/form/control/web/web.xml', '/app/demo/form/control/xterm/', '/app/demo/form/control/xterm/xterm.js', '/app/demo/form/control/xterm/xterm.xml', '/app/demo/form/event/', '/app/demo/form/event/form/', '/app/demo/form/event/form/form.css', '/app/demo/form/event/form/form.js', '/app/demo/form/event/form/form.xml', '/app/demo/form/event/other/', '/app/demo/form/event/other/other.js', '/app/demo/form/event/other/other.xml', '/app/demo/form/event/screen/', '/app/demo/form/event/screen/screen.js', '/app/demo/form/event/screen/screen.xml', '/app/demo/form/event/task/', '/app/demo/form/event/task/task.js', '/app/demo/form/event/task/task.xml', '/app/demo/form/main.css', '/app/demo/form/main.js', '/app/demo/form/main.xml', '/app/demo/form/method/', '/app/demo/form/method/acontrol/', '/app/demo/form/method/acontrol/acontrol.js', '/app/demo/form/method/acontrol/acontrol.xml', '/app/demo/form/method/aform/', '/app/demo/form/method/aform/aform.js', '/app/demo/form/method/aform/aform.xml', '/app/demo/form/method/aform/sd.js', '/app/demo/form/method/aform/sd.xml', '/app/demo/form/method/core/', '/app/demo/form/method/core/core.js', '/app/demo/form/method/core/core.xml', '/app/demo/form/method/dom/', '/app/demo/form/method/dom/dom.css', '/app/demo/form/method/dom/dom.js', '/app/demo/form/method/dom/dom.xml', '/app/demo/form/method/form/', '/app/demo/form/method/form/form.js', '/app/demo/form/method/form/form.xml', '/app/demo/form/method/form/test.xml', '/app/demo/form/method/fs/', '/app/demo/form/method/fs/fs.js', '/app/demo/form/method/fs/fs.xml', '/app/demo/form/method/fs/text.js', '/app/demo/form/method/fs/text.xml', '/app/demo/form/method/native/', '/app/demo/form/method/native/native.js', '/app/demo/form/method/native/native.xml', '/app/demo/form/method/storage/', '/app/demo/form/method/storage/storage.js', '/app/demo/form/method/storage/storage.xml', '/app/demo/form/method/system/', '/app/demo/form/method/system/system.js', '/app/demo/form/method/system/system.xml', '/app/demo/form/method/task/', '/app/demo/form/method/task/locale1.json', '/app/demo/form/method/task/locale2.json', '/app/demo/form/method/task/task.js', '/app/demo/form/method/task/task.xml', '/app/demo/form/method/theme/', '/app/demo/form/method/theme/theme.js', '/app/demo/form/method/theme/theme.xml', '/app/demo/form/method/tool/', '/app/demo/form/method/tool/tool.js', '/app/demo/form/method/tool/tool.xml', '/app/demo/form/method/zip/', '/app/demo/form/method/zip/zip.js', '/app/demo/form/method/zip/zip.xml', '/app/demo/form/solution/', '/app/demo/form/solution/backpanel/', '/app/demo/form/solution/backpanel/backpanel.js', '/app/demo/form/solution/backpanel/backpanel.xml', '/app/demo/global.css', '/app/demo/res/', '/app/demo/res/custombtn.cgc', '/app/demo/res/icon.svg', '/app/demo/res/img.jpg', '/app/demo/res/marker.svg', '/app/demo/res/r-1.svg', '/app/demo/res/r-2.svg', '/app/demo/res/sql.svg', '/app/demo/res/txt.svg', '/app/demo/res/video.mp4', '/app/demo/res/zip.svg', '/app/task/', '/app/task/app.js', '/app/task/config.json', '/app/task/form/', '/app/task/form/bar/', '/app/task/form/bar/bar.js', '/app/task/form/bar/bar.xml', '/app/task/form/desktop/', '/app/task/form/desktop/desktop.xml', '/app/task/locale/', '/app/task/locale/en.json', '/app/task/locale/ja.json', '/app/task/locale/sc.json', '/app/task/locale/tc.json', '/clickgo.d.ts', '/clickgo.js', '/clickgo.ts', '/control/', '/control/arteditor.cgc', '/control/box.cgc', '/control/captcha.cgc', '/control/common.cgc', '/control/desc.cgc', '/control/drawer.cgc', '/control/echarts.cgc', '/control/form.cgc', '/control/iconview.cgc', '/control/jodit.cgc', '/control/map.cgc', '/control/monaco.cgc', '/control/mpegts.cgc', '/control/nav.cgc', '/control/novnc.cgc', '/control/page.cgc', '/control/pdf.cgc', '/control/property.cgc', '/control/qrcode.cgc', '/control/table.cgc', '/control/task.cgc', '/control/tplink.cgc', '/control/tuieditor.cgc', '/control/tuiviewer.cgc', '/control/web.cgc', '/control/xterm.cgc', '/ext/', '/ext/toastui-editor-all.min.js', '/ext/tplinkhd.min.js', '/global.css', '/icon.png', '/index.d.ts', '/index.js', '/index.ts', '/lib/', '/lib/control.d.ts', '/lib/control.js', '/lib/control.ts', '/lib/core.d.ts', '/lib/core.js', '/lib/core.ts', '/lib/dom.d.ts', '/lib/dom.js', '/lib/dom.ts', '/lib/form.d.ts', '/lib/form.js', '/lib/form.ts', '/lib/fs.d.ts', '/lib/fs.js', '/lib/fs.ts', '/lib/native.d.ts', '/lib/native.js', '/lib/native.ts', '/lib/storage.d.ts', '/lib/storage.js', '/lib/storage.ts', '/lib/task.d.ts', '/lib/task.js', '/lib/task.ts', '/lib/theme.d.ts', '/lib/theme.js', '/lib/theme.ts', '/lib/tool.d.ts', '/lib/tool.js', '/lib/tool.ts', '/lib/zip.d.ts', '/lib/zip.js', '/lib/zip.ts', '/notosans-regular.ttf', '/theme/', '/theme/blue.cgt', '/theme/byterun.cgt', '/theme/dark.cgt', '/theme/light.cgt'];
60
- const localeData = {
61
- 'en': {
62
- 'apply-unmount': 'Are you sure to unmount the "?" mount point?',
63
- },
64
- 'sc': {
65
- 'apply-unmount': '确定卸载“?”挂载点吗?'
66
- },
67
- 'tc': {
68
- 'apply-unmount': '確定卸載「?」掛載點嗎?'
69
- },
70
- 'ja': {
71
- 'apply-unmount': '「?」マウントポイントをアンマウントしてよろしいですか?'
72
- },
73
- 'ko': {
74
- 'apply-unmount': '"?" 마운트 지점을 언마운트하시겠습니까?'
75
- },
76
- 'th': {
77
- 'apply-unmount': 'คุณแน่ใจหรือว่าต้องการยกเลิกการติดตั้งจุดติดตั้ง "?"'
78
- },
79
- 'es': {
80
- 'apply-unmount': '¿Está seguro de que desea desmontar el punto de montaje "?"'
81
- },
82
- 'de': {
83
- 'apply-unmount': 'Möchten Sie den Einhängepunkt "?" wirklich demontieren?'
84
- },
85
- 'fr': {
86
- 'apply-unmount': 'Voulez-vous vraiment démonter le point de montage "?"'
87
- },
88
- 'pt': {
89
- 'apply-unmount': 'Tem certeza de que deseja desmontar o ponto de montagem "?"'
90
- },
91
- 'ru': {
92
- 'apply-unmount': 'Вы уверены, что хотите отмонтировать точку монтирования "?"'
93
- },
94
- 'vi': {
95
- 'apply-unmount': 'Bạn có chắc chắn muốn tháo dỡ điểm gắn "?" không?'
96
- }
97
- };
98
- const mounts = {};
99
- function getMountName(path) {
100
- const io = path.slice(9).indexOf('/');
101
- return io === -1 ? path.slice(9) : path.slice(9, io + 9);
102
- }
103
- function mount(name, handler, taskId) {
104
- if (mounts[name]) {
105
- return false;
106
- }
107
- if (!/^[a-zA-Z][\w]+$/.test(name)) {
108
- return false;
109
- }
110
- if (taskId) {
111
- const t = task.list[taskId];
112
- if (t) {
113
- const val = 'fs./mounted/' + name + '/w';
114
- if (!t.runtime.permissions.includes(val)) {
115
- t.runtime.permissions.push(val);
116
- }
117
- }
118
- }
119
- handler.date = new Date();
120
- mounts[name] = handler;
121
- return true;
122
- }
123
- async function unmount(name) {
124
- if (!mounts[name]) {
125
- return true;
126
- }
127
- const loc = localeData[core.config.locale]?.['apply-unmount'] ?? localeData['en']['apply-unmount'];
128
- if (!await form.superConfirm(loc.replace('?', '/mount/' + tool.escapeHTML(name) + '/'))) {
129
- return false;
130
- }
131
- delete mounts[name];
132
- return true;
133
- }
134
- async function getContent(path, options, taskId) {
135
- path = tool.urlResolve('/', path);
136
- const fpath = path.slice(8);
137
- if (typeof options === 'string') {
138
- options = {
139
- 'encoding': options
140
- };
141
- }
142
- else {
143
- options ??= {};
144
- }
145
- const encoding = options.encoding;
146
- const start = options.start;
147
- const end = options.end;
148
- if (path.startsWith('/clickgo/') || path.startsWith('http:') || path.startsWith('https:') || path.startsWith('file:')) {
149
- let ourl = '';
150
- if (path.startsWith('/clickgo/')) {
151
- if (!clickgoFiles.includes(fpath)) {
152
- return null;
153
- }
154
- ourl = tool.urlResolve(__dirname, './').slice(0, -1) + fpath;
155
- }
156
- else {
157
- ourl = path;
158
- }
159
- try {
160
- const rand = '?' + (options.cache ?? Math.random().toString());
161
- let blob = null;
162
- const headers = {};
163
- if (start ?? end) {
164
- headers['range'] = `bytes=${start ?? '0'}-${end ?? ''}`;
165
- }
166
- if (options.progress) {
167
- blob = await tool.request(ourl + (!ourl.startsWith(loader.cdn) ? rand : ''), {
168
- 'headers': headers,
169
- 'progress': options.progress,
170
- 'responseType': 'blob'
171
- });
172
- }
173
- else {
174
- blob = await (await fetch(ourl + (!ourl.startsWith(loader.cdn) ? rand : ''), {
175
- 'headers': headers
176
- })).blob();
177
- }
178
- if (!blob) {
179
- return null;
180
- }
181
- if (!encoding) {
182
- return blob;
183
- }
184
- return await new Promise(function (resolve) {
185
- const fr = new FileReader();
186
- fr.addEventListener('load', function () {
187
- resolve(fr.result);
188
- });
189
- fr.readAsText(blob, encoding);
190
- });
191
- }
192
- catch {
193
- return null;
194
- }
195
- }
196
- else if (path.startsWith('/storage/') || path.startsWith('/mounted/')) {
197
- const r = await task.checkPermission('fs.' + path + 'r', false, undefined, taskId);
198
- if (!r[0]) {
199
- return null;
200
- }
201
- if (path.startsWith('/mounted/')) {
202
- const name = getMountName(path);
203
- const hanlder = mounts[name];
204
- if (!hanlder) {
205
- return null;
206
- }
207
- return hanlder.getContent?.(path.slice(9 + name.length), options) ?? null;
208
- }
209
- if (options.progress) {
210
- delete options.progress;
211
- }
212
- const rtn = await native.invoke('cg-fs-getContent', native.getToken(), fpath, options);
213
- if (!rtn) {
214
- return null;
215
- }
216
- if (typeof rtn === 'string') {
217
- return rtn;
218
- }
219
- return new Blob([rtn], {
220
- 'type': tool.getMimeByPath(path).mime
221
- });
222
- }
223
- else if (path.startsWith('/package/') || path.startsWith('/current/')) {
224
- if (!taskId) {
225
- return null;
226
- }
227
- if (path.startsWith('/current/')) {
228
- return getContent(task.list[taskId].current + fpath, options, taskId);
229
- }
230
- const file = task.list[taskId].app.files[fpath];
231
- if (!file) {
232
- return null;
233
- }
234
- if (typeof file === 'string') {
235
- return file;
236
- }
237
- if (!options.encoding) {
238
- if (start === undefined && end === undefined) {
239
- return file;
240
- }
241
- return file.slice(start, end, file.type);
242
- }
243
- const encoding = options.encoding;
244
- return new Promise(function (resolve) {
245
- const fr = new FileReader();
246
- fr.addEventListener('load', function () {
247
- resolve(fr.result);
248
- });
249
- fr.readAsText(file, encoding);
250
- });
251
- }
252
- else {
253
- return null;
254
- }
255
- }
256
- async function putContent(path, data, options = {}, taskId) {
257
- path = tool.urlResolve('/', path);
258
- const fpath = path.slice(8);
259
- if (path.startsWith('/clickgo/')) {
260
- return false;
261
- }
262
- else if (path.startsWith('/storage/') || path.startsWith('/mounted/')) {
263
- const r = await task.checkPermission('fs.' + path + 'w', false, undefined, taskId);
264
- if (!r[0]) {
265
- return false;
266
- }
267
- if (path.startsWith('/mounted/')) {
268
- const name = getMountName(path);
269
- const hanlder = mounts[name];
270
- if (!hanlder) {
271
- return false;
272
- }
273
- return hanlder.putContent?.(path.slice(9 + name.length), data, options) ?? false;
274
- }
275
- let buf = undefined;
276
- if (data instanceof Blob) {
277
- buf = new Uint8Array(await data.arrayBuffer());
278
- }
279
- return native.invoke('cg-fs-putContent', native.getToken(), fpath, buf ?? data, options);
280
- }
281
- else if (path.startsWith('/package/')) {
282
- return false;
283
- }
284
- else if (path.startsWith('/current/')) {
285
- if (!taskId) {
286
- return false;
287
- }
288
- return putContent(task.list[taskId].current + fpath, data, options, taskId);
289
- }
290
- else {
291
- return false;
292
- }
293
- }
294
- async function readLink(path, encoding, taskId) {
295
- path = tool.urlResolve('/', path);
296
- const fpath = path.slice(8);
297
- if (path.startsWith('/clickgo/')) {
298
- return null;
299
- }
300
- else if (path.startsWith('/storage/') || path.startsWith('/mounted/')) {
301
- const r = await task.checkPermission('fs.' + path + 'r', false, undefined, taskId);
302
- if (!r[0]) {
303
- return null;
304
- }
305
- if (path.startsWith('/mounted/')) {
306
- const name = getMountName(path);
307
- const hanlder = mounts[name];
308
- if (!hanlder) {
309
- return null;
310
- }
311
- return hanlder.readLink?.(path.slice(9 + name.length), encoding) ?? null;
312
- }
313
- return native.invoke('cg-fs-readLink', native.getToken(), fpath, encoding);
314
- }
315
- else if (path.startsWith('/package/')) {
316
- return null;
317
- }
318
- else if (path.startsWith('/current/')) {
319
- if (!taskId) {
320
- return null;
321
- }
322
- return task.list[taskId].current;
323
- }
324
- else {
325
- return null;
326
- }
327
- }
328
- async function symlink(filePath, linkPath, type, taskId) {
329
- filePath = tool.urlResolve('/', filePath);
330
- linkPath = tool.urlResolve('/', linkPath);
331
- if (filePath.startsWith('/clickgo/')) {
332
- return false;
333
- }
334
- else if (filePath.startsWith('/storage/') || filePath.startsWith('/mounted/')) {
335
- const r = await task.checkPermission('fs.' + filePath + 'w', false, undefined, taskId);
336
- if (!r[0]) {
337
- return false;
338
- }
339
- if (filePath.startsWith('/mounted/')) {
340
- const fname = getMountName(filePath);
341
- const lname = getMountName(linkPath);
342
- if (fname !== lname) {
343
- return false;
344
- }
345
- const hanlder = mounts[fname];
346
- if (!hanlder) {
347
- return false;
348
- }
349
- return hanlder.symlink?.(filePath.slice(9 + fname.length), linkPath.slice(9 + fname.length), type) ?? false;
350
- }
351
- return native.invoke('cg-fs-symlink', native.getToken(), filePath.slice(8), linkPath.slice(8), type);
352
- }
353
- else if (filePath.startsWith('/package/')) {
354
- return false;
355
- }
356
- else if (filePath.startsWith('/current/')) {
357
- if (!taskId) {
358
- return false;
359
- }
360
- if (linkPath.startsWith('/current/')) {
361
- linkPath = task.list[taskId].current + linkPath.slice(8);
362
- }
363
- return symlink(task.list[taskId].current + filePath.slice(8), linkPath, type, taskId);
364
- }
365
- else {
366
- return false;
367
- }
368
- }
369
- async function unlink(path, taskId) {
370
- path = tool.urlResolve('/', path);
371
- const fpath = path.slice(8);
372
- if (path.startsWith('/clickgo/')) {
373
- return false;
374
- }
375
- else if (path.startsWith('/storage/') || path.startsWith('/mounted/')) {
376
- const r = await task.checkPermission('fs.' + path + 'w', false, undefined, taskId);
377
- if (!r[0]) {
378
- return false;
379
- }
380
- if (path.startsWith('/mounted/')) {
381
- const name = getMountName(path);
382
- const hanlder = mounts[name];
383
- if (!hanlder) {
384
- return false;
385
- }
386
- return hanlder.unlink?.(path.slice(9 + name.length)) ?? false;
387
- }
388
- return native.invoke('cg-fs-unlink', native.getToken(), fpath);
389
- }
390
- else if (path.startsWith('/package/')) {
391
- return false;
392
- }
393
- else if (path.startsWith('/current/')) {
394
- if (!taskId) {
395
- return false;
396
- }
397
- return unlink(task.list[taskId].current + fpath, taskId);
398
- }
399
- else {
400
- return false;
401
- }
402
- }
403
- async function getClickGoStats(path) {
404
- if (path.endsWith('/')) {
405
- const date = new Date();
406
- const ms = date.getTime();
407
- return {
408
- isFile: function () {
409
- return false;
410
- },
411
- isDirectory: function () {
412
- return true;
413
- },
414
- isSymbolicLink: function () {
415
- return false;
416
- },
417
- 'size': 0,
418
- 'blksize': 0,
419
- 'atimeMs': ms,
420
- 'mtimeMs': ms,
421
- 'ctimeMs': ms,
422
- 'birthtimeMs': ms,
423
- 'atime': date,
424
- 'mtime': date,
425
- 'ctime': date,
426
- 'birthtime': date
427
- };
428
- }
429
- else {
430
- try {
431
- const res = await fetch(tool.urlResolve(__dirname, './').slice(0, -1) + path, {
432
- 'headers': {
433
- 'range': `bytes=0-1`
434
- }
435
- });
436
- const hdate = res.headers.get('date');
437
- const hmdate = res.headers.get('last-modified');
438
- let hlength = res.headers.get('content-range');
439
- if (hlength) {
440
- const lio = hlength.lastIndexOf('/');
441
- hlength = hlength.slice(lio + 1);
442
- }
443
- let date = new Date();
444
- let mdate = date;
445
- if (hdate) {
446
- date = new Date(hdate);
447
- }
448
- if (hmdate) {
449
- mdate = new Date(hmdate);
450
- }
451
- const ms = date.getTime();
452
- const mms = mdate.getTime();
453
- return {
454
- isFile: function () {
455
- return true;
456
- },
457
- isDirectory: function () {
458
- return false;
459
- },
460
- isSymbolicLink: function () {
461
- return false;
462
- },
463
- 'size': hlength ? parseInt(hlength) : 0,
464
- 'blksize': hlength ? parseInt(hlength) : 0,
465
- 'atimeMs': ms,
466
- 'mtimeMs': mms,
467
- 'ctimeMs': mms,
468
- 'birthtimeMs': ms,
469
- 'atime': date,
470
- 'mtime': mdate,
471
- 'ctime': mdate,
472
- 'birthtime': date
473
- };
474
- }
475
- catch {
476
- return null;
477
- }
478
- }
479
- }
480
- async function stats(path, taskId) {
481
- path = tool.urlResolve('/', path);
482
- if (path.endsWith('/')) {
483
- path = path.slice(0, -1);
484
- }
485
- if (['', '/clickgo', '/storage', '/mounted', '/package'].includes(path)) {
486
- const date = new Date();
487
- const ms = date.getTime();
488
- return {
489
- isFile: function () {
490
- return false;
491
- },
492
- isDirectory: function () {
493
- return true;
494
- },
495
- isSymbolicLink: function () {
496
- return false;
497
- },
498
- 'size': 0,
499
- 'blksize': 0,
500
- 'atimeMs': ms,
501
- 'mtimeMs': ms,
502
- 'ctimeMs': ms,
503
- 'birthtimeMs': ms,
504
- 'atime': date,
505
- 'mtime': date,
506
- 'ctime': date,
507
- 'birthtime': date
508
- };
509
- }
510
- if (path === '/current') {
511
- const date = new Date();
512
- const ms = date.getTime();
513
- return {
514
- isFile: function () {
515
- return false;
516
- },
517
- isDirectory: function () {
518
- return false;
519
- },
520
- isSymbolicLink: function () {
521
- return true;
522
- },
523
- 'size': 0,
524
- 'blksize': 0,
525
- 'atimeMs': ms,
526
- 'mtimeMs': ms,
527
- 'ctimeMs': ms,
528
- 'birthtimeMs': ms,
529
- 'atime': date,
530
- 'mtime': date,
531
- 'ctime': date,
532
- 'birthtime': date
533
- };
534
- }
535
- let fpath = path.slice(8);
536
- if (path.startsWith('/clickgo/')) {
537
- if (!clickgoFiles.includes(fpath)) {
538
- if (!clickgoFiles.includes(fpath + '/')) {
539
- return null;
540
- }
541
- fpath += '/';
542
- }
543
- return getClickGoStats(fpath);
544
- }
545
- else if (path.startsWith('/storage/')) {
546
- const r = await task.checkPermission('fs.' + path + 'r', false, undefined, taskId);
547
- if (!r[0]) {
548
- return null;
549
- }
550
- const item = await native.invoke('cg-fs-stats', native.getToken(), fpath);
551
- if (!item) {
552
- return null;
553
- }
554
- return {
555
- isFile: function () {
556
- return item.isFile;
557
- },
558
- isDirectory: function () {
559
- return item.isDirectory;
560
- },
561
- isSymbolicLink: function () {
562
- return item.isSymbolicLink;
563
- },
564
- 'size': item.size,
565
- 'blksize': item.blksize,
566
- 'atimeMs': item.atimeMs,
567
- 'mtimeMs': item.mtimeMs,
568
- 'ctimeMs': item.ctimeMs,
569
- 'birthtimeMs': item.birthtimeMs,
570
- 'atime': item.atime,
571
- 'mtime': item.mtime,
572
- 'ctime': item.ctime,
573
- 'birthtime': item.birthtime
574
- };
575
- }
576
- else if (path.startsWith('/mounted/')) {
577
- const name = getMountName(path);
578
- const hanlder = mounts[name];
579
- if (!hanlder) {
580
- return null;
581
- }
582
- if (path === '/mounted/' + name) {
583
- const ms = hanlder.date.getTime();
584
- return {
585
- isFile: function () {
586
- return false;
587
- },
588
- isDirectory: function () {
589
- return true;
590
- },
591
- isSymbolicLink: function () {
592
- return false;
593
- },
594
- 'size': 0,
595
- 'blksize': 0,
596
- 'atimeMs': ms,
597
- 'mtimeMs': ms,
598
- 'ctimeMs': ms,
599
- 'birthtimeMs': ms,
600
- 'atime': hanlder.date,
601
- 'mtime': hanlder.date,
602
- 'ctime': hanlder.date,
603
- 'birthtime': hanlder.date
604
- };
605
- }
606
- const r = await task.checkPermission('fs.' + path + 'r', false, undefined, taskId);
607
- if (!r[0]) {
608
- return null;
609
- }
610
- return hanlder.stats?.(path.slice(9 + name.length)) ?? null;
611
- }
612
- else if (path.startsWith('/package/') || path.startsWith('/current/')) {
613
- if (!taskId) {
614
- return null;
615
- }
616
- if (path.startsWith('/current/')) {
617
- return stats(task.list[taskId].current + fpath, taskId);
618
- }
619
- if (task.list[taskId].app.files[fpath]) {
620
- const file = task.list[taskId].app.files[fpath];
621
- const date = new Date();
622
- const ms = date.getTime();
623
- let size = 0;
624
- if (typeof file !== 'string') {
625
- size = file.size;
626
- }
627
- else {
628
- size = new Blob([file]).size;
629
- }
630
- return {
631
- isFile: function () {
632
- return true;
633
- },
634
- isDirectory: function () {
635
- return false;
636
- },
637
- isSymbolicLink: function () {
638
- return false;
639
- },
640
- 'size': size,
641
- 'blksize': size,
642
- 'atimeMs': ms,
643
- 'mtimeMs': ms,
644
- 'ctimeMs': ms,
645
- 'birthtimeMs': ms,
646
- 'atime': date,
647
- 'mtime': date,
648
- 'ctime': date,
649
- 'birthtime': date
650
- };
651
- }
652
- if (!fpath.endsWith('/')) {
653
- fpath += '/';
654
- }
655
- for (const p in task.list[taskId].app.files) {
656
- if (!p.startsWith(fpath)) {
657
- continue;
658
- }
659
- const date = new Date();
660
- const ms = date.getTime();
661
- return {
662
- isFile: function () {
663
- return false;
664
- },
665
- isDirectory: function () {
666
- return true;
667
- },
668
- isSymbolicLink: function () {
669
- return false;
670
- },
671
- 'size': 0,
672
- 'blksize': 0,
673
- 'atimeMs': ms,
674
- 'mtimeMs': ms,
675
- 'ctimeMs': ms,
676
- 'birthtimeMs': ms,
677
- 'atime': date,
678
- 'mtime': date,
679
- 'ctime': date,
680
- 'birthtime': date
681
- };
682
- }
683
- return null;
684
- }
685
- else {
686
- return null;
687
- }
688
- }
689
- async function isDir(path, taskId) {
690
- const pstats = await stats(path, taskId);
691
- if (!pstats?.isDirectory()) {
692
- return false;
693
- }
694
- return pstats;
695
- }
696
- async function isFile(path, taskId) {
697
- const pstats = await stats(path, taskId);
698
- if (!pstats?.isFile()) {
699
- return false;
700
- }
701
- return pstats;
702
- }
703
- async function mkdir(path, mode = 0o755, taskId) {
704
- path = tool.urlResolve('/', path);
705
- if (await isDir(path, taskId)) {
706
- return true;
707
- }
708
- const fpath = path.slice(8);
709
- if (path.startsWith('/clickgo/')) {
710
- return false;
711
- }
712
- else if (path.startsWith('/storage/') || path.startsWith('/mounted/')) {
713
- const r = await task.checkPermission('fs.' + path + 'w', false, undefined, taskId);
714
- if (!r[0]) {
715
- return false;
716
- }
717
- if (path.startsWith('/mounted/')) {
718
- const name = getMountName(path);
719
- const hanlder = mounts[name];
720
- if (!hanlder) {
721
- return false;
722
- }
723
- return hanlder.mkdir?.(path.slice(9 + name.length), mode) ?? false;
724
- }
725
- return native.invoke('cg-fs-mkdir', native.getToken(), fpath, mode);
726
- }
727
- else if (path.startsWith('/package/')) {
728
- return false;
729
- }
730
- else if (path.startsWith('/current/')) {
731
- if (!taskId) {
732
- return false;
733
- }
734
- return mkdir(task.list[taskId].current + fpath, mode, taskId);
735
- }
736
- else {
737
- return false;
738
- }
739
- }
740
- async function rmdir(path, taskId) {
741
- path = tool.urlResolve('/', path);
742
- const fpath = path.slice(8);
743
- if (path.startsWith('/clickgo/')) {
744
- return false;
745
- }
746
- else if (path.startsWith('/storage/') || path.startsWith('/mounted/')) {
747
- const r = await task.checkPermission('fs.' + path + 'w', false, undefined, taskId);
748
- if (!r[0]) {
749
- return false;
750
- }
751
- if (path.startsWith('/mounted/')) {
752
- const name = getMountName(path);
753
- const hanlder = mounts[name];
754
- if (!hanlder) {
755
- return false;
756
- }
757
- return hanlder.rmdir?.(path.slice(9 + name.length)) ?? false;
758
- }
759
- return native.invoke('cg-fs-rmdir', native.getToken(), fpath);
760
- }
761
- else if (path.startsWith('/package/')) {
762
- return false;
763
- }
764
- else if (path.startsWith('/current/')) {
765
- if (!taskId) {
766
- return false;
767
- }
768
- return rmdir(task.list[taskId].current + fpath, taskId);
769
- }
770
- else {
771
- return false;
772
- }
773
- }
774
- async function rmdirDeep(path, taskId) {
775
- path = tool.urlResolve('/', path);
776
- if (!path.endsWith('/')) {
777
- path += '/';
778
- }
779
- const list = await readDir(path, undefined, taskId);
780
- for (const item of list) {
781
- const stat = await stats(path + item.name, taskId);
782
- if (!stat) {
783
- return false;
784
- }
785
- if (stat.isDirectory()) {
786
- const rtn = await rmdirDeep(path + item.name, taskId);
787
- if (!rtn) {
788
- return false;
789
- }
790
- }
791
- else {
792
- const rtn = await unlink(path + item.name, taskId);
793
- if (!rtn) {
794
- return false;
795
- }
796
- }
797
- }
798
- return rmdir(path, taskId);
799
- }
800
- async function chmod(path, mod, taskId) {
801
- path = tool.urlResolve('/', path);
802
- const fpath = path.slice(8);
803
- if (path.startsWith('/clickgo/')) {
804
- return false;
805
- }
806
- else if (path.startsWith('/storage/') || path.startsWith('/mounted/')) {
807
- const r = await task.checkPermission('fs.' + path + 'w', false, undefined, taskId);
808
- if (!r[0]) {
809
- return false;
810
- }
811
- if (path.startsWith('/mounted/')) {
812
- const name = getMountName(path);
813
- const hanlder = mounts[name];
814
- if (!hanlder) {
815
- return false;
816
- }
817
- return hanlder.chmod?.(path.slice(9 + name.length), mod) ?? false;
818
- }
819
- return native.invoke('cg-fs-chmod', native.getToken(), fpath, mod);
820
- }
821
- else if (path.startsWith('/package/')) {
822
- return false;
823
- }
824
- else if (path.startsWith('/current/')) {
825
- if (!taskId) {
826
- return false;
827
- }
828
- return chmod(task.list[taskId].current + fpath, mod, taskId);
829
- }
830
- else {
831
- return false;
832
- }
833
- }
834
- async function rename(oldPath, newPath, taskId) {
835
- oldPath = tool.urlResolve('/', oldPath);
836
- newPath = tool.urlResolve('/', newPath);
837
- if (!oldPath.startsWith(newPath.slice(0, 9))) {
838
- return false;
839
- }
840
- const ofpath = oldPath.slice(8);
841
- const nfpath = newPath.slice(8);
842
- if (oldPath.startsWith('/clickgo/')) {
843
- return false;
844
- }
845
- else if (oldPath.startsWith('/storage/') || oldPath.startsWith('/mounted/')) {
846
- let r = await task.checkPermission('fs.' + oldPath + 'w', false, undefined, taskId);
847
- if (!r[0]) {
848
- return false;
849
- }
850
- r = await task.checkPermission('fs.' + newPath + 'w', false, undefined, taskId);
851
- if (!r[0]) {
852
- return false;
853
- }
854
- if (oldPath.startsWith('/mounted/')) {
855
- const fname = getMountName(oldPath);
856
- const lname = getMountName(newPath);
857
- if (fname !== lname) {
858
- return false;
859
- }
860
- const hanlder = mounts[fname];
861
- if (!hanlder) {
862
- return false;
863
- }
864
- return hanlder.rename?.(oldPath.slice(9 + fname.length), newPath.slice(9 + fname.length)) ?? false;
865
- }
866
- return native.invoke('cg-fs-rename', native.getToken(), ofpath, nfpath);
867
- }
868
- else if (oldPath.startsWith('/package/')) {
869
- return false;
870
- }
871
- else if (oldPath.startsWith('/current/')) {
872
- if (!taskId) {
873
- return false;
874
- }
875
- return rename(task.list[taskId].current + ofpath, task.list[taskId].current + nfpath, taskId);
876
- }
877
- else {
878
- return false;
879
- }
880
- }
881
- async function readDir(path, encoding, taskId) {
882
- path = tool.urlResolve('/', path);
883
- if (path === '/') {
884
- const list = [
885
- {
886
- isFile: function () {
887
- return false;
888
- },
889
- isDirectory: function () {
890
- return true;
891
- },
892
- isSymbolicLink: function () {
893
- return false;
894
- },
895
- 'name': 'clickgo'
896
- },
897
- {
898
- isFile: function () {
899
- return false;
900
- },
901
- isDirectory: function () {
902
- return true;
903
- },
904
- isSymbolicLink: function () {
905
- return false;
906
- },
907
- 'name': 'storage'
908
- },
909
- {
910
- isFile: function () {
911
- return false;
912
- },
913
- isDirectory: function () {
914
- return true;
915
- },
916
- isSymbolicLink: function () {
917
- return false;
918
- },
919
- 'name': 'mounted'
920
- }
921
- ];
922
- if (taskId) {
923
- list.push({
924
- isFile: function () {
925
- return false;
926
- },
927
- isDirectory: function () {
928
- return true;
929
- },
930
- isSymbolicLink: function () {
931
- return false;
932
- },
933
- 'name': 'package'
934
- });
935
- }
936
- if (taskId) {
937
- list.push({
938
- isFile: function () {
939
- return false;
940
- },
941
- isDirectory: function () {
942
- return false;
943
- },
944
- isSymbolicLink: function () {
945
- return true;
946
- },
947
- 'name': 'current'
948
- });
949
- }
950
- return list;
951
- }
952
- if (!path.endsWith('/')) {
953
- path += '/';
954
- }
955
- const fpath = path.slice(8);
956
- if (path.startsWith('/clickgo/')) {
957
- const list = [];
958
- for (const item of clickgoFiles) {
959
- if (!item.startsWith(fpath)) {
960
- continue;
961
- }
962
- if (fpath === item) {
963
- continue;
964
- }
965
- const rpath = item.slice(fpath.length);
966
- if (rpath.includes('/')) {
967
- if (rpath.endsWith('/')) {
968
- if (rpath.slice(0, -1).includes('/')) {
969
- continue;
970
- }
971
- list.push({
972
- isFile: function () {
973
- return false;
974
- },
975
- isDirectory: function () {
976
- return true;
977
- },
978
- isSymbolicLink: function () {
979
- return false;
980
- },
981
- 'name': rpath.slice(0, -1)
982
- });
983
- }
984
- continue;
985
- }
986
- list.push({
987
- isFile: function () {
988
- return true;
989
- },
990
- isDirectory: function () {
991
- return false;
992
- },
993
- isSymbolicLink: function () {
994
- return false;
995
- },
996
- 'name': rpath
997
- });
998
- }
999
- return list;
1000
- }
1001
- else if (path.startsWith('/storage/') || path.startsWith('/mounted/')) {
1002
- const list = [];
1003
- if (path === '/mounted/') {
1004
- for (const name in mounts) {
1005
- list.push({
1006
- isFile: function () {
1007
- return false;
1008
- },
1009
- isDirectory: function () {
1010
- return true;
1011
- },
1012
- isSymbolicLink: function () {
1013
- return false;
1014
- },
1015
- 'name': name
1016
- });
1017
- }
1018
- return list;
1019
- }
1020
- const r = await task.checkPermission('fs.' + path + 'r', false, undefined, taskId);
1021
- if (!r[0]) {
1022
- return [];
1023
- }
1024
- if (path.startsWith('/mounted/')) {
1025
- const name = getMountName(path);
1026
- const hanlder = mounts[name];
1027
- if (!hanlder) {
1028
- return [];
1029
- }
1030
- return hanlder.readDir?.(path.slice(9 + name.length), encoding) ?? [];
1031
- }
1032
- const ls = await native.invoke('cg-fs-readDir', native.getToken(), fpath, encoding);
1033
- for (const item of ls) {
1034
- list.push({
1035
- isFile: function () {
1036
- return item.isFile;
1037
- },
1038
- isDirectory: function () {
1039
- return item.isDirectory;
1040
- },
1041
- isSymbolicLink: function () {
1042
- return item.isSymbolicLink;
1043
- },
1044
- 'name': item.name
1045
- });
1046
- }
1047
- return list;
1048
- }
1049
- else if (path.startsWith('/package/') || path.startsWith('/current/')) {
1050
- if (!taskId) {
1051
- return [];
1052
- }
1053
- if (path.startsWith('/current/')) {
1054
- return readDir(task.list[taskId].current + fpath, encoding, taskId);
1055
- }
1056
- const list = [];
1057
- const dirs = [];
1058
- for (const p in task.list[taskId].app.files) {
1059
- if (!p.startsWith(fpath)) {
1060
- continue;
1061
- }
1062
- const rpath = p.slice(fpath.length);
1063
- const sio = rpath.indexOf('/');
1064
- if (sio !== -1) {
1065
- const name = rpath.slice(0, sio);
1066
- if (!dirs.includes(name)) {
1067
- dirs.push(name);
1068
- list.push({
1069
- isFile: function () {
1070
- return false;
1071
- },
1072
- isDirectory: function () {
1073
- return true;
1074
- },
1075
- isSymbolicLink: function () {
1076
- return false;
1077
- },
1078
- 'name': name
1079
- });
1080
- }
1081
- continue;
1082
- }
1083
- list.push({
1084
- isFile: function () {
1085
- return true;
1086
- },
1087
- isDirectory: function () {
1088
- return false;
1089
- },
1090
- isSymbolicLink: function () {
1091
- return false;
1092
- },
1093
- 'name': rpath
1094
- });
1095
- }
1096
- return list;
1097
- }
1098
- else {
1099
- return [];
1100
- }
1101
- }
1102
- async function copyFolder(from, to, ignore = [], taskId) {
1103
- let num = 0;
1104
- if (!await isDir(from, taskId)) {
1105
- return 0;
1106
- }
1107
- const flist = await readDir(from, undefined, taskId);
1108
- let checkTo = false;
1109
- for (const item of flist) {
1110
- if (item.isDirectory()) {
1111
- const r = await copyFolder(from + item.name + '/', to + item.name + '/', ignore, taskId);
1112
- if (r === -1) {
1113
- return r;
1114
- }
1115
- else {
1116
- num += r;
1117
- }
1118
- }
1119
- else if (item.isFile()) {
1120
- if (ignore.length > 0 && tool.match(item.name, ignore)) {
1121
- continue;
1122
- }
1123
- if (!checkTo) {
1124
- if (!await mkdir(to, undefined, taskId)) {
1125
- return -1;
1126
- }
1127
- checkTo = true;
1128
- }
1129
- if (!(await copyFile(from + item.name, to + item.name, taskId))) {
1130
- continue;
1131
- }
1132
- ++num;
1133
- }
1134
- }
1135
- return num;
1136
- }
1137
- async function copyFile(src, dest, taskId) {
1138
- src = tool.urlResolve('/', src);
1139
- dest = tool.urlResolve('/', dest);
1140
- if (!src.startsWith(dest.slice(0, 9))) {
1141
- return false;
1142
- }
1143
- const sfpath = src.slice(8);
1144
- const dfpath = dest.slice(8);
1145
- if (src.startsWith('/clickgo/')) {
1146
- return false;
1147
- }
1148
- else if (src.startsWith('/storage/') || dest.startsWith('/mounted/')) {
1149
- let r = await task.checkPermission('fs.' + src + 'r', false, undefined, taskId);
1150
- if (!r[0]) {
1151
- return false;
1152
- }
1153
- r = await task.checkPermission('fs.' + dest + 'w', false, undefined, taskId);
1154
- if (!r[0]) {
1155
- return false;
1156
- }
1157
- if (src.startsWith('/mounted/')) {
1158
- const fname = getMountName(src);
1159
- const lname = getMountName(dest);
1160
- if (fname !== lname) {
1161
- return false;
1162
- }
1163
- const hanlder = mounts[fname];
1164
- if (!hanlder) {
1165
- return false;
1166
- }
1167
- return hanlder.copyFile?.(src.slice(9 + fname.length), dest.slice(9 + fname.length)) ?? false;
1168
- }
1169
- return native.invoke('cg-fs-copyFile', native.getToken(), sfpath, dfpath);
1170
- }
1171
- else if (src.startsWith('/package/')) {
1172
- return false;
1173
- }
1174
- else if (src.startsWith('/current/')) {
1175
- if (!taskId) {
1176
- return false;
1177
- }
1178
- return copyFile(task.list[taskId].current + sfpath, task.list[taskId].current + dfpath, taskId);
1179
- }
1180
- else {
1181
- return false;
1182
- }
1183
- }