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
@@ -3,12 +3,7 @@
3
3
  * Generates .astro files from StructuredComponentDefinitions
4
4
  */
5
5
 
6
- import type {
7
- ComponentDefinition,
8
- StructuredComponentDefinition,
9
- PropDefinition,
10
- } from '../../shared/types';
11
- import type { BasePropDefinition, ListPropDefinition, LinkPropValue } from '../../shared/types/components';
6
+ import type { ComponentDefinition, StructuredComponentDefinition, PropDefinition } from '../../shared/types';
12
7
  import type { BreakpointConfig } from '../../shared/breakpoints';
13
8
  import { DEFAULT_BREAKPOINTS } from '../../shared/breakpoints';
14
9
  import { nodeToAstro, type AstroEmitContext } from './nodeToAstro';
@@ -90,12 +85,16 @@ function mergeClassNameOntoRoot(template: string): string {
90
85
  const tagMatch = template.match(/^(\s*<)(\w[\w-]*)([\s\S]*?)(\/?>)/);
91
86
  if (!tagMatch) return template;
92
87
 
93
- const [fullMatch, prefix, tagName, attrs, close] = tagMatch;
88
+ const fullMatch = tagMatch[0];
89
+ const prefix = tagMatch[1] ?? '';
90
+ const tagName = tagMatch[2] ?? '';
91
+ const attrs = tagMatch[3] ?? '';
92
+ const close = tagMatch[4] ?? '';
94
93
 
95
94
  // Check for existing class:list
96
95
  const classListMatch = attrs.match(/\s+class:list=\{(\[[\s\S]*?\])\}/);
97
96
  if (classListMatch) {
98
- const existingList = classListMatch[1];
97
+ const existingList = classListMatch[1] ?? '';
99
98
  // Append className to the array
100
99
  const newList = existingList.replace(/\]$/, `, className]`);
101
100
  const newAttrs = attrs.replace(classListMatch[0], ` class:list={${newList}}`);
@@ -105,7 +104,7 @@ function mergeClassNameOntoRoot(template: string): string {
105
104
  // Check for existing class="..." (static)
106
105
  const classStaticMatch = attrs.match(/\s+class="([^"]*)"/);
107
106
  if (classStaticMatch) {
108
- const existing = classStaticMatch[1];
107
+ const existing = classStaticMatch[1] ?? '';
109
108
  const newAttrs = attrs.replace(classStaticMatch[0], ` class:list={["${existing}", className]}`);
110
109
  return prefix + tagName + newAttrs + close + template.slice(fullMatch.length);
111
110
  }
@@ -113,13 +112,13 @@ function mergeClassNameOntoRoot(template: string): string {
113
112
  // Check for existing class={expr} (dynamic)
114
113
  const classDynMatch = attrs.match(/\s+class=\{([^}]+)\}/);
115
114
  if (classDynMatch) {
116
- const expr = classDynMatch[1];
115
+ const expr = classDynMatch[1] ?? '';
117
116
  const newAttrs = attrs.replace(classDynMatch[0], ` class:list={[${expr}, className]}`);
118
117
  return prefix + tagName + newAttrs + close + template.slice(fullMatch.length);
119
118
  }
120
119
 
121
120
  // No existing class — add class={className}
122
- return prefix + tagName + ` class={className}` + attrs + close + template.slice(fullMatch.length);
121
+ return `${prefix + tagName} class={className}${attrs}${close}${template.slice(fullMatch.length)}`;
123
122
  }
124
123
 
125
124
  // ---------------------------------------------------------------------------
@@ -147,7 +146,7 @@ export function emitAstroComponent(
147
146
  defaultLocale: string = 'en',
148
147
  responsiveScales?: ResponsiveScales,
149
148
  remConfig?: RemConversionConfig,
150
- cmsOptions?: ComponentCmsOptions
149
+ cmsOptions?: ComponentCmsOptions,
151
150
  ): string {
152
151
  const comp = def.component;
153
152
  const propDefs = comp.interface || {};
@@ -208,21 +207,20 @@ export function emitAstroComponent(
208
207
  propDefs,
209
208
  ctx.imports,
210
209
  ctx.dynamicTags,
211
- (ctx.needsI18nResolver || isCmsConsumer) ? defaultLocale : undefined,
210
+ ctx.needsI18nResolver || isCmsConsumer ? defaultLocale : undefined,
212
211
  ctx.imageImports,
213
212
  ctx.astroImports,
214
213
  ctx.frontmatterLines,
215
- isCmsConsumer
214
+ isCmsConsumer,
216
215
  );
217
216
 
218
217
  // Build style/script sections
219
218
  const styleSection = comp.css ? `\n<style>\n${comp.css}\n</style>\n` : '';
220
- const interactiveStyleSection = ctx.collectedInteractiveStyles!.size > 0
221
- ? `\n<style is:global>\n${generateAllInteractiveCSS(ctx.collectedInteractiveStyles!, breakpoints, remConfig, responsiveScales)}\n</style>\n`
222
- : '';
223
- const scriptSection = comp.javascript
224
- ? buildScriptSection(comp.javascript, comp, propDefs)
225
- : '';
219
+ const interactiveStyleSection =
220
+ ctx.collectedInteractiveStyles!.size > 0
221
+ ? `\n<style is:global>\n${generateAllInteractiveCSS(ctx.collectedInteractiveStyles!, breakpoints, remConfig, responsiveScales)}\n</style>\n`
222
+ : '';
223
+ const scriptSection = comp.javascript ? buildScriptSection(comp.javascript, comp, propDefs) : '';
226
224
 
227
225
  return `---\n${frontmatter}---\n${templateBody}${styleSection}${interactiveStyleSection}${scriptSection}`;
228
226
  }
@@ -231,7 +229,7 @@ export function emitAstroComponent(
231
229
  * Build the frontmatter section (imports, Props interface, destructuring)
232
230
  */
233
231
  function buildFrontmatter(
234
- componentName: string,
232
+ _componentName: string,
235
233
  propDefs: Record<string, PropDefinition>,
236
234
  imports: Set<string>,
237
235
  dynamicTags?: Map<string, string>,
@@ -239,7 +237,7 @@ function buildFrontmatter(
239
237
  imageImports?: Map<string, string>,
240
238
  astroImports?: Set<string>,
241
239
  frontmatterLines?: string[],
242
- isCmsConsumer?: boolean
240
+ isCmsConsumer?: boolean,
243
241
  ): string {
244
242
  const lines: string[] = [];
245
243
 
@@ -332,7 +330,9 @@ function buildFrontmatter(
332
330
  lines.push(`const r = (v: any) => {`);
333
331
  lines.push(` if (v && typeof v === 'object' && v._i18n) {`);
334
332
  lines.push(` const locale = Astro.currentLocale ?? '${i18nDefaultLocale}';`);
335
- lines.push(` return v[locale] ?? v['${i18nDefaultLocale}'] ?? Object.values(v).find((s: any) => typeof s === 'string' && s !== '') ?? '';`);
333
+ lines.push(
334
+ ` return v[locale] ?? v['${i18nDefaultLocale}'] ?? Object.values(v).find((s: any) => typeof s === 'string' && s !== '') ?? '';`,
335
+ );
336
336
  lines.push(` }`);
337
337
  lines.push(` return v ?? '';`);
338
338
  lines.push(`};`);
@@ -352,10 +352,7 @@ function buildFrontmatter(
352
352
  /**
353
353
  * Build a component with no structure (CSS/JS only)
354
354
  */
355
- function buildNoStructureComponent(
356
- name: string,
357
- comp: StructuredComponentDefinition
358
- ): string {
355
+ function buildNoStructureComponent(_name: string, comp: StructuredComponentDefinition): string {
359
356
  let content = '---\n---\n<slot />\n';
360
357
  if (comp.css) content += `\n<style>\n${comp.css}\n</style>\n`;
361
358
  if (comp.javascript) content += `\n<script is:inline>\n${comp.javascript}\n</script>\n`;
@@ -374,14 +371,14 @@ function transformDefineVarsJS(js: string, varNames: string[]): string {
374
371
  let result = js;
375
372
 
376
373
  // 1. Remove destructuring from props: `const { x, y } = props;`
377
- result = result.replace(
378
- /^\s*(const|let|var)\s+\{([^}]+)\}\s*=\s*props\s*;?\s*$/gm,
379
- (match, _keyword, inner) => {
380
- const names = inner.split(',').map((s: string) => s.trim()).filter(Boolean);
381
- if (names.every((n: string) => varNames.includes(n))) return '';
382
- return match;
383
- }
384
- );
374
+ result = result.replace(/^\s*(const|let|var)\s+\{([^}]+)\}\s*=\s*props\s*;?\s*$/gm, (match, _keyword, inner) => {
375
+ const names = inner
376
+ .split(',')
377
+ .map((s: string) => s.trim())
378
+ .filter(Boolean);
379
+ if (names.every((n: string) => varNames.includes(n))) return '';
380
+ return match;
381
+ });
385
382
 
386
383
  // 2. Replace `props.X` with `X` (longest names first to avoid substring conflicts)
387
384
  const sorted = [...varNames].sort((a, b) => b.length - a.length);
@@ -391,10 +388,7 @@ function transformDefineVarsJS(js: string, varNames: string[]): string {
391
388
 
392
389
  // 3. Remove redeclarations of define:vars variables (already injected as const by Astro)
393
390
  for (const name of varNames) {
394
- result = result.replace(
395
- new RegExp(`^\\s*(var|let|const)\\s+${name}\\s*=[^;]*;?\\s*$`, 'gm'),
396
- ''
397
- );
391
+ result = result.replace(new RegExp(`^\\s*(var|let|const)\\s+${name}\\s*=[^;]*;?\\s*$`, 'gm'), '');
398
392
  }
399
393
 
400
394
  return result;
@@ -409,7 +403,7 @@ function transformDefineVarsJS(js: string, varNames: string[]): string {
409
403
  function buildScriptSection(
410
404
  js: string,
411
405
  comp: StructuredComponentDefinition,
412
- propDefs: Record<string, PropDefinition>
406
+ propDefs: Record<string, PropDefinition>,
413
407
  ): string {
414
408
  // Capture el immediately (document.currentScript is only valid during script execution)
415
409
  // but defer the component init until DOMContentLoaded so deferred libraries are ready
@@ -423,9 +417,7 @@ function buildScriptSection(
423
417
  `if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', __init__); } else { __init__(); }`;
424
418
 
425
419
  if (comp.defineVars) {
426
- const vars = comp.defineVars === true
427
- ? Object.keys(propDefs).filter(k => k !== 'children')
428
- : comp.defineVars;
420
+ const vars = comp.defineVars === true ? Object.keys(propDefs).filter((k) => k !== 'children') : comp.defineVars;
429
421
 
430
422
  if (vars.length > 0) {
431
423
  const transformedJS = transformDefineVarsJS(js, vars);
@@ -6,11 +6,7 @@
6
6
  */
7
7
 
8
8
  import type { ComponentDefinition, ComponentNode } from '../../shared/types';
9
- import type {
10
- StyleObject,
11
- ResponsiveStyleObject,
12
- StyleMapping,
13
- } from '../../shared/types/styles';
9
+ import type { StyleObject, ResponsiveStyleObject, StyleMapping } from '../../shared/types/styles';
14
10
  import type { BreakpointConfig } from '../../shared/breakpoints';
15
11
  import { DEFAULT_BREAKPOINTS } from '../../shared/breakpoints';
16
12
  import { propertyToTailwind } from './tailwindMapper';
@@ -23,16 +19,11 @@ import { getScaleMultiplier, scalePropertyValue } from '../../shared/responsiveS
23
19
 
24
20
  function isStyleMapping(value: unknown): value is StyleMapping {
25
21
  return (
26
- typeof value === 'object' &&
27
- value !== null &&
28
- '_mapping' in value &&
29
- (value as StyleMapping)._mapping === true
22
+ typeof value === 'object' && value !== null && '_mapping' in value && (value as StyleMapping)._mapping === true
30
23
  );
31
24
  }
32
25
 
33
- function isResponsiveStyle(
34
- style: StyleObject | ResponsiveStyleObject
35
- ): style is ResponsiveStyleObject {
26
+ function isResponsiveStyle(style: StyleObject | ResponsiveStyleObject): style is ResponsiveStyleObject {
36
27
  return 'base' in style || 'tablet' in style || 'mobile' in style;
37
28
  }
38
29
 
@@ -43,7 +34,7 @@ function collectFromStyle(
43
34
  style: StyleObject | ResponsiveStyleObject | undefined,
44
35
  classes: Set<string>,
45
36
  breakpoints: BreakpointConfig,
46
- responsiveScales?: ResponsiveScales
37
+ responsiveScales?: ResponsiveScales,
47
38
  ): void {
48
39
  if (!style) return;
49
40
 
@@ -72,20 +63,17 @@ function collectFromFlatStyle(
72
63
  classes: Set<string>,
73
64
  breakpoints: BreakpointConfig,
74
65
  responsiveScales?: ResponsiveScales,
75
- sourceBreakpoint?: string
66
+ sourceBreakpoint?: string,
76
67
  ): void {
77
68
  // Only auto-scale when mapping value lives in the base branch (or a flat
78
69
  // top-level style). Mappings inside an explicit breakpoint branch already
79
70
  // describe the override the author wants — don't re-scale them.
80
- const shouldAutoScale =
81
- responsiveScales?.enabled === true && sourceBreakpoint === undefined;
71
+ const shouldAutoScale = responsiveScales?.enabled === true && sourceBreakpoint === undefined;
82
72
 
83
73
  const scaleBreakpoints = shouldAutoScale
84
74
  ? Object.entries(breakpoints)
85
75
  .map(([name, cfg]) => ({ name, value: cfg?.breakpoint }))
86
- .filter((bp): bp is { name: string; value: number } =>
87
- typeof bp.value === 'number' && bp.value > 0
88
- )
76
+ .filter((bp): bp is { name: string; value: number } => typeof bp.value === 'number' && bp.value > 0)
89
77
  .sort((a, b) => b.value - a.value)
90
78
  : [];
91
79
 
@@ -107,11 +95,7 @@ function collectFromFlatStyle(
107
95
  const strValue = String(cssValue);
108
96
  if (strValue === '') continue;
109
97
  for (const { name: bpName, value: bpPixels } of scaleBreakpoints) {
110
- const scale = getScaleMultiplier(
111
- responsiveScales,
112
- property as CSSPropertyType,
113
- bpName
114
- );
98
+ const scale = getScaleMultiplier(responsiveScales, property as CSSPropertyType, bpName);
115
99
  if (scale == null) continue;
116
100
  const scaledValue = scalePropertyValue(strValue, baseRef, scale);
117
101
  if (scaledValue == null || scaledValue === strValue) continue;
@@ -131,7 +115,7 @@ function walkNode(
131
115
  node: ComponentNode | ComponentNode[] | string | number | null | undefined,
132
116
  classes: Set<string>,
133
117
  breakpoints: BreakpointConfig,
134
- responsiveScales?: ResponsiveScales
118
+ responsiveScales?: ResponsiveScales,
135
119
  ): void {
136
120
  if (!node || typeof node === 'string' || typeof node === 'number') return;
137
121
 
@@ -179,7 +163,7 @@ function walkNode(
179
163
  export function collectAllMappingClasses(
180
164
  componentDefs: Record<string, ComponentDefinition>,
181
165
  breakpoints: BreakpointConfig = DEFAULT_BREAKPOINTS,
182
- responsiveScales?: ResponsiveScales
166
+ responsiveScales?: ResponsiveScales,
183
167
  ): Set<string> {
184
168
  const classes = new Set<string>();
185
169