@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.
Files changed (244) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +7 -0
  3. package/README.md +412 -0
  4. package/dist/api/client.d.ts +223 -0
  5. package/dist/api/client.d.ts.map +1 -0
  6. package/dist/api/client.js +1069 -0
  7. package/dist/api/client.js.map +1 -0
  8. package/dist/api/endpoint.d.ts +10 -0
  9. package/dist/api/endpoint.d.ts.map +1 -0
  10. package/dist/api/endpoint.js +51 -0
  11. package/dist/api/endpoint.js.map +1 -0
  12. package/dist/api/errors.d.ts +180 -0
  13. package/dist/api/errors.d.ts.map +1 -0
  14. package/dist/api/errors.js +173 -0
  15. package/dist/api/errors.js.map +1 -0
  16. package/dist/api/index.d.ts +6 -0
  17. package/dist/api/index.d.ts.map +1 -0
  18. package/dist/api/index.js +5 -0
  19. package/dist/api/index.js.map +1 -0
  20. package/dist/api/request.d.ts +135 -0
  21. package/dist/api/request.d.ts.map +1 -0
  22. package/dist/api/request.js +2 -0
  23. package/dist/api/request.js.map +1 -0
  24. package/dist/api/response.d.ts +69 -0
  25. package/dist/api/response.d.ts.map +1 -0
  26. package/dist/api/response.js +43 -0
  27. package/dist/api/response.js.map +1 -0
  28. package/dist/api/telemetry.d.ts +139 -0
  29. package/dist/api/telemetry.d.ts.map +1 -0
  30. package/dist/api/telemetry.js +2 -0
  31. package/dist/api/telemetry.js.map +1 -0
  32. package/dist/appearance/appearance.d.ts +161 -0
  33. package/dist/appearance/appearance.d.ts.map +1 -0
  34. package/dist/appearance/appearance.js +614 -0
  35. package/dist/appearance/appearance.js.map +1 -0
  36. package/dist/appearance/index.d.ts +3 -0
  37. package/dist/appearance/index.d.ts.map +1 -0
  38. package/dist/appearance/index.js +3 -0
  39. package/dist/appearance/index.js.map +1 -0
  40. package/dist/auth/auth.d.ts +197 -0
  41. package/dist/auth/auth.d.ts.map +1 -0
  42. package/dist/auth/auth.js +314 -0
  43. package/dist/auth/auth.js.map +1 -0
  44. package/dist/auth/index.d.ts +2 -0
  45. package/dist/auth/index.d.ts.map +1 -0
  46. package/dist/auth/index.js +2 -0
  47. package/dist/auth/index.js.map +1 -0
  48. package/dist/config/config.d.ts +117 -0
  49. package/dist/config/config.d.ts.map +1 -0
  50. package/dist/config/config.js +241 -0
  51. package/dist/config/config.js.map +1 -0
  52. package/dist/config/index.d.ts +2 -0
  53. package/dist/config/index.d.ts.map +1 -0
  54. package/dist/config/index.js +2 -0
  55. package/dist/config/index.js.map +1 -0
  56. package/dist/consts/index.d.ts +35 -0
  57. package/dist/consts/index.d.ts.map +1 -0
  58. package/dist/consts/index.js +35 -0
  59. package/dist/consts/index.js.map +1 -0
  60. package/dist/context/context.d.ts +123 -0
  61. package/dist/context/context.d.ts.map +1 -0
  62. package/dist/context/context.js +252 -0
  63. package/dist/context/context.js.map +1 -0
  64. package/dist/context/index.d.ts +2 -0
  65. package/dist/context/index.d.ts.map +1 -0
  66. package/dist/context/index.js +2 -0
  67. package/dist/context/index.js.map +1 -0
  68. package/dist/contracts/host-context.d.ts +132 -0
  69. package/dist/contracts/host-context.d.ts.map +1 -0
  70. package/dist/contracts/host-context.js +2 -0
  71. package/dist/contracts/host-context.js.map +1 -0
  72. package/dist/contracts/index.d.ts +8 -0
  73. package/dist/contracts/index.d.ts.map +1 -0
  74. package/dist/contracts/index.js +2 -0
  75. package/dist/contracts/index.js.map +1 -0
  76. package/dist/contracts/lifecycle.d.ts +49 -0
  77. package/dist/contracts/lifecycle.d.ts.map +1 -0
  78. package/dist/contracts/lifecycle.js +2 -0
  79. package/dist/contracts/lifecycle.js.map +1 -0
  80. package/dist/contracts/module-manifest.d.ts +110 -0
  81. package/dist/contracts/module-manifest.d.ts.map +1 -0
  82. package/dist/contracts/module-manifest.js +317 -0
  83. package/dist/contracts/module-manifest.js.map +1 -0
  84. package/dist/contracts/navigation.d.ts +36 -0
  85. package/dist/contracts/navigation.d.ts.map +1 -0
  86. package/dist/contracts/navigation.js +11 -0
  87. package/dist/contracts/navigation.js.map +1 -0
  88. package/dist/contracts/permission.d.ts +8 -0
  89. package/dist/contracts/permission.d.ts.map +1 -0
  90. package/dist/contracts/permission.js +14 -0
  91. package/dist/contracts/permission.js.map +1 -0
  92. package/dist/contracts/post-message.d.ts +124 -0
  93. package/dist/contracts/post-message.d.ts.map +1 -0
  94. package/dist/contracts/post-message.js +2 -0
  95. package/dist/contracts/post-message.js.map +1 -0
  96. package/dist/contracts/route.d.ts +45 -0
  97. package/dist/contracts/route.d.ts.map +1 -0
  98. package/dist/contracts/route.js +35 -0
  99. package/dist/contracts/route.js.map +1 -0
  100. package/dist/events/events.d.ts +191 -0
  101. package/dist/events/events.d.ts.map +1 -0
  102. package/dist/events/events.js +486 -0
  103. package/dist/events/events.js.map +1 -0
  104. package/dist/events/index.d.ts +2 -0
  105. package/dist/events/index.d.ts.map +1 -0
  106. package/dist/events/index.js +2 -0
  107. package/dist/events/index.js.map +1 -0
  108. package/dist/files/files.d.ts +138 -0
  109. package/dist/files/files.d.ts.map +1 -0
  110. package/dist/files/files.js +144 -0
  111. package/dist/files/files.js.map +1 -0
  112. package/dist/files/index.d.ts +2 -0
  113. package/dist/files/index.d.ts.map +1 -0
  114. package/dist/files/index.js +2 -0
  115. package/dist/files/index.js.map +1 -0
  116. package/dist/formatters/index.d.ts +44 -0
  117. package/dist/formatters/index.d.ts.map +1 -0
  118. package/dist/formatters/index.js +50 -0
  119. package/dist/formatters/index.js.map +1 -0
  120. package/dist/i18n/default-translator.d.ts +17 -0
  121. package/dist/i18n/default-translator.d.ts.map +1 -0
  122. package/dist/i18n/default-translator.js +19 -0
  123. package/dist/i18n/default-translator.js.map +1 -0
  124. package/dist/i18n/i18n.d.ts +248 -0
  125. package/dist/i18n/i18n.d.ts.map +1 -0
  126. package/dist/i18n/i18n.js +617 -0
  127. package/dist/i18n/i18n.js.map +1 -0
  128. package/dist/i18n/index.d.ts +2 -0
  129. package/dist/i18n/index.d.ts.map +1 -0
  130. package/dist/i18n/index.js +2 -0
  131. package/dist/i18n/index.js.map +1 -0
  132. package/dist/index.d.ts +19 -0
  133. package/dist/index.d.ts.map +1 -0
  134. package/dist/index.js +19 -0
  135. package/dist/index.js.map +1 -0
  136. package/dist/models/index.d.ts +2 -0
  137. package/dist/models/index.d.ts.map +1 -0
  138. package/dist/models/index.js +2 -0
  139. package/dist/models/index.js.map +1 -0
  140. package/dist/permissions/index.d.ts +2 -0
  141. package/dist/permissions/index.d.ts.map +1 -0
  142. package/dist/permissions/index.js +2 -0
  143. package/dist/permissions/index.js.map +1 -0
  144. package/dist/permissions/permissions.d.ts +67 -0
  145. package/dist/permissions/permissions.d.ts.map +1 -0
  146. package/dist/permissions/permissions.js +123 -0
  147. package/dist/permissions/permissions.js.map +1 -0
  148. package/dist/runtime/direct-host-bridge.d.ts +11 -0
  149. package/dist/runtime/direct-host-bridge.d.ts.map +1 -0
  150. package/dist/runtime/direct-host-bridge.js +299 -0
  151. package/dist/runtime/direct-host-bridge.js.map +1 -0
  152. package/dist/runtime/index.d.ts +5 -0
  153. package/dist/runtime/index.d.ts.map +1 -0
  154. package/dist/runtime/index.js +3 -0
  155. package/dist/runtime/index.js.map +1 -0
  156. package/dist/runtime/post-message-bridge.d.ts +20 -0
  157. package/dist/runtime/post-message-bridge.d.ts.map +1 -0
  158. package/dist/runtime/post-message-bridge.js +1115 -0
  159. package/dist/runtime/post-message-bridge.js.map +1 -0
  160. package/dist/sdk.d.ts +177 -0
  161. package/dist/sdk.d.ts.map +1 -0
  162. package/dist/sdk.js +214 -0
  163. package/dist/sdk.js.map +1 -0
  164. package/dist/storage/index.d.ts +2 -0
  165. package/dist/storage/index.d.ts.map +1 -0
  166. package/dist/storage/index.js +2 -0
  167. package/dist/storage/index.js.map +1 -0
  168. package/dist/storage/storage.d.ts +246 -0
  169. package/dist/storage/storage.d.ts.map +1 -0
  170. package/dist/storage/storage.js +358 -0
  171. package/dist/storage/storage.js.map +1 -0
  172. package/dist/types/api.d.ts +82 -0
  173. package/dist/types/api.d.ts.map +1 -0
  174. package/dist/types/api.js +2 -0
  175. package/dist/types/api.js.map +1 -0
  176. package/dist/types/appearance.d.ts +85 -0
  177. package/dist/types/appearance.d.ts.map +1 -0
  178. package/dist/types/appearance.js +48 -0
  179. package/dist/types/appearance.js.map +1 -0
  180. package/dist/types/config.d.ts +49 -0
  181. package/dist/types/config.d.ts.map +1 -0
  182. package/dist/types/config.js +2 -0
  183. package/dist/types/config.js.map +1 -0
  184. package/dist/types/context.d.ts +41 -0
  185. package/dist/types/context.d.ts.map +1 -0
  186. package/dist/types/context.js +2 -0
  187. package/dist/types/context.js.map +1 -0
  188. package/dist/types/file.d.ts +48 -0
  189. package/dist/types/file.d.ts.map +1 -0
  190. package/dist/types/file.js +2 -0
  191. package/dist/types/file.js.map +1 -0
  192. package/dist/types/index.d.ts +12 -0
  193. package/dist/types/index.d.ts.map +1 -0
  194. package/dist/types/index.js +12 -0
  195. package/dist/types/index.js.map +1 -0
  196. package/dist/types/organization.d.ts +56 -0
  197. package/dist/types/organization.d.ts.map +1 -0
  198. package/dist/types/organization.js +2 -0
  199. package/dist/types/organization.js.map +1 -0
  200. package/dist/types/pagination.d.ts +55 -0
  201. package/dist/types/pagination.d.ts.map +1 -0
  202. package/dist/types/pagination.js +13 -0
  203. package/dist/types/pagination.js.map +1 -0
  204. package/dist/types/permissions.d.ts +26 -0
  205. package/dist/types/permissions.d.ts.map +1 -0
  206. package/dist/types/permissions.js +2 -0
  207. package/dist/types/permissions.js.map +1 -0
  208. package/dist/types/space.d.ts +43 -0
  209. package/dist/types/space.d.ts.map +1 -0
  210. package/dist/types/space.js +2 -0
  211. package/dist/types/space.js.map +1 -0
  212. package/dist/types/tenant.d.ts +31 -0
  213. package/dist/types/tenant.d.ts.map +1 -0
  214. package/dist/types/tenant.js +2 -0
  215. package/dist/types/tenant.js.map +1 -0
  216. package/dist/types/user.d.ts +48 -0
  217. package/dist/types/user.d.ts.map +1 -0
  218. package/dist/types/user.js +2 -0
  219. package/dist/types/user.js.map +1 -0
  220. package/dist/utils/date.d.ts +9 -0
  221. package/dist/utils/date.d.ts.map +1 -0
  222. package/dist/utils/date.js +11 -0
  223. package/dist/utils/date.js.map +1 -0
  224. package/dist/utils/index.d.ts +5 -0
  225. package/dist/utils/index.d.ts.map +1 -0
  226. package/dist/utils/index.js +5 -0
  227. package/dist/utils/index.js.map +1 -0
  228. package/dist/utils/number.d.ts +11 -0
  229. package/dist/utils/number.d.ts.map +1 -0
  230. package/dist/utils/number.js +13 -0
  231. package/dist/utils/number.js.map +1 -0
  232. package/dist/utils/object.d.ts +9 -0
  233. package/dist/utils/object.d.ts.map +1 -0
  234. package/dist/utils/object.js +11 -0
  235. package/dist/utils/object.js.map +1 -0
  236. package/dist/utils/string.d.ts +9 -0
  237. package/dist/utils/string.d.ts.map +1 -0
  238. package/dist/utils/string.js +11 -0
  239. package/dist/utils/string.js.map +1 -0
  240. package/dist/validators/index.d.ts +8 -0
  241. package/dist/validators/index.d.ts.map +1 -0
  242. package/dist/validators/index.js +8 -0
  243. package/dist/validators/index.js.map +1 -0
  244. package/package.json +156 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth/auth.ts"],"names":[],"mappings":"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","sourcesContent":["import { miaixzStorageKeys } from \"../consts/index.js\";\nimport { MiaixzSdkError } from \"../api/errors.js\";\nimport type { MiaixzAuthStatusEvent, MiaixzEventBus, MiaixzSdkEventMap } from \"../events/index.js\";\nimport { miaixzDefaultI18n, type MiaixzTranslator } from \"../i18n/index.js\";\nimport { readMiaixzJson, writeMiaixzJson, type MiaixzKeyValueStorage } from \"../storage/index.js\";\nimport type { MiaixzUserSummary } from \"../types/index.js\";\nimport { isRecord } from \"../utils/object.js\";\n\n/**\n * Describes authentication state managed by the Miaixz SDK.\n *\n * @public\n */\nexport interface MiaixzAuthSession {\n /**\n * Access token presented to protected services.\n */\n readonly accessToken: string;\n\n /**\n * Optional token used to renew the session.\n */\n readonly refreshToken?: string;\n\n /**\n * Optional authorization scheme associated with the access token.\n */\n readonly tokenType?: string;\n\n /**\n * Optional token expiry as Unix time in milliseconds.\n */\n readonly expiresAt?: number;\n\n /**\n * Optional summary of the authenticated user.\n */\n readonly user?: MiaixzUserSummary;\n}\n\n/**\n * Identifies the only cross-window authentication states exposed by the SDK.\n *\n * @public\n */\nexport type MiaixzAuthStatus = \"authenticated\" | \"anonymous\";\n\n/**\n * Refreshes an expiring authentication session.\n *\n * @public\n */\nexport type MiaixzSessionRefresher = (\n session: Readonly<MiaixzAuthSession>,\n) => MiaixzAuthSession | undefined | Promise<MiaixzAuthSession | undefined>;\n\n/**\n * Marks a storage adapter whose use for Bearer credentials was explicitly acknowledged.\n *\n * Persisting access or refresh tokens in Web Storage increases exposure to script injection.\n * Prefer the default in-memory mode or an HttpOnly Cookie/BFF integration whenever possible.\n *\n * @public\n */\nexport interface MiaixzPersistentAuthStorage extends MiaixzKeyValueStorage {\n /**\n * Discriminator proving that the adapter was created by the explicit-risk factory.\n */\n readonly kind: \"miaixz-persistent-auth-storage\";\n}\n\n/**\n * Tracks adapters created by the explicit-risk factory without exposing a forgeable public flag.\n */\nconst persistentAuthStorages = new WeakSet<object>();\n\n/**\n * Creates the only storage adapter accepted for persistent Bearer sessions.\n *\n * Access and refresh tokens stored in localStorage or sessionStorage can be read by scripts\n * running in the same origin. Callers must explicitly acknowledge that security trade-off.\n *\n * @param storage - Underlying storage adapter, such as localStorage or sessionStorage.\n * @param options - Mandatory risk acknowledgement and optional physical storage key.\n * @returns An authentication-specific persistent storage adapter.\n * @throws MiaixzSdkError When the Web Storage risk is not explicitly acknowledged.\n * @public\n */\nexport function createMiaixzPersistentAuthStorage(\n storage: MiaixzKeyValueStorage,\n options: Readonly<{\n /**\n * Confirms that the caller accepts the security risk of persistent browser token storage.\n */\n acknowledgeWebStorageRisk: true;\n\n /**\n * Optional physical storage key; defaults to `miaixz-auth`.\n */\n storageKey?: string;\n }>,\n): MiaixzPersistentAuthStorage {\n if (options?.acknowledgeWebStorageRisk !== true) {\n throw new MiaixzSdkError(\n miaixzDefaultI18n.t(\"sdk.error.auth.persistenceAcknowledgementRequired\"),\n { code: \"AUTH_PERSISTENCE_ACKNOWLEDGEMENT_REQUIRED\" },\n );\n }\n\n const physicalKey = options.storageKey ?? miaixzStorageKeys.auth;\n const persistence: MiaixzPersistentAuthStorage = Object.freeze({\n kind: \"miaixz-persistent-auth-storage\" as const,\n getItem: (_key: string): string | null => storage.getItem(physicalKey),\n setItem: (_key: string, value: string): void => storage.setItem(physicalKey, value),\n removeItem: (_key: string): void => storage.removeItem(physicalKey),\n });\n persistentAuthStorages.add(persistence);\n return persistence;\n}\n/**\n * Configures a Miaixz authentication manager.\n *\n * @public\n */\nexport interface MiaixzAuthManagerOptions {\n /**\n * Explicitly acknowledged storage used to persist Bearer credentials.\n */\n readonly persistence?: MiaixzPersistentAuthStorage;\n\n /**\n * Optional callback used to refresh an expiring session.\n */\n readonly refresh?: MiaixzSessionRefresher;\n\n /**\n * Optional safety window in seconds before token expiry.\n */\n readonly expirationLeewaySeconds?: number;\n\n /**\n * Optional clock returning Unix time in milliseconds.\n */\n readonly now?: () => number;\n\n /**\n * Optional translator used for authentication errors.\n */\n readonly translate?: MiaixzTranslator;\n\n /**\n * Optional event bus used to synchronize service instances.\n */\n readonly events?: MiaixzEventBus<MiaixzSdkEventMap>;\n}\n\n/**\n * Determines whether a value is a valid user summary for a session.\n *\n * @param value - Value to inspect.\n * @returns Whether `value` is a valid immutable user summary for a session.\n */\nfunction isMiaixzUserSummary(value: unknown): value is MiaixzUserSummary {\n if (!isRecord(value) || typeof value.id !== \"string\" || !value.id.trim()) return false;\n if (typeof value.displayName !== \"string\" || !value.displayName.trim()) return false;\n if (value.username !== undefined && typeof value.username !== \"string\") return false;\n if (value.avatarUrl !== undefined && typeof value.avatarUrl !== \"string\") return false;\n return true;\n}\n\n/**\n * Determines whether a value is a usable authentication session.\n *\n * @param value - Value to inspect.\n * @returns Whether `value` is a usable authentication session.\n * @public\n */\nexport function isMiaixzAuthSession(value: unknown): value is MiaixzAuthSession {\n if (!isRecord(value) || typeof value.accessToken !== \"string\" || !value.accessToken.trim())\n return false;\n if (value.refreshToken !== undefined && typeof value.refreshToken !== \"string\") return false;\n if (value.tokenType !== undefined && typeof value.tokenType !== \"string\") return false;\n if (\n value.expiresAt !== undefined &&\n (typeof value.expiresAt !== \"number\" || !Number.isFinite(value.expiresAt))\n )\n return false;\n if (value.user !== undefined && !isMiaixzUserSummary(value.user)) return false;\n return true;\n}\n\n/**\n * Checks token expiry with a configurable refresh safety window.\n * @param session - Session to inspect.\n * @param now - Current Unix time in milliseconds.\n * @param leewaySeconds - Seconds before expiry that count as expired.\n * @returns Whether the session has expired within the safety window.\n * @public\n */\nexport function isMiaixzSessionExpired(\n session: Readonly<MiaixzAuthSession>,\n now = Date.now(),\n leewaySeconds = 30,\n): boolean {\n return session.expiresAt !== undefined && session.expiresAt <= now + leewaySeconds * 1000;\n}\n\n/**\n * Compares persisted authentication values to suppress duplicate event delivery.\n *\n * @param first - First session to compare.\n * @param second - Second session to compare.\n * @returns Whether both session values contain equivalent data.\n */\nfunction sessionsEqual(\n first: Readonly<MiaixzAuthSession> | undefined,\n second: Readonly<MiaixzAuthSession> | undefined,\n): boolean {\n return JSON.stringify(first) === JSON.stringify(second);\n}\n\n/**\n * Determines whether an untrusted event is a supported authentication status signal.\n *\n * @param value - Event payload to inspect.\n * @returns Whether the payload contains only a recognized authentication status.\n */\nfunction isMiaixzAuthStatusEvent(value: unknown): value is MiaixzAuthStatusEvent {\n return (\n isRecord(value) &&\n (value.status === \"authenticated\" || value.status === \"anonymous\") &&\n Object.keys(value).length === 1\n );\n}\n\n/**\n * Persists authentication state, refreshes tokens, and synchronizes service instances.\n *\n * @public\n */\nexport class MiaixzAuthManager {\n readonly #persistence: MiaixzPersistentAuthStorage | undefined;\n readonly #refresh: MiaixzSessionRefresher | undefined;\n readonly #expirationLeewaySeconds: number;\n readonly #now: () => number;\n readonly #translate: MiaixzTranslator;\n readonly #events: MiaixzEventBus<MiaixzSdkEventMap> | undefined;\n readonly #listeners = new Set<(session: Readonly<MiaixzAuthSession> | undefined) => void>();\n #session: MiaixzAuthSession | undefined;\n #refreshPromise: Promise<MiaixzAuthSession | undefined> | undefined;\n #stopEventListener: (() => void) | undefined;\n #publishingStatus = false;\n\n /**\n * Creates an authentication manager.\n *\n * @param options - Storage, refresh, clock, event, and translation adapters.\n */\n constructor(options: MiaixzAuthManagerOptions = {}) {\n if (options.persistence && !persistentAuthStorages.has(options.persistence)) {\n throw new MiaixzSdkError(\n (options.translate ?? miaixzDefaultI18n.t)(\n \"sdk.error.auth.persistenceAcknowledgementRequired\",\n ),\n { code: \"AUTH_PERSISTENCE_ACKNOWLEDGEMENT_REQUIRED\" },\n );\n }\n this.#persistence = options.persistence;\n this.#refresh = options.refresh;\n this.#expirationLeewaySeconds = options.expirationLeewaySeconds ?? 30;\n this.#now = options.now ?? Date.now;\n this.#translate = options.translate ?? miaixzDefaultI18n.t;\n this.#events = options.events;\n this.#session = readMiaixzJson(this.#persistence, miaixzStorageKeys.auth, isMiaixzAuthSession);\n this.#stopEventListener = this.#events?.on(\"auth:changed\", (event) => {\n if (!this.#publishingStatus && isMiaixzAuthStatusEvent(event)) this.#clearSession(false);\n });\n }\n\n /**\n * Returns the active authentication session.\n *\n * @returns An immutable copy of the active session, when signed in.\n */\n getSession(): Readonly<MiaixzAuthSession> | undefined {\n return this.#session === undefined\n ? undefined\n : Object.freeze({\n ...this.#session,\n ...(this.#session.user ? { user: Object.freeze({ ...this.#session.user }) } : {}),\n });\n }\n\n /**\n * Validates, persists, broadcasts, and publishes a new session.\n *\n * @param session - Authentication session to activate.\n */\n setSession(session: MiaixzAuthSession): void {\n this.#setSession(session, true);\n }\n\n /**\n * Commits a session and optionally broadcasts it to other service instances.\n *\n * @param session - Authentication session to commit.\n * @param broadcast - Whether to publish the change through the event bus.\n */\n #setSession(session: MiaixzAuthSession, broadcast: boolean): void {\n if (!isMiaixzAuthSession(session)) {\n throw new MiaixzSdkError(this.#translate(\"sdk.error.auth.sessionInvalid\"), {\n code: \"AUTH_SESSION_INVALID\",\n });\n }\n if (sessionsEqual(this.#session, session)) return;\n this.#session = {\n ...session,\n ...(session.user ? { user: { ...session.user } } : {}),\n };\n writeMiaixzJson(this.#persistence, miaixzStorageKeys.auth, this.#session);\n this.#notify();\n if (broadcast) this.#publishStatus(\"authenticated\");\n }\n\n /**\n * Removes the active session from memory and persistent storage.\n */\n clearSession(): void {\n this.#clearSession(true);\n }\n\n /**\n * Clears session state and optionally broadcasts the change.\n *\n * @param broadcast - Whether to publish the change through the event bus.\n */\n #clearSession(broadcast: boolean): void {\n if (this.#session === undefined) return;\n this.#session = undefined;\n writeMiaixzJson(this.#persistence, miaixzStorageKeys.auth, undefined);\n this.#notify();\n if (broadcast) this.#publishStatus(\"anonymous\");\n }\n\n /**\n * Registers a session listener and returns its unsubscribe function.\n *\n * @param listener - Callback invoked with each authentication snapshot.\n * @returns Function that unregisters the listener.\n */\n subscribe(listener: (session: Readonly<MiaixzAuthSession> | undefined) => void): () => void {\n this.#listeners.add(listener);\n return () => this.#listeners.delete(listener);\n }\n\n /**\n * Returns a valid access token, refreshing an expired session once when possible.\n * Concurrent callers share the same refresh operation.\n *\n * @returns Active access token when a valid session is available.\n */\n async getAccessToken(): Promise<string | undefined> {\n const session = this.#session;\n if (!session) return undefined;\n if (!isMiaixzSessionExpired(session, this.#now(), this.#expirationLeewaySeconds)) {\n return session.accessToken;\n }\n if (!this.#refresh) return undefined;\n\n this.#refreshPromise ??= Promise.resolve()\n .then(() => this.#refresh?.(Object.freeze({ ...session })))\n .then((refreshed) => {\n if (refreshed) this.setSession(refreshed);\n else this.clearSession();\n return refreshed;\n })\n .catch(() => {\n this.clearSession();\n throw new MiaixzSdkError(this.#translate(\"sdk.error.auth.refreshFailed\"), {\n code: \"AUTH_REFRESH_FAILED\",\n });\n })\n .finally(() => {\n this.#refreshPromise = undefined;\n });\n\n return (await this.#refreshPromise)?.accessToken;\n }\n\n /**\n * Fetch-compatible token provider bound to this manager.\n *\n * @returns Active access token when a valid session is available.\n */\n readonly tokenProvider = (): Promise<string | undefined> => this.getAccessToken();\n\n /**\n * Returns a complete Authorization header value using the session token type.\n * Bearer remains the default when the session does not declare a token type.\n *\n * @returns Complete Authorization header value when signed in.\n */\n readonly authorizationProvider = async (): Promise<string | undefined> => {\n const accessToken = await this.getAccessToken();\n if (!accessToken) return undefined;\n const tokenType = this.#session?.tokenType?.trim() || \"Bearer\";\n return `${tokenType} ${accessToken}`;\n };\n\n /**\n * Releases event subscriptions and local listeners owned by this manager.\n */\n destroy(): void {\n this.#stopEventListener?.();\n this.#listeners.clear();\n }\n\n /**\n * Publishes an immutable session snapshot to local subscribers.\n */\n #notify(): void {\n const snapshot = this.getSession();\n for (const listener of this.#listeners) listener(snapshot);\n }\n\n /**\n * Publishes a non-sensitive authentication status without consuming its local echo.\n *\n * @param status - Authentication status to deliver locally and across configured windows.\n */\n #publishStatus(status: MiaixzAuthStatus): void {\n if (!this.#events) return;\n this.#publishingStatus = true;\n try {\n this.#events.emit(\"auth:changed\", Object.freeze({ status }));\n } finally {\n this.#publishingStatus = false;\n }\n }\n}\n\n/**\n * Creates a Bearer authentication manager with in-memory-only defaults.\n *\n * @param options - Optional persistence, refresh, clock, event, and translation adapters.\n * @returns Configured authentication manager.\n * @public\n */\nexport function createMiaixzAuthManager(options?: MiaixzAuthManagerOptions): MiaixzAuthManager {\n return new MiaixzAuthManager(options);\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export * from "./auth.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./auth.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC","sourcesContent":["export * from \"./auth.js\";\n"]}
@@ -0,0 +1,117 @@
1
+ import type { MiaixzEventBus, MiaixzSdkEventMap } from "../events/index.js";
2
+ import { type MiaixzTranslator } from "../i18n/index.js";
3
+ import type { MiaixzFeatureValue, MiaixzSdkConfig } from "../types/index.js";
4
+ /**
5
+ * Configures the ordered sources used to load SDK configuration.
6
+ *
7
+ * @public
8
+ */
9
+ export interface MiaixzLoadConfigOptions {
10
+ /**
11
+ * Optional in-memory configuration candidate with highest precedence.
12
+ */
13
+ config?: unknown;
14
+ /**
15
+ * Optional URL of a deployment-provided JSON configuration.
16
+ */
17
+ url?: string;
18
+ /**
19
+ * Optional Fetch implementation used to load remote configuration.
20
+ */
21
+ fetch?: typeof fetch;
22
+ /**
23
+ * Optional global variable name containing injected configuration.
24
+ */
25
+ globalKey?: string;
26
+ /**
27
+ * Optional translator used for configuration errors.
28
+ */
29
+ translate?: MiaixzTranslator;
30
+ }
31
+ /**
32
+ * Determines whether a value satisfies the complete SDK configuration contract.
33
+ *
34
+ * @param value - Configuration candidate to inspect.
35
+ * @returns Whether `value` satisfies the complete SDK configuration contract.
36
+ * @public
37
+ */
38
+ export declare function isMiaixzSdkConfig(value: unknown): value is MiaixzSdkConfig;
39
+ /**
40
+ * Validates and freezes a configuration object.
41
+ *
42
+ * @param config - Configuration object to validate and freeze.
43
+ * @param translate - Translator used for validation errors.
44
+ * @returns Immutable SDK configuration.
45
+ * @throws MiaixzSdkError when required values are missing or invalid.
46
+ * @public
47
+ */
48
+ export declare function defineMiaixzConfig(config: MiaixzSdkConfig, translate?: MiaixzTranslator): Readonly<MiaixzSdkConfig>;
49
+ /**
50
+ * Loads configuration from an object, global variable, or remote JSON file.
51
+ *
52
+ * @param options - Ordered configuration sources and runtime adapters.
53
+ * @returns A validated immutable SDK configuration.
54
+ * @public
55
+ */
56
+ export declare function loadMiaixzConfig(options?: MiaixzLoadConfigOptions): Promise<Readonly<MiaixzSdkConfig>>;
57
+ /**
58
+ * Resolves the base URL for an independently deployed frontend service.
59
+ *
60
+ * @param config - SDK configuration containing service endpoints.
61
+ * @param service - Service name to resolve.
62
+ * @param translate - Translator used for missing-service errors.
63
+ * @returns Configured service base URL.
64
+ * @throws MiaixzSdkError when the service name is not configured.
65
+ * @public
66
+ */
67
+ export declare function getMiaixzServiceEndpoint(config: Readonly<MiaixzSdkConfig>, service: string, translate?: MiaixzTranslator): string;
68
+ /**
69
+ * Returns a configured feature value or the caller-supplied fallback.
70
+ *
71
+ * @param config - SDK configuration containing feature flags.
72
+ * @param feature - Feature name to resolve.
73
+ * @param fallback - Value returned when the feature is not configured.
74
+ * @returns Configured feature value or the supplied fallback.
75
+ * @public
76
+ */
77
+ export declare function getMiaixzFeature<T extends MiaixzFeatureValue>(config: Readonly<MiaixzSdkConfig>, feature: string, fallback: T): MiaixzFeatureValue | T;
78
+ /**
79
+ * Mutable configuration store with local subscriptions and cross-service events.
80
+ *
81
+ * @public
82
+ */
83
+ export declare class MiaixzConfigStore {
84
+ #private;
85
+ /**
86
+ * Creates a configuration store.
87
+ *
88
+ * @param config - Initial validated configuration.
89
+ * @param events - Optional shared event bus.
90
+ * @param translate - Translator used by validation errors.
91
+ */
92
+ constructor(config: MiaixzSdkConfig, events?: MiaixzEventBus<MiaixzSdkEventMap>, translate?: MiaixzTranslator);
93
+ /**
94
+ * Returns the current SDK configuration.
95
+ *
96
+ * @returns The current immutable configuration snapshot.
97
+ */
98
+ getSnapshot(): Readonly<MiaixzSdkConfig>;
99
+ /**
100
+ * Validates, stores, publishes, and broadcasts new configuration.
101
+ *
102
+ * @param config - Configuration object to activate.
103
+ */
104
+ set(config: MiaixzSdkConfig): void;
105
+ /**
106
+ * Registers a configuration listener and returns its unsubscribe function.
107
+ *
108
+ * @param listener - Callback invoked with each configuration snapshot.
109
+ * @returns Function that unregisters the listener.
110
+ */
111
+ subscribe(listener: (config: Readonly<MiaixzSdkConfig>) => void): () => void;
112
+ /**
113
+ * Releases event subscriptions and local listeners.
114
+ */
115
+ destroy(): void;
116
+ }
117
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,KAAK,EAAqB,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGhG;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAErB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B;AAgBD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CA4B1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,SAAS,GAAE,gBAAsC,GAChD,QAAQ,CAAC,eAAe,CAAC,CAmB3B;AAYD;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAqCpC;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,EACjC,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,gBAAsC,GAChD,MAAM,CASR;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,kBAAkB,EAC3D,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,EACjC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,CAAC,GACV,kBAAkB,GAAG,CAAC,CAExB;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;;IAO5B;;;;;;OAMG;IACH,YACE,MAAM,EAAE,eAAe,EACvB,MAAM,CAAC,EAAE,cAAc,CAAC,iBAAiB,CAAC,EAC1C,SAAS,GAAE,gBAAsC,EAQlD;IAED;;;;OAIG;IACH,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,CAEvC;IAED;;;;OAIG;IACH,GAAG,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAEjC;IAeD;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAG3E;IAED;;OAEG;IACH,OAAO,IAAI,IAAI,CAGd;CACF"}
@@ -0,0 +1,241 @@
1
+ import { MiaixzSdkError, isMiaixzSdkError } from "../api/errors.js";
2
+ import { normalizeMiaixzApiEndpoint } from "../api/endpoint.js";
3
+ import { isMiaixzAppearanceSettings } from "../appearance/index.js";
4
+ import { miaixzDefaultI18n } from "../i18n/index.js";
5
+ import { isRecord } from "../utils/object.js";
6
+ /**
7
+ * Validates supported primitive feature-flag values.
8
+ *
9
+ * @param value - Feature value candidate to inspect.
10
+ * @returns Whether the value is a supported feature-flag value.
11
+ */
12
+ function isFeatureValue(value) {
13
+ return (typeof value === "boolean" ||
14
+ typeof value === "string" ||
15
+ (typeof value === "number" && Number.isFinite(value)));
16
+ }
17
+ /**
18
+ * Determines whether a value satisfies the complete SDK configuration contract.
19
+ *
20
+ * @param value - Configuration candidate to inspect.
21
+ * @returns Whether `value` satisfies the complete SDK configuration contract.
22
+ * @public
23
+ */
24
+ export function isMiaixzSdkConfig(value) {
25
+ if (!isRecord(value))
26
+ return false;
27
+ if (typeof value.environment !== "string")
28
+ return false;
29
+ const environment = value.environment;
30
+ if (normalizeMiaixzApiEndpoint(value.apiBaseUrl, environment) === undefined)
31
+ return false;
32
+ if (value.requestTimeoutMs !== undefined &&
33
+ (typeof value.requestTimeoutMs !== "number" ||
34
+ !Number.isFinite(value.requestTimeoutMs) ||
35
+ value.requestTimeoutMs <= 0))
36
+ return false;
37
+ if (value.release !== undefined && typeof value.release !== "string")
38
+ return false;
39
+ if (value.services !== undefined &&
40
+ (!isRecord(value.services) ||
41
+ !Object.values(value.services).every((endpoint) => normalizeMiaixzApiEndpoint(endpoint, environment) !== undefined)))
42
+ return false;
43
+ if (value.features !== undefined &&
44
+ (!isRecord(value.features) || !Object.values(value.features).every(isFeatureValue)))
45
+ return false;
46
+ if (value.appearance !== undefined && !isMiaixzAppearanceSettings(value.appearance))
47
+ return false;
48
+ return true;
49
+ }
50
+ /**
51
+ * Validates and freezes a configuration object.
52
+ *
53
+ * @param config - Configuration object to validate and freeze.
54
+ * @param translate - Translator used for validation errors.
55
+ * @returns Immutable SDK configuration.
56
+ * @throws MiaixzSdkError when required values are missing or invalid.
57
+ * @public
58
+ */
59
+ export function defineMiaixzConfig(config, translate = miaixzDefaultI18n.t) {
60
+ if (!isMiaixzSdkConfig(config)) {
61
+ throw new MiaixzSdkError(translate("sdk.error.config.invalid"), { code: "CONFIG_INVALID" });
62
+ }
63
+ return Object.freeze({
64
+ ...config,
65
+ ...(config.services ? { services: Object.freeze({ ...config.services }) } : {}),
66
+ ...(config.features ? { features: Object.freeze({ ...config.features }) } : {}),
67
+ ...(config.appearance
68
+ ? {
69
+ appearance: Object.freeze({
70
+ ...config.appearance,
71
+ ...(config.appearance.colors
72
+ ? { colors: Object.freeze({ ...config.appearance.colors }) }
73
+ : {}),
74
+ }),
75
+ }
76
+ : {}),
77
+ });
78
+ }
79
+ /**
80
+ * Reads an optional deployment-injected configuration object from `globalThis`.
81
+ *
82
+ * @param globalKey - Global property name to read.
83
+ * @returns Injected value when the property exists.
84
+ */
85
+ function readGlobalConfig(globalKey) {
86
+ return globalThis[globalKey];
87
+ }
88
+ /**
89
+ * Loads configuration from an object, global variable, or remote JSON file.
90
+ *
91
+ * @param options - Ordered configuration sources and runtime adapters.
92
+ * @returns A validated immutable SDK configuration.
93
+ * @public
94
+ */
95
+ export async function loadMiaixzConfig(options = {}) {
96
+ const translate = options.translate ?? miaixzDefaultI18n.t;
97
+ let candidate = options.config ?? readGlobalConfig(options.globalKey ?? "__MIAIXZ_CONFIG__");
98
+ if (candidate === undefined && options.url) {
99
+ const fetchImplementation = options.fetch ?? globalThis.fetch;
100
+ if (!fetchImplementation) {
101
+ throw new MiaixzSdkError(translate("sdk.error.config.invalid"), {
102
+ code: "CONFIG_FETCH_UNAVAILABLE",
103
+ });
104
+ }
105
+ try {
106
+ const response = await fetchImplementation(options.url, { credentials: "same-origin" });
107
+ if (!response.ok) {
108
+ throw new MiaixzSdkError(translate("sdk.error.config.invalid"), {
109
+ code: "CONFIG_FETCH_FAILED",
110
+ details: { status: response.status, url: options.url },
111
+ });
112
+ }
113
+ candidate = await response.json();
114
+ }
115
+ catch (cause) {
116
+ if (isMiaixzSdkError(cause))
117
+ throw cause;
118
+ throw new MiaixzSdkError(translate("sdk.error.config.invalid"), {
119
+ code: "CONFIG_FETCH_FAILED",
120
+ cause,
121
+ details: { url: options.url },
122
+ });
123
+ }
124
+ }
125
+ if (!isMiaixzSdkConfig(candidate)) {
126
+ throw new MiaixzSdkError(translate("sdk.error.config.invalid"), {
127
+ code: "CONFIG_INVALID",
128
+ details: candidate,
129
+ });
130
+ }
131
+ return defineMiaixzConfig(candidate, translate);
132
+ }
133
+ /**
134
+ * Resolves the base URL for an independently deployed frontend service.
135
+ *
136
+ * @param config - SDK configuration containing service endpoints.
137
+ * @param service - Service name to resolve.
138
+ * @param translate - Translator used for missing-service errors.
139
+ * @returns Configured service base URL.
140
+ * @throws MiaixzSdkError when the service name is not configured.
141
+ * @public
142
+ */
143
+ export function getMiaixzServiceEndpoint(config, service, translate = miaixzDefaultI18n.t) {
144
+ const endpoint = config.services?.[service];
145
+ if (!endpoint) {
146
+ throw new MiaixzSdkError(translate("sdk.error.config.serviceMissing", { service }), {
147
+ code: "SERVICE_ENDPOINT_MISSING",
148
+ details: { service },
149
+ });
150
+ }
151
+ return endpoint;
152
+ }
153
+ /**
154
+ * Returns a configured feature value or the caller-supplied fallback.
155
+ *
156
+ * @param config - SDK configuration containing feature flags.
157
+ * @param feature - Feature name to resolve.
158
+ * @param fallback - Value returned when the feature is not configured.
159
+ * @returns Configured feature value or the supplied fallback.
160
+ * @public
161
+ */
162
+ export function getMiaixzFeature(config, feature, fallback) {
163
+ return config.features?.[feature] ?? fallback;
164
+ }
165
+ /**
166
+ * Mutable configuration store with local subscriptions and cross-service events.
167
+ *
168
+ * @public
169
+ */
170
+ export class MiaixzConfigStore {
171
+ #listeners = new Set();
172
+ #config;
173
+ #events;
174
+ #translate;
175
+ #stopEventListener;
176
+ /**
177
+ * Creates a configuration store.
178
+ *
179
+ * @param config - Initial validated configuration.
180
+ * @param events - Optional shared event bus.
181
+ * @param translate - Translator used by validation errors.
182
+ */
183
+ constructor(config, events, translate = miaixzDefaultI18n.t) {
184
+ this.#translate = translate;
185
+ this.#config = defineMiaixzConfig(config, this.#translate);
186
+ this.#events = events;
187
+ this.#stopEventListener = events?.on("config:changed", (nextConfig) => {
188
+ if (isMiaixzSdkConfig(nextConfig))
189
+ this.#set(nextConfig, false);
190
+ });
191
+ }
192
+ /**
193
+ * Returns the current SDK configuration.
194
+ *
195
+ * @returns The current immutable configuration snapshot.
196
+ */
197
+ getSnapshot() {
198
+ return this.#config;
199
+ }
200
+ /**
201
+ * Validates, stores, publishes, and broadcasts new configuration.
202
+ *
203
+ * @param config - Configuration object to activate.
204
+ */
205
+ set(config) {
206
+ this.#set(config, true);
207
+ }
208
+ /**
209
+ * Commits configuration and optionally broadcasts it.
210
+ *
211
+ * @param config - Configuration object to commit.
212
+ * @param broadcast - Whether to publish the change through the event bus.
213
+ */
214
+ #set(config, broadcast) {
215
+ if (config === this.#config)
216
+ return;
217
+ this.#config = defineMiaixzConfig(config, this.#translate);
218
+ for (const listener of this.#listeners)
219
+ listener(this.#config);
220
+ if (broadcast)
221
+ this.#events?.emit("config:changed", this.#config);
222
+ }
223
+ /**
224
+ * Registers a configuration listener and returns its unsubscribe function.
225
+ *
226
+ * @param listener - Callback invoked with each configuration snapshot.
227
+ * @returns Function that unregisters the listener.
228
+ */
229
+ subscribe(listener) {
230
+ this.#listeners.add(listener);
231
+ return () => this.#listeners.delete(listener);
232
+ }
233
+ /**
234
+ * Releases event subscriptions and local listeners.
235
+ */
236
+ destroy() {
237
+ this.#stopEventListener?.();
238
+ this.#listeners.clear();
239
+ }
240
+ }
241
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { MiaixzSdkError, isMiaixzSdkError } from \"../api/errors.js\";\nimport { normalizeMiaixzApiEndpoint } from \"../api/endpoint.js\";\nimport { isMiaixzAppearanceSettings } from \"../appearance/index.js\";\nimport type { MiaixzEventBus, MiaixzSdkEventMap } from \"../events/index.js\";\nimport { miaixzDefaultI18n, type MiaixzTranslator } from \"../i18n/index.js\";\nimport type { MiaixzEnvironment, MiaixzFeatureValue, MiaixzSdkConfig } from \"../types/index.js\";\nimport { isRecord } from \"../utils/object.js\";\n\n/**\n * Configures the ordered sources used to load SDK configuration.\n *\n * @public\n */\nexport interface MiaixzLoadConfigOptions {\n /**\n * Optional in-memory configuration candidate with highest precedence.\n */\n config?: unknown;\n\n /**\n * Optional URL of a deployment-provided JSON configuration.\n */\n url?: string;\n\n /**\n * Optional Fetch implementation used to load remote configuration.\n */\n fetch?: typeof fetch;\n\n /**\n * Optional global variable name containing injected configuration.\n */\n globalKey?: string;\n\n /**\n * Optional translator used for configuration errors.\n */\n translate?: MiaixzTranslator;\n}\n\n/**\n * Validates supported primitive feature-flag values.\n *\n * @param value - Feature value candidate to inspect.\n * @returns Whether the value is a supported feature-flag value.\n */\nfunction isFeatureValue(value: unknown): value is MiaixzFeatureValue {\n return (\n typeof value === \"boolean\" ||\n typeof value === \"string\" ||\n (typeof value === \"number\" && Number.isFinite(value))\n );\n}\n\n/**\n * Determines whether a value satisfies the complete SDK configuration contract.\n *\n * @param value - Configuration candidate to inspect.\n * @returns Whether `value` satisfies the complete SDK configuration contract.\n * @public\n */\nexport function isMiaixzSdkConfig(value: unknown): value is MiaixzSdkConfig {\n if (!isRecord(value)) return false;\n if (typeof value.environment !== \"string\") return false;\n const environment = value.environment as MiaixzEnvironment;\n if (normalizeMiaixzApiEndpoint(value.apiBaseUrl, environment) === undefined) return false;\n if (\n value.requestTimeoutMs !== undefined &&\n (typeof value.requestTimeoutMs !== \"number\" ||\n !Number.isFinite(value.requestTimeoutMs) ||\n value.requestTimeoutMs <= 0)\n )\n return false;\n if (value.release !== undefined && typeof value.release !== \"string\") return false;\n if (\n value.services !== undefined &&\n (!isRecord(value.services) ||\n !Object.values(value.services).every(\n (endpoint) => normalizeMiaixzApiEndpoint(endpoint, environment) !== undefined,\n ))\n )\n return false;\n if (\n value.features !== undefined &&\n (!isRecord(value.features) || !Object.values(value.features).every(isFeatureValue))\n )\n return false;\n if (value.appearance !== undefined && !isMiaixzAppearanceSettings(value.appearance)) return false;\n return true;\n}\n\n/**\n * Validates and freezes a configuration object.\n *\n * @param config - Configuration object to validate and freeze.\n * @param translate - Translator used for validation errors.\n * @returns Immutable SDK configuration.\n * @throws MiaixzSdkError when required values are missing or invalid.\n * @public\n */\nexport function defineMiaixzConfig(\n config: MiaixzSdkConfig,\n translate: MiaixzTranslator = miaixzDefaultI18n.t,\n): Readonly<MiaixzSdkConfig> {\n if (!isMiaixzSdkConfig(config)) {\n throw new MiaixzSdkError(translate(\"sdk.error.config.invalid\"), { code: \"CONFIG_INVALID\" });\n }\n return Object.freeze({\n ...config,\n ...(config.services ? { services: Object.freeze({ ...config.services }) } : {}),\n ...(config.features ? { features: Object.freeze({ ...config.features }) } : {}),\n ...(config.appearance\n ? {\n appearance: Object.freeze({\n ...config.appearance,\n ...(config.appearance.colors\n ? { colors: Object.freeze({ ...config.appearance.colors }) }\n : {}),\n }),\n }\n : {}),\n });\n}\n\n/**\n * Reads an optional deployment-injected configuration object from `globalThis`.\n *\n * @param globalKey - Global property name to read.\n * @returns Injected value when the property exists.\n */\nfunction readGlobalConfig(globalKey: string): unknown {\n return (globalThis as unknown as Record<string, unknown>)[globalKey];\n}\n\n/**\n * Loads configuration from an object, global variable, or remote JSON file.\n *\n * @param options - Ordered configuration sources and runtime adapters.\n * @returns A validated immutable SDK configuration.\n * @public\n */\nexport async function loadMiaixzConfig(\n options: MiaixzLoadConfigOptions = {},\n): Promise<Readonly<MiaixzSdkConfig>> {\n const translate = options.translate ?? miaixzDefaultI18n.t;\n let candidate = options.config ?? readGlobalConfig(options.globalKey ?? \"__MIAIXZ_CONFIG__\");\n\n if (candidate === undefined && options.url) {\n const fetchImplementation = options.fetch ?? globalThis.fetch;\n if (!fetchImplementation) {\n throw new MiaixzSdkError(translate(\"sdk.error.config.invalid\"), {\n code: \"CONFIG_FETCH_UNAVAILABLE\",\n });\n }\n try {\n const response = await fetchImplementation(options.url, { credentials: \"same-origin\" });\n if (!response.ok) {\n throw new MiaixzSdkError(translate(\"sdk.error.config.invalid\"), {\n code: \"CONFIG_FETCH_FAILED\",\n details: { status: response.status, url: options.url },\n });\n }\n candidate = await response.json();\n } catch (cause) {\n if (isMiaixzSdkError(cause)) throw cause;\n throw new MiaixzSdkError(translate(\"sdk.error.config.invalid\"), {\n code: \"CONFIG_FETCH_FAILED\",\n cause,\n details: { url: options.url },\n });\n }\n }\n\n if (!isMiaixzSdkConfig(candidate)) {\n throw new MiaixzSdkError(translate(\"sdk.error.config.invalid\"), {\n code: \"CONFIG_INVALID\",\n details: candidate,\n });\n }\n return defineMiaixzConfig(candidate, translate);\n}\n\n/**\n * Resolves the base URL for an independently deployed frontend service.\n *\n * @param config - SDK configuration containing service endpoints.\n * @param service - Service name to resolve.\n * @param translate - Translator used for missing-service errors.\n * @returns Configured service base URL.\n * @throws MiaixzSdkError when the service name is not configured.\n * @public\n */\nexport function getMiaixzServiceEndpoint(\n config: Readonly<MiaixzSdkConfig>,\n service: string,\n translate: MiaixzTranslator = miaixzDefaultI18n.t,\n): string {\n const endpoint = config.services?.[service];\n if (!endpoint) {\n throw new MiaixzSdkError(translate(\"sdk.error.config.serviceMissing\", { service }), {\n code: \"SERVICE_ENDPOINT_MISSING\",\n details: { service },\n });\n }\n return endpoint;\n}\n\n/**\n * Returns a configured feature value or the caller-supplied fallback.\n *\n * @param config - SDK configuration containing feature flags.\n * @param feature - Feature name to resolve.\n * @param fallback - Value returned when the feature is not configured.\n * @returns Configured feature value or the supplied fallback.\n * @public\n */\nexport function getMiaixzFeature<T extends MiaixzFeatureValue>(\n config: Readonly<MiaixzSdkConfig>,\n feature: string,\n fallback: T,\n): MiaixzFeatureValue | T {\n return config.features?.[feature] ?? fallback;\n}\n\n/**\n * Mutable configuration store with local subscriptions and cross-service events.\n *\n * @public\n */\nexport class MiaixzConfigStore {\n readonly #listeners = new Set<(config: Readonly<MiaixzSdkConfig>) => void>();\n #config: Readonly<MiaixzSdkConfig>;\n readonly #events: MiaixzEventBus<MiaixzSdkEventMap> | undefined;\n readonly #translate: MiaixzTranslator;\n #stopEventListener: (() => void) | undefined;\n\n /**\n * Creates a configuration store.\n *\n * @param config - Initial validated configuration.\n * @param events - Optional shared event bus.\n * @param translate - Translator used by validation errors.\n */\n constructor(\n config: MiaixzSdkConfig,\n events?: MiaixzEventBus<MiaixzSdkEventMap>,\n translate: MiaixzTranslator = miaixzDefaultI18n.t,\n ) {\n this.#translate = translate;\n this.#config = defineMiaixzConfig(config, this.#translate);\n this.#events = events;\n this.#stopEventListener = events?.on(\"config:changed\", (nextConfig) => {\n if (isMiaixzSdkConfig(nextConfig)) this.#set(nextConfig, false);\n });\n }\n\n /**\n * Returns the current SDK configuration.\n *\n * @returns The current immutable configuration snapshot.\n */\n getSnapshot(): Readonly<MiaixzSdkConfig> {\n return this.#config;\n }\n\n /**\n * Validates, stores, publishes, and broadcasts new configuration.\n *\n * @param config - Configuration object to activate.\n */\n set(config: MiaixzSdkConfig): void {\n this.#set(config, true);\n }\n\n /**\n * Commits configuration and optionally broadcasts it.\n *\n * @param config - Configuration object to commit.\n * @param broadcast - Whether to publish the change through the event bus.\n */\n #set(config: MiaixzSdkConfig, broadcast: boolean): void {\n if (config === this.#config) return;\n this.#config = defineMiaixzConfig(config, this.#translate);\n for (const listener of this.#listeners) listener(this.#config);\n if (broadcast) this.#events?.emit(\"config:changed\", this.#config);\n }\n\n /**\n * Registers a configuration listener and returns its unsubscribe function.\n *\n * @param listener - Callback invoked with each configuration snapshot.\n * @returns Function that unregisters the listener.\n */\n subscribe(listener: (config: Readonly<MiaixzSdkConfig>) => void): () => void {\n this.#listeners.add(listener);\n return () => this.#listeners.delete(listener);\n }\n\n /**\n * Releases event subscriptions and local listeners.\n */\n destroy(): void {\n this.#stopEventListener?.();\n this.#listeners.clear();\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export * from "./config.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./config.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC","sourcesContent":["export * from \"./config.js\";\n"]}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Defines canonical HTTP header names used by Miaixz services.
3
+ *
4
+ * @public
5
+ */
6
+ export declare const miaixzHeaders: Readonly<{
7
+ readonly authorization: "Authorization";
8
+ readonly csrfToken: "X-CSRF-Token";
9
+ readonly requestId: "X-Request-Id";
10
+ readonly traceId: "X-Miaixz-Trace-Id";
11
+ readonly userId: "X-Miaixz-User-Id";
12
+ readonly tenantId: "X-Miaixz-Tenant-Id";
13
+ readonly organizationId: "X-Miaixz-Organization-Id";
14
+ readonly departmentId: "X-Miaixz-Department-Id";
15
+ readonly spaceId: "X-Miaixz-Space-Id";
16
+ readonly locale: "X-Miaixz-Locale";
17
+ readonly timezone: "X-Miaixz-Timezone";
18
+ }>;
19
+ /**
20
+ * Defines canonical browser storage keys used by Miaixz applications.
21
+ *
22
+ * @public
23
+ */
24
+ export declare const miaixzStorageKeys: Readonly<{
25
+ readonly auth: "miaixz-auth";
26
+ readonly context: "miaixz-context";
27
+ readonly appearance: "miaixz-appearance";
28
+ }>;
29
+ /**
30
+ * Defines the default SDK request timeout in milliseconds.
31
+ *
32
+ * @public
33
+ */
34
+ export declare const miaixzDefaultRequestTimeoutMs = 30000;
35
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/consts/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,aAAa;4BACT,eAAe;wBACnB,cAAc;wBACd,cAAc;sBAChB,mBAAmB;qBACpB,kBAAkB;uBAChB,oBAAoB;6BACd,0BAA0B;2BAC5B,wBAAwB;sBAC7B,mBAAmB;qBACpB,iBAAiB;uBACf,mBAAmB;EACpB,CAAC;AAEZ;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;mBACtB,aAAa;sBACV,gBAAgB;yBACb,mBAAmB;EACtB,CAAC;AAEZ;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,QAAS,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Defines canonical HTTP header names used by Miaixz services.
3
+ *
4
+ * @public
5
+ */
6
+ export const miaixzHeaders = Object.freeze({
7
+ authorization: "Authorization",
8
+ csrfToken: "X-CSRF-Token",
9
+ requestId: "X-Request-Id",
10
+ traceId: "X-Miaixz-Trace-Id",
11
+ userId: "X-Miaixz-User-Id",
12
+ tenantId: "X-Miaixz-Tenant-Id",
13
+ organizationId: "X-Miaixz-Organization-Id",
14
+ departmentId: "X-Miaixz-Department-Id",
15
+ spaceId: "X-Miaixz-Space-Id",
16
+ locale: "X-Miaixz-Locale",
17
+ timezone: "X-Miaixz-Timezone",
18
+ });
19
+ /**
20
+ * Defines canonical browser storage keys used by Miaixz applications.
21
+ *
22
+ * @public
23
+ */
24
+ export const miaixzStorageKeys = Object.freeze({
25
+ auth: "miaixz-auth",
26
+ context: "miaixz-context",
27
+ appearance: "miaixz-appearance",
28
+ });
29
+ /**
30
+ * Defines the default SDK request timeout in milliseconds.
31
+ *
32
+ * @public
33
+ */
34
+ export const miaixzDefaultRequestTimeoutMs = 30_000;
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/consts/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,aAAa,EAAE,eAAe;IAC9B,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,cAAc;IACzB,OAAO,EAAE,mBAAmB;IAC5B,MAAM,EAAE,kBAAkB;IAC1B,QAAQ,EAAE,oBAAoB;IAC9B,cAAc,EAAE,0BAA0B;IAC1C,YAAY,EAAE,wBAAwB;IACtC,OAAO,EAAE,mBAAmB;IAC5B,MAAM,EAAE,iBAAiB;IACzB,QAAQ,EAAE,mBAAmB;CACrB,CAAC,CAAC;AAEZ;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,gBAAgB;IACzB,UAAU,EAAE,mBAAmB;CACvB,CAAC,CAAC;AAEZ;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC","sourcesContent":["/**\n * Defines canonical HTTP header names used by Miaixz services.\n *\n * @public\n */\nexport const miaixzHeaders = Object.freeze({\n authorization: \"Authorization\",\n csrfToken: \"X-CSRF-Token\",\n requestId: \"X-Request-Id\",\n traceId: \"X-Miaixz-Trace-Id\",\n userId: \"X-Miaixz-User-Id\",\n tenantId: \"X-Miaixz-Tenant-Id\",\n organizationId: \"X-Miaixz-Organization-Id\",\n departmentId: \"X-Miaixz-Department-Id\",\n spaceId: \"X-Miaixz-Space-Id\",\n locale: \"X-Miaixz-Locale\",\n timezone: \"X-Miaixz-Timezone\",\n} as const);\n\n/**\n * Defines canonical browser storage keys used by Miaixz applications.\n *\n * @public\n */\nexport const miaixzStorageKeys = Object.freeze({\n auth: \"miaixz-auth\",\n context: \"miaixz-context\",\n appearance: \"miaixz-appearance\",\n} as const);\n\n/**\n * Defines the default SDK request timeout in milliseconds.\n *\n * @public\n */\nexport const miaixzDefaultRequestTimeoutMs = 30_000;\n"]}