meno-core 1.0.53 → 1.1.0

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 (415) hide show
  1. package/.claude/settings.local.json +1 -3
  2. package/bin/cli.ts +66 -261
  3. package/build-astro.ts +150 -128
  4. package/dist/bin/cli.js +42 -185
  5. package/dist/bin/cli.js.map +2 -2
  6. package/dist/chunks/chunk-2AR55GYH.js +42 -0
  7. package/dist/chunks/chunk-2AR55GYH.js.map +7 -0
  8. package/dist/chunks/{chunk-JGWFTO6P.js → chunk-2IIQK7T3.js} +2624 -1389
  9. package/dist/chunks/chunk-2IIQK7T3.js.map +7 -0
  10. package/dist/chunks/chunk-4ZRU52J2.js +169 -0
  11. package/dist/chunks/chunk-4ZRU52J2.js.map +7 -0
  12. package/dist/chunks/{chunk-UB44F4Z2.js → chunk-5X4HCN7J.js} +5 -7
  13. package/dist/chunks/chunk-5X4HCN7J.js.map +7 -0
  14. package/dist/chunks/{chunk-WQFG7PAH.js → chunk-7CCVOL5M.js} +15 -19
  15. package/dist/chunks/chunk-7CCVOL5M.js.map +7 -0
  16. package/dist/chunks/{chunk-YBLHKYFF.js → chunk-AR7LHIFY.js} +8 -2
  17. package/dist/chunks/chunk-AR7LHIFY.js.map +7 -0
  18. package/dist/chunks/{chunk-O3NAGJP4.js → chunk-NUP7H7D3.js} +135 -41
  19. package/dist/chunks/chunk-NUP7H7D3.js.map +7 -0
  20. package/dist/chunks/{chunk-X754AHS5.js → chunk-QWTQZHG3.js} +194 -90
  21. package/dist/chunks/chunk-QWTQZHG3.js.map +7 -0
  22. package/dist/chunks/{chunk-H3GJ4H2U.js → chunk-XTKNX4FW.js} +216 -87
  23. package/dist/chunks/chunk-XTKNX4FW.js.map +7 -0
  24. package/dist/chunks/{fs-JGINUXGL.js → fs-G3ANWEFP.js} +2 -2
  25. package/dist/lib/client/index.js +1003 -475
  26. package/dist/lib/client/index.js.map +3 -3
  27. package/dist/lib/server/index.js +14393 -6371
  28. package/dist/lib/server/index.js.map +4 -4
  29. package/dist/lib/shared/index.js +342 -101
  30. package/dist/lib/shared/index.js.map +4 -4
  31. package/dist/lib/shared/richtext/index.js +1 -1
  32. package/dist/lib/test-utils/index.js +64 -80
  33. package/dist/lib/test-utils/index.js.map +2 -2
  34. package/entries/client-router.tsx +10 -8
  35. package/lib/client/ClientInitializer.ts +8 -8
  36. package/lib/client/ErrorBoundary.test.tsx +246 -186
  37. package/lib/client/ErrorBoundary.tsx +183 -132
  38. package/lib/client/componentRegistry.test.ts +96 -108
  39. package/lib/client/componentRegistry.ts +1 -3
  40. package/lib/client/contexts/ThemeContext.tsx +3 -2
  41. package/lib/client/core/ComponentBuilder.test.ts +663 -560
  42. package/lib/client/core/ComponentBuilder.ts +427 -155
  43. package/lib/client/core/ComponentRenderer.test.tsx +2 -4
  44. package/lib/client/core/ComponentRenderer.tsx +46 -33
  45. package/lib/client/core/builders/embedBuilder.ts +242 -54
  46. package/lib/client/core/builders/linkBuilder.ts +72 -45
  47. package/lib/client/core/builders/linkNodeBuilder.ts +79 -54
  48. package/lib/client/core/builders/listBuilder.ts +155 -89
  49. package/lib/client/core/builders/localeListBuilder.ts +97 -62
  50. package/lib/client/core/builders/types.ts +5 -5
  51. package/lib/client/core/cmsTemplateProcessor.ts +8 -9
  52. package/lib/client/elementRegistry.ts +3 -3
  53. package/lib/client/fontFamiliesService.test.ts +2 -10
  54. package/lib/client/fontFamiliesService.ts +3 -3
  55. package/lib/client/hmr/HMRManager.tsx +47 -30
  56. package/lib/client/hmrCssReload.ts +49 -14
  57. package/lib/client/hmrWebSocket.ts +14 -19
  58. package/lib/client/hooks/useColorVariables.test.ts +21 -21
  59. package/lib/client/hooks/useColorVariables.ts +23 -18
  60. package/lib/client/hooks/usePropertyAutocomplete.ts +4 -6
  61. package/lib/client/hooks/useVariables.ts +6 -4
  62. package/lib/client/hydration/HydrationUtils.test.ts +24 -25
  63. package/lib/client/hydration/HydrationUtils.ts +3 -4
  64. package/lib/client/i18nConfigService.test.ts +2 -7
  65. package/lib/client/i18nConfigService.ts +2 -2
  66. package/lib/client/meno-filter/MenoFilter.test.ts +47 -49
  67. package/lib/client/meno-filter/MenoFilter.ts +14 -15
  68. package/lib/client/meno-filter/bindings.ts +18 -43
  69. package/lib/client/meno-filter/init.ts +4 -4
  70. package/lib/client/meno-filter/renderer.ts +30 -32
  71. package/lib/client/meno-filter/script.generated.ts +1 -3
  72. package/lib/client/meno-filter/ui.ts +4 -6
  73. package/lib/client/meno-filter/updates.ts +18 -23
  74. package/lib/client/meno-filter/utils.ts +1 -1
  75. package/lib/client/navigation.test.ts +174 -178
  76. package/lib/client/navigation.ts +0 -1
  77. package/lib/client/responsiveStyleResolver.knownTokens.test.ts +71 -0
  78. package/lib/client/responsiveStyleResolver.test.ts +234 -232
  79. package/lib/client/responsiveStyleResolver.ts +74 -20
  80. package/lib/client/routing/RouteLoader.test.ts +24 -25
  81. package/lib/client/routing/RouteLoader.ts +27 -35
  82. package/lib/client/routing/Router.tsx +210 -153
  83. package/lib/client/scripts/ScriptExecutor.test.ts +157 -158
  84. package/lib/client/scripts/ScriptExecutor.ts +18 -36
  85. package/lib/client/services/PrefetchService.test.ts +3 -3
  86. package/lib/client/services/PrefetchService.ts +23 -29
  87. package/lib/client/styleProcessor.test.ts +9 -9
  88. package/lib/client/styleProcessor.ts +24 -15
  89. package/lib/client/styles/StyleInjector.test.ts +122 -115
  90. package/lib/client/styles/StyleInjector.ts +10 -7
  91. package/lib/client/styles/UtilityClassCollector.ts +62 -28
  92. package/lib/client/styles/cspNonce.test.ts +2 -5
  93. package/lib/client/templateEngine.test.ts +554 -488
  94. package/lib/client/templateEngine.ts +203 -73
  95. package/lib/client/theme.test.ts +1 -1
  96. package/lib/client/theme.ts +0 -1
  97. package/lib/client/utils/toast.ts +0 -1
  98. package/lib/server/__integration__/api-routes.test.ts +8 -4
  99. package/lib/server/__integration__/cms-integration.test.ts +1 -4
  100. package/lib/server/__integration__/server-lifecycle.test.ts +4 -5
  101. package/lib/server/__integration__/ssr-rendering.test.ts +47 -37
  102. package/lib/server/__integration__/static-assets.test.ts +3 -3
  103. package/lib/server/__integration__/test-helpers.ts +87 -74
  104. package/lib/server/ab/generateFunctions.ts +12 -10
  105. package/lib/server/astro/cmsPageEmitter.ts +26 -42
  106. package/lib/server/astro/componentEmitter.ts +35 -43
  107. package/lib/server/astro/cssCollector.ts +10 -26
  108. package/lib/server/astro/nodeToAstro.test.ts +1754 -34
  109. package/lib/server/astro/nodeToAstro.ts +232 -216
  110. package/lib/server/astro/normalizeOrphanTemplateProps.test.ts +115 -119
  111. package/lib/server/astro/normalizeOrphanTemplateProps.ts +11 -18
  112. package/lib/server/astro/pageEmitter.ts +9 -13
  113. package/lib/server/astro/tailwindMapper.test.ts +10 -37
  114. package/lib/server/astro/tailwindMapper.ts +33 -40
  115. package/lib/server/astro/templateTransformer.ts +17 -20
  116. package/lib/server/createServer.ts +7 -19
  117. package/lib/server/cssGenerator.test.ts +35 -44
  118. package/lib/server/cssGenerator.ts +8 -19
  119. package/lib/server/fileWatcher.test.ts +164 -13
  120. package/lib/server/fileWatcher.ts +209 -124
  121. package/lib/server/index.ts +14 -17
  122. package/lib/server/jsonLoader.test.ts +39 -2
  123. package/lib/server/jsonLoader.ts +39 -34
  124. package/lib/server/middleware/cors.test.ts +21 -21
  125. package/lib/server/middleware/cors.ts +28 -4
  126. package/lib/server/middleware/errorHandler.test.ts +7 -5
  127. package/lib/server/middleware/errorHandler.ts +3 -8
  128. package/lib/server/middleware/index.ts +0 -1
  129. package/lib/server/middleware/logger.test.ts +10 -8
  130. package/lib/server/middleware/logger.ts +17 -29
  131. package/lib/server/migrateTemplates.ts +3 -3
  132. package/lib/server/pageCache.test.ts +76 -77
  133. package/lib/server/pageCache.ts +0 -1
  134. package/lib/server/projectContext.ts +5 -4
  135. package/lib/server/providers/fileSystemCMSProvider.test.ts +142 -99
  136. package/lib/server/providers/fileSystemCMSProvider.ts +62 -38
  137. package/lib/server/routes/api/cms.test.ts +26 -14
  138. package/lib/server/routes/api/cms.ts +9 -14
  139. package/lib/server/routes/api/colors.test.ts +2 -2
  140. package/lib/server/routes/api/components.ts +31 -35
  141. package/lib/server/routes/api/config.ts +3 -4
  142. package/lib/server/routes/api/core-routes.ts +49 -76
  143. package/lib/server/routes/api/enums.test.ts +2 -2
  144. package/lib/server/routes/api/functions.ts +9 -17
  145. package/lib/server/routes/api/index.ts +3 -6
  146. package/lib/server/routes/api/pages.ts +8 -11
  147. package/lib/server/routes/api/shared.test.ts +1 -1
  148. package/lib/server/routes/api/shared.ts +12 -9
  149. package/lib/server/routes/api/variables.test.ts +3 -5
  150. package/lib/server/routes/api/variables.ts +1 -1
  151. package/lib/server/routes/index.ts +25 -28
  152. package/lib/server/routes/pages.ts +35 -31
  153. package/lib/server/routes/static.ts +17 -6
  154. package/lib/server/runtime/bundler.ts +98 -61
  155. package/lib/server/runtime/fs.ts +16 -26
  156. package/lib/server/runtime/httpServer.ts +8 -12
  157. package/lib/server/services/ColorService.test.ts +3 -3
  158. package/lib/server/services/ColorService.ts +37 -29
  159. package/lib/server/services/EnumService.test.ts +4 -8
  160. package/lib/server/services/EnumService.ts +11 -3
  161. package/lib/server/services/VariableService.test.ts +8 -12
  162. package/lib/server/services/VariableService.ts +11 -3
  163. package/lib/server/services/cmsService.test.ts +158 -120
  164. package/lib/server/services/cmsService.ts +36 -146
  165. package/lib/server/services/componentService.test.ts +125 -45
  166. package/lib/server/services/componentService.ts +70 -46
  167. package/lib/server/services/configService.test.ts +22 -45
  168. package/lib/server/services/configService.ts +50 -27
  169. package/lib/server/services/fileWatcherService.ts +42 -8
  170. package/lib/server/services/index.ts +0 -1
  171. package/lib/server/services/pageService.test.ts +8 -10
  172. package/lib/server/services/pageService.ts +32 -18
  173. package/lib/server/ssr/attributeBuilder.ts +18 -8
  174. package/lib/server/ssr/buildErrorOverlay.ts +11 -12
  175. package/lib/server/ssr/clientDataInjector.ts +7 -21
  176. package/lib/server/ssr/cmsSSRProcessor.ts +4 -8
  177. package/lib/server/ssr/cssCollector.ts +1 -1
  178. package/lib/server/ssr/errorOverlay.test.ts +1 -1
  179. package/lib/server/ssr/errorOverlay.ts +3 -9
  180. package/lib/server/ssr/htmlGenerator.nonce.test.ts +9 -14
  181. package/lib/server/ssr/htmlGenerator.test.ts +120 -44
  182. package/lib/server/ssr/htmlGenerator.ts +126 -91
  183. package/lib/server/ssr/imageMetadata.test.ts +3 -1
  184. package/lib/server/ssr/imageMetadata.ts +27 -21
  185. package/lib/server/ssr/jsCollector.test.ts +8 -18
  186. package/lib/server/ssr/jsCollector.ts +3 -8
  187. package/lib/server/ssr/liveReloadIntegration.test.ts +76 -36
  188. package/lib/server/ssr/metaTagGenerator.ts +2 -2
  189. package/lib/server/ssr/ssrRenderer.branches.test.ts +1103 -0
  190. package/lib/server/ssr/ssrRenderer.test.ts +316 -256
  191. package/lib/server/ssr/ssrRenderer.ts +795 -243
  192. package/lib/server/ssrRenderer.test.ts +1048 -954
  193. package/lib/server/utils/jsonLineMapper.test.ts +28 -28
  194. package/lib/server/utils/jsonLineMapper.ts +7 -7
  195. package/lib/server/validateStyleCoverage.ts +18 -21
  196. package/lib/server/websocketManager.ts +28 -19
  197. package/lib/shared/attributeNodeUtils.test.ts +15 -15
  198. package/lib/shared/attributeNodeUtils.ts +5 -12
  199. package/lib/shared/breakpoints.test.ts +5 -5
  200. package/lib/shared/breakpoints.ts +4 -11
  201. package/lib/shared/cmsQuery.test.ts +81 -0
  202. package/lib/shared/cmsQuery.ts +92 -0
  203. package/lib/shared/cmsQueryParser.test.ts +50 -42
  204. package/lib/shared/cmsQueryParser.ts +60 -38
  205. package/lib/shared/colorConversions.ts +9 -9
  206. package/lib/shared/colorVariableUtils.test.ts +27 -5
  207. package/lib/shared/colorVariableUtils.ts +21 -12
  208. package/lib/shared/componentRefs.ts +1 -5
  209. package/lib/shared/constants.test.ts +3 -3
  210. package/lib/shared/constants.ts +8 -8
  211. package/lib/shared/cssGeneration.test.ts +285 -144
  212. package/lib/shared/cssGeneration.ts +217 -531
  213. package/lib/shared/cssNamedColors.ts +152 -30
  214. package/lib/shared/cssProperties.test.ts +69 -70
  215. package/lib/shared/cssProperties.ts +298 -114
  216. package/lib/shared/elementClassName.test.ts +109 -109
  217. package/lib/shared/elementClassName.ts +3 -3
  218. package/lib/shared/elementUtils.ts +12 -16
  219. package/lib/shared/errorLogger.test.ts +12 -12
  220. package/lib/shared/errorLogger.ts +2 -10
  221. package/lib/shared/errors.test.ts +2 -13
  222. package/lib/shared/errors.ts +2 -8
  223. package/lib/shared/expressionEvaluator.test.ts +145 -0
  224. package/lib/shared/expressionEvaluator.ts +52 -24
  225. package/lib/shared/fontLoader.test.ts +32 -18
  226. package/lib/shared/fontLoader.ts +2 -2
  227. package/lib/shared/friendlyError.ts +2 -3
  228. package/lib/shared/gradientUtils.test.ts +3 -7
  229. package/lib/shared/gradientUtils.ts +17 -14
  230. package/lib/shared/hrefRefs.test.ts +2 -2
  231. package/lib/shared/hrefRefs.ts +2 -10
  232. package/lib/shared/i18n.test.ts +4 -4
  233. package/lib/shared/i18n.ts +18 -38
  234. package/lib/shared/index.ts +27 -0
  235. package/lib/shared/inlineSvgStyleRules.ts +14 -13
  236. package/lib/shared/interactiveStyleMappings.test.ts +32 -54
  237. package/lib/shared/interactiveStyleMappings.ts +11 -24
  238. package/lib/shared/interactiveStyles.test.ts +165 -188
  239. package/lib/shared/interfaces/contentProvider.ts +1 -1
  240. package/lib/shared/itemTemplateUtils.test.ts +11 -17
  241. package/lib/shared/itemTemplateUtils.ts +27 -39
  242. package/lib/shared/jsonRepair.ts +16 -10
  243. package/lib/shared/libraryLoader.test.ts +21 -55
  244. package/lib/shared/libraryLoader.ts +7 -22
  245. package/lib/shared/linkUtils.ts +1 -1
  246. package/lib/shared/logger.test.ts +66 -0
  247. package/lib/shared/logger.ts +94 -0
  248. package/lib/shared/markdown.ts +25 -0
  249. package/lib/shared/netlifyLocale404.test.ts +179 -0
  250. package/lib/shared/netlifyLocale404.ts +110 -0
  251. package/lib/shared/nodeUtils.test.ts +28 -16
  252. package/lib/shared/nodeUtils.ts +76 -23
  253. package/lib/shared/pathArrayUtils.test.ts +1 -2
  254. package/lib/shared/pathArrayUtils.ts +1 -1
  255. package/lib/shared/pathSecurity.ts +2 -2
  256. package/lib/shared/pathUtils.test.ts +4 -6
  257. package/lib/shared/pathUtils.ts +42 -49
  258. package/lib/shared/paths/Path.test.ts +2 -2
  259. package/lib/shared/paths/Path.ts +0 -1
  260. package/lib/shared/paths/PathConverter.test.ts +1 -1
  261. package/lib/shared/paths/PathConverter.ts +17 -20
  262. package/lib/shared/paths/PathUtils.ts +13 -13
  263. package/lib/shared/paths/PathValidator.test.ts +2 -15
  264. package/lib/shared/paths/PathValidator.ts +12 -10
  265. package/lib/shared/paths/index.ts +1 -2
  266. package/lib/shared/permissions.test.ts +168 -0
  267. package/lib/shared/permissions.ts +162 -0
  268. package/lib/shared/propResolver.test.ts +240 -244
  269. package/lib/shared/propResolver.ts +15 -26
  270. package/lib/shared/pxToRem.test.ts +7 -6
  271. package/lib/shared/pxToRem.ts +2 -5
  272. package/lib/shared/registry/BaseNodeTypeRegistry.test.ts +12 -6
  273. package/lib/shared/registry/ClientRegistry.ts +0 -2
  274. package/lib/shared/registry/ComponentRegistry.test.ts +46 -32
  275. package/lib/shared/registry/ComponentRegistry.ts +12 -9
  276. package/lib/shared/registry/NodeTypeDefinition.ts +16 -9
  277. package/lib/shared/registry/RegistryManager.ts +1 -2
  278. package/lib/shared/registry/SSRRegistry.ts +0 -2
  279. package/lib/shared/registry/createNodeType.ts +7 -9
  280. package/lib/shared/registry/defineNodeType.ts +2 -6
  281. package/lib/shared/registry/fieldPresets.ts +3 -1
  282. package/lib/shared/registry/index.ts +0 -1
  283. package/lib/shared/registry/nodeTypes/ComponentInstanceNodeType.ts +14 -15
  284. package/lib/shared/registry/nodeTypes/CustomNodeType.ts +103 -0
  285. package/lib/shared/registry/nodeTypes/EmbedNodeType.ts +18 -11
  286. package/lib/shared/registry/nodeTypes/HtmlNodeType.ts +48 -19
  287. package/lib/shared/registry/nodeTypes/IslandNodeType.ts +129 -0
  288. package/lib/shared/registry/nodeTypes/LinkNodeType.ts +21 -19
  289. package/lib/shared/registry/nodeTypes/ListNodeType.ts +117 -77
  290. package/lib/shared/registry/nodeTypes/LocaleListNodeType.ts +27 -21
  291. package/lib/shared/registry/nodeTypes/MarkdownNodeType.ts +78 -0
  292. package/lib/shared/registry/nodeTypes/SlotMarkerType.ts +12 -8
  293. package/lib/shared/registry/nodeTypes/index.ts +26 -3
  294. package/lib/shared/responsiveScaling.test.ts +16 -34
  295. package/lib/shared/responsiveScaling.ts +61 -42
  296. package/lib/shared/responsiveStyleUtils.test.ts +0 -1
  297. package/lib/shared/responsiveStyleUtils.ts +11 -13
  298. package/lib/shared/richtext/htmlToTiptap.test.ts +139 -130
  299. package/lib/shared/richtext/htmlToTiptap.ts +2 -4
  300. package/lib/shared/richtext/tiptapToHtml.test.ts +5 -6
  301. package/lib/shared/richtext/types.ts +1 -8
  302. package/lib/shared/slugTranslator.test.ts +13 -13
  303. package/lib/shared/slugTranslator.ts +12 -16
  304. package/lib/shared/slugify.ts +9 -15
  305. package/lib/shared/styleNodeUtils.test.ts +8 -8
  306. package/lib/shared/styleNodeUtils.ts +18 -20
  307. package/lib/shared/styleUtils.test.ts +87 -61
  308. package/lib/shared/styleUtils.ts +5 -6
  309. package/lib/shared/themeDefaults.test.ts +11 -14
  310. package/lib/shared/themeDefaults.ts +3 -4
  311. package/lib/shared/tree/PathBuilder.test.ts +63 -145
  312. package/lib/shared/tree/PathBuilder.ts +59 -47
  313. package/lib/shared/treePathUtils.test.ts +51 -12
  314. package/lib/shared/treePathUtils.ts +91 -60
  315. package/lib/shared/types/api.ts +105 -8
  316. package/lib/shared/types/cms.test.ts +34 -0
  317. package/lib/shared/types/cms.ts +90 -34
  318. package/lib/shared/types/comment.ts +49 -16
  319. package/lib/shared/types/components.ts +51 -25
  320. package/lib/shared/types/errors.test.ts +1 -6
  321. package/lib/shared/types/errors.ts +3 -7
  322. package/lib/shared/types/experiments.ts +28 -28
  323. package/lib/shared/types/index.ts +25 -2
  324. package/lib/shared/types/permissions.ts +139 -0
  325. package/lib/shared/types/styles.ts +0 -1
  326. package/lib/shared/types/variables.test.ts +4 -13
  327. package/lib/shared/types/variables.ts +51 -30
  328. package/lib/shared/types.ts +1 -2
  329. package/lib/shared/utilityClassConfig.ts +751 -321
  330. package/lib/shared/utilityClassMapper.durability.test.ts +117 -0
  331. package/lib/shared/utilityClassMapper.test.ts +433 -95
  332. package/lib/shared/utilityClassMapper.ts +322 -249
  333. package/lib/shared/utilityClassNames.test.ts +38 -0
  334. package/lib/shared/utilityClassNames.ts +458 -0
  335. package/lib/shared/utils.test.ts +2 -10
  336. package/lib/shared/utils.ts +19 -10
  337. package/lib/shared/validation/cmsValidators.ts +2 -1
  338. package/lib/shared/validation/commentValidators.test.ts +53 -0
  339. package/lib/shared/validation/commentValidators.ts +12 -1
  340. package/lib/shared/validation/index.ts +1 -0
  341. package/lib/shared/validation/permissionsValidators.test.ts +49 -0
  342. package/lib/shared/validation/permissionsValidators.ts +49 -0
  343. package/lib/shared/validation/propValidator.test.ts +19 -21
  344. package/lib/shared/validation/propValidator.ts +13 -18
  345. package/lib/shared/validation/schemas.test.ts +64 -32
  346. package/lib/shared/validation/schemas.ts +616 -345
  347. package/lib/shared/validation/validators.test.ts +3 -8
  348. package/lib/shared/validation/validators.ts +89 -68
  349. package/lib/shared/viewportUnits.integration.test.ts +14 -10
  350. package/lib/shared/viewportUnits.test.ts +24 -23
  351. package/lib/shared/viewportUnits.ts +12 -5
  352. package/lib/test-utils/dom-setup.ts +1 -1
  353. package/lib/test-utils/factories/ConsoleMockFactory.ts +10 -14
  354. package/lib/test-utils/factories/DomMockFactory.ts +17 -23
  355. package/lib/test-utils/factories/EventMockFactory.ts +7 -13
  356. package/lib/test-utils/factories/FetchMockFactory.ts +39 -57
  357. package/lib/test-utils/factories/ServerMockFactory.ts +6 -10
  358. package/lib/test-utils/factories/StoreMockFactory.ts +18 -29
  359. package/lib/test-utils/fixtures.ts +45 -45
  360. package/lib/test-utils/helpers/asyncHelpers.test.ts +15 -18
  361. package/lib/test-utils/helpers/asyncHelpers.ts +11 -20
  362. package/lib/test-utils/helpers.ts +1 -5
  363. package/lib/test-utils/index.ts +0 -4
  364. package/lib/test-utils/mockFactories.ts +13 -19
  365. package/lib/test-utils/mocks.ts +6 -4
  366. package/package.json +3 -5
  367. package/scripts/build-for-publish.mjs +2 -4
  368. package/scripts/build-meno-filter.ts +4 -7
  369. package/tsconfig.json +1 -0
  370. package/vite.config.ts +4 -4
  371. package/build-next.ts +0 -1361
  372. package/build-static.test.ts +0 -424
  373. package/build-static.ts +0 -1074
  374. package/dist/build-static.js +0 -36
  375. package/dist/chunks/chunk-2MHDV5BF.js +0 -251
  376. package/dist/chunks/chunk-2MHDV5BF.js.map +0 -7
  377. package/dist/chunks/chunk-AZQYF6KE.js +0 -559
  378. package/dist/chunks/chunk-AZQYF6KE.js.map +0 -7
  379. package/dist/chunks/chunk-GZHGVVW3.js +0 -322
  380. package/dist/chunks/chunk-GZHGVVW3.js.map +0 -7
  381. package/dist/chunks/chunk-H3GJ4H2U.js.map +0 -7
  382. package/dist/chunks/chunk-I7YIGZXT.js +0 -467
  383. package/dist/chunks/chunk-I7YIGZXT.js.map +0 -7
  384. package/dist/chunks/chunk-IGYR22T6.js +0 -6192
  385. package/dist/chunks/chunk-IGYR22T6.js.map +0 -7
  386. package/dist/chunks/chunk-JGP5A3Y5.js +0 -1136
  387. package/dist/chunks/chunk-JGP5A3Y5.js.map +0 -7
  388. package/dist/chunks/chunk-JGWFTO6P.js.map +0 -7
  389. package/dist/chunks/chunk-O3NAGJP4.js.map +0 -7
  390. package/dist/chunks/chunk-QB2LNO4W.js +0 -77
  391. package/dist/chunks/chunk-QB2LNO4W.js.map +0 -7
  392. package/dist/chunks/chunk-R6XHAFBF.js +0 -3821
  393. package/dist/chunks/chunk-R6XHAFBF.js.map +0 -7
  394. package/dist/chunks/chunk-UB44F4Z2.js.map +0 -7
  395. package/dist/chunks/chunk-WQFG7PAH.js.map +0 -7
  396. package/dist/chunks/chunk-X754AHS5.js.map +0 -7
  397. package/dist/chunks/chunk-YBLHKYFF.js.map +0 -7
  398. package/dist/chunks/configService-R3OGU2UD.js +0 -13
  399. package/dist/chunks/configService-R3OGU2UD.js.map +0 -7
  400. package/dist/chunks/constants-STK2YBIW.js +0 -46
  401. package/dist/chunks/constants-STK2YBIW.js.map +0 -7
  402. package/dist/chunks/fs-JGINUXGL.js.map +0 -7
  403. package/dist/entries/server-router.js +0 -67
  404. package/dist/entries/server-router.js.map +0 -7
  405. package/entries/server-router.tsx +0 -81
  406. package/lib/server/providers/fileSystemPageProvider.ts +0 -160
  407. package/lib/server/webflow/buildWebflow.ts +0 -635
  408. package/lib/server/webflow/index.ts +0 -23
  409. package/lib/server/webflow/nodeToWebflow.test.ts +0 -3170
  410. package/lib/server/webflow/nodeToWebflow.ts +0 -2435
  411. package/lib/server/webflow/styleMapper.test.ts +0 -389
  412. package/lib/server/webflow/styleMapper.ts +0 -695
  413. package/lib/server/webflow/templateWrapper.ts +0 -49
  414. package/lib/server/webflow/types.ts +0 -396
  415. /package/dist/{build-static.js.map → chunks/fs-G3ANWEFP.js.map} +0 -0
@@ -1,136 +1,135 @@
1
- import { test, expect, describe, beforeEach } from "bun:test";
2
- import { ComponentRegistry } from "./componentRegistry";
3
- import type { ComponentDefinition, ComponentNode, PropDefinition } from "../shared/types";
1
+ import { test, expect, describe, beforeEach } from 'bun:test';
2
+ import { ComponentRegistry } from './componentRegistry';
3
+ import type { ComponentDefinition, ComponentNode, PropDefinition } from '../shared/types';
4
4
 
5
5
  /**
6
6
  * Helper function to create a valid ComponentDefinition for tests
7
7
  */
8
8
  function createTestComponentDef(
9
9
  structure?: ComponentNode,
10
- componentInterface?: Record<string, PropDefinition>
10
+ componentInterface?: Record<string, PropDefinition>,
11
11
  ): ComponentDefinition {
12
12
  return {
13
13
  component: {
14
14
  interface: componentInterface || {},
15
- structure: structure || { type: "node" as const, tag: "div", children: [] }
16
- }
15
+ structure: structure || { type: 'node' as const, tag: 'div', children: [] },
16
+ },
17
17
  };
18
18
  }
19
19
 
20
- describe("ComponentRegistry", () => {
20
+ describe('ComponentRegistry', () => {
21
21
  let registry: ComponentRegistry;
22
22
 
23
23
  beforeEach(() => {
24
24
  registry = new ComponentRegistry();
25
25
  });
26
26
 
27
- describe("register and get", () => {
28
- test("should register and retrieve a component", () => {
29
- const buttonDef = createTestComponentDef(
30
- { type: "node" as const, tag: "button", children: [], attributes: { className: "btn" } }
31
- );
27
+ describe('register and get', () => {
28
+ test('should register and retrieve a component', () => {
29
+ const buttonDef = createTestComponentDef({
30
+ type: 'node' as const,
31
+ tag: 'button',
32
+ children: [],
33
+ attributes: { className: 'btn' },
34
+ });
32
35
 
33
- registry.register("Button", buttonDef);
34
- const retrieved = registry.get("Button");
36
+ registry.register('Button', buttonDef);
37
+ const retrieved = registry.get('Button');
35
38
 
36
39
  expect(retrieved).toEqual(buttonDef);
37
40
  });
38
41
 
39
- test("should return undefined for non-existent component", () => {
40
- const result = registry.get("NonExistent");
42
+ test('should return undefined for non-existent component', () => {
43
+ const result = registry.get('NonExistent');
41
44
  expect(result).toBeUndefined();
42
45
  });
43
46
 
44
- test("should overwrite existing component with same name", () => {
45
- registry.register("Button", createTestComponentDef(
46
- { type: "node" as const, tag: "button", children: [], attributes: { color: "red" } }
47
- ));
48
- registry.register("Button", createTestComponentDef(
49
- { type: "node" as const, tag: "button", children: [], attributes: { color: "blue" } }
50
- ));
47
+ test('should overwrite existing component with same name', () => {
48
+ registry.register(
49
+ 'Button',
50
+ createTestComponentDef({ type: 'node' as const, tag: 'button', children: [], attributes: { color: 'red' } }),
51
+ );
52
+ registry.register(
53
+ 'Button',
54
+ createTestComponentDef({ type: 'node' as const, tag: 'button', children: [], attributes: { color: 'blue' } }),
55
+ );
51
56
 
52
- const result = registry.get("Button");
57
+ const result = registry.get('Button');
53
58
  const structure = result?.component?.structure;
54
- const attributes = structure && 'attributes' in structure ? structure.attributes as Record<string, unknown> : undefined;
55
- expect(attributes?.color).toBe("blue");
59
+ const attributes =
60
+ structure && 'attributes' in structure ? (structure.attributes as Record<string, unknown>) : undefined;
61
+ expect(attributes?.color).toBe('blue');
56
62
  });
57
63
  });
58
64
 
59
- describe("has", () => {
60
- test("should return true for registered component", () => {
61
- registry.register("Card", createTestComponentDef(
62
- { type: "node" as const, tag: "div", children: [] }
63
- ));
64
- expect(registry.has("Card")).toBe(true);
65
+ describe('has', () => {
66
+ test('should return true for registered component', () => {
67
+ registry.register('Card', createTestComponentDef({ type: 'node' as const, tag: 'div', children: [] }));
68
+ expect(registry.has('Card')).toBe(true);
65
69
  });
66
70
 
67
- test("should return false for non-existent component", () => {
68
- expect(registry.has("NonExistent")).toBe(false);
71
+ test('should return false for non-existent component', () => {
72
+ expect(registry.has('NonExistent')).toBe(false);
69
73
  });
70
74
  });
71
75
 
72
- describe("clear", () => {
73
- test("should clear all components", () => {
74
- registry.register("Button", createTestComponentDef(
75
- { type: "node" as const, tag: "button", children: [] }
76
- ));
77
- registry.register("Card", createTestComponentDef(
78
- { type: "node" as const, tag: "div", children: [] }
79
- ));
76
+ describe('clear', () => {
77
+ test('should clear all components', () => {
78
+ registry.register('Button', createTestComponentDef({ type: 'node' as const, tag: 'button', children: [] }));
79
+ registry.register('Card', createTestComponentDef({ type: 'node' as const, tag: 'div', children: [] }));
80
80
 
81
81
  expect(registry.getNames().length).toBe(2);
82
82
 
83
83
  registry.clear();
84
84
 
85
85
  expect(registry.getNames().length).toBe(0);
86
- expect(registry.has("Button")).toBe(false);
87
- expect(registry.has("Card")).toBe(false);
86
+ expect(registry.has('Button')).toBe(false);
87
+ expect(registry.has('Card')).toBe(false);
88
88
  });
89
89
  });
90
90
 
91
- describe("merge", () => {
92
- test("should merge multiple components", () => {
93
- registry.register("Button", createTestComponentDef(
94
- { type: "node" as const, tag: "button", children: [] }
95
- ));
91
+ describe('merge', () => {
92
+ test('should merge multiple components', () => {
93
+ registry.register('Button', createTestComponentDef({ type: 'node' as const, tag: 'button', children: [] }));
96
94
 
97
95
  registry.merge({
98
- Card: createTestComponentDef({ type: "node" as const, tag: "div", children: [] }),
99
- Link: createTestComponentDef({ type: "node" as const, tag: "a", children: [] })
96
+ Card: createTestComponentDef({ type: 'node' as const, tag: 'div', children: [] }),
97
+ Link: createTestComponentDef({ type: 'node' as const, tag: 'a', children: [] }),
100
98
  });
101
99
 
102
100
  expect(registry.getNames().length).toBe(3);
103
- expect(registry.has("Button")).toBe(true);
104
- expect(registry.has("Card")).toBe(true);
105
- expect(registry.has("Link")).toBe(true);
101
+ expect(registry.has('Button')).toBe(true);
102
+ expect(registry.has('Card')).toBe(true);
103
+ expect(registry.has('Link')).toBe(true);
106
104
  });
107
105
 
108
- test("should overwrite existing components when merging", () => {
109
- registry.register("Button", createTestComponentDef(
110
- { type: "node" as const, tag: "button", children: [], attributes: { color: "red" } }
111
- ));
106
+ test('should overwrite existing components when merging', () => {
107
+ registry.register(
108
+ 'Button',
109
+ createTestComponentDef({ type: 'node' as const, tag: 'button', children: [], attributes: { color: 'red' } }),
110
+ );
112
111
 
113
112
  registry.merge({
114
- Button: createTestComponentDef(
115
- { type: "node" as const, tag: "button", children: [], attributes: { color: "blue" } }
116
- )
113
+ Button: createTestComponentDef({
114
+ type: 'node' as const,
115
+ tag: 'button',
116
+ children: [],
117
+ attributes: { color: 'blue' },
118
+ }),
117
119
  });
118
120
 
119
- const button = registry.get("Button");
121
+ const button = registry.get('Button');
120
122
  const structure = button?.component?.structure;
121
- const attributes = structure && 'attributes' in structure ? structure.attributes as Record<string, unknown> : undefined;
122
- expect(attributes?.color).toBe("blue");
123
+ const attributes =
124
+ structure && 'attributes' in structure ? (structure.attributes as Record<string, unknown>) : undefined;
125
+ expect(attributes?.color).toBe('blue');
123
126
  });
124
127
  });
125
128
 
126
- describe("getAll", () => {
127
- test("should return all registered components", () => {
128
- registry.register("Button", createTestComponentDef(
129
- { type: "node" as const, tag: "button", children: [] }
130
- ));
131
- registry.register("Card", createTestComponentDef(
132
- { type: "node" as const, tag: "div", children: [] }
133
- ));
129
+ describe('getAll', () => {
130
+ test('should return all registered components', () => {
131
+ registry.register('Button', createTestComponentDef({ type: 'node' as const, tag: 'button', children: [] }));
132
+ registry.register('Card', createTestComponentDef({ type: 'node' as const, tag: 'div', children: [] }));
134
133
 
135
134
  const all = registry.getAll();
136
135
 
@@ -139,73 +138,62 @@ describe("ComponentRegistry", () => {
139
138
  expect(all.Card).toBeDefined();
140
139
  });
141
140
 
142
- test("should return a copy, not the original registry", () => {
143
- registry.register("Button", createTestComponentDef(
144
- { type: "node" as const, tag: "button", children: [] }
145
- ));
141
+ test('should return a copy, not the original registry', () => {
142
+ registry.register('Button', createTestComponentDef({ type: 'node' as const, tag: 'button', children: [] }));
146
143
 
147
144
  const all = registry.getAll();
148
- all.NewComponent = createTestComponentDef(
149
- { type: "node" as const, tag: "span", children: [] }
150
- );
145
+ all.NewComponent = createTestComponentDef({ type: 'node' as const, tag: 'span', children: [] });
151
146
 
152
- expect(registry.has("NewComponent")).toBe(false);
147
+ expect(registry.has('NewComponent')).toBe(false);
153
148
  });
154
149
  });
155
150
 
156
- describe("getNames", () => {
157
- test("should return list of component names", () => {
158
- registry.register("Button", createTestComponentDef(
159
- { type: "node" as const, tag: "button", children: [] }
160
- ));
161
- registry.register("Card", createTestComponentDef(
162
- { type: "node" as const, tag: "div", children: [] }
163
- ));
151
+ describe('getNames', () => {
152
+ test('should return list of component names', () => {
153
+ registry.register('Button', createTestComponentDef({ type: 'node' as const, tag: 'button', children: [] }));
154
+ registry.register('Card', createTestComponentDef({ type: 'node' as const, tag: 'div', children: [] }));
164
155
 
165
156
  const names = registry.getNames();
166
157
 
167
- expect(names).toEqual(["Button", "Card"]);
158
+ expect(names).toEqual(['Button', 'Card']);
168
159
  });
169
160
 
170
- test("should return empty array when no components", () => {
161
+ test('should return empty array when no components', () => {
171
162
  const names = registry.getNames();
172
163
  expect(names).toEqual([]);
173
164
  });
174
165
  });
175
166
 
176
- describe("remove", () => {
177
- test("should remove a component and return true", () => {
178
- registry.register("Button", createTestComponentDef(
179
- { type: "node" as const, tag: "button", children: [] }
180
- ));
167
+ describe('remove', () => {
168
+ test('should remove a component and return true', () => {
169
+ registry.register('Button', createTestComponentDef({ type: 'node' as const, tag: 'button', children: [] }));
181
170
 
182
- const result = registry.remove("Button");
171
+ const result = registry.remove('Button');
183
172
 
184
173
  expect(result).toBe(true);
185
- expect(registry.has("Button")).toBe(false);
174
+ expect(registry.has('Button')).toBe(false);
186
175
  });
187
176
 
188
- test("should return false when removing non-existent component", () => {
189
- const result = registry.remove("NonExistent");
177
+ test('should return false when removing non-existent component', () => {
178
+ const result = registry.remove('NonExistent');
190
179
  expect(result).toBe(false);
191
180
  });
192
181
  });
193
182
 
194
- describe("component with category", () => {
195
- test("should handle components with category definitions", () => {
183
+ describe('component with category', () => {
184
+ test('should handle components with category definitions', () => {
196
185
  const buttonDef: ComponentDefinition = {
197
186
  component: {
198
187
  interface: {},
199
- structure: { type: "node" as const, tag: "button", children: [] },
200
- category: "buttons"
201
- }
188
+ structure: { type: 'node' as const, tag: 'button', children: [] },
189
+ category: 'buttons',
190
+ },
202
191
  };
203
192
 
204
- registry.register("Button", buttonDef);
205
- const retrieved = registry.get("Button");
193
+ registry.register('Button', buttonDef);
194
+ const retrieved = registry.get('Button');
206
195
 
207
- expect(retrieved?.component?.category).toBe("buttons");
196
+ expect(retrieved?.component?.category).toBe('buttons');
208
197
  });
209
198
  });
210
199
  });
211
-
@@ -1,12 +1,11 @@
1
1
  /**
2
2
  * Component Registry
3
3
  * Manages registration and retrieval of custom components
4
- *
4
+ *
5
5
  * This now extends the base registry for consistency across client and SSR
6
6
  */
7
7
 
8
8
  import { BaseComponentRegistry } from '../shared/registry/ComponentRegistry';
9
- import type { ComponentDefinition } from '../shared/types';
10
9
 
11
10
  export class ComponentRegistry extends BaseComponentRegistry {
12
11
  // Client-specific methods can be added here
@@ -15,4 +14,3 @@ export class ComponentRegistry extends BaseComponentRegistry {
15
14
 
16
15
  // Export a singleton instance for convenience
17
16
  export const globalComponentRegistry = new ComponentRegistry();
18
-
@@ -3,7 +3,8 @@
3
3
  * Provides theme switching functionality to components
4
4
  */
5
5
 
6
- import React, { createContext, useContext, useState, useEffect } from 'react';
6
+ import type React from 'react';
7
+ import { createContext, useContext, useState, useEffect } from 'react';
7
8
  import { useThemes } from '../hooks/useColorVariables';
8
9
 
9
10
  interface ThemeContextType {
@@ -45,7 +46,7 @@ export function ThemeProvider({ children }: { children: React.ReactNode }) {
45
46
  root.setAttribute('theme', themeName);
46
47
  };
47
48
 
48
- const themeNames = themes?.map(theme => theme.name) || [];
49
+ const themeNames = themes?.map((theme) => theme.name) || [];
49
50
 
50
51
  return (
51
52
  <ThemeContext.Provider