fmode-ng 0.0.113 → 0.0.114

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 (208) hide show
  1. package/LICENSE.md +8 -0
  2. package/README.md +37 -37
  3. package/esm2022/fmode-ng.mjs +10 -5
  4. package/esm2022/lib/aigc/agent/fm-agent-task/fm-agent-task.component.mjs +8 -92
  5. package/esm2022/lib/aigc/agent/index.mjs +10 -3
  6. package/esm2022/lib/aigc/avatar/avatar.module.mjs +10 -45
  7. package/esm2022/lib/aigc/avatar/comp-avatar-particle/avatar.role.mjs +10 -2
  8. package/esm2022/lib/aigc/avatar/comp-avatar-particle/comp-avatar-particle.component.mjs +10 -315
  9. package/esm2022/lib/aigc/avatar/comp-avatar-particle/index.mjs +10 -3
  10. package/esm2022/lib/aigc/avatar/comp-avatar-particle/role-points.class.mjs +10 -57
  11. package/esm2022/lib/aigc/avatar/comp-avatar-role-image/comp-avatar-role-image.component.mjs +10 -98
  12. package/esm2022/lib/aigc/avatar/comp-avatar-role-video/comp-avatar-role-video.component.mjs +10 -107
  13. package/esm2022/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.mjs +10 -113
  14. package/esm2022/lib/aigc/avatar/index.mjs +10 -8
  15. package/esm2022/lib/aigc/avatar/interface-avatar-role.mjs +10 -2
  16. package/esm2022/lib/aigc/avatar/modal-chat-voice-input/modal-chat-voice-input.component.mjs +8 -164
  17. package/esm2022/lib/aigc/chat/chat-header-area/comp-header-area.component.mjs +10 -49
  18. package/esm2022/lib/aigc/chat/chat-header-area/index.mjs +10 -2
  19. package/esm2022/lib/aigc/chat/chat-list/chat-list.component.mjs +8 -155
  20. package/esm2022/lib/aigc/chat/chat-list/index.mjs +10 -2
  21. package/esm2022/lib/aigc/chat/chat-message-area/comp-message-area.component.mjs +10 -40
  22. package/esm2022/lib/aigc/chat/chat-message-area/index.mjs +10 -2
  23. package/esm2022/lib/aigc/chat/chat-message-card/comp-message-card.component.mjs +10 -140
  24. package/esm2022/lib/aigc/chat/chat-message-card/duration-str.pipe.mjs +10 -29
  25. package/esm2022/lib/aigc/chat/chat-message-card/index.mjs +10 -3
  26. package/esm2022/lib/aigc/chat/chat-modal-input/index.mjs +10 -3
  27. package/esm2022/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.mjs +8 -193
  28. package/esm2022/lib/aigc/chat/chat-modal-input/modal-input.component.mjs +10 -331
  29. package/esm2022/lib/aigc/chat/chat-panel/chat-panel.component.mjs +8 -249
  30. package/esm2022/lib/aigc/chat/comp-role-prompt/comp-role-prompt.component.mjs +10 -83
  31. package/esm2022/lib/aigc/chat/comp-role-prompt/index.mjs +10 -2
  32. package/esm2022/lib/aigc/chat/index.mjs +10 -8
  33. package/esm2022/lib/aigc/comp-markdown-preview/clipboard.service.mjs +10 -82
  34. package/esm2022/lib/aigc/comp-markdown-preview/markdown-parse.mjs +8 -367
  35. package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.component.mjs +10 -51
  36. package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.module.mjs +10 -24
  37. package/esm2022/lib/aigc/comp-markdown-preview/plugins/md-mathjax/index.mjs +10 -115
  38. package/esm2022/lib/aigc/index.mjs +10 -14
  39. package/esm2022/lib/aigc/service-fmai/fmai.service.mjs +10 -21
  40. package/esm2022/lib/aigc/service-fmai/service-chat/chat-class.mjs +10 -2
  41. package/esm2022/lib/aigc/service-fmai/service-chat/chat.service.mjs +8 -174
  42. package/esm2022/lib/aigc/service-fmai/service-chat/index.mjs +10 -7
  43. package/esm2022/lib/aigc/service-fmai/service-chat/mask-list.mjs +9 -194
  44. package/esm2022/lib/aigc/service-fmai/service-chat/pipes/chat-content.pipe.mjs +10 -27
  45. package/esm2022/lib/aigc/service-fmai/service-chat/pipes/hidexml.pipe.mjs +10 -27
  46. package/esm2022/lib/aigc/service-fmai/service-chat/utilnow.pipe.mjs +10 -68
  47. package/esm2022/lib/aigc/service-fmai/service-imagine/imagine-func.mjs +9 -162
  48. package/esm2022/lib/aigc/service-fmai/service-imagine/imagine-work.mjs +10 -68
  49. package/esm2022/lib/aigc/service-fmai/service-imagine/imagine.service.mjs +8 -313
  50. package/esm2022/lib/aigc/service-fmai/service-imagine/index.mjs +10 -4
  51. package/esm2022/lib/aigc/story/fm-office-viewer/fm-office-viewer.component.mjs +10 -62
  52. package/esm2022/lib/aigc/story/fm-story-card/fm-story-card.component.mjs +10 -87
  53. package/esm2022/lib/aigc/story/fm-story-list/fm-story-list.component.mjs +10 -345
  54. package/esm2022/lib/aigc/story/fm-story-list/story-preview.mjs +10 -81
  55. package/esm2022/lib/aigc/story/fm-story-loader/fm-story-loader.component.mjs +10 -152
  56. package/esm2022/lib/aigc/story/fm-story-splitter/fm-story-splitter.component.mjs +10 -42
  57. package/esm2022/lib/aigc/story/index.mjs +10 -6
  58. package/esm2022/lib/aigc/story/modal-chat-story/comp-chat-story-json/comp-chat-story-json.component.mjs +10 -47
  59. package/esm2022/lib/aigc/story/modal-chat-story/comp-diary-story/comp-diary-story.component.mjs +10 -95
  60. package/esm2022/lib/aigc/story/modal-chat-story/modal-chat-story.component.mjs +10 -253
  61. package/esm2022/lib/aigc/story/story.service.mjs +10 -35
  62. package/esm2022/lib/aigc/voice/fmode-voice.service.mjs +10 -636
  63. package/esm2022/lib/aigc/voice/index.mjs +10 -7
  64. package/esm2022/lib/aigc/voice/lib/audio/audio.player.mjs +10 -55
  65. package/esm2022/lib/aigc/voice/lib/audio/audio.streamer.mjs +10 -2
  66. package/esm2022/lib/aigc/voice/lib/audio/streamer.microsoft.mjs +10 -96
  67. package/esm2022/lib/aigc/voice/lib/audio/streamer.pcm.mjs +8 -177
  68. package/esm2022/lib/aigc/voice/lib/pcm2wav.mjs +10 -38
  69. package/esm2022/lib/aigc/voice/lib/recorder/extension-waveview.mjs +10 -215
  70. package/esm2022/lib/aigc/voice/lib/resample.mjs +10 -34
  71. package/esm2022/lib/aigc/voice/tts/fmode-tts-class.mjs +10 -189
  72. package/esm2022/lib/aigc/voice/tts/index.mjs +10 -5
  73. package/esm2022/lib/aigc/voice/tts/int-tts-provider.mjs +10 -2
  74. package/esm2022/lib/aigc/voice/tts/provider-doubao.mjs +8 -346
  75. package/esm2022/lib/code/fm-codemirror/fm-codemirror.component.mjs +8 -342
  76. package/esm2022/lib/code/index.mjs +10 -2
  77. package/esm2022/lib/core/agent/chat/completion/fmode-completion.mjs +8 -430
  78. package/esm2022/lib/core/agent/chat/completion/index.mjs +10 -2
  79. package/esm2022/lib/core/agent/chat/completion/int-gpt-chat-options.mjs +10 -2
  80. package/esm2022/lib/core/agent/chat/fmode-chat.mjs +8 -617
  81. package/esm2022/lib/core/agent/chat/index.mjs +10 -4
  82. package/esm2022/lib/core/agent/chat/interface.mjs +10 -2
  83. package/esm2022/lib/core/agent/index.mjs +10 -6
  84. package/esm2022/lib/core/agent/prompt/agent.prompt.mjs +10 -133
  85. package/esm2022/lib/core/agent/prompt/index.mjs +10 -2
  86. package/esm2022/lib/core/agent/prompt/prompt-util.mjs +10 -16
  87. package/esm2022/lib/core/agent/story/agent.story.mjs +10 -64
  88. package/esm2022/lib/core/agent/story/index.mjs +10 -2
  89. package/esm2022/lib/core/agent/task/agent.task.mjs +10 -90
  90. package/esm2022/lib/core/agent/task/index.mjs +10 -2
  91. package/esm2022/lib/core/agent/waiting/index.mjs +10 -3
  92. package/esm2022/lib/core/agent/waiting/loading/loading.ctrl.mjs +10 -279
  93. package/esm2022/lib/core/agent/waiting/tips/tips.ctrl.mjs +8 -190
  94. package/esm2022/lib/core/index.mjs +10 -4
  95. package/esm2022/lib/core/parse/datatype/acl.mjs +10 -57
  96. package/esm2022/lib/core/parse/datatype/file.mjs +10 -69
  97. package/esm2022/lib/core/parse/datatype/geopoint.mjs +10 -57
  98. package/esm2022/lib/core/parse/datatype/relation.mjs +10 -56
  99. package/esm2022/lib/core/parse/fmode.object.mjs +10 -232
  100. package/esm2022/lib/core/parse/fmode.parse.mjs +10 -84
  101. package/esm2022/lib/core/parse/fmode.query.mjs +8 -500
  102. package/esm2022/lib/core/parse/fmode.user.mjs +10 -275
  103. package/esm2022/lib/core/parse/index.mjs +10 -5
  104. package/esm2022/lib/core/parse/types.mjs +10 -2
  105. package/esm2022/lib/core/voice/index.mjs +10 -3
  106. package/esm2022/lib/core/voice/tts/index.mjs +10 -2
  107. package/esm2022/lib/icon/filetype/audio.svg.mjs +10 -3
  108. package/esm2022/lib/icon/filetype/avatar.svg.mjs +10 -14
  109. package/esm2022/lib/icon/filetype/chat.svg.mjs +10 -3
  110. package/esm2022/lib/icon/filetype/docx.svg.mjs +10 -3
  111. package/esm2022/lib/icon/filetype/file.svg.mjs +10 -3
  112. package/esm2022/lib/icon/filetype/filetype.pipe.mjs +10 -57
  113. package/esm2022/lib/icon/filetype/index.mjs +10 -12
  114. package/esm2022/lib/icon/filetype/md.svg.mjs +10 -3
  115. package/esm2022/lib/icon/filetype/pdf.svg.mjs +10 -3
  116. package/esm2022/lib/icon/filetype/pptx.svg.mjs +10 -3
  117. package/esm2022/lib/icon/filetype/svgtoblob.mjs +10 -8
  118. package/esm2022/lib/icon/filetype/video.svg.mjs +10 -3
  119. package/esm2022/lib/icon/filetype/xlsx.svg.mjs +10 -3
  120. package/esm2022/lib/icon/index.mjs +10 -2
  121. package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.component.mjs +10 -209
  122. package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.module.mjs +10 -33
  123. package/esm2022/lib/map/index.mjs +10 -4
  124. package/esm2022/lib/map/map.module.mjs +10 -61
  125. package/esm2022/lib/map/page-loca-scatter/page-loca-scatter.component.mjs +10 -132
  126. package/esm2022/lib/map/page-map.start/page-map.start.component.mjs +8 -115
  127. package/esm2022/lib/map/page-plan-route/page-plan-route.component.mjs +8 -118
  128. package/esm2022/lib/nova-cloud/index.mjs +10 -3
  129. package/esm2022/lib/nova-cloud/ncloud-api-func.mjs +10 -91
  130. package/esm2022/lib/nova-cloud/nova-cloud.service.mjs +10 -53
  131. package/esm2022/lib/payment/index.mjs +10 -2
  132. package/esm2022/lib/payment/payment/payment.component.mjs +10 -543
  133. package/esm2022/lib/payment/payment.service.mjs +10 -202
  134. package/esm2022/lib/person/comp-person-gender-icon/comp-person-gender-icon.component.mjs +10 -48
  135. package/esm2022/lib/person/comp-person-item/comp-person-item.component.mjs +10 -29
  136. package/esm2022/lib/person/comp-person-story/comp-person-story.component.mjs +10 -211
  137. package/esm2022/lib/person/edit-upload/edit-upload.component.mjs +8 -412
  138. package/esm2022/lib/person/edit-upload/edit-upload.module.mjs +10 -50
  139. package/esm2022/lib/person/index.mjs +10 -5
  140. package/esm2022/lib/person/modal-person-select/modal-person-select.component.mjs +10 -144
  141. package/esm2022/lib/person/modal-user-verify/secret-text.pipe.mjs +10 -41
  142. package/esm2022/lib/person/modal-user-verify/user-verify.component.mjs +10 -595
  143. package/esm2022/lib/person/person-detail/person-detail.component.mjs +10 -172
  144. package/esm2022/lib/person/person.service.mjs +8 -193
  145. package/esm2022/lib/platform/cross.service.mjs +10 -62
  146. package/esm2022/lib/platform/index.mjs +10 -2
  147. package/esm2022/lib/social/index.mjs +10 -2
  148. package/esm2022/lib/social/wechat/wechat-jssdk.service.mjs +8 -230
  149. package/esm2022/lib/storage/comp-hwobs-manager/hwobs-manager.component.mjs +10 -59
  150. package/esm2022/lib/storage/index.mjs +10 -5
  151. package/esm2022/lib/storage/service-hwobs/hwobs.service.mjs +8 -131
  152. package/esm2022/lib/storage/service-hwobs/index.mjs +10 -3
  153. package/esm2022/lib/storage/service-hwobs/typings/esdk-obs-browser.mjs +1 -1
  154. package/esm2022/lib/storage/service-upload/index.mjs +10 -2
  155. package/esm2022/lib/storage/service-upload/nova-upload.service.mjs +8 -513
  156. package/esm2022/lib/storage/service-upload/util-file-md5.mjs +10 -28
  157. package/esm2022/lib/storage/service-upload/util-file-metadata.mjs +10 -93
  158. package/esm2022/lib/storage/storage.module.mjs +10 -42
  159. package/esm2022/lib/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.mjs +10 -72
  160. package/esm2022/lib/text/fm-article-editor/article.service.mjs +10 -237
  161. package/esm2022/lib/text/fm-article-editor/comp-upload-book-banners/comp-upload-book-banners.component.mjs +8 -72
  162. package/esm2022/lib/text/fm-article-editor/draft.service.mjs +10 -207
  163. package/esm2022/lib/text/fm-article-editor/fm-article-aitool/fm-article-aitool.component.mjs +8 -227
  164. package/esm2022/lib/text/fm-article-editor/fm-article-draft/fm-article-draft.component.mjs +10 -303
  165. package/esm2022/lib/text/fm-article-editor/fm-article-editor.component.mjs +8 -371
  166. package/esm2022/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.mjs +10 -94
  167. package/esm2022/lib/text/fm-article-editor/fm-article-outline-leftitem/fm-article-outline-leftitem.component.mjs +10 -36
  168. package/esm2022/lib/text/fm-article-editor/fm-article-preview/fm-article-preview.component.mjs +10 -281
  169. package/esm2022/lib/text/fm-article-editor/fm-article-write-options/fm-article-write-options.component.mjs +10 -72
  170. package/esm2022/lib/text/fm-article-editor/outline-count.pipe.mjs +10 -22
  171. package/esm2022/lib/text/fm-article-editor/prompt/prompt-insertion-article.mjs +10 -169
  172. package/esm2022/lib/text/fm-article-editor/task-article-generation.mjs +10 -69
  173. package/esm2022/lib/text/fm-article-editor/tasks/task-article-draft-create.mjs +10 -65
  174. package/esm2022/lib/text/fm-article-editor/tasks/task-article-outline-edit.mjs +10 -55
  175. package/esm2022/lib/text/fm-article-editor/tasks/task-article-outline.mjs +10 -142
  176. package/esm2022/lib/text/fm-article-editor/tasks/task-article-preview.mjs +10 -35
  177. package/esm2022/lib/text/fm-article-editor/tasks/task-article-writing-options.mjs +10 -81
  178. package/esm2022/lib/text/fm-article-editor/tasks/task-document-select.mjs +10 -50
  179. package/esm2022/lib/text/fm-text-quill/fm-text-quill.component.mjs +10 -145
  180. package/esm2022/lib/text/index.mjs +10 -4
  181. package/esm2022/lib/user/account/account.service.mjs +10 -222
  182. package/esm2022/lib/user/captcha/captcha.component.mjs +10 -135
  183. package/esm2022/lib/user/comp-user-avatar/comp-user-avatar.component.mjs +10 -66
  184. package/esm2022/lib/user/index.mjs +10 -17
  185. package/esm2022/lib/user/login/auth.guard.mjs +10 -28
  186. package/esm2022/lib/user/login/auth.service.mjs +8 -433
  187. package/esm2022/lib/user/login/login.component.mjs +10 -916
  188. package/esm2022/lib/user/modal-user-login/modal-user-login.component.mjs +10 -311
  189. package/esm2022/lib/user/profile/auth-profile.guard.mjs +10 -27
  190. package/esm2022/lib/user/profile/auth-profile.service.mjs +10 -122
  191. package/esm2022/lib/user/profile/profile-bind/profile-bind.component.mjs +10 -164
  192. package/esm2022/lib/user/profile/profile-bind/profile-confirm-modal.component.mjs +10 -79
  193. package/esm2022/lib/user/profile/profile.module.mjs +10 -54
  194. package/esm2022/lib/user/staff/index.mjs +10 -4
  195. package/esm2022/lib/user/staff/staff.guard.mjs +10 -26
  196. package/esm2022/lib/user/staff/staff.module.mjs +10 -18
  197. package/esm2022/lib/user/staff/staff.service.mjs +10 -85
  198. package/esm2022/lib/user/user-name.pipe.mjs +10 -29
  199. package/esm2022/lib/user/user.module.mjs +10 -102
  200. package/esm2022/lib/video/fm-video/fm-video.component.mjs +10 -67
  201. package/esm2022/lib/video/index.mjs +10 -2
  202. package/esm2022/public-api.mjs +10 -21
  203. package/fesm2022/fmode-ng.mjs +7 -19788
  204. package/fesm2022/fmode-ng.mjs.map +1 -1
  205. package/lib/core/parse/fmode.parse.d.ts +10 -9
  206. package/lib/core/parse/fmode.query.d.ts +37 -2
  207. package/lib/person/edit-upload/edit-upload.component.d.ts +1 -1
  208. package/package.json +12 -16
@@ -1,57 +1,10 @@
1
- // ==================== FmodeACL ====================
2
- export class FmodeACL {
3
- static { this._instance = null; }
4
- static bindInstance(instance) {
5
- this._instance = instance;
6
- }
7
- constructor(aclData) {
8
- this.permissions = {};
9
- if (aclData) {
10
- this.permissions = { ...aclData };
11
- }
12
- }
13
- setPublicReadAccess(allowed) {
14
- this.permissions['*'] = this.permissions['*'] || { read: false, write: false };
15
- this.permissions['*'].read = allowed;
16
- return this;
17
- }
18
- setPublicWriteAccess(allowed) {
19
- this.permissions['*'] = this.permissions['*'] || { read: false, write: false };
20
- this.permissions['*'].write = allowed;
21
- return this;
22
- }
23
- setReadAccess(userId, allowed) {
24
- const id = typeof userId === 'string' ? userId : userId.id;
25
- if (!id)
26
- throw new Error('Invalid user ID');
27
- this.permissions[id] = this.permissions[id] || { read: false, write: false };
28
- this.permissions[id].read = allowed;
29
- return this;
30
- }
31
- setWriteAccess(userId, allowed) {
32
- const id = typeof userId === 'string' ? userId : userId.id;
33
- if (!id)
34
- throw new Error('Invalid user ID');
35
- this.permissions[id] = this.permissions[id] || { read: false, write: false };
36
- this.permissions[id].write = allowed;
37
- return this;
38
- }
39
- getPublicReadAccess() {
40
- return !!this.permissions['*']?.read;
41
- }
42
- getPublicWriteAccess() {
43
- return !!this.permissions['*']?.write;
44
- }
45
- getReadAccess(userId) {
46
- const id = typeof userId === 'string' ? userId : userId.id;
47
- return !!this.permissions[id]?.read;
48
- }
49
- getWriteAccess(userId) {
50
- const id = typeof userId === 'string' ? userId : userId.id;
51
- return !!this.permissions[id]?.write;
52
- }
53
- toJSON() {
54
- return { ...this.permissions };
55
- }
56
- }
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi9jb3JlL3BhcnNlL2RhdGF0eXBlL2FjbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxxREFBcUQ7QUFDckQsTUFBTSxPQUFPLFFBQVE7YUFDWixjQUFTLEdBQWUsSUFBSSxBQUFuQixDQUFvQjtJQUVwQyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQWE7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQUlELFlBQVksT0FBMkQ7UUFGL0QsZ0JBQVcsR0FBc0QsRUFBRSxDQUFDO1FBRzFFLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLE9BQWdCO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQy9FLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxPQUFnQjtRQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUMvRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQW9CLEVBQUUsT0FBZ0I7UUFDbEQsTUFBTSxFQUFFLEdBQUcsT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLEVBQUU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDN0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFvQixFQUFFLE9BQWdCO1FBQ25ELE1BQU0sRUFBRSxHQUFHLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxFQUFFO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQzdFLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQW9CO1FBQ2hDLE1BQU0sRUFBRSxHQUFHLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzNELE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBb0I7UUFDakMsTUFBTSxFQUFFLEdBQUcsT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDM0QsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4vLyA9PT09PT09PT09PT09PT09PT09PSBGbW9kZUFDTCA9PT09PT09PT09PT09PT09PT09PVxyXG5leHBvcnQgY2xhc3MgRm1vZGVBQ0wge1xyXG4gIHN0YXRpYyBfaW5zdGFuY2U6IGFueSB8IG51bGwgPSBudWxsO1xyXG4gIFxyXG4gIHN0YXRpYyBiaW5kSW5zdGFuY2UoaW5zdGFuY2U6IGFueSkge1xyXG4gICAgdGhpcy5faW5zdGFuY2UgPSBpbnN0YW5jZTtcclxuICB9XHJcbiAgXHJcbiAgcHJpdmF0ZSBwZXJtaXNzaW9uczogUmVjb3JkPHN0cmluZywgeyByZWFkOiBib29sZWFuOyB3cml0ZTogYm9vbGVhbiB9PiA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihhY2xEYXRhPzogUmVjb3JkPHN0cmluZywgeyByZWFkOiBib29sZWFuOyB3cml0ZTogYm9vbGVhbiB9Pikge1xyXG4gICAgaWYgKGFjbERhdGEpIHtcclxuICAgICAgdGhpcy5wZXJtaXNzaW9ucyA9IHsgLi4uYWNsRGF0YSB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0UHVibGljUmVhZEFjY2VzcyhhbGxvd2VkOiBib29sZWFuKTogdGhpcyB7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25zWycqJ10gPSB0aGlzLnBlcm1pc3Npb25zWycqJ10gfHwgeyByZWFkOiBmYWxzZSwgd3JpdGU6IGZhbHNlIH07XHJcbiAgICB0aGlzLnBlcm1pc3Npb25zWycqJ10ucmVhZCA9IGFsbG93ZWQ7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHNldFB1YmxpY1dyaXRlQWNjZXNzKGFsbG93ZWQ6IGJvb2xlYW4pOiB0aGlzIHtcclxuICAgIHRoaXMucGVybWlzc2lvbnNbJyonXSA9IHRoaXMucGVybWlzc2lvbnNbJyonXSB8fCB7IHJlYWQ6IGZhbHNlLCB3cml0ZTogZmFsc2UgfTtcclxuICAgIHRoaXMucGVybWlzc2lvbnNbJyonXS53cml0ZSA9IGFsbG93ZWQ7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHNldFJlYWRBY2Nlc3ModXNlcklkOiBzdHJpbmcgfCBhbnksIGFsbG93ZWQ6IGJvb2xlYW4pOiB0aGlzIHtcclxuICAgIGNvbnN0IGlkID0gdHlwZW9mIHVzZXJJZCA9PT0gJ3N0cmluZycgPyB1c2VySWQgOiB1c2VySWQuaWQ7XHJcbiAgICBpZiAoIWlkKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdXNlciBJRCcpO1xyXG4gICAgdGhpcy5wZXJtaXNzaW9uc1tpZF0gPSB0aGlzLnBlcm1pc3Npb25zW2lkXSB8fCB7IHJlYWQ6IGZhbHNlLCB3cml0ZTogZmFsc2UgfTtcclxuICAgIHRoaXMucGVybWlzc2lvbnNbaWRdLnJlYWQgPSBhbGxvd2VkO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBzZXRXcml0ZUFjY2Vzcyh1c2VySWQ6IHN0cmluZyB8IGFueSwgYWxsb3dlZDogYm9vbGVhbik6IHRoaXMge1xyXG4gICAgY29uc3QgaWQgPSB0eXBlb2YgdXNlcklkID09PSAnc3RyaW5nJyA/IHVzZXJJZCA6IHVzZXJJZC5pZDtcclxuICAgIGlmICghaWQpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB1c2VyIElEJyk7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25zW2lkXSA9IHRoaXMucGVybWlzc2lvbnNbaWRdIHx8IHsgcmVhZDogZmFsc2UsIHdyaXRlOiBmYWxzZSB9O1xyXG4gICAgdGhpcy5wZXJtaXNzaW9uc1tpZF0ud3JpdGUgPSBhbGxvd2VkO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBnZXRQdWJsaWNSZWFkQWNjZXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5wZXJtaXNzaW9uc1snKiddPy5yZWFkO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHVibGljV3JpdGVBY2Nlc3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLnBlcm1pc3Npb25zWycqJ10/LndyaXRlO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVhZEFjY2Vzcyh1c2VySWQ6IHN0cmluZyB8IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgaWQgPSB0eXBlb2YgdXNlcklkID09PSAnc3RyaW5nJyA/IHVzZXJJZCA6IHVzZXJJZC5pZDtcclxuICAgIHJldHVybiAhIXRoaXMucGVybWlzc2lvbnNbaWRdPy5yZWFkO1xyXG4gIH1cclxuXHJcbiAgZ2V0V3JpdGVBY2Nlc3ModXNlcklkOiBzdHJpbmcgfCBhbnkpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGlkID0gdHlwZW9mIHVzZXJJZCA9PT0gJ3N0cmluZycgPyB1c2VySWQgOiB1c2VySWQuaWQ7XHJcbiAgICByZXR1cm4gISF0aGlzLnBlcm1pc3Npb25zW2lkXT8ud3JpdGU7XHJcbiAgfVxyXG5cclxuICB0b0pTT04oKTogUmVjb3JkPHN0cmluZywgeyByZWFkOiBib29sZWFuOyB3cml0ZTogYm9vbGVhbiB9PiB7XHJcbiAgICByZXR1cm4geyAuLi50aGlzLnBlcm1pc3Npb25zIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+
2
+ /**
3
+ * @copyright © 未来飞马 © 未来全栈 www.fmode.cn
4
+ * 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
5
+ * 保留所有权利 All Rights Reserved.
6
+ * /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/core/parse/datatype/acl.mjs
7
+ */
8
+ export class FmodeACL{static{this._instance=null}static bindInstance(s){this._instance=s}constructor(s){this.permissions={},s&&(this.permissions={...s})}setPublicReadAccess(s){return this.permissions["*"]=this.permissions["*"]||{read:!1,write:!1},this.permissions["*"].read=s,this}setPublicWriteAccess(s){return this.permissions["*"]=this.permissions["*"]||{read:!1,write:!1},this.permissions["*"].write=s,this}setReadAccess(s,i){const e="string"==typeof s?s:s.id;if(!e)throw new Error("Invalid user ID");return this.permissions[e]=this.permissions[e]||{read:!1,write:!1},this.permissions[e].read=i,this}setWriteAccess(s,i){const e="string"==typeof s?s:s.id;if(!e)throw new Error("Invalid user ID");return this.permissions[e]=this.permissions[e]||{read:!1,write:!1},this.permissions[e].write=i,this}getPublicReadAccess(){return!!this.permissions["*"]?.read}getPublicWriteAccess(){return!!this.permissions["*"]?.write}getReadAccess(s){const i="string"==typeof s?s:s.id;return!!this.permissions[i]?.read}getWriteAccess(s){const i="string"==typeof s?s:s.id;return!!this.permissions[i]?.write}toJSON(){return{...this.permissions}}}
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9jb3JlL3BhcnNlL2RhdGF0eXBlL2FjbC5tanM=`
10
+
@@ -1,69 +1,10 @@
1
- import { FmodeObject } from "../fmode.object";
2
- // ==================== FmodeFile ====================
3
- export class FmodeFile {
4
- static { this._instance = null; }
5
- static bindInstance(instance) {
6
- this._instance = instance;
7
- }
8
- constructor(name, data) {
9
- this.__type = 'File';
10
- this.name = name;
11
- if (typeof data === 'object' && 'base64' in data) {
12
- // Handle base64 input
13
- this.data = this._base64ToArrayBuffer(data.base64);
14
- }
15
- else {
16
- this.data = data;
17
- }
18
- // URL will be set after saving
19
- this.url = '';
20
- }
21
- _base64ToArrayBuffer(base64) {
22
- const binaryString = atob(base64);
23
- const bytes = new Uint8Array(binaryString.length);
24
- for (let i = 0; i < binaryString.length; i++) {
25
- bytes[i] = binaryString.charCodeAt(i);
26
- }
27
- return bytes.buffer;
28
- }
29
- static async save(name, data, options) {
30
- if (!FmodeObject._instance)
31
- throw new Error('Not initialized');
32
- const formData = new FormData();
33
- if (data instanceof Blob || data instanceof File) {
34
- formData.append('file', data, name);
35
- }
36
- else if (data instanceof ArrayBuffer) {
37
- const blob = new Blob([new Uint8Array(data)], { type: options?.type });
38
- formData.append('file', blob, name);
39
- }
40
- else {
41
- const blob = new Blob([data], { type: options?.type || 'text/plain' });
42
- formData.append('file', blob, name);
43
- }
44
- const headers = {
45
- 'X-Parse-Application-Id': FmodeObject._instance.appId
46
- };
47
- if (options?.useMasterKey && FmodeObject._instance.config.masterKey) {
48
- headers['X-Parse-Master-Key'] = FmodeObject._instance.config.masterKey;
49
- }
50
- const url = `${FmodeObject._instance.serverURL}/files/${name}`;
51
- const response = await fetch(url, {
52
- method: 'POST',
53
- headers,
54
- body: formData
55
- });
56
- const result = await response.json();
57
- if (result.error)
58
- throw new Error(result.error);
59
- return new FmodeFile(result.name, result.url);
60
- }
61
- toJSON() {
62
- return {
63
- __type: 'File',
64
- name: this.name,
65
- url: this.url
66
- };
67
- }
68
- }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ztb2RlLW5nL3NyYy9saWIvY29yZS9wYXJzZS9kYXRhdHlwZS9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxzREFBc0Q7QUFDdEQsTUFBTSxPQUFPLFNBQVM7YUFDZixjQUFTLEdBQWUsSUFBSSxBQUFuQixDQUFvQjtJQUVsQyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQWE7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQU1ELFlBQVksSUFBWSxFQUFFLElBQTZEO1FBTHZGLFdBQU0sR0FBRyxNQUFlLENBQUM7UUFNdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFakIsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2pELHNCQUFzQjtZQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNuQixDQUFDO1FBRUQsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFDTyxvQkFBb0IsQ0FBQyxNQUFjO1FBQ3pDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM3QyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLENBQUM7SUFHRCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDZixJQUFZLEVBQ1osSUFBOEMsRUFDOUMsT0FBbUQ7UUFFbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRS9ELE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDaEMsSUFBSSxJQUFJLFlBQVksSUFBSSxJQUFJLElBQUksWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUNqRCxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEMsQ0FBQzthQUFNLElBQUksSUFBSSxZQUFZLFdBQVcsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN2RSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEMsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLElBQUksWUFBWSxFQUFFLENBQUMsQ0FBQztZQUN2RSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUEyQjtZQUN0Qyx3QkFBd0IsRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUs7U0FDdEQsQ0FBQztRQUVGLElBQUksT0FBTyxFQUFFLFlBQVksSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwRSxPQUFPLENBQUMsb0JBQW9CLENBQUMsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDekUsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDL0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsT0FBTztZQUNQLElBQUksRUFBRSxRQUFRO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckMsSUFBSSxNQUFNLENBQUMsS0FBSztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhELE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPO1lBQ0wsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7U0FDZCxDQUFDO0lBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZtb2RlT2JqZWN0IH0gZnJvbSBcIi4uL2Ztb2RlLm9iamVjdFwiO1xyXG5cclxuLy8gPT09PT09PT09PT09PT09PT09PT0gRm1vZGVGaWxlID09PT09PT09PT09PT09PT09PT09XHJcbmV4cG9ydCBjbGFzcyBGbW9kZUZpbGUge1xyXG5zdGF0aWMgX2luc3RhbmNlOiBhbnkgfCBudWxsID0gbnVsbDtcclxuICBcclxuICBzdGF0aWMgYmluZEluc3RhbmNlKGluc3RhbmNlOiBhbnkpIHtcclxuICAgIHRoaXMuX2luc3RhbmNlID0gaW5zdGFuY2U7XHJcbiAgfVxyXG4gIF9fdHlwZSA9ICdGaWxlJyBhcyBjb25zdDtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdXJsOiBzdHJpbmc7XHJcbiAgZGF0YT86IHN0cmluZyB8IEJsb2IgfCBGaWxlIHwgQXJyYXlCdWZmZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgZGF0YTogc3RyaW5nIHwgQmxvYiB8IEZpbGUgfCBBcnJheUJ1ZmZlciB8IHsgYmFzZTY0OiBzdHJpbmcgfSkge1xyXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgIFxyXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJiAnYmFzZTY0JyBpbiBkYXRhKSB7XHJcbiAgICAgIC8vIEhhbmRsZSBiYXNlNjQgaW5wdXRcclxuICAgICAgdGhpcy5kYXRhID0gdGhpcy5fYmFzZTY0VG9BcnJheUJ1ZmZlcihkYXRhLmJhc2U2NCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGEgPSBkYXRhO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBVUkwgd2lsbCBiZSBzZXQgYWZ0ZXIgc2F2aW5nXHJcbiAgICB0aGlzLnVybCA9ICcnO1xyXG4gIH1cclxuICBwcml2YXRlIF9iYXNlNjRUb0FycmF5QnVmZmVyKGJhc2U2NDogc3RyaW5nKTogQXJyYXlCdWZmZXIge1xyXG4gICAgY29uc3QgYmluYXJ5U3RyaW5nID0gYXRvYihiYXNlNjQpO1xyXG4gICAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShiaW5hcnlTdHJpbmcubGVuZ3RoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmluYXJ5U3RyaW5nLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGJ5dGVzW2ldID0gYmluYXJ5U3RyaW5nLmNoYXJDb2RlQXQoaSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYnl0ZXMuYnVmZmVyO1xyXG4gIH1cclxuXHJcblxyXG4gIHN0YXRpYyBhc3luYyBzYXZlKFxyXG4gICAgbmFtZTogc3RyaW5nLFxyXG4gICAgZGF0YTogYW55IHwgQmxvYiB8IEZpbGUgfCBBcnJheUJ1ZmZlciB8IHN0cmluZyxcclxuICAgIG9wdGlvbnM/OiB7IHR5cGU/OiBzdHJpbmc7IHVzZU1hc3RlcktleT86IGJvb2xlYW4gfVxyXG4gICk6IFByb21pc2U8Rm1vZGVGaWxlPiB7XHJcbiAgICBpZiAoIUZtb2RlT2JqZWN0Ll9pbnN0YW5jZSkgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW5pdGlhbGl6ZWQnKTtcclxuXHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBCbG9iIHx8IGRhdGEgaW5zdGFuY2VvZiBGaWxlKSB7XHJcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGRhdGEsIG5hbWUpO1xyXG4gICAgfSBlbHNlIGlmIChkYXRhIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcclxuICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtuZXcgVWludDhBcnJheShkYXRhKV0sIHsgdHlwZTogb3B0aW9ucz8udHlwZSB9KTtcclxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgYmxvYiwgbmFtZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2RhdGFdLCB7IHR5cGU6IG9wdGlvbnM/LnR5cGUgfHwgJ3RleHQvcGxhaW4nIH0pO1xyXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBibG9iLCBuYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICAgICAnWC1QYXJzZS1BcHBsaWNhdGlvbi1JZCc6IEZtb2RlT2JqZWN0Ll9pbnN0YW5jZS5hcHBJZFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAob3B0aW9ucz8udXNlTWFzdGVyS2V5ICYmIEZtb2RlT2JqZWN0Ll9pbnN0YW5jZS5jb25maWcubWFzdGVyS2V5KSB7XHJcbiAgICAgIGhlYWRlcnNbJ1gtUGFyc2UtTWFzdGVyLUtleSddID0gRm1vZGVPYmplY3QuX2luc3RhbmNlLmNvbmZpZy5tYXN0ZXJLZXk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdXJsID0gYCR7Rm1vZGVPYmplY3QuX2luc3RhbmNlLnNlcnZlclVSTH0vZmlsZXMvJHtuYW1lfWA7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xyXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgaGVhZGVycyxcclxuICAgICAgYm9keTogZm9ybURhdGFcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuICAgIGlmIChyZXN1bHQuZXJyb3IpIHRocm93IG5ldyBFcnJvcihyZXN1bHQuZXJyb3IpO1xyXG5cclxuICAgIHJldHVybiBuZXcgRm1vZGVGaWxlKHJlc3VsdC5uYW1lLCByZXN1bHQudXJsKTtcclxuICB9XHJcblxyXG4gIHRvSlNPTigpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIF9fdHlwZTogJ0ZpbGUnLFxyXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXHJcbiAgICAgIHVybDogdGhpcy51cmxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+
2
+ /**
3
+ * @copyright © 未来飞马 © 未来全栈 www.fmode.cn
4
+ * 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
5
+ * 保留所有权利 All Rights Reserved.
6
+ * /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/core/parse/datatype/file.mjs
7
+ */
8
+ import{FmodeObject}from"../fmode.object";export class FmodeFile{static{this._instance=null}static bindInstance(e){this._instance=e}constructor(e,t){this.__type="File",this.name=e,this.data="object"==typeof t&&"base64"in t?this._base64ToArrayBuffer(t.base64):t,this.url=""}_base64ToArrayBuffer(e){const t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n.buffer}static async save(e,t,n){if(!FmodeObject._instance)throw new Error("Not initialized");const r=new FormData;if(t instanceof Blob||t instanceof File)r.append("file",t,e);else if(t instanceof ArrayBuffer){const a=new Blob([new Uint8Array(t)],{type:n?.type});r.append("file",a,e)}else{const a=new Blob([t],{type:n?.type||"text/plain"});r.append("file",a,e)}const a={"X-Parse-Application-Id":FmodeObject._instance.appId};n?.useMasterKey&&FmodeObject._instance.config.masterKey&&(a["X-Parse-Master-Key"]=FmodeObject._instance.config.masterKey);const i=`${FmodeObject._instance.serverURL}/files/${e}`,s=await fetch(i,{method:"POST",headers:a,body:r}),o=await s.json();if(o.error)throw new Error(o.error);return new FmodeFile(o.name,o.url)}toJSON(){return{__type:"File",name:this.name,url:this.url}}}
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9jb3JlL3BhcnNlL2RhdGF0eXBlL2ZpbGUubWpz`
10
+
@@ -1,57 +1,10 @@
1
- // ==================== FmodeGeoPoint ====================
2
- export class FmodeGeoPoint {
3
- static { this._instance = null; }
4
- static bindInstance(instance) {
5
- this._instance = instance;
6
- }
7
- constructor(latitude, longitude) {
8
- this.__type = 'GeoPoint';
9
- if (latitude < -90 || latitude > 90) {
10
- throw new Error('Latitude must be between -90 and 90');
11
- }
12
- if (longitude < -180 || longitude > 180) {
13
- throw new Error('Longitude must be between -180 and 180');
14
- }
15
- this.latitude = latitude;
16
- this.longitude = longitude;
17
- }
18
- static current(options) {
19
- return new Promise((resolve, reject) => {
20
- navigator.geolocation.getCurrentPosition((position) => {
21
- resolve(new FmodeGeoPoint(position.coords.latitude, position.coords.longitude));
22
- }, (error) => reject(error), options);
23
- });
24
- }
25
- kilometersTo(point) {
26
- return this._calculateDistance(point, 'kilometers');
27
- }
28
- milesTo(point) {
29
- return this._calculateDistance(point, 'miles');
30
- }
31
- radiansTo(point) {
32
- return this._calculateDistance(point, 'radians');
33
- }
34
- _calculateDistance(point, unit) {
35
- const earthRadius = {
36
- kilometers: 6371,
37
- miles: 3959,
38
- radians: 1
39
- }[unit];
40
- const dLat = (point.latitude - this.latitude) * Math.PI / 180;
41
- const dLon = (point.longitude - this.longitude) * Math.PI / 180;
42
- const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
43
- Math.cos(this.latitude * Math.PI / 180) *
44
- Math.cos(point.latitude * Math.PI / 180) *
45
- Math.sin(dLon / 2) * Math.sin(dLon / 2);
46
- const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
47
- return earthRadius * c;
48
- }
49
- toJSON() {
50
- return {
51
- __type: 'GeoPoint',
52
- latitude: this.latitude,
53
- longitude: this.longitude
54
- };
55
- }
56
- }
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvcG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2NvcmUvcGFyc2UvZGF0YXR5cGUvZ2VvcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsMERBQTBEO0FBQzFELE1BQU0sT0FBTyxhQUFhO2FBQ2YsY0FBUyxHQUFlLElBQUksQUFBbkIsQ0FBb0I7SUFFdEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFhO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFLRCxZQUFZLFFBQWdCLEVBQUUsU0FBaUI7UUFKL0MsV0FBTSxHQUFHLFVBQW1CLENBQUM7UUFLM0IsSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFLElBQUksUUFBUSxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBQ0QsSUFBSSxTQUFTLEdBQUcsQ0FBQyxHQUFHLElBQUksU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBMEM7UUFDdkQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxTQUFTLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUN0QyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxJQUFJLGFBQWEsQ0FDdkIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQ3hCLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUMxQixDQUFDLENBQUM7WUFDTCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFDeEIsT0FBTyxDQUNSLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBb0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxPQUFPLENBQUMsS0FBb0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxTQUFTLENBQUMsS0FBb0I7UUFDNUIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxLQUFvQixFQUFFLElBQXdDO1FBQ3ZGLE1BQU0sV0FBVyxHQUFHO1lBQ2xCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLEtBQUssRUFBRSxJQUFJO1lBQ1gsT0FBTyxFQUFFLENBQUM7U0FDWCxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRVIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUM5RCxNQUFNLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQ2hFLE1BQU0sQ0FBQyxHQUNMLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pELE9BQU8sV0FBVyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU87WUFDTCxNQUFNLEVBQUUsVUFBVTtZQUNsQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQzFCLENBQUM7SUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbi8vID09PT09PT09PT09PT09PT09PT09IEZtb2RlR2VvUG9pbnQgPT09PT09PT09PT09PT09PT09PT1cclxuZXhwb3J0IGNsYXNzIEZtb2RlR2VvUG9pbnQge1xyXG4gICAgc3RhdGljIF9pbnN0YW5jZTogYW55IHwgbnVsbCA9IG51bGw7XHJcbiAgXHJcbiAgc3RhdGljIGJpbmRJbnN0YW5jZShpbnN0YW5jZTogYW55KSB7XHJcbiAgICB0aGlzLl9pbnN0YW5jZSA9IGluc3RhbmNlO1xyXG4gIH1cclxuICBfX3R5cGUgPSAnR2VvUG9pbnQnIGFzIGNvbnN0O1xyXG4gIGxhdGl0dWRlOiBudW1iZXI7XHJcbiAgbG9uZ2l0dWRlOiBudW1iZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGxhdGl0dWRlOiBudW1iZXIsIGxvbmdpdHVkZTogbnVtYmVyKSB7XHJcbiAgICBpZiAobGF0aXR1ZGUgPCAtOTAgfHwgbGF0aXR1ZGUgPiA5MCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xhdGl0dWRlIG11c3QgYmUgYmV0d2VlbiAtOTAgYW5kIDkwJyk7XHJcbiAgICB9XHJcbiAgICBpZiAobG9uZ2l0dWRlIDwgLTE4MCB8fCBsb25naXR1ZGUgPiAxODApIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdMb25naXR1ZGUgbXVzdCBiZSBiZXR3ZWVuIC0xODAgYW5kIDE4MCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubGF0aXR1ZGUgPSBsYXRpdHVkZTtcclxuICAgIHRoaXMubG9uZ2l0dWRlID0gbG9uZ2l0dWRlO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGN1cnJlbnQob3B0aW9ucz86IHsgZW5hYmxlSGlnaEFjY3VyYWN5PzogYm9vbGVhbiB9KTogUHJvbWlzZTxGbW9kZUdlb1BvaW50PiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKFxyXG4gICAgICAgIChwb3NpdGlvbikgPT4ge1xyXG4gICAgICAgICAgcmVzb2x2ZShuZXcgRm1vZGVHZW9Qb2ludChcclxuICAgICAgICAgICAgcG9zaXRpb24uY29vcmRzLmxhdGl0dWRlLFxyXG4gICAgICAgICAgICBwb3NpdGlvbi5jb29yZHMubG9uZ2l0dWRlXHJcbiAgICAgICAgICApKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSxcclxuICAgICAgICBvcHRpb25zXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGtpbG9tZXRlcnNUbyhwb2ludDogRm1vZGVHZW9Qb2ludCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsY3VsYXRlRGlzdGFuY2UocG9pbnQsICdraWxvbWV0ZXJzJyk7XHJcbiAgfVxyXG5cclxuICBtaWxlc1RvKHBvaW50OiBGbW9kZUdlb1BvaW50KTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jYWxjdWxhdGVEaXN0YW5jZShwb2ludCwgJ21pbGVzJyk7XHJcbiAgfVxyXG5cclxuICByYWRpYW5zVG8ocG9pbnQ6IEZtb2RlR2VvUG9pbnQpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGN1bGF0ZURpc3RhbmNlKHBvaW50LCAncmFkaWFucycpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2FsY3VsYXRlRGlzdGFuY2UocG9pbnQ6IEZtb2RlR2VvUG9pbnQsIHVuaXQ6ICdraWxvbWV0ZXJzJyB8ICdtaWxlcycgfCAncmFkaWFucycpOiBudW1iZXIge1xyXG4gICAgY29uc3QgZWFydGhSYWRpdXMgPSB7XHJcbiAgICAgIGtpbG9tZXRlcnM6IDYzNzEsXHJcbiAgICAgIG1pbGVzOiAzOTU5LFxyXG4gICAgICByYWRpYW5zOiAxXHJcbiAgICB9W3VuaXRdO1xyXG5cclxuICAgIGNvbnN0IGRMYXQgPSAocG9pbnQubGF0aXR1ZGUgLSB0aGlzLmxhdGl0dWRlKSAqIE1hdGguUEkgLyAxODA7XHJcbiAgICBjb25zdCBkTG9uID0gKHBvaW50LmxvbmdpdHVkZSAtIHRoaXMubG9uZ2l0dWRlKSAqIE1hdGguUEkgLyAxODA7XHJcbiAgICBjb25zdCBhID1cclxuICAgICAgTWF0aC5zaW4oZExhdCAvIDIpICogTWF0aC5zaW4oZExhdCAvIDIpICtcclxuICAgICAgTWF0aC5jb3ModGhpcy5sYXRpdHVkZSAqIE1hdGguUEkgLyAxODApICpcclxuICAgICAgTWF0aC5jb3MocG9pbnQubGF0aXR1ZGUgKiBNYXRoLlBJIC8gMTgwKSAqXHJcbiAgICAgIE1hdGguc2luKGRMb24gLyAyKSAqIE1hdGguc2luKGRMb24gLyAyKTtcclxuICAgIGNvbnN0IGMgPSAyICogTWF0aC5hdGFuMihNYXRoLnNxcnQoYSksIE1hdGguc3FydCgxIC0gYSkpO1xyXG4gICAgcmV0dXJuIGVhcnRoUmFkaXVzICogYztcclxuICB9XHJcblxyXG4gIHRvSlNPTigpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIF9fdHlwZTogJ0dlb1BvaW50JyxcclxuICAgICAgbGF0aXR1ZGU6IHRoaXMubGF0aXR1ZGUsXHJcbiAgICAgIGxvbmdpdHVkZTogdGhpcy5sb25naXR1ZGVcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+
2
+ /**
3
+ * @copyright © 未来飞马 © 未来全栈 www.fmode.cn
4
+ * 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
5
+ * 保留所有权利 All Rights Reserved.
6
+ * /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/core/parse/datatype/geopoint.mjs
7
+ */
8
+ export class FmodeGeoPoint{static{this._instance=null}static bindInstance(t){this._instance=t}constructor(t,e){if(this.__type="GeoPoint",t<-90||t>90)throw new Error("Latitude must be between -90 and 90");if(e<-180||e>180)throw new Error("Longitude must be between -180 and 180");this.latitude=t,this.longitude=e}static current(t){return new Promise(((e,i)=>{navigator.geolocation.getCurrentPosition((t=>{e(new FmodeGeoPoint(t.coords.latitude,t.coords.longitude))}),(t=>i(t)),t)}))}kilometersTo(t){return this._calculateDistance(t,"kilometers")}milesTo(t){return this._calculateDistance(t,"miles")}radiansTo(t){return this._calculateDistance(t,"radians")}_calculateDistance(t,e){const i={kilometers:6371,miles:3959,radians:1}[e],a=(t.latitude-this.latitude)*Math.PI/180,n=(t.longitude-this.longitude)*Math.PI/180,s=Math.sin(a/2)*Math.sin(a/2)+Math.cos(this.latitude*Math.PI/180)*Math.cos(t.latitude*Math.PI/180)*Math.sin(n/2)*Math.sin(n/2);return i*(2*Math.atan2(Math.sqrt(s),Math.sqrt(1-s)))}toJSON(){return{__type:"GeoPoint",latitude:this.latitude,longitude:this.longitude}}}
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9jb3JlL3BhcnNlL2RhdGF0eXBlL2dlb3BvaW50Lm1qcw==`
10
+
@@ -1,56 +1,10 @@
1
- import { FmodeQuery } from "../fmode.query";
2
- // ==================== FmodeRelation ====================
3
- export class FmodeRelation {
4
- static { this._instance = null; }
5
- static bindInstance(instance) {
6
- this._instance = instance;
7
- }
8
- constructor(parent, key) {
9
- this.__type = 'Relation';
10
- this.parent = parent;
11
- this.key = key;
12
- this.className = parent.className;
13
- }
14
- add(objects) {
15
- if (!this.parent.id) {
16
- throw new Error('Cannot add relation to unsaved object');
17
- }
18
- // Implementation for adding relations
19
- if (Array.isArray(objects)) {
20
- // Map approach for array
21
- const pointers = objects.map(obj => {
22
- if (typeof obj.toPointer !== 'function') {
23
- throw new Error('Object does not have toPointer method');
24
- }
25
- return obj.toPointer();
26
- });
27
- // Use pointers array for API call
28
- }
29
- else {
30
- // Direct approach for single object
31
- if (typeof objects.toPointer !== 'function') {
32
- throw new Error('Object does not have toPointer method');
33
- }
34
- const pointer = objects.toPointer();
35
- // Use pointer for API call
36
- }
37
- }
38
- remove(objects) {
39
- if (!this.parent.id) {
40
- throw new Error('Cannot remove relation from unsaved object');
41
- }
42
- // Implementation for removing relations
43
- const pointers = objects.map(obj => obj.toPointer());
44
- // Make API call to remove relations
45
- }
46
- query() {
47
- return new FmodeQuery(this.className).relatedTo(this.parent, this.key);
48
- }
49
- toJSON() {
50
- return {
51
- __type: 'Relation',
52
- className: this.className
53
- };
54
- }
55
- }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2NvcmUvcGFyc2UvZGF0YXR5cGUvcmVsYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzVDLDBEQUEwRDtBQUMxRCxNQUFNLE9BQU8sYUFBYTthQUNmLGNBQVMsR0FBZSxJQUFJLEFBQW5CLENBQW9CO0lBRXRDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBYTtRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM1QixDQUFDO0lBUUQsWUFBWSxNQUFtQixFQUFFLEdBQVc7UUFONUMsV0FBTSxHQUFHLFVBQW1CLENBQUM7UUFPM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUVELEdBQUcsQ0FBQyxPQUFnQjtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUVHLHNDQUFzQztRQUN0QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN6Qix5QkFBeUI7WUFDekIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxPQUFPLEdBQUcsQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztnQkFDN0QsQ0FBQztnQkFDRCxPQUFPLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMzQixDQUFDLENBQUMsQ0FBQztZQUNILGtDQUFrQztRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNKLG9DQUFvQztZQUNwQyxJQUFJLE9BQU8sT0FBTyxDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1lBQzdELENBQUM7WUFDRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEMsMkJBQTJCO1FBQy9CLENBQUM7SUFDTCxDQUFDO0lBR0gsTUFBTSxDQUFDLE9BQVk7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFFRCx3Q0FBd0M7UUFDeEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELG9DQUFvQztJQUN0QyxDQUFDO0lBR0QsS0FBSztRQUNILE9BQU8sSUFBSSxVQUFVLENBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU87WUFDTCxNQUFNLEVBQUUsVUFBVTtZQUNsQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDMUIsQ0FBQztJQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbW9kZVF1ZXJ5IH0gZnJvbSBcIi4uL2Ztb2RlLnF1ZXJ5XCI7XHJcbmltcG9ydCB7IEZtb2RlT2JqZWN0IH0gZnJvbSBcIi4uL2Ztb2RlLm9iamVjdFwiO1xyXG5cclxuLy8gPT09PT09PT09PT09PT09PT09PT0gRm1vZGVSZWxhdGlvbiA9PT09PT09PT09PT09PT09PT09PVxyXG5leHBvcnQgY2xhc3MgRm1vZGVSZWxhdGlvbjxUIGV4dGVuZHMgRm1vZGVPYmplY3Q+IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueSB8IG51bGwgPSBudWxsO1xyXG4gIFxyXG4gIHN0YXRpYyBiaW5kSW5zdGFuY2UoaW5zdGFuY2U6IGFueSkge1xyXG4gICAgdGhpcy5faW5zdGFuY2UgPSBpbnN0YW5jZTtcclxuICB9XHJcblxyXG4gIF9fdHlwZSA9ICdSZWxhdGlvbicgYXMgY29uc3Q7XHJcbiAgY2xhc3NOYW1lOiBzdHJpbmc7XHJcbiAgcGFyZW50OiBGbW9kZU9iamVjdDtcclxuICBrZXk6IHN0cmluZztcclxuXHJcbiAgXHJcbiAgY29uc3RydWN0b3IocGFyZW50OiBGbW9kZU9iamVjdCwga2V5OiBzdHJpbmcpIHtcclxuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xyXG4gICAgdGhpcy5rZXkgPSBrZXk7XHJcbiAgICB0aGlzLmNsYXNzTmFtZSA9IHBhcmVudC5jbGFzc05hbWU7XHJcbiAgfVxyXG5cclxuICBhZGQob2JqZWN0czogVCB8IFRbXSk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnBhcmVudC5pZCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGFkZCByZWxhdGlvbiB0byB1bnNhdmVkIG9iamVjdCcpO1xyXG4gICAgfVxyXG5cclxuICAgICAgICAvLyBJbXBsZW1lbnRhdGlvbiBmb3IgYWRkaW5nIHJlbGF0aW9uc1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iamVjdHMpKSB7XHJcbiAgICAgICAgICAgIC8vIE1hcCBhcHByb2FjaCBmb3IgYXJyYXlcclxuICAgICAgICAgICAgY29uc3QgcG9pbnRlcnMgPSBvYmplY3RzLm1hcChvYmogPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmoudG9Qb2ludGVyICE9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdPYmplY3QgZG9lcyBub3QgaGF2ZSB0b1BvaW50ZXIgbWV0aG9kJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb2JqLnRvUG9pbnRlcigpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLy8gVXNlIHBvaW50ZXJzIGFycmF5IGZvciBBUEkgY2FsbFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIERpcmVjdCBhcHByb2FjaCBmb3Igc2luZ2xlIG9iamVjdFxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIG9iamVjdHMudG9Qb2ludGVyICE9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ09iamVjdCBkb2VzIG5vdCBoYXZlIHRvUG9pbnRlciBtZXRob2QnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBwb2ludGVyID0gb2JqZWN0cy50b1BvaW50ZXIoKTtcclxuICAgICAgICAgICAgLy8gVXNlIHBvaW50ZXIgZm9yIEFQSSBjYWxsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICBcclxuICByZW1vdmUob2JqZWN0czogVFtdKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMucGFyZW50LmlkKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHJlbW92ZSByZWxhdGlvbiBmcm9tIHVuc2F2ZWQgb2JqZWN0Jyk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIEltcGxlbWVudGF0aW9uIGZvciByZW1vdmluZyByZWxhdGlvbnNcclxuICAgIGNvbnN0IHBvaW50ZXJzID0gb2JqZWN0cy5tYXAob2JqID0+IG9iai50b1BvaW50ZXIoKSk7XHJcbiAgICAvLyBNYWtlIEFQSSBjYWxsIHRvIHJlbW92ZSByZWxhdGlvbnNcclxuICB9XHJcblxyXG5cclxuICBxdWVyeSgpOiBGbW9kZVF1ZXJ5PFQ+IHtcclxuICAgIHJldHVybiBuZXcgRm1vZGVRdWVyeTxUPih0aGlzLmNsYXNzTmFtZSkucmVsYXRlZFRvKHRoaXMucGFyZW50LCB0aGlzLmtleSk7XHJcbiAgfVxyXG5cclxuICB0b0pTT04oKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBfX3R5cGU6ICdSZWxhdGlvbicsXHJcbiAgICAgIGNsYXNzTmFtZTogdGhpcy5jbGFzc05hbWVcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+
2
+ /**
3
+ * @copyright © 未来飞马 © 未来全栈 www.fmode.cn
4
+ * 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
5
+ * 保留所有权利 All Rights Reserved.
6
+ * /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/core/parse/datatype/relation.mjs
7
+ */
8
+ import{FmodeQuery}from"../fmode.query";export class FmodeRelation{static{this._instance=null}static bindInstance(t){this._instance=t}constructor(t,e){this.__type="Relation",this.parent=t,this.key=e,this.className=t.className}add(t){if(!this.parent.id)throw new Error("Cannot add relation to unsaved object");if(Array.isArray(t)){t.map((t=>{if("function"!=typeof t.toPointer)throw new Error("Object does not have toPointer method");return t.toPointer()}))}else{if("function"!=typeof t.toPointer)throw new Error("Object does not have toPointer method");t.toPointer()}}remove(t){if(!this.parent.id)throw new Error("Cannot remove relation from unsaved object");t.map((t=>t.toPointer()))}query(){return new FmodeQuery(this.className).relatedTo(this.parent,this.key)}toJSON(){return{__type:"Relation",className:this.className}}}
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9jb3JlL3BhcnNlL2RhdGF0eXBlL3JlbGF0aW9uLm1qcw==`
10
+
@@ -1,232 +1,10 @@
1
- import { FmodeRelation } from "./datatype/relation";
2
- export class FmodeObject {
3
- static { this._instance = null; }
4
- static bindInstance(instance) {
5
- this._instance = instance;
6
- }
7
- constructor(className) {
8
- this.data = {};
9
- this.className = className;
10
- }
11
- // MARK: - 基本方法
12
- static extend(className) {
13
- return class extends FmodeObject {
14
- constructor() {
15
- super(className);
16
- }
17
- };
18
- }
19
- toPointer() {
20
- return {
21
- __type: 'Pointer',
22
- className: this.className,
23
- objectId: this.id
24
- };
25
- }
26
- // Update the toJSON method to properly format dates and pointers
27
- toJSON() {
28
- const json = {
29
- __type: 'Object',
30
- className: this.className,
31
- ...this.data
32
- };
33
- if (this.id) {
34
- json.objectId = this.id;
35
- }
36
- // Format dates properly
37
- try {
38
- if (this.createdAt) {
39
- if (typeof this.createdAt == "string") {
40
- this.createdAt = new Date(this.createdAt);
41
- }
42
- json.createdAt = { __type: 'Date', iso: this.createdAt.toISOString() };
43
- }
44
- if (this.updatedAt) {
45
- if (typeof this.updatedAt == "string") {
46
- this.updatedAt = new Date(this.updatedAt);
47
- }
48
- console.log(this.updatedAt);
49
- json.updatedAt = { __type: 'Date', iso: this.updatedAt.toISOString() };
50
- }
51
- }
52
- catch (err) { }
53
- // Handle ACL
54
- if (this.ACL) {
55
- json.ACL = this.ACL;
56
- }
57
- return json;
58
- }
59
- // MARK: - 属性操作
60
- get(key) {
61
- return this.data[key];
62
- }
63
- set(key, value) {
64
- if (typeof key === 'object') {
65
- Object.assign(this.data, key);
66
- }
67
- else {
68
- this.data[key] = value;
69
- }
70
- return this;
71
- }
72
- unset(key) {
73
- delete this.data[key];
74
- return this;
75
- }
76
- increment(key, amount = 1) {
77
- const current = this.get(key) || 0;
78
- this.set(key, current + amount);
79
- return this;
80
- }
81
- add(key, items) {
82
- const current = this.get(key) || [];
83
- this.set(key, [...current, ...items]);
84
- return this;
85
- }
86
- addUnique(key, items) {
87
- const current = new Set(this.get(key) || new Set());
88
- items.forEach(item => current.add(item));
89
- this.set(key, Array.from(current));
90
- return this;
91
- }
92
- remove(key, items) {
93
- const current = this.get(key) || [];
94
- const toRemove = new Set(items);
95
- this.set(key, current.filter((item) => !toRemove.has(item)));
96
- return this;
97
- }
98
- // MARK: - CRUD 操作
99
- // Update the save method to use the proper toJSON format
100
- async save(options) {
101
- if (!FmodeObject._instance)
102
- throw new Error('Not initialized');
103
- const method = this.id ? 'PUT' : 'POST';
104
- let url = `${FmodeObject._instance.serverURL}/classes/${this.className}`;
105
- if (this.id)
106
- url += `/${this.id}`;
107
- const headers = {
108
- 'Content-Type': 'application/json',
109
- 'X-Parse-Application-Id': FmodeObject._instance.appId
110
- };
111
- if (options?.useMasterKey && FmodeObject._instance.config.masterKey) {
112
- headers['X-Parse-Master-Key'] = FmodeObject._instance.config.masterKey;
113
- }
114
- // Get clean JSON representation
115
- const data = this.toJSON();
116
- delete data.createdAt; // These are handled by server
117
- delete data.updatedAt;
118
- delete data.__type;
119
- delete data.className;
120
- // Convert any nested FmodeObjects to pointers
121
- for (const key in data) {
122
- if (this.get(key)?.toPointer) {
123
- data[key] = this.get(key).toPointer();
124
- }
125
- }
126
- const response = await fetch(url, {
127
- method,
128
- headers,
129
- body: JSON.stringify(data)
130
- });
131
- console.log(JSON.stringify(data));
132
- const result = await response.json();
133
- console.log(result);
134
- if (result.error)
135
- throw new Error(result.error);
136
- this.id = result.objectId || this.id;
137
- this.createdAt = new Date(result.createdAt || this.createdAt);
138
- this.updatedAt = new Date(result.updatedAt || this.updatedAt);
139
- return this;
140
- }
141
- async destroy(options) {
142
- if (!this.id)
143
- throw new Error('Cannot destroy unsaved object');
144
- if (!FmodeObject._instance)
145
- throw new Error('Not initialized');
146
- const headers = {
147
- 'X-Parse-Application-Id': FmodeObject._instance.appId
148
- };
149
- if (options?.useMasterKey && FmodeObject._instance.config.masterKey) {
150
- headers['X-Parse-Master-Key'] = FmodeObject._instance.config.masterKey;
151
- }
152
- const url = `${FmodeObject._instance.serverURL}/classes/${this.className}/${this.id}`;
153
- const response = await fetch(url, {
154
- method: 'DELETE',
155
- headers
156
- });
157
- if (!response.ok) {
158
- const result = await response.json();
159
- throw new Error(result.error || 'Failed to delete object');
160
- }
161
- }
162
- // MARK: - 静态方法
163
- static async create(className, attributes, options) {
164
- const obj = new this(className);
165
- obj.set(attributes);
166
- return obj.save(options);
167
- }
168
- static async fetchAll(objects, options) {
169
- if (!FmodeObject._instance)
170
- throw new Error('Not initialized');
171
- if (objects.length === 0)
172
- return [];
173
- const headers = {
174
- 'Content-Type': 'application/json',
175
- 'X-Parse-Application-Id': FmodeObject._instance.appId
176
- };
177
- if (options?.useMasterKey && FmodeObject._instance.config.masterKey) {
178
- headers['X-Parse-Master-Key'] = FmodeObject._instance.config.masterKey;
179
- }
180
- const url = `${FmodeObject._instance.serverURL}/batch`;
181
- const requests = objects.map(obj => ({
182
- method: 'GET',
183
- path: `/classes/${obj.className}/${obj.id}`
184
- }));
185
- const response = await fetch(url, {
186
- method: 'POST',
187
- headers,
188
- body: JSON.stringify({ requests })
189
- });
190
- const results = await response.json();
191
- if (results.error)
192
- throw new Error(results.error);
193
- return results.map((result, index) => {
194
- const obj = objects[index];
195
- obj.set(result.success);
196
- return obj;
197
- });
198
- }
199
- // MARK: - 关系操作
200
- relation(key) {
201
- return new FmodeRelation(this, key);
202
- }
203
- // MARK: - 文件处理
204
- static async fromFile(name, data, type) {
205
- if (!FmodeObject._instance)
206
- throw new Error('Not initialized');
207
- const fileData = new FormData();
208
- fileData.append('file', data, name);
209
- const headers = {
210
- 'X-Parse-Application-Id': FmodeObject._instance.appId
211
- };
212
- const url = `${FmodeObject._instance.serverURL}/files/${name}`;
213
- const response = await fetch(url, {
214
- method: 'POST',
215
- headers,
216
- body: fileData
217
- });
218
- const result = await response.json();
219
- if (result.error)
220
- throw new Error(result.error);
221
- return {
222
- __type: 'File',
223
- name: result.name,
224
- url: result.url
225
- };
226
- }
227
- }
228
- // 添加静态方法到类上
229
- // FmodeObject.registerSubclass = function(className: string, clazz: typeof FmodeObject) {
230
- // // 子类注册逻辑
231
- // };
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm1vZGUub2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi9jb3JlL3BhcnNlL2Ztb2RlLm9iamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUF1QnBELE1BQU0sT0FBTyxXQUFXO2FBQ2YsY0FBUyxHQUFlLElBQUksQUFBbkIsQ0FBb0I7SUFFcEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFhO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFTRCxZQUFZLFNBQWlCO1FBRjdCLFNBQUksR0FBd0IsRUFBRSxDQUFDO1FBRzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFRCxlQUFlO0lBRWYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFpQjtRQUM3QixPQUFPLEtBQU0sU0FBUSxXQUFXO1lBQzlCO2dCQUNFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNuQixDQUFDO1NBQ0ssQ0FBQztJQUNYLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTztZQUNMLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUc7U0FDbkIsQ0FBQztJQUNKLENBQUM7SUFFRCxpRUFBaUU7SUFDbkUsTUFBTTtRQUNKLE1BQU0sSUFBSSxHQUF3QjtZQUNoQyxNQUFNLEVBQUUsUUFBUTtZQUNoQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsR0FBRyxJQUFJLENBQUMsSUFBSTtTQUNiLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMx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TSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRS9ELE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDaEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXBDLE1BQU0sT0FBTyxHQUEyQjtZQUN0Qyx3QkFBd0IsRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUs7U0FDdEQsQ0FBQztRQUVGLE1BQU0sR0FBRyxHQUFHLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDL0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsT0FBTztZQUNQLElBQUksRUFBRSxRQUFRO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckMsSUFBSSxNQUFNLENBQUMsS0FBSztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhELE9BQU87WUFDTCxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7U0FDaEIsQ0FBQztJQUNKLENBQUM7O0FBR0gsWUFBWTtBQUNaLDBGQUEwRjtBQUMxRixjQUFjO0FBQ2QsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZtb2RlUXVlcnkgfSBmcm9tIFwiLi9mbW9kZS5xdWVyeVwiO1xyXG5pbXBvcnQgeyBGbW9kZUFDTCB9IGZyb20gXCIuL2RhdGF0eXBlL2FjbFwiO1xyXG5pbXBvcnQgeyBGbW9kZUdlb1BvaW50IH0gZnJvbSBcIi4vZGF0YXR5cGUvZ2VvcG9pbnRcIjtcclxuaW1wb3J0IHsgRm1vZGVSZWxhdGlvbiB9IGZyb20gXCIuL2RhdGF0eXBlL3JlbGF0aW9uXCI7XHJcblxyXG4vLyA9PT09PT09PT09PT09PT09PT09PSBDb3JlIFR5cGVzID09PT09PT09PT09PT09PT09PT09XHJcbnR5cGUgQUNMID0gUmVjb3JkPHN0cmluZywgeyByZWFkOiBib29sZWFuOyB3cml0ZTogYm9vbGVhbiB9PjtcclxudHlwZSBGaWxlID0geyBfX3R5cGU6ICdGaWxlJzsgbmFtZTogc3RyaW5nOyB1cmw6IHN0cmluZyB9O1xyXG50eXBlIEdlb1BvaW50ID0gRm1vZGVHZW9Qb2ludHx7IF9fdHlwZTogJ0dlb1BvaW50JzsgbGF0aXR1ZGU6IG51bWJlcjsgbG9uZ2l0dWRlOiBudW1iZXIgfTtcclxudHlwZSBSZWxhdGlvbjxUIGV4dGVuZHMgRm1vZGVPYmplY3Q+ID0ge1xyXG4gIF9fdHlwZTogJ1JlbGF0aW9uJztcclxuICBjbGFzc05hbWU6IHN0cmluZztcclxuICBhZGQ6IChvYmplY3RzOiBUW10pID0+IHZvaWQ7XHJcbiAgcmVtb3ZlOiAob2JqZWN0czogVFtdKSA9PiB2b2lkO1xyXG4gIHF1ZXJ5OiAoKSA9PiBGbW9kZVF1ZXJ5PFQ+O1xyXG59O1xyXG5cclxudHlwZSBQb2ludGVyID0geyBfX3R5cGU6ICdQb2ludGVyJzsgY2xhc3NOYW1lOiBzdHJpbmc7IG9iamVjdElkOiBzdHJpbmcgfTtcclxudHlwZSBCYXNlQXR0cmlidXRlcyA9IHtcclxuICBpZD86IHN0cmluZztcclxuICBjcmVhdGVkQXQ/OiBEYXRlO1xyXG4gIHVwZGF0ZWRBdD86IERhdGU7XHJcbiAgQUNMPzogQUNMIHwgRm1vZGVBQ0w7XHJcbn07XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEZtb2RlT2JqZWN0IHtcclxuICBzdGF0aWMgX2luc3RhbmNlOiBhbnkgfCBudWxsID0gbnVsbDtcclxuICBcclxuICBzdGF0aWMgYmluZEluc3RhbmNlKGluc3RhbmNlOiBhbnkpIHtcclxuICAgIHRoaXMuX2luc3RhbmNlID0gaW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICBjbGFzc05hbWU6IHN0cmluZztcclxuICBpZD86IHN0cmluZztcclxuICBjcmVhdGVkQXQ/OiBEYXRlO1xyXG4gIHVwZGF0ZWRBdD86IERhdGU7XHJcbiAgQUNMPzogQUNMO1xyXG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuXHJcbiAgY29uc3RydWN0b3IoY2xhc3NOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xyXG4gIH1cclxuXHJcbiAgLy8gTUFSSzogLSDln7rmnKzmlrnms5VcclxuXHJcbiAgc3RhdGljIGV4dGVuZChjbGFzc05hbWU6IHN0cmluZyk6IHR5cGVvZiBGbW9kZU9iamVjdCB7XHJcbiAgICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBGbW9kZU9iamVjdCB7XHJcbiAgICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKGNsYXNzTmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH0gYXMgYW55O1xyXG4gIH1cclxuXHJcbiAgdG9Qb2ludGVyKCk6IFBvaW50ZXIge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgX190eXBlOiAnUG9pbnRlcicsXHJcbiAgICAgIGNsYXNzTmFtZTogdGhpcy5jbGFzc05hbWUsXHJcbiAgICAgIG9iamVjdElkOiB0aGlzLmlkIVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vIFVwZGF0ZSB0aGUgdG9KU09OIG1ldGhvZCB0byBwcm9wZXJseSBmb3JtYXQgZGF0ZXMgYW5kIHBvaW50ZXJzXHJcbnRvSlNPTigpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuICBjb25zdCBqc29uOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xyXG4gICAgX190eXBlOiAnT2JqZWN0JyxcclxuICAgIGNsYXNzTmFtZTogdGhpcy5jbGFzc05hbWUsXHJcbiAgICAuLi50aGlzLmRhdGFcclxuICB9O1xyXG5cclxuICBpZiAodGhpcy5pZCkge1xyXG4gICAganNvbi5vYmplY3RJZCA9IHRoaXMuaWQ7XHJcbiAgfVxyXG5cclxuICAvLyBGb3JtYXQgZGF0ZXMgcHJvcGVybHlcclxuICB0cnl7XHJcbiAgICBpZiAodGhpcy5jcmVhdGVkQXQpIHtcclxuICAgICAgICBpZih0eXBlb2YgdGhpcy5jcmVhdGVkQXQ9PVwic3RyaW5nXCIpe1xyXG4gICAgICAgIHRoaXMuY3JlYXRlZEF0ID0gbmV3IERhdGUodGhpcy5jcmVhdGVkQXQpXHJcbiAgICAgIH1cclxuICAgICAganNvbi5jcmVhdGVkQXQgPSB7IF9fdHlwZTogJ0RhdGUnLCBpc286IHRoaXMuY3JlYXRlZEF0LnRvSVNPU3RyaW5nKCkgfTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnVwZGF0ZWRBdCkge1xyXG4gICAgICBpZih0eXBlb2YgdGhpcy51cGRhdGVkQXQ9PVwic3RyaW5nXCIpe1xyXG4gICAgICAgIHRoaXMudXBkYXRlZEF0ID0gbmV3IERhdGUodGhpcy51cGRhdGVkQXQpXHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS5sb2codGhpcy51cGRhdGVkQXQpXHJcbiAgICAgIGpzb24udXBkYXRlZEF0ID0geyBfX3R5cGU6ICdEYXRlJywgaXNvOiB0aGlzLnVwZGF0ZWRBdC50b0lTT1N0cmluZygpIH07XHJcbiAgICB9XHJcbiAgfWNhdGNoKGVycil7fVxyXG4gIFxyXG4gIC8vIEhhbmRsZSBBQ0xcclxuICBpZiAodGhpcy5BQ0wpIHtcclxuICAgIGpzb24uQUNMID0gdGhpcy5BQ0w7XHJcbiAgfVxyXG5cclxuICByZXR1cm4ganNvbjtcclxufVxyXG5cclxuXHJcbiAgLy8gTUFSSzogLSDlsZ7mgKfmk43kvZxcclxuXHJcbiAgZ2V0KGtleTogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFba2V5XTtcclxuICB9XHJcblxyXG4gIHNldChrZXk6IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIGFueT4sIHZhbHVlPzogYW55KTogdGhpcyB7XHJcbiAgICBpZiAodHlwZW9mIGtleSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmRhdGEsIGtleSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGFba2V5XSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICB1bnNldChrZXk6IHN0cmluZyk6IHRoaXMge1xyXG4gICAgZGVsZXRlIHRoaXMuZGF0YVtrZXldO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBpbmNyZW1lbnQoa2V5OiBzdHJpbmcsIGFtb3VudCA9IDEpOiB0aGlzIHtcclxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmdldChrZXkpIHx8IDA7XHJcbiAgICB0aGlzLnNldChrZXksIGN1cnJlbnQgKyBhbW91bnQpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBhZGQoa2V5OiBzdHJpbmcsIGl0ZW1zOiBhbnlbXSk6IHRoaXMge1xyXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuZ2V0KGtleSkgfHwgW107XHJcbiAgICB0aGlzLnNldChrZXksIFsuLi5jdXJyZW50LCAuLi5pdGVtc10pO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBhZGRVbmlxdWUoa2V5OiBzdHJpbmcsIGl0ZW1zOiBhbnlbXSk6IHRoaXMge1xyXG4gICAgY29uc3QgY3VycmVudCA9IG5ldyBTZXQodGhpcy5nZXQoa2V5KSB8fCBuZXcgU2V0KCkpO1xyXG4gICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IGN1cnJlbnQuYWRkKGl0ZW0pKTtcclxuICAgIHRoaXMuc2V0KGtleSwgQXJyYXkuZnJvbShjdXJyZW50KSk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHJlbW92ZShrZXk6IHN0cmluZywgaXRlbXM6IGFueVtdKTogdGhpcyB7XHJcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5nZXQoa2V5KSB8fCBbXTtcclxuICAgIGNvbnN0IHRvUmVtb3ZlID0gbmV3IFNldChpdGVtcyk7XHJcbiAgICB0aGlzLnNldChrZXksIGN1cnJlbnQuZmlsdGVyKChpdGVtOiBhbnkpID0+ICF0b1JlbW92ZS5oYXMoaXRlbSkpKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLy8gTUFSSzogLSBDUlVEIOaTjeS9nFxyXG5cclxuLy8gVXBkYXRlIHRoZSBzYXZlIG1ldGhvZCB0byB1c2UgdGhlIHByb3BlciB0b0pTT04gZm9ybWF0XHJcbmFzeW5jIHNhdmUob3B0aW9ucz86IHsgdXNlTWFzdGVyS2V5PzogYm9vbGVhbiB9KTogUHJvbWlzZTx0aGlzPiB7XHJcbiAgaWYgKCFGbW9kZU9iamVjdC5faW5zdGFuY2UpIHRocm93IG5ldyBFcnJvcignTm90IGluaXRpYWxpemVkJyk7XHJcblxyXG4gIGNvbnN0IG1ldGhvZCA9IHRoaXMuaWQgPyAnUFVUJyA6ICdQT1NUJztcclxuICBsZXQgdXJsID0gYCR7Rm1vZGVPYmplY3QuX2luc3RhbmNlLnNlcnZlclVSTH0vY2xhc3Nlcy8ke3RoaXMuY2xhc3NOYW1lfWA7XHJcbiAgaWYgKHRoaXMuaWQpIHVybCArPSBgLyR7dGhpcy5pZH1gO1xyXG5cclxuICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICdYLVBhcnNlLUFwcGxpY2F0aW9uLUlkJzogRm1vZGVPYmplY3QuX2luc3RhbmNlLmFwcElkXHJcbiAgfTtcclxuXHJcbiAgaWYgKG9wdGlvbnM/LnVzZU1hc3RlcktleSAmJiBGbW9kZU9iamVjdC5faW5zdGFuY2UuY29uZmlnLm1hc3RlcktleSkge1xyXG4gICAgaGVhZGVyc1snWC1QYXJzZS1NYXN0ZXItS2V5J10gPSBGbW9kZU9iamVjdC5faW5zdGFuY2UuY29uZmlnLm1hc3RlcktleTtcclxuICB9XHJcblxyXG4gIC8vIEdldCBjbGVhbiBKU09OIHJlcHJlc2VudGF0aW9uXHJcbiAgY29uc3QgZGF0YSA9IHRoaXMudG9KU09OKCk7XHJcbiAgZGVsZXRlIGRhdGEuY3JlYXRlZEF0OyAvLyBUaGVzZSBhcmUgaGFuZGxlZCBieSBzZXJ2ZXJcclxuICBkZWxldGUgZGF0YS51cGRhdGVkQXQ7XHJcbiAgZGVsZXRlIGRhdGEuX190eXBlO1xyXG4gIGRlbGV0ZSBkYXRhLmNsYXNzTmFtZTtcclxuXHJcbiAgLy8gQ29udmVydCBhbnkgbmVzdGVkIEZtb2RlT2JqZWN0cyB0byBwb2ludGVyc1xyXG4gIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcclxuICAgIGlmICh0aGlzLmdldChrZXkpPy50b1BvaW50ZXIpIHtcclxuICAgICAgZGF0YVtrZXldID0gdGhpcy5nZXQoa2V5KS50b1BvaW50ZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XHJcbiAgICBtZXRob2QsXHJcbiAgICBoZWFkZXJzLFxyXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoZGF0YSlcclxuICB9KTtcclxuXHJcbiAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZGF0YSkpXHJcblxyXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuICBjb25zb2xlLmxvZyhyZXN1bHQpXHJcbiAgaWYgKHJlc3VsdC5lcnJvcikgdGhyb3cgbmV3IEVycm9yKHJlc3VsdC5lcnJvcik7XHJcblxyXG4gIHRoaXMuaWQgPSByZXN1bHQub2JqZWN0SWQgfHwgdGhpcy5pZDtcclxuICB0aGlzLmNyZWF0ZWRBdCA9IG5ldyBEYXRlKHJlc3VsdC5jcmVhdGVkQXQgfHwgdGhpcy5jcmVhdGVkQXQpO1xyXG4gIHRoaXMudXBkYXRlZEF0ID0gbmV3IERhdGUocmVzdWx0LnVwZGF0ZWRBdCB8fCB0aGlzLnVwZGF0ZWRBdCk7XHJcbiAgcmV0dXJuIHRoaXM7XHJcbn1cclxuICBhc3luYyBkZXN0cm95KG9wdGlvbnM/OiB7IHVzZU1hc3RlcktleT86IGJvb2xlYW4gfSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLmlkKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZXN0cm95IHVuc2F2ZWQgb2JqZWN0Jyk7XHJcbiAgICBpZiAoIUZtb2RlT2JqZWN0Ll9pbnN0YW5jZSkgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW5pdGlhbGl6ZWQnKTtcclxuXHJcbiAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICAgICAnWC1QYXJzZS1BcHBsaWNhdGlvbi1JZCc6IEZtb2RlT2JqZWN0Ll9pbnN0YW5jZS5hcHBJZFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAob3B0aW9ucz8udXNlTWFzdGVyS2V5ICYmIEZtb2RlT2JqZWN0Ll9pbnN0YW5jZS5jb25maWcubWFzdGVyS2V5KSB7XHJcbiAgICAgIGhlYWRlcnNbJ1gtUGFyc2UtTWFzdGVyLUtleSddID0gRm1vZGVPYmplY3QuX2luc3RhbmNlLmNvbmZpZy5tYXN0ZXJLZXk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdXJsID0gYCR7Rm1vZGVPYmplY3QuX2luc3RhbmNlLnNlcnZlclVSTH0vY2xhc3Nlcy8ke3RoaXMuY2xhc3NOYW1lfS8ke3RoaXMuaWR9YDtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XHJcbiAgICAgIG1ldGhvZDogJ0RFTEVURScsXHJcbiAgICAgIGhlYWRlcnNcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IocmVzdWx0LmVycm9yIHx8ICdGYWlsZWQgdG8gZGVsZXRlIG9iamVjdCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTUFSSzogLSDpnZnmgIHmlrnms5VcclxuXHJcbiAgc3RhdGljIGFzeW5jIGNyZWF0ZTxUIGV4dGVuZHMgRm1vZGVPYmplY3Q+KFxyXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXHJcbiAgICBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxyXG4gICAgb3B0aW9ucz86IHsgdXNlTWFzdGVyS2V5PzogYm9vbGVhbiB9XHJcbiAgKTogUHJvbWlzZTxUPiB7XHJcbiAgICBjb25zdCBvYmogPSBuZXcgdGhpcyhjbGFzc05hbWUpIGFzIFQ7XHJcbiAgICBvYmouc2V0KGF0dHJpYnV0ZXMpO1xyXG4gICAgcmV0dXJuIG9iai5zYXZlKG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFzeW5jIGZldGNoQWxsPFQgZXh0ZW5kcyBGbW9kZU9iamVjdD4oXHJcbiAgICBvYmplY3RzOiBUW10sXHJcbiAgICBvcHRpb25zPzogeyB1c2VNYXN0ZXJLZXk/OiBib29sZWFuIH1cclxuICApOiBQcm9taXNlPFRbXT4ge1xyXG4gICAgaWYgKCFGbW9kZU9iamVjdC5faW5zdGFuY2UpIHRocm93IG5ldyBFcnJvcignTm90IGluaXRpYWxpemVkJyk7XHJcbiAgICBpZiAob2JqZWN0cy5sZW5ndGggPT09IDApIHJldHVybiBbXTtcclxuXHJcbiAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAnWC1QYXJzZS1BcHBsaWNhdGlvbi1JZCc6IEZtb2RlT2JqZWN0Ll9pbnN0YW5jZS5hcHBJZFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAob3B0aW9ucz8udXNlTWFzdGVyS2V5ICYmIEZtb2RlT2JqZWN0Ll9pbnN0YW5jZS5jb25maWcubWFzdGVyS2V5KSB7XHJcbiAgICAgIGhlYWRlcnNbJ1gtUGFyc2UtTWFzdGVyLUtleSddID0gRm1vZGVPYmplY3QuX2luc3RhbmNlLmNvbmZpZy5tYXN0ZXJLZXk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdXJsID0gYCR7Rm1vZGVPYmplY3QuX2luc3RhbmNlLnNlcnZlclVSTH0vYmF0Y2hgO1xyXG4gICAgY29uc3QgcmVxdWVzdHMgPSBvYmplY3RzLm1hcChvYmogPT4gKHtcclxuICAgICAgbWV0aG9kOiAnR0VUJyxcclxuICAgICAgcGF0aDogYC9jbGFzc2VzLyR7b2JqLmNsYXNzTmFtZX0vJHtvYmouaWR9YFxyXG4gICAgfSkpO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XHJcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICBoZWFkZXJzLFxyXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHJlcXVlc3RzIH0pXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gICAgaWYgKHJlc3VsdHMuZXJyb3IpIHRocm93IG5ldyBFcnJvcihyZXN1bHRzLmVycm9yKTtcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0cy5tYXAoKHJlc3VsdDogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGNvbnN0IG9iaiA9IG9iamVjdHNbaW5kZXhdO1xyXG4gICAgICBvYmouc2V0KHJlc3VsdC5zdWNjZXNzKTtcclxuICAgICAgcmV0dXJuIG9iajtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gTUFSSzogLSDlhbPns7vmk43kvZxcclxuXHJcbiAgcmVsYXRpb248VCBleHRlbmRzIEZtb2RlT2JqZWN0PihrZXk6IHN0cmluZyk6IEZtb2RlUmVsYXRpb248VD4ge1xyXG4gICAgcmV0dXJuIG5ldyBGbW9kZVJlbGF0aW9uPFQ+KHRoaXMsIGtleSk7XHJcbiAgfVxyXG5cclxuICAvLyBNQVJLOiAtIOaWh+S7tuWkhOeQhlxyXG5cclxuICBzdGF0aWMgYXN5bmMgZnJvbUZpbGUoXHJcbiAgICBuYW1lOiBzdHJpbmcsXHJcbiAgICBkYXRhOiBCbG9iIHwgRmlsZSB8IGFueSxcclxuICAgIHR5cGU/OiBzdHJpbmdcclxuICApOiBQcm9taXNlPEZpbGU+IHtcclxuICAgIGlmICghRm1vZGVPYmplY3QuX2luc3RhbmNlKSB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbml0aWFsaXplZCcpO1xyXG5cclxuICAgIGNvbnN0IGZpbGVEYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBmaWxlRGF0YS5hcHBlbmQoJ2ZpbGUnLCBkYXRhLCBuYW1lKTtcclxuXHJcbiAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICAgICAnWC1QYXJzZS1BcHBsaWNhdGlvbi1JZCc6IEZtb2RlT2JqZWN0Ll9pbnN0YW5jZS5hcHBJZFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB1cmwgPSBgJHtGbW9kZU9iamVjdC5faW5zdGFuY2Uuc2VydmVyVVJMfS9maWxlcy8ke25hbWV9YDtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XHJcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICBoZWFkZXJzLFxyXG4gICAgICBib2R5OiBmaWxlRGF0YVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gICAgaWYgKHJlc3VsdC5lcnJvcikgdGhyb3cgbmV3IEVycm9yKHJlc3VsdC5lcnJvcik7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgX190eXBlOiAnRmlsZScsXHJcbiAgICAgIG5hbWU6IHJlc3VsdC5uYW1lLFxyXG4gICAgICB1cmw6IHJlc3VsdC51cmxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcblxyXG4vLyDmt7vliqDpnZnmgIHmlrnms5XliLDnsbvkuIpcclxuLy8gRm1vZGVPYmplY3QucmVnaXN0ZXJTdWJjbGFzcyA9IGZ1bmN0aW9uKGNsYXNzTmFtZTogc3RyaW5nLCBjbGF6ejogdHlwZW9mIEZtb2RlT2JqZWN0KSB7XHJcbi8vICAgLy8g5a2Q57G75rOo5YaM6YC76L6RXHJcbi8vIH07Il19
1
+
2
+ /**
3
+ * @copyright © 未来飞马 © 未来全栈 www.fmode.cn
4
+ * 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
5
+ * 保留所有权利 All Rights Reserved.
6
+ * /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/core/parse/fmode.object.mjs
7
+ */
8
+ import{FmodeRelation}from"./datatype/relation";export class FmodeObject{static{this._instance=null}static bindInstance(t){this._instance=t}constructor(t){this.data={},this.className=t}static extend(t){return class extends FmodeObject{constructor(){super(t)}}}toPointer(){return{__type:"Pointer",className:this.className,objectId:this.id}}toJSON(){const t={__type:"Object",className:this.className,...this.data};this.id&&(t.objectId=this.id);try{this.createdAt&&("string"==typeof this.createdAt&&(this.createdAt=new Date(this.createdAt)),t.createdAt={__type:"Date",iso:this.createdAt.toISOString()}),this.updatedAt&&("string"==typeof this.updatedAt&&(this.updatedAt=new Date(this.updatedAt)),console.log(this.updatedAt),t.updatedAt={__type:"Date",iso:this.updatedAt.toISOString()})}catch(t){}return this.ACL&&(t.ACL=this.ACL),t}get(t){return this.data[t]}set(t,e){return"object"==typeof t?Object.assign(this.data,t):this.data[t]=e,this}unset(t){return delete this.data[t],this}increment(t,e=1){const s=this.get(t)||0;return this.set(t,s+e),this}add(t,e){const s=this.get(t)||[];return this.set(t,[...s,...e]),this}addUnique(t,e){const s=new Set(this.get(t)||new Set);return e.forEach((t=>s.add(t))),this.set(t,Array.from(s)),this}remove(t,e){const s=this.get(t)||[],i=new Set(e);return this.set(t,s.filter((t=>!i.has(t)))),this}async save(t){if(!FmodeObject._instance)throw new Error("Not initialized");const e=this.id?"PUT":"POST";let s=`${FmodeObject._instance.serverURL}/classes/${this.className}`;this.id&&(s+=`/${this.id}`);const i={"Content-Type":"application/json","X-Parse-Application-Id":FmodeObject._instance.appId};t?.useMasterKey&&FmodeObject._instance.config.masterKey&&(i["X-Parse-Master-Key"]=FmodeObject._instance.config.masterKey);const a=this.toJSON();delete a.createdAt,delete a.updatedAt,delete a.__type,delete a.className;for(const t in a)this.get(t)?.toPointer&&(a[t]=this.get(t).toPointer());const r=await fetch(s,{method:e,headers:i,body:JSON.stringify(a)});console.log(JSON.stringify(a));const n=await r.json();if(console.log(n),n.error)throw new Error(n.error);return this.id=n.objectId||this.id,this.createdAt=new Date(n.createdAt||this.createdAt),this.updatedAt=new Date(n.updatedAt||this.updatedAt),this}async destroy(t){if(!this.id)throw new Error("Cannot destroy unsaved object");if(!FmodeObject._instance)throw new Error("Not initialized");const e={"X-Parse-Application-Id":FmodeObject._instance.appId};t?.useMasterKey&&FmodeObject._instance.config.masterKey&&(e["X-Parse-Master-Key"]=FmodeObject._instance.config.masterKey);const s=`${FmodeObject._instance.serverURL}/classes/${this.className}/${this.id}`,i=await fetch(s,{method:"DELETE",headers:e});if(!i.ok){const t=await i.json();throw new Error(t.error||"Failed to delete object")}}static async create(t,e,s){const i=new this(t);return i.set(e),i.save(s)}static async fetchAll(t,e){if(!FmodeObject._instance)throw new Error("Not initialized");if(0===t.length)return[];const s={"Content-Type":"application/json","X-Parse-Application-Id":FmodeObject._instance.appId};e?.useMasterKey&&FmodeObject._instance.config.masterKey&&(s["X-Parse-Master-Key"]=FmodeObject._instance.config.masterKey);const i=`${FmodeObject._instance.serverURL}/batch`,a=t.map((t=>({method:"GET",path:`/classes/${t.className}/${t.id}`}))),r=await fetch(i,{method:"POST",headers:s,body:JSON.stringify({requests:a})}),n=await r.json();if(n.error)throw new Error(n.error);return n.map(((e,s)=>{const i=t[s];return i.set(e.success),i}))}relation(t){return new FmodeRelation(this,t)}static async fromFile(t,e,s){if(!FmodeObject._instance)throw new Error("Not initialized");const i=new FormData;i.append("file",e,t);const a={"X-Parse-Application-Id":FmodeObject._instance.appId},r=`${FmodeObject._instance.serverURL}/files/${t}`,n=await fetch(r,{method:"POST",headers:a,body:i}),o=await n.json();if(o.error)throw new Error(o.error);return{__type:"File",name:o.name,url:o.url}}}
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9jb3JlL3BhcnNlL2Ztb2RlLm9iamVjdC5tanM=`
10
+