nuclie 1.0.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/LICENSE +21 -0
- package/README.md +516 -0
- package/dist/ai/analyzer.d.ts +29 -0
- package/dist/ai/analyzer.js +202 -0
- package/dist/ai/chat/cli.d.ts +3 -0
- package/dist/ai/chat/cli.js +38 -0
- package/dist/ai/client.d.ts +17 -0
- package/dist/ai/client.js +68 -0
- package/dist/ai/cloud/api.d.ts +28 -0
- package/dist/ai/cloud/api.js +118 -0
- package/dist/ai/cloud/modelSync.d.ts +18 -0
- package/dist/ai/cloud/modelSync.js +104 -0
- package/dist/ai/cloud/telemetry.d.ts +14 -0
- package/dist/ai/cloud/telemetry.js +23 -0
- package/dist/ai/config.d.ts +14 -0
- package/dist/ai/config.js +9 -0
- package/dist/ai/core/errorMemory.d.ts +14 -0
- package/dist/ai/core/errorMemory.js +36 -0
- package/dist/ai/dashboard/cli.d.ts +3 -0
- package/dist/ai/dashboard/cli.js +32 -0
- package/dist/ai/healer/applier.d.ts +9 -0
- package/dist/ai/healer/applier.js +74 -0
- package/dist/ai/healer/cli.d.ts +3 -0
- package/dist/ai/healer/cli.js +57 -0
- package/dist/ai/healer/collector.d.ts +16 -0
- package/dist/ai/healer/collector.js +41 -0
- package/dist/ai/healer/fixer.d.ts +12 -0
- package/dist/ai/healer/fixer.js +40 -0
- package/dist/ai/healer/llm.d.ts +9 -0
- package/dist/ai/healer/llm.js +20 -0
- package/dist/ai/healer/parser.d.ts +16 -0
- package/dist/ai/healer/parser.js +67 -0
- package/dist/ai/learning/evolver.d.ts +8 -0
- package/dist/ai/learning/evolver.js +24 -0
- package/dist/ai/llm/fixGenerator.d.ts +9 -0
- package/dist/ai/llm/fixGenerator.js +21 -0
- package/dist/ai/llm/ollama.d.ts +10 -0
- package/dist/ai/llm/ollama.js +56 -0
- package/dist/ai/local/fixStore.d.ts +19 -0
- package/dist/ai/local/fixStore.js +105 -0
- package/dist/ai/optimizer/analyzer.d.ts +9 -0
- package/dist/ai/optimizer/analyzer.js +65 -0
- package/dist/ai/optimizer/engine.d.ts +16 -0
- package/dist/ai/optimizer/engine.js +51 -0
- package/dist/ai/optimizer/llm.d.ts +8 -0
- package/dist/ai/optimizer/llm.js +14 -0
- package/dist/ai/optimizer/profiler.d.ts +11 -0
- package/dist/ai/optimizer/profiler.js +111 -0
- package/dist/ai/optimizer/rules.d.ts +12 -0
- package/dist/ai/optimizer/rules.js +37 -0
- package/dist/ai/patterns/common.d.ts +8 -0
- package/dist/ai/patterns/common.js +181 -0
- package/dist/ai/reporter/assembler.d.ts +11 -0
- package/dist/ai/reporter/assembler.js +10 -0
- package/dist/ai/reporter/generator.d.ts +4 -0
- package/dist/ai/reporter/generator.js +42 -0
- package/dist/ai/reporter/narrator.d.ts +8 -0
- package/dist/ai/reporter/narrator.js +29 -0
- package/dist/ai/schema.d.ts +104 -0
- package/dist/ai/schema.js +45 -0
- package/dist/ai/telemetry.d.ts +14 -0
- package/dist/ai/telemetry.js +96 -0
- package/dist/audit/a11y.d.ts +5 -0
- package/dist/audit/a11y.js +123 -0
- package/dist/audit/best-practices.d.ts +5 -0
- package/dist/audit/best-practices.js +68 -0
- package/dist/audit/build-integration.d.ts +59 -0
- package/dist/audit/build-integration.js +138 -0
- package/dist/audit/core.d.ts +62 -0
- package/dist/audit/core.js +327 -0
- package/dist/audit/index.d.ts +4 -0
- package/dist/audit/index.js +60 -0
- package/dist/audit/perf.d.ts +5 -0
- package/dist/audit/perf.js +69 -0
- package/dist/audit/seo.d.ts +5 -0
- package/dist/audit/seo.js +63 -0
- package/dist/audit/types.d.ts +35 -0
- package/dist/audit/types.js +1 -0
- package/dist/audit-stub/types.d.ts +25 -0
- package/dist/audit-stub/types.js +1 -0
- package/dist/build/bundle-stats.d.ts +2 -0
- package/dist/build/bundle-stats.js +42 -0
- package/dist/build/bundler.d.ts +46 -0
- package/dist/build/bundler.js +31 -0
- package/dist/build/index.d.ts +36 -0
- package/dist/build/index.js +69 -0
- package/dist/build/pipeline.d.ts +31 -0
- package/dist/build/pipeline.js +68 -0
- package/dist/builder/server.d.ts +11 -0
- package/dist/builder/server.js +253 -0
- package/dist/cache/incremental.d.ts +75 -0
- package/dist/cache/incremental.js +200 -0
- package/dist/cache/index.d.ts +17 -0
- package/dist/cache/index.js +186 -0
- package/dist/cache/rocksdb.d.ts +18 -0
- package/dist/cache/rocksdb.js +63 -0
- package/dist/cli/css-cli.d.ts +5 -0
- package/dist/cli/css-cli.js +112 -0
- package/dist/cli/inspect.d.ts +1 -0
- package/dist/cli/inspect.js +94 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +586 -0
- package/dist/commands/analyze.d.ts +1 -0
- package/dist/commands/analyze.js +295 -0
- package/dist/commands/doctor.d.ts +21 -0
- package/dist/commands/doctor.js +364 -0
- package/dist/commands/ssr.d.ts +12 -0
- package/dist/commands/ssr.js +30 -0
- package/dist/commands/verify.d.ts +38 -0
- package/dist/commands/verify.js +459 -0
- package/dist/config/index.d.ts +145 -0
- package/dist/config/index.js +227 -0
- package/dist/config/live-config.d.ts +22 -0
- package/dist/config/live-config.js +88 -0
- package/dist/core/__tests__/permissions.test.d.ts +1 -0
- package/dist/core/__tests__/permissions.test.js +16 -0
- package/dist/core/__tests__/universal-transformer.test.d.ts +1 -0
- package/dist/core/__tests__/universal-transformer.test.js +27 -0
- package/dist/core/build/globalOptimizer.d.ts +8 -0
- package/dist/core/build/globalOptimizer.js +21 -0
- package/dist/core/build/incremental.d.ts +13 -0
- package/dist/core/build/incremental.js +29 -0
- package/dist/core/bundler-rolldown.d.ts +42 -0
- package/dist/core/bundler-rolldown.js +100 -0
- package/dist/core/cache/lazy-init.d.ts +50 -0
- package/dist/core/cache/lazy-init.js +153 -0
- package/dist/core/cache-manager.d.ts +51 -0
- package/dist/core/cache-manager.js +149 -0
- package/dist/core/css/engine.d.ts +37 -0
- package/dist/core/css/engine.js +113 -0
- package/dist/core/css-framework-detector.d.ts +10 -0
- package/dist/core/css-framework-detector.js +169 -0
- package/dist/core/detection/files.d.ts +2 -0
- package/dist/core/detection/files.js +77 -0
- package/dist/core/detection/index.d.ts +8 -0
- package/dist/core/detection/index.js +39 -0
- package/dist/core/detection/resolver.d.ts +2 -0
- package/dist/core/detection/resolver.js +116 -0
- package/dist/core/detection/scanner.d.ts +4 -0
- package/dist/core/detection/scanner.js +145 -0
- package/dist/core/detection/types.d.ts +33 -0
- package/dist/core/detection/types.js +12 -0
- package/dist/core/engine/cache.d.ts +18 -0
- package/dist/core/engine/cache.js +72 -0
- package/dist/core/engine/config.d.ts +11 -0
- package/dist/core/engine/config.js +158 -0
- package/dist/core/engine/emit.d.ts +8 -0
- package/dist/core/engine/emit.js +60 -0
- package/dist/core/engine/events.d.ts +13 -0
- package/dist/core/engine/events.js +35 -0
- package/dist/core/engine/execute.d.ts +5 -0
- package/dist/core/engine/execute.js +226 -0
- package/dist/core/engine/hash.d.ts +8 -0
- package/dist/core/engine/hash.js +39 -0
- package/dist/core/engine/index.d.ts +49 -0
- package/dist/core/engine/index.js +156 -0
- package/dist/core/engine/optimize.d.ts +2 -0
- package/dist/core/engine/optimize.js +99 -0
- package/dist/core/engine/plan.d.ts +9 -0
- package/dist/core/engine/plan.js +196 -0
- package/dist/core/engine/types.d.ts +120 -0
- package/dist/core/engine/types.js +1 -0
- package/dist/core/errors/hero-errors.d.ts +57 -0
- package/dist/core/errors/hero-errors.js +269 -0
- package/dist/core/framework-detector.d.ts +20 -0
- package/dist/core/framework-detector.js +148 -0
- package/dist/core/graph/js-graph-analyzer.d.ts +51 -0
- package/dist/core/graph/js-graph-analyzer.js +178 -0
- package/dist/core/graph/serializer.d.ts +7 -0
- package/dist/core/graph/serializer.js +24 -0
- package/dist/core/interop/analyze.d.ts +8 -0
- package/dist/core/interop/analyze.js +82 -0
- package/dist/core/interop/analyze_ast.d.ts +9 -0
- package/dist/core/interop/analyze_ast.js +174 -0
- package/dist/core/interop/index.d.ts +19 -0
- package/dist/core/interop/index.js +36 -0
- package/dist/core/interop/resolve.d.ts +9 -0
- package/dist/core/interop/resolve.js +55 -0
- package/dist/core/interop/types.d.ts +28 -0
- package/dist/core/interop/types.js +2 -0
- package/dist/core/interop/wrapper.d.ts +11 -0
- package/dist/core/interop/wrapper.js +50 -0
- package/dist/core/parser-bun.d.ts +54 -0
- package/dist/core/parser-bun.js +86 -0
- package/dist/core/permissions.d.ts +16 -0
- package/dist/core/permissions.js +47 -0
- package/dist/core/pipeline/framework-pipeline.d.ts +71 -0
- package/dist/core/pipeline/framework-pipeline.js +113 -0
- package/dist/core/plugins/index.d.ts +5 -0
- package/dist/core/plugins/index.js +5 -0
- package/dist/core/plugins/manager.d.ts +30 -0
- package/dist/core/plugins/manager.js +123 -0
- package/dist/core/plugins/sandbox_js.d.ts +9 -0
- package/dist/core/plugins/sandbox_js.js +37 -0
- package/dist/core/plugins/sandbox_wasm.d.ts +10 -0
- package/dist/core/plugins/sandbox_wasm.js +68 -0
- package/dist/core/plugins/types.d.ts +37 -0
- package/dist/core/plugins/types.js +2 -0
- package/dist/core/plugins/validation.d.ts +8 -0
- package/dist/core/plugins/validation.js +30 -0
- package/dist/core/sandbox.d.ts +9 -0
- package/dist/core/sandbox.js +79 -0
- package/dist/core/steps/css-optimization.d.ts +65 -0
- package/dist/core/steps/css-optimization.js +318 -0
- package/dist/core/steps.d.ts +7 -0
- package/dist/core/steps.js +17 -0
- package/dist/core/transform/batchTransformer.d.ts +12 -0
- package/dist/core/transform/batchTransformer.js +24 -0
- package/dist/core/transform/transformer.d.ts +9 -0
- package/dist/core/transform/transformer.js +189 -0
- package/dist/core/universal-transformer.d.ts +81 -0
- package/dist/core/universal-transformer.js +780 -0
- package/dist/create/index.d.ts +25 -0
- package/dist/create/index.js +584 -0
- package/dist/create/ui.d.ts +13 -0
- package/dist/create/ui.js +218 -0
- package/dist/create-nuclie/cli.d.ts +7 -0
- package/dist/create-nuclie/cli.js +73 -0
- package/dist/create-nuclie/templates.d.ts +18 -0
- package/dist/create-nuclie/templates.js +73 -0
- package/dist/create-nuclie.d.ts +2 -0
- package/dist/create-nuclie.js +7 -0
- package/dist/dashboard/metrics.d.ts +31 -0
- package/dist/dashboard/metrics.js +59 -0
- package/dist/dashboard/server/router.d.ts +52 -0
- package/dist/dashboard/server/router.js +36 -0
- package/dist/dev/__tests__/preBundler.test.d.ts +1 -0
- package/dist/dev/__tests__/preBundler.test.js +51 -0
- package/dist/dev/configWatcher.d.ts +10 -0
- package/dist/dev/configWatcher.js +42 -0
- package/dist/dev/devServer.d.ts +2 -0
- package/dist/dev/devServer.js +1398 -0
- package/dist/dev/devServer.minimal.d.ts +8 -0
- package/dist/dev/devServer.minimal.js +122 -0
- package/dist/dev/federation-dev.d.ts +14 -0
- package/dist/dev/federation-dev.js +69 -0
- package/dist/dev/hmr-engine.d.ts +12 -0
- package/dist/dev/hmr-engine.js +66 -0
- package/dist/dev/hmr-v2.d.ts +40 -0
- package/dist/dev/hmr-v2.js +87 -0
- package/dist/dev/hmrThrottle.d.ts +13 -0
- package/dist/dev/hmrThrottle.js +56 -0
- package/dist/dev/overlay/overlay-client.d.ts +7 -0
- package/dist/dev/overlay/overlay-client.js +53 -0
- package/dist/dev/overlay/overlay-ui.d.ts +17 -0
- package/dist/dev/overlay/overlay-ui.js +133 -0
- package/dist/dev/preBundler.d.ts +17 -0
- package/dist/dev/preBundler.js +343 -0
- package/dist/dev/statusHandler.d.ts +11 -0
- package/dist/dev/statusHandler.js +44 -0
- package/dist/dev/types.d.ts +30 -0
- package/dist/dev/types.js +1 -0
- package/dist/dev/watcher.d.ts +11 -0
- package/dist/dev/watcher.js +40 -0
- package/dist/dev-server-manual.d.ts +5 -0
- package/dist/dev-server-manual.js +24 -0
- package/dist/dev-server.d.ts +25 -0
- package/dist/dev-server.js +255 -0
- package/dist/env/api.d.ts +27 -0
- package/dist/env/api.js +36 -0
- package/dist/fix/ast-transforms.d.ts +81 -0
- package/dist/fix/ast-transforms.js +449 -0
- package/dist/hmr/classifier.d.ts +51 -0
- package/dist/hmr/classifier.js +232 -0
- package/dist/hmr/index.d.ts +5 -0
- package/dist/hmr/index.js +5 -0
- package/dist/hmr/overlay.d.ts +39 -0
- package/dist/hmr/overlay.js +285 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.js +57 -0
- package/dist/init/bootstrap.d.ts +1 -0
- package/dist/init/bootstrap.js +106 -0
- package/dist/init/index.d.ts +1 -0
- package/dist/init/index.js +74 -0
- package/dist/init/templates.d.ts +2 -0
- package/dist/init/templates.js +227 -0
- package/dist/main.d.ts +1 -0
- package/dist/main.js +3 -0
- package/dist/marketplace/client.d.ts +25 -0
- package/dist/marketplace/client.js +73 -0
- package/dist/marketplace/db.d.ts +24 -0
- package/dist/marketplace/db.js +57 -0
- package/dist/marketplace/plugin-adapter.d.ts +14 -0
- package/dist/marketplace/plugin-adapter.js +85 -0
- package/dist/marketplace/server.d.ts +66 -0
- package/dist/marketplace/server.js +97 -0
- package/dist/meta-frameworks/base-router.d.ts +63 -0
- package/dist/meta-frameworks/base-router.js +259 -0
- package/dist/meta-frameworks/index.d.ts +8 -0
- package/dist/meta-frameworks/index.js +8 -0
- package/dist/meta-frameworks/nextjs/router.d.ts +35 -0
- package/dist/meta-frameworks/nextjs/router.js +176 -0
- package/dist/meta-frameworks/nuxt/router.d.ts +22 -0
- package/dist/meta-frameworks/nuxt/router.js +84 -0
- package/dist/meta-frameworks/remix/router.d.ts +28 -0
- package/dist/meta-frameworks/remix/router.js +136 -0
- package/dist/meta-frameworks/ssr/react-renderer.d.ts +24 -0
- package/dist/meta-frameworks/ssr/react-renderer.js +53 -0
- package/dist/meta-frameworks/ssr/server.d.ts +92 -0
- package/dist/meta-frameworks/ssr/server.js +312 -0
- package/dist/meta-frameworks/ssr/vue-renderer.d.ts +11 -0
- package/dist/meta-frameworks/ssr/vue-renderer.js +35 -0
- package/dist/meta-frameworks/types.d.ts +76 -0
- package/dist/meta-frameworks/types.js +5 -0
- package/dist/migrate/analyzer.d.ts +46 -0
- package/dist/migrate/analyzer.js +254 -0
- package/dist/migrate/cli.d.ts +10 -0
- package/dist/migrate/cli.js +63 -0
- package/dist/migrate/generator.d.ts +32 -0
- package/dist/migrate/generator.js +214 -0
- package/dist/native/cache.d.ts +86 -0
- package/dist/native/cache.js +154 -0
- package/dist/native/index.d.ts +4 -0
- package/dist/native/index.js +56 -0
- package/dist/native/orchestrator.d.ts +78 -0
- package/dist/native/orchestrator.js +107 -0
- package/dist/native/wasm.d.ts +22 -0
- package/dist/native/wasm.js +33 -0
- package/dist/nuclie_native.node +0 -0
- package/dist/plugins/assets.d.ts +2 -0
- package/dist/plugins/assets.js +50 -0
- package/dist/plugins/compat/adapter.d.ts +33 -0
- package/dist/plugins/compat/adapter.js +102 -0
- package/dist/plugins/compat/deferred.d.ts +17 -0
- package/dist/plugins/compat/deferred.js +28 -0
- package/dist/plugins/compat/index.d.ts +11 -0
- package/dist/plugins/compat/index.js +11 -0
- package/dist/plugins/compat/rollup.d.ts +19 -0
- package/dist/plugins/compat/rollup.js +76 -0
- package/dist/plugins/compat/tier-a.d.ts +60 -0
- package/dist/plugins/compat/tier-a.js +132 -0
- package/dist/plugins/compat/tier-b.d.ts +34 -0
- package/dist/plugins/compat/tier-b.js +90 -0
- package/dist/plugins/compat/tier-c.d.ts +48 -0
- package/dist/plugins/compat/tier-c.js +49 -0
- package/dist/plugins/compat/webpack.d.ts +26 -0
- package/dist/plugins/compat/webpack.js +77 -0
- package/dist/plugins/core/linker.d.ts +8 -0
- package/dist/plugins/core/linker.js +51 -0
- package/dist/plugins/css/bootstrap.d.ts +25 -0
- package/dist/plugins/css/bootstrap.js +110 -0
- package/dist/plugins/css/bulma.d.ts +23 -0
- package/dist/plugins/css/bulma.js +75 -0
- package/dist/plugins/css/css-modules.d.ts +19 -0
- package/dist/plugins/css/css-modules.js +96 -0
- package/dist/plugins/css/css-optimizer.d.ts +43 -0
- package/dist/plugins/css/css-optimizer.js +155 -0
- package/dist/plugins/css/emotion.d.ts +35 -0
- package/dist/plugins/css/emotion.js +109 -0
- package/dist/plugins/css/less.d.ts +6 -0
- package/dist/plugins/css/less.js +33 -0
- package/dist/plugins/css/material.d.ts +24 -0
- package/dist/plugins/css/material.js +97 -0
- package/dist/plugins/css/postcss.d.ts +2 -0
- package/dist/plugins/css/postcss.js +96 -0
- package/dist/plugins/css/sass.d.ts +6 -0
- package/dist/plugins/css/sass.js +36 -0
- package/dist/plugins/css/styled-components.d.ts +33 -0
- package/dist/plugins/css/styled-components.js +94 -0
- package/dist/plugins/css/stylus.d.ts +6 -0
- package/dist/plugins/css/stylus.js +41 -0
- package/dist/plugins/css/tailwind.d.ts +9 -0
- package/dist/plugins/css/tailwind.js +132 -0
- package/dist/plugins/css-in-js.d.ts +10 -0
- package/dist/plugins/css-in-js.js +24 -0
- package/dist/plugins/edge.d.ts +7 -0
- package/dist/plugins/edge.js +38 -0
- package/dist/plugins/esbuildAdapter.d.ts +3 -0
- package/dist/plugins/esbuildAdapter.js +77 -0
- package/dist/plugins/federation_next.d.ts +16 -0
- package/dist/plugins/federation_next.js +78 -0
- package/dist/plugins/framework-plugins.d.ts +3 -0
- package/dist/plugins/framework-plugins.js +40 -0
- package/dist/plugins/frameworks/index.d.ts +8 -0
- package/dist/plugins/frameworks/index.js +10 -0
- package/dist/plugins/frameworks/lit.d.ts +36 -0
- package/dist/plugins/frameworks/lit.js +114 -0
- package/dist/plugins/frameworks/react.d.ts +38 -0
- package/dist/plugins/frameworks/react.js +144 -0
- package/dist/plugins/frameworks/solid.d.ts +36 -0
- package/dist/plugins/frameworks/solid.js +108 -0
- package/dist/plugins/frameworks/svelte.d.ts +43 -0
- package/dist/plugins/frameworks/svelte.js +144 -0
- package/dist/plugins/frameworks/vue.d.ts +43 -0
- package/dist/plugins/frameworks/vue.js +240 -0
- package/dist/plugins/governance.d.ts +36 -0
- package/dist/plugins/governance.js +50 -0
- package/dist/plugins/html.d.ts +2 -0
- package/dist/plugins/html.js +49 -0
- package/dist/plugins/implementations/analytics.d.ts +7 -0
- package/dist/plugins/implementations/analytics.js +15 -0
- package/dist/plugins/implementations/apollo.d.ts +7 -0
- package/dist/plugins/implementations/apollo.js +15 -0
- package/dist/plugins/implementations/audit.d.ts +7 -0
- package/dist/plugins/implementations/audit.js +30 -0
- package/dist/plugins/implementations/auto-fix.d.ts +7 -0
- package/dist/plugins/implementations/auto-fix.js +15 -0
- package/dist/plugins/implementations/avif.d.ts +7 -0
- package/dist/plugins/implementations/avif.js +27 -0
- package/dist/plugins/implementations/babel.d.ts +7 -0
- package/dist/plugins/implementations/babel.js +15 -0
- package/dist/plugins/implementations/bundle-analyzer.d.ts +7 -0
- package/dist/plugins/implementations/bundle-analyzer.js +21 -0
- package/dist/plugins/implementations/bundle-size.d.ts +7 -0
- package/dist/plugins/implementations/bundle-size.js +21 -0
- package/dist/plugins/implementations/checker.d.ts +7 -0
- package/dist/plugins/implementations/checker.js +15 -0
- package/dist/plugins/implementations/chromatic.d.ts +7 -0
- package/dist/plugins/implementations/chromatic.js +15 -0
- package/dist/plugins/implementations/cloudflare.d.ts +7 -0
- package/dist/plugins/implementations/cloudflare.js +15 -0
- package/dist/plugins/implementations/code-split.d.ts +7 -0
- package/dist/plugins/implementations/code-split.js +21 -0
- package/dist/plugins/implementations/compression.d.ts +7 -0
- package/dist/plugins/implementations/compression.js +21 -0
- package/dist/plugins/implementations/copy.d.ts +7 -0
- package/dist/plugins/implementations/copy.js +15 -0
- package/dist/plugins/implementations/critical-css.d.ts +7 -0
- package/dist/plugins/implementations/critical-css.js +25 -0
- package/dist/plugins/implementations/crypto-sign.d.ts +7 -0
- package/dist/plugins/implementations/crypto-sign.js +30 -0
- package/dist/plugins/implementations/css-framework.d.ts +7 -0
- package/dist/plugins/implementations/css-framework.js +25 -0
- package/dist/plugins/implementations/css.d.ts +7 -0
- package/dist/plugins/implementations/css.js +25 -0
- package/dist/plugins/implementations/cypress.d.ts +7 -0
- package/dist/plugins/implementations/cypress.js +15 -0
- package/dist/plugins/implementations/determinism.d.ts +7 -0
- package/dist/plugins/implementations/determinism.js +21 -0
- package/dist/plugins/implementations/edge.d.ts +8 -0
- package/dist/plugins/implementations/edge.js +35 -0
- package/dist/plugins/implementations/env-validation.d.ts +7 -0
- package/dist/plugins/implementations/env-validation.js +30 -0
- package/dist/plugins/implementations/eslint.d.ts +7 -0
- package/dist/plugins/implementations/eslint.js +15 -0
- package/dist/plugins/implementations/federation.d.ts +7 -0
- package/dist/plugins/implementations/federation.js +15 -0
- package/dist/plugins/implementations/file.d.ts +7 -0
- package/dist/plugins/implementations/file.js +27 -0
- package/dist/plugins/implementations/font-subset.d.ts +7 -0
- package/dist/plugins/implementations/font-subset.js +27 -0
- package/dist/plugins/implementations/fonts.d.ts +7 -0
- package/dist/plugins/implementations/fonts.js +27 -0
- package/dist/plugins/implementations/formatjs.d.ts +7 -0
- package/dist/plugins/implementations/formatjs.js +18 -0
- package/dist/plugins/implementations/graphql.d.ts +7 -0
- package/dist/plugins/implementations/graphql.js +15 -0
- package/dist/plugins/implementations/hmr-classify.d.ts +7 -0
- package/dist/plugins/implementations/hmr-classify.js +21 -0
- package/dist/plugins/implementations/html.d.ts +7 -0
- package/dist/plugins/implementations/html.js +15 -0
- package/dist/plugins/implementations/i18n.d.ts +7 -0
- package/dist/plugins/implementations/i18n.js +15 -0
- package/dist/plugins/implementations/icon.d.ts +7 -0
- package/dist/plugins/implementations/icon.js +27 -0
- package/dist/plugins/implementations/imagemin.d.ts +7 -0
- package/dist/plugins/implementations/imagemin.js +27 -0
- package/dist/plugins/implementations/inspect.d.ts +7 -0
- package/dist/plugins/implementations/inspect.js +15 -0
- package/dist/plugins/implementations/jest.d.ts +7 -0
- package/dist/plugins/implementations/jest.js +19 -0
- package/dist/plugins/implementations/jotai.d.ts +8 -0
- package/dist/plugins/implementations/jotai.js +35 -0
- package/dist/plugins/implementations/lazy-load.d.ts +7 -0
- package/dist/plugins/implementations/lazy-load.js +21 -0
- package/dist/plugins/implementations/legacy.d.ts +7 -0
- package/dist/plugins/implementations/legacy.js +15 -0
- package/dist/plugins/implementations/lighthouse.d.ts +7 -0
- package/dist/plugins/implementations/lighthouse.js +21 -0
- package/dist/plugins/implementations/manifest.d.ts +7 -0
- package/dist/plugins/implementations/manifest.js +15 -0
- package/dist/plugins/implementations/markdown.d.ts +7 -0
- package/dist/plugins/implementations/markdown.js +15 -0
- package/dist/plugins/implementations/md.d.ts +7 -0
- package/dist/plugins/implementations/md.js +15 -0
- package/dist/plugins/implementations/mdx.d.ts +7 -0
- package/dist/plugins/implementations/mdx.js +15 -0
- package/dist/plugins/implementations/meta-tags.d.ts +7 -0
- package/dist/plugins/implementations/meta-tags.js +15 -0
- package/dist/plugins/implementations/mini-css-extract-plugin.d.ts +7 -0
- package/dist/plugins/implementations/mini-css-extract-plugin.js +25 -0
- package/dist/plugins/implementations/mobx.d.ts +8 -0
- package/dist/plugins/implementations/mobx.js +35 -0
- package/dist/plugins/implementations/mock.d.ts +7 -0
- package/dist/plugins/implementations/mock.js +15 -0
- package/dist/plugins/implementations/msw.d.ts +7 -0
- package/dist/plugins/implementations/msw.js +19 -0
- package/dist/plugins/implementations/nanostores.d.ts +7 -0
- package/dist/plugins/implementations/nanostores.js +18 -0
- package/dist/plugins/implementations/netlify.d.ts +7 -0
- package/dist/plugins/implementations/netlify.js +15 -0
- package/dist/plugins/implementations/observability.d.ts +7 -0
- package/dist/plugins/implementations/observability.js +15 -0
- package/dist/plugins/implementations/og-image.d.ts +7 -0
- package/dist/plugins/implementations/og-image.js +15 -0
- package/dist/plugins/implementations/pages.d.ts +7 -0
- package/dist/plugins/implementations/pages.js +15 -0
- package/dist/plugins/implementations/pinia.d.ts +8 -0
- package/dist/plugins/implementations/pinia.js +35 -0
- package/dist/plugins/implementations/plausible.d.ts +7 -0
- package/dist/plugins/implementations/plausible.js +18 -0
- package/dist/plugins/implementations/playwright.d.ts +7 -0
- package/dist/plugins/implementations/playwright.js +15 -0
- package/dist/plugins/implementations/postcss.d.ts +7 -0
- package/dist/plugins/implementations/postcss.js +25 -0
- package/dist/plugins/implementations/posthog.d.ts +7 -0
- package/dist/plugins/implementations/posthog.js +18 -0
- package/dist/plugins/implementations/prebundle.d.ts +7 -0
- package/dist/plugins/implementations/prebundle.js +21 -0
- package/dist/plugins/implementations/prefetch.d.ts +7 -0
- package/dist/plugins/implementations/prefetch.js +21 -0
- package/dist/plugins/implementations/preload.d.ts +7 -0
- package/dist/plugins/implementations/preload.js +21 -0
- package/dist/plugins/implementations/prisma.d.ts +7 -0
- package/dist/plugins/implementations/prisma.js +15 -0
- package/dist/plugins/implementations/pwa.d.ts +7 -0
- package/dist/plugins/implementations/pwa.js +15 -0
- package/dist/plugins/implementations/qr-code.d.ts +7 -0
- package/dist/plugins/implementations/qr-code.js +19 -0
- package/dist/plugins/implementations/razorpay.d.ts +7 -0
- package/dist/plugins/implementations/razorpay.js +19 -0
- package/dist/plugins/implementations/react-i18next.d.ts +7 -0
- package/dist/plugins/implementations/react-i18next.js +18 -0
- package/dist/plugins/implementations/react-query.d.ts +8 -0
- package/dist/plugins/implementations/react-query.js +35 -0
- package/dist/plugins/implementations/react.d.ts +8 -0
- package/dist/plugins/implementations/react.js +35 -0
- package/dist/plugins/implementations/recoil.d.ts +8 -0
- package/dist/plugins/implementations/recoil.js +35 -0
- package/dist/plugins/implementations/redux.d.ts +8 -0
- package/dist/plugins/implementations/redux.js +35 -0
- package/dist/plugins/implementations/relay.d.ts +7 -0
- package/dist/plugins/implementations/relay.js +15 -0
- package/dist/plugins/implementations/repro.d.ts +7 -0
- package/dist/plugins/implementations/repro.js +15 -0
- package/dist/plugins/implementations/robots.d.ts +7 -0
- package/dist/plugins/implementations/robots.js +15 -0
- package/dist/plugins/implementations/root-cause.d.ts +7 -0
- package/dist/plugins/implementations/root-cause.js +15 -0
- package/dist/plugins/implementations/rss.d.ts +7 -0
- package/dist/plugins/implementations/rss.js +15 -0
- package/dist/plugins/implementations/sass.d.ts +7 -0
- package/dist/plugins/implementations/sass.js +25 -0
- package/dist/plugins/implementations/sentry.d.ts +7 -0
- package/dist/plugins/implementations/sentry.js +15 -0
- package/dist/plugins/implementations/sitemap.d.ts +7 -0
- package/dist/plugins/implementations/sitemap.js +15 -0
- package/dist/plugins/implementations/solid.d.ts +8 -0
- package/dist/plugins/implementations/solid.js +35 -0
- package/dist/plugins/implementations/sprite.d.ts +7 -0
- package/dist/plugins/implementations/sprite.js +27 -0
- package/dist/plugins/implementations/ssr.d.ts +8 -0
- package/dist/plugins/implementations/ssr.js +35 -0
- package/dist/plugins/implementations/storybook.d.ts +7 -0
- package/dist/plugins/implementations/storybook.js +15 -0
- package/dist/plugins/implementations/stripe.d.ts +7 -0
- package/dist/plugins/implementations/stripe.js +19 -0
- package/dist/plugins/implementations/style.d.ts +7 -0
- package/dist/plugins/implementations/style.js +25 -0
- package/dist/plugins/implementations/svelte.d.ts +8 -0
- package/dist/plugins/implementations/svelte.js +35 -0
- package/dist/plugins/implementations/tailwind.d.ts +7 -0
- package/dist/plugins/implementations/tailwind.js +25 -0
- package/dist/plugins/implementations/tanstack-query.d.ts +7 -0
- package/dist/plugins/implementations/tanstack-query.js +18 -0
- package/dist/plugins/implementations/terser.d.ts +7 -0
- package/dist/plugins/implementations/terser.js +21 -0
- package/dist/plugins/implementations/testing-library-react.d.ts +7 -0
- package/dist/plugins/implementations/testing-library-react.js +19 -0
- package/dist/plugins/implementations/testing-library.d.ts +7 -0
- package/dist/plugins/implementations/testing-library.js +15 -0
- package/dist/plugins/implementations/tree-shake.d.ts +7 -0
- package/dist/plugins/implementations/tree-shake.js +21 -0
- package/dist/plugins/implementations/trpc.d.ts +7 -0
- package/dist/plugins/implementations/trpc.js +15 -0
- package/dist/plugins/implementations/ts.d.ts +7 -0
- package/dist/plugins/implementations/ts.js +15 -0
- package/dist/plugins/implementations/typescript.d.ts +7 -0
- package/dist/plugins/implementations/typescript.js +15 -0
- package/dist/plugins/implementations/unocss.d.ts +7 -0
- package/dist/plugins/implementations/unocss.js +25 -0
- package/dist/plugins/implementations/upi-payment.d.ts +7 -0
- package/dist/plugins/implementations/upi-payment.js +19 -0
- package/dist/plugins/implementations/url.d.ts +7 -0
- package/dist/plugins/implementations/url.js +27 -0
- package/dist/plugins/implementations/vercel.d.ts +7 -0
- package/dist/plugins/implementations/vercel.js +15 -0
- package/dist/plugins/implementations/visualizer.d.ts +7 -0
- package/dist/plugins/implementations/visualizer.js +15 -0
- package/dist/plugins/implementations/vite-svg-loader.d.ts +7 -0
- package/dist/plugins/implementations/vite-svg-loader.js +27 -0
- package/dist/plugins/implementations/vitest.d.ts +7 -0
- package/dist/plugins/implementations/vitest.js +15 -0
- package/dist/plugins/implementations/vue-i18n-next.d.ts +7 -0
- package/dist/plugins/implementations/vue-i18n-next.js +18 -0
- package/dist/plugins/implementations/vue-i18n.d.ts +7 -0
- package/dist/plugins/implementations/vue-i18n.js +15 -0
- package/dist/plugins/implementations/vue-layouts.d.ts +8 -0
- package/dist/plugins/implementations/vue-layouts.js +35 -0
- package/dist/plugins/implementations/vue.d.ts +8 -0
- package/dist/plugins/implementations/vue.js +35 -0
- package/dist/plugins/implementations/vuex.d.ts +8 -0
- package/dist/plugins/implementations/vuex.js +35 -0
- package/dist/plugins/implementations/wasm-sandbox.d.ts +7 -0
- package/dist/plugins/implementations/wasm-sandbox.js +30 -0
- package/dist/plugins/implementations/webp.d.ts +7 -0
- package/dist/plugins/implementations/webp.js +27 -0
- package/dist/plugins/implementations/windicss.d.ts +7 -0
- package/dist/plugins/implementations/windicss.js +25 -0
- package/dist/plugins/implementations/workbox.d.ts +7 -0
- package/dist/plugins/implementations/workbox.js +15 -0
- package/dist/plugins/implementations/xstate.d.ts +7 -0
- package/dist/plugins/implementations/xstate.js +18 -0
- package/dist/plugins/implementations/zod.d.ts +7 -0
- package/dist/plugins/implementations/zod.js +15 -0
- package/dist/plugins/implementations/zustand-devtools.d.ts +7 -0
- package/dist/plugins/implementations/zustand-devtools.js +18 -0
- package/dist/plugins/implementations/zustand.d.ts +8 -0
- package/dist/plugins/implementations/zustand.js +35 -0
- package/dist/plugins/index.d.ts +49 -0
- package/dist/plugins/index.js +117 -0
- package/dist/plugins/js-transform.d.ts +2 -0
- package/dist/plugins/js-transform.js +49 -0
- package/dist/plugins/json.d.ts +2 -0
- package/dist/plugins/json.js +34 -0
- package/dist/plugins/pluginWorker.mjs +95 -0
- package/dist/plugins/ported/adapter.d.ts +92 -0
- package/dist/plugins/ported/adapter.js +226 -0
- package/dist/plugins/registry.d.ts +51 -0
- package/dist/plugins/registry.js +151 -0
- package/dist/plugins/reporter.d.ts +5 -0
- package/dist/plugins/reporter.js +47 -0
- package/dist/plugins/samplePlugin.mjs +4 -0
- package/dist/plugins/sandbox.d.ts +12 -0
- package/dist/plugins/sandbox.js +126 -0
- package/dist/plugins/signer.d.ts +53 -0
- package/dist/plugins/signer.js +109 -0
- package/dist/plugins/static.d.ts +2 -0
- package/dist/plugins/static.js +47 -0
- package/dist/plugins/svelte.d.ts +7 -0
- package/dist/plugins/svelte.js +27 -0
- package/dist/plugins/testSandbox.d.ts +1 -0
- package/dist/plugins/testSandbox.js +14 -0
- package/dist/plugins/verify.d.ts +3 -0
- package/dist/plugins/verify.js +113 -0
- package/dist/plugins/vue.d.ts +7 -0
- package/dist/plugins/vue.js +86 -0
- package/dist/plugins/wasm-runtime.d.ts +15 -0
- package/dist/plugins/wasm-runtime.js +33 -0
- package/dist/plugins/wasm.d.ts +5 -0
- package/dist/plugins/wasm.js +44 -0
- package/dist/polyfills/corejs.d.ts +9 -0
- package/dist/polyfills/corejs.js +18 -0
- package/dist/presets/core.d.ts +111 -0
- package/dist/presets/core.js +239 -0
- package/dist/presets/frameworks.d.ts +34 -0
- package/dist/presets/frameworks.js +270 -0
- package/dist/presets/index.d.ts +8 -0
- package/dist/presets/index.js +3 -0
- package/dist/presets/infrastructure.d.ts +2 -0
- package/dist/presets/infrastructure.js +33 -0
- package/dist/presets/spa.d.ts +2 -0
- package/dist/presets/spa.js +15 -0
- package/dist/presets/ssg.d.ts +2 -0
- package/dist/presets/ssg.js +9 -0
- package/dist/presets/ssr.d.ts +2 -0
- package/dist/presets/ssr.js +13 -0
- package/dist/repro/dashboard.d.ts +83 -0
- package/dist/repro/dashboard.js +251 -0
- package/dist/repro/github.d.ts +26 -0
- package/dist/repro/github.js +73 -0
- package/dist/resolve/css-precedence.d.ts +16 -0
- package/dist/resolve/css-precedence.js +56 -0
- package/dist/resolve/graph.d.ts +48 -0
- package/dist/resolve/graph.js +232 -0
- package/dist/resolve/utils.d.ts +13 -0
- package/dist/resolve/utils.js +53 -0
- package/dist/runtime/client.d.ts +9 -0
- package/dist/runtime/client.js +218 -0
- package/dist/runtime/error-overlay.d.ts +15 -0
- package/dist/runtime/error-overlay.js +327 -0
- package/dist/runtime/federation-fallback.d.ts +67 -0
- package/dist/runtime/federation-fallback.js +225 -0
- package/dist/runtime/federation.d.ts +27 -0
- package/dist/runtime/federation.js +210 -0
- package/dist/runtime/federation_runtime.js +90 -0
- package/dist/runtime/hmr-client.d.ts +5 -0
- package/dist/runtime/hmr-client.js +70 -0
- package/dist/security/anomaly.d.ts +41 -0
- package/dist/security/anomaly.js +77 -0
- package/dist/server/security-headers.d.ts +37 -0
- package/dist/server/security-headers.js +110 -0
- package/dist/ssr/adapters/edge.d.ts +12 -0
- package/dist/ssr/adapters/edge.js +26 -0
- package/dist/ssr/adapters/index.d.ts +23 -0
- package/dist/ssr/adapters/index.js +58 -0
- package/dist/ssr/app-router.d.ts +24 -0
- package/dist/ssr/app-router.js +70 -0
- package/dist/ssr/edge/handlers.d.ts +24 -0
- package/dist/ssr/edge/handlers.js +48 -0
- package/dist/ssr/image.d.ts +24 -0
- package/dist/ssr/image.js +38 -0
- package/dist/ssr/isr.d.ts +14 -0
- package/dist/ssr/isr.js +29 -0
- package/dist/ssr/rsc.d.ts +19 -0
- package/dist/ssr/rsc.js +33 -0
- package/dist/ssr/streaming.d.ts +31 -0
- package/dist/ssr/streaming.js +78 -0
- package/dist/ssr/universal-engine.d.ts +36 -0
- package/dist/ssr/universal-engine.js +139 -0
- package/dist/templates/manager.d.ts +28 -0
- package/dist/templates/manager.js +162 -0
- package/dist/templates/starters/angular-spa.d.ts +6 -0
- package/dist/templates/starters/angular-spa.js +149 -0
- package/dist/templates/starters/edge.d.ts +6 -0
- package/dist/templates/starters/edge.js +93 -0
- package/dist/templates/starters/fintech.d.ts +6 -0
- package/dist/templates/starters/fintech.js +211 -0
- package/dist/templates/starters/monorepo.d.ts +6 -0
- package/dist/templates/starters/monorepo.js +133 -0
- package/dist/templates/starters/nextjs-app.d.ts +13 -0
- package/dist/templates/starters/nextjs-app.js +116 -0
- package/dist/templates/starters/preact-spa.d.ts +6 -0
- package/dist/templates/starters/preact-spa.js +97 -0
- package/dist/templates/starters/premium-dashboard.d.ts +6 -0
- package/dist/templates/starters/premium-dashboard.js +762 -0
- package/dist/templates/starters/react-spa.d.ts +6 -0
- package/dist/templates/starters/react-spa.js +152 -0
- package/dist/templates/starters/react-ssr.d.ts +6 -0
- package/dist/templates/starters/react-ssr.js +190 -0
- package/dist/templates/starters/remix-app.d.ts +12 -0
- package/dist/templates/starters/remix-app.js +108 -0
- package/dist/templates/starters/solid-spa.d.ts +6 -0
- package/dist/templates/starters/solid-spa.js +158 -0
- package/dist/templates/starters/svelte-spa.d.ts +6 -0
- package/dist/templates/starters/svelte-spa.js +147 -0
- package/dist/templates/starters/vue-spa.d.ts +6 -0
- package/dist/templates/starters/vue-spa.js +136 -0
- package/dist/test/api.d.ts +58 -0
- package/dist/test/api.js +154 -0
- package/dist/test/coverage.d.ts +1 -0
- package/dist/test/coverage.js +134 -0
- package/dist/test/determinism.d.ts +1 -0
- package/dist/test/determinism.js +122 -0
- package/dist/test/regression.d.ts +1 -0
- package/dist/test/regression.js +30 -0
- package/dist/test/runner.d.ts +1 -0
- package/dist/test/runner.js +159 -0
- package/dist/test-server.d.ts +1 -0
- package/dist/test-server.js +22 -0
- package/dist/ui/terminal-warnings.d.ts +10 -0
- package/dist/ui/terminal-warnings.js +26 -0
- package/dist/ui/types.d.ts +13 -0
- package/dist/ui/types.js +5 -0
- package/dist/ui/warning-detector.d.ts +46 -0
- package/dist/ui/warning-detector.js +178 -0
- package/dist/ui/warning-library.d.ts +51 -0
- package/dist/ui/warning-library.js +283 -0
- package/dist/utils/interactive.d.ts +2 -0
- package/dist/utils/interactive.js +37 -0
- package/dist/utils/logger.d.ts +26 -0
- package/dist/utils/logger.js +130 -0
- package/dist/utils/path-normalize.d.ts +24 -0
- package/dist/utils/path-normalize.js +37 -0
- package/dist/visual/chart-generator.d.ts +11 -0
- package/dist/visual/chart-generator.js +30 -0
- package/dist/visual/client/renderer.d.ts +31 -0
- package/dist/visual/client/renderer.js +98 -0
- package/dist/visual/federation-editor.d.ts +1 -0
- package/dist/visual/federation-editor.js +231 -0
- package/dist/visual/graph-engine.d.ts +38 -0
- package/dist/visual/graph-engine.js +64 -0
- package/dist/visual/graph-ui.d.ts +2 -0
- package/dist/visual/graph-ui.js +119 -0
- package/dist/visual/graph-visualizer.d.ts +69 -0
- package/dist/visual/graph-visualizer.js +282 -0
- package/dist/visual/root-cause.d.ts +83 -0
- package/dist/visual/root-cause.js +265 -0
- package/package.json +169 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nuclie v2.0 Zero-Trust Signing System
|
|
3
|
+
* Implementation: ECDSA P-256 via WebCrypto (Node.js)
|
|
4
|
+
* Day 9: WebCrypto Signing System Lock
|
|
5
|
+
*/
|
|
6
|
+
import { webcrypto } from 'crypto';
|
|
7
|
+
const { subtle } = webcrypto;
|
|
8
|
+
export class PluginSigner {
|
|
9
|
+
/**
|
|
10
|
+
* Generate a new ECDSA P-256 Key Pair
|
|
11
|
+
*/
|
|
12
|
+
static async generateKeyPair() {
|
|
13
|
+
return await subtle.generateKey({
|
|
14
|
+
name: "ECDSA",
|
|
15
|
+
namedCurve: "P-256",
|
|
16
|
+
}, true, ["sign", "verify"]);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Export Key to PEM/Base64 format for storage
|
|
20
|
+
*/
|
|
21
|
+
static async exportKey(key) {
|
|
22
|
+
const exported = await subtle.exportKey(key.type === 'public' ? 'spki' : 'pkcs8', key);
|
|
23
|
+
return Buffer.from(exported).toString('base64');
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Import Key from PEM/Base64 format
|
|
27
|
+
*/
|
|
28
|
+
static async importKey(base64Key, type) {
|
|
29
|
+
const buffer = Buffer.from(base64Key, 'base64');
|
|
30
|
+
return await subtle.importKey(type === 'public' ? 'spki' : 'pkcs8', buffer, {
|
|
31
|
+
name: "ECDSA",
|
|
32
|
+
namedCurve: "P-256",
|
|
33
|
+
}, true, type === 'public' ? ['verify'] : ['sign']);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Calculate SHA-256 Hash of the binary
|
|
37
|
+
*/
|
|
38
|
+
static async calculateHash(data) {
|
|
39
|
+
const hashBuffer = await subtle.digest('SHA-256', data);
|
|
40
|
+
return Buffer.from(hashBuffer).toString('hex');
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Sign a plugin binary
|
|
44
|
+
* Returns the Base64 signature
|
|
45
|
+
*/
|
|
46
|
+
static async sign(data, privateKey) {
|
|
47
|
+
const hash = await this.calculateHash(data); // Sign the HASH, not the binary (efficiency)
|
|
48
|
+
// Actually, ECDSA typically signs the data digest.
|
|
49
|
+
// Subtle.sign will hash it internally if we specify hash algorithm in params,
|
|
50
|
+
// OR we can sign the raw bytes. Signing raw bytes is standard for 'sign'.
|
|
51
|
+
// BUT for huge files, better to hash first?
|
|
52
|
+
// WebCrypto ECDSA params usually require hash specification: { name: "ECDSA", hash: "SHA-256" }
|
|
53
|
+
// So we pass the DATA, it hashes and signs.
|
|
54
|
+
const sig = await subtle.sign({
|
|
55
|
+
name: "ECDSA",
|
|
56
|
+
hash: { name: "SHA-256" },
|
|
57
|
+
}, privateKey, data);
|
|
58
|
+
return Buffer.from(sig).toString('base64');
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Verify a plugin signature
|
|
62
|
+
*/
|
|
63
|
+
static async verify(data, signatureBase64, publicKey) {
|
|
64
|
+
const sigBuffer = Buffer.from(signatureBase64, 'base64');
|
|
65
|
+
return await subtle.verify({
|
|
66
|
+
name: "ECDSA",
|
|
67
|
+
hash: { name: "SHA-256" },
|
|
68
|
+
}, publicKey, sigBuffer, data);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Create a complete Signed Manifest
|
|
72
|
+
*/
|
|
73
|
+
static async createManifest(meta, wasmBytes, keyPair) {
|
|
74
|
+
const hash = await this.calculateHash(wasmBytes);
|
|
75
|
+
const signature = await this.sign(wasmBytes, keyPair.privateKey);
|
|
76
|
+
const publicKey = await this.exportKey(keyPair.publicKey);
|
|
77
|
+
return {
|
|
78
|
+
...meta,
|
|
79
|
+
hash,
|
|
80
|
+
signature,
|
|
81
|
+
publicKey,
|
|
82
|
+
permissions: meta.permissions || {}
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Verify integrity of a Plugin + Manifest
|
|
87
|
+
*/
|
|
88
|
+
static async verifyManifest(manifest, wasmBytes) {
|
|
89
|
+
// 1. Check Hash
|
|
90
|
+
const calcHash = await this.calculateHash(wasmBytes);
|
|
91
|
+
if (calcHash !== manifest.hash) {
|
|
92
|
+
console.error(`Hash mismatch: Expected ${manifest.hash}, got ${calcHash}`);
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
// 2. Check Signature
|
|
96
|
+
try {
|
|
97
|
+
const publicKey = await this.importKey(manifest.publicKey, 'public');
|
|
98
|
+
const valid = await this.verify(wasmBytes, manifest.signature, publicKey);
|
|
99
|
+
if (!valid) {
|
|
100
|
+
console.error('Signature verification failed');
|
|
101
|
+
}
|
|
102
|
+
return valid;
|
|
103
|
+
}
|
|
104
|
+
catch (e) {
|
|
105
|
+
console.error('Key import failed:', e);
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { log } from '../utils/logger.js';
|
|
4
|
+
export function createStaticPlugin(rootDir, outDir) {
|
|
5
|
+
return {
|
|
6
|
+
manifest: {
|
|
7
|
+
name: 'nuclie:static',
|
|
8
|
+
version: '1.0.0',
|
|
9
|
+
engineVersion: '1.0.0',
|
|
10
|
+
type: 'js',
|
|
11
|
+
hooks: ['buildEnd'],
|
|
12
|
+
permissions: { fs: 'read' }
|
|
13
|
+
},
|
|
14
|
+
id: 'nuclie:static',
|
|
15
|
+
async runHook(hook, data) {
|
|
16
|
+
if (hook !== 'buildEnd')
|
|
17
|
+
return data;
|
|
18
|
+
const publicDir = path.join(rootDir, 'public');
|
|
19
|
+
try {
|
|
20
|
+
const stats = await fs.stat(publicDir);
|
|
21
|
+
if (stats.isDirectory()) {
|
|
22
|
+
log.info(`Copying public directory from ${publicDir} to ${outDir}`);
|
|
23
|
+
await fs.mkdir(outDir, { recursive: true });
|
|
24
|
+
await copyDir(publicDir, outDir);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
// Public dir doesn't exist, skip
|
|
29
|
+
}
|
|
30
|
+
return data;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
async function copyDir(src, dest) {
|
|
35
|
+
await fs.mkdir(dest, { recursive: true });
|
|
36
|
+
const entries = await fs.readdir(src, { withFileTypes: true });
|
|
37
|
+
for (const entry of entries) {
|
|
38
|
+
const srcPath = path.join(src, entry.name);
|
|
39
|
+
const destPath = path.join(dest, entry.name);
|
|
40
|
+
if (entry.isDirectory()) {
|
|
41
|
+
await copyDir(srcPath, destPath);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
await fs.copyFile(srcPath, destPath);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { createRequire } from 'module';
|
|
3
|
+
export class SveltePlugin {
|
|
4
|
+
constructor(root) {
|
|
5
|
+
this.name = 'svelte-plugin';
|
|
6
|
+
this.root = root;
|
|
7
|
+
}
|
|
8
|
+
async transform(code, id) {
|
|
9
|
+
if (!id.endsWith('.svelte'))
|
|
10
|
+
return;
|
|
11
|
+
try {
|
|
12
|
+
const require = createRequire(path.join(this.root, 'package.json'));
|
|
13
|
+
const svelte = require('svelte/compiler');
|
|
14
|
+
const result = svelte.compile(code, {
|
|
15
|
+
filename: id,
|
|
16
|
+
generate: 'dom', // Client-side DOM
|
|
17
|
+
dev: true, // Dev mode (better warnings)
|
|
18
|
+
css: 'injected' // Inject CSS automatically
|
|
19
|
+
});
|
|
20
|
+
return result.js.code;
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
console.error('Svelte Compilation Error:', e);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { PluginSandbox } from './sandbox.js';
|
|
2
|
+
async function run() {
|
|
3
|
+
const sb = new PluginSandbox(2);
|
|
4
|
+
try {
|
|
5
|
+
console.log('[test] running sandbox transform');
|
|
6
|
+
const src = `console.log('hello');\n`;
|
|
7
|
+
const out = await sb.runTransform(src, 'test-1');
|
|
8
|
+
console.log('[test] transform output:\n', out);
|
|
9
|
+
}
|
|
10
|
+
finally {
|
|
11
|
+
sb.stop();
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
run().catch((e) => console.error(e));
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import crypto from 'crypto';
|
|
4
|
+
export async function verifyPluginSignature(pluginPath, keysDir) {
|
|
5
|
+
try {
|
|
6
|
+
const sigPath = pluginPath + '.sig';
|
|
7
|
+
const manifestPath = pluginPath + '.manifest.json';
|
|
8
|
+
const [sigBuf, dataBuf, manifestBuf] = await Promise.all([
|
|
9
|
+
fs.readFile(sigPath).catch(() => null),
|
|
10
|
+
fs.readFile(pluginPath),
|
|
11
|
+
fs.readFile(manifestPath).catch(() => null),
|
|
12
|
+
]);
|
|
13
|
+
if (!sigBuf)
|
|
14
|
+
return false;
|
|
15
|
+
const sig = Buffer.from(sigBuf.toString().trim(), 'base64');
|
|
16
|
+
const keysFolder = keysDir || path.resolve(process.cwd(), 'config', 'plugin_keys');
|
|
17
|
+
let targetKeys = [];
|
|
18
|
+
if (manifestBuf) {
|
|
19
|
+
try {
|
|
20
|
+
const manifest = JSON.parse(manifestBuf.toString());
|
|
21
|
+
if (manifest && manifest.keyId) {
|
|
22
|
+
targetKeys = [manifest.keyId + '.pem'];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
// malformed manifest -> fall back to scanning all keys
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (targetKeys.length === 0) {
|
|
30
|
+
targetKeys = await fs.readdir(keysFolder).catch(() => []);
|
|
31
|
+
}
|
|
32
|
+
// consult truststore if present - restrict to trusted keys
|
|
33
|
+
const trustPath = path.resolve(process.cwd(), 'config', 'trust.json');
|
|
34
|
+
const trust = await fs.readFile(trustPath).then((b) => JSON.parse(b.toString())).catch(() => null);
|
|
35
|
+
if (trust && Array.isArray(trust.keys) && trust.keys.length > 0) {
|
|
36
|
+
const keysArr = trust.keys;
|
|
37
|
+
const active = keysArr.filter((x) => !x.revoked).map((x) => x.keyId);
|
|
38
|
+
targetKeys = targetKeys.filter((k) => active.includes(k.replace(/\.pem$/, '')));
|
|
39
|
+
}
|
|
40
|
+
for (const e of targetKeys) {
|
|
41
|
+
if (!e.endsWith('.pem'))
|
|
42
|
+
continue;
|
|
43
|
+
const pub = await fs.readFile(path.join(keysFolder, e), 'utf8').catch(() => null);
|
|
44
|
+
if (!pub)
|
|
45
|
+
continue;
|
|
46
|
+
const verifier = crypto.createVerify('sha256');
|
|
47
|
+
verifier.update(dataBuf);
|
|
48
|
+
verifier.end();
|
|
49
|
+
try {
|
|
50
|
+
if (verifier.verify(pub, sig))
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
// ignore and try next key
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export default verifyPluginSignature;
|
|
64
|
+
export async function verifyBundle(pluginPath, keysDir) {
|
|
65
|
+
try {
|
|
66
|
+
const manifestPath = pluginPath + '.manifest.json';
|
|
67
|
+
const manifestSigPath = pluginPath + '.manifest.sig';
|
|
68
|
+
const [manifestBuf, manifestSigBuf, dataBuf] = await Promise.all([
|
|
69
|
+
fs.readFile(manifestPath).catch(() => null),
|
|
70
|
+
fs.readFile(manifestSigPath).catch(() => null),
|
|
71
|
+
fs.readFile(pluginPath),
|
|
72
|
+
]);
|
|
73
|
+
if (!manifestBuf || !manifestSigBuf)
|
|
74
|
+
return false;
|
|
75
|
+
const manifest = JSON.parse(manifestBuf.toString());
|
|
76
|
+
const manifestSig = Buffer.from(manifestSigBuf.toString().trim(), 'base64');
|
|
77
|
+
// ensure signing key is present in truststore and not revoked
|
|
78
|
+
const trustPath = path.resolve(process.cwd(), 'config', 'trust.json');
|
|
79
|
+
const trust = await fs.readFile(trustPath).then((b) => JSON.parse(b.toString())).catch(() => null);
|
|
80
|
+
if (!trust || !Array.isArray(trust.keys))
|
|
81
|
+
return false;
|
|
82
|
+
const keyEntry = trust.keys.find((k) => k.keyId === manifest.keyId);
|
|
83
|
+
if (!keyEntry || keyEntry.revoked)
|
|
84
|
+
return false;
|
|
85
|
+
if (manifest.publisherId && keyEntry.publisherId && manifest.publisherId !== keyEntry.publisherId)
|
|
86
|
+
return false;
|
|
87
|
+
// find public key file
|
|
88
|
+
const keysFolder = keysDir || path.resolve(process.cwd(), 'config', 'plugin_keys');
|
|
89
|
+
const keyFile = path.join(keysFolder, manifest.keyId + '.pem');
|
|
90
|
+
const pub = await fs.readFile(keyFile, 'utf8').catch(() => null);
|
|
91
|
+
if (!pub)
|
|
92
|
+
return false;
|
|
93
|
+
// verify manifest signature
|
|
94
|
+
const verifier = crypto.createVerify('sha256');
|
|
95
|
+
verifier.update(JSON.stringify(manifest, null, 2));
|
|
96
|
+
verifier.end();
|
|
97
|
+
if (!verifier.verify(pub, manifestSig))
|
|
98
|
+
return false;
|
|
99
|
+
// verify checksum matches
|
|
100
|
+
const hash = crypto.createHash('sha256').update(dataBuf).digest('hex');
|
|
101
|
+
if (manifest.checksum !== hash)
|
|
102
|
+
return false;
|
|
103
|
+
// optionally verify plugin internal signature if present (not required)
|
|
104
|
+
// manifest signature + checksum are the primary source of truth
|
|
105
|
+
// we attempted plugin internal signature verification for extra assurance but do not require it
|
|
106
|
+
// (if you want to require it, change this to `return pluginSigOk`)
|
|
107
|
+
// const pluginSigOk = await verifyPluginSignature(pluginPath, keysDir).catch(() => false)
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
catch (e) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { createRequire } from 'module';
|
|
3
|
+
export class VuePlugin {
|
|
4
|
+
constructor(root) {
|
|
5
|
+
this.name = 'vue-plugin';
|
|
6
|
+
this.root = root;
|
|
7
|
+
}
|
|
8
|
+
async transform(code, id) {
|
|
9
|
+
if (!id.endsWith('.vue'))
|
|
10
|
+
return;
|
|
11
|
+
console.log(`[VuePlugin] Transforming ${id}`);
|
|
12
|
+
try {
|
|
13
|
+
const require = createRequire(path.join(this.root, 'package.json'));
|
|
14
|
+
// Load vue/compiler-sfc from the project's dependencies
|
|
15
|
+
const compiler = require('@vue/compiler-sfc');
|
|
16
|
+
// 1. Parse
|
|
17
|
+
const { descriptor } = compiler.parse(code, { filename: id });
|
|
18
|
+
const shortId = path.basename(id); // distinct-ish
|
|
19
|
+
const scopeId = `data-v-${Math.random().toString(36).substring(2, 9)}`;
|
|
20
|
+
let scriptContent = 'const script = {}; export default script;';
|
|
21
|
+
// 2. Script
|
|
22
|
+
if (descriptor.script || descriptor.scriptSetup) {
|
|
23
|
+
const compiledScript = compiler.compileScript(descriptor, { id: scopeId });
|
|
24
|
+
scriptContent = compiledScript.content;
|
|
25
|
+
}
|
|
26
|
+
// Robustly find and replace the default export with a variable declaration
|
|
27
|
+
// so we can attach the render function later.
|
|
28
|
+
const exportDefaultRegex = /export\s+default\s+/;
|
|
29
|
+
if (exportDefaultRegex.test(scriptContent)) {
|
|
30
|
+
scriptContent = scriptContent.replace(exportDefaultRegex, 'const _sfc_main = ');
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
// Fallback if no export default is found (though rare in Vue SFC)
|
|
34
|
+
scriptContent += '\nconst _sfc_main = {};';
|
|
35
|
+
}
|
|
36
|
+
// 3. Template
|
|
37
|
+
let templateCode = '';
|
|
38
|
+
if (descriptor.template) {
|
|
39
|
+
const templateResult = compiler.compileTemplate({
|
|
40
|
+
source: descriptor.template.content,
|
|
41
|
+
filename: id,
|
|
42
|
+
id: scopeId,
|
|
43
|
+
scoped: descriptor.styles.some((s) => s.scoped),
|
|
44
|
+
slotted: false,
|
|
45
|
+
compilerOptions: {
|
|
46
|
+
scopeId: descriptor.styles.some((s) => s.scoped) ? scopeId : undefined
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
templateCode = templateResult.code.replace('export function render', 'const _sfc_render = function render');
|
|
50
|
+
}
|
|
51
|
+
// 4. Styles
|
|
52
|
+
let cssCode = '';
|
|
53
|
+
for (const style of descriptor.styles) {
|
|
54
|
+
const styleResult = compiler.compileStyle({
|
|
55
|
+
source: style.content,
|
|
56
|
+
filename: id,
|
|
57
|
+
id: scopeId,
|
|
58
|
+
scoped: style.scoped
|
|
59
|
+
});
|
|
60
|
+
cssCode += styleResult.code;
|
|
61
|
+
}
|
|
62
|
+
// 5. Assemble
|
|
63
|
+
const output = `
|
|
64
|
+
${scriptContent}
|
|
65
|
+
${templateCode}
|
|
66
|
+
|
|
67
|
+
// Inject CSS
|
|
68
|
+
${cssCode ? `
|
|
69
|
+
const style = document.createElement('style');
|
|
70
|
+
style.innerHTML = ${JSON.stringify(cssCode)};
|
|
71
|
+
document.head.appendChild(style);
|
|
72
|
+
` : ''}
|
|
73
|
+
|
|
74
|
+
${descriptor.styles.some((s) => s.scoped) ? `_sfc_main.__scopeId = "${scopeId}";` : ''}
|
|
75
|
+
_sfc_main.render = _sfc_render;
|
|
76
|
+
export default _sfc_main;
|
|
77
|
+
`;
|
|
78
|
+
return output;
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
console.error('[VuePlugin] SFC Compilation Error:', e);
|
|
82
|
+
// Log warning but don't crash
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { PluginRuntime } from '../native/wasm.js';
|
|
2
|
+
export { PluginRuntime };
|
|
3
|
+
export declare class WasmPluginHost {
|
|
4
|
+
private runtime;
|
|
5
|
+
constructor();
|
|
6
|
+
/**
|
|
7
|
+
* Load and verify a plugin from disk
|
|
8
|
+
*/
|
|
9
|
+
loadPlugin(pluginPath: string): Promise<Buffer>;
|
|
10
|
+
/**
|
|
11
|
+
* Run a specific plugin
|
|
12
|
+
*/
|
|
13
|
+
runPlugin(pluginBytes: Buffer, input: any, timeoutMs?: number): Promise<any>;
|
|
14
|
+
}
|
|
15
|
+
export declare const wasmHost: WasmPluginHost;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { PluginRuntime } from '../native/wasm.js';
|
|
2
|
+
export { PluginRuntime }; // Re-export for adapter usage
|
|
3
|
+
import * as fs from 'fs/promises';
|
|
4
|
+
export class WasmPluginHost {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.runtime = new PluginRuntime();
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Load and verify a plugin from disk
|
|
10
|
+
*/
|
|
11
|
+
async loadPlugin(pluginPath) {
|
|
12
|
+
const buffer = await fs.readFile(pluginPath);
|
|
13
|
+
if (!this.runtime.verify(buffer)) {
|
|
14
|
+
throw new Error(`Invalid WASM plugin: ${pluginPath}`);
|
|
15
|
+
}
|
|
16
|
+
return buffer;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Run a specific plugin
|
|
20
|
+
*/
|
|
21
|
+
async runPlugin(pluginBytes, input, timeoutMs = 100) {
|
|
22
|
+
const inputStr = JSON.stringify(input);
|
|
23
|
+
// Use provided timeout
|
|
24
|
+
const outputStr = this.runtime.execute(pluginBytes, inputStr, timeoutMs);
|
|
25
|
+
try {
|
|
26
|
+
return JSON.parse(outputStr || 'null'); // Handle empty/string
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
return outputStr; // Return raw if not JSON
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export const wasmHost = new WasmPluginHost();
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
export class WasmPlugin {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.name = 'wasm-plugin';
|
|
6
|
+
}
|
|
7
|
+
setup(build) {
|
|
8
|
+
// Resolve .wasm files
|
|
9
|
+
build.onResolve({ filter: /\.wasm$/ }, (args) => {
|
|
10
|
+
if (args.namespace === 'wasm-stub') {
|
|
11
|
+
return {
|
|
12
|
+
path: args.path,
|
|
13
|
+
namespace: 'wasm-binary',
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
path: path.resolve(args.resolveDir, args.path),
|
|
18
|
+
namespace: 'wasm-stub',
|
|
19
|
+
};
|
|
20
|
+
});
|
|
21
|
+
// Load .wasm files
|
|
22
|
+
build.onLoad({ filter: /.*/, namespace: 'wasm-stub' }, async (args) => {
|
|
23
|
+
return {
|
|
24
|
+
contents: `
|
|
25
|
+
import wasmUrl from ${JSON.stringify(args.path)};
|
|
26
|
+
export default async (imports) => {
|
|
27
|
+
const response = await fetch(wasmUrl);
|
|
28
|
+
const bytes = await response.arrayBuffer();
|
|
29
|
+
const { instance } = await WebAssembly.instantiate(bytes, imports);
|
|
30
|
+
return instance.exports;
|
|
31
|
+
};
|
|
32
|
+
`,
|
|
33
|
+
loader: 'js',
|
|
34
|
+
};
|
|
35
|
+
});
|
|
36
|
+
// Handle the actual binary loading (using file loader to emit asset)
|
|
37
|
+
build.onLoad({ filter: /.*/, namespace: 'wasm-binary' }, async (args) => {
|
|
38
|
+
return {
|
|
39
|
+
contents: await fs.readFile(args.path),
|
|
40
|
+
loader: 'file', // Emit as asset
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nuclie Legacy Polyfill Injector
|
|
3
|
+
* Day 25: Legacy Polyfills & Windows Lock
|
|
4
|
+
*/
|
|
5
|
+
export declare const CORE_JS_IMPORT = "import 'core-js/stable'; import 'regenerator-runtime/runtime';";
|
|
6
|
+
export declare class PolyfillInjector {
|
|
7
|
+
static shouldInject(targets: string[]): boolean;
|
|
8
|
+
static transform(code: string, targets: string[]): string;
|
|
9
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nuclie Legacy Polyfill Injector
|
|
3
|
+
* Day 25: Legacy Polyfills & Windows Lock
|
|
4
|
+
*/
|
|
5
|
+
export const CORE_JS_IMPORT = "import 'core-js/stable'; import 'regenerator-runtime/runtime';";
|
|
6
|
+
export class PolyfillInjector {
|
|
7
|
+
static shouldInject(targets) {
|
|
8
|
+
// Simple heuristic: if 'ie 11' or 'legacy' is in targets
|
|
9
|
+
return targets.some(t => t.includes('ie') || t.includes('legacy') || t.includes('es5'));
|
|
10
|
+
}
|
|
11
|
+
static transform(code, targets) {
|
|
12
|
+
if (this.shouldInject(targets)) {
|
|
13
|
+
// Prepend imports
|
|
14
|
+
return `${CORE_JS_IMPORT}\n${code}`;
|
|
15
|
+
}
|
|
16
|
+
return code;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @nuclie/preset-core
|
|
3
|
+
*
|
|
4
|
+
* Opinionated defaults for 80% of applications.
|
|
5
|
+
* Zero-config experience with smart auto-detection.
|
|
6
|
+
*
|
|
7
|
+
* Philosophy:
|
|
8
|
+
* - Convention over configuration
|
|
9
|
+
* - Auto-detect framework from package.json
|
|
10
|
+
* - Smart defaults that "just work"
|
|
11
|
+
* - Easy to override when needed
|
|
12
|
+
*/
|
|
13
|
+
import { BuildConfig } from '../config/index.js';
|
|
14
|
+
export interface CorePresetOptions {
|
|
15
|
+
/**
|
|
16
|
+
* Auto-detect framework from package.json dependencies
|
|
17
|
+
* @default true
|
|
18
|
+
*/
|
|
19
|
+
autoDetectFramework?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Auto-detect entry points from common locations
|
|
22
|
+
* @default true
|
|
23
|
+
*/
|
|
24
|
+
autoDetectEntry?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Auto-enable HMR in development
|
|
27
|
+
* @default true
|
|
28
|
+
*/
|
|
29
|
+
autoEnableHMR?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Auto-configure CSS handling
|
|
32
|
+
* @default true
|
|
33
|
+
*/
|
|
34
|
+
autoConfigureCSS?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Auto-configure asset handling
|
|
37
|
+
* @default true
|
|
38
|
+
*/
|
|
39
|
+
autoConfigureAssets?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Port selection strategy
|
|
42
|
+
* @default 'auto' - Try 5173, fallback to next available
|
|
43
|
+
*/
|
|
44
|
+
portStrategy?: 'auto' | 'fixed' | number;
|
|
45
|
+
/**
|
|
46
|
+
* Output directory
|
|
47
|
+
* @default 'dist'
|
|
48
|
+
*/
|
|
49
|
+
outDir?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Public directory for static assets
|
|
52
|
+
* @default 'public'
|
|
53
|
+
*/
|
|
54
|
+
publicDir?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Source directory
|
|
57
|
+
* @default 'src'
|
|
58
|
+
*/
|
|
59
|
+
srcDir?: string;
|
|
60
|
+
}
|
|
61
|
+
export interface FrameworkDetectionResult {
|
|
62
|
+
framework: string | null;
|
|
63
|
+
version: string | null;
|
|
64
|
+
confidence: 'high' | 'medium' | 'low';
|
|
65
|
+
source: 'dependencies' | 'devDependencies' | 'peerDependencies' | 'manual';
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Core preset implementation
|
|
69
|
+
*/
|
|
70
|
+
export declare class CorePreset {
|
|
71
|
+
private options;
|
|
72
|
+
private cwd;
|
|
73
|
+
constructor(cwd: string, options?: CorePresetOptions);
|
|
74
|
+
/**
|
|
75
|
+
* Apply core preset to build config
|
|
76
|
+
*/
|
|
77
|
+
apply(config?: Partial<BuildConfig>): Partial<BuildConfig>;
|
|
78
|
+
/**
|
|
79
|
+
* Detect framework from package.json
|
|
80
|
+
*/
|
|
81
|
+
private detectFramework;
|
|
82
|
+
/**
|
|
83
|
+
* Detect entry points from common locations
|
|
84
|
+
*/
|
|
85
|
+
private detectEntryPoints;
|
|
86
|
+
/**
|
|
87
|
+
* Select port based on strategy
|
|
88
|
+
*/
|
|
89
|
+
private selectPort;
|
|
90
|
+
/**
|
|
91
|
+
* Detect CSS framework from package.json
|
|
92
|
+
*/
|
|
93
|
+
private detectCSSFramework;
|
|
94
|
+
/**
|
|
95
|
+
* Get preset info for diagnostics
|
|
96
|
+
*/
|
|
97
|
+
getInfo(): {
|
|
98
|
+
framework: FrameworkDetectionResult;
|
|
99
|
+
entry: string[];
|
|
100
|
+
port: number;
|
|
101
|
+
css: BuildConfig['css'];
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Factory function for easy usage
|
|
106
|
+
*/
|
|
107
|
+
export declare function corePreset(options?: CorePresetOptions): (cwd: string) => CorePreset;
|
|
108
|
+
/**
|
|
109
|
+
* Default export
|
|
110
|
+
*/
|
|
111
|
+
export default corePreset;
|