tungsten 0.6.3 → 0.7.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 (532) hide show
  1. package/dist/.build-complete +1 -1
  2. package/dist/Brands.d.ts +16 -0
  3. package/dist/Brands.d.ts.map +1 -0
  4. package/dist/Brands.js +22 -0
  5. package/dist/Components.d.ts +4 -1
  6. package/dist/Components.d.ts.map +1 -1
  7. package/dist/Components.js +24 -6
  8. package/dist/ContentNode.d.ts +3 -2
  9. package/dist/ContentNode.d.ts.map +1 -1
  10. package/dist/ContentNode.js +11 -0
  11. package/dist/Framework.d.ts.map +1 -1
  12. package/dist/Framework.js +23 -4
  13. package/dist/FrameworkConfig.d.ts +9 -1
  14. package/dist/FrameworkConfig.d.ts.map +1 -1
  15. package/dist/FrameworkConfig.types.test.d.ts +2 -0
  16. package/dist/FrameworkConfig.types.test.d.ts.map +1 -0
  17. package/dist/FrameworkConfig.types.test.js +6 -0
  18. package/dist/FunctionComponent.d.ts +1 -0
  19. package/dist/FunctionComponent.d.ts.map +1 -1
  20. package/dist/FunctionComponentStandIn.d.ts.map +1 -1
  21. package/dist/Instance/Instance.d.ts +21 -9
  22. package/dist/Instance/Instance.d.ts.map +1 -1
  23. package/dist/Instance/Instance.js +42 -38
  24. package/dist/Instance/InstanceConfig.d.ts +3 -1
  25. package/dist/Instance/InstanceConfig.d.ts.map +1 -1
  26. package/dist/RenderedContentNode.d.ts.map +1 -1
  27. package/dist/RenderingNode.d.ts.map +1 -1
  28. package/dist/Servers/DevServer.d.ts +4 -2
  29. package/dist/Servers/DevServer.d.ts.map +1 -1
  30. package/dist/Servers/DevServer.js +72 -21
  31. package/dist/Servers/ProdServer.d.ts +5 -2
  32. package/dist/Servers/ProdServer.d.ts.map +1 -1
  33. package/dist/Servers/ProdServer.js +95 -19
  34. package/dist/Servers/StaticSiteServer.d.ts +1 -1
  35. package/dist/Servers/StaticSiteServer.d.ts.map +1 -1
  36. package/dist/Servers/TungstenServer.d.ts +2 -1
  37. package/dist/Servers/TungstenServer.d.ts.map +1 -1
  38. package/dist/Servers/TungstenServer.js +7 -0
  39. package/dist/Servers/cacheVersioned.d.ts +3 -0
  40. package/dist/Servers/cacheVersioned.d.ts.map +1 -0
  41. package/dist/Servers/cacheVersioned.js +23 -0
  42. package/dist/Servers/devErrorPageAutoRetry.d.ts.map +1 -1
  43. package/dist/Servers/devErrorPageAutoRetry.js +1 -0
  44. package/dist/Servers/initStores.d.ts +4 -4
  45. package/dist/Servers/initStores.d.ts.map +1 -1
  46. package/dist/Servers/initStores.js +2 -2
  47. package/dist/Servers/loadEnvsDev.d.ts.map +1 -1
  48. package/dist/Servers/loadEnvsDev.js +7 -6
  49. package/dist/Servers/resetRegistrations.d.ts +2 -0
  50. package/dist/Servers/resetRegistrations.d.ts.map +1 -0
  51. package/dist/Servers/resetRegistrations.js +13 -0
  52. package/dist/Servers/routing.d.ts +3 -2
  53. package/dist/Servers/routing.d.ts.map +1 -1
  54. package/dist/Servers/routing.js +12 -7
  55. package/dist/Servers/stubInstance.d.ts +8 -0
  56. package/dist/Servers/stubInstance.d.ts.map +1 -0
  57. package/dist/Servers/stubInstance.js +40 -0
  58. package/dist/Store/InternalStoreSchema.d.ts +1 -1
  59. package/dist/Store/Store.js +2 -1
  60. package/dist/Store/StoreSchemaClass.d.ts +6 -3
  61. package/dist/Store/StoreSchemaClass.d.ts.map +1 -1
  62. package/dist/Store/StoreSchemaClass.js +8 -1
  63. package/dist/Store/TypeSafeStore.js +2 -1
  64. package/dist/Store/createStores.d.ts +3 -3
  65. package/dist/Store/createStores.d.ts.map +1 -1
  66. package/dist/Store/createStores.js +7 -2
  67. package/dist/Store/getInternalStore.d.ts.map +1 -1
  68. package/dist/Store/registerStore.d.ts.map +1 -1
  69. package/dist/Store/registerStore.js +2 -2
  70. package/dist/Store/storeCreators.d.ts +2 -2
  71. package/dist/Store/storeCreators.d.ts.map +1 -1
  72. package/dist/TungstenApp.d.ts +3 -3
  73. package/dist/TungstenApp.d.ts.map +1 -1
  74. package/dist/_client/cjsHelpers.d.ts.map +1 -1
  75. package/dist/_client/cjsHelpers.js +5 -3
  76. package/dist/_client/client.d.ts +2 -0
  77. package/dist/_client/client.d.ts.map +1 -1
  78. package/dist/_client/client.js +10 -3
  79. package/dist/api/getApiRoutes.d.ts.map +1 -1
  80. package/dist/api/getExport.d.ts +1 -1
  81. package/dist/api/getExport.d.ts.map +1 -1
  82. package/dist/api/getExport.js +2 -1
  83. package/dist/api/getExportDev.d.ts +1 -1
  84. package/dist/api/getExportDev.d.ts.map +1 -1
  85. package/dist/appBuilder.d.ts +69 -0
  86. package/dist/appBuilder.d.ts.map +1 -0
  87. package/dist/appBuilder.js +98 -0
  88. package/dist/appBuilder.types.test.d.ts +110 -0
  89. package/dist/appBuilder.types.test.d.ts.map +1 -0
  90. package/dist/appBuilder.types.test.js +240 -0
  91. package/dist/babelPlugins/BabelTransformBindDirect.js +7 -7
  92. package/dist/babelPlugins/BabelTransformBindVar.js +7 -7
  93. package/dist/babelPlugins/BabelTransformComponentState.d.ts.map +1 -1
  94. package/dist/babelPlugins/BabelTransformComponentStyles.d.ts.map +1 -1
  95. package/dist/babelPlugins/BabelTransformComponentStyles.js +5 -5
  96. package/dist/babelPlugins/BabelTransformCssImports.d.ts.map +1 -1
  97. package/dist/babelPlugins/BabelTransformCssImports.js +2 -2
  98. package/dist/babelPlugins/BabelTransformDeproxyState.d.ts.map +1 -1
  99. package/dist/babelPlugins/BabelTransformPackageImports.d.ts.map +1 -1
  100. package/dist/babelPlugins/BabelTransformPackageImports.js +11 -6
  101. package/dist/babelPlugins/BabelTransformRemoveDevBlocks.d.ts.map +1 -1
  102. package/dist/babelPlugins/BabelTransformRemoveServerBlocks.d.ts.map +1 -1
  103. package/dist/babelPlugins/BabelTypes.d.ts.map +1 -1
  104. package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsCjs.d.ts.map +1 -1
  105. package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsCjs.js +1 -1
  106. package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsEsm.d.ts.map +1 -1
  107. package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsEsm.js +2 -2
  108. package/dist/bin/commands/compile.d.ts.map +1 -1
  109. package/dist/bin/commands/compile.js +2 -1
  110. package/dist/build/CompilationInfo.d.ts +3 -0
  111. package/dist/build/CompilationInfo.d.ts.map +1 -1
  112. package/dist/build/assetVersions.d.ts +9 -0
  113. package/dist/build/assetVersions.d.ts.map +1 -0
  114. package/dist/build/assetVersions.js +39 -0
  115. package/dist/build/babel.user.common.config.d.ts.map +1 -1
  116. package/dist/build/bundle.d.ts.map +1 -1
  117. package/dist/build/bundle.js +2 -1
  118. package/dist/build/bundleBabelOptions.d.ts.map +1 -1
  119. package/dist/build/clientRoutesFile.d.ts +2 -0
  120. package/dist/build/clientRoutesFile.d.ts.map +1 -0
  121. package/dist/build/clientRoutesFile.js +13 -0
  122. package/dist/build/compileJavascript.d.ts.map +1 -1
  123. package/dist/build/compileJavascript.js +4 -3
  124. package/dist/build/compileStyles.d.ts +2 -1
  125. package/dist/build/compileStyles.d.ts.map +1 -1
  126. package/dist/build/compileStyles.js +38 -83
  127. package/dist/build/compileUserApp.d.ts.map +1 -1
  128. package/dist/build/componentStylesCache.d.ts.map +1 -1
  129. package/dist/build/componentStylesCache.js +3 -2
  130. package/dist/build/copyAssets.d.ts.map +1 -1
  131. package/dist/build/copyAssets.js +2 -1
  132. package/dist/build/copyPackageModulesToPackagesFolder.d.ts.map +1 -1
  133. package/dist/build/copyPackageModulesToPackagesFolder.js +1 -1
  134. package/dist/build/copyPublicFiles.d.ts.map +1 -1
  135. package/dist/build/copyPublicFiles.js +2 -1
  136. package/dist/build/createClientFiles.d.ts.map +1 -1
  137. package/dist/build/createClientFiles.js +9 -5
  138. package/dist/build/createInstanceConfigFile.d.ts +1 -1
  139. package/dist/build/createInstanceConfigFile.d.ts.map +1 -1
  140. package/dist/build/createInstanceConfigFile.js +9 -3
  141. package/dist/build/frameworkDestLocation.d.ts.map +1 -1
  142. package/dist/build/frameworkDestLocation.js +5 -6
  143. package/dist/build/frameworkStylesheets.d.ts.map +1 -1
  144. package/dist/build/frameworkStylesheets.js +1 -1
  145. package/dist/build/makeBabelRawConfig.d.ts.map +1 -1
  146. package/dist/build/makeBabelUserDevConfig.d.ts +2 -2
  147. package/dist/build/makeBabelUserDevConfig.d.ts.map +1 -1
  148. package/dist/build/makeBabelUserProdConfig.d.ts.map +1 -1
  149. package/dist/build/rollup.user.prod.config.d.ts.map +1 -1
  150. package/dist/build/rollup.user.prod.config.js +5 -3
  151. package/dist/build/rollupProdConstants.d.ts +5 -0
  152. package/dist/build/rollupProdConstants.d.ts.map +1 -0
  153. package/dist/build/rollupProdConstants.js +21 -0
  154. package/dist/cacheControl.d.ts +13 -0
  155. package/dist/cacheControl.d.ts.map +1 -0
  156. package/dist/cacheControl.js +22 -0
  157. package/dist/compat/types.d.ts +1 -1
  158. package/dist/compat/types.d.ts.map +1 -1
  159. package/dist/componentHelpers.d.ts +19 -0
  160. package/dist/componentHelpers.d.ts.map +1 -0
  161. package/dist/componentHelpers.js +31 -0
  162. package/dist/componentProxyHandlers.d.ts.map +1 -1
  163. package/dist/components/Fragment.d.ts +8 -0
  164. package/dist/components/Fragment.d.ts.map +1 -0
  165. package/dist/components/Fragment.js +10 -0
  166. package/dist/components/Link.d.ts +4 -3
  167. package/dist/components/Link.d.ts.map +1 -1
  168. package/dist/components/Link.js +1 -0
  169. package/dist/components/NoEscape.d.ts +8 -0
  170. package/dist/components/NoEscape.d.ts.map +1 -0
  171. package/dist/components/NoEscape.js +6 -0
  172. package/dist/components/RouteRedirectComponent.d.ts.map +1 -1
  173. package/dist/components/RouteRedirectComponent.js +1 -1
  174. package/dist/components/WebRedirectComponent.d.ts.map +1 -1
  175. package/dist/components/WebRedirectComponent.js +1 -1
  176. package/dist/components/bindable/BindVariable.d.ts +1 -0
  177. package/dist/components/bindable/BindVariable.d.ts.map +1 -1
  178. package/dist/components/bindable/BindableCheckbox.d.ts +7 -7
  179. package/dist/components/bindable/BindableCheckbox.d.ts.map +1 -1
  180. package/dist/components/bindable/BindableInput.d.ts +7 -7
  181. package/dist/components/bindable/BindableInput.d.ts.map +1 -1
  182. package/dist/components/bindable/BindableInputNonString.d.ts +2 -2
  183. package/dist/components/bindable/BindableInputNonString.d.ts.map +1 -1
  184. package/dist/components/bindable/BindableInputString.d.ts +2 -2
  185. package/dist/components/bindable/BindableInputString.d.ts.map +1 -1
  186. package/dist/components/bindable/BindableInputTyped.d.ts +3 -3
  187. package/dist/components/bindable/BindableInputTyped.d.ts.map +1 -1
  188. package/dist/components/bindable/BindableInputTypedLegacy.d.ts +3 -3
  189. package/dist/components/bindable/BindableInputTypedLegacy.d.ts.map +1 -1
  190. package/dist/components/bindable/BindableRadio.js +2 -2
  191. package/dist/components/bindable/BindableSelect.d.ts +13 -10
  192. package/dist/components/bindable/BindableSelect.d.ts.map +1 -1
  193. package/dist/components/bindable/BindableSelectNaive.js +3 -3
  194. package/dist/components/bindable/BindableTextarea.d.ts +7 -7
  195. package/dist/components/bindable/BindableTextarea.d.ts.map +1 -1
  196. package/dist/components/bindable/bindableCandidates.comparison.d.ts +136 -0
  197. package/dist/components/bindable/bindableCandidates.comparison.d.ts.map +1 -0
  198. package/dist/components/bindable/bindableCandidates.comparison.js +268 -0
  199. package/dist/components/bindable/bindableProps.types.test.d.ts +50 -0
  200. package/dist/components/bindable/bindableProps.types.test.d.ts.map +1 -0
  201. package/dist/components/bindable/bindableProps.types.test.js +252 -0
  202. package/dist/components/library/RichTextEditor/RichTextEditor.d.ts.map +1 -1
  203. package/dist/components/library/RichTextEditor/contentTree.d.ts.map +1 -1
  204. package/dist/components/makeTypedLink.d.ts +9 -0
  205. package/dist/components/makeTypedLink.d.ts.map +1 -0
  206. package/dist/components/makeTypedLink.js +15 -0
  207. package/dist/context/registerContext.d.ts +22 -0
  208. package/dist/context/registerContext.d.ts.map +1 -0
  209. package/dist/context/registerContext.js +18 -0
  210. package/dist/env/getEnvSchemas.d.ts.map +1 -1
  211. package/dist/env/getEnvSchemas.js +2 -1
  212. package/dist/fileVersions.d.ts +9 -0
  213. package/dist/fileVersions.d.ts.map +1 -0
  214. package/dist/fileVersions.js +28 -0
  215. package/dist/findUserConfig.d.ts +1 -1
  216. package/dist/findUserConfig.d.ts.map +1 -1
  217. package/dist/findUserConfig.js +2 -1
  218. package/dist/frameworkConfigSchema.d.ts +16 -2
  219. package/dist/frameworkConfigSchema.d.ts.map +1 -1
  220. package/dist/frameworkConfigSchema.js +15 -3
  221. package/dist/getComponent.d.ts.map +1 -1
  222. package/dist/getComponent.js +4 -3
  223. package/dist/getRoutes.d.ts.map +1 -1
  224. package/dist/getRoutes.js +9 -8
  225. package/dist/getUserConfig.d.ts.map +1 -1
  226. package/dist/hmr/applyHmrModule.d.ts.map +1 -1
  227. package/dist/hmr/componentIdentity.js +1 -1
  228. package/dist/hooks/getCurrentComponent.d.ts +1 -1
  229. package/dist/hooks/getCurrentComponent.d.ts.map +1 -1
  230. package/dist/hydrate/hydrate.d.ts +5 -1
  231. package/dist/hydrate/hydrate.d.ts.map +1 -1
  232. package/dist/hydrate/hydrate.js +86 -52
  233. package/dist/hydrate/hydrateGlobalData.d.ts +4 -3
  234. package/dist/hydrate/hydrateGlobalData.d.ts.map +1 -1
  235. package/dist/hydrate/reconcileHydratedAttributes.d.ts +2 -1
  236. package/dist/hydrate/reconcileHydratedAttributes.d.ts.map +1 -1
  237. package/dist/hydrate/reconcileHydratedAttributes.js +4 -3
  238. package/dist/hydrate/renderHydrationMismatchBanner.d.ts.map +1 -1
  239. package/dist/hydrate/renderHydrationMismatchBanner.js +2 -1
  240. package/dist/hydrate/stubRouting.d.ts +8 -0
  241. package/dist/hydrate/stubRouting.d.ts.map +1 -0
  242. package/dist/hydrate/stubRouting.js +25 -0
  243. package/dist/importDevModuleWithRetry.d.ts +2 -1
  244. package/dist/importDevModuleWithRetry.d.ts.map +1 -1
  245. package/dist/importDevModuleWithRetry.js +2 -1
  246. package/dist/importModule.d.ts +3 -0
  247. package/dist/importModule.d.ts.map +1 -0
  248. package/dist/importModule.js +4 -0
  249. package/dist/index.js +2 -1
  250. package/dist/indexInner.d.ts +30 -7
  251. package/dist/indexInner.d.ts.map +1 -1
  252. package/dist/indexInner.js +37 -2
  253. package/dist/json.d.ts +12 -0
  254. package/dist/json.d.ts.map +1 -0
  255. package/dist/json.js +8 -0
  256. package/dist/jsxHelpers.d.ts +3 -0
  257. package/dist/jsxHelpers.d.ts.map +1 -0
  258. package/dist/jsxHelpers.js +6 -0
  259. package/dist/jsxRuntime.d.ts +1 -0
  260. package/dist/jsxRuntime.d.ts.map +1 -1
  261. package/dist/jsxRuntime.js +3 -1
  262. package/dist/jsxRuntimeSignals.d.ts.map +1 -1
  263. package/dist/jsxRuntimeSignals.js +1 -0
  264. package/dist/makeFinalConfig.d.ts.map +1 -1
  265. package/dist/makeFinalConfig.js +2 -0
  266. package/dist/makeInstanceConfigFromFrameworkConfig.d.ts.map +1 -1
  267. package/dist/makeInstanceConfigFromFrameworkConfig.js +2 -0
  268. package/dist/mergeConfigs.d.ts.map +1 -1
  269. package/dist/mergeConfigs.js +2 -6
  270. package/dist/nbsp.d.ts +1 -2
  271. package/dist/nbsp.d.ts.map +1 -1
  272. package/dist/nbsp.js +3 -7
  273. package/dist/objectMap.d.ts +1 -1
  274. package/dist/objectMap.d.ts.map +1 -1
  275. package/dist/pipeline/PipelineRequestHandler.d.ts +25 -0
  276. package/dist/pipeline/PipelineRequestHandler.d.ts.map +1 -0
  277. package/dist/pipeline/PipelineRequestHandler.js +104 -0
  278. package/dist/pipeline/contextStore.d.ts +12 -0
  279. package/dist/pipeline/contextStore.d.ts.map +1 -0
  280. package/dist/pipeline/contextStore.js +13 -0
  281. package/dist/pipeline/hydratePipeline.d.ts +4 -0
  282. package/dist/pipeline/hydratePipeline.d.ts.map +1 -0
  283. package/dist/pipeline/hydratePipeline.js +83 -0
  284. package/dist/pipeline/importRoutesModule.d.ts +6 -0
  285. package/dist/pipeline/importRoutesModule.d.ts.map +1 -0
  286. package/dist/pipeline/importRoutesModule.js +33 -0
  287. package/dist/pipeline/networkedTransport.d.ts +11 -0
  288. package/dist/pipeline/networkedTransport.d.ts.map +1 -0
  289. package/dist/pipeline/networkedTransport.js +54 -0
  290. package/dist/pipeline/pipeline.d.ts +107 -0
  291. package/dist/pipeline/pipeline.d.ts.map +1 -0
  292. package/dist/pipeline/pipeline.js +113 -0
  293. package/dist/pipeline/pipeline.types.test.d.ts +760 -0
  294. package/dist/pipeline/pipeline.types.test.d.ts.map +1 -0
  295. package/dist/pipeline/pipeline.types.test.js +344 -0
  296. package/dist/pipeline/pipelineDefinition.d.ts +78 -0
  297. package/dist/pipeline/pipelineDefinition.d.ts.map +1 -0
  298. package/dist/pipeline/pipelineDefinition.js +11 -0
  299. package/dist/pipeline/pipelineSplit.types.test.d.ts +2445 -0
  300. package/dist/pipeline/pipelineSplit.types.test.d.ts.map +1 -0
  301. package/dist/pipeline/pipelineSplit.types.test.js +440 -0
  302. package/dist/pipeline/runPipeline.d.ts +29 -0
  303. package/dist/pipeline/runPipeline.d.ts.map +1 -0
  304. package/dist/pipeline/runPipeline.js +71 -0
  305. package/dist/pipeline/runSplitPipeline.d.ts +10 -0
  306. package/dist/pipeline/runSplitPipeline.d.ts.map +1 -0
  307. package/dist/pipeline/runSplitPipeline.js +52 -0
  308. package/dist/pipeline/splitPipeline.d.ts +62 -0
  309. package/dist/pipeline/splitPipeline.d.ts.map +1 -0
  310. package/dist/pipeline/splitPipeline.js +76 -0
  311. package/dist/pop.js +1 -1
  312. package/dist/rawHtml/filterContentNode.d.ts.map +1 -1
  313. package/dist/render/HeadData.d.ts +3 -1
  314. package/dist/render/HeadData.d.ts.map +1 -1
  315. package/dist/render/classComponentNodeToRenderingTree.d.ts.map +1 -1
  316. package/dist/render/componentNodeToRenderingTree.d.ts.map +1 -1
  317. package/dist/render/contentToHtml.d.ts +2 -2
  318. package/dist/render/contentToHtml.d.ts.map +1 -1
  319. package/dist/render/contentToHtml.js +2 -1
  320. package/dist/render/contentToHtmlDev.d.ts +1 -1
  321. package/dist/render/contentToHtmlDev.d.ts.map +1 -1
  322. package/dist/render/contentTreeToRenderingTree.d.ts.map +1 -1
  323. package/dist/render/contentTreeToRenderingTree.js +6 -2
  324. package/dist/render/functionComponentNodeToRenderingTree.d.ts.map +1 -1
  325. package/dist/render/functionComponentNodeToRenderingTree.js +2 -2
  326. package/dist/render/instantiateComponent.d.ts.map +1 -1
  327. package/dist/render/processHead.d.ts.map +1 -1
  328. package/dist/render/processHead.js +12 -18
  329. package/dist/render/renderingTreeToHtml.d.ts.map +1 -1
  330. package/dist/render/renderingTreeToHtml.js +6 -3
  331. package/dist/render/rootToHtml.d.ts +2 -2
  332. package/dist/render/rootToHtml.d.ts.map +1 -1
  333. package/dist/requests/fetch/delete.d.ts.map +1 -1
  334. package/dist/requests/fetch/delete.js +5 -2
  335. package/dist/requests/fetch/get.js +1 -1
  336. package/dist/requests/fetch/patch.d.ts.map +1 -1
  337. package/dist/requests/fetch/patch.js +5 -2
  338. package/dist/requests/fetch/post.d.ts.map +1 -1
  339. package/dist/requests/fetch/post.js +5 -2
  340. package/dist/requests/fetch/put.d.ts.map +1 -1
  341. package/dist/requests/fetch/put.js +5 -2
  342. package/dist/routesLocationParts.d.ts +6 -0
  343. package/dist/routesLocationParts.d.ts.map +1 -0
  344. package/dist/routesLocationParts.js +10 -0
  345. package/dist/routing/AppRoutes.d.ts +5 -3
  346. package/dist/routing/AppRoutes.d.ts.map +1 -1
  347. package/dist/routing/MatchedRouteInfo.d.ts +13 -0
  348. package/dist/routing/MatchedRouteInfo.d.ts.map +1 -0
  349. package/dist/routing/MatchedRouteInfo.js +1 -0
  350. package/dist/routing/RouteContentFunction.d.ts +1 -2
  351. package/dist/routing/RouteContentFunction.d.ts.map +1 -1
  352. package/dist/routing/RouteDataFunction.type.d.ts +4 -2
  353. package/dist/routing/RouteDataFunction.type.d.ts.map +1 -1
  354. package/dist/routing/RoutePaths.d.ts +12 -0
  355. package/dist/routing/RoutePaths.d.ts.map +1 -0
  356. package/dist/routing/RouteTypes.d.ts +6 -4
  357. package/dist/routing/RouteTypes.d.ts.map +1 -1
  358. package/dist/routing/Routes.d.ts +20 -11
  359. package/dist/routing/Routes.d.ts.map +1 -1
  360. package/dist/routing/RoutesFunction.d.ts +11 -2
  361. package/dist/routing/RoutesFunction.d.ts.map +1 -1
  362. package/dist/routing/Serializable.d.ts +5 -0
  363. package/dist/routing/Serializable.d.ts.map +1 -0
  364. package/dist/routing/Serializable.js +1 -0
  365. package/dist/routing/builder.d.ts +100 -0
  366. package/dist/routing/builder.d.ts.map +1 -0
  367. package/dist/routing/builder.js +219 -0
  368. package/dist/routing/builder.trial.d.ts +2 -0
  369. package/dist/routing/builder.trial.d.ts.map +1 -0
  370. package/dist/routing/builder.trial.js +85 -0
  371. package/dist/routing/defineRoutes.d.ts +8 -0
  372. package/dist/routing/defineRoutes.d.ts.map +1 -0
  373. package/dist/routing/defineRoutes.js +3 -0
  374. package/dist/routing/pyramidRouting.d.ts +2 -0
  375. package/dist/routing/pyramidRouting.d.ts.map +1 -0
  376. package/dist/routing/pyramidRouting.js +13 -0
  377. package/dist/routing/redirectOf.d.ts +11 -0
  378. package/dist/routing/redirectOf.d.ts.map +1 -0
  379. package/dist/routing/redirectOf.js +32 -0
  380. package/dist/routing/registerGlobalData.d.ts +11 -3
  381. package/dist/routing/registerGlobalData.d.ts.map +1 -1
  382. package/dist/routing/registerGlobalData.js +6 -0
  383. package/dist/routing/registerParts.types.test.d.ts +2 -0
  384. package/dist/routing/registerParts.types.test.d.ts.map +1 -0
  385. package/dist/routing/registerParts.types.test.js +139 -0
  386. package/dist/routing/registerRoutes.d.ts +10 -0
  387. package/dist/routing/registerRoutes.d.ts.map +1 -0
  388. package/dist/routing/registerRoutes.js +9 -0
  389. package/dist/routing/registerRouting.d.ts +36 -0
  390. package/dist/routing/registerRouting.d.ts.map +1 -0
  391. package/dist/routing/registerRouting.js +34 -0
  392. package/dist/routing/registerRouting.types.test.d.ts +80 -0
  393. package/dist/routing/registerRouting.types.test.d.ts.map +1 -0
  394. package/dist/routing/registerRouting.types.test.js +120 -0
  395. package/dist/routing/registrationTypes.d.ts +11 -0
  396. package/dist/routing/registrationTypes.d.ts.map +1 -0
  397. package/dist/routing/registrationTypes.js +1 -0
  398. package/dist/routing/resolveAppRoutes.d.ts +5 -0
  399. package/dist/routing/resolveAppRoutes.d.ts.map +1 -0
  400. package/dist/routing/resolveAppRoutes.js +25 -0
  401. package/dist/routing/routesArray.d.ts +23 -0
  402. package/dist/routing/routesArray.d.ts.map +1 -0
  403. package/dist/routing/routesArray.js +20 -0
  404. package/dist/routing/routesArray.types.test.d.ts +2 -0
  405. package/dist/routing/routesArray.types.test.d.ts.map +1 -0
  406. package/dist/routing/routesArray.types.test.js +132 -0
  407. package/dist/routing/routingBuilder.d.ts +34 -0
  408. package/dist/routing/routingBuilder.d.ts.map +1 -0
  409. package/dist/routing/routingBuilder.js +32 -0
  410. package/dist/routing/routingBuilder.types.test.d.ts +2 -0
  411. package/dist/routing/routingBuilder.types.test.d.ts.map +1 -0
  412. package/dist/routing/routingBuilder.types.test.js +171 -0
  413. package/dist/routing/routingRegistry.d.ts +19 -0
  414. package/dist/routing/routingRegistry.d.ts.map +1 -0
  415. package/dist/routing/routingRegistry.js +29 -0
  416. package/dist/staticGen/getAppRoutes.d.ts +2 -2
  417. package/dist/staticGen/getAppRoutes.d.ts.map +1 -1
  418. package/dist/staticGen/getAppRoutes.js +9 -6
  419. package/dist/staticGen/staticGen.d.ts.map +1 -1
  420. package/dist/staticGen/staticGen.js +8 -2
  421. package/dist/style/styleContentSxy.d.ts.map +1 -1
  422. package/dist/sync/index.d.ts.map +1 -1
  423. package/dist/sync/index.js +2 -0
  424. package/dist/syncServer/index.cjs +1 -2
  425. package/dist/syncServer/preload.js +2 -0
  426. package/dist/testing/contentToString.d.ts +13 -0
  427. package/dist/testing/contentToString.d.ts.map +1 -0
  428. package/dist/testing/contentToString.js +105 -0
  429. package/dist/testing/createTestApp.d.ts +25 -1
  430. package/dist/testing/createTestApp.d.ts.map +1 -1
  431. package/dist/testing/createTestApp.js +12 -3
  432. package/dist/testing/display.d.ts +2 -0
  433. package/dist/testing/display.d.ts.map +1 -0
  434. package/dist/testing/display.js +37 -0
  435. package/dist/testing/ensure.d.ts +119 -0
  436. package/dist/testing/ensure.d.ts.map +1 -0
  437. package/dist/testing/ensure.js +664 -0
  438. package/dist/testing/ensure.trial.d.ts +2 -0
  439. package/dist/testing/ensure.trial.d.ts.map +1 -0
  440. package/dist/testing/ensure.trial.js +9 -0
  441. package/dist/testing/ensure.types.test.d.ts +2 -0
  442. package/dist/testing/ensure.types.test.d.ts.map +1 -0
  443. package/dist/testing/ensure.types.test.js +34 -0
  444. package/dist/testing/helpers/contentHtmlElements.d.ts.map +1 -1
  445. package/dist/testing/host.d.ts +86 -15
  446. package/dist/testing/host.d.ts.map +1 -1
  447. package/dist/testing/host.js +82 -23
  448. package/dist/testing/host.types.test.d.ts +2 -0
  449. package/dist/testing/host.types.test.d.ts.map +1 -0
  450. package/dist/testing/host.types.test.js +81 -0
  451. package/dist/testing/hydrateTestApp.d.ts +17 -0
  452. package/dist/testing/hydrateTestApp.d.ts.map +1 -1
  453. package/dist/testing/hydrateTestApp.js +27 -6
  454. package/dist/testing/index.d.ts +5 -3
  455. package/dist/testing/index.d.ts.map +1 -1
  456. package/dist/testing/index.js +3 -1
  457. package/dist/testing/pipeline/createTestPacketApp.d.ts +30 -0
  458. package/dist/testing/pipeline/createTestPacketApp.d.ts.map +1 -0
  459. package/dist/testing/pipeline/createTestPacketApp.js +45 -0
  460. package/dist/testing/pipeline/createTestPacketApp.types.test.d.ts +3 -0
  461. package/dist/testing/pipeline/createTestPacketApp.types.test.d.ts.map +1 -0
  462. package/dist/testing/pipeline/createTestPacketApp.types.test.js +101 -0
  463. package/dist/testing/pipeline/createTestPipelineApp.d.ts +70 -0
  464. package/dist/testing/pipeline/createTestPipelineApp.d.ts.map +1 -0
  465. package/dist/testing/pipeline/createTestPipelineApp.js +90 -0
  466. package/dist/testing/pipeline/createTestPipelineApp.types.test.d.ts +6 -0
  467. package/dist/testing/pipeline/createTestPipelineApp.types.test.d.ts.map +1 -0
  468. package/dist/testing/pipeline/createTestPipelineApp.types.test.js +146 -0
  469. package/dist/testing/pipeline/hostPipeline.d.ts +25 -0
  470. package/dist/testing/pipeline/hostPipeline.d.ts.map +1 -0
  471. package/dist/testing/pipeline/hostPipeline.js +18 -0
  472. package/dist/testing/pipeline/hydrateTestPipelineApp.d.ts +30 -0
  473. package/dist/testing/pipeline/hydrateTestPipelineApp.d.ts.map +1 -0
  474. package/dist/testing/pipeline/hydrateTestPipelineApp.js +193 -0
  475. package/dist/testing/pipeline/hydrateTestPipelineApp.types.test.d.ts +2 -0
  476. package/dist/testing/pipeline/hydrateTestPipelineApp.types.test.d.ts.map +1 -0
  477. package/dist/testing/pipeline/hydrateTestPipelineApp.types.test.js +27 -0
  478. package/dist/testing/pipeline/index.d.ts +5 -0
  479. package/dist/testing/pipeline/index.d.ts.map +1 -0
  480. package/dist/testing/pipeline/index.js +4 -0
  481. package/dist/testing/pipeline/pipelineTestApp.d.ts +34 -0
  482. package/dist/testing/pipeline/pipelineTestApp.d.ts.map +1 -0
  483. package/dist/testing/pipeline/pipelineTestApp.js +100 -0
  484. package/dist/testing/pipeline/testPipelineRoute.d.ts +2 -0
  485. package/dist/testing/pipeline/testPipelineRoute.d.ts.map +1 -0
  486. package/dist/testing/pipeline/testPipelineRoute.js +1 -0
  487. package/dist/testing/resolveContent.d.ts +18 -0
  488. package/dist/testing/resolveContent.d.ts.map +1 -0
  489. package/dist/testing/resolveContent.js +73 -0
  490. package/dist/testing/testingComponentPackage.d.ts +3 -1
  491. package/dist/testing/testingComponentPackage.d.ts.map +1 -1
  492. package/dist/testing/testingComponentPackage.js +16 -1
  493. package/dist/update/integrateUpdateVdom.d.ts.map +1 -1
  494. package/dist/update/integrateUpdateVdom.js +35 -31
  495. package/dist/update/integrateUpdateVdomPrebuild.js +20 -20
  496. package/dist/validChildren.d.ts.map +1 -1
  497. package/dist/zones/react.d.ts.map +1 -1
  498. package/package.json +23 -19
  499. package/types/helpers.d.ts +11 -2
  500. package/types/jsx/html.d.ts +29 -25
  501. package/types/jsx/jsx.d.ts +8 -8
  502. package/types/modules.d.ts +14 -3
  503. package/types/testing.d.ts +0 -0
  504. package/vendor/babel-core.js +5 -5
  505. package/vendor/babel-parser.js +1 -1
  506. package/vendor/babel-preset-react.js +32 -34
  507. package/vendor/babel-preset-typescript.js +5 -5
  508. package/vendor/chalk-extensions.js +3 -146
  509. package/vendor/chokidar.js +311 -5
  510. package/vendor/chunk-B34JUlnS.js +169 -0
  511. package/vendor/{chunk-Bu8ZRE-c.js → chunk-B9ttgKqg.js} +28 -25
  512. package/vendor/{chunk-D2EnpcLg.js → chunk-BGvapINa.js} +3 -164
  513. package/vendor/{chunk-Cqrj-Zqr.js → chunk-BmAiqUzD.js} +22 -8
  514. package/vendor/{chunk-BiUcnLhT.js → chunk-But4T5N_.js} +8 -3
  515. package/vendor/{chunk-OUnVY4Wm.js → chunk-DuR6SGzI.js} +162 -35
  516. package/vendor/css-select.js +3383 -0
  517. package/vendor/dotenv.js +2 -2
  518. package/vendor/express.js +61 -10
  519. package/vendor/manifest.json +4 -3
  520. package/vendor/postcss.js +1 -1
  521. package/vendor/precinct.js +5914 -3591
  522. package/vendor/valibot.js +418 -504
  523. package/dist/Servers/MatchedRouteInfo.d.ts +0 -11
  524. package/dist/Servers/MatchedRouteInfo.d.ts.map +0 -1
  525. package/dist/routing/__fluentRouteBuilder.d.ts +0 -80
  526. package/dist/routing/__fluentRouteBuilder.d.ts.map +0 -1
  527. package/dist/routing/__fluentRouteBuilder.js +0 -183
  528. package/dist/routing/__fluentRoutes.d.ts +0 -2
  529. package/dist/routing/__fluentRoutes.d.ts.map +0 -1
  530. package/dist/routing/__fluentRoutes.js +0 -59
  531. package/vendor/chunk-Hy-cCmu-.js +0 -23
  532. /package/dist/{Servers/MatchedRouteInfo.js → routing/RoutePaths.js} +0 -0
@@ -8,6 +8,7 @@ function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a),
8
8
  function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
9
9
  import { $props, $type } from '../contentNodeSymbols.js';
10
10
  import { Instance } from '../Instance/Instance.js';
11
+ import { toRoutes } from '../routing/routesArray.js';
11
12
  import { hydrateRootComponent, makeDefaultHydrateMeta } from "../hydrate/hydrate.js";
12
13
  import { contentTreeToRenderingTree } from '../render/contentTreeToRenderingTree.js';
13
14
  import { renderingNodeToHtml } from '../render/renderingTreeToHtml.js';
@@ -15,13 +16,21 @@ import { initStores } from '../Servers/initStores.js';
15
16
  import { deleteNodeIfRendered } from '../update/integrateUpdateVdom.js';
16
17
  import { UpdateScheduler } from '../update/UpdateScheduler.js';
17
18
  import { DomPointer } from '../DomPointer.js';
19
+ import { isClient } from '../isClient.js';
18
20
  import { waitForEnvIfLoading } from './loadEnv.js';
19
21
  // hydrate.tsx references several DOM globals directly (Node.COMMENT_NODE, `instanceof Text`, the
20
22
  // bare `document`) the way real browser code always can - happy-dom only puts these on its own
21
23
  // Window, not on Node.js's global scope. Every hand-written hydration test before this harness
22
24
  // bridged them manually; a caller of hydrateTestApp() shouldn't need to know that hydrate() was
23
25
  // written assuming a real browser to begin with.
24
- function bridgeHappyDomGlobals(document) {
26
+ // Hydration is browser code: isClient decides what tungsten's modules do from the moment they load,
27
+ // so a node-only run would take server paths and fail far from here
28
+ export function requireClient(harness) {
29
+ if (!isClient) {
30
+ throw new Error(`${harness} needs a browser-like environment, and isClient is false: no global window` + ` existed when tungsten loaded. Run it in a DOM test suite whose setup puts happy-dom's` + ` window on the global before the tests are imported.`);
31
+ }
32
+ }
33
+ export function bridgeHappyDomGlobals(document) {
25
34
  const window = document.defaultView;
26
35
  if (window === null) return;
27
36
  const globals = globalThis; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion -- bridging happy-dom's globals onto the global scope
@@ -38,7 +47,7 @@ var _instance = /*#__PURE__*/new WeakMap();
38
47
  var _scheduler = /*#__PURE__*/new WeakMap();
39
48
  var _ownsContainer = /*#__PURE__*/new WeakMap();
40
49
  var _unmounted = /*#__PURE__*/new WeakMap();
41
- class HydrateTestAppImplementation {
50
+ export class HydrateTestAppImplementation {
42
51
  constructor(document, container, component, instance, scheduler, ownsContainer, html, mismatches) {
43
52
  _defineProperty(this, "document", void 0);
44
53
  _defineProperty(this, "container", void 0);
@@ -111,6 +120,7 @@ class HydrateTestAppImplementation {
111
120
  * client hydrator does, so a caller reproducing that class of bug should assert on the rejection.
112
121
  */
113
122
  export async function hydrateTestApp(RootComponent, ...args) {
123
+ requireClient('hydrateTestApp()');
114
124
  await waitForEnvIfLoading();
115
125
  const options = args[0];
116
126
  const suppliedDocument = options?.document ?? globalThis.document;
@@ -137,7 +147,8 @@ export async function hydrateTestApp(RootComponent, ...args) {
137
147
  const clientProps = options?.props ?? {}; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
138
148
  const serverProps = options?.serverProps ?? clientProps;
139
149
  const location = options?.location ?? '/';
140
- const globalData = options?.globalData ?? {};
150
+ const globalData = options?.globalData ? options.globalData // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
151
+ : {}; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
141
152
  const matchedRouteInfo = {
142
153
  key: null,
143
154
  params: options?.routeParams ?? {},
@@ -157,7 +168,11 @@ export async function hydrateTestApp(RootComponent, ...args) {
157
168
  // routing() falls back to the built-in 404 when neither '404' nor 'default' is given
158
169
  // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
159
170
  const appRoutes = options?.routes ?? {};
160
- const routes = typeof appRoutes === 'function' ? appRoutes(null) : appRoutes;
171
+ const context = options?.context ?? {}; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
172
+ // one object for both passes: the server's is serialized into the page and carried to the client
173
+ const networkedData = options?.networkedData ?? {}; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
174
+ // dev, so a path given twice fails the test
175
+ const routes = toRoutes(typeof appRoutes === 'function' ? appRoutes(null, context, networkedData) : appRoutes, true);
161
176
  // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- rootToHtml.ts builds a root content node the same way
162
177
  const componentNode = {
163
178
  [$type]: RootComponent,
@@ -172,13 +187,16 @@ export async function hydrateTestApp(RootComponent, ...args) {
172
187
  internalStore,
173
188
  stores,
174
189
  storeSubscriptions
175
- } = initStores(location, null, globalData, matchedRouteInfo);
190
+ } = initStores(location, null, globalData, matchedRouteInfo, null, context, networkedData);
176
191
  const ssrInstance = new Instance(location, instanceConfig, null, appRoutes, routes, internalStore, stores, storeSubscriptions, globalData, matchedRouteInfo, {
177
192
  document,
178
193
  window: document.defaultView,
179
194
  scheduler: ssrScheduler,
180
195
  navigation: false
181
196
  });
197
+ ssrInstance.fileVersions = options?.fileVersions;
198
+ ssrInstance.context = context;
199
+ ssrInstance.networkedData = networkedData;
182
200
  for (const override of options?.stores ?? []) {
183
201
  const store = override.registration.getStore(ssrInstance.stores);
184
202
  await override.initialize(store);
@@ -210,7 +228,7 @@ export async function hydrateTestApp(RootComponent, ...args) {
210
228
  internalStore,
211
229
  stores,
212
230
  storeSubscriptions
213
- } = initStores(location, null, globalData, matchedRouteInfo);
231
+ } = initStores(location, null, globalData, matchedRouteInfo, null, context, networkedData);
214
232
  const runtimeContext = {
215
233
  document,
216
234
  window: document.defaultView,
@@ -218,6 +236,9 @@ export async function hydrateTestApp(RootComponent, ...args) {
218
236
  navigation: false
219
237
  };
220
238
  const instance = new Instance(location, instanceConfig, null, appRoutes, routes, internalStore, stores, storeSubscriptions, globalData, matchedRouteInfo, runtimeContext);
239
+ instance.fileVersions = options?.fileVersions;
240
+ instance.context = context;
241
+ instance.networkedData = networkedData;
221
242
  try {
222
243
  for (const override of options?.stores ?? []) {
223
244
  const store = override.registration.getStore(instance.stores);
@@ -1,9 +1,11 @@
1
1
  export { loadEnv } from './loadEnv.js';
2
2
  export { testEnvVariableName } from './testEnvIsRequested.js';
3
- export { hydrateTestApp, type HydrateTestApp, type HydrateTestAppOptions } from './hydrateTestApp.js';
4
- export { createTestApp, testStore, type ComponentProps, type CreateTestAppArgs, type TestApp, type TestAppOptions, type TestStore, type TestStoreOverride, type TestStoreRegistration, type TestRoutes, } from './createTestApp.js';
5
- export { host, type HostOptions, type HostStoreOptions, type Hosted } from './host.js';
3
+ export { type HydrateTestApp, type HydrateTestAppOptions, hydrateTestApp, } from './hydrateTestApp.js';
4
+ export { type ComponentProps, type CreateTestAppArgs, type TestApp, type TestAppOptions, type TestStore, type TestStoreOverride, type TestStoreRegistration, type TestRoutes, createTestApp, testStore, } from './createTestApp.js';
5
+ export { type HostDontResolveOptions, type HostOptions, type HostResolveOptions, type HostStoreDontResolveOptions, type HostStoreOptions, type HostStoreResolveOptions, type Hosted, type HostedResolved, host, hostGeneric, hostJsx, } from './host.js';
6
6
  export { testingComponentPackage } from './testingComponentPackage.js';
7
7
  export { contentHtmlElements } from './helpers/contentHtmlElements.js';
8
+ export { ensure } from './ensure.js';
9
+ export { contentToString, type ContentToStringOptions } from './contentToString.js';
8
10
  export { makeStore, type TrueStore } from '../Store/makeStore.js';
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AACrG,OAAO,EACH,aAAa,EACb,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,GAClB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,MAAM,EAAE,MAAM,WAAW,CAAA;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EACH,KAAK,cAAc,EAAE,KAAK,qBAAqB,EAC/C,cAAc,GACjB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACH,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAC9F,KAAK,iBAAiB,EAAE,KAAK,qBAAqB,EAAE,KAAK,UAAU,EACnE,aAAa,EAAE,SAAS,GAC3B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,KAAK,sBAAsB,EAAE,KAAK,WAAW,EAAE,KAAK,kBAAkB,EACtE,KAAK,2BAA2B,EAAE,KAAK,gBAAgB,EAAE,KAAK,uBAAuB,EACrF,KAAK,MAAM,EAAE,KAAK,cAAc,EAChC,IAAI,EAAE,WAAW,EAAE,OAAO,GAC7B,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AACnF,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAA"}
@@ -2,7 +2,9 @@ export { loadEnv } from './loadEnv.js';
2
2
  export { testEnvVariableName } from './testEnvIsRequested.js';
3
3
  export { hydrateTestApp } from './hydrateTestApp.js';
4
4
  export { createTestApp, testStore } from './createTestApp.js';
5
- export { host } from './host.js';
5
+ export { host, hostGeneric, hostJsx } from './host.js';
6
6
  export { testingComponentPackage } from './testingComponentPackage.js';
7
7
  export { contentHtmlElements } from './helpers/contentHtmlElements.js';
8
+ export { ensure } from './ensure.js';
9
+ export { contentToString } from './contentToString.js';
8
10
  export { makeStore } from '../Store/makeStore.js';
@@ -0,0 +1,30 @@
1
+ import type { ConstructPackage, TungstenBaseComponent, TungstenComponentPropsBase } from '../../Components.jsx';
2
+ import type { Nothing } from '../../pipeline/pipeline.js';
3
+ import type { TestApp } from '../createTestApp.js';
4
+ import type { PipelineTestAppOptions } from './pipelineTestApp.js';
5
+ type Field<K extends string, T, Default> = Default extends T ? {
6
+ [_ in K]?: T;
7
+ } : {
8
+ [_ in K]: T;
9
+ };
10
+ export type PacketForComponent<C> = C extends {
11
+ readonly tungsten: {
12
+ readonly context: infer Ctx;
13
+ readonly networked: infer N;
14
+ readonly allRoutesData: infer G;
15
+ };
16
+ } ? Field<'context', Ctx, Nothing> & Field<'networked', N, Nothing> & Field<'allRoutesData', G, undefined> & {
17
+ routes?: never;
18
+ } : 'invalid component';
19
+ export type TestPacketAppOptions<Props extends object> = PipelineTestAppOptions<Props>;
20
+ export type CreateTestPacketAppArgs<Props extends object> = object extends Props ? [options?: TestPacketAppOptions<Props>] : [options: TestPacketAppOptions<Props> & {
21
+ props: Props;
22
+ }];
23
+ /**
24
+ * createTestPipelineApp() with the pipeline's result in place of the pipeline: the component is
25
+ * handed the packet's context, networked data and all-routes data as they are, with no stages run.
26
+ * There are no routes; the location still reaches the instance.
27
+ */
28
+ export declare function createTestPacketApp<Props extends TungstenComponentPropsBase, Component extends TungstenBaseComponent<any, any>, RouteData = undefined>(packet: PacketForComponent<Component>, RootComponent: new (pkg: ConstructPackage<Props, RouteData>) => Component, ...args: CreateTestPacketAppArgs<Props>): Promise<TestApp<Component>>;
29
+ export {};
30
+ //# sourceMappingURL=createTestPacketApp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTestPacketApp.d.ts","sourceRoot":"","sources":["../../../src/testing/pipeline/createTestPacketApp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,gBAAgB,EAAE,qBAAqB,EAAE,0BAA0B,EACtE,MAAM,sBAAsB,CAAA;AAE7B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAUlE,KAAK,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,OAAO,IAAI,OAAO,SAAS,CAAC,GAAG;KAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;CAAE,GAAG;KAAG,CAAC,IAAI,CAAC,GAAG,CAAC;CAAE,CAAA;AAIjG,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,CAAC,SAAS;IAC1C,QAAQ,CAAC,QAAQ,EAAE;QACf,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;KAC5F,CAAA;CACJ,GACK,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,CAAC,GAC3D,KAAK,CAAC,eAAe,EAAE,CAAC,EAAE,SAAS,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,GAC7D,mBAAmB,CAAA;AAIzB,MAAM,MAAM,oBAAoB,CAAC,KAAK,SAAS,MAAM,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAA;AAEtF,MAAM,MAAM,uBAAuB,CAAC,KAAK,SAAS,MAAM,IAAI,MAAM,SAAS,KAAK,GAC1E,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC,GACvC,CAAC,OAAO,EAAE,oBAAoB,CAAC,KAAK,CAAC,GAAG;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC,CAAA;AAE/D;;;;GAIG;AACH,wBAAsB,mBAAmB,CACrC,KAAK,SAAS,0BAA0B,EACxC,SAAS,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,EACjD,SAAS,GAAG,SAAS,EAErB,MAAM,EAAE,kBAAkB,CAAC,SAAS,CAAC,EAErC,aAAa,EAAE,KAAK,GAAG,EAAE,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,SAAS,EACzE,GAAG,IAAI,EAAE,uBAAuB,CAAC,KAAK,CAAC,GACxC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CA8B7B"}
@@ -0,0 +1,45 @@
1
+ import { isPipelineApp } from '../../pipeline/pipelineDefinition.js';
2
+ import { routingNetworkedData } from '../../pipeline/runPipeline.js';
3
+ import { routing } from "../../Servers/routing.js";
4
+ import { toRoutes } from '../../routing/routesArray.js';
5
+ import { waitForEnvIfLoading } from '../loadEnv.js';
6
+ import { mountPipelineTestApp, pipelineTestTarget } from './pipelineTestApp.js';
7
+ /**
8
+ * createTestPipelineApp() with the pipeline's result in place of the pipeline: the component is
9
+ * handed the packet's context, networked data and all-routes data as they are, with no stages run.
10
+ * There are no routes; the location still reaches the instance.
11
+ */
12
+ export async function createTestPacketApp(packet,
13
+ // Props is inferred from both the class and `props`, so literal props are typed by the component
14
+ RootComponent, ...args) {
15
+ await waitForEnvIfLoading();
16
+ const options = args[0];
17
+ if (isPipelineApp(packet) || typeof packet === 'object' && 'routes' in packet) {
18
+ throw new Error('createTestPacketApp() takes what a pipeline makes, { context, networked,' + ' allRoutesData }: for a pipeline or app, use createTestPipelineApp().');
19
+ }
20
+ const target = pipelineTestTarget(options, 'createTestPacketApp()');
21
+ const given = packet; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion -- the constraint above
22
+ const location = options?.location ?? '/';
23
+ const context = given.context ?? {}; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion -- the framework brands what it builds
24
+ const allRoutesData = given.allRoutesData; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion -- as above
25
+ const networkedData = routingNetworkedData(undefined);
26
+ const routes = toRoutes([], true);
27
+ const matchedRouteInfo = await routing(location, routes, context, networkedData);
28
+ return mountPipelineTestApp(target, {
29
+ location,
30
+ routes,
31
+ matchedRouteInfo,
32
+ allRoutesData,
33
+ context,
34
+ networkedData,
35
+ appRoutes: () => routes,
36
+ networked: given.networked ?? {},
37
+ // a navigation keeps the packet's all-routes data
38
+ pipeline: {
39
+ routingContext: context,
40
+ routingNetworkedData: networkedData,
41
+ allRoutesData: undefined,
42
+ afterRouting: undefined
43
+ }
44
+ }, RootComponent, options);
45
+ }
@@ -0,0 +1,3 @@
1
+ export declare function checks(): Promise<void>;
2
+ export declare function notAPipeline(): Promise<void>;
3
+ //# sourceMappingURL=createTestPacketApp.types.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTestPacketApp.types.test.d.ts","sourceRoot":"","sources":["../../../src/testing/pipeline/createTestPacketApp.types.test.ts"],"names":[],"mappings":"AAkCA,wBAAsB,MAAM,kBAgB3B;AAGD,wBAAsB,YAAY,kBAUjC"}
@@ -0,0 +1,101 @@
1
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
4
+ import { TungstenSimpleComponent } from "../../Components.js";
5
+ import { contextStore } from '../../pipeline/contextStore.js';
6
+ import { pipeline } from '../../pipeline/pipeline.js';
7
+ import { splitPipeline } from '../../pipeline/splitPipeline.js';
8
+ import { createTestPacketApp } from './createTestPacketApp.js';
9
+ // Type tests: tsc is the assertion - nothing here runs. The packet must be what the root reads
10
+ const stage = pipeline.server('express').init(() => ({
11
+ api: 'client'
12
+ })).allRoutesData(() => ({
13
+ theme: 'dark'
14
+ }));
15
+ class Reads extends stage.SimpleComponent {
16
+ constructor(...args) {
17
+ super(...args);
18
+ _defineProperty(this, "content", () => `${this.tungsten.context.api} ${this.tungsten.allRoutesData.theme}`);
19
+ }
20
+ }
21
+ class Plain extends TungstenSimpleComponent {
22
+ constructor(...args) {
23
+ super(...args);
24
+ _defineProperty(this, "content", () => null);
25
+ }
26
+ }
27
+ const bare = pipeline.server('express');
28
+ class ReadsNothing extends bare.SimpleComponent {
29
+ constructor(...args) {
30
+ super(...args);
31
+ _defineProperty(this, "content", () => null);
32
+ }
33
+ }
34
+ const split = splitPipeline.server('express').serverInit(() => ({
35
+ networked: {
36
+ count: contextStore({
37
+ n: 0
38
+ })
39
+ }
40
+ })).clientInit(() => undefined);
41
+ class ReadsNetworked extends split.SimpleComponent {
42
+ constructor(...args) {
43
+ super(...args);
44
+ _defineProperty(this, "content", () => String(this.tungsten.networked.count.n.get()));
45
+ }
46
+ }
47
+ export async function checks() {
48
+ await createTestPacketApp({
49
+ context: {
50
+ api: 'a'
51
+ },
52
+ allRoutesData: {
53
+ theme: 't'
54
+ }
55
+ }, Reads);
56
+ // @ts-expect-error -- Reads reads a context: it has no default
57
+ await createTestPacketApp({
58
+ allRoutesData: {
59
+ theme: 't'
60
+ }
61
+ }, Reads);
62
+ // @ts-expect-error -- nor does its all-routes data
63
+ await createTestPacketApp({
64
+ context: {
65
+ api: 'a'
66
+ }
67
+ }, Reads);
68
+ // @ts-expect-error -- not the context Reads reads
69
+ await createTestPacketApp({
70
+ context: {
71
+ api: 1
72
+ },
73
+ allRoutesData: {
74
+ theme: 't'
75
+ }
76
+ }, Reads);
77
+ // the defaults: nothing read, nothing needed
78
+ await createTestPacketApp({}, ReadsNothing);
79
+ await createTestPacketApp({}, Plain);
80
+ await createTestPacketApp({
81
+ networked: {
82
+ count: contextStore({
83
+ n: 1
84
+ })
85
+ }
86
+ }, ReadsNetworked);
87
+ // @ts-expect-error -- ReadsNetworked reads networked data
88
+ await createTestPacketApp({}, ReadsNetworked);
89
+ }
90
+ // a pipeline or app belongs to createTestPipelineApp()
91
+ export async function notAPipeline() {
92
+ // @ts-expect-error -- a stage
93
+ await createTestPacketApp(bare, ReadsNothing);
94
+ // @ts-expect-error -- an app
95
+ await createTestPacketApp(bare.routes(() => []), ReadsNothing);
96
+ // a loose component: an app's allRoutesData function would pass for its all-routes data
97
+ // @ts-expect-error -- a stage
98
+ await createTestPacketApp(stage, Plain);
99
+ // @ts-expect-error -- an app
100
+ await createTestPacketApp(stage.routes(() => []), Plain);
101
+ }
@@ -0,0 +1,70 @@
1
+ import type { ConstructPackage, TungstenBaseComponent, TungstenComponentPropsBase } from '../../Components.jsx';
2
+ import type { AllRoutesDataConstraint, PipelineApp } from '../../pipeline/pipelineDefinition.js';
3
+ import type { TestApp } from '../createTestApp.js';
4
+ import type { PipelineTestAppOptions } from './pipelineTestApp.js';
5
+ type StageForApp<App> = {
6
+ routes: (routes: () => []) => App;
7
+ };
8
+ type AppOf<A> = A extends PipelineApp<any, any, any, any> ? A : A extends StageForApp<infer App> ? App : never;
9
+ type AppTypes<A> = AppOf<A> extends PipelineApp<any, infer Ctx, infer N, infer G extends AllRoutesDataConstraint> ? {
10
+ context: Ctx;
11
+ networked: N & object;
12
+ allRoutesData: G;
13
+ } : never;
14
+ export type PipelineAppForComponent<C> = C extends {
15
+ readonly tungsten: {
16
+ readonly context: infer Ctx;
17
+ readonly networked: infer N;
18
+ readonly allRoutesData: infer G;
19
+ };
20
+ } ? PipelineApp<any, Ctx, N, G> : 'invalid component';
21
+ export type PipelineForComponent<C> = PipelineAppForComponent<C> extends infer App ? App extends PipelineApp<any, any, any, any> ? StageForApp<App> : App : never;
22
+ type ComponentReads<C> = C extends {
23
+ readonly tungsten: {
24
+ readonly context: infer Ctx;
25
+ readonly networked: infer N;
26
+ readonly allRoutesData: infer G;
27
+ };
28
+ } ? {
29
+ context: Ctx;
30
+ networked: N;
31
+ allRoutesData: G;
32
+ } : never;
33
+ type DifferingKeys<Made, Read> = {
34
+ [K in keyof Made & keyof Read]: [Made[K]] extends [Read[K]] ? never : K;
35
+ }[keyof Made & keyof Read];
36
+ type Mismatch<Made, Read> = [DifferingKeys<Made, Read>] extends [never] ? unknown : DifferingKeys<Made, Read> extends infer Ks extends keyof Made & keyof Read ? {
37
+ 'pipeline does not provide required data:': {
38
+ [K in Ks]: Read[K];
39
+ };
40
+ 'pipeline provided:': {
41
+ [K in Ks]: Made[K];
42
+ };
43
+ } : never;
44
+ export type AppCheck<A, C> = [AppOf<A>] extends [never] ? A extends {
45
+ clientAllRoutesData: unknown;
46
+ } ? {
47
+ 'add .clientAllRoutesData(): the server makes all-routes data, so the client must': true;
48
+ } : {
49
+ 'not a .routes() app, or a stage .routes() can follow': true;
50
+ } : [ComponentReads<C>] extends [never] ? {
51
+ 'not a tungsten component': true;
52
+ } : Mismatch<AppTypes<A>, ComponentReads<C>>;
53
+ export declare const toApp: (pipelineOrApp: unknown) => PipelineApp;
54
+ export type TestPipelineAppOptions<Props extends object, A = PipelineApp> = PipelineTestAppOptions<Props> & {
55
+ allRoutesData?: AppTypes<A>['allRoutesData'];
56
+ networked?: AppTypes<A>['networked'];
57
+ };
58
+ export type TestPipelineApp<Component extends TungstenBaseComponent> = TestApp<Component>;
59
+ export type CreateTestPipelineAppArgs<Props extends object, A = PipelineApp> = object extends Props ? [options?: TestPipelineAppOptions<Props, A>] : [options: TestPipelineAppOptions<Props, A> & {
60
+ props: Props;
61
+ }];
62
+ /**
63
+ * createTestApp() for an app built with pipeline() or splitPipeline(): the app's browser stages
64
+ * run - Init, the all-routes data, Post - and the location is routed against its routes, so the
65
+ * test sees the context, stores and route the app's own page would. The app is a .routes()
66
+ * result: the app's own export, a smaller set of routes on the same pipeline, or another pipeline.
67
+ */
68
+ export declare function createTestPipelineApp<Props extends TungstenComponentPropsBase, Component extends TungstenBaseComponent<any, any>, A extends object, RouteData = undefined>(pipelineOrApp: A & AppCheck<A, Component>, RootComponent: new (pkg: ConstructPackage<Props, RouteData>) => Component, ...args: CreateTestPipelineAppArgs<Props, A>): Promise<TestPipelineApp<Component>>;
69
+ export {};
70
+ //# sourceMappingURL=createTestPipelineApp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTestPipelineApp.d.ts","sourceRoot":"","sources":["../../../src/testing/pipeline/createTestPipelineApp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ import { clientRoute, isPipelineApp } from '../../pipeline/pipelineDefinition.js';
2
+ import { JSONstringify } from '../../json.js';
3
+ import { routing } from "../../Servers/routing.js";
4
+ import { fromTransport, NetworkedTransport } from '../../pipeline/networkedTransport.js';
5
+ import { afterRoutingFor, pipelineContext, pipelineRoutes, routingContext, routingNetworkedData } from '../../pipeline/runPipeline.js';
6
+ import { splitContext } from '../../pipeline/runSplitPipeline.js';
7
+ import { waitForEnvIfLoading } from '../loadEnv.js';
8
+ import { mountPipelineTestApp, pipelineTestTarget } from './pipelineTestApp.js';
9
+ // the app, or the stage ended with empty routes
10
+ export const toApp = pipelineOrApp => isPipelineApp(pipelineOrApp) ? pipelineOrApp : pipelineOrApp.routes(() => []); // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion -- the harnesses' constraint: a stage
11
+ // the symmetric pipeline's stages, with null for the request
12
+ async function runSymmetric(app, allRoutesData) {
13
+ const init = await app.init?.(null, undefined);
14
+ const data = allRoutesData ?? (await app.allRoutesData?.(null, init));
15
+ const post = await app.post?.(null, init, data);
16
+ const rerun = app.allRoutesData;
17
+ return {
18
+ init,
19
+ context: pipelineContext(init, post),
20
+ routingContext: init,
21
+ routingNetworkedData: undefined,
22
+ networked: {},
23
+ allRoutesData: data,
24
+ rerunAllRoutesData: rerun && (async () => rerun(null, init)),
25
+ afterRouting: undefined
26
+ };
27
+ }
28
+ async function runSplit(app, allRoutesData, served) {
29
+ const page = JSON.parse(JSONstringify(new NetworkedTransport(served))); // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion -- toJSON gives an object
30
+ const networked = fromTransport(page) ?? {};
31
+ const init = await app.clientInit?.(networked);
32
+ const data = allRoutesData ?? (await app.clientAllRoutesData?.(init));
33
+ const post = await app.clientPost?.(init, data);
34
+ const context = splitContext(init, post);
35
+ const rerun = app.clientAllRoutesData;
36
+ const afterRouting = app.clientAfterRouting;
37
+ return {
38
+ init,
39
+ context,
40
+ routingContext: init?.context,
41
+ routingNetworkedData: init?.networked,
42
+ networked,
43
+ allRoutesData: data,
44
+ rerunAllRoutesData: rerun && (async () => rerun(init)),
45
+ afterRouting: afterRouting && (async (route, allRoutes) => splitContext(await afterRouting(context, route, allRoutes), undefined))
46
+ };
47
+ }
48
+ /**
49
+ * createTestApp() for an app built with pipeline() or splitPipeline(): the app's browser stages
50
+ * run - Init, the all-routes data, Post - and the location is routed against its routes, so the
51
+ * test sees the context, stores and route the app's own page would. The app is a .routes()
52
+ * result: the app's own export, a smaller set of routes on the same pipeline, or another pipeline.
53
+ */
54
+ export async function createTestPipelineApp(pipelineOrApp,
55
+ // Props is inferred from both the class and `props`, so literal props are typed by the component
56
+ RootComponent, ...args) {
57
+ await waitForEnvIfLoading();
58
+ const options = args[0];
59
+ const target = pipelineTestTarget(options, 'createTestPipelineApp()');
60
+ const app = toApp(pipelineOrApp);
61
+ const stages = app.split === true ? await runSplit(app, options?.allRoutesData, options?.networked ?? {}) : await runSymmetric(app, options?.allRoutesData);
62
+ const location = options?.location ?? '/';
63
+ const allRoutesData = stages.allRoutesData; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion -- the framework brands what it builds
64
+ const routeContext = routingContext(stages.routingContext);
65
+ const networkedData = routingNetworkedData(stages.routingNetworkedData);
66
+ // dev, so a path given twice fails the test
67
+ const routes = pipelineRoutes(app, null, stages.init, true);
68
+ const matchedRouteInfo = await routing(location, routes, routeContext, networkedData);
69
+ const afterRouting = afterRoutingFor(stages.afterRouting);
70
+ const context = afterRouting === undefined ? stages.context // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion -- as above
71
+ : await afterRouting(clientRoute(matchedRouteInfo, location), allRoutesData);
72
+ const rerun = stages.rerunAllRoutesData;
73
+ return mountPipelineTestApp(target, {
74
+ location,
75
+ routes,
76
+ matchedRouteInfo,
77
+ allRoutesData,
78
+ context,
79
+ networkedData,
80
+ appRoutes: reqRes => pipelineRoutes(app, reqRes, stages.init, true),
81
+ networked: stages.networked,
82
+ pipeline: {
83
+ routingContext: routeContext,
84
+ routingNetworkedData: networkedData,
85
+ allRoutesData: rerun && (async () => await rerun()),
86
+ // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion -- as above
87
+ afterRouting
88
+ }
89
+ }, RootComponent, options);
90
+ }
@@ -0,0 +1,6 @@
1
+ export declare function checks(): Promise<void>;
2
+ export declare function stageChecks(): Promise<void>;
3
+ export declare function bareChecks(): Promise<void>;
4
+ export declare function splitChecks(): Promise<void>;
5
+ export declare function clientDataChecks(): Promise<void>;
6
+ //# sourceMappingURL=createTestPipelineApp.types.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTestPipelineApp.types.test.d.ts","sourceRoot":"","sources":["../../../src/testing/pipeline/createTestPipelineApp.types.test.ts"],"names":[],"mappings":"AA+BA,wBAAsB,MAAM,kBAU3B;AAcD,wBAAsB,WAAW,kBAOhC;AAOD,wBAAsB,UAAU,kBAE/B;AAeD,wBAAsB,WAAW,kBAQhC;AAmBD,wBAAsB,gBAAgB,kBAIrC"}