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
|
@@ -1,467 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getModuleDir
|
|
3
|
-
} from "./chunk-WQFG7PAH.js";
|
|
4
|
-
|
|
5
|
-
// lib/server/runtime/bundler.ts
|
|
6
|
-
var isBun = typeof globalThis.Bun !== "undefined";
|
|
7
|
-
async function bundleFile(entrypoint, opts = {}) {
|
|
8
|
-
if (isBun) {
|
|
9
|
-
return bundleWithBun(entrypoint, opts);
|
|
10
|
-
}
|
|
11
|
-
return bundleWithEsbuild(entrypoint, opts);
|
|
12
|
-
}
|
|
13
|
-
async function minifyJS(code) {
|
|
14
|
-
if (isBun) {
|
|
15
|
-
return minifyWithBun(code);
|
|
16
|
-
}
|
|
17
|
-
return minifyWithEsbuild(code);
|
|
18
|
-
}
|
|
19
|
-
async function validateJS(code) {
|
|
20
|
-
try {
|
|
21
|
-
if (isBun) {
|
|
22
|
-
return await validateWithBun(code);
|
|
23
|
-
}
|
|
24
|
-
return await validateWithEsbuild(code);
|
|
25
|
-
} catch {
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
async function bundleWithBun(entrypoint, opts) {
|
|
30
|
-
try {
|
|
31
|
-
const result = await Bun.build({
|
|
32
|
-
entrypoints: [entrypoint],
|
|
33
|
-
target: opts.target || "browser",
|
|
34
|
-
format: opts.format || "esm",
|
|
35
|
-
minify: opts.minify ?? false,
|
|
36
|
-
sourcemap: opts.sourcemap === true ? "inline" : opts.sourcemap || "none",
|
|
37
|
-
throw: opts.throw ?? false
|
|
38
|
-
});
|
|
39
|
-
if (result.success && result.outputs[0]) {
|
|
40
|
-
const code = await result.outputs[0].text();
|
|
41
|
-
return { code, success: true, errors: [] };
|
|
42
|
-
}
|
|
43
|
-
const errors = (result.logs || []).map((log) => {
|
|
44
|
-
const parts = [];
|
|
45
|
-
if (log.position?.file) parts.push(`File: ${log.position.file}`);
|
|
46
|
-
if (log.position?.line) parts.push(`Line ${log.position.line}:${log.position.column || 0}`);
|
|
47
|
-
if (log.position?.lineText) parts.push(log.position.lineText);
|
|
48
|
-
if (log.message) parts.push(log.message);
|
|
49
|
-
return parts.length > 0 ? parts.join("\n") : String(log);
|
|
50
|
-
});
|
|
51
|
-
return { code: "", success: false, errors };
|
|
52
|
-
} catch (err) {
|
|
53
|
-
if (opts.throw) throw err;
|
|
54
|
-
const errors = [];
|
|
55
|
-
if (err.logs && Array.isArray(err.logs)) {
|
|
56
|
-
for (const log of err.logs) {
|
|
57
|
-
const parts = [];
|
|
58
|
-
if (log.position?.line) parts.push(`Line ${log.position.line}:${log.position.column || 0}`);
|
|
59
|
-
if (log.position?.lineText) parts.push(log.position.lineText);
|
|
60
|
-
if (log.message) parts.push(log.message);
|
|
61
|
-
errors.push(parts.length > 0 ? parts.join("\n") : String(log));
|
|
62
|
-
}
|
|
63
|
-
} else {
|
|
64
|
-
errors.push(err.message || String(err));
|
|
65
|
-
}
|
|
66
|
-
return { code: "", success: false, errors };
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
async function minifyWithBun(code) {
|
|
70
|
-
const { writeFile: writeFile2, rm } = await import("fs/promises");
|
|
71
|
-
const { join: join2 } = await import("path");
|
|
72
|
-
const tempFile = join2("/tmp", `meno-minify-${Date.now()}.js`);
|
|
73
|
-
try {
|
|
74
|
-
await writeFile2(tempFile, code, "utf-8");
|
|
75
|
-
const result = await Bun.build({
|
|
76
|
-
entrypoints: [tempFile],
|
|
77
|
-
minify: true,
|
|
78
|
-
throw: true
|
|
79
|
-
});
|
|
80
|
-
if (result.outputs.length > 0) {
|
|
81
|
-
const minified = await result.outputs[0].text();
|
|
82
|
-
return { code: minified, success: true, errors: [] };
|
|
83
|
-
}
|
|
84
|
-
return { code: "", success: false, errors: ["Minification produced no output"] };
|
|
85
|
-
} catch (err) {
|
|
86
|
-
const { inspect: inspect2 } = await import("./fs-JGINUXGL.js");
|
|
87
|
-
let details = "";
|
|
88
|
-
if (err.logs && Array.isArray(err.logs)) {
|
|
89
|
-
details = err.logs.map((log) => {
|
|
90
|
-
const parts = [];
|
|
91
|
-
if (log.position?.line) parts.push(`Line ${log.position.line}:${log.position.column || 0}`);
|
|
92
|
-
if (log.position?.lineText) parts.push(log.position.lineText);
|
|
93
|
-
if (log.message) parts.push(log.message);
|
|
94
|
-
return parts.length > 0 ? parts.join("\n") : String(log);
|
|
95
|
-
}).join("\n\n");
|
|
96
|
-
}
|
|
97
|
-
if (!details) {
|
|
98
|
-
try {
|
|
99
|
-
details = inspect2(err);
|
|
100
|
-
} catch {
|
|
101
|
-
details = err.stack || err.message || String(err);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
return { code: "", success: false, errors: [details] };
|
|
105
|
-
} finally {
|
|
106
|
-
try {
|
|
107
|
-
const { rm: rm2 } = await import("fs/promises");
|
|
108
|
-
await rm2(tempFile, { force: true });
|
|
109
|
-
} catch {
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
async function validateWithBun(code) {
|
|
114
|
-
const { writeFile: writeFile2, rm } = await import("fs/promises");
|
|
115
|
-
const { join: join2 } = await import("path");
|
|
116
|
-
const tempFile = join2("/tmp", `meno-validate-${Date.now()}-${Math.random().toString(36).slice(2)}.js`);
|
|
117
|
-
try {
|
|
118
|
-
await writeFile2(tempFile, code, "utf-8");
|
|
119
|
-
await Bun.build({
|
|
120
|
-
entrypoints: [tempFile],
|
|
121
|
-
minify: true,
|
|
122
|
-
throw: true
|
|
123
|
-
});
|
|
124
|
-
return null;
|
|
125
|
-
} catch (err) {
|
|
126
|
-
const { inspect: inspect2 } = await import("./fs-JGINUXGL.js");
|
|
127
|
-
let details = "";
|
|
128
|
-
if (err.logs && Array.isArray(err.logs)) {
|
|
129
|
-
details = err.logs.map((log) => {
|
|
130
|
-
const parts = [];
|
|
131
|
-
if (log.position?.line) parts.push(`Line ${log.position.line}:${log.position.column || 0}`);
|
|
132
|
-
if (log.position?.lineText) parts.push(log.position.lineText);
|
|
133
|
-
if (log.message) parts.push(log.message);
|
|
134
|
-
return parts.length > 0 ? parts.join("\n") : String(log);
|
|
135
|
-
}).join("\n\n");
|
|
136
|
-
}
|
|
137
|
-
if (!details) {
|
|
138
|
-
try {
|
|
139
|
-
details = inspect2(err);
|
|
140
|
-
} catch {
|
|
141
|
-
details = err.stack || err.message || String(err);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
return details || "Unknown JavaScript error";
|
|
145
|
-
} finally {
|
|
146
|
-
try {
|
|
147
|
-
await rm(tempFile, { force: true });
|
|
148
|
-
} catch {
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
async function getEsbuild() {
|
|
153
|
-
return await import("esbuild");
|
|
154
|
-
}
|
|
155
|
-
async function bundleWithEsbuild(entrypoint, opts) {
|
|
156
|
-
const esbuild = await getEsbuild();
|
|
157
|
-
try {
|
|
158
|
-
const result = await esbuild.build({
|
|
159
|
-
entryPoints: [entrypoint],
|
|
160
|
-
bundle: true,
|
|
161
|
-
write: false,
|
|
162
|
-
platform: opts.target === "node" ? "node" : "browser",
|
|
163
|
-
format: opts.format || "esm",
|
|
164
|
-
minify: opts.minify ?? false,
|
|
165
|
-
sourcemap: opts.sourcemap === true ? "inline" : opts.sourcemap === "inline" ? "inline" : opts.sourcemap === "external" ? true : false,
|
|
166
|
-
jsx: "automatic",
|
|
167
|
-
jsxImportSource: "react",
|
|
168
|
-
logLevel: "silent"
|
|
169
|
-
});
|
|
170
|
-
if (result.outputFiles && result.outputFiles.length > 0) {
|
|
171
|
-
return { code: result.outputFiles[0].text, success: true, errors: [] };
|
|
172
|
-
}
|
|
173
|
-
return { code: "", success: false, errors: ["Build produced no output"] };
|
|
174
|
-
} catch (err) {
|
|
175
|
-
if (opts.throw) throw err;
|
|
176
|
-
const errors = [];
|
|
177
|
-
if (err.errors && Array.isArray(err.errors)) {
|
|
178
|
-
for (const e of err.errors) {
|
|
179
|
-
const parts = [];
|
|
180
|
-
if (e.location?.file) parts.push(`File: ${e.location.file}`);
|
|
181
|
-
if (e.location?.line) parts.push(`Line ${e.location.line}:${e.location.column || 0}`);
|
|
182
|
-
if (e.location?.lineText) parts.push(e.location.lineText);
|
|
183
|
-
if (e.text) parts.push(e.text);
|
|
184
|
-
errors.push(parts.length > 0 ? parts.join("\n") : String(e));
|
|
185
|
-
}
|
|
186
|
-
} else {
|
|
187
|
-
errors.push(err.message || String(err));
|
|
188
|
-
}
|
|
189
|
-
return { code: "", success: false, errors };
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
async function minifyWithEsbuild(code) {
|
|
193
|
-
const esbuild = await getEsbuild();
|
|
194
|
-
try {
|
|
195
|
-
const result = await esbuild.transform(code, {
|
|
196
|
-
minify: true,
|
|
197
|
-
loader: "js"
|
|
198
|
-
});
|
|
199
|
-
return { code: result.code, success: true, errors: [] };
|
|
200
|
-
} catch (err) {
|
|
201
|
-
const errors = [];
|
|
202
|
-
if (err.errors && Array.isArray(err.errors)) {
|
|
203
|
-
for (const e of err.errors) {
|
|
204
|
-
const parts = [];
|
|
205
|
-
if (e.location?.line) parts.push(`Line ${e.location.line}:${e.location.column || 0}`);
|
|
206
|
-
if (e.location?.lineText) parts.push(e.location.lineText);
|
|
207
|
-
if (e.text) parts.push(e.text);
|
|
208
|
-
errors.push(parts.length > 0 ? parts.join("\n") : String(e));
|
|
209
|
-
}
|
|
210
|
-
} else {
|
|
211
|
-
errors.push(err.message || String(err));
|
|
212
|
-
}
|
|
213
|
-
return { code: "", success: false, errors };
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
async function validateWithEsbuild(code) {
|
|
217
|
-
const esbuild = await getEsbuild();
|
|
218
|
-
try {
|
|
219
|
-
await esbuild.transform(code, { loader: "js" });
|
|
220
|
-
return null;
|
|
221
|
-
} catch (err) {
|
|
222
|
-
const errors = [];
|
|
223
|
-
if (err.errors && Array.isArray(err.errors)) {
|
|
224
|
-
for (const e of err.errors) {
|
|
225
|
-
const parts = [];
|
|
226
|
-
if (e.location?.line) parts.push(`Line ${e.location.line}:${e.location.column || 0}`);
|
|
227
|
-
if (e.location?.lineText) parts.push(e.location.lineText);
|
|
228
|
-
if (e.text) parts.push(e.text);
|
|
229
|
-
errors.push(parts.length > 0 ? parts.join("\n") : String(e));
|
|
230
|
-
}
|
|
231
|
-
} else {
|
|
232
|
-
errors.push(err.message || String(err));
|
|
233
|
-
}
|
|
234
|
-
return errors.join("\n\n") || "Unknown JavaScript error";
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
// lib/server/runtime/httpServer.ts
|
|
239
|
-
var isBun2 = typeof globalThis.Bun !== "undefined";
|
|
240
|
-
async function createRuntimeServer(options) {
|
|
241
|
-
if (isBun2) {
|
|
242
|
-
return createBunServer(options);
|
|
243
|
-
}
|
|
244
|
-
return createNodeServer(options);
|
|
245
|
-
}
|
|
246
|
-
function createBunServer(options) {
|
|
247
|
-
const { port, hostname, fetch, websocket, wsPath } = options;
|
|
248
|
-
const bunConfig = {
|
|
249
|
-
port,
|
|
250
|
-
hostname: hostname || "localhost",
|
|
251
|
-
async fetch(req, server2) {
|
|
252
|
-
const upgradeWebSocket = (upgradeReq) => {
|
|
253
|
-
return server2.upgrade(upgradeReq);
|
|
254
|
-
};
|
|
255
|
-
const response = await fetch(req, upgradeWebSocket);
|
|
256
|
-
return response || new Response("Not Found", { status: 404 });
|
|
257
|
-
}
|
|
258
|
-
};
|
|
259
|
-
if (websocket) {
|
|
260
|
-
bunConfig.websocket = {
|
|
261
|
-
open(ws) {
|
|
262
|
-
websocket.open(ws);
|
|
263
|
-
},
|
|
264
|
-
message(ws, message) {
|
|
265
|
-
websocket.message(ws, String(message));
|
|
266
|
-
},
|
|
267
|
-
close(ws) {
|
|
268
|
-
websocket.close(ws);
|
|
269
|
-
}
|
|
270
|
-
};
|
|
271
|
-
}
|
|
272
|
-
const server = Bun.serve(bunConfig);
|
|
273
|
-
return {
|
|
274
|
-
port: server.port ?? port,
|
|
275
|
-
stop(force) {
|
|
276
|
-
server.stop(force === true);
|
|
277
|
-
}
|
|
278
|
-
};
|
|
279
|
-
}
|
|
280
|
-
async function createNodeServer(options) {
|
|
281
|
-
const { port, hostname, fetch, websocket, wsPath } = options;
|
|
282
|
-
const http = await import("http");
|
|
283
|
-
const server = http.createServer(async (nodeReq, nodeRes) => {
|
|
284
|
-
try {
|
|
285
|
-
const url = `http://${hostname || "localhost"}:${port}${nodeReq.url || "/"}`;
|
|
286
|
-
const headers = new Headers();
|
|
287
|
-
for (const [key, value] of Object.entries(nodeReq.headers)) {
|
|
288
|
-
if (value) {
|
|
289
|
-
if (Array.isArray(value)) {
|
|
290
|
-
for (const v of value) headers.append(key, v);
|
|
291
|
-
} else {
|
|
292
|
-
headers.set(key, value);
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
let body = null;
|
|
297
|
-
if (nodeReq.method !== "GET" && nodeReq.method !== "HEAD") {
|
|
298
|
-
const { Readable } = await import("stream");
|
|
299
|
-
body = Readable.toWeb(nodeReq);
|
|
300
|
-
}
|
|
301
|
-
const request = new Request(url, {
|
|
302
|
-
method: nodeReq.method || "GET",
|
|
303
|
-
headers,
|
|
304
|
-
body,
|
|
305
|
-
// @ts-ignore - duplex is needed for streaming request bodies in Node
|
|
306
|
-
duplex: body ? "half" : void 0
|
|
307
|
-
});
|
|
308
|
-
const upgradeWebSocket = () => false;
|
|
309
|
-
const response = await fetch(request, upgradeWebSocket);
|
|
310
|
-
if (!response) {
|
|
311
|
-
nodeRes.writeHead(404);
|
|
312
|
-
nodeRes.end("Not Found");
|
|
313
|
-
return;
|
|
314
|
-
}
|
|
315
|
-
nodeRes.writeHead(response.status, Object.fromEntries(response.headers.entries()));
|
|
316
|
-
if (response.body) {
|
|
317
|
-
const reader = response.body.getReader();
|
|
318
|
-
const pump = async () => {
|
|
319
|
-
while (true) {
|
|
320
|
-
const { done, value } = await reader.read();
|
|
321
|
-
if (done) {
|
|
322
|
-
nodeRes.end();
|
|
323
|
-
break;
|
|
324
|
-
}
|
|
325
|
-
const canContinue = nodeRes.write(value);
|
|
326
|
-
if (!canContinue) {
|
|
327
|
-
await new Promise((resolve) => nodeRes.once("drain", resolve));
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
};
|
|
331
|
-
await pump();
|
|
332
|
-
} else {
|
|
333
|
-
const text = await response.text();
|
|
334
|
-
nodeRes.end(text);
|
|
335
|
-
}
|
|
336
|
-
} catch (err) {
|
|
337
|
-
console.error("Server error:", err);
|
|
338
|
-
if (!nodeRes.headersSent) {
|
|
339
|
-
nodeRes.writeHead(500);
|
|
340
|
-
nodeRes.end("Internal Server Error");
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
});
|
|
344
|
-
if (websocket && wsPath) {
|
|
345
|
-
try {
|
|
346
|
-
const { WebSocketServer } = await import("ws");
|
|
347
|
-
const wss = new WebSocketServer({ noServer: true });
|
|
348
|
-
server.on("upgrade", (request, socket, head) => {
|
|
349
|
-
const pathname = new URL(
|
|
350
|
-
request.url || "/",
|
|
351
|
-
`http://${hostname || "localhost"}:${port}`
|
|
352
|
-
).pathname;
|
|
353
|
-
if (pathname === wsPath) {
|
|
354
|
-
wss.handleUpgrade(request, socket, head, (ws) => {
|
|
355
|
-
wss.emit("connection", ws, request);
|
|
356
|
-
});
|
|
357
|
-
} else {
|
|
358
|
-
socket.destroy();
|
|
359
|
-
}
|
|
360
|
-
});
|
|
361
|
-
wss.on("connection", (ws) => {
|
|
362
|
-
const client = {
|
|
363
|
-
send(data) {
|
|
364
|
-
if (ws.readyState === 1) {
|
|
365
|
-
ws.send(data);
|
|
366
|
-
}
|
|
367
|
-
},
|
|
368
|
-
get readyState() {
|
|
369
|
-
return ws.readyState;
|
|
370
|
-
},
|
|
371
|
-
close(code, reason) {
|
|
372
|
-
ws.close(code, reason);
|
|
373
|
-
}
|
|
374
|
-
};
|
|
375
|
-
websocket.open(client);
|
|
376
|
-
ws.on("message", (data) => {
|
|
377
|
-
websocket.message(client, data.toString());
|
|
378
|
-
});
|
|
379
|
-
ws.on("close", () => {
|
|
380
|
-
websocket.close(client);
|
|
381
|
-
});
|
|
382
|
-
});
|
|
383
|
-
} catch {
|
|
384
|
-
console.warn('WebSocket support requires the "ws" package. Install it with: npm install ws');
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
return new Promise((resolve, reject) => {
|
|
388
|
-
server.on("error", reject);
|
|
389
|
-
server.listen(port, hostname || "localhost", () => {
|
|
390
|
-
const addr = server.address();
|
|
391
|
-
const actualPort = typeof addr === "object" && addr ? addr.port : port;
|
|
392
|
-
resolve({
|
|
393
|
-
port: actualPort,
|
|
394
|
-
stop(_force) {
|
|
395
|
-
server.close();
|
|
396
|
-
}
|
|
397
|
-
});
|
|
398
|
-
});
|
|
399
|
-
});
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
// lib/server/runtime/index.ts
|
|
403
|
-
var isBun3 = typeof globalThis.Bun !== "undefined";
|
|
404
|
-
|
|
405
|
-
// lib/server/projectContext.ts
|
|
406
|
-
import { join, dirname } from "path";
|
|
407
|
-
var projectRoot = process.cwd();
|
|
408
|
-
var packageRoot = process.env.MENO_CORE_ROOT || join(dirname(getModuleDir(import.meta.url)), "..");
|
|
409
|
-
function setProjectRoot(root) {
|
|
410
|
-
projectRoot = root;
|
|
411
|
-
}
|
|
412
|
-
function getProjectRoot() {
|
|
413
|
-
return projectRoot;
|
|
414
|
-
}
|
|
415
|
-
function getPackageRoot() {
|
|
416
|
-
return packageRoot;
|
|
417
|
-
}
|
|
418
|
-
var projectPaths = {
|
|
419
|
-
pages: () => join(projectRoot, "pages"),
|
|
420
|
-
templates: () => join(projectRoot, "templates"),
|
|
421
|
-
components: () => join(projectRoot, "components"),
|
|
422
|
-
fonts: () => join(projectRoot, "fonts"),
|
|
423
|
-
images: () => join(projectRoot, "images"),
|
|
424
|
-
videos: () => join(projectRoot, "videos"),
|
|
425
|
-
assets: () => join(projectRoot, "assets"),
|
|
426
|
-
icons: () => join(projectRoot, "icons"),
|
|
427
|
-
cms: () => join(projectRoot, "cms"),
|
|
428
|
-
libraries: () => join(projectRoot, "libraries"),
|
|
429
|
-
functions: () => join(projectRoot, "functions"),
|
|
430
|
-
config: () => join(projectRoot, "project.config.json"),
|
|
431
|
-
componentsConfig: () => join(projectRoot, "components.config.json"),
|
|
432
|
-
colors: () => join(projectRoot, "colors.json"),
|
|
433
|
-
variables: () => join(projectRoot, "variables.json"),
|
|
434
|
-
enums: () => join(projectRoot, "enums.json"),
|
|
435
|
-
dist: () => join(projectRoot, "dist"),
|
|
436
|
-
env: () => join(projectRoot, ".env"),
|
|
437
|
-
get project() {
|
|
438
|
-
return projectRoot;
|
|
439
|
-
}
|
|
440
|
-
// Direct access to project root
|
|
441
|
-
};
|
|
442
|
-
var packagePaths = {
|
|
443
|
-
indexHtml: () => join(packageRoot, "templates", "index-router.html"),
|
|
444
|
-
clientRouter: () => join(packageRoot, "entries", "client-router.tsx")
|
|
445
|
-
};
|
|
446
|
-
function resolveProjectPath(...segments) {
|
|
447
|
-
return join(projectRoot, ...segments);
|
|
448
|
-
}
|
|
449
|
-
function resolvePackagePath(...segments) {
|
|
450
|
-
return join(packageRoot, ...segments);
|
|
451
|
-
}
|
|
452
|
-
|
|
453
|
-
export {
|
|
454
|
-
bundleFile,
|
|
455
|
-
minifyJS,
|
|
456
|
-
validateJS,
|
|
457
|
-
createRuntimeServer,
|
|
458
|
-
isBun3 as isBun,
|
|
459
|
-
setProjectRoot,
|
|
460
|
-
getProjectRoot,
|
|
461
|
-
getPackageRoot,
|
|
462
|
-
projectPaths,
|
|
463
|
-
packagePaths,
|
|
464
|
-
resolveProjectPath,
|
|
465
|
-
resolvePackagePath
|
|
466
|
-
};
|
|
467
|
-
//# sourceMappingURL=chunk-I7YIGZXT.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../lib/server/runtime/bundler.ts", "../../lib/server/runtime/httpServer.ts", "../../lib/server/runtime/index.ts", "../../lib/server/projectContext.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Runtime-agnostic bundler abstraction.\n * Uses Bun.build when available, falls back to esbuild for Node.js.\n */\n\nconst isBun = typeof (globalThis as any).Bun !== 'undefined';\n\nexport interface BundleResult {\n code: string;\n success: boolean;\n errors: string[];\n}\n\nexport interface BundleOptions {\n target?: 'browser' | 'node';\n format?: 'esm' | 'cjs';\n minify?: boolean;\n sourcemap?: 'inline' | 'external' | boolean;\n /** When true, throw on build errors instead of returning them */\n throw?: boolean;\n}\n\n/**\n * Bundle a file entry point.\n * Returns the bundled code as a string.\n */\nexport async function bundleFile(\n entrypoint: string,\n opts: BundleOptions = {},\n): Promise<BundleResult> {\n if (isBun) {\n return bundleWithBun(entrypoint, opts);\n }\n return bundleWithEsbuild(entrypoint, opts);\n}\n\n/**\n * Minify JavaScript code.\n */\nexport async function minifyJS(code: string): Promise<BundleResult> {\n if (isBun) {\n return minifyWithBun(code);\n }\n return minifyWithEsbuild(code);\n}\n\n/**\n * Validate JavaScript syntax (check for errors without producing output).\n */\nexport async function validateJS(code: string): Promise<string | null> {\n try {\n if (isBun) {\n return await validateWithBun(code);\n }\n return await validateWithEsbuild(code);\n } catch {\n // Validation not available (e.g., Cloudflare Workers) \u2014 skip and trust the JS\n return null;\n }\n}\n\n// \u2500\u2500 Bun implementations \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nasync function bundleWithBun(\n entrypoint: string,\n opts: BundleOptions,\n): Promise<BundleResult> {\n try {\n const result = await Bun.build({\n entrypoints: [entrypoint],\n target: opts.target || 'browser',\n format: opts.format || 'esm',\n minify: opts.minify ?? false,\n sourcemap: opts.sourcemap === true ? 'inline' : (opts.sourcemap || 'none'),\n throw: opts.throw ?? false,\n });\n\n if (result.success && result.outputs[0]) {\n const code = await result.outputs[0].text();\n return { code, success: true, errors: [] };\n }\n\n const errors = (result.logs || []).map((log: any) => {\n const parts: string[] = [];\n if (log.position?.file) parts.push(`File: ${log.position.file}`);\n if (log.position?.line) parts.push(`Line ${log.position.line}:${log.position.column || 0}`);\n if (log.position?.lineText) parts.push(log.position.lineText);\n if (log.message) parts.push(log.message);\n return parts.length > 0 ? parts.join('\\n') : String(log);\n });\n\n return { code: '', success: false, errors };\n } catch (err: any) {\n if (opts.throw) throw err;\n\n const errors: string[] = [];\n if (err.logs && Array.isArray(err.logs)) {\n for (const log of err.logs) {\n const parts: string[] = [];\n if (log.position?.line) parts.push(`Line ${log.position.line}:${log.position.column || 0}`);\n if (log.position?.lineText) parts.push(log.position.lineText);\n if (log.message) parts.push(log.message);\n errors.push(parts.length > 0 ? parts.join('\\n') : String(log));\n }\n } else {\n errors.push(err.message || String(err));\n }\n\n return { code: '', success: false, errors };\n }\n}\n\nasync function minifyWithBun(code: string): Promise<BundleResult> {\n const { writeFile, rm } = await import('fs/promises');\n const { join } = await import('path');\n const tempFile = join('/tmp', `meno-minify-${Date.now()}.js`);\n\n try {\n await writeFile(tempFile, code, 'utf-8');\n\n const result = await Bun.build({\n entrypoints: [tempFile],\n minify: true,\n throw: true,\n });\n\n if (result.outputs.length > 0) {\n const minified = await result.outputs[0].text();\n return { code: minified, success: true, errors: [] };\n }\n\n return { code: '', success: false, errors: ['Minification produced no output'] };\n } catch (err: any) {\n const { inspect } = await import('./fs');\n let details = '';\n if (err.logs && Array.isArray(err.logs)) {\n details = err.logs.map((log: any) => {\n const parts: string[] = [];\n if (log.position?.line) parts.push(`Line ${log.position.line}:${log.position.column || 0}`);\n if (log.position?.lineText) parts.push(log.position.lineText);\n if (log.message) parts.push(log.message);\n return parts.length > 0 ? parts.join('\\n') : String(log);\n }).join('\\n\\n');\n }\n if (!details) {\n try { details = inspect(err); } catch { details = err.stack || err.message || String(err); }\n }\n return { code: '', success: false, errors: [details] };\n } finally {\n try { const { rm } = await import('fs/promises'); await rm(tempFile, { force: true }); } catch {}\n }\n}\n\nasync function validateWithBun(code: string): Promise<string | null> {\n const { writeFile, rm } = await import('fs/promises');\n const { join } = await import('path');\n const tempFile = join('/tmp', `meno-validate-${Date.now()}-${Math.random().toString(36).slice(2)}.js`);\n\n try {\n await writeFile(tempFile, code, 'utf-8');\n await Bun.build({\n entrypoints: [tempFile],\n minify: true,\n throw: true,\n });\n return null; // Valid\n } catch (err: any) {\n const { inspect } = await import('./fs');\n let details = '';\n if (err.logs && Array.isArray(err.logs)) {\n details = err.logs.map((log: any) => {\n const parts: string[] = [];\n if (log.position?.line) parts.push(`Line ${log.position.line}:${log.position.column || 0}`);\n if (log.position?.lineText) parts.push(log.position.lineText);\n if (log.message) parts.push(log.message);\n return parts.length > 0 ? parts.join('\\n') : String(log);\n }).join('\\n\\n');\n }\n if (!details) {\n try { details = inspect(err); } catch { details = err.stack || err.message || String(err); }\n }\n return details || 'Unknown JavaScript error';\n } finally {\n try { await rm(tempFile, { force: true }); } catch {}\n }\n}\n\n// \u2500\u2500 esbuild implementations \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nasync function getEsbuild() {\n return await import('esbuild');\n}\n\nasync function bundleWithEsbuild(\n entrypoint: string,\n opts: BundleOptions,\n): Promise<BundleResult> {\n const esbuild = await getEsbuild();\n\n try {\n const result = await esbuild.build({\n entryPoints: [entrypoint],\n bundle: true,\n write: false,\n platform: opts.target === 'node' ? 'node' : 'browser',\n format: opts.format || 'esm',\n minify: opts.minify ?? false,\n sourcemap: opts.sourcemap === true ? 'inline' : (opts.sourcemap === 'inline' ? 'inline' : opts.sourcemap === 'external' ? true : false),\n jsx: 'automatic',\n jsxImportSource: 'react',\n logLevel: 'silent',\n });\n\n if (result.outputFiles && result.outputFiles.length > 0) {\n return { code: result.outputFiles[0].text, success: true, errors: [] };\n }\n\n return { code: '', success: false, errors: ['Build produced no output'] };\n } catch (err: any) {\n if (opts.throw) throw err;\n\n const errors: string[] = [];\n if (err.errors && Array.isArray(err.errors)) {\n for (const e of err.errors) {\n const parts: string[] = [];\n if (e.location?.file) parts.push(`File: ${e.location.file}`);\n if (e.location?.line) parts.push(`Line ${e.location.line}:${e.location.column || 0}`);\n if (e.location?.lineText) parts.push(e.location.lineText);\n if (e.text) parts.push(e.text);\n errors.push(parts.length > 0 ? parts.join('\\n') : String(e));\n }\n } else {\n errors.push(err.message || String(err));\n }\n\n return { code: '', success: false, errors };\n }\n}\n\nasync function minifyWithEsbuild(code: string): Promise<BundleResult> {\n const esbuild = await getEsbuild();\n\n try {\n const result = await esbuild.transform(code, {\n minify: true,\n loader: 'js',\n });\n\n return { code: result.code, success: true, errors: [] };\n } catch (err: any) {\n const errors: string[] = [];\n if (err.errors && Array.isArray(err.errors)) {\n for (const e of err.errors) {\n const parts: string[] = [];\n if (e.location?.line) parts.push(`Line ${e.location.line}:${e.location.column || 0}`);\n if (e.location?.lineText) parts.push(e.location.lineText);\n if (e.text) parts.push(e.text);\n errors.push(parts.length > 0 ? parts.join('\\n') : String(e));\n }\n } else {\n errors.push(err.message || String(err));\n }\n\n return { code: '', success: false, errors };\n }\n}\n\nasync function validateWithEsbuild(code: string): Promise<string | null> {\n const esbuild = await getEsbuild();\n\n try {\n await esbuild.transform(code, { loader: 'js' });\n return null; // Valid\n } catch (err: any) {\n const errors: string[] = [];\n if (err.errors && Array.isArray(err.errors)) {\n for (const e of err.errors) {\n const parts: string[] = [];\n if (e.location?.line) parts.push(`Line ${e.location.line}:${e.location.column || 0}`);\n if (e.location?.lineText) parts.push(e.location.lineText);\n if (e.text) parts.push(e.text);\n errors.push(parts.length > 0 ? parts.join('\\n') : String(e));\n }\n } else {\n errors.push(err.message || String(err));\n }\n\n return errors.join('\\n\\n') || 'Unknown JavaScript error';\n }\n}\n", "/**\n * Runtime-agnostic HTTP server abstraction.\n * Uses Bun.serve when available, falls back to Node.js http + ws.\n */\n\nconst isBun = typeof globalThis.Bun !== 'undefined';\n\nexport interface RuntimeServer {\n port: number;\n /**\n * Stop the server. When `force` is true, active connections are\n * closed immediately (Bun: closeActiveConnections=true). Defaults to\n * a graceful stop that lets in-flight requests finish.\n */\n stop(force?: boolean): void;\n}\n\nexport interface RuntimeWSClient {\n send(data: string | ArrayBuffer | Uint8Array): void;\n readyState: number;\n close(code?: number, reason?: string): void;\n}\n\nexport interface ServerOptions {\n port: number;\n hostname?: string;\n fetch: (req: Request, upgradeWebSocket: (req: Request) => boolean) => Promise<Response | undefined>;\n websocket?: {\n open(ws: RuntimeWSClient): void;\n message(ws: RuntimeWSClient, data: string): void;\n close(ws: RuntimeWSClient): void;\n };\n /** Path to upgrade to WebSocket (e.g., \"/__hmr\") */\n wsPath?: string;\n}\n\nexport async function createRuntimeServer(\n options: ServerOptions,\n): Promise<RuntimeServer> {\n if (isBun) {\n return createBunServer(options);\n }\n return createNodeServer(options);\n}\n\n// \u2500\u2500 Bun implementation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nfunction createBunServer(options: ServerOptions): RuntimeServer {\n const { port, hostname, fetch, websocket, wsPath } = options;\n\n const bunConfig: any = {\n port,\n hostname: hostname || 'localhost',\n\n async fetch(req: Request, server: any) {\n // Create upgrade function that delegates to Bun's server.upgrade\n const upgradeWebSocket = (upgradeReq: Request): boolean => {\n return server.upgrade(upgradeReq);\n };\n\n const response = await fetch(req, upgradeWebSocket);\n return response || new Response('Not Found', { status: 404 });\n },\n };\n\n if (websocket) {\n bunConfig.websocket = {\n open(ws: RuntimeWSClient) {\n websocket.open(ws);\n },\n message(ws: RuntimeWSClient, message: unknown) {\n websocket.message(ws, String(message));\n },\n close(ws: RuntimeWSClient) {\n websocket.close(ws);\n },\n };\n }\n\n const server = Bun.serve(bunConfig);\n\n return {\n port: server.port ?? port,\n stop(force?: boolean) {\n server.stop(force === true);\n },\n };\n}\n\n// \u2500\u2500 Node.js implementation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nasync function createNodeServer(options: ServerOptions): Promise<RuntimeServer> {\n const { port, hostname, fetch, websocket, wsPath } = options;\n const http = await import('http');\n\n const server = http.createServer(async (nodeReq, nodeRes) => {\n try {\n // Convert Node.js IncomingMessage \u2192 Web Request\n const url = `http://${hostname || 'localhost'}:${port}${nodeReq.url || '/'}`;\n const headers = new Headers();\n for (const [key, value] of Object.entries(nodeReq.headers)) {\n if (value) {\n if (Array.isArray(value)) {\n for (const v of value) headers.append(key, v);\n } else {\n headers.set(key, value);\n }\n }\n }\n\n let body: ReadableStream | null = null;\n if (nodeReq.method !== 'GET' && nodeReq.method !== 'HEAD') {\n const { Readable } = await import('stream');\n body = Readable.toWeb(nodeReq) as unknown as ReadableStream;\n }\n\n const request = new Request(url, {\n method: nodeReq.method || 'GET',\n headers,\n body,\n // @ts-ignore - duplex is needed for streaming request bodies in Node\n duplex: body ? 'half' : undefined,\n });\n\n // No-op upgrade function for non-upgrade requests\n const upgradeWebSocket = (): boolean => false;\n\n const response = await fetch(request, upgradeWebSocket);\n if (!response) {\n nodeRes.writeHead(404);\n nodeRes.end('Not Found');\n return;\n }\n\n // Convert Web Response \u2192 Node.js ServerResponse\n nodeRes.writeHead(response.status, Object.fromEntries(response.headers.entries()));\n\n if (response.body) {\n const reader = response.body.getReader();\n const pump = async () => {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n nodeRes.end();\n break;\n }\n const canContinue = nodeRes.write(value);\n if (!canContinue) {\n await new Promise<void>((resolve) => nodeRes.once('drain', resolve));\n }\n }\n };\n await pump();\n } else {\n const text = await response.text();\n nodeRes.end(text);\n }\n } catch (err) {\n console.error('Server error:', err);\n if (!nodeRes.headersSent) {\n nodeRes.writeHead(500);\n nodeRes.end('Internal Server Error');\n }\n }\n });\n\n // WebSocket support via 'ws' package\n if (websocket && wsPath) {\n try {\n const { WebSocketServer } = await import('ws');\n const wss = new WebSocketServer({ noServer: true });\n\n server.on('upgrade', (request, socket, head) => {\n const pathname = new URL(\n request.url || '/',\n `http://${hostname || 'localhost'}:${port}`,\n ).pathname;\n\n if (pathname === wsPath) {\n wss.handleUpgrade(request, socket, head, (ws) => {\n wss.emit('connection', ws, request);\n });\n } else {\n socket.destroy();\n }\n });\n\n wss.on('connection', (ws) => {\n const client: RuntimeWSClient = {\n send(data) {\n if (ws.readyState === 1) { // OPEN\n ws.send(data);\n }\n },\n get readyState() {\n return ws.readyState;\n },\n close(code, reason) {\n ws.close(code, reason);\n },\n };\n\n websocket.open(client);\n\n ws.on('message', (data) => {\n websocket.message(client, data.toString());\n });\n\n ws.on('close', () => {\n websocket.close(client);\n });\n });\n } catch {\n console.warn('WebSocket support requires the \"ws\" package. Install it with: npm install ws');\n }\n }\n\n // Start listening\n return new Promise((resolve, reject) => {\n server.on('error', reject);\n server.listen(port, hostname || 'localhost', () => {\n const addr = server.address();\n const actualPort = typeof addr === 'object' && addr ? addr.port : port;\n\n resolve({\n port: actualPort,\n stop(_force?: boolean) {\n // Node http.Server.close is graceful by default; the force\n // flag is accepted for API parity with Bun but currently has\n // no additional effect on the Node path.\n server.close();\n },\n });\n });\n });\n}\n", "/**\n * Runtime Abstraction\n * Detects Bun vs Node.js and re-exports runtime-agnostic utilities.\n */\n\nexport const isBun = typeof globalThis.Bun !== 'undefined';\n\nexport {\n readTextFile,\n readJsonFile,\n fileExists,\n writeFile,\n serveFile,\n hashContent,\n inspect,\n ensureDir,\n getModuleDir,\n spawnProcess,\n getFileSize,\n getMimeType,\n} from './fs';\n\nexport {\n bundleFile,\n minifyJS,\n validateJS,\n type BundleResult,\n type BundleOptions,\n} from './bundler';\n\nexport {\n createRuntimeServer,\n type RuntimeServer,\n type RuntimeWSClient,\n type ServerOptions,\n} from './httpServer';\n", "import { join, dirname } from 'path';\nimport { getModuleDir } from './runtime';\n\nlet projectRoot: string = process.cwd();\n\n// Package root is where the editor files are installed (2 levels up from this file)\n// In packaged Electron builds, MENO_CORE_ROOT overrides import.meta.url resolution\nconst packageRoot = process.env.MENO_CORE_ROOT\n || join(dirname(getModuleDir(import.meta.url)), '..');\n\nexport function setProjectRoot(root: string): void {\n projectRoot = root;\n}\n\nexport function getProjectRoot(): string {\n return projectRoot;\n}\n\nexport function getPackageRoot(): string {\n return packageRoot;\n}\n\n// Path getters for project files (user's project)\nexport const projectPaths = {\n pages: () => join(projectRoot, 'pages'),\n templates: () => join(projectRoot, 'templates'),\n components: () => join(projectRoot, 'components'),\n fonts: () => join(projectRoot, 'fonts'),\n images: () => join(projectRoot, 'images'),\n videos: () => join(projectRoot, 'videos'),\n assets: () => join(projectRoot, 'assets'),\n icons: () => join(projectRoot, 'icons'),\n cms: () => join(projectRoot, 'cms'),\n libraries: () => join(projectRoot, 'libraries'),\n functions: () => join(projectRoot, 'functions'),\n config: () => join(projectRoot, 'project.config.json'),\n componentsConfig: () => join(projectRoot, 'components.config.json'),\n colors: () => join(projectRoot, 'colors.json'),\n variables: () => join(projectRoot, 'variables.json'),\n enums: () => join(projectRoot, 'enums.json'),\n dist: () => join(projectRoot, 'dist'),\n env: () => join(projectRoot, '.env'),\n get project() { return projectRoot; }, // Direct access to project root\n};\n\n// Path getters for package files (core assets)\n// Note: Editor-specific paths (editorHtml) are now in @meno/studio\nexport const packagePaths = {\n indexHtml: () => join(packageRoot, 'templates', 'index-router.html'),\n clientRouter: () => join(packageRoot, 'entries', 'client-router.tsx'),\n};\n\nexport function resolveProjectPath(...segments: string[]): string {\n return join(projectRoot, ...segments);\n}\n\nexport function resolvePackagePath(...segments: string[]): string {\n return join(packageRoot, ...segments);\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["writeFile", "join", "inspect", "rm", "isBun", "server", "isBun"]
|
|
7
|
-
}
|