meno-core 1.0.30 → 1.0.31
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/dist/bin/cli.js +359 -0
- package/dist/bin/cli.js.map +7 -0
- package/dist/build-static.js +36 -0
- package/dist/build-static.js.map +7 -0
- package/dist/chunks/chunk-2NBGG2LJ.js +433 -0
- package/dist/chunks/chunk-2NBGG2LJ.js.map +7 -0
- package/dist/chunks/chunk-4KWEMYQE.js +588 -0
- package/dist/chunks/chunk-4KWEMYQE.js.map +7 -0
- package/{lib/server/ssr/buildErrorOverlay.ts → dist/chunks/chunk-4OFZP5NQ.js} +19 -49
- package/dist/chunks/chunk-4OFZP5NQ.js.map +7 -0
- package/dist/chunks/chunk-7ZZIWLUS.js +3555 -0
- package/dist/chunks/chunk-7ZZIWLUS.js.map +7 -0
- package/dist/chunks/chunk-GB2LHWZF.js +183 -0
- package/dist/chunks/chunk-GB2LHWZF.js.map +7 -0
- package/dist/chunks/chunk-HE67KV43.js +1116 -0
- package/dist/chunks/chunk-HE67KV43.js.map +7 -0
- package/dist/chunks/chunk-INK4UWAN.js +3055 -0
- package/dist/chunks/chunk-INK4UWAN.js.map +7 -0
- package/dist/chunks/chunk-KSBZ2L7C.js +34 -0
- package/dist/chunks/chunk-KSBZ2L7C.js.map +7 -0
- package/dist/chunks/chunk-KULPBDC7.js +217 -0
- package/dist/chunks/chunk-KULPBDC7.js.map +7 -0
- package/dist/chunks/chunk-LIHJ6OUH.js +54 -0
- package/dist/chunks/chunk-LIHJ6OUH.js.map +7 -0
- package/dist/chunks/chunk-M4B7T6NE.js +200 -0
- package/dist/chunks/chunk-M4B7T6NE.js.map +7 -0
- package/dist/chunks/chunk-MJD62IUJ.js +462 -0
- package/dist/chunks/chunk-MJD62IUJ.js.map +7 -0
- package/dist/chunks/chunk-NBMAZOCJ.js +4503 -0
- package/dist/chunks/chunk-NBMAZOCJ.js.map +7 -0
- package/dist/chunks/chunk-PGH3ATYI.js +310 -0
- package/dist/chunks/chunk-PGH3ATYI.js.map +7 -0
- package/dist/chunks/chunk-RWTKZPWJ.js +201 -0
- package/dist/chunks/chunk-RWTKZPWJ.js.map +7 -0
- package/dist/chunks/chunk-UB44F4Z2.js +706 -0
- package/dist/chunks/chunk-UB44F4Z2.js.map +7 -0
- package/dist/chunks/configService-UJGQY46I.js +13 -0
- package/dist/chunks/configService-UJGQY46I.js.map +7 -0
- package/dist/chunks/constants-5CRJRQNR.js +46 -0
- package/dist/chunks/constants-5CRJRQNR.js.map +7 -0
- package/dist/chunks/fs-JMN4XQPQ.js +30 -0
- package/dist/chunks/fs-JMN4XQPQ.js.map +7 -0
- package/dist/entries/server-router.js +67 -0
- package/dist/entries/server-router.js.map +7 -0
- package/dist/lib/client/index.js +4763 -0
- package/dist/lib/client/index.js.map +7 -0
- package/dist/lib/server/index.js +202 -0
- package/dist/lib/server/index.js.map +7 -0
- package/dist/lib/shared/index.js +1516 -0
- package/dist/lib/shared/index.js.map +7 -0
- package/dist/lib/shared/richtext/index.js +18 -0
- package/dist/lib/shared/richtext/index.js.map +7 -0
- package/dist/lib/test-utils/index.js +1525 -0
- package/dist/lib/test-utils/index.js.map +7 -0
- package/package.json +2 -1
- package/.claude/settings.local.json +0 -7
- package/build-static.test.ts +0 -424
- package/build-static.ts +0 -1042
- package/bunfig.toml +0 -42
- package/entries/client-router.tsx +0 -206
- package/entries/server-router.tsx +0 -77
- package/lib/client/ClientInitializer.test.ts +0 -9
- package/lib/client/ClientInitializer.test.ts.skip +0 -92
- package/lib/client/ClientInitializer.ts +0 -110
- package/lib/client/ErrorBoundary.test.tsx +0 -595
- package/lib/client/ErrorBoundary.tsx +0 -230
- package/lib/client/InteractiveStylesRegistry.ts +0 -96
- package/lib/client/componentRegistry.test.ts +0 -211
- package/lib/client/componentRegistry.ts +0 -18
- package/lib/client/contexts/ThemeContext.tsx +0 -73
- package/lib/client/core/ComponentBuilder.test.ts +0 -1699
- package/lib/client/core/ComponentBuilder.ts +0 -994
- package/lib/client/core/ComponentRenderer.test.tsx +0 -175
- package/lib/client/core/ComponentRenderer.tsx +0 -90
- package/lib/client/core/builders/embedBuilder.ts +0 -229
- package/lib/client/core/builders/index.ts +0 -30
- package/lib/client/core/builders/linkBuilder.ts +0 -136
- package/lib/client/core/builders/linkNodeBuilder.ts +0 -216
- package/lib/client/core/builders/listBuilder.ts +0 -599
- package/lib/client/core/builders/localeListBuilder.ts +0 -235
- package/lib/client/core/builders/types.ts +0 -97
- package/lib/client/core/cmsTemplateProcessor.ts +0 -147
- package/lib/client/elementRegistry.ts +0 -117
- package/lib/client/hmr/HMRManager.tsx +0 -205
- package/lib/client/hmr/index.ts +0 -5
- package/lib/client/hmrWebSocket.test.ts +0 -9
- package/lib/client/hmrWebSocket.ts +0 -269
- package/lib/client/hooks/useColorVariables.test.ts +0 -166
- package/lib/client/hooks/useColorVariables.ts +0 -249
- package/lib/client/hooks/usePropertyAutocomplete.test.ts +0 -9
- package/lib/client/hooks/usePropertyAutocomplete.ts +0 -40
- package/lib/client/hooks/useVariables.ts +0 -101
- package/lib/client/hydration/HydrationUtils.test.ts +0 -154
- package/lib/client/hydration/HydrationUtils.ts +0 -35
- package/lib/client/i18nConfigService.test.ts +0 -73
- package/lib/client/i18nConfigService.ts +0 -78
- package/lib/client/index.ts +0 -61
- package/lib/client/meno-filter/MenoFilter.test.ts +0 -1230
- package/lib/client/meno-filter/MenoFilter.ts +0 -1281
- package/lib/client/meno-filter/bindings.ts +0 -555
- package/lib/client/meno-filter/constants.ts +0 -72
- package/lib/client/meno-filter/index.ts +0 -58
- package/lib/client/meno-filter/init.ts +0 -259
- package/lib/client/meno-filter/renderer.ts +0 -410
- package/lib/client/meno-filter/script.generated.ts +0 -56
- package/lib/client/meno-filter/types.ts +0 -165
- package/lib/client/meno-filter/ui.ts +0 -364
- package/lib/client/meno-filter/updates.ts +0 -674
- package/lib/client/meno-filter/utils.ts +0 -44
- package/lib/client/navigation.test.ts +0 -441
- package/lib/client/navigation.ts +0 -23
- package/lib/client/responsiveStyleResolver.test.ts +0 -496
- package/lib/client/responsiveStyleResolver.ts +0 -196
- package/lib/client/routing/RouteLoader.test.ts +0 -753
- package/lib/client/routing/RouteLoader.ts +0 -380
- package/lib/client/routing/Router.tsx +0 -651
- package/lib/client/scripts/ScriptExecutor.test.ts +0 -465
- package/lib/client/scripts/ScriptExecutor.ts +0 -317
- package/lib/client/scripts/formHandler.ts +0 -103
- package/lib/client/services/PrefetchService.test.ts +0 -362
- package/lib/client/services/PrefetchService.ts +0 -344
- package/lib/client/styleProcessor.test.ts +0 -126
- package/lib/client/styleProcessor.ts +0 -93
- package/lib/client/styles/StyleInjector.test.ts +0 -370
- package/lib/client/styles/StyleInjector.ts +0 -195
- package/lib/client/styles/UtilityClassCollector.ts +0 -208
- package/lib/client/templateEngine.test.ts +0 -787
- package/lib/client/templateEngine.ts +0 -828
- package/lib/client/theme.test.ts +0 -173
- package/lib/client/theme.ts +0 -147
- package/lib/client/utils/toast.ts +0 -47
- package/lib/server/__integration__/api-routes.test.ts +0 -148
- package/lib/server/__integration__/cms-integration.test.ts +0 -161
- package/lib/server/__integration__/server-lifecycle.test.ts +0 -101
- package/lib/server/__integration__/ssr-rendering.test.ts +0 -131
- package/lib/server/__integration__/static-assets.test.ts +0 -80
- package/lib/server/__integration__/test-helpers.ts +0 -205
- package/lib/server/ab/generateFunctions.ts +0 -346
- package/lib/server/ab/trackingScript.ts +0 -45
- package/lib/server/createServer.ts +0 -171
- package/lib/server/cssGenerator.test.ts +0 -172
- package/lib/server/cssGenerator.ts +0 -146
- package/lib/server/errors.ts +0 -65
- package/lib/server/fileWatcher.ts +0 -273
- package/lib/server/index.ts +0 -78
- package/lib/server/jsonLoader.test.ts +0 -106
- package/lib/server/jsonLoader.ts +0 -504
- package/lib/server/middleware/cors.test.ts +0 -177
- package/lib/server/middleware/cors.ts +0 -69
- package/lib/server/middleware/errorHandler.test.ts +0 -208
- package/lib/server/middleware/errorHandler.ts +0 -63
- package/lib/server/middleware/index.ts +0 -9
- package/lib/server/middleware/logger.test.ts +0 -233
- package/lib/server/middleware/logger.ts +0 -99
- package/lib/server/migrateTemplates.ts +0 -22
- package/lib/server/pageCache.test.ts +0 -167
- package/lib/server/pageCache.ts +0 -97
- package/lib/server/projectContext.ts +0 -58
- package/lib/server/providers/fileSystemCMSProvider.test.ts +0 -345
- package/lib/server/providers/fileSystemCMSProvider.ts +0 -340
- package/lib/server/providers/fileSystemPageProvider.ts +0 -152
- package/lib/server/routes/api/cms.test.ts +0 -183
- package/lib/server/routes/api/cms.ts +0 -131
- package/lib/server/routes/api/colors.test.ts +0 -103
- package/lib/server/routes/api/colors.ts +0 -44
- package/lib/server/routes/api/components.ts +0 -81
- package/lib/server/routes/api/config.test.ts +0 -9
- package/lib/server/routes/api/config.ts +0 -47
- package/lib/server/routes/api/core-routes.ts +0 -262
- package/lib/server/routes/api/enums.test.ts +0 -53
- package/lib/server/routes/api/enums.ts +0 -16
- package/lib/server/routes/api/functions.ts +0 -168
- package/lib/server/routes/api/index.ts +0 -69
- package/lib/server/routes/api/pages.ts +0 -97
- package/lib/server/routes/api/shared.test.ts +0 -81
- package/lib/server/routes/api/shared.ts +0 -31
- package/lib/server/routes/api/variables.test.ts +0 -74
- package/lib/server/routes/api/variables.ts +0 -32
- package/lib/server/routes/editor.test.ts +0 -9
- package/lib/server/routes/index.ts +0 -147
- package/lib/server/routes/pages.ts +0 -265
- package/lib/server/routes/static.ts +0 -95
- package/lib/server/runtime/bundler.ts +0 -285
- package/lib/server/runtime/fs.ts +0 -232
- package/lib/server/runtime/httpServer.ts +0 -228
- package/lib/server/runtime/index.ts +0 -36
- package/lib/server/scriptCache.ts +0 -36
- package/lib/server/services/CachedConfigLoader.ts +0 -55
- package/lib/server/services/ColorService.test.ts +0 -216
- package/lib/server/services/ColorService.ts +0 -224
- package/lib/server/services/EnumService.test.ts +0 -192
- package/lib/server/services/EnumService.ts +0 -123
- package/lib/server/services/VariableService.test.ts +0 -183
- package/lib/server/services/VariableService.ts +0 -101
- package/lib/server/services/cmsService.test.ts +0 -792
- package/lib/server/services/cmsService.ts +0 -682
- package/lib/server/services/componentService.test.ts +0 -276
- package/lib/server/services/componentService.ts +0 -570
- package/lib/server/services/configService.test.ts +0 -856
- package/lib/server/services/configService.ts +0 -271
- package/lib/server/services/fileWatcherService.ts +0 -122
- package/lib/server/services/index.ts +0 -10
- package/lib/server/services/pageService.test.ts +0 -258
- package/lib/server/services/pageService.ts +0 -402
- package/lib/server/ssr/attributeBuilder.ts +0 -90
- package/lib/server/ssr/clientDataInjector.test.ts +0 -337
- package/lib/server/ssr/clientDataInjector.ts +0 -161
- package/lib/server/ssr/cmsSSRProcessor.ts +0 -113
- package/lib/server/ssr/cssCollector.ts +0 -33
- package/lib/server/ssr/errorOverlay.test.ts +0 -73
- package/lib/server/ssr/errorOverlay.ts +0 -263
- package/lib/server/ssr/htmlGenerator.test.ts +0 -993
- package/lib/server/ssr/htmlGenerator.ts +0 -461
- package/lib/server/ssr/imageMetadata.test.ts +0 -168
- package/lib/server/ssr/imageMetadata.ts +0 -179
- package/lib/server/ssr/index.ts +0 -35
- package/lib/server/ssr/jsCollector.test.ts +0 -287
- package/lib/server/ssr/jsCollector.ts +0 -155
- package/lib/server/ssr/metaTagGenerator.ts +0 -137
- package/lib/server/ssr/ssrRenderer.test.ts +0 -3868
- package/lib/server/ssr/ssrRenderer.ts +0 -1712
- package/lib/server/ssrRenderer.test.ts +0 -2114
- package/lib/server/ssrRenderer.ts +0 -11
- package/lib/server/utilityClassGenerator.ts +0 -11
- package/lib/server/utils/index.ts +0 -5
- package/lib/server/utils/jsonLineMapper.test.ts +0 -100
- package/lib/server/utils/jsonLineMapper.ts +0 -166
- package/lib/server/validateStyleCoverage.test.ts +0 -9
- package/lib/server/validateStyleCoverage.ts +0 -163
- package/lib/server/websocketManager.test.ts +0 -9
- package/lib/server/websocketManager.ts +0 -135
- package/lib/shared/attributeNodeUtils.test.ts +0 -152
- package/lib/shared/attributeNodeUtils.ts +0 -50
- package/lib/shared/breakpoints.test.ts +0 -353
- package/lib/shared/breakpoints.ts +0 -172
- package/lib/shared/cmsQueryParser.test.ts +0 -288
- package/lib/shared/cmsQueryParser.ts +0 -188
- package/lib/shared/colorConversions.test.ts +0 -140
- package/lib/shared/colorConversions.ts +0 -181
- package/lib/shared/colorProperties.test.ts +0 -111
- package/lib/shared/colorProperties.ts +0 -40
- package/lib/shared/colorVariableUtils.test.ts +0 -319
- package/lib/shared/colorVariableUtils.ts +0 -97
- package/lib/shared/constants.test.ts +0 -175
- package/lib/shared/constants.ts +0 -177
- package/lib/shared/cssGeneration.test.ts +0 -192
- package/lib/shared/cssGeneration.ts +0 -903
- package/lib/shared/cssProperties.test.ts +0 -252
- package/lib/shared/cssProperties.ts +0 -470
- package/lib/shared/elementClassName.test.ts +0 -319
- package/lib/shared/elementClassName.ts +0 -102
- package/lib/shared/elementUtils.test.ts +0 -245
- package/lib/shared/elementUtils.ts +0 -90
- package/lib/shared/errorLogger.test.ts +0 -136
- package/lib/shared/errorLogger.ts +0 -87
- package/lib/shared/errors.test.ts +0 -99
- package/lib/shared/errors.ts +0 -50
- package/lib/shared/expressionEvaluator.ts +0 -161
- package/lib/shared/fontLoader.test.ts +0 -344
- package/lib/shared/fontLoader.ts +0 -158
- package/lib/shared/globalTemplateContext.ts +0 -45
- package/lib/shared/gradientUtils.test.ts +0 -183
- package/lib/shared/gradientUtils.ts +0 -184
- package/lib/shared/i18n.test.ts +0 -419
- package/lib/shared/i18n.ts +0 -312
- package/lib/shared/index.ts +0 -128
- package/lib/shared/interactiveStyleMappings.test.ts +0 -463
- package/lib/shared/interactiveStyleMappings.ts +0 -284
- package/lib/shared/interactiveStyles.test.ts +0 -486
- package/lib/shared/interfaces/contentProvider.test.ts +0 -9
- package/lib/shared/interfaces/contentProvider.ts +0 -124
- package/lib/shared/itemTemplateUtils.test.ts +0 -740
- package/lib/shared/itemTemplateUtils.ts +0 -472
- package/lib/shared/libraryLoader.test.ts +0 -503
- package/lib/shared/libraryLoader.ts +0 -217
- package/lib/shared/linkUtils.ts +0 -24
- package/lib/shared/nodeUtils.test.ts +0 -543
- package/lib/shared/nodeUtils.ts +0 -419
- package/lib/shared/pathArrayUtils.test.ts +0 -315
- package/lib/shared/pathArrayUtils.ts +0 -17
- package/lib/shared/pathSecurity.test.ts +0 -156
- package/lib/shared/pathSecurity.ts +0 -95
- package/lib/shared/pathUtils.test.ts +0 -260
- package/lib/shared/pathUtils.ts +0 -244
- package/lib/shared/paths/Path.test.ts +0 -74
- package/lib/shared/paths/Path.ts +0 -23
- package/lib/shared/paths/PathConverter.test.ts +0 -232
- package/lib/shared/paths/PathConverter.ts +0 -141
- package/lib/shared/paths/PathUtils.ts +0 -290
- package/lib/shared/paths/PathValidator.test.ts +0 -193
- package/lib/shared/paths/PathValidator.ts +0 -53
- package/lib/shared/paths/index.ts +0 -48
- package/lib/shared/propResolver.test.ts +0 -744
- package/lib/shared/propResolver.ts +0 -211
- package/lib/shared/registry/BaseNodeTypeRegistry.test.ts +0 -190
- package/lib/shared/registry/BaseNodeTypeRegistry.ts +0 -200
- package/lib/shared/registry/ClientNodeTypeRegistry.ts +0 -34
- package/lib/shared/registry/ClientRegistry.test.ts +0 -26
- package/lib/shared/registry/ClientRegistry.ts +0 -15
- package/lib/shared/registry/ComponentRegistry.test.ts +0 -293
- package/lib/shared/registry/ComponentRegistry.ts +0 -100
- package/lib/shared/registry/NodeTypeDefinition.ts +0 -198
- package/lib/shared/registry/NodeTypeManager.ts +0 -94
- package/lib/shared/registry/RegistryManager.test.ts +0 -58
- package/lib/shared/registry/RegistryManager.ts +0 -60
- package/lib/shared/registry/SSRNodeTypeRegistry.ts +0 -33
- package/lib/shared/registry/SSRRegistry.test.ts +0 -26
- package/lib/shared/registry/SSRRegistry.ts +0 -15
- package/lib/shared/registry/createNodeType.ts +0 -175
- package/lib/shared/registry/defineNodeType.ts +0 -73
- package/lib/shared/registry/fieldPresets.ts +0 -109
- package/lib/shared/registry/index.ts +0 -51
- package/lib/shared/registry/nodeTypes/ComponentInstanceNodeType.ts +0 -75
- package/lib/shared/registry/nodeTypes/EmbedNodeType.ts +0 -67
- package/lib/shared/registry/nodeTypes/HtmlNodeType.ts +0 -92
- package/lib/shared/registry/nodeTypes/LinkNodeType.ts +0 -79
- package/lib/shared/registry/nodeTypes/ListNodeType.ts +0 -176
- package/lib/shared/registry/nodeTypes/LocaleListNodeType.ts +0 -72
- package/lib/shared/registry/nodeTypes/SlotMarkerType.ts +0 -55
- package/lib/shared/registry/nodeTypes/index.ts +0 -76
- package/lib/shared/responsiveScaling.test.ts +0 -368
- package/lib/shared/responsiveScaling.ts +0 -203
- package/lib/shared/responsiveStyleUtils.test.ts +0 -300
- package/lib/shared/responsiveStyleUtils.ts +0 -145
- package/lib/shared/richtext/htmlToTiptap.test.ts +0 -948
- package/lib/shared/richtext/htmlToTiptap.ts +0 -542
- package/lib/shared/richtext/index.ts +0 -8
- package/lib/shared/richtext/tiptapToHtml.test.ts +0 -322
- package/lib/shared/richtext/tiptapToHtml.ts +0 -448
- package/lib/shared/richtext/types.ts +0 -86
- package/lib/shared/slugTranslator.test.ts +0 -325
- package/lib/shared/slugTranslator.ts +0 -179
- package/lib/shared/slugify.ts +0 -118
- package/lib/shared/styleNodeUtils.test.ts +0 -132
- package/lib/shared/styleNodeUtils.ts +0 -102
- package/lib/shared/styleUtils.test.ts +0 -238
- package/lib/shared/styleUtils.ts +0 -63
- package/lib/shared/styleValueRegistry.ts +0 -106
- package/lib/shared/themeDefaults.test.ts +0 -163
- package/lib/shared/themeDefaults.ts +0 -129
- package/lib/shared/tree/PathBuilder.test.ts +0 -395
- package/lib/shared/tree/PathBuilder.ts +0 -409
- package/lib/shared/treePathUtils.test.ts +0 -539
- package/lib/shared/treePathUtils.ts +0 -357
- package/lib/shared/types/api.ts +0 -64
- package/lib/shared/types/cms.ts +0 -291
- package/lib/shared/types/colors.ts +0 -55
- package/lib/shared/types/components.ts +0 -188
- package/lib/shared/types/config.ts +0 -38
- package/lib/shared/types/errors.test.ts +0 -103
- package/lib/shared/types/errors.ts +0 -69
- package/lib/shared/types/experiments.ts +0 -55
- package/lib/shared/types/index.ts +0 -174
- package/lib/shared/types/libraries.ts +0 -74
- package/lib/shared/types/nodes.ts +0 -19
- package/lib/shared/types/prefetch.ts +0 -78
- package/lib/shared/types/rendering.ts +0 -62
- package/lib/shared/types/styles.ts +0 -83
- package/lib/shared/types/variables.test.ts +0 -132
- package/lib/shared/types/variables.ts +0 -215
- package/lib/shared/types.ts +0 -11
- package/lib/shared/utilityClassConfig.ts +0 -454
- package/lib/shared/utilityClassMapper.test.ts +0 -175
- package/lib/shared/utilityClassMapper.ts +0 -350
- package/lib/shared/utils/fileUtils.test.ts +0 -99
- package/lib/shared/utils/fileUtils.ts +0 -56
- package/lib/shared/utils.test.ts +0 -261
- package/lib/shared/utils.ts +0 -112
- package/lib/shared/validation/cmsValidators.ts +0 -38
- package/lib/shared/validation/index.ts +0 -8
- package/lib/shared/validation/propValidator.test.ts +0 -272
- package/lib/shared/validation/propValidator.ts +0 -265
- package/lib/shared/validation/schemas.test.ts +0 -177
- package/lib/shared/validation/schemas.ts +0 -640
- package/lib/shared/validation/validators.test.ts +0 -108
- package/lib/shared/validation/validators.ts +0 -304
- package/lib/test-utils/dom-setup.ts +0 -56
- package/lib/test-utils/factories/ConsoleMockFactory.ts +0 -200
- package/lib/test-utils/factories/DomMockFactory.ts +0 -487
- package/lib/test-utils/factories/EventMockFactory.ts +0 -244
- package/lib/test-utils/factories/FetchMockFactory.ts +0 -210
- package/lib/test-utils/factories/ServerMockFactory.ts +0 -223
- package/lib/test-utils/factories/StoreMockFactory.ts +0 -370
- package/lib/test-utils/factories/index.ts +0 -11
- package/lib/test-utils/fixtures.ts +0 -134
- package/lib/test-utils/helpers/asyncHelpers.test.ts +0 -112
- package/lib/test-utils/helpers/asyncHelpers.ts +0 -196
- package/lib/test-utils/helpers/index.ts +0 -6
- package/lib/test-utils/helpers.test.ts +0 -73
- package/lib/test-utils/helpers.ts +0 -90
- package/lib/test-utils/index.ts +0 -18
- package/lib/test-utils/mockFactories.ts +0 -92
- package/lib/test-utils/mocks.ts +0 -341
- package/scripts/build-for-publish.mjs +0 -43
- package/scripts/build-meno-filter.ts +0 -110
- package/templates/index-router.html +0 -34
- package/tsconfig.json +0 -14
- package/vite.config.ts +0 -43
package/dist/bin/cli.js
ADDED
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
generateBuildErrorPage
|
|
4
|
+
} from "../chunks/chunk-4OFZP5NQ.js";
|
|
5
|
+
import {
|
|
6
|
+
createRuntimeServer,
|
|
7
|
+
setProjectRoot
|
|
8
|
+
} from "../chunks/chunk-MJD62IUJ.js";
|
|
9
|
+
import {
|
|
10
|
+
fileExists,
|
|
11
|
+
serveFile
|
|
12
|
+
} from "../chunks/chunk-GB2LHWZF.js";
|
|
13
|
+
import "../chunks/chunk-KSBZ2L7C.js";
|
|
14
|
+
|
|
15
|
+
// bin/cli.ts
|
|
16
|
+
import { resolve, join } from "path";
|
|
17
|
+
import { existsSync, mkdirSync, writeFileSync, readFileSync } from "fs";
|
|
18
|
+
var args = process.argv.slice(2);
|
|
19
|
+
var command = args[0];
|
|
20
|
+
function printHelp() {
|
|
21
|
+
console.log(`
|
|
22
|
+
meno - Visual editor for JSON-based pages
|
|
23
|
+
|
|
24
|
+
Requirements:
|
|
25
|
+
- Bun or Node.js 18+
|
|
26
|
+
|
|
27
|
+
Usage:
|
|
28
|
+
meno <command> [options]
|
|
29
|
+
|
|
30
|
+
Commands:
|
|
31
|
+
dev Start development server with hot reload
|
|
32
|
+
build Build static HTML files for production
|
|
33
|
+
serve Serve built files from ./dist on port 8080
|
|
34
|
+
init Initialize a new project
|
|
35
|
+
|
|
36
|
+
Options:
|
|
37
|
+
build --dev Include draft pages in build (for local preview)
|
|
38
|
+
|
|
39
|
+
Examples:
|
|
40
|
+
meno dev Start dev server in current directory
|
|
41
|
+
meno build Build static files to ./dist (excludes drafts)
|
|
42
|
+
meno build --dev Build including draft pages
|
|
43
|
+
meno serve Serve built files on port 8080
|
|
44
|
+
meno init my-project Create new project in ./my-project
|
|
45
|
+
`);
|
|
46
|
+
}
|
|
47
|
+
function parseHeadersFile(distPath) {
|
|
48
|
+
const headersPath = join(distPath, "_headers");
|
|
49
|
+
const headers = /* @__PURE__ */ new Map();
|
|
50
|
+
if (!existsSync(headersPath)) return headers;
|
|
51
|
+
const content = readFileSync(headersPath, "utf-8");
|
|
52
|
+
let currentPath = "";
|
|
53
|
+
for (const line of content.split("\n")) {
|
|
54
|
+
const trimmed = line.trim();
|
|
55
|
+
if (!trimmed || trimmed.startsWith("#")) continue;
|
|
56
|
+
if (!line.startsWith(" ") && !line.startsWith(" ")) {
|
|
57
|
+
currentPath = trimmed;
|
|
58
|
+
if (!headers.has(currentPath)) {
|
|
59
|
+
headers.set(currentPath, {});
|
|
60
|
+
}
|
|
61
|
+
} else if (currentPath && trimmed.includes(":")) {
|
|
62
|
+
const colonIndex = trimmed.indexOf(":");
|
|
63
|
+
const name = trimmed.substring(0, colonIndex).trim();
|
|
64
|
+
const value = trimmed.substring(colonIndex + 1).trim();
|
|
65
|
+
headers.get(currentPath)[name] = value;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return headers;
|
|
69
|
+
}
|
|
70
|
+
function getMatchingHeaders(pathname, headersMap) {
|
|
71
|
+
const result = {};
|
|
72
|
+
headersMap.forEach((headers, pattern) => {
|
|
73
|
+
if (pattern === pathname || pattern === "/*") {
|
|
74
|
+
Object.assign(result, headers);
|
|
75
|
+
} else if (pattern.endsWith("/*")) {
|
|
76
|
+
const prefix = pattern.slice(0, -1);
|
|
77
|
+
if (pathname.startsWith(prefix)) {
|
|
78
|
+
Object.assign(result, headers);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
async function startStaticServer(distPath) {
|
|
85
|
+
const { SERVE_PORT } = await import("../chunks/constants-5CRJRQNR.js");
|
|
86
|
+
const headersMap = parseHeadersFile(distPath);
|
|
87
|
+
const server = await createRuntimeServer({
|
|
88
|
+
port: SERVE_PORT,
|
|
89
|
+
hostname: "localhost",
|
|
90
|
+
async fetch(req) {
|
|
91
|
+
const url = new URL(req.url);
|
|
92
|
+
let pathname = url.pathname;
|
|
93
|
+
if (pathname !== "/_errors.json") {
|
|
94
|
+
const errorsPath = join(distPath, "_errors.json");
|
|
95
|
+
if (existsSync(errorsPath)) {
|
|
96
|
+
try {
|
|
97
|
+
const errorsData = JSON.parse(readFileSync(errorsPath, "utf-8"));
|
|
98
|
+
return new Response(generateBuildErrorPage(errorsData), {
|
|
99
|
+
headers: { "Content-Type": "text/html; charset=utf-8" }
|
|
100
|
+
});
|
|
101
|
+
} catch {
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (pathname === "/") {
|
|
106
|
+
pathname = "/index.html";
|
|
107
|
+
}
|
|
108
|
+
const customHeaders = getMatchingHeaders(pathname, headersMap);
|
|
109
|
+
const filePath = join(distPath, pathname);
|
|
110
|
+
if (await fileExists(filePath)) {
|
|
111
|
+
return await serveFile(filePath, customHeaders);
|
|
112
|
+
}
|
|
113
|
+
const htmlPath = filePath.endsWith(".html") ? filePath : `${filePath}.html`;
|
|
114
|
+
if (await fileExists(htmlPath)) {
|
|
115
|
+
return await serveFile(htmlPath, customHeaders);
|
|
116
|
+
}
|
|
117
|
+
const indexPath = join(filePath, "index.html");
|
|
118
|
+
if (await fileExists(indexPath)) {
|
|
119
|
+
return await serveFile(indexPath, customHeaders);
|
|
120
|
+
}
|
|
121
|
+
return new Response("Not Found", { status: 404 });
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
return server;
|
|
125
|
+
}
|
|
126
|
+
async function runDev() {
|
|
127
|
+
const projectRoot = process.cwd();
|
|
128
|
+
if (!existsSync(join(projectRoot, "pages"))) {
|
|
129
|
+
console.error("\u274C No pages directory found. Are you in a valid project directory?");
|
|
130
|
+
console.error(' Run "meno init <project-name>" to create a new project.');
|
|
131
|
+
process.exit(1);
|
|
132
|
+
}
|
|
133
|
+
setProjectRoot(projectRoot);
|
|
134
|
+
console.log(`\u{1F4C1} Project root: ${projectRoot}`);
|
|
135
|
+
const distPath = join(projectRoot, "dist");
|
|
136
|
+
if (existsSync(distPath)) {
|
|
137
|
+
const staticServer = await startStaticServer(distPath);
|
|
138
|
+
console.log(`\u{1F680} Static server running at http://localhost:${staticServer.port}`);
|
|
139
|
+
}
|
|
140
|
+
await import("../entries/server-router.js");
|
|
141
|
+
}
|
|
142
|
+
async function runBuild(isDev = false) {
|
|
143
|
+
const projectRoot = process.cwd();
|
|
144
|
+
if (!existsSync(join(projectRoot, "pages"))) {
|
|
145
|
+
console.error("\u274C No pages directory found. Are you in a valid project directory?");
|
|
146
|
+
process.exit(1);
|
|
147
|
+
}
|
|
148
|
+
setProjectRoot(projectRoot);
|
|
149
|
+
if (isDev) {
|
|
150
|
+
process.env.MENO_DEV_BUILD = "true";
|
|
151
|
+
}
|
|
152
|
+
console.log(`\u{1F4C1} Building project: ${projectRoot}${isDev ? " (dev mode - including drafts)" : ""}`);
|
|
153
|
+
const { buildStaticPages } = await import("../build-static.js");
|
|
154
|
+
await buildStaticPages();
|
|
155
|
+
}
|
|
156
|
+
async function runServe() {
|
|
157
|
+
const projectRoot = process.cwd();
|
|
158
|
+
const distPath = join(projectRoot, "dist");
|
|
159
|
+
if (!existsSync(distPath)) {
|
|
160
|
+
console.error('\u274C No dist directory found. Run "meno build" first.');
|
|
161
|
+
process.exit(1);
|
|
162
|
+
}
|
|
163
|
+
console.log(`\u{1F4C1} Serving built files from: ${distPath}`);
|
|
164
|
+
const server = await startStaticServer(distPath);
|
|
165
|
+
console.log(`\u{1F680} Static server running at http://localhost:${server.port}`);
|
|
166
|
+
await new Promise(() => {
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
async function runInit(projectName) {
|
|
170
|
+
if (!projectName) {
|
|
171
|
+
console.error("\u274C Please provide a project name: meno init <project-name>");
|
|
172
|
+
process.exit(1);
|
|
173
|
+
}
|
|
174
|
+
const projectPath = resolve(process.cwd(), projectName);
|
|
175
|
+
if (existsSync(projectPath)) {
|
|
176
|
+
console.error(`\u274C Directory "${projectName}" already exists.`);
|
|
177
|
+
process.exit(1);
|
|
178
|
+
}
|
|
179
|
+
console.log(`
|
|
180
|
+
\u{1F680} Creating new meno project: ${projectName}
|
|
181
|
+
`);
|
|
182
|
+
mkdirSync(projectPath, { recursive: true });
|
|
183
|
+
mkdirSync(join(projectPath, "pages"));
|
|
184
|
+
mkdirSync(join(projectPath, "components"));
|
|
185
|
+
mkdirSync(join(projectPath, "fonts"));
|
|
186
|
+
mkdirSync(join(projectPath, "images"));
|
|
187
|
+
const defaultConfig = {
|
|
188
|
+
fonts: [],
|
|
189
|
+
editor: {
|
|
190
|
+
theme: "dark"
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
writeFileSync(
|
|
194
|
+
join(projectPath, "project.config.json"),
|
|
195
|
+
JSON.stringify(defaultConfig, null, 2)
|
|
196
|
+
);
|
|
197
|
+
const defaultColors = {
|
|
198
|
+
default: "light",
|
|
199
|
+
themes: {
|
|
200
|
+
light: {
|
|
201
|
+
label: "Light",
|
|
202
|
+
colors: {
|
|
203
|
+
text: "#1f2937",
|
|
204
|
+
bg: "#ffffff"
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
writeFileSync(
|
|
210
|
+
join(projectPath, "colors.json"),
|
|
211
|
+
JSON.stringify(defaultColors, null, 2)
|
|
212
|
+
);
|
|
213
|
+
const packageJson = {
|
|
214
|
+
name: projectName,
|
|
215
|
+
version: "1.0.0",
|
|
216
|
+
private: true,
|
|
217
|
+
scripts: {
|
|
218
|
+
dev: "meno dev",
|
|
219
|
+
build: "meno build"
|
|
220
|
+
},
|
|
221
|
+
dependencies: {
|
|
222
|
+
"meno-core": "^1.0.0"
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
writeFileSync(
|
|
226
|
+
join(projectPath, "package.json"),
|
|
227
|
+
JSON.stringify(packageJson, null, 2)
|
|
228
|
+
);
|
|
229
|
+
const gitignore = `# Dependencies
|
|
230
|
+
node_modules/
|
|
231
|
+
|
|
232
|
+
# Build output
|
|
233
|
+
dist/
|
|
234
|
+
|
|
235
|
+
# OS files
|
|
236
|
+
.DS_Store
|
|
237
|
+
`;
|
|
238
|
+
writeFileSync(
|
|
239
|
+
join(projectPath, ".gitignore"),
|
|
240
|
+
gitignore
|
|
241
|
+
);
|
|
242
|
+
const netlifyConfig = `[build]
|
|
243
|
+
command = "bun install && bun run build"
|
|
244
|
+
publish = "dist"
|
|
245
|
+
|
|
246
|
+
[build.environment]
|
|
247
|
+
BUN_VERSION = "1"
|
|
248
|
+
`;
|
|
249
|
+
writeFileSync(
|
|
250
|
+
join(projectPath, "netlify.toml"),
|
|
251
|
+
netlifyConfig
|
|
252
|
+
);
|
|
253
|
+
const vercelConfig = {
|
|
254
|
+
buildCommand: "bun run build",
|
|
255
|
+
outputDirectory: "dist",
|
|
256
|
+
installCommand: "bun install"
|
|
257
|
+
};
|
|
258
|
+
writeFileSync(
|
|
259
|
+
join(projectPath, "vercel.json"),
|
|
260
|
+
JSON.stringify(vercelConfig, null, 2)
|
|
261
|
+
);
|
|
262
|
+
const cloudflareConfig = `name = "${projectName}"
|
|
263
|
+
compatibility_date = "2024-01-01"
|
|
264
|
+
pages_build_output_dir = "dist"
|
|
265
|
+
|
|
266
|
+
[build]
|
|
267
|
+
command = "bun install && bun run build"
|
|
268
|
+
`;
|
|
269
|
+
writeFileSync(
|
|
270
|
+
join(projectPath, "wrangler.toml"),
|
|
271
|
+
cloudflareConfig
|
|
272
|
+
);
|
|
273
|
+
const defaultPage = {
|
|
274
|
+
meta: {
|
|
275
|
+
title: "Your Project Title",
|
|
276
|
+
description: "Your Project Description",
|
|
277
|
+
keywords: "",
|
|
278
|
+
ogTitle: "Your Project Title",
|
|
279
|
+
ogDescription: "Your Project Description",
|
|
280
|
+
ogType: "website"
|
|
281
|
+
},
|
|
282
|
+
root: {
|
|
283
|
+
type: "node",
|
|
284
|
+
tag: "div",
|
|
285
|
+
style: {
|
|
286
|
+
base: {
|
|
287
|
+
padding: "40px"
|
|
288
|
+
},
|
|
289
|
+
tablet: {},
|
|
290
|
+
mobile: {}
|
|
291
|
+
},
|
|
292
|
+
children: [
|
|
293
|
+
{
|
|
294
|
+
type: "node",
|
|
295
|
+
tag: "h1",
|
|
296
|
+
style: {
|
|
297
|
+
base: {}
|
|
298
|
+
},
|
|
299
|
+
children: "Hello"
|
|
300
|
+
}
|
|
301
|
+
]
|
|
302
|
+
}
|
|
303
|
+
};
|
|
304
|
+
writeFileSync(
|
|
305
|
+
join(projectPath, "pages", "index.json"),
|
|
306
|
+
JSON.stringify(defaultPage, null, 2)
|
|
307
|
+
);
|
|
308
|
+
console.log("\u2705 Created project structure:");
|
|
309
|
+
console.log(` ${projectName}/`);
|
|
310
|
+
console.log(" \u251C\u2500\u2500 pages/");
|
|
311
|
+
console.log(" \u2502 \u2514\u2500\u2500 index.json");
|
|
312
|
+
console.log(" \u251C\u2500\u2500 components/");
|
|
313
|
+
console.log(" \u251C\u2500\u2500 fonts/");
|
|
314
|
+
console.log(" \u251C\u2500\u2500 images/");
|
|
315
|
+
console.log(" \u251C\u2500\u2500 colors.json");
|
|
316
|
+
console.log(" \u251C\u2500\u2500 project.config.json");
|
|
317
|
+
console.log(" \u251C\u2500\u2500 package.json");
|
|
318
|
+
console.log(" \u251C\u2500\u2500 netlify.toml");
|
|
319
|
+
console.log(" \u251C\u2500\u2500 vercel.json");
|
|
320
|
+
console.log(" \u251C\u2500\u2500 wrangler.toml");
|
|
321
|
+
console.log(" \u2514\u2500\u2500 .gitignore");
|
|
322
|
+
console.log("\n\u{1F389} Project created successfully!\n");
|
|
323
|
+
console.log("Requirements:");
|
|
324
|
+
console.log(" Bun - https://bun.sh");
|
|
325
|
+
console.log("");
|
|
326
|
+
console.log("Next steps:");
|
|
327
|
+
console.log(` cd ${projectName}`);
|
|
328
|
+
console.log(" bun install # Install dependencies");
|
|
329
|
+
console.log(" bun run dev # Start dev server");
|
|
330
|
+
console.log("");
|
|
331
|
+
console.log("Deploy:");
|
|
332
|
+
console.log(" Push to GitHub and connect to Netlify/Vercel/Cloudflare");
|
|
333
|
+
console.log(" Config files included - auto-detected!");
|
|
334
|
+
console.log("");
|
|
335
|
+
}
|
|
336
|
+
switch (command) {
|
|
337
|
+
case "dev":
|
|
338
|
+
runDev();
|
|
339
|
+
break;
|
|
340
|
+
case "build":
|
|
341
|
+
runBuild(args.includes("--dev"));
|
|
342
|
+
break;
|
|
343
|
+
case "serve":
|
|
344
|
+
runServe();
|
|
345
|
+
break;
|
|
346
|
+
case "init":
|
|
347
|
+
runInit(args[1]);
|
|
348
|
+
break;
|
|
349
|
+
case "--help":
|
|
350
|
+
case "-h":
|
|
351
|
+
case void 0:
|
|
352
|
+
printHelp();
|
|
353
|
+
break;
|
|
354
|
+
default:
|
|
355
|
+
console.error(`Unknown command: ${command}`);
|
|
356
|
+
printHelp();
|
|
357
|
+
process.exit(1);
|
|
358
|
+
}
|
|
359
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../bin/cli.ts"],
|
|
4
|
+
"sourcesContent": ["#!/usr/bin/env node\n/**\n * meno CLI\n * Commands: dev, build, init\n */\n\nimport { resolve, join } from 'path';\nimport { existsSync, mkdirSync, writeFileSync, cpSync, readFileSync } from 'fs';\nimport { setProjectRoot } from '../lib/server/projectContext';\nimport { generateBuildErrorPage, type BuildErrorsData } from '../lib/server/ssr/buildErrorOverlay';\nimport { createRuntimeServer, serveFile, fileExists as runtimeFileExists } from '../lib/server/runtime';\n\nconst args = process.argv.slice(2);\nconst command = args[0];\n\nfunction printHelp() {\n console.log(`\nmeno - Visual editor for JSON-based pages\n\nRequirements:\n - Bun or Node.js 18+\n\nUsage:\n meno <command> [options]\n\nCommands:\n dev Start development server with hot reload\n build Build static HTML files for production\n serve Serve built files from ./dist on port 8080\n init Initialize a new project\n\nOptions:\n build --dev Include draft pages in build (for local preview)\n\nExamples:\n meno dev Start dev server in current directory\n meno build Build static files to ./dist (excludes drafts)\n meno build --dev Build including draft pages\n meno serve Serve built files on port 8080\n meno init my-project Create new project in ./my-project\n`);\n}\n\n// Parse _headers file (Netlify/Cloudflare format)\nfunction parseHeadersFile(distPath: string): Map<string, Record<string, string>> {\n const headersPath = join(distPath, '_headers');\n const headers = new Map<string, Record<string, string>>();\n\n if (!existsSync(headersPath)) return headers;\n\n const content = readFileSync(headersPath, 'utf-8');\n let currentPath = '';\n\n for (const line of content.split('\\n')) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith('#')) continue;\n\n if (!line.startsWith(' ') && !line.startsWith('\\t')) {\n // Path line\n currentPath = trimmed;\n if (!headers.has(currentPath)) {\n headers.set(currentPath, {});\n }\n } else if (currentPath && trimmed.includes(':')) {\n // Header line\n const colonIndex = trimmed.indexOf(':');\n const name = trimmed.substring(0, colonIndex).trim();\n const value = trimmed.substring(colonIndex + 1).trim();\n headers.get(currentPath)![name] = value;\n }\n }\n\n return headers;\n}\n\n// Get headers matching a pathname\nfunction getMatchingHeaders(\n pathname: string,\n headersMap: Map<string, Record<string, string>>\n): Record<string, string> {\n const result: Record<string, string> = {};\n\n headersMap.forEach((headers, pattern) => {\n if (pattern === pathname || pattern === '/*') {\n Object.assign(result, headers);\n } else if (pattern.endsWith('/*')) {\n const prefix = pattern.slice(0, -1);\n if (pathname.startsWith(prefix)) {\n Object.assign(result, headers);\n }\n }\n });\n\n return result;\n}\n\n// Start static file server on port 8080 (non-blocking)\nasync function startStaticServer(distPath: string) {\n const { SERVE_PORT } = await import('../lib/shared/constants');\n\n // Parse _headers file once on startup\n const headersMap = parseHeadersFile(distPath);\n\n const server = await createRuntimeServer({\n port: SERVE_PORT,\n hostname: 'localhost',\n async fetch(req: Request) {\n const url = new URL(req.url);\n let pathname = url.pathname;\n\n // Check for build errors and show overlay (except for _errors.json itself)\n if (pathname !== '/_errors.json') {\n const errorsPath = join(distPath, '_errors.json');\n if (existsSync(errorsPath)) {\n try {\n const errorsData: BuildErrorsData = JSON.parse(readFileSync(errorsPath, 'utf-8'));\n return new Response(generateBuildErrorPage(errorsData), {\n headers: { 'Content-Type': 'text/html; charset=utf-8' },\n });\n } catch {\n // If we can't parse errors file, continue normally\n }\n }\n }\n\n // Default to index.html for root\n if (pathname === '/') {\n pathname = '/index.html';\n }\n\n // Get custom headers for this path\n const customHeaders = getMatchingHeaders(pathname, headersMap);\n\n // Try to serve the file\n const filePath = join(distPath, pathname);\n\n // Check if file exists and serve it\n if (await runtimeFileExists(filePath)) {\n return await serveFile(filePath, customHeaders);\n }\n\n // Try with .html extension for clean URLs\n const htmlPath = filePath.endsWith('.html') ? filePath : `${filePath}.html`;\n if (await runtimeFileExists(htmlPath)) {\n return await serveFile(htmlPath, customHeaders);\n }\n\n // Try index.html in directory\n const indexPath = join(filePath, 'index.html');\n if (await runtimeFileExists(indexPath)) {\n return await serveFile(indexPath, customHeaders);\n }\n\n return new Response('Not Found', { status: 404 });\n },\n });\n\n return server;\n}\n\nasync function runDev() {\n const projectRoot = process.cwd();\n\n // Validate project structure\n if (!existsSync(join(projectRoot, 'pages'))) {\n console.error('\u274C No pages directory found. Are you in a valid project directory?');\n console.error(' Run \"meno init <project-name>\" to create a new project.');\n process.exit(1);\n }\n\n // Set project root for path resolution\n setProjectRoot(projectRoot);\n\n console.log(`\uD83D\uDCC1 Project root: ${projectRoot}`);\n\n // Start static server on 8080 if dist exists\n const distPath = join(projectRoot, 'dist');\n if (existsSync(distPath)) {\n const staticServer = await startStaticServer(distPath);\n console.log(`\uD83D\uDE80 Static server running at http://localhost:${staticServer.port}`);\n }\n\n // Import and run the dev server (it handles all initialization internally)\n await import('../entries/server-router');\n}\n\nasync function runBuild(isDev: boolean = false) {\n const projectRoot = process.cwd();\n\n // Validate project structure\n if (!existsSync(join(projectRoot, 'pages'))) {\n console.error('\u274C No pages directory found. Are you in a valid project directory?');\n process.exit(1);\n }\n\n // Set project root for path resolution\n setProjectRoot(projectRoot);\n\n // Set dev mode environment variable (drafts are built in dev mode)\n if (isDev) {\n process.env.MENO_DEV_BUILD = 'true';\n }\n\n console.log(`\uD83D\uDCC1 Building project: ${projectRoot}${isDev ? ' (dev mode - including drafts)' : ''}`);\n\n // Import and run build\n const { buildStaticPages } = await import('../build-static.ts');\n await buildStaticPages();\n}\n\nasync function runServe() {\n const projectRoot = process.cwd();\n const distPath = join(projectRoot, 'dist');\n\n // Validate dist directory exists\n if (!existsSync(distPath)) {\n console.error('\u274C No dist directory found. Run \"meno build\" first.');\n process.exit(1);\n }\n\n console.log(`\uD83D\uDCC1 Serving built files from: ${distPath}`);\n const server = await startStaticServer(distPath);\n console.log(`\uD83D\uDE80 Static server running at http://localhost:${server.port}`);\n\n // Keep the process alive\n await new Promise(() => {});\n}\n\nasync function runInit(projectName?: string) {\n if (!projectName) {\n console.error('\u274C Please provide a project name: meno init <project-name>');\n process.exit(1);\n }\n\n const projectPath = resolve(process.cwd(), projectName);\n\n if (existsSync(projectPath)) {\n console.error(`\u274C Directory \"${projectName}\" already exists.`);\n process.exit(1);\n }\n\n console.log(`\\n\uD83D\uDE80 Creating new meno project: ${projectName}\\n`);\n\n // Create project structure\n mkdirSync(projectPath, { recursive: true });\n mkdirSync(join(projectPath, 'pages'));\n mkdirSync(join(projectPath, 'components'));\n mkdirSync(join(projectPath, 'fonts'));\n mkdirSync(join(projectPath, 'images'));\n\n // Create default project.config.json\n const defaultConfig = {\n fonts: [],\n editor: {\n theme: 'dark'\n }\n };\n writeFileSync(\n join(projectPath, 'project.config.json'),\n JSON.stringify(defaultConfig, null, 2)\n );\n\n // Create default colors.json\n const defaultColors = {\n default: 'light',\n themes: {\n light: {\n label: 'Light',\n colors: {\n text: '#1f2937',\n bg: '#ffffff'\n }\n }\n }\n };\n writeFileSync(\n join(projectPath, 'colors.json'),\n JSON.stringify(defaultColors, null, 2)\n );\n\n // Create package.json for deployment\n const packageJson = {\n name: projectName,\n version: '1.0.0',\n private: true,\n scripts: {\n dev: 'meno dev',\n build: 'meno build',\n },\n dependencies: {\n 'meno-core': '^1.0.0'\n }\n };\n writeFileSync(\n join(projectPath, 'package.json'),\n JSON.stringify(packageJson, null, 2)\n );\n\n // Create .gitignore\n const gitignore = `# Dependencies\nnode_modules/\n\n# Build output\ndist/\n\n# OS files\n.DS_Store\n`;\n writeFileSync(\n join(projectPath, '.gitignore'),\n gitignore\n );\n\n // Create netlify.toml\n const netlifyConfig = `[build]\n command = \"bun install && bun run build\"\n publish = \"dist\"\n\n[build.environment]\n BUN_VERSION = \"1\"\n`;\n writeFileSync(\n join(projectPath, 'netlify.toml'),\n netlifyConfig\n );\n\n // Create vercel.json\n const vercelConfig = {\n buildCommand: 'bun run build',\n outputDirectory: 'dist',\n installCommand: 'bun install'\n };\n writeFileSync(\n join(projectPath, 'vercel.json'),\n JSON.stringify(vercelConfig, null, 2)\n );\n\n // Create wrangler.toml for Cloudflare Pages\n const cloudflareConfig = `name = \"${projectName}\"\ncompatibility_date = \"2024-01-01\"\npages_build_output_dir = \"dist\"\n\n[build]\ncommand = \"bun install && bun run build\"\n`;\n writeFileSync(\n join(projectPath, 'wrangler.toml'),\n cloudflareConfig\n );\n\n // Create default index page\n const defaultPage = {\n meta: {\n title: 'Your Project Title',\n description: 'Your Project Description',\n keywords: '',\n ogTitle: 'Your Project Title',\n ogDescription: 'Your Project Description',\n ogType: 'website'\n },\n root: {\n type: 'node',\n tag: 'div',\n style: {\n base: {\n padding: '40px'\n },\n tablet: {},\n mobile: {}\n },\n children: [\n {\n type: 'node',\n tag: 'h1',\n style: {\n base: {}\n },\n children: 'Hello'\n }\n ]\n }\n };\n writeFileSync(\n join(projectPath, 'pages', 'index.json'),\n JSON.stringify(defaultPage, null, 2)\n );\n\n console.log('\u2705 Created project structure:');\n console.log(` ${projectName}/`);\n console.log(' \u251C\u2500\u2500 pages/');\n console.log(' \u2502 \u2514\u2500\u2500 index.json');\n console.log(' \u251C\u2500\u2500 components/');\n console.log(' \u251C\u2500\u2500 fonts/');\n console.log(' \u251C\u2500\u2500 images/');\n console.log(' \u251C\u2500\u2500 colors.json');\n console.log(' \u251C\u2500\u2500 project.config.json');\n console.log(' \u251C\u2500\u2500 package.json');\n console.log(' \u251C\u2500\u2500 netlify.toml');\n console.log(' \u251C\u2500\u2500 vercel.json');\n console.log(' \u251C\u2500\u2500 wrangler.toml');\n console.log(' \u2514\u2500\u2500 .gitignore');\n console.log('\\n\uD83C\uDF89 Project created successfully!\\n');\n console.log('Requirements:');\n console.log(' Bun - https://bun.sh');\n console.log('');\n console.log('Next steps:');\n console.log(` cd ${projectName}`);\n console.log(' bun install # Install dependencies');\n console.log(' bun run dev # Start dev server');\n console.log('');\n console.log('Deploy:');\n console.log(' Push to GitHub and connect to Netlify/Vercel/Cloudflare');\n console.log(' Config files included - auto-detected!');\n console.log('');\n}\n\n// Main\nswitch (command) {\n case 'dev':\n runDev();\n break;\n case 'build':\n runBuild(args.includes('--dev'));\n break;\n case 'serve':\n runServe();\n break;\n case 'init':\n runInit(args[1]);\n break;\n case '--help':\n case '-h':\n case undefined:\n printHelp();\n break;\n default:\n console.error(`Unknown command: ${command}`);\n printHelp();\n process.exit(1);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import {
|
|
2
|
+
buildCMSItemPath,
|
|
3
|
+
buildStaticPages,
|
|
4
|
+
formatBunLog,
|
|
5
|
+
generateRobotsTxt,
|
|
6
|
+
generateSitemap,
|
|
7
|
+
getDisplayPath,
|
|
8
|
+
getLocalizedOutputPath,
|
|
9
|
+
hashContent,
|
|
10
|
+
injectTrackingScript,
|
|
11
|
+
isCMSPage
|
|
12
|
+
} from "./chunks/chunk-HE67KV43.js";
|
|
13
|
+
import "./chunks/chunk-7ZZIWLUS.js";
|
|
14
|
+
import "./chunks/chunk-M4B7T6NE.js";
|
|
15
|
+
import "./chunks/chunk-MJD62IUJ.js";
|
|
16
|
+
import "./chunks/chunk-GB2LHWZF.js";
|
|
17
|
+
import "./chunks/chunk-RWTKZPWJ.js";
|
|
18
|
+
import "./chunks/chunk-4KWEMYQE.js";
|
|
19
|
+
import "./chunks/chunk-NBMAZOCJ.js";
|
|
20
|
+
import "./chunks/chunk-PGH3ATYI.js";
|
|
21
|
+
import "./chunks/chunk-UB44F4Z2.js";
|
|
22
|
+
import "./chunks/chunk-KULPBDC7.js";
|
|
23
|
+
import "./chunks/chunk-KSBZ2L7C.js";
|
|
24
|
+
export {
|
|
25
|
+
buildCMSItemPath,
|
|
26
|
+
buildStaticPages,
|
|
27
|
+
formatBunLog,
|
|
28
|
+
generateRobotsTxt,
|
|
29
|
+
generateSitemap,
|
|
30
|
+
getDisplayPath,
|
|
31
|
+
getLocalizedOutputPath,
|
|
32
|
+
hashContent,
|
|
33
|
+
injectTrackingScript,
|
|
34
|
+
isCMSPage
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=build-static.js.map
|