@frontmcp/ui 0.6.0 → 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/README.md +140 -362
- package/bridge/runtime/index.d.ts +2 -1
- package/bridge/runtime/index.d.ts.map +1 -1
- package/bundler/file-cache/component-builder.d.ts +1 -1
- package/bundler/file-cache/component-builder.d.ts.map +1 -1
- package/bundler/file-cache/hash-calculator.d.ts +1 -1
- package/bundler/file-cache/hash-calculator.d.ts.map +1 -1
- package/bundler/file-cache/storage/filesystem.d.ts +1 -1
- package/bundler/file-cache/storage/filesystem.d.ts.map +1 -1
- package/bundler/file-cache/storage/interface.d.ts +1 -1
- package/bundler/file-cache/storage/interface.d.ts.map +1 -1
- package/bundler/file-cache/storage/redis.d.ts +1 -1
- package/bundler/file-cache/storage/redis.d.ts.map +1 -1
- package/bundler/index.js +10 -1057
- package/components/alert.schema.d.ts +6 -6
- package/components/avatar.schema.d.ts +9 -9
- package/components/badge.schema.d.ts +9 -9
- package/components/button.schema.d.ts +9 -9
- package/components/card.schema.d.ts +7 -7
- package/components/form.schema.d.ts +24 -24
- package/components/index.js +128 -198
- package/components/modal.schema.d.ts +8 -8
- package/components/table.schema.d.ts +6 -6
- package/esm/bridge/runtime/index.d.ts +2 -1
- package/esm/bridge/runtime/index.d.ts.map +1 -1
- package/esm/bundler/file-cache/component-builder.d.ts +1 -1
- package/esm/bundler/file-cache/component-builder.d.ts.map +1 -1
- package/esm/bundler/file-cache/hash-calculator.d.ts +1 -1
- package/esm/bundler/file-cache/hash-calculator.d.ts.map +1 -1
- package/esm/bundler/file-cache/storage/filesystem.d.ts +1 -1
- package/esm/bundler/file-cache/storage/filesystem.d.ts.map +1 -1
- package/esm/bundler/file-cache/storage/interface.d.ts +1 -1
- package/esm/bundler/file-cache/storage/interface.d.ts.map +1 -1
- package/esm/bundler/file-cache/storage/redis.d.ts +1 -1
- package/esm/bundler/file-cache/storage/redis.d.ts.map +1 -1
- package/esm/bundler/index.js +3 -1050
- package/esm/components/alert.schema.d.ts +6 -6
- package/esm/components/avatar.schema.d.ts +9 -9
- package/esm/components/badge.schema.d.ts +9 -9
- package/esm/components/button.schema.d.ts +9 -9
- package/esm/components/card.schema.d.ts +7 -7
- package/esm/components/form.schema.d.ts +24 -24
- package/esm/components/index.js +136 -196
- package/esm/components/modal.schema.d.ts +8 -8
- package/esm/components/table.schema.d.ts +6 -6
- package/esm/index.d.ts +23 -39
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +4256 -16441
- package/esm/layouts/base.d.ts +2 -2
- package/esm/layouts/base.d.ts.map +1 -1
- package/esm/layouts/index.js +33 -516
- package/esm/package.json +8 -26
- package/esm/pages/index.js +100 -627
- package/esm/react/Alert.d.ts +1 -2
- package/esm/react/Alert.d.ts.map +1 -1
- package/esm/react/Badge.d.ts +1 -2
- package/esm/react/Badge.d.ts.map +1 -1
- package/esm/react/Button.d.ts +1 -2
- package/esm/react/Button.d.ts.map +1 -1
- package/esm/react/Card.d.ts +1 -2
- package/esm/react/Card.d.ts.map +1 -1
- package/esm/react/hooks/context.d.ts +1 -1
- package/esm/react/hooks/context.d.ts.map +1 -1
- package/esm/react/index.d.ts +5 -6
- package/esm/react/index.d.ts.map +1 -1
- package/esm/react/index.js +2074 -322
- package/esm/react/types.d.ts +1 -2
- package/esm/react/types.d.ts.map +1 -1
- package/esm/renderers/index.d.ts +10 -25
- package/esm/renderers/index.d.ts.map +1 -1
- package/esm/renderers/index.js +171 -1617
- package/esm/{runtime/adapters → renderers}/react.adapter.d.ts +2 -2
- package/esm/renderers/react.adapter.d.ts.map +1 -0
- package/esm/renderers/react.renderer.d.ts +3 -3
- package/esm/renderers/react.renderer.d.ts.map +1 -1
- package/esm/universal/index.js +1755 -0
- package/esm/web-components/index.js +232 -287
- package/esm/widgets/index.js +89 -147
- package/index.d.ts +23 -39
- package/index.d.ts.map +1 -1
- package/index.js +6123 -18539
- package/layouts/base.d.ts +2 -2
- package/layouts/base.d.ts.map +1 -1
- package/layouts/index.js +43 -536
- package/package.json +8 -26
- package/pages/index.js +111 -648
- package/react/Alert.d.ts +1 -2
- package/react/Alert.d.ts.map +1 -1
- package/react/Badge.d.ts +1 -2
- package/react/Badge.d.ts.map +1 -1
- package/react/Button.d.ts +1 -2
- package/react/Button.d.ts.map +1 -1
- package/react/Card.d.ts +1 -2
- package/react/Card.d.ts.map +1 -1
- package/react/hooks/context.d.ts +1 -1
- package/react/hooks/context.d.ts.map +1 -1
- package/react/index.d.ts +5 -6
- package/react/index.d.ts.map +1 -1
- package/react/index.js +2065 -335
- package/react/types.d.ts +1 -2
- package/react/types.d.ts.map +1 -1
- package/renderers/index.d.ts +10 -25
- package/renderers/index.d.ts.map +1 -1
- package/renderers/index.js +175 -1641
- package/{runtime/adapters → renderers}/react.adapter.d.ts +2 -2
- package/renderers/react.adapter.d.ts.map +1 -0
- package/renderers/react.renderer.d.ts +3 -3
- package/renderers/react.renderer.d.ts.map +1 -1
- package/universal/index.js +1841 -0
- package/web-components/index.js +224 -289
- package/widgets/index.js +80 -148
- package/adapters/index.d.ts +0 -13
- package/adapters/index.d.ts.map +0 -1
- package/adapters/index.js +0 -462
- package/adapters/platform-meta.d.ts +0 -166
- package/adapters/platform-meta.d.ts.map +0 -1
- package/adapters/response-builder.d.ts +0 -108
- package/adapters/response-builder.d.ts.map +0 -1
- package/adapters/serving-mode.d.ts +0 -107
- package/adapters/serving-mode.d.ts.map +0 -1
- package/base-template/bridge.d.ts +0 -90
- package/base-template/bridge.d.ts.map +0 -1
- package/base-template/default-base-template.d.ts +0 -92
- package/base-template/default-base-template.d.ts.map +0 -1
- package/base-template/index.d.ts +0 -15
- package/base-template/index.d.ts.map +0 -1
- package/base-template/index.js +0 -1398
- package/base-template/polyfills.d.ts +0 -31
- package/base-template/polyfills.d.ts.map +0 -1
- package/base-template/theme-styles.d.ts +0 -74
- package/base-template/theme-styles.d.ts.map +0 -1
- package/build/cdn-resources.d.ts +0 -243
- package/build/cdn-resources.d.ts.map +0 -1
- package/build/index.d.ts +0 -295
- package/build/index.d.ts.map +0 -1
- package/build/index.js +0 -7096
- package/build/widget-manifest.d.ts +0 -362
- package/build/widget-manifest.d.ts.map +0 -1
- package/dependency/cdn-registry.d.ts +0 -98
- package/dependency/cdn-registry.d.ts.map +0 -1
- package/dependency/import-map.d.ts +0 -186
- package/dependency/import-map.d.ts.map +0 -1
- package/dependency/import-parser.d.ts +0 -82
- package/dependency/import-parser.d.ts.map +0 -1
- package/dependency/index.d.ts +0 -17
- package/dependency/index.d.ts.map +0 -1
- package/dependency/resolver.d.ts +0 -164
- package/dependency/resolver.d.ts.map +0 -1
- package/dependency/schemas.d.ts +0 -486
- package/dependency/schemas.d.ts.map +0 -1
- package/dependency/template-loader.d.ts +0 -204
- package/dependency/template-loader.d.ts.map +0 -1
- package/dependency/template-processor.d.ts +0 -118
- package/dependency/template-processor.d.ts.map +0 -1
- package/dependency/types.d.ts +0 -739
- package/dependency/types.d.ts.map +0 -1
- package/esm/adapters/index.d.ts +0 -13
- package/esm/adapters/index.d.ts.map +0 -1
- package/esm/adapters/index.js +0 -427
- package/esm/adapters/platform-meta.d.ts +0 -166
- package/esm/adapters/platform-meta.d.ts.map +0 -1
- package/esm/adapters/response-builder.d.ts +0 -108
- package/esm/adapters/response-builder.d.ts.map +0 -1
- package/esm/adapters/serving-mode.d.ts +0 -107
- package/esm/adapters/serving-mode.d.ts.map +0 -1
- package/esm/base-template/bridge.d.ts +0 -90
- package/esm/base-template/bridge.d.ts.map +0 -1
- package/esm/base-template/default-base-template.d.ts +0 -92
- package/esm/base-template/default-base-template.d.ts.map +0 -1
- package/esm/base-template/index.d.ts +0 -15
- package/esm/base-template/index.d.ts.map +0 -1
- package/esm/base-template/index.js +0 -1364
- package/esm/base-template/polyfills.d.ts +0 -31
- package/esm/base-template/polyfills.d.ts.map +0 -1
- package/esm/base-template/theme-styles.d.ts +0 -74
- package/esm/base-template/theme-styles.d.ts.map +0 -1
- package/esm/build/cdn-resources.d.ts +0 -243
- package/esm/build/cdn-resources.d.ts.map +0 -1
- package/esm/build/index.d.ts +0 -295
- package/esm/build/index.d.ts.map +0 -1
- package/esm/build/index.js +0 -7021
- package/esm/build/widget-manifest.d.ts +0 -362
- package/esm/build/widget-manifest.d.ts.map +0 -1
- package/esm/dependency/cdn-registry.d.ts +0 -98
- package/esm/dependency/cdn-registry.d.ts.map +0 -1
- package/esm/dependency/import-map.d.ts +0 -186
- package/esm/dependency/import-map.d.ts.map +0 -1
- package/esm/dependency/import-parser.d.ts +0 -82
- package/esm/dependency/import-parser.d.ts.map +0 -1
- package/esm/dependency/index.d.ts +0 -17
- package/esm/dependency/index.d.ts.map +0 -1
- package/esm/dependency/resolver.d.ts +0 -164
- package/esm/dependency/resolver.d.ts.map +0 -1
- package/esm/dependency/schemas.d.ts +0 -486
- package/esm/dependency/schemas.d.ts.map +0 -1
- package/esm/dependency/template-loader.d.ts +0 -204
- package/esm/dependency/template-loader.d.ts.map +0 -1
- package/esm/dependency/template-processor.d.ts +0 -118
- package/esm/dependency/template-processor.d.ts.map +0 -1
- package/esm/dependency/types.d.ts +0 -739
- package/esm/dependency/types.d.ts.map +0 -1
- package/esm/handlebars/expression-extractor.d.ts +0 -147
- package/esm/handlebars/expression-extractor.d.ts.map +0 -1
- package/esm/handlebars/helpers.d.ts +0 -339
- package/esm/handlebars/helpers.d.ts.map +0 -1
- package/esm/handlebars/index.d.ts +0 -195
- package/esm/handlebars/index.d.ts.map +0 -1
- package/esm/handlebars/index.js +0 -587
- package/esm/registry/index.d.ts +0 -46
- package/esm/registry/index.d.ts.map +0 -1
- package/esm/registry/index.js +0 -6422
- package/esm/registry/render-template.d.ts +0 -91
- package/esm/registry/render-template.d.ts.map +0 -1
- package/esm/registry/tool-ui.registry.d.ts +0 -294
- package/esm/registry/tool-ui.registry.d.ts.map +0 -1
- package/esm/registry/uri-utils.d.ts +0 -56
- package/esm/registry/uri-utils.d.ts.map +0 -1
- package/esm/renderers/cache.d.ts +0 -145
- package/esm/renderers/cache.d.ts.map +0 -1
- package/esm/renderers/html.renderer.d.ts +0 -123
- package/esm/renderers/html.renderer.d.ts.map +0 -1
- package/esm/renderers/mdx.renderer.d.ts +0 -120
- package/esm/renderers/mdx.renderer.d.ts.map +0 -1
- package/esm/renderers/registry.d.ts +0 -134
- package/esm/renderers/registry.d.ts.map +0 -1
- package/esm/renderers/types.d.ts +0 -342
- package/esm/renderers/types.d.ts.map +0 -1
- package/esm/renderers/utils/detect.d.ts +0 -107
- package/esm/renderers/utils/detect.d.ts.map +0 -1
- package/esm/renderers/utils/hash.d.ts +0 -40
- package/esm/renderers/utils/hash.d.ts.map +0 -1
- package/esm/renderers/utils/index.d.ts +0 -9
- package/esm/renderers/utils/index.d.ts.map +0 -1
- package/esm/renderers/utils/transpiler.d.ts +0 -89
- package/esm/renderers/utils/transpiler.d.ts.map +0 -1
- package/esm/runtime/adapters/html.adapter.d.ts +0 -59
- package/esm/runtime/adapters/html.adapter.d.ts.map +0 -1
- package/esm/runtime/adapters/index.d.ts +0 -26
- package/esm/runtime/adapters/index.d.ts.map +0 -1
- package/esm/runtime/adapters/mdx.adapter.d.ts +0 -73
- package/esm/runtime/adapters/mdx.adapter.d.ts.map +0 -1
- package/esm/runtime/adapters/react.adapter.d.ts.map +0 -1
- package/esm/runtime/adapters/types.d.ts +0 -95
- package/esm/runtime/adapters/types.d.ts.map +0 -1
- package/esm/runtime/csp.d.ts +0 -48
- package/esm/runtime/csp.d.ts.map +0 -1
- package/esm/runtime/index.d.ts +0 -17
- package/esm/runtime/index.d.ts.map +0 -1
- package/esm/runtime/index.js +0 -5186
- package/esm/runtime/mcp-bridge.d.ts +0 -101
- package/esm/runtime/mcp-bridge.d.ts.map +0 -1
- package/esm/runtime/renderer-runtime.d.ts +0 -133
- package/esm/runtime/renderer-runtime.d.ts.map +0 -1
- package/esm/runtime/sanitizer.d.ts +0 -172
- package/esm/runtime/sanitizer.d.ts.map +0 -1
- package/esm/runtime/types.d.ts +0 -415
- package/esm/runtime/types.d.ts.map +0 -1
- package/esm/runtime/wrapper.d.ts +0 -421
- package/esm/runtime/wrapper.d.ts.map +0 -1
- package/esm/styles/index.d.ts +0 -8
- package/esm/styles/index.d.ts.map +0 -1
- package/esm/styles/index.js +0 -171
- package/esm/styles/variants.d.ts +0 -51
- package/esm/styles/variants.d.ts.map +0 -1
- package/esm/theme/cdn.d.ts +0 -195
- package/esm/theme/cdn.d.ts.map +0 -1
- package/esm/theme/index.d.ts +0 -18
- package/esm/theme/index.d.ts.map +0 -1
- package/esm/theme/index.js +0 -700
- package/esm/theme/platforms.d.ts +0 -107
- package/esm/theme/platforms.d.ts.map +0 -1
- package/esm/theme/presets/github-openai.d.ts +0 -50
- package/esm/theme/presets/github-openai.d.ts.map +0 -1
- package/esm/theme/presets/index.d.ts +0 -11
- package/esm/theme/presets/index.d.ts.map +0 -1
- package/esm/theme/theme.d.ts +0 -396
- package/esm/theme/theme.d.ts.map +0 -1
- package/esm/tool-template/builder.d.ts +0 -213
- package/esm/tool-template/builder.d.ts.map +0 -1
- package/esm/tool-template/index.d.ts +0 -16
- package/esm/tool-template/index.d.ts.map +0 -1
- package/esm/tool-template/index.js +0 -3515
- package/esm/types/index.d.ts +0 -14
- package/esm/types/index.d.ts.map +0 -1
- package/esm/types/index.js +0 -75
- package/esm/types/ui-config.d.ts +0 -639
- package/esm/types/ui-config.d.ts.map +0 -1
- package/esm/types/ui-runtime.d.ts +0 -1007
- package/esm/types/ui-runtime.d.ts.map +0 -1
- package/esm/typings/cache/cache-adapter.d.ts +0 -125
- package/esm/typings/cache/cache-adapter.d.ts.map +0 -1
- package/esm/typings/cache/index.d.ts +0 -10
- package/esm/typings/cache/index.d.ts.map +0 -1
- package/esm/typings/cache/memory-cache.d.ts +0 -92
- package/esm/typings/cache/memory-cache.d.ts.map +0 -1
- package/esm/typings/dts-parser.d.ts +0 -90
- package/esm/typings/dts-parser.d.ts.map +0 -1
- package/esm/typings/index.d.ts +0 -48
- package/esm/typings/index.d.ts.map +0 -1
- package/esm/typings/schemas.d.ts +0 -232
- package/esm/typings/schemas.d.ts.map +0 -1
- package/esm/typings/type-fetcher.d.ts +0 -89
- package/esm/typings/type-fetcher.d.ts.map +0 -1
- package/esm/typings/types.d.ts +0 -320
- package/esm/typings/types.d.ts.map +0 -1
- package/esm/utils/escape-html.d.ts +0 -58
- package/esm/utils/escape-html.d.ts.map +0 -1
- package/esm/utils/index.d.ts +0 -10
- package/esm/utils/index.d.ts.map +0 -1
- package/esm/utils/index.js +0 -40
- package/esm/utils/safe-stringify.d.ts +0 -30
- package/esm/utils/safe-stringify.d.ts.map +0 -1
- package/esm/validation/error-box.d.ts +0 -56
- package/esm/validation/error-box.d.ts.map +0 -1
- package/esm/validation/index.d.ts +0 -13
- package/esm/validation/index.d.ts.map +0 -1
- package/esm/validation/index.js +0 -562
- package/esm/validation/schema-paths.d.ts +0 -118
- package/esm/validation/schema-paths.d.ts.map +0 -1
- package/esm/validation/template-validator.d.ts +0 -143
- package/esm/validation/template-validator.d.ts.map +0 -1
- package/esm/validation/wrapper.d.ts +0 -97
- package/esm/validation/wrapper.d.ts.map +0 -1
- package/handlebars/expression-extractor.d.ts +0 -147
- package/handlebars/expression-extractor.d.ts.map +0 -1
- package/handlebars/helpers.d.ts +0 -339
- package/handlebars/helpers.d.ts.map +0 -1
- package/handlebars/index.d.ts +0 -195
- package/handlebars/index.d.ts.map +0 -1
- package/handlebars/index.js +0 -666
- package/registry/index.d.ts +0 -46
- package/registry/index.d.ts.map +0 -1
- package/registry/index.js +0 -6465
- package/registry/render-template.d.ts +0 -91
- package/registry/render-template.d.ts.map +0 -1
- package/registry/tool-ui.registry.d.ts +0 -294
- package/registry/tool-ui.registry.d.ts.map +0 -1
- package/registry/uri-utils.d.ts +0 -56
- package/registry/uri-utils.d.ts.map +0 -1
- package/renderers/cache.d.ts +0 -145
- package/renderers/cache.d.ts.map +0 -1
- package/renderers/html.renderer.d.ts +0 -123
- package/renderers/html.renderer.d.ts.map +0 -1
- package/renderers/mdx.renderer.d.ts +0 -120
- package/renderers/mdx.renderer.d.ts.map +0 -1
- package/renderers/registry.d.ts +0 -134
- package/renderers/registry.d.ts.map +0 -1
- package/renderers/types.d.ts +0 -342
- package/renderers/types.d.ts.map +0 -1
- package/renderers/utils/detect.d.ts +0 -107
- package/renderers/utils/detect.d.ts.map +0 -1
- package/renderers/utils/hash.d.ts +0 -40
- package/renderers/utils/hash.d.ts.map +0 -1
- package/renderers/utils/index.d.ts +0 -9
- package/renderers/utils/index.d.ts.map +0 -1
- package/renderers/utils/transpiler.d.ts +0 -89
- package/renderers/utils/transpiler.d.ts.map +0 -1
- package/runtime/adapters/html.adapter.d.ts +0 -59
- package/runtime/adapters/html.adapter.d.ts.map +0 -1
- package/runtime/adapters/index.d.ts +0 -26
- package/runtime/adapters/index.d.ts.map +0 -1
- package/runtime/adapters/mdx.adapter.d.ts +0 -73
- package/runtime/adapters/mdx.adapter.d.ts.map +0 -1
- package/runtime/adapters/react.adapter.d.ts.map +0 -1
- package/runtime/adapters/types.d.ts +0 -95
- package/runtime/adapters/types.d.ts.map +0 -1
- package/runtime/csp.d.ts +0 -48
- package/runtime/csp.d.ts.map +0 -1
- package/runtime/index.d.ts +0 -17
- package/runtime/index.d.ts.map +0 -1
- package/runtime/index.js +0 -5264
- package/runtime/mcp-bridge.d.ts +0 -101
- package/runtime/mcp-bridge.d.ts.map +0 -1
- package/runtime/renderer-runtime.d.ts +0 -133
- package/runtime/renderer-runtime.d.ts.map +0 -1
- package/runtime/sanitizer.d.ts +0 -172
- package/runtime/sanitizer.d.ts.map +0 -1
- package/runtime/types.d.ts +0 -415
- package/runtime/types.d.ts.map +0 -1
- package/runtime/wrapper.d.ts +0 -421
- package/runtime/wrapper.d.ts.map +0 -1
- package/styles/index.d.ts +0 -8
- package/styles/index.d.ts.map +0 -1
- package/styles/index.js +0 -222
- package/styles/variants.d.ts +0 -51
- package/styles/variants.d.ts.map +0 -1
- package/theme/cdn.d.ts +0 -195
- package/theme/cdn.d.ts.map +0 -1
- package/theme/index.d.ts +0 -18
- package/theme/index.d.ts.map +0 -1
- package/theme/index.js +0 -757
- package/theme/platforms.d.ts +0 -107
- package/theme/platforms.d.ts.map +0 -1
- package/theme/presets/github-openai.d.ts +0 -50
- package/theme/presets/github-openai.d.ts.map +0 -1
- package/theme/presets/index.d.ts +0 -11
- package/theme/presets/index.d.ts.map +0 -1
- package/theme/theme.d.ts +0 -396
- package/theme/theme.d.ts.map +0 -1
- package/tool-template/builder.d.ts +0 -213
- package/tool-template/builder.d.ts.map +0 -1
- package/tool-template/index.d.ts +0 -16
- package/tool-template/index.d.ts.map +0 -1
- package/tool-template/index.js +0 -3559
- package/types/index.d.ts +0 -14
- package/types/index.d.ts.map +0 -1
- package/types/index.js +0 -108
- package/types/ui-config.d.ts +0 -639
- package/types/ui-config.d.ts.map +0 -1
- package/types/ui-runtime.d.ts +0 -1007
- package/types/ui-runtime.d.ts.map +0 -1
- package/typings/cache/cache-adapter.d.ts +0 -125
- package/typings/cache/cache-adapter.d.ts.map +0 -1
- package/typings/cache/index.d.ts +0 -10
- package/typings/cache/index.d.ts.map +0 -1
- package/typings/cache/memory-cache.d.ts +0 -92
- package/typings/cache/memory-cache.d.ts.map +0 -1
- package/typings/dts-parser.d.ts +0 -90
- package/typings/dts-parser.d.ts.map +0 -1
- package/typings/index.d.ts +0 -48
- package/typings/index.d.ts.map +0 -1
- package/typings/schemas.d.ts +0 -232
- package/typings/schemas.d.ts.map +0 -1
- package/typings/type-fetcher.d.ts +0 -89
- package/typings/type-fetcher.d.ts.map +0 -1
- package/typings/types.d.ts +0 -320
- package/typings/types.d.ts.map +0 -1
- package/utils/escape-html.d.ts +0 -58
- package/utils/escape-html.d.ts.map +0 -1
- package/utils/index.d.ts +0 -10
- package/utils/index.d.ts.map +0 -1
- package/utils/index.js +0 -70
- package/utils/safe-stringify.d.ts +0 -30
- package/utils/safe-stringify.d.ts.map +0 -1
- package/validation/error-box.d.ts +0 -56
- package/validation/error-box.d.ts.map +0 -1
- package/validation/index.d.ts +0 -13
- package/validation/index.d.ts.map +0 -1
- package/validation/index.js +0 -603
- package/validation/schema-paths.d.ts +0 -118
- package/validation/schema-paths.d.ts.map +0 -1
- package/validation/template-validator.d.ts +0 -143
- package/validation/template-validator.d.ts.map +0 -1
- package/validation/wrapper.d.ts +0 -97
- package/validation/wrapper.d.ts.map +0 -1
package/bundler/index.js
CHANGED
|
@@ -1457,17 +1457,8 @@ function isExecutionError(error) {
|
|
|
1457
1457
|
return error instanceof ExecutionError;
|
|
1458
1458
|
}
|
|
1459
1459
|
|
|
1460
|
-
// libs/ui/src/
|
|
1461
|
-
|
|
1462
|
-
if (str === null || str === void 0) {
|
|
1463
|
-
return "";
|
|
1464
|
-
}
|
|
1465
|
-
const s = String(str);
|
|
1466
|
-
return s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
|
|
1467
|
-
}
|
|
1468
|
-
function escapeHtmlAttr(str) {
|
|
1469
|
-
return str.replace(/&/g, "&").replace(/"/g, """);
|
|
1470
|
-
}
|
|
1460
|
+
// libs/ui/src/bundler/bundler.ts
|
|
1461
|
+
var import_utils = require("@frontmcp/uipack/utils");
|
|
1471
1462
|
|
|
1472
1463
|
// libs/ui/src/universal/types.ts
|
|
1473
1464
|
var UNIVERSAL_CDN = {
|
|
@@ -2485,7 +2476,7 @@ var InMemoryBundler = class {
|
|
|
2485
2476
|
return `<!DOCTYPE html>
|
|
2486
2477
|
<html lang="en">
|
|
2487
2478
|
<head>
|
|
2488
|
-
<title>${escapeHtml(parts.title)}</title>
|
|
2479
|
+
<title>${(0, import_utils.escapeHtml)(parts.title)}</title>
|
|
2489
2480
|
${parts.head}
|
|
2490
2481
|
${parts.reactRuntime}
|
|
2491
2482
|
${parts.cdnImports}
|
|
@@ -2509,7 +2500,7 @@ ${parts.appScript}
|
|
|
2509
2500
|
return `<!DOCTYPE html>
|
|
2510
2501
|
<html lang="en">
|
|
2511
2502
|
<head>
|
|
2512
|
-
<title>${escapeHtml(parts.title)}</title>
|
|
2503
|
+
<title>${(0, import_utils.escapeHtml)(parts.title)}</title>
|
|
2513
2504
|
${parts.head}
|
|
2514
2505
|
${parts.reactRuntime}
|
|
2515
2506
|
${parts.cdnImports}
|
|
@@ -2691,7 +2682,7 @@ ${parts.appScript}
|
|
|
2691
2682
|
return `<!DOCTYPE html>
|
|
2692
2683
|
<html lang="en">
|
|
2693
2684
|
<head>
|
|
2694
|
-
<title>${escapeHtml(parts.title)}</title>
|
|
2685
|
+
<title>${(0, import_utils.escapeHtml)(parts.title)}</title>
|
|
2695
2686
|
${parts.head}
|
|
2696
2687
|
${parts.reactRuntime}
|
|
2697
2688
|
${parts.frontmcpRuntime ?? ""}
|
|
@@ -3246,7 +3237,7 @@ ${sanitizeCss(opts.customCss)}
|
|
|
3246
3237
|
return `<!DOCTYPE html>
|
|
3247
3238
|
<html lang="en">
|
|
3248
3239
|
<head>
|
|
3249
|
-
<title>${escapeHtml(parts.title)}</title>
|
|
3240
|
+
<title>${(0, import_utils.escapeHtml)(parts.title)}</title>
|
|
3250
3241
|
${parts.head}
|
|
3251
3242
|
${parts.reactRuntime}
|
|
3252
3243
|
${parts.frontmcpRuntime}
|
|
@@ -3422,1045 +3413,7 @@ var import_promises3 = require("fs/promises");
|
|
|
3422
3413
|
var import_fs3 = require("fs");
|
|
3423
3414
|
var import_path3 = require("path");
|
|
3424
3415
|
var import_crypto3 = require("crypto");
|
|
3425
|
-
|
|
3426
|
-
// libs/ui/src/dependency/cdn-registry.ts
|
|
3427
|
-
var DEFAULT_CDN_REGISTRY = {
|
|
3428
|
-
// ============================================
|
|
3429
|
-
// React Ecosystem
|
|
3430
|
-
// ============================================
|
|
3431
|
-
react: {
|
|
3432
|
-
packageName: "react",
|
|
3433
|
-
defaultVersion: "18.3.1",
|
|
3434
|
-
providers: {
|
|
3435
|
-
cloudflare: {
|
|
3436
|
-
url: "https://cdnjs.cloudflare.com/ajax/libs/react/18.3.1/umd/react.production.min.js",
|
|
3437
|
-
integrity: "sha512-Qp8J4Xr8LBZ5CXNJQc/HmLqFrpXz6lNkbzMYkYHKzQx5p1q1yOqPQHntXKoYgPPE/n9m0QF1OkJdXa2ePpO4fw==",
|
|
3438
|
-
global: "React",
|
|
3439
|
-
crossorigin: "anonymous"
|
|
3440
|
-
},
|
|
3441
|
-
jsdelivr: {
|
|
3442
|
-
url: "https://cdn.jsdelivr.net/npm/react@18.3.1/umd/react.production.min.js",
|
|
3443
|
-
global: "React",
|
|
3444
|
-
crossorigin: "anonymous"
|
|
3445
|
-
},
|
|
3446
|
-
unpkg: {
|
|
3447
|
-
url: "https://unpkg.com/react@18.3.1/umd/react.production.min.js",
|
|
3448
|
-
global: "React",
|
|
3449
|
-
crossorigin: "anonymous"
|
|
3450
|
-
},
|
|
3451
|
-
"esm.sh": {
|
|
3452
|
-
url: "https://esm.sh/react@18.3.1",
|
|
3453
|
-
esm: true,
|
|
3454
|
-
crossorigin: "anonymous"
|
|
3455
|
-
}
|
|
3456
|
-
},
|
|
3457
|
-
preferredProviders: ["cloudflare", "jsdelivr", "unpkg", "esm.sh"],
|
|
3458
|
-
metadata: {
|
|
3459
|
-
description: "A JavaScript library for building user interfaces",
|
|
3460
|
-
homepage: "https://react.dev",
|
|
3461
|
-
license: "MIT"
|
|
3462
|
-
}
|
|
3463
|
-
},
|
|
3464
|
-
"react-dom": {
|
|
3465
|
-
packageName: "react-dom",
|
|
3466
|
-
defaultVersion: "18.3.1",
|
|
3467
|
-
providers: {
|
|
3468
|
-
cloudflare: {
|
|
3469
|
-
url: "https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.3.1/umd/react-dom.production.min.js",
|
|
3470
|
-
integrity: "sha512-6s2gVRdS3aT+FDdZTRJSzKlzIPqDXWyYl/5hPQb6hSgzKPGFcQyZhbqjbWVxGrs2dYNrINFXb0k0UD3d+CKPJA==",
|
|
3471
|
-
global: "ReactDOM",
|
|
3472
|
-
crossorigin: "anonymous",
|
|
3473
|
-
peerDependencies: ["react"]
|
|
3474
|
-
},
|
|
3475
|
-
jsdelivr: {
|
|
3476
|
-
url: "https://cdn.jsdelivr.net/npm/react-dom@18.3.1/umd/react-dom.production.min.js",
|
|
3477
|
-
global: "ReactDOM",
|
|
3478
|
-
crossorigin: "anonymous",
|
|
3479
|
-
peerDependencies: ["react"]
|
|
3480
|
-
},
|
|
3481
|
-
unpkg: {
|
|
3482
|
-
url: "https://unpkg.com/react-dom@18.3.1/umd/react-dom.production.min.js",
|
|
3483
|
-
global: "ReactDOM",
|
|
3484
|
-
crossorigin: "anonymous",
|
|
3485
|
-
peerDependencies: ["react"]
|
|
3486
|
-
},
|
|
3487
|
-
"esm.sh": {
|
|
3488
|
-
url: "https://esm.sh/react-dom@18.3.1",
|
|
3489
|
-
esm: true,
|
|
3490
|
-
crossorigin: "anonymous",
|
|
3491
|
-
peerDependencies: ["react"]
|
|
3492
|
-
}
|
|
3493
|
-
},
|
|
3494
|
-
preferredProviders: ["cloudflare", "jsdelivr", "unpkg", "esm.sh"],
|
|
3495
|
-
metadata: {
|
|
3496
|
-
description: "React package for working with the DOM",
|
|
3497
|
-
homepage: "https://react.dev",
|
|
3498
|
-
license: "MIT"
|
|
3499
|
-
}
|
|
3500
|
-
},
|
|
3501
|
-
// ============================================
|
|
3502
|
-
// Charting Libraries
|
|
3503
|
-
// ============================================
|
|
3504
|
-
"chart.js": {
|
|
3505
|
-
packageName: "chart.js",
|
|
3506
|
-
defaultVersion: "4.4.7",
|
|
3507
|
-
providers: {
|
|
3508
|
-
cloudflare: {
|
|
3509
|
-
url: "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.7/chart.umd.min.js",
|
|
3510
|
-
integrity: "sha512-dMDjIoZjJD6gs0KPBhFYjLQrH3kIohSEn6HzWs6Y6GiO0+L9kk/bM3cR5KNEDK1KvMNpTIZG6pHK9SZfCJHRpQ==",
|
|
3511
|
-
global: "Chart",
|
|
3512
|
-
crossorigin: "anonymous"
|
|
3513
|
-
},
|
|
3514
|
-
jsdelivr: {
|
|
3515
|
-
url: "https://cdn.jsdelivr.net/npm/chart.js@4.4.7/dist/chart.umd.min.js",
|
|
3516
|
-
global: "Chart",
|
|
3517
|
-
crossorigin: "anonymous"
|
|
3518
|
-
},
|
|
3519
|
-
unpkg: {
|
|
3520
|
-
url: "https://unpkg.com/chart.js@4.4.7/dist/chart.umd.min.js",
|
|
3521
|
-
global: "Chart",
|
|
3522
|
-
crossorigin: "anonymous"
|
|
3523
|
-
}
|
|
3524
|
-
},
|
|
3525
|
-
preferredProviders: ["cloudflare", "jsdelivr", "unpkg"],
|
|
3526
|
-
metadata: {
|
|
3527
|
-
description: "Simple yet flexible JavaScript charting library",
|
|
3528
|
-
homepage: "https://www.chartjs.org",
|
|
3529
|
-
license: "MIT"
|
|
3530
|
-
}
|
|
3531
|
-
},
|
|
3532
|
-
"react-chartjs-2": {
|
|
3533
|
-
packageName: "react-chartjs-2",
|
|
3534
|
-
defaultVersion: "5.3.0",
|
|
3535
|
-
providers: {
|
|
3536
|
-
cloudflare: {
|
|
3537
|
-
url: "https://cdnjs.cloudflare.com/ajax/libs/react-chartjs-2/5.3.0/react-chartjs-2.min.js",
|
|
3538
|
-
global: "ReactChartjs2",
|
|
3539
|
-
crossorigin: "anonymous",
|
|
3540
|
-
peerDependencies: ["react", "chart.js"]
|
|
3541
|
-
},
|
|
3542
|
-
jsdelivr: {
|
|
3543
|
-
url: "https://cdn.jsdelivr.net/npm/react-chartjs-2@5.3.0/dist/index.umd.js",
|
|
3544
|
-
global: "ReactChartjs2",
|
|
3545
|
-
crossorigin: "anonymous",
|
|
3546
|
-
peerDependencies: ["react", "chart.js"]
|
|
3547
|
-
},
|
|
3548
|
-
"esm.sh": {
|
|
3549
|
-
url: "https://esm.sh/react-chartjs-2@5.3.0",
|
|
3550
|
-
esm: true,
|
|
3551
|
-
crossorigin: "anonymous",
|
|
3552
|
-
peerDependencies: ["react", "chart.js"]
|
|
3553
|
-
}
|
|
3554
|
-
},
|
|
3555
|
-
preferredProviders: ["cloudflare", "jsdelivr", "esm.sh"],
|
|
3556
|
-
metadata: {
|
|
3557
|
-
description: "React components for Chart.js",
|
|
3558
|
-
homepage: "https://react-chartjs-2.js.org",
|
|
3559
|
-
license: "MIT"
|
|
3560
|
-
}
|
|
3561
|
-
},
|
|
3562
|
-
// ============================================
|
|
3563
|
-
// D3.js
|
|
3564
|
-
// ============================================
|
|
3565
|
-
d3: {
|
|
3566
|
-
packageName: "d3",
|
|
3567
|
-
defaultVersion: "7.9.0",
|
|
3568
|
-
providers: {
|
|
3569
|
-
cloudflare: {
|
|
3570
|
-
url: "https://cdnjs.cloudflare.com/ajax/libs/d3/7.9.0/d3.min.js",
|
|
3571
|
-
integrity: "sha512-vc58qvvBdrDR4etbxMdlTt4GBQk1qjvyORR2nrsPsFPyrs+/u5c3+1Ct6upOgdZoIl7eq6k3a1UPDSNAQi/32A==",
|
|
3572
|
-
global: "d3",
|
|
3573
|
-
crossorigin: "anonymous"
|
|
3574
|
-
},
|
|
3575
|
-
jsdelivr: {
|
|
3576
|
-
url: "https://cdn.jsdelivr.net/npm/d3@7.9.0/dist/d3.min.js",
|
|
3577
|
-
global: "d3",
|
|
3578
|
-
crossorigin: "anonymous"
|
|
3579
|
-
},
|
|
3580
|
-
unpkg: {
|
|
3581
|
-
url: "https://unpkg.com/d3@7.9.0/dist/d3.min.js",
|
|
3582
|
-
global: "d3",
|
|
3583
|
-
crossorigin: "anonymous"
|
|
3584
|
-
}
|
|
3585
|
-
},
|
|
3586
|
-
preferredProviders: ["cloudflare", "jsdelivr", "unpkg"],
|
|
3587
|
-
metadata: {
|
|
3588
|
-
description: "Data-Driven Documents",
|
|
3589
|
-
homepage: "https://d3js.org",
|
|
3590
|
-
license: "ISC"
|
|
3591
|
-
}
|
|
3592
|
-
},
|
|
3593
|
-
// ============================================
|
|
3594
|
-
// Utility Libraries
|
|
3595
|
-
// ============================================
|
|
3596
|
-
lodash: {
|
|
3597
|
-
packageName: "lodash",
|
|
3598
|
-
defaultVersion: "4.17.21",
|
|
3599
|
-
providers: {
|
|
3600
|
-
cloudflare: {
|
|
3601
|
-
url: "https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js",
|
|
3602
|
-
integrity: "sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==",
|
|
3603
|
-
global: "_",
|
|
3604
|
-
crossorigin: "anonymous"
|
|
3605
|
-
},
|
|
3606
|
-
jsdelivr: {
|
|
3607
|
-
url: "https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js",
|
|
3608
|
-
global: "_",
|
|
3609
|
-
crossorigin: "anonymous"
|
|
3610
|
-
},
|
|
3611
|
-
unpkg: {
|
|
3612
|
-
url: "https://unpkg.com/lodash@4.17.21/lodash.min.js",
|
|
3613
|
-
global: "_",
|
|
3614
|
-
crossorigin: "anonymous"
|
|
3615
|
-
}
|
|
3616
|
-
},
|
|
3617
|
-
preferredProviders: ["cloudflare", "jsdelivr", "unpkg"],
|
|
3618
|
-
metadata: {
|
|
3619
|
-
description: "A modern JavaScript utility library",
|
|
3620
|
-
homepage: "https://lodash.com",
|
|
3621
|
-
license: "MIT"
|
|
3622
|
-
}
|
|
3623
|
-
},
|
|
3624
|
-
"lodash-es": {
|
|
3625
|
-
packageName: "lodash-es",
|
|
3626
|
-
defaultVersion: "4.17.21",
|
|
3627
|
-
providers: {
|
|
3628
|
-
"esm.sh": {
|
|
3629
|
-
url: "https://esm.sh/lodash-es@4.17.21",
|
|
3630
|
-
esm: true,
|
|
3631
|
-
crossorigin: "anonymous"
|
|
3632
|
-
},
|
|
3633
|
-
jsdelivr: {
|
|
3634
|
-
url: "https://cdn.jsdelivr.net/npm/lodash-es@4.17.21/+esm",
|
|
3635
|
-
esm: true,
|
|
3636
|
-
crossorigin: "anonymous"
|
|
3637
|
-
}
|
|
3638
|
-
},
|
|
3639
|
-
preferredProviders: ["esm.sh", "jsdelivr"],
|
|
3640
|
-
metadata: {
|
|
3641
|
-
description: "Lodash exported as ES modules",
|
|
3642
|
-
homepage: "https://lodash.com",
|
|
3643
|
-
license: "MIT"
|
|
3644
|
-
}
|
|
3645
|
-
},
|
|
3646
|
-
dayjs: {
|
|
3647
|
-
packageName: "dayjs",
|
|
3648
|
-
defaultVersion: "1.11.13",
|
|
3649
|
-
providers: {
|
|
3650
|
-
cloudflare: {
|
|
3651
|
-
url: "https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.13/dayjs.min.js",
|
|
3652
|
-
integrity: "sha512-Ot7ArUEhJDU0cwoBNNnWe487kjL5wAOsIYig8llY/l0P2TUFwgsAHVmrZMHsT8NGo+HwkjTJsNErS6QqIkBxDw==",
|
|
3653
|
-
global: "dayjs",
|
|
3654
|
-
crossorigin: "anonymous"
|
|
3655
|
-
},
|
|
3656
|
-
jsdelivr: {
|
|
3657
|
-
url: "https://cdn.jsdelivr.net/npm/dayjs@1.11.13/dayjs.min.js",
|
|
3658
|
-
global: "dayjs",
|
|
3659
|
-
crossorigin: "anonymous"
|
|
3660
|
-
},
|
|
3661
|
-
unpkg: {
|
|
3662
|
-
url: "https://unpkg.com/dayjs@1.11.13/dayjs.min.js",
|
|
3663
|
-
global: "dayjs",
|
|
3664
|
-
crossorigin: "anonymous"
|
|
3665
|
-
}
|
|
3666
|
-
},
|
|
3667
|
-
preferredProviders: ["cloudflare", "jsdelivr", "unpkg"],
|
|
3668
|
-
metadata: {
|
|
3669
|
-
description: "Fast 2kB alternative to Moment.js with the same modern API",
|
|
3670
|
-
homepage: "https://day.js.org",
|
|
3671
|
-
license: "MIT"
|
|
3672
|
-
}
|
|
3673
|
-
},
|
|
3674
|
-
"date-fns": {
|
|
3675
|
-
packageName: "date-fns",
|
|
3676
|
-
defaultVersion: "4.1.0",
|
|
3677
|
-
providers: {
|
|
3678
|
-
"esm.sh": {
|
|
3679
|
-
url: "https://esm.sh/date-fns@4.1.0",
|
|
3680
|
-
esm: true,
|
|
3681
|
-
crossorigin: "anonymous"
|
|
3682
|
-
},
|
|
3683
|
-
jsdelivr: {
|
|
3684
|
-
url: "https://cdn.jsdelivr.net/npm/date-fns@4.1.0/+esm",
|
|
3685
|
-
esm: true,
|
|
3686
|
-
crossorigin: "anonymous"
|
|
3687
|
-
}
|
|
3688
|
-
},
|
|
3689
|
-
preferredProviders: ["esm.sh", "jsdelivr"],
|
|
3690
|
-
metadata: {
|
|
3691
|
-
description: "Modern JavaScript date utility library",
|
|
3692
|
-
homepage: "https://date-fns.org",
|
|
3693
|
-
license: "MIT"
|
|
3694
|
-
}
|
|
3695
|
-
},
|
|
3696
|
-
// ============================================
|
|
3697
|
-
// Animation Libraries
|
|
3698
|
-
// ============================================
|
|
3699
|
-
"framer-motion": {
|
|
3700
|
-
packageName: "framer-motion",
|
|
3701
|
-
defaultVersion: "11.15.0",
|
|
3702
|
-
providers: {
|
|
3703
|
-
"esm.sh": {
|
|
3704
|
-
url: "https://esm.sh/framer-motion@11.15.0",
|
|
3705
|
-
esm: true,
|
|
3706
|
-
crossorigin: "anonymous",
|
|
3707
|
-
peerDependencies: ["react", "react-dom"]
|
|
3708
|
-
},
|
|
3709
|
-
jsdelivr: {
|
|
3710
|
-
url: "https://cdn.jsdelivr.net/npm/framer-motion@11.15.0/dist/framer-motion.js",
|
|
3711
|
-
global: "Motion",
|
|
3712
|
-
crossorigin: "anonymous",
|
|
3713
|
-
peerDependencies: ["react", "react-dom"]
|
|
3714
|
-
}
|
|
3715
|
-
},
|
|
3716
|
-
preferredProviders: ["esm.sh", "jsdelivr"],
|
|
3717
|
-
metadata: {
|
|
3718
|
-
description: "Production-ready motion library for React",
|
|
3719
|
-
homepage: "https://www.framer.com/motion/",
|
|
3720
|
-
license: "MIT"
|
|
3721
|
-
}
|
|
3722
|
-
},
|
|
3723
|
-
// ============================================
|
|
3724
|
-
// UI Component Libraries
|
|
3725
|
-
// ============================================
|
|
3726
|
-
"lucide-react": {
|
|
3727
|
-
packageName: "lucide-react",
|
|
3728
|
-
defaultVersion: "0.468.0",
|
|
3729
|
-
providers: {
|
|
3730
|
-
"esm.sh": {
|
|
3731
|
-
url: "https://esm.sh/lucide-react@0.468.0",
|
|
3732
|
-
esm: true,
|
|
3733
|
-
crossorigin: "anonymous",
|
|
3734
|
-
peerDependencies: ["react"]
|
|
3735
|
-
},
|
|
3736
|
-
jsdelivr: {
|
|
3737
|
-
url: "https://cdn.jsdelivr.net/npm/lucide-react@0.468.0/dist/esm/lucide-react.js",
|
|
3738
|
-
esm: true,
|
|
3739
|
-
crossorigin: "anonymous",
|
|
3740
|
-
peerDependencies: ["react"]
|
|
3741
|
-
}
|
|
3742
|
-
},
|
|
3743
|
-
preferredProviders: ["esm.sh", "jsdelivr"],
|
|
3744
|
-
metadata: {
|
|
3745
|
-
description: "Beautiful & consistent icon toolkit for React",
|
|
3746
|
-
homepage: "https://lucide.dev",
|
|
3747
|
-
license: "ISC"
|
|
3748
|
-
}
|
|
3749
|
-
},
|
|
3750
|
-
// ============================================
|
|
3751
|
-
// Markdown/Syntax Highlighting
|
|
3752
|
-
// ============================================
|
|
3753
|
-
marked: {
|
|
3754
|
-
packageName: "marked",
|
|
3755
|
-
defaultVersion: "15.0.4",
|
|
3756
|
-
providers: {
|
|
3757
|
-
cloudflare: {
|
|
3758
|
-
url: "https://cdnjs.cloudflare.com/ajax/libs/marked/15.0.4/marked.min.js",
|
|
3759
|
-
integrity: "sha512-Rn/d0sGeizGbk3VJEiYNDt/mMcfuzYoFkia3iBffv+HX8VUrHMo/0cKjZuxWGoZLPh/VxUcC9ais+RBFZW9EBg==",
|
|
3760
|
-
global: "marked",
|
|
3761
|
-
crossorigin: "anonymous"
|
|
3762
|
-
},
|
|
3763
|
-
jsdelivr: {
|
|
3764
|
-
url: "https://cdn.jsdelivr.net/npm/marked@15.0.4/marked.min.js",
|
|
3765
|
-
global: "marked",
|
|
3766
|
-
crossorigin: "anonymous"
|
|
3767
|
-
},
|
|
3768
|
-
unpkg: {
|
|
3769
|
-
url: "https://unpkg.com/marked@15.0.4/marked.min.js",
|
|
3770
|
-
global: "marked",
|
|
3771
|
-
crossorigin: "anonymous"
|
|
3772
|
-
}
|
|
3773
|
-
},
|
|
3774
|
-
preferredProviders: ["cloudflare", "jsdelivr", "unpkg"],
|
|
3775
|
-
metadata: {
|
|
3776
|
-
description: "A markdown parser and compiler",
|
|
3777
|
-
homepage: "https://marked.js.org",
|
|
3778
|
-
license: "MIT"
|
|
3779
|
-
}
|
|
3780
|
-
},
|
|
3781
|
-
"highlight.js": {
|
|
3782
|
-
packageName: "highlight.js",
|
|
3783
|
-
defaultVersion: "11.10.0",
|
|
3784
|
-
providers: {
|
|
3785
|
-
cloudflare: {
|
|
3786
|
-
url: "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.10.0/highlight.min.js",
|
|
3787
|
-
integrity: "sha512-6yoqbrcLAHDWAdQmiRlHG4+m0g/CT/V9AGyxabG8j7Jk8j3v3k6mIP1iN/PvSofcWet2tf8SRn/j3L/+pb7LRQ==",
|
|
3788
|
-
global: "hljs",
|
|
3789
|
-
crossorigin: "anonymous"
|
|
3790
|
-
},
|
|
3791
|
-
jsdelivr: {
|
|
3792
|
-
url: "https://cdn.jsdelivr.net/npm/highlight.js@11.10.0/lib/core.min.js",
|
|
3793
|
-
global: "hljs",
|
|
3794
|
-
crossorigin: "anonymous"
|
|
3795
|
-
},
|
|
3796
|
-
unpkg: {
|
|
3797
|
-
url: "https://unpkg.com/highlight.js@11.10.0/lib/core.min.js",
|
|
3798
|
-
global: "hljs",
|
|
3799
|
-
crossorigin: "anonymous"
|
|
3800
|
-
}
|
|
3801
|
-
},
|
|
3802
|
-
preferredProviders: ["cloudflare", "jsdelivr", "unpkg"],
|
|
3803
|
-
metadata: {
|
|
3804
|
-
description: "Syntax highlighting for the web",
|
|
3805
|
-
homepage: "https://highlightjs.org",
|
|
3806
|
-
license: "BSD-3-Clause"
|
|
3807
|
-
}
|
|
3808
|
-
},
|
|
3809
|
-
// ============================================
|
|
3810
|
-
// Interactive Libraries
|
|
3811
|
-
// ============================================
|
|
3812
|
-
"htmx.org": {
|
|
3813
|
-
packageName: "htmx.org",
|
|
3814
|
-
defaultVersion: "2.0.4",
|
|
3815
|
-
providers: {
|
|
3816
|
-
cloudflare: {
|
|
3817
|
-
url: "https://cdnjs.cloudflare.com/ajax/libs/htmx/2.0.4/htmx.min.js",
|
|
3818
|
-
integrity: "sha512-2kIcAizYXhIn5IyXrMC72f2nh0JAtESHRpOieVw5dYPYeHwLCC2eKCqvdZDYRSEgasKrPpEPpRFjL8gqwBZWAA==",
|
|
3819
|
-
global: "htmx",
|
|
3820
|
-
crossorigin: "anonymous"
|
|
3821
|
-
},
|
|
3822
|
-
jsdelivr: {
|
|
3823
|
-
url: "https://cdn.jsdelivr.net/npm/htmx.org@2.0.4/dist/htmx.min.js",
|
|
3824
|
-
global: "htmx",
|
|
3825
|
-
crossorigin: "anonymous"
|
|
3826
|
-
},
|
|
3827
|
-
unpkg: {
|
|
3828
|
-
url: "https://unpkg.com/htmx.org@2.0.4/dist/htmx.min.js",
|
|
3829
|
-
global: "htmx",
|
|
3830
|
-
crossorigin: "anonymous"
|
|
3831
|
-
}
|
|
3832
|
-
},
|
|
3833
|
-
preferredProviders: ["cloudflare", "jsdelivr", "unpkg"],
|
|
3834
|
-
metadata: {
|
|
3835
|
-
description: "High power tools for HTML",
|
|
3836
|
-
homepage: "https://htmx.org",
|
|
3837
|
-
license: "BSD-2-Clause"
|
|
3838
|
-
}
|
|
3839
|
-
},
|
|
3840
|
-
alpinejs: {
|
|
3841
|
-
packageName: "alpinejs",
|
|
3842
|
-
defaultVersion: "3.14.3",
|
|
3843
|
-
providers: {
|
|
3844
|
-
cloudflare: {
|
|
3845
|
-
url: "https://cdnjs.cloudflare.com/ajax/libs/alpinejs/3.14.3/cdn.min.js",
|
|
3846
|
-
integrity: "sha512-lrQ8FHgsWKFSuQFq8NKPJicjlvJFEIrCqEj8zeX7ZOUlHWltN/Iow4jND+x84jqTdDf9n+hvQpJjGDvOl/eDRA==",
|
|
3847
|
-
global: "Alpine",
|
|
3848
|
-
crossorigin: "anonymous"
|
|
3849
|
-
},
|
|
3850
|
-
jsdelivr: {
|
|
3851
|
-
url: "https://cdn.jsdelivr.net/npm/alpinejs@3.14.3/dist/cdn.min.js",
|
|
3852
|
-
global: "Alpine",
|
|
3853
|
-
crossorigin: "anonymous"
|
|
3854
|
-
},
|
|
3855
|
-
unpkg: {
|
|
3856
|
-
url: "https://unpkg.com/alpinejs@3.14.3/dist/cdn.min.js",
|
|
3857
|
-
global: "Alpine",
|
|
3858
|
-
crossorigin: "anonymous"
|
|
3859
|
-
}
|
|
3860
|
-
},
|
|
3861
|
-
preferredProviders: ["cloudflare", "jsdelivr", "unpkg"],
|
|
3862
|
-
metadata: {
|
|
3863
|
-
description: "A rugged, minimal framework for composing behavior directly in your markup",
|
|
3864
|
-
homepage: "https://alpinejs.dev",
|
|
3865
|
-
license: "MIT"
|
|
3866
|
-
}
|
|
3867
|
-
},
|
|
3868
|
-
// ============================================
|
|
3869
|
-
// Templating Libraries
|
|
3870
|
-
// ============================================
|
|
3871
|
-
handlebars: {
|
|
3872
|
-
packageName: "handlebars",
|
|
3873
|
-
defaultVersion: "4.7.8",
|
|
3874
|
-
providers: {
|
|
3875
|
-
cloudflare: {
|
|
3876
|
-
url: "https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.8/handlebars.min.js",
|
|
3877
|
-
integrity: "sha512-E1dSFxg+wsfJ4HKjutk/WaCzK7S2wv1POn1RRPGh8ZK+ag9l244Vqxji3r6wgz9YBf6+vhQEYJZpSjqWFPg9gg==",
|
|
3878
|
-
global: "Handlebars",
|
|
3879
|
-
crossorigin: "anonymous"
|
|
3880
|
-
},
|
|
3881
|
-
jsdelivr: {
|
|
3882
|
-
url: "https://cdn.jsdelivr.net/npm/handlebars@4.7.8/dist/handlebars.min.js",
|
|
3883
|
-
global: "Handlebars",
|
|
3884
|
-
crossorigin: "anonymous"
|
|
3885
|
-
},
|
|
3886
|
-
unpkg: {
|
|
3887
|
-
url: "https://unpkg.com/handlebars@4.7.8/dist/handlebars.min.js",
|
|
3888
|
-
global: "Handlebars",
|
|
3889
|
-
crossorigin: "anonymous"
|
|
3890
|
-
}
|
|
3891
|
-
},
|
|
3892
|
-
preferredProviders: ["cloudflare", "jsdelivr", "unpkg"],
|
|
3893
|
-
metadata: {
|
|
3894
|
-
description: "Minimal templating on steroids",
|
|
3895
|
-
homepage: "https://handlebarsjs.com",
|
|
3896
|
-
license: "MIT"
|
|
3897
|
-
}
|
|
3898
|
-
}
|
|
3899
|
-
};
|
|
3900
|
-
var CDN_PROVIDER_PRIORITY = {
|
|
3901
|
-
claude: ["cloudflare"],
|
|
3902
|
-
// ONLY cloudflare for Claude
|
|
3903
|
-
openai: ["cloudflare", "jsdelivr", "unpkg", "esm.sh"],
|
|
3904
|
-
cursor: ["cloudflare", "jsdelivr", "unpkg", "esm.sh"],
|
|
3905
|
-
gemini: ["cloudflare", "jsdelivr", "unpkg", "esm.sh"],
|
|
3906
|
-
continue: ["cloudflare", "jsdelivr", "unpkg", "esm.sh"],
|
|
3907
|
-
cody: ["cloudflare", "jsdelivr", "unpkg", "esm.sh"],
|
|
3908
|
-
unknown: ["cloudflare", "jsdelivr", "unpkg", "esm.sh"]
|
|
3909
|
-
// Default to cloudflare first
|
|
3910
|
-
};
|
|
3911
|
-
function lookupPackage(packageName, registry = DEFAULT_CDN_REGISTRY) {
|
|
3912
|
-
return registry[packageName];
|
|
3913
|
-
}
|
|
3914
|
-
function mergeRegistries(customRegistry) {
|
|
3915
|
-
return {
|
|
3916
|
-
...DEFAULT_CDN_REGISTRY,
|
|
3917
|
-
...customRegistry
|
|
3918
|
-
};
|
|
3919
|
-
}
|
|
3920
|
-
function getPackagePeerDependencies(packageName, registry = DEFAULT_CDN_REGISTRY) {
|
|
3921
|
-
const entry = lookupPackage(packageName, registry);
|
|
3922
|
-
if (!entry) return [];
|
|
3923
|
-
for (const provider of Object.keys(entry.providers)) {
|
|
3924
|
-
const config = entry.providers[provider];
|
|
3925
|
-
if (config?.peerDependencies) {
|
|
3926
|
-
return config.peerDependencies;
|
|
3927
|
-
}
|
|
3928
|
-
}
|
|
3929
|
-
return [];
|
|
3930
|
-
}
|
|
3931
|
-
function resolveAllDependencies(packageNames, platform = "unknown", registry = DEFAULT_CDN_REGISTRY) {
|
|
3932
|
-
const resolved = /* @__PURE__ */ new Set();
|
|
3933
|
-
const queue = [...packageNames];
|
|
3934
|
-
while (queue.length > 0) {
|
|
3935
|
-
const packageName = queue.shift();
|
|
3936
|
-
if (!packageName) continue;
|
|
3937
|
-
if (resolved.has(packageName)) continue;
|
|
3938
|
-
resolved.add(packageName);
|
|
3939
|
-
const peers = getPackagePeerDependencies(packageName, registry);
|
|
3940
|
-
for (const peer of peers) {
|
|
3941
|
-
if (!resolved.has(peer)) {
|
|
3942
|
-
queue.push(peer);
|
|
3943
|
-
}
|
|
3944
|
-
}
|
|
3945
|
-
}
|
|
3946
|
-
const result = [];
|
|
3947
|
-
const remaining = new Set(resolved);
|
|
3948
|
-
while (remaining.size > 0) {
|
|
3949
|
-
let added = false;
|
|
3950
|
-
for (const pkg of remaining) {
|
|
3951
|
-
const peers = getPackagePeerDependencies(pkg, registry);
|
|
3952
|
-
const allPeersResolved = peers.every((peer) => !remaining.has(peer) || result.includes(peer));
|
|
3953
|
-
if (allPeersResolved) {
|
|
3954
|
-
if (!result.includes(pkg)) {
|
|
3955
|
-
result.push(pkg);
|
|
3956
|
-
}
|
|
3957
|
-
remaining.delete(pkg);
|
|
3958
|
-
added = true;
|
|
3959
|
-
}
|
|
3960
|
-
}
|
|
3961
|
-
if (!added && remaining.size > 0) {
|
|
3962
|
-
const next = remaining.values().next().value;
|
|
3963
|
-
if (next !== void 0) {
|
|
3964
|
-
if (!result.includes(next)) {
|
|
3965
|
-
result.push(next);
|
|
3966
|
-
}
|
|
3967
|
-
remaining.delete(next);
|
|
3968
|
-
}
|
|
3969
|
-
}
|
|
3970
|
-
}
|
|
3971
|
-
return result;
|
|
3972
|
-
}
|
|
3973
|
-
|
|
3974
|
-
// libs/ui/src/dependency/import-parser.ts
|
|
3975
|
-
var IMPORT_PATTERNS = {
|
|
3976
|
-
/**
|
|
3977
|
-
* Named imports: import { foo, bar } from 'module'
|
|
3978
|
-
* Also handles renamed imports: import { foo as f } from 'module'
|
|
3979
|
-
*/
|
|
3980
|
-
named: /import\s*\{([^}]+)\}\s*from\s*['"]([^'"]+)['"]/g,
|
|
3981
|
-
/**
|
|
3982
|
-
* Default imports: import foo from 'module'
|
|
3983
|
-
*/
|
|
3984
|
-
default: /import\s+(\w+)\s+from\s*['"]([^'"]+)['"]/g,
|
|
3985
|
-
/**
|
|
3986
|
-
* Namespace imports: import * as foo from 'module'
|
|
3987
|
-
*/
|
|
3988
|
-
namespace: /import\s*\*\s*as\s+(\w+)\s+from\s*['"]([^'"]+)['"]/g,
|
|
3989
|
-
/**
|
|
3990
|
-
* Side-effect imports: import 'module'
|
|
3991
|
-
*/
|
|
3992
|
-
sideEffect: /import\s*['"]([^'"]+)['"]/g,
|
|
3993
|
-
/**
|
|
3994
|
-
* Dynamic imports: import('module') or await import('module')
|
|
3995
|
-
*/
|
|
3996
|
-
dynamic: /(?:await\s+)?import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,
|
|
3997
|
-
/**
|
|
3998
|
-
* Combined default and named: import foo, { bar } from 'module'
|
|
3999
|
-
*/
|
|
4000
|
-
defaultAndNamed: /import\s+(\w+)\s*,\s*\{([^}]+)\}\s*from\s*['"]([^'"]+)['"]/g,
|
|
4001
|
-
/**
|
|
4002
|
-
* Combined default and namespace: import foo, * as bar from 'module'
|
|
4003
|
-
*/
|
|
4004
|
-
defaultAndNamespace: /import\s+(\w+)\s*,\s*\*\s*as\s+(\w+)\s+from\s*['"]([^'"]+)['"]/g,
|
|
4005
|
-
/**
|
|
4006
|
-
* Re-exports: export { foo } from 'module'
|
|
4007
|
-
*/
|
|
4008
|
-
reExport: /export\s*\{[^}]+\}\s*from\s*['"]([^'"]+)['"]/g,
|
|
4009
|
-
/**
|
|
4010
|
-
* Re-export all: export * from 'module'
|
|
4011
|
-
*/
|
|
4012
|
-
reExportAll: /export\s*\*\s*from\s*['"]([^'"]+)['"]/g
|
|
4013
|
-
};
|
|
4014
|
-
function parseNamedImports(namedString) {
|
|
4015
|
-
return namedString.split(",").map((s) => s.trim()).filter((s) => s.length > 0).map((s) => {
|
|
4016
|
-
const asMatch = s.match(/^(\w+)\s+as\s+\w+$/);
|
|
4017
|
-
return asMatch ? asMatch[1] : s;
|
|
4018
|
-
});
|
|
4019
|
-
}
|
|
4020
|
-
function isRelativeImport(specifier) {
|
|
4021
|
-
return specifier.startsWith("./") || specifier.startsWith("../") || specifier.startsWith("/");
|
|
4022
|
-
}
|
|
4023
|
-
function isExternalImport(specifier) {
|
|
4024
|
-
return !isRelativeImport(specifier) && !specifier.startsWith("#");
|
|
4025
|
-
}
|
|
4026
|
-
function getPackageName(specifier) {
|
|
4027
|
-
if (specifier.startsWith("@")) {
|
|
4028
|
-
const parts = specifier.split("/");
|
|
4029
|
-
if (parts.length >= 2) {
|
|
4030
|
-
return `${parts[0]}/${parts[1]}`;
|
|
4031
|
-
}
|
|
4032
|
-
return specifier;
|
|
4033
|
-
}
|
|
4034
|
-
const firstSlash = specifier.indexOf("/");
|
|
4035
|
-
return firstSlash === -1 ? specifier : specifier.slice(0, firstSlash);
|
|
4036
|
-
}
|
|
4037
|
-
function getLineNumber(source, index) {
|
|
4038
|
-
let line = 1;
|
|
4039
|
-
for (let i = 0; i < index && i < source.length; i++) {
|
|
4040
|
-
if (source[i] === "\n") {
|
|
4041
|
-
line++;
|
|
4042
|
-
}
|
|
4043
|
-
}
|
|
4044
|
-
return line;
|
|
4045
|
-
}
|
|
4046
|
-
function getColumnNumber(source, index) {
|
|
4047
|
-
let column = 0;
|
|
4048
|
-
for (let i = index - 1; i >= 0 && source[i] !== "\n"; i--) {
|
|
4049
|
-
column++;
|
|
4050
|
-
}
|
|
4051
|
-
return column;
|
|
4052
|
-
}
|
|
4053
|
-
function parseImports(source) {
|
|
4054
|
-
const imports = [];
|
|
4055
|
-
const seenStatements = /* @__PURE__ */ new Set();
|
|
4056
|
-
const addImport = (imp) => {
|
|
4057
|
-
const key = `${imp.type}:${imp.specifier}:${imp.statement}`;
|
|
4058
|
-
if (!seenStatements.has(key)) {
|
|
4059
|
-
seenStatements.add(key);
|
|
4060
|
-
imports.push(imp);
|
|
4061
|
-
}
|
|
4062
|
-
};
|
|
4063
|
-
let match;
|
|
4064
|
-
const defaultAndNamedRegex = new RegExp(IMPORT_PATTERNS.defaultAndNamed.source, "g");
|
|
4065
|
-
while ((match = defaultAndNamedRegex.exec(source)) !== null) {
|
|
4066
|
-
const [statement, defaultName, namedString, specifier] = match;
|
|
4067
|
-
const namedImports = parseNamedImports(namedString);
|
|
4068
|
-
addImport({
|
|
4069
|
-
statement,
|
|
4070
|
-
specifier,
|
|
4071
|
-
type: "default",
|
|
4072
|
-
defaultImport: defaultName,
|
|
4073
|
-
namedImports,
|
|
4074
|
-
line: getLineNumber(source, match.index),
|
|
4075
|
-
column: getColumnNumber(source, match.index)
|
|
4076
|
-
});
|
|
4077
|
-
}
|
|
4078
|
-
const defaultAndNamespaceRegex = new RegExp(IMPORT_PATTERNS.defaultAndNamespace.source, "g");
|
|
4079
|
-
while ((match = defaultAndNamespaceRegex.exec(source)) !== null) {
|
|
4080
|
-
const [statement, defaultName, namespaceName, specifier] = match;
|
|
4081
|
-
addImport({
|
|
4082
|
-
statement,
|
|
4083
|
-
specifier,
|
|
4084
|
-
type: "default",
|
|
4085
|
-
defaultImport: defaultName,
|
|
4086
|
-
namespaceImport: namespaceName,
|
|
4087
|
-
line: getLineNumber(source, match.index),
|
|
4088
|
-
column: getColumnNumber(source, match.index)
|
|
4089
|
-
});
|
|
4090
|
-
}
|
|
4091
|
-
const namedRegex = new RegExp(IMPORT_PATTERNS.named.source, "g");
|
|
4092
|
-
while ((match = namedRegex.exec(source)) !== null) {
|
|
4093
|
-
const [statement, namedString, specifier] = match;
|
|
4094
|
-
const namedImports = parseNamedImports(namedString);
|
|
4095
|
-
addImport({
|
|
4096
|
-
statement,
|
|
4097
|
-
specifier,
|
|
4098
|
-
type: "named",
|
|
4099
|
-
namedImports,
|
|
4100
|
-
line: getLineNumber(source, match.index),
|
|
4101
|
-
column: getColumnNumber(source, match.index)
|
|
4102
|
-
});
|
|
4103
|
-
}
|
|
4104
|
-
const defaultRegex = new RegExp(IMPORT_PATTERNS.default.source, "g");
|
|
4105
|
-
while ((match = defaultRegex.exec(source)) !== null) {
|
|
4106
|
-
const [statement, defaultName, specifier] = match;
|
|
4107
|
-
const afterMatch = source.slice(match.index + match[0].length - specifier.length - 2);
|
|
4108
|
-
if (afterMatch.startsWith(",")) continue;
|
|
4109
|
-
addImport({
|
|
4110
|
-
statement,
|
|
4111
|
-
specifier,
|
|
4112
|
-
type: "default",
|
|
4113
|
-
defaultImport: defaultName,
|
|
4114
|
-
line: getLineNumber(source, match.index),
|
|
4115
|
-
column: getColumnNumber(source, match.index)
|
|
4116
|
-
});
|
|
4117
|
-
}
|
|
4118
|
-
const namespaceRegex = new RegExp(IMPORT_PATTERNS.namespace.source, "g");
|
|
4119
|
-
while ((match = namespaceRegex.exec(source)) !== null) {
|
|
4120
|
-
const [statement, namespaceName, specifier] = match;
|
|
4121
|
-
addImport({
|
|
4122
|
-
statement,
|
|
4123
|
-
specifier,
|
|
4124
|
-
type: "namespace",
|
|
4125
|
-
namespaceImport: namespaceName,
|
|
4126
|
-
line: getLineNumber(source, match.index),
|
|
4127
|
-
column: getColumnNumber(source, match.index)
|
|
4128
|
-
});
|
|
4129
|
-
}
|
|
4130
|
-
const sideEffectRegex = new RegExp(IMPORT_PATTERNS.sideEffect.source, "g");
|
|
4131
|
-
while ((match = sideEffectRegex.exec(source)) !== null) {
|
|
4132
|
-
const [statement, specifier] = match;
|
|
4133
|
-
const beforeMatch = source.slice(Math.max(0, match.index - 50), match.index);
|
|
4134
|
-
if (beforeMatch.includes("from")) continue;
|
|
4135
|
-
addImport({
|
|
4136
|
-
statement,
|
|
4137
|
-
specifier,
|
|
4138
|
-
type: "side-effect",
|
|
4139
|
-
line: getLineNumber(source, match.index),
|
|
4140
|
-
column: getColumnNumber(source, match.index)
|
|
4141
|
-
});
|
|
4142
|
-
}
|
|
4143
|
-
const dynamicRegex = new RegExp(IMPORT_PATTERNS.dynamic.source, "g");
|
|
4144
|
-
while ((match = dynamicRegex.exec(source)) !== null) {
|
|
4145
|
-
const [statement, specifier] = match;
|
|
4146
|
-
addImport({
|
|
4147
|
-
statement,
|
|
4148
|
-
specifier,
|
|
4149
|
-
type: "dynamic",
|
|
4150
|
-
line: getLineNumber(source, match.index),
|
|
4151
|
-
column: getColumnNumber(source, match.index)
|
|
4152
|
-
});
|
|
4153
|
-
}
|
|
4154
|
-
const reExportRegex = new RegExp(IMPORT_PATTERNS.reExport.source, "g");
|
|
4155
|
-
while ((match = reExportRegex.exec(source)) !== null) {
|
|
4156
|
-
const [statement, specifier] = match;
|
|
4157
|
-
addImport({
|
|
4158
|
-
statement,
|
|
4159
|
-
specifier,
|
|
4160
|
-
type: "named",
|
|
4161
|
-
line: getLineNumber(source, match.index),
|
|
4162
|
-
column: getColumnNumber(source, match.index)
|
|
4163
|
-
});
|
|
4164
|
-
}
|
|
4165
|
-
const reExportAllRegex = new RegExp(IMPORT_PATTERNS.reExportAll.source, "g");
|
|
4166
|
-
while ((match = reExportAllRegex.exec(source)) !== null) {
|
|
4167
|
-
const [statement, specifier] = match;
|
|
4168
|
-
addImport({
|
|
4169
|
-
statement,
|
|
4170
|
-
specifier,
|
|
4171
|
-
type: "namespace",
|
|
4172
|
-
line: getLineNumber(source, match.index),
|
|
4173
|
-
column: getColumnNumber(source, match.index)
|
|
4174
|
-
});
|
|
4175
|
-
}
|
|
4176
|
-
const externalImports = imports.filter((imp) => isExternalImport(imp.specifier));
|
|
4177
|
-
const relativeImports = imports.filter((imp) => isRelativeImport(imp.specifier));
|
|
4178
|
-
const externalPackages = [...new Set(externalImports.map((imp) => getPackageName(imp.specifier)))];
|
|
4179
|
-
return {
|
|
4180
|
-
imports,
|
|
4181
|
-
externalImports,
|
|
4182
|
-
relativeImports,
|
|
4183
|
-
externalPackages
|
|
4184
|
-
};
|
|
4185
|
-
}
|
|
4186
|
-
|
|
4187
|
-
// libs/ui/src/dependency/import-map.ts
|
|
4188
|
-
function createImportMap(dependencies) {
|
|
4189
|
-
const imports = {};
|
|
4190
|
-
const integrity = {};
|
|
4191
|
-
for (const dep of dependencies) {
|
|
4192
|
-
imports[dep.packageName] = dep.cdnUrl;
|
|
4193
|
-
if (dep.integrity) {
|
|
4194
|
-
integrity[dep.cdnUrl] = dep.integrity;
|
|
4195
|
-
}
|
|
4196
|
-
}
|
|
4197
|
-
return {
|
|
4198
|
-
imports,
|
|
4199
|
-
integrity: Object.keys(integrity).length > 0 ? integrity : void 0
|
|
4200
|
-
};
|
|
4201
|
-
}
|
|
4202
|
-
function generateImportMapScriptTag(map) {
|
|
4203
|
-
const json = JSON.stringify(map, null, 2);
|
|
4204
|
-
return `<script type="importmap">
|
|
4205
|
-
${json}
|
|
4206
|
-
</script>`;
|
|
4207
|
-
}
|
|
4208
|
-
function generateImportMapScriptTagMinified(map) {
|
|
4209
|
-
const json = JSON.stringify(map);
|
|
4210
|
-
return `<script type="importmap">${json}</script>`;
|
|
4211
|
-
}
|
|
4212
|
-
function generateUMDShim(dependencies, options = {}) {
|
|
4213
|
-
const { safe = true, minify = false } = options;
|
|
4214
|
-
const depsWithGlobals = dependencies.filter((d) => d.global && !d.esm);
|
|
4215
|
-
if (depsWithGlobals.length === 0) {
|
|
4216
|
-
return "";
|
|
4217
|
-
}
|
|
4218
|
-
const entries = depsWithGlobals.map((dep) => {
|
|
4219
|
-
const global = dep.global;
|
|
4220
|
-
return `'${dep.packageName}': { default: window.${global}, ...window.${global} }`;
|
|
4221
|
-
});
|
|
4222
|
-
const shimObject = `{
|
|
4223
|
-
${entries.join(",\n ")}
|
|
4224
|
-
}`;
|
|
4225
|
-
const code = safe ? `(function() {
|
|
4226
|
-
try {
|
|
4227
|
-
window.__esm_shim = ${shimObject};
|
|
4228
|
-
} catch (e) {
|
|
4229
|
-
console.warn('UMD shim failed:', e);
|
|
4230
|
-
}
|
|
4231
|
-
})();` : `window.__esm_shim = ${shimObject};`;
|
|
4232
|
-
return minify ? code.replace(/\s+/g, " ").replace(/\s*([{},:])\s*/g, "$1") : code;
|
|
4233
|
-
}
|
|
4234
|
-
function generateCDNScriptTags(dependencies) {
|
|
4235
|
-
return dependencies.filter((dep) => !dep.esm).map((dep) => {
|
|
4236
|
-
const attrs = [`src="${escapeHtmlAttr(dep.cdnUrl)}"`];
|
|
4237
|
-
if (dep.integrity) {
|
|
4238
|
-
attrs.push(`integrity="${escapeHtmlAttr(dep.integrity)}"`);
|
|
4239
|
-
}
|
|
4240
|
-
attrs.push('crossorigin="anonymous"');
|
|
4241
|
-
return `<script ${attrs.join(" ")}></script>`;
|
|
4242
|
-
});
|
|
4243
|
-
}
|
|
4244
|
-
function generateESMScriptTags(dependencies) {
|
|
4245
|
-
return dependencies.filter((dep) => dep.esm).map((dep) => {
|
|
4246
|
-
const attrs = ['type="module"', `src="${escapeHtmlAttr(dep.cdnUrl)}"`];
|
|
4247
|
-
if (dep.integrity) {
|
|
4248
|
-
attrs.push(`integrity="${escapeHtmlAttr(dep.integrity)}"`);
|
|
4249
|
-
}
|
|
4250
|
-
attrs.push('crossorigin="anonymous"');
|
|
4251
|
-
return `<script ${attrs.join(" ")}></script>`;
|
|
4252
|
-
});
|
|
4253
|
-
}
|
|
4254
|
-
function generateDependencyHTML(dependencies, options = {}) {
|
|
4255
|
-
const { minify = false, includeShim = true } = options;
|
|
4256
|
-
const parts = [];
|
|
4257
|
-
const importMap = createImportMap(dependencies);
|
|
4258
|
-
const importMapTag = minify ? generateImportMapScriptTagMinified(importMap) : generateImportMapScriptTag(importMap);
|
|
4259
|
-
parts.push(importMapTag);
|
|
4260
|
-
const umdTags = generateCDNScriptTags(dependencies);
|
|
4261
|
-
parts.push(...umdTags);
|
|
4262
|
-
if (includeShim) {
|
|
4263
|
-
const shim = generateUMDShim(dependencies, { minify });
|
|
4264
|
-
if (shim) {
|
|
4265
|
-
parts.push(`<script>${shim}</script>`);
|
|
4266
|
-
}
|
|
4267
|
-
}
|
|
4268
|
-
const esmTags = generateESMScriptTags(dependencies);
|
|
4269
|
-
parts.push(...esmTags);
|
|
4270
|
-
return parts.join(minify ? "" : "\n");
|
|
4271
|
-
}
|
|
4272
|
-
|
|
4273
|
-
// libs/ui/src/dependency/resolver.ts
|
|
4274
|
-
var DependencyResolutionError = class extends Error {
|
|
4275
|
-
constructor(packageName, reason) {
|
|
4276
|
-
super(`Failed to resolve dependency "${packageName}": ${reason}`);
|
|
4277
|
-
this.packageName = packageName;
|
|
4278
|
-
this.reason = reason;
|
|
4279
|
-
this.name = "DependencyResolutionError";
|
|
4280
|
-
}
|
|
4281
|
-
};
|
|
4282
|
-
var NoProviderError = class extends DependencyResolutionError {
|
|
4283
|
-
constructor(packageName, platform) {
|
|
4284
|
-
super(packageName, `No CDN provider available for platform "${platform}"`);
|
|
4285
|
-
this.platform = platform;
|
|
4286
|
-
this.name = "NoProviderError";
|
|
4287
|
-
}
|
|
4288
|
-
};
|
|
4289
|
-
var DependencyResolver = class {
|
|
4290
|
-
options;
|
|
4291
|
-
registry;
|
|
4292
|
-
constructor(options = {}) {
|
|
4293
|
-
this.options = {
|
|
4294
|
-
platform: options.platform ?? "unknown",
|
|
4295
|
-
preferredProviders: options.preferredProviders ?? CDN_PROVIDER_PRIORITY[options.platform ?? "unknown"],
|
|
4296
|
-
customRegistry: options.customRegistry ?? {},
|
|
4297
|
-
strictMode: options.strictMode ?? true,
|
|
4298
|
-
requireIntegrity: options.requireIntegrity ?? false
|
|
4299
|
-
};
|
|
4300
|
-
this.registry = mergeRegistries(this.options.customRegistry);
|
|
4301
|
-
}
|
|
4302
|
-
/**
|
|
4303
|
-
* Resolve a single package to its CDN dependency.
|
|
4304
|
-
*
|
|
4305
|
-
* @param packageName - NPM package name
|
|
4306
|
-
* @param override - Optional explicit CDN dependency override
|
|
4307
|
-
* @returns Resolved dependency, or null in non-strict mode if package is not found (should be bundled)
|
|
4308
|
-
* @throws DependencyResolutionError if package cannot be resolved in strict mode
|
|
4309
|
-
*/
|
|
4310
|
-
resolve(packageName, override) {
|
|
4311
|
-
if (override) {
|
|
4312
|
-
return this.createResolvedDependency(packageName, override, "custom");
|
|
4313
|
-
}
|
|
4314
|
-
const entry = lookupPackage(packageName, this.registry);
|
|
4315
|
-
if (!entry) {
|
|
4316
|
-
if (this.options.strictMode) {
|
|
4317
|
-
throw new DependencyResolutionError(
|
|
4318
|
-
packageName,
|
|
4319
|
-
'Package not found in CDN registry. Add it to "dependencies" for explicit CDN configuration.'
|
|
4320
|
-
);
|
|
4321
|
-
}
|
|
4322
|
-
return null;
|
|
4323
|
-
}
|
|
4324
|
-
const providerPriority = this.options.preferredProviders;
|
|
4325
|
-
for (const provider of providerPriority) {
|
|
4326
|
-
const config = entry.providers[provider];
|
|
4327
|
-
if (config?.url) {
|
|
4328
|
-
if (this.options.requireIntegrity && !config.integrity) {
|
|
4329
|
-
continue;
|
|
4330
|
-
}
|
|
4331
|
-
return this.createResolvedDependency(packageName, config, provider, entry.defaultVersion);
|
|
4332
|
-
}
|
|
4333
|
-
}
|
|
4334
|
-
throw new NoProviderError(packageName, this.options.platform);
|
|
4335
|
-
}
|
|
4336
|
-
/**
|
|
4337
|
-
* Resolve multiple packages.
|
|
4338
|
-
*
|
|
4339
|
-
* @param packageNames - Array of package names
|
|
4340
|
-
* @param overrides - Optional explicit overrides for specific packages
|
|
4341
|
-
* @returns Array of resolved dependencies (in dependency order)
|
|
4342
|
-
*/
|
|
4343
|
-
resolveMany(packageNames, overrides) {
|
|
4344
|
-
const allPackages = resolveAllDependencies(packageNames, this.options.platform, this.registry);
|
|
4345
|
-
const resolved = [];
|
|
4346
|
-
for (const pkgName of allPackages) {
|
|
4347
|
-
try {
|
|
4348
|
-
const override = overrides?.[pkgName];
|
|
4349
|
-
const dep = this.resolve(pkgName, override);
|
|
4350
|
-
if (dep) {
|
|
4351
|
-
resolved.push(dep);
|
|
4352
|
-
}
|
|
4353
|
-
} catch (error) {
|
|
4354
|
-
if (this.options.strictMode) {
|
|
4355
|
-
throw error;
|
|
4356
|
-
}
|
|
4357
|
-
}
|
|
4358
|
-
}
|
|
4359
|
-
return resolved;
|
|
4360
|
-
}
|
|
4361
|
-
/**
|
|
4362
|
-
* Resolve dependencies from source code.
|
|
4363
|
-
*
|
|
4364
|
-
* Parses the source to extract imports, then resolves external packages
|
|
4365
|
-
* that are in the externals list.
|
|
4366
|
-
*
|
|
4367
|
-
* @param source - Source code to parse
|
|
4368
|
-
* @param externals - Package names to resolve from CDN (others are bundled)
|
|
4369
|
-
* @param overrides - Optional explicit CDN overrides
|
|
4370
|
-
* @returns Resolved dependencies
|
|
4371
|
-
*/
|
|
4372
|
-
resolveFromSource(source, externals, overrides) {
|
|
4373
|
-
const parseResult = parseImports(source);
|
|
4374
|
-
const packagesToResolve = parseResult.externalPackages.filter((pkg) => externals.includes(pkg));
|
|
4375
|
-
return this.resolveMany(packagesToResolve, overrides);
|
|
4376
|
-
}
|
|
4377
|
-
/**
|
|
4378
|
-
* Generate an import map for resolved dependencies.
|
|
4379
|
-
*
|
|
4380
|
-
* @param dependencies - Resolved dependencies
|
|
4381
|
-
* @returns Browser import map
|
|
4382
|
-
*/
|
|
4383
|
-
generateImportMap(dependencies) {
|
|
4384
|
-
return createImportMap(dependencies);
|
|
4385
|
-
}
|
|
4386
|
-
/**
|
|
4387
|
-
* Check if a package can be resolved for the current platform.
|
|
4388
|
-
*
|
|
4389
|
-
* @param packageName - Package name to check
|
|
4390
|
-
* @returns true if the package can be resolved
|
|
4391
|
-
*/
|
|
4392
|
-
canResolve(packageName) {
|
|
4393
|
-
try {
|
|
4394
|
-
const result = this.resolve(packageName);
|
|
4395
|
-
return result !== null;
|
|
4396
|
-
} catch {
|
|
4397
|
-
return false;
|
|
4398
|
-
}
|
|
4399
|
-
}
|
|
4400
|
-
/**
|
|
4401
|
-
* Get the resolved CDN URL for a package.
|
|
4402
|
-
*
|
|
4403
|
-
* @param packageName - Package name
|
|
4404
|
-
* @param override - Optional explicit override
|
|
4405
|
-
* @returns CDN URL or undefined if cannot resolve
|
|
4406
|
-
*/
|
|
4407
|
-
getUrl(packageName, override) {
|
|
4408
|
-
try {
|
|
4409
|
-
const resolved = this.resolve(packageName, override);
|
|
4410
|
-
return resolved?.cdnUrl;
|
|
4411
|
-
} catch {
|
|
4412
|
-
return void 0;
|
|
4413
|
-
}
|
|
4414
|
-
}
|
|
4415
|
-
/**
|
|
4416
|
-
* Get peer dependencies for a package.
|
|
4417
|
-
*/
|
|
4418
|
-
getPeerDependencies(packageName) {
|
|
4419
|
-
return getPackagePeerDependencies(packageName, this.registry);
|
|
4420
|
-
}
|
|
4421
|
-
/**
|
|
4422
|
-
* Create the current registry (default + custom).
|
|
4423
|
-
*/
|
|
4424
|
-
getRegistry() {
|
|
4425
|
-
return this.registry;
|
|
4426
|
-
}
|
|
4427
|
-
/**
|
|
4428
|
-
* Get the current platform.
|
|
4429
|
-
*/
|
|
4430
|
-
getPlatform() {
|
|
4431
|
-
return this.options.platform;
|
|
4432
|
-
}
|
|
4433
|
-
/**
|
|
4434
|
-
* Create a resolved dependency object.
|
|
4435
|
-
*/
|
|
4436
|
-
createResolvedDependency(packageName, config, provider, version) {
|
|
4437
|
-
return {
|
|
4438
|
-
packageName,
|
|
4439
|
-
version: version ?? this.extractVersionFromUrl(config.url) ?? "latest",
|
|
4440
|
-
cdnUrl: config.url,
|
|
4441
|
-
integrity: config.integrity,
|
|
4442
|
-
global: config.global,
|
|
4443
|
-
esm: config.esm ?? false,
|
|
4444
|
-
provider
|
|
4445
|
-
};
|
|
4446
|
-
}
|
|
4447
|
-
/**
|
|
4448
|
-
* Try to extract version from CDN URL.
|
|
4449
|
-
*/
|
|
4450
|
-
extractVersionFromUrl(url) {
|
|
4451
|
-
const versionMatch = url.match(/@(\d+\.\d+\.\d+(?:-[\w.]+)?)/);
|
|
4452
|
-
if (versionMatch) {
|
|
4453
|
-
return versionMatch[1];
|
|
4454
|
-
}
|
|
4455
|
-
const versionMatch2 = url.match(/\/v?(\d+\.\d+\.\d+)\//);
|
|
4456
|
-
if (versionMatch2) {
|
|
4457
|
-
return versionMatch2[1];
|
|
4458
|
-
}
|
|
4459
|
-
return void 0;
|
|
4460
|
-
}
|
|
4461
|
-
};
|
|
4462
|
-
|
|
4463
|
-
// libs/ui/src/bundler/file-cache/component-builder.ts
|
|
3416
|
+
var import_dependency = require("@frontmcp/uipack/dependency");
|
|
4464
3417
|
var ComponentBuilder = class {
|
|
4465
3418
|
storage;
|
|
4466
3419
|
esbuild = null;
|
|
@@ -4505,7 +3458,7 @@ var ComponentBuilder = class {
|
|
|
4505
3458
|
}
|
|
4506
3459
|
}
|
|
4507
3460
|
const source = await (0, import_promises3.readFile)(absoluteEntryPath, "utf8");
|
|
4508
|
-
const resolver = new DependencyResolver({ platform });
|
|
3461
|
+
const resolver = new import_dependency.DependencyResolver({ platform });
|
|
4509
3462
|
const resolvedDeps = [];
|
|
4510
3463
|
for (const pkg of externals) {
|
|
4511
3464
|
try {
|
|
@@ -4540,7 +3493,7 @@ var ComponentBuilder = class {
|
|
|
4540
3493
|
}
|
|
4541
3494
|
}
|
|
4542
3495
|
}
|
|
4543
|
-
const importMap = createImportMap(resolvedDeps);
|
|
3496
|
+
const importMap = (0, import_dependency.createImportMap)(resolvedDeps);
|
|
4544
3497
|
const bundleResult = await this.bundleComponent({
|
|
4545
3498
|
source,
|
|
4546
3499
|
entryPath: absoluteEntryPath,
|
|
@@ -4622,7 +3575,7 @@ var ComponentBuilder = class {
|
|
|
4622
3575
|
*/
|
|
4623
3576
|
generateHTML(manifest, minify = false) {
|
|
4624
3577
|
const parts = [];
|
|
4625
|
-
const dependencyHtml = generateDependencyHTML(manifest.dependencies, { minify });
|
|
3578
|
+
const dependencyHtml = (0, import_dependency.generateDependencyHTML)(manifest.dependencies, { minify });
|
|
4626
3579
|
parts.push(dependencyHtml);
|
|
4627
3580
|
parts.push(`<script type="module">${manifest.outputs.code}</script>`);
|
|
4628
3581
|
return parts.join(minify ? "" : "\n");
|