fmode-ng 0.0.113 → 0.0.115
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +8 -0
- package/README.md +37 -37
- package/esm2022/fmode-ng.mjs +10 -5
- package/esm2022/lib/aigc/agent/fm-agent-task/fm-agent-task.component.mjs +8 -92
- package/esm2022/lib/aigc/agent/index.mjs +10 -3
- package/esm2022/lib/aigc/avatar/avatar.module.mjs +10 -45
- package/esm2022/lib/aigc/avatar/comp-avatar-particle/avatar.role.mjs +10 -2
- package/esm2022/lib/aigc/avatar/comp-avatar-particle/comp-avatar-particle.component.mjs +10 -315
- package/esm2022/lib/aigc/avatar/comp-avatar-particle/index.mjs +10 -3
- package/esm2022/lib/aigc/avatar/comp-avatar-particle/role-points.class.mjs +10 -57
- package/esm2022/lib/aigc/avatar/comp-avatar-role-image/comp-avatar-role-image.component.mjs +10 -98
- package/esm2022/lib/aigc/avatar/comp-avatar-role-video/comp-avatar-role-video.component.mjs +10 -107
- package/esm2022/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.mjs +10 -113
- package/esm2022/lib/aigc/avatar/index.mjs +10 -8
- package/esm2022/lib/aigc/avatar/interface-avatar-role.mjs +10 -2
- package/esm2022/lib/aigc/avatar/modal-chat-voice-input/modal-chat-voice-input.component.mjs +8 -164
- package/esm2022/lib/aigc/chat/chat-header-area/comp-header-area.component.mjs +10 -49
- package/esm2022/lib/aigc/chat/chat-header-area/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/chat-list/chat-list.component.mjs +8 -155
- package/esm2022/lib/aigc/chat/chat-list/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/chat-message-area/comp-message-area.component.mjs +10 -40
- package/esm2022/lib/aigc/chat/chat-message-area/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/chat-message-card/comp-message-card.component.mjs +10 -140
- package/esm2022/lib/aigc/chat/chat-message-card/duration-str.pipe.mjs +10 -29
- package/esm2022/lib/aigc/chat/chat-message-card/index.mjs +10 -3
- package/esm2022/lib/aigc/chat/chat-modal-input/index.mjs +10 -3
- package/esm2022/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.mjs +8 -193
- package/esm2022/lib/aigc/chat/chat-modal-input/modal-input.component.mjs +10 -331
- package/esm2022/lib/aigc/chat/chat-panel/chat-panel.component.mjs +8 -249
- package/esm2022/lib/aigc/chat/comp-role-prompt/comp-role-prompt.component.mjs +10 -83
- package/esm2022/lib/aigc/chat/comp-role-prompt/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/index.mjs +10 -8
- package/esm2022/lib/aigc/comp-markdown-preview/clipboard.service.mjs +10 -82
- package/esm2022/lib/aigc/comp-markdown-preview/markdown-parse.mjs +8 -367
- package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.component.mjs +10 -51
- package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.module.mjs +10 -24
- package/esm2022/lib/aigc/comp-markdown-preview/plugins/md-mathjax/index.mjs +10 -115
- package/esm2022/lib/aigc/index.mjs +10 -14
- package/esm2022/lib/aigc/service-fmai/fmai.service.mjs +10 -21
- package/esm2022/lib/aigc/service-fmai/service-chat/chat-class.mjs +10 -2
- package/esm2022/lib/aigc/service-fmai/service-chat/chat.service.mjs +8 -174
- package/esm2022/lib/aigc/service-fmai/service-chat/index.mjs +10 -7
- package/esm2022/lib/aigc/service-fmai/service-chat/mask-list.mjs +9 -194
- package/esm2022/lib/aigc/service-fmai/service-chat/pipes/chat-content.pipe.mjs +10 -27
- package/esm2022/lib/aigc/service-fmai/service-chat/pipes/hidexml.pipe.mjs +10 -27
- package/esm2022/lib/aigc/service-fmai/service-chat/utilnow.pipe.mjs +10 -68
- package/esm2022/lib/aigc/service-fmai/service-imagine/imagine-func.mjs +9 -162
- package/esm2022/lib/aigc/service-fmai/service-imagine/imagine-work.mjs +10 -68
- package/esm2022/lib/aigc/service-fmai/service-imagine/imagine.service.mjs +8 -313
- package/esm2022/lib/aigc/service-fmai/service-imagine/index.mjs +10 -4
- package/esm2022/lib/aigc/story/fm-office-viewer/fm-office-viewer.component.mjs +10 -62
- package/esm2022/lib/aigc/story/fm-story-card/fm-story-card.component.mjs +10 -87
- package/esm2022/lib/aigc/story/fm-story-list/fm-story-list.component.mjs +10 -345
- package/esm2022/lib/aigc/story/fm-story-list/story-preview.mjs +10 -81
- package/esm2022/lib/aigc/story/fm-story-loader/fm-story-loader.component.mjs +10 -152
- package/esm2022/lib/aigc/story/fm-story-splitter/fm-story-splitter.component.mjs +10 -42
- package/esm2022/lib/aigc/story/index.mjs +10 -6
- package/esm2022/lib/aigc/story/modal-chat-story/comp-chat-story-json/comp-chat-story-json.component.mjs +10 -47
- package/esm2022/lib/aigc/story/modal-chat-story/comp-diary-story/comp-diary-story.component.mjs +10 -95
- package/esm2022/lib/aigc/story/modal-chat-story/modal-chat-story.component.mjs +10 -253
- package/esm2022/lib/aigc/story/story.service.mjs +10 -35
- package/esm2022/lib/aigc/voice/fmode-voice.service.mjs +10 -636
- package/esm2022/lib/aigc/voice/index.mjs +10 -7
- package/esm2022/lib/aigc/voice/lib/audio/audio.player.mjs +10 -55
- package/esm2022/lib/aigc/voice/lib/audio/audio.streamer.mjs +10 -2
- package/esm2022/lib/aigc/voice/lib/audio/streamer.microsoft.mjs +10 -96
- package/esm2022/lib/aigc/voice/lib/audio/streamer.pcm.mjs +8 -177
- package/esm2022/lib/aigc/voice/lib/pcm2wav.mjs +10 -38
- package/esm2022/lib/aigc/voice/lib/recorder/extension-waveview.mjs +10 -215
- package/esm2022/lib/aigc/voice/lib/resample.mjs +10 -34
- package/esm2022/lib/aigc/voice/tts/fmode-tts-class.mjs +10 -189
- package/esm2022/lib/aigc/voice/tts/index.mjs +10 -5
- package/esm2022/lib/aigc/voice/tts/int-tts-provider.mjs +10 -2
- package/esm2022/lib/aigc/voice/tts/provider-doubao.mjs +8 -346
- package/esm2022/lib/code/fm-codemirror/fm-codemirror.component.mjs +8 -342
- package/esm2022/lib/code/index.mjs +10 -2
- package/esm2022/lib/core/agent/chat/completion/fmode-completion.mjs +8 -430
- package/esm2022/lib/core/agent/chat/completion/index.mjs +10 -2
- package/esm2022/lib/core/agent/chat/completion/int-gpt-chat-options.mjs +10 -2
- package/esm2022/lib/core/agent/chat/fmode-chat.mjs +8 -617
- package/esm2022/lib/core/agent/chat/index.mjs +10 -4
- package/esm2022/lib/core/agent/chat/interface.mjs +10 -2
- package/esm2022/lib/core/agent/index.mjs +10 -6
- package/esm2022/lib/core/agent/prompt/agent.prompt.mjs +10 -133
- package/esm2022/lib/core/agent/prompt/index.mjs +10 -2
- package/esm2022/lib/core/agent/prompt/prompt-util.mjs +10 -16
- package/esm2022/lib/core/agent/story/agent.story.mjs +10 -64
- package/esm2022/lib/core/agent/story/index.mjs +10 -2
- package/esm2022/lib/core/agent/task/agent.task.mjs +10 -90
- package/esm2022/lib/core/agent/task/index.mjs +10 -2
- package/esm2022/lib/core/agent/waiting/index.mjs +10 -3
- package/esm2022/lib/core/agent/waiting/loading/loading.ctrl.mjs +10 -279
- package/esm2022/lib/core/agent/waiting/tips/tips.ctrl.mjs +8 -190
- package/esm2022/lib/core/index.mjs +10 -4
- package/esm2022/lib/core/parse/datatype/acl.mjs +10 -57
- package/esm2022/lib/core/parse/datatype/file.mjs +10 -69
- package/esm2022/lib/core/parse/datatype/geopoint.mjs +10 -57
- package/esm2022/lib/core/parse/datatype/relation.mjs +10 -56
- package/esm2022/lib/core/parse/fmode.cloud.mjs +10 -0
- package/esm2022/lib/core/parse/fmode.object.mjs +10 -232
- package/esm2022/lib/core/parse/fmode.parse.mjs +10 -84
- package/esm2022/lib/core/parse/fmode.query.mjs +8 -500
- package/esm2022/lib/core/parse/fmode.user.mjs +10 -275
- package/esm2022/lib/core/parse/index.mjs +10 -5
- package/esm2022/lib/core/parse/types.mjs +10 -2
- package/esm2022/lib/core/voice/index.mjs +10 -3
- package/esm2022/lib/core/voice/tts/index.mjs +10 -2
- package/esm2022/lib/icon/filetype/audio.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/avatar.svg.mjs +10 -14
- package/esm2022/lib/icon/filetype/chat.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/docx.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/file.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/filetype.pipe.mjs +10 -57
- package/esm2022/lib/icon/filetype/index.mjs +10 -12
- package/esm2022/lib/icon/filetype/md.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/pdf.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/pptx.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/svgtoblob.mjs +10 -8
- package/esm2022/lib/icon/filetype/video.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/xlsx.svg.mjs +10 -3
- package/esm2022/lib/icon/index.mjs +10 -2
- package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.component.mjs +10 -209
- package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.module.mjs +10 -33
- package/esm2022/lib/map/index.mjs +10 -4
- package/esm2022/lib/map/map.module.mjs +10 -61
- package/esm2022/lib/map/page-loca-scatter/page-loca-scatter.component.mjs +10 -132
- package/esm2022/lib/map/page-map.start/page-map.start.component.mjs +8 -115
- package/esm2022/lib/map/page-plan-route/page-plan-route.component.mjs +8 -118
- package/esm2022/lib/nova-cloud/index.mjs +10 -3
- package/esm2022/lib/nova-cloud/ncloud-api-func.mjs +10 -91
- package/esm2022/lib/nova-cloud/nova-cloud.service.mjs +10 -53
- package/esm2022/lib/payment/index.mjs +10 -2
- package/esm2022/lib/payment/payment/payment.component.mjs +10 -543
- package/esm2022/lib/payment/payment.service.mjs +10 -202
- package/esm2022/lib/person/comp-person-gender-icon/comp-person-gender-icon.component.mjs +10 -48
- package/esm2022/lib/person/comp-person-item/comp-person-item.component.mjs +10 -29
- package/esm2022/lib/person/comp-person-story/comp-person-story.component.mjs +10 -211
- package/esm2022/lib/person/edit-upload/edit-upload.component.mjs +8 -412
- package/esm2022/lib/person/edit-upload/edit-upload.module.mjs +10 -50
- package/esm2022/lib/person/index.mjs +10 -5
- package/esm2022/lib/person/modal-person-select/modal-person-select.component.mjs +10 -144
- package/esm2022/lib/person/modal-user-verify/secret-text.pipe.mjs +10 -41
- package/esm2022/lib/person/modal-user-verify/user-verify.component.mjs +10 -595
- package/esm2022/lib/person/person-detail/person-detail.component.mjs +10 -172
- package/esm2022/lib/person/person.service.mjs +8 -193
- package/esm2022/lib/platform/cross.service.mjs +10 -62
- package/esm2022/lib/platform/index.mjs +10 -2
- package/esm2022/lib/social/index.mjs +10 -2
- package/esm2022/lib/social/wechat/wechat-jssdk.service.mjs +8 -230
- package/esm2022/lib/storage/comp-hwobs-manager/hwobs-manager.component.mjs +10 -59
- package/esm2022/lib/storage/index.mjs +10 -5
- package/esm2022/lib/storage/service-hwobs/hwobs.service.mjs +8 -131
- package/esm2022/lib/storage/service-hwobs/index.mjs +10 -3
- package/esm2022/lib/storage/service-hwobs/typings/esdk-obs-browser.mjs +1 -1
- package/esm2022/lib/storage/service-upload/index.mjs +10 -2
- package/esm2022/lib/storage/service-upload/nova-upload.service.mjs +8 -513
- package/esm2022/lib/storage/service-upload/util-file-md5.mjs +10 -28
- package/esm2022/lib/storage/service-upload/util-file-metadata.mjs +10 -93
- package/esm2022/lib/storage/storage.module.mjs +10 -42
- package/esm2022/lib/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.mjs +10 -72
- package/esm2022/lib/text/fm-article-editor/article.service.mjs +10 -237
- package/esm2022/lib/text/fm-article-editor/comp-upload-book-banners/comp-upload-book-banners.component.mjs +8 -72
- package/esm2022/lib/text/fm-article-editor/draft.service.mjs +10 -207
- package/esm2022/lib/text/fm-article-editor/fm-article-aitool/fm-article-aitool.component.mjs +8 -227
- package/esm2022/lib/text/fm-article-editor/fm-article-draft/fm-article-draft.component.mjs +10 -303
- package/esm2022/lib/text/fm-article-editor/fm-article-editor.component.mjs +8 -371
- package/esm2022/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.mjs +10 -94
- package/esm2022/lib/text/fm-article-editor/fm-article-outline-leftitem/fm-article-outline-leftitem.component.mjs +10 -36
- package/esm2022/lib/text/fm-article-editor/fm-article-preview/fm-article-preview.component.mjs +10 -281
- package/esm2022/lib/text/fm-article-editor/fm-article-write-options/fm-article-write-options.component.mjs +10 -72
- package/esm2022/lib/text/fm-article-editor/outline-count.pipe.mjs +10 -22
- package/esm2022/lib/text/fm-article-editor/prompt/prompt-insertion-article.mjs +10 -169
- package/esm2022/lib/text/fm-article-editor/task-article-generation.mjs +10 -69
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-draft-create.mjs +10 -65
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-outline-edit.mjs +10 -55
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-outline.mjs +10 -142
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-preview.mjs +10 -35
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-writing-options.mjs +10 -81
- package/esm2022/lib/text/fm-article-editor/tasks/task-document-select.mjs +10 -50
- package/esm2022/lib/text/fm-text-quill/fm-text-quill.component.mjs +10 -145
- package/esm2022/lib/text/index.mjs +10 -4
- package/esm2022/lib/user/account/account.service.mjs +10 -222
- package/esm2022/lib/user/captcha/captcha.component.mjs +10 -135
- package/esm2022/lib/user/comp-user-avatar/comp-user-avatar.component.mjs +10 -66
- package/esm2022/lib/user/index.mjs +10 -17
- package/esm2022/lib/user/login/auth.guard.mjs +10 -28
- package/esm2022/lib/user/login/auth.service.mjs +8 -433
- package/esm2022/lib/user/login/login.component.mjs +10 -916
- package/esm2022/lib/user/modal-user-login/modal-user-login.component.mjs +10 -311
- package/esm2022/lib/user/profile/auth-profile.guard.mjs +10 -27
- package/esm2022/lib/user/profile/auth-profile.service.mjs +10 -122
- package/esm2022/lib/user/profile/profile-bind/profile-bind.component.mjs +10 -164
- package/esm2022/lib/user/profile/profile-bind/profile-confirm-modal.component.mjs +10 -79
- package/esm2022/lib/user/profile/profile.module.mjs +10 -54
- package/esm2022/lib/user/staff/index.mjs +10 -4
- package/esm2022/lib/user/staff/staff.guard.mjs +10 -26
- package/esm2022/lib/user/staff/staff.module.mjs +10 -18
- package/esm2022/lib/user/staff/staff.service.mjs +10 -85
- package/esm2022/lib/user/user-name.pipe.mjs +10 -29
- package/esm2022/lib/user/user.module.mjs +10 -102
- package/esm2022/lib/video/fm-video/fm-video.component.mjs +10 -67
- package/esm2022/lib/video/index.mjs +10 -2
- package/esm2022/public-api.mjs +10 -21
- package/fesm2022/fmode-ng.mjs +7 -19788
- package/fesm2022/fmode-ng.mjs.map +1 -1
- package/lib/aigc/avatar/comp-avatar-role-image/comp-avatar-role-image.component.d.ts +2 -2
- package/lib/aigc/avatar/comp-avatar-role-video/comp-avatar-role-video.component.d.ts +2 -2
- package/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.d.ts +2 -2
- package/lib/aigc/chat/chat-list/chat-list.component.d.ts +3 -2
- package/lib/aigc/chat/chat-message-card/comp-message-card.component.d.ts +3 -3
- package/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.d.ts +2 -2
- package/lib/aigc/chat/chat-modal-input/modal-input.component.d.ts +3 -3
- package/lib/aigc/service-fmai/service-imagine/imagine-func.d.ts +3 -3
- package/lib/aigc/service-fmai/service-imagine/imagine-work.d.ts +4 -4
- package/lib/aigc/service-fmai/service-imagine/imagine.service.d.ts +6 -6
- package/lib/aigc/story/fm-office-viewer/fm-office-viewer.component.d.ts +2 -2
- package/lib/aigc/story/fm-story-card/fm-story-card.component.d.ts +2 -1
- package/lib/aigc/story/fm-story-list/fm-story-list.component.d.ts +6 -6
- package/lib/aigc/story/fm-story-list/story-preview.d.ts +4 -4
- package/lib/aigc/story/fm-story-loader/fm-story-loader.component.d.ts +3 -3
- package/lib/aigc/story/fm-story-splitter/fm-story-splitter.component.d.ts +2 -2
- package/lib/aigc/story/modal-chat-story/comp-chat-story-json/comp-chat-story-json.component.d.ts +3 -2
- package/lib/aigc/story/modal-chat-story/comp-diary-story/comp-diary-story.component.d.ts +3 -2
- package/lib/aigc/story/modal-chat-story/modal-chat-story.component.d.ts +6 -6
- package/lib/aigc/story/story.service.d.ts +3 -2
- package/lib/aigc/voice/tts/fmode-tts-class.d.ts +2 -2
- package/lib/core/agent/chat/fmode-chat.d.ts +11 -11
- package/lib/core/agent/story/agent.story.d.ts +8 -8
- package/lib/core/parse/datatype/geopoint.d.ts +5 -1
- package/lib/core/parse/fmode.cloud.d.ts +32 -0
- package/lib/core/parse/fmode.object.d.ts +2 -2
- package/lib/core/parse/fmode.parse.d.ts +15 -9
- package/lib/core/parse/fmode.query.d.ts +41 -2
- package/lib/core/parse/fmode.user.d.ts +1 -0
- package/lib/core/parse/index.d.ts +1 -0
- package/lib/core/parse/types.d.ts +2 -0
- package/lib/map/comp-poi-picker/comp-poi-picker.component.d.ts +5 -5
- package/lib/payment/payment/payment.component.d.ts +3 -3
- package/lib/payment/payment.service.d.ts +4 -4
- package/lib/person/comp-person-gender-icon/comp-person-gender-icon.component.d.ts +2 -1
- package/lib/person/comp-person-item/comp-person-item.component.d.ts +2 -1
- package/lib/person/comp-person-story/comp-person-story.component.d.ts +13 -13
- package/lib/person/edit-upload/edit-upload.component.d.ts +1 -1
- package/lib/person/modal-person-select/modal-person-select.component.d.ts +5 -5
- package/lib/person/modal-user-verify/user-verify.component.d.ts +5 -5
- package/lib/person/person-detail/person-detail.component.d.ts +4 -4
- package/lib/person/person.service.d.ts +7 -7
- package/lib/storage/service-hwobs/hwobs.service.d.ts +4 -5
- package/lib/storage/service-upload/nova-upload.service.d.ts +5 -5
- package/lib/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.d.ts +2 -1
- package/lib/text/fm-article-editor/article.service.d.ts +12 -12
- package/lib/text/fm-article-editor/draft.service.d.ts +5 -5
- package/lib/text/fm-article-editor/fm-article-aitool/fm-article-aitool.component.d.ts +3 -2
- package/lib/text/fm-article-editor/fm-article-draft/fm-article-draft.component.d.ts +16 -17
- package/lib/text/fm-article-editor/fm-article-editor.component.d.ts +3 -3
- package/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.d.ts +11 -10
- package/lib/text/fm-article-editor/fm-article-preview/fm-article-preview.component.d.ts +2 -2
- package/lib/text/fm-article-editor/prompt/prompt-insertion-article.d.ts +3 -3
- package/lib/text/fm-article-editor/task-article-generation.d.ts +5 -4
- package/lib/text/fm-article-editor/tasks/task-article-draft-create.d.ts +3 -3
- package/lib/text/fm-article-editor/tasks/task-article-outline-edit.d.ts +3 -3
- package/lib/text/fm-article-editor/tasks/task-article-outline.d.ts +3 -3
- package/lib/text/fm-article-editor/tasks/task-article-preview.d.ts +2 -1
- package/lib/text/fm-article-editor/tasks/task-article-writing-options.d.ts +3 -3
- package/lib/text/fm-article-editor/tasks/task-document-select.d.ts +3 -3
- package/lib/user/account/account.service.d.ts +2 -2
- package/lib/user/comp-user-avatar/comp-user-avatar.component.d.ts +2 -2
- package/lib/user/login/auth.service.d.ts +5 -5
- package/lib/user/login/login.component.d.ts +3 -3
- package/lib/user/profile/auth-profile.service.d.ts +8 -8
- package/lib/user/profile/profile-bind/profile-bind.component.d.ts +7 -7
- package/lib/user/profile/profile-bind/profile-confirm-modal.component.d.ts +2 -2
- package/lib/user/staff/staff.service.d.ts +3 -3
- package/lib/user/user-name.pipe.d.ts +2 -2
- package/package.json +12 -18
|
@@ -1,275 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
static bindInstance(instance) {
|
|
12
|
-
this._instance = instance;
|
|
13
|
-
}
|
|
14
|
-
static get instance() {
|
|
15
|
-
if (!this._instance)
|
|
16
|
-
throw new Error('FmodeParse not initialized');
|
|
17
|
-
return this._instance;
|
|
18
|
-
}
|
|
19
|
-
// Use getters and setters to interact with attributes from FmodeObject
|
|
20
|
-
get username() {
|
|
21
|
-
return this.get('username');
|
|
22
|
-
}
|
|
23
|
-
set username(value) {
|
|
24
|
-
this.set('username', value);
|
|
25
|
-
}
|
|
26
|
-
get email() {
|
|
27
|
-
return this.get('email');
|
|
28
|
-
}
|
|
29
|
-
set email(value) {
|
|
30
|
-
this.set('email', value);
|
|
31
|
-
}
|
|
32
|
-
get password() {
|
|
33
|
-
return this.get('password');
|
|
34
|
-
}
|
|
35
|
-
set password(value) {
|
|
36
|
-
this.set('password', value);
|
|
37
|
-
}
|
|
38
|
-
constructor(attributes) {
|
|
39
|
-
super('_User');
|
|
40
|
-
if (attributes) {
|
|
41
|
-
// The sessionToken is special and not a regular attribute.
|
|
42
|
-
// Handle it separately.
|
|
43
|
-
this.id = attributes?.objectId;
|
|
44
|
-
this.createdAt = new Date(attributes?.createdAt);
|
|
45
|
-
this.updatedAt = new Date(attributes?.updatedAt);
|
|
46
|
-
if (attributes.sessionToken) {
|
|
47
|
-
this.sessionToken = attributes.sessionToken;
|
|
48
|
-
// Don't store the sessionToken as a regular attribute.
|
|
49
|
-
delete attributes.sessionToken;
|
|
50
|
-
}
|
|
51
|
-
this.set(attributes);
|
|
52
|
-
}
|
|
53
|
-
// DO NOT restore from cache in the constructor.
|
|
54
|
-
// This creates unpredictable behavior.
|
|
55
|
-
}
|
|
56
|
-
// MARK: - 用户认证方法 (Static methods)
|
|
57
|
-
// logIn is much cleaner now
|
|
58
|
-
static async logIn(username, password) {
|
|
59
|
-
const url = `${this.instance.serverURL}/login`;
|
|
60
|
-
const response = await fetch(url, {
|
|
61
|
-
method: 'POST',
|
|
62
|
-
headers: {
|
|
63
|
-
'Content-Type': 'application/json',
|
|
64
|
-
'X-Parse-Application-Id': this.instance.appId
|
|
65
|
-
},
|
|
66
|
-
body: JSON.stringify({ username, password })
|
|
67
|
-
});
|
|
68
|
-
const result = await response.json();
|
|
69
|
-
if (result.error)
|
|
70
|
-
throw new Error(result.error);
|
|
71
|
-
// The constructor will handle setting attributes and the sessionToken
|
|
72
|
-
const user = new this({ ...result, username, password });
|
|
73
|
-
user._saveToCache();
|
|
74
|
-
return user;
|
|
75
|
-
}
|
|
76
|
-
// become is also cleaner
|
|
77
|
-
static async become(sessionToken) {
|
|
78
|
-
const url = `${this.instance.serverURL}/users/me`;
|
|
79
|
-
let headers = {
|
|
80
|
-
'X-Parse-Session-Token': sessionToken,
|
|
81
|
-
'X-Parse-Application-Id': this.instance.appId
|
|
82
|
-
};
|
|
83
|
-
const response = await fetch(url, {
|
|
84
|
-
headers: headers
|
|
85
|
-
});
|
|
86
|
-
const result = await response.json();
|
|
87
|
-
if (result.error)
|
|
88
|
-
throw new Error(result.error);
|
|
89
|
-
// Pass the sessionToken explicitly so the constructor can handle it
|
|
90
|
-
const user = new this({ ...result, sessionToken });
|
|
91
|
-
user._saveToCache();
|
|
92
|
-
return user;
|
|
93
|
-
}
|
|
94
|
-
// signUp is good
|
|
95
|
-
static async signUp(username, password, attrs = {}) {
|
|
96
|
-
const user = new this({ ...attrs, username, password });
|
|
97
|
-
return user.signUp(); // Calls the instance method
|
|
98
|
-
}
|
|
99
|
-
// logOut, requestPasswordReset remain the same...
|
|
100
|
-
static async logOut() {
|
|
101
|
-
if (!this.current())
|
|
102
|
-
return;
|
|
103
|
-
try {
|
|
104
|
-
await fetch(`${this.instance.serverURL}/logout`, {
|
|
105
|
-
method: 'POST',
|
|
106
|
-
headers: {
|
|
107
|
-
'X-Parse-Session-Token': this.current().sessionToken,
|
|
108
|
-
'X-Parse-Application-Id': this.instance.appId
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
finally {
|
|
113
|
-
this._clearCurrentUser();
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
static async requestPasswordReset(email) {
|
|
117
|
-
const url = `${this.instance.serverURL}/requestPasswordReset`;
|
|
118
|
-
const response = await fetch(url, {
|
|
119
|
-
method: 'POST',
|
|
120
|
-
headers: {
|
|
121
|
-
'Content-Type': 'application/json',
|
|
122
|
-
'X-Parse-Application-Id': this.instance.appId
|
|
123
|
-
},
|
|
124
|
-
body: JSON.stringify({ email })
|
|
125
|
-
});
|
|
126
|
-
const result = await response.json();
|
|
127
|
-
if (result.error)
|
|
128
|
-
throw new Error(result.error);
|
|
129
|
-
}
|
|
130
|
-
// MARK: - 当前用户管理
|
|
131
|
-
static { this._currentUser = null; }
|
|
132
|
-
static current() {
|
|
133
|
-
if (this._currentUser) {
|
|
134
|
-
return this._currentUser;
|
|
135
|
-
}
|
|
136
|
-
try {
|
|
137
|
-
const cached = localStorage.getItem(this.instanceKey());
|
|
138
|
-
if (!cached)
|
|
139
|
-
return null;
|
|
140
|
-
const data = JSON.parse(cached);
|
|
141
|
-
if (!data.sessionToken)
|
|
142
|
-
return null;
|
|
143
|
-
const user = new this(data);
|
|
144
|
-
this._currentUser = user;
|
|
145
|
-
return user;
|
|
146
|
-
}
|
|
147
|
-
catch (e) {
|
|
148
|
-
console.warn('Failed to restore user from cache', e);
|
|
149
|
-
return null;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
static _clearCurrentUser() {
|
|
153
|
-
this._currentUser = null;
|
|
154
|
-
localStorage.removeItem(this.instanceKey());
|
|
155
|
-
}
|
|
156
|
-
// MARK: - 实例方法
|
|
157
|
-
async signUp(attrs) {
|
|
158
|
-
if (attrs)
|
|
159
|
-
this.set(attrs);
|
|
160
|
-
if (!this.username)
|
|
161
|
-
throw new Error('Username is required');
|
|
162
|
-
if (!this.password)
|
|
163
|
-
throw new Error('Password is required');
|
|
164
|
-
const url = `${FmodeUser.instance.serverURL}/users`;
|
|
165
|
-
const response = await fetch(url, {
|
|
166
|
-
method: 'POST',
|
|
167
|
-
headers: {
|
|
168
|
-
'Content-Type': 'application/json',
|
|
169
|
-
'X-Parse-Application-Id': FmodeUser.instance.appId
|
|
170
|
-
},
|
|
171
|
-
body: JSON.stringify(this.toJSON())
|
|
172
|
-
});
|
|
173
|
-
const result = await response.json();
|
|
174
|
-
if (result.error)
|
|
175
|
-
throw new Error(result.error);
|
|
176
|
-
this.id = result.objectId;
|
|
177
|
-
this.createdAt = new Date(result.createdAt);
|
|
178
|
-
this.sessionToken = result.sessionToken;
|
|
179
|
-
this._saveToCache();
|
|
180
|
-
return this;
|
|
181
|
-
}
|
|
182
|
-
// FIX: This is the most important change
|
|
183
|
-
async save() {
|
|
184
|
-
// if (!this.id) {
|
|
185
|
-
// return this.signUp();
|
|
186
|
-
// }
|
|
187
|
-
const url = `${FmodeUser.instance.serverURL}/users/${this.id || this.data.objectId}`;
|
|
188
|
-
const headers = {
|
|
189
|
-
'Content-Type': 'application/json',
|
|
190
|
-
'X-Parse-Application-Id': FmodeUser.instance.appId,
|
|
191
|
-
// Use the instance's sessionToken
|
|
192
|
-
'X-Parse-Session-Token': this.sessionToken
|
|
193
|
-
};
|
|
194
|
-
// Assumes your FmodeObject tracks changed attributes, which is standard.
|
|
195
|
-
// If not, toJSON() from the parent should return all attributes.
|
|
196
|
-
// We don't send the whole object, only what's changed.
|
|
197
|
-
const dataToSave = this.toJSON(); // Or super.toJSON() if you don't track dirty keys
|
|
198
|
-
// Don't send read-only or special fields
|
|
199
|
-
delete dataToSave.__type;
|
|
200
|
-
delete dataToSave.objectId;
|
|
201
|
-
delete dataToSave.className;
|
|
202
|
-
delete dataToSave.sessionToken;
|
|
203
|
-
delete dataToSave.username;
|
|
204
|
-
delete dataToSave.createdAt;
|
|
205
|
-
delete dataToSave.updatedAt;
|
|
206
|
-
const response = await fetch(url, {
|
|
207
|
-
method: 'PUT',
|
|
208
|
-
headers,
|
|
209
|
-
body: JSON.stringify(dataToSave)
|
|
210
|
-
});
|
|
211
|
-
const result = await response.json();
|
|
212
|
-
if (result.error) {
|
|
213
|
-
// Handle invalid session token error specifically
|
|
214
|
-
if (result.code === 209) {
|
|
215
|
-
FmodeUser._clearCurrentUser();
|
|
216
|
-
}
|
|
217
|
-
throw new Error(result.error);
|
|
218
|
-
}
|
|
219
|
-
// IMPORTANT: Only update the object with what the server returns.
|
|
220
|
-
// The server only returns `updatedAt`.
|
|
221
|
-
this.set('updatedAt', new Date(result.updatedAt));
|
|
222
|
-
// After a successful save, the object is no longer "dirty"
|
|
223
|
-
// This would be handled inside your FmodeObject's architecture
|
|
224
|
-
// e.g., this.clearDirtyKeys();
|
|
225
|
-
// The session token was NOT changed, so it's preserved on the instance.
|
|
226
|
-
// Now, re-cache the updated, complete user object.
|
|
227
|
-
this._saveToCache();
|
|
228
|
-
return this;
|
|
229
|
-
}
|
|
230
|
-
_saveToCache() {
|
|
231
|
-
if (!this.sessionToken)
|
|
232
|
-
return;
|
|
233
|
-
FmodeUser._currentUser = this;
|
|
234
|
-
// Use our new, clean toJSONForCache method
|
|
235
|
-
localStorage.setItem(FmodeUser.instanceKey(), JSON.stringify(this.toJSONForCache()));
|
|
236
|
-
}
|
|
237
|
-
// A dedicated method for creating the cacheable JSON
|
|
238
|
-
toJSONForCache() {
|
|
239
|
-
// This combines all server attributes with the special sessionToken
|
|
240
|
-
return {
|
|
241
|
-
...super.toJSON(), // Gets all attributes from FmodeObject
|
|
242
|
-
sessionToken: this.sessionToken,
|
|
243
|
-
};
|
|
244
|
-
}
|
|
245
|
-
async destroy(options) {
|
|
246
|
-
if (!this.id)
|
|
247
|
-
throw new Error('Cannot destroy unsaved user');
|
|
248
|
-
const url = `${FmodeUser.instance.serverURL}/users/${this.id}`;
|
|
249
|
-
const headers = {
|
|
250
|
-
'X-Parse-Session-Token': this.sessionToken,
|
|
251
|
-
'X-Parse-Application-Id': FmodeUser.instance.appId
|
|
252
|
-
};
|
|
253
|
-
if (options?.useMasterKey && FmodeUser.instance.config.masterKey) {
|
|
254
|
-
headers['X-Parse-Master-Key'] = FmodeUser.instance.config.masterKey;
|
|
255
|
-
}
|
|
256
|
-
const response = await fetch(url, {
|
|
257
|
-
method: 'DELETE',
|
|
258
|
-
headers
|
|
259
|
-
});
|
|
260
|
-
if (!response.ok) {
|
|
261
|
-
const result = await response.json();
|
|
262
|
-
throw new Error(result.error || 'Failed to delete user');
|
|
263
|
-
}
|
|
264
|
-
FmodeUser._clearCurrentUser();
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
// 静态方法初始化
|
|
268
|
-
// FmodeUser.current = FmodeUser.current;
|
|
269
|
-
// FmodeUser.currentAsync = FmodeUser.current;
|
|
270
|
-
// FmodeUser.signUp = FmodeUser.signUp;
|
|
271
|
-
// FmodeUser.logIn = FmodeUser.logIn;
|
|
272
|
-
// FmodeUser.logOut = FmodeUser.logOut;
|
|
273
|
-
// FmodeUser.become = FmodeUser.become;
|
|
274
|
-
// FmodeUser.requestPasswordReset = FmodeUser.requestPasswordReset;
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm1vZGUudXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ztb2RlLW5nL3NyYy9saWIvY29yZS9wYXJzZS9mbW9kZS51c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxNQUFNLE9BQU8sU0FBVSxTQUFRLFdBQVc7SUFDeEMsb0NBQW9DO2FBQzdCLGNBQVMsR0FBZSxJQUFJLENBQUM7YUFDN0IsZ0JBQVcsR0FBRyxHQUFHLEVBQUU7UUFDeEIsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztRQUNyRixPQUFPLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUM7SUFDdEQsQ0FBQyxDQUFBO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFhO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFFTyxNQUFNLEtBQUssUUFBUTtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDbkUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFNRCx1RUFBdUU7SUFDdkUsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUF5QjtRQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxD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bnQiOlsiaW1wb3J0IHsgRm1vZGVPYmplY3QgfSBmcm9tICcuL2Ztb2RlLm9iamVjdCc7XHJcblxyXG5leHBvcnQgY2xhc3MgRm1vZGVVc2VyIGV4dGVuZHMgRm1vZGVPYmplY3Qge1xyXG4gIC8vIFN0YXRpYyBwcm9wZXJ0aWVzIHJlbWFpbiB0aGUgc2FtZVxyXG4gIHN0YXRpYyBfaW5zdGFuY2U6IGFueSB8IG51bGwgPSBudWxsO1xyXG4gIHN0YXRpYyBpbnN0YW5jZUtleSA9ICgpID0+IHtcclxuICAgIC8vIEFkZGVkIGEgY2hlY2sgZm9yIHNhZmV0eVxyXG4gICAgaWYgKCF0aGlzLl9pbnN0YW5jZSkgdGhyb3cgbmV3IEVycm9yKCdGbW9kZVBhcnNlIG5vdCBpbml0aWFsaXplZCBiZWZvcmUgdXNpbmcgVXNlcicpO1xyXG4gICAgcmV0dXJuIFwiRk1PREUvXCIgKyB0aGlzLl9pbnN0YW5jZS5hcHBJZCArIFwiL2N1cnJlbnRcIjtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBiaW5kSW5zdGFuY2UoaW5zdGFuY2U6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5faW5zdGFuY2UgPSBpbnN0YW5jZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGdldCBpbnN0YW5jZSgpOiBhbnkge1xyXG4gICAgaWYgKCF0aGlzLl9pbnN0YW5jZSkgdGhyb3cgbmV3IEVycm9yKCdGbW9kZVBhcnNlIG5vdCBpbml0aWFsaXplZCcpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlO1xyXG4gIH1cclxuICBcclxuICAvLyBUaGlzIGlzIGluc3RhbmNlLXNwZWNpZmljIHN0YXRlLCBub3QgcGFydCBvZiB0aGUgc2VydmVyLXNpZGUgYXR0cmlidXRlcy5cclxuICAvLyBJdCdzIGNvcnJlY3QgdG8gaGF2ZSBpdCBhcyBhIGRpcmVjdCBwcm9wZXJ0eS5cclxuICBzZXNzaW9uVG9rZW4/OiBzdHJpbmc7XHJcblxyXG4gIC8vIFVzZSBnZXR0ZXJzIGFuZCBzZXR0ZXJzIHRvIGludGVyYWN0IHdpdGggYXR0cmlidXRlcyBmcm9tIEZtb2RlT2JqZWN0XHJcbiAgZ2V0IHVzZXJuYW1lKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXQoJ3VzZXJuYW1lJyk7XHJcbiAgfVxyXG4gIHNldCB1c2VybmFtZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLnNldCgndXNlcm5hbWUnLCB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZW1haWwoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmdldCgnZW1haWwnKTtcclxuICB9XHJcbiAgc2V0IGVtYWlsKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuc2V0KCdlbWFpbCcsIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldCBwYXNzd29yZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdwYXNzd29yZCcpO1xyXG4gIH1cclxuICBzZXQgcGFzc3dvcmQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5zZXQoJ3Bhc3N3b3JkJywgdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoYXR0cmlidXRlcz86IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuICAgIHN1cGVyKCdfVXNlcicpO1xyXG4gICAgaWYgKGF0dHJpYnV0ZXMpIHtcclxuICAgICAgLy8gVGhlIHNlc3Npb25Ub2tlbiBpcyBzcGVjaWFsIGFuZCBub3QgYSByZWd1bGFyIGF0dHJpYnV0ZS5cclxuICAgICAgLy8gSGFuZGxlIGl0IHNlcGFyYXRlbHkuXHJcbiAgICAgIHRoaXMuaWQgPSBhdHRyaWJ1dGVzPy5vYmplY3RJZFxyXG4gICAgICB0aGlzLmNyZWF0ZWRBdCA9IG5ldyBEYXRlKGF0dHJpYnV0ZXM/LmNyZWF0ZWRBdClcclxuICAgICAgdGhpcy51cGRhdGVkQXQgPSBuZXcgRGF0ZShhdHRyaWJ1dGVzPy51cGRhdGVkQXQpXHJcbiAgICAgIGlmIChhdHRyaWJ1dGVzLnNlc3Npb25Ub2tlbikge1xyXG4gICAgICAgIHRoaXMuc2Vzc2lvblRva2VuID0gYXR0cmlidXRlcy5zZXNzaW9uVG9rZW47XHJcbiAgICAgICAgLy8gRG9uJ3Qgc3RvcmUgdGhlIHNlc3Npb25Ub2tlbiBhcyBhIHJlZ3VsYXIgYXR0cmlidXRlLlxyXG4gICAgICAgIGRlbGV0ZSBhdHRyaWJ1dGVzLnNlc3Npb25Ub2tlbjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldChhdHRyaWJ1dGVzKTtcclxuICAgIH1cclxuICAgIC8vIERPIE5PVCByZXN0b3JlIGZyb20gY2FjaGUgaW4gdGhlIGNvbnN0cnVjdG9yLlxyXG4gICAgLy8gVGhpcyBjcmVhdGVzIHVucHJlZGljdGFibGUgYmVoYXZpb3IuXHJcbiAgfVxyXG5cclxuICAvLyBNQVJLOiAtIOeUqOaIt+iupOivgeaWueazlSAoU3RhdGljIG1ldGhvZHMpXHJcbiAgXHJcbiAgLy8gbG9nSW4gaXMgbXVjaCBjbGVhbmVyIG5vd1xyXG4gIHN0YXRpYyBhc3luYyBsb2dJbih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTxGbW9kZVVzZXI+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuaW5zdGFuY2Uuc2VydmVyVVJMfS9sb2dpbmA7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xyXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgJ1gtUGFyc2UtQXBwbGljYXRpb24tSWQnOiB0aGlzLmluc3RhbmNlLmFwcElkXHJcbiAgICAgIH0sXHJcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgdXNlcm5hbWUsIHBhc3N3b3JkIH0pXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICBpZiAocmVzdWx0LmVycm9yKSB0aHJvdyBuZXcgRXJyb3IocmVzdWx0LmVycm9yKTtcclxuICAgIFxyXG4gICAgLy8gVGhlIGNvbnN0cnVjdG9yIHdpbGwgaGFuZGxlIHNldHRpbmcgYXR0cmlidXRlcyBhbmQgdGhlIHNlc3Npb25Ub2tlblxyXG4gICAgY29uc3QgdXNlciA9IG5ldyB0aGlzKHsuLi5yZXN1bHQsdXNlcm5hbWUscGFzc3dvcmR9KTtcclxuXHJcbiAgICB1c2VyLl9zYXZlVG9DYWNoZSgpO1xyXG4gICAgcmV0dXJuIHVzZXI7XHJcbiAgfVxyXG4gIFxyXG4gIC8vIGJlY29tZSBpcyBhbHNvIGNsZWFuZXJcclxuICBzdGF0aWMgYXN5bmMgYmVjb21lKHNlc3Npb25Ub2tlbjogc3RyaW5nKTogUHJvbWlzZTxGbW9kZVVzZXI+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuaW5zdGFuY2Uuc2VydmVyVVJMfS91c2Vycy9tZWA7XHJcbiAgICBsZXQgaGVhZGVycyA9IHtcclxuICAgICAgJ1gtUGFyc2UtU2Vzc2lvbi1Ub2tlbic6IHNlc3Npb25Ub2tlbixcclxuICAgICAgJ1gtUGFyc2UtQXBwbGljYXRpb24tSWQnOiB0aGlzLmluc3RhbmNlLmFwcElkXHJcbiAgICB9XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xyXG4gICAgICBoZWFkZXJzOiBoZWFkZXJzXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICBpZiAocmVzdWx0LmVycm9yKSB0aHJvdyBuZXcgRXJyb3IocmVzdWx0LmVycm9yKTtcclxuICAgIFxyXG4gICAgLy8gUGFzcyB0aGUgc2Vzc2lvblRva2VuIGV4cGxpY2l0bHkgc28gdGhlIGNvbnN0cnVjdG9yIGNhbiBoYW5kbGUgaXRcclxuICAgIGNvbnN0IHVzZXIgPSBuZXcgdGhpcyh7IC4uLnJlc3VsdCwgc2Vzc2lvblRva2VuIH0pO1xyXG4gICAgdXNlci5fc2F2ZVRvQ2FjaGUoKTtcclxuICAgIHJldHVybiB1c2VyO1xyXG4gIH1cclxuXHJcbiAgLy8gc2lnblVwIGlzIGdvb2RcclxuICBzdGF0aWMgYXN5bmMgc2lnblVwKFxyXG4gICAgdXNlcm5hbWU6IHN0cmluZyxcclxuICAgIHBhc3N3b3JkOiBzdHJpbmcsXHJcbiAgICBhdHRyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XHJcbiAgKTogUHJvbWlzZTxGbW9kZVVzZXI+IHtcclxuICAgIGNvbnN0IHVzZXIgPSBuZXcgdGhpcyh7IC4uLmF0dHJzLCB1c2VybmFtZSwgcGFzc3dvcmQgfSk7XHJcbiAgICByZXR1cm4gdXNlci5zaWduVXAoKTsgLy8gQ2FsbHMgdGhlIGluc3RhbmNlIG1ldGhvZFxyXG4gIH1cclxuXHJcbiAgLy8gbG9nT3V0LCByZXF1ZXN0UGFzc3dvcmRSZXNldCByZW1haW4gdGhlIHNhbWUuLi5cclxuXHJcblxyXG4gIHN0YXRpYyBhc3luYyBsb2dPdXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuY3VycmVudCgpKSByZXR1cm47XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgYXdhaXQgZmV0Y2goYCR7dGhpcy5pbnN0YW5jZS5zZXJ2ZXJVUkx9L2xvZ291dGAsIHtcclxuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAnWC1QYXJzZS1TZXNzaW9uLVRva2VuJzogdGhpcy5jdXJyZW50KCkuc2Vzc2lvblRva2VuISxcclxuICAgICAgICAgICdYLVBhcnNlLUFwcGxpY2F0aW9uLUlkJzogdGhpcy5pbnN0YW5jZS5hcHBJZFxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICB0aGlzLl9jbGVhckN1cnJlbnRVc2VyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYXN5bmMgcmVxdWVzdFBhc3N3b3JkUmVzZXQoZW1haWw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5pbnN0YW5jZS5zZXJ2ZXJVUkx9L3JlcXVlc3RQYXNzd29yZFJlc2V0YDtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XHJcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAnWC1QYXJzZS1BcHBsaWNhdGlvbi1JZCc6IHRoaXMuaW5zdGFuY2UuYXBwSWRcclxuICAgICAgfSxcclxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBlbWFpbCB9KVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gICAgaWYgKHJlc3VsdC5lcnJvcikgdGhyb3cgbmV3IEVycm9yKHJlc3VsdC5lcnJvcik7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gTUFSSzogLSDlvZPliY3nlKjmiLfnrqHnkIZcclxuICBwcml2YXRlIHN0YXRpYyBfY3VycmVudFVzZXI6IEZtb2RlVXNlciB8IG51bGwgPSBudWxsO1xyXG4gIFxyXG4gIHN0YXRpYyBjdXJyZW50KCk6IEZtb2RlVXNlciB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuX2N1cnJlbnRVc2VyKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50VXNlcjtcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGNhY2hlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuaW5zdGFuY2VLZXkoKSk7XHJcbiAgICAgIGlmICghY2FjaGVkKSByZXR1cm4gbnVsbDtcclxuICAgICAgXHJcbiAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGNhY2hlZCk7XHJcbiAgICAgIGlmICghZGF0YS5zZXNzaW9uVG9rZW4pIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgY29uc3QgdXNlciA9IG5ldyB0aGlzKGRhdGEpO1xyXG4gICAgICB0aGlzLl9jdXJyZW50VXNlciA9IHVzZXI7XHJcbiAgICAgIHJldHVybiB1c2VyO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byByZXN0b3JlIHVzZXIgZnJvbSBjYWNoZScsIGUpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIF9jbGVhckN1cnJlbnRVc2VyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3VycmVudFVzZXIgPSBudWxsO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5pbnN0YW5jZUtleSgpKTtcclxuICB9XHJcblxyXG4gIC8vIE1BUks6IC0g5a6e5L6L5pa55rOVXHJcblxyXG5cclxuICBhc3luYyBzaWduVXAoYXR0cnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogUHJvbWlzZTx0aGlzPiB7XHJcbiAgICBpZiAoYXR0cnMpIHRoaXMuc2V0KGF0dHJzKTtcclxuICAgIFxyXG4gICAgaWYgKCF0aGlzLnVzZXJuYW1lKSB0aHJvdyBuZXcgRXJyb3IoJ1VzZXJuYW1lIGlzIHJlcXVpcmVkJyk7XHJcbiAgICBpZiAoIXRoaXMucGFzc3dvcmQpIHRocm93IG5ldyBFcnJvcignUGFzc3dvcmQgaXMgcmVxdWlyZWQnKTtcclxuXHJcbiAgICBjb25zdCB1cmwgPSBgJHtGbW9kZVVzZXIuaW5zdGFuY2Uuc2VydmVyVVJMfS91c2Vyc2A7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xyXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgJ1gtUGFyc2UtQXBwbGljYXRpb24tSWQnOiBGbW9kZVVzZXIuaW5zdGFuY2UuYXBwSWRcclxuICAgICAgfSxcclxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkodGhpcy50b0pTT04oKSlcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuICAgIGlmIChyZXN1bHQuZXJyb3IpIHRocm93IG5ldyBFcnJvcihyZXN1bHQuZXJyb3IpO1xyXG5cclxuICAgIHRoaXMuaWQgPSByZXN1bHQub2JqZWN0SWQ7XHJcbiAgICB0aGlzLmNyZWF0ZWRBdCA9IG5ldyBEYXRlKHJlc3VsdC5jcmVhdGVkQXQpO1xyXG4gICAgdGhpcy5zZXNzaW9uVG9rZW4gPSByZXN1bHQuc2Vzc2lvblRva2VuO1xyXG4gICAgdGhpcy5fc2F2ZVRvQ2FjaGUoKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLy8gRklYOiBUaGlzIGlzIHRoZSBtb3N0IGltcG9ydGFudCBjaGFuZ2VcclxuICBvdmVycmlkZSBhc3luYyBzYXZlKCk6IFByb21pc2U8dGhpcz4ge1xyXG4gICAgLy8gaWYgKCF0aGlzLmlkKSB7XHJcbiAgICAgIC8vIHJldHVybiB0aGlzLnNpZ25VcCgpO1xyXG4gICAgLy8gfVxyXG4gICAgXHJcbiAgICBjb25zdCB1cmwgPSBgJHtGbW9kZVVzZXIuaW5zdGFuY2Uuc2VydmVyVVJMfS91c2Vycy8ke3RoaXMuaWR8fHRoaXMuZGF0YS5vYmplY3RJZH1gO1xyXG4gICAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgJ1gtUGFyc2UtQXBwbGljYXRpb24tSWQnOiBGbW9kZVVzZXIuaW5zdGFuY2UuYXBwSWQsXHJcbiAgICAgIC8vIFVzZSB0aGUgaW5zdGFuY2UncyBzZXNzaW9uVG9rZW5cclxuICAgICAgJ1gtUGFyc2UtU2Vzc2lvbi1Ub2tlbic6IHRoaXMuc2Vzc2lvblRva2VuIVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBBc3N1bWVzIHlvdXIgRm1vZGVPYmplY3QgdHJhY2tzIGNoYW5nZWQgYXR0cmlidXRlcywgd2hpY2ggaXMgc3RhbmRhcmQuXHJcbiAgICAvLyBJZiBub3QsIHRvSlNPTigpIGZyb20gdGhlIHBhcmVudCBzaG91bGQgcmV0dXJuIGFsbCBhdHRyaWJ1dGVzLlxyXG4gICAgLy8gV2UgZG9uJ3Qgc2VuZCB0aGUgd2hvbGUgb2JqZWN0LCBvbmx5IHdoYXQncyBjaGFuZ2VkLlxyXG4gICAgY29uc3QgZGF0YVRvU2F2ZSA9IHRoaXMudG9KU09OKCk7IC8vIE9yIHN1cGVyLnRvSlNPTigpIGlmIHlvdSBkb24ndCB0cmFjayBkaXJ0eSBrZXlzXHJcblxyXG4gICAgLy8gRG9uJ3Qgc2VuZCByZWFkLW9ubHkgb3Igc3BlY2lhbCBmaWVsZHNcclxuICAgIGRlbGV0ZSBkYXRhVG9TYXZlLl9fdHlwZTtcclxuICAgIGRlbGV0ZSBkYXRhVG9TYXZlLm9iamVjdElkO1xyXG4gICAgZGVsZXRlIGRhdGFUb1NhdmUuY2xhc3NOYW1lO1xyXG4gICAgZGVsZXRlIGRhdGFUb1NhdmUuc2Vzc2lvblRva2VuO1xyXG4gICAgZGVsZXRlIGRhdGFUb1NhdmUudXNlcm5hbWU7XHJcbiAgICBkZWxldGUgZGF0YVRvU2F2ZS5jcmVhdGVkQXQ7XHJcbiAgICBkZWxldGUgZGF0YVRvU2F2ZS51cGRhdGVkQXQ7XHJcbiAgICBcclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xyXG4gICAgICBtZXRob2Q6ICdQVVQnLFxyXG4gICAgICBoZWFkZXJzLFxyXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShkYXRhVG9TYXZlKVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gICAgaWYgKHJlc3VsdC5lcnJvcikge1xyXG4gICAgICAvLyBIYW5kbGUgaW52YWxpZCBzZXNzaW9uIHRva2VuIGVycm9yIHNwZWNpZmljYWxseVxyXG4gICAgICBpZiAocmVzdWx0LmNvZGUgPT09IDIwOSkge1xyXG4gICAgICAgICAgRm1vZGVVc2VyLl9jbGVhckN1cnJlbnRVc2VyKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhyb3cgbmV3IEVycm9yKHJlc3VsdC5lcnJvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSU1QT1JUQU5UOiBPbmx5IHVwZGF0ZSB0aGUgb2JqZWN0IHdpdGggd2hhdCB0aGUgc2VydmVyIHJldHVybnMuXHJcbiAgICAvLyBUaGUgc2VydmVyIG9ubHkgcmV0dXJucyBgdXBkYXRlZEF0YC5cclxuICAgIHRoaXMuc2V0KCd1cGRhdGVkQXQnLCBuZXcgRGF0ZShyZXN1bHQudXBkYXRlZEF0KSk7XHJcbiAgICBcclxuICAgIC8vIEFmdGVyIGEgc3VjY2Vzc2Z1bCBzYXZlLCB0aGUgb2JqZWN0IGlzIG5vIGxvbmdlciBcImRpcnR5XCJcclxuICAgIC8vIFRoaXMgd291bGQgYmUgaGFuZGxlZCBpbnNpZGUgeW91ciBGbW9kZU9iamVjdCdzIGFyY2hpdGVjdHVyZVxyXG4gICAgLy8gZS5nLiwgdGhpcy5jbGVhckRpcnR5S2V5cygpO1xyXG5cclxuICAgIC8vIFRoZSBzZXNzaW9uIHRva2VuIHdhcyBOT1QgY2hhbmdlZCwgc28gaXQncyBwcmVzZXJ2ZWQgb24gdGhlIGluc3RhbmNlLlxyXG4gICAgLy8gTm93LCByZS1jYWNoZSB0aGUgdXBkYXRlZCwgY29tcGxldGUgdXNlciBvYmplY3QuXHJcbiAgICB0aGlzLl9zYXZlVG9DYWNoZSgpO1xyXG4gICAgXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIF9zYXZlVG9DYWNoZSgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5zZXNzaW9uVG9rZW4pIHJldHVybjtcclxuICAgIEZtb2RlVXNlci5fY3VycmVudFVzZXIgPSB0aGlzO1xyXG4gICAgLy8gVXNlIG91ciBuZXcsIGNsZWFuIHRvSlNPTkZvckNhY2hlIG1ldGhvZFxyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgIEZtb2RlVXNlci5pbnN0YW5jZUtleSgpLFxyXG4gICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnRvSlNPTkZvckNhY2hlKCkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gQSBkZWRpY2F0ZWQgbWV0aG9kIGZvciBjcmVhdGluZyB0aGUgY2FjaGVhYmxlIEpTT05cclxuICBwcml2YXRlIHRvSlNPTkZvckNhY2hlKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG4gICAgLy8gVGhpcyBjb21iaW5lcyBhbGwgc2VydmVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc3BlY2lhbCBzZXNzaW9uVG9rZW5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLnN1cGVyLnRvSlNPTigpLCAvLyBHZXRzIGFsbCBhdHRyaWJ1dGVzIGZyb20gRm1vZGVPYmplY3RcclxuICAgICAgc2Vzc2lvblRva2VuOiB0aGlzLnNlc3Npb25Ub2tlbixcclxuICAgIH07XHJcbiAgfVxyXG5cclxuXHJcbiAgb3ZlcnJpZGUgYXN5bmMgZGVzdHJveShvcHRpb25zPzogeyB1c2VNYXN0ZXJLZXk/OiBib29sZWFuIH0pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5pZCkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGVzdHJveSB1bnNhdmVkIHVzZXInKTtcclxuICAgIFxyXG4gICAgY29uc3QgdXJsID0gYCR7Rm1vZGVVc2VyLmluc3RhbmNlLnNlcnZlclVSTH0vdXNlcnMvJHt0aGlzLmlkfWA7XHJcbiAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICAgICAnWC1QYXJzZS1TZXNzaW9uLVRva2VuJzogdGhpcy5zZXNzaW9uVG9rZW4hLFxyXG4gICAgICAnWC1QYXJzZS1BcHBsaWNhdGlvbi1JZCc6IEZtb2RlVXNlci5pbnN0YW5jZS5hcHBJZFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAob3B0aW9ucz8udXNlTWFzdGVyS2V5ICYmIEZtb2RlVXNlci5pbnN0YW5jZS5jb25maWcubWFzdGVyS2V5KSB7XHJcbiAgICAgIGhlYWRlcnNbJ1gtUGFyc2UtTWFzdGVyLUtleSddID0gRm1vZGVVc2VyLmluc3RhbmNlLmNvbmZpZy5tYXN0ZXJLZXk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHtcclxuICAgICAgbWV0aG9kOiAnREVMRVRFJyxcclxuICAgICAgaGVhZGVyc1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihyZXN1bHQuZXJyb3IgfHwgJ0ZhaWxlZCB0byBkZWxldGUgdXNlcicpO1xyXG4gICAgfVxyXG5cclxuICAgIEZtb2RlVXNlci5fY2xlYXJDdXJyZW50VXNlcigpO1xyXG4gIH1cclxufVxyXG5cclxuLy8g6Z2Z5oCB5pa55rOV5Yid5aeL5YyWXHJcbi8vIEZtb2RlVXNlci5jdXJyZW50ID0gRm1vZGVVc2VyLmN1cnJlbnQ7XHJcbi8vIEZtb2RlVXNlci5jdXJyZW50QXN5bmMgPSBGbW9kZVVzZXIuY3VycmVudDtcclxuLy8gRm1vZGVVc2VyLnNpZ25VcCA9IEZtb2RlVXNlci5zaWduVXA7XHJcbi8vIEZtb2RlVXNlci5sb2dJbiA9IEZtb2RlVXNlci5sb2dJbjtcclxuLy8gRm1vZGVVc2VyLmxvZ091dCA9IEZtb2RlVXNlci5sb2dPdXQ7XHJcbi8vIEZtb2RlVXNlci5iZWNvbWUgPSBGbW9kZVVzZXIuYmVjb21lO1xyXG4vLyBGbW9kZVVzZXIucmVxdWVzdFBhc3N3b3JkUmVzZXQgPSBGbW9kZVVzZXIucmVxdWVzdFBhc3N3b3JkUmVzZXQ7Il19
|
|
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.user.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{FmodeObject}from"./fmode.object";export class FmodeUser extends FmodeObject{static{this._instance=null}static{this.instanceKey=()=>{if(!this._instance)throw new Error("FmodeParse not initialized before using User");return"Parse/"+this._instance.appId+"/currentUser"}}static bindInstance(e){this._instance=e}static get instance(){if(!this._instance)throw new Error("FmodeParse not initialized");return this._instance}get username(){return this.get("username")}set username(e){this.set("username",e)}get email(){return this.get("email")}set email(e){this.set("email",e)}get password(){return this.get("password")}set password(e){this.set("password",e)}constructor(e){super("_User"),e&&(this.id=e?.objectId,this.createdAt=new Date(e?.createdAt),this.updatedAt=new Date(e?.updatedAt),e.sessionToken&&(this.sessionToken=e.sessionToken,delete e.sessionToken),this.set(e))}static async logIn(e,s){const t=`${this.instance.serverURL}/login`,r=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json","X-Parse-Application-Id":this.instance.appId},body:JSON.stringify({username:e,password:s})}),n=await r.json();if(n.error)throw new Error(n.error);const i=new this({...n,username:e,password:s});return i._saveToCache(),i}static async become(e){const s=`${this.instance.serverURL}/users/me`;let t={"X-Parse-Session-Token":e,"X-Parse-Application-Id":this.instance.appId};const r=await fetch(s,{headers:t}),n=await r.json();if(n.error)throw new Error(n.error);const i=new this({...n,sessionToken:e});return i._saveToCache(),i}static async signUp(e,s,t={}){return new this({...t,username:e,password:s}).signUp()}static async logOut(){if(this.current())try{await fetch(`${this.instance.serverURL}/logout`,{method:"POST",headers:{"X-Parse-Session-Token":this.current().sessionToken,"X-Parse-Application-Id":this.instance.appId}})}finally{this._clearCurrentUser()}}static async requestPasswordReset(e){const s=`${this.instance.serverURL}/requestPasswordReset`,t=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json","X-Parse-Application-Id":this.instance.appId},body:JSON.stringify({email:e})}),r=await t.json();if(r.error)throw new Error(r.error)}static{this._currentUser=null}static current(){if(this._currentUser)return this._currentUser;try{const e=localStorage.getItem(this.instanceKey());if(!e)return null;const s=JSON.parse(e);if(!s.sessionToken)return null;const t=new this(s);return this._currentUser=t,t.sessionToken&&this._instance&&(this._instance.sessionToken=t.sessionToken),t}catch(e){return console.warn("Failed to restore user from cache",e),null}}static _clearCurrentUser(){this._currentUser=null,this._instance&&(this._instance.sessionToken=void 0),localStorage.removeItem(this.instanceKey())}async signUp(e){if(e&&this.set(e),!this.username)throw new Error("Username is required");if(!this.password)throw new Error("Password is required");let s=this.toJSON();delete s.__type,delete s.className;const t=`${FmodeUser.instance.serverURL}/users`,r=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json","X-Parse-Application-Id":FmodeUser.instance.appId},body:JSON.stringify(s)}),n=await r.json();if(n.error)throw new Error(n.error);return this.id=n.objectId,this.createdAt=new Date(n.createdAt),this.sessionToken=n.sessionToken,this._saveToCache(),this}async save(){const e=`${FmodeUser.instance.serverURL}/users/${this.id||this.data.objectId}`,s={"Content-Type":"application/json","X-Parse-Application-Id":FmodeUser.instance.appId,"X-Parse-Session-Token":this.sessionToken},t=this.toJSON();delete t.__type,delete t.objectId,delete t.className,delete t.sessionToken,delete t.username,delete t.createdAt,delete t.updatedAt;const r=await fetch(e,{method:"PUT",headers:s,body:JSON.stringify(t)}),n=await r.json();if(n.error)throw 209===n.code&&FmodeUser._clearCurrentUser(),new Error(n.error);return this.set("updatedAt",new Date(n.updatedAt)),this._saveToCache(),this}_saveToCache(){this.sessionToken&&(FmodeUser._currentUser=this,FmodeUser._instance&&(FmodeUser._instance.sessionToken=this.sessionToken),localStorage.setItem(FmodeUser.instanceKey(),JSON.stringify(this.toJSONForCache())))}toJSONForCache(){return{...super.toJSON(),sessionToken:this.sessionToken}}getSessionToken(){return this.sessionToken}async destroy(e){if(!this.id)throw new Error("Cannot destroy unsaved user");const s=`${FmodeUser.instance.serverURL}/users/${this.id}`,t={"X-Parse-Session-Token":this.sessionToken,"X-Parse-Application-Id":FmodeUser.instance.appId};e?.useMasterKey&&FmodeUser.instance.config.masterKey&&(t["X-Parse-Master-Key"]=FmodeUser.instance.config.masterKey);const r=await fetch(s,{method:"DELETE",headers:t});if(!r.ok){const e=await r.json();throw new Error(e.error||"Failed to delete user")}FmodeUser._clearCurrentUser()}}
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9jb3JlL3BhcnNlL2Ztb2RlLnVzZXIubWpz`
|
|
10
|
+
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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/index.mjs
|
|
7
|
+
*/
|
|
8
|
+
export*from"./fmode.parse";export*from"./fmode.object";export*from"./fmode.user";export*from"./fmode.query";export*from"./datatype/geopoint";
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9jb3JlL3BhcnNlL2luZGV4Lm1qcw==`
|
|
10
|
+
|
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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/types.mjs
|
|
7
|
+
*/
|
|
8
|
+
export{};
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9jb3JlL3BhcnNlL3R5cGVzLm1qcw==`
|
|
10
|
+
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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/voice/index.mjs
|
|
7
|
+
*/
|
|
8
|
+
export*from"./tts";export*from"../../aigc/voice/fmode-voice.service";
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9jb3JlL3ZvaWNlL2luZGV4Lm1qcw==`
|
|
10
|
+
|
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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/voice/tts/index.mjs
|
|
7
|
+
*/
|
|
8
|
+
export*from"../../../aigc/voice/tts";
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9jb3JlL3ZvaWNlL3R0cy9pbmRleC5tanM=`
|
|
10
|
+
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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/icon/filetype/audio.svg.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{svgStringToBlobURL}from"./svgtoblob";export const audioIcon=svgStringToBlobURL('<svg t="1726104860118" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3240" width="256" height="256"><path d="M113.777778 1024V0h540.444444l256 256v768z" fill="#FF5722" p-id="3241"></path><path d="M654.222222 256V0l256 256z" fill="#ECEFF1" p-id="3242"></path><path d="M654.222222 256l256 85.333333V256z" fill="#D84315" p-id="3243"></path><path d="M341.333333 711.111111a113.777778 85.333333 0 1 0 227.555556 0 113.777778 85.333333 0 1 0-227.555556 0Z" fill="#FBE9E7" p-id="3244"></path><path d="M512 398.222222h56.888889v312.888889h-56.888889z" fill="#FBE9E7" p-id="3245"></path><path d="M512 398.222222h170.666667v85.333334h-170.666667z" fill="#FBE9E7" p-id="3246"></path></svg>');
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9pY29uL2ZpbGV0eXBlL2F1ZGlvLnN2Zy5tanM=`
|
|
10
|
+
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
<defs>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
</clipPath>
|
|
12
|
-
</defs>
|
|
13
|
-
</svg>`);
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLnN2Zy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ztb2RlLW5nL3NyYy9saWIvaWNvbi9maWxldHlwZS9hdmF0YXIuc3ZnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUM7Ozs7Ozs7Ozs7O09BV3RDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgeyBzdmdTdHJpbmdUb0Jsb2JVUkwgfSBmcm9tIFwiLi9zdmd0b2Jsb2JcIjtcclxuZXhwb3J0IGNvbnN0IGF2YXRhckljb24gPSBzdmdTdHJpbmdUb0Jsb2JVUkwoYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTEyXCIgaGVpZ2h0PVwiNTEyXCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCIgZmlsbD1cIm5vbmVcIj5cclxuPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNzY1XzcwNTUpXCI+XHJcbjxwYXRoIGQ9XCJNMCAwSDUxMlY1MTJIMFYwWlwiIGZpbGw9XCIjMjIyRDNBXCIvPlxyXG48cGF0aCBkPVwiTTMzMC4wODUgMTEwLjk1NUMzMTEuMjk5IDkwLjY3MiAyODUuMDU5IDc5LjUwMjQgMjU2LjA5NyA3OS41MDI0QzIyNi45ODEgNzkuNTAyNCAyMDAuNjU1IDkwLjYwNDQgMTgxLjk1NSAxMTAuNzYyQzE2My4wNTMgMTMxLjE0MSAxNTMuODQzIDE1OC44MzggMTU2LjAwNSAxODguNzQ2QzE2MC4yOTIgMjQ3Ljc1MSAyMDUuMTkyIDI5NS43NSAyNTYuMDk3IDI5NS43NUMzMDcuMDAzIDI5NS43NSAzNTEuODI2IDI0Ny43NiAzNTYuMTggMTg4Ljc2NUMzNTguMzcxIDE1OS4xMjggMzQ5LjEwMyAxMzEuNDg5IDMzMC4wODUgMTEwLjk1NVpcIiBmaWxsPVwiI0IzQkFDMFwiLz5cclxuPHBhdGggZD1cIk01My45Mjc1IDUxMS45OTdINDU4LjMzM0M0NTkgNTAzIDQ1OC4yMDYgNDgzLjQ5OSA0NTYuMzMzIDQ3My4xNDFDNDQ4LjE4NSA0MjcuOTQxIDQyMi43NTcgMzg5Ljk3MiAzODIuNzg5IDM2My4zMjdDMzQ3LjI4MiAzMzkuNjc1IDMwMi4zMDUgMzI2LjY0MiAyNTYuMTMgMzI2LjY0MkMyMDkuOTU2IDMyNi42NDIgMTY0Ljk3OCAzMzkuNjY2IDEyOS40NzEgMzYzLjMyN0M4OS41MDM4IDM4OS45ODIgNjQuMDc1NCA0MjcuOTUxIDU1LjkyNzUgNDczLjE1QzU0LjA1NDYgNDgzLjUwOSA1My41MDAxIDUwNC41IDUzLjkyNzUgNTExLjk5N1pcIiBmaWxsPVwiI0IzQkFDMFwiLz5cclxuPC9nPlxyXG48ZGVmcz5cclxuPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTc2NV83MDU1XCI+XHJcbjxyZWN0IHdpZHRoPVwiNTEyXCIgaGVpZ2h0PVwiNTEyXCIgZmlsbD1cIndoaXRlXCIvPlxyXG48L2NsaXBQYXRoPlxyXG48L2RlZnM+XHJcbjwvc3ZnPmApIl19
|
|
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/icon/filetype/avatar.svg.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{svgStringToBlobURL}from"./svgtoblob";export const avatarIcon=svgStringToBlobURL('<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512" fill="none">\n<g clip-path="url(#clip0_1765_7055)">\n<path d="M0 0H512V512H0V0Z" fill="#222D3A"/>\n<path d="M330.085 110.955C311.299 90.672 285.059 79.5024 256.097 79.5024C226.981 79.5024 200.655 90.6044 181.955 110.762C163.053 131.141 153.843 158.838 156.005 188.746C160.292 247.751 205.192 295.75 256.097 295.75C307.003 295.75 351.826 247.76 356.18 188.765C358.371 159.128 349.103 131.489 330.085 110.955Z" fill="#B3BAC0"/>\n<path d="M53.9275 511.997H458.333C459 503 458.206 483.499 456.333 473.141C448.185 427.941 422.757 389.972 382.789 363.327C347.282 339.675 302.305 326.642 256.13 326.642C209.956 326.642 164.978 339.666 129.471 363.327C89.5038 389.982 64.0754 427.951 55.9275 473.15C54.0546 483.509 53.5001 504.5 53.9275 511.997Z" fill="#B3BAC0"/>\n</g>\n<defs>\n<clipPath id="clip0_1765_7055">\n<rect width="512" height="512" fill="white"/>\n</clipPath>\n</defs>\n</svg>');
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9pY29uL2ZpbGV0eXBlL2F2YXRhci5zdmcubWpz`
|
|
10
|
+
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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/icon/filetype/chat.svg.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{svgStringToBlobURL}from"./svgtoblob";export const chatIcon=svgStringToBlobURL('<svg t="1726104960295" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12838" width="256" height="256"><path d="M387.157333 128C222.293333 125.568 85.333333 249.130667 85.333333 394.88c0 84.138667 38.826667 157.141333 113.877334 210.730667 0 0-27.52 92.629333-27.136 94.506666 0.426667 1.834667 6.4 5.504 8.448 4.266667 2.133333-1.152 99.498667-60.416 99.498666-60.416 74.624 26.154667 118.144 17.450667 120.618667 17.28a196.864 196.864 0 0 1-6.784-89.557333c29.098667-170.88 200.618667-224.042667 294.613333-214.997334-25.941333-123.392-138.666667-226.133333-301.312-228.608z m286.933334 249.173333c-145.365333 0-261.333333 97.792-261.333334 222.634667 0 125.098667 110.293333 228.650667 261.546667 229.504 30.421333 0.170667 75.733333-7.808 106.282667-20.864 0 0 73.088 45.226667 77.226666 44.885333a6.826667 6.826667 0 0 0 6.314667-6.485333c0.170667-2.816-23.296-73.386667-23.296-73.386667 62.72-50.133333 88.96-105.386667 88.96-175.786666 0-124.885333-118.4-220.544-255.701333-220.544zM272.64 268.288a39.552 39.552 0 0 0-39.168 39.936c0 22.058667 17.493333 39.936 39.168 39.936a39.552 39.552 0 0 0 39.125333-39.936 39.552 39.552 0 0 0-39.125333-39.936z m237.013333 0a39.552 39.552 0 0 0-39.168 39.936c0 22.058667 17.536 39.936 39.168 39.936a39.552 39.552 0 0 0 39.168-39.936 39.552 39.552 0 0 0-39.168-39.936z m68.778667 212.437333a35.029333 35.029333 0 0 0-34.602667 35.413334c0 19.541333 15.488 35.413333 34.602667 35.413333a35.029333 35.029333 0 0 0 34.645333-35.413333 35.029333 35.029333 0 0 0-34.645333-35.413334z m185.258667 0a35.029333 35.029333 0 0 0-34.645334 35.413334c0 19.541333 15.488 35.413333 34.645334 35.413333a35.029333 35.029333 0 0 0 34.645333-35.413333 35.029333 35.029333 0 0 0-34.645333-35.413334z" fill="#00C80C" p-id="12839"></path></svg>');
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9pY29uL2ZpbGV0eXBlL2NoYXQuc3ZnLm1qcw==`
|
|
10
|
+
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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/icon/filetype/docx.svg.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{svgStringToBlobURL}from"./svgtoblob";export const docxIcon=svgStringToBlobURL('<svg t="1726104361150" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5821" width="256" height="256"><path d="M950.272 843.776H527.36c-16.384 0-29.696-13.312-29.696-29.696V210.944c0-16.384 13.312-29.696 29.696-29.696h422.912c16.384 0 29.696 13.312 29.696 29.696v603.136c0 16.384-13.312 29.696-29.696 29.696z" fill="#E8E8E8" p-id="5822"></path><path d="M829.44 361.472H527.36c-16.384 0-29.696-13.312-29.696-29.696s13.312-29.696 29.696-29.696H829.44c16.384 0 29.696 13.312 29.696 29.696 0 15.36-13.312 29.696-29.696 29.696z m0 120.832H527.36c-16.384 0-29.696-13.312-29.696-29.696s13.312-29.696 29.696-29.696H829.44c16.384 0 29.696 13.312 29.696 29.696s-13.312 29.696-29.696 29.696z m0 119.808H527.36c-16.384 0-29.696-13.312-29.696-29.696s13.312-29.696 29.696-29.696H829.44c16.384 0 29.696 13.312 29.696 29.696s-13.312 29.696-29.696 29.696z m0 120.832H527.36c-16.384 0-29.696-13.312-29.696-29.696s13.312-29.696 29.696-29.696H829.44c16.384 0 29.696 13.312 29.696 29.696s-13.312 29.696-29.696 29.696z" fill="#B2B2B2" p-id="5823"></path><path d="M607.232 995.328l-563.2-107.52V135.168l563.2-107.52v967.68z" fill="#0D47A1" p-id="5824"></path><path d="M447.488 696.32h-71.68l-47.104-236.544c-3.072-13.312-4.096-27.648-4.096-40.96h-1.024c-1.024 16.384-3.072 30.72-5.12 40.96L269.312 696.32H194.56l-74.752-368.64h70.656l39.936 245.76c2.048 10.24 3.072 24.576 4.096 41.984h1.024c0-13.312 3.072-27.648 6.144-43.008l51.2-244.736h68.608l47.104 247.808c2.048 9.216 3.072 22.528 4.096 39.936h1.024c1.024-13.312 2.048-26.624 4.096-40.96l39.936-245.76H522.24L447.488 696.32z" fill="#FFFFFF" p-id="5825"></path></svg>');
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9pY29uL2ZpbGV0eXBlL2RvY3guc3ZnLm1qcw==`
|
|
10
|
+
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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/icon/filetype/file.svg.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{svgStringToBlobURL}from"./svgtoblob";export const fileIcon=svgStringToBlobURL('<svg t="1726107262747" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="21360" width="256" height="256"><path d="M853.333333 960H170.666667V64h469.333333l213.333333 213.333333z" fill="#90CAF9" p-id="21361"></path><path d="M821.333333 298.666667H618.666667V96z" fill="#E1F5FE" p-id="21362"></path></svg>');
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9pY29uL2ZpbGV0eXBlL2ZpbGUuc3ZnLm1qcw==`
|
|
10
|
+
|