@absolutejs/absolute 0.19.0-beta.999 → 0.20.0-beta.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 (341) hide show
  1. package/LICENSE +21 -13
  2. package/README.md +48 -2
  3. package/dist/angular/browser.js +82 -77
  4. package/dist/angular/browser.js.map +11 -11
  5. package/dist/angular/components/constants.js +43 -0
  6. package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
  7. package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
  8. package/dist/angular/hmrPreserveCore.ts +132 -134
  9. package/dist/angular/index.js +1719 -844
  10. package/dist/angular/index.js.map +34 -26
  11. package/dist/angular/server.js +1620 -768
  12. package/dist/angular/server.js.map +28 -20
  13. package/dist/build.js +4935 -2593
  14. package/dist/build.js.map +72 -57
  15. package/dist/cli/config/client.js +578 -0
  16. package/dist/cli/config/server.js +39587 -0
  17. package/dist/cli/htmx/htmx.min.js +1 -0
  18. package/dist/cli/index.js +16828 -3511
  19. package/dist/client/index.js +49 -46
  20. package/dist/client/index.js.map +12 -12
  21. package/dist/core/streamingSlotRegistrar.js +1 -19
  22. package/dist/core/streamingSlotRegistrar.js.map +2 -2
  23. package/dist/core/streamingSlotRegistry.js +1 -19
  24. package/dist/core/streamingSlotRegistry.js.map +2 -2
  25. package/dist/dev/client/cssUtils.ts +98 -41
  26. package/dist/dev/client/domState.ts +2 -0
  27. package/dist/dev/client/errorOverlay.ts +14 -13
  28. package/dist/dev/client/handlers/angularHmrShim.ts +20 -20
  29. package/dist/dev/client/handlers/angularRemount.ts +74 -55
  30. package/dist/dev/client/handlers/angularRemountWiring.ts +1 -2
  31. package/dist/dev/client/handlers/html.ts +144 -41
  32. package/dist/dev/client/handlers/htmx.ts +43 -8
  33. package/dist/dev/client/handlers/react.ts +114 -32
  34. package/dist/dev/client/handlers/rebuild.ts +28 -8
  35. package/dist/dev/client/handlers/svelte.ts +92 -51
  36. package/dist/dev/client/handlers/vue.ts +36 -45
  37. package/dist/dev/client/hmrClient.ts +101 -26
  38. package/dist/dev/client/hmrTiming.ts +141 -0
  39. package/dist/dev/client/hmrToast.ts +22 -24
  40. package/dist/dev/client/reactRefreshSetup.ts +4 -0
  41. package/dist/dev/client/vendor/reactRefreshRuntime.d.ts +12 -0
  42. package/dist/dev/client/vendor/reactRefreshRuntime.js +313 -0
  43. package/dist/dev/serverBootstrap.js +45 -0
  44. package/dist/index.js +7153 -3224
  45. package/dist/index.js.map +118 -86
  46. package/dist/islands/browser.js +1 -19
  47. package/dist/islands/browser.js.map +3 -3
  48. package/dist/islands/index.js +709 -120
  49. package/dist/islands/index.js.map +18 -13
  50. package/dist/mobile/browser.js +428 -0
  51. package/dist/mobile/browser.js.map +12 -0
  52. package/dist/mobile/index.js +3058 -0
  53. package/dist/mobile/index.js.map +35 -0
  54. package/dist/react/browser.js +13 -62
  55. package/dist/react/browser.js.map +5 -6
  56. package/dist/react/components/browser/index.js +23 -13
  57. package/dist/react/components/index.js +30 -34
  58. package/dist/react/components/index.js.map +8 -7
  59. package/dist/react/hooks/index.js +1 -19
  60. package/dist/react/hooks/index.js.map +3 -3
  61. package/dist/react/index.js +1643 -679
  62. package/dist/react/index.js.map +29 -20
  63. package/dist/react/jsxDevRuntimeCompat.js +22 -20
  64. package/dist/react/jsxDevRuntimeCompat.js.map +5 -4
  65. package/dist/react/jsxRuntimeCompat.js +90 -0
  66. package/dist/react/jsxRuntimeCompat.js.map +10 -0
  67. package/dist/react/router/browser.js +77 -0
  68. package/dist/react/router/browser.js.map +10 -0
  69. package/dist/react/router/index.js +77 -0
  70. package/dist/react/router/index.js.map +10 -0
  71. package/dist/react/server.js +950 -565
  72. package/dist/react/server.js.map +16 -11
  73. package/dist/src/angular/components/constants.d.ts +21 -0
  74. package/dist/src/angular/hmrPreserveCore.d.ts +7 -20
  75. package/dist/src/angular/islands.d.ts +1 -1
  76. package/dist/src/angular/pageHandler.d.ts +2 -0
  77. package/dist/src/angular/ssrRender.d.ts +4 -1
  78. package/dist/src/build/bunStringRawUnicodePlugin.d.ts +12 -0
  79. package/dist/src/build/chainInlineSourcemaps.d.ts +1 -0
  80. package/dist/src/build/compileAngular.d.ts +5 -7
  81. package/dist/src/build/compileSvelte.d.ts +3 -0
  82. package/dist/src/build/compileVue.d.ts +3 -1
  83. package/dist/src/build/generateReactIndexes.d.ts +1 -0
  84. package/dist/src/build/islandRegistryTransform.d.ts +17 -0
  85. package/dist/src/build/maskLiterals.d.ts +28 -0
  86. package/dist/src/build/parseVueSpaRoutes.d.ts +5 -0
  87. package/dist/src/build/resolveBuildMode.d.ts +7 -0
  88. package/dist/src/build/serverExternals.d.ts +14 -0
  89. package/dist/src/build/spaSideManifests.d.ts +16 -0
  90. package/dist/src/build/tailwindCompiler.d.ts +0 -1
  91. package/dist/src/cli/add/dependencies.d.ts +13 -0
  92. package/dist/src/cli/config/absolute/AbsoluteConfigPanel.d.ts +6 -0
  93. package/dist/src/cli/config/absolute/editAbsoluteConfig.d.ts +5 -0
  94. package/dist/src/cli/config/absolute/resolveAbsoluteConfig.d.ts +19 -0
  95. package/dist/src/cli/config/auth/AuthPanel.d.ts +6 -0
  96. package/dist/src/cli/config/auth/authCatalog.d.ts +10 -0
  97. package/dist/src/cli/config/auth/authScaffolds.d.ts +16 -0
  98. package/dist/src/cli/config/auth/editAuthConfig.d.ts +5 -0
  99. package/dist/src/cli/config/auth/resolveAuthSettings.d.ts +14 -0
  100. package/dist/src/cli/config/auth/resolveAuthState.d.ts +2 -0
  101. package/dist/src/cli/config/auth/scaffoldAuthFeature.d.ts +6 -0
  102. package/dist/src/cli/config/client.d.ts +1 -0
  103. package/dist/src/cli/config/configCert.d.ts +12 -0
  104. package/dist/src/cli/config/eslint/EslintPanel.d.ts +6 -0
  105. package/dist/src/cli/config/eslint/configAst.d.ts +18 -0
  106. package/dist/src/cli/config/eslint/editConfigRule.d.ts +6 -0
  107. package/dist/src/cli/config/eslint/eslintStyles.d.ts +1 -0
  108. package/dist/src/cli/config/eslint/resolveConfig.d.ts +3 -0
  109. package/dist/src/cli/config/eslint/serializeValue.d.ts +9 -0
  110. package/dist/src/cli/config/guards.d.ts +4 -0
  111. package/dist/src/cli/config/integrations/IntegrationsPanel.d.ts +6 -0
  112. package/dist/src/cli/config/packageJson/PackageJsonPanel.d.ts +6 -0
  113. package/dist/src/cli/config/packageJson/editPackageJson.d.ts +9 -0
  114. package/dist/src/cli/config/packageJson/resolvePackageJson.d.ts +8 -0
  115. package/dist/src/cli/config/page/ConfigShell.d.ts +6 -0
  116. package/dist/src/cli/config/page/FieldEditor.d.ts +9 -0
  117. package/dist/src/cli/config/page/PanelHost.d.ts +6 -0
  118. package/dist/src/cli/config/page/configStyles.d.ts +1 -0
  119. package/dist/src/cli/config/panels.d.ts +7 -0
  120. package/dist/src/cli/config/prettier/PrettierPanel.d.ts +6 -0
  121. package/dist/src/cli/config/prettier/editPrettier.d.ts +5 -0
  122. package/dist/src/cli/config/prettier/resolvePrettier.d.ts +11 -0
  123. package/dist/src/cli/config/schema/fromJsonSchema.d.ts +3 -0
  124. package/dist/src/cli/config/schema/fromType.d.ts +1 -0
  125. package/dist/src/cli/config/schema/serialize.d.ts +1 -0
  126. package/dist/src/cli/config/server.d.ts +527 -0
  127. package/dist/src/cli/config/tsconfig/TsconfigPanel.d.ts +6 -0
  128. package/dist/src/cli/config/tsconfig/editTsconfig.d.ts +5 -0
  129. package/dist/src/cli/config/tsconfig/resolveTsconfig.d.ts +8 -0
  130. package/dist/src/cli/config/tsconfig/tsconfigStyles.d.ts +1 -0
  131. package/dist/src/cli/discoverInstances.d.ts +5 -0
  132. package/dist/src/cli/elysiaOpenApiTypeboxPlugin.d.ts +8 -0
  133. package/dist/src/cli/generate/componentTemplates.d.ts +7 -0
  134. package/dist/src/cli/generate/context.d.ts +30 -0
  135. package/dist/src/cli/generate/cssStrategy.d.ts +20 -0
  136. package/dist/src/cli/generate/frameworkKey.d.ts +3 -0
  137. package/dist/src/cli/generate/frameworks.d.ts +40 -0
  138. package/dist/src/cli/generate/generateApi.d.ts +3 -0
  139. package/dist/src/cli/generate/generateComponent.d.ts +4 -0
  140. package/dist/src/cli/generate/generatePage.d.ts +4 -0
  141. package/dist/src/cli/generate/naming.d.ts +5 -0
  142. package/dist/src/cli/generate/navData.d.ts +10 -0
  143. package/dist/src/cli/generate/outcome.d.ts +17 -0
  144. package/dist/src/cli/generate/pageTemplates.d.ts +11 -0
  145. package/dist/src/cli/generate/routeWiring.d.ts +40 -0
  146. package/dist/src/cli/generate/staticNav.d.ts +5 -0
  147. package/dist/src/cli/heapDiff.d.ts +1 -0
  148. package/dist/src/cli/htmx/install.d.ts +6 -0
  149. package/dist/src/cli/inspectData.d.ts +12 -0
  150. package/dist/src/cli/inspectTui.d.ts +1 -0
  151. package/dist/src/cli/instanceStatus.d.ts +22 -0
  152. package/dist/src/cli/integrations/addPlugin.d.ts +8 -0
  153. package/dist/src/cli/integrations/catalog.d.ts +20 -0
  154. package/dist/src/cli/psTui.d.ts +1 -0
  155. package/dist/src/cli/scripts/add.d.ts +1 -0
  156. package/dist/src/cli/scripts/analyze.d.ts +1 -0
  157. package/dist/src/cli/scripts/api.d.ts +1 -0
  158. package/dist/src/cli/scripts/build.d.ts +1 -1
  159. package/dist/src/cli/scripts/db.d.ts +20 -0
  160. package/dist/src/cli/scripts/dev.d.ts +5 -1
  161. package/dist/src/cli/scripts/doctor.d.ts +1 -0
  162. package/dist/src/cli/scripts/env.d.ts +7 -0
  163. package/dist/src/cli/scripts/eslint.d.ts +37 -2
  164. package/dist/src/cli/scripts/eslintChunked.d.ts +37 -0
  165. package/dist/src/cli/scripts/generate.d.ts +1 -0
  166. package/dist/src/cli/scripts/htmx.d.ts +1 -0
  167. package/dist/src/cli/scripts/inspect.d.ts +1 -0
  168. package/dist/src/cli/scripts/islands.d.ts +1 -0
  169. package/dist/src/cli/scripts/lintProof.d.ts +42 -0
  170. package/dist/src/cli/scripts/logs.d.ts +1 -0
  171. package/dist/src/cli/scripts/ls.d.ts +1 -0
  172. package/dist/src/cli/scripts/mem.d.ts +1 -0
  173. package/dist/src/cli/scripts/mobile.d.ts +1 -0
  174. package/dist/src/cli/scripts/prettier.d.ts +2 -0
  175. package/dist/src/cli/scripts/ps.d.ts +1 -0
  176. package/dist/src/cli/scripts/remove.d.ts +1 -0
  177. package/dist/src/cli/scripts/routes.d.ts +1 -0
  178. package/dist/src/cli/scripts/start.d.ts +6 -1
  179. package/dist/src/cli/scripts/tunnelRelay.d.ts +9 -0
  180. package/dist/src/cli/scripts/workspace.d.ts +3 -1
  181. package/dist/src/cli/serverBundleExternals.d.ts +2 -0
  182. package/dist/src/cli/tuiPrimitives.d.ts +14 -0
  183. package/dist/src/cli/typeGraphCoherence.d.ts +32 -0
  184. package/dist/src/cli/utils.d.ts +3 -1
  185. package/dist/src/cli/workspaceTui.d.ts +2 -1
  186. package/dist/src/client/hydrators/react.d.ts +1 -1
  187. package/dist/src/client/hydrators/svelte.d.ts +1 -1
  188. package/dist/src/client/hydrators/vue.d.ts +1 -1
  189. package/dist/src/client/islandStore.d.ts +3 -3
  190. package/dist/src/client/preserveIslandMarkup.d.ts +4 -1
  191. package/dist/src/constants.d.ts +21 -0
  192. package/dist/src/core/angularServerModule.d.ts +1 -0
  193. package/dist/src/core/build.d.ts +11 -3
  194. package/dist/src/core/devRouteRegistrationCallsite.d.ts +1 -5
  195. package/dist/src/core/index.d.ts +1 -0
  196. package/dist/src/core/pageResponseCache.d.ts +23 -0
  197. package/dist/src/core/prepare.d.ts +192 -154
  198. package/dist/src/core/requestContext.d.ts +18 -0
  199. package/dist/src/dev/angular/fastHmrCompiler.d.ts +5 -3
  200. package/dist/src/dev/angular/hmrCompiler.d.ts +1 -1
  201. package/dist/src/dev/angular/resolveOwningComponents.d.ts +1 -1
  202. package/dist/src/dev/clientManager.d.ts +10 -1
  203. package/dist/src/dev/configResolver.d.ts +2 -0
  204. package/dist/src/dev/moduleMapper.d.ts +1 -1
  205. package/dist/src/dev/moduleServer.d.ts +2 -1
  206. package/dist/src/dev/pathUtils.d.ts +1 -1
  207. package/dist/src/dev/reactComponentClassifier.d.ts +1 -1
  208. package/dist/src/dev/rebuildTrigger.d.ts +4 -0
  209. package/dist/src/dev/requestInspector.d.ts +31 -0
  210. package/dist/src/dev/serverBootstrap.d.ts +1 -0
  211. package/dist/src/dev/serverEntryWatcher.d.ts +3 -3
  212. package/dist/src/dev/tunnel/client.d.ts +20 -0
  213. package/dist/src/dev/tunnel/protocol.d.ts +85 -0
  214. package/dist/src/dev/tunnel/relay.d.ts +28 -0
  215. package/dist/src/dev/webSocket.d.ts +1 -1
  216. package/dist/src/mobile/androidConformance.d.ts +42 -0
  217. package/dist/src/mobile/androidEmulatorController.d.ts +99 -0
  218. package/dist/src/mobile/androidNativeWatcher.d.ts +19 -0
  219. package/dist/src/mobile/androidRelease.d.ts +47 -0
  220. package/dist/src/mobile/androidWebView.d.ts +46 -0
  221. package/dist/src/mobile/artifactStore.d.ts +47 -0
  222. package/dist/src/mobile/associationFiles.d.ts +49 -0
  223. package/dist/src/mobile/browser.d.ts +2 -0
  224. package/dist/src/mobile/buildMetadata.d.ts +10 -0
  225. package/dist/src/mobile/buildPipeline.d.ts +8 -0
  226. package/dist/src/mobile/buildRelease.d.ts +24 -0
  227. package/dist/src/mobile/capacitorBundle.d.ts +28 -0
  228. package/dist/src/mobile/capacitorProject.d.ts +9 -0
  229. package/dist/src/mobile/client.d.ts +35 -0
  230. package/dist/src/mobile/compatibilityDispatcher.d.ts +26 -0
  231. package/dist/src/mobile/config.d.ts +16 -0
  232. package/dist/src/mobile/emulatorDoctor.d.ts +25 -0
  233. package/dist/src/mobile/emulatorInstaller.d.ts +41 -0
  234. package/dist/src/mobile/index.d.ts +19 -0
  235. package/dist/src/mobile/materializedBundle.d.ts +36 -0
  236. package/dist/src/mobile/nativeDeepLinks.d.ts +5 -0
  237. package/dist/src/mobile/pageProtocol.d.ts +89 -0
  238. package/dist/src/mobile/producerContext.d.ts +4 -0
  239. package/dist/src/mobile/producerContextState.d.ts +10 -0
  240. package/dist/src/mobile/releaseArtifact.d.ts +75 -0
  241. package/dist/src/mobile/releaseDoctor.d.ts +13 -0
  242. package/dist/src/mobile/routeMatcher.d.ts +3 -0
  243. package/dist/src/mobile/routeMetadataTransform.d.ts +13 -0
  244. package/dist/src/mobile/shellBootstrap.d.ts +1 -0
  245. package/dist/src/mobile/transport.d.ts +31 -0
  246. package/dist/src/plugins/devtoolsJson.d.ts +6 -47
  247. package/dist/src/plugins/hmr.d.ts +22 -96
  248. package/dist/src/plugins/imageOptimizer.d.ts +150 -62
  249. package/dist/src/plugins/networking.d.ts +2 -2
  250. package/dist/src/plugins/openApiPlugin.d.ts +4 -0
  251. package/dist/src/plugins/telemetryPlugin.d.ts +36 -0
  252. package/dist/src/react/browser.d.ts +0 -2
  253. package/dist/src/react/hooks/useMediaQuery.d.ts +1 -1
  254. package/dist/src/react/index.d.ts +0 -2
  255. package/dist/src/react/jsxDevRuntimeCompat.d.ts +1 -1
  256. package/dist/src/react/jsxRuntimeCompat.d.ts +7 -0
  257. package/dist/src/react/pageHandler.d.ts +8 -0
  258. package/dist/src/react/router/UniversalRouter.d.ts +43 -0
  259. package/dist/src/react/router/browser.d.ts +2 -0
  260. package/dist/src/react/router/index.d.ts +2 -0
  261. package/dist/src/svelte/pageHandler.d.ts +5 -0
  262. package/dist/src/svelte/router/hashMode.d.ts +1 -6
  263. package/dist/src/svelte/router/matchPath.d.ts +4 -24
  264. package/dist/src/svelte/router/page.svelte.d.ts +1 -10
  265. package/dist/src/svelte/router/prefetchCache.d.ts +2 -6
  266. package/dist/src/utils/cleanup.d.ts +1 -0
  267. package/dist/src/utils/defineConvention.d.ts +2 -2
  268. package/dist/src/utils/defineEnv.d.ts +4 -4
  269. package/dist/src/utils/formatBytes.d.ts +2 -0
  270. package/dist/src/utils/generatedDir.d.ts +1 -1
  271. package/dist/src/utils/iconVersion.d.ts +5 -0
  272. package/dist/src/utils/imageProcessing.d.ts +1 -1
  273. package/dist/src/utils/index.d.ts +2 -0
  274. package/dist/src/utils/inlinePageCss.d.ts +9 -0
  275. package/dist/src/utils/instanceRegistry.d.ts +13 -0
  276. package/dist/src/utils/isTestSourcePath.d.ts +1 -0
  277. package/dist/src/utils/jsonLd.d.ts +1 -1
  278. package/dist/src/utils/loadConfig.d.ts +11 -3
  279. package/dist/src/utils/logger.d.ts +2 -0
  280. package/dist/src/utils/portScan.d.ts +22 -0
  281. package/dist/src/utils/projectRoot.d.ts +17 -0
  282. package/dist/src/utils/resolveConvention.d.ts +1 -1
  283. package/dist/src/utils/resolveDevPort.d.ts +4 -1
  284. package/dist/src/utils/runtimeMode.d.ts +1 -1
  285. package/dist/src/utils/spaRouteCss.d.ts +10 -0
  286. package/dist/src/utils/spaRouteManifest.d.ts +8 -0
  287. package/dist/src/utils/stripStringsAndComments.d.ts +18 -0
  288. package/dist/src/utils/userAgentFunctions.d.ts +1 -1
  289. package/dist/src/utils/vueCompiler.d.ts +1 -0
  290. package/dist/src/vue/components/Image.d.ts +2 -2
  291. package/dist/src/vue/defineVuePage.d.ts +1 -11
  292. package/dist/src/vue/index.d.ts +3 -0
  293. package/dist/src/vue/pageHandler.d.ts +5 -0
  294. package/dist/src/vue/resolveGeneratedVueModulePath.d.ts +1 -0
  295. package/dist/src/vue/teleports.d.ts +2 -0
  296. package/dist/src/vue/useResource.d.ts +65 -0
  297. package/dist/svelte/browser.js +1 -19
  298. package/dist/svelte/browser.js.map +3 -3
  299. package/dist/svelte/components/Head.svelte +7 -1
  300. package/dist/svelte/index.js +1281 -543
  301. package/dist/svelte/index.js.map +27 -19
  302. package/dist/svelte/router/Link.svelte.d.ts +3 -3
  303. package/dist/svelte/router/Route.svelte.d.ts +5 -5
  304. package/dist/svelte/router/Router.svelte.d.ts +3 -3
  305. package/dist/svelte/router/hashMode.ts +6 -12
  306. package/dist/svelte/router/matchPath.ts +44 -61
  307. package/dist/svelte/router/page.d.ts +1 -10
  308. package/dist/svelte/router/page.js +6 -6
  309. package/dist/svelte/router/prefetchCache.ts +21 -23
  310. package/dist/svelte/router/viewTransitions.ts +22 -12
  311. package/dist/svelte/server.js +697 -565
  312. package/dist/svelte/server.js.map +14 -11
  313. package/dist/types/absoluteConfig.d.ts +22 -0
  314. package/dist/types/angular.d.ts +4 -1
  315. package/dist/types/authPanel.d.ts +62 -0
  316. package/dist/types/build.d.ts +116 -0
  317. package/dist/types/cli.d.ts +57 -0
  318. package/dist/types/config.d.ts +52 -0
  319. package/dist/types/eslintConfig.d.ts +68 -0
  320. package/dist/types/globals.d.ts +31 -10
  321. package/dist/types/image.d.ts +2 -0
  322. package/dist/types/index.d.ts +1 -0
  323. package/dist/types/integrationsPanel.d.ts +29 -0
  324. package/dist/types/messages.d.ts +12 -0
  325. package/dist/types/packageJson.d.ts +74 -0
  326. package/dist/types/packageJsonPanel.d.ts +29 -0
  327. package/dist/types/prettier.d.ts +26 -0
  328. package/dist/types/tsconfig.d.ts +31 -0
  329. package/dist/types/vue.d.ts +13 -15
  330. package/dist/vue/browser.js +14 -36
  331. package/dist/vue/browser.js.map +5 -5
  332. package/dist/vue/components/Image.js +3 -20
  333. package/dist/vue/components/Image.js.map +3 -3
  334. package/dist/vue/components/index.js +3 -20
  335. package/dist/vue/components/index.js.map +3 -3
  336. package/dist/vue/index.js +1573 -620
  337. package/dist/vue/index.js.map +34 -22
  338. package/dist/vue/server.js +800 -520
  339. package/dist/vue/server.js.map +17 -11
  340. package/package.json +145 -68
  341. package/dist/src/react/UniversalRouter.d.ts +0 -12
package/LICENSE CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  **Licensor:** Alex Kahn
4
4
 
5
- **Licensed Work:** AbsoluteJS (https://github.com/absolutejs/absolutejs)
5
+ **Licensed Work:** @absolutejs/absolutejs (https://github.com/absolutejs/absolutejs)
6
6
 
7
- **Change Date:** February 16, 2036
7
+ **Change Date:** May 29, 2030
8
8
 
9
9
  **Change License:** Apache License, Version 2.0
10
10
 
@@ -22,15 +22,14 @@ You may use the Licensed Work in production, provided your use does not include
22
22
  any of the following:
23
23
 
24
24
  1. **Offering a Competing Service.** You may not offer the Licensed Work, or
25
- any derivative of it, to third parties as a hosted or managed service that
26
- competes with the Licensed Work itself (for example, a "framework-as-a-service"
27
- platform, deployment service, or cloud offering where AbsoluteJS or a
28
- substantial portion of its functionality is a primary component of the value
29
- provided to users).
25
+ any derivative or substantial portion of it, to third parties as a hosted or
26
+ managed service that competes with a managed AbsoluteJS hosting, deployment, or framework-as-a-service platform (including, but not limited to, services like Vercel, Render, Netlify, Fly.io, or Railway). This includes any
27
+ product whose primary value to its users is the functionality the Licensed
28
+ Work provides.
30
29
 
31
30
  2. **Resale or Redistribution as a Standalone Product.** You may not sell,
32
31
  license, or distribute the Licensed Work, or any derivative or fork of it,
33
- as a standalone commercial product or framework.
32
+ as a standalone commercial product.
34
33
 
35
34
  3. **Removal of Attribution.** Any derivative work, fork, or redistribution of
36
35
  the Licensed Work must prominently credit AbsoluteJS and include a link to
@@ -38,12 +37,14 @@ any of the following:
38
37
 
39
38
  For clarity, the following uses are expressly permitted:
40
39
 
41
- - Using AbsoluteJS to build and deploy your own applications, websites, or
42
- SaaS products (whether commercial or non-commercial).
43
- - Using AbsoluteJS as a dependency in commercial software that you build and sell,
44
- as long as the software is not itself a competing framework or hosting service.
40
+ - Using the Licensed Work to build and operate your own applications, websites,
41
+ internal tools, or SaaS products (whether commercial or non-commercial), so
42
+ long as the Licensed Work itself is not the primary product you are selling.
43
+ - Using the Licensed Work as a dependency in commercial software you build and
44
+ sell, as long as the software is not itself a competing managed service of
45
+ the kind described in clause 1.
45
46
  - Providing consulting, development, or professional services to clients using
46
- AbsoluteJS.
47
+ the Licensed Work.
47
48
  - Forking and modifying the Licensed Work for your own internal use, provided
48
49
  attribution is maintained.
49
50
 
@@ -54,6 +55,13 @@ specify by written notice, the Licensed Work will be made available under the
54
55
  Change License (Apache License, Version 2.0). Until the Change Date, the terms
55
56
  of this Business Source License 1.1 apply.
56
57
 
58
+ ### Trademark
59
+
60
+ This license does not grant you any rights to use the "AbsoluteJS" or
61
+ "@absolutejs" name, logo, or any related trademarks. Forks and derivative works
62
+ must not be named or branded in a manner that suggests endorsement by or
63
+ affiliation with AbsoluteJS or the Licensor.
64
+
57
65
  ### Notices
58
66
 
59
67
  You must not remove or obscure any licensing, copyright, or other notices
package/README.md CHANGED
@@ -39,7 +39,7 @@ bun add @absolutejs/absolute
39
39
 
40
40
  ```ts
41
41
  // example/server.ts
42
- import { staticPlugin } from '@elysiajs/static';
42
+ import { staticPlugin } from '@elysia/static';
43
43
  import { Elysia } from 'elysia';
44
44
  import { file } from 'bun';
45
45
  import { build } from 'absolutejs/core/build';
@@ -59,7 +59,7 @@ const manifest = await build({
59
59
  htmlDirectory: 'example/html',
60
60
  htmxDirectory: 'example/htmx',
61
61
  reactDirectory: 'example/react',
62
- svelteDirectory: 'example/svelte',
62
+ svelteDirectory: 'example/svelte'
63
63
  });
64
64
 
65
65
  if (!manifest) throw new Error('Manifest generation failed');
@@ -105,6 +105,26 @@ export const server = new Elysia()
105
105
  2. Route handlers (`handleReactPageRequest`, `handleSveltePageRequest`, …) stream HTML and inject scripts/assets based on that manifest.
106
106
  3. The static plugin serves all compiled files from `/build`.
107
107
 
108
+ ### Immutable production images
109
+
110
+ Build production assets and the server bundle while constructing the image,
111
+ then launch that prepared output without writing to it at runtime:
112
+
113
+ ```bash
114
+ absolute prepare src/server.ts --outdir build
115
+ absolute start src/server.ts --outdir build --prebuilt
116
+ ```
117
+
118
+ If image optimization is enabled in a read-only container, configure its
119
+ runtime cache on a bounded writable filesystem such as a `tmpfs`:
120
+
121
+ ```ts
122
+ export default defineConfig({
123
+ buildDirectory: 'build',
124
+ images: { cacheDirectory: '/tmp/absolutejs-image-cache' }
125
+ });
126
+ ```
127
+
108
128
  ---
109
129
 
110
130
  ## Plugin System
@@ -116,6 +136,32 @@ Absolute JS piggybacks on the [Elysia plugin API](https://elysiajs.com/plugins).
116
136
  | **`absolute-auth`** | Full OAuth2 flow configured with 66 providers and allows full customizability with event handlers |
117
137
  | **`networkingPlugin`** | Starts your Elysia server with HOST/PORT defaults from environment variables |
118
138
 
139
+ ### Elysia composition contract
140
+
141
+ This contract is written for application authors and coding agents. It avoids
142
+ the runaway TypeScript instantiation cost that can occur when one inferred
143
+ Elysia application is repeatedly extended and re-aliased.
144
+
145
+ - Start every independently owned route surface from a named `new Elysia(...)`.
146
+ - Give each surface its shared context and plugins explicitly. Do not create
147
+ `adminApp` by extending `publicApp`, for example.
148
+ - Prefer one shallow `.use([auth, metrics])` over a long sequence of `.use()`
149
+ calls. `absolute/elysia-composition-boundaries` enforces this and safely
150
+ auto-fixes comment-free chains.
151
+ - Mount independent route surfaces at the platform root. Export each real
152
+ sub-application type for Eden consumers instead of exporting an accumulated
153
+ server alias.
154
+ - Keep `elysia` and `@sinclair/typebox` on one physical installed identity
155
+ across the workspace. Run `absolute doctor`; `absolute doctor --fix` aligns
156
+ root overrides and rebuilds Bun's dependency graph when peer contexts drift.
157
+
158
+ After a dependency change, measure a cold typecheck once. Warm incremental
159
+ checks can hide an unhealthy graph:
160
+
161
+ ```bash
162
+ /usr/bin/time -v bun run tsc --noEmit --incremental false
163
+ ```
164
+
119
165
  ---
120
166
 
121
167
  ## Configuration Philosophy
@@ -3,7 +3,6 @@ var __create = Object.create;
3
3
  var __getProtoOf = Object.getPrototypeOf;
4
4
  var __defProp = Object.defineProperty;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
7
  function __accessProp(key) {
9
8
  return this[key];
@@ -30,23 +29,6 @@ var __toESM = (mod, isNodeMode, target) => {
30
29
  cache.set(mod, to);
31
30
  return to;
32
31
  };
33
- var __toCommonJS = (from) => {
34
- var entry = (__moduleCache ??= new WeakMap).get(from), desc;
35
- if (entry)
36
- return entry;
37
- entry = __defProp({}, "__esModule", { value: true });
38
- if (from && typeof from === "object" || typeof from === "function") {
39
- for (var key of __getOwnPropNames(from))
40
- if (!__hasOwnProp.call(entry, key))
41
- __defProp(entry, key, {
42
- get: __accessProp.bind(from, key),
43
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
44
- });
45
- }
46
- __moduleCache.set(from, entry);
47
- return entry;
48
- };
49
- var __moduleCache;
50
32
  var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
51
33
  var __returnValue = (v) => v;
52
34
  function __exportSetter(name, newValue) {
@@ -9095,8 +9077,9 @@ var require_cjs = __commonJS((exports) => {
9095
9077
  });
9096
9078
 
9097
9079
  // src/constants.ts
9098
- var ANGULAR_INIT_TIMEOUT_MS = 500, ANSI_ESCAPE_CODE = 27, ANSI_ESCAPE_LENGTH = 3, ASCII_SPACE = 32, BASE_36_RADIX = 36, BUN_BUILD_WARNING_SUPPRESSION = "wildcard sideEffects are not supported yet", BODY_SLICE_LENGTH = 2000, BYTES_PER_KILOBYTE = 1024, CLI_ARGS_OFFSET = 3, CSS_ERROR_RESOLVE_DELAY_MS = 50, CSS_MAX_CHECK_ATTEMPTS = 10, CSS_MAX_PARSE_TIMEOUT_MS = 500, CSS_SHEET_READY_TIMEOUT_MS = 100, DEFAULT_CHUNK_SIZE = 16384, DEFAULT_DEBOUNCE_MS = 15, DEFAULT_PORT = 3000, DEV_SERVER_RESTART_DEBOUNCE_MS = 100, DOM_UPDATE_DELAY_MS = 50, FILE_PROTOCOL_PREFIX_LENGTH = 7, FOCUS_ID_PREFIX_LENGTH = 3, FOCUS_IDX_PREFIX_LENGTH = 4, FOCUS_NAME_PREFIX_LENGTH = 5, HMR_UPDATE_TIMEOUT_MS = 2000, HOOK_SIGNATURE_LENGTH = 12, EXCLUDE_LAST_OFFSET = -1, HTTP_STATUS_OK = 200, HTTP_STATUS_BAD_REQUEST = 400, HTTP_STATUS_NOT_FOUND = 404, HOURS_IN_DAY = 24, HOURS_IN_HALF_DAY = 12, IMAGE_DEFAULT_DEVICE_SIZES, IMAGE_DEFAULT_IMAGE_SIZES, IMAGE_DEFAULT_QUALITY = 75, IMAGE_GLOB_SUFFIX_LENGTH = 2, MAX_ERROR_LENGTH = 200, MAX_RECONNECT_ATTEMPTS = 60, MILLISECONDS_IN_A_SECOND = 1000, MINUTES_IN_AN_HOUR = 60, SECONDS_IN_A_MINUTE = 60, MILLISECONDS_IN_A_MINUTE, MILLISECONDS_IN_A_DAY, OVERLAY_FADE_DURATION_MS = 150, PING_INTERVAL_MS = 30000, RAF_BATCH_COUNT = 3, RANDOM_ID_END_INDEX = 11, REBUILD_BATCH_DELAY_MS = 10, REBUILD_RELOAD_DELAY_MS = 200, RECONNECT_INITIAL_DELAY_MS = 500, RECONNECT_POLL_INTERVAL_MS = 300, REACT_STREAM_SLOT_FAST_DELAY_MS = 5, REACT_STREAM_SLOT_SLOW_DELAY_MS = 20, SIGINT_EXIT_CODE = 130, SIGTERM_EXIT_CODE = 143, SVELTE_CSS_LOAD_TIMEOUT_MS = 500, TIME_PRECISION = 2, TWO_THIRDS, UNFOUND_INDEX = -1, WEBSOCKET_NORMAL_CLOSURE = 1000, WORKSPACE_COMMAND_ARGS_OFFSET = 3, WORKSPACE_FAILURE_LOG_PRINT_LIMIT = 30, WORKSPACE_FAILURE_RECENT_LOG_LIMIT = 60, WORKSPACE_READY_ATTEMPT_TIMEOUT_MS = 5000, WORKSPACE_READY_PROBE_INTERVAL_MS = 250, WORKSPACE_READY_TIMEOUT_MS = 30000, WORKSPACE_SHUTDOWN_TIMEOUT_MS = 1e4, WORKSPACE_TUI_DEFAULT_HEIGHT = 28, WORKSPACE_TUI_DEFAULT_WIDTH = 100, WORKSPACE_TUI_ESCAPE_SEQUENCE_TIMEOUT_MS = 30, WORKSPACE_TUI_FOOTER_LINE_COUNT = 3, WORKSPACE_TUI_MIN_LOG_HEIGHT = 3, WORKSPACE_TUI_MIN_SERVICE_NAME_WIDTH = 7, WORKSPACE_TUI_MIN_TARGET_WIDTH = 8, WORKSPACE_TUI_MIN_WRAP_WIDTH = 12, WORKSPACE_TUI_PROMPT_CURSOR_OFFSET = 3, WORKSPACE_TUI_RECENT_LOG_LIMIT = 40, WORKSPACE_TUI_RENDER_DEBOUNCE_MS = 16, WORKSPACE_TUI_STATUS_WIDTH = 10, WORKSPACE_TUI_TARGET_PADDING_WIDTH = 6, WORKSPACE_TUI_VISIBILITY_WIDTH = 8;
9080
+ var ANGULAR_INIT_TIMEOUT_MS = 500, ANSI_ESCAPE_CODE = 27, ANSI_ESCAPE_LENGTH = 3, ASCII_SPACE = 32, BASE_36_RADIX = 36, BUN_BUILD_WARNING_SUPPRESSION = "wildcard sideEffects are not supported yet", TAILWIND_BUN_CSS_WARNING_PATTERN, BODY_SLICE_LENGTH = 2000, BYTES_PER_KILOBYTE = 1024, CLI_ARGS_OFFSET = 3, CSS_ERROR_RESOLVE_DELAY_MS = 50, CSS_MAX_CHECK_ATTEMPTS = 10, CSS_MAX_PARSE_TIMEOUT_MS = 500, CSS_SHEET_READY_TIMEOUT_MS = 100, DEFAULT_CHUNK_SIZE = 16384, DEFAULT_DEBOUNCE_MS = 15, DEFAULT_PORT = 3000, DEV_SERVER_RESTART_DEBOUNCE_MS = 100, DOM_UPDATE_DELAY_MS = 50, FILE_PROTOCOL_PREFIX_LENGTH = 7, FOCUS_ID_PREFIX_LENGTH = 3, FOCUS_IDX_PREFIX_LENGTH = 4, FOCUS_NAME_PREFIX_LENGTH = 5, ESLINT_STUDIO_DEFAULT_HOST = "eslint.absolute.localhost", ESLINT_STUDIO_DEFAULT_PORT = 4099, CONFIG_DEFAULT_HOST = "config.absolute.localhost", CONFIG_DEFAULT_PORT = 4099, HMR_UPDATE_TIMEOUT_MS = 2000, HOOK_SIGNATURE_LENGTH = 12, EXCLUDE_LAST_OFFSET = -1, HTTP_STATUS_OK = 200, HTTP_STATUS_BAD_REQUEST = 400, HTTP_STATUS_NOT_FOUND = 404, HOURS_IN_DAY = 24, HOURS_IN_HALF_DAY = 12, IMAGE_DEFAULT_DEVICE_SIZES, IMAGE_DEFAULT_IMAGE_SIZES, IMAGE_DEFAULT_QUALITY = 75, IMAGE_GLOB_SUFFIX_LENGTH = 2, INSTANCE_PROBE_TIMEOUT_MS = 250, MAX_ERROR_LENGTH = 200, MAX_RECONNECT_ATTEMPTS = 60, MILLISECONDS_IN_A_SECOND = 1000, MINUTES_IN_AN_HOUR = 60, SECONDS_IN_A_MINUTE = 60, MILLISECONDS_IN_A_MINUTE, MILLISECONDS_IN_A_DAY, OVERLAY_FADE_DURATION_MS = 150, PING_INTERVAL_MS = 30000, LIST_LOG_TAIL_MAX_BYTES = 65536, LIST_TUI_COLUMN_GAP = 2, LIST_TUI_DEFAULT_HEIGHT = 28, LIST_TUI_DEFAULT_WIDTH = 100, LIST_TUI_ESCAPE_SEQUENCE_TIMEOUT_MS = 30, LIST_TUI_FOOTER_LINE_COUNT = 2, LIST_TUI_MARKER_WIDTH = 2, LIST_TUI_MIN_LOG_HEIGHT = 3, LIST_TUI_MIN_URL_WIDTH = 16, LIST_TUI_RENDER_DEBOUNCE_MS = 16, LIST_TUI_STATUS_MESSAGE_TIMEOUT_MS = 4000, LIST_WATCH_REFRESH_MS = 1000, RAF_BATCH_COUNT = 3, RANDOM_ID_END_INDEX = 11, REBUILD_BATCH_DELAY_MS = 10, REBUILD_RELOAD_DELAY_MS = 200, RECONNECT_INITIAL_DELAY_MS = 500, RECONNECT_POLL_INTERVAL_MS = 300, REACT_STREAM_SLOT_FAST_DELAY_MS = 5, REACT_STREAM_SLOT_SLOW_DELAY_MS = 20, SIGINT_EXIT_CODE = 130, SIGTERM_EXIT_CODE = 143, SVELTE_CSS_LOAD_TIMEOUT_MS = 500, TIME_PRECISION = 2, TWO_THIRDS, UNFOUND_INDEX = -1, WEBSOCKET_NORMAL_CLOSURE = 1000, DEFAULT_WEBSOCKET_IDLE_TIMEOUT_SECONDS = 240, DEFAULT_HTTP_IDLE_TIMEOUT_SECONDS = 240, MAX_HTTP_IDLE_TIMEOUT_SECONDS = 255, WORKSPACE_COMMAND_ARGS_OFFSET = 3, WORKSPACE_FAILURE_LOG_PRINT_LIMIT = 30, WORKSPACE_FAILURE_RECENT_LOG_LIMIT = 60, WORKSPACE_READY_ATTEMPT_TIMEOUT_MS = 5000, WORKSPACE_READY_PROBE_INTERVAL_MS = 250, WORKSPACE_READY_TIMEOUT_MS = 30000, WORKSPACE_SHUTDOWN_TIMEOUT_MS = 1e4, WORKSPACE_TUI_DEFAULT_HEIGHT = 28, WORKSPACE_TUI_DEFAULT_WIDTH = 100, WORKSPACE_TUI_ESCAPE_SEQUENCE_TIMEOUT_MS = 30, WORKSPACE_TUI_FOOTER_LINE_COUNT = 3, WORKSPACE_TUI_MIN_LOG_HEIGHT = 3, WORKSPACE_TUI_MIN_SERVICE_NAME_WIDTH = 7, WORKSPACE_TUI_MIN_TARGET_WIDTH = 8, WORKSPACE_TUI_MIN_WRAP_WIDTH = 12, WORKSPACE_TUI_PROMPT_CURSOR_OFFSET = 3, WORKSPACE_TUI_RECENT_LOG_LIMIT = 40, WORKSPACE_TUI_RENDER_DEBOUNCE_MS = 16, WORKSPACE_TUI_STATUS_WIDTH = 10, WORKSPACE_TUI_TARGET_PADDING_WIDTH = 6, WORKSPACE_TUI_VISIBILITY_WIDTH = 8;
9099
9081
  var init_constants = __esm(() => {
9082
+ TAILWIND_BUN_CSS_WARNING_PATTERN = /invalid @ rule encountered: '@(theme|tailwind|source|utility|variant|custom-variant|apply|reference|plugin|config)'/;
9100
9083
  IMAGE_DEFAULT_DEVICE_SIZES = [
9101
9084
  640,
9102
9085
  750,
@@ -9140,7 +9123,14 @@ var DEFAULT_DEVICE_SIZES, DEFAULT_IMAGE_SIZES, DEFAULT_QUALITY, OPTIMIZATION_END
9140
9123
  if (Buffer.isBuffer(input))
9141
9124
  return input;
9142
9125
  return Buffer.from(input);
9143
- }, isUnsupportedFormatError = (err) => typeof err === "object" && err !== null && ("code" in err) && err.code === "ERR_IMAGE_FORMAT_UNSUPPORTED", buildOptimizedUrl = (src, width, quality, basePath = OPTIMIZATION_ENDPOINT) => `${basePath}?url=${encodeURIComponent(src)}&w=${width}&q=${quality}`, formatToMime = (format) => MIME_MAP[format], generateBlurSvg = (base64Thumbnail) => {
9126
+ }, isUnsupportedFormatError = (err) => typeof err === "object" && err !== null && ("code" in err) && Reflect.get(err, "code") === "ERR_IMAGE_FORMAT_UNSUPPORTED", optimizeUnsupportedAvif = async (error, input, width, quality, format) => {
9127
+ if (format !== "avif" || !isUnsupportedFormatError(error))
9128
+ throw error;
9129
+ const sharp = await tryLoadSharp();
9130
+ if (!sharp || !isSharpFactory(sharp))
9131
+ throw error;
9132
+ return optimizeWithSharp(sharp, input, width, quality, format);
9133
+ }, buildOptimizedUrl = (src, width, quality, basePath = OPTIMIZATION_ENDPOINT) => `${basePath}?url=${encodeURIComponent(src)}&w=${width}&q=${quality}`, formatToMime = (format) => MIME_MAP[format], generateBlurSvg = (base64Thumbnail) => {
9144
9134
  const svg = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 320"><filter id="b" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="${BLUR_DEVIATION}"/><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 100 -1"/></filter><image filter="url(#b)" x="0" y="0" width="100%" height="100%" href="${base64Thumbnail}"/></svg>`;
9145
9135
  const encoded = encodeURIComponent(svg);
9146
9136
  return `url("data:image/svg+xml,${encoded}")`;
@@ -9164,8 +9154,8 @@ var DEFAULT_DEVICE_SIZES, DEFAULT_IMAGE_SIZES, DEFAULT_QUALITY, OPTIMIZATION_END
9164
9154
  const device = config?.deviceSizes ?? DEFAULT_DEVICE_SIZES;
9165
9155
  const image = config?.imageSizes ?? DEFAULT_IMAGE_SIZES;
9166
9156
  return [...device, ...image].sort((left, right) => left - right);
9167
- }, getCacheDir = (buildDir) => {
9168
- const dir = join(buildDir, ".cache", "images");
9157
+ }, getCacheDir = (buildDir, cacheDirectory) => {
9158
+ const dir = cacheDirectory ? resolve(cacheDirectory) : join(buildDir, ".cache", "images");
9169
9159
  if (!existsSync(dir))
9170
9160
  mkdirSync(dir, { recursive: true });
9171
9161
  return dir;
@@ -9217,6 +9207,7 @@ var DEFAULT_DEVICE_SIZES, DEFAULT_IMAGE_SIZES, DEFAULT_QUALITY, OPTIMIZATION_END
9217
9207
  case "webp":
9218
9208
  return pipeline.webp({ quality }).toBuffer();
9219
9209
  }
9210
+ throw new Error(`Unsupported image format: ${format}`);
9220
9211
  }, optimizeWithSharp = async (sharpRef, buffer, width, quality, format) => {
9221
9212
  const pipeline = sharpRef(buffer).rotate().resize(width, undefined, { withoutEnlargement: true });
9222
9213
  switch (format) {
@@ -9232,18 +9223,13 @@ var DEFAULT_DEVICE_SIZES, DEFAULT_IMAGE_SIZES, DEFAULT_QUALITY, OPTIMIZATION_END
9232
9223
  case "webp":
9233
9224
  return pipeline.webp({ quality }).toBuffer();
9234
9225
  }
9226
+ throw new Error(`Unsupported image format: ${format}`);
9235
9227
  }, optimizeImage = async (buffer, width, quality, format) => {
9236
9228
  const input = toBuffer(buffer);
9237
9229
  try {
9238
9230
  return await optimizeWithBunImage(input, width, quality, format);
9239
9231
  } catch (err) {
9240
- if (format === "avif" && isUnsupportedFormatError(err)) {
9241
- const sharp = await tryLoadSharp();
9242
- if (sharp && isSharpFactory(sharp)) {
9243
- return optimizeWithSharp(sharp, input, width, quality, format);
9244
- }
9245
- }
9246
- throw err;
9232
+ return optimizeUnsupportedAvif(err, input, width, quality, format);
9247
9233
  }
9248
9234
  }, readFromCache = (cacheDir, cacheKey) => {
9249
9235
  const metaPath = join(cacheDir, `${cacheKey}.meta`);
@@ -9396,6 +9382,7 @@ import { inject, REQUEST_CONTEXT } from "@angular/core";
9396
9382
  var usePageContext = () => inject(REQUEST_CONTEXT);
9397
9383
  // src/angular/composables/useResource.ts
9398
9384
  import { DestroyRef, inject as inject2, signal } from "@angular/core";
9385
+ var isMutatorFunction = (mutator) => typeof mutator === "function";
9399
9386
  var useResource = (fetcher, options = {}) => {
9400
9387
  const destroyRef = inject2(DestroyRef);
9401
9388
  const start = options.start ?? "immediate";
@@ -9410,6 +9397,12 @@ var useResource = (fetcher, options = {}) => {
9410
9397
  controller = null;
9411
9398
  }
9412
9399
  };
9400
+ const finishRefresh = (next) => {
9401
+ if (controller === next)
9402
+ controller = null;
9403
+ if (!next.signal.aborted)
9404
+ loading.set(false);
9405
+ };
9413
9406
  const refresh = async () => {
9414
9407
  if (destroyed)
9415
9408
  return;
@@ -9428,12 +9421,7 @@ var useResource = (fetcher, options = {}) => {
9428
9421
  return;
9429
9422
  error.set(cause);
9430
9423
  } finally {
9431
- if (controller === next) {
9432
- controller = null;
9433
- }
9434
- if (!next.signal.aborted) {
9435
- loading.set(false);
9436
- }
9424
+ finishRefresh(next);
9437
9425
  }
9438
9426
  };
9439
9427
  const mutate = (next) => {
@@ -9442,7 +9430,7 @@ var useResource = (fetcher, options = {}) => {
9442
9430
  cancel();
9443
9431
  error.set(null);
9444
9432
  loading.set(false);
9445
- const resolved = typeof next === "function" ? next(data()) : next;
9433
+ const resolved = isMutatorFunction(next) ? next(data()) : next;
9446
9434
  data.set(resolved);
9447
9435
  };
9448
9436
  destroyRef.onDestroy(() => {
@@ -9508,41 +9496,62 @@ var useTimers = () => {
9508
9496
  import { ChangeDetectorRef, inject as inject5 } from "@angular/core";
9509
9497
 
9510
9498
  // src/angular/hmrPreserveCore.ts
9511
- var isHmrPreserveDev = () => {
9512
- if (typeof window === "undefined")
9513
- return false;
9514
- const scope = globalThis;
9515
- return Boolean(scope.__DEV__) || Boolean(scope.ngDevMode);
9499
+ var isRebootFlag = (value) => typeof value === "object" && value !== null && typeof Reflect.get(value, "value") === "boolean";
9500
+ var isRebootStats = (value) => typeof value === "object" && value !== null && typeof Reflect.get(value, "captured") === "number" && Reflect.get(value, "restoredKeys") instanceof Set;
9501
+ var buildCacheKey = (instance, key) => {
9502
+ const className = instance.constructor?.name;
9503
+ if (!className || className === "Object")
9504
+ return null;
9505
+ const suffix = key === undefined || key === null ? "" : String(key);
9506
+ return `${className}:${suffix}`;
9516
9507
  };
9517
9508
  var getCache = () => {
9518
- const scope = globalThis;
9519
- return scope.__ABS_HMR_INSTANCE_STATE__ ??= new Map;
9520
- };
9521
- var getTracker = () => {
9522
- const scope = globalThis;
9523
- return scope.__ABS_HMR_TRACKED_INSTANCES__ ??= new Set;
9509
+ const current = Reflect.get(globalThis, "__ABS_HMR_INSTANCE_STATE__");
9510
+ if (current instanceof Map)
9511
+ return current;
9512
+ const cache = new Map;
9513
+ Reflect.set(globalThis, "__ABS_HMR_INSTANCE_STATE__", cache);
9514
+ return cache;
9524
9515
  };
9525
9516
  var getKeyMap = () => {
9526
- const scope = globalThis;
9527
- return scope.__ABS_HMR_INSTANCE_KEYS__ ??= new WeakMap;
9517
+ const current = Reflect.get(globalThis, "__ABS_HMR_INSTANCE_KEYS__");
9518
+ if (current instanceof WeakMap)
9519
+ return current;
9520
+ const keyMap = new WeakMap;
9521
+ Reflect.set(globalThis, "__ABS_HMR_INSTANCE_KEYS__", keyMap);
9522
+ return keyMap;
9528
9523
  };
9529
9524
  var getRebootFlag = () => {
9530
- const scope = globalThis;
9531
- return scope.__ABS_HMR_REBOOT_IN_PROGRESS__ ??= { value: false };
9525
+ const current = Reflect.get(globalThis, "__ABS_HMR_REBOOT_IN_PROGRESS__");
9526
+ if (isRebootFlag(current))
9527
+ return current;
9528
+ const flag = { value: false };
9529
+ Reflect.set(globalThis, "__ABS_HMR_REBOOT_IN_PROGRESS__", flag);
9530
+ return flag;
9532
9531
  };
9533
9532
  var getRebootStats = () => {
9534
- const scope = globalThis;
9535
- return scope.__ABS_HMR_REBOOT_STATS__ ??= {
9533
+ const current = Reflect.get(globalThis, "__ABS_HMR_REBOOT_STATS__");
9534
+ if (isRebootStats(current))
9535
+ return current;
9536
+ const stats = {
9536
9537
  captured: 0,
9537
9538
  restoredKeys: new Set
9538
9539
  };
9540
+ Reflect.set(globalThis, "__ABS_HMR_REBOOT_STATS__", stats);
9541
+ return stats;
9539
9542
  };
9540
- var buildCacheKey = (instance, key) => {
9541
- const className = instance.constructor?.name;
9542
- if (!className || className === "Object")
9543
- return null;
9544
- const suffix = key === undefined || key === null ? "" : String(key);
9545
- return `${className}:${suffix}`;
9543
+ var getTracker = () => {
9544
+ const current = Reflect.get(globalThis, "__ABS_HMR_TRACKED_INSTANCES__");
9545
+ if (current instanceof Set)
9546
+ return current;
9547
+ const tracker = new Set;
9548
+ Reflect.set(globalThis, "__ABS_HMR_TRACKED_INSTANCES__", tracker);
9549
+ return tracker;
9550
+ };
9551
+ var isHmrPreserveDev = () => {
9552
+ if (typeof window === "undefined")
9553
+ return false;
9554
+ return Boolean(Reflect.get(globalThis, "__DEV__")) || Boolean(Reflect.get(globalThis, "ngDevMode"));
9546
9555
  };
9547
9556
  var restoreFromCacheCore = (instance, key) => {
9548
9557
  const cache = getCache();
@@ -9551,7 +9560,7 @@ var restoreFromCacheCore = (instance, key) => {
9551
9560
  return false;
9552
9561
  for (const [prop, value] of Object.entries(stored)) {
9553
9562
  try {
9554
- instance[prop] = value;
9563
+ Reflect.set(instance, prop, value);
9555
9564
  } catch {}
9556
9565
  }
9557
9566
  getRebootStats().restoredKeys.add(key);
@@ -9592,13 +9601,6 @@ import {
9592
9601
 
9593
9602
  // src/client/preserveIslandMarkup.ts
9594
9603
  init_islandMarkupAttributes();
9595
- var getClaimMap = () => {
9596
- if (typeof window === "undefined") {
9597
- return null;
9598
- }
9599
- window.__ABS_CLAIMED_ISLAND_MARKUP__ ??= new Map;
9600
- return window.__ABS_CLAIMED_ISLAND_MARKUP__;
9601
- };
9602
9604
  var getSnapshotMap = () => {
9603
9605
  if (typeof window === "undefined") {
9604
9606
  return null;
@@ -9657,19 +9659,22 @@ var preserveIslandMarkup = (props) => {
9657
9659
  innerHTML: ""
9658
9660
  };
9659
9661
  }
9660
- const claimMap = getClaimMap();
9661
9662
  const snapshotMap = getSnapshotMap();
9662
9663
  const signature = getIslandSignature(props);
9663
- const claimedCount = claimMap?.get(signature) ?? 0;
9664
- const snapshotCandidate = snapshotMap?.get(signature)?.[claimedCount];
9665
- const candidates = Array.from(document.querySelectorAll('[data-island="true"]')).filter((element) => isMatchingIslandElement(element, props));
9666
- const candidate = candidates[claimedCount];
9667
- if (claimMap) {
9668
- claimMap.set(signature, claimedCount + 1);
9664
+ const snapshotCandidate = snapshotMap?.get(signature)?.[0];
9665
+ if (snapshotCandidate) {
9666
+ return snapshotCandidate;
9667
+ }
9668
+ const liveCandidate = Array.from(document.querySelectorAll('[data-island="true"]')).find((element) => isMatchingIslandElement(element, props));
9669
+ if (!liveCandidate) {
9670
+ return {
9671
+ attributes: getIslandMarkerAttributes(props),
9672
+ innerHTML: ""
9673
+ };
9669
9674
  }
9670
9675
  return {
9671
- attributes: snapshotCandidate?.attributes ?? getIslandMarkerAttributes(props),
9672
- innerHTML: snapshotCandidate?.innerHTML ?? candidate?.innerHTML ?? ""
9676
+ attributes: Object.fromEntries(liveCandidate.getAttributeNames().map((name) => [name, liveCandidate.getAttribute(name) ?? ""])),
9677
+ innerHTML: liveCandidate.innerHTML
9673
9678
  };
9674
9679
  };
9675
9680
 
@@ -10356,5 +10361,5 @@ export {
10356
10361
  ABSOLUTE_HTTP_TRANSFER_CACHE_SKIP_HEADER
10357
10362
  };
10358
10363
 
10359
- //# debugId=D2394F193AA2D73564756E2164756E21
10364
+ //# debugId=7F459B45B76DA26564756E2164756E21
10360
10365
  //# sourceMappingURL=browser.js.map