@omerdlw/base-framework 1.0.6 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/dist/atoms/index.js +1 -103
  2. package/dist/atoms/index.js.map +1 -1
  3. package/dist/chunk-3BUP64Q6.js +105 -0
  4. package/dist/chunk-3BUP64Q6.js.map +1 -0
  5. package/dist/chunk-4GMQKD6F.js +353 -0
  6. package/dist/chunk-4GMQKD6F.js.map +1 -0
  7. package/dist/chunk-6SG7V77J.js +577 -0
  8. package/dist/chunk-6SG7V77J.js.map +1 -0
  9. package/dist/chunk-6ZJVLUBE.js +26 -0
  10. package/dist/chunk-6ZJVLUBE.js.map +1 -0
  11. package/dist/chunk-7HQMXTNP.js +419 -0
  12. package/dist/chunk-7HQMXTNP.js.map +1 -0
  13. package/dist/chunk-7TAVYJ3A.js +371 -0
  14. package/dist/chunk-7TAVYJ3A.js.map +1 -0
  15. package/dist/chunk-A5RE3F6O.js +9905 -0
  16. package/dist/chunk-A5RE3F6O.js.map +1 -0
  17. package/dist/chunk-AQ4BNXA2.js +349 -0
  18. package/dist/chunk-AQ4BNXA2.js.map +1 -0
  19. package/dist/chunk-CGHZSSFR.js +2166 -0
  20. package/dist/chunk-CGHZSSFR.js.map +1 -0
  21. package/dist/chunk-DGCQWQLZ.js +61 -0
  22. package/dist/chunk-DGCQWQLZ.js.map +1 -0
  23. package/dist/chunk-FIMPHODX.js +67 -0
  24. package/dist/chunk-FIMPHODX.js.map +1 -0
  25. package/dist/chunk-GF7TUX5I.js +1889 -0
  26. package/dist/chunk-GF7TUX5I.js.map +1 -0
  27. package/dist/chunk-JELG4JLT.js +454 -0
  28. package/dist/chunk-JELG4JLT.js.map +1 -0
  29. package/dist/chunk-K676GL7Z.js +51 -0
  30. package/dist/chunk-K676GL7Z.js.map +1 -0
  31. package/dist/chunk-QI3ALLIB.js +38 -0
  32. package/dist/chunk-QI3ALLIB.js.map +1 -0
  33. package/dist/chunk-QXR55VVS.js +1139 -0
  34. package/dist/chunk-QXR55VVS.js.map +1 -0
  35. package/dist/chunk-R2YGFJDJ.js +408 -0
  36. package/dist/chunk-R2YGFJDJ.js.map +1 -0
  37. package/dist/chunk-RFZQWLC5.js +27 -0
  38. package/dist/chunk-RFZQWLC5.js.map +1 -0
  39. package/dist/chunk-SKBITB5X.js +888 -0
  40. package/dist/chunk-SKBITB5X.js.map +1 -0
  41. package/dist/chunk-SYAVGTOX.js +521 -0
  42. package/dist/chunk-SYAVGTOX.js.map +1 -0
  43. package/dist/chunk-TV3WEF5G.js +784 -0
  44. package/dist/chunk-TV3WEF5G.js.map +1 -0
  45. package/dist/chunk-XASQT4CQ.js +280 -0
  46. package/dist/chunk-XASQT4CQ.js.map +1 -0
  47. package/dist/error/index.js +5 -682
  48. package/dist/error/index.js.map +1 -1
  49. package/dist/error/reporter.d.ts.map +1 -1
  50. package/dist/error/theme.d.ts +1 -1
  51. package/dist/error/theme.d.ts.map +1 -1
  52. package/dist/events.js +1 -7
  53. package/dist/events.js.map +1 -1
  54. package/dist/hooks/index.js +1 -358
  55. package/dist/hooks/index.js.map +1 -1
  56. package/dist/hooks/use-global-event.d.ts +1 -1
  57. package/dist/index.js +18 -20029
  58. package/dist/index.js.map +1 -1
  59. package/dist/kernel/index.js +2 -2035
  60. package/dist/kernel/index.js.map +1 -1
  61. package/dist/kernel/types.d.ts +1 -1
  62. package/dist/modules/ambient/analyze.d.ts +46 -0
  63. package/dist/modules/ambient/analyze.d.ts.map +1 -0
  64. package/dist/modules/ambient/constants.d.ts +1 -5
  65. package/dist/modules/ambient/constants.d.ts.map +1 -1
  66. package/dist/modules/ambient/context.d.ts.map +1 -1
  67. package/dist/modules/ambient/dom.d.ts +11 -12
  68. package/dist/modules/ambient/dom.d.ts.map +1 -1
  69. package/dist/modules/ambient/extractor.d.ts +10 -10
  70. package/dist/modules/ambient/extractor.d.ts.map +1 -1
  71. package/dist/modules/ambient/hooks.d.ts +1 -1
  72. package/dist/modules/ambient/hooks.d.ts.map +1 -1
  73. package/dist/modules/ambient/index.d.ts +6 -4
  74. package/dist/modules/ambient/index.d.ts.map +1 -1
  75. package/dist/modules/ambient/index.js +7 -762
  76. package/dist/modules/ambient/index.js.map +1 -1
  77. package/dist/modules/ambient/module.d.ts +1 -1
  78. package/dist/modules/ambient/module.d.ts.map +1 -1
  79. package/dist/modules/ambient/oklab.d.ts +36 -0
  80. package/dist/modules/ambient/oklab.d.ts.map +1 -0
  81. package/dist/modules/ambient/pipeline.d.ts +28 -0
  82. package/dist/modules/ambient/pipeline.d.ts.map +1 -0
  83. package/dist/modules/ambient/quantize.d.ts +22 -0
  84. package/dist/modules/ambient/quantize.d.ts.map +1 -0
  85. package/dist/modules/ambient/server/address.d.ts +8 -0
  86. package/dist/modules/ambient/server/address.d.ts.map +1 -0
  87. package/dist/modules/ambient/server/index.d.ts +53 -0
  88. package/dist/modules/ambient/server/index.d.ts.map +1 -0
  89. package/dist/modules/ambient/server/index.js +221 -0
  90. package/dist/modules/ambient/server/index.js.map +1 -0
  91. package/dist/modules/ambient/settings.d.ts +19 -0
  92. package/dist/modules/ambient/settings.d.ts.map +1 -0
  93. package/dist/modules/ambient/types.d.ts +105 -9
  94. package/dist/modules/ambient/types.d.ts.map +1 -1
  95. package/dist/modules/ambient/worker/index.d.ts +15 -0
  96. package/dist/modules/ambient/worker/index.d.ts.map +1 -0
  97. package/dist/modules/ambient/worker/index.js +114 -0
  98. package/dist/modules/ambient/worker/index.js.map +1 -0
  99. package/dist/modules/background/constants.d.ts +2 -2
  100. package/dist/modules/background/constants.d.ts.map +1 -1
  101. package/dist/modules/background/hooks.d.ts +1 -1
  102. package/dist/modules/background/index.js +6 -3078
  103. package/dist/modules/background/index.js.map +1 -1
  104. package/dist/modules/background/motion.d.ts +9 -7
  105. package/dist/modules/background/motion.d.ts.map +1 -1
  106. package/dist/modules/background/overlay.d.ts +3 -8
  107. package/dist/modules/background/overlay.d.ts.map +1 -1
  108. package/dist/modules/background/types.d.ts +16 -2
  109. package/dist/modules/background/types.d.ts.map +1 -1
  110. package/dist/modules/context-menu/constants.d.ts +2 -2
  111. package/dist/modules/context-menu/constants.d.ts.map +1 -1
  112. package/dist/modules/context-menu/hooks.d.ts +1 -1
  113. package/dist/modules/context-menu/index.js +10 -1896
  114. package/dist/modules/context-menu/index.js.map +1 -1
  115. package/dist/modules/context-menu/motion.d.ts +1 -8
  116. package/dist/modules/context-menu/motion.d.ts.map +1 -1
  117. package/dist/modules/context-menu/overlay.d.ts.map +1 -1
  118. package/dist/modules/context-menu/types.d.ts +16 -2
  119. package/dist/modules/context-menu/types.d.ts.map +1 -1
  120. package/dist/modules/controls/constants.d.ts +1 -1
  121. package/dist/modules/controls/constants.d.ts.map +1 -1
  122. package/dist/modules/controls/entries.d.ts +1 -1
  123. package/dist/modules/controls/hooks.d.ts +1 -1
  124. package/dist/modules/controls/index.js +4 -1110
  125. package/dist/modules/controls/index.js.map +1 -1
  126. package/dist/modules/controls/overlay.d.ts +1 -1
  127. package/dist/modules/controls/types.d.ts +2 -2
  128. package/dist/modules/dock/cards.d.ts +711 -24
  129. package/dist/modules/dock/cards.d.ts.map +1 -1
  130. package/dist/modules/dock/constants.d.ts +2 -2
  131. package/dist/modules/dock/constants.d.ts.map +1 -1
  132. package/dist/modules/dock/helpers.d.ts +2 -2
  133. package/dist/modules/dock/hooks.d.ts +2 -2
  134. package/dist/modules/dock/index.d.ts +1 -1
  135. package/dist/modules/dock/index.d.ts.map +1 -1
  136. package/dist/modules/dock/index.js +9 -12132
  137. package/dist/modules/dock/index.js.map +1 -1
  138. package/dist/modules/dock/layout.d.ts.map +1 -1
  139. package/dist/modules/dock/module.d.ts +1 -1
  140. package/dist/modules/dock/motion.d.ts +44 -912
  141. package/dist/modules/dock/motion.d.ts.map +1 -1
  142. package/dist/modules/dock/overlay.d.ts +1 -1
  143. package/dist/modules/dock/overlay.d.ts.map +1 -1
  144. package/dist/modules/dock/runtime/dock.d.ts +1 -23
  145. package/dist/modules/dock/runtime/dock.d.ts.map +1 -1
  146. package/dist/modules/dock/styles.d.ts +4 -4
  147. package/dist/modules/dock/surface/hooks.d.ts +5 -20
  148. package/dist/modules/dock/surface/hooks.d.ts.map +1 -1
  149. package/dist/modules/dock/surface/machine.d.ts +4 -3
  150. package/dist/modules/dock/surface/machine.d.ts.map +1 -1
  151. package/dist/modules/dock/surface/stack.d.ts.map +1 -1
  152. package/dist/modules/dock/surface/view-model.d.ts.map +1 -1
  153. package/dist/modules/dock/types.d.ts +162 -3
  154. package/dist/modules/dock/types.d.ts.map +1 -1
  155. package/dist/modules/index.js +16 -17883
  156. package/dist/modules/index.js.map +1 -1
  157. package/dist/modules/loading/constants.d.ts +1 -1
  158. package/dist/modules/loading/constants.d.ts.map +1 -1
  159. package/dist/modules/loading/context.d.ts +1 -1
  160. package/dist/modules/loading/hooks.d.ts +1 -1
  161. package/dist/modules/loading/index.js +5 -1153
  162. package/dist/modules/loading/index.js.map +1 -1
  163. package/dist/modules/loading/types.d.ts +2 -2
  164. package/dist/modules/media/context.d.ts +1 -1
  165. package/dist/modules/media/index.js +3 -570
  166. package/dist/modules/media/index.js.map +1 -1
  167. package/dist/modules/media/types.d.ts +2 -2
  168. package/dist/modules/modal/constants.d.ts +2 -2
  169. package/dist/modules/modal/constants.d.ts.map +1 -1
  170. package/dist/modules/modal/context.d.ts +1 -1
  171. package/dist/modules/modal/hooks.d.ts +3 -3
  172. package/dist/modules/modal/index.js +8 -2355
  173. package/dist/modules/modal/index.js.map +1 -1
  174. package/dist/modules/modal/motion.d.ts +3 -8
  175. package/dist/modules/modal/motion.d.ts.map +1 -1
  176. package/dist/modules/modal/overlay.d.ts.map +1 -1
  177. package/dist/modules/modal/types.d.ts +21 -0
  178. package/dist/modules/modal/types.d.ts.map +1 -1
  179. package/dist/modules/notification/constants.d.ts +2 -2
  180. package/dist/modules/notification/constants.d.ts.map +1 -1
  181. package/dist/modules/notification/context.d.ts +1 -1
  182. package/dist/modules/notification/hooks.d.ts +1 -1
  183. package/dist/modules/notification/index.js +4 -828
  184. package/dist/modules/notification/index.js.map +1 -1
  185. package/dist/modules/notification/motion.d.ts +1 -7
  186. package/dist/modules/notification/motion.d.ts.map +1 -1
  187. package/dist/modules/notification/overlay.d.ts.map +1 -1
  188. package/dist/modules/notification/types.d.ts +9 -1
  189. package/dist/modules/notification/types.d.ts.map +1 -1
  190. package/dist/overlay-TZ6L52A5.js +9 -0
  191. package/dist/overlay-TZ6L52A5.js.map +1 -0
  192. package/dist/provider.d.ts +1 -1
  193. package/dist/provider.d.ts.map +1 -1
  194. package/dist/provider.js +6 -1968
  195. package/dist/provider.js.map +1 -1
  196. package/dist/result.js +2 -63
  197. package/dist/result.js.map +1 -1
  198. package/dist/theme.d.ts +45 -8
  199. package/dist/theme.d.ts.map +1 -1
  200. package/dist/theme.js +3 -41
  201. package/dist/theme.js.map +1 -1
  202. package/dist/tokens/index.d.ts +1 -0
  203. package/dist/tokens/index.d.ts.map +1 -1
  204. package/dist/tokens/index.js +126 -155
  205. package/dist/tokens/index.js.map +1 -1
  206. package/dist/tokens/motion-config.d.ts +44 -0
  207. package/dist/tokens/motion-config.d.ts.map +1 -0
  208. package/dist/tokens/motion.d.ts +23 -174
  209. package/dist/tokens/motion.d.ts.map +1 -1
  210. package/dist/utils/index.js +4 -82
  211. package/dist/utils/index.js.map +1 -1
  212. package/dist/utils/report.d.ts.map +1 -1
  213. package/docs/README.md +1 -0
  214. package/docs/architecture-and-rules.md +4 -3
  215. package/docs/core-engine.md +7 -10
  216. package/docs/getting-started.md +4 -2
  217. package/docs/modules/ambient.md +194 -80
  218. package/docs/modules/background.md +3 -3
  219. package/docs/modules/context-menu.md +2 -2
  220. package/docs/modules/dock.md +9 -6
  221. package/docs/modules/modal.md +2 -2
  222. package/docs/modules/notification.md +2 -2
  223. package/docs/theming.md +81 -9
  224. package/package.json +22 -5
  225. package/templates/AGENTS.md +1 -1
  226. package/templates/motion/background.ts +17 -0
  227. package/templates/motion/context-menu.ts +63 -0
  228. package/templates/motion/dock.ts +327 -0
  229. package/templates/motion/modal.ts +79 -0
  230. package/templates/motion/notification.ts +27 -0
  231. package/templates/motion/tokens.ts +47 -0
  232. package/templates/tsconfig.json +7 -0
  233. package/dist/modules/ambient/color.d.ts +0 -21
  234. package/dist/modules/ambient/color.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/kernel/constants.ts","../../src/kernel/context-registry.ts","../../src/utils/string.ts","../../src/utils/dom.ts","../../src/utils/object.ts","../../src/utils/report.ts","../../src/utils/store.ts","../../src/kernel/utils.ts","../../src/kernel/schema.ts","../../src/kernel/operations.ts","../../src/hooks/use-required-context.ts","../../src/hooks/use-store.ts","../../src/hooks/use-isomorphic-layout-effect.ts","../../src/kernel/runtime.ts","../../src/kernel/store.ts","../../src/kernel/provider.tsx","../../src/kernel/installed.ts","../../src/kernel/handlers.ts","../../src/kernel/hooks.ts","../../src/kernel/page-controller.tsx","../../src/kernel/module.tsx","../../src/kernel/adapters.ts","../../src/kernel/compose.ts"],"names":["isPlainObject","useCallback","useSyncExternalStore","use","useRef","isValidElement","hasChanged","stabilizedValue","useState","useMemo","jsx","useId","useEffect","Component","createElement","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["import type {\n RegistryLifecycle,\n RegistryScopeKind,\n RegistrySource,\n RegistryValidationMode,\n} from \"./types\";\n\nexport const DEFAULT_SOURCE: RegistrySource = \"dynamic\";\n\nexport const REGISTRY_SOURCES: Readonly<Record<string, RegistrySource>> =\n Object.freeze({\n STATIC: \"static\",\n DYNAMIC: \"dynamic\",\n USER: \"user\",\n });\n\nexport const REGISTRY_LIFECYCLES: Readonly<Record<string, RegistryLifecycle>> =\n Object.freeze({\n IMMEDIATE: \"immediate\",\n GRACEFUL: \"graceful\",\n PERSISTENT: \"persistent\",\n ROUTE: \"route\",\n });\n\nexport const REGISTRY_VALIDATION_MODES: Readonly<\n Record<string, RegistryValidationMode>\n> = Object.freeze({\n WARN: \"warn\",\n STRICT: \"strict\",\n});\n\nexport const REGISTRY_METADATA_KEYS: readonly string[] = Object.freeze([\n \"cleanup\",\n \"cleanupDelayMs\",\n \"instanceId\",\n \"lifecycle\",\n \"priority\",\n \"source\",\n \"scope\",\n \"validation\",\n]);\n\nexport const REGISTRY_SOURCE_PRIORITY: Readonly<Record<string, number>> =\n Object.freeze({\n [REGISTRY_SOURCES.STATIC]: 100,\n [REGISTRY_SOURCES.DYNAMIC]: 200,\n [REGISTRY_SOURCES.USER]: 300,\n });\n\nexport const REGISTRY_SOURCE_RANK: Readonly<Record<string, number>> =\n Object.freeze({\n [REGISTRY_SOURCES.STATIC]: 10,\n [REGISTRY_SOURCES.DYNAMIC]: 20,\n [REGISTRY_SOURCES.USER]: 30,\n });\n\nexport const REGISTRY_LIFECYCLE_VALUES: ReadonlySet<string> = new Set(\n Object.values(REGISTRY_LIFECYCLES),\n);\n\nexport const REGISTRY_METADATA_KEY_SET: ReadonlySet<string> = new Set(\n REGISTRY_METADATA_KEYS,\n);\n\nconst REGISTRY_SCOPE_KINDS: Readonly<Record<string, RegistryScopeKind>> =\n Object.freeze({\n APP: \"app\",\n SESSION: \"session\",\n ROUTE: \"route\",\n INSTANCE: \"instance\",\n WORKSPACE: \"workspace\",\n });\n\nexport const DEFAULT_REGISTRY_SCOPE: RegistryScopeKind =\n REGISTRY_SCOPE_KINDS.APP;\n","import { createContext, type Context } from \"react\";\n\nexport function getOrCreateGlobalContext<T>(\n name: string,\n defaultValue: T,\n): Context<T> {\n const sym = Symbol.for(`@omerdlw/base-framework/context/${name}`);\n const store = globalThis as unknown as Record<symbol, Context<T>>;\n if (!store[sym]) {\n store[sym] = createContext<T>(defaultValue);\n }\n return store[sym];\n}\n","export function trimToNull(value: unknown): string | null {\n if (value === null || value === undefined) return null;\n const trimmed = String(value).trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n\nexport function stripTrailingSlash(url: unknown): string {\n if (typeof url !== \"string\") return \"\";\n return url.replace(/\\/+$/, \"\");\n}\n\nexport function normalizePath(path: unknown): string {\n const trimmed = trimToNull(path);\n if (!trimmed) return \"\";\n if (trimmed === \"/\") return \"/\";\n return stripTrailingSlash(trimmed);\n}\n\nexport function isImageIconSource(icon: unknown): boolean {\n return (\n typeof icon === \"string\" &&\n (icon.startsWith(\"http://\") ||\n icon.startsWith(\"https://\") ||\n icon.startsWith(\"/\") ||\n icon.startsWith(\"data:image/\"))\n );\n}\n","import { stripTrailingSlash } from \"./string\";\n\nexport const isBrowser: boolean = typeof window !== \"undefined\";\n\nlet globalScrollLockCount = 0;\n\nlet globalScrollLockStyles: {\n bodyOverflow: string;\n bodyOverscrollBehavior: string;\n htmlOverflow: string;\n htmlOverscrollBehavior: string;\n} | null = null;\n\nexport function acquireGlobalScrollLock(): () => void {\n if (typeof document === \"undefined\") return () => {};\n\n if (globalScrollLockCount === 0) {\n globalScrollLockStyles = {\n bodyOverflow: document.body.style.overflow,\n bodyOverscrollBehavior: document.body.style.overscrollBehavior,\n htmlOverflow: document.documentElement.style.overflow,\n htmlOverscrollBehavior: document.documentElement.style.overscrollBehavior,\n };\n }\n\n globalScrollLockCount += 1;\n document.body.style.overflow = \"hidden\";\n document.body.style.overscrollBehavior = \"none\";\n document.documentElement.style.overflow = \"hidden\";\n document.documentElement.style.overscrollBehavior = \"none\";\n\n let released = false;\n return () => {\n if (released) return;\n released = true;\n globalScrollLockCount = Math.max(0, globalScrollLockCount - 1);\n if (globalScrollLockCount > 0 || !globalScrollLockStyles) return;\n\n document.body.style.overflow = globalScrollLockStyles.bodyOverflow;\n document.body.style.overscrollBehavior =\n globalScrollLockStyles.bodyOverscrollBehavior;\n document.documentElement.style.overflow =\n globalScrollLockStyles.htmlOverflow;\n document.documentElement.style.overscrollBehavior =\n globalScrollLockStyles.htmlOverscrollBehavior;\n globalScrollLockStyles = null;\n };\n}\n\nexport function getSiteUrl(): string {\n return stripTrailingSlash(\n process.env.NEXT_PUBLIC_SITE_URL || \"http://localhost:3000\",\n );\n}\n\nexport function getCurrentPath(): string {\n if (!isBrowser) return \"/\";\n return `${window.location.pathname}${window.location.search}`;\n}\n\n","export function isObject(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nexport function isPlainObject(\n value: unknown,\n): value is Record<string, unknown> {\n if (!isObject(value)) return false;\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n}\n\nexport function shallowEqual(a: unknown, b: unknown): boolean {\n if (Object.is(a, b)) return true;\n if (\n typeof a !== \"object\" ||\n a === null ||\n typeof b !== \"object\" ||\n b === null\n ) {\n return false;\n }\n\n const keysA = Object.keys(a as object);\n const keysB = Object.keys(b as object);\n\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (\n !Object.prototype.hasOwnProperty.call(b, key) ||\n !Object.is(\n (a as Record<string, unknown>)[key],\n (b as Record<string, unknown>)[key],\n )\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function toArray<T>(value: T | T[] | null | undefined): T[] {\n if (value === null || value === undefined) return [];\n return Array.isArray(value) ? value : [value];\n}\n","export type ReportLevel = \"error\" | \"warn\";\n\nexport type ReportSink = (\n scope: string,\n error: unknown,\n level: ReportLevel,\n) => void;\n\nlet sink: ReportSink | null = null;\n\nexport function report(\n scope: string,\n error: unknown,\n level: ReportLevel = \"error\",\n): void {\n if (sink) {\n try {\n sink(scope, error, level);\n return;\n } catch {}\n }\n\n if (process.env.NODE_ENV === \"production\" && typeof window !== \"undefined\") {\n return;\n }\n console[level](`[${scope}]`, error);\n}\n\nexport function setReportSink(next: ReportSink): () => void {\n sink = next;\n return () => {\n if (sink === next) sink = null;\n };\n}\n","import { report } from \"./report\";\nexport interface ExternalStore<TState = unknown> {\n readonly getSnapshot: () => TState;\n readonly publish: (\n nextState: TState | ((currentState: TState) => TState),\n ) => boolean;\n readonly setState: (\n updater: Partial<TState> | ((currentState: TState) => TState),\n ) => boolean;\n readonly subscribe: (listener: () => void) => () => void;\n}\n\nfunction freezeStoreSnapshot<TState>(state: TState): TState {\n if (\n process.env.NODE_ENV === \"production\" ||\n !state ||\n typeof state !== \"object\"\n ) {\n return state;\n }\n\n const seen = new WeakSet<object>();\n const freeze = (value: object): void => {\n if (seen.has(value) || Object.isFrozen(value)) return;\n seen.add(value);\n\n const prototype = Object.getPrototypeOf(value);\n if (\n Array.isArray(value) ||\n prototype === Object.prototype ||\n prototype === null\n ) {\n for (const key of Reflect.ownKeys(value)) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor && \"value\" in descriptor && descriptor.value !== null) {\n if (typeof descriptor.value === \"object\") freeze(descriptor.value);\n }\n }\n }\n\n Object.freeze(value);\n };\n\n freeze(state);\n return state;\n}\n\nexport interface CreateStoreOptions {\n freezeSnapshots?: boolean;\n}\n\nexport function createStore<TState = Record<string, unknown>>(\n initialState: TState,\n { freezeSnapshots = true }: CreateStoreOptions = {},\n): ExternalStore<TState> {\n const listeners = new Set<() => void>();\n const prepare = freezeSnapshots\n ? freezeStoreSnapshot\n : <T>(state: T): T => state;\n let snapshot = prepare(initialState);\n\n const publish = (\n nextStateOrUpdater: TState | ((currentState: TState) => TState),\n ): boolean => {\n const nextState =\n typeof nextStateOrUpdater === \"function\"\n ? (nextStateOrUpdater as (currentState: TState) => TState)(snapshot)\n : nextStateOrUpdater;\n if (Object.is(snapshot, nextState)) return false;\n snapshot = prepare(nextState);\n\n for (const listener of listeners) {\n try {\n listener();\n } catch (error) {\n report(\"CoreStore subscriber\", error, \"warn\");\n }\n }\n return true;\n };\n\n const setState = (\n updater: Partial<TState> | ((currentState: TState) => TState),\n ): boolean => {\n if (typeof updater === \"function\") {\n return publish(updater as (currentState: TState) => TState);\n }\n if (\n snapshot &&\n typeof snapshot === \"object\" &&\n updater &&\n typeof updater === \"object\"\n ) {\n return publish({ ...snapshot, ...updater });\n }\n return publish(updater as TState);\n };\n\n return Object.freeze({\n getSnapshot() {\n return snapshot;\n },\n publish,\n setState,\n subscribe(listener: () => void) {\n if (typeof listener !== \"function\") return () => {};\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n });\n}\n","import {\n DEFAULT_REGISTRY_SCOPE,\n DEFAULT_SOURCE,\n REGISTRY_SOURCE_RANK,\n} from \"./constants\";\nimport type { RegistryMetadata } from \"./types\";\nimport { isObject, trimToNull } from \"@/utils\";\n\nexport function hasOwnProperty(target: object, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(target, key);\n}\n\nexport function parseFiniteNumber(value: unknown): number | null {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\nexport function getValidString(\n value: unknown,\n fallback: string | null = null,\n): string | null {\n return trimToNull(value) ?? fallback;\n}\n\nexport function resolveInstanceId(value: unknown): string | null {\n return isObject(value) && typeof value.instanceId === \"string\"\n ? value.instanceId\n : null;\n}\n\nexport function getSourceRank(source: string): number {\n return REGISTRY_SOURCE_RANK[source] ?? 0;\n}\n\nexport function resolveRegisterInput(\n sourceOrOptions: unknown,\n optionsArg?: unknown,\n): { source: string; options: RegistryMetadata } {\n if (typeof sourceOrOptions === \"string\") {\n return {\n source: sourceOrOptions,\n options: isObject(optionsArg) ? optionsArg : {},\n };\n }\n if (isObject(sourceOrOptions)) {\n return {\n source:\n typeof sourceOrOptions.source === \"string\"\n ? sourceOrOptions.source\n : DEFAULT_SOURCE,\n options: sourceOrOptions,\n };\n }\n return {\n source: DEFAULT_SOURCE,\n options: isObject(optionsArg) ? optionsArg : {},\n };\n}\n\nexport function resolveScope(\n options: RegistryMetadata | null | undefined,\n): string {\n return typeof options?.scope === \"string\" && options.scope.trim()\n ? options.scope.trim()\n : DEFAULT_REGISTRY_SCOPE;\n}\n\nexport function resolveUnregisterInput(sourceOrOptions: unknown): {\n instanceId: string | null;\n scope: string | null;\n source: string;\n} {\n if (typeof sourceOrOptions === \"string\") {\n return { instanceId: null, scope: null, source: sourceOrOptions };\n }\n if (isObject(sourceOrOptions)) {\n return {\n instanceId: resolveInstanceId(sourceOrOptions),\n scope:\n typeof sourceOrOptions.scope === \"string\" &&\n sourceOrOptions.scope.trim()\n ? sourceOrOptions.scope.trim()\n : null,\n source:\n typeof sourceOrOptions.source === \"string\"\n ? sourceOrOptions.source\n : DEFAULT_SOURCE,\n };\n }\n return { instanceId: null, scope: null, source: DEFAULT_SOURCE };\n}\n\nexport function mergeModuleConfigs<T extends object>(\n base: T,\n patch: Partial<T>,\n): T {\n const source = base as Record<string, unknown>;\n const changes = patch as Record<string, unknown>;\n const result: Record<string, unknown> = { ...source };\n Object.keys(changes).forEach((key) => {\n const baseVal = source[key];\n const patchVal = changes[key];\n if (\n baseVal &&\n typeof baseVal === \"object\" &&\n !Array.isArray(baseVal) &&\n patchVal &&\n typeof patchVal === \"object\" &&\n !Array.isArray(patchVal)\n ) {\n result[key] = { ...baseVal, ...patchVal };\n } else {\n result[key] = patchVal;\n }\n });\n return result as T;\n}\n","import {\n DEFAULT_SOURCE,\n REGISTRY_LIFECYCLE_VALUES,\n REGISTRY_LIFECYCLES,\n REGISTRY_METADATA_KEY_SET,\n REGISTRY_METADATA_KEYS,\n REGISTRY_VALIDATION_MODES,\n} from \"./constants\";\nimport { isObject, isPlainObject } from \"@/utils\";\nimport { getValidString, parseFiniteNumber } from \"./utils\";\nimport type {\n NormalizedRegistryMetadata,\n RegistryDefinitions,\n RegistryLifecycle,\n RegistryMetadata,\n RegistryValidationMode,\n ValidationResult,\n} from \"./types\";\n\nfunction resolveLifecycle(\n metadata: RegistryMetadata | null | undefined,\n fallback: RegistryLifecycle | null,\n): RegistryLifecycle | null {\n const lifecycle = metadata?.lifecycle ?? metadata?.cleanup;\n return lifecycle && REGISTRY_LIFECYCLE_VALUES.has(lifecycle)\n ? lifecycle\n : fallback;\n}\n\nexport function validateRegistryMetadata(metadata: unknown): ValidationResult {\n if (metadata === undefined || metadata === null)\n return { issues: [], valid: true };\n if (!isObject(metadata))\n return { issues: [\"registry metadata must be an object\"], valid: false };\n\n const issues: string[] = [];\n\n Object.keys(metadata).forEach((key) => {\n if (!REGISTRY_METADATA_KEY_SET.has(key))\n issues.push(`unknown registry metadata field: ${key}`);\n });\n\n if (metadata.source !== undefined && !getValidString(metadata.source))\n issues.push(\"source must be a non-empty string\");\n if (metadata.instanceId !== undefined && !getValidString(metadata.instanceId))\n issues.push(\"instanceId must be a non-empty string\");\n if (metadata.scope !== undefined && !getValidString(metadata.scope))\n issues.push(\"scope must be a non-empty string\");\n if (\n metadata.priority !== undefined &&\n parseFiniteNumber(metadata.priority) === null\n )\n issues.push(\"priority must be a finite number\");\n\n if (metadata.cleanupDelayMs !== undefined) {\n const delay = parseFiniteNumber(metadata.cleanupDelayMs);\n if (delay === null || delay < 0)\n issues.push(\"cleanupDelayMs must be a non-negative finite number\");\n }\n\n const lifecycle = metadata.lifecycle ?? metadata.cleanup;\n if (\n lifecycle !== undefined &&\n !REGISTRY_LIFECYCLE_VALUES.has(String(lifecycle))\n ) {\n issues.push(\n `lifecycle must be one of: ${[...REGISTRY_LIFECYCLE_VALUES].join(\", \")}`,\n );\n }\n\n if (\n metadata.validation !== undefined &&\n !Object.values<unknown>(REGISTRY_VALIDATION_MODES).includes(\n metadata.validation,\n )\n ) {\n issues.push(\n `validation must be one of: ${Object.values(REGISTRY_VALIDATION_MODES).join(\", \")}`,\n );\n }\n\n return { issues, valid: issues.length === 0 };\n}\n\nexport function validateRegistryKey(\n type: string,\n key: unknown,\n definitions: RegistryDefinitions,\n): ValidationResult {\n const definition = definitions.get(type);\n const issues: string[] = [];\n\n if (!definition) issues.push(`unknown registry type: ${String(type)}`);\n if (!getValidString(key))\n return {\n issues: [...issues, \"key must be a non-empty string\"],\n valid: false,\n };\n\n const normalizedKey = String(key).trim();\n\n if (definition?.keyPolicy === \"singleton\") {\n const expectedKey = definition.singletonKey;\n if (expectedKey && normalizedKey !== expectedKey)\n issues.push(`${type} key must be ${expectedKey}`);\n } else if (definition?.keyPolicy === \"path\") {\n if (!normalizedKey.startsWith(\"/\"))\n issues.push(`${type} key must be an absolute path`);\n } else if (definition?.keyPolicy === \"route\") {\n if (\n !normalizedKey.startsWith(\"/\") &&\n !definition.reservedKeys?.includes(normalizedKey)\n ) {\n issues.push(`${type} key must be a route path or a reserved route key`);\n }\n }\n\n return { issues, valid: issues.length === 0 };\n}\n\nexport function validateRegistryValue(\n type: string,\n key: unknown,\n value: unknown,\n definitions: RegistryDefinitions,\n): ValidationResult {\n const definition = definitions.get(type);\n const issues = [...validateRegistryKey(type, key, definitions).issues];\n const valueKind = definition?.valueKind ?? \"object\";\n\n if (definition && valueKind === \"object\" && !isPlainObject(value)) {\n issues.push(`${type} values must be plain objects`);\n }\n if (\n definition &&\n valueKind === \"component\" &&\n typeof value !== \"function\" &&\n !isPlainObject(value)\n ) {\n issues.push(\n `${type} values must be component functions or component objects`,\n );\n }\n\n const validation = definition?.validate?.(value);\n if (validation && !validation.valid && Array.isArray(validation.issues)) {\n issues.push(...validation.issues);\n }\n\n return { issues, valid: issues.length === 0 };\n}\n\nexport function normalizeRegistryMetadata(\n metadata: unknown,\n {\n defaultCleanupDelayMs = null,\n defaultLifecycle = null,\n defaultSource = DEFAULT_SOURCE,\n }: {\n defaultCleanupDelayMs?: number | null;\n defaultLifecycle?: RegistryLifecycle | null;\n defaultSource?: string;\n } = {},\n): NormalizedRegistryMetadata {\n const registryMeta = isObject(metadata) ? metadata : {};\n\n const normalizedDefaultDelay = parseFiniteNumber(defaultCleanupDelayMs);\n const fallbackCleanupDelayMs =\n normalizedDefaultDelay !== null && normalizedDefaultDelay >= 0\n ? normalizedDefaultDelay\n : null;\n const fallbackLifecycle =\n defaultLifecycle && REGISTRY_LIFECYCLE_VALUES.has(defaultLifecycle)\n ? defaultLifecycle\n : null;\n\n const source =\n getValidString(registryMeta.source) ||\n getValidString(defaultSource, DEFAULT_SOURCE) ||\n DEFAULT_SOURCE;\n const scope = getValidString(registryMeta.scope);\n const priority = parseFiniteNumber(registryMeta.priority);\n const lifecycle = resolveLifecycle(registryMeta, fallbackLifecycle);\n const validation = isValidationMode(registryMeta.validation)\n ? registryMeta.validation\n : null;\n\n const cleanupDelayCandidate = parseFiniteNumber(registryMeta.cleanupDelayMs);\n let cleanupDelayMs =\n cleanupDelayCandidate !== null && cleanupDelayCandidate >= 0\n ? cleanupDelayCandidate\n : fallbackCleanupDelayMs;\n\n if (lifecycle === REGISTRY_LIFECYCLES.IMMEDIATE) {\n cleanupDelayMs = 0;\n } else if (\n (lifecycle === REGISTRY_LIFECYCLES.GRACEFUL ||\n lifecycle === REGISTRY_LIFECYCLES.ROUTE) &&\n cleanupDelayMs === null\n ) {\n cleanupDelayMs = fallbackCleanupDelayMs;\n }\n\n return {\n cleanupDelayMs,\n lifecycle,\n priority,\n registerOptions: {\n ...(priority !== null && { priority }),\n ...(validation === REGISTRY_VALIDATION_MODES.STRICT && { validation }),\n ...(scope && { scope }),\n },\n source,\n ...(scope && { scope }),\n ...(validation && { validation }),\n };\n}\n\nfunction isValidationMode(value: unknown): value is RegistryValidationMode {\n return Object.values<unknown>(REGISTRY_VALIDATION_MODES).includes(value);\n}\n\nexport function pickRegistryMetadata(options: unknown): RegistryMetadata {\n if (!isObject(options)) return {};\n return Object.fromEntries(\n REGISTRY_METADATA_KEYS.filter((key) => options[key] !== undefined).map(\n (key) => [key, options[key]],\n ),\n );\n}\n","import {\n DEFAULT_REGISTRY_SCOPE,\n DEFAULT_SOURCE,\n REGISTRY_SOURCE_PRIORITY,\n} from \"./constants\";\nimport { isObject, shallowEqual } from \"@/utils\";\nimport {\n getSourceRank,\n hasOwnProperty,\n resolveInstanceId,\n resolveRegisterInput,\n resolveScope,\n resolveUnregisterInput,\n} from \"./utils\";\nimport { validateRegistryKey } from \"./schema\";\nimport type {\n RegisterOperation,\n RegistryDefinitions,\n RegistryEntryRecords,\n RegistryMetadata,\n RegistryOperation,\n RegistrySourceOrOptions,\n RegistryState,\n SourceRecord,\n UnregisterOperation,\n} from \"./types\";\n\ntype MaybeEntry = RegistryEntryRecords | null | undefined;\n\nfunction createInitialRegistriesFor(\n definitions: RegistryDefinitions,\n): RegistryState {\n return Object.fromEntries(\n Array.from(definitions.keys(), (type) => [type, {}]),\n );\n}\n\nfunction buildSourceRecord({\n source,\n value,\n instanceId = null,\n priority,\n timestamp,\n sequence,\n scope = DEFAULT_REGISTRY_SCOPE,\n}: {\n source: string;\n value: unknown;\n instanceId?: string | null;\n priority: number;\n timestamp: number;\n sequence?: number;\n scope?: string;\n}): SourceRecord {\n return {\n updatedAt: timestamp,\n sequence: Number.isFinite(sequence) ? (sequence as number) : timestamp,\n instanceId: typeof instanceId === \"string\" ? instanceId : null,\n priority,\n value,\n source,\n scope,\n };\n}\n\nexport function createRecordKey(\n source: string,\n instanceId: string | null = null,\n scope: string = DEFAULT_REGISTRY_SCOPE,\n): string {\n if (scope === DEFAULT_REGISTRY_SCOPE) {\n if (typeof instanceId === \"string\" && instanceId.length > 0) {\n return `instance:${JSON.stringify([source, instanceId])}`;\n }\n return `source:${JSON.stringify(source)}`;\n }\n if (typeof instanceId === \"string\" && instanceId.length > 0) {\n return `instance:${JSON.stringify([scope, source, instanceId])}`;\n }\n return `source:${JSON.stringify([scope, source])}`;\n}\n\nfunction getSourceRecords(\n entry: MaybeEntry,\n source: string,\n scope: string | null = null,\n): { recordKey: string; record: SourceRecord | null }[] {\n if (!entry) return [];\n return Object.entries(entry)\n .map(([recordKey, rawRecord]) => ({\n recordKey,\n record: toSourceRecord(rawRecord, recordKey),\n }))\n .filter(\n ({ record }) =>\n record?.source === source && (scope === null || record.scope === scope),\n );\n}\n\nfunction getSourceRecord(\n entry: MaybeEntry,\n source: string,\n instanceId: string | null = null,\n scope: string = DEFAULT_REGISTRY_SCOPE,\n): SourceRecord | null {\n const recordKey = createRecordKey(source, instanceId, scope);\n return toSourceRecord(entry?.[recordKey], source);\n}\n\nfunction resolveRecordPriority(options: unknown, source: string): number {\n if (isObject(options) && hasOwnProperty(options, \"priority\")) {\n const parsedPriority = Number(options.priority);\n if (Number.isFinite(parsedPriority)) return parsedPriority;\n }\n return REGISTRY_SOURCE_PRIORITY[source] ?? 0;\n}\n\nfunction toSourceRecord(\n rawValue: unknown,\n source: string = DEFAULT_SOURCE,\n): SourceRecord | null {\n if (rawValue === undefined) return null;\n const rawRecord = rawValue as Record<string, unknown>;\n\n const isWrappedRecord =\n isObject(rawValue) &&\n hasOwnProperty(rawRecord, \"value\") &&\n hasOwnProperty(rawRecord, \"updatedAt\") &&\n hasOwnProperty(rawRecord, \"priority\") &&\n hasOwnProperty(rawRecord, \"source\");\n\n if (isWrappedRecord) {\n const parsedPriority = Number(rawRecord.priority);\n return {\n updatedAt: Number(rawRecord.updatedAt) || 0,\n sequence: Number(rawRecord.sequence) || Number(rawRecord.updatedAt) || 0,\n instanceId:\n typeof rawRecord.instanceId === \"string\" ? rawRecord.instanceId : null,\n priority: Number.isFinite(parsedPriority)\n ? parsedPriority\n : (REGISTRY_SOURCE_PRIORITY[source] ?? 0),\n source: typeof rawRecord.source === \"string\" ? rawRecord.source : source,\n scope:\n typeof rawRecord.scope === \"string\"\n ? rawRecord.scope\n : DEFAULT_REGISTRY_SCOPE,\n value: rawRecord.value,\n };\n }\n\n return {\n updatedAt: 0,\n sequence: 0,\n instanceId: null,\n priority: REGISTRY_SOURCE_PRIORITY[source] ?? 0,\n source,\n scope: DEFAULT_REGISTRY_SCOPE,\n value: rawValue,\n };\n}\n\nfunction compareRecords(a: SourceRecord, b: SourceRecord): number {\n if (a.priority !== b.priority) return a.priority - b.priority;\n const rankDiff = getSourceRank(a.source) - getSourceRank(b.source);\n if (rankDiff !== 0) return rankDiff;\n return (a.sequence ?? a.updatedAt) - (b.sequence ?? b.updatedAt);\n}\n\nfunction recordsHaveSameValue(\n prevRecord: SourceRecord | null,\n nextRecord: SourceRecord,\n): boolean {\n if (Object.is(prevRecord?.value, nextRecord?.value)) return true;\n if (isObject(prevRecord?.value) && isObject(nextRecord?.value)) {\n return shallowEqual(prevRecord!.value, nextRecord.value);\n }\n return false;\n}\n\nfunction hasRecordChanged(\n prevRecord: SourceRecord | null,\n nextRecord: SourceRecord,\n): boolean {\n if (!prevRecord) return true;\n return (\n prevRecord.priority !== nextRecord.priority ||\n prevRecord.source !== nextRecord.source ||\n prevRecord.instanceId !== nextRecord.instanceId ||\n prevRecord.scope !== nextRecord.scope ||\n !recordsHaveSameValue(prevRecord, nextRecord)\n );\n}\n\nfunction hasAnySourceRecord(entry: MaybeEntry): boolean {\n return Object.values(entry || {}).some(\n (rawRecord) => rawRecord !== undefined,\n );\n}\n\nfunction setSourceRecord(\n state: RegistryState,\n type: string,\n key: string,\n source: string,\n record: SourceRecord,\n): RegistryState {\n const typeRegistry = state[type] || {};\n const currentEntry = typeRegistry[key] || {};\n const recordKey = createRecordKey(source, record.instanceId, record.scope);\n const prevRecord = toSourceRecord(currentEntry[recordKey], source);\n\n if (!hasRecordChanged(prevRecord, record)) {\n return state;\n }\n\n return {\n ...state,\n [type]: {\n ...typeRegistry,\n [key]: {\n ...currentEntry,\n [recordKey]: record,\n },\n },\n };\n}\n\nfunction removeSourceRecord(\n state: RegistryState,\n type: string,\n key: string,\n source: string,\n instanceId: string | null = null,\n scope: string | null = null,\n): RegistryState {\n const typeRegistry = state[type];\n const currentEntry = typeRegistry?.[key];\n if (!typeRegistry || !currentEntry) return state;\n\n let activeRecords: { recordKey: string; record: SourceRecord }[] = [];\n\n if (\n typeof instanceId === \"string\" &&\n instanceId.length > 0 &&\n scope !== null\n ) {\n const safeScope = scope || DEFAULT_REGISTRY_SCOPE;\n const recordKey = createRecordKey(source, instanceId, safeScope);\n const record = getSourceRecord(currentEntry, source, instanceId, safeScope);\n\n if (record) activeRecords.push({ recordKey, record });\n } else {\n activeRecords = getSourceRecords(currentEntry, source, scope)\n .filter(({ record }) => !instanceId || record?.instanceId === instanceId)\n .filter((entry): entry is { recordKey: string; record: SourceRecord } =>\n Boolean(entry.record),\n );\n }\n\n if (activeRecords.length === 0) return state;\n\n const nextEntry = { ...currentEntry };\n activeRecords.forEach(({ recordKey }) => {\n delete nextEntry[recordKey];\n });\n\n if (!hasAnySourceRecord(nextEntry)) {\n const nextTypeRegistry = { ...typeRegistry };\n delete nextTypeRegistry[key];\n return { ...state, [type]: nextTypeRegistry };\n }\n\n return {\n ...state,\n [type]: { ...typeRegistry, [key]: nextEntry },\n };\n}\n\nfunction resolveEntryValueFor(\n definitions: RegistryDefinitions,\n type: string,\n entry: MaybeEntry,\n scope: string | null = null,\n): unknown {\n if (!entry) return undefined;\n\n const activeRecords = Object.entries(entry)\n .map(([source, rawRecord]) => toSourceRecord(rawRecord, source))\n .filter(\n (record): record is SourceRecord =>\n record !== null && (scope === null || record.scope === scope),\n );\n\n if (activeRecords.length === 0) return undefined;\n\n const merge = definitions.get(type)?.merge;\n if (merge) {\n const sortedRecords = [...activeRecords].sort(compareRecords);\n const mergeCandidate = sortedRecords.every((record) =>\n isObject(record.value),\n );\n\n if (mergeCandidate) {\n const values = sortedRecords.map(\n (record) => record.value as Record<string, unknown>,\n );\n return merge(values);\n }\n return sortedRecords[sortedRecords.length - 1].value;\n }\n\n return activeRecords.reduce((winner, current) =>\n compareRecords(current, winner) > 0 ? current : winner,\n ).value;\n}\n\nfunction createResolverCacheFor(\n definitions: RegistryDefinitions,\n): (type: string, entry: MaybeEntry, scope?: string | null) => unknown {\n const entryCache = new WeakMap<object, Map<string, unknown>>();\n\n return (type: string, entry: MaybeEntry, scope: string | null = null) => {\n if (!entry || typeof entry !== \"object\") {\n return resolveEntryValueFor(definitions, type, entry, scope);\n }\n\n let typeCache = entryCache.get(entry);\n if (!typeCache) {\n typeCache = new Map();\n entryCache.set(entry, typeCache);\n }\n\n const cacheKey = scope || \"default\";\n\n if (typeCache.has(cacheKey)) return typeCache.get(cacheKey);\n\n const value = resolveEntryValueFor(definitions, type, entry, scope);\n typeCache.set(cacheKey, value);\n return value;\n };\n}\n\nexport function createRegisterOperation(\n type: string,\n key: string,\n item: unknown,\n sourceOrOptions: RegistrySourceOrOptions | undefined,\n optionsArg: RegistryMetadata | undefined,\n timestamp: number,\n sequence: number = timestamp,\n): RegisterOperation {\n const { source, options } = resolveRegisterInput(sourceOrOptions, optionsArg);\n const instanceId = resolveInstanceId(options);\n const scope = resolveScope(options);\n\n return {\n kind: \"register\",\n validation: options.validation,\n source,\n scope,\n record: buildSourceRecord({\n source,\n value: item,\n instanceId,\n priority: resolveRecordPriority(options, source),\n scope,\n timestamp,\n sequence,\n }),\n instanceId,\n type,\n key: typeof key === \"string\" ? key.trim() : key,\n };\n}\n\nexport function createUnregisterOperation(\n type: string,\n key: string,\n sourceOrOptions: RegistrySourceOrOptions | undefined,\n): UnregisterOperation {\n const { scope, source, instanceId } = resolveUnregisterInput(sourceOrOptions);\n return {\n kind: \"unregister\",\n instanceId,\n scope,\n source,\n type,\n key: typeof key === \"string\" ? key.trim() : key,\n };\n}\n\nfunction isValidRegistryTargetFor(\n definitions: RegistryDefinitions,\n type: string,\n key: unknown,\n): boolean {\n return validateRegistryKey(type, key, definitions).valid;\n}\n\nfunction applyOperationFor(\n definitions: RegistryDefinitions,\n state: RegistryState,\n operation: RegistryOperation,\n): RegistryState {\n if (!isValidRegistryTargetFor(definitions, operation?.type, operation?.key))\n return state;\n\n if (operation.kind === \"register\") {\n return setSourceRecord(\n state,\n operation.type,\n operation.key,\n operation.source,\n operation.record,\n );\n }\n if (operation.kind === \"unregister\") {\n return removeSourceRecord(\n state,\n operation.type,\n operation.key,\n operation.source,\n operation.instanceId,\n operation.scope,\n );\n }\n return state;\n}\n\nfunction hasOperationEffectFor(\n definitions: RegistryDefinitions,\n state: RegistryState,\n operation: RegistryOperation,\n): boolean {\n if (!isValidRegistryTargetFor(definitions, operation?.type, operation?.key))\n return false;\n\n if (operation.kind === \"register\") {\n const currentRecord = getSourceRecord(\n state[operation.type]?.[operation.key],\n operation.source,\n operation.instanceId,\n operation.scope,\n );\n return hasRecordChanged(currentRecord, operation.record);\n }\n\n if (operation.kind === \"unregister\") {\n const entry = state[operation.type]?.[operation.key];\n if (\n typeof operation.instanceId === \"string\" &&\n operation.instanceId.length > 0\n ) {\n return operation.scope === null\n ? getSourceRecords(entry, operation.source).some(\n ({ record }) => record?.instanceId === operation.instanceId,\n )\n : Boolean(\n getSourceRecord(\n entry,\n operation.source,\n operation.instanceId,\n operation.scope,\n ),\n );\n }\n return (\n getSourceRecords(entry, operation.source, operation.scope).length > 0\n );\n }\n return false;\n}\n\nfunction resolveEffectiveOperationsFor(\n definitions: RegistryDefinitions,\n state: RegistryState,\n operations: RegistryOperation[],\n): { effectiveOperations: RegistryOperation[]; nextState: RegistryState } {\n const effectiveOperations: RegistryOperation[] = [];\n let nextState = state;\n\n operations.forEach((operation) => {\n if (!hasOperationEffectFor(definitions, nextState, operation)) return;\n effectiveOperations.push(operation);\n nextState = applyOperationFor(definitions, nextState, operation);\n });\n\n return { effectiveOperations, nextState };\n}\n\nexport function createRegistryOperations(definitions: RegistryDefinitions) {\n return Object.freeze({\n applyOperation: (state: RegistryState, operation: RegistryOperation) =>\n applyOperationFor(definitions, state, operation),\n createInitialRegistries: () => createInitialRegistriesFor(definitions),\n createResolverCache: () => createResolverCacheFor(definitions),\n hasOperationEffect: (state: RegistryState, operation: RegistryOperation) =>\n hasOperationEffectFor(definitions, state, operation),\n isRegistryType: (type: string) => definitions.get(type) !== undefined,\n isValidRegistryTarget: (type: string, key: unknown) =>\n isValidRegistryTargetFor(definitions, type, key),\n resolveEffectiveOperations: (\n state: RegistryState,\n operations: RegistryOperation[],\n ) => resolveEffectiveOperationsFor(definitions, state, operations),\n resolveEntryValue: (\n type: string,\n entry: MaybeEntry,\n scope: string | null = null,\n ) => resolveEntryValueFor(definitions, type, entry, scope),\n });\n}\n\nexport type RegistryOperations = ReturnType<typeof createRegistryOperations>;\n","\"use client\";\n\nimport { use, type Context } from \"react\";\n\nexport function useRequiredContext<T>(\n context: Context<T | null>,\n hookName: string,\n providerName: string,\n): T {\n const value = use(context);\n if (value === null) {\n throw new Error(`${hookName} must be used within ${providerName}`);\n }\n return value;\n}\n","\"use client\";\n\nimport { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { type ExternalStore } from \"../utils\";\n\nexport function useStore<TState, TSlice = TState>(\n store: ExternalStore<TState>,\n selector: (state: TState) => TSlice = (state: TState) =>\n state as unknown as TSlice,\n isEqual: (a: TSlice, b: TSlice) => boolean = Object.is,\n): TSlice {\n const cacheRef = useRef<{\n isEqual: ((a: TSlice, b: TSlice) => boolean) | null;\n selected: TSlice | undefined;\n selector: ((state: TState) => TSlice) | null;\n snapshot: TState | null;\n }>({\n isEqual: null,\n selected: undefined,\n selector: null,\n snapshot: null,\n });\n\n const getSelectedSnapshot = useCallback(() => {\n const snapshot = store.getSnapshot();\n const cache = cacheRef.current;\n if (\n cache.snapshot === snapshot &&\n cache.selector === selector &&\n cache.isEqual === isEqual\n ) {\n return cache.selected as TSlice;\n }\n\n const selected = selector(snapshot);\n if (\n cache.snapshot !== null &&\n cache.isEqual === isEqual &&\n isEqual(cache.selected as TSlice, selected)\n ) {\n cache.snapshot = snapshot;\n cache.selector = selector;\n return cache.selected as TSlice;\n }\n\n cacheRef.current = {\n isEqual,\n selected,\n selector,\n snapshot,\n };\n return selected;\n }, [isEqual, selector, store]);\n\n return useSyncExternalStore(\n store.subscribe,\n getSelectedSnapshot,\n getSelectedSnapshot,\n );\n}\n","\"use client\";\n\nimport { useEffect, useLayoutEffect } from \"react\";\nimport { isBrowser } from \"../utils\";\n\nexport const useIsomorphicLayoutEffect = isBrowser\n ? useLayoutEffect\n : useEffect;\n","\"use client\";\n\nimport type {\n RegistrationHandle,\n RegistryMetadata,\n RegistryTransactionQueue,\n RegistryTransactionRef,\n RegistryTransactionResult,\n} from \"./types\";\n\ninterface QueuedOperation {\n key: string;\n options: RegistryMetadata;\n type: string;\n item?: unknown;\n unregister?: true;\n}\n\ntype TransactionStatus = \"open\" | \"committed\" | \"rolled-back\";\n\nexport interface RegistryTransaction extends RegistryTransactionQueue {\n commit: () => RegistryTransactionResult;\n readonly operations: readonly QueuedOperation[];\n rollback: (reason?: string) => RegistryTransactionRef;\n run: (\n executor: (queue: RegistryTransactionQueue) => void,\n ) => RegistryTransactionResult;\n readonly status: TransactionStatus;\n traceId: string;\n}\n\ninterface TransactionBatchQueue {\n register: (\n type: string,\n key: string,\n value: unknown,\n options?: RegistryMetadata,\n ) => RegistrationHandle;\n unregister: (type: string, key: string, options?: RegistryMetadata) => void;\n}\n\ninterface TransactionStore {\n batch: (executor: (queue: TransactionBatchQueue) => void) => unknown;\n}\n\nexport function createRegistryTransaction(\n store: TransactionStore,\n metadata: RegistryMetadata & { source?: string; traceId?: string } = {},\n): RegistryTransaction {\n const operations: QueuedOperation[] = [];\n let status: TransactionStatus = \"open\";\n const traceId =\n metadata.traceId ||\n `tx-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;\n\n const ensureOpen = () => status === \"open\";\n\n const mergeOptions = (\n options: RegistryMetadata | undefined,\n ): RegistryMetadata => {\n const baseOpts = options && typeof options === \"object\" ? options : {};\n const needsSource = metadata.source && !baseOpts.source;\n const needsScope = metadata.scope && !baseOpts.scope;\n\n if (!needsSource && !needsScope) return baseOpts;\n\n return {\n ...baseOpts,\n ...(needsSource ? { source: metadata.source } : {}),\n ...(needsScope ? { scope: metadata.scope } : {}),\n };\n };\n\n const register: RegistryTransactionQueue[\"register\"] = (\n type,\n key,\n value,\n sourceOrOptions,\n optionsArg,\n ) => {\n if (!ensureOpen()) return { index: -1, status, traceId };\n\n const options =\n typeof sourceOrOptions === \"string\"\n ? mergeOptions({ ...(optionsArg || {}), source: sourceOrOptions })\n : mergeOptions(sourceOrOptions as RegistryMetadata | undefined);\n\n operations.push({ key, item: value, options, type });\n return { index: operations.length - 1, status: \"queued\", traceId };\n };\n\n const unregister: RegistryTransactionQueue[\"unregister\"] = (\n type,\n key,\n sourceOrOptions,\n ) => {\n if (!ensureOpen()) return { index: -1, status, traceId };\n\n const options = mergeOptions(\n typeof sourceOrOptions === \"string\"\n ? { source: sourceOrOptions }\n : (sourceOrOptions as RegistryMetadata | undefined),\n );\n\n operations.push({ key, options, type, unregister: true });\n return { index: operations.length - 1, status: \"queued\", traceId };\n };\n\n const rollback = (_reason = \"manual\"): RegistryTransactionRef => {\n if (!ensureOpen()) return { index: -1, status, traceId };\n\n status = \"rolled-back\";\n operations.length = 0;\n return { index: -1, status, traceId };\n };\n\n const commit = (): RegistryTransactionResult => {\n if (!ensureOpen()) return { status, traceId };\n\n status = \"committed\";\n const result = store.batch((queue) => {\n operations.forEach((op) => {\n if (op.unregister) queue.unregister(op.type, op.key, op.options);\n else queue.register(op.type, op.key, op.item, op.options);\n });\n });\n\n const applied =\n typeof result === \"number\" && Number.isFinite(result) ? result : 0;\n return { applied, queued: operations.length, status, traceId };\n };\n\n const run = (\n executor: (queue: RegistryTransactionQueue) => void,\n ): RegistryTransactionResult => {\n if (typeof executor !== \"function\") {\n rollback(\"invalid-executor\");\n return { status, traceId };\n }\n try {\n executor({ register, unregister });\n return commit();\n } catch (error) {\n rollback(error instanceof Error ? error.message : String(error));\n throw error;\n }\n };\n\n return {\n commit,\n get operations() {\n return operations.slice();\n },\n register,\n rollback,\n run,\n get status() {\n return status;\n },\n traceId,\n unregister,\n };\n}\n","import { isValidElement } from \"react\";\nimport {\n createRecordKey,\n createRegisterOperation,\n createRegistryOperations,\n createUnregisterOperation,\n type RegistryOperations,\n} from \"./operations\";\nimport {\n DEFAULT_SOURCE,\n REGISTRY_SOURCES,\n REGISTRY_VALIDATION_MODES,\n} from \"./constants\";\nimport {\n validateRegistryMetadata,\n validateRegistryValue,\n} from \"./schema\";\nimport { createRegistryTransaction } from \"./runtime\";\nimport type {\n AppRegistryEntry,\n RegisterOperation,\n RegistrationHandle,\n RegistryDefinitions,\n RegistryMetadata,\n RegistryOperation,\n RegistryQueue,\n RegistrySourceOrOptions,\n RegistryState,\n RegistryStore,\n RegistryTransactionQueue,\n} from \"./types\";\nimport { report } from \"@/utils\";\n\nexport type InitialRegistryEntries = readonly AppRegistryEntry[];\n\nconst NO_DEFINITIONS: RegistryDefinitions = new Map();\n\nfunction createNoopHandle(\n status: RegistrationHandle[\"status\"] = \"rejected\",\n reason = \"unknown\",\n): RegistrationHandle {\n const handle: RegistrationHandle = Object.assign(() => false, {\n active: false,\n dispose: () => false,\n instanceId: null,\n key: \"\",\n priority: 0,\n reason,\n source: \"\",\n status,\n type: \"\",\n update: (): RegistrationHandle => handle,\n updatedAt: 0,\n validation: \"warn\",\n });\n return handle;\n}\n\nconst NOOP_HANDLE: RegistrationHandle = createNoopHandle();\n\nfunction isNoopHandle(handle: RegistrationHandle | null | undefined): boolean {\n return (\n handle === NOOP_HANDLE ||\n handle?.status === \"rejected\" ||\n handle?.status === \"ignored\"\n );\n}\n\nfunction cloneRegistryValue<T>(\n value: T,\n seen = new WeakMap<object, unknown>(),\n): T {\n if (value === null || typeof value !== \"object\" || isValidElement(value)) {\n return value;\n }\n\n const prototype = Object.getPrototypeOf(value);\n const isPlainObject =\n !Array.isArray(value) &&\n (prototype === Object.prototype || prototype === null);\n\n if (!Array.isArray(value) && !isPlainObject) return value;\n if (seen.has(value)) return seen.get(value) as T;\n\n const source = value as Record<string, unknown>;\n const clone = (Array.isArray(value) ? [] : {}) as Record<string, unknown>;\n seen.set(value, clone);\n\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n clone[key] = cloneRegistryValue(source[key], seen);\n }\n }\n\n return clone as T;\n}\n\nfunction normalizeInitialEntries(entries: unknown): AppRegistryEntry[] {\n return (Array.isArray(entries) ? entries : []).filter(\n (entry): entry is AppRegistryEntry =>\n entry?.type && entry?.items && typeof entry.items === \"object\",\n );\n}\n\nfunction createInitialState(\n ops: RegistryOperations,\n definitions: RegistryDefinitions,\n entries: unknown,\n): RegistryState {\n const normalizedEntries = normalizeInitialEntries(entries);\n if (normalizedEntries.length === 0) return ops.createInitialRegistries();\n\n const timestamp = Date.now();\n let sequence = 0;\n let state = ops.createInitialRegistries();\n\n normalizedEntries.forEach((entry) => {\n const source = entry.source || REGISTRY_SOURCES.STATIC;\n const options: RegistryMetadata = {\n ...(entry.options || {}),\n instanceId:\n entry.instanceId || entry.options?.instanceId || \"registry-initial\",\n };\n\n Object.entries(entry.items).forEach(([key, value]) => {\n const validation = validateRegistration(\n definitions,\n entry.type,\n key,\n value,\n source,\n options,\n );\n if (!validation.valid) return;\n\n const operation = createRegisterOperation(\n entry.type,\n key,\n cloneRegistryValue(value),\n source,\n options,\n timestamp,\n ++sequence,\n );\n if (ops.hasOperationEffect(state, operation)) {\n state = ops.applyOperation(state, operation);\n }\n });\n });\n return state;\n}\n\nfunction notifyListeners(listeners: Set<() => void> | undefined): void {\n if (!listeners) return;\n for (const listener of listeners) {\n try {\n listener();\n } catch (error) {\n report(\"Registry listener\", error);\n }\n }\n}\n\nfunction getOrCreateKeyListeners(\n listenersByType: Map<string, Map<string | null, Set<() => void>>>,\n type: string,\n key: string | null,\n): Set<() => void> {\n let listeners = listenersByType.get(type);\n if (!listeners) {\n listeners = new Map();\n listenersByType.set(type, listeners);\n }\n let keyListeners = listeners.get(key);\n if (!keyListeners) {\n keyListeners = new Set();\n listeners.set(key, keyListeners);\n }\n return keyListeners;\n}\n\nfunction resolveRegistrationOptions(\n sourceOrOptions: RegistrySourceOrOptions | undefined,\n optionsArg?: RegistryMetadata,\n): RegistryMetadata {\n if (sourceOrOptions && typeof sourceOrOptions === \"object\")\n return sourceOrOptions;\n return optionsArg && typeof optionsArg === \"object\" ? optionsArg : {};\n}\n\nfunction validateRegistration(\n definitions: RegistryDefinitions,\n type: string,\n key: string,\n value: unknown,\n sourceOrOptions: RegistrySourceOrOptions | undefined,\n optionsArg?: RegistryMetadata,\n): { issues?: string[]; reason?: string; valid: boolean } {\n const options = resolveRegistrationOptions(sourceOrOptions, optionsArg);\n const metadataValidation = validateRegistryMetadata(options);\n const isStrict = options.validation === REGISTRY_VALIDATION_MODES.STRICT;\n\n if (!metadataValidation.valid && isStrict) {\n return {\n issues: metadataValidation.issues,\n reason: \"invalid-metadata\",\n valid: false,\n };\n }\n\n const validation = validateRegistryValue(type, key, value, definitions);\n if (validation.valid) return { valid: true };\n\n if (!isStrict) {\n report(`Registry ${type} \"${key}\" is invalid`, validation.issues, \"warn\");\n }\n\n return {\n issues: validation.issues,\n reason: \"invalid-value\",\n valid: !isStrict,\n };\n}\n\nfunction createRegistrationHandle(\n store: RegistryStore,\n operation: RegisterOperation,\n): RegistrationHandle {\n let disposed = false;\n const dispose = (reason = \"manual\") => {\n if (disposed) return false;\n disposed = true;\n return store.dispose(operation, reason);\n };\n\n const handle = ((reason?: string) => dispose(reason)) as RegistrationHandle;\n handle.dispose = dispose;\n\n handle.update = (value: unknown, options: RegistryMetadata = {}) => {\n if (disposed || !store.isCurrent(operation)) return NOOP_HANDLE;\n const nextHandle = store.register(\n operation.type,\n operation.key,\n value,\n operation.source,\n {\n ...(typeof options === \"object\" ? options : {}),\n instanceId: operation.instanceId,\n priority: operation.record.priority,\n ...(operation.scope ? { scope: operation.scope } : {}),\n ...(operation.validation ? { validation: operation.validation } : {}),\n },\n );\n if (isNoopHandle(nextHandle)) return handle;\n disposed = true;\n return nextHandle;\n };\n\n Object.defineProperties(handle, {\n active: {\n enumerable: true,\n get: () => !disposed && store.isCurrent(operation),\n },\n instanceId: { enumerable: true, value: operation.instanceId },\n key: { enumerable: true, value: operation.key },\n priority: { enumerable: true, value: operation.record.priority },\n source: { enumerable: true, value: operation.source },\n status: {\n enumerable: true,\n get: () =>\n disposed\n ? \"disposed\"\n : store.isCurrent(operation)\n ? \"active\"\n : \"superseded\",\n },\n type: { enumerable: true, value: operation.type },\n updatedAt: { enumerable: true, value: operation.record.updatedAt },\n validation: { enumerable: true, value: operation.validation || \"warn\" },\n });\n\n return handle as RegistrationHandle;\n}\n\nfunction prepareRegisterOperation(\n ops: RegistryOperations,\n definitions: RegistryDefinitions,\n type: string,\n key: string,\n item: unknown,\n sourceOrOptions: RegistrySourceOrOptions,\n optionsArg: RegistryMetadata,\n timestamp: number,\n sequence: number,\n): { operation: RegisterOperation } | { rejected: RegistrationHandle } {\n if (!ops.isValidRegistryTarget(type, key)) {\n return { rejected: createNoopHandle(\"rejected\", \"invalid-target\") };\n }\n\n const validation = validateRegistration(\n definitions,\n type,\n key,\n item,\n sourceOrOptions,\n optionsArg,\n );\n if (!validation.valid) {\n return { rejected: createNoopHandle(\"rejected\", validation.reason) };\n }\n\n return {\n operation: createRegisterOperation(\n type,\n key,\n cloneRegistryValue(item),\n sourceOrOptions,\n optionsArg,\n timestamp,\n sequence,\n ),\n };\n}\n\nexport function createRegistryStore(\n initialEntries: InitialRegistryEntries = [],\n definitions: RegistryDefinitions = NO_DEFINITIONS,\n): RegistryStore {\n const ops = createRegistryOperations(definitions);\n let registries = createInitialState(ops, definitions, initialEntries);\n let sequence = normalizeInitialEntries(initialEntries).reduce(\n (count, entry) => count + Object.keys(entry.items).length,\n 0,\n );\n\n const listenersByType = new Map<\n string,\n Map<string | null, Set<() => void>>\n >();\n const entrySnapshots = new Map<\n string,\n {\n typeRegistry: RegistryState[string];\n value: Readonly<Record<string, unknown>>;\n }\n >();\n const valueSnapshots = new Map<\n string,\n Map<\n string,\n { entry: RegistryState[string][string] | undefined; value: unknown }\n >\n >();\n const resolveCachedValue = ops.createResolverCache();\n\n const subscribe = (\n type: string,\n key: string | null | undefined,\n listener: () => void,\n ) => {\n const keyListeners = getOrCreateKeyListeners(\n listenersByType,\n type,\n key ?? null,\n );\n keyListeners.add(listener);\n\n return () => {\n keyListeners.delete(listener);\n if (keyListeners.size > 0) return;\n\n const listeners = listenersByType.get(type);\n if (listeners) {\n listeners.delete(key ?? null);\n if (listeners.size === 0) listenersByType.delete(type);\n }\n };\n };\n\n const commit = (\n nextState: RegistryState,\n operations: RegistryOperation[] = [],\n ) => {\n if (registries === nextState) return;\n const previousState = registries;\n registries = nextState;\n\n const changedKeysByType = new Map<string, Set<string>>();\n for (const operation of operations) {\n if (!ops.isValidRegistryTarget(operation?.type, operation?.key)) continue;\n let keys = changedKeysByType.get(operation.type);\n if (!keys) {\n keys = new Set();\n changedKeysByType.set(operation.type, keys);\n }\n keys.add(operation.key);\n }\n\n for (const [type, changedKeys] of changedKeysByType) {\n const previousRegistry = previousState[type] || {};\n const nextRegistry = nextState[type] || {};\n const typeListeners = listenersByType.get(type);\n let typeChanged = false;\n\n if (!typeListeners) continue;\n\n for (const key of changedKeys) {\n if (previousRegistry[key] === nextRegistry[key]) continue;\n typeChanged = true;\n notifyListeners(typeListeners.get(key));\n }\n\n if (typeChanged) {\n notifyListeners(typeListeners.get(null));\n }\n }\n };\n\n const isCurrent = (operation: RegisterOperation) => {\n const entry = registries[operation.type]?.[operation.key];\n const recordKey = createRecordKey(\n operation.source,\n operation.instanceId,\n operation.scope,\n );\n return entry?.[recordKey] === operation.record;\n };\n\n const dispose = (\n operation: RegisterOperation,\n _reason = \"manual\",\n ): boolean => {\n if (!isCurrent(operation)) return false;\n const unregisterOperation = createUnregisterOperation(\n operation.type,\n operation.key,\n {\n source: operation.source,\n instanceId: operation.instanceId,\n scope: operation.scope,\n },\n );\n\n if (!ops.hasOperationEffect(registries, unregisterOperation)) return false;\n commit(ops.applyOperation(registries, unregisterOperation), [\n unregisterOperation,\n ]);\n return true;\n };\n\n const register = (\n type: string,\n key: string,\n item: unknown,\n sourceOrOptions: RegistrySourceOrOptions = DEFAULT_SOURCE,\n optionsArg: RegistryMetadata = {},\n ): RegistrationHandle => {\n const prepared = prepareRegisterOperation(\n ops,\n definitions,\n type,\n key,\n item,\n sourceOrOptions,\n optionsArg,\n Date.now(),\n ++sequence,\n );\n if (\"rejected\" in prepared) return prepared.rejected;\n\n const { operation } = prepared;\n if (!ops.hasOperationEffect(registries, operation)) {\n return createNoopHandle(\"ignored\", \"unchanged\");\n }\n\n commit(ops.applyOperation(registries, operation), [operation]);\n return createRegistrationHandle(store, operation);\n };\n\n const unregister = (\n type: string,\n key: string,\n sourceOrOptions: RegistrySourceOrOptions = DEFAULT_SOURCE,\n ): void => {\n if (!ops.isValidRegistryTarget(type, key)) return;\n const operation = createUnregisterOperation(type, key, sourceOrOptions);\n if (!ops.hasOperationEffect(registries, operation)) return;\n\n commit(ops.applyOperation(registries, operation), [operation]);\n };\n\n const batch = (executor: (queue: RegistryQueue) => void): number => {\n if (typeof executor !== \"function\") return 0;\n const timestamp = Date.now();\n const operations: RegistryOperation[] = [];\n\n const queue: RegistryQueue = {\n register: (\n type: string,\n key: string,\n item: unknown,\n sourceOrOptions: RegistrySourceOrOptions = DEFAULT_SOURCE,\n optionsArg: RegistryMetadata = {},\n ): RegistrationHandle => {\n const prepared = prepareRegisterOperation(\n ops,\n definitions,\n type,\n key,\n item,\n sourceOrOptions,\n optionsArg,\n timestamp,\n ++sequence,\n );\n if (\"rejected\" in prepared) return prepared.rejected;\n\n operations.push(prepared.operation);\n return createRegistrationHandle(store, prepared.operation);\n },\n unregister: (\n type: string,\n key: string,\n sourceOrOptions: RegistrySourceOrOptions = DEFAULT_SOURCE,\n ): void => {\n if (!ops.isValidRegistryTarget(type, key)) return;\n operations.push(createUnregisterOperation(type, key, sourceOrOptions));\n },\n };\n\n executor(queue);\n if (operations.length === 0) return 0;\n\n const { effectiveOperations, nextState } = ops.resolveEffectiveOperations(\n registries,\n operations,\n );\n if (effectiveOperations.length === 0) return 0;\n\n commit(nextState, effectiveOperations);\n return effectiveOperations.length;\n };\n\n const getSnapshot = (\n type: string,\n key: string,\n scope: string | null = null,\n ): unknown => {\n const entry = registries[type]?.[key];\n let snapshots = valueSnapshots.get(type);\n if (!snapshots) {\n snapshots = new Map();\n valueSnapshots.set(type, snapshots);\n }\n\n const cacheKey = scope === null ? key : `${scope}\\u0000${key}`;\n\n if (entry === undefined) {\n snapshots.delete(cacheKey);\n return undefined;\n }\n\n const cached = snapshots.get(cacheKey);\n if (cached && cached.entry === entry) return cached.value;\n\n const value = resolveCachedValue(type, entry, scope);\n snapshots.set(cacheKey, { entry, value });\n return value;\n };\n\n const getEntriesSnapshot = (\n type: string,\n scope: string | null = null,\n ): Readonly<Record<string, unknown>> => {\n const typeRegistry = registries[type] || {};\n\n const cacheKey = `${type}::${scope ?? \"null\"}`;\n const cached = entrySnapshots.get(cacheKey);\n\n if (cached?.typeRegistry === typeRegistry) return cached.value;\n\n const resolved: Record<string, unknown> = {};\n for (const key in typeRegistry) {\n if (Object.prototype.hasOwnProperty.call(typeRegistry, key)) {\n const value = resolveCachedValue(type, typeRegistry[key], scope);\n if (value !== undefined) resolved[key] = value;\n }\n }\n\n const finalValue = Object.freeze(resolved);\n entrySnapshots.set(cacheKey, { typeRegistry, value: finalValue });\n return finalValue;\n };\n\n const store = {\n batch,\n dispose,\n getEntriesSnapshot,\n getSnapshot,\n isCurrent,\n register,\n subscribe,\n transaction: (\n executor: (tx: RegistryTransactionQueue) => void,\n metadata: RegistryMetadata = {},\n ) => createRegistryTransaction(store, metadata).run(executor),\n unregister,\n } as RegistryStore;\n return store;\n}\n","\"use client\";\n\nimport {\n useCallback,\n useMemo,\n useState,\n useSyncExternalStore,\n type ReactNode,\n} from \"react\";\nimport { useRequiredContext } from \"@/hooks\";\nimport { getOrCreateGlobalContext } from \"./context-registry\";\n\nimport type {\n RegistryDefinitions,\n RegistrySchema,\n RegistryStore,\n} from \"./types\";\nimport { createRegistryStore, type InitialRegistryEntries } from \"./store\";\n\ntype RegistryValueOf<K extends string> = K extends keyof RegistrySchema\n ? RegistrySchema[K]\n : unknown;\n\ninterface RegistryContextValue {\n actions: Pick<\n RegistryStore,\n \"batch\" | \"register\" | \"transaction\" | \"unregister\"\n >;\n subscription: Pick<\n RegistryStore,\n \"getEntriesSnapshot\" | \"getSnapshot\" | \"subscribe\"\n >;\n}\n\nconst RegistryContext = getOrCreateGlobalContext<RegistryContextValue | null>(\n\n \"RegistryContext\",\n null,\n);\n\nexport function RegistryProvider({\n children,\n definitions,\n initialEntries = [],\n}: {\n children?: ReactNode;\n definitions?: RegistryDefinitions;\n initialEntries?: InitialRegistryEntries;\n}) {\n const [store] = useState(() =>\n createRegistryStore(initialEntries, definitions),\n );\n\n const contextValue = useMemo(\n () => ({\n actions: {\n batch: store.batch,\n register: store.register,\n transaction: store.transaction,\n unregister: store.unregister,\n },\n subscription: {\n getEntriesSnapshot: store.getEntriesSnapshot,\n getSnapshot: store.getSnapshot,\n subscribe: store.subscribe,\n },\n }),\n [store],\n );\n\n return <RegistryContext value={contextValue}>{children}</RegistryContext>;\n}\n\nexport function useRegistryActions(): RegistryContextValue[\"actions\"] {\n return useRequiredContext(\n RegistryContext,\n \"useRegistryActions\",\n \"RegistryProvider\",\n ).actions;\n}\n\nfunction useRegistrySubscription(): RegistryContextValue[\"subscription\"] {\n return useRequiredContext(\n RegistryContext,\n \"useRegistrySubscription\",\n \"RegistryProvider\",\n ).subscription;\n}\n\nexport function useRegistryValue<\n K extends string = string,\n T = RegistryValueOf<K>,\n>(type: K, key: string): T | undefined {\n const { getSnapshot, subscribe } = useRegistrySubscription();\n\n const subscribeToKey = useCallback(\n (listener: () => void) => subscribe(type, key, listener),\n [key, subscribe, type],\n );\n const getValue = useCallback(\n () => getSnapshot<K, T>(type, key),\n [getSnapshot, key, type],\n );\n\n return useSyncExternalStore(subscribeToKey, getValue, getValue);\n}\n\nexport function useRegistryEntries<\n K extends string = string,\n T = RegistryValueOf<K>,\n>(type: K): Record<string, T> {\n const { getEntriesSnapshot, subscribe } = useRegistrySubscription();\n\n const subscribeToType = useCallback(\n (listener: () => void) => subscribe(type, null, listener),\n [subscribe, type],\n );\n const getEntries = useCallback(\n () => getEntriesSnapshot<K, T>(type),\n [getEntriesSnapshot, type],\n );\n\n return useSyncExternalStore(subscribeToType, getEntries, getEntries);\n}\n","\"use client\";\n\nimport { use, type ComponentType, type ReactNode } from \"react\";\nimport { isObject } from \"@/utils\";\nimport { getOrCreateGlobalContext } from \"./context-registry\";\nimport type {\n AnyCoreModule,\n PageConfig,\n RegistryDefinition,\n RegistryDefinitions,\n RegistryMetadata,\n} from \"./types\";\n\nexport type BoundaryComponent = ComponentType<{\n children?: ReactNode;\n name?: string;\n}>;\n\nexport interface ModuleHostValue {\n Boundary: BoundaryComponent;\n byId: ReadonlyMap<string, AnyCoreModule>;\n definitions: RegistryDefinitions;\n modules: readonly AnyCoreModule[];\n}\n\nexport const EMPTY_MODULES: readonly AnyCoreModule[] = Object.freeze([]);\n\nexport const PassthroughBoundary: BoundaryComponent = ({ children }) =>\n children;\n\nexport const ModuleHostContext =\n getOrCreateGlobalContext<ModuleHostValue | null>(\"ModuleHostContext\", null);\n\n\nexport function selectModuleSlice(\n coreModule: AnyCoreModule,\n config: PageConfig,\n): unknown {\n const slice = coreModule.page?.select\n ? coreModule.page.select(config)\n : (config as Record<string, unknown>)[coreModule.id];\n return slice ?? null;\n}\n\nexport function createModulePayload(\n modules: readonly AnyCoreModule[],\n config: PageConfig,\n metadata: RegistryMetadata = {},\n): PageConfig | null {\n const payload: Record<string, unknown> = {};\n let hasSlices = false;\n for (const coreModule of modules) {\n if (!coreModule.page?.entries) continue;\n const slice = selectModuleSlice(coreModule, config);\n if (slice === null) continue;\n payload[coreModule.id] = slice;\n hasSlices = true;\n }\n if (!hasSlices) return null;\n return {\n ...payload,\n registry: {\n ...metadata,\n ...(isObject(config.registry) ? config.registry : {}),\n },\n } as PageConfig;\n}\n\nconst MODULE_ID_PATTERN = /^[a-z][a-zA-Z0-9]*$/;\n\nexport function sortModules(\n modules: readonly AnyCoreModule[],\n): AnyCoreModule[] {\n const byId = new Map<string, AnyCoreModule>();\n for (const coreModule of modules) {\n if (!MODULE_ID_PATTERN.test(coreModule.id)) {\n throw new Error(\n `[Core] Invalid module id \"${coreModule.id}\": use a camelCase name such as \"contextMenu\".`,\n );\n }\n if (byId.has(coreModule.id)) {\n throw new Error(`[Core] Module \"${coreModule.id}\" is installed twice.`);\n }\n byId.set(coreModule.id, coreModule);\n }\n\n const sorted: AnyCoreModule[] = [];\n const state = new Map<string, \"visiting\" | \"done\">();\n const visit = (coreModule: AnyCoreModule, path: string[]) => {\n const current = state.get(coreModule.id);\n if (current === \"done\") return;\n if (current === \"visiting\") {\n throw new Error(\n `[Core] Module dependency cycle: ${[...path, coreModule.id].join(\" -> \")}`,\n );\n }\n state.set(coreModule.id, \"visiting\");\n for (const id of coreModule.uses ?? []) {\n const dependency = byId.get(id);\n if (dependency) visit(dependency, [...path, coreModule.id]);\n }\n state.set(coreModule.id, \"done\");\n sorted.push(coreModule);\n };\n modules.forEach((coreModule) => visit(coreModule, []));\n return sorted;\n}\n\nexport function createModuleRegistryDefinitions(\n modules: readonly AnyCoreModule[],\n): RegistryDefinitions {\n const definitions = new Map<string, RegistryDefinition>();\n for (const coreModule of modules) {\n if (coreModule.registry)\n definitions.set(coreModule.id, coreModule.registry);\n }\n return definitions;\n}\n\nexport function useInstalledModules(): readonly AnyCoreModule[] {\n return use(ModuleHostContext)?.modules ?? EMPTY_MODULES;\n}\n","import { DEFAULT_SOURCE, REGISTRY_LIFECYCLES } from \"./constants\";\nimport {\n normalizeRegistryMetadata,\n validateRegistryMetadata,\n} from \"./schema\";\nimport { isObject, report } from \"@/utils\";\nimport type {\n AnyCoreModule,\n PageConfig,\n RegistrationEntry,\n RegistryApplyContext,\n RegistryCleanupTimer,\n RegistryMetadata,\n RegistryQueue,\n} from \"./types\";\n\ntype CleanupScope = Map<string, RegistryCleanupTimer>;\n\nfunction isPersistentLifecycle(lifecycle: unknown): boolean {\n return lifecycle === REGISTRY_LIFECYCLES.PERSISTENT;\n}\n\nfunction runRegistrationBatch(\n context: RegistryApplyContext,\n executor: (queue: RegistryQueue) => void,\n): number | void {\n return typeof context.batch === \"function\"\n ? context.batch(executor)\n : executor(context);\n}\n\nfunction createEntryCleanupKey(\n type: string,\n key: string,\n source: string,\n instanceId: string | null,\n scope: string | undefined,\n): string {\n return JSON.stringify([\n \"entry\",\n type,\n key,\n scope ?? null,\n source,\n instanceId,\n ]);\n}\n\nfunction getCleanupScope(\n context: RegistryApplyContext | null | undefined,\n): CleanupScope {\n return context?.cleanupScope || new Map();\n}\n\nfunction clearCleanupTimer(scope: CleanupScope, cleanupKey: string): void {\n const lifecycle = scope.get(cleanupKey);\n if (!lifecycle) return;\n lifecycle.cancelled = true;\n if (lifecycle.timerId !== null) clearTimeout(lifecycle.timerId);\n scope.delete(cleanupKey);\n}\n\nfunction scheduleCleanup(\n scope: CleanupScope,\n cleanupKey: string,\n callback: () => void,\n delayMs: number,\n): void {\n clearCleanupTimer(scope, cleanupKey);\n const lifecycle: RegistryCleanupTimer = {\n cancelled: false,\n timerId: null,\n };\n\n lifecycle.timerId = setTimeout(() => {\n if (lifecycle.cancelled || scope.get(cleanupKey) !== lifecycle) return;\n scope.delete(cleanupKey);\n callback();\n }, delayMs);\n\n scope.set(cleanupKey, lifecycle);\n}\n\ntype ModuleRegistration = RegistrationEntry & {\n cleanupKey: string;\n type: string;\n};\n\nfunction collectModuleRegistrations(\n coreModule: AnyCoreModule,\n slice: unknown,\n pageMetadata: RegistryMetadata,\n context: RegistryApplyContext,\n): ModuleRegistration[] {\n const definition = coreModule.registry;\n const toEntries = coreModule.page?.entries;\n if (!definition || !toEntries || slice == null || slice === false) return [];\n\n const type = coreModule.id;\n const items = Array.isArray(slice) ? slice : [slice];\n const registrations: ModuleRegistration[] = [];\n\n for (const item of items) {\n if (item == null || item === false) continue;\n const itemMetadata =\n isObject(item) && isObject(item.registry) ? item.registry : {};\n const metadata = { ...pageMetadata, ...itemMetadata };\n if (\n metadata.validation === \"strict\" &&\n !validateRegistryMetadata(metadata).valid\n ) {\n continue;\n }\n\n const payload = isObject(item)\n ? Object.fromEntries(\n Object.entries(item).filter(([key]) => key !== \"registry\"),\n )\n : item;\n const { cleanupDelayMs, lifecycle, registerOptions, scope, source } =\n normalizeRegistryMetadata(metadata, {\n defaultCleanupDelayMs: definition.cleanupDelayMs ?? null,\n defaultLifecycle: definition.lifecycle,\n defaultSource: DEFAULT_SOURCE,\n });\n\n for (const { key, value } of toEntries(payload, context) ?? []) {\n const validation = definition.validate?.(value);\n if (validation && !validation.valid) {\n report(`Registry ${type} config is invalid`, validation.issues, \"warn\");\n continue;\n }\n registrations.push({\n cleanupDelayMs,\n cleanupKey: createEntryCleanupKey(\n type,\n key,\n source,\n context.instanceId,\n scope,\n ),\n key,\n lifecycle,\n registerOptions,\n scope,\n source,\n type,\n value,\n });\n }\n }\n return registrations;\n}\n\nconst NO_CLEANUP = () => {};\n\nexport function applyRegistryConfig(\n config: PageConfig | null | undefined,\n context: RegistryApplyContext,\n): () => void {\n const modules = context.modules ?? [];\n if (!config || modules.length === 0) return NO_CLEANUP;\n const pageMetadata = isObject(config.registry) ? config.registry : {};\n const slices = config as Record<string, unknown>;\n\n const registrations = modules.flatMap((coreModule) => {\n try {\n return collectModuleRegistrations(\n coreModule,\n slices[coreModule.id],\n pageMetadata,\n context,\n );\n } catch (error) {\n report(`Registry apply (${coreModule.id})`, error);\n return [];\n }\n });\n if (registrations.length === 0) return NO_CLEANUP;\n\n const cleanupScope = getCleanupScope(context);\n const owner = (registration: ModuleRegistration) => ({\n instanceId: context.instanceId,\n scope: registration.scope,\n source: registration.source,\n });\n\n runRegistrationBatch(context, (queue) => {\n registrations.forEach(\n ({ cleanupKey, key, registerOptions, source, type, value }) => {\n clearCleanupTimer(cleanupScope, cleanupKey);\n queue.register(type, key, value, source, registerOptions);\n },\n );\n });\n\n return () => {\n const immediate: ModuleRegistration[] = [];\n registrations.forEach((registration) => {\n if (isPersistentLifecycle(registration.lifecycle)) return;\n const { cleanupDelayMs, cleanupKey, key, type } = registration;\n if (typeof cleanupDelayMs === \"number\" && cleanupDelayMs > 0) {\n scheduleCleanup(\n cleanupScope,\n cleanupKey,\n () => context.unregister(type, key, owner(registration)),\n cleanupDelayMs,\n );\n } else {\n immediate.push(registration);\n }\n });\n if (immediate.length === 0) return;\n runRegistrationBatch(context, (queue) => {\n immediate.forEach((registration) =>\n queue.unregister(\n registration.type,\n registration.key,\n owner(registration),\n ),\n );\n });\n };\n}\n","\"use client\";\n\nimport { usePathname } from \"next/navigation\";\nimport { useIsomorphicLayoutEffect } from \"@/hooks\";\nimport {\n Children,\n cloneElement,\n isValidElement,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { applyRegistryConfig } from \"./handlers\";\nimport { createModulePayload, useInstalledModules } from \"./installed\";\nimport { useRegistryActions } from \"./provider\";\nimport { isObject, shallowEqual } from \"@/utils\";\nimport type {\n PageConfig,\n RegistryCleanupTimer,\n RegistryApplyContext,\n RegistryMetadata,\n RegistryQueue,\n RegistrySourceOrOptions,\n StableFunctionEntry,\n AnyFunction,\n} from \"./types\";\n\nfunction withInstanceId(\n instanceId: string,\n sourceOrOptions: RegistrySourceOrOptions | undefined,\n optionsArg?: RegistryMetadata,\n): {\n optionsArg: RegistryMetadata | undefined;\n sourceOrOptions: RegistrySourceOrOptions;\n} {\n if (typeof sourceOrOptions === \"string\") {\n return {\n optionsArg: { ...(isObject(optionsArg) ? optionsArg : {}), instanceId },\n sourceOrOptions,\n };\n }\n if (isObject(sourceOrOptions)) {\n return {\n optionsArg,\n sourceOrOptions: { ...sourceOrOptions, instanceId },\n };\n }\n return {\n optionsArg: undefined,\n sourceOrOptions: {\n ...(isObject(optionsArg) ? optionsArg : {}),\n instanceId,\n },\n };\n}\n\nfunction withInstanceIdForUnregister(\n instanceId: string,\n sourceOrOptions: RegistrySourceOrOptions | undefined,\n): RegistryMetadata {\n if (typeof sourceOrOptions === \"string\") {\n return { instanceId, source: sourceOrOptions };\n }\n if (isObject(sourceOrOptions)) {\n return { ...sourceOrOptions, instanceId };\n }\n return { instanceId };\n}\n\nfunction resolveRegisterArgsWithInstance(\n instanceId: string,\n sourceOrOptions: RegistrySourceOrOptions | undefined,\n optionsArg?: RegistryMetadata,\n): [RegistrySourceOrOptions, RegistryMetadata | undefined] {\n const input = withInstanceId(instanceId, sourceOrOptions, optionsArg);\n return [input.sourceOrOptions, input.optionsArg];\n}\n\nexport function useShallowStable<T extends object>(value: T): T {\n const ref = useRef(value);\n if (ref.current !== value && !shallowEqual(ref.current, value)) {\n ref.current = value;\n }\n return ref.current;\n}\n\nconst MAX_STABILIZATION_DEPTH = 64;\n\nfunction createStableFunctionEntry(fn: AnyFunction): StableFunctionEntry {\n const entry: StableFunctionEntry = {\n current: fn,\n stable(this: unknown, ...args: unknown[]) {\n return entry.current?.apply(this, args);\n },\n };\n return entry;\n}\n\ninterface StabilizeScope {\n componentSlices: ReadonlySet<string>;\n functionEntries: Map<string, StableFunctionEntry>;\n usedPaths: Set<string>;\n}\n\nfunction isDirectRegistryComponentPath(\n path: string,\n componentSlices: ReadonlySet<string>,\n): boolean {\n const match = /^config\\.([^.[]+)\\.[^.[]+$/.exec(path);\n return Boolean(match && componentSlices.has(match[1]));\n}\n\nfunction isReactNodeLike(value: unknown): boolean {\n return (\n value === null ||\n value === undefined ||\n typeof value === \"boolean\" ||\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n isValidElement(value)\n );\n}\n\nfunction isStabilizableObject(\n value: unknown,\n): value is Record<string, unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n !isValidElement(value)\n );\n}\n\nfunction hasSameObjectKeys(\n previousValue: unknown,\n nextValue: unknown,\n): boolean {\n if (\n !isStabilizableObject(previousValue) ||\n !isStabilizableObject(nextValue)\n ) {\n return false;\n }\n const previousKeys = Object.keys(previousValue);\n const nextKeys = Object.keys(nextValue);\n if (previousKeys.length !== nextKeys.length) return false;\n return nextKeys.every((key) =>\n Object.prototype.hasOwnProperty.call(previousValue, key),\n );\n}\n\nfunction stabilizeRegistryValue(\n value: unknown,\n path: string,\n scope: StabilizeScope,\n previousValue?: unknown,\n seen = new WeakSet<object>(),\n depth = 0,\n): unknown {\n if (depth > MAX_STABILIZATION_DEPTH) return value;\n\n if (typeof value === \"function\") {\n const isComponent = value.name && /^[A-Z]/.test(value.name);\n if (\n isComponent ||\n isDirectRegistryComponentPath(path, scope.componentSlices)\n ) {\n return value;\n }\n scope.usedPaths.add(path);\n let entry = scope.functionEntries.get(path);\n if (!entry) {\n entry = createStableFunctionEntry(value as AnyFunction);\n scope.functionEntries.set(path, entry);\n } else {\n entry.current = value as AnyFunction;\n }\n return entry.stable;\n }\n\n if (value && typeof value === \"object\") {\n if (seen.has(value)) return value;\n seen.add(value);\n }\n\n if (isValidElement(value)) {\n const nextProps = stabilizeRegistryValue(\n value.props,\n `${path}.props`,\n scope,\n isValidElement(previousValue) ? previousValue.props : undefined,\n seen,\n depth + 1,\n ) as Record<string, unknown>;\n if (\n isValidElement(previousValue) &&\n previousValue.type === value.type &&\n previousValue.key === value.key &&\n previousValue.props === nextProps\n ) {\n return previousValue;\n }\n return cloneElement(value, nextProps);\n }\n\n if (Array.isArray(value)) {\n const nextValue = value.every(isReactNodeLike)\n ? Children.toArray(value)\n : value;\n const previousArray = Array.isArray(previousValue) ? previousValue : null;\n let hasChanged =\n !previousArray || previousArray.length !== nextValue.length;\n\n const stabilizedValue: unknown[] = nextValue.map((item, index) => {\n const nextItem = stabilizeRegistryValue(\n item,\n `${path}[${index}]`,\n scope,\n previousArray?.[index],\n seen,\n depth + 1,\n );\n if (!previousArray || nextItem !== previousArray[index]) {\n hasChanged = true;\n }\n return nextItem;\n });\n return !hasChanged ? previousArray : stabilizedValue;\n }\n\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n\n const source = value as Record<string, unknown>;\n const previousRecord = previousValue as Record<string, unknown> | undefined;\n const stabilizedValue: Record<string, unknown> = {};\n const canReusePrevious = hasSameObjectKeys(previousValue, value);\n let hasChanged = !canReusePrevious;\n\n Object.keys(source).forEach((key) => {\n const nextValue = stabilizeRegistryValue(\n source[key],\n `${path}.${key}`,\n scope,\n previousRecord?.[key],\n seen,\n depth + 1,\n );\n stabilizedValue[key] = nextValue;\n if (!canReusePrevious || nextValue !== previousRecord?.[key]) {\n hasChanged = true;\n }\n });\n\n return !hasChanged ? previousValue : stabilizedValue;\n}\n\nfunction useAppliedRegistryConfig(\n payload: PageConfig | null,\n context: RegistryApplyContext,\n componentSlices: ReadonlySet<string>,\n): void {\n const functionEntriesRef = useRef(new Map<string, StableFunctionEntry>());\n const appliedRef = useRef<{\n cleanup: () => void;\n config: unknown;\n context: RegistryApplyContext;\n payload: PageConfig | null;\n } | null>(null);\n\n useIsomorphicLayoutEffect(() => {\n const previous = appliedRef.current;\n if (\n previous &&\n previous.payload === payload &&\n previous.context === context\n ) {\n return;\n }\n const functionEntries = functionEntriesRef.current;\n const usedPaths = new Set<string>();\n const config = stabilizeRegistryValue(\n payload,\n \"config\",\n { componentSlices, functionEntries, usedPaths },\n previous?.config,\n );\n functionEntries.forEach((_entry, path) => {\n if (!usedPaths.has(path)) functionEntries.delete(path);\n });\n\n if (\n previous &&\n previous.config === config &&\n previous.context === context\n ) {\n previous.payload = payload;\n return;\n }\n previous?.cleanup();\n appliedRef.current = {\n cleanup: applyRegistryConfig(config as PageConfig | null, context),\n config,\n context,\n payload,\n };\n });\n\n useIsomorphicLayoutEffect(\n () => () => {\n appliedRef.current?.cleanup();\n appliedRef.current = null;\n },\n [],\n );\n}\n\nexport function createRegistryApplyContext(\n actions: RegistryQueue & Pick<RegistryApplyContext, \"batch\">,\n {\n cleanupScope = new Map<string, RegistryCleanupTimer>(),\n instanceId,\n modules = [],\n pathname,\n }: Pick<RegistryApplyContext, \"instanceId\" | \"modules\" | \"pathname\"> & {\n cleanupScope?: RegistryApplyContext[\"cleanupScope\"];\n },\n): RegistryApplyContext {\n const stamp = (queue: RegistryQueue): RegistryQueue =>\n ({\n register: (\n type: string,\n key: string,\n item: unknown,\n sourceOrOptions?: RegistrySourceOrOptions,\n optionsArg?: RegistryMetadata,\n ) =>\n queue.register(\n type,\n key,\n item,\n ...resolveRegisterArgsWithInstance(\n instanceId,\n sourceOrOptions,\n optionsArg,\n ),\n ),\n unregister: (\n type: string,\n key: string,\n sourceOrOptions?: RegistrySourceOrOptions,\n ) =>\n queue.unregister(\n type,\n key,\n withInstanceIdForUnregister(instanceId, sourceOrOptions),\n ),\n }) as RegistryQueue;\n\n return {\n ...stamp(actions),\n batch: (executor) =>\n typeof executor === \"function\"\n ? actions.batch((queue) => executor(stamp(queue)))\n : 0,\n cleanupScope,\n instanceId,\n modules,\n pathname,\n };\n}\n\nexport function useRegistry(\n config?: PageConfig | null,\n metadata?: RegistryMetadata,\n): void {\n const { batch, register, unregister } = useRegistryActions();\n const pathname = usePathname();\n const modules = useInstalledModules();\n const instanceId = `registry-instance-${useId()}`;\n const [cleanupScope] = useState(\n () => new Map<string, RegistryCleanupTimer>(),\n );\n\n const context = useMemo(\n () =>\n createRegistryApplyContext(\n { batch, register, unregister },\n {\n cleanupScope,\n instanceId,\n modules,\n pathname,\n },\n ),\n [batch, cleanupScope, instanceId, modules, pathname, register, unregister],\n );\n\n const payload = useMemo(\n () => (config ? createModulePayload(modules, config, metadata) : null),\n [config, metadata, modules],\n );\n const componentSlices = useMemo(\n () =>\n new Set(\n modules\n .filter(\n (coreModule) => coreModule.registry?.valueKind === \"component\",\n )\n .map((coreModule) => coreModule.id),\n ),\n [modules],\n );\n useAppliedRegistryConfig(payload, context, componentSlices);\n}\n","\"use client\";\n\nimport {\n use,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n type ReactNode,\n} from \"react\";\nimport { useIsomorphicLayoutEffect } from \"@/hooks\";\nimport { getOrCreateGlobalContext } from \"./context-registry\";\nimport { useRegistry, useShallowStable } from \"./hooks\";\nimport { selectModuleSlice, useInstalledModules } from \"./installed\";\nimport { pickRegistryMetadata } from \"./schema\";\nimport { mergeModuleConfigs } from \"./utils\";\n\nimport type {\n PageConfig,\n PageController,\n PageControllerStore,\n PageModuleApi,\n PageModules,\n PageOptions,\n} from \"./types\";\nimport { report } from \"@/utils\";\n\nconst EMPTY_OBJECT: PageConfig = Object.freeze({});\n\nfunction createPageControllerStore(): PageControllerStore {\n const listeners = new Set<() => void>();\n let stack: {\n controllerRef: { current: PageController | null };\n id: string;\n }[] = [];\n\n const notify = (): void => {\n listeners.forEach((listener) => {\n try {\n listener();\n } catch (error) {\n report(\"Page controller listener\", error);\n }\n });\n };\n\n return {\n getSnapshot(): PageController | null {\n const top = stack[stack.length - 1];\n return top?.controllerRef?.current || null;\n },\n notify,\n register(\n id: string,\n controllerRef: { current: PageController | null },\n ): void {\n stack = stack.filter((item) => item.id !== id);\n stack.push({ controllerRef, id });\n notify();\n },\n subscribe(listener: () => void): () => void {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n unregister(id: string): void {\n stack = stack.filter((item) => item.id !== id);\n notify();\n },\n };\n}\n\nfunction createControllerScope(): {\n Provider: PageController[\"Provider\"];\n publish: (controller: PageController) => void;\n} {\n const listeners = new Set<() => void>();\n let current: PageController | null = null;\n\n const subscribe = (listener: () => void) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n };\n const getSnapshot = () => current;\n\n function PageProvider({ children }: { children?: ReactNode }) {\n const controller = useSyncExternalStore(\n subscribe,\n getSnapshot,\n getSnapshot,\n );\n return (\n <PageControllerContext value={controller}>\n {children}\n </PageControllerContext>\n );\n }\n\n return {\n Provider: PageProvider,\n publish(controller) {\n if (current === controller) return;\n current = controller;\n listeners.forEach((listener) => listener());\n },\n };\n}\n\nconst fallbackStandaloneStore = createPageControllerStore();\n\nconst noopHook = () => {};\nconst PassthroughProvider = ({ children }: { children?: ReactNode }) =>\n children;\n\nconst PageControllerContext = getOrCreateGlobalContext<PageController | null>(\n \"PageControllerContext\",\n null,\n);\n\nconst PageControllerStoreContext =\n getOrCreateGlobalContext<PageControllerStore>(\n \"PageControllerStoreContext\",\n fallbackStandaloneStore,\n );\n\nexport function PageControllerProvider({ children }: { children?: ReactNode }) {\n const [store] = useState<PageControllerStore>(() =>\n createPageControllerStore(),\n );\n return (\n <PageControllerStoreContext value={store}>\n {children}\n </PageControllerStoreContext>\n );\n}\n\nconst emptySubscribe = () => () => {};\nconst getNullSnapshot = () => null;\n\nconst FALLBACK_PAGE_CONTROLLER: PageController = Object.freeze({\n Provider: PassthroughProvider,\n config: EMPTY_OBJECT,\n modules: Object.freeze({}),\n reset: noopHook,\n set: noopHook,\n});\n\nexport function usePageController(): PageController {\n const scopedContext = use(PageControllerContext);\n const controllerStore = use(PageControllerStoreContext);\n\n const storeSubscribe = scopedContext\n ? emptySubscribe\n : controllerStore.subscribe;\n const storeSnapshot = scopedContext\n ? getNullSnapshot\n : controllerStore.getSnapshot;\n\n const storeController = useSyncExternalStore(\n storeSubscribe,\n storeSnapshot,\n getNullSnapshot,\n );\n\n return scopedContext ?? storeController ?? FALLBACK_PAGE_CONTROLLER;\n}\n\nexport function usePage(\n pageConfig: PageConfig = EMPTY_OBJECT,\n options?: PageOptions,\n): PageController {\n const instanceId = useId();\n const controllerStore = use(PageControllerStoreContext);\n const modules = useInstalledModules();\n\n const [overrides, setOverrides] = useState<Partial<PageConfig>>(EMPTY_OBJECT);\n\n const set = useCallback((partial: Partial<PageConfig>) => {\n if (!partial || typeof partial !== \"object\") return;\n setOverrides((prev) => mergeModuleConfigs(prev, partial));\n }, []);\n\n const reset = useCallback(() => {\n setOverrides(EMPTY_OBJECT);\n }, []);\n\n const effectiveConfig = useMemo<PageConfig>(() => {\n const base = pageConfig || EMPTY_OBJECT;\n if (Object.keys(overrides).length === 0) return base;\n return mergeModuleConfigs(base, overrides);\n }, [pageConfig, overrides]);\n\n const moduleSlices = useMemo(\n () =>\n modules.map((coreModule) =>\n selectModuleSlice(coreModule, effectiveConfig),\n ),\n [effectiveConfig, modules],\n );\n\n const registryMetadata = useMemo(\n () => pickRegistryMetadata(options),\n [options],\n );\n useRegistry(effectiveConfig, registryMetadata);\n\n const pageApi = useMemo<PageModuleApi>(() => ({ set }), [set]);\n const moduleControllers: Record<string, unknown> = {};\n for (let index = 0; index < modules.length; index += 1) {\n const coreModule = modules[index];\n if (coreModule.page?.use) {\n moduleControllers[coreModule.id] = coreModule.page.use(\n moduleSlices[index],\n pageApi,\n );\n }\n }\n const pageModules = useShallowStable(moduleControllers) as PageModules;\n\n const [scope] = useState(createControllerScope);\n\n const controller = useMemo<PageController>(\n () => ({\n Provider: scope.Provider,\n config: effectiveConfig,\n modules: pageModules,\n reset,\n set,\n }),\n [effectiveConfig, pageModules, reset, scope, set],\n );\n\n const controllerRef = useRef<PageController | null>(controller);\n\n useIsomorphicLayoutEffect(() => {\n controllerRef.current = controller;\n scope.publish(controller);\n controllerStore.notify();\n }, [controller, controllerStore, scope]);\n\n useEffect(() => {\n controllerStore.register(instanceId, controllerRef);\n return () => {\n controllerStore.unregister(instanceId);\n };\n }, [controllerStore, instanceId]);\n\n return controller;\n}\n","\"use client\";\n\nimport { createElement, use, useState, type ReactNode } from \"react\";\nimport { useStore } from \"@/hooks\";\nimport { createStore, type ExternalStore } from \"@/utils\";\nimport {\n EMPTY_MODULES,\n ModuleHostContext,\n PassthroughBoundary,\n createModuleRegistryDefinitions,\n sortModules,\n type BoundaryComponent,\n type ModuleHostValue,\n} from \"./installed\";\nimport { PageControllerProvider } from \"./page-controller\";\nimport { RegistryProvider } from \"./provider\";\nimport type {\n AnyCoreModule,\n AppRegistryEntry,\n CoreModule,\n CoreModules,\n ModuleId,\n ModuleRuntimeOf,\n ModuleStateOf,\n} from \"./types\";\nimport { report } from \"@/utils\";\n\nexport function defineModule<\n TId extends string,\n TRuntime = never,\n TSlice = never,\n TController = never,\n>(\n coreModule: CoreModule<TId, TRuntime, TSlice, TController>,\n): CoreModule<TId, TRuntime, TSlice, TController> {\n return Object.freeze({ ...coreModule });\n}\n\nfunction warnMissingPeers(modules: readonly AnyCoreModule[]): void {\n const installed = new Set(modules.map((coreModule) => coreModule.id));\n for (const { id, uses } of modules) {\n const missing = (uses ?? []).filter((peer) => !installed.has(peer));\n if (missing.length > 0) {\n report(\n `Module \"${id}\" runs without its optional peers`,\n missing.join(\", \"),\n \"warn\",\n );\n }\n }\n}\n\nfunction createModuleHost(\n modules: readonly AnyCoreModule[],\n Boundary: BoundaryComponent,\n): ModuleHostValue {\n const sorted = sortModules(modules);\n if (process.env.NODE_ENV !== \"production\") warnMissingPeers(sorted);\n return {\n Boundary,\n byId: new Map(sorted.map((coreModule) => [coreModule.id, coreModule])),\n definitions: createModuleRegistryDefinitions(sorted),\n modules: Object.freeze(sorted),\n };\n}\n\nexport interface ModuleHostProps {\n boundary?: BoundaryComponent;\n children?: ReactNode;\n modules?: readonly AnyCoreModule[];\n registryEntries?: readonly AppRegistryEntry[];\n}\n\nexport function ModuleHost({\n boundary = PassthroughBoundary,\n children,\n modules = EMPTY_MODULES,\n registryEntries,\n}: ModuleHostProps) {\n const [host] = useState(() => createModuleHost(modules, boundary));\n const { Boundary } = host;\n\n const content = (\n <>\n {host.modules.map(({ Backdrop, id }) =>\n Backdrop ? (\n <Boundary key={id} name={id}>\n <Backdrop />\n </Boundary>\n ) : null,\n )}\n {children}\n {host.modules.map(({ Overlay, id }) =>\n Overlay ? (\n <Boundary key={id} name={id}>\n <Overlay />\n </Boundary>\n ) : null,\n )}\n </>\n );\n\n const tree = host.modules.reduceRight<ReactNode>(\n (inner, { Provider }) => (Provider ? <Provider>{inner}</Provider> : inner),\n content,\n );\n\n return (\n <RegistryProvider\n definitions={host.definitions}\n initialEntries={registryEntries}\n >\n <ModuleHostContext value={host}>\n <PageControllerProvider>{tree}</PageControllerProvider>\n </ModuleHostContext>\n </RegistryProvider>\n );\n}\n\nexport function useModule<K extends ModuleId>(\n id: K,\n): ModuleRuntimeOf<CoreModules[K]> | null {\n const coreModule = use(ModuleHostContext)?.byId.get(id);\n return coreModule?.context ? (use(coreModule.context) ?? null) : null;\n}\n\ntype ModuleActionsOf<K extends ModuleId> =\n ModuleRuntimeOf<CoreModules[K]> extends { actions: infer TActions }\n ? TActions\n : never;\n\nexport interface ModulePeer<K extends ModuleId> {\n useActions(): ModuleActionsOf<K>;\n useRuntime(): ModuleRuntimeOf<CoreModules[K]>;\n useState<T>(\n selector: (state: ModuleStateOf<K>) => T,\n isEqual?: (a: T, b: T) => boolean,\n ): T;\n}\n\nexport function definePeer<K extends ModuleId>(\n id: K,\n inert: ModuleRuntimeOf<CoreModules[K]>,\n): ModulePeer<K> {\n const useRuntime = (): ModuleRuntimeOf<CoreModules[K]> =>\n useModule(id) ?? inert;\n return {\n useRuntime,\n useActions: () => useRuntime().actions as ModuleActionsOf<K>,\n useState: <T,>(\n selector: (state: ModuleStateOf<K>) => T,\n isEqual?: (a: T, b: T) => boolean,\n ) =>\n useStore<ModuleStateOf<K>, T>(\n (useRuntime() as { store: ExternalStore<ModuleStateOf<K>> }).store,\n selector,\n isEqual,\n ),\n };\n}\n\nconst NO_MODULE_STORE: ExternalStore<unknown> = createStore<unknown>(undefined);\n\nexport function useModuleState<K extends ModuleId, T>(\n id: K,\n selector: (state: ModuleStateOf<K>) => T,\n fallback: T,\n isEqual: (a: T, b: T) => boolean = Object.is,\n): T {\n const runtime = useModule(id) as { store: ExternalStore<unknown> } | null;\n return useStore<unknown, T>(\n runtime?.store ?? NO_MODULE_STORE,\n (state) => (runtime ? selector(state as ModuleStateOf<K>) : fallback),\n isEqual,\n );\n}\n\nexport function ModuleBoundary({\n children,\n name,\n}: {\n children?: ReactNode;\n name?: string;\n}) {\n const Boundary = use(ModuleHostContext)?.Boundary ?? PassthroughBoundary;\n return createElement(Boundary, { name }, children);\n}\n\nexport function useIsModuleInstalled(id: ModuleId): boolean {\n return use(ModuleHostContext)?.byId.has(id) ?? false;\n}\n","\"use client\";\n\nimport { pickRegistryMetadata } from \"./schema\";\nimport { useRegistry } from \"./hooks\";\nimport { useInstalledModules } from \"./installed\";\nimport type { ModuleId, PageConfig, RegistryMetadata } from \"./types\";\n\nexport function useModuleRegistration(\n id: ModuleId,\n value: unknown,\n options?: RegistryMetadata & { enabled?: boolean },\n): void {\n const coreModule = useInstalledModules().find(\n (candidate) => candidate.id === id,\n );\n const config =\n coreModule && options?.enabled !== false && value != null\n ? ({ [id]: value } as PageConfig)\n : null;\n useRegistry(config, pickRegistryMetadata(options));\n}\n","import {\n createElement,\n Fragment,\n type ComponentType,\n type JSX,\n type ReactNode,\n} from \"react\";\n\nexport type ProviderComponent<P = any> = ComponentType<\n P & { children?: ReactNode }\n>;\n\nexport type ProviderEntry<P = any> =\n ProviderComponent<P> | readonly [ProviderComponent<P>, P];\n\nexport interface ComposeProps {\n children?: ReactNode;\n providers: readonly ProviderEntry[];\n}\n\nexport function createProviderEntry<P extends object>(\n component: ProviderComponent<P>,\n props: P,\n): readonly [ProviderComponent<P>, P] {\n return [component, props] as const;\n}\n\nexport function Compose({ providers, children }: ComposeProps): JSX.Element {\n return providers.reduceRight<JSX.Element>(\n (acc, entry) => {\n if (Array.isArray(entry)) {\n const [Component, props] = entry;\n return createElement(Component, props, acc);\n }\n const Component = entry as ProviderComponent;\n return createElement(Component, null, acc);\n },\n createElement(Fragment, null, children),\n );\n}\n\nexport function composeProviders(\n providers: readonly ProviderEntry[],\n): (props: { children?: ReactNode }) => JSX.Element {\n function ComposedProviders({\n children,\n }: {\n children?: ReactNode;\n }): JSX.Element {\n return Compose({ providers, children });\n }\n ComposedProviders.displayName = \"ComposedProviders\";\n return ComposedProviders;\n}\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -1,5 +1,5 @@
1
1
  import type { ComponentType, Context, ReactNode } from "react";
2
- import type { ExternalStore } from "@/utils";
2
+ import type { ExternalStore } from "../utils";
3
3
  export type AnyFunction = (...args: unknown[]) => unknown;
4
4
  export interface AppRegistryEntry<T = unknown> {
5
5
  type: string;
@@ -0,0 +1,46 @@
1
+ import type { AmbientAnalysisOptions, AmbientPalette, AmbientPixels, OklchColor } from "./types";
2
+ export interface Cluster extends OklchColor {
3
+ /** Share of the (centre-weighted) image. */
4
+ pop: number;
5
+ /** Share of the chroma sRGB allows at this lightness and hue. */
6
+ rel: number;
7
+ /** How far the hue can be trusted at this lightness (0–1). */
8
+ rely: number;
9
+ }
10
+ interface Bounds {
11
+ bottom: number;
12
+ left: number;
13
+ right: number;
14
+ top: number;
15
+ }
16
+ /**
17
+ * Finds black bars along the edges (letterbox / pillarbox): rows or columns
18
+ * that are uniformly near-black. At most 22% of each side is cut.
19
+ */
20
+ export declare function findContentBounds({ data, height, width }: AmbientPixels): Bounds;
21
+ export interface AmbientClustering {
22
+ clusters: Cluster[];
23
+ /** Centre-weighted mean lightness. */
24
+ meanL: number;
25
+ /** Per region, the pixel count of each cluster. */
26
+ regionWeights: Float64Array[];
27
+ }
28
+ /**
29
+ * Step one of the analysis: the image's colours as OKLab k-means clusters,
30
+ * with each cluster's share of the frame and of each region.
31
+ */
32
+ export declare function clusterAmbientPixels(pixels: AmbientPixels, options: AmbientAnalysisOptions): AmbientClustering;
33
+ /**
34
+ * The palette of an image: OKLab k-means clusters scored by population ×
35
+ * chroma, turned into four roles (each with a gamut-aware tonal ramp and a
36
+ * contrast-safe text colour), five region colours, and the deep `shadow`
37
+ * tone.
38
+ */
39
+ export declare function analyzeAmbientPixels(pixels: AmbientPixels, overrides?: Partial<AmbientAnalysisOptions>): AmbientPalette;
40
+ /** Width and height that fit `width × height` inside `size` on the long side. */
41
+ export declare function fitSample(width: number, height: number, size: number): {
42
+ height: number;
43
+ width: number;
44
+ };
45
+ export {};
46
+ //# sourceMappingURL=analyze.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/analyze.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,sBAAsB,EACtB,cAAc,EACd,aAAa,EAMb,UAAU,EACX,MAAM,SAAS,CAAC;AAiBjB,MAAM,WAAW,OAAQ,SAAQ,UAAU;IACzC,4CAA4C;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,MAAM;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAKD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,aAAa,GAAG,MAAM,CAgChF;AA8DD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,sBAAsB,GAC9B,iBAAiB,CAgInB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,SAAS,GAAE,OAAO,CAAC,sBAAsB,CAAM,GAC9C,cAAc,CA6LhB;AAED,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;EAMpE"}
@@ -1,6 +1,2 @@
1
- export declare const AMBIENT_DEFAULTS: Readonly<{
2
- readonly primary: "#101010";
3
- readonly black: "#0b0b0b";
4
- }>;
5
- export declare const ambientTheme: import("@/theme").ThemeSpec<"transition">;
1
+ export declare const ambientTheme: import("../../theme").ThemeSpec<"transition", never>;
6
2
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB;;;EAGlB,CAAC;AAEZ,eAAO,MAAM,YAAY,2CAA+C,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,kDAA+C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/context.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EAErB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,cAAc,sDACoD,CAAC;AAEhF,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,cAAqB,GACtB,EAAE,oBAAoB,+BAgCtB"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/context.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EAErB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,cAAc,sDACoD,CAAC;AAEhF,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,cAAqB,GACtB,EAAE,oBAAoB,+BAgCtB"}
@@ -1,19 +1,18 @@
1
- import type { AmbientImageSource, AmbientTarget } from "./types";
2
- export declare const AMBIENT_CSS_VARS: Readonly<{
3
- readonly ambientGlow: "--color-ambient-glow";
4
- readonly colorPrimary: "--color-primary";
5
- readonly primary: "--primary";
6
- readonly black: "--black";
7
- readonly white: "--white";
8
- }>;
1
+ import type { AmbientCssVarConfig, AmbientCssVarNames, AmbientImageSource, AmbientPalette, AmbientTarget, AmbientTone } from "./types";
2
+ export type ResolvedCssVars = AmbientCssVarNames & {
3
+ tones: readonly AmbientTone[] | false;
4
+ };
5
+ export declare function resolveCssVarNames(overrides?: AmbientCssVarConfig | null): ResolvedCssVars;
9
6
  export declare function resolveTargetElement(target: AmbientTarget): HTMLElement | null;
7
+ /** `colors` keys are custom property names; a bare name gets `--color-`. */
10
8
  export declare function normalizeColorMap(colors: Record<string, string>): Record<string, string>;
11
9
  export declare function applyScopedCssVariables(element: HTMLElement, varMap: Record<string, string>): () => void;
12
- export declare function resolveAmbientVarMap({ colors, extractedBlack, extractedPrimary, image, tintGlobals, }: {
10
+ /** Every variable a palette writes: shadow, roles, `on` colours, ramps, regions. */
11
+ export declare function paletteVarMap(palette: AmbientPalette | null | undefined, names?: ResolvedCssVars): Record<string, string>;
12
+ export declare function resolveAmbientVarMap({ colors, cssVars, image, palette, }: {
13
13
  colors?: Record<string, string> | null;
14
- extractedBlack?: string;
15
- extractedPrimary?: string;
14
+ cssVars?: AmbientCssVarConfig | null;
16
15
  image?: AmbientImageSource;
17
- tintGlobals?: boolean;
16
+ palette?: AmbientPalette | null;
18
17
  }): Record<string, string>;
19
18
  //# sourceMappingURL=dom.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/dom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEjE,eAAO,MAAM,gBAAgB;;;;;;EAMlB,CAAC;AAEZ,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,GACpB,WAAW,GAAG,IAAI,CAOpB;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAaxB;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,IAAI,CAiBZ;AAED,wBAAgB,oBAAoB,CAAC,EACnC,MAAa,EACb,cAAmB,EACnB,gBAAqB,EACrB,KAAY,EACZ,WAAkB,GACnB,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAezB"}
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/dom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,WAAW,EACZ,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAAG;IACjD,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,KAAK,CAAC;CACvC,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,SAAS,CAAC,EAAE,mBAAmB,GAAG,IAAI,GACrC,eAAe,CAGjB;AAOD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,GACpB,WAAW,GAAG,IAAI,CAOpB;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOxB;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,IAAI,CAiBZ;AAED,oFAAoF;AACpF,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,EAC1C,KAAK,GAAE,eAAsC,GAC5C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoBxB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,MAAa,EACb,OAAc,EACd,KAAY,EACZ,OAAc,GACf,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACrC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CACjC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMzB"}
@@ -1,13 +1,13 @@
1
- import type { AmbientExtractOptions, AmbientImageSource, AmbientPalette, OklchColor } from "./types";
1
+ import type { AmbientExtractOptions, AmbientImageSource, AmbientPalette } from "./types";
2
2
  /**
3
- * Picks the most representative accent of an image.
4
- *
5
- * Pixels vote for their hue with a weight that grows with chroma (vivid pixels
6
- * beat muddy ones) and fades toward very dark / very light pixels. Images
7
- * without meaningful colour resolve to a neutral (`c: 0`) instead of an
8
- * invented hue.
3
+ * Seeds the client cache with a palette computed elsewhere (usually on the
4
+ * server), so the same image is never extracted again in this tab.
9
5
  */
10
- export declare function sampleImageData(imageData: ImageData): OklchColor;
11
- export declare function createDefaultPalette(fallback?: AmbientPalette | null): AmbientPalette;
12
- export declare function extractPaletteFromImage(imageSource: AmbientImageSource, options?: AmbientExtractOptions): Promise<AmbientPalette>;
6
+ export declare function primeAmbientPalette(src: string, palette: AmbientPalette): void;
7
+ export declare function getCachedAmbientPalette(src: string): AmbientPalette | null;
8
+ /**
9
+ * Extracts the palette of an image (cached, with concurrent requests for the
10
+ * same image shared). Resolves `null` on any failure and never throws.
11
+ */
12
+ export declare function extractPaletteFromImage(imageSource: AmbientImageSource, options?: AmbientExtractOptions): Promise<AmbientPalette | null>;
13
13
  //# sourceMappingURL=extractor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/extractor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,UAAU,EACX,MAAM,SAAS,CAAC;AAUjB;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAsFhE;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,CAAC,EAAE,cAAc,GAAG,IAAI,GAC/B,cAAc,CAKhB;AAsED,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,kBAAkB,EAC/B,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,cAAc,CAAC,CAqBzB"}
1
+ {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/extractor.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACf,MAAM,SAAS,CAAC;AAkBjB;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAE9E;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAE1E;AAuJD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,kBAAkB,EAC/B,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAyBhC"}
@@ -2,7 +2,7 @@ import type { AmbientConfig, AmbientContextValue, AmbientExtractOptions, Ambient
2
2
  export declare function useStableObject<T extends object | null | undefined>(value: T): T;
3
3
  export declare function useAmbientColor(imageSource: AmbientImageSource, options?: AmbientExtractOptions | null): {
4
4
  isExtracting: boolean;
5
- palette: AmbientPalette;
5
+ palette: AmbientPalette | null;
6
6
  };
7
7
  export declare function useAmbientTheme(config?: AmbientConfig | string | null): AmbientState;
8
8
  export declare function useAmbient(configOrImage?: AmbientConfig | string | null): AmbientContextValue;
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/hooks.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAMhF;AAED,wBAAgB,eAAe,CAC7B,WAAW,EAAE,kBAAkB,EAC/B,OAAO,GAAE,qBAAqB,GAAG,IAAW,GAC3C;IAAE,YAAY,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAoDpD;AAED,wBAAgB,eAAe,CAC7B,MAAM,GAAE,aAAa,GAAG,MAAM,GAAG,IAAW,GAC3C,YAAY,CAmFd;AAED,wBAAgB,UAAU,CACxB,aAAa,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,GAC5C,mBAAmB,CAqBrB"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/hooks.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAMhF;AAED,wBAAgB,eAAe,CAC7B,WAAW,EAAE,kBAAkB,EAC/B,OAAO,GAAE,qBAAqB,GAAG,IAAW,GAC3C;IAAE,YAAY,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAA;CAAE,CA6C3D;AAED,wBAAgB,eAAe,CAC7B,MAAM,GAAE,aAAa,GAAG,MAAM,GAAG,IAAW,GAC3C,YAAY,CAgFd;AAED,wBAAgB,UAAU,CACxB,aAAa,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,GAC5C,mBAAmB,CAqBrB"}
@@ -1,7 +1,9 @@
1
- export { AMBIENT_DEFAULTS, ambientTheme, } from "./constants";
2
- export { COLOR_EXTRACT_CONFIG, derivePalette, oklchToString, rgbToOklch, srgbToLinear, } from "./color";
3
- export { createDefaultPalette, extractPaletteFromImage, sampleImageData, } from "./extractor";
4
- export { AMBIENT_CSS_VARS, applyScopedCssVariables, normalizeColorMap, resolveAmbientVarMap, resolveTargetElement, } from "./dom";
1
+ export { ambientTheme } from "./constants";
2
+ export { AMBIENT_REGIONS, AMBIENT_ROLES, AMBIENT_TONES, DEFAULT_ANALYSIS, DEFAULT_CSS_VAR_NAMES, configureAmbient, getAmbientSettings, } from "./settings";
3
+ export { contrastRatio, formatOklch, maxChroma, onColorFor, srgbToOklab, toneOf, } from "./oklab";
4
+ export { analyzeAmbientPixels, findContentBounds } from "./analyze";
5
+ export { extractPaletteFromImage, getCachedAmbientPalette, primeAmbientPalette, } from "./extractor";
6
+ export { applyScopedCssVariables, normalizeColorMap, paletteVarMap, resolveAmbientVarMap, resolveCssVarNames, resolveTargetElement, } from "./dom";
5
7
  export { ambientModule, defineAmbient, resolvePageAmbientTheme, } from "./module";
6
8
  export { AmbientContext, AmbientProvider, } from "./context";
7
9
  export { useAmbient, useAmbientColor, useAmbientTheme, } from "./hooks";