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
@@ -18,38 +18,31 @@ const DEFAULT_OPTIONS: LogOptions = {
18
18
  /**
19
19
  * Log a request
20
20
  */
21
- export function logRequest(
22
- req: Request,
23
- options: LogOptions = {}
24
- ): void {
21
+ export function logRequest(req: Request, options: LogOptions = {}): void {
25
22
  const opts = { ...DEFAULT_OPTIONS, ...options };
26
-
23
+
27
24
  if (!opts.logRequests) {
28
25
  return;
29
26
  }
30
27
 
31
- const url = new URL(req.url);
32
- const timestamp = new Date().toISOString();
28
+ const _url = new URL(req.url);
29
+ const _timestamp = new Date().toISOString();
33
30
  }
34
31
 
35
32
  /**
36
33
  * Log an error
37
34
  */
38
- export function logError(
39
- error: unknown,
40
- context?: string,
41
- options: LogOptions = {}
42
- ): void {
35
+ export function logError(error: unknown, context?: string, options: LogOptions = {}): void {
43
36
  const opts = { ...DEFAULT_OPTIONS, ...options };
44
-
37
+
45
38
  if (!opts.logErrors) {
46
39
  return;
47
40
  }
48
41
 
49
- const timestamp = new Date().toISOString();
50
- const contextStr = context ? ` [${context}]` : '';
51
- const errorMessage = error instanceof Error ? error.message : String(error);
52
-
42
+ const _timestamp = new Date().toISOString();
43
+ const _contextStr = context ? ` [${context}]` : '';
44
+ const _errorMessage = error instanceof Error ? error.message : String(error);
45
+
53
46
  if (error instanceof Error && error.stack) {
54
47
  }
55
48
  }
@@ -57,19 +50,15 @@ export function logError(
57
50
  /**
58
51
  * Log response time
59
52
  */
60
- export function logResponseTime(
61
- startTime: number,
62
- req: Request,
63
- options: LogOptions = {}
64
- ): void {
53
+ export function logResponseTime(startTime: number, req: Request, options: LogOptions = {}): void {
65
54
  const opts = { ...DEFAULT_OPTIONS, ...options };
66
-
55
+
67
56
  if (!opts.logResponseTime) {
68
57
  return;
69
58
  }
70
59
 
71
- const url = new URL(req.url);
72
- const duration = Date.now() - startTime;
60
+ const _url = new URL(req.url);
61
+ const _duration = Date.now() - startTime;
73
62
  }
74
63
 
75
64
  /**
@@ -77,14 +66,14 @@ export function logResponseTime(
77
66
  */
78
67
  export function withLogging<T extends unknown[]>(
79
68
  handler: (...args: T) => Promise<Response>,
80
- options: LogOptions = {}
69
+ options: LogOptions = {},
81
70
  ): (...args: T) => Promise<Response> {
82
71
  return async (...args: T) => {
83
72
  const startTime = Date.now();
84
73
  const req = args[0] as Request;
85
-
74
+
86
75
  logRequest(req, options);
87
-
76
+
88
77
  try {
89
78
  const response = await handler(...args);
90
79
  logResponseTime(startTime, req, options);
@@ -96,4 +85,3 @@ export function withLogging<T extends unknown[]>(
96
85
  }
97
86
  };
98
87
  }
99
-
@@ -1,6 +1,6 @@
1
- import { existsSync } from 'fs';
2
- import { rename } from 'fs/promises';
3
- import { join } from 'path';
1
+ import { existsSync } from 'node:fs';
2
+ import { rename } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
4
  import { projectPaths } from './projectContext';
5
5
 
6
6
  /**
@@ -1,167 +1,166 @@
1
- import { test, expect, describe, beforeEach } from "bun:test";
2
- import { PageCache } from "./pageCache";
3
- import type { LineMap } from "./utils/jsonLineMapper";
1
+ import { test, expect, describe, beforeEach } from 'bun:test';
2
+ import { PageCache } from './pageCache';
3
+ import type { LineMap } from './utils/jsonLineMapper';
4
4
 
5
5
  // Helper to create empty line map for tests
6
6
  const emptyLineMap = (): LineMap => new Map();
7
7
 
8
- describe("PageCache", () => {
8
+ describe('PageCache', () => {
9
9
  let cache: PageCache;
10
10
 
11
11
  beforeEach(() => {
12
12
  cache = new PageCache();
13
13
  });
14
14
 
15
- describe("set and get", () => {
16
- test("should store and retrieve page content", () => {
17
- cache.set("/", "home content", emptyLineMap());
18
- const result = cache.getContent("/");
15
+ describe('set and get', () => {
16
+ test('should store and retrieve page content', () => {
17
+ cache.set('/', 'home content', emptyLineMap());
18
+ const result = cache.getContent('/');
19
19
 
20
- expect(result).toBe("home content");
20
+ expect(result).toBe('home content');
21
21
  });
22
22
 
23
- test("should return undefined for non-existent page", () => {
24
- const result = cache.getContent("/nonexistent");
23
+ test('should return undefined for non-existent page', () => {
24
+ const result = cache.getContent('/nonexistent');
25
25
  expect(result).toBeUndefined();
26
26
  });
27
27
 
28
- test("should overwrite existing page content", () => {
29
- cache.set("/about", "old content", emptyLineMap());
30
- cache.set("/about", "new content", emptyLineMap());
28
+ test('should overwrite existing page content', () => {
29
+ cache.set('/about', 'old content', emptyLineMap());
30
+ cache.set('/about', 'new content', emptyLineMap());
31
31
 
32
- const result = cache.getContent("/about");
33
- expect(result).toBe("new content");
32
+ const result = cache.getContent('/about');
33
+ expect(result).toBe('new content');
34
34
  });
35
35
  });
36
36
 
37
- describe("has", () => {
38
- test("should return true for cached page", () => {
39
- cache.set("/about", "content", emptyLineMap());
40
- expect(cache.has("/about")).toBe(true);
37
+ describe('has', () => {
38
+ test('should return true for cached page', () => {
39
+ cache.set('/about', 'content', emptyLineMap());
40
+ expect(cache.has('/about')).toBe(true);
41
41
  });
42
42
 
43
- test("should return false for non-cached page", () => {
44
- expect(cache.has("/nonexistent")).toBe(false);
43
+ test('should return false for non-cached page', () => {
44
+ expect(cache.has('/nonexistent')).toBe(false);
45
45
  });
46
46
  });
47
47
 
48
- describe("delete", () => {
49
- test("should delete cached page", () => {
50
- cache.set("/temp", "content", emptyLineMap());
51
- expect(cache.has("/temp")).toBe(true);
48
+ describe('delete', () => {
49
+ test('should delete cached page', () => {
50
+ cache.set('/temp', 'content', emptyLineMap());
51
+ expect(cache.has('/temp')).toBe(true);
52
52
 
53
- cache.delete("/temp");
54
- expect(cache.has("/temp")).toBe(false);
53
+ cache.delete('/temp');
54
+ expect(cache.has('/temp')).toBe(false);
55
55
  });
56
56
 
57
- test("should not throw when deleting non-existent page", () => {
58
- expect(() => cache.delete("/nonexistent")).not.toThrow();
57
+ test('should not throw when deleting non-existent page', () => {
58
+ expect(() => cache.delete('/nonexistent')).not.toThrow();
59
59
  });
60
60
  });
61
61
 
62
- describe("keys", () => {
63
- test("should return all cached page paths", () => {
64
- cache.set("/", "home", emptyLineMap());
65
- cache.set("/about", "about", emptyLineMap());
66
- cache.set("/contact", "contact", emptyLineMap());
62
+ describe('keys', () => {
63
+ test('should return all cached page paths', () => {
64
+ cache.set('/', 'home', emptyLineMap());
65
+ cache.set('/about', 'about', emptyLineMap());
66
+ cache.set('/contact', 'contact', emptyLineMap());
67
67
 
68
68
  const keys = cache.keys();
69
69
 
70
70
  expect(keys.length).toBe(3);
71
- expect(keys).toContain("/");
72
- expect(keys).toContain("/about");
73
- expect(keys).toContain("/contact");
71
+ expect(keys).toContain('/');
72
+ expect(keys).toContain('/about');
73
+ expect(keys).toContain('/contact');
74
74
  });
75
75
 
76
- test("should return empty array when cache is empty", () => {
76
+ test('should return empty array when cache is empty', () => {
77
77
  const keys = cache.keys();
78
78
  expect(keys).toEqual([]);
79
79
  });
80
80
  });
81
81
 
82
- describe("clear", () => {
83
- test("should clear all cached pages", () => {
84
- cache.set("/", "home", emptyLineMap());
85
- cache.set("/about", "about", emptyLineMap());
82
+ describe('clear', () => {
83
+ test('should clear all cached pages', () => {
84
+ cache.set('/', 'home', emptyLineMap());
85
+ cache.set('/about', 'about', emptyLineMap());
86
86
 
87
87
  expect(cache.size()).toBe(2);
88
88
 
89
89
  cache.clear();
90
90
 
91
91
  expect(cache.size()).toBe(0);
92
- expect(cache.has("/")).toBe(false);
93
- expect(cache.has("/about")).toBe(false);
92
+ expect(cache.has('/')).toBe(false);
93
+ expect(cache.has('/about')).toBe(false);
94
94
  });
95
95
  });
96
96
 
97
- describe("size", () => {
98
- test("should return number of cached pages", () => {
97
+ describe('size', () => {
98
+ test('should return number of cached pages', () => {
99
99
  expect(cache.size()).toBe(0);
100
100
 
101
- cache.set("/", "home", emptyLineMap());
101
+ cache.set('/', 'home', emptyLineMap());
102
102
  expect(cache.size()).toBe(1);
103
103
 
104
- cache.set("/about", "about", emptyLineMap());
104
+ cache.set('/about', 'about', emptyLineMap());
105
105
  expect(cache.size()).toBe(2);
106
106
 
107
- cache.delete("/");
107
+ cache.delete('/');
108
108
  expect(cache.size()).toBe(1);
109
109
  });
110
110
  });
111
111
 
112
- describe("toObject", () => {
113
- test("should convert cache to object", () => {
114
- cache.set("/", "home content", emptyLineMap());
115
- cache.set("/about", "about content", emptyLineMap());
112
+ describe('toObject', () => {
113
+ test('should convert cache to object', () => {
114
+ cache.set('/', 'home content', emptyLineMap());
115
+ cache.set('/about', 'about content', emptyLineMap());
116
116
 
117
117
  const obj = cache.toObject();
118
118
 
119
- expect(obj["/"]).toBe("home content");
120
- expect(obj["/about"]).toBe("about content");
119
+ expect(obj['/']).toBe('home content');
120
+ expect(obj['/about']).toBe('about content');
121
121
  expect(Object.keys(obj).length).toBe(2);
122
122
  });
123
123
 
124
- test("should return empty object when cache is empty", () => {
124
+ test('should return empty object when cache is empty', () => {
125
125
  const obj = cache.toObject();
126
126
  expect(obj).toEqual({});
127
127
  });
128
128
  });
129
129
 
130
- describe("page path mapping", () => {
131
- test("should handle index page as root path", () => {
132
- cache.set("/", "home content", emptyLineMap());
133
- expect(cache.getContent("/")).toBe("home content");
130
+ describe('page path mapping', () => {
131
+ test('should handle index page as root path', () => {
132
+ cache.set('/', 'home content', emptyLineMap());
133
+ expect(cache.getContent('/')).toBe('home content');
134
134
  });
135
135
 
136
- test("should handle nested paths", () => {
137
- cache.set("/blog/post-1", "blog post content", emptyLineMap());
138
- expect(cache.getContent("/blog/post-1")).toBe("blog post content");
136
+ test('should handle nested paths', () => {
137
+ cache.set('/blog/post-1', 'blog post content', emptyLineMap());
138
+ expect(cache.getContent('/blog/post-1')).toBe('blog post content');
139
139
  });
140
140
  });
141
141
 
142
- describe("line map", () => {
143
- test("should store and retrieve line map", () => {
142
+ describe('line map', () => {
143
+ test('should store and retrieve line map', () => {
144
144
  const lineMap: LineMap = new Map();
145
- lineMap.set("0", { startLine: 31, endLine: 39 });
146
- lineMap.set("1", { startLine: 40, endLine: 100 });
145
+ lineMap.set('0', { startLine: 31, endLine: 39 });
146
+ lineMap.set('1', { startLine: 40, endLine: 100 });
147
147
 
148
- cache.set("/", "home content", lineMap);
149
- const result = cache.getLineMap("/");
148
+ cache.set('/', 'home content', lineMap);
149
+ const result = cache.getLineMap('/');
150
150
 
151
151
  expect(result).toBeDefined();
152
- expect(result?.get("0")).toEqual({ startLine: 31, endLine: 39 });
153
- expect(result?.get("1")).toEqual({ startLine: 40, endLine: 100 });
152
+ expect(result?.get('0')).toEqual({ startLine: 31, endLine: 39 });
153
+ expect(result?.get('1')).toEqual({ startLine: 40, endLine: 100 });
154
154
  });
155
155
 
156
- test("should get line range for specific element path", () => {
156
+ test('should get line range for specific element path', () => {
157
157
  const lineMap: LineMap = new Map();
158
- lineMap.set("0,1", { startLine: 50, endLine: 75 });
158
+ lineMap.set('0,1', { startLine: 50, endLine: 75 });
159
159
 
160
- cache.set("/about", "about content", lineMap);
161
- const range = cache.getLineRange("/about", "0,1");
160
+ cache.set('/about', 'about content', lineMap);
161
+ const range = cache.getLineRange('/about', '0,1');
162
162
 
163
163
  expect(range).toEqual({ startLine: 50, endLine: 75 });
164
164
  });
165
165
  });
166
166
  });
167
-
@@ -94,4 +94,3 @@ export class PageCache {
94
94
  return obj;
95
95
  }
96
96
  }
97
-
@@ -1,12 +1,11 @@
1
- import { join, dirname } from 'path';
1
+ import { join, dirname } from 'node:path';
2
2
  import { getModuleDir } from './runtime';
3
3
 
4
4
  let projectRoot: string = process.cwd();
5
5
 
6
6
  // Package root is where the editor files are installed (2 levels up from this file)
7
7
  // In packaged Electron builds, MENO_CORE_ROOT overrides import.meta.url resolution
8
- const packageRoot = process.env.MENO_CORE_ROOT
9
- || join(dirname(getModuleDir(import.meta.url)), '..');
8
+ const packageRoot = process.env.MENO_CORE_ROOT || join(dirname(getModuleDir(import.meta.url)), '..');
10
9
 
11
10
  export function setProjectRoot(root: string): void {
12
11
  projectRoot = root;
@@ -40,7 +39,9 @@ export const projectPaths = {
40
39
  enums: () => join(projectRoot, 'enums.json'),
41
40
  dist: () => join(projectRoot, 'dist'),
42
41
  env: () => join(projectRoot, '.env'),
43
- get project() { return projectRoot; }, // Direct access to project root
42
+ get project() {
43
+ return projectRoot;
44
+ }, // Direct access to project root
44
45
  };
45
46
 
46
47
  // Path getters for package files (core assets)