@absolutejs/absolute 0.19.0-beta.1042 → 0.19.0-beta.1043

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 (520) hide show
  1. package/package.json +1 -1
  2. package/dist/angular/browser.js +0 -10358
  3. package/dist/angular/browser.js.map +0 -260
  4. package/dist/angular/components/constants.js +0 -101
  5. package/dist/angular/components/core/streamingSlotRegistrar.js +0 -58
  6. package/dist/angular/components/core/streamingSlotRegistry.js +0 -114
  7. package/dist/angular/components/defer-slot-payload.js +0 -6
  8. package/dist/angular/components/defer-slot-templates.directive.js +0 -44
  9. package/dist/angular/components/defer-slot.component.js +0 -152
  10. package/dist/angular/components/image.component.js +0 -202
  11. package/dist/angular/components/index.js +0 -4
  12. package/dist/angular/components/stream-slot.component.js +0 -102
  13. package/dist/angular/hmrPreserveCore.ts +0 -188
  14. package/dist/angular/index.js +0 -15793
  15. package/dist/angular/index.js.map +0 -299
  16. package/dist/angular/server.js +0 -6357
  17. package/dist/angular/server.js.map +0 -61
  18. package/dist/build.js +0 -27484
  19. package/dist/build.js.map +0 -146
  20. package/dist/cli/config/client.js +0 -527
  21. package/dist/cli/config/server.js +0 -37130
  22. package/dist/cli/htmx/htmx.min.js +0 -1
  23. package/dist/cli/index.js +0 -179599
  24. package/dist/client/index.js +0 -1267
  25. package/dist/client/index.js.map +0 -31
  26. package/dist/core/streamingSlotRegistrar.js +0 -138
  27. package/dist/core/streamingSlotRegistrar.js.map +0 -10
  28. package/dist/core/streamingSlotRegistry.js +0 -194
  29. package/dist/core/streamingSlotRegistry.js.map +0 -11
  30. package/dist/dev/client/constants.ts +0 -26
  31. package/dist/dev/client/cssUtils.ts +0 -311
  32. package/dist/dev/client/domDiff.ts +0 -226
  33. package/dist/dev/client/domState.ts +0 -423
  34. package/dist/dev/client/domTracker.ts +0 -61
  35. package/dist/dev/client/errorOverlay.ts +0 -445
  36. package/dist/dev/client/frameworkDetect.ts +0 -63
  37. package/dist/dev/client/handlers/angularHmrShim.ts +0 -88
  38. package/dist/dev/client/handlers/angularRemount.ts +0 -362
  39. package/dist/dev/client/handlers/angularRemountWiring.ts +0 -52
  40. package/dist/dev/client/handlers/html.ts +0 -364
  41. package/dist/dev/client/handlers/htmx.ts +0 -278
  42. package/dist/dev/client/handlers/react.ts +0 -108
  43. package/dist/dev/client/handlers/rebuild.ts +0 -153
  44. package/dist/dev/client/handlers/svelte.ts +0 -334
  45. package/dist/dev/client/handlers/vue.ts +0 -292
  46. package/dist/dev/client/headPatch.ts +0 -233
  47. package/dist/dev/client/hmrClient.ts +0 -352
  48. package/dist/dev/client/hmrState.ts +0 -14
  49. package/dist/dev/client/hmrToast.ts +0 -150
  50. package/dist/dev/client/moduleVersions.ts +0 -62
  51. package/dist/dev/client/reactRefreshSetup.ts +0 -31
  52. package/dist/dev/client/vendor/lview/lViewOps.ts +0 -196
  53. package/dist/dev/client/vendor/lview/slotConstants.ts +0 -44
  54. package/dist/dev/client/vendor/reactRefreshRuntime.d.ts +0 -12
  55. package/dist/dev/client/vendor/reactRefreshRuntime.js +0 -313
  56. package/dist/image-client/imageClient.js +0 -69
  57. package/dist/index.js +0 -36361
  58. package/dist/index.js.map +0 -320
  59. package/dist/islands/browser.js +0 -259
  60. package/dist/islands/browser.js.map +0 -15
  61. package/dist/islands/index.js +0 -2415
  62. package/dist/islands/index.js.map +0 -37
  63. package/dist/react/browser.js +0 -374
  64. package/dist/react/browser.js.map +0 -19
  65. package/dist/react/components/browser/index.js +0 -467
  66. package/dist/react/components/index.js +0 -684
  67. package/dist/react/components/index.js.map +0 -18
  68. package/dist/react/hooks/index.js +0 -285
  69. package/dist/react/hooks/index.js.map +0 -14
  70. package/dist/react/index.js +0 -4258
  71. package/dist/react/index.js.map +0 -56
  72. package/dist/react/jsxDevRuntimeCompat.js +0 -90
  73. package/dist/react/jsxDevRuntimeCompat.js.map +0 -10
  74. package/dist/react/router/browser.js +0 -95
  75. package/dist/react/router/browser.js.map +0 -10
  76. package/dist/react/router/index.js +0 -95
  77. package/dist/react/router/index.js.map +0 -10
  78. package/dist/react/server.js +0 -1895
  79. package/dist/react/server.js.map +0 -26
  80. package/dist/src/angular/Island.browser.d.ts +0 -34
  81. package/dist/src/angular/Island.d.ts +0 -29
  82. package/dist/src/angular/angularDeps.d.ts +0 -2
  83. package/dist/src/angular/angularPatch.d.ts +0 -1
  84. package/dist/src/angular/animationProviders.d.ts +0 -2
  85. package/dist/src/angular/browser.d.ts +0 -14
  86. package/dist/src/angular/components/constants.d.ts +0 -96
  87. package/dist/src/angular/components/defer-slot-payload.d.ts +0 -7
  88. package/dist/src/angular/components/defer-slot-templates.directive.d.ts +0 -21
  89. package/dist/src/angular/components/defer-slot.component.d.ts +0 -29
  90. package/dist/src/angular/components/image.component.d.ts +0 -42
  91. package/dist/src/angular/components/index.d.ts +0 -4
  92. package/dist/src/angular/components/stream-slot.component.d.ts +0 -20
  93. package/dist/src/angular/composables/index.d.ts +0 -6
  94. package/dist/src/angular/composables/usePageContext.d.ts +0 -16
  95. package/dist/src/angular/composables/useResource.d.ts +0 -57
  96. package/dist/src/angular/composables/useSubscription.d.ts +0 -33
  97. package/dist/src/angular/composables/useTimers.d.ts +0 -18
  98. package/dist/src/angular/createIsland.browser.d.ts +0 -2
  99. package/dist/src/angular/createIsland.d.ts +0 -2
  100. package/dist/src/angular/deterministicEnv.d.ts +0 -26
  101. package/dist/src/angular/hmrPreserveCore.d.ts +0 -21
  102. package/dist/src/angular/httpTransferCache.d.ts +0 -12
  103. package/dist/src/angular/index.d.ts +0 -14
  104. package/dist/src/angular/injectorPatch.d.ts +0 -1
  105. package/dist/src/angular/islandStore.d.ts +0 -9
  106. package/dist/src/angular/islands.d.ts +0 -4
  107. package/dist/src/angular/lowerDeferSyntax.d.ts +0 -18
  108. package/dist/src/angular/lowerServerIslands.d.ts +0 -1
  109. package/dist/src/angular/pageHandler.d.ts +0 -48
  110. package/dist/src/angular/pendingTask.d.ts +0 -1
  111. package/dist/src/angular/preserveAcrossHmr.d.ts +0 -12
  112. package/dist/src/angular/renderIsland.d.ts +0 -2
  113. package/dist/src/angular/requestProviders.d.ts +0 -5
  114. package/dist/src/angular/resolveAngularPackage.d.ts +0 -19
  115. package/dist/src/angular/routerRedirectProviders.d.ts +0 -6
  116. package/dist/src/angular/server.d.ts +0 -4
  117. package/dist/src/angular/ssrRender.d.ts +0 -13
  118. package/dist/src/angular/ssrSanitizer.d.ts +0 -3
  119. package/dist/src/angular/staticAnalyzeSpaRoutes.d.ts +0 -7
  120. package/dist/src/build/angularLinkerPlugin.d.ts +0 -29
  121. package/dist/src/build/buildAngularVendor.d.ts +0 -40
  122. package/dist/src/build/buildDepVendor.d.ts +0 -2
  123. package/dist/src/build/buildEmberVendor.d.ts +0 -24
  124. package/dist/src/build/buildReactVendor.d.ts +0 -8
  125. package/dist/src/build/buildSvelteVendor.d.ts +0 -6
  126. package/dist/src/build/buildVueVendor.d.ts +0 -6
  127. package/dist/src/build/chainInlineSourcemaps.d.ts +0 -13
  128. package/dist/src/build/compileAngular.d.ts +0 -40
  129. package/dist/src/build/compileEmber.d.ts +0 -43
  130. package/dist/src/build/compileSvelte.d.ts +0 -14
  131. package/dist/src/build/compileTailwind.d.ts +0 -5
  132. package/dist/src/build/compileVue.d.ts +0 -22
  133. package/dist/src/build/externalAssetPlugin.d.ts +0 -2
  134. package/dist/src/build/generateManifest.d.ts +0 -2
  135. package/dist/src/build/generateReactIndexes.d.ts +0 -2
  136. package/dist/src/build/htmlScriptHMRPlugin.d.ts +0 -13
  137. package/dist/src/build/index.d.ts +0 -2
  138. package/dist/src/build/islandEntries.d.ts +0 -32
  139. package/dist/src/build/islandRegistryTransform.d.ts +0 -17
  140. package/dist/src/build/nativeRewrite.d.ts +0 -5
  141. package/dist/src/build/optimizeHtmlImages.d.ts +0 -2
  142. package/dist/src/build/outputLogs.d.ts +0 -1
  143. package/dist/src/build/parseAngularConfigImports.d.ts +0 -9
  144. package/dist/src/build/parseVueSpaRoutes.d.ts +0 -20
  145. package/dist/src/build/resolvePackageImport.d.ts +0 -9
  146. package/dist/src/build/rewriteImports.d.ts +0 -8
  147. package/dist/src/build/rewriteImportsPlugin.d.ts +0 -48
  148. package/dist/src/build/rewriteReactImports.d.ts +0 -7
  149. package/dist/src/build/runAngularHandlerScan.d.ts +0 -7
  150. package/dist/src/build/scanAngularHandlerCalls.d.ts +0 -13
  151. package/dist/src/build/scanAngularPageRoutes.d.ts +0 -10
  152. package/dist/src/build/scanConventions.d.ts +0 -5
  153. package/dist/src/build/scanCssEntryPoints.d.ts +0 -1
  154. package/dist/src/build/scanEntryPoints.d.ts +0 -1
  155. package/dist/src/build/scanRouteRegistrations.d.ts +0 -23
  156. package/dist/src/build/scanVueSsrOnlyPages.d.ts +0 -6
  157. package/dist/src/build/staticIslandPages.d.ts +0 -9
  158. package/dist/src/build/stylePreprocessor.d.ts +0 -26
  159. package/dist/src/build/tailwindCompiler.d.ts +0 -8
  160. package/dist/src/build/updateAssetPaths.d.ts +0 -1
  161. package/dist/src/build/vendorEntrySource.d.ts +0 -1
  162. package/dist/src/build/verifyAngularCoreUniqueness.d.ts +0 -2
  163. package/dist/src/build/vueAutoRouterTransform.d.ts +0 -1
  164. package/dist/src/build/wrapHTMLScript.d.ts +0 -17
  165. package/dist/src/build.d.ts +0 -2
  166. package/dist/src/cli/add/dependencies.d.ts +0 -12
  167. package/dist/src/cli/cache.d.ts +0 -15
  168. package/dist/src/cli/config/absolute/AbsoluteConfigPanel.d.ts +0 -6
  169. package/dist/src/cli/config/absolute/editAbsoluteConfig.d.ts +0 -5
  170. package/dist/src/cli/config/absolute/resolveAbsoluteConfig.d.ts +0 -14
  171. package/dist/src/cli/config/client.d.ts +0 -1
  172. package/dist/src/cli/config/configCert.d.ts +0 -12
  173. package/dist/src/cli/config/eslint/EslintPanel.d.ts +0 -6
  174. package/dist/src/cli/config/eslint/configAst.d.ts +0 -18
  175. package/dist/src/cli/config/eslint/editConfigRule.d.ts +0 -6
  176. package/dist/src/cli/config/eslint/eslintStyles.d.ts +0 -1
  177. package/dist/src/cli/config/eslint/resolveConfig.d.ts +0 -3
  178. package/dist/src/cli/config/eslint/serializeValue.d.ts +0 -9
  179. package/dist/src/cli/config/guards.d.ts +0 -4
  180. package/dist/src/cli/config/packageJson/PackageJsonPanel.d.ts +0 -6
  181. package/dist/src/cli/config/packageJson/editPackageJson.d.ts +0 -9
  182. package/dist/src/cli/config/packageJson/resolvePackageJson.d.ts +0 -9
  183. package/dist/src/cli/config/page/ConfigShell.d.ts +0 -6
  184. package/dist/src/cli/config/page/FieldEditor.d.ts +0 -9
  185. package/dist/src/cli/config/page/PanelHost.d.ts +0 -6
  186. package/dist/src/cli/config/page/configStyles.d.ts +0 -1
  187. package/dist/src/cli/config/panels.d.ts +0 -7
  188. package/dist/src/cli/config/prettier/PrettierPanel.d.ts +0 -6
  189. package/dist/src/cli/config/prettier/editPrettier.d.ts +0 -5
  190. package/dist/src/cli/config/prettier/resolvePrettier.d.ts +0 -11
  191. package/dist/src/cli/config/schema/fromJsonSchema.d.ts +0 -3
  192. package/dist/src/cli/config/schema/fromType.d.ts +0 -2
  193. package/dist/src/cli/config/schema/serialize.d.ts +0 -1
  194. package/dist/src/cli/config/server.d.ts +0 -298
  195. package/dist/src/cli/config/tsconfig/TsconfigPanel.d.ts +0 -6
  196. package/dist/src/cli/config/tsconfig/editTsconfig.d.ts +0 -5
  197. package/dist/src/cli/config/tsconfig/resolveTsconfig.d.ts +0 -8
  198. package/dist/src/cli/config/tsconfig/tsconfigStyles.d.ts +0 -1
  199. package/dist/src/cli/discoverInstances.d.ts +0 -5
  200. package/dist/src/cli/generate/componentTemplates.d.ts +0 -7
  201. package/dist/src/cli/generate/context.d.ts +0 -30
  202. package/dist/src/cli/generate/cssStrategy.d.ts +0 -20
  203. package/dist/src/cli/generate/frameworkKey.d.ts +0 -3
  204. package/dist/src/cli/generate/frameworks.d.ts +0 -40
  205. package/dist/src/cli/generate/generateApi.d.ts +0 -3
  206. package/dist/src/cli/generate/generateComponent.d.ts +0 -4
  207. package/dist/src/cli/generate/generatePage.d.ts +0 -4
  208. package/dist/src/cli/generate/naming.d.ts +0 -5
  209. package/dist/src/cli/generate/navData.d.ts +0 -10
  210. package/dist/src/cli/generate/outcome.d.ts +0 -17
  211. package/dist/src/cli/generate/pageTemplates.d.ts +0 -11
  212. package/dist/src/cli/generate/routeWiring.d.ts +0 -40
  213. package/dist/src/cli/generate/staticNav.d.ts +0 -5
  214. package/dist/src/cli/htmx/install.d.ts +0 -6
  215. package/dist/src/cli/index.d.ts +0 -2
  216. package/dist/src/cli/inspectData.d.ts +0 -11
  217. package/dist/src/cli/inspectTui.d.ts +0 -1
  218. package/dist/src/cli/instanceStatus.d.ts +0 -22
  219. package/dist/src/cli/interactive.d.ts +0 -2
  220. package/dist/src/cli/psTui.d.ts +0 -1
  221. package/dist/src/cli/scripts/add.d.ts +0 -1
  222. package/dist/src/cli/scripts/build.d.ts +0 -1
  223. package/dist/src/cli/scripts/compile.d.ts +0 -2
  224. package/dist/src/cli/scripts/dev.d.ts +0 -1
  225. package/dist/src/cli/scripts/doctor.d.ts +0 -1
  226. package/dist/src/cli/scripts/env.d.ts +0 -7
  227. package/dist/src/cli/scripts/eslint.d.ts +0 -16
  228. package/dist/src/cli/scripts/generate.d.ts +0 -1
  229. package/dist/src/cli/scripts/htmx.d.ts +0 -1
  230. package/dist/src/cli/scripts/info.d.ts +0 -1
  231. package/dist/src/cli/scripts/inspect.d.ts +0 -1
  232. package/dist/src/cli/scripts/islands.d.ts +0 -1
  233. package/dist/src/cli/scripts/logs.d.ts +0 -1
  234. package/dist/src/cli/scripts/ls.d.ts +0 -1
  235. package/dist/src/cli/scripts/mem.d.ts +0 -1
  236. package/dist/src/cli/scripts/prettier.d.ts +0 -3
  237. package/dist/src/cli/scripts/ps.d.ts +0 -1
  238. package/dist/src/cli/scripts/remove.d.ts +0 -1
  239. package/dist/src/cli/scripts/routes.d.ts +0 -1
  240. package/dist/src/cli/scripts/start.d.ts +0 -1
  241. package/dist/src/cli/scripts/telemetry.d.ts +0 -5
  242. package/dist/src/cli/scripts/tunnelRelay.d.ts +0 -9
  243. package/dist/src/cli/scripts/typecheck.d.ts +0 -1
  244. package/dist/src/cli/scripts/workspace.d.ts +0 -11
  245. package/dist/src/cli/telemetryEvent.d.ts +0 -1
  246. package/dist/src/cli/tuiPrimitives.d.ts +0 -14
  247. package/dist/src/cli/utils.d.ts +0 -15
  248. package/dist/src/cli/workspaceTui.d.ts +0 -44
  249. package/dist/src/client/hydrators/react.d.ts +0 -3
  250. package/dist/src/client/hydrators/svelte.d.ts +0 -2
  251. package/dist/src/client/hydrators/vue.d.ts +0 -2
  252. package/dist/src/client/index.d.ts +0 -4
  253. package/dist/src/client/islandResolver.d.ts +0 -2
  254. package/dist/src/client/islandRuntime.d.ts +0 -9
  255. package/dist/src/client/islandStore.d.ts +0 -22
  256. package/dist/src/client/preserveIslandMarkup.d.ts +0 -16
  257. package/dist/src/client/streamSwap.d.ts +0 -1
  258. package/dist/src/constants.d.ts +0 -96
  259. package/dist/src/core/angularServerModule.d.ts +0 -1
  260. package/dist/src/core/build.d.ts +0 -14
  261. package/dist/src/core/currentIslandRegistry.d.ts +0 -7
  262. package/dist/src/core/devBuild.d.ts +0 -23
  263. package/dist/src/core/devRouteRegistrationCallsite.d.ts +0 -4
  264. package/dist/src/core/devVendorPaths.d.ts +0 -17
  265. package/dist/src/core/index.d.ts +0 -7
  266. package/dist/src/core/islandManifest.d.ts +0 -3
  267. package/dist/src/core/islandMarkupAttributes.d.ts +0 -12
  268. package/dist/src/core/islandPageContext.d.ts +0 -12
  269. package/dist/src/core/islandSsr.d.ts +0 -6
  270. package/dist/src/core/islands.d.ts +0 -16
  271. package/dist/src/core/loadIslandRegistry.d.ts +0 -1
  272. package/dist/src/core/lookup.d.ts +0 -1
  273. package/dist/src/core/normalizeIslandProps.d.ts +0 -15
  274. package/dist/src/core/pageHandlers.d.ts +0 -5
  275. package/dist/src/core/prepare.d.ts +0 -417
  276. package/dist/src/core/prerender.d.ts +0 -31
  277. package/dist/src/core/renderIslandMarkup.d.ts +0 -13
  278. package/dist/src/core/responseEnhancers.d.ts +0 -10
  279. package/dist/src/core/staticStreaming.d.ts +0 -25
  280. package/dist/src/core/streamingSlotRegistrar.d.ts +0 -16
  281. package/dist/src/core/streamingSlotRegistry.d.ts +0 -2
  282. package/dist/src/core/streamingSlotWarningScope.d.ts +0 -4
  283. package/dist/src/core/svelteServerModule.d.ts +0 -1
  284. package/dist/src/core/vueServerModule.d.ts +0 -1
  285. package/dist/src/core/wrapPageHandlerWithStreamingSlots.d.ts +0 -2
  286. package/dist/src/dev/angular/fastHmrCompiler.d.ts +0 -58
  287. package/dist/src/dev/angular/hmrCompiler.d.ts +0 -2
  288. package/dist/src/dev/angular/hmrImportGenerator.d.ts +0 -3
  289. package/dist/src/dev/angular/hmrInjectionPlugin.d.ts +0 -8
  290. package/dist/src/dev/angular/resolveOwningComponents.d.ts +0 -16
  291. package/dist/src/dev/angular/vendor/translator/api/ast_factory.d.ts +0 -363
  292. package/dist/src/dev/angular/vendor/translator/api/import_generator.d.ts +0 -49
  293. package/dist/src/dev/angular/vendor/translator/context.d.ts +0 -18
  294. package/dist/src/dev/angular/vendor/translator/translator.d.ts +0 -75
  295. package/dist/src/dev/angular/vendor/translator/ts_util.d.ts +0 -12
  296. package/dist/src/dev/angular/vendor/translator/typescript_ast_factory.d.ts +0 -66
  297. package/dist/src/dev/angular/vendor/translator/typescript_translator.d.ts +0 -13
  298. package/dist/src/dev/assetStore.d.ts +0 -8
  299. package/dist/src/dev/buildHMRClient.d.ts +0 -1
  300. package/dist/src/dev/clientManager.d.ts +0 -33
  301. package/dist/src/dev/configResolver.d.ts +0 -16
  302. package/dist/src/dev/dependencyGraph.d.ts +0 -10
  303. package/dist/src/dev/devCert.d.ts +0 -11
  304. package/dist/src/dev/fileHashTracker.d.ts +0 -2
  305. package/dist/src/dev/fileWatcher.d.ts +0 -4
  306. package/dist/src/dev/moduleMapper.d.ts +0 -27
  307. package/dist/src/dev/moduleServer.d.ts +0 -24
  308. package/dist/src/dev/moduleVersionTracker.d.ts +0 -7
  309. package/dist/src/dev/pathUtils.d.ts +0 -8
  310. package/dist/src/dev/reactComponentClassifier.d.ts +0 -2
  311. package/dist/src/dev/rebuildTrigger.d.ts +0 -11
  312. package/dist/src/dev/requestInspector.d.ts +0 -43
  313. package/dist/src/dev/serverEntryWatcher.d.ts +0 -5
  314. package/dist/src/dev/simpleHTMLHMR.d.ts +0 -4
  315. package/dist/src/dev/simpleHTMXHMR.d.ts +0 -4
  316. package/dist/src/dev/transformCache.d.ts +0 -22
  317. package/dist/src/dev/tunnel/client.d.ts +0 -20
  318. package/dist/src/dev/tunnel/protocol.d.ts +0 -85
  319. package/dist/src/dev/tunnel/relay.d.ts +0 -28
  320. package/dist/src/dev/webSocket.d.ts +0 -9
  321. package/dist/src/ember/browser.d.ts +0 -24
  322. package/dist/src/ember/index.d.ts +0 -2
  323. package/dist/src/ember/pageHandler.d.ts +0 -35
  324. package/dist/src/ember/server.d.ts +0 -2
  325. package/dist/src/index.d.ts +0 -7
  326. package/dist/src/islands/browser.d.ts +0 -3
  327. package/dist/src/islands/index.d.ts +0 -3
  328. package/dist/src/islands/pageMetadata.d.ts +0 -13
  329. package/dist/src/islands/sourceMetadata.d.ts +0 -10
  330. package/dist/src/plugins/devtoolsJson.d.ts +0 -58
  331. package/dist/src/plugins/hmr.d.ts +0 -163
  332. package/dist/src/plugins/imageOptimizer.d.ts +0 -67
  333. package/dist/src/plugins/index.d.ts +0 -3
  334. package/dist/src/plugins/networking.d.ts +0 -2
  335. package/dist/src/plugins/pageRouter.d.ts +0 -1
  336. package/dist/src/react/Island.browser.d.ts +0 -2
  337. package/dist/src/react/Island.d.ts +0 -2
  338. package/dist/src/react/bridgeInternals.d.ts +0 -1
  339. package/dist/src/react/browser.d.ts +0 -3
  340. package/dist/src/react/components/Head.d.ts +0 -2
  341. package/dist/src/react/components/Image.d.ts +0 -2
  342. package/dist/src/react/components/JsonLd.d.ts +0 -4
  343. package/dist/src/react/components/StreamSlot.browser.d.ts +0 -10
  344. package/dist/src/react/components/StreamSlot.d.ts +0 -10
  345. package/dist/src/react/components/SuspenseSlot.browser.d.ts +0 -22
  346. package/dist/src/react/components/SuspenseSlot.d.ts +0 -37
  347. package/dist/src/react/components/browser/index.d.ts +0 -5
  348. package/dist/src/react/components/index.d.ts +0 -5
  349. package/dist/src/react/createIsland.browser.d.ts +0 -2
  350. package/dist/src/react/createIsland.d.ts +0 -2
  351. package/dist/src/react/hooks/index.d.ts +0 -3
  352. package/dist/src/react/hooks/useIslandStore.d.ts +0 -3
  353. package/dist/src/react/hooks/useMediaQuery.d.ts +0 -7
  354. package/dist/src/react/index.d.ts +0 -4
  355. package/dist/src/react/jsxDevRuntimeCompat.d.ts +0 -8
  356. package/dist/src/react/pageHandler.d.ts +0 -25
  357. package/dist/src/react/router/UniversalRouter.d.ts +0 -43
  358. package/dist/src/react/router/browser.d.ts +0 -2
  359. package/dist/src/react/router/index.d.ts +0 -2
  360. package/dist/src/react/server.d.ts +0 -1
  361. package/dist/src/react/staticAnalyzeSpaRoutes.d.ts +0 -7
  362. package/dist/src/svelte/browser.d.ts +0 -4
  363. package/dist/src/svelte/createIsland.browser.d.ts +0 -2
  364. package/dist/src/svelte/createIsland.d.ts +0 -2
  365. package/dist/src/svelte/index.d.ts +0 -6
  366. package/dist/src/svelte/islandStore.d.ts +0 -5
  367. package/dist/src/svelte/lowerAwaitSlotSyntax.d.ts +0 -4
  368. package/dist/src/svelte/lowerIslandSyntax.d.ts +0 -4
  369. package/dist/src/svelte/pageHandler.d.ts +0 -28
  370. package/dist/src/svelte/renderIsland.d.ts +0 -2
  371. package/dist/src/svelte/renderToPipeableStream.d.ts +0 -12
  372. package/dist/src/svelte/renderToReadableStream.d.ts +0 -14
  373. package/dist/src/svelte/renderToString.d.ts +0 -9
  374. package/dist/src/svelte/resolveIslandHtml.browser.d.ts +0 -2
  375. package/dist/src/svelte/resolveIslandHtml.d.ts +0 -2
  376. package/dist/src/svelte/router/browser.d.ts +0 -4
  377. package/dist/src/svelte/router/goto.d.ts +0 -15
  378. package/dist/src/svelte/router/hashMode.d.ts +0 -16
  379. package/dist/src/svelte/router/index.d.ts +0 -4
  380. package/dist/src/svelte/router/matchPath.d.ts +0 -30
  381. package/dist/src/svelte/router/page.svelte.d.ts +0 -15
  382. package/dist/src/svelte/router/prefetchCache.d.ts +0 -17
  383. package/dist/src/svelte/router/pushState.d.ts +0 -13
  384. package/dist/src/svelte/router/viewTransitions.d.ts +0 -6
  385. package/dist/src/svelte/server.d.ts +0 -1
  386. package/dist/src/svelte/staticAnalyzeSpaRoutes.d.ts +0 -7
  387. package/dist/src/utils/buildDirectoryLock.d.ts +0 -28
  388. package/dist/src/utils/cleanStaleOutputs.d.ts +0 -1
  389. package/dist/src/utils/cleanup.d.ts +0 -9
  390. package/dist/src/utils/commonAncestor.d.ts +0 -1
  391. package/dist/src/utils/defineConfig.d.ts +0 -39
  392. package/dist/src/utils/defineConvention.d.ts +0 -3
  393. package/dist/src/utils/defineEnv.d.ts +0 -10
  394. package/dist/src/utils/escapeScriptContent.d.ts +0 -1
  395. package/dist/src/utils/formatBytes.d.ts +0 -2
  396. package/dist/src/utils/generateHeadElement.d.ts +0 -4
  397. package/dist/src/utils/generateSitemap.d.ts +0 -21
  398. package/dist/src/utils/generatedDir.d.ts +0 -3
  399. package/dist/src/utils/getDurationString.d.ts +0 -1
  400. package/dist/src/utils/getEnv.d.ts +0 -1
  401. package/dist/src/utils/imageClient.d.ts +0 -13
  402. package/dist/src/utils/imageProcessing.d.ts +0 -33
  403. package/dist/src/utils/index.d.ts +0 -11
  404. package/dist/src/utils/inlinePageCss.d.ts +0 -2
  405. package/dist/src/utils/instanceRegistry.d.ts +0 -13
  406. package/dist/src/utils/jsonLd.d.ts +0 -3
  407. package/dist/src/utils/loadConfig.d.ts +0 -55
  408. package/dist/src/utils/logger.d.ts +0 -56
  409. package/dist/src/utils/networking.d.ts +0 -2
  410. package/dist/src/utils/normalizePath.d.ts +0 -9
  411. package/dist/src/utils/portScan.d.ts +0 -22
  412. package/dist/src/utils/projectRoot.d.ts +0 -17
  413. package/dist/src/utils/registerClientScript.d.ts +0 -36
  414. package/dist/src/utils/resolveConvention.d.ts +0 -10
  415. package/dist/src/utils/resolveDevPort.d.ts +0 -24
  416. package/dist/src/utils/runtimeMode.d.ts +0 -3
  417. package/dist/src/utils/spaRouteCss.d.ts +0 -4
  418. package/dist/src/utils/spaRouteTypes.d.ts +0 -25
  419. package/dist/src/utils/ssrErrorPage.d.ts +0 -1
  420. package/dist/src/utils/startupBanner.d.ts +0 -10
  421. package/dist/src/utils/startupTimings.d.ts +0 -7
  422. package/dist/src/utils/streamingSlotMetricSink.d.ts +0 -18
  423. package/dist/src/utils/streamingSlots.d.ts +0 -76
  424. package/dist/src/utils/stringModifiers.d.ts +0 -3
  425. package/dist/src/utils/userAgentFunctions.d.ts +0 -1
  426. package/dist/src/utils/validateSafePath.d.ts +0 -1
  427. package/dist/src/vue/Island.browser.d.ts +0 -37
  428. package/dist/src/vue/Island.d.ts +0 -36
  429. package/dist/src/vue/browser.d.ts +0 -6
  430. package/dist/src/vue/components/Image.d.ts +0 -74
  431. package/dist/src/vue/components/StreamSlot.d.ts +0 -22
  432. package/dist/src/vue/components/SuspenseSlot.d.ts +0 -26
  433. package/dist/src/vue/components/index.d.ts +0 -3
  434. package/dist/src/vue/createIsland.browser.d.ts +0 -13
  435. package/dist/src/vue/createIsland.d.ts +0 -13
  436. package/dist/src/vue/defineVuePage.d.ts +0 -6
  437. package/dist/src/vue/index.d.ts +0 -9
  438. package/dist/src/vue/pageHandler.d.ts +0 -45
  439. package/dist/src/vue/routerRedirectProviders.d.ts +0 -45
  440. package/dist/src/vue/server.d.ts +0 -2
  441. package/dist/src/vue/staticAnalyzeSpaRoutes.d.ts +0 -7
  442. package/dist/src/vue/useIslandStore.d.ts +0 -3
  443. package/dist/svelte/browser.js +0 -309
  444. package/dist/svelte/browser.js.map +0 -19
  445. package/dist/svelte/components/AwaitSlot.svelte +0 -39
  446. package/dist/svelte/components/AwaitSlot.svelte.d.ts +0 -2
  447. package/dist/svelte/components/Head.svelte +0 -144
  448. package/dist/svelte/components/Head.svelte.d.ts +0 -2
  449. package/dist/svelte/components/Image.svelte +0 -164
  450. package/dist/svelte/components/Image.svelte.d.ts +0 -5
  451. package/dist/svelte/components/Island.svelte +0 -71
  452. package/dist/svelte/components/Island.svelte.d.ts +0 -5
  453. package/dist/svelte/components/JsonLd.svelte +0 -21
  454. package/dist/svelte/components/JsonLd.svelte.d.ts +0 -2
  455. package/dist/svelte/components/StreamSlot.svelte +0 -41
  456. package/dist/svelte/components/StreamSlot.svelte.d.ts +0 -2
  457. package/dist/svelte/index.js +0 -4371
  458. package/dist/svelte/index.js.map +0 -60
  459. package/dist/svelte/router/Link.svelte +0 -124
  460. package/dist/svelte/router/Link.svelte.d.ts +0 -21
  461. package/dist/svelte/router/Route.svelte +0 -54
  462. package/dist/svelte/router/Route.svelte.d.ts +0 -13
  463. package/dist/svelte/router/Router.svelte +0 -189
  464. package/dist/svelte/router/Router.svelte.d.ts +0 -16
  465. package/dist/svelte/router/browser.ts +0 -14
  466. package/dist/svelte/router/goto.ts +0 -89
  467. package/dist/svelte/router/hashMode.ts +0 -31
  468. package/dist/svelte/router/index.ts +0 -23
  469. package/dist/svelte/router/matchPath.ts +0 -136
  470. package/dist/svelte/router/page.d.ts +0 -15
  471. package/dist/svelte/router/page.js +0 -27
  472. package/dist/svelte/router/prefetchCache.ts +0 -85
  473. package/dist/svelte/router/pushState.ts +0 -35
  474. package/dist/svelte/router/viewTransitions.ts +0 -35
  475. package/dist/svelte/server.js +0 -2996
  476. package/dist/svelte/server.js.map +0 -33
  477. package/dist/types/absoluteConfig.d.ts +0 -22
  478. package/dist/types/angular.d.ts +0 -43
  479. package/dist/types/build.d.ts +0 -245
  480. package/dist/types/cli.d.ts +0 -71
  481. package/dist/types/client.d.ts +0 -70
  482. package/dist/types/config.d.ts +0 -50
  483. package/dist/types/conventions.d.ts +0 -26
  484. package/dist/types/ember.d.ts +0 -39
  485. package/dist/types/env.d.ts +0 -2
  486. package/dist/types/eslintConfig.d.ts +0 -68
  487. package/dist/types/globals.d.ts +0 -163
  488. package/dist/types/image.d.ts +0 -77
  489. package/dist/types/index.d.ts +0 -17
  490. package/dist/types/island.d.ts +0 -52
  491. package/dist/types/jsonLd.d.ts +0 -300
  492. package/dist/types/mediaQuery.d.ts +0 -9
  493. package/dist/types/messages.d.ts +0 -152
  494. package/dist/types/metadata.d.ts +0 -51
  495. package/dist/types/packageJson.d.ts +0 -74
  496. package/dist/types/packageJsonPanel.d.ts +0 -29
  497. package/dist/types/prettier.d.ts +0 -26
  498. package/dist/types/react.d.ts +0 -2
  499. package/dist/types/sitemap.d.ts +0 -24
  500. package/dist/types/style-module-shim.d.ts +0 -29
  501. package/dist/types/svelte.d.ts +0 -2
  502. package/dist/types/svelteRouter.d.ts +0 -65
  503. package/dist/types/svelteRouter.ts +0 -91
  504. package/dist/types/telemetry.d.ts +0 -15
  505. package/dist/types/tool.d.ts +0 -11
  506. package/dist/types/tsconfig.d.ts +0 -31
  507. package/dist/types/typeGuards.d.ts +0 -2
  508. package/dist/types/userAgentTypes.d.ts +0 -2
  509. package/dist/types/vue.d.ts +0 -56
  510. package/dist/types/websocket.d.ts +0 -6
  511. package/dist/vue/browser.js +0 -512
  512. package/dist/vue/browser.js.map +0 -22
  513. package/dist/vue/components/Image.js +0 -264
  514. package/dist/vue/components/Image.js.map +0 -12
  515. package/dist/vue/components/index.js +0 -571
  516. package/dist/vue/components/index.js.map +0 -15
  517. package/dist/vue/index.js +0 -5238
  518. package/dist/vue/index.js.map +0 -69
  519. package/dist/vue/server.js +0 -2251
  520. package/dist/vue/server.js.map +0 -32
@@ -1,226 +0,0 @@
1
- import type {} from '../../types/globals';
2
- /* DOM diffing/patching for in-place updates (zero flicker) */
3
-
4
- import { UNFOUND_INDEX } from './constants';
5
-
6
- type KeyedEntry = {
7
- index: number;
8
- node: Node;
9
- };
10
-
11
- const getElementKey = (elem: Node, index: number) => {
12
- if (elem.nodeType !== Node.ELEMENT_NODE) return `text_${index}`;
13
- if (!(elem instanceof Element)) return `text_${index}`;
14
- if (elem.id) return `id_${elem.id}`;
15
- if (elem.hasAttribute('data-key'))
16
- return `key_${elem.getAttribute('data-key')}`;
17
-
18
- return `tag_${elem.tagName}_${index}`;
19
- };
20
-
21
- const updateElementAttributes = (oldEl: Element, newEl: Element) => {
22
- const newAttrs = Array.from(newEl.attributes);
23
- const oldAttrs = Array.from(oldEl.attributes);
24
- const runtimeAttrs = ['data-hmr-listeners-attached'];
25
-
26
- oldAttrs.forEach((oldAttr) => {
27
- if (
28
- !newEl.hasAttribute(oldAttr.name) &&
29
- runtimeAttrs.indexOf(oldAttr.name) === UNFOUND_INDEX
30
- ) {
31
- oldEl.removeAttribute(oldAttr.name);
32
- }
33
- });
34
-
35
- newAttrs.forEach((newAttr) => {
36
- if (
37
- runtimeAttrs.indexOf(newAttr.name) !== UNFOUND_INDEX &&
38
- oldEl.hasAttribute(newAttr.name)
39
- ) {
40
- return;
41
- }
42
- const oldValue = oldEl.getAttribute(newAttr.name);
43
- if (oldValue !== newAttr.value) {
44
- oldEl.setAttribute(newAttr.name, newAttr.value);
45
- }
46
- });
47
- };
48
-
49
- const updateTextNode = (oldNode: Node, newNode: Node) => {
50
- if (oldNode.nodeValue !== newNode.nodeValue) {
51
- oldNode.nodeValue = newNode.nodeValue;
52
- }
53
- };
54
-
55
- const matchChildren = (oldChildren: Node[], newChildren: Node[]) => {
56
- const oldMap = new Map<string, KeyedEntry[]>();
57
- const newMap = new Map<string, KeyedEntry[]>();
58
-
59
- oldChildren.forEach((child, idx) => {
60
- const key = getElementKey(child, idx);
61
- if (!oldMap.has(key)) {
62
- oldMap.set(key, []);
63
- }
64
- oldMap.get(key)?.push({ index: idx, node: child });
65
- });
66
-
67
- newChildren.forEach((child, idx) => {
68
- const key = getElementKey(child, idx);
69
- if (!newMap.has(key)) {
70
- newMap.set(key, []);
71
- }
72
- newMap.get(key)?.push({ index: idx, node: child });
73
- });
74
-
75
- return { newMap, oldMap };
76
- };
77
-
78
- const isHMRScript = (elem: Node) =>
79
- elem instanceof Element && elem.hasAttribute('data-hmr-client');
80
-
81
- const isHMRPreserved = (elem: Node) =>
82
- isHMRScript(elem) ||
83
- (elem instanceof Element && elem.hasAttribute('data-hmr-overlay'));
84
-
85
- const isNonHMRScript = (child: Node) =>
86
- child instanceof Element && child.tagName === 'SCRIPT';
87
-
88
- const findBestMatch = (oldMatches: KeyedEntry[], matchedOld: Set<Node>) => {
89
- const unmatched = oldMatches.find((entry) => !matchedOld.has(entry.node));
90
- if (unmatched) return unmatched;
91
- if (oldMatches.length > 0) return oldMatches[0] ?? null;
92
-
93
- return null;
94
- };
95
-
96
- const reconcileChild = (
97
- newChild: Node,
98
- newIndex: number,
99
- oldMap: Map<string, KeyedEntry[]>,
100
- matchedOld: Set<Node>,
101
- parentNode: Node,
102
- oldChildrenFiltered: Node[]
103
- ) => {
104
- const newKey = getElementKey(newChild, newIndex);
105
- const oldMatches = oldMap.get(newKey) || [];
106
-
107
- if (oldMatches.length === 0) {
108
- const clone = newChild.cloneNode(true);
109
- parentNode.insertBefore(clone, oldChildrenFiltered[newIndex] || null);
110
-
111
- return;
112
- }
113
-
114
- const bestMatch = findBestMatch(oldMatches, matchedOld);
115
- if (bestMatch && !matchedOld.has(bestMatch.node)) {
116
- matchedOld.add(bestMatch.node);
117
- patchNode(bestMatch.node, newChild);
118
-
119
- return;
120
- }
121
-
122
- const clone = newChild.cloneNode(true);
123
- parentNode.insertBefore(clone, oldChildrenFiltered[newIndex] || null);
124
- };
125
-
126
- const patchNode = (oldNode: Node, newNode: Node) => {
127
- if (
128
- oldNode.nodeType === Node.TEXT_NODE &&
129
- newNode.nodeType === Node.TEXT_NODE
130
- ) {
131
- updateTextNode(oldNode, newNode);
132
-
133
- return;
134
- }
135
-
136
- if (
137
- oldNode.nodeType !== Node.ELEMENT_NODE ||
138
- newNode.nodeType !== Node.ELEMENT_NODE
139
- ) {
140
- return;
141
- }
142
-
143
- if (!(oldNode instanceof Element) || !(newNode instanceof Element)) return;
144
- const oldEl = oldNode;
145
- const newEl = newNode;
146
-
147
- if (oldEl.tagName !== newEl.tagName) {
148
- const clone = newEl.cloneNode(true);
149
- oldEl.replaceWith(clone);
150
-
151
- return;
152
- }
153
-
154
- updateElementAttributes(oldEl, newEl);
155
-
156
- const oldChildren = Array.from(oldNode.childNodes);
157
- const newChildren = Array.from(newNode.childNodes);
158
-
159
- const oldChildrenFiltered = oldChildren.filter(
160
- (child) => !isHMRScript(child) && !isNonHMRScript(child)
161
- );
162
- const newChildrenFiltered = newChildren.filter(
163
- (child) => !isHMRScript(child) && !isNonHMRScript(child)
164
- );
165
-
166
- const { oldMap } = matchChildren(oldChildrenFiltered, newChildrenFiltered);
167
- const matchedOld = new Set<Node>();
168
-
169
- newChildrenFiltered.forEach((newChild, newIndex) => {
170
- reconcileChild(
171
- newChild,
172
- newIndex,
173
- oldMap,
174
- matchedOld,
175
- oldNode,
176
- oldChildrenFiltered
177
- );
178
- });
179
-
180
- oldChildrenFiltered.forEach((oldChild) => {
181
- if (!matchedOld.has(oldChild) && !isHMRPreserved(oldChild)) {
182
- oldChild.remove();
183
- }
184
- });
185
- };
186
-
187
- export const patchDOMInPlace = (oldContainer: HTMLElement, newHTML: string) => {
188
- const tempDiv = document.createElement('div');
189
- tempDiv.innerHTML = newHTML;
190
- const newContainer = tempDiv;
191
-
192
- const oldChildren = Array.from(oldContainer.childNodes);
193
- const newChildren = Array.from(newContainer.childNodes);
194
-
195
- const oldChildrenFiltered = oldChildren.filter(
196
- (child) =>
197
- !(
198
- child instanceof Element &&
199
- child.tagName === 'SCRIPT' &&
200
- !child.hasAttribute('data-hmr-client')
201
- )
202
- );
203
- const newChildrenFiltered = newChildren.filter(
204
- (child) => !isNonHMRScript(child)
205
- );
206
-
207
- const { oldMap } = matchChildren(oldChildrenFiltered, newChildrenFiltered);
208
- const matchedOld = new Set<Node>();
209
-
210
- newChildrenFiltered.forEach((newChild, newIndex) => {
211
- reconcileChild(
212
- newChild,
213
- newIndex,
214
- oldMap,
215
- matchedOld,
216
- oldContainer,
217
- oldChildrenFiltered
218
- );
219
- });
220
-
221
- oldChildrenFiltered.forEach((oldChild) => {
222
- if (matchedOld.has(oldChild)) return;
223
- if (isHMRPreserved(oldChild)) return;
224
- oldChild.remove();
225
- });
226
- };
@@ -1,423 +0,0 @@
1
- import type {} from '../../types/globals';
2
- /* DOM state snapshot/restore to preserve user-visible state across HMR */
3
-
4
- import type { DOMStateEntry, DOMStateSnapshot } from '../../types/client';
5
- import {
6
- FOCUS_ID_PREFIX_LENGTH,
7
- FOCUS_IDX_PREFIX_LENGTH,
8
- FOCUS_NAME_PREFIX_LENGTH,
9
- UNFOUND_INDEX
10
- } from './constants';
11
-
12
- const trySetSelectionRange = (
13
- element: HTMLInputElement | HTMLTextAreaElement,
14
- start: number,
15
- end: number
16
- ) => {
17
- try {
18
- element.setSelectionRange(start, end);
19
- } catch {
20
- /* ignore */
21
- }
22
- };
23
-
24
- const restoreSelectionRange = (
25
- element: HTMLInputElement | HTMLTextAreaElement,
26
- entry: DOMStateEntry
27
- ) => {
28
- if (
29
- entry.selStart === undefined ||
30
- entry.selEnd === undefined ||
31
- !element.setSelectionRange
32
- )
33
- return;
34
- trySetSelectionRange(element, entry.selStart, entry.selEnd);
35
- };
36
-
37
- const restoreInputEntry = (target: Element, entry: DOMStateEntry) => {
38
- if (!(target instanceof HTMLInputElement)) return;
39
- const input = target;
40
- const type = entry.type || input.getAttribute('type') || 'text';
41
- if (type === 'checkbox' || type === 'radio') {
42
- if (entry.checked !== undefined) input.checked = entry.checked;
43
- } else if (entry.value !== undefined) {
44
- input.value = entry.value;
45
- }
46
- restoreSelectionRange(input, entry);
47
- };
48
-
49
- const restoreTextareaEntry = (target: Element, entry: DOMStateEntry) => {
50
- if (!(target instanceof HTMLTextAreaElement)) return;
51
- const textarea = target;
52
- if (entry.value !== undefined) textarea.value = entry.value;
53
- restoreSelectionRange(textarea, entry);
54
- };
55
-
56
- const restoreSelectEntry = (target: Element, entry: DOMStateEntry) => {
57
- if (!Array.isArray(entry.values)) return;
58
- if (!(target instanceof HTMLSelectElement)) return;
59
- const select = target;
60
- const { values } = entry;
61
- Array.from(select.options).forEach((opt) => {
62
- opt.selected = values.indexOf(opt.value) !== UNFOUND_INDEX;
63
- });
64
- };
65
-
66
- const restoreEntry = (target: Element, entry: DOMStateEntry) => {
67
- if (target.tagName === 'INPUT') {
68
- restoreInputEntry(target, entry);
69
-
70
- return;
71
- }
72
- if (target.tagName === 'TEXTAREA') {
73
- restoreTextareaEntry(target, entry);
74
-
75
- return;
76
- }
77
- if (target.tagName === 'SELECT') {
78
- restoreSelectEntry(target, entry);
79
-
80
- return;
81
- }
82
- if (target.tagName === 'OPTION') {
83
- if (entry.selected !== undefined && target instanceof HTMLOptionElement)
84
- target.selected = entry.selected;
85
-
86
- return;
87
- }
88
- if (target.tagName === 'DETAILS') {
89
- if (entry.open !== undefined && target instanceof HTMLDetailsElement)
90
- target.open = entry.open;
91
-
92
- return;
93
- }
94
- if (target.getAttribute('contenteditable') === 'true') {
95
- if (entry.text !== undefined) target.textContent = entry.text;
96
- }
97
- };
98
-
99
- const findEntryTarget = (
100
- root: HTMLElement,
101
- elements: NodeListOf<Element>,
102
- entry: DOMStateEntry
103
- ) => {
104
- if (entry.id) return root.querySelector(`#${CSS.escape(entry.id)}`);
105
- if (entry.name)
106
- return root.querySelector(`[name="${CSS.escape(entry.name)}"]`);
107
- if (elements[entry.idx]) return elements[entry.idx] ?? null;
108
-
109
- return null;
110
- };
111
-
112
- const resolveFocusElement = (
113
- root: HTMLElement,
114
- elements: NodeListOf<Element>,
115
- activeKey: string
116
- ) => {
117
- if (activeKey.startsWith('id:'))
118
- return root.querySelector(
119
- `#${CSS.escape(activeKey.slice(FOCUS_ID_PREFIX_LENGTH))}`
120
- );
121
- if (activeKey.startsWith('name:'))
122
- return root.querySelector(
123
- `[name="${CSS.escape(activeKey.slice(FOCUS_NAME_PREFIX_LENGTH))}"]`
124
- );
125
- if (!activeKey.startsWith('idx:')) return null;
126
- const idx = parseInt(activeKey.slice(FOCUS_IDX_PREFIX_LENGTH), 10);
127
- if (isNaN(idx) || !elements[idx]) return null;
128
-
129
- return elements[idx];
130
- };
131
-
132
- export const restoreDOMState = (
133
- root: HTMLElement,
134
- snapshot: DOMStateSnapshot
135
- ) => {
136
- if (!snapshot || !snapshot.items) return;
137
- const selector =
138
- 'input, textarea, select, option, [contenteditable="true"], details';
139
- const elements = root.querySelectorAll(selector);
140
-
141
- snapshot.items.forEach((entry) => {
142
- const target = findEntryTarget(root, elements, entry);
143
- if (!target) return;
144
- restoreEntry(target, entry);
145
- });
146
-
147
- if (!snapshot.activeKey) return;
148
- const focusEl = resolveFocusElement(root, elements, snapshot.activeKey);
149
- if (focusEl instanceof HTMLElement) {
150
- focusEl.focus();
151
- }
152
- };
153
-
154
- const resolveFormElement = (
155
- isStandalone: boolean,
156
- form: Element | null,
157
- name: string
158
- ) => {
159
- if (isStandalone) {
160
- // Annotation drives querySelector's generic `E` (downstream needs
161
- // HTMLInputElement, not the default Element).
162
- const element: HTMLInputElement | null = document.querySelector(
163
- `input[name="${name}"], textarea[name="${name}"], select[name="${name}"]`
164
- );
165
- if (element) return element;
166
-
167
- const byId = document.getElementById(name);
168
- if (byId instanceof HTMLInputElement) return byId;
169
-
170
- return null;
171
- }
172
- if (!form) return null;
173
-
174
- const found = form.querySelector(`[name="${name}"], #${name}`);
175
- if (
176
- found instanceof HTMLInputElement ||
177
- found instanceof HTMLTextAreaElement ||
178
- found instanceof HTMLSelectElement
179
- )
180
- return found;
181
-
182
- return null;
183
- };
184
-
185
- const applyFormValue = (
186
- element: HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement,
187
- value: boolean | string
188
- ) => {
189
- if (
190
- element instanceof HTMLInputElement &&
191
- (element.type === 'checkbox' || element.type === 'radio')
192
- ) {
193
- element.checked = value === true;
194
-
195
- return;
196
- }
197
- element.value = String(value);
198
- };
199
-
200
- const resolveForm = (formId: string) => {
201
- const formIndex = parseInt(formId.replace('form-', ''));
202
- const form = document.getElementById(formId);
203
- if (form) return form;
204
- if (isNaN(formIndex)) return null;
205
- try {
206
- return document.querySelector(`form:nth-of-type(${formIndex + 1})`);
207
- } catch {
208
- return null;
209
- }
210
- };
211
-
212
- const restoreRadioGroup = (
213
- isStandalone: boolean,
214
- form: Element | null,
215
- groupName: string,
216
- selectedValue: string
217
- ) => {
218
- const scope = isStandalone ? document : form;
219
- if (!scope) return;
220
-
221
- const escapedName = CSS.escape(groupName);
222
- const escapedValue = CSS.escape(selectedValue);
223
- const radio = scope.querySelector<HTMLInputElement>(
224
- `input[type="radio"][name="${escapedName}"][value="${escapedValue}"]`
225
- );
226
-
227
- if (radio) {
228
- radio.checked = true;
229
- }
230
- };
231
-
232
- const RADIO_PREFIX = '__radio__';
233
-
234
- export const restoreFormState = (
235
- formState: Record<string, Record<string, boolean | string>>
236
- ) => {
237
- Object.keys(formState).forEach((formId) => {
238
- const isStandalone = formId === '__standalone__';
239
- const form = isStandalone ? null : resolveForm(formId);
240
- const formData = formState[formId];
241
- if (!formData) return;
242
- Object.keys(formData).forEach((name) => {
243
- if (name.startsWith(RADIO_PREFIX)) {
244
- const groupName = name.slice(RADIO_PREFIX.length);
245
- const value = formData[name];
246
- if (value === undefined) return;
247
- restoreRadioGroup(isStandalone, form, groupName, String(value));
248
-
249
- return;
250
- }
251
- const element = resolveFormElement(isStandalone, form, name);
252
- if (!element) return;
253
- const value = formData[name];
254
- if (value === undefined) return;
255
- applyFormValue(element, value);
256
- });
257
- });
258
- };
259
-
260
- export const restoreScrollState = (scrollState: {
261
- window: { x: number; y: number };
262
- }) => {
263
- if (scrollState && scrollState.window) {
264
- window.scrollTo(scrollState.window.x, scrollState.window.y);
265
- }
266
- };
267
-
268
- const saveInputEntry = (elem: Element, entry: DOMStateEntry) => {
269
- if (!(elem instanceof HTMLInputElement)) return;
270
- const input = elem;
271
- const type = input.getAttribute('type') || 'text';
272
- entry.type = type;
273
- if (type === 'checkbox' || type === 'radio') {
274
- entry.checked = input.checked;
275
- } else {
276
- entry.value = input.value;
277
- }
278
- if (input.selectionStart !== null && input.selectionEnd !== null) {
279
- entry.selStart = input.selectionStart;
280
- entry.selEnd = input.selectionEnd;
281
- }
282
- };
283
-
284
- const saveTextareaEntry = (elem: Element, entry: DOMStateEntry) => {
285
- if (!(elem instanceof HTMLTextAreaElement)) return;
286
- const textarea = elem;
287
- entry.value = textarea.value;
288
- if (textarea.selectionStart !== null && textarea.selectionEnd !== null) {
289
- entry.selStart = textarea.selectionStart;
290
- entry.selEnd = textarea.selectionEnd;
291
- }
292
- };
293
-
294
- const saveSelectEntry = (elem: Element, entry: DOMStateEntry) => {
295
- if (!(elem instanceof HTMLSelectElement)) return;
296
- const select = elem;
297
- const vals: string[] = [];
298
- Array.from(select.options).forEach((opt) => {
299
- if (opt.selected) vals.push(opt.value);
300
- });
301
- entry.values = vals;
302
- };
303
-
304
- const saveElementEntry = (elem: Element, entry: DOMStateEntry) => {
305
- if (elem.tagName === 'INPUT') {
306
- saveInputEntry(elem, entry);
307
-
308
- return;
309
- }
310
- if (elem.tagName === 'TEXTAREA') {
311
- saveTextareaEntry(elem, entry);
312
-
313
- return;
314
- }
315
- if (elem.tagName === 'SELECT') {
316
- saveSelectEntry(elem, entry);
317
-
318
- return;
319
- }
320
- if (elem.tagName === 'OPTION') {
321
- if (elem instanceof HTMLOptionElement) entry.selected = elem.selected;
322
-
323
- return;
324
- }
325
- if (elem.tagName === 'DETAILS') {
326
- if (elem instanceof HTMLDetailsElement) entry.open = elem.open;
327
-
328
- return;
329
- }
330
- if (elem.getAttribute('contenteditable') === 'true') {
331
- entry.text = elem.textContent || undefined;
332
- }
333
- };
334
-
335
- export const saveDOMState = (root: HTMLElement) => {
336
- const snapshot: DOMStateSnapshot = { activeKey: null, items: [] };
337
- const selector =
338
- 'input, textarea, select, option, [contenteditable="true"], details';
339
- const elements = root.querySelectorAll(selector);
340
-
341
- elements.forEach((el, idx) => {
342
- const entry: DOMStateEntry = {
343
- idx,
344
- tag: el.tagName.toLowerCase()
345
- };
346
- const id = el.getAttribute('id');
347
- const name = el.getAttribute('name');
348
- if (id) entry.id = id;
349
- else if (name) entry.name = name;
350
- saveElementEntry(el, entry);
351
- snapshot.items.push(entry);
352
- });
353
-
354
- const active = document.activeElement;
355
- if (!active || !root.contains(active)) return snapshot;
356
- const id = active.getAttribute('id');
357
- const name = active.getAttribute('name');
358
- if (id) snapshot.activeKey = `id:${id}`;
359
- else if (name) snapshot.activeKey = `name:${name}`;
360
- else
361
- snapshot.activeKey = `idx:${Array.prototype.indexOf.call(elements, active)}`;
362
-
363
- return snapshot;
364
- };
365
-
366
- const collectInputState = (
367
- element: HTMLInputElement,
368
- name: string,
369
- target: Record<string, boolean | string>
370
- ) => {
371
- if (element.type === 'radio') {
372
- if (element.checked) target[`__radio__${name}`] = element.value;
373
-
374
- return;
375
- }
376
- if (element.type === 'checkbox') {
377
- target[name] = element.checked;
378
-
379
- return;
380
- }
381
- target[name] = element.value;
382
- };
383
-
384
- export const saveFormState = () => {
385
- const formState: Record<string, Record<string, boolean | string>> = {};
386
- const forms = document.querySelectorAll('form');
387
- forms.forEach((form, formIndex) => {
388
- const formId = form.id || `form-${formIndex}`;
389
- const formData: Record<string, boolean | string> = {};
390
- formState[formId] = formData;
391
- const inputs = form.querySelectorAll('input, textarea, select');
392
- inputs.forEach((input) => {
393
- if (!(input instanceof HTMLInputElement)) return;
394
- const name =
395
- input.name || input.id || `input-${formIndex}-${inputs.length}`;
396
- collectInputState(input, name, formData);
397
- });
398
- });
399
-
400
- const standaloneInputs = document.querySelectorAll(
401
- 'input:not(form input), textarea:not(form textarea), select:not(form select)'
402
- );
403
- if (standaloneInputs.length <= 0) return formState;
404
- const standaloneData: Record<string, boolean | string> = {};
405
- formState['__standalone__'] = standaloneData;
406
- standaloneInputs.forEach((input) => {
407
- if (!(input instanceof HTMLInputElement)) return;
408
- const name =
409
- input.name || input.id || `standalone-${standaloneInputs.length}`;
410
- collectInputState(input, name, standaloneData);
411
- });
412
-
413
- return formState;
414
- };
415
-
416
- export const saveScrollState = () => {
417
- const scrollX = window.scrollX || window.pageXOffset;
418
- const scrollY = window.scrollY || window.pageYOffset;
419
-
420
- return {
421
- window: { x: scrollX, y: scrollY }
422
- };
423
- };
@@ -1,61 +0,0 @@
1
- import type {} from '../../types/globals';
2
- /* Snapshot/restore for JS-modified DOM state across HMR updates.
3
- * Before patching, captures text and dynamic children of elements with IDs.
4
- * After patching, restores values that were changed by user scripts. */
5
-
6
- type DOMSnapshot = {
7
- children: Map<string, string>;
8
- text: Map<string, string>;
9
- };
10
-
11
- export const restoreDOMChanges = (
12
- root: HTMLElement,
13
- snapshot: DOMSnapshot,
14
- newHTML: string
15
- ) => {
16
- const tempDiv = document.createElement('div');
17
- tempDiv.innerHTML = newHTML;
18
-
19
- /* Restore JS-modified text on leaf elements */
20
- snapshot.text.forEach((liveText, elId) => {
21
- const newEl = tempDiv.querySelector(`#${CSS.escape(elId)}`);
22
- const newText = newEl ? newEl.textContent || '' : '';
23
- if (liveText === newText) return;
24
-
25
- const liveEl = root.querySelector(`#${CSS.escape(elId)}`);
26
- if (liveEl) {
27
- liveEl.textContent = liveText;
28
- }
29
- });
30
-
31
- /* Restore JS-added children (e.g. dynamically appended list items) */
32
- snapshot.children.forEach((liveHTML, elId) => {
33
- const newEl = tempDiv.querySelector(`#${CSS.escape(elId)}`);
34
- const newInner = newEl ? newEl.innerHTML : '';
35
- if (liveHTML === newInner || liveHTML.length <= newInner.length) return;
36
-
37
- const liveEl = root.querySelector(`#${CSS.escape(elId)}`);
38
- if (liveEl) {
39
- liveEl.innerHTML = liveHTML;
40
- }
41
- });
42
- };
43
- export const snapshotDOMChanges = (root: HTMLElement): DOMSnapshot => {
44
- const text = new Map<string, string>();
45
- const children = new Map<string, string>();
46
-
47
- root.querySelectorAll('[id]').forEach((elem) => {
48
- const { childNodes } = elem;
49
- const isTextLeaf = Array.from(childNodes).every(
50
- (child) => child.nodeType === Node.TEXT_NODE
51
- );
52
-
53
- if (isTextLeaf && childNodes.length > 0) {
54
- text.set(elem.id, elem.textContent || '');
55
- } else if (elem.children.length > 0) {
56
- children.set(elem.id, elem.innerHTML);
57
- }
58
- });
59
-
60
- return { children, text };
61
- };