@frontmcp/ui 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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/adapters/base-adapter.d.ts +104 -0
- package/bridge/adapters/base-adapter.d.ts.map +1 -0
- package/bridge/adapters/claude.adapter.d.ts +67 -0
- package/bridge/adapters/claude.adapter.d.ts.map +1 -0
- package/bridge/adapters/ext-apps.adapter.d.ts +143 -0
- package/bridge/adapters/ext-apps.adapter.d.ts.map +1 -0
- package/bridge/adapters/gemini.adapter.d.ts +64 -0
- package/bridge/adapters/gemini.adapter.d.ts.map +1 -0
- package/bridge/adapters/generic.adapter.d.ts +56 -0
- package/bridge/adapters/generic.adapter.d.ts.map +1 -0
- package/bridge/adapters/index.d.ts +26 -0
- package/bridge/adapters/index.d.ts.map +1 -0
- package/bridge/adapters/openai.adapter.d.ts +65 -0
- package/bridge/adapters/openai.adapter.d.ts.map +1 -0
- package/bridge/core/adapter-registry.d.ts +122 -0
- package/bridge/core/adapter-registry.d.ts.map +1 -0
- package/bridge/core/bridge-factory.d.ts +199 -0
- package/bridge/core/bridge-factory.d.ts.map +1 -0
- package/bridge/core/index.d.ts +10 -0
- package/bridge/core/index.d.ts.map +1 -0
- package/bridge/index.d.ts +62 -0
- package/bridge/index.d.ts.map +1 -0
- package/bridge/index.js +2540 -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 +9 -0
- package/bridge/runtime/index.d.ts.map +1 -0
- package/bridge/types.d.ts +386 -0
- package/bridge/types.d.ts.map +1 -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 +7096 -0
- package/build/widget-manifest.d.ts +362 -0
- package/build/widget-manifest.d.ts.map +1 -0
- package/bundler/bundler.d.ts +208 -0
- package/bundler/bundler.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 +43 -0
- package/bundler/index.d.ts.map +1 -0
- package/bundler/index.js +4754 -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/components/alert.d.ts +66 -0
- package/components/alert.d.ts.map +1 -0
- package/components/alert.schema.d.ts +98 -0
- package/components/alert.schema.d.ts.map +1 -0
- package/components/avatar.d.ts +77 -0
- package/components/avatar.d.ts.map +1 -0
- package/components/avatar.schema.d.ts +170 -0
- package/components/avatar.schema.d.ts.map +1 -0
- package/components/badge.d.ts +64 -0
- package/components/badge.d.ts.map +1 -0
- package/components/badge.schema.d.ts +91 -0
- package/components/badge.schema.d.ts.map +1 -0
- package/components/button.d.ts +100 -0
- package/components/button.d.ts.map +1 -0
- package/components/button.schema.d.ts +120 -0
- package/components/button.schema.d.ts.map +1 -0
- package/components/card.d.ts +53 -0
- package/components/card.d.ts.map +1 -0
- package/components/card.schema.d.ts +93 -0
- package/components/card.schema.d.ts.map +1 -0
- package/components/form.d.ts +212 -0
- package/components/form.d.ts.map +1 -0
- package/components/form.schema.d.ts +365 -0
- package/components/form.schema.d.ts.map +1 -0
- package/components/index.d.ts +29 -0
- package/components/index.d.ts.map +1 -0
- package/components/index.js +2595 -0
- package/components/list.d.ts +121 -0
- package/components/list.d.ts.map +1 -0
- package/components/list.schema.d.ts +129 -0
- package/components/list.schema.d.ts.map +1 -0
- package/components/modal.d.ts +100 -0
- package/components/modal.d.ts.map +1 -0
- package/components/modal.schema.d.ts +151 -0
- package/components/modal.schema.d.ts.map +1 -0
- package/components/table.d.ts +91 -0
- package/components/table.d.ts.map +1 -0
- package/components/table.schema.d.ts +123 -0
- package/components/table.schema.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/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/adapters/base-adapter.d.ts +104 -0
- package/esm/bridge/adapters/base-adapter.d.ts.map +1 -0
- package/esm/bridge/adapters/claude.adapter.d.ts +67 -0
- package/esm/bridge/adapters/claude.adapter.d.ts.map +1 -0
- package/esm/bridge/adapters/ext-apps.adapter.d.ts +143 -0
- package/esm/bridge/adapters/ext-apps.adapter.d.ts.map +1 -0
- package/esm/bridge/adapters/gemini.adapter.d.ts +64 -0
- package/esm/bridge/adapters/gemini.adapter.d.ts.map +1 -0
- package/esm/bridge/adapters/generic.adapter.d.ts +56 -0
- package/esm/bridge/adapters/generic.adapter.d.ts.map +1 -0
- package/esm/bridge/adapters/index.d.ts +26 -0
- package/esm/bridge/adapters/index.d.ts.map +1 -0
- package/esm/bridge/adapters/openai.adapter.d.ts +65 -0
- package/esm/bridge/adapters/openai.adapter.d.ts.map +1 -0
- package/esm/bridge/core/adapter-registry.d.ts +122 -0
- package/esm/bridge/core/adapter-registry.d.ts.map +1 -0
- package/esm/bridge/core/bridge-factory.d.ts +199 -0
- package/esm/bridge/core/bridge-factory.d.ts.map +1 -0
- package/esm/bridge/core/index.d.ts +10 -0
- package/esm/bridge/core/index.d.ts.map +1 -0
- package/esm/bridge/index.d.ts +62 -0
- package/esm/bridge/index.d.ts.map +1 -0
- package/esm/bridge/index.js +2487 -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 +9 -0
- package/esm/bridge/runtime/index.d.ts.map +1 -0
- package/esm/bridge/types.d.ts +386 -0
- package/esm/bridge/types.d.ts.map +1 -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 +7021 -0
- package/esm/build/widget-manifest.d.ts +362 -0
- package/esm/build/widget-manifest.d.ts.map +1 -0
- package/esm/bundler/bundler.d.ts +208 -0
- package/esm/bundler/bundler.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 +43 -0
- package/esm/bundler/index.d.ts.map +1 -0
- package/esm/bundler/index.js +4687 -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/components/alert.d.ts +66 -0
- package/esm/components/alert.d.ts.map +1 -0
- package/esm/components/alert.schema.d.ts +98 -0
- package/esm/components/alert.schema.d.ts.map +1 -0
- package/esm/components/avatar.d.ts +77 -0
- package/esm/components/avatar.d.ts.map +1 -0
- package/esm/components/avatar.schema.d.ts +170 -0
- package/esm/components/avatar.schema.d.ts.map +1 -0
- package/esm/components/badge.d.ts +64 -0
- package/esm/components/badge.d.ts.map +1 -0
- package/esm/components/badge.schema.d.ts +91 -0
- package/esm/components/badge.schema.d.ts.map +1 -0
- package/esm/components/button.d.ts +100 -0
- package/esm/components/button.d.ts.map +1 -0
- package/esm/components/button.schema.d.ts +120 -0
- package/esm/components/button.schema.d.ts.map +1 -0
- package/esm/components/card.d.ts +53 -0
- package/esm/components/card.d.ts.map +1 -0
- package/esm/components/card.schema.d.ts +93 -0
- package/esm/components/card.schema.d.ts.map +1 -0
- package/esm/components/form.d.ts +212 -0
- package/esm/components/form.d.ts.map +1 -0
- package/esm/components/form.schema.d.ts +365 -0
- package/esm/components/form.schema.d.ts.map +1 -0
- package/esm/components/index.d.ts +29 -0
- package/esm/components/index.d.ts.map +1 -0
- package/esm/components/index.js +2456 -0
- package/esm/components/list.d.ts +121 -0
- package/esm/components/list.d.ts.map +1 -0
- package/esm/components/list.schema.d.ts +129 -0
- package/esm/components/list.schema.d.ts.map +1 -0
- package/esm/components/modal.d.ts +100 -0
- package/esm/components/modal.d.ts.map +1 -0
- package/esm/components/modal.schema.d.ts +151 -0
- package/esm/components/modal.schema.d.ts.map +1 -0
- package/esm/components/table.d.ts +91 -0
- package/esm/components/table.d.ts.map +1 -0
- package/esm/components/table.schema.d.ts +123 -0
- package/esm/components/table.schema.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/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 +56 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +20511 -0
- package/esm/layouts/base.d.ts +86 -0
- package/esm/layouts/base.d.ts.map +1 -0
- package/esm/layouts/index.d.ts +8 -0
- package/esm/layouts/index.d.ts.map +1 -0
- package/esm/layouts/index.js +892 -0
- package/esm/layouts/presets.d.ts +134 -0
- package/esm/layouts/presets.d.ts.map +1 -0
- package/esm/package.json +90 -0
- package/esm/pages/consent.d.ts +117 -0
- package/esm/pages/consent.d.ts.map +1 -0
- package/esm/pages/error.d.ts +101 -0
- package/esm/pages/error.d.ts.map +1 -0
- package/esm/pages/index.d.ts +9 -0
- package/esm/pages/index.d.ts.map +1 -0
- package/esm/pages/index.js +1563 -0
- package/esm/react/Alert.d.ts +102 -0
- package/esm/react/Alert.d.ts.map +1 -0
- package/esm/react/Badge.d.ts +101 -0
- package/esm/react/Badge.d.ts.map +1 -0
- package/esm/react/Button.d.ts +109 -0
- package/esm/react/Button.d.ts.map +1 -0
- package/esm/react/Card.d.ts +104 -0
- package/esm/react/Card.d.ts.map +1 -0
- package/esm/react/hooks/context.d.ts +179 -0
- package/esm/react/hooks/context.d.ts.map +1 -0
- package/esm/react/hooks/index.d.ts +42 -0
- package/esm/react/hooks/index.d.ts.map +1 -0
- package/esm/react/hooks/tools.d.ts +284 -0
- package/esm/react/hooks/tools.d.ts.map +1 -0
- package/esm/react/index.d.ts +81 -0
- package/esm/react/index.d.ts.map +1 -0
- package/esm/react/index.js +1372 -0
- package/esm/react/types.d.ts +106 -0
- package/esm/react/types.d.ts.map +1 -0
- package/esm/react/utils.d.ts +43 -0
- package/esm/react/utils.d.ts.map +1 -0
- package/esm/registry/index.d.ts +46 -0
- package/esm/registry/index.d.ts.map +1 -0
- package/esm/registry/index.js +6422 -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/render/index.d.ts +8 -0
- package/esm/render/index.d.ts.map +1 -0
- package/esm/render/index.js +45 -0
- package/esm/render/prerender.d.ts +57 -0
- package/esm/render/prerender.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 +1827 -0
- package/esm/renderers/mdx.renderer.d.ts +120 -0
- package/esm/renderers/mdx.renderer.d.ts.map +1 -0
- package/esm/renderers/react.renderer.d.ts +96 -0
- package/esm/renderers/react.renderer.d.ts.map +1 -0
- package/esm/renderers/registry.d.ts +134 -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/react.adapter.d.ts +70 -0
- package/esm/runtime/adapters/react.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 +5186 -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 +3515 -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 +639 -0
- package/esm/types/ui-config.d.ts.map +1 -0
- package/esm/types/ui-runtime.d.ts +1007 -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/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/universal/UniversalApp.d.ts +108 -0
- package/esm/universal/UniversalApp.d.ts.map +1 -0
- package/esm/universal/cached-runtime.d.ts +115 -0
- package/esm/universal/cached-runtime.d.ts.map +1 -0
- package/esm/universal/context.d.ts +122 -0
- package/esm/universal/context.d.ts.map +1 -0
- package/esm/universal/index.d.ts +57 -0
- package/esm/universal/index.d.ts.map +1 -0
- package/esm/universal/renderers/html.renderer.d.ts +37 -0
- package/esm/universal/renderers/html.renderer.d.ts.map +1 -0
- package/esm/universal/renderers/index.d.ts +112 -0
- package/esm/universal/renderers/index.d.ts.map +1 -0
- package/esm/universal/renderers/markdown.renderer.d.ts +33 -0
- package/esm/universal/renderers/markdown.renderer.d.ts.map +1 -0
- package/esm/universal/renderers/mdx.renderer.d.ts +38 -0
- package/esm/universal/renderers/mdx.renderer.d.ts.map +1 -0
- package/esm/universal/renderers/react.renderer.d.ts +46 -0
- package/esm/universal/renderers/react.renderer.d.ts.map +1 -0
- package/esm/universal/runtime-builder.d.ts +33 -0
- package/esm/universal/runtime-builder.d.ts.map +1 -0
- package/esm/universal/store.d.ts +135 -0
- package/esm/universal/store.d.ts.map +1 -0
- package/esm/universal/types.d.ts +199 -0
- package/esm/universal/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 +562 -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/esm/web-components/core/attribute-parser.d.ts +82 -0
- package/esm/web-components/core/attribute-parser.d.ts.map +1 -0
- package/esm/web-components/core/base-element.d.ts +197 -0
- package/esm/web-components/core/base-element.d.ts.map +1 -0
- package/esm/web-components/core/index.d.ts +9 -0
- package/esm/web-components/core/index.d.ts.map +1 -0
- package/esm/web-components/elements/fmcp-alert.d.ts +46 -0
- package/esm/web-components/elements/fmcp-alert.d.ts.map +1 -0
- package/esm/web-components/elements/fmcp-badge.d.ts +47 -0
- package/esm/web-components/elements/fmcp-badge.d.ts.map +1 -0
- package/esm/web-components/elements/fmcp-button.d.ts +117 -0
- package/esm/web-components/elements/fmcp-button.d.ts.map +1 -0
- package/esm/web-components/elements/fmcp-card.d.ts +53 -0
- package/esm/web-components/elements/fmcp-card.d.ts.map +1 -0
- package/esm/web-components/elements/fmcp-input.d.ts +96 -0
- package/esm/web-components/elements/fmcp-input.d.ts.map +1 -0
- package/esm/web-components/elements/fmcp-select.d.ts +100 -0
- package/esm/web-components/elements/fmcp-select.d.ts.map +1 -0
- package/esm/web-components/elements/index.d.ts +13 -0
- package/esm/web-components/elements/index.d.ts.map +1 -0
- package/esm/web-components/index.d.ts +50 -0
- package/esm/web-components/index.d.ts.map +1 -0
- package/esm/web-components/index.js +2048 -0
- package/esm/web-components/register.d.ts +57 -0
- package/esm/web-components/register.d.ts.map +1 -0
- package/esm/web-components/types.d.ts +122 -0
- package/esm/web-components/types.d.ts.map +1 -0
- package/esm/widgets/index.d.ts +8 -0
- package/esm/widgets/index.d.ts.map +1 -0
- package/esm/widgets/index.js +941 -0
- package/esm/widgets/progress.d.ts +133 -0
- package/esm/widgets/progress.d.ts.map +1 -0
- package/esm/widgets/resource.d.ts +163 -0
- package/esm/widgets/resource.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 +56 -0
- package/index.d.ts.map +1 -0
- package/index.js +20942 -0
- package/layouts/base.d.ts +86 -0
- package/layouts/base.d.ts.map +1 -0
- package/layouts/index.d.ts +8 -0
- package/layouts/index.d.ts.map +1 -0
- package/layouts/index.js +930 -0
- package/layouts/presets.d.ts +134 -0
- package/layouts/presets.d.ts.map +1 -0
- package/package.json +28 -87
- package/pages/consent.d.ts +117 -0
- package/pages/consent.d.ts.map +1 -0
- package/pages/error.d.ts +101 -0
- package/pages/error.d.ts.map +1 -0
- package/pages/index.d.ts +9 -0
- package/pages/index.d.ts.map +1 -0
- package/pages/index.js +1602 -0
- package/react/Alert.d.ts +102 -0
- package/react/Alert.d.ts.map +1 -0
- package/react/Badge.d.ts +101 -0
- package/react/Badge.d.ts.map +1 -0
- package/react/Button.d.ts +109 -0
- package/react/Button.d.ts.map +1 -0
- package/react/Card.d.ts +104 -0
- package/react/Card.d.ts.map +1 -0
- package/react/hooks/context.d.ts +179 -0
- package/react/hooks/context.d.ts.map +1 -0
- package/react/hooks/index.d.ts +42 -0
- package/react/hooks/index.d.ts.map +1 -0
- package/react/hooks/tools.d.ts +284 -0
- package/react/hooks/tools.d.ts.map +1 -0
- package/react/index.d.ts +81 -0
- package/react/index.d.ts.map +1 -0
- package/react/index.js +1430 -0
- package/react/types.d.ts +106 -0
- package/react/types.d.ts.map +1 -0
- package/react/utils.d.ts +43 -0
- package/react/utils.d.ts.map +1 -0
- package/registry/index.d.ts +46 -0
- package/registry/index.d.ts.map +1 -0
- package/registry/index.js +6465 -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/render/index.d.ts +8 -0
- package/render/index.d.ts.map +1 -0
- package/render/index.js +77 -0
- package/render/prerender.d.ts +57 -0
- package/render/prerender.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 +1882 -0
- package/renderers/mdx.renderer.d.ts +120 -0
- package/renderers/mdx.renderer.d.ts.map +1 -0
- package/renderers/react.renderer.d.ts +96 -0
- package/renderers/react.renderer.d.ts.map +1 -0
- package/renderers/registry.d.ts +134 -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/react.adapter.d.ts +70 -0
- package/runtime/adapters/react.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 +5264 -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 +3559 -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 +639 -0
- package/types/ui-config.d.ts.map +1 -0
- package/types/ui-runtime.d.ts +1007 -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/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/universal/UniversalApp.d.ts +108 -0
- package/universal/UniversalApp.d.ts.map +1 -0
- package/universal/cached-runtime.d.ts +115 -0
- package/universal/cached-runtime.d.ts.map +1 -0
- package/universal/context.d.ts +122 -0
- package/universal/context.d.ts.map +1 -0
- package/universal/index.d.ts +57 -0
- package/universal/index.d.ts.map +1 -0
- package/universal/renderers/html.renderer.d.ts +37 -0
- package/universal/renderers/html.renderer.d.ts.map +1 -0
- package/universal/renderers/index.d.ts +112 -0
- package/universal/renderers/index.d.ts.map +1 -0
- package/universal/renderers/markdown.renderer.d.ts +33 -0
- package/universal/renderers/markdown.renderer.d.ts.map +1 -0
- package/universal/renderers/mdx.renderer.d.ts +38 -0
- package/universal/renderers/mdx.renderer.d.ts.map +1 -0
- package/universal/renderers/react.renderer.d.ts +46 -0
- package/universal/renderers/react.renderer.d.ts.map +1 -0
- package/universal/runtime-builder.d.ts +33 -0
- package/universal/runtime-builder.d.ts.map +1 -0
- package/universal/store.d.ts +135 -0
- package/universal/store.d.ts.map +1 -0
- package/universal/types.d.ts +199 -0
- package/universal/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 +603 -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
- package/web-components/core/attribute-parser.d.ts +82 -0
- package/web-components/core/attribute-parser.d.ts.map +1 -0
- package/web-components/core/base-element.d.ts +197 -0
- package/web-components/core/base-element.d.ts.map +1 -0
- package/web-components/core/index.d.ts +9 -0
- package/web-components/core/index.d.ts.map +1 -0
- package/web-components/elements/fmcp-alert.d.ts +46 -0
- package/web-components/elements/fmcp-alert.d.ts.map +1 -0
- package/web-components/elements/fmcp-badge.d.ts +47 -0
- package/web-components/elements/fmcp-badge.d.ts.map +1 -0
- package/web-components/elements/fmcp-button.d.ts +117 -0
- package/web-components/elements/fmcp-button.d.ts.map +1 -0
- package/web-components/elements/fmcp-card.d.ts +53 -0
- package/web-components/elements/fmcp-card.d.ts.map +1 -0
- package/web-components/elements/fmcp-input.d.ts +96 -0
- package/web-components/elements/fmcp-input.d.ts.map +1 -0
- package/web-components/elements/fmcp-select.d.ts +100 -0
- package/web-components/elements/fmcp-select.d.ts.map +1 -0
- package/web-components/elements/index.d.ts +13 -0
- package/web-components/elements/index.d.ts.map +1 -0
- package/web-components/index.d.ts +50 -0
- package/web-components/index.d.ts.map +1 -0
- package/web-components/index.js +2093 -0
- package/web-components/register.d.ts +57 -0
- package/web-components/register.d.ts.map +1 -0
- package/web-components/types.d.ts +122 -0
- package/web-components/types.d.ts.map +1 -0
- package/widgets/index.d.ts +8 -0
- package/widgets/index.d.ts.map +1 -0
- package/widgets/index.js +978 -0
- package/widgets/progress.d.ts +133 -0
- package/widgets/progress.d.ts.map +1 -0
- package/widgets/resource.d.ts +163 -0
- package/widgets/resource.d.ts.map +1 -0
- package/src/adapters/index.d.ts +0 -10
- package/src/adapters/index.js +0 -18
- package/src/adapters/index.js.map +0 -1
- package/src/adapters/platform-meta.d.ts +0 -165
- package/src/adapters/platform-meta.js +0 -310
- package/src/adapters/platform-meta.js.map +0 -1
- package/src/base-template/bridge.d.ts +0 -89
- package/src/base-template/bridge.js +0 -452
- package/src/base-template/bridge.js.map +0 -1
- package/src/base-template/default-base-template.d.ts +0 -91
- package/src/base-template/default-base-template.js +0 -435
- package/src/base-template/default-base-template.js.map +0 -1
- package/src/base-template/index.d.ts +0 -14
- package/src/base-template/index.js +0 -30
- package/src/base-template/index.js.map +0 -1
- package/src/base-template/polyfills.d.ts +0 -30
- package/src/base-template/polyfills.js +0 -190
- package/src/base-template/polyfills.js.map +0 -1
- package/src/base-template/theme-styles.d.ts +0 -73
- package/src/base-template/theme-styles.js +0 -95
- package/src/base-template/theme-styles.js.map +0 -1
- package/src/bridge/adapters/base-adapter.d.ts +0 -103
- package/src/bridge/adapters/base-adapter.js +0 -314
- package/src/bridge/adapters/base-adapter.js.map +0 -1
- package/src/bridge/adapters/claude.adapter.d.ts +0 -66
- package/src/bridge/adapters/claude.adapter.js +0 -145
- package/src/bridge/adapters/claude.adapter.js.map +0 -1
- package/src/bridge/adapters/ext-apps.adapter.d.ts +0 -142
- package/src/bridge/adapters/ext-apps.adapter.js +0 -416
- package/src/bridge/adapters/ext-apps.adapter.js.map +0 -1
- package/src/bridge/adapters/gemini.adapter.d.ts +0 -63
- package/src/bridge/adapters/gemini.adapter.js +0 -160
- package/src/bridge/adapters/gemini.adapter.js.map +0 -1
- package/src/bridge/adapters/generic.adapter.d.ts +0 -55
- package/src/bridge/adapters/generic.adapter.js +0 -108
- package/src/bridge/adapters/generic.adapter.js.map +0 -1
- package/src/bridge/adapters/index.d.ts +0 -25
- package/src/bridge/adapters/index.js +0 -65
- package/src/bridge/adapters/index.js.map +0 -1
- package/src/bridge/adapters/openai.adapter.d.ts +0 -64
- package/src/bridge/adapters/openai.adapter.js +0 -194
- package/src/bridge/adapters/openai.adapter.js.map +0 -1
- package/src/bridge/core/adapter-registry.d.ts +0 -121
- package/src/bridge/core/adapter-registry.js +0 -271
- package/src/bridge/core/adapter-registry.js.map +0 -1
- package/src/bridge/core/bridge-factory.d.ts +0 -198
- package/src/bridge/core/bridge-factory.js +0 -428
- package/src/bridge/core/bridge-factory.js.map +0 -1
- package/src/bridge/core/index.d.ts +0 -9
- package/src/bridge/core/index.js +0 -22
- package/src/bridge/core/index.js.map +0 -1
- package/src/bridge/index.d.ts +0 -61
- package/src/bridge/index.js +0 -94
- package/src/bridge/index.js.map +0 -1
- package/src/bridge/runtime/iife-generator.d.ts +0 -61
- package/src/bridge/runtime/iife-generator.js +0 -940
- package/src/bridge/runtime/iife-generator.js.map +0 -1
- package/src/bridge/runtime/index.d.ts +0 -8
- package/src/bridge/runtime/index.js +0 -16
- package/src/bridge/runtime/index.js.map +0 -1
- package/src/bridge/types.d.ts +0 -385
- package/src/bridge/types.js +0 -11
- package/src/bridge/types.js.map +0 -1
- package/src/build/cdn-resources.d.ts +0 -140
- package/src/build/cdn-resources.js +0 -314
- package/src/build/cdn-resources.js.map +0 -1
- package/src/build/index.d.ts +0 -294
- package/src/build/index.js +0 -325
- package/src/build/index.js.map +0 -1
- package/src/build/widget-manifest.d.ts +0 -212
- package/src/build/widget-manifest.js +0 -652
- package/src/build/widget-manifest.js.map +0 -1
- package/src/bundler/bundler.d.ts +0 -110
- package/src/bundler/bundler.js +0 -432
- package/src/bundler/bundler.js.map +0 -1
- package/src/bundler/cache.d.ts +0 -172
- package/src/bundler/cache.js +0 -250
- package/src/bundler/cache.js.map +0 -1
- package/src/bundler/index.d.ts +0 -41
- package/src/bundler/index.js +0 -73
- package/src/bundler/index.js.map +0 -1
- package/src/bundler/sandbox/enclave-adapter.d.ts +0 -120
- package/src/bundler/sandbox/enclave-adapter.js +0 -339
- package/src/bundler/sandbox/enclave-adapter.js.map +0 -1
- package/src/bundler/sandbox/executor.d.ts +0 -13
- package/src/bundler/sandbox/executor.js +0 -22
- package/src/bundler/sandbox/executor.js.map +0 -1
- package/src/bundler/sandbox/policy.d.ts +0 -61
- package/src/bundler/sandbox/policy.js +0 -238
- package/src/bundler/sandbox/policy.js.map +0 -1
- package/src/bundler/types.d.ts +0 -347
- package/src/bundler/types.js +0 -132
- package/src/bundler/types.js.map +0 -1
- package/src/components/alert.d.ts +0 -71
- package/src/components/alert.js +0 -189
- package/src/components/alert.js.map +0 -1
- package/src/components/alert.schema.d.ts +0 -114
- package/src/components/alert.schema.js +0 -105
- package/src/components/alert.schema.js.map +0 -1
- package/src/components/avatar.d.ts +0 -76
- package/src/components/avatar.js +0 -176
- package/src/components/avatar.js.map +0 -1
- package/src/components/avatar.schema.d.ts +0 -169
- package/src/components/avatar.schema.js +0 -103
- package/src/components/avatar.schema.js.map +0 -1
- package/src/components/badge.d.ts +0 -70
- package/src/components/badge.js +0 -149
- package/src/components/badge.js.map +0 -1
- package/src/components/badge.schema.d.ts +0 -109
- package/src/components/badge.schema.js +0 -96
- package/src/components/badge.schema.js.map +0 -1
- package/src/components/button.d.ts +0 -111
- package/src/components/button.js +0 -336
- package/src/components/button.js.map +0 -1
- package/src/components/button.schema.d.ts +0 -148
- package/src/components/button.schema.js +0 -121
- package/src/components/button.schema.js.map +0 -1
- package/src/components/card.d.ts +0 -60
- package/src/components/card.js +0 -117
- package/src/components/card.js.map +0 -1
- package/src/components/card.schema.d.ts +0 -113
- package/src/components/card.schema.js +0 -98
- package/src/components/card.schema.js.map +0 -1
- package/src/components/form.d.ts +0 -239
- package/src/components/form.js +0 -420
- package/src/components/form.js.map +0 -1
- package/src/components/form.schema.d.ts +0 -441
- package/src/components/form.schema.js +0 -406
- package/src/components/form.schema.js.map +0 -1
- package/src/components/index.d.ts +0 -29
- package/src/components/index.js +0 -98
- package/src/components/index.js.map +0 -1
- package/src/components/list.d.ts +0 -127
- package/src/components/list.js +0 -279
- package/src/components/list.js.map +0 -1
- package/src/components/list.schema.d.ts +0 -134
- package/src/components/list.schema.js +0 -168
- package/src/components/list.schema.js.map +0 -1
- package/src/components/modal.d.ts +0 -111
- package/src/components/modal.js +0 -260
- package/src/components/modal.js.map +0 -1
- package/src/components/modal.schema.d.ts +0 -186
- package/src/components/modal.schema.js +0 -167
- package/src/components/modal.schema.js.map +0 -1
- package/src/components/table.d.ts +0 -105
- package/src/components/table.js +0 -283
- package/src/components/table.js.map +0 -1
- package/src/components/table.schema.d.ts +0 -159
- package/src/components/table.schema.js +0 -173
- package/src/components/table.schema.js.map +0 -1
- package/src/handlebars/helpers.d.ts +0 -348
- package/src/handlebars/helpers.js +0 -605
- package/src/handlebars/helpers.js.map +0 -1
- package/src/handlebars/index.d.ts +0 -193
- package/src/handlebars/index.js +0 -350
- package/src/handlebars/index.js.map +0 -1
- package/src/index.d.ts +0 -50
- package/src/index.js +0 -192
- package/src/index.js.map +0 -1
- package/src/layouts/base.d.ts +0 -88
- package/src/layouts/base.js +0 -227
- package/src/layouts/base.js.map +0 -1
- package/src/layouts/index.d.ts +0 -7
- package/src/layouts/index.js +0 -25
- package/src/layouts/index.js.map +0 -1
- package/src/layouts/presets.d.ts +0 -133
- package/src/layouts/presets.js +0 -277
- package/src/layouts/presets.js.map +0 -1
- package/src/pages/consent.d.ts +0 -116
- package/src/pages/consent.js +0 -218
- package/src/pages/consent.js.map +0 -1
- package/src/pages/error.d.ts +0 -100
- package/src/pages/error.js +0 -263
- package/src/pages/error.js.map +0 -1
- package/src/pages/index.d.ts +0 -8
- package/src/pages/index.js +0 -27
- package/src/pages/index.js.map +0 -1
- package/src/react/Alert.d.ts +0 -101
- package/src/react/Alert.js +0 -51
- package/src/react/Alert.js.map +0 -1
- package/src/react/Badge.d.ts +0 -100
- package/src/react/Badge.js +0 -55
- package/src/react/Badge.js.map +0 -1
- package/src/react/Button.d.ts +0 -108
- package/src/react/Button.js +0 -52
- package/src/react/Button.js.map +0 -1
- package/src/react/Card.d.ts +0 -103
- package/src/react/Card.js +0 -55
- package/src/react/Card.js.map +0 -1
- package/src/react/hooks/context.d.ts +0 -178
- package/src/react/hooks/context.js +0 -287
- package/src/react/hooks/context.js.map +0 -1
- package/src/react/hooks/index.d.ts +0 -41
- package/src/react/hooks/index.js +0 -61
- package/src/react/hooks/index.js.map +0 -1
- package/src/react/hooks/tools.d.ts +0 -283
- package/src/react/hooks/tools.js +0 -465
- package/src/react/hooks/tools.js.map +0 -1
- package/src/react/index.d.ts +0 -80
- package/src/react/index.js +0 -113
- package/src/react/index.js.map +0 -1
- package/src/react/types.d.ts +0 -105
- package/src/react/types.js +0 -12
- package/src/react/types.js.map +0 -1
- package/src/react/utils.d.ts +0 -42
- package/src/react/utils.js +0 -99
- package/src/react/utils.js.map +0 -1
- package/src/registry/index.d.ts +0 -45
- package/src/registry/index.js +0 -67
- package/src/registry/index.js.map +0 -1
- package/src/registry/render-template.d.ts +0 -86
- package/src/registry/render-template.js +0 -239
- package/src/registry/render-template.js.map +0 -1
- package/src/registry/tool-ui.registry.d.ts +0 -260
- package/src/registry/tool-ui.registry.js +0 -438
- package/src/registry/tool-ui.registry.js.map +0 -1
- package/src/registry/uri-utils.d.ts +0 -55
- package/src/registry/uri-utils.js +0 -97
- package/src/registry/uri-utils.js.map +0 -1
- package/src/render/index.d.ts +0 -7
- package/src/render/index.js +0 -14
- package/src/render/index.js.map +0 -1
- package/src/render/prerender.d.ts +0 -56
- package/src/render/prerender.js +0 -98
- package/src/render/prerender.js.map +0 -1
- package/src/renderers/cache.d.ts +0 -144
- package/src/renderers/cache.js +0 -240
- package/src/renderers/cache.js.map +0 -1
- package/src/renderers/html.renderer.d.ts +0 -122
- package/src/renderers/html.renderer.js +0 -204
- package/src/renderers/html.renderer.js.map +0 -1
- package/src/renderers/index.d.ts +0 -35
- package/src/renderers/index.js +0 -70
- package/src/renderers/index.js.map +0 -1
- package/src/renderers/mdx.renderer.d.ts +0 -119
- package/src/renderers/mdx.renderer.js +0 -305
- package/src/renderers/mdx.renderer.js.map +0 -1
- package/src/renderers/react.renderer.d.ts +0 -95
- package/src/renderers/react.renderer.js +0 -260
- package/src/renderers/react.renderer.js.map +0 -1
- package/src/renderers/registry.d.ts +0 -133
- package/src/renderers/registry.js +0 -232
- package/src/renderers/registry.js.map +0 -1
- package/src/renderers/types.d.ts +0 -341
- package/src/renderers/types.js +0 -9
- package/src/renderers/types.js.map +0 -1
- package/src/renderers/utils/detect.d.ts +0 -106
- package/src/renderers/utils/detect.js +0 -267
- package/src/renderers/utils/detect.js.map +0 -1
- package/src/renderers/utils/hash.d.ts +0 -39
- package/src/renderers/utils/hash.js +0 -75
- package/src/renderers/utils/hash.js.map +0 -1
- package/src/renderers/utils/index.d.ts +0 -8
- package/src/renderers/utils/index.js +0 -28
- package/src/renderers/utils/index.js.map +0 -1
- package/src/renderers/utils/transpiler.d.ts +0 -88
- package/src/renderers/utils/transpiler.js +0 -215
- package/src/renderers/utils/transpiler.js.map +0 -1
- package/src/runtime/adapters/html.adapter.d.ts +0 -58
- package/src/runtime/adapters/html.adapter.js +0 -131
- package/src/runtime/adapters/html.adapter.js.map +0 -1
- package/src/runtime/adapters/index.d.ts +0 -25
- package/src/runtime/adapters/index.js +0 -54
- package/src/runtime/adapters/index.js.map +0 -1
- package/src/runtime/adapters/mdx.adapter.d.ts +0 -72
- package/src/runtime/adapters/mdx.adapter.js +0 -241
- package/src/runtime/adapters/mdx.adapter.js.map +0 -1
- package/src/runtime/adapters/react.adapter.d.ts +0 -69
- package/src/runtime/adapters/react.adapter.js +0 -245
- package/src/runtime/adapters/react.adapter.js.map +0 -1
- package/src/runtime/adapters/types.d.ts +0 -94
- package/src/runtime/adapters/types.js +0 -11
- package/src/runtime/adapters/types.js.map +0 -1
- package/src/runtime/csp.d.ts +0 -37
- package/src/runtime/csp.js +0 -140
- package/src/runtime/csp.js.map +0 -1
- package/src/runtime/index.d.ts +0 -16
- package/src/runtime/index.js +0 -72
- package/src/runtime/index.js.map +0 -1
- package/src/runtime/mcp-bridge.d.ts +0 -100
- package/src/runtime/mcp-bridge.js +0 -581
- package/src/runtime/mcp-bridge.js.map +0 -1
- package/src/runtime/renderer-runtime.d.ts +0 -132
- package/src/runtime/renderer-runtime.js +0 -389
- package/src/runtime/renderer-runtime.js.map +0 -1
- package/src/runtime/sanitizer.d.ts +0 -171
- package/src/runtime/sanitizer.js +0 -318
- package/src/runtime/sanitizer.js.map +0 -1
- package/src/runtime/types.d.ts +0 -414
- package/src/runtime/types.js +0 -12
- package/src/runtime/types.js.map +0 -1
- package/src/runtime/wrapper.d.ts +0 -375
- package/src/runtime/wrapper.js +0 -1793
- package/src/runtime/wrapper.js.map +0 -1
- package/src/styles/index.d.ts +0 -7
- package/src/styles/index.js +0 -11
- package/src/styles/index.js.map +0 -1
- package/src/styles/variants.d.ts +0 -50
- package/src/styles/variants.js +0 -175
- package/src/styles/variants.js.map +0 -1
- package/src/theme/cdn.d.ts +0 -194
- package/src/theme/cdn.js +0 -375
- package/src/theme/cdn.js.map +0 -1
- package/src/theme/index.d.ts +0 -17
- package/src/theme/index.js +0 -57
- package/src/theme/index.js.map +0 -1
- package/src/theme/platforms.d.ts +0 -106
- package/src/theme/platforms.js +0 -161
- package/src/theme/platforms.js.map +0 -1
- package/src/theme/presets/github-openai.d.ts +0 -49
- package/src/theme/presets/github-openai.js +0 -189
- package/src/theme/presets/github-openai.js.map +0 -1
- package/src/theme/presets/index.d.ts +0 -10
- package/src/theme/presets/index.js +0 -17
- package/src/theme/presets/index.js.map +0 -1
- package/src/theme/theme.d.ts +0 -395
- package/src/theme/theme.js +0 -332
- package/src/theme/theme.js.map +0 -1
- package/src/tool-template/builder.d.ts +0 -212
- package/src/tool-template/builder.js +0 -397
- package/src/tool-template/builder.js.map +0 -1
- package/src/tool-template/index.d.ts +0 -15
- package/src/tool-template/index.js +0 -38
- package/src/tool-template/index.js.map +0 -1
- package/src/types/index.d.ts +0 -13
- package/src/types/index.js +0 -26
- package/src/types/index.js.map +0 -1
- package/src/types/ui-config.d.ts +0 -357
- package/src/types/ui-config.js +0 -12
- package/src/types/ui-config.js.map +0 -1
- package/src/types/ui-runtime.d.ts +0 -965
- package/src/types/ui-runtime.js +0 -117
- package/src/types/ui-runtime.js.map +0 -1
- package/src/validation/error-box.d.ts +0 -55
- package/src/validation/error-box.js +0 -75
- package/src/validation/error-box.js.map +0 -1
- package/src/validation/index.d.ts +0 -12
- package/src/validation/index.js +0 -21
- package/src/validation/index.js.map +0 -1
- package/src/validation/wrapper.d.ts +0 -96
- package/src/validation/wrapper.js +0 -117
- package/src/validation/wrapper.js.map +0 -1
- package/src/web-components/core/attribute-parser.d.ts +0 -85
- package/src/web-components/core/attribute-parser.js +0 -189
- package/src/web-components/core/attribute-parser.js.map +0 -1
- package/src/web-components/core/base-element.d.ts +0 -197
- package/src/web-components/core/base-element.js +0 -289
- package/src/web-components/core/base-element.js.map +0 -1
- package/src/web-components/core/index.d.ts +0 -8
- package/src/web-components/core/index.js +0 -18
- package/src/web-components/core/index.js.map +0 -1
- package/src/web-components/elements/fmcp-alert.d.ts +0 -45
- package/src/web-components/elements/fmcp-alert.js +0 -93
- package/src/web-components/elements/fmcp-alert.js.map +0 -1
- package/src/web-components/elements/fmcp-badge.d.ts +0 -46
- package/src/web-components/elements/fmcp-badge.js +0 -99
- package/src/web-components/elements/fmcp-badge.js.map +0 -1
- package/src/web-components/elements/fmcp-button.d.ts +0 -124
- package/src/web-components/elements/fmcp-button.js +0 -233
- package/src/web-components/elements/fmcp-button.js.map +0 -1
- package/src/web-components/elements/fmcp-card.d.ts +0 -52
- package/src/web-components/elements/fmcp-card.js +0 -115
- package/src/web-components/elements/fmcp-card.js.map +0 -1
- package/src/web-components/elements/fmcp-input.d.ts +0 -95
- package/src/web-components/elements/fmcp-input.js +0 -248
- package/src/web-components/elements/fmcp-input.js.map +0 -1
- package/src/web-components/elements/fmcp-select.d.ts +0 -99
- package/src/web-components/elements/fmcp-select.js +0 -243
- package/src/web-components/elements/fmcp-select.js.map +0 -1
- package/src/web-components/elements/index.d.ts +0 -12
- package/src/web-components/elements/index.js +0 -34
- package/src/web-components/elements/index.js.map +0 -1
- package/src/web-components/index.d.ts +0 -49
- package/src/web-components/index.js +0 -75
- package/src/web-components/index.js.map +0 -1
- package/src/web-components/register.d.ts +0 -56
- package/src/web-components/register.js +0 -80
- package/src/web-components/register.js.map +0 -1
- package/src/web-components/types.d.ts +0 -121
- package/src/web-components/types.js +0 -25
- package/src/web-components/types.js.map +0 -1
- package/src/widgets/index.d.ts +0 -7
- package/src/widgets/index.js +0 -24
- package/src/widgets/index.js.map +0 -1
- package/src/widgets/progress.d.ts +0 -132
- package/src/widgets/progress.js +0 -303
- package/src/widgets/progress.js.map +0 -1
- package/src/widgets/resource.d.ts +0 -162
- package/src/widgets/resource.js +0 -340
- package/src/widgets/resource.js.map +0 -1
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Input Sanitizer
|
|
3
|
-
*
|
|
4
|
-
* Provides PII detection and redaction for tool inputs before they are
|
|
5
|
-
* exposed to widget code. This protects sensitive data from being
|
|
6
|
-
* accidentally exposed in client-side widgets.
|
|
7
|
-
*
|
|
8
|
-
* Built-in patterns:
|
|
9
|
-
* - Email addresses → [EMAIL]
|
|
10
|
-
* - Phone numbers → [PHONE]
|
|
11
|
-
* - Credit card numbers → [CARD]
|
|
12
|
-
* - SSN / National IDs → [ID]
|
|
13
|
-
* - IP addresses → [IP]
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```typescript
|
|
17
|
-
* import { sanitizeInput, createSanitizer } from './sanitizer';
|
|
18
|
-
*
|
|
19
|
-
* // Auto-detect and redact PII
|
|
20
|
-
* const sanitized = sanitizeInput({
|
|
21
|
-
* user: 'john@example.com',
|
|
22
|
-
* phone: '555-123-4567',
|
|
23
|
-
* message: 'Hello world',
|
|
24
|
-
* });
|
|
25
|
-
* // Result: { user: '[EMAIL]', phone: '[PHONE]', message: 'Hello world' }
|
|
26
|
-
*
|
|
27
|
-
* // Redact specific fields
|
|
28
|
-
* const sanitized2 = sanitizeInput(data, ['email', 'ssn']);
|
|
29
|
-
*
|
|
30
|
-
* // Custom sanitizer
|
|
31
|
-
* const sanitized3 = sanitizeInput(data, (key, value) => {
|
|
32
|
-
* if (key === 'secret') return '[REDACTED]';
|
|
33
|
-
* return value;
|
|
34
|
-
* });
|
|
35
|
-
* ```
|
|
36
|
-
*/
|
|
37
|
-
/**
|
|
38
|
-
* Redaction placeholder tokens
|
|
39
|
-
*/
|
|
40
|
-
export declare const REDACTION_TOKENS: {
|
|
41
|
-
readonly EMAIL: "[EMAIL]";
|
|
42
|
-
readonly PHONE: "[PHONE]";
|
|
43
|
-
readonly CARD: "[CARD]";
|
|
44
|
-
readonly ID: "[ID]";
|
|
45
|
-
readonly IP: "[IP]";
|
|
46
|
-
readonly REDACTED: "[REDACTED]";
|
|
47
|
-
};
|
|
48
|
-
/**
|
|
49
|
-
* PII detection patterns
|
|
50
|
-
*/
|
|
51
|
-
export declare const PII_PATTERNS: {
|
|
52
|
-
email: RegExp;
|
|
53
|
-
emailInText: RegExp;
|
|
54
|
-
phone: RegExp;
|
|
55
|
-
phoneInText: RegExp;
|
|
56
|
-
creditCard: RegExp;
|
|
57
|
-
creditCardInText: RegExp;
|
|
58
|
-
ssn: RegExp;
|
|
59
|
-
ssnInText: RegExp;
|
|
60
|
-
ipv4: RegExp;
|
|
61
|
-
ipv4InText: RegExp;
|
|
62
|
-
};
|
|
63
|
-
/**
|
|
64
|
-
* Custom sanitizer function type
|
|
65
|
-
*/
|
|
66
|
-
export type SanitizerFn = (key: string, value: unknown, path: string[]) => unknown;
|
|
67
|
-
/**
|
|
68
|
-
* Sanitizer options
|
|
69
|
-
*/
|
|
70
|
-
export interface SanitizeOptions {
|
|
71
|
-
/**
|
|
72
|
-
* How to handle PII detection:
|
|
73
|
-
* - true: Auto-detect and redact common PII patterns
|
|
74
|
-
* - string[]: Only redact values in fields with these names
|
|
75
|
-
* - SanitizerFn: Custom sanitizer function
|
|
76
|
-
*/
|
|
77
|
-
mode: true | string[] | SanitizerFn;
|
|
78
|
-
/**
|
|
79
|
-
* Maximum depth for recursive sanitization
|
|
80
|
-
* @default 10
|
|
81
|
-
*/
|
|
82
|
-
maxDepth?: number;
|
|
83
|
-
/**
|
|
84
|
-
* Whether to sanitize PII patterns within string values
|
|
85
|
-
* @default true
|
|
86
|
-
*/
|
|
87
|
-
sanitizeInText?: boolean;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Check if a string matches an email pattern
|
|
91
|
-
*/
|
|
92
|
-
export declare function isEmail(value: string): boolean;
|
|
93
|
-
/**
|
|
94
|
-
* Check if a string matches a phone pattern
|
|
95
|
-
*/
|
|
96
|
-
export declare function isPhone(value: string): boolean;
|
|
97
|
-
/**
|
|
98
|
-
* Check if a string matches a credit card pattern
|
|
99
|
-
*/
|
|
100
|
-
export declare function isCreditCard(value: string): boolean;
|
|
101
|
-
/**
|
|
102
|
-
* Check if a string matches an SSN pattern
|
|
103
|
-
*/
|
|
104
|
-
export declare function isSSN(value: string): boolean;
|
|
105
|
-
/**
|
|
106
|
-
* Check if a string matches an IPv4 pattern
|
|
107
|
-
*/
|
|
108
|
-
export declare function isIPv4(value: string): boolean;
|
|
109
|
-
/**
|
|
110
|
-
* Detect PII type in a string value
|
|
111
|
-
*/
|
|
112
|
-
export declare function detectPIIType(value: string): keyof typeof REDACTION_TOKENS | null;
|
|
113
|
-
/**
|
|
114
|
-
* Redact PII patterns from text
|
|
115
|
-
*/
|
|
116
|
-
export declare function redactPIIFromText(text: string): string;
|
|
117
|
-
/**
|
|
118
|
-
* Sanitize input data by redacting PII.
|
|
119
|
-
*
|
|
120
|
-
* @param input - The input data to sanitize
|
|
121
|
-
* @param mode - Sanitization mode:
|
|
122
|
-
* - `true`: Auto-detect and redact common PII patterns
|
|
123
|
-
* - `string[]`: Redact values in fields with these names
|
|
124
|
-
* - `SanitizerFn`: Custom sanitizer function
|
|
125
|
-
* @returns Sanitized copy of the input
|
|
126
|
-
*
|
|
127
|
-
* @example
|
|
128
|
-
* ```typescript
|
|
129
|
-
* // Auto-detect PII
|
|
130
|
-
* sanitizeInput({ email: 'test@example.com' });
|
|
131
|
-
* // { email: '[EMAIL]' }
|
|
132
|
-
*
|
|
133
|
-
* // Redact specific fields
|
|
134
|
-
* sanitizeInput({ password: 'secret', name: 'John' }, ['password']);
|
|
135
|
-
* // { password: '[REDACTED]', name: 'John' }
|
|
136
|
-
*
|
|
137
|
-
* // Custom sanitizer
|
|
138
|
-
* sanitizeInput(data, (key, value) => key === 'token' ? '[TOKEN]' : value);
|
|
139
|
-
* ```
|
|
140
|
-
*/
|
|
141
|
-
export declare function sanitizeInput(input: Record<string, unknown>, mode?: true | string[] | SanitizerFn): Record<string, unknown>;
|
|
142
|
-
/**
|
|
143
|
-
* Create a reusable sanitizer function with preset options.
|
|
144
|
-
*
|
|
145
|
-
* @param mode - Sanitization mode
|
|
146
|
-
* @returns Sanitizer function
|
|
147
|
-
*
|
|
148
|
-
* @example
|
|
149
|
-
* ```typescript
|
|
150
|
-
* const sanitizer = createSanitizer(['email', 'phone', 'ssn']);
|
|
151
|
-
*
|
|
152
|
-
* const clean1 = sanitizer(userData1);
|
|
153
|
-
* const clean2 = sanitizer(userData2);
|
|
154
|
-
* ```
|
|
155
|
-
*/
|
|
156
|
-
export declare function createSanitizer(mode?: true | string[] | SanitizerFn): (input: Record<string, unknown>) => Record<string, unknown>;
|
|
157
|
-
/**
|
|
158
|
-
* Check if an object contains any detected PII.
|
|
159
|
-
* Does not modify the input.
|
|
160
|
-
*
|
|
161
|
-
* @param input - The input to check
|
|
162
|
-
* @param options - Optional configuration
|
|
163
|
-
* @param options.maxDepth - Maximum recursion depth (default: 10)
|
|
164
|
-
* @returns Object with boolean `hasPII` and `fields` array of field paths
|
|
165
|
-
*/
|
|
166
|
-
export declare function detectPII(input: Record<string, unknown>, options?: {
|
|
167
|
-
maxDepth?: number;
|
|
168
|
-
}): {
|
|
169
|
-
hasPII: boolean;
|
|
170
|
-
fields: string[];
|
|
171
|
-
};
|
package/src/runtime/sanitizer.js
DELETED
|
@@ -1,318 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Input Sanitizer
|
|
4
|
-
*
|
|
5
|
-
* Provides PII detection and redaction for tool inputs before they are
|
|
6
|
-
* exposed to widget code. This protects sensitive data from being
|
|
7
|
-
* accidentally exposed in client-side widgets.
|
|
8
|
-
*
|
|
9
|
-
* Built-in patterns:
|
|
10
|
-
* - Email addresses → [EMAIL]
|
|
11
|
-
* - Phone numbers → [PHONE]
|
|
12
|
-
* - Credit card numbers → [CARD]
|
|
13
|
-
* - SSN / National IDs → [ID]
|
|
14
|
-
* - IP addresses → [IP]
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```typescript
|
|
18
|
-
* import { sanitizeInput, createSanitizer } from './sanitizer';
|
|
19
|
-
*
|
|
20
|
-
* // Auto-detect and redact PII
|
|
21
|
-
* const sanitized = sanitizeInput({
|
|
22
|
-
* user: 'john@example.com',
|
|
23
|
-
* phone: '555-123-4567',
|
|
24
|
-
* message: 'Hello world',
|
|
25
|
-
* });
|
|
26
|
-
* // Result: { user: '[EMAIL]', phone: '[PHONE]', message: 'Hello world' }
|
|
27
|
-
*
|
|
28
|
-
* // Redact specific fields
|
|
29
|
-
* const sanitized2 = sanitizeInput(data, ['email', 'ssn']);
|
|
30
|
-
*
|
|
31
|
-
* // Custom sanitizer
|
|
32
|
-
* const sanitized3 = sanitizeInput(data, (key, value) => {
|
|
33
|
-
* if (key === 'secret') return '[REDACTED]';
|
|
34
|
-
* return value;
|
|
35
|
-
* });
|
|
36
|
-
* ```
|
|
37
|
-
*/
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.PII_PATTERNS = exports.REDACTION_TOKENS = void 0;
|
|
40
|
-
exports.isEmail = isEmail;
|
|
41
|
-
exports.isPhone = isPhone;
|
|
42
|
-
exports.isCreditCard = isCreditCard;
|
|
43
|
-
exports.isSSN = isSSN;
|
|
44
|
-
exports.isIPv4 = isIPv4;
|
|
45
|
-
exports.detectPIIType = detectPIIType;
|
|
46
|
-
exports.redactPIIFromText = redactPIIFromText;
|
|
47
|
-
exports.sanitizeInput = sanitizeInput;
|
|
48
|
-
exports.createSanitizer = createSanitizer;
|
|
49
|
-
exports.detectPII = detectPII;
|
|
50
|
-
/**
|
|
51
|
-
* Redaction placeholder tokens
|
|
52
|
-
*/
|
|
53
|
-
exports.REDACTION_TOKENS = {
|
|
54
|
-
EMAIL: '[EMAIL]',
|
|
55
|
-
PHONE: '[PHONE]',
|
|
56
|
-
CARD: '[CARD]',
|
|
57
|
-
ID: '[ID]',
|
|
58
|
-
IP: '[IP]',
|
|
59
|
-
REDACTED: '[REDACTED]',
|
|
60
|
-
};
|
|
61
|
-
/**
|
|
62
|
-
* PII detection patterns
|
|
63
|
-
*/
|
|
64
|
-
exports.PII_PATTERNS = {
|
|
65
|
-
// Email: user@domain.tld
|
|
66
|
-
email: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,
|
|
67
|
-
// Email embedded in text
|
|
68
|
-
emailInText: /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g,
|
|
69
|
-
// Phone: Various formats (US-centric but flexible)
|
|
70
|
-
phone: /^[+]?[(]?[0-9]{1,4}[)]?[-\s.]?[0-9]{1,4}[-\s.]?[0-9]{1,9}$/,
|
|
71
|
-
// Phone embedded in text
|
|
72
|
-
phoneInText: /(?:\+?1[-.\s]?)?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}/g,
|
|
73
|
-
// Credit card: 13-19 digits (with optional separators)
|
|
74
|
-
creditCard: /^(?:[0-9]{4}[-\s]?){3,4}[0-9]{1,4}$/,
|
|
75
|
-
// Credit card embedded in text
|
|
76
|
-
creditCardInText: /\b(?:[0-9]{4}[-\s]?){3,4}[0-9]{1,4}\b/g,
|
|
77
|
-
// SSN: XXX-XX-XXXX
|
|
78
|
-
ssn: /^[0-9]{3}[-]?[0-9]{2}[-]?[0-9]{4}$/,
|
|
79
|
-
// SSN embedded in text
|
|
80
|
-
ssnInText: /\b[0-9]{3}[-]?[0-9]{2}[-]?[0-9]{4}\b/g,
|
|
81
|
-
// IPv4 address
|
|
82
|
-
ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
|
|
83
|
-
// IPv4 embedded in text
|
|
84
|
-
ipv4InText: /\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/g,
|
|
85
|
-
};
|
|
86
|
-
/**
|
|
87
|
-
* Check if a string matches an email pattern
|
|
88
|
-
*/
|
|
89
|
-
function isEmail(value) {
|
|
90
|
-
return exports.PII_PATTERNS.email.test(value);
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Check if a string matches a phone pattern
|
|
94
|
-
*/
|
|
95
|
-
function isPhone(value) {
|
|
96
|
-
return exports.PII_PATTERNS.phone.test(value);
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Check if a string matches a credit card pattern
|
|
100
|
-
*/
|
|
101
|
-
function isCreditCard(value) {
|
|
102
|
-
// Remove separators for digit count check
|
|
103
|
-
const digits = value.replace(/[-\s]/g, '');
|
|
104
|
-
return digits.length >= 13 && digits.length <= 19 && exports.PII_PATTERNS.creditCard.test(value);
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Check if a string matches an SSN pattern
|
|
108
|
-
*/
|
|
109
|
-
function isSSN(value) {
|
|
110
|
-
return exports.PII_PATTERNS.ssn.test(value);
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Check if a string matches an IPv4 pattern
|
|
114
|
-
*/
|
|
115
|
-
function isIPv4(value) {
|
|
116
|
-
return exports.PII_PATTERNS.ipv4.test(value);
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Detect PII type in a string value
|
|
120
|
-
*/
|
|
121
|
-
function detectPIIType(value) {
|
|
122
|
-
if (isEmail(value))
|
|
123
|
-
return 'EMAIL';
|
|
124
|
-
if (isCreditCard(value))
|
|
125
|
-
return 'CARD';
|
|
126
|
-
if (isSSN(value))
|
|
127
|
-
return 'ID';
|
|
128
|
-
if (isPhone(value))
|
|
129
|
-
return 'PHONE';
|
|
130
|
-
if (isIPv4(value))
|
|
131
|
-
return 'IP';
|
|
132
|
-
return null;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Redact PII patterns from text
|
|
136
|
-
*/
|
|
137
|
-
function redactPIIFromText(text) {
|
|
138
|
-
let result = text;
|
|
139
|
-
// Order matters - more specific patterns first
|
|
140
|
-
result = result.replace(exports.PII_PATTERNS.creditCardInText, exports.REDACTION_TOKENS.CARD);
|
|
141
|
-
result = result.replace(exports.PII_PATTERNS.ssnInText, exports.REDACTION_TOKENS.ID);
|
|
142
|
-
result = result.replace(exports.PII_PATTERNS.emailInText, exports.REDACTION_TOKENS.EMAIL);
|
|
143
|
-
result = result.replace(exports.PII_PATTERNS.phoneInText, exports.REDACTION_TOKENS.PHONE);
|
|
144
|
-
result = result.replace(exports.PII_PATTERNS.ipv4InText, exports.REDACTION_TOKENS.IP);
|
|
145
|
-
return result;
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Sanitize a value based on its type
|
|
149
|
-
*/
|
|
150
|
-
function sanitizeValue(key, value, path, options, depth, visited) {
|
|
151
|
-
const maxDepth = options.maxDepth ?? 10;
|
|
152
|
-
// Prevent infinite recursion
|
|
153
|
-
if (depth > maxDepth) {
|
|
154
|
-
return value;
|
|
155
|
-
}
|
|
156
|
-
// Handle null/undefined
|
|
157
|
-
if (value === null || value === undefined) {
|
|
158
|
-
return value;
|
|
159
|
-
}
|
|
160
|
-
// Handle custom sanitizer function
|
|
161
|
-
if (typeof options.mode === 'function') {
|
|
162
|
-
return options.mode(key, value, path);
|
|
163
|
-
}
|
|
164
|
-
// Handle field name list
|
|
165
|
-
if (Array.isArray(options.mode)) {
|
|
166
|
-
const lowerKey = key.toLowerCase();
|
|
167
|
-
if (options.mode.some((f) => f.toLowerCase() === lowerKey)) {
|
|
168
|
-
return exports.REDACTION_TOKENS.REDACTED;
|
|
169
|
-
}
|
|
170
|
-
// Continue to recurse into objects/arrays
|
|
171
|
-
}
|
|
172
|
-
// Handle string values
|
|
173
|
-
if (typeof value === 'string') {
|
|
174
|
-
// Auto-detect mode: check if entire string is PII
|
|
175
|
-
if (options.mode === true) {
|
|
176
|
-
const piiType = detectPIIType(value);
|
|
177
|
-
if (piiType) {
|
|
178
|
-
return exports.REDACTION_TOKENS[piiType];
|
|
179
|
-
}
|
|
180
|
-
// Check for PII patterns embedded in text
|
|
181
|
-
if (options.sanitizeInText !== false) {
|
|
182
|
-
const redacted = redactPIIFromText(value);
|
|
183
|
-
if (redacted !== value) {
|
|
184
|
-
return redacted;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
return value;
|
|
189
|
-
}
|
|
190
|
-
// Handle arrays
|
|
191
|
-
if (Array.isArray(value)) {
|
|
192
|
-
// Check for circular reference
|
|
193
|
-
if (visited.has(value)) {
|
|
194
|
-
return exports.REDACTION_TOKENS.REDACTED;
|
|
195
|
-
}
|
|
196
|
-
visited.add(value);
|
|
197
|
-
return value.map((item, index) => sanitizeValue(String(index), item, [...path, String(index)], options, depth + 1, visited));
|
|
198
|
-
}
|
|
199
|
-
// Handle objects
|
|
200
|
-
if (typeof value === 'object') {
|
|
201
|
-
// Check for circular reference
|
|
202
|
-
if (visited.has(value)) {
|
|
203
|
-
return exports.REDACTION_TOKENS.REDACTED;
|
|
204
|
-
}
|
|
205
|
-
visited.add(value);
|
|
206
|
-
const result = {};
|
|
207
|
-
for (const [k, v] of Object.entries(value)) {
|
|
208
|
-
result[k] = sanitizeValue(k, v, [...path, k], options, depth + 1, visited);
|
|
209
|
-
}
|
|
210
|
-
return result;
|
|
211
|
-
}
|
|
212
|
-
// Return primitives as-is
|
|
213
|
-
return value;
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Sanitize input data by redacting PII.
|
|
217
|
-
*
|
|
218
|
-
* @param input - The input data to sanitize
|
|
219
|
-
* @param mode - Sanitization mode:
|
|
220
|
-
* - `true`: Auto-detect and redact common PII patterns
|
|
221
|
-
* - `string[]`: Redact values in fields with these names
|
|
222
|
-
* - `SanitizerFn`: Custom sanitizer function
|
|
223
|
-
* @returns Sanitized copy of the input
|
|
224
|
-
*
|
|
225
|
-
* @example
|
|
226
|
-
* ```typescript
|
|
227
|
-
* // Auto-detect PII
|
|
228
|
-
* sanitizeInput({ email: 'test@example.com' });
|
|
229
|
-
* // { email: '[EMAIL]' }
|
|
230
|
-
*
|
|
231
|
-
* // Redact specific fields
|
|
232
|
-
* sanitizeInput({ password: 'secret', name: 'John' }, ['password']);
|
|
233
|
-
* // { password: '[REDACTED]', name: 'John' }
|
|
234
|
-
*
|
|
235
|
-
* // Custom sanitizer
|
|
236
|
-
* sanitizeInput(data, (key, value) => key === 'token' ? '[TOKEN]' : value);
|
|
237
|
-
* ```
|
|
238
|
-
*/
|
|
239
|
-
function sanitizeInput(input, mode = true) {
|
|
240
|
-
// Return empty object for invalid inputs to maintain type contract
|
|
241
|
-
if (!input || typeof input !== 'object') {
|
|
242
|
-
return {};
|
|
243
|
-
}
|
|
244
|
-
const options = {
|
|
245
|
-
mode,
|
|
246
|
-
maxDepth: 10,
|
|
247
|
-
sanitizeInText: true,
|
|
248
|
-
};
|
|
249
|
-
const visited = new WeakSet();
|
|
250
|
-
return sanitizeValue('', input, [], options, 0, visited);
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* Create a reusable sanitizer function with preset options.
|
|
254
|
-
*
|
|
255
|
-
* @param mode - Sanitization mode
|
|
256
|
-
* @returns Sanitizer function
|
|
257
|
-
*
|
|
258
|
-
* @example
|
|
259
|
-
* ```typescript
|
|
260
|
-
* const sanitizer = createSanitizer(['email', 'phone', 'ssn']);
|
|
261
|
-
*
|
|
262
|
-
* const clean1 = sanitizer(userData1);
|
|
263
|
-
* const clean2 = sanitizer(userData2);
|
|
264
|
-
* ```
|
|
265
|
-
*/
|
|
266
|
-
function createSanitizer(mode = true) {
|
|
267
|
-
return (input) => sanitizeInput(input, mode);
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* Check if an object contains any detected PII.
|
|
271
|
-
* Does not modify the input.
|
|
272
|
-
*
|
|
273
|
-
* @param input - The input to check
|
|
274
|
-
* @param options - Optional configuration
|
|
275
|
-
* @param options.maxDepth - Maximum recursion depth (default: 10)
|
|
276
|
-
* @returns Object with boolean `hasPII` and `fields` array of field paths
|
|
277
|
-
*/
|
|
278
|
-
function detectPII(input, options) {
|
|
279
|
-
const maxDepth = options?.maxDepth ?? 10;
|
|
280
|
-
const fields = [];
|
|
281
|
-
const visited = new WeakSet();
|
|
282
|
-
const check = (value, path, depth) => {
|
|
283
|
-
// Prevent stack overflow on deeply nested structures
|
|
284
|
-
if (depth > maxDepth)
|
|
285
|
-
return;
|
|
286
|
-
if (value === null || value === undefined)
|
|
287
|
-
return;
|
|
288
|
-
if (typeof value === 'string') {
|
|
289
|
-
if (detectPIIType(value)) {
|
|
290
|
-
fields.push(path.join('.'));
|
|
291
|
-
}
|
|
292
|
-
return;
|
|
293
|
-
}
|
|
294
|
-
if (Array.isArray(value)) {
|
|
295
|
-
// Check for circular reference
|
|
296
|
-
if (visited.has(value))
|
|
297
|
-
return;
|
|
298
|
-
visited.add(value);
|
|
299
|
-
value.forEach((item, index) => check(item, [...path, String(index)], depth + 1));
|
|
300
|
-
return;
|
|
301
|
-
}
|
|
302
|
-
if (typeof value === 'object') {
|
|
303
|
-
// Check for circular reference
|
|
304
|
-
if (visited.has(value))
|
|
305
|
-
return;
|
|
306
|
-
visited.add(value);
|
|
307
|
-
for (const [k, v] of Object.entries(value)) {
|
|
308
|
-
check(v, [...path, k], depth + 1);
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
};
|
|
312
|
-
check(input, [], 0);
|
|
313
|
-
return {
|
|
314
|
-
hasPII: fields.length > 0,
|
|
315
|
-
fields,
|
|
316
|
-
};
|
|
317
|
-
}
|
|
318
|
-
//# sourceMappingURL=sanitizer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sanitizer.js","sourceRoot":"","sources":["../../../src/runtime/sanitizer.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Input Sanitizer\n *\n * Provides PII detection and redaction for tool inputs before they are\n * exposed to widget code. This protects sensitive data from being\n * accidentally exposed in client-side widgets.\n *\n * Built-in patterns:\n * - Email addresses → [EMAIL]\n * - Phone numbers → [PHONE]\n * - Credit card numbers → [CARD]\n * - SSN / National IDs → [ID]\n * - IP addresses → [IP]\n *\n * @example\n * ```typescript\n * import { sanitizeInput, createSanitizer } from './sanitizer';\n *\n * // Auto-detect and redact PII\n * const sanitized = sanitizeInput({\n * user: 'john@example.com',\n * phone: '555-123-4567',\n * message: 'Hello world',\n * });\n * // Result: { user: '[EMAIL]', phone: '[PHONE]', message: 'Hello world' }\n *\n * // Redact specific fields\n * const sanitized2 = sanitizeInput(data, ['email', 'ssn']);\n *\n * // Custom sanitizer\n * const sanitized3 = sanitizeInput(data, (key, value) => {\n * if (key === 'secret') return '[REDACTED]';\n * return value;\n * });\n * ```\n */\n\n/**\n * Redaction placeholder tokens\n */\nexport const REDACTION_TOKENS = {\n EMAIL: '[EMAIL]',\n PHONE: '[PHONE]',\n CARD: '[CARD]',\n ID: '[ID]',\n IP: '[IP]',\n REDACTED: '[REDACTED]',\n} as const;\n\n/**\n * PII detection patterns\n */\nexport const PII_PATTERNS = {\n // Email: user@domain.tld\n email: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/,\n\n // Email embedded in text\n emailInText: /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/g,\n\n // Phone: Various formats (US-centric but flexible)\n phone: /^[+]?[(]?[0-9]{1,4}[)]?[-\\s.]?[0-9]{1,4}[-\\s.]?[0-9]{1,9}$/,\n\n // Phone embedded in text\n phoneInText: /(?:\\+?1[-.\\s]?)?\\(?[0-9]{3}\\)?[-.\\s]?[0-9]{3}[-.\\s]?[0-9]{4}/g,\n\n // Credit card: 13-19 digits (with optional separators)\n creditCard: /^(?:[0-9]{4}[-\\s]?){3,4}[0-9]{1,4}$/,\n\n // Credit card embedded in text\n creditCardInText: /\\b(?:[0-9]{4}[-\\s]?){3,4}[0-9]{1,4}\\b/g,\n\n // SSN: XXX-XX-XXXX\n ssn: /^[0-9]{3}[-]?[0-9]{2}[-]?[0-9]{4}$/,\n\n // SSN embedded in text\n ssnInText: /\\b[0-9]{3}[-]?[0-9]{2}[-]?[0-9]{4}\\b/g,\n\n // IPv4 address\n ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,\n\n // IPv4 embedded in text\n ipv4InText: /\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b/g,\n};\n\n/**\n * Custom sanitizer function type\n */\nexport type SanitizerFn = (key: string, value: unknown, path: string[]) => unknown;\n\n/**\n * Sanitizer options\n */\nexport interface SanitizeOptions {\n /**\n * How to handle PII detection:\n * - true: Auto-detect and redact common PII patterns\n * - string[]: Only redact values in fields with these names\n * - SanitizerFn: Custom sanitizer function\n */\n mode: true | string[] | SanitizerFn;\n\n /**\n * Maximum depth for recursive sanitization\n * @default 10\n */\n maxDepth?: number;\n\n /**\n * Whether to sanitize PII patterns within string values\n * @default true\n */\n sanitizeInText?: boolean;\n}\n\n/**\n * Check if a string matches an email pattern\n */\nexport function isEmail(value: string): boolean {\n return PII_PATTERNS.email.test(value);\n}\n\n/**\n * Check if a string matches a phone pattern\n */\nexport function isPhone(value: string): boolean {\n return PII_PATTERNS.phone.test(value);\n}\n\n/**\n * Check if a string matches a credit card pattern\n */\nexport function isCreditCard(value: string): boolean {\n // Remove separators for digit count check\n const digits = value.replace(/[-\\s]/g, '');\n return digits.length >= 13 && digits.length <= 19 && PII_PATTERNS.creditCard.test(value);\n}\n\n/**\n * Check if a string matches an SSN pattern\n */\nexport function isSSN(value: string): boolean {\n return PII_PATTERNS.ssn.test(value);\n}\n\n/**\n * Check if a string matches an IPv4 pattern\n */\nexport function isIPv4(value: string): boolean {\n return PII_PATTERNS.ipv4.test(value);\n}\n\n/**\n * Detect PII type in a string value\n */\nexport function detectPIIType(value: string): keyof typeof REDACTION_TOKENS | null {\n if (isEmail(value)) return 'EMAIL';\n if (isCreditCard(value)) return 'CARD';\n if (isSSN(value)) return 'ID';\n if (isPhone(value)) return 'PHONE';\n if (isIPv4(value)) return 'IP';\n return null;\n}\n\n/**\n * Redact PII patterns from text\n */\nexport function redactPIIFromText(text: string): string {\n let result = text;\n\n // Order matters - more specific patterns first\n result = result.replace(PII_PATTERNS.creditCardInText, REDACTION_TOKENS.CARD);\n result = result.replace(PII_PATTERNS.ssnInText, REDACTION_TOKENS.ID);\n result = result.replace(PII_PATTERNS.emailInText, REDACTION_TOKENS.EMAIL);\n result = result.replace(PII_PATTERNS.phoneInText, REDACTION_TOKENS.PHONE);\n result = result.replace(PII_PATTERNS.ipv4InText, REDACTION_TOKENS.IP);\n\n return result;\n}\n\n/**\n * Sanitize a value based on its type\n */\nfunction sanitizeValue(\n key: string,\n value: unknown,\n path: string[],\n options: SanitizeOptions,\n depth: number,\n visited: WeakSet<object>,\n): unknown {\n const maxDepth = options.maxDepth ?? 10;\n\n // Prevent infinite recursion\n if (depth > maxDepth) {\n return value;\n }\n\n // Handle null/undefined\n if (value === null || value === undefined) {\n return value;\n }\n\n // Handle custom sanitizer function\n if (typeof options.mode === 'function') {\n return options.mode(key, value, path);\n }\n\n // Handle field name list\n if (Array.isArray(options.mode)) {\n const lowerKey = key.toLowerCase();\n if (options.mode.some((f) => f.toLowerCase() === lowerKey)) {\n return REDACTION_TOKENS.REDACTED;\n }\n // Continue to recurse into objects/arrays\n }\n\n // Handle string values\n if (typeof value === 'string') {\n // Auto-detect mode: check if entire string is PII\n if (options.mode === true) {\n const piiType = detectPIIType(value);\n if (piiType) {\n return REDACTION_TOKENS[piiType];\n }\n\n // Check for PII patterns embedded in text\n if (options.sanitizeInText !== false) {\n const redacted = redactPIIFromText(value);\n if (redacted !== value) {\n return redacted;\n }\n }\n }\n\n return value;\n }\n\n // Handle arrays\n if (Array.isArray(value)) {\n // Check for circular reference\n if (visited.has(value)) {\n return REDACTION_TOKENS.REDACTED;\n }\n visited.add(value);\n return value.map((item, index) =>\n sanitizeValue(String(index), item, [...path, String(index)], options, depth + 1, visited),\n );\n }\n\n // Handle objects\n if (typeof value === 'object') {\n // Check for circular reference\n if (visited.has(value)) {\n return REDACTION_TOKENS.REDACTED;\n }\n visited.add(value);\n const result: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(value as Record<string, unknown>)) {\n result[k] = sanitizeValue(k, v, [...path, k], options, depth + 1, visited);\n }\n return result;\n }\n\n // Return primitives as-is\n return value;\n}\n\n/**\n * Sanitize input data by redacting PII.\n *\n * @param input - The input data to sanitize\n * @param mode - Sanitization mode:\n * - `true`: Auto-detect and redact common PII patterns\n * - `string[]`: Redact values in fields with these names\n * - `SanitizerFn`: Custom sanitizer function\n * @returns Sanitized copy of the input\n *\n * @example\n * ```typescript\n * // Auto-detect PII\n * sanitizeInput({ email: 'test@example.com' });\n * // { email: '[EMAIL]' }\n *\n * // Redact specific fields\n * sanitizeInput({ password: 'secret', name: 'John' }, ['password']);\n * // { password: '[REDACTED]', name: 'John' }\n *\n * // Custom sanitizer\n * sanitizeInput(data, (key, value) => key === 'token' ? '[TOKEN]' : value);\n * ```\n */\nexport function sanitizeInput(\n input: Record<string, unknown>,\n mode: true | string[] | SanitizerFn = true,\n): Record<string, unknown> {\n // Return empty object for invalid inputs to maintain type contract\n if (!input || typeof input !== 'object') {\n return {};\n }\n\n const options: SanitizeOptions = {\n mode,\n maxDepth: 10,\n sanitizeInText: true,\n };\n\n const visited = new WeakSet<object>();\n return sanitizeValue('', input, [], options, 0, visited) as Record<string, unknown>;\n}\n\n/**\n * Create a reusable sanitizer function with preset options.\n *\n * @param mode - Sanitization mode\n * @returns Sanitizer function\n *\n * @example\n * ```typescript\n * const sanitizer = createSanitizer(['email', 'phone', 'ssn']);\n *\n * const clean1 = sanitizer(userData1);\n * const clean2 = sanitizer(userData2);\n * ```\n */\nexport function createSanitizer(\n mode: true | string[] | SanitizerFn = true,\n): (input: Record<string, unknown>) => Record<string, unknown> {\n return (input) => sanitizeInput(input, mode);\n}\n\n/**\n * Check if an object contains any detected PII.\n * Does not modify the input.\n *\n * @param input - The input to check\n * @param options - Optional configuration\n * @param options.maxDepth - Maximum recursion depth (default: 10)\n * @returns Object with boolean `hasPII` and `fields` array of field paths\n */\nexport function detectPII(\n input: Record<string, unknown>,\n options?: { maxDepth?: number },\n): {\n hasPII: boolean;\n fields: string[];\n} {\n const maxDepth = options?.maxDepth ?? 10;\n const fields: string[] = [];\n const visited = new WeakSet<object>();\n\n const check = (value: unknown, path: string[], depth: number): void => {\n // Prevent stack overflow on deeply nested structures\n if (depth > maxDepth) return;\n\n if (value === null || value === undefined) return;\n\n if (typeof value === 'string') {\n if (detectPIIType(value)) {\n fields.push(path.join('.'));\n }\n return;\n }\n\n if (Array.isArray(value)) {\n // Check for circular reference\n if (visited.has(value)) return;\n visited.add(value);\n value.forEach((item, index) => check(item, [...path, String(index)], depth + 1));\n return;\n }\n\n if (typeof value === 'object') {\n // Check for circular reference\n if (visited.has(value)) return;\n visited.add(value);\n for (const [k, v] of Object.entries(value as Record<string, unknown>)) {\n check(v, [...path, k], depth + 1);\n }\n }\n };\n\n check(input, [], 0);\n\n return {\n hasPII: fields.length > 0,\n fields,\n };\n}\n"]}
|