tungsten 0.3.2 → 0.3.4

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 (397) hide show
  1. package/dist/.build-complete +1 -0
  2. package/dist/Components.d.ts +6 -1
  3. package/dist/Components.d.ts.map +1 -1
  4. package/dist/Components.js +103 -40
  5. package/dist/DomPointer.d.ts +11 -0
  6. package/dist/DomPointer.d.ts.map +1 -1
  7. package/dist/DomPointer.js +15 -0
  8. package/dist/DomRegion.d.ts +2 -0
  9. package/dist/DomRegion.d.ts.map +1 -1
  10. package/dist/DomRegion.js +23 -3
  11. package/dist/Framework.d.ts +2 -0
  12. package/dist/Framework.d.ts.map +1 -1
  13. package/dist/Framework.js +94 -61
  14. package/dist/FrameworkConfig.d.ts +4 -0
  15. package/dist/FrameworkConfig.d.ts.map +1 -1
  16. package/dist/Instance/Instance.d.ts +1 -1
  17. package/dist/Instance/Instance.d.ts.map +1 -1
  18. package/dist/Instance/Instance.js +18 -1
  19. package/dist/Instance/InstanceConfig.d.ts +1 -0
  20. package/dist/Instance/InstanceConfig.d.ts.map +1 -1
  21. package/dist/PopMessage.type.d.ts +6 -0
  22. package/dist/PopMessage.type.d.ts.map +1 -0
  23. package/dist/PopMessage.type.js +1 -0
  24. package/dist/Servers/DevServer.d.ts +2 -0
  25. package/dist/Servers/DevServer.d.ts.map +1 -1
  26. package/dist/Servers/DevServer.js +87 -11
  27. package/dist/Servers/MatchedRouteInfo.d.ts +1 -1
  28. package/dist/Servers/MatchedRouteInfo.d.ts.map +1 -1
  29. package/dist/Servers/ProdServer.d.ts +2 -1
  30. package/dist/Servers/ProdServer.d.ts.map +1 -1
  31. package/dist/Servers/ProdServer.js +92 -8
  32. package/dist/Servers/hono/DevServerHono.js +25 -29
  33. package/dist/Servers/hono/ProdServerHono.js +49 -142
  34. package/dist/Servers/hono/TungstenServerHono.d.ts +1 -1
  35. package/dist/Servers/hono/TungstenServerHono.d.ts.map +1 -1
  36. package/dist/Servers/hono/TungstenServerHono.js +12 -29
  37. package/dist/Servers/loadEnvsDev.d.ts.map +1 -1
  38. package/dist/Servers/loadEnvsDev.js +16 -5
  39. package/dist/Servers/routing.d.ts.map +1 -1
  40. package/dist/Servers/routing.js +10 -6
  41. package/dist/Servers/tungstenCorePrivateEnvSchema.d.ts +0 -3
  42. package/dist/Servers/tungstenCorePrivateEnvSchema.d.ts.map +1 -1
  43. package/dist/Servers/tungstenCorePrivateEnvSchema.js +3 -3
  44. package/dist/Servers/tungstenCorePublicEnvSchema.d.ts +8 -0
  45. package/dist/Servers/tungstenCorePublicEnvSchema.d.ts.map +1 -0
  46. package/dist/Servers/tungstenCorePublicEnvSchema.js +14 -0
  47. package/dist/Store/InternalStoreSchema.d.ts +2 -0
  48. package/dist/Store/InternalStoreSchema.d.ts.map +1 -1
  49. package/dist/Store/InternalStoreSchema.js +1 -0
  50. package/dist/api/Request.d.ts +1 -1
  51. package/dist/api/Request.d.ts.map +1 -1
  52. package/dist/api/Response.d.ts +1 -1
  53. package/dist/api/Response.d.ts.map +1 -1
  54. package/dist/babelPlugins/BabelExtractComponentStylesheet.d.ts +13 -0
  55. package/dist/babelPlugins/BabelExtractComponentStylesheet.d.ts.map +1 -0
  56. package/dist/babelPlugins/BabelExtractComponentStylesheet.js +24 -0
  57. package/dist/babelPlugins/BabelTransformComponentStyles.d.ts +2 -0
  58. package/dist/babelPlugins/BabelTransformComponentStyles.d.ts.map +1 -1
  59. package/dist/babelPlugins/BabelTransformComponentStyles.js +21 -5
  60. package/dist/babelPlugins/BabelTransformPackageImports.d.ts +1 -0
  61. package/dist/babelPlugins/BabelTransformPackageImports.d.ts.map +1 -1
  62. package/dist/babelPlugins/BabelTransformPackageImports.js +21 -9
  63. package/dist/babelPlugins/BabelTypes.d.ts +2 -2
  64. package/dist/babelPlugins/BabelTypes.d.ts.map +1 -1
  65. package/dist/babelPlugins/BabelTypes.js +0 -1
  66. package/dist/bin/commands/build.d.ts.map +1 -1
  67. package/dist/bin/commands/build.js +12 -2
  68. package/dist/bin/commands/compile.d.ts.map +1 -1
  69. package/dist/bin/commands/compile.js +7 -2
  70. package/dist/bin/commands/dev.d.ts.map +1 -1
  71. package/dist/bin/commands/dev.js +15 -4
  72. package/dist/bin/commands/devmon.d.ts +2 -0
  73. package/dist/bin/commands/devmon.d.ts.map +1 -0
  74. package/dist/bin/commands/devmon.js +66 -0
  75. package/dist/bin/index.d.ts.map +1 -1
  76. package/dist/bin/index.js +6 -0
  77. package/dist/booleanAttributeValue.d.ts +21 -0
  78. package/dist/booleanAttributeValue.d.ts.map +1 -0
  79. package/dist/booleanAttributeValue.js +23 -0
  80. package/dist/build/CompilationInfo.d.ts +1 -0
  81. package/dist/build/CompilationInfo.d.ts.map +1 -1
  82. package/dist/build/combineComponentCss.d.ts +1 -1
  83. package/dist/build/combineComponentCss.d.ts.map +1 -1
  84. package/dist/build/combineComponentCss.js +3 -3
  85. package/dist/build/compileJavascript.d.ts.map +1 -1
  86. package/dist/build/compileJavascript.js +3 -3
  87. package/dist/build/compileUserApp.d.ts +2 -1
  88. package/dist/build/compileUserApp.d.ts.map +1 -1
  89. package/dist/build/compileUserApp.js +18 -8
  90. package/dist/build/createInstanceConfigFile.js +1 -1
  91. package/dist/build/frameworkStylesheets.d.ts +5 -0
  92. package/dist/build/frameworkStylesheets.d.ts.map +1 -0
  93. package/dist/build/frameworkStylesheets.js +49 -0
  94. package/dist/build/getPackageDirForFile.d.ts +2 -0
  95. package/dist/build/getPackageDirForFile.d.ts.map +1 -0
  96. package/dist/build/getPackageDirForFile.js +11 -0
  97. package/dist/build/getSxyClientPackageAliases.d.ts.map +1 -1
  98. package/dist/build/getSxyClientPackageAliases.js +3 -1
  99. package/dist/build/makeBabelUserDevConfig.d.ts +1 -1
  100. package/dist/build/makeBabelUserDevConfig.d.ts.map +1 -1
  101. package/dist/build/makeBabelUserDevConfig.js +3 -2
  102. package/dist/build/makeBabelUserProdConfig.d.ts +1 -1
  103. package/dist/build/makeBabelUserProdConfig.d.ts.map +1 -1
  104. package/dist/build/makeBabelUserProdConfig.js +4 -2
  105. package/dist/build/rollup.user.prod.config.d.ts.map +1 -1
  106. package/dist/build/rollup.user.prod.config.js +4 -1
  107. package/dist/build/rollupExtractComponentStylesheets.d.ts +12 -0
  108. package/dist/build/rollupExtractComponentStylesheets.d.ts.map +1 -0
  109. package/dist/build/rollupExtractComponentStylesheets.js +35 -0
  110. package/dist/compat/context.d.ts +1 -1
  111. package/dist/compat/context.d.ts.map +1 -1
  112. package/dist/compat/types.d.ts +1 -1
  113. package/dist/compat/types.d.ts.map +1 -1
  114. package/dist/componentCss/i/T-components-library-RichTextEditor-RichTextEditor.css +115 -0
  115. package/dist/componentCss/i/T-components-library-__StatefulMessage-StatefulMessage.css +25 -0
  116. package/dist/componentCss/tungsten.css +2 -0
  117. package/dist/componentProxyHandlers.d.ts +2 -1
  118. package/dist/componentProxyHandlers.d.ts.map +1 -1
  119. package/dist/componentProxyHandlers.js +45 -9
  120. package/dist/components/GoToComponent.d.ts +1 -1
  121. package/dist/components/GoToComponent.d.ts.map +1 -1
  122. package/dist/components/PopMessages.d.ts +12 -0
  123. package/dist/components/PopMessages.d.ts.map +1 -0
  124. package/dist/components/PopMessages.js +45 -0
  125. package/dist/components/_GoToComponent.d.ts +10 -0
  126. package/dist/components/_GoToComponent.d.ts.map +1 -0
  127. package/dist/components/_GoToComponent.js +13 -0
  128. package/dist/components/library/RichTextEditor/RichTextEditor.d.ts +50 -0
  129. package/dist/components/library/RichTextEditor/RichTextEditor.d.ts.map +1 -0
  130. package/dist/components/library/RichTextEditor/RichTextEditor.js +458 -0
  131. package/dist/components/library/RichTextEditor/StoredContentNode.d.ts +5 -0
  132. package/dist/components/library/RichTextEditor/StoredContentNode.d.ts.map +1 -0
  133. package/dist/components/library/RichTextEditor/StoredContentNode.js +1 -0
  134. package/dist/components/library/RichTextEditor/activeFormats.d.ts +20 -0
  135. package/dist/components/library/RichTextEditor/activeFormats.d.ts.map +1 -0
  136. package/dist/components/library/RichTextEditor/activeFormats.js +48 -0
  137. package/dist/components/library/RichTextEditor/contentTree.d.ts +30 -0
  138. package/dist/components/library/RichTextEditor/contentTree.d.ts.map +1 -0
  139. package/dist/components/library/RichTextEditor/contentTree.js +81 -0
  140. package/dist/components/library/RichTextEditor/sanitizeAuthoredHtml.d.ts +30 -0
  141. package/dist/components/library/RichTextEditor/sanitizeAuthoredHtml.d.ts.map +1 -0
  142. package/dist/components/library/RichTextEditor/sanitizeAuthoredHtml.js +97 -0
  143. package/dist/components/library/__StatefulMessage/MessageData.d.ts +7 -0
  144. package/dist/components/library/__StatefulMessage/MessageData.d.ts.map +1 -0
  145. package/dist/components/library/__StatefulMessage/MessageData.js +1 -0
  146. package/dist/components/library/__StatefulMessage/StatefulMessage.d.ts +22 -0
  147. package/dist/components/library/__StatefulMessage/StatefulMessage.d.ts.map +1 -0
  148. package/dist/components/library/__StatefulMessage/StatefulMessage.js +88 -0
  149. package/dist/components/library/index.d.ts +5 -0
  150. package/dist/components/library/index.d.ts.map +1 -0
  151. package/dist/components/library/index.js +7 -0
  152. package/dist/defaultConfig.d.ts +2 -0
  153. package/dist/defaultConfig.d.ts.map +1 -1
  154. package/dist/defaultConfig.js +3 -1
  155. package/dist/env/Interfaces.d.ts +2 -1
  156. package/dist/env/Interfaces.d.ts.map +1 -1
  157. package/dist/env/getEnvSchemas.d.ts +1 -1
  158. package/dist/env/getEnvSchemas.d.ts.map +1 -1
  159. package/dist/env/injectEnv.d.ts +1 -1
  160. package/dist/env/injectEnv.d.ts.map +1 -1
  161. package/dist/env/injectEnv.js +16 -6
  162. package/dist/env/publicEnv.d.ts.map +1 -1
  163. package/dist/env/publicEnv.js +4 -1
  164. package/dist/findUserConfig.d.ts +1 -1
  165. package/dist/frameworkConfigSchema.d.ts +4 -0
  166. package/dist/frameworkConfigSchema.d.ts.map +1 -1
  167. package/dist/frameworkConfigSchema.js +2 -1
  168. package/dist/hooks/index.d.ts +1 -0
  169. package/dist/hooks/index.d.ts.map +1 -1
  170. package/dist/hooks/index.js +1 -0
  171. package/dist/hooks/useInstance.d.ts +3 -0
  172. package/dist/hooks/useInstance.d.ts.map +1 -0
  173. package/dist/hooks/useInstance.js +4 -0
  174. package/dist/hydrate/hydrate.d.ts +6 -4
  175. package/dist/hydrate/hydrate.d.ts.map +1 -1
  176. package/dist/hydrate/hydrate.js +51 -13
  177. package/dist/hydrate/reconcileHydratedAttributes.d.ts.map +1 -1
  178. package/dist/hydrate/reconcileHydratedAttributes.js +4 -3
  179. package/dist/hydrate/renderHydrationMismatchBanner.d.ts +7 -0
  180. package/dist/hydrate/renderHydrationMismatchBanner.d.ts.map +1 -0
  181. package/dist/hydrate/renderHydrationMismatchBanner.js +69 -0
  182. package/dist/indexInner.d.ts +13 -5
  183. package/dist/indexInner.d.ts.map +1 -1
  184. package/dist/indexInner.js +9 -2
  185. package/dist/makeInstanceConfigFromFrameworkConfig.d.ts.map +1 -1
  186. package/dist/makeInstanceConfigFromFrameworkConfig.js +2 -1
  187. package/dist/pop.d.ts +10 -0
  188. package/dist/pop.d.ts.map +1 -0
  189. package/dist/pop.js +49 -0
  190. package/dist/postcssPlugins/TransformCssNames.d.ts.map +1 -1
  191. package/dist/postcssPlugins/TransformCssNames.js +10 -2
  192. package/dist/propsAreEqual.d.ts +8 -0
  193. package/dist/propsAreEqual.d.ts.map +1 -0
  194. package/dist/propsAreEqual.js +97 -0
  195. package/dist/rawHtml/filterContentNode.d.ts +20 -0
  196. package/dist/rawHtml/filterContentNode.d.ts.map +1 -0
  197. package/dist/rawHtml/filterContentNode.js +96 -0
  198. package/dist/rawHtml/parseHtml.d.ts +14 -0
  199. package/dist/rawHtml/parseHtml.d.ts.map +1 -1
  200. package/dist/rawHtml/parseHtml.js +4 -4
  201. package/dist/rawHtml/sanitizeHtml.d.ts +17 -0
  202. package/dist/rawHtml/sanitizeHtml.d.ts.map +1 -0
  203. package/dist/rawHtml/sanitizeHtml.js +19 -0
  204. package/dist/render/HeadData.d.ts +2 -0
  205. package/dist/render/HeadData.d.ts.map +1 -1
  206. package/dist/render/contentNodeToHtml.d.ts +18 -0
  207. package/dist/render/contentNodeToHtml.d.ts.map +1 -0
  208. package/dist/render/contentNodeToHtml.js +66 -0
  209. package/dist/render/contentToHtml.d.ts.map +1 -1
  210. package/dist/render/contentToHtml.js +3 -1
  211. package/dist/render/instantiateClassComponent.d.ts.map +1 -1
  212. package/dist/render/instantiateClassComponent.js +4 -0
  213. package/dist/render/processHead.d.ts.map +1 -1
  214. package/dist/render/processHead.js +22 -3
  215. package/dist/render/renderingTreeToHtml.d.ts.map +1 -1
  216. package/dist/render/renderingTreeToHtml.js +8 -1
  217. package/dist/routing/ErrorRouteType.d.ts +6 -0
  218. package/dist/routing/ErrorRouteType.d.ts.map +1 -0
  219. package/dist/routing/ErrorRouteType.js +1 -0
  220. package/dist/routing/RouteTypes.d.ts +2 -1
  221. package/dist/routing/RouteTypes.d.ts.map +1 -1
  222. package/dist/routing/Routes.d.ts +5 -0
  223. package/dist/routing/Routes.d.ts.map +1 -1
  224. package/dist/routing/TungstenErrorInfo.d.ts +6 -0
  225. package/dist/routing/TungstenErrorInfo.d.ts.map +1 -0
  226. package/dist/routing/TungstenErrorInfo.js +6 -0
  227. package/dist/settings.d.ts +2 -0
  228. package/dist/settings.d.ts.map +1 -1
  229. package/dist/settings.js +3 -0
  230. package/dist/stateTracking.d.ts +47 -0
  231. package/dist/stateTracking.d.ts.map +1 -0
  232. package/dist/stateTracking.js +83 -0
  233. package/dist/staticGen/staticGen.d.ts.map +1 -1
  234. package/dist/staticGen/staticGen.js +117 -107
  235. package/dist/style/styleContentSxy.js +21 -0
  236. package/dist/testing/hydrateTestApp.d.ts +38 -0
  237. package/dist/testing/hydrateTestApp.d.ts.map +1 -0
  238. package/dist/testing/hydrateTestApp.js +242 -0
  239. package/dist/testing/index.d.ts +4 -3
  240. package/dist/testing/index.d.ts.map +1 -1
  241. package/dist/testing/index.js +16 -2
  242. package/dist/testing/installTestStyleProcessors.d.ts +2 -0
  243. package/dist/testing/installTestStyleProcessors.d.ts.map +1 -0
  244. package/dist/testing/installTestStyleProcessors.js +21 -0
  245. package/dist/testing/temp/componentPackageMock.d.ts +18 -0
  246. package/dist/testing/temp/componentPackageMock.d.ts.map +1 -0
  247. package/dist/testing/temp/componentPackageMock.js +37 -0
  248. package/dist/testing/temp/contentHtmlElements.d.ts +3 -0
  249. package/dist/testing/temp/contentHtmlElements.d.ts.map +1 -0
  250. package/dist/testing/temp/contentHtmlElements.js +12 -0
  251. package/dist/timeProfiler.d.ts +6 -0
  252. package/dist/timeProfiler.d.ts.map +1 -0
  253. package/dist/timeProfiler.js +31 -0
  254. package/dist/update/integrateUpdateVdom.d.ts +11 -0
  255. package/dist/update/integrateUpdateVdom.d.ts.map +1 -1
  256. package/dist/update/integrateUpdateVdom.js +169 -54
  257. package/dist/update/pendingMounts.d.ts +25 -0
  258. package/dist/update/pendingMounts.d.ts.map +1 -0
  259. package/dist/update/pendingMounts.js +55 -0
  260. package/dist/warnOnFrameworkChange.d.ts.map +1 -1
  261. package/dist/warnOnFrameworkChange.js +8 -8
  262. package/package.json +21 -17
  263. package/dist/FunctionComponentStandIn.sxyt.d.ts +0 -2
  264. package/dist/FunctionComponentStandIn.sxyt.d.ts.map +0 -1
  265. package/dist/FunctionComponentStandIn.sxyt.js +0 -52
  266. package/dist/Instance/gotoRedirect.sxyt.d.ts +0 -2
  267. package/dist/Instance/gotoRedirect.sxyt.d.ts.map +0 -1
  268. package/dist/Instance/gotoRedirect.sxyt.js +0 -148
  269. package/dist/Instance/runTrackedWork.sxyt.d.ts +0 -2
  270. package/dist/Instance/runTrackedWork.sxyt.d.ts.map +0 -1
  271. package/dist/Instance/runTrackedWork.sxyt.js +0 -35
  272. package/dist/Servers/devErrorPageAutoRetry.sxyt.d.ts +0 -2
  273. package/dist/Servers/devErrorPageAutoRetry.sxyt.d.ts.map +0 -1
  274. package/dist/Servers/devErrorPageAutoRetry.sxyt.js +0 -117
  275. package/dist/_client/cjsHelpers.sxyt.d.ts +0 -2
  276. package/dist/_client/cjsHelpers.sxyt.d.ts.map +0 -1
  277. package/dist/_client/cjsHelpers.sxyt.js +0 -45
  278. package/dist/auth/passwordHashing.sxyt.d.ts +0 -2
  279. package/dist/auth/passwordHashing.sxyt.d.ts.map +0 -1
  280. package/dist/auth/passwordHashing.sxyt.js +0 -46
  281. package/dist/auth/ref/checkPasswordResetToken.sxyt.d.ts +0 -2
  282. package/dist/auth/ref/checkPasswordResetToken.sxyt.d.ts.map +0 -1
  283. package/dist/auth/ref/checkPasswordResetToken.sxyt.js +0 -40
  284. package/dist/auth/ref/createPasswordResetToken.sxyt.d.ts +0 -2
  285. package/dist/auth/ref/createPasswordResetToken.sxyt.d.ts.map +0 -1
  286. package/dist/auth/ref/createPasswordResetToken.sxyt.js +0 -10
  287. package/dist/babelPlugins/BabelAddDevCacheBust.sxyt.d.ts +0 -2
  288. package/dist/babelPlugins/BabelAddDevCacheBust.sxyt.d.ts.map +0 -1
  289. package/dist/babelPlugins/BabelAddDevCacheBust.sxyt.js +0 -138
  290. package/dist/babelPlugins/fixImportsInSassErrorMessage.sxyt.d.ts +0 -2
  291. package/dist/babelPlugins/fixImportsInSassErrorMessage.sxyt.d.ts.map +0 -1
  292. package/dist/babelPlugins/fixImportsInSassErrorMessage.sxyt.js +0 -108
  293. package/dist/babelPlugins/transformPackageImports/resolveBareImport.sxyt.d.ts +0 -2
  294. package/dist/babelPlugins/transformPackageImports/resolveBareImport.sxyt.d.ts.map +0 -1
  295. package/dist/babelPlugins/transformPackageImports/resolveBareImport.sxyt.js +0 -104
  296. package/dist/bin/commands/compile.sxyt.d.ts +0 -2
  297. package/dist/bin/commands/compile.sxyt.d.ts.map +0 -1
  298. package/dist/bin/commands/compile.sxyt.js +0 -255
  299. package/dist/build/modifySassImports.sxyt.d.ts +0 -2
  300. package/dist/build/modifySassImports.sxyt.d.ts.map +0 -1
  301. package/dist/build/modifySassImports.sxyt.js +0 -55
  302. package/dist/build/sassImportParser.sxyt.d.ts +0 -2
  303. package/dist/build/sassImportParser.sxyt.d.ts.map +0 -1
  304. package/dist/build/sassImportParser.sxyt.js +0 -110
  305. package/dist/build/scssImportParserChatgpt.sxyt.d.ts +0 -2
  306. package/dist/build/scssImportParserChatgpt.sxyt.d.ts.map +0 -1
  307. package/dist/build/scssImportParserChatgpt.sxyt.js +0 -120
  308. package/dist/clone.sxyt.d.ts +0 -2
  309. package/dist/clone.sxyt.d.ts.map +0 -1
  310. package/dist/clone.sxyt.js +0 -24
  311. package/dist/componentProxyHandlers.sxyt.d.ts +0 -2
  312. package/dist/componentProxyHandlers.sxyt.d.ts.map +0 -1
  313. package/dist/componentProxyHandlers.sxyt.js +0 -130
  314. package/dist/components/RawHtml.sxyt.d.ts +0 -2
  315. package/dist/components/RawHtml.sxyt.d.ts.map +0 -1
  316. package/dist/components/RawHtml.sxyt.js +0 -104
  317. package/dist/components/bindable/BindableSelect.sxyt.d.ts +0 -2
  318. package/dist/components/bindable/BindableSelect.sxyt.d.ts.map +0 -1
  319. package/dist/components/bindable/BindableSelect.sxyt.js +0 -186
  320. package/dist/env/injectEnv.sxyt.d.ts +0 -2
  321. package/dist/env/injectEnv.sxyt.d.ts.map +0 -1
  322. package/dist/env/injectEnv.sxyt.js +0 -20
  323. package/dist/env/parseEnv.d.ts +0 -2
  324. package/dist/env/parseEnv.d.ts.map +0 -1
  325. package/dist/env/parseEnv.js +0 -14
  326. package/dist/env/parseEnv.sxyt.d.ts +0 -2
  327. package/dist/env/parseEnv.sxyt.d.ts.map +0 -1
  328. package/dist/env/parseEnv.sxyt.js +0 -11
  329. package/dist/findProjectDir.sxyt.d.ts +0 -2
  330. package/dist/findProjectDir.sxyt.d.ts.map +0 -1
  331. package/dist/findProjectDir.sxyt.js +0 -82
  332. package/dist/hmr/applyHmrModule.sxyt.d.ts +0 -2
  333. package/dist/hmr/applyHmrModule.sxyt.d.ts.map +0 -1
  334. package/dist/hmr/applyHmrModule.sxyt.js +0 -182
  335. package/dist/hmr/instanceRegistry.sxyt.d.ts +0 -2
  336. package/dist/hmr/instanceRegistry.sxyt.d.ts.map +0 -1
  337. package/dist/hmr/instanceRegistry.sxyt.js +0 -24
  338. package/dist/hmr/refreshStylesheets.sxyt.d.ts +0 -2
  339. package/dist/hmr/refreshStylesheets.sxyt.d.ts.map +0 -1
  340. package/dist/hmr/refreshStylesheets.sxyt.js +0 -46
  341. package/dist/hydrate/hydrate.sxyt.d.ts +0 -2
  342. package/dist/hydrate/hydrate.sxyt.d.ts.map +0 -1
  343. package/dist/hydrate/hydrate.sxyt.js +0 -302
  344. package/dist/hydrate/reconcileHydratedAttributes.sxyt.d.ts +0 -2
  345. package/dist/hydrate/reconcileHydratedAttributes.sxyt.d.ts.map +0 -1
  346. package/dist/hydrate/reconcileHydratedAttributes.sxyt.js +0 -190
  347. package/dist/importDevModuleWithRetry.sxyt.d.ts +0 -2
  348. package/dist/importDevModuleWithRetry.sxyt.d.ts.map +0 -1
  349. package/dist/importDevModuleWithRetry.sxyt.js +0 -104
  350. package/dist/innerHtmlFromProps.sxyt.d.ts +0 -2
  351. package/dist/innerHtmlFromProps.sxyt.d.ts.map +0 -1
  352. package/dist/innerHtmlFromProps.sxyt.js +0 -99
  353. package/dist/postcssPlugins/parseSelectors.sxyt.d.ts +0 -2
  354. package/dist/postcssPlugins/parseSelectors.sxyt.d.ts.map +0 -1
  355. package/dist/postcssPlugins/parseSelectors.sxyt.js +0 -62
  356. package/dist/postcssPlugins/parseSelectorsRich.sxyt.d.ts +0 -2
  357. package/dist/postcssPlugins/parseSelectorsRich.sxyt.d.ts.map +0 -1
  358. package/dist/postcssPlugins/parseSelectorsRich.sxyt.js +0 -155
  359. package/dist/rawHtml/parseHtml.sxyt.d.ts +0 -2
  360. package/dist/rawHtml/parseHtml.sxyt.d.ts.map +0 -1
  361. package/dist/rawHtml/parseHtml.sxyt.js +0 -239
  362. package/dist/render/getFunctionBodyAsString.sxyt.d.ts +0 -2
  363. package/dist/render/getFunctionBodyAsString.sxyt.d.ts.map +0 -1
  364. package/dist/render/getFunctionBodyAsString.sxyt.js +0 -37
  365. package/dist/render/processHead.sxyt.d.ts +0 -2
  366. package/dist/render/processHead.sxyt.d.ts.map +0 -1
  367. package/dist/render/processHead.sxyt.js +0 -93
  368. package/dist/render/processProps.sxyt.d.ts +0 -2
  369. package/dist/render/processProps.sxyt.d.ts.map +0 -1
  370. package/dist/render/processProps.sxyt.js +0 -90
  371. package/dist/routing/compareRequestToRegex.sxyt.d.ts +0 -2
  372. package/dist/routing/compareRequestToRegex.sxyt.d.ts.map +0 -1
  373. package/dist/routing/compareRequestToRegex.sxyt.js +0 -65
  374. package/dist/routing/getPathPriority.sxyt.d.ts +0 -2
  375. package/dist/routing/getPathPriority.sxyt.d.ts.map +0 -1
  376. package/dist/routing/getPathPriority.sxyt.js +0 -24
  377. package/dist/routing/matchPath.sxyt.d.ts +0 -2
  378. package/dist/routing/matchPath.sxyt.d.ts.map +0 -1
  379. package/dist/routing/matchPath.sxyt.js +0 -41
  380. package/dist/routing/patternToRegex.sxyt.d.ts +0 -2
  381. package/dist/routing/patternToRegex.sxyt.d.ts.map +0 -1
  382. package/dist/routing/patternToRegex.sxyt.js +0 -69
  383. package/dist/routing/splitRequest.sxyt.d.ts +0 -2
  384. package/dist/routing/splitRequest.sxyt.d.ts.map +0 -1
  385. package/dist/routing/splitRequest.sxyt.js +0 -47
  386. package/dist/style/jssToCss.sxyt.d.ts +0 -2
  387. package/dist/style/jssToCss.sxyt.d.ts.map +0 -1
  388. package/dist/style/jssToCss.sxyt.js +0 -17
  389. package/dist/testing/createTestApp.sxyt.d.ts +0 -2
  390. package/dist/testing/createTestApp.sxyt.d.ts.map +0 -1
  391. package/dist/testing/createTestApp.sxyt.js +0 -470
  392. package/dist/testing/ensureTestEnvLoaded.sxyt.d.ts +0 -2
  393. package/dist/testing/ensureTestEnvLoaded.sxyt.d.ts.map +0 -1
  394. package/dist/testing/ensureTestEnvLoaded.sxyt.js +0 -20
  395. package/dist/update/hotSwap.sxyt.d.ts +0 -2
  396. package/dist/update/hotSwap.sxyt.d.ts.map +0 -1
  397. package/dist/update/hotSwap.sxyt.js +0 -252
@@ -1,190 +0,0 @@
1
- import { describe } from 'sxy-test-runner';
2
- import { expect } from 'chai';
3
- import { Window } from 'happy-dom';
4
- import { reconcileHydratedAttributes } from "./reconcileHydratedAttributes.js";
5
- import { $props, $type } from "../contentNodeSymbols.js";
6
- const window = new Window();
7
- const node = (type, props) => ({
8
- [$type]: type,
9
- [$props]: props
10
- });
11
- /** Builds an element from markup the server could have produced. */
12
- const element = html => {
13
- const host = window.document.createElement('div');
14
- host.innerHTML = html;
15
- // eslint-disable-next-line no-type-assertion/no-type-assertion
16
- return host.firstElementChild;
17
- };
18
- const attributesOf = domNode => Object.fromEntries([...domNode.attributes].map(attribute => [attribute.name, attribute.value]));
19
- /** Reconciles and returns what changed. */
20
- const reconcile = (type, props, html) => {
21
- const domNode = element(html);
22
- const mismatches = [];
23
- reconcileHydratedAttributes(node(type, props), domNode, mismatch => mismatches.push(mismatch));
24
- return {
25
- domNode,
26
- mismatches,
27
- attributes: attributesOf(domNode)
28
- };
29
- };
30
- describe('reconcileHydratedAttributes()', ({
31
- it
32
- }) => {
33
- it('patches an attribute whose rendered value differs from the markup', () => {
34
- const {
35
- attributes,
36
- mismatches
37
- } = reconcile('div', {
38
- style: {
39
- backgroundColor: '#123456'
40
- }
41
- }, '<div style="background-color: #bae3ff;"></div>');
42
- expect(attributes.style).to.equal('background-color: #123456;');
43
- expect(mismatches.map(mismatch => mismatch.name)).to.deep.equal(['style']);
44
- });
45
- it('leaves a matching attribute untouched and reports nothing', () => {
46
- const {
47
- attributes,
48
- mismatches
49
- } = reconcile('input', {
50
- name: 'ref',
51
- title: 'Reference'
52
- }, '<input name="ref" title="Reference">');
53
- expect(attributes).to.deep.equal({
54
- name: 'ref',
55
- title: 'Reference'
56
- });
57
- expect(mismatches).to.deep.equal([]);
58
- });
59
- it('adds an attribute the markup is missing', () => {
60
- const {
61
- attributes
62
- } = reconcile('a', {
63
- href: '/x',
64
- title: 't'
65
- }, '<a href="/x"></a>');
66
- expect(attributes).to.deep.equal({
67
- href: '/x',
68
- title: 't'
69
- });
70
- });
71
- it('removes an attribute the render no longer produces', () => {
72
- const {
73
- attributes,
74
- mismatches
75
- } = reconcile('a', {
76
- href: '/x'
77
- }, '<a href="/x" title="gone"></a>');
78
- expect(attributes).to.deep.equal({
79
- href: '/x'
80
- });
81
- expect(mismatches.map(mismatch => mismatch.name)).to.deep.equal(['title']);
82
- });
83
- it('treats a true boolean as a present, empty attribute', () => {
84
- expect(reconcile('button', {
85
- disabled: true
86
- }, '<button></button>').attributes).to.deep.equal({
87
- disabled: ''
88
- });
89
- });
90
- it('removes an attribute whose rendered value is false, null or undefined', () => {
91
- expect(reconcile('button', {
92
- disabled: false
93
- }, '<button disabled></button>').attributes).to.deep.equal({});
94
- expect(reconcile('a', {
95
- href: null
96
- }, '<a href="/x"></a>').attributes).to.deep.equal({});
97
- expect(reconcile('a', {
98
- href: undefined
99
- }, '<a href="/x"></a>').attributes).to.deep.equal({});
100
- });
101
- // The comparison has to apply the same transformation the server used, or
102
- // every element looks mismatched and the whole document gets rewritten.
103
- it('applies the server prop transform, so className compares against class', () => {
104
- const {
105
- attributes,
106
- mismatches
107
- } = reconcile('div', {
108
- className: 'frame Qtc_frame'
109
- }, '<div class="frame Qtc_frame"></div>');
110
- expect(attributes).to.deep.equal({
111
- class: 'frame Qtc_frame'
112
- });
113
- expect(mismatches).to.deep.equal([]);
114
- });
115
- it('ignores event handlers rather than writing them as attributes', () => {
116
- const {
117
- attributes,
118
- mismatches
119
- } = reconcile('input', {
120
- name: 'a',
121
- onInput: () => undefined,
122
- onClick: () => undefined
123
- }, '<input name="a">');
124
- expect(attributes).to.deep.equal({
125
- name: 'a'
126
- });
127
- expect(mismatches).to.deep.equal([]);
128
- });
129
- it('ignores props that are instructions to Tungsten', () => {
130
- const {
131
- attributes,
132
- mismatches
133
- } = reconcile('div', {
134
- __opaque: true,
135
- dangerouslySetInnerHTML: {
136
- __html: '<b>x</b>'
137
- },
138
- id: 'd'
139
- }, '<div id="d"></div>');
140
- expect(attributes).to.deep.equal({
141
- id: 'd'
142
- });
143
- expect(mismatches).to.deep.equal([]);
144
- });
145
- // children is rendered content, not an attribute - the server renderer and the client
146
- // update path both strip it before comparing/writing attributes, and hydration has to
147
- // match or it writes the stringified child list (e.g. "[object Object],[object Object]")
148
- // onto every element in the page as a literal "children" attribute.
149
- it('does not write children as an attribute', () => {
150
- const {
151
- attributes,
152
- mismatches
153
- } = reconcile('div', {
154
- id: 'd',
155
- children: ['a', 'b']
156
- }, '<div id="d"></div>');
157
- expect(attributes).to.deep.equal({
158
- id: 'd'
159
- });
160
- expect(mismatches).to.deep.equal([]);
161
- });
162
- it('reports what changed, for a dev-mode warning', () => {
163
- const {
164
- mismatches
165
- } = reconcile('a', {
166
- href: '/new'
167
- }, '<a href="/old" title="stale"></a>');
168
- expect(mismatches).to.deep.include({
169
- name: 'href',
170
- expected: '/new',
171
- actual: '/old'
172
- });
173
- expect(mismatches).to.deep.include({
174
- name: 'title',
175
- expected: null,
176
- actual: 'stale'
177
- });
178
- });
179
- it('clears the checked property when removing a checked attribute', () => {
180
- const domNode = element('<input type="checkbox" checked>');
181
- // eslint-disable-next-line no-type-assertion/no-type-assertion
182
- const checkbox = domNode;
183
- expect(checkbox.checked).to.equal(true);
184
- reconcileHydratedAttributes(node('input', {
185
- type: 'checkbox'
186
- }), domNode);
187
- expect(checkbox.checked).to.equal(false);
188
- expect(domNode.hasAttribute('checked')).to.equal(false);
189
- });
190
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=importDevModuleWithRetry.sxyt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"importDevModuleWithRetry.sxyt.d.ts","sourceRoot":"","sources":["../src/importDevModuleWithRetry.sxyt.ts"],"names":[],"mappings":""}
@@ -1,104 +0,0 @@
1
- import { expect } from 'chai';
2
- import { describe } from 'sxy-test-runner';
3
- import { mkdtemp, rm, writeFile } from 'fs/promises';
4
- import { tmpdir } from 'os';
5
- import { join } from 'path';
6
- import { importDevModuleWithRetry, isTransientDevModuleError } from "./importDevModuleWithRetry.js";
7
- function delay(ms) {
8
- return new Promise(resolve => setTimeout(resolve, ms));
9
- }
10
- async function makeFixture() {
11
- const dir = await mkdtemp(join(tmpdir(), 'tungsten-import-dev-module-retry-'));
12
- const depPath = join(dir, 'dep.mjs');
13
- const entryPath = join(dir, 'entry.mjs');
14
- // dep.mjs never changes - it's the entry file itself that's momentarily
15
- // stale on disk, exactly like Home.js briefly still reading its
16
- // pre-rename import statement while Button.js has already been rewritten
17
- await writeFile(depPath, `export const NewName = 2\n`);
18
- await writeFile(entryPath, `export { OldName as NewName } from './dep.mjs'\n`);
19
- return {
20
- dir,
21
- depPath,
22
- entryPath
23
- };
24
- }
25
- describe('importDevModuleWithRetry()', ({
26
- it
27
- }) => {
28
- it(`rides out a transient module-shape mismatch, succeeding once the entry file itself catches up`, async () => {
29
- const {
30
- dir,
31
- entryPath
32
- } = await makeFixture();
33
- try {
34
- // simulate the entry file's own recompile (e.g. babel finishing
35
- // its pass over Home.tsx) landing a little after this request
36
- // started - the exact race this helper exists for
37
- void delay(150).then(() => writeFile(entryPath, `export { NewName } from './dep.mjs'\n`));
38
- const module = await importDevModuleWithRetry(`file://${entryPath}`, 10, 50);
39
- expect(module.NewName).to.equal(2);
40
- } finally {
41
- await rm(dir, {
42
- recursive: true,
43
- force: true
44
- });
45
- }
46
- });
47
- it(`gives up and throws the real error once attempts are exhausted`, async () => {
48
- const {
49
- dir,
50
- entryPath
51
- } = await makeFixture();
52
- try {
53
- let threw = false;
54
- try {
55
- await importDevModuleWithRetry(`file://${entryPath}`, 3, 20);
56
- } catch (e) {
57
- threw = true;
58
- expect(String(e)).to.contain('does not provide an export');
59
- }
60
- expect(threw).to.equal(true);
61
- } finally {
62
- await rm(dir, {
63
- recursive: true,
64
- force: true
65
- });
66
- }
67
- });
68
- it(`does not retry a genuine, unrelated error - so real bugs still surface immediately`, async () => {
69
- const dir = await mkdtemp(join(tmpdir(), 'tungsten-import-dev-module-retry-real-error-'));
70
- try {
71
- const brokenPath = join(dir, 'broken.mjs');
72
- await writeFile(brokenPath, `this is not valid javascript {{{\n`);
73
- const start = Date.now();
74
- let threw = false;
75
- try {
76
- await importDevModuleWithRetry(`file://${brokenPath}`, 10, 200);
77
- } catch {
78
- threw = true;
79
- }
80
- expect(threw).to.equal(true);
81
- // a real syntax error must not be retried - if it were, this would
82
- // take multiple * 200ms delays instead of failing on the first attempt
83
- expect(Date.now() - start).to.be.lessThan(200);
84
- } finally {
85
- await rm(dir, {
86
- recursive: true,
87
- force: true
88
- });
89
- }
90
- });
91
- });
92
- describe('isTransientDevModuleError()', ({
93
- it
94
- }) => {
95
- it(`recognizes a bare "X is not defined" ReferenceError - the within-file version of the same race, seen live when a file's JSX still referenced a just-renamed import mid-multi-step-edit`, () => {
96
- expect(isTransientDevModuleError(new ReferenceError('Button is not defined'))).to.equal(true);
97
- });
98
- it('does not match a differently-shaped ReferenceError, to stay a narrow signal', () => {
99
- expect(isTransientDevModuleError(new ReferenceError('Cannot access X before initialization'))).to.equal(false);
100
- });
101
- it('does not match an unrelated TypeError', () => {
102
- expect(isTransientDevModuleError(new TypeError(`Cannot read properties of undefined (reading 'foo')`))).to.equal(false);
103
- });
104
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=innerHtmlFromProps.sxyt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"innerHtmlFromProps.sxyt.d.ts","sourceRoot":"","sources":["../src/innerHtmlFromProps.sxyt.ts"],"names":[],"mappings":""}
@@ -1,99 +0,0 @@
1
- import { describe } from 'sxy-test-runner';
2
- import { expect } from 'chai';
3
- import { innerHtmlFromProps } from "./innerHtmlFromProps.js";
4
- import { renderingNodeToHtml } from "./render/renderingTreeToHtml.js";
5
- import { $props, $type } from "./contentNodeSymbols.js";
6
- const props = value => value;
7
- // `found: true` short-circuits the <head> handling, which is all these
8
- // element-level tests need from HeadData.
9
- // eslint-disable-next-line no-type-assertion/no-type-assertion
10
- const noHeadData = {
11
- found: true
12
- };
13
- const renderHtml = (type, nodeProps) => renderingNodeToHtml(
14
- // eslint-disable-next-line no-type-assertion/no-type-assertion
15
- {
16
- [$type]: type,
17
- [$props]: nodeProps
18
- }, false, noHeadData, null);
19
- describe('innerHtmlFromProps()', ({
20
- it
21
- }) => {
22
- it('returns null when the element does not use dangerouslySetInnerHTML', () => {
23
- expect(innerHtmlFromProps('div', props({
24
- children: 'hello'
25
- }), true)).to.equal(null);
26
- });
27
- it('returns the raw markup', () => {
28
- expect(innerHtmlFromProps('div', props({
29
- dangerouslySetInnerHTML: {
30
- __html: '<b>hi</b>'
31
- }
32
- }), false)).to.equal('<b>hi</b>');
33
- });
34
- it('rejects an element carrying both raw markup and children', () => {
35
- expect(() => innerHtmlFromProps('div', props({
36
- dangerouslySetInnerHTML: {
37
- __html: '<b>hi</b>'
38
- },
39
- children: 'hello'
40
- }), true)).to.throw(/both dangerouslySetInnerHTML and children/);
41
- });
42
- it('rejects a prop that is not of the form { __html }', () => {
43
- // eslint-disable-next-line no-type-assertion/no-type-assertion
44
- const bad = {
45
- dangerouslySetInnerHTML: '<b>hi</b>'
46
- };
47
- expect(() => innerHtmlFromProps('div', bad, false)).to.throw(/{ __html: '...' }/);
48
- });
49
- it('rejects a null or undefined __html', () => {
50
- // eslint-disable-next-line no-type-assertion/no-type-assertion
51
- const nulled = {
52
- dangerouslySetInnerHTML: {
53
- __html: null
54
- }
55
- };
56
- expect(() => innerHtmlFromProps('div', nulled, false)).to.throw(/__html is null/);
57
- });
58
- });
59
- describe('dangerouslySetInnerHTML rendering', ({
60
- it
61
- }) => {
62
- it('writes the markup into the element unescaped', async () => {
63
- expect(await renderHtml('div', {
64
- dangerouslySetInnerHTML: {
65
- __html: '<p>Bonuses.</p>'
66
- }
67
- })).to.equal('<div><p>Bonuses.</p></div>');
68
- });
69
- it('does not leak the prop into the markup as an attribute', async () => {
70
- const html = await renderHtml('div', {
71
- id: 'tip',
72
- dangerouslySetInnerHTML: {
73
- __html: '<b>hi</b>'
74
- }
75
- });
76
- expect(html).to.not.include('dangerouslySetInnerHTML');
77
- expect(html).to.not.include('[object Object]');
78
- expect(html).to.equal('<div id="tip"><b>hi</b></div>');
79
- });
80
- it('escapes ordinary children, so the switch is per element', async () => {
81
- expect(await renderHtml('div', {
82
- children: '<p>Bonuses.</p>'
83
- })).to.equal('<div>&lt;p&gt;Bonuses.&lt;/p&gt;</div>');
84
- });
85
- it('rejects raw markup on a void element', async () => {
86
- let thrown = null;
87
- try {
88
- await renderHtml('br', {
89
- dangerouslySetInnerHTML: {
90
- __html: '<b>hi</b>'
91
- }
92
- });
93
- } catch (error) {
94
- thrown = error;
95
- }
96
- expect(thrown).to.be.an('error');
97
- expect(thrown.message).to.include('void type');
98
- });
99
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=parseSelectors.sxyt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parseSelectors.sxyt.d.ts","sourceRoot":"","sources":["../../src/postcssPlugins/parseSelectors.sxyt.ts"],"names":[],"mappings":""}
@@ -1,62 +0,0 @@
1
- import { describe } from 'sxy-test-runner';
2
- import { parseSelectors } from "./parseSelectors.js";
3
- describe('parseSelectors()', ({
4
- it
5
- }) => {
6
- const input = 'html';
7
- it(`parses out a tag selector from '${input}'`, () => {
8
- const selectors = parseSelectors(input);
9
- selectors.should.deep.equal(['html']);
10
- });
11
- const input2 = 'html body';
12
- it(`parses out two tag selectors from '${input2}'`, () => {
13
- const selectors = parseSelectors(input2);
14
- selectors.should.deep.equal(['html', 'body']);
15
- });
16
- const input3 = '.foo';
17
- it(`parses out a class selector from '${input3}'`, () => {
18
- const selectors = parseSelectors(input3);
19
- selectors.should.deep.equal(['.foo']);
20
- });
21
- const input4 = ' .foo ';
22
- it(`parses out a class selector with whitespace from '${input4}'`, () => {
23
- const selectors = parseSelectors(input4);
24
- selectors.should.deep.equal(['.foo']);
25
- });
26
- const input5 = '.foo .bar';
27
- it(`parses out a two class selectors from '${input5}'`, () => {
28
- const selectors = parseSelectors(input5);
29
- selectors.should.deep.equal(['.foo', '.bar']);
30
- });
31
- const input6 = 'html.bar';
32
- it(`parses out connected tag and class '${input6}'`, () => {
33
- const selectors = parseSelectors(input6);
34
- selectors.should.deep.equal(['html', '.bar']);
35
- });
36
- const input7 = '.foo.bar';
37
- it(`parses out connected classes '${input7}'`, () => {
38
- const selectors = parseSelectors(input7);
39
- selectors.should.deep.equal(['.foo', '.bar']);
40
- });
41
- const input8 = 'html#foo.bar';
42
- it(`parses out connected tag, id and class '${input8}'`, () => {
43
- const selectors = parseSelectors(input8);
44
- selectors.should.deep.equal(['html', '#foo', '.bar']);
45
- });
46
- const input9 = 'html[lang="en"]';
47
- it(`parses out tag with attribute selector from '${input9}'`, () => {
48
- const selectors = parseSelectors(input9);
49
- selectors.should.deep.equal(['html', '[lang="en"]']);
50
- });
51
- const input10 = ':i(div)';
52
- it(`parses out :i pseudo '${input10}'`, () => {
53
- const selectors = parseSelectors(input10);
54
- selectors.should.deep.equal([':i(div)']);
55
- });
56
- const input11 = 'html :i(div)';
57
- it(`parses out tag then :i pseudo '${input11}'`, () => {
58
- const selectors = parseSelectors(input11);
59
- //console.log('selectors', selectors)
60
- selectors.should.deep.equal(['html', ':i(div)']);
61
- });
62
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=parseSelectorsRich.sxyt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parseSelectorsRich.sxyt.d.ts","sourceRoot":"","sources":["../../src/postcssPlugins/parseSelectorsRich.sxyt.ts"],"names":[],"mappings":""}
@@ -1,155 +0,0 @@
1
- import { describe } from 'sxy-test-runner';
2
- import { parseSelectorsRich } from "./parseSelectorsRich.js";
3
- function tagSelector(tag) {
4
- return {
5
- type: 'tag',
6
- content: tag,
7
- valid: true
8
- };
9
- }
10
- function idSelector(id) {
11
- return {
12
- type: 'id',
13
- content: id,
14
- valid: true
15
- };
16
- }
17
- function classSelector(className) {
18
- return {
19
- type: 'class',
20
- content: className,
21
- valid: true
22
- };
23
- }
24
- function pseudoSelector(pesudo) {
25
- return {
26
- type: 'pseudo-class',
27
- content: pesudo,
28
- valid: true
29
- };
30
- }
31
- function pseudoElementSelector(pseudoElement) {
32
- return {
33
- type: 'pseudo-element',
34
- content: pseudoElement,
35
- valid: true
36
- };
37
- }
38
- function attributeSelector(attribute) {
39
- return {
40
- type: 'attribute',
41
- content: attribute,
42
- valid: true
43
- };
44
- }
45
- function whitespace() {
46
- return {
47
- type: 'whitespace',
48
- content: ' ',
49
- valid: true
50
- };
51
- }
52
- describe('parseSelectorsRich()', ({
53
- it
54
- }) => {
55
- const input = 'html';
56
- it(`parses out a tag selector from '${input}'`, () => {
57
- const selectors = parseSelectorsRich(input);
58
- selectors.should.deep.equal([tagSelector('html')]);
59
- });
60
- const input2 = 'html body';
61
- it(`parses out two tag selectors from '${input2}'`, () => {
62
- const selectors = parseSelectorsRich(input2);
63
- // console.log('selectors', selectors)
64
- // console.log('expected', [
65
- // tagSelector('html'),
66
- // tagSelector('body')
67
- // ])
68
- selectors.should.deep.equal([tagSelector('html'), whitespace(), tagSelector('body')]);
69
- });
70
- const input3 = '.foo';
71
- it(`parses out a class selector from '${input3}'`, () => {
72
- const selectors = parseSelectorsRich(input3);
73
- selectors.should.deep.equal([classSelector('.foo')]);
74
- });
75
- const input4 = ' .foo ';
76
- it(`parses out a class selector with whitespace from '${input4}'`, () => {
77
- const selectors = parseSelectorsRich(input4);
78
- selectors.should.deep.equal([whitespace(), classSelector('.foo'), whitespace()]);
79
- });
80
- const input5 = '.foo .bar';
81
- it(`parses out a two class selectors from '${input5}'`, () => {
82
- const selectors = parseSelectorsRich(input5);
83
- selectors.should.deep.equal([classSelector('.foo'), whitespace(), classSelector('.bar')]);
84
- });
85
- const input6 = 'html.bar';
86
- it(`parses out connected tag and class '${input6}'`, () => {
87
- const selectors = parseSelectorsRich(input6);
88
- selectors.should.deep.equal([tagSelector('html'), classSelector('.bar')]);
89
- });
90
- const input7 = '.foo.bar';
91
- it(`parses out connected classes '${input7}'`, () => {
92
- const selectors = parseSelectorsRich(input7);
93
- selectors.should.deep.equal([classSelector('.foo'), classSelector('.bar')]);
94
- });
95
- const input8 = 'html#foo.bar';
96
- it(`parses out connected tag, id and class '${input8}'`, () => {
97
- const selectors = parseSelectorsRich(input8);
98
- selectors.should.deep.equal([tagSelector('html'), idSelector('#foo'), classSelector('.bar')]);
99
- });
100
- const input9 = 'html[lang="en"]';
101
- it(`parses out tag with attribute selector from '${input9}'`, () => {
102
- const selectors = parseSelectorsRich(input9);
103
- // console.log(JSON.stringify(selectors))
104
- // console.log(JSON.stringify([
105
- // tagSelector('html'),
106
- // attributeSelector('[lang="en"]')
107
- // ]))
108
- selectors.should.deep.equal([tagSelector('html'), attributeSelector('[lang="en"]')]);
109
- });
110
- const input10 = 'html[lang="en"]';
111
- it(`parses out tag with attribute selector from '${input10}'`, () => {
112
- const selectors = parseSelectorsRich(input10);
113
- // console.log(JSON.stringify(selectors))
114
- // console.log(JSON.stringify([
115
- // tagSelector('html'),
116
- // attributeSelector('[lang="en"]')
117
- // ]))
118
- selectors.should.deep.equal([tagSelector('html'), attributeSelector('[lang="en"]')]);
119
- });
120
- const input11 = 'a:hover';
121
- it(`parses out :hover pseudo on an anchor in '${input11}'`, () => {
122
- const selectors = parseSelectorsRich(input11);
123
- // console.log(JSON.stringify(selectors))
124
- // console.log(JSON.stringify([
125
- // tagSelector('a'),
126
- // pseudoSelector(':hover')
127
- // ]))
128
- selectors.should.deep.equal([tagSelector('a'), pseudoSelector(':hover')]);
129
- });
130
- const input12 = ':i(div)';
131
- it(`parses out :i pseudo '${input12}'`, () => {
132
- const selectors = parseSelectorsRich(input12);
133
- selectors.should.deep.equal([pseudoSelector(':i(div)')]);
134
- });
135
- const input13 = 'html :i(div)';
136
- it(`parses out tag then :i pseudo '${input13}'`, () => {
137
- const selectors = parseSelectorsRich(input13);
138
- selectors.should.deep.equal([tagSelector('html'), whitespace(), pseudoSelector(':i(div)')]);
139
- });
140
- const input14 = 'summary::before';
141
- it(`parses out a pseudo-element from '${input14}'`, () => {
142
- const selectors = parseSelectorsRich(input14);
143
- selectors.should.deep.equal([tagSelector('summary'), pseudoElementSelector('::before')]);
144
- });
145
- const input15 = 'summary::-webkit-details-marker';
146
- it(`parses out a vendor prefixed pseudo-element from '${input15}'`, () => {
147
- const selectors = parseSelectorsRich(input15);
148
- selectors.should.deep.equal([tagSelector('summary'), pseudoElementSelector('::-webkit-details-marker')]);
149
- });
150
- const input16 = 'input:-moz-focusring';
151
- it(`parses out a vendor prefixed pseudo-class from '${input16}'`, () => {
152
- const selectors = parseSelectorsRich(input16);
153
- selectors.should.deep.equal([tagSelector('input'), pseudoSelector(':-moz-focusring')]);
154
- });
155
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=parseHtml.sxyt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parseHtml.sxyt.d.ts","sourceRoot":"","sources":["../../src/rawHtml/parseHtml.sxyt.ts"],"names":[],"mappings":""}