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.
- package/.claude/settings.local.json +1 -3
- package/bin/cli.ts +66 -261
- package/build-astro.ts +150 -128
- package/dist/bin/cli.js +42 -185
- package/dist/bin/cli.js.map +2 -2
- package/dist/chunks/chunk-2AR55GYH.js +42 -0
- package/dist/chunks/chunk-2AR55GYH.js.map +7 -0
- package/dist/chunks/{chunk-JGWFTO6P.js → chunk-2IIQK7T3.js} +2624 -1389
- package/dist/chunks/chunk-2IIQK7T3.js.map +7 -0
- package/dist/chunks/chunk-4ZRU52J2.js +169 -0
- package/dist/chunks/chunk-4ZRU52J2.js.map +7 -0
- package/dist/chunks/{chunk-UB44F4Z2.js → chunk-5X4HCN7J.js} +5 -7
- package/dist/chunks/chunk-5X4HCN7J.js.map +7 -0
- package/dist/chunks/{chunk-WQFG7PAH.js → chunk-7CCVOL5M.js} +15 -19
- package/dist/chunks/chunk-7CCVOL5M.js.map +7 -0
- package/dist/chunks/{chunk-YBLHKYFF.js → chunk-AR7LHIFY.js} +8 -2
- package/dist/chunks/chunk-AR7LHIFY.js.map +7 -0
- package/dist/chunks/{chunk-O3NAGJP4.js → chunk-NUP7H7D3.js} +135 -41
- package/dist/chunks/chunk-NUP7H7D3.js.map +7 -0
- package/dist/chunks/{chunk-X754AHS5.js → chunk-QWTQZHG3.js} +194 -90
- package/dist/chunks/chunk-QWTQZHG3.js.map +7 -0
- package/dist/chunks/{chunk-H3GJ4H2U.js → chunk-XTKNX4FW.js} +216 -87
- package/dist/chunks/chunk-XTKNX4FW.js.map +7 -0
- package/dist/chunks/{fs-JGINUXGL.js → fs-G3ANWEFP.js} +2 -2
- package/dist/lib/client/index.js +1003 -475
- package/dist/lib/client/index.js.map +3 -3
- package/dist/lib/server/index.js +14393 -6371
- package/dist/lib/server/index.js.map +4 -4
- package/dist/lib/shared/index.js +342 -101
- package/dist/lib/shared/index.js.map +4 -4
- package/dist/lib/shared/richtext/index.js +1 -1
- package/dist/lib/test-utils/index.js +64 -80
- package/dist/lib/test-utils/index.js.map +2 -2
- package/entries/client-router.tsx +10 -8
- package/lib/client/ClientInitializer.ts +8 -8
- package/lib/client/ErrorBoundary.test.tsx +246 -186
- package/lib/client/ErrorBoundary.tsx +183 -132
- package/lib/client/componentRegistry.test.ts +96 -108
- package/lib/client/componentRegistry.ts +1 -3
- package/lib/client/contexts/ThemeContext.tsx +3 -2
- package/lib/client/core/ComponentBuilder.test.ts +663 -560
- package/lib/client/core/ComponentBuilder.ts +427 -155
- package/lib/client/core/ComponentRenderer.test.tsx +2 -4
- package/lib/client/core/ComponentRenderer.tsx +46 -33
- package/lib/client/core/builders/embedBuilder.ts +242 -54
- package/lib/client/core/builders/linkBuilder.ts +72 -45
- package/lib/client/core/builders/linkNodeBuilder.ts +79 -54
- package/lib/client/core/builders/listBuilder.ts +155 -89
- package/lib/client/core/builders/localeListBuilder.ts +97 -62
- package/lib/client/core/builders/types.ts +5 -5
- package/lib/client/core/cmsTemplateProcessor.ts +8 -9
- package/lib/client/elementRegistry.ts +3 -3
- package/lib/client/fontFamiliesService.test.ts +2 -10
- package/lib/client/fontFamiliesService.ts +3 -3
- package/lib/client/hmr/HMRManager.tsx +47 -30
- package/lib/client/hmrCssReload.ts +49 -14
- package/lib/client/hmrWebSocket.ts +14 -19
- package/lib/client/hooks/useColorVariables.test.ts +21 -21
- package/lib/client/hooks/useColorVariables.ts +23 -18
- package/lib/client/hooks/usePropertyAutocomplete.ts +4 -6
- package/lib/client/hooks/useVariables.ts +6 -4
- package/lib/client/hydration/HydrationUtils.test.ts +24 -25
- package/lib/client/hydration/HydrationUtils.ts +3 -4
- package/lib/client/i18nConfigService.test.ts +2 -7
- package/lib/client/i18nConfigService.ts +2 -2
- package/lib/client/meno-filter/MenoFilter.test.ts +47 -49
- package/lib/client/meno-filter/MenoFilter.ts +14 -15
- package/lib/client/meno-filter/bindings.ts +18 -43
- package/lib/client/meno-filter/init.ts +4 -4
- package/lib/client/meno-filter/renderer.ts +30 -32
- package/lib/client/meno-filter/script.generated.ts +1 -3
- package/lib/client/meno-filter/ui.ts +4 -6
- package/lib/client/meno-filter/updates.ts +18 -23
- package/lib/client/meno-filter/utils.ts +1 -1
- package/lib/client/navigation.test.ts +174 -178
- package/lib/client/navigation.ts +0 -1
- package/lib/client/responsiveStyleResolver.knownTokens.test.ts +71 -0
- package/lib/client/responsiveStyleResolver.test.ts +234 -232
- package/lib/client/responsiveStyleResolver.ts +74 -20
- package/lib/client/routing/RouteLoader.test.ts +24 -25
- package/lib/client/routing/RouteLoader.ts +27 -35
- package/lib/client/routing/Router.tsx +210 -153
- package/lib/client/scripts/ScriptExecutor.test.ts +157 -158
- package/lib/client/scripts/ScriptExecutor.ts +18 -36
- package/lib/client/services/PrefetchService.test.ts +3 -3
- package/lib/client/services/PrefetchService.ts +23 -29
- package/lib/client/styleProcessor.test.ts +9 -9
- package/lib/client/styleProcessor.ts +24 -15
- package/lib/client/styles/StyleInjector.test.ts +122 -115
- package/lib/client/styles/StyleInjector.ts +10 -7
- package/lib/client/styles/UtilityClassCollector.ts +62 -28
- package/lib/client/styles/cspNonce.test.ts +2 -5
- package/lib/client/templateEngine.test.ts +554 -488
- package/lib/client/templateEngine.ts +203 -73
- package/lib/client/theme.test.ts +1 -1
- package/lib/client/theme.ts +0 -1
- package/lib/client/utils/toast.ts +0 -1
- package/lib/server/__integration__/api-routes.test.ts +8 -4
- package/lib/server/__integration__/cms-integration.test.ts +1 -4
- package/lib/server/__integration__/server-lifecycle.test.ts +4 -5
- package/lib/server/__integration__/ssr-rendering.test.ts +47 -37
- package/lib/server/__integration__/static-assets.test.ts +3 -3
- package/lib/server/__integration__/test-helpers.ts +87 -74
- package/lib/server/ab/generateFunctions.ts +12 -10
- package/lib/server/astro/cmsPageEmitter.ts +26 -42
- package/lib/server/astro/componentEmitter.ts +35 -43
- package/lib/server/astro/cssCollector.ts +10 -26
- package/lib/server/astro/nodeToAstro.test.ts +1754 -34
- package/lib/server/astro/nodeToAstro.ts +232 -216
- package/lib/server/astro/normalizeOrphanTemplateProps.test.ts +115 -119
- package/lib/server/astro/normalizeOrphanTemplateProps.ts +11 -18
- package/lib/server/astro/pageEmitter.ts +9 -13
- package/lib/server/astro/tailwindMapper.test.ts +10 -37
- package/lib/server/astro/tailwindMapper.ts +33 -40
- package/lib/server/astro/templateTransformer.ts +17 -20
- package/lib/server/createServer.ts +7 -19
- package/lib/server/cssGenerator.test.ts +35 -44
- package/lib/server/cssGenerator.ts +8 -19
- package/lib/server/fileWatcher.test.ts +164 -13
- package/lib/server/fileWatcher.ts +209 -124
- package/lib/server/index.ts +14 -17
- package/lib/server/jsonLoader.test.ts +39 -2
- package/lib/server/jsonLoader.ts +39 -34
- package/lib/server/middleware/cors.test.ts +21 -21
- package/lib/server/middleware/cors.ts +28 -4
- package/lib/server/middleware/errorHandler.test.ts +7 -5
- package/lib/server/middleware/errorHandler.ts +3 -8
- package/lib/server/middleware/index.ts +0 -1
- package/lib/server/middleware/logger.test.ts +10 -8
- package/lib/server/middleware/logger.ts +17 -29
- package/lib/server/migrateTemplates.ts +3 -3
- package/lib/server/pageCache.test.ts +76 -77
- package/lib/server/pageCache.ts +0 -1
- package/lib/server/projectContext.ts +5 -4
- package/lib/server/providers/fileSystemCMSProvider.test.ts +142 -99
- package/lib/server/providers/fileSystemCMSProvider.ts +62 -38
- package/lib/server/routes/api/cms.test.ts +26 -14
- package/lib/server/routes/api/cms.ts +9 -14
- package/lib/server/routes/api/colors.test.ts +2 -2
- package/lib/server/routes/api/components.ts +31 -35
- package/lib/server/routes/api/config.ts +3 -4
- package/lib/server/routes/api/core-routes.ts +49 -76
- package/lib/server/routes/api/enums.test.ts +2 -2
- package/lib/server/routes/api/functions.ts +9 -17
- package/lib/server/routes/api/index.ts +3 -6
- package/lib/server/routes/api/pages.ts +8 -11
- package/lib/server/routes/api/shared.test.ts +1 -1
- package/lib/server/routes/api/shared.ts +12 -9
- package/lib/server/routes/api/variables.test.ts +3 -5
- package/lib/server/routes/api/variables.ts +1 -1
- package/lib/server/routes/index.ts +25 -28
- package/lib/server/routes/pages.ts +35 -31
- package/lib/server/routes/static.ts +17 -6
- package/lib/server/runtime/bundler.ts +98 -61
- package/lib/server/runtime/fs.ts +16 -26
- package/lib/server/runtime/httpServer.ts +8 -12
- package/lib/server/services/ColorService.test.ts +3 -3
- package/lib/server/services/ColorService.ts +37 -29
- package/lib/server/services/EnumService.test.ts +4 -8
- package/lib/server/services/EnumService.ts +11 -3
- package/lib/server/services/VariableService.test.ts +8 -12
- package/lib/server/services/VariableService.ts +11 -3
- package/lib/server/services/cmsService.test.ts +158 -120
- package/lib/server/services/cmsService.ts +36 -146
- package/lib/server/services/componentService.test.ts +125 -45
- package/lib/server/services/componentService.ts +70 -46
- package/lib/server/services/configService.test.ts +22 -45
- package/lib/server/services/configService.ts +50 -27
- package/lib/server/services/fileWatcherService.ts +42 -8
- package/lib/server/services/index.ts +0 -1
- package/lib/server/services/pageService.test.ts +8 -10
- package/lib/server/services/pageService.ts +32 -18
- package/lib/server/ssr/attributeBuilder.ts +18 -8
- package/lib/server/ssr/buildErrorOverlay.ts +11 -12
- package/lib/server/ssr/clientDataInjector.ts +7 -21
- package/lib/server/ssr/cmsSSRProcessor.ts +4 -8
- package/lib/server/ssr/cssCollector.ts +1 -1
- package/lib/server/ssr/errorOverlay.test.ts +1 -1
- package/lib/server/ssr/errorOverlay.ts +3 -9
- package/lib/server/ssr/htmlGenerator.nonce.test.ts +9 -14
- package/lib/server/ssr/htmlGenerator.test.ts +120 -44
- package/lib/server/ssr/htmlGenerator.ts +126 -91
- package/lib/server/ssr/imageMetadata.test.ts +3 -1
- package/lib/server/ssr/imageMetadata.ts +27 -21
- package/lib/server/ssr/jsCollector.test.ts +8 -18
- package/lib/server/ssr/jsCollector.ts +3 -8
- package/lib/server/ssr/liveReloadIntegration.test.ts +76 -36
- package/lib/server/ssr/metaTagGenerator.ts +2 -2
- package/lib/server/ssr/ssrRenderer.branches.test.ts +1103 -0
- package/lib/server/ssr/ssrRenderer.test.ts +316 -256
- package/lib/server/ssr/ssrRenderer.ts +795 -243
- package/lib/server/ssrRenderer.test.ts +1048 -954
- package/lib/server/utils/jsonLineMapper.test.ts +28 -28
- package/lib/server/utils/jsonLineMapper.ts +7 -7
- package/lib/server/validateStyleCoverage.ts +18 -21
- package/lib/server/websocketManager.ts +28 -19
- package/lib/shared/attributeNodeUtils.test.ts +15 -15
- package/lib/shared/attributeNodeUtils.ts +5 -12
- package/lib/shared/breakpoints.test.ts +5 -5
- package/lib/shared/breakpoints.ts +4 -11
- package/lib/shared/cmsQuery.test.ts +81 -0
- package/lib/shared/cmsQuery.ts +92 -0
- package/lib/shared/cmsQueryParser.test.ts +50 -42
- package/lib/shared/cmsQueryParser.ts +60 -38
- package/lib/shared/colorConversions.ts +9 -9
- package/lib/shared/colorVariableUtils.test.ts +27 -5
- package/lib/shared/colorVariableUtils.ts +21 -12
- package/lib/shared/componentRefs.ts +1 -5
- package/lib/shared/constants.test.ts +3 -3
- package/lib/shared/constants.ts +8 -8
- package/lib/shared/cssGeneration.test.ts +285 -144
- package/lib/shared/cssGeneration.ts +217 -531
- package/lib/shared/cssNamedColors.ts +152 -30
- package/lib/shared/cssProperties.test.ts +69 -70
- package/lib/shared/cssProperties.ts +298 -114
- package/lib/shared/elementClassName.test.ts +109 -109
- package/lib/shared/elementClassName.ts +3 -3
- package/lib/shared/elementUtils.ts +12 -16
- package/lib/shared/errorLogger.test.ts +12 -12
- package/lib/shared/errorLogger.ts +2 -10
- package/lib/shared/errors.test.ts +2 -13
- package/lib/shared/errors.ts +2 -8
- package/lib/shared/expressionEvaluator.test.ts +145 -0
- package/lib/shared/expressionEvaluator.ts +52 -24
- package/lib/shared/fontLoader.test.ts +32 -18
- package/lib/shared/fontLoader.ts +2 -2
- package/lib/shared/friendlyError.ts +2 -3
- package/lib/shared/gradientUtils.test.ts +3 -7
- package/lib/shared/gradientUtils.ts +17 -14
- package/lib/shared/hrefRefs.test.ts +2 -2
- package/lib/shared/hrefRefs.ts +2 -10
- package/lib/shared/i18n.test.ts +4 -4
- package/lib/shared/i18n.ts +18 -38
- package/lib/shared/index.ts +27 -0
- package/lib/shared/inlineSvgStyleRules.ts +14 -13
- package/lib/shared/interactiveStyleMappings.test.ts +32 -54
- package/lib/shared/interactiveStyleMappings.ts +11 -24
- package/lib/shared/interactiveStyles.test.ts +165 -188
- package/lib/shared/interfaces/contentProvider.ts +1 -1
- package/lib/shared/itemTemplateUtils.test.ts +11 -17
- package/lib/shared/itemTemplateUtils.ts +27 -39
- package/lib/shared/jsonRepair.ts +16 -10
- package/lib/shared/libraryLoader.test.ts +21 -55
- package/lib/shared/libraryLoader.ts +7 -22
- package/lib/shared/linkUtils.ts +1 -1
- package/lib/shared/logger.test.ts +66 -0
- package/lib/shared/logger.ts +94 -0
- package/lib/shared/markdown.ts +25 -0
- package/lib/shared/netlifyLocale404.test.ts +179 -0
- package/lib/shared/netlifyLocale404.ts +110 -0
- package/lib/shared/nodeUtils.test.ts +28 -16
- package/lib/shared/nodeUtils.ts +76 -23
- package/lib/shared/pathArrayUtils.test.ts +1 -2
- package/lib/shared/pathArrayUtils.ts +1 -1
- package/lib/shared/pathSecurity.ts +2 -2
- package/lib/shared/pathUtils.test.ts +4 -6
- package/lib/shared/pathUtils.ts +42 -49
- package/lib/shared/paths/Path.test.ts +2 -2
- package/lib/shared/paths/Path.ts +0 -1
- package/lib/shared/paths/PathConverter.test.ts +1 -1
- package/lib/shared/paths/PathConverter.ts +17 -20
- package/lib/shared/paths/PathUtils.ts +13 -13
- package/lib/shared/paths/PathValidator.test.ts +2 -15
- package/lib/shared/paths/PathValidator.ts +12 -10
- package/lib/shared/paths/index.ts +1 -2
- package/lib/shared/permissions.test.ts +168 -0
- package/lib/shared/permissions.ts +162 -0
- package/lib/shared/propResolver.test.ts +240 -244
- package/lib/shared/propResolver.ts +15 -26
- package/lib/shared/pxToRem.test.ts +7 -6
- package/lib/shared/pxToRem.ts +2 -5
- package/lib/shared/registry/BaseNodeTypeRegistry.test.ts +12 -6
- package/lib/shared/registry/ClientRegistry.ts +0 -2
- package/lib/shared/registry/ComponentRegistry.test.ts +46 -32
- package/lib/shared/registry/ComponentRegistry.ts +12 -9
- package/lib/shared/registry/NodeTypeDefinition.ts +16 -9
- package/lib/shared/registry/RegistryManager.ts +1 -2
- package/lib/shared/registry/SSRRegistry.ts +0 -2
- package/lib/shared/registry/createNodeType.ts +7 -9
- package/lib/shared/registry/defineNodeType.ts +2 -6
- package/lib/shared/registry/fieldPresets.ts +3 -1
- package/lib/shared/registry/index.ts +0 -1
- package/lib/shared/registry/nodeTypes/ComponentInstanceNodeType.ts +14 -15
- package/lib/shared/registry/nodeTypes/CustomNodeType.ts +103 -0
- package/lib/shared/registry/nodeTypes/EmbedNodeType.ts +18 -11
- package/lib/shared/registry/nodeTypes/HtmlNodeType.ts +48 -19
- package/lib/shared/registry/nodeTypes/IslandNodeType.ts +129 -0
- package/lib/shared/registry/nodeTypes/LinkNodeType.ts +21 -19
- package/lib/shared/registry/nodeTypes/ListNodeType.ts +117 -77
- package/lib/shared/registry/nodeTypes/LocaleListNodeType.ts +27 -21
- package/lib/shared/registry/nodeTypes/MarkdownNodeType.ts +78 -0
- package/lib/shared/registry/nodeTypes/SlotMarkerType.ts +12 -8
- package/lib/shared/registry/nodeTypes/index.ts +26 -3
- package/lib/shared/responsiveScaling.test.ts +16 -34
- package/lib/shared/responsiveScaling.ts +61 -42
- package/lib/shared/responsiveStyleUtils.test.ts +0 -1
- package/lib/shared/responsiveStyleUtils.ts +11 -13
- package/lib/shared/richtext/htmlToTiptap.test.ts +139 -130
- package/lib/shared/richtext/htmlToTiptap.ts +2 -4
- package/lib/shared/richtext/tiptapToHtml.test.ts +5 -6
- package/lib/shared/richtext/types.ts +1 -8
- package/lib/shared/slugTranslator.test.ts +13 -13
- package/lib/shared/slugTranslator.ts +12 -16
- package/lib/shared/slugify.ts +9 -15
- package/lib/shared/styleNodeUtils.test.ts +8 -8
- package/lib/shared/styleNodeUtils.ts +18 -20
- package/lib/shared/styleUtils.test.ts +87 -61
- package/lib/shared/styleUtils.ts +5 -6
- package/lib/shared/themeDefaults.test.ts +11 -14
- package/lib/shared/themeDefaults.ts +3 -4
- package/lib/shared/tree/PathBuilder.test.ts +63 -145
- package/lib/shared/tree/PathBuilder.ts +59 -47
- package/lib/shared/treePathUtils.test.ts +51 -12
- package/lib/shared/treePathUtils.ts +91 -60
- package/lib/shared/types/api.ts +105 -8
- package/lib/shared/types/cms.test.ts +34 -0
- package/lib/shared/types/cms.ts +90 -34
- package/lib/shared/types/comment.ts +49 -16
- package/lib/shared/types/components.ts +51 -25
- package/lib/shared/types/errors.test.ts +1 -6
- package/lib/shared/types/errors.ts +3 -7
- package/lib/shared/types/experiments.ts +28 -28
- package/lib/shared/types/index.ts +25 -2
- package/lib/shared/types/permissions.ts +139 -0
- package/lib/shared/types/styles.ts +0 -1
- package/lib/shared/types/variables.test.ts +4 -13
- package/lib/shared/types/variables.ts +51 -30
- package/lib/shared/types.ts +1 -2
- package/lib/shared/utilityClassConfig.ts +751 -321
- package/lib/shared/utilityClassMapper.durability.test.ts +117 -0
- package/lib/shared/utilityClassMapper.test.ts +433 -95
- package/lib/shared/utilityClassMapper.ts +322 -249
- package/lib/shared/utilityClassNames.test.ts +38 -0
- package/lib/shared/utilityClassNames.ts +458 -0
- package/lib/shared/utils.test.ts +2 -10
- package/lib/shared/utils.ts +19 -10
- package/lib/shared/validation/cmsValidators.ts +2 -1
- package/lib/shared/validation/commentValidators.test.ts +53 -0
- package/lib/shared/validation/commentValidators.ts +12 -1
- package/lib/shared/validation/index.ts +1 -0
- package/lib/shared/validation/permissionsValidators.test.ts +49 -0
- package/lib/shared/validation/permissionsValidators.ts +49 -0
- package/lib/shared/validation/propValidator.test.ts +19 -21
- package/lib/shared/validation/propValidator.ts +13 -18
- package/lib/shared/validation/schemas.test.ts +64 -32
- package/lib/shared/validation/schemas.ts +616 -345
- package/lib/shared/validation/validators.test.ts +3 -8
- package/lib/shared/validation/validators.ts +89 -68
- package/lib/shared/viewportUnits.integration.test.ts +14 -10
- package/lib/shared/viewportUnits.test.ts +24 -23
- package/lib/shared/viewportUnits.ts +12 -5
- package/lib/test-utils/dom-setup.ts +1 -1
- package/lib/test-utils/factories/ConsoleMockFactory.ts +10 -14
- package/lib/test-utils/factories/DomMockFactory.ts +17 -23
- package/lib/test-utils/factories/EventMockFactory.ts +7 -13
- package/lib/test-utils/factories/FetchMockFactory.ts +39 -57
- package/lib/test-utils/factories/ServerMockFactory.ts +6 -10
- package/lib/test-utils/factories/StoreMockFactory.ts +18 -29
- package/lib/test-utils/fixtures.ts +45 -45
- package/lib/test-utils/helpers/asyncHelpers.test.ts +15 -18
- package/lib/test-utils/helpers/asyncHelpers.ts +11 -20
- package/lib/test-utils/helpers.ts +1 -5
- package/lib/test-utils/index.ts +0 -4
- package/lib/test-utils/mockFactories.ts +13 -19
- package/lib/test-utils/mocks.ts +6 -4
- package/package.json +3 -5
- package/scripts/build-for-publish.mjs +2 -4
- package/scripts/build-meno-filter.ts +4 -7
- package/tsconfig.json +1 -0
- package/vite.config.ts +4 -4
- package/build-next.ts +0 -1361
- package/build-static.test.ts +0 -424
- package/build-static.ts +0 -1074
- package/dist/build-static.js +0 -36
- package/dist/chunks/chunk-2MHDV5BF.js +0 -251
- package/dist/chunks/chunk-2MHDV5BF.js.map +0 -7
- package/dist/chunks/chunk-AZQYF6KE.js +0 -559
- package/dist/chunks/chunk-AZQYF6KE.js.map +0 -7
- package/dist/chunks/chunk-GZHGVVW3.js +0 -322
- package/dist/chunks/chunk-GZHGVVW3.js.map +0 -7
- package/dist/chunks/chunk-H3GJ4H2U.js.map +0 -7
- package/dist/chunks/chunk-I7YIGZXT.js +0 -467
- package/dist/chunks/chunk-I7YIGZXT.js.map +0 -7
- package/dist/chunks/chunk-IGYR22T6.js +0 -6192
- package/dist/chunks/chunk-IGYR22T6.js.map +0 -7
- package/dist/chunks/chunk-JGP5A3Y5.js +0 -1136
- package/dist/chunks/chunk-JGP5A3Y5.js.map +0 -7
- package/dist/chunks/chunk-JGWFTO6P.js.map +0 -7
- package/dist/chunks/chunk-O3NAGJP4.js.map +0 -7
- package/dist/chunks/chunk-QB2LNO4W.js +0 -77
- package/dist/chunks/chunk-QB2LNO4W.js.map +0 -7
- package/dist/chunks/chunk-R6XHAFBF.js +0 -3821
- package/dist/chunks/chunk-R6XHAFBF.js.map +0 -7
- package/dist/chunks/chunk-UB44F4Z2.js.map +0 -7
- package/dist/chunks/chunk-WQFG7PAH.js.map +0 -7
- package/dist/chunks/chunk-X754AHS5.js.map +0 -7
- package/dist/chunks/chunk-YBLHKYFF.js.map +0 -7
- package/dist/chunks/configService-R3OGU2UD.js +0 -13
- package/dist/chunks/configService-R3OGU2UD.js.map +0 -7
- package/dist/chunks/constants-STK2YBIW.js +0 -46
- package/dist/chunks/constants-STK2YBIW.js.map +0 -7
- package/dist/chunks/fs-JGINUXGL.js.map +0 -7
- package/dist/entries/server-router.js +0 -67
- package/dist/entries/server-router.js.map +0 -7
- package/entries/server-router.tsx +0 -81
- package/lib/server/providers/fileSystemPageProvider.ts +0 -160
- package/lib/server/webflow/buildWebflow.ts +0 -635
- package/lib/server/webflow/index.ts +0 -23
- package/lib/server/webflow/nodeToWebflow.test.ts +0 -3170
- package/lib/server/webflow/nodeToWebflow.ts +0 -2435
- package/lib/server/webflow/styleMapper.test.ts +0 -389
- package/lib/server/webflow/styleMapper.ts +0 -695
- package/lib/server/webflow/templateWrapper.ts +0 -49
- package/lib/server/webflow/types.ts +0 -396
- /package/dist/{build-static.js.map → chunks/fs-G3ANWEFP.js.map} +0 -0
package/bin/cli.ts
CHANGED
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
3
|
* meno CLI
|
|
4
|
-
*
|
|
4
|
+
*
|
|
5
|
+
* The bespoke JSON renderer (`meno dev`/`build`/`serve`) has been retired — Meno
|
|
6
|
+
* targets Astro exclusively now. The only remaining command is `init` (scaffold a
|
|
7
|
+
* project). To run/build a project, convert it to meno-astro and use the Astro
|
|
8
|
+
* toolchain (`@meno/studio` in the editor, or `astro dev`/`astro build`).
|
|
5
9
|
*/
|
|
6
10
|
|
|
7
|
-
import { resolve, join } from 'path';
|
|
8
|
-
import { existsSync, mkdirSync, writeFileSync, cpSync
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { createRuntimeServer, serveFile, fileExists as runtimeFileExists } from '../lib/server/runtime';
|
|
11
|
+
import { resolve, join } from 'node:path';
|
|
12
|
+
import { existsSync, mkdirSync, writeFileSync, cpSync } from 'node:fs';
|
|
13
|
+
import { migrateI18nConfig } from '../lib/shared/i18n';
|
|
14
|
+
import { syncNetlifyLocale404Block } from '../lib/shared/netlifyLocale404';
|
|
12
15
|
|
|
13
16
|
const args = process.argv.slice(2);
|
|
14
17
|
const command = args[0];
|
|
15
18
|
|
|
16
19
|
function printHelp() {
|
|
17
20
|
console.log(`
|
|
18
|
-
meno - Visual editor for
|
|
21
|
+
meno - Visual editor for websites (meno-astro)
|
|
19
22
|
|
|
20
23
|
Requirements:
|
|
21
24
|
- Bun or Node.js 18+
|
|
@@ -24,207 +27,20 @@ Usage:
|
|
|
24
27
|
meno <command> [options]
|
|
25
28
|
|
|
26
29
|
Commands:
|
|
27
|
-
dev Start development server with hot reload
|
|
28
|
-
build Build static HTML files for production
|
|
29
|
-
serve Serve built files from ./dist on port 8080
|
|
30
30
|
init Initialize a new project
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
Note:
|
|
33
|
+
The legacy JSON runtime (dev/build/serve) has been retired. Convert a JSON
|
|
34
|
+
project to meno-astro and use the Astro toolchain instead.
|
|
34
35
|
|
|
35
36
|
Examples:
|
|
36
|
-
meno dev Start dev server in current directory
|
|
37
|
-
meno build Build static files to ./dist (excludes drafts)
|
|
38
|
-
meno build --dev Build including draft pages
|
|
39
|
-
meno serve Serve built files on port 8080
|
|
40
37
|
meno init my-project Create new project in ./my-project
|
|
41
38
|
`);
|
|
42
39
|
}
|
|
43
40
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const headers = new Map<string, Record<string, string>>();
|
|
48
|
-
|
|
49
|
-
if (!existsSync(headersPath)) return headers;
|
|
50
|
-
|
|
51
|
-
const content = readFileSync(headersPath, 'utf-8');
|
|
52
|
-
let currentPath = '';
|
|
53
|
-
|
|
54
|
-
for (const line of content.split('\n')) {
|
|
55
|
-
const trimmed = line.trim();
|
|
56
|
-
if (!trimmed || trimmed.startsWith('#')) continue;
|
|
57
|
-
|
|
58
|
-
if (!line.startsWith(' ') && !line.startsWith('\t')) {
|
|
59
|
-
// Path line
|
|
60
|
-
currentPath = trimmed;
|
|
61
|
-
if (!headers.has(currentPath)) {
|
|
62
|
-
headers.set(currentPath, {});
|
|
63
|
-
}
|
|
64
|
-
} else if (currentPath && trimmed.includes(':')) {
|
|
65
|
-
// Header line
|
|
66
|
-
const colonIndex = trimmed.indexOf(':');
|
|
67
|
-
const name = trimmed.substring(0, colonIndex).trim();
|
|
68
|
-
const value = trimmed.substring(colonIndex + 1).trim();
|
|
69
|
-
headers.get(currentPath)![name] = value;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
return headers;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// Get headers matching a pathname
|
|
77
|
-
function getMatchingHeaders(
|
|
78
|
-
pathname: string,
|
|
79
|
-
headersMap: Map<string, Record<string, string>>
|
|
80
|
-
): Record<string, string> {
|
|
81
|
-
const result: Record<string, string> = {};
|
|
82
|
-
|
|
83
|
-
headersMap.forEach((headers, pattern) => {
|
|
84
|
-
if (pattern === pathname || pattern === '/*') {
|
|
85
|
-
Object.assign(result, headers);
|
|
86
|
-
} else if (pattern.endsWith('/*')) {
|
|
87
|
-
const prefix = pattern.slice(0, -1);
|
|
88
|
-
if (pathname.startsWith(prefix)) {
|
|
89
|
-
Object.assign(result, headers);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
return result;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// Start static file server on port 8080 (non-blocking)
|
|
98
|
-
async function startStaticServer(distPath: string) {
|
|
99
|
-
const { SERVE_PORT } = await import('../lib/shared/constants');
|
|
100
|
-
|
|
101
|
-
// Parse _headers file once on startup
|
|
102
|
-
const headersMap = parseHeadersFile(distPath);
|
|
103
|
-
|
|
104
|
-
const server = await createRuntimeServer({
|
|
105
|
-
port: SERVE_PORT,
|
|
106
|
-
hostname: 'localhost',
|
|
107
|
-
async fetch(req: Request) {
|
|
108
|
-
const url = new URL(req.url);
|
|
109
|
-
let pathname = url.pathname;
|
|
110
|
-
|
|
111
|
-
// Check for build errors and show overlay (except for _errors.json itself)
|
|
112
|
-
if (pathname !== '/_errors.json') {
|
|
113
|
-
const errorsPath = join(distPath, '_errors.json');
|
|
114
|
-
if (existsSync(errorsPath)) {
|
|
115
|
-
try {
|
|
116
|
-
const errorsData: BuildErrorsData = JSON.parse(readFileSync(errorsPath, 'utf-8'));
|
|
117
|
-
return new Response(generateBuildErrorPage(errorsData), {
|
|
118
|
-
headers: { 'Content-Type': 'text/html; charset=utf-8' },
|
|
119
|
-
});
|
|
120
|
-
} catch {
|
|
121
|
-
// If we can't parse errors file, continue normally
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
// Default to index.html for root
|
|
127
|
-
if (pathname === '/') {
|
|
128
|
-
pathname = '/index.html';
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
// Get custom headers for this path
|
|
132
|
-
const customHeaders = getMatchingHeaders(pathname, headersMap);
|
|
133
|
-
|
|
134
|
-
// Try to serve the file
|
|
135
|
-
const filePath = join(distPath, pathname);
|
|
136
|
-
|
|
137
|
-
// Check if file exists and serve it
|
|
138
|
-
if (await runtimeFileExists(filePath)) {
|
|
139
|
-
return await serveFile(filePath, customHeaders);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
// Try with .html extension for clean URLs
|
|
143
|
-
const htmlPath = filePath.endsWith('.html') ? filePath : `${filePath}.html`;
|
|
144
|
-
if (await runtimeFileExists(htmlPath)) {
|
|
145
|
-
return await serveFile(htmlPath, customHeaders);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
// Try index.html in directory
|
|
149
|
-
const indexPath = join(filePath, 'index.html');
|
|
150
|
-
if (await runtimeFileExists(indexPath)) {
|
|
151
|
-
return await serveFile(indexPath, customHeaders);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
return new Response('Not Found', { status: 404 });
|
|
155
|
-
},
|
|
156
|
-
});
|
|
157
|
-
|
|
158
|
-
return server;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
async function runDev() {
|
|
162
|
-
const projectRoot = process.cwd();
|
|
163
|
-
|
|
164
|
-
// Validate project structure
|
|
165
|
-
if (!existsSync(join(projectRoot, 'pages'))) {
|
|
166
|
-
console.error('❌ No pages directory found. Are you in a valid project directory?');
|
|
167
|
-
console.error(' Run "meno init <project-name>" to create a new project.');
|
|
168
|
-
process.exit(1);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
// Set project root for path resolution
|
|
172
|
-
setProjectRoot(projectRoot);
|
|
173
|
-
|
|
174
|
-
console.log(`📁 Project root: ${projectRoot}`);
|
|
175
|
-
|
|
176
|
-
// Start static server on 8080 if dist exists
|
|
177
|
-
const distPath = join(projectRoot, 'dist');
|
|
178
|
-
if (existsSync(distPath)) {
|
|
179
|
-
const staticServer = await startStaticServer(distPath);
|
|
180
|
-
console.log(`🚀 Static server running at http://localhost:${staticServer.port}`);
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
// Import and run the dev server (it handles all initialization internally)
|
|
184
|
-
await import('../entries/server-router');
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
async function runBuild(isDev: boolean = false) {
|
|
188
|
-
const projectRoot = process.cwd();
|
|
189
|
-
|
|
190
|
-
// Validate project structure
|
|
191
|
-
if (!existsSync(join(projectRoot, 'pages'))) {
|
|
192
|
-
console.error('❌ No pages directory found. Are you in a valid project directory?');
|
|
193
|
-
process.exit(1);
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
// Set project root for path resolution
|
|
197
|
-
setProjectRoot(projectRoot);
|
|
198
|
-
|
|
199
|
-
// Set dev mode environment variable (drafts are built in dev mode)
|
|
200
|
-
if (isDev) {
|
|
201
|
-
process.env.MENO_DEV_BUILD = 'true';
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
console.log(`📁 Building project: ${projectRoot}${isDev ? ' (dev mode - including drafts)' : ''}`);
|
|
205
|
-
|
|
206
|
-
// Import and run build
|
|
207
|
-
const { buildStaticPages } = await import('../build-static.ts');
|
|
208
|
-
await buildStaticPages();
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
async function runServe() {
|
|
212
|
-
const projectRoot = process.cwd();
|
|
213
|
-
const distPath = join(projectRoot, 'dist');
|
|
214
|
-
|
|
215
|
-
// Validate dist directory exists
|
|
216
|
-
if (!existsSync(distPath)) {
|
|
217
|
-
console.error('❌ No dist directory found. Run "meno build" first.');
|
|
218
|
-
process.exit(1);
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
console.log(`📁 Serving built files from: ${distPath}`);
|
|
222
|
-
const server = await startStaticServer(distPath);
|
|
223
|
-
console.log(`🚀 Static server running at http://localhost:${server.port}`);
|
|
224
|
-
|
|
225
|
-
// Keep the process alive
|
|
226
|
-
await new Promise(() => {});
|
|
227
|
-
}
|
|
41
|
+
const RETIRED_NOTICE = `The legacy JSON "${command}" command has been retired.
|
|
42
|
+
Meno targets Astro exclusively now. Convert this project to meno-astro and use the
|
|
43
|
+
Astro toolchain instead (open it in @meno/studio, or run "astro dev" / "astro build").`;
|
|
228
44
|
|
|
229
45
|
async function runInit(projectName?: string) {
|
|
230
46
|
if (!projectName) {
|
|
@@ -252,13 +68,10 @@ async function runInit(projectName?: string) {
|
|
|
252
68
|
const defaultConfig = {
|
|
253
69
|
fonts: [],
|
|
254
70
|
editor: {
|
|
255
|
-
theme: 'dark'
|
|
256
|
-
}
|
|
71
|
+
theme: 'dark',
|
|
72
|
+
},
|
|
257
73
|
};
|
|
258
|
-
writeFileSync(
|
|
259
|
-
join(projectPath, 'project.config.json'),
|
|
260
|
-
JSON.stringify(defaultConfig, null, 2)
|
|
261
|
-
);
|
|
74
|
+
writeFileSync(join(projectPath, 'project.config.json'), JSON.stringify(defaultConfig, null, 2));
|
|
262
75
|
|
|
263
76
|
// Create default colors.json
|
|
264
77
|
const defaultColors = {
|
|
@@ -268,15 +81,12 @@ async function runInit(projectName?: string) {
|
|
|
268
81
|
label: 'Light',
|
|
269
82
|
colors: {
|
|
270
83
|
text: '#1f2937',
|
|
271
|
-
bg: '#ffffff'
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
}
|
|
84
|
+
bg: '#ffffff',
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
},
|
|
275
88
|
};
|
|
276
|
-
writeFileSync(
|
|
277
|
-
join(projectPath, 'colors.json'),
|
|
278
|
-
JSON.stringify(defaultColors, null, 2)
|
|
279
|
-
);
|
|
89
|
+
writeFileSync(join(projectPath, 'colors.json'), JSON.stringify(defaultColors, null, 2));
|
|
280
90
|
|
|
281
91
|
// Create package.json for deployment
|
|
282
92
|
const packageJson = {
|
|
@@ -288,18 +98,24 @@ async function runInit(projectName?: string) {
|
|
|
288
98
|
build: 'meno build',
|
|
289
99
|
},
|
|
290
100
|
dependencies: {
|
|
291
|
-
'meno-core': '^1.0.0'
|
|
292
|
-
}
|
|
101
|
+
'meno-core': '^1.0.0',
|
|
102
|
+
},
|
|
293
103
|
};
|
|
294
|
-
writeFileSync(
|
|
295
|
-
join(projectPath, 'package.json'),
|
|
296
|
-
JSON.stringify(packageJson, null, 2)
|
|
297
|
-
);
|
|
104
|
+
writeFileSync(join(projectPath, 'package.json'), JSON.stringify(packageJson, null, 2));
|
|
298
105
|
|
|
299
106
|
// Create .claude/tools/ with screenshot tool
|
|
300
107
|
mkdirSync(join(projectPath, '.claude', 'tools'), { recursive: true });
|
|
301
108
|
|
|
302
|
-
const screenshotToolSrc = join(
|
|
109
|
+
const screenshotToolSrc = join(
|
|
110
|
+
import.meta.dirname,
|
|
111
|
+
'..',
|
|
112
|
+
'..',
|
|
113
|
+
'..',
|
|
114
|
+
'example',
|
|
115
|
+
'.claude',
|
|
116
|
+
'tools',
|
|
117
|
+
'screenshot.mjs',
|
|
118
|
+
);
|
|
303
119
|
if (existsSync(screenshotToolSrc)) {
|
|
304
120
|
cpSync(screenshotToolSrc, join(projectPath, '.claude', 'tools', 'screenshot.mjs'));
|
|
305
121
|
}
|
|
@@ -335,34 +151,32 @@ dist/
|
|
|
335
151
|
# OS files
|
|
336
152
|
.DS_Store
|
|
337
153
|
`;
|
|
338
|
-
writeFileSync(
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
//
|
|
344
|
-
const netlifyConfig =
|
|
154
|
+
writeFileSync(join(projectPath, '.gitignore'), gitignore);
|
|
155
|
+
|
|
156
|
+
// Create netlify.toml. Routed through the shared locale-404 sync for uniformity
|
|
157
|
+
// with the other netlify.toml producers — a no-op here (new projects are
|
|
158
|
+
// single-locale with no 404 page), but the managed block appears automatically
|
|
159
|
+
// if this scaffold ever grows locales/404 defaults.
|
|
160
|
+
const netlifyConfig = syncNetlifyLocale404Block(
|
|
161
|
+
`[build]
|
|
345
162
|
command = "bun install && bun run build"
|
|
346
163
|
publish = "dist"
|
|
347
164
|
|
|
348
165
|
[build.environment]
|
|
349
166
|
BUN_VERSION = "1"
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
netlifyConfig
|
|
167
|
+
`,
|
|
168
|
+
migrateI18nConfig((defaultConfig as { i18n?: unknown }).i18n),
|
|
169
|
+
false, // the scaffold ships pages/index.json only — no 404 page
|
|
354
170
|
);
|
|
171
|
+
writeFileSync(join(projectPath, 'netlify.toml'), netlifyConfig);
|
|
355
172
|
|
|
356
173
|
// Create vercel.json
|
|
357
174
|
const vercelConfig = {
|
|
358
175
|
buildCommand: 'bun run build',
|
|
359
176
|
outputDirectory: 'dist',
|
|
360
|
-
installCommand: 'bun install'
|
|
177
|
+
installCommand: 'bun install',
|
|
361
178
|
};
|
|
362
|
-
writeFileSync(
|
|
363
|
-
join(projectPath, 'vercel.json'),
|
|
364
|
-
JSON.stringify(vercelConfig, null, 2)
|
|
365
|
-
);
|
|
179
|
+
writeFileSync(join(projectPath, 'vercel.json'), JSON.stringify(vercelConfig, null, 2));
|
|
366
180
|
|
|
367
181
|
// Create wrangler.toml for Cloudflare Pages
|
|
368
182
|
const cloudflareConfig = `name = "${projectName}"
|
|
@@ -372,10 +186,7 @@ pages_build_output_dir = "dist"
|
|
|
372
186
|
[build]
|
|
373
187
|
command = "bun install && bun run build"
|
|
374
188
|
`;
|
|
375
|
-
writeFileSync(
|
|
376
|
-
join(projectPath, 'wrangler.toml'),
|
|
377
|
-
cloudflareConfig
|
|
378
|
-
);
|
|
189
|
+
writeFileSync(join(projectPath, 'wrangler.toml'), cloudflareConfig);
|
|
379
190
|
|
|
380
191
|
// Create default index page
|
|
381
192
|
const defaultPage = {
|
|
@@ -385,34 +196,31 @@ command = "bun install && bun run build"
|
|
|
385
196
|
keywords: '',
|
|
386
197
|
ogTitle: 'Your Project Title',
|
|
387
198
|
ogDescription: 'Your Project Description',
|
|
388
|
-
ogType: 'website'
|
|
199
|
+
ogType: 'website',
|
|
389
200
|
},
|
|
390
201
|
root: {
|
|
391
202
|
type: 'node',
|
|
392
203
|
tag: 'div',
|
|
393
204
|
style: {
|
|
394
205
|
base: {
|
|
395
|
-
padding: '40px'
|
|
206
|
+
padding: '40px',
|
|
396
207
|
},
|
|
397
208
|
tablet: {},
|
|
398
|
-
mobile: {}
|
|
209
|
+
mobile: {},
|
|
399
210
|
},
|
|
400
211
|
children: [
|
|
401
212
|
{
|
|
402
213
|
type: 'node',
|
|
403
214
|
tag: 'h1',
|
|
404
215
|
style: {
|
|
405
|
-
base: {}
|
|
216
|
+
base: {},
|
|
406
217
|
},
|
|
407
|
-
children: 'Hello'
|
|
408
|
-
}
|
|
409
|
-
]
|
|
410
|
-
}
|
|
218
|
+
children: 'Hello',
|
|
219
|
+
},
|
|
220
|
+
],
|
|
221
|
+
},
|
|
411
222
|
};
|
|
412
|
-
writeFileSync(
|
|
413
|
-
join(projectPath, 'pages', 'index.json'),
|
|
414
|
-
JSON.stringify(defaultPage, null, 2)
|
|
415
|
-
);
|
|
223
|
+
writeFileSync(join(projectPath, 'pages', 'index.json'), JSON.stringify(defaultPage, null, 2));
|
|
416
224
|
|
|
417
225
|
console.log('✅ Created project structure:');
|
|
418
226
|
console.log(` ${projectName}/`);
|
|
@@ -449,17 +257,14 @@ command = "bun install && bun run build"
|
|
|
449
257
|
|
|
450
258
|
// Main
|
|
451
259
|
switch (command) {
|
|
452
|
-
case '
|
|
453
|
-
|
|
260
|
+
case 'init':
|
|
261
|
+
runInit(args[1]);
|
|
454
262
|
break;
|
|
263
|
+
case 'dev':
|
|
455
264
|
case 'build':
|
|
456
|
-
runBuild(args.includes('--dev'));
|
|
457
|
-
break;
|
|
458
265
|
case 'serve':
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
case 'init':
|
|
462
|
-
runInit(args[1]);
|
|
266
|
+
console.error(RETIRED_NOTICE);
|
|
267
|
+
process.exit(1);
|
|
463
268
|
break;
|
|
464
269
|
case '--help':
|
|
465
270
|
case '-h':
|