@miaixz/sdk 0.5.0
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 +202 -0
- package/NOTICE +7 -0
- package/README.md +412 -0
- package/dist/api/client.d.ts +223 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +1069 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/endpoint.d.ts +10 -0
- package/dist/api/endpoint.d.ts.map +1 -0
- package/dist/api/endpoint.js +51 -0
- package/dist/api/endpoint.js.map +1 -0
- package/dist/api/errors.d.ts +180 -0
- package/dist/api/errors.d.ts.map +1 -0
- package/dist/api/errors.js +173 -0
- package/dist/api/errors.js.map +1 -0
- package/dist/api/index.d.ts +6 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +5 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/request.d.ts +135 -0
- package/dist/api/request.d.ts.map +1 -0
- package/dist/api/request.js +2 -0
- package/dist/api/request.js.map +1 -0
- package/dist/api/response.d.ts +69 -0
- package/dist/api/response.d.ts.map +1 -0
- package/dist/api/response.js +43 -0
- package/dist/api/response.js.map +1 -0
- package/dist/api/telemetry.d.ts +139 -0
- package/dist/api/telemetry.d.ts.map +1 -0
- package/dist/api/telemetry.js +2 -0
- package/dist/api/telemetry.js.map +1 -0
- package/dist/appearance/appearance.d.ts +161 -0
- package/dist/appearance/appearance.d.ts.map +1 -0
- package/dist/appearance/appearance.js +614 -0
- package/dist/appearance/appearance.js.map +1 -0
- package/dist/appearance/index.d.ts +3 -0
- package/dist/appearance/index.d.ts.map +1 -0
- package/dist/appearance/index.js +3 -0
- package/dist/appearance/index.js.map +1 -0
- package/dist/auth/auth.d.ts +197 -0
- package/dist/auth/auth.d.ts.map +1 -0
- package/dist/auth/auth.js +314 -0
- package/dist/auth/auth.js.map +1 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +2 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/config/config.d.ts +117 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +241 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +2 -0
- package/dist/config/index.js.map +1 -0
- package/dist/consts/index.d.ts +35 -0
- package/dist/consts/index.d.ts.map +1 -0
- package/dist/consts/index.js +35 -0
- package/dist/consts/index.js.map +1 -0
- package/dist/context/context.d.ts +123 -0
- package/dist/context/context.d.ts.map +1 -0
- package/dist/context/context.js +252 -0
- package/dist/context/context.js.map +1 -0
- package/dist/context/index.d.ts +2 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +2 -0
- package/dist/context/index.js.map +1 -0
- package/dist/contracts/host-context.d.ts +132 -0
- package/dist/contracts/host-context.d.ts.map +1 -0
- package/dist/contracts/host-context.js +2 -0
- package/dist/contracts/host-context.js.map +1 -0
- package/dist/contracts/index.d.ts +8 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +2 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/lifecycle.d.ts +49 -0
- package/dist/contracts/lifecycle.d.ts.map +1 -0
- package/dist/contracts/lifecycle.js +2 -0
- package/dist/contracts/lifecycle.js.map +1 -0
- package/dist/contracts/module-manifest.d.ts +110 -0
- package/dist/contracts/module-manifest.d.ts.map +1 -0
- package/dist/contracts/module-manifest.js +317 -0
- package/dist/contracts/module-manifest.js.map +1 -0
- package/dist/contracts/navigation.d.ts +36 -0
- package/dist/contracts/navigation.d.ts.map +1 -0
- package/dist/contracts/navigation.js +11 -0
- package/dist/contracts/navigation.js.map +1 -0
- package/dist/contracts/permission.d.ts +8 -0
- package/dist/contracts/permission.d.ts.map +1 -0
- package/dist/contracts/permission.js +14 -0
- package/dist/contracts/permission.js.map +1 -0
- package/dist/contracts/post-message.d.ts +124 -0
- package/dist/contracts/post-message.d.ts.map +1 -0
- package/dist/contracts/post-message.js +2 -0
- package/dist/contracts/post-message.js.map +1 -0
- package/dist/contracts/route.d.ts +45 -0
- package/dist/contracts/route.d.ts.map +1 -0
- package/dist/contracts/route.js +35 -0
- package/dist/contracts/route.js.map +1 -0
- package/dist/events/events.d.ts +191 -0
- package/dist/events/events.d.ts.map +1 -0
- package/dist/events/events.js +486 -0
- package/dist/events/events.js.map +1 -0
- package/dist/events/index.d.ts +2 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +2 -0
- package/dist/events/index.js.map +1 -0
- package/dist/files/files.d.ts +138 -0
- package/dist/files/files.d.ts.map +1 -0
- package/dist/files/files.js +144 -0
- package/dist/files/files.js.map +1 -0
- package/dist/files/index.d.ts +2 -0
- package/dist/files/index.d.ts.map +1 -0
- package/dist/files/index.js +2 -0
- package/dist/files/index.js.map +1 -0
- package/dist/formatters/index.d.ts +44 -0
- package/dist/formatters/index.d.ts.map +1 -0
- package/dist/formatters/index.js +50 -0
- package/dist/formatters/index.js.map +1 -0
- package/dist/i18n/default-translator.d.ts +17 -0
- package/dist/i18n/default-translator.d.ts.map +1 -0
- package/dist/i18n/default-translator.js +19 -0
- package/dist/i18n/default-translator.js.map +1 -0
- package/dist/i18n/i18n.d.ts +248 -0
- package/dist/i18n/i18n.d.ts.map +1 -0
- package/dist/i18n/i18n.js +617 -0
- package/dist/i18n/i18n.js.map +1 -0
- package/dist/i18n/index.d.ts +2 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +2 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/models/index.d.ts +2 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +2 -0
- package/dist/models/index.js.map +1 -0
- package/dist/permissions/index.d.ts +2 -0
- package/dist/permissions/index.d.ts.map +1 -0
- package/dist/permissions/index.js +2 -0
- package/dist/permissions/index.js.map +1 -0
- package/dist/permissions/permissions.d.ts +67 -0
- package/dist/permissions/permissions.d.ts.map +1 -0
- package/dist/permissions/permissions.js +123 -0
- package/dist/permissions/permissions.js.map +1 -0
- package/dist/runtime/direct-host-bridge.d.ts +11 -0
- package/dist/runtime/direct-host-bridge.d.ts.map +1 -0
- package/dist/runtime/direct-host-bridge.js +299 -0
- package/dist/runtime/direct-host-bridge.js.map +1 -0
- package/dist/runtime/index.d.ts +5 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +3 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/post-message-bridge.d.ts +20 -0
- package/dist/runtime/post-message-bridge.d.ts.map +1 -0
- package/dist/runtime/post-message-bridge.js +1115 -0
- package/dist/runtime/post-message-bridge.js.map +1 -0
- package/dist/sdk.d.ts +177 -0
- package/dist/sdk.d.ts.map +1 -0
- package/dist/sdk.js +214 -0
- package/dist/sdk.js.map +1 -0
- package/dist/storage/index.d.ts +2 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +2 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/storage.d.ts +246 -0
- package/dist/storage/storage.d.ts.map +1 -0
- package/dist/storage/storage.js +358 -0
- package/dist/storage/storage.js.map +1 -0
- package/dist/types/api.d.ts +82 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/api.js +2 -0
- package/dist/types/api.js.map +1 -0
- package/dist/types/appearance.d.ts +85 -0
- package/dist/types/appearance.d.ts.map +1 -0
- package/dist/types/appearance.js +48 -0
- package/dist/types/appearance.js.map +1 -0
- package/dist/types/config.d.ts +49 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/context.d.ts +41 -0
- package/dist/types/context.d.ts.map +1 -0
- package/dist/types/context.js +2 -0
- package/dist/types/context.js.map +1 -0
- package/dist/types/file.d.ts +48 -0
- package/dist/types/file.d.ts.map +1 -0
- package/dist/types/file.js +2 -0
- package/dist/types/file.js.map +1 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +12 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/organization.d.ts +56 -0
- package/dist/types/organization.d.ts.map +1 -0
- package/dist/types/organization.js +2 -0
- package/dist/types/organization.js.map +1 -0
- package/dist/types/pagination.d.ts +55 -0
- package/dist/types/pagination.d.ts.map +1 -0
- package/dist/types/pagination.js +13 -0
- package/dist/types/pagination.js.map +1 -0
- package/dist/types/permissions.d.ts +26 -0
- package/dist/types/permissions.d.ts.map +1 -0
- package/dist/types/permissions.js +2 -0
- package/dist/types/permissions.js.map +1 -0
- package/dist/types/space.d.ts +43 -0
- package/dist/types/space.d.ts.map +1 -0
- package/dist/types/space.js +2 -0
- package/dist/types/space.js.map +1 -0
- package/dist/types/tenant.d.ts +31 -0
- package/dist/types/tenant.d.ts.map +1 -0
- package/dist/types/tenant.js +2 -0
- package/dist/types/tenant.js.map +1 -0
- package/dist/types/user.d.ts +48 -0
- package/dist/types/user.d.ts.map +1 -0
- package/dist/types/user.js +2 -0
- package/dist/types/user.js.map +1 -0
- package/dist/utils/date.d.ts +9 -0
- package/dist/utils/date.d.ts.map +1 -0
- package/dist/utils/date.js +11 -0
- package/dist/utils/date.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/number.d.ts +11 -0
- package/dist/utils/number.d.ts.map +1 -0
- package/dist/utils/number.js +13 -0
- package/dist/utils/number.js.map +1 -0
- package/dist/utils/object.d.ts +9 -0
- package/dist/utils/object.d.ts.map +1 -0
- package/dist/utils/object.js +11 -0
- package/dist/utils/object.js.map +1 -0
- package/dist/utils/string.d.ts +9 -0
- package/dist/utils/string.d.ts.map +1 -0
- package/dist/utils/string.js +11 -0
- package/dist/utils/string.js.map +1 -0
- package/dist/validators/index.d.ts +8 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/dist/validators/index.js +8 -0
- package/dist/validators/index.js.map +1 -0
- package/package.json +156 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/i18n/i18n.ts"],"names":[],"mappings":"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","sourcesContent":["import { MiaixzSdkError } from \"../api/errors.js\";\nimport { setMiaixzDefaultTranslator } from \"./default-translator.js\";\n\n/**\n * Identifies a locale supported by the Miaixz internationalization runtime.\n *\n * @public\n */\nexport type MiaixzLocale = string;\n\n/**\n * Maps named message placeholders to scalar replacement values.\n *\n * @public\n */\nexport type MiaixzMessageParams = Readonly<Record<string, string | number | boolean>>;\n\n/**\n * Maps translation keys to localized strings for one locale.\n *\n * @public\n */\nexport type MiaixzMessages = Readonly<Record<string, string>>;\n\n/**\n * Maps locale identifiers to flat message collections.\n *\n * @public\n */\nexport type MiaixzMessageCatalog = Readonly<Record<MiaixzLocale, MiaixzMessages>>;\n\n/**\n * Identifies whether messages originate from a package or the consuming project.\n *\n * @public\n */\nexport type MiaixzMessageSource = \"builtin\" | \"project\";\n\n/**\n * Describes an ES module whose default export contains localized messages.\n *\n * @public\n */\nexport interface MiaixzMessageModule {\n /**\n * Contains the localized messages exported by the language module.\n */\n readonly default: MiaixzMessages;\n}\n\n/**\n * Represents direct messages or a dynamically imported language module.\n *\n * @public\n */\nexport type MiaixzMessageLoaderResult = MiaixzMessages | MiaixzMessageModule;\n\n/**\n * Loads project-owned messages for one namespace and locale.\n *\n * @public\n */\nexport type MiaixzMessageLoader = (\n namespace: string,\n locale: MiaixzLocale,\n) => Promise<MiaixzMessageLoaderResult>;\n\n/**\n * Maps namespaces and locales to project-owned dynamic import functions.\n *\n * @public\n */\nexport type MiaixzMessageLoaderMap = Readonly<\n Record<string, Readonly<Record<MiaixzLocale, () => Promise<MiaixzMessageLoaderResult>>>>\n>;\n\n/**\n * Translates a message key with optional interpolation and fallback text.\n *\n * @public\n */\nexport type MiaixzTranslator = (\n key: string,\n params?: MiaixzMessageParams,\n fallback?: string,\n) => string;\n\n/**\n * Reports the current locale and asynchronous language-loading state.\n *\n * @public\n */\nexport interface MiaixzI18nSnapshot {\n /**\n * Contains the active canonical BCP 47 locale.\n */\n readonly locale: MiaixzLocale;\n\n /**\n * Reports whether requested project messages are ready, loading, or unavailable.\n */\n readonly loadStatus: \"ready\" | \"loading\" | \"error\";\n\n /**\n * Contains the latest project-language loading failure when present.\n */\n readonly loadError?: MiaixzI18nLoadError;\n}\n\n/**\n * Configures the Miaixz internationalization runtime.\n *\n * @public\n */\nexport interface MiaixzI18nOptions {\n /**\n * Selects the initial active locale.\n */\n readonly locale?: MiaixzLocale;\n\n /**\n * Selects the locale used after active-locale resources are exhausted.\n */\n readonly fallbackLocale?: MiaixzLocale;\n\n /**\n * Registers static project resources during construction.\n */\n readonly messages?: MiaixzMessageCatalog;\n\n /**\n * Loads project-owned language files by namespace and locale.\n */\n readonly loadMessages?: MiaixzMessageLoader;\n\n /**\n * Receives each project-language loading failure.\n */\n readonly onLoadError?: (error: MiaixzI18nLoadError) => void;\n}\n\n/**\n * Provides the built-in SDK messages in English and Simplified Chinese.\n *\n * @public\n */\nexport const miaixzSdkMessages: MiaixzMessageCatalog = Object.freeze({\n \"en-US\": Object.freeze({\n \"sdk.error.unknown\": \"An unknown SDK error occurred\",\n \"sdk.error.network\": \"The network request failed\",\n \"sdk.error.timeout\": \"The request timed out after {timeoutMs}ms\",\n \"sdk.error.aborted\": \"The request was aborted\",\n \"sdk.error.http\": \"Request failed with status {status}\",\n \"sdk.error.api.fetchUnavailable\": \"A Fetch implementation is required\",\n \"sdk.error.api.baseUrlInvalid\": \"The API base URL is invalid\",\n \"sdk.error.api.requestOriginInvalid\": \"The request origin is invalid\",\n \"sdk.error.api.envelopeInvalid\": \"The API response does not use the required Miaixz envelope\",\n \"sdk.error.api.envelopeModeInvalid\":\n \"The selected response type does not support envelope processing\",\n \"sdk.error.api.responseInvalid\": \"The API response data is invalid\",\n \"sdk.error.api.business\": \"The API rejected the request\",\n \"sdk.error.api.timeoutInvalid\": \"The request timeout must be a finite number greater than zero\",\n \"sdk.error.api.retryInvalid\": \"The retry count must be an integer from zero through five\",\n \"sdk.error.api.cryptoUnavailable\": \"A secure random identifier generator is required\",\n \"sdk.error.api.csrfTokenMissing\": \"The CSRF token is missing\",\n \"sdk.error.auth.sessionInvalid\": \"The authentication session is invalid\",\n \"sdk.error.auth.refreshFailed\": \"The authentication session could not be refreshed\",\n \"sdk.error.auth.persistenceAcknowledgementRequired\":\n \"Persistent authentication storage requires explicit Web Storage risk acknowledgement\",\n \"sdk.error.auth.modeMismatch\":\n \"The requested authentication operation is unavailable in this mode\",\n \"sdk.error.config.invalid\": \"The SDK configuration is invalid\",\n \"sdk.error.config.fetchUnavailable\": \"A Fetch implementation is required to load configuration\",\n \"sdk.error.config.fetchFailed\": \"The configuration could not be loaded\",\n \"sdk.error.config.serviceMissing\": \"Service endpoint {service} is not configured\",\n \"sdk.error.context.invalid\": \"The runtime context is invalid\",\n \"sdk.error.permissions.invalid\": \"The permission snapshot is invalid\",\n \"sdk.error.file.download\": \"The file could not be downloaded\",\n \"sdk.error.file.downloadFailed\": \"The file could not be downloaded\",\n \"sdk.error.module.manifestInvalid\": \"The module manifest is invalid\",\n \"sdk.error.module.hostIncompatible\": \"The module is incompatible with this host\",\n \"sdk.error.bridge.capabilityUnavailable\": \"The requested host capability is unavailable\",\n \"sdk.error.bridge.navigationStateInvalid\": \"The requested navigation state is invalid\",\n \"sdk.error.bridge.originInvalid\": \"The module origin is invalid\",\n \"sdk.error.bridge.messageInvalid\": \"The module bridge message is invalid\",\n \"sdk.error.bridge.notReady\": \"The module bridge is not ready\",\n \"sdk.error.bridge.timeout\": \"The module bridge request timed out\",\n \"sdk.error.bridge.disposed\": \"The module bridge has been disposed\",\n \"sdk.error.bridge.cryptoUnavailable\": \"A secure random identifier generator is required\",\n \"sdk.error.event.channelInvalid\": \"The event channel is invalid\",\n \"sdk.error.event.validatorMissing\": \"The event payload validator is missing\",\n \"sdk.error.event.payloadNotCloneable\": \"The event payload cannot be safely cloned\",\n \"sdk.error.event.cryptoUnavailable\": \"A secure random identifier generator is required\",\n \"sdk.error.appearance.invalid\": \"The appearance settings are invalid\",\n \"sdk.error.appearance.colorInvalid\": \"The appearance color is invalid\",\n \"sdk.error.appearance.contrastInvalid\": \"The appearance color contrast is insufficient\",\n \"sdk.error.storage.scopeInvalid\": \"The storage scope is invalid\",\n \"sdk.error.storage.migrationChainInvalid\": \"The storage migration chain is invalid\",\n \"sdk.error.i18n.localeInvalid\": \"The locale is invalid\",\n \"sdk.error.i18n.namespaceInvalid\": \"The message namespace is invalid\",\n \"sdk.error.i18n.messagesInvalid\": \"The language file is invalid\",\n \"sdk.error.i18n.loadFailed\": \"The {namespace} messages for {locale} could not be loaded\",\n }),\n \"zh-CN\": Object.freeze({\n \"sdk.error.unknown\": \"发生未知 SDK 错误\",\n \"sdk.error.network\": \"网络请求失败\",\n \"sdk.error.timeout\": \"请求在 {timeoutMs} 毫秒后超时\",\n \"sdk.error.aborted\": \"请求已取消\",\n \"sdk.error.http\": \"请求失败,状态码为 {status}\",\n \"sdk.error.api.fetchUnavailable\": \"需要提供 Fetch 实现\",\n \"sdk.error.api.baseUrlInvalid\": \"API 基础地址无效\",\n \"sdk.error.api.requestOriginInvalid\": \"请求来源无效\",\n \"sdk.error.api.envelopeInvalid\": \"API 响应未使用规定的 Miaixz 返回结构\",\n \"sdk.error.api.envelopeModeInvalid\": \"当前响应类型不支持返回包处理\",\n \"sdk.error.api.responseInvalid\": \"API 响应数据无效\",\n \"sdk.error.api.business\": \"API 拒绝了该请求\",\n \"sdk.error.api.timeoutInvalid\": \"请求超时时间必须是大于零的有限数值\",\n \"sdk.error.api.retryInvalid\": \"重试次数必须是零到五之间的整数\",\n \"sdk.error.api.cryptoUnavailable\": \"需要安全的随机标识生成器\",\n \"sdk.error.api.csrfTokenMissing\": \"缺少 CSRF 令牌\",\n \"sdk.error.auth.sessionInvalid\": \"登录会话无效\",\n \"sdk.error.auth.refreshFailed\": \"无法刷新登录会话\",\n \"sdk.error.auth.persistenceAcknowledgementRequired\":\n \"持久化认证存储需要显式确认 Web Storage 安全风险\",\n \"sdk.error.auth.modeMismatch\": \"当前认证模式不支持该操作\",\n \"sdk.error.config.invalid\": \"SDK 配置无效\",\n \"sdk.error.config.fetchUnavailable\": \"加载配置需要提供 Fetch 实现\",\n \"sdk.error.config.fetchFailed\": \"无法加载配置\",\n \"sdk.error.config.serviceMissing\": \"未配置服务端点 {service}\",\n \"sdk.error.context.invalid\": \"运行上下文无效\",\n \"sdk.error.permissions.invalid\": \"权限快照无效\",\n \"sdk.error.file.download\": \"文件下载失败\",\n \"sdk.error.file.downloadFailed\": \"文件下载失败\",\n \"sdk.error.module.manifestInvalid\": \"模块清单无效\",\n \"sdk.error.module.hostIncompatible\": \"模块与当前宿主不兼容\",\n \"sdk.error.bridge.capabilityUnavailable\": \"请求的宿主能力不可用\",\n \"sdk.error.bridge.navigationStateInvalid\": \"请求的导航状态无效\",\n \"sdk.error.bridge.originInvalid\": \"模块来源无效\",\n \"sdk.error.bridge.messageInvalid\": \"模块桥接消息无效\",\n \"sdk.error.bridge.notReady\": \"模块桥接尚未就绪\",\n \"sdk.error.bridge.timeout\": \"模块桥接请求超时\",\n \"sdk.error.bridge.disposed\": \"模块桥接已释放\",\n \"sdk.error.bridge.cryptoUnavailable\": \"需要安全的随机标识生成器\",\n \"sdk.error.event.channelInvalid\": \"事件通道无效\",\n \"sdk.error.event.validatorMissing\": \"缺少事件载荷校验器\",\n \"sdk.error.event.payloadNotCloneable\": \"事件载荷无法安全复制\",\n \"sdk.error.event.cryptoUnavailable\": \"需要安全的随机标识生成器\",\n \"sdk.error.appearance.invalid\": \"外观设置无效\",\n \"sdk.error.appearance.colorInvalid\": \"外观颜色无效\",\n \"sdk.error.appearance.contrastInvalid\": \"外观颜色对比度不足\",\n \"sdk.error.storage.scopeInvalid\": \"存储范围无效\",\n \"sdk.error.storage.migrationChainInvalid\": \"存储迁移链无效\",\n \"sdk.error.i18n.localeInvalid\": \"语言区域标识无效\",\n \"sdk.error.i18n.namespaceInvalid\": \"消息命名空间无效\",\n \"sdk.error.i18n.messagesInvalid\": \"语言文件无效\",\n \"sdk.error.i18n.loadFailed\": \"无法加载 {locale} 的 {namespace} 消息\",\n }),\n});\n\nconst namespacePattern = /^[a-z][a-z0-9-]{1,63}$/;\ntype MutableCatalog = Map<string, Map<MiaixzLocale, Record<string, string>>>;\n\n/**\n * Resolves one built-in SDK message before a runtime is available.\n *\n * @param locale - Preferred locale.\n * @param key - Registered SDK message key.\n * @param params - Optional interpolation values.\n * @returns Localized built-in text or the key itself.\n */\nfunction resolveBuiltinMessage(\n locale: MiaixzLocale,\n key: string,\n params?: MiaixzMessageParams,\n): string {\n let canonical: string;\n try {\n canonical = Intl.getCanonicalLocales(locale)[0] ?? \"en-US\";\n } catch {\n canonical = \"en-US\";\n }\n const language = canonical.split(\"-\")[0]?.toLowerCase();\n const matched = Object.keys(miaixzSdkMessages)\n .sort()\n .find((candidate) => candidate.split(\"-\")[0]?.toLowerCase() === language);\n const message =\n miaixzSdkMessages[canonical]?.[key] ??\n (matched ? miaixzSdkMessages[matched]?.[key] : undefined) ??\n miaixzSdkMessages[\"en-US\"]?.[key] ??\n key;\n return interpolate(message, params);\n}\n\n/**\n * Creates a localized SDK error for an invalid internationalization value.\n *\n * @param code - Stable registry error code.\n * @param messageKey - Registered SDK message key.\n * @param locale - Preferred locale for the public message.\n * @returns Localized SDK error without the rejected value.\n */\nfunction createI18nContractError(\n code: \"I18N_LOCALE_INVALID\" | \"I18N_NAMESPACE_INVALID\" | \"I18N_MESSAGES_INVALID\",\n messageKey:\n | \"sdk.error.i18n.localeInvalid\"\n | \"sdk.error.i18n.namespaceInvalid\"\n | \"sdk.error.i18n.messagesInvalid\",\n locale = \"en-US\",\n): MiaixzSdkError {\n return new MiaixzSdkError(resolveBuiltinMessage(locale, messageKey), { code });\n}\n\n/**\n * Canonicalizes a BCP 47 locale identifier.\n *\n * @param locale - Locale candidate to canonicalize.\n * @returns Canonical BCP 47 locale identifier.\n * @throws MiaixzSdkError When the locale is invalid.\n */\nfunction canonicalizeLocale(locale: MiaixzLocale): MiaixzLocale {\n if (typeof locale !== \"string\" || locale.length === 0) {\n throw createI18nContractError(\"I18N_LOCALE_INVALID\", \"sdk.error.i18n.localeInvalid\");\n }\n try {\n const canonical = Intl.getCanonicalLocales(locale)[0];\n if (!canonical) {\n throw createI18nContractError(\"I18N_LOCALE_INVALID\", \"sdk.error.i18n.localeInvalid\");\n }\n return canonical;\n } catch (error) {\n if (error instanceof MiaixzSdkError) throw error;\n throw createI18nContractError(\"I18N_LOCALE_INVALID\", \"sdk.error.i18n.localeInvalid\");\n }\n}\n\n/**\n * Validates and returns a message namespace.\n *\n * @param namespace - Namespace candidate to validate.\n * @returns The unchanged valid namespace.\n * @throws MiaixzSdkError When the namespace violates the frozen syntax.\n */\nfunction validateNamespace(namespace: string): string {\n if (!namespacePattern.test(namespace)) {\n throw createI18nContractError(\"I18N_NAMESPACE_INVALID\", \"sdk.error.i18n.namespaceInvalid\");\n }\n return namespace;\n}\n\n/**\n * Determines whether a runtime value is a flat message object.\n *\n * @param value - Runtime value to inspect.\n * @returns Whether every own enumerable value is a string.\n */\nfunction isMessages(value: unknown): value is MiaixzMessages {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n Object.values(value).every((message) => typeof message === \"string\")\n );\n}\n\n/**\n * Validates that messages are flat and owned by one namespace.\n *\n * @param namespace - Namespace that must own every message key.\n * @param messages - Runtime message collection to validate.\n * @returns A safe mutable copy of the validated messages.\n */\nfunction validateMessages(namespace: string, messages: unknown): Record<string, string> {\n if (!isMessages(messages)) {\n throw createI18nContractError(\"I18N_MESSAGES_INVALID\", \"sdk.error.i18n.messagesInvalid\");\n }\n if (Object.keys(messages).some((key) => !key.startsWith(`${namespace}.`))) {\n throw createI18nContractError(\"I18N_NAMESPACE_INVALID\", \"sdk.error.i18n.namespaceInvalid\");\n }\n return { ...messages };\n}\n\n/**\n * Extracts messages from a direct object or an ES module default export.\n *\n * @param value - Loader result to normalize.\n * @returns Runtime message collection awaiting namespace validation.\n */\nfunction unwrapMessages(value: MiaixzMessageLoaderResult): MiaixzMessages {\n if (typeof value === \"object\" && value !== null && !Array.isArray(value) && \"default\" in value) {\n if (isMessages(value.default)) return value.default;\n throw createI18nContractError(\"I18N_MESSAGES_INVALID\", \"sdk.error.i18n.messagesInvalid\");\n }\n if (isMessages(value)) return value;\n throw createI18nContractError(\"I18N_MESSAGES_INVALID\", \"sdk.error.i18n.messagesInvalid\");\n}\n\n/**\n * Replaces supplied scalar placeholders and preserves missing placeholders.\n *\n * @param message - Localized message template.\n * @param params - Optional named scalar values.\n * @returns Interpolated message.\n */\nfunction interpolate(message: string, params?: MiaixzMessageParams): string {\n if (!params) return message;\n return message.replace(/\\{([\\w.-]+)\\}/g, (placeholder, key: string) => {\n const value = params[key];\n return value === undefined ? placeholder : String(value);\n });\n}\n\n/**\n * Returns the base language portion of a canonical locale.\n *\n * @param locale - Canonical locale identifier.\n * @returns Lowercase base language.\n */\nfunction getBaseLanguage(locale: MiaixzLocale): string {\n return locale.split(\"-\")[0]?.toLowerCase() ?? locale.toLowerCase();\n}\n\n/**\n * Resolves exact and base-language messages from one source catalog.\n *\n * @param catalog - Source catalog to search.\n * @param namespace - Namespace that owns the requested key.\n * @param locale - Canonical locale requested by the caller.\n * @param key - Message key to resolve.\n * @returns Exact or deterministic base-language message.\n */\nfunction resolveSourceMessage(\n catalog: MutableCatalog,\n namespace: string,\n locale: MiaixzLocale,\n key: string,\n): string | undefined {\n const locales = catalog.get(namespace);\n const exact = locales?.get(locale)?.[key];\n if (exact !== undefined) return exact;\n const language = getBaseLanguage(locale);\n const baseLocale = [...(locales?.keys() ?? [])]\n .sort()\n .find((candidate) => candidate !== locale && getBaseLanguage(candidate) === language);\n return baseLocale ? locales?.get(baseLocale)?.[key] : undefined;\n}\n\n/**\n * Finds an exact or base-language loader in deterministic key order.\n *\n * @param namespace - Message namespace.\n * @param locale - Canonical requested locale.\n * @param loaders - Namespace and locale loader map.\n * @returns Matching dynamic import function when registered.\n */\nfunction resolveLoader(\n namespace: string,\n locale: MiaixzLocale,\n loaders: MiaixzMessageLoaderMap,\n): (() => Promise<MiaixzMessageLoaderResult>) | undefined {\n const namespaceLoaders = loaders[namespace];\n if (!namespaceLoaders) return undefined;\n for (const [candidate, loader] of Object.entries(namespaceLoaders)) {\n if (canonicalizeLocale(candidate) === locale) return loader;\n }\n const language = getBaseLanguage(locale);\n return Object.entries(namespaceLoaders)\n .map(([candidate, loader]) => ({ locale: canonicalizeLocale(candidate), loader }))\n .sort((left, right) => left.locale.localeCompare(right.locale))\n .find((candidate) => getBaseLanguage(candidate.locale) === language)?.loader;\n}\n\n/**\n * Creates a deduplicating loader from project-owned language module mappings.\n * Failed imports are evicted so a later call can retry them.\n *\n * @param loaders - Namespace and locale keys mapped to dynamic import functions.\n * @returns Message loader implementing exact and base-language lookup.\n * @public\n */\nexport function createMiaixzMessageLoader(loaders: MiaixzMessageLoaderMap): MiaixzMessageLoader {\n const cache = new Map<string, Promise<MiaixzMessageLoaderResult>>();\n return (namespace, locale) => {\n const validNamespace = validateNamespace(namespace);\n const canonicalLocale = canonicalizeLocale(locale);\n const cacheKey = `${validNamespace}\\u0000${canonicalLocale}`;\n const cached = cache.get(cacheKey);\n if (cached) return cached;\n const loader = resolveLoader(validNamespace, canonicalLocale, loaders);\n const pending = Promise.resolve()\n .then(() => (loader ? loader() : {}))\n .catch((error: unknown) => {\n cache.delete(cacheKey);\n throw error;\n });\n cache.set(cacheKey, pending);\n return pending;\n };\n}\n\n/**\n * Error raised when a project language file fails to load or validate.\n *\n * @public\n */\nexport class MiaixzI18nLoadError extends MiaixzSdkError {\n /**\n * Contains the canonical locale whose language file failed.\n */\n readonly locale: MiaixzLocale;\n\n /**\n * Contains the namespace whose language file failed.\n */\n readonly namespace: string;\n\n /**\n * Creates a project language-file loading error.\n *\n * @param locale - Canonical requested locale.\n * @param namespace - Requested message namespace.\n * @param message - Localized public failure message.\n * @param cause - Original loader or validation error.\n */\n constructor(locale: MiaixzLocale, namespace: string, message: string, cause?: unknown) {\n super(message, { code: \"I18N_LOAD_FAILED\", cause });\n this.name = \"MiaixzI18nLoadError\";\n this.locale = locale;\n this.namespace = namespace;\n }\n}\n\n/**\n * Runtime translator with namespace isolation, deterministic fallbacks, and lazy loading.\n *\n * @public\n */\nexport class MiaixzI18n {\n #locale: MiaixzLocale;\n readonly #fallbackLocale: MiaixzLocale;\n readonly #builtin: MutableCatalog = new Map();\n readonly #project: MutableCatalog = new Map();\n readonly #loadMessages: MiaixzMessageLoader | undefined;\n readonly #onLoadError: ((error: MiaixzI18nLoadError) => void) | undefined;\n readonly #namespaces = new Set<string>();\n readonly #loaded = new Set<string>();\n readonly #loading = new Map<string, Promise<void>>();\n readonly #listeners = new Set<(snapshot: Readonly<MiaixzI18nSnapshot>) => void>();\n #snapshot: Readonly<MiaixzI18nSnapshot>;\n #lastLoadError: MiaixzI18nLoadError | undefined;\n #changeSequence = 0;\n\n /**\n * Creates an internationalization runtime and registers built-in SDK resources first.\n *\n * @param options - Initial locale, fallback, static project messages, and loader.\n */\n constructor(options: MiaixzI18nOptions = {}) {\n this.#locale = canonicalizeLocale(options.locale ?? getMiaixzBrowserLocale());\n this.#fallbackLocale = canonicalizeLocale(options.fallbackLocale ?? \"en-US\");\n this.#loadMessages = options.loadMessages;\n this.#onLoadError = options.onLoadError;\n this.#snapshot = Object.freeze({ locale: this.#locale, loadStatus: \"ready\" });\n for (const [locale, messages] of Object.entries(miaixzSdkMessages)) {\n this.registerMessages(\"sdk\", locale, messages, \"builtin\");\n }\n if (options.messages !== undefined) this.#registerCatalog(options.messages, \"project\");\n }\n\n /**\n * Returns the currently active canonical locale.\n *\n * @returns Active locale identifier.\n */\n get locale(): MiaixzLocale {\n return this.#locale;\n }\n\n /**\n * Returns the immutable current internationalization snapshot.\n *\n * @returns Current locale and loading state.\n */\n getSnapshot(): Readonly<MiaixzI18nSnapshot> {\n return this.#snapshot;\n }\n\n /**\n * Registers messages synchronously within an isolated namespace and source layer.\n *\n * @param namespace - Valid package or module namespace.\n * @param locale - Locale that owns the messages.\n * @param messages - Flat messages whose keys start with the namespace.\n * @param source - Built-in or project precedence layer.\n */\n registerMessages(\n namespace: string,\n locale: MiaixzLocale,\n messages: MiaixzMessages,\n source: MiaixzMessageSource,\n ): void {\n const validNamespace = validateNamespace(namespace);\n const canonicalLocale = canonicalizeLocale(locale);\n const validMessages = validateMessages(validNamespace, messages);\n const catalog = source === \"builtin\" ? this.#builtin : this.#project;\n const locales = catalog.get(validNamespace) ?? new Map();\n const previous = locales.get(canonicalLocale) ?? {};\n locales.set(canonicalLocale, { ...previous, ...validMessages });\n catalog.set(validNamespace, locales);\n this.#namespaces.add(validNamespace);\n this.#publish(this.#snapshot.loadStatus, this.#snapshot.loadError);\n }\n\n /**\n * Loads the initial active and fallback locales for sorted unique namespaces.\n *\n * @param namespaces - Namespaces to initialize; defaults to the SDK namespace.\n * @returns Promise settled after all requested messages are ready.\n */\n async initialize(namespaces: readonly string[] = [\"sdk\"]): Promise<void> {\n const requestedNamespaces = this.#normalizeNamespaces(namespaces);\n const locales = [...new Set([this.#fallbackLocale, this.#locale])].sort();\n await Promise.all(\n requestedNamespaces.flatMap((namespace) =>\n locales.map((locale) => this.loadNamespace(namespace, locale)),\n ),\n );\n }\n\n /**\n * Loads one project namespace and locale with in-flight request deduplication.\n *\n * @param namespace - Namespace to load.\n * @param locale - Locale to load.\n * @returns Promise settled after project messages are registered.\n * @throws MiaixzI18nLoadError When loading or validation fails.\n */\n loadNamespace(namespace: string, locale: MiaixzLocale): Promise<void> {\n const validNamespace = validateNamespace(namespace);\n const canonicalLocale = canonicalizeLocale(locale);\n this.#namespaces.add(validNamespace);\n const loadKey = `${canonicalLocale}\\u0000${validNamespace}`;\n if (this.#loaded.has(loadKey) || !this.#loadMessages) return Promise.resolve();\n const activeLoad = this.#loading.get(loadKey);\n if (activeLoad) return activeLoad;\n this.#lastLoadError = undefined;\n this.#publish(\"loading\");\n const operation = Promise.resolve()\n .then(() => this.#loadMessages?.(validNamespace, canonicalLocale) ?? {})\n .then((result) => {\n const messages = unwrapMessages(result);\n this.registerMessages(validNamespace, canonicalLocale, messages, \"project\");\n this.#loaded.add(loadKey);\n })\n .catch((cause: unknown) => {\n const error = new MiaixzI18nLoadError(\n canonicalLocale,\n validNamespace,\n this.t(\"sdk.error.i18n.loadFailed\", {\n locale: canonicalLocale,\n namespace: validNamespace,\n }),\n cause,\n );\n this.#lastLoadError = error;\n try {\n this.#onLoadError?.(error);\n } catch {\n // Host callbacks cannot replace the deterministic loader failure.\n }\n throw error;\n })\n .finally(() => {\n this.#loading.delete(loadKey);\n if (this.#loading.size === 0) {\n this.#publish(this.#lastLoadError === undefined ? \"ready\" : \"error\", this.#lastLoadError);\n }\n });\n this.#loading.set(loadKey, operation);\n return operation;\n }\n\n /**\n * Loads every known namespace before applying the latest requested locale switch.\n *\n * @param locale - Target locale to load and activate.\n * @returns Promise settled after the request either becomes active or is superseded.\n * @throws MiaixzI18nLoadError When the target locale cannot be loaded.\n */\n async changeLocale(locale: MiaixzLocale): Promise<void> {\n const targetLocale = canonicalizeLocale(locale);\n const sequence = ++this.#changeSequence;\n const namespaces = [...this.#namespaces].sort();\n await Promise.all(namespaces.map((namespace) => this.loadNamespace(namespace, targetLocale)));\n if (sequence !== this.#changeSequence) return;\n this.#locale = targetLocale;\n this.#publish(this.#lastLoadError === undefined ? \"ready\" : \"error\", this.#lastLoadError);\n }\n\n /**\n * Registers a snapshot listener and returns its unsubscribe function.\n *\n * @param listener - Callback invoked after locale, resource, or loading changes.\n * @returns Function that removes the listener.\n */\n subscribe(listener: (snapshot: Readonly<MiaixzI18nSnapshot>) => void): () => void {\n this.#listeners.add(listener);\n return () => this.#listeners.delete(listener);\n }\n\n /**\n * Translates a key using project, built-in, configured locale, and explicit fallbacks.\n *\n * @param key - Translation key to resolve.\n * @param params - Optional named scalar values.\n * @param fallback - Optional final human-readable fallback.\n * @returns Localized and interpolated message.\n */\n readonly t: MiaixzTranslator = (key, params, fallback) => {\n const namespace = key.split(\".\")[0] ?? \"\";\n const locales = [...new Set([this.#locale, this.#fallbackLocale])];\n for (const locale of locales) {\n const message =\n resolveSourceMessage(this.#project, namespace, locale, key) ??\n resolveSourceMessage(this.#builtin, namespace, locale, key);\n if (message !== undefined) return interpolate(message, params);\n }\n return interpolate(fallback ?? key, params);\n };\n\n /**\n * Registers a locale-to-flat-messages catalog by splitting keys into namespaces.\n *\n * @param catalog - Flat locale catalog.\n * @param source - Destination precedence layer.\n */\n #registerCatalog(catalog: MiaixzMessageCatalog, source: MiaixzMessageSource): void {\n if (typeof catalog !== \"object\" || catalog === null || Array.isArray(catalog)) {\n throw createI18nContractError(\n \"I18N_MESSAGES_INVALID\",\n \"sdk.error.i18n.messagesInvalid\",\n this.#locale,\n );\n }\n for (const [locale, messages] of Object.entries(catalog)) {\n if (!isMessages(messages)) {\n throw createI18nContractError(\n \"I18N_MESSAGES_INVALID\",\n \"sdk.error.i18n.messagesInvalid\",\n this.#locale,\n );\n }\n const namespaces = new Map<string, Record<string, string>>();\n for (const [key, message] of Object.entries(messages)) {\n const namespace = key.split(\".\")[0] ?? \"\";\n const grouped = namespaces.get(namespace) ?? {};\n grouped[key] = message;\n namespaces.set(namespace, grouped);\n }\n for (const [namespace, grouped] of namespaces) {\n this.registerMessages(namespace, locale, grouped, source);\n }\n }\n }\n\n /**\n * Validates, deduplicates, sorts, and records requested namespaces.\n *\n * @param namespaces - Namespace list supplied by a caller.\n * @returns Sorted unique namespace list.\n */\n #normalizeNamespaces(namespaces: readonly string[]): readonly string[] {\n const normalized = [...new Set(namespaces.map(validateNamespace))].sort();\n for (const namespace of normalized) this.#namespaces.add(namespace);\n return normalized;\n }\n\n /**\n * Replaces the immutable snapshot and synchronously notifies subscribers.\n *\n * @param loadStatus - New loading state.\n * @param loadError - Optional latest loading failure.\n */\n #publish(loadStatus: MiaixzI18nSnapshot[\"loadStatus\"], loadError?: MiaixzI18nLoadError): void {\n this.#snapshot = Object.freeze({\n locale: this.#locale,\n loadStatus,\n ...(loadError === undefined ? {} : { loadError }),\n });\n for (const listener of this.#listeners) listener(this.#snapshot);\n }\n}\n\n/**\n * Resolves and canonicalizes the browser's preferred locale.\n *\n * @returns Browser locale, or `en-US` in non-browser runtimes.\n * @public\n */\nexport function getMiaixzBrowserLocale(): MiaixzLocale {\n return canonicalizeLocale(\n typeof navigator === \"undefined\" ? \"en-US\" : navigator.language || \"en-US\",\n );\n}\n\n/**\n * Creates a runtime translator and project-language loader.\n *\n * @param options - Optional locale, catalogs, and project loader.\n * @returns Configured internationalization runtime.\n * @public\n */\nexport function createMiaixzI18n(options?: MiaixzI18nOptions): MiaixzI18n {\n return new MiaixzI18n(options);\n}\n\n/**\n * Provides the default internationalization runtime used by standalone SDK modules.\n *\n * @public\n */\nexport const miaixzDefaultI18n = new MiaixzI18n();\n\nsetMiaixzDefaultTranslator(miaixzDefaultI18n.t);\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC","sourcesContent":["export * from \"./i18n.js\";\n"]}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export * from "./api/index.js";
|
|
2
|
+
export * from "./appearance/index.js";
|
|
3
|
+
export * from "./auth/index.js";
|
|
4
|
+
export * from "./config/index.js";
|
|
5
|
+
export * from "./consts/index.js";
|
|
6
|
+
export * from "./contracts/index.js";
|
|
7
|
+
export * from "./context/index.js";
|
|
8
|
+
export * from "./events/index.js";
|
|
9
|
+
export * from "./files/index.js";
|
|
10
|
+
export * from "./formatters/index.js";
|
|
11
|
+
export * from "./i18n/index.js";
|
|
12
|
+
export * from "./permissions/index.js";
|
|
13
|
+
export * from "./runtime/index.js";
|
|
14
|
+
export * from "./sdk.js";
|
|
15
|
+
export * from "./storage/index.js";
|
|
16
|
+
export * from "./types/index.js";
|
|
17
|
+
export * from "./utils/index.js";
|
|
18
|
+
export * from "./validators/index.js";
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export * from "./api/index.js";
|
|
2
|
+
export * from "./appearance/index.js";
|
|
3
|
+
export * from "./auth/index.js";
|
|
4
|
+
export * from "./config/index.js";
|
|
5
|
+
export * from "./consts/index.js";
|
|
6
|
+
export * from "./contracts/index.js";
|
|
7
|
+
export * from "./context/index.js";
|
|
8
|
+
export * from "./events/index.js";
|
|
9
|
+
export * from "./files/index.js";
|
|
10
|
+
export * from "./formatters/index.js";
|
|
11
|
+
export * from "./i18n/index.js";
|
|
12
|
+
export * from "./permissions/index.js";
|
|
13
|
+
export * from "./runtime/index.js";
|
|
14
|
+
export * from "./sdk.js";
|
|
15
|
+
export * from "./storage/index.js";
|
|
16
|
+
export * from "./types/index.js";
|
|
17
|
+
export * from "./utils/index.js";
|
|
18
|
+
export * from "./validators/index.js";
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC","sourcesContent":["export * from \"./api/index.js\";\nexport * from \"./appearance/index.js\";\nexport * from \"./auth/index.js\";\nexport * from \"./config/index.js\";\nexport * from \"./consts/index.js\";\nexport * from \"./contracts/index.js\";\nexport * from \"./context/index.js\";\nexport * from \"./events/index.js\";\nexport * from \"./files/index.js\";\nexport * from \"./formatters/index.js\";\nexport * from \"./i18n/index.js\";\nexport * from \"./permissions/index.js\";\nexport * from \"./runtime/index.js\";\nexport * from \"./sdk.js\";\nexport * from \"./storage/index.js\";\nexport * from \"./types/index.js\";\nexport * from \"./utils/index.js\";\nexport * from \"./validators/index.js\";\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,uBAAuB,EACvB,YAAY,EACZ,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,UAAU,EACV,iBAAiB,GAClB,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"","sourcesContent":["export type {\n MiaixzDepartmentSummary,\n MiaixzEntity,\n MiaixzFileDescriptor,\n MiaixzOrganizationSummary,\n MiaixzSpaceSummary,\n MiaixzTenantSummary,\n MiaixzTimestampedEntity,\n MiaixzUser,\n MiaixzUserSummary,\n} from \"../types/index.js\";\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/permissions/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/permissions/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC","sourcesContent":["export * from \"./permissions.js\";\n"]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { MiaixzPermissionCode, MiaixzPermissionSnapshot } from "../types/index.js";
|
|
2
|
+
import { type MiaixzTranslator } from "../i18n/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Determines whether a value is a usable permission snapshot.
|
|
5
|
+
*
|
|
6
|
+
* @param value - Value to inspect.
|
|
7
|
+
* @returns Whether `value` is a complete, usable permission snapshot.
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
export declare function isMiaixzPermissionSnapshot(value: unknown): value is MiaixzPermissionSnapshot;
|
|
11
|
+
/**
|
|
12
|
+
* Evaluates immutable allow, deny, and role snapshots on the client.
|
|
13
|
+
*
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
16
|
+
export declare class MiaixzPermissionSet {
|
|
17
|
+
#private;
|
|
18
|
+
/**
|
|
19
|
+
* Immutable role identifiers included in the permission snapshot.
|
|
20
|
+
*/
|
|
21
|
+
readonly roles: ReadonlySet<string>;
|
|
22
|
+
/**
|
|
23
|
+
* Creates an immutable permission evaluator.
|
|
24
|
+
*
|
|
25
|
+
* @param snapshot - Permission grants and roles supplied by the backend.
|
|
26
|
+
* @param translate - Translator used by runtime validation errors.
|
|
27
|
+
*/
|
|
28
|
+
constructor(snapshot: MiaixzPermissionSnapshot, translate?: MiaixzTranslator);
|
|
29
|
+
/**
|
|
30
|
+
* Determines whether one permission is allowed.
|
|
31
|
+
*
|
|
32
|
+
* @param permission - Permission code to evaluate.
|
|
33
|
+
* @returns Whether one permission is allowed; explicit deny always wins.
|
|
34
|
+
*/
|
|
35
|
+
can(permission: MiaixzPermissionCode): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Determines whether any requested permission is allowed.
|
|
38
|
+
*
|
|
39
|
+
* @param permissions - Permission codes to evaluate.
|
|
40
|
+
* @returns Whether at least one requested permission is allowed.
|
|
41
|
+
*/
|
|
42
|
+
canAny(permissions: readonly MiaixzPermissionCode[]): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Determines whether all requested permissions are allowed.
|
|
45
|
+
*
|
|
46
|
+
* @param permissions - Permission codes to evaluate.
|
|
47
|
+
* @returns Whether every requested permission is allowed.
|
|
48
|
+
*/
|
|
49
|
+
canAll(permissions: readonly MiaixzPermissionCode[]): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Determines whether a role is present in the snapshot.
|
|
52
|
+
*
|
|
53
|
+
* @param role - Role identifier to evaluate.
|
|
54
|
+
* @returns Whether the snapshot includes the specified role.
|
|
55
|
+
*/
|
|
56
|
+
hasRole(role: string): boolean;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Creates an immutable permission evaluator from a backend snapshot.
|
|
60
|
+
*
|
|
61
|
+
* @param snapshot - Permission grants and roles supplied by the backend.
|
|
62
|
+
* @param translate - Translator used by runtime validation errors.
|
|
63
|
+
* @returns Immutable permission evaluator.
|
|
64
|
+
* @public
|
|
65
|
+
*/
|
|
66
|
+
export declare function createMiaixzPermissionSet(snapshot: MiaixzPermissionSnapshot, translate?: MiaixzTranslator): MiaixzPermissionSet;
|
|
67
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/permissions/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAExF,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAgB5E;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,wBAAwB,CAK5F;AAgBD;;;;GAIG;AACH,qBAAa,mBAAmB;;IAI9B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAEpC;;;;;OAKG;IACH,YACE,QAAQ,EAAE,wBAAwB,EAClC,SAAS,GAAE,gBAAsC,EAUlD;IAED;;;;;OAKG;IACH,GAAG,CAAC,UAAU,EAAE,oBAAoB,GAAG,OAAO,CAG7C;IAED;;;;;OAKG;IACH,MAAM,CAAC,WAAW,EAAE,SAAS,oBAAoB,EAAE,GAAG,OAAO,CAE5D;IAED;;;;;OAKG;IACH,MAAM,CAAC,WAAW,EAAE,SAAS,oBAAoB,EAAE,GAAG,OAAO,CAE5D;IAED;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7B;CACF;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,wBAAwB,EAClC,SAAS,GAAE,gBAAsC,GAChD,mBAAmB,CAErB"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { MiaixzSdkError } from "../api/errors.js";
|
|
2
|
+
import { miaixzDefaultI18n } from "../i18n/index.js";
|
|
3
|
+
import { isRecord } from "../utils/object.js";
|
|
4
|
+
/**
|
|
5
|
+
* Checks that a value is an array of non-empty permission or role strings.
|
|
6
|
+
*
|
|
7
|
+
* @param value - Value to inspect.
|
|
8
|
+
* @returns Whether the value is an array of non-empty strings.
|
|
9
|
+
*/
|
|
10
|
+
function isStringList(value) {
|
|
11
|
+
return (Array.isArray(value) &&
|
|
12
|
+
value.every((entry) => typeof entry === "string" && entry.trim().length > 0));
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Determines whether a value is a usable permission snapshot.
|
|
16
|
+
*
|
|
17
|
+
* @param value - Value to inspect.
|
|
18
|
+
* @returns Whether `value` is a complete, usable permission snapshot.
|
|
19
|
+
* @public
|
|
20
|
+
*/
|
|
21
|
+
export function isMiaixzPermissionSnapshot(value) {
|
|
22
|
+
if (!isRecord(value) || !isStringList(value.allowed))
|
|
23
|
+
return false;
|
|
24
|
+
if (value.denied !== undefined && !isStringList(value.denied))
|
|
25
|
+
return false;
|
|
26
|
+
if (value.roles !== undefined && !isStringList(value.roles))
|
|
27
|
+
return false;
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Matches exact, global, and namespace wildcard permission grants.
|
|
32
|
+
*
|
|
33
|
+
* @param grant - Granted permission or wildcard pattern.
|
|
34
|
+
* @param required - Permission required by the operation.
|
|
35
|
+
* @returns Whether the grant satisfies the required permission.
|
|
36
|
+
*/
|
|
37
|
+
function matchesPermission(grant, required) {
|
|
38
|
+
if (grant === "*" || grant === required)
|
|
39
|
+
return true;
|
|
40
|
+
if (!grant.endsWith(":*"))
|
|
41
|
+
return false;
|
|
42
|
+
const namespace = grant.slice(0, -1);
|
|
43
|
+
return required.startsWith(namespace);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Evaluates immutable allow, deny, and role snapshots on the client.
|
|
47
|
+
*
|
|
48
|
+
* @public
|
|
49
|
+
*/
|
|
50
|
+
export class MiaixzPermissionSet {
|
|
51
|
+
#allowed;
|
|
52
|
+
#denied;
|
|
53
|
+
/**
|
|
54
|
+
* Immutable role identifiers included in the permission snapshot.
|
|
55
|
+
*/
|
|
56
|
+
roles;
|
|
57
|
+
/**
|
|
58
|
+
* Creates an immutable permission evaluator.
|
|
59
|
+
*
|
|
60
|
+
* @param snapshot - Permission grants and roles supplied by the backend.
|
|
61
|
+
* @param translate - Translator used by runtime validation errors.
|
|
62
|
+
*/
|
|
63
|
+
constructor(snapshot, translate = miaixzDefaultI18n.t) {
|
|
64
|
+
if (!isMiaixzPermissionSnapshot(snapshot)) {
|
|
65
|
+
throw new MiaixzSdkError(translate("sdk.error.permissions.invalid"), {
|
|
66
|
+
code: "PERMISSIONS_INVALID",
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
this.#allowed = [...new Set(snapshot.allowed)];
|
|
70
|
+
this.#denied = [...new Set(snapshot.denied ?? [])];
|
|
71
|
+
this.roles = new Set(snapshot.roles ?? []);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Determines whether one permission is allowed.
|
|
75
|
+
*
|
|
76
|
+
* @param permission - Permission code to evaluate.
|
|
77
|
+
* @returns Whether one permission is allowed; explicit deny always wins.
|
|
78
|
+
*/
|
|
79
|
+
can(permission) {
|
|
80
|
+
if (this.#denied.some((grant) => matchesPermission(grant, permission)))
|
|
81
|
+
return false;
|
|
82
|
+
return this.#allowed.some((grant) => matchesPermission(grant, permission));
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Determines whether any requested permission is allowed.
|
|
86
|
+
*
|
|
87
|
+
* @param permissions - Permission codes to evaluate.
|
|
88
|
+
* @returns Whether at least one requested permission is allowed.
|
|
89
|
+
*/
|
|
90
|
+
canAny(permissions) {
|
|
91
|
+
return permissions.some((permission) => this.can(permission));
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Determines whether all requested permissions are allowed.
|
|
95
|
+
*
|
|
96
|
+
* @param permissions - Permission codes to evaluate.
|
|
97
|
+
* @returns Whether every requested permission is allowed.
|
|
98
|
+
*/
|
|
99
|
+
canAll(permissions) {
|
|
100
|
+
return permissions.every((permission) => this.can(permission));
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Determines whether a role is present in the snapshot.
|
|
104
|
+
*
|
|
105
|
+
* @param role - Role identifier to evaluate.
|
|
106
|
+
* @returns Whether the snapshot includes the specified role.
|
|
107
|
+
*/
|
|
108
|
+
hasRole(role) {
|
|
109
|
+
return this.roles.has(role);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Creates an immutable permission evaluator from a backend snapshot.
|
|
114
|
+
*
|
|
115
|
+
* @param snapshot - Permission grants and roles supplied by the backend.
|
|
116
|
+
* @param translate - Translator used by runtime validation errors.
|
|
117
|
+
* @returns Immutable permission evaluator.
|
|
118
|
+
* @public
|
|
119
|
+
*/
|
|
120
|
+
export function createMiaixzPermissionSet(snapshot, translate = miaixzDefaultI18n.t) {
|
|
121
|
+
return new MiaixzPermissionSet(snapshot, translate);
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/permissions/permissions.ts"],"names":[],"mappings":"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","sourcesContent":["import type { MiaixzPermissionCode, MiaixzPermissionSnapshot } from \"../types/index.js\";\nimport { MiaixzSdkError } from \"../api/errors.js\";\nimport { miaixzDefaultI18n, type MiaixzTranslator } from \"../i18n/index.js\";\nimport { isRecord } from \"../utils/object.js\";\n\n/**\n * Checks that a value is an array of non-empty permission or role strings.\n *\n * @param value - Value to inspect.\n * @returns Whether the value is an array of non-empty strings.\n */\nfunction isStringList(value: unknown): value is readonly string[] {\n return (\n Array.isArray(value) &&\n value.every((entry) => typeof entry === \"string\" && entry.trim().length > 0)\n );\n}\n\n/**\n * Determines whether a value is a usable permission snapshot.\n *\n * @param value - Value to inspect.\n * @returns Whether `value` is a complete, usable permission snapshot.\n * @public\n */\nexport function isMiaixzPermissionSnapshot(value: unknown): value is MiaixzPermissionSnapshot {\n if (!isRecord(value) || !isStringList(value.allowed)) return false;\n if (value.denied !== undefined && !isStringList(value.denied)) return false;\n if (value.roles !== undefined && !isStringList(value.roles)) return false;\n return true;\n}\n\n/**\n * Matches exact, global, and namespace wildcard permission grants.\n *\n * @param grant - Granted permission or wildcard pattern.\n * @param required - Permission required by the operation.\n * @returns Whether the grant satisfies the required permission.\n */\nfunction matchesPermission(grant: MiaixzPermissionCode, required: MiaixzPermissionCode): boolean {\n if (grant === \"*\" || grant === required) return true;\n if (!grant.endsWith(\":*\")) return false;\n const namespace = grant.slice(0, -1);\n return required.startsWith(namespace);\n}\n\n/**\n * Evaluates immutable allow, deny, and role snapshots on the client.\n *\n * @public\n */\nexport class MiaixzPermissionSet {\n readonly #allowed: readonly MiaixzPermissionCode[];\n readonly #denied: readonly MiaixzPermissionCode[];\n\n /**\n * Immutable role identifiers included in the permission snapshot.\n */\n readonly roles: ReadonlySet<string>;\n\n /**\n * Creates an immutable permission evaluator.\n *\n * @param snapshot - Permission grants and roles supplied by the backend.\n * @param translate - Translator used by runtime validation errors.\n */\n constructor(\n snapshot: MiaixzPermissionSnapshot,\n translate: MiaixzTranslator = miaixzDefaultI18n.t,\n ) {\n if (!isMiaixzPermissionSnapshot(snapshot)) {\n throw new MiaixzSdkError(translate(\"sdk.error.permissions.invalid\"), {\n code: \"PERMISSIONS_INVALID\",\n });\n }\n this.#allowed = [...new Set(snapshot.allowed)];\n this.#denied = [...new Set(snapshot.denied ?? [])];\n this.roles = new Set(snapshot.roles ?? []);\n }\n\n /**\n * Determines whether one permission is allowed.\n *\n * @param permission - Permission code to evaluate.\n * @returns Whether one permission is allowed; explicit deny always wins.\n */\n can(permission: MiaixzPermissionCode): boolean {\n if (this.#denied.some((grant) => matchesPermission(grant, permission))) return false;\n return this.#allowed.some((grant) => matchesPermission(grant, permission));\n }\n\n /**\n * Determines whether any requested permission is allowed.\n *\n * @param permissions - Permission codes to evaluate.\n * @returns Whether at least one requested permission is allowed.\n */\n canAny(permissions: readonly MiaixzPermissionCode[]): boolean {\n return permissions.some((permission) => this.can(permission));\n }\n\n /**\n * Determines whether all requested permissions are allowed.\n *\n * @param permissions - Permission codes to evaluate.\n * @returns Whether every requested permission is allowed.\n */\n canAll(permissions: readonly MiaixzPermissionCode[]): boolean {\n return permissions.every((permission) => this.can(permission));\n }\n\n /**\n * Determines whether a role is present in the snapshot.\n *\n * @param role - Role identifier to evaluate.\n * @returns Whether the snapshot includes the specified role.\n */\n hasRole(role: string): boolean {\n return this.roles.has(role);\n }\n}\n\n/**\n * Creates an immutable permission evaluator from a backend snapshot.\n *\n * @param snapshot - Permission grants and roles supplied by the backend.\n * @param translate - Translator used by runtime validation errors.\n * @returns Immutable permission evaluator.\n * @public\n */\nexport function createMiaixzPermissionSet(\n snapshot: MiaixzPermissionSnapshot,\n translate: MiaixzTranslator = miaixzDefaultI18n.t,\n): MiaixzPermissionSet {\n return new MiaixzPermissionSet(snapshot, translate);\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type MiaixzDirectHostBridgeOptions, type MiaixzHostBridge } from "../contracts/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a module-scoped same-runtime Host Bridge.
|
|
4
|
+
*
|
|
5
|
+
* @param options - Module identity and explicitly injected host capabilities.
|
|
6
|
+
* @returns Host Bridge that delegates validated calls to the Adapter.
|
|
7
|
+
* @throws MiaixzSdkError When the module identifier is invalid.
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
export declare function createMiaixzDirectHostBridge(options: Readonly<MiaixzDirectHostBridgeOptions>): MiaixzHostBridge;
|
|
11
|
+
//# sourceMappingURL=direct-host-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direct-host-bridge.d.ts","sourceRoot":"","sources":["../../src/runtime/direct-host-bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,6BAA6B,EAElC,KAAK,gBAAgB,EAEtB,MAAM,uBAAuB,CAAC;AAmV/B;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,QAAQ,CAAC,6BAA6B,CAAC,GAC/C,gBAAgB,CAElB"}
|