@frontmcp/uipack 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +246 -0
- package/LICENSE +201 -0
- package/README.md +150 -0
- package/adapters/index.d.ts +13 -0
- package/adapters/index.d.ts.map +1 -0
- package/adapters/index.js +462 -0
- package/adapters/platform-meta.d.ts +166 -0
- package/adapters/platform-meta.d.ts.map +1 -0
- package/adapters/response-builder.d.ts +108 -0
- package/adapters/response-builder.d.ts.map +1 -0
- package/adapters/serving-mode.d.ts +107 -0
- package/adapters/serving-mode.d.ts.map +1 -0
- package/base-template/bridge.d.ts +90 -0
- package/base-template/bridge.d.ts.map +1 -0
- package/base-template/default-base-template.d.ts +92 -0
- package/base-template/default-base-template.d.ts.map +1 -0
- package/base-template/index.d.ts +15 -0
- package/base-template/index.d.ts.map +1 -0
- package/base-template/index.js +1398 -0
- package/base-template/polyfills.d.ts +31 -0
- package/base-template/polyfills.d.ts.map +1 -0
- package/base-template/theme-styles.d.ts +74 -0
- package/base-template/theme-styles.d.ts.map +1 -0
- package/bridge-runtime/iife-generator.d.ts +62 -0
- package/bridge-runtime/iife-generator.d.ts.map +1 -0
- package/bridge-runtime/index.d.ts +10 -0
- package/bridge-runtime/index.d.ts.map +1 -0
- package/bridge-runtime/index.js +883 -0
- package/build/cdn-resources.d.ts +243 -0
- package/build/cdn-resources.d.ts.map +1 -0
- package/build/index.d.ts +295 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +6861 -0
- package/build/widget-manifest.d.ts +362 -0
- package/build/widget-manifest.d.ts.map +1 -0
- package/bundler/cache.d.ts +173 -0
- package/bundler/cache.d.ts.map +1 -0
- package/bundler/file-cache/component-builder.d.ts +167 -0
- package/bundler/file-cache/component-builder.d.ts.map +1 -0
- package/bundler/file-cache/hash-calculator.d.ts +155 -0
- package/bundler/file-cache/hash-calculator.d.ts.map +1 -0
- package/bundler/file-cache/index.d.ts +12 -0
- package/bundler/file-cache/index.d.ts.map +1 -0
- package/bundler/file-cache/storage/filesystem.d.ts +149 -0
- package/bundler/file-cache/storage/filesystem.d.ts.map +1 -0
- package/bundler/file-cache/storage/index.d.ts +11 -0
- package/bundler/file-cache/storage/index.d.ts.map +1 -0
- package/bundler/file-cache/storage/interface.d.ts +152 -0
- package/bundler/file-cache/storage/interface.d.ts.map +1 -0
- package/bundler/file-cache/storage/redis.d.ts +139 -0
- package/bundler/file-cache/storage/redis.d.ts.map +1 -0
- package/bundler/index.d.ts +35 -0
- package/bundler/index.d.ts.map +1 -0
- package/bundler/index.js +2947 -0
- package/bundler/sandbox/enclave-adapter.d.ts +121 -0
- package/bundler/sandbox/enclave-adapter.d.ts.map +1 -0
- package/bundler/sandbox/executor.d.ts +14 -0
- package/bundler/sandbox/executor.d.ts.map +1 -0
- package/bundler/sandbox/policy.d.ts +62 -0
- package/bundler/sandbox/policy.d.ts.map +1 -0
- package/bundler/types.d.ts +702 -0
- package/bundler/types.d.ts.map +1 -0
- package/dependency/cdn-registry.d.ts +98 -0
- package/dependency/cdn-registry.d.ts.map +1 -0
- package/dependency/import-map.d.ts +186 -0
- package/dependency/import-map.d.ts.map +1 -0
- package/dependency/import-parser.d.ts +82 -0
- package/dependency/import-parser.d.ts.map +1 -0
- package/dependency/index.d.ts +17 -0
- package/dependency/index.d.ts.map +1 -0
- package/dependency/index.js +3215 -0
- package/dependency/resolver.d.ts +164 -0
- package/dependency/resolver.d.ts.map +1 -0
- package/dependency/schemas.d.ts +486 -0
- package/dependency/schemas.d.ts.map +1 -0
- package/dependency/template-loader.d.ts +204 -0
- package/dependency/template-loader.d.ts.map +1 -0
- package/dependency/template-processor.d.ts +118 -0
- package/dependency/template-processor.d.ts.map +1 -0
- package/dependency/types.d.ts +739 -0
- package/dependency/types.d.ts.map +1 -0
- package/esm/adapters/index.d.ts +13 -0
- package/esm/adapters/index.d.ts.map +1 -0
- package/esm/adapters/index.js +427 -0
- package/esm/adapters/platform-meta.d.ts +166 -0
- package/esm/adapters/platform-meta.d.ts.map +1 -0
- package/esm/adapters/response-builder.d.ts +108 -0
- package/esm/adapters/response-builder.d.ts.map +1 -0
- package/esm/adapters/serving-mode.d.ts +107 -0
- package/esm/adapters/serving-mode.d.ts.map +1 -0
- package/esm/base-template/bridge.d.ts +90 -0
- package/esm/base-template/bridge.d.ts.map +1 -0
- package/esm/base-template/default-base-template.d.ts +92 -0
- package/esm/base-template/default-base-template.d.ts.map +1 -0
- package/esm/base-template/index.d.ts +15 -0
- package/esm/base-template/index.d.ts.map +1 -0
- package/esm/base-template/index.js +1364 -0
- package/esm/base-template/polyfills.d.ts +31 -0
- package/esm/base-template/polyfills.d.ts.map +1 -0
- package/esm/base-template/theme-styles.d.ts +74 -0
- package/esm/base-template/theme-styles.d.ts.map +1 -0
- package/esm/bridge-runtime/iife-generator.d.ts +62 -0
- package/esm/bridge-runtime/iife-generator.d.ts.map +1 -0
- package/esm/bridge-runtime/index.d.ts +10 -0
- package/esm/bridge-runtime/index.d.ts.map +1 -0
- package/esm/bridge-runtime/index.js +853 -0
- package/esm/build/cdn-resources.d.ts +243 -0
- package/esm/build/cdn-resources.d.ts.map +1 -0
- package/esm/build/index.d.ts +295 -0
- package/esm/build/index.d.ts.map +1 -0
- package/esm/build/index.js +6786 -0
- package/esm/build/widget-manifest.d.ts +362 -0
- package/esm/build/widget-manifest.d.ts.map +1 -0
- package/esm/bundler/cache.d.ts +173 -0
- package/esm/bundler/cache.d.ts.map +1 -0
- package/esm/bundler/file-cache/component-builder.d.ts +167 -0
- package/esm/bundler/file-cache/component-builder.d.ts.map +1 -0
- package/esm/bundler/file-cache/hash-calculator.d.ts +155 -0
- package/esm/bundler/file-cache/hash-calculator.d.ts.map +1 -0
- package/esm/bundler/file-cache/index.d.ts +12 -0
- package/esm/bundler/file-cache/index.d.ts.map +1 -0
- package/esm/bundler/file-cache/storage/filesystem.d.ts +149 -0
- package/esm/bundler/file-cache/storage/filesystem.d.ts.map +1 -0
- package/esm/bundler/file-cache/storage/index.d.ts +11 -0
- package/esm/bundler/file-cache/storage/index.d.ts.map +1 -0
- package/esm/bundler/file-cache/storage/interface.d.ts +152 -0
- package/esm/bundler/file-cache/storage/interface.d.ts.map +1 -0
- package/esm/bundler/file-cache/storage/redis.d.ts +139 -0
- package/esm/bundler/file-cache/storage/redis.d.ts.map +1 -0
- package/esm/bundler/index.d.ts +35 -0
- package/esm/bundler/index.d.ts.map +1 -0
- package/esm/bundler/index.js +2882 -0
- package/esm/bundler/sandbox/enclave-adapter.d.ts +121 -0
- package/esm/bundler/sandbox/enclave-adapter.d.ts.map +1 -0
- package/esm/bundler/sandbox/executor.d.ts +14 -0
- package/esm/bundler/sandbox/executor.d.ts.map +1 -0
- package/esm/bundler/sandbox/policy.d.ts +62 -0
- package/esm/bundler/sandbox/policy.d.ts.map +1 -0
- package/esm/bundler/types.d.ts +702 -0
- package/esm/bundler/types.d.ts.map +1 -0
- package/esm/dependency/cdn-registry.d.ts +98 -0
- package/esm/dependency/cdn-registry.d.ts.map +1 -0
- package/esm/dependency/import-map.d.ts +186 -0
- package/esm/dependency/import-map.d.ts.map +1 -0
- package/esm/dependency/import-parser.d.ts +82 -0
- package/esm/dependency/import-parser.d.ts.map +1 -0
- package/esm/dependency/index.d.ts +17 -0
- package/esm/dependency/index.d.ts.map +1 -0
- package/esm/dependency/index.js +3096 -0
- package/esm/dependency/resolver.d.ts +164 -0
- package/esm/dependency/resolver.d.ts.map +1 -0
- package/esm/dependency/schemas.d.ts +486 -0
- package/esm/dependency/schemas.d.ts.map +1 -0
- package/esm/dependency/template-loader.d.ts +204 -0
- package/esm/dependency/template-loader.d.ts.map +1 -0
- package/esm/dependency/template-processor.d.ts +118 -0
- package/esm/dependency/template-processor.d.ts.map +1 -0
- package/esm/dependency/types.d.ts +739 -0
- package/esm/dependency/types.d.ts.map +1 -0
- package/esm/handlebars/expression-extractor.d.ts +147 -0
- package/esm/handlebars/expression-extractor.d.ts.map +1 -0
- package/esm/handlebars/helpers.d.ts +339 -0
- package/esm/handlebars/helpers.d.ts.map +1 -0
- package/esm/handlebars/index.d.ts +195 -0
- package/esm/handlebars/index.d.ts.map +1 -0
- package/esm/handlebars/index.js +587 -0
- package/esm/index.d.ts +50 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +12434 -0
- package/esm/package.json +68 -0
- package/esm/registry/index.d.ts +46 -0
- package/esm/registry/index.d.ts.map +1 -0
- package/esm/registry/index.js +6237 -0
- package/esm/registry/render-template.d.ts +91 -0
- package/esm/registry/render-template.d.ts.map +1 -0
- package/esm/registry/tool-ui.registry.d.ts +294 -0
- package/esm/registry/tool-ui.registry.d.ts.map +1 -0
- package/esm/registry/uri-utils.d.ts +56 -0
- package/esm/registry/uri-utils.d.ts.map +1 -0
- package/esm/renderers/cache.d.ts +145 -0
- package/esm/renderers/cache.d.ts.map +1 -0
- package/esm/renderers/html.renderer.d.ts +123 -0
- package/esm/renderers/html.renderer.d.ts.map +1 -0
- package/esm/renderers/index.d.ts +36 -0
- package/esm/renderers/index.d.ts.map +1 -0
- package/esm/renderers/index.js +1654 -0
- package/esm/renderers/mdx.renderer.d.ts +120 -0
- package/esm/renderers/mdx.renderer.d.ts.map +1 -0
- package/esm/renderers/registry.d.ts +133 -0
- package/esm/renderers/registry.d.ts.map +1 -0
- package/esm/renderers/types.d.ts +342 -0
- package/esm/renderers/types.d.ts.map +1 -0
- package/esm/renderers/utils/detect.d.ts +107 -0
- package/esm/renderers/utils/detect.d.ts.map +1 -0
- package/esm/renderers/utils/hash.d.ts +40 -0
- package/esm/renderers/utils/hash.d.ts.map +1 -0
- package/esm/renderers/utils/index.d.ts +9 -0
- package/esm/renderers/utils/index.d.ts.map +1 -0
- package/esm/renderers/utils/transpiler.d.ts +89 -0
- package/esm/renderers/utils/transpiler.d.ts.map +1 -0
- package/esm/runtime/adapters/html.adapter.d.ts +59 -0
- package/esm/runtime/adapters/html.adapter.d.ts.map +1 -0
- package/esm/runtime/adapters/index.d.ts +26 -0
- package/esm/runtime/adapters/index.d.ts.map +1 -0
- package/esm/runtime/adapters/mdx.adapter.d.ts +73 -0
- package/esm/runtime/adapters/mdx.adapter.d.ts.map +1 -0
- package/esm/runtime/adapters/types.d.ts +95 -0
- package/esm/runtime/adapters/types.d.ts.map +1 -0
- package/esm/runtime/csp.d.ts +48 -0
- package/esm/runtime/csp.d.ts.map +1 -0
- package/esm/runtime/index.d.ts +17 -0
- package/esm/runtime/index.d.ts.map +1 -0
- package/esm/runtime/index.js +4976 -0
- package/esm/runtime/mcp-bridge.d.ts +101 -0
- package/esm/runtime/mcp-bridge.d.ts.map +1 -0
- package/esm/runtime/renderer-runtime.d.ts +133 -0
- package/esm/runtime/renderer-runtime.d.ts.map +1 -0
- package/esm/runtime/sanitizer.d.ts +172 -0
- package/esm/runtime/sanitizer.d.ts.map +1 -0
- package/esm/runtime/types.d.ts +415 -0
- package/esm/runtime/types.d.ts.map +1 -0
- package/esm/runtime/wrapper.d.ts +421 -0
- package/esm/runtime/wrapper.d.ts.map +1 -0
- package/esm/styles/index.d.ts +8 -0
- package/esm/styles/index.d.ts.map +1 -0
- package/esm/styles/index.js +171 -0
- package/esm/styles/variants.d.ts +51 -0
- package/esm/styles/variants.d.ts.map +1 -0
- package/esm/theme/cdn.d.ts +195 -0
- package/esm/theme/cdn.d.ts.map +1 -0
- package/esm/theme/index.d.ts +18 -0
- package/esm/theme/index.d.ts.map +1 -0
- package/esm/theme/index.js +700 -0
- package/esm/theme/platforms.d.ts +107 -0
- package/esm/theme/platforms.d.ts.map +1 -0
- package/esm/theme/presets/github-openai.d.ts +50 -0
- package/esm/theme/presets/github-openai.d.ts.map +1 -0
- package/esm/theme/presets/index.d.ts +11 -0
- package/esm/theme/presets/index.d.ts.map +1 -0
- package/esm/theme/theme.d.ts +396 -0
- package/esm/theme/theme.d.ts.map +1 -0
- package/esm/tool-template/builder.d.ts +213 -0
- package/esm/tool-template/builder.d.ts.map +1 -0
- package/esm/tool-template/index.d.ts +16 -0
- package/esm/tool-template/index.d.ts.map +1 -0
- package/esm/tool-template/index.js +3518 -0
- package/esm/types/index.d.ts +14 -0
- package/esm/types/index.d.ts.map +1 -0
- package/esm/types/index.js +75 -0
- package/esm/types/ui-config.d.ts +641 -0
- package/esm/types/ui-config.d.ts.map +1 -0
- package/esm/types/ui-runtime.d.ts +1008 -0
- package/esm/types/ui-runtime.d.ts.map +1 -0
- package/esm/typings/cache/cache-adapter.d.ts +125 -0
- package/esm/typings/cache/cache-adapter.d.ts.map +1 -0
- package/esm/typings/cache/index.d.ts +10 -0
- package/esm/typings/cache/index.d.ts.map +1 -0
- package/esm/typings/cache/memory-cache.d.ts +92 -0
- package/esm/typings/cache/memory-cache.d.ts.map +1 -0
- package/esm/typings/dts-parser.d.ts +90 -0
- package/esm/typings/dts-parser.d.ts.map +1 -0
- package/esm/typings/index.d.ts +48 -0
- package/esm/typings/index.d.ts.map +1 -0
- package/esm/typings/index.js +812 -0
- package/esm/typings/schemas.d.ts +232 -0
- package/esm/typings/schemas.d.ts.map +1 -0
- package/esm/typings/type-fetcher.d.ts +89 -0
- package/esm/typings/type-fetcher.d.ts.map +1 -0
- package/esm/typings/types.d.ts +320 -0
- package/esm/typings/types.d.ts.map +1 -0
- package/esm/utils/escape-html.d.ts +58 -0
- package/esm/utils/escape-html.d.ts.map +1 -0
- package/esm/utils/index.d.ts +10 -0
- package/esm/utils/index.d.ts.map +1 -0
- package/esm/utils/index.js +40 -0
- package/esm/utils/safe-stringify.d.ts +30 -0
- package/esm/utils/safe-stringify.d.ts.map +1 -0
- package/esm/validation/error-box.d.ts +56 -0
- package/esm/validation/error-box.d.ts.map +1 -0
- package/esm/validation/index.d.ts +13 -0
- package/esm/validation/index.d.ts.map +1 -0
- package/esm/validation/index.js +542 -0
- package/esm/validation/schema-paths.d.ts +118 -0
- package/esm/validation/schema-paths.d.ts.map +1 -0
- package/esm/validation/template-validator.d.ts +143 -0
- package/esm/validation/template-validator.d.ts.map +1 -0
- package/esm/validation/wrapper.d.ts +97 -0
- package/esm/validation/wrapper.d.ts.map +1 -0
- package/handlebars/expression-extractor.d.ts +147 -0
- package/handlebars/expression-extractor.d.ts.map +1 -0
- package/handlebars/helpers.d.ts +339 -0
- package/handlebars/helpers.d.ts.map +1 -0
- package/handlebars/index.d.ts +195 -0
- package/handlebars/index.d.ts.map +1 -0
- package/handlebars/index.js +666 -0
- package/index.d.ts +50 -0
- package/index.d.ts.map +1 -0
- package/index.js +12683 -0
- package/package.json +66 -0
- package/registry/index.d.ts +46 -0
- package/registry/index.d.ts.map +1 -0
- package/registry/index.js +6280 -0
- package/registry/render-template.d.ts +91 -0
- package/registry/render-template.d.ts.map +1 -0
- package/registry/tool-ui.registry.d.ts +294 -0
- package/registry/tool-ui.registry.d.ts.map +1 -0
- package/registry/uri-utils.d.ts +56 -0
- package/registry/uri-utils.d.ts.map +1 -0
- package/renderers/cache.d.ts +145 -0
- package/renderers/cache.d.ts.map +1 -0
- package/renderers/html.renderer.d.ts +123 -0
- package/renderers/html.renderer.d.ts.map +1 -0
- package/renderers/index.d.ts +36 -0
- package/renderers/index.d.ts.map +1 -0
- package/renderers/index.js +1706 -0
- package/renderers/mdx.renderer.d.ts +120 -0
- package/renderers/mdx.renderer.d.ts.map +1 -0
- package/renderers/registry.d.ts +133 -0
- package/renderers/registry.d.ts.map +1 -0
- package/renderers/types.d.ts +342 -0
- package/renderers/types.d.ts.map +1 -0
- package/renderers/utils/detect.d.ts +107 -0
- package/renderers/utils/detect.d.ts.map +1 -0
- package/renderers/utils/hash.d.ts +40 -0
- package/renderers/utils/hash.d.ts.map +1 -0
- package/renderers/utils/index.d.ts +9 -0
- package/renderers/utils/index.d.ts.map +1 -0
- package/renderers/utils/transpiler.d.ts +89 -0
- package/renderers/utils/transpiler.d.ts.map +1 -0
- package/runtime/adapters/html.adapter.d.ts +59 -0
- package/runtime/adapters/html.adapter.d.ts.map +1 -0
- package/runtime/adapters/index.d.ts +26 -0
- package/runtime/adapters/index.d.ts.map +1 -0
- package/runtime/adapters/mdx.adapter.d.ts +73 -0
- package/runtime/adapters/mdx.adapter.d.ts.map +1 -0
- package/runtime/adapters/types.d.ts +95 -0
- package/runtime/adapters/types.d.ts.map +1 -0
- package/runtime/csp.d.ts +48 -0
- package/runtime/csp.d.ts.map +1 -0
- package/runtime/index.d.ts +17 -0
- package/runtime/index.d.ts.map +1 -0
- package/runtime/index.js +5052 -0
- package/runtime/mcp-bridge.d.ts +101 -0
- package/runtime/mcp-bridge.d.ts.map +1 -0
- package/runtime/renderer-runtime.d.ts +133 -0
- package/runtime/renderer-runtime.d.ts.map +1 -0
- package/runtime/sanitizer.d.ts +172 -0
- package/runtime/sanitizer.d.ts.map +1 -0
- package/runtime/types.d.ts +415 -0
- package/runtime/types.d.ts.map +1 -0
- package/runtime/wrapper.d.ts +421 -0
- package/runtime/wrapper.d.ts.map +1 -0
- package/styles/index.d.ts +8 -0
- package/styles/index.d.ts.map +1 -0
- package/styles/index.js +222 -0
- package/styles/variants.d.ts +51 -0
- package/styles/variants.d.ts.map +1 -0
- package/theme/cdn.d.ts +195 -0
- package/theme/cdn.d.ts.map +1 -0
- package/theme/index.d.ts +18 -0
- package/theme/index.d.ts.map +1 -0
- package/theme/index.js +757 -0
- package/theme/platforms.d.ts +107 -0
- package/theme/platforms.d.ts.map +1 -0
- package/theme/presets/github-openai.d.ts +50 -0
- package/theme/presets/github-openai.d.ts.map +1 -0
- package/theme/presets/index.d.ts +11 -0
- package/theme/presets/index.d.ts.map +1 -0
- package/theme/theme.d.ts +396 -0
- package/theme/theme.d.ts.map +1 -0
- package/tool-template/builder.d.ts +213 -0
- package/tool-template/builder.d.ts.map +1 -0
- package/tool-template/index.d.ts +16 -0
- package/tool-template/index.d.ts.map +1 -0
- package/tool-template/index.js +3562 -0
- package/types/index.d.ts +14 -0
- package/types/index.d.ts.map +1 -0
- package/types/index.js +108 -0
- package/types/ui-config.d.ts +641 -0
- package/types/ui-config.d.ts.map +1 -0
- package/types/ui-runtime.d.ts +1008 -0
- package/types/ui-runtime.d.ts.map +1 -0
- package/typings/cache/cache-adapter.d.ts +125 -0
- package/typings/cache/cache-adapter.d.ts.map +1 -0
- package/typings/cache/index.d.ts +10 -0
- package/typings/cache/index.d.ts.map +1 -0
- package/typings/cache/memory-cache.d.ts +92 -0
- package/typings/cache/memory-cache.d.ts.map +1 -0
- package/typings/dts-parser.d.ts +90 -0
- package/typings/dts-parser.d.ts.map +1 -0
- package/typings/index.d.ts +48 -0
- package/typings/index.d.ts.map +1 -0
- package/typings/index.js +868 -0
- package/typings/schemas.d.ts +232 -0
- package/typings/schemas.d.ts.map +1 -0
- package/typings/type-fetcher.d.ts +89 -0
- package/typings/type-fetcher.d.ts.map +1 -0
- package/typings/types.d.ts +320 -0
- package/typings/types.d.ts.map +1 -0
- package/utils/escape-html.d.ts +58 -0
- package/utils/escape-html.d.ts.map +1 -0
- package/utils/index.d.ts +10 -0
- package/utils/index.d.ts.map +1 -0
- package/utils/index.js +70 -0
- package/utils/safe-stringify.d.ts +30 -0
- package/utils/safe-stringify.d.ts.map +1 -0
- package/validation/error-box.d.ts +56 -0
- package/validation/error-box.d.ts.map +1 -0
- package/validation/index.d.ts +13 -0
- package/validation/index.d.ts.map +1 -0
- package/validation/index.js +583 -0
- package/validation/schema-paths.d.ts +118 -0
- package/validation/schema-paths.d.ts.map +1 -0
- package/validation/template-validator.d.ts +143 -0
- package/validation/template-validator.d.ts.map +1 -0
- package/validation/wrapper.d.ts +97 -0
- package/validation/wrapper.d.ts.map +1 -0
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Component Builder
|
|
3
|
+
*
|
|
4
|
+
* Builds file-based UI components with caching and CDN dependency resolution.
|
|
5
|
+
* Handles the complete build pipeline from source to cached manifest.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
import type { ComponentBuildManifest, FileBundleOptions, CDNDependency, CDNPlatformType } from '../../dependency/types';
|
|
10
|
+
import type { BuildCacheStorage } from './storage/interface';
|
|
11
|
+
/**
|
|
12
|
+
* Options for building a component.
|
|
13
|
+
*/
|
|
14
|
+
export interface ComponentBuildOptions {
|
|
15
|
+
/**
|
|
16
|
+
* Entry file path.
|
|
17
|
+
*/
|
|
18
|
+
entryPath: string;
|
|
19
|
+
/**
|
|
20
|
+
* Tool name for the component.
|
|
21
|
+
*/
|
|
22
|
+
toolName: string;
|
|
23
|
+
/**
|
|
24
|
+
* Packages to load from CDN.
|
|
25
|
+
*/
|
|
26
|
+
externals?: string[];
|
|
27
|
+
/**
|
|
28
|
+
* Explicit CDN dependency overrides.
|
|
29
|
+
*/
|
|
30
|
+
dependencies?: Record<string, CDNDependency>;
|
|
31
|
+
/**
|
|
32
|
+
* Bundle options.
|
|
33
|
+
*/
|
|
34
|
+
bundleOptions?: FileBundleOptions;
|
|
35
|
+
/**
|
|
36
|
+
* Target platform for CDN selection.
|
|
37
|
+
* @default 'unknown'
|
|
38
|
+
*/
|
|
39
|
+
platform?: CDNPlatformType;
|
|
40
|
+
/**
|
|
41
|
+
* Whether to skip cache lookup.
|
|
42
|
+
* @default false
|
|
43
|
+
*/
|
|
44
|
+
skipCache?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Whether to perform SSR.
|
|
47
|
+
* @default false
|
|
48
|
+
*/
|
|
49
|
+
ssr?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* SSR context data.
|
|
52
|
+
*/
|
|
53
|
+
ssrContext?: Record<string, unknown>;
|
|
54
|
+
/**
|
|
55
|
+
* Custom code execution function for SSR.
|
|
56
|
+
* Allows different strategies for Node.js vs browser environments.
|
|
57
|
+
* If not provided, uses `new Function()` which works in both environments.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* // Custom execution with vm module
|
|
62
|
+
* import { createContext, runInContext } from 'vm';
|
|
63
|
+
*
|
|
64
|
+
* const options = {
|
|
65
|
+
* executeCode: (code, exports, module, React) => {
|
|
66
|
+
* const context = createContext({ exports, module, React });
|
|
67
|
+
* runInContext(code, context);
|
|
68
|
+
* }
|
|
69
|
+
* };
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
executeCode?: (code: string, exports: Record<string, unknown>, module: {
|
|
73
|
+
exports: Record<string, unknown>;
|
|
74
|
+
}, React: unknown) => void;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Result of a build operation.
|
|
78
|
+
*/
|
|
79
|
+
export interface ComponentBuildResult {
|
|
80
|
+
/**
|
|
81
|
+
* The build manifest.
|
|
82
|
+
*/
|
|
83
|
+
manifest: ComponentBuildManifest;
|
|
84
|
+
/**
|
|
85
|
+
* Whether the result came from cache.
|
|
86
|
+
*/
|
|
87
|
+
cached: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Build time in milliseconds.
|
|
90
|
+
*/
|
|
91
|
+
buildTimeMs: number;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Component builder for file-based UI templates.
|
|
95
|
+
*
|
|
96
|
+
* Handles the complete build pipeline:
|
|
97
|
+
* 1. Check cache for existing build
|
|
98
|
+
* 2. Parse entry file for imports
|
|
99
|
+
* 3. Resolve external dependencies to CDN URLs
|
|
100
|
+
* 4. Bundle the component with esbuild
|
|
101
|
+
* 5. Generate import map for CDN dependencies
|
|
102
|
+
* 6. Store result in cache
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```typescript
|
|
106
|
+
* const storage = new FilesystemStorage({ cacheDir: '.cache' });
|
|
107
|
+
* await storage.initialize();
|
|
108
|
+
*
|
|
109
|
+
* const builder = new ComponentBuilder(storage);
|
|
110
|
+
*
|
|
111
|
+
* const result = await builder.build({
|
|
112
|
+
* entryPath: './widgets/chart.tsx',
|
|
113
|
+
* toolName: 'chart_display',
|
|
114
|
+
* externals: ['chart.js', 'react'],
|
|
115
|
+
* platform: 'claude',
|
|
116
|
+
* });
|
|
117
|
+
*
|
|
118
|
+
* console.log(result.manifest.outputs.code);
|
|
119
|
+
* console.log(result.manifest.importMap);
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
export declare class ComponentBuilder {
|
|
123
|
+
private readonly storage;
|
|
124
|
+
private esbuild;
|
|
125
|
+
constructor(storage: BuildCacheStorage);
|
|
126
|
+
/**
|
|
127
|
+
* Build a component from a file path.
|
|
128
|
+
*/
|
|
129
|
+
build(options: ComponentBuildOptions): Promise<ComponentBuildResult>;
|
|
130
|
+
/**
|
|
131
|
+
* Build multiple components.
|
|
132
|
+
*/
|
|
133
|
+
buildMany(options: ComponentBuildOptions[]): Promise<ComponentBuildResult[]>;
|
|
134
|
+
/**
|
|
135
|
+
* Check if a component needs rebuilding.
|
|
136
|
+
*/
|
|
137
|
+
needsRebuild(options: Pick<ComponentBuildOptions, 'entryPath' | 'externals' | 'dependencies' | 'bundleOptions'>): Promise<boolean>;
|
|
138
|
+
/**
|
|
139
|
+
* Get a cached build if it exists.
|
|
140
|
+
*/
|
|
141
|
+
getCached(options: Pick<ComponentBuildOptions, 'entryPath' | 'externals' | 'dependencies' | 'bundleOptions'>): Promise<ComponentBuildManifest | undefined>;
|
|
142
|
+
/**
|
|
143
|
+
* Invalidate a cached build.
|
|
144
|
+
*/
|
|
145
|
+
invalidate(contentHash: string): Promise<boolean>;
|
|
146
|
+
/**
|
|
147
|
+
* Generate complete HTML for a built component.
|
|
148
|
+
*/
|
|
149
|
+
generateHTML(manifest: ComponentBuildManifest, minify?: boolean): string;
|
|
150
|
+
/**
|
|
151
|
+
* Bundle a component using esbuild.
|
|
152
|
+
*/
|
|
153
|
+
private bundleComponent;
|
|
154
|
+
/**
|
|
155
|
+
* Perform server-side rendering.
|
|
156
|
+
*/
|
|
157
|
+
private renderSSR;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Create a component builder with filesystem storage.
|
|
161
|
+
*/
|
|
162
|
+
export declare function createFilesystemBuilder(cacheDir?: string): Promise<ComponentBuilder>;
|
|
163
|
+
/**
|
|
164
|
+
* Create a component builder with Redis storage.
|
|
165
|
+
*/
|
|
166
|
+
export declare function createRedisBuilder(redisClient: import('./storage/redis.js').RedisClient, keyPrefix?: string): Promise<ComponentBuilder>;
|
|
167
|
+
//# sourceMappingURL=component-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-builder.d.ts","sourceRoot":"","sources":["../../../src/bundler/file-cache/component-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EACV,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EACb,eAAe,EAGhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAS7D;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE7C;;OAEG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAElC;;;OAGG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAE3B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IAEd;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAErC;;;;;;;;;;;;;;;;;OAiBG;IACH,WAAW,CAAC,EAAE,CACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAC5C,KAAK,EAAE,OAAO,KACX,IAAI,CAAC;CACX;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,QAAQ,EAAE,sBAAsB,CAAC;IAEjC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,OAAO,CAAyC;gBAE5C,OAAO,EAAE,iBAAiB;IAItC;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAyI1E;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAIlF;;OAEG;IACG,YAAY,CAChB,OAAO,EAAE,IAAI,CAAC,qBAAqB,EAAE,WAAW,GAAG,WAAW,GAAG,cAAc,GAAG,eAAe,CAAC,GACjG,OAAO,CAAC,OAAO,CAAC;IAcnB;;OAEG;IACG,SAAS,CACb,OAAO,EAAE,IAAI,CAAC,qBAAqB,EAAE,WAAW,GAAG,WAAW,GAAG,cAAc,GAAG,eAAe,CAAC,GACjG,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC;IAa9C;;OAEG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvD;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,sBAAsB,EAAE,MAAM,UAAQ,GAAG,MAAM;IAatE;;OAEG;YACW,eAAe;IA4C7B;;OAEG;YACW,SAAS;CAuDxB;AAMD;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,QAAQ,SAA2B,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAK5G;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,OAAO,oBAAoB,EAAE,WAAW,EACrD,SAAS,SAAuB,GAC/B,OAAO,CAAC,gBAAgB,CAAC,CAQ3B"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hash Calculator
|
|
3
|
+
*
|
|
4
|
+
* SHA-256 based hash calculation for cache keys.
|
|
5
|
+
* Combines file contents, dependencies, and build options
|
|
6
|
+
* to create deterministic cache keys for incremental builds.
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
import type { FileBundleOptions, CDNDependency } from '../../dependency/types';
|
|
11
|
+
/**
|
|
12
|
+
* Calculate SHA-256 hash of a string.
|
|
13
|
+
*
|
|
14
|
+
* @param content - Content to hash
|
|
15
|
+
* @returns Hex-encoded SHA-256 hash
|
|
16
|
+
*/
|
|
17
|
+
export declare function sha256(content: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* Calculate SHA-256 hash of a buffer.
|
|
20
|
+
*
|
|
21
|
+
* @param buffer - Buffer to hash
|
|
22
|
+
* @returns Hex-encoded SHA-256 hash
|
|
23
|
+
*/
|
|
24
|
+
export declare function sha256Buffer(buffer: Buffer): string;
|
|
25
|
+
/**
|
|
26
|
+
* Calculate hash of a file's contents.
|
|
27
|
+
*
|
|
28
|
+
* @param filePath - Path to the file
|
|
29
|
+
* @returns SHA-256 hash or undefined if file doesn't exist
|
|
30
|
+
*/
|
|
31
|
+
export declare function hashFile(filePath: string): Promise<string | undefined>;
|
|
32
|
+
/**
|
|
33
|
+
* Calculate combined hash of multiple files.
|
|
34
|
+
*
|
|
35
|
+
* @param filePaths - Paths to files
|
|
36
|
+
* @returns Combined SHA-256 hash
|
|
37
|
+
*/
|
|
38
|
+
export declare function hashFiles(filePaths: string[]): Promise<string>;
|
|
39
|
+
/**
|
|
40
|
+
* Options for calculating a component hash.
|
|
41
|
+
*/
|
|
42
|
+
export interface ComponentHashOptions {
|
|
43
|
+
/**
|
|
44
|
+
* Entry file path.
|
|
45
|
+
*/
|
|
46
|
+
entryPath: string;
|
|
47
|
+
/**
|
|
48
|
+
* Base directory for resolving relative imports.
|
|
49
|
+
* @default dirname(entryPath)
|
|
50
|
+
*/
|
|
51
|
+
baseDir?: string;
|
|
52
|
+
/**
|
|
53
|
+
* External packages (excluded from hash).
|
|
54
|
+
*/
|
|
55
|
+
externals?: string[];
|
|
56
|
+
/**
|
|
57
|
+
* Explicit CDN dependencies.
|
|
58
|
+
*/
|
|
59
|
+
dependencies?: Record<string, CDNDependency>;
|
|
60
|
+
/**
|
|
61
|
+
* Bundle options.
|
|
62
|
+
*/
|
|
63
|
+
bundleOptions?: FileBundleOptions;
|
|
64
|
+
/**
|
|
65
|
+
* Maximum depth for following imports.
|
|
66
|
+
* @default 10
|
|
67
|
+
*/
|
|
68
|
+
maxDepth?: number;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Result of component hash calculation.
|
|
72
|
+
*/
|
|
73
|
+
export interface ComponentHashResult {
|
|
74
|
+
/**
|
|
75
|
+
* Combined SHA-256 hash.
|
|
76
|
+
*/
|
|
77
|
+
hash: string;
|
|
78
|
+
/**
|
|
79
|
+
* Entry file hash.
|
|
80
|
+
*/
|
|
81
|
+
entryHash: string;
|
|
82
|
+
/**
|
|
83
|
+
* All files included in the hash.
|
|
84
|
+
*/
|
|
85
|
+
files: string[];
|
|
86
|
+
/**
|
|
87
|
+
* Individual file hashes.
|
|
88
|
+
*/
|
|
89
|
+
fileHashes: Record<string, string>;
|
|
90
|
+
/**
|
|
91
|
+
* Hash of build options.
|
|
92
|
+
*/
|
|
93
|
+
optionsHash: string;
|
|
94
|
+
/**
|
|
95
|
+
* Hash of external dependencies configuration.
|
|
96
|
+
*/
|
|
97
|
+
dependenciesHash: string;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Calculate a deterministic hash for a file-based component.
|
|
101
|
+
*
|
|
102
|
+
* The hash includes:
|
|
103
|
+
* - Entry file content
|
|
104
|
+
* - All local dependencies (relative imports)
|
|
105
|
+
* - Bundle options
|
|
106
|
+
* - External dependency configurations
|
|
107
|
+
*
|
|
108
|
+
* External npm packages are NOT included in the hash since they're
|
|
109
|
+
* loaded from CDN and versioned separately.
|
|
110
|
+
*
|
|
111
|
+
* @param options - Hash calculation options
|
|
112
|
+
* @returns Hash result with details
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* const result = await calculateComponentHash({
|
|
117
|
+
* entryPath: './src/widgets/chart.tsx',
|
|
118
|
+
* externals: ['chart.js', 'react'],
|
|
119
|
+
* bundleOptions: { minify: true },
|
|
120
|
+
* });
|
|
121
|
+
*
|
|
122
|
+
* console.log(result.hash); // '3a7bd...'
|
|
123
|
+
* console.log(result.files); // ['./src/widgets/chart.tsx', './src/widgets/utils.ts']
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export declare function calculateComponentHash(options: ComponentHashOptions): Promise<ComponentHashResult>;
|
|
127
|
+
/**
|
|
128
|
+
* Calculate a quick hash for cache lookup (entry file only).
|
|
129
|
+
*
|
|
130
|
+
* This is faster than full component hash but may miss dependency changes.
|
|
131
|
+
* Use for quick cache existence checks, then verify with full hash.
|
|
132
|
+
*
|
|
133
|
+
* @param entryPath - Entry file path
|
|
134
|
+
* @param bundleOptions - Bundle options
|
|
135
|
+
* @returns Quick hash string
|
|
136
|
+
*/
|
|
137
|
+
export declare function calculateQuickHash(entryPath: string, bundleOptions?: FileBundleOptions): Promise<string>;
|
|
138
|
+
/**
|
|
139
|
+
* Generate a unique build ID.
|
|
140
|
+
*
|
|
141
|
+
* Combines timestamp and random component for uniqueness.
|
|
142
|
+
*
|
|
143
|
+
* @returns UUID-like build ID
|
|
144
|
+
*/
|
|
145
|
+
export declare function generateBuildId(): string;
|
|
146
|
+
/**
|
|
147
|
+
* Generate a build ID from a content hash.
|
|
148
|
+
*
|
|
149
|
+
* Creates a shorter, more readable ID while maintaining uniqueness.
|
|
150
|
+
*
|
|
151
|
+
* @param hash - Content hash
|
|
152
|
+
* @returns Shortened build ID
|
|
153
|
+
*/
|
|
154
|
+
export declare function buildIdFromHash(hash: string): string;
|
|
155
|
+
//# sourceMappingURL=hash-calculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash-calculator.d.ts","sourceRoot":"","sources":["../../../src/bundler/file-cache/hash-calculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAM/E;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAO5E;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAWpE;AAMD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE7C;;OAEG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAElC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEnC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAmDxG;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAO9G;AA6HD;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAIxC;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGpD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File-Based Component Caching
|
|
3
|
+
*
|
|
4
|
+
* SHA-based caching system for file-based UI component builds.
|
|
5
|
+
* Supports filesystem (development) and Redis (production) storage.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
export { type BuildCacheStorage, type StorageOptions, type CacheEntry, type CacheEntryMetadata, DEFAULT_STORAGE_OPTIONS, calculateManifestSize, FilesystemStorage, createFilesystemStorage, type FilesystemStorageOptions, RedisStorage, createRedisStorage, type RedisStorageOptions, type RedisClient, } from './storage';
|
|
10
|
+
export { sha256, sha256Buffer, hashFile, hashFiles, calculateComponentHash, calculateQuickHash, generateBuildId, buildIdFromHash, type ComponentHashOptions, type ComponentHashResult, } from './hash-calculator';
|
|
11
|
+
export { ComponentBuilder, createFilesystemBuilder, createRedisBuilder, type ComponentBuildOptions, type ComponentBuildResult, } from './component-builder';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bundler/file-cache/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,uBAAuB,EACvB,qBAAqB,EAErB,iBAAiB,EACjB,uBAAuB,EACvB,KAAK,wBAAwB,EAE7B,YAAY,EACZ,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,WAAW,GACjB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GAC1B,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filesystem Build Cache Storage
|
|
3
|
+
*
|
|
4
|
+
* File-based cache storage for development environments.
|
|
5
|
+
* Uses LRU eviction and stores manifests as JSON files.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
import type { ComponentBuildManifest, CacheStats } from '../../../dependency/types';
|
|
10
|
+
import type { BuildCacheStorage, StorageOptions } from './interface';
|
|
11
|
+
/**
|
|
12
|
+
* Error thrown when cache storage fails to initialize.
|
|
13
|
+
*/
|
|
14
|
+
export declare class CacheInitializationError extends Error {
|
|
15
|
+
readonly cause?: unknown;
|
|
16
|
+
constructor(message: string, cause?: unknown);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Error thrown when a cache operation fails.
|
|
20
|
+
*/
|
|
21
|
+
export declare class CacheOperationError extends Error {
|
|
22
|
+
readonly cause?: unknown;
|
|
23
|
+
constructor(message: string, cause?: unknown);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Error thrown when storage is accessed before initialization.
|
|
27
|
+
*/
|
|
28
|
+
export declare class StorageNotInitializedError extends Error {
|
|
29
|
+
constructor();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Options specific to filesystem storage.
|
|
33
|
+
*/
|
|
34
|
+
export interface FilesystemStorageOptions extends StorageOptions {
|
|
35
|
+
/**
|
|
36
|
+
* Base directory for cache files.
|
|
37
|
+
* @default '.frontmcp-cache/builds'
|
|
38
|
+
*/
|
|
39
|
+
cacheDir?: string;
|
|
40
|
+
/**
|
|
41
|
+
* File extension for cache files.
|
|
42
|
+
* @default '.json'
|
|
43
|
+
*/
|
|
44
|
+
extension?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Filesystem-based build cache storage.
|
|
48
|
+
*
|
|
49
|
+
* Stores each build manifest as a JSON file in the cache directory.
|
|
50
|
+
* Uses LRU eviction based on last access time when size limits are exceeded.
|
|
51
|
+
*
|
|
52
|
+
* Directory structure:
|
|
53
|
+
* ```
|
|
54
|
+
* .frontmcp-cache/builds/
|
|
55
|
+
* ├── {hash1}.json
|
|
56
|
+
* ├── {hash2}.json
|
|
57
|
+
* └── ...
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* const storage = new FilesystemStorage({
|
|
63
|
+
* cacheDir: '.cache/ui-builds',
|
|
64
|
+
* maxSize: 50 * 1024 * 1024, // 50MB
|
|
65
|
+
* });
|
|
66
|
+
*
|
|
67
|
+
* await storage.initialize();
|
|
68
|
+
* await storage.set('abc123', manifest);
|
|
69
|
+
* const cached = await storage.get('abc123');
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export declare class FilesystemStorage implements BuildCacheStorage {
|
|
73
|
+
readonly type = "filesystem";
|
|
74
|
+
private readonly options;
|
|
75
|
+
private initialized;
|
|
76
|
+
private stats;
|
|
77
|
+
constructor(options?: FilesystemStorageOptions);
|
|
78
|
+
/**
|
|
79
|
+
* Initialize the storage directory.
|
|
80
|
+
*/
|
|
81
|
+
initialize(): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* Get a cached manifest.
|
|
84
|
+
*/
|
|
85
|
+
get(key: string): Promise<ComponentBuildManifest | undefined>;
|
|
86
|
+
/**
|
|
87
|
+
* Store a manifest in cache.
|
|
88
|
+
*/
|
|
89
|
+
set(key: string, manifest: ComponentBuildManifest, ttl?: number): Promise<void>;
|
|
90
|
+
/**
|
|
91
|
+
* Check if a key exists.
|
|
92
|
+
*/
|
|
93
|
+
has(key: string): Promise<boolean>;
|
|
94
|
+
/**
|
|
95
|
+
* Delete a cached entry.
|
|
96
|
+
*/
|
|
97
|
+
delete(key: string): Promise<boolean>;
|
|
98
|
+
/**
|
|
99
|
+
* Clear all cached entries.
|
|
100
|
+
*/
|
|
101
|
+
clear(): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* Get cache statistics.
|
|
104
|
+
*/
|
|
105
|
+
getStats(): Promise<CacheStats>;
|
|
106
|
+
/**
|
|
107
|
+
* Clean up expired entries.
|
|
108
|
+
*/
|
|
109
|
+
cleanup(): Promise<number>;
|
|
110
|
+
/**
|
|
111
|
+
* Close the storage (no-op for filesystem).
|
|
112
|
+
*/
|
|
113
|
+
close(): Promise<void>;
|
|
114
|
+
/**
|
|
115
|
+
* Get the file path for a cache key.
|
|
116
|
+
* Uses SHA-256 hash to avoid collisions from key sanitization.
|
|
117
|
+
*/
|
|
118
|
+
private getFilePath;
|
|
119
|
+
/**
|
|
120
|
+
* Write a cache entry to disk.
|
|
121
|
+
*/
|
|
122
|
+
private writeEntry;
|
|
123
|
+
/**
|
|
124
|
+
* Ensure the storage is initialized.
|
|
125
|
+
*/
|
|
126
|
+
private ensureInitialized;
|
|
127
|
+
/**
|
|
128
|
+
* Load stats from existing cache files.
|
|
129
|
+
* Reads entry metadata to get accurate manifest sizes.
|
|
130
|
+
*/
|
|
131
|
+
private loadStats;
|
|
132
|
+
/**
|
|
133
|
+
* Ensure there's capacity for a new entry.
|
|
134
|
+
*/
|
|
135
|
+
private ensureCapacity;
|
|
136
|
+
/**
|
|
137
|
+
* Evict the least recently used entry.
|
|
138
|
+
*/
|
|
139
|
+
private evictLRU;
|
|
140
|
+
/**
|
|
141
|
+
* Update hit rate statistic.
|
|
142
|
+
*/
|
|
143
|
+
private updateHitRate;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Create a filesystem storage instance.
|
|
147
|
+
*/
|
|
148
|
+
export declare function createFilesystemStorage(options?: FilesystemStorageOptions): FilesystemStorage;
|
|
149
|
+
//# sourceMappingURL=filesystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../../../src/bundler/file-cache/storage/filesystem.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAc,MAAM,aAAa,CAAC;AAOjF;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,SAAkB,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEtB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAK7C;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,SAAkB,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEtB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAK7C;AAED;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;;CAKpD;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC9D;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,iBAAkB,YAAW,iBAAiB;IACzD,QAAQ,CAAC,IAAI,gBAAgB;IAE7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,KAAK,CAMX;gBAEU,OAAO,GAAE,wBAA6B;IAOlD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC;IA6CnE;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BrF;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuBxC;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuB3C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB5B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC;IAIrC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAsChC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;;OAGG;IACH,OAAO,CAAC,WAAW;IAMnB;;OAEG;YACW,UAAU;IAKxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;;OAGG;YACW,SAAS;IA4BvB;;OAEG;YACW,cAAc;IAa5B;;OAEG;YACW,QAAQ;IAgDtB;;OAEG;IACH,OAAO,CAAC,aAAa;CAItB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,iBAAiB,CAE7F"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build Cache Storage
|
|
3
|
+
*
|
|
4
|
+
* Storage implementations for component build caching.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
export { type BuildCacheStorage, type StorageOptions, type CacheEntry, type CacheEntryMetadata, DEFAULT_STORAGE_OPTIONS, calculateManifestSize, } from './interface';
|
|
9
|
+
export { FilesystemStorage, createFilesystemStorage, type FilesystemStorageOptions } from './filesystem';
|
|
10
|
+
export { RedisStorage, createRedisStorage, type RedisStorageOptions, type RedisClient } from './redis';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bundler/file-cache/storage/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,KAAK,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAGzG,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build Cache Storage Interface
|
|
3
|
+
*
|
|
4
|
+
* Abstract interface for storing and retrieving component build manifests.
|
|
5
|
+
* Implementations include filesystem (development) and Redis (production).
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
import type { ComponentBuildManifest, CacheStats } from '../../../dependency/types';
|
|
10
|
+
/**
|
|
11
|
+
* Options for storage initialization.
|
|
12
|
+
*/
|
|
13
|
+
export interface StorageOptions {
|
|
14
|
+
/**
|
|
15
|
+
* Maximum number of entries to store.
|
|
16
|
+
* @default 1000
|
|
17
|
+
*/
|
|
18
|
+
maxEntries?: number;
|
|
19
|
+
/**
|
|
20
|
+
* Maximum total size in bytes.
|
|
21
|
+
* @default 104857600 (100MB)
|
|
22
|
+
*/
|
|
23
|
+
maxSize?: number;
|
|
24
|
+
/**
|
|
25
|
+
* Default TTL in seconds.
|
|
26
|
+
* @default 86400 (24 hours)
|
|
27
|
+
*/
|
|
28
|
+
defaultTtl?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Whether to compress stored data.
|
|
31
|
+
* @default false
|
|
32
|
+
*/
|
|
33
|
+
compress?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Abstract interface for build cache storage.
|
|
37
|
+
*
|
|
38
|
+
* Implementations should handle:
|
|
39
|
+
* - Key-value storage of ComponentBuildManifest
|
|
40
|
+
* - TTL-based expiration
|
|
41
|
+
* - Size-based eviction
|
|
42
|
+
* - Concurrent access safety
|
|
43
|
+
*/
|
|
44
|
+
export interface BuildCacheStorage {
|
|
45
|
+
/**
|
|
46
|
+
* Storage identifier for logging/debugging.
|
|
47
|
+
*/
|
|
48
|
+
readonly type: string;
|
|
49
|
+
/**
|
|
50
|
+
* Initialize the storage backend.
|
|
51
|
+
* Must be called before other operations.
|
|
52
|
+
*/
|
|
53
|
+
initialize(): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Retrieve a cached build manifest by key.
|
|
56
|
+
*
|
|
57
|
+
* @param key - Cache key (typically content hash)
|
|
58
|
+
* @returns Cached manifest or undefined if not found/expired
|
|
59
|
+
*/
|
|
60
|
+
get(key: string): Promise<ComponentBuildManifest | undefined>;
|
|
61
|
+
/**
|
|
62
|
+
* Store a build manifest in cache.
|
|
63
|
+
*
|
|
64
|
+
* @param key - Cache key
|
|
65
|
+
* @param manifest - Build manifest to store
|
|
66
|
+
* @param ttl - Optional TTL in seconds (overrides default)
|
|
67
|
+
*/
|
|
68
|
+
set(key: string, manifest: ComponentBuildManifest, ttl?: number): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Check if a key exists in cache (and is not expired).
|
|
71
|
+
*
|
|
72
|
+
* @param key - Cache key to check
|
|
73
|
+
* @returns true if key exists and is valid
|
|
74
|
+
*/
|
|
75
|
+
has(key: string): Promise<boolean>;
|
|
76
|
+
/**
|
|
77
|
+
* Delete a cached entry.
|
|
78
|
+
*
|
|
79
|
+
* @param key - Cache key to delete
|
|
80
|
+
* @returns true if entry was deleted, false if not found
|
|
81
|
+
*/
|
|
82
|
+
delete(key: string): Promise<boolean>;
|
|
83
|
+
/**
|
|
84
|
+
* Clear all cached entries.
|
|
85
|
+
*/
|
|
86
|
+
clear(): Promise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* Get cache statistics.
|
|
89
|
+
*/
|
|
90
|
+
getStats(): Promise<CacheStats>;
|
|
91
|
+
/**
|
|
92
|
+
* Clean up expired entries.
|
|
93
|
+
* Returns number of entries removed.
|
|
94
|
+
*/
|
|
95
|
+
cleanup(): Promise<number>;
|
|
96
|
+
/**
|
|
97
|
+
* Close the storage connection.
|
|
98
|
+
* Should be called when the application shuts down.
|
|
99
|
+
*/
|
|
100
|
+
close(): Promise<void>;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Metadata for a cached entry.
|
|
104
|
+
*/
|
|
105
|
+
export interface CacheEntryMetadata {
|
|
106
|
+
/**
|
|
107
|
+
* Cache key.
|
|
108
|
+
*/
|
|
109
|
+
key: string;
|
|
110
|
+
/**
|
|
111
|
+
* Size of the cached data in bytes.
|
|
112
|
+
*/
|
|
113
|
+
size: number;
|
|
114
|
+
/**
|
|
115
|
+
* Timestamp when entry was created (ms since epoch).
|
|
116
|
+
*/
|
|
117
|
+
createdAt: number;
|
|
118
|
+
/**
|
|
119
|
+
* Timestamp when entry expires (ms since epoch).
|
|
120
|
+
*/
|
|
121
|
+
expiresAt: number;
|
|
122
|
+
/**
|
|
123
|
+
* Last access timestamp (ms since epoch).
|
|
124
|
+
*/
|
|
125
|
+
lastAccessedAt: number;
|
|
126
|
+
/**
|
|
127
|
+
* Number of times the entry has been accessed.
|
|
128
|
+
*/
|
|
129
|
+
accessCount: number;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Wrapper around cached data with metadata.
|
|
133
|
+
*/
|
|
134
|
+
export interface CacheEntry<T = ComponentBuildManifest> {
|
|
135
|
+
/**
|
|
136
|
+
* The cached data.
|
|
137
|
+
*/
|
|
138
|
+
data: T;
|
|
139
|
+
/**
|
|
140
|
+
* Entry metadata.
|
|
141
|
+
*/
|
|
142
|
+
metadata: CacheEntryMetadata;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Default storage options.
|
|
146
|
+
*/
|
|
147
|
+
export declare const DEFAULT_STORAGE_OPTIONS: Required<StorageOptions>;
|
|
148
|
+
/**
|
|
149
|
+
* Calculate the size of a manifest in bytes.
|
|
150
|
+
*/
|
|
151
|
+
export declare function calculateManifestSize(manifest: ComponentBuildManifest): number;
|
|
152
|
+
//# sourceMappingURL=interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../../src/bundler/file-cache/storage/interface.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEpF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAAC;IAE9D;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhF;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEnC;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtC;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;OAEG;IACH,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAEhC;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE3B;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,sBAAsB;IACpD;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC;IAER;;OAEG;IACH,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,cAAc,CAK5D,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,MAAM,CAQ9E"}
|