opencode-rehydra-core 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.en.md +191 -0
- package/README.md +191 -0
- package/dist/browser.d.ts +54 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +74 -0
- package/dist/browser.js.map +1 -0
- package/dist/core/anonymizer.d.ts +309 -0
- package/dist/core/anonymizer.d.ts.map +1 -0
- package/dist/core/anonymizer.js +555 -0
- package/dist/core/anonymizer.js.map +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +6 -0
- package/dist/core/index.js.map +1 -0
- package/dist/crypto/index.d.ts +6 -0
- package/dist/crypto/index.d.ts.map +1 -0
- package/dist/crypto/index.js +6 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/crypto/pii-map-crypto.d.ts +114 -0
- package/dist/crypto/pii-map-crypto.d.ts.map +1 -0
- package/dist/crypto/pii-map-crypto.js +228 -0
- package/dist/crypto/pii-map-crypto.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +72 -0
- package/dist/index.js.map +1 -0
- package/dist/ner/bio-decoder.d.ts +64 -0
- package/dist/ner/bio-decoder.d.ts.map +1 -0
- package/dist/ner/bio-decoder.js +218 -0
- package/dist/ner/bio-decoder.js.map +1 -0
- package/dist/ner/index.d.ts +12 -0
- package/dist/ner/index.d.ts.map +1 -0
- package/dist/ner/index.js +12 -0
- package/dist/ner/index.js.map +1 -0
- package/dist/ner/inference-server-client.d.ts +81 -0
- package/dist/ner/inference-server-client.d.ts.map +1 -0
- package/dist/ner/inference-server-client.js +120 -0
- package/dist/ner/inference-server-client.js.map +1 -0
- package/dist/ner/inference-server-ner-model.d.ts +43 -0
- package/dist/ner/inference-server-ner-model.d.ts.map +1 -0
- package/dist/ner/inference-server-ner-model.js +119 -0
- package/dist/ner/inference-server-ner-model.js.map +1 -0
- package/dist/ner/model-manager.d.ts +111 -0
- package/dist/ner/model-manager.d.ts.map +1 -0
- package/dist/ner/model-manager.js +334 -0
- package/dist/ner/model-manager.js.map +1 -0
- package/dist/ner/ner-model.d.ts +172 -0
- package/dist/ner/ner-model.d.ts.map +1 -0
- package/dist/ner/ner-model.js +514 -0
- package/dist/ner/ner-model.js.map +1 -0
- package/dist/ner/onnx-runtime.browser.d.ts +46 -0
- package/dist/ner/onnx-runtime.browser.d.ts.map +1 -0
- package/dist/ner/onnx-runtime.browser.js +90 -0
- package/dist/ner/onnx-runtime.browser.js.map +1 -0
- package/dist/ner/onnx-runtime.d.ts +72 -0
- package/dist/ner/onnx-runtime.d.ts.map +1 -0
- package/dist/ner/onnx-runtime.js +132 -0
- package/dist/ner/onnx-runtime.js.map +1 -0
- package/dist/ner/token-window.d.ts +19 -0
- package/dist/ner/token-window.d.ts.map +1 -0
- package/dist/ner/token-window.js +101 -0
- package/dist/ner/token-window.js.map +1 -0
- package/dist/ner/tokenizer.d.ts +142 -0
- package/dist/ner/tokenizer.d.ts.map +1 -0
- package/dist/ner/tokenizer.js +362 -0
- package/dist/ner/tokenizer.js.map +1 -0
- package/dist/opencode-plugin/git-identity.d.ts +3 -0
- package/dist/opencode-plugin/git-identity.d.ts.map +1 -0
- package/dist/opencode-plugin/git-identity.js +37 -0
- package/dist/opencode-plugin/git-identity.js.map +1 -0
- package/dist/opencode-plugin/github-username.d.ts +3 -0
- package/dist/opencode-plugin/github-username.d.ts.map +1 -0
- package/dist/opencode-plugin/github-username.js +41 -0
- package/dist/opencode-plugin/github-username.js.map +1 -0
- package/dist/opencode-plugin/identity-recognizer.d.ts +5 -0
- package/dist/opencode-plugin/identity-recognizer.d.ts.map +1 -0
- package/dist/opencode-plugin/identity-recognizer.js +21 -0
- package/dist/opencode-plugin/identity-recognizer.js.map +1 -0
- package/dist/opencode-plugin/index.d.ts +7 -0
- package/dist/opencode-plugin/index.d.ts.map +1 -0
- package/dist/opencode-plugin/index.js +6 -0
- package/dist/opencode-plugin/index.js.map +1 -0
- package/dist/opencode-plugin/plugin.d.ts +39 -0
- package/dist/opencode-plugin/plugin.d.ts.map +1 -0
- package/dist/opencode-plugin/plugin.js +294 -0
- package/dist/opencode-plugin/plugin.js.map +1 -0
- package/dist/opencode-plugin/types.d.ts +33 -0
- package/dist/opencode-plugin/types.d.ts.map +1 -0
- package/dist/opencode-plugin/types.js +5 -0
- package/dist/opencode-plugin/types.js.map +1 -0
- package/dist/opencode-plugin/v2/anon-state.d.ts +12 -0
- package/dist/opencode-plugin/v2/anon-state.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/anon-state.js +14 -0
- package/dist/opencode-plugin/v2/anon-state.js.map +1 -0
- package/dist/opencode-plugin/v2/deep-rehydrate.d.ts +13 -0
- package/dist/opencode-plugin/v2/deep-rehydrate.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/deep-rehydrate.js +33 -0
- package/dist/opencode-plugin/v2/deep-rehydrate.js.map +1 -0
- package/dist/opencode-plugin/v2/index.d.ts +17 -0
- package/dist/opencode-plugin/v2/index.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/index.js +17 -0
- package/dist/opencode-plugin/v2/index.js.map +1 -0
- package/dist/opencode-plugin/v2/logger.d.ts +24 -0
- package/dist/opencode-plugin/v2/logger.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/logger.js +73 -0
- package/dist/opencode-plugin/v2/logger.js.map +1 -0
- package/dist/opencode-plugin/v2/options.d.ts +40 -0
- package/dist/opencode-plugin/v2/options.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/options.js +132 -0
- package/dist/opencode-plugin/v2/options.js.map +1 -0
- package/dist/opencode-plugin/v2/register-hooks.d.ts +43 -0
- package/dist/opencode-plugin/v2/register-hooks.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/register-hooks.js +160 -0
- package/dist/opencode-plugin/v2/register-hooks.js.map +1 -0
- package/dist/opencode-plugin/v2/rehydrate-tail.d.ts +101 -0
- package/dist/opencode-plugin/v2/rehydrate-tail.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/rehydrate-tail.js +147 -0
- package/dist/opencode-plugin/v2/rehydrate-tail.js.map +1 -0
- package/dist/opencode-plugin/v2/response-rehydrate.d.ts +78 -0
- package/dist/opencode-plugin/v2/response-rehydrate.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/response-rehydrate.js +210 -0
- package/dist/opencode-plugin/v2/response-rehydrate.js.map +1 -0
- package/dist/opencode-plugin/v2/scrub-messages.d.ts +39 -0
- package/dist/opencode-plugin/v2/scrub-messages.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/scrub-messages.js +260 -0
- package/dist/opencode-plugin/v2/scrub-messages.js.map +1 -0
- package/dist/opencode-plugin/v2/sessions.d.ts +17 -0
- package/dist/opencode-plugin/v2/sessions.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/sessions.js +23 -0
- package/dist/opencode-plugin/v2/sessions.js.map +1 -0
- package/dist/opencode-plugin/v2/sse.d.ts +101 -0
- package/dist/opencode-plugin/v2/sse.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/sse.js +235 -0
- package/dist/opencode-plugin/v2/sse.js.map +1 -0
- package/dist/opencode-plugin/v2/types.d.ts +188 -0
- package/dist/opencode-plugin/v2/types.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/types.js +10 -0
- package/dist/opencode-plugin/v2/types.js.map +1 -0
- package/dist/opencode-plugin/vcs-command.d.ts +3 -0
- package/dist/opencode-plugin/vcs-command.d.ts.map +1 -0
- package/dist/opencode-plugin/vcs-command.js +34 -0
- package/dist/opencode-plugin/vcs-command.js.map +1 -0
- package/dist/pipeline/index.d.ts +12 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +12 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/prenormalize.d.ts +48 -0
- package/dist/pipeline/prenormalize.d.ts.map +1 -0
- package/dist/pipeline/prenormalize.js +94 -0
- package/dist/pipeline/prenormalize.js.map +1 -0
- package/dist/pipeline/resolver.d.ts +56 -0
- package/dist/pipeline/resolver.d.ts.map +1 -0
- package/dist/pipeline/resolver.js +239 -0
- package/dist/pipeline/resolver.js.map +1 -0
- package/dist/pipeline/semantic-data-loader.d.ts +171 -0
- package/dist/pipeline/semantic-data-loader.d.ts.map +1 -0
- package/dist/pipeline/semantic-data-loader.js +677 -0
- package/dist/pipeline/semantic-data-loader.js.map +1 -0
- package/dist/pipeline/semantic-enricher.d.ts +112 -0
- package/dist/pipeline/semantic-enricher.d.ts.map +1 -0
- package/dist/pipeline/semantic-enricher.js +322 -0
- package/dist/pipeline/semantic-enricher.js.map +1 -0
- package/dist/pipeline/tagger.d.ts +121 -0
- package/dist/pipeline/tagger.d.ts.map +1 -0
- package/dist/pipeline/tagger.js +545 -0
- package/dist/pipeline/tagger.js.map +1 -0
- package/dist/pipeline/title-extractor.d.ts +79 -0
- package/dist/pipeline/title-extractor.d.ts.map +1 -0
- package/dist/pipeline/title-extractor.js +801 -0
- package/dist/pipeline/title-extractor.js.map +1 -0
- package/dist/pipeline/validator.d.ts +65 -0
- package/dist/pipeline/validator.d.ts.map +1 -0
- package/dist/pipeline/validator.js +292 -0
- package/dist/pipeline/validator.js.map +1 -0
- package/dist/proxy/index.d.ts +13 -0
- package/dist/proxy/index.d.ts.map +1 -0
- package/dist/proxy/index.js +12 -0
- package/dist/proxy/index.js.map +1 -0
- package/dist/proxy/providers/anthropic.d.ts +28 -0
- package/dist/proxy/providers/anthropic.d.ts.map +1 -0
- package/dist/proxy/providers/anthropic.js +265 -0
- package/dist/proxy/providers/anthropic.js.map +1 -0
- package/dist/proxy/providers/index.d.ts +19 -0
- package/dist/proxy/providers/index.d.ts.map +1 -0
- package/dist/proxy/providers/index.js +41 -0
- package/dist/proxy/providers/index.js.map +1 -0
- package/dist/proxy/providers/openai.d.ts +27 -0
- package/dist/proxy/providers/openai.d.ts.map +1 -0
- package/dist/proxy/providers/openai.js +203 -0
- package/dist/proxy/providers/openai.js.map +1 -0
- package/dist/proxy/providers/streaming-tool-loop.d.ts +12 -0
- package/dist/proxy/providers/streaming-tool-loop.d.ts.map +1 -0
- package/dist/proxy/providers/streaming-tool-loop.js +223 -0
- package/dist/proxy/providers/streaming-tool-loop.js.map +1 -0
- package/dist/proxy/providers/types.d.ts +109 -0
- package/dist/proxy/providers/types.d.ts.map +1 -0
- package/dist/proxy/providers/types.js +2 -0
- package/dist/proxy/providers/types.js.map +1 -0
- package/dist/proxy/proxy-server.d.ts +61 -0
- package/dist/proxy/proxy-server.d.ts.map +1 -0
- package/dist/proxy/proxy-server.js +146 -0
- package/dist/proxy/proxy-server.js.map +1 -0
- package/dist/proxy/rehydra-fetch.d.ts +35 -0
- package/dist/proxy/rehydra-fetch.d.ts.map +1 -0
- package/dist/proxy/rehydra-fetch.js +631 -0
- package/dist/proxy/rehydra-fetch.js.map +1 -0
- package/dist/proxy/rehydra-proxy.d.ts +40 -0
- package/dist/proxy/rehydra-proxy.d.ts.map +1 -0
- package/dist/proxy/rehydra-proxy.js +150 -0
- package/dist/proxy/rehydra-proxy.js.map +1 -0
- package/dist/proxy/sse-parser.d.ts +59 -0
- package/dist/proxy/sse-parser.d.ts.map +1 -0
- package/dist/proxy/sse-parser.js +112 -0
- package/dist/proxy/sse-parser.js.map +1 -0
- package/dist/proxy/system-instruction.d.ts +19 -0
- package/dist/proxy/system-instruction.d.ts.map +1 -0
- package/dist/proxy/system-instruction.js +33 -0
- package/dist/proxy/system-instruction.js.map +1 -0
- package/dist/proxy/tool-loop-stream.d.ts +7 -0
- package/dist/proxy/tool-loop-stream.d.ts.map +1 -0
- package/dist/proxy/tool-loop-stream.js +65 -0
- package/dist/proxy/tool-loop-stream.js.map +1 -0
- package/dist/proxy/types.d.ts +138 -0
- package/dist/proxy/types.d.ts.map +1 -0
- package/dist/proxy/types.js +5 -0
- package/dist/proxy/types.js.map +1 -0
- package/dist/proxy/wrap-client.d.ts +47 -0
- package/dist/proxy/wrap-client.d.ts.map +1 -0
- package/dist/proxy/wrap-client.js +70 -0
- package/dist/proxy/wrap-client.js.map +1 -0
- package/dist/recognizers/address.d.ts +2 -0
- package/dist/recognizers/address.d.ts.map +1 -0
- package/dist/recognizers/address.js +23 -0
- package/dist/recognizers/address.js.map +1 -0
- package/dist/recognizers/base.d.ts +78 -0
- package/dist/recognizers/base.d.ts.map +1 -0
- package/dist/recognizers/base.js +100 -0
- package/dist/recognizers/base.js.map +1 -0
- package/dist/recognizers/bic-swift.d.ts +10 -0
- package/dist/recognizers/bic-swift.d.ts.map +1 -0
- package/dist/recognizers/bic-swift.js +107 -0
- package/dist/recognizers/bic-swift.js.map +1 -0
- package/dist/recognizers/credit-card.d.ts +32 -0
- package/dist/recognizers/credit-card.d.ts.map +1 -0
- package/dist/recognizers/credit-card.js +160 -0
- package/dist/recognizers/credit-card.js.map +1 -0
- package/dist/recognizers/custom-id.d.ts +28 -0
- package/dist/recognizers/custom-id.d.ts.map +1 -0
- package/dist/recognizers/custom-id.js +116 -0
- package/dist/recognizers/custom-id.js.map +1 -0
- package/dist/recognizers/date.d.ts +10 -0
- package/dist/recognizers/date.d.ts.map +1 -0
- package/dist/recognizers/date.js +228 -0
- package/dist/recognizers/date.js.map +1 -0
- package/dist/recognizers/email.d.ts +10 -0
- package/dist/recognizers/email.d.ts.map +1 -0
- package/dist/recognizers/email.js +75 -0
- package/dist/recognizers/email.js.map +1 -0
- package/dist/recognizers/iban.d.ts +14 -0
- package/dist/recognizers/iban.d.ts.map +1 -0
- package/dist/recognizers/iban.js +67 -0
- package/dist/recognizers/iban.js.map +1 -0
- package/dist/recognizers/index.d.ts +25 -0
- package/dist/recognizers/index.d.ts.map +1 -0
- package/dist/recognizers/index.js +53 -0
- package/dist/recognizers/index.js.map +1 -0
- package/dist/recognizers/ip-address.d.ts +14 -0
- package/dist/recognizers/ip-address.d.ts.map +1 -0
- package/dist/recognizers/ip-address.js +183 -0
- package/dist/recognizers/ip-address.js.map +1 -0
- package/dist/recognizers/phone.d.ts +10 -0
- package/dist/recognizers/phone.d.ts.map +1 -0
- package/dist/recognizers/phone.js +145 -0
- package/dist/recognizers/phone.js.map +1 -0
- package/dist/recognizers/postal-code.d.ts +16 -0
- package/dist/recognizers/postal-code.d.ts.map +1 -0
- package/dist/recognizers/postal-code.js +42 -0
- package/dist/recognizers/postal-code.js.map +1 -0
- package/dist/recognizers/registry.d.ts +59 -0
- package/dist/recognizers/registry.d.ts.map +1 -0
- package/dist/recognizers/registry.js +113 -0
- package/dist/recognizers/registry.js.map +1 -0
- package/dist/recognizers/secrets/api-key.d.ts +6 -0
- package/dist/recognizers/secrets/api-key.d.ts.map +1 -0
- package/dist/recognizers/secrets/api-key.js +40 -0
- package/dist/recognizers/secrets/api-key.js.map +1 -0
- package/dist/recognizers/secrets/aws-credentials.d.ts +7 -0
- package/dist/recognizers/secrets/aws-credentials.d.ts.map +1 -0
- package/dist/recognizers/secrets/aws-credentials.js +68 -0
- package/dist/recognizers/secrets/aws-credentials.js.map +1 -0
- package/dist/recognizers/secrets/config-secret.d.ts +8 -0
- package/dist/recognizers/secrets/config-secret.d.ts.map +1 -0
- package/dist/recognizers/secrets/config-secret.js +59 -0
- package/dist/recognizers/secrets/config-secret.js.map +1 -0
- package/dist/recognizers/secrets/connection-string.d.ts +6 -0
- package/dist/recognizers/secrets/connection-string.d.ts.map +1 -0
- package/dist/recognizers/secrets/connection-string.js +40 -0
- package/dist/recognizers/secrets/connection-string.js.map +1 -0
- package/dist/recognizers/secrets/env-var.d.ts +8 -0
- package/dist/recognizers/secrets/env-var.d.ts.map +1 -0
- package/dist/recognizers/secrets/env-var.js +54 -0
- package/dist/recognizers/secrets/env-var.js.map +1 -0
- package/dist/recognizers/secrets/index.d.ts +22 -0
- package/dist/recognizers/secrets/index.d.ts.map +1 -0
- package/dist/recognizers/secrets/index.js +41 -0
- package/dist/recognizers/secrets/index.js.map +1 -0
- package/dist/recognizers/secrets/jwt.d.ts +6 -0
- package/dist/recognizers/secrets/jwt.d.ts.map +1 -0
- package/dist/recognizers/secrets/jwt.js +47 -0
- package/dist/recognizers/secrets/jwt.js.map +1 -0
- package/dist/recognizers/secrets/key-patterns.d.ts +10 -0
- package/dist/recognizers/secrets/key-patterns.d.ts.map +1 -0
- package/dist/recognizers/secrets/key-patterns.js +15 -0
- package/dist/recognizers/secrets/key-patterns.js.map +1 -0
- package/dist/recognizers/secrets/literal-value.d.ts +10 -0
- package/dist/recognizers/secrets/literal-value.d.ts.map +1 -0
- package/dist/recognizers/secrets/literal-value.js +48 -0
- package/dist/recognizers/secrets/literal-value.js.map +1 -0
- package/dist/recognizers/secrets/private-key.d.ts +6 -0
- package/dist/recognizers/secrets/private-key.d.ts.map +1 -0
- package/dist/recognizers/secrets/private-key.js +16 -0
- package/dist/recognizers/secrets/private-key.js.map +1 -0
- package/dist/recognizers/url.d.ts +14 -0
- package/dist/recognizers/url.d.ts.map +1 -0
- package/dist/recognizers/url.js +121 -0
- package/dist/recognizers/url.js.map +1 -0
- package/dist/storage/browser.d.ts +13 -0
- package/dist/storage/browser.d.ts.map +1 -0
- package/dist/storage/browser.js +13 -0
- package/dist/storage/browser.js.map +1 -0
- package/dist/storage/in-memory.d.ts +60 -0
- package/dist/storage/in-memory.d.ts.map +1 -0
- package/dist/storage/in-memory.js +108 -0
- package/dist/storage/in-memory.js.map +1 -0
- package/dist/storage/index.d.ts +11 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +11 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/indexeddb.d.ts +69 -0
- package/dist/storage/indexeddb.d.ts.map +1 -0
- package/dist/storage/indexeddb.js +274 -0
- package/dist/storage/indexeddb.js.map +1 -0
- package/dist/storage/session-base.d.ts +34 -0
- package/dist/storage/session-base.d.ts.map +1 -0
- package/dist/storage/session-base.js +122 -0
- package/dist/storage/session-base.js.map +1 -0
- package/dist/storage/session.d.ts +19 -0
- package/dist/storage/session.d.ts.map +1 -0
- package/dist/storage/session.js +31 -0
- package/dist/storage/session.js.map +1 -0
- package/dist/storage/sqlite.d.ts +80 -0
- package/dist/storage/sqlite.d.ts.map +1 -0
- package/dist/storage/sqlite.js +255 -0
- package/dist/storage/sqlite.js.map +1 -0
- package/dist/storage/types.d.ts +208 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +6 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/streaming/anonymizer-stream.d.ts +63 -0
- package/dist/streaming/anonymizer-stream.d.ts.map +1 -0
- package/dist/streaming/anonymizer-stream.js +184 -0
- package/dist/streaming/anonymizer-stream.js.map +1 -0
- package/dist/streaming/index.d.ts +9 -0
- package/dist/streaming/index.d.ts.map +1 -0
- package/dist/streaming/index.js +8 -0
- package/dist/streaming/index.js.map +1 -0
- package/dist/streaming/sentence-buffer.d.ts +78 -0
- package/dist/streaming/sentence-buffer.d.ts.map +1 -0
- package/dist/streaming/sentence-buffer.js +239 -0
- package/dist/streaming/sentence-buffer.js.map +1 -0
- package/dist/streaming/stream-factory.d.ts +38 -0
- package/dist/streaming/stream-factory.d.ts.map +1 -0
- package/dist/streaming/stream-factory.js +69 -0
- package/dist/streaming/stream-factory.js.map +1 -0
- package/dist/streaming/types.d.ts +121 -0
- package/dist/streaming/types.d.ts.map +1 -0
- package/dist/streaming/types.js +5 -0
- package/dist/streaming/types.js.map +1 -0
- package/dist/types/index.d.ts +269 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +95 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/pii-types.d.ts +64 -0
- package/dist/types/pii-types.d.ts.map +1 -0
- package/dist/types/pii-types.js +153 -0
- package/dist/types/pii-types.js.map +1 -0
- package/dist/utils/iban-checksum.d.ts +23 -0
- package/dist/utils/iban-checksum.d.ts.map +1 -0
- package/dist/utils/iban-checksum.js +106 -0
- package/dist/utils/iban-checksum.js.map +1 -0
- package/dist/utils/index.d.ts +11 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +11 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/json-walk.d.ts +21 -0
- package/dist/utils/json-walk.d.ts.map +1 -0
- package/dist/utils/json-walk.js +44 -0
- package/dist/utils/json-walk.js.map +1 -0
- package/dist/utils/luhn.d.ts +17 -0
- package/dist/utils/luhn.d.ts.map +1 -0
- package/dist/utils/luhn.js +55 -0
- package/dist/utils/luhn.js.map +1 -0
- package/dist/utils/offsets.d.ts +86 -0
- package/dist/utils/offsets.d.ts.map +1 -0
- package/dist/utils/offsets.js +124 -0
- package/dist/utils/offsets.js.map +1 -0
- package/dist/utils/path.d.ts +34 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/path.js +96 -0
- package/dist/utils/path.js.map +1 -0
- package/dist/utils/regex.d.ts +11 -0
- package/dist/utils/regex.d.ts.map +1 -0
- package/dist/utils/regex.js +14 -0
- package/dist/utils/regex.js.map +1 -0
- package/dist/utils/storage-browser.d.ts +51 -0
- package/dist/utils/storage-browser.d.ts.map +1 -0
- package/dist/utils/storage-browser.js +381 -0
- package/dist/utils/storage-browser.js.map +1 -0
- package/dist/utils/storage-node.d.ts +51 -0
- package/dist/utils/storage-node.d.ts.map +1 -0
- package/dist/utils/storage-node.js +153 -0
- package/dist/utils/storage-node.js.map +1 -0
- package/dist/utils/storage.browser.d.ts +75 -0
- package/dist/utils/storage.browser.d.ts.map +1 -0
- package/dist/utils/storage.browser.js +69 -0
- package/dist/utils/storage.browser.js.map +1 -0
- package/dist/utils/storage.d.ts +73 -0
- package/dist/utils/storage.d.ts.map +1 -0
- package/dist/utils/storage.js +69 -0
- package/dist/utils/storage.js.map +1 -0
- package/package.json +148 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-factory.js","sourceRoot":"","sources":["../../src/streaming/stream-factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,SAAuB,EAAE;IAEzB,8DAA8D;IAC9D,IAAI,gBAAgB,GAAiC,MAAM,CAAC,UAAU,CAAC;IACvE,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,EAAE,CAAC;QACvC,gBAAgB,GAAG;YACjB,GAAG,gBAAgB;YACnB,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;SAC1B,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,+EAA+E;IAC/E,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,gBAAgB,GAAG;YACjB,GAAG,gBAAgB;YACnB,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC;IACJ,CAAC;IAED,uCAAuC;IACvC,MAAM,UAAU,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACtD,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;IAE9B,0DAA0D;IAC1D,IAAI,aAAoC,CAAC;IACzC,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,EAAE,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QAC7I,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YAC9C,aAAa,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,OAAO,IAAI,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streaming Anonymization Types
|
|
3
|
+
*/
|
|
4
|
+
import type { TransformOptions } from "node:stream";
|
|
5
|
+
import type { AnonymizerConfig } from "../core/anonymizer.js";
|
|
6
|
+
import type { AnonymizationPolicy, DetectedEntity, EncryptedPIIMap } from "../types/index.js";
|
|
7
|
+
import type { KeyProvider } from "../crypto/index.js";
|
|
8
|
+
import type { PIIStorageProvider } from "../storage/types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Configuration for the streaming anonymizer
|
|
11
|
+
*/
|
|
12
|
+
export interface StreamConfig {
|
|
13
|
+
/** Base anonymizer config */
|
|
14
|
+
anonymizer?: AnonymizerConfig;
|
|
15
|
+
/** Policy override for all chunks */
|
|
16
|
+
policy?: Partial<AnonymizationPolicy>;
|
|
17
|
+
/** Locale hint (e.g., 'de-DE', 'en-US') */
|
|
18
|
+
locale?: string;
|
|
19
|
+
/** Sentence buffer configuration */
|
|
20
|
+
buffer?: SentenceBufferConfig;
|
|
21
|
+
/** Session ID for cross-chunk ID persistence and storage */
|
|
22
|
+
sessionId?: string;
|
|
23
|
+
/** Storage provider (required if sessionId is set) */
|
|
24
|
+
piiStorageProvider?: PIIStorageProvider;
|
|
25
|
+
/** Key provider (required if sessionId is set) */
|
|
26
|
+
keyProvider?: KeyProvider;
|
|
27
|
+
/**
|
|
28
|
+
* Interval in milliseconds for saving the PII map to storage during streaming.
|
|
29
|
+
* When set, saves at most once per interval (in addition to the final save on flush).
|
|
30
|
+
* Useful for crash recovery on long streams.
|
|
31
|
+
* @default undefined (only save on stream end)
|
|
32
|
+
*/
|
|
33
|
+
saveIntervalMs?: number;
|
|
34
|
+
/** Node.js Transform stream options (highWaterMark, etc.) */
|
|
35
|
+
streamOptions?: TransformOptions;
|
|
36
|
+
/** Callback fired after each chunk is anonymized */
|
|
37
|
+
onChunk?: (event: StreamChunkEvent) => void;
|
|
38
|
+
/** Callback fired when the stream finishes */
|
|
39
|
+
onFinish?: (event: StreamFinishEvent) => void;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Sentence buffer configuration
|
|
43
|
+
*/
|
|
44
|
+
export interface SentenceBufferConfig {
|
|
45
|
+
/**
|
|
46
|
+
* Overlap size in characters for NER context window.
|
|
47
|
+
* The overlap region from the previous chunk is re-processed
|
|
48
|
+
* to catch entities that span boundaries.
|
|
49
|
+
* @default 100
|
|
50
|
+
*/
|
|
51
|
+
overlapChars?: number;
|
|
52
|
+
/**
|
|
53
|
+
* Maximum buffer size before forcing a flush.
|
|
54
|
+
* Prevents unbounded memory growth if no sentence boundary is found.
|
|
55
|
+
* @default 8192
|
|
56
|
+
*/
|
|
57
|
+
maxBufferSize?: number;
|
|
58
|
+
/**
|
|
59
|
+
* Minimum characters to buffer before attempting sentence detection.
|
|
60
|
+
* In low-latency mode this is automatically reduced.
|
|
61
|
+
* @default 50
|
|
62
|
+
*/
|
|
63
|
+
minBufferSize?: number;
|
|
64
|
+
/**
|
|
65
|
+
* Low-latency mode for LLM token streams.
|
|
66
|
+
* - Reduces buffer sizes
|
|
67
|
+
* - Disables NER (regex-only)
|
|
68
|
+
* - Flushes more aggressively
|
|
69
|
+
* @default false
|
|
70
|
+
*/
|
|
71
|
+
lowLatency?: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Custom sentence boundary regex.
|
|
74
|
+
* @default /[.!?]\s+|[\n]{2,}/
|
|
75
|
+
*/
|
|
76
|
+
sentenceBoundary?: RegExp;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Event emitted after each chunk is processed
|
|
80
|
+
*/
|
|
81
|
+
export interface StreamChunkEvent {
|
|
82
|
+
/** Anonymized text for this chunk */
|
|
83
|
+
anonymizedText: string;
|
|
84
|
+
/** Entities detected in this chunk */
|
|
85
|
+
entities: Omit<DetectedEntity, "original">[];
|
|
86
|
+
/** Cumulative entity count */
|
|
87
|
+
totalEntities: number;
|
|
88
|
+
/** Processing time for this chunk in ms */
|
|
89
|
+
processingTimeMs: number;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Event emitted when the stream finishes
|
|
93
|
+
*/
|
|
94
|
+
export interface StreamFinishEvent {
|
|
95
|
+
/** Total entities across all chunks */
|
|
96
|
+
totalEntities: number;
|
|
97
|
+
/** Final encrypted PII map (if pseudonymize mode) */
|
|
98
|
+
piiMap?: EncryptedPIIMap;
|
|
99
|
+
/** Total processing time in ms */
|
|
100
|
+
totalProcessingTimeMs: number;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Result of a single buffer flush
|
|
104
|
+
*/
|
|
105
|
+
export interface FlushResult {
|
|
106
|
+
/** Anonymized text for the new (non-overlap) portion */
|
|
107
|
+
anonymizedText: string;
|
|
108
|
+
/** Entities detected in this flush */
|
|
109
|
+
entities: Omit<DetectedEntity, "original">[];
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Resolved buffer configuration with defaults applied
|
|
113
|
+
*/
|
|
114
|
+
export interface ResolvedBufferConfig {
|
|
115
|
+
overlapChars: number;
|
|
116
|
+
maxBufferSize: number;
|
|
117
|
+
minBufferSize: number;
|
|
118
|
+
lowLatency: boolean;
|
|
119
|
+
sentenceBoundary: RegExp;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/streaming/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,6BAA6B;IAC7B,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B,qCAAqC;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEtC,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,oCAAoC;IACpC,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAE9B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,sDAAsD;IACtD,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAExC,kDAAkD;IAClD,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,gBAAgB,CAAC;IAEjC,oDAAoD;IACpD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAE5C,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE,CAAC;IAC7C,8BAA8B;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,kCAAkC;IAClC,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,cAAc,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/streaming/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { PIIType } from "./pii-types.js";
|
|
2
|
+
export * from "./pii-types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Source of entity detection
|
|
5
|
+
*/
|
|
6
|
+
export declare enum DetectionSource {
|
|
7
|
+
REGEX = "REGEX",
|
|
8
|
+
NER = "NER",
|
|
9
|
+
HYBRID = "HYBRID"
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Anonymization mode
|
|
13
|
+
* - 'pseudonymize': Reversible anonymization with encrypted PII map (default)
|
|
14
|
+
* - 'anonymize': Irreversible anonymization without PII map
|
|
15
|
+
*/
|
|
16
|
+
export type AnonymizationMode = "pseudonymize" | "anonymize";
|
|
17
|
+
/**
|
|
18
|
+
* Gender attribute for PERSON entities
|
|
19
|
+
* Used to preserve grammatical agreement during machine translation
|
|
20
|
+
*/
|
|
21
|
+
export type PersonGender = "male" | "female" | "neutral" | "unknown";
|
|
22
|
+
/**
|
|
23
|
+
* Scope attribute for LOCATION entities
|
|
24
|
+
* Helps MT engines select correct prepositions (e.g., "in Berlin" vs "in Germany")
|
|
25
|
+
*/
|
|
26
|
+
export type LocationScope = "city" | "country" | "region" | "macro-region" | "unknown";
|
|
27
|
+
/**
|
|
28
|
+
* Semantic attributes for PII entities
|
|
29
|
+
* These attributes help preserve linguistic context during translation
|
|
30
|
+
*/
|
|
31
|
+
export interface SemanticAttributes {
|
|
32
|
+
/** Gender for PERSON entities */
|
|
33
|
+
gender?: PersonGender;
|
|
34
|
+
/** Geographic scope for LOCATION entities */
|
|
35
|
+
scope?: LocationScope;
|
|
36
|
+
/** Honorific title extracted from PERSON entities (e.g., "Dr.", "Mrs.") */
|
|
37
|
+
title?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Configures the delimiter format used for PII placeholder tags.
|
|
41
|
+
*
|
|
42
|
+
* Default (XML-style): `<PII type="EMAIL" id="1"/>`
|
|
43
|
+
* Custom example: `[[PII type="EMAIL" id="1"]]`
|
|
44
|
+
*/
|
|
45
|
+
export interface TagFormat {
|
|
46
|
+
/** Opening delimiter (e.g., "<" for XML, "[[" for bracket style) */
|
|
47
|
+
open: string;
|
|
48
|
+
/** Closing delimiter (e.g., "/>" for XML self-closing, "]]" for bracket style) */
|
|
49
|
+
close: string;
|
|
50
|
+
/** Tag keyword (default: "PII"). Allows e.g., "REDACTED" instead of "PII" */
|
|
51
|
+
keyword?: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Default XML-style tag format: `<PII type="..." id="N"/>`
|
|
55
|
+
*/
|
|
56
|
+
export declare const DEFAULT_TAG_FORMAT: TagFormat;
|
|
57
|
+
/**
|
|
58
|
+
* Progress callback for semantic data downloads
|
|
59
|
+
*/
|
|
60
|
+
export type SemanticDownloadProgressCallback = (progress: {
|
|
61
|
+
file: string;
|
|
62
|
+
bytesDownloaded: number;
|
|
63
|
+
totalBytes: number | null;
|
|
64
|
+
percent: number | null;
|
|
65
|
+
}) => void;
|
|
66
|
+
/**
|
|
67
|
+
* Semantic enrichment configuration
|
|
68
|
+
* Controls automatic downloading and loading of semantic data for MT-friendly PII tags
|
|
69
|
+
*/
|
|
70
|
+
export interface SemanticConfig {
|
|
71
|
+
/**
|
|
72
|
+
* Whether to enable semantic masking (adds gender/scope attributes to PII tags)
|
|
73
|
+
* @default false
|
|
74
|
+
*/
|
|
75
|
+
enabled: boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Whether to auto-download semantic data if not present
|
|
78
|
+
* Data files include name-gender mappings (~40K names) and location data (~25K cities)
|
|
79
|
+
* Total download size: ~4 MB
|
|
80
|
+
* @default true when enabled is true
|
|
81
|
+
*/
|
|
82
|
+
autoDownload?: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Callback for download progress
|
|
85
|
+
*/
|
|
86
|
+
onDownloadProgress?: SemanticDownloadProgressCallback;
|
|
87
|
+
/**
|
|
88
|
+
* Callback for status messages
|
|
89
|
+
*/
|
|
90
|
+
onStatus?: (status: string) => void;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Identifier of a PII tag.
|
|
94
|
+
*
|
|
95
|
+
* IDs assigned by the tagger are 1-based, monotonically increasing numbers.
|
|
96
|
+
* Externally generated IDs (e.g. seeded through an existing PII map) may also
|
|
97
|
+
* be lowercase alphanumeric strings (`[0-9a-z]+`), which lets callers derive a
|
|
98
|
+
* stable ID from the value it masks. Decimal-only IDs are always represented
|
|
99
|
+
* as numbers; any ID containing letters is represented as a lowercase string.
|
|
100
|
+
*/
|
|
101
|
+
export type TagId = number | string;
|
|
102
|
+
/**
|
|
103
|
+
* A detected PII entity with its position and metadata
|
|
104
|
+
*/
|
|
105
|
+
export interface DetectedEntity {
|
|
106
|
+
/** PII category */
|
|
107
|
+
type: PIIType;
|
|
108
|
+
/** Unique identifier within the document (see {@link TagId}) */
|
|
109
|
+
id: TagId;
|
|
110
|
+
/** Start character offset in original text (0-based, inclusive) */
|
|
111
|
+
start: number;
|
|
112
|
+
/** End character offset in original text (0-based, exclusive) */
|
|
113
|
+
end: number;
|
|
114
|
+
/** Detection confidence score (0.0 to 1.0) */
|
|
115
|
+
confidence: number;
|
|
116
|
+
/** How this entity was detected */
|
|
117
|
+
source: DetectionSource;
|
|
118
|
+
/** Original text (only stored in encrypted pii_map, never logged) */
|
|
119
|
+
original: string;
|
|
120
|
+
/** Semantic attributes for MT-friendly tags (gender, scope, etc.) */
|
|
121
|
+
semantic?: SemanticAttributes;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* A span match from a recognizer (before ID assignment)
|
|
125
|
+
*/
|
|
126
|
+
export interface SpanMatch {
|
|
127
|
+
/** PII category */
|
|
128
|
+
type: PIIType;
|
|
129
|
+
/** Start character offset (0-based, inclusive) */
|
|
130
|
+
start: number;
|
|
131
|
+
/** End character offset (0-based, exclusive) */
|
|
132
|
+
end: number;
|
|
133
|
+
/** Detection confidence score (0.0 to 1.0) */
|
|
134
|
+
confidence: number;
|
|
135
|
+
/** How this span was detected */
|
|
136
|
+
source: DetectionSource;
|
|
137
|
+
/** The matched text */
|
|
138
|
+
text: string;
|
|
139
|
+
/** Semantic attributes for MT-friendly tags (gender, scope, etc.) */
|
|
140
|
+
semantic?: SemanticAttributes;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Custom ID pattern configuration
|
|
144
|
+
*/
|
|
145
|
+
export interface CustomIdPattern {
|
|
146
|
+
/** Pattern name for identification */
|
|
147
|
+
name: string;
|
|
148
|
+
/** Regular expression pattern */
|
|
149
|
+
pattern: RegExp;
|
|
150
|
+
/** PII type to assign (typically CASE_ID or CUSTOMER_ID) */
|
|
151
|
+
type: PIIType;
|
|
152
|
+
/** Optional validation function */
|
|
153
|
+
validate?: (match: string) => boolean;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Anonymization policy configuration
|
|
157
|
+
*/
|
|
158
|
+
export interface AnonymizationPolicy {
|
|
159
|
+
/** Set of PII types to detect (both regex and NER) */
|
|
160
|
+
enabledTypes: Set<PIIType>;
|
|
161
|
+
/** Set of PII types to detect via regex */
|
|
162
|
+
regexEnabledTypes: Set<PIIType>;
|
|
163
|
+
/** Set of PII types to detect via NER */
|
|
164
|
+
nerEnabledTypes: Set<PIIType>;
|
|
165
|
+
/** Priority order for resolving overlapping entities (higher index = higher priority) */
|
|
166
|
+
typePriority: PIIType[];
|
|
167
|
+
/** Minimum confidence thresholds per type (default: 0.5) */
|
|
168
|
+
confidenceThresholds: Map<PIIType, number>;
|
|
169
|
+
/** Custom ID patterns for domain-specific identifiers */
|
|
170
|
+
customIdPatterns: CustomIdPattern[];
|
|
171
|
+
/** Terms that should not be treated as PII (case-insensitive) */
|
|
172
|
+
allowlistTerms: Set<string>;
|
|
173
|
+
/** Terms that should always be treated as PII */
|
|
174
|
+
denylistPatterns: RegExp[];
|
|
175
|
+
/** Whether to reuse IDs for identical repeated PII strings */
|
|
176
|
+
reuseIdsForRepeatedPII: boolean;
|
|
177
|
+
/** Whether to run leak scan on anonymized output */
|
|
178
|
+
enableLeakScan: boolean;
|
|
179
|
+
/** Enable semantic attribute enrichment for MT-friendly tags (gender, location scope) */
|
|
180
|
+
enableSemanticMasking: boolean;
|
|
181
|
+
/** Location scopes to exclude from anonymization (e.g., 'country', 'region').
|
|
182
|
+
* Requires enableSemanticMasking to be true. Locations whose scope matches
|
|
183
|
+
* one of these values are dropped before tagging. */
|
|
184
|
+
excludeLocationScopes: Set<LocationScope>;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Encrypted PII map entry
|
|
188
|
+
*/
|
|
189
|
+
export interface EncryptedPIIMap {
|
|
190
|
+
/** AES-256-GCM encrypted data (base64) */
|
|
191
|
+
ciphertext: string;
|
|
192
|
+
/** Initialization vector (base64) */
|
|
193
|
+
iv: string;
|
|
194
|
+
/** Authentication tag (base64) */
|
|
195
|
+
authTag: string;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Statistics about the anonymization process
|
|
199
|
+
*/
|
|
200
|
+
export interface AnonymizationStats {
|
|
201
|
+
/** Count of entities detected per type */
|
|
202
|
+
countsByType: Record<PIIType, number>;
|
|
203
|
+
/** Total number of entities detected */
|
|
204
|
+
totalEntities: number;
|
|
205
|
+
/** NER model version used */
|
|
206
|
+
modelVersion: string;
|
|
207
|
+
/** Policy version/identifier */
|
|
208
|
+
policyVersion: string;
|
|
209
|
+
/** Processing time in milliseconds */
|
|
210
|
+
processingTimeMs: number;
|
|
211
|
+
/** Whether leak scan passed (if enabled) */
|
|
212
|
+
leakScanPassed?: boolean;
|
|
213
|
+
/**
|
|
214
|
+
* True when NER coverage was truncated because the input exceeded
|
|
215
|
+
* maxWindowsPerInput (its tail was not scanned by the NER model). Regex
|
|
216
|
+
* detection is unaffected. Callers enforcing a fail-closed policy should
|
|
217
|
+
* treat this as incomplete masking. Undefined when NER did not run (e.g.
|
|
218
|
+
* regex-only) or the producer does not report coverage.
|
|
219
|
+
*/
|
|
220
|
+
nerTruncated?: boolean;
|
|
221
|
+
/**
|
|
222
|
+
* Number of leading input characters NER scanned (in prenormalized space).
|
|
223
|
+
* Only meaningful when nerTruncated is true: a caller can cut the input at
|
|
224
|
+
* this offset to keep only the fully-scanned portion. Because prenormalized
|
|
225
|
+
* text is never longer than the original, cutting the original string at
|
|
226
|
+
* this offset stays at or before the true boundary (never keeps unscanned
|
|
227
|
+
* content).
|
|
228
|
+
*/
|
|
229
|
+
nerCoverageChars?: number;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Result of the anonymization process
|
|
233
|
+
*/
|
|
234
|
+
export interface AnonymizationResult {
|
|
235
|
+
/** Text with PII replaced by placeholder tags */
|
|
236
|
+
anonymizedText: string;
|
|
237
|
+
/** List of detected entities (without original text for safety) */
|
|
238
|
+
entities: Omit<DetectedEntity, "original">[];
|
|
239
|
+
/** Encrypted mapping of (type, id) -> original string (undefined in 'anonymize' mode) */
|
|
240
|
+
piiMap?: EncryptedPIIMap;
|
|
241
|
+
/** Statistics about the anonymization */
|
|
242
|
+
stats: AnonymizationStats;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Creates a default anonymization policy with all types enabled
|
|
246
|
+
*/
|
|
247
|
+
/**
|
|
248
|
+
* Secrets/credentials detection configuration
|
|
249
|
+
*/
|
|
250
|
+
export interface SecretsConfig {
|
|
251
|
+
/** Enable secrets/credentials detection */
|
|
252
|
+
enabled: boolean;
|
|
253
|
+
/** .env file paths or Node.js glob patterns to parse for known secret values */
|
|
254
|
+
envFiles?: string[];
|
|
255
|
+
/** Base directory for Node.js envFiles paths/globs. Defaults to process.cwd(). */
|
|
256
|
+
envBaseDirectory?: string;
|
|
257
|
+
/** Explicit values to always redact */
|
|
258
|
+
redactValues?: string[];
|
|
259
|
+
/** Additional key name patterns for ENV_VAR_SECRET / CONFIG_SECRET detection */
|
|
260
|
+
secretKeyPatterns?: RegExp[];
|
|
261
|
+
/** Minimum value length to consider as a secret (default: 4) */
|
|
262
|
+
minValueLength?: number;
|
|
263
|
+
}
|
|
264
|
+
export declare function createDefaultPolicy(): AnonymizationPolicy;
|
|
265
|
+
/**
|
|
266
|
+
* Merges a partial policy with defaults
|
|
267
|
+
*/
|
|
268
|
+
export declare function mergePolicy(partial: Partial<AnonymizationPolicy>): AnonymizationPolicy;
|
|
269
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { PIIType, DEFAULT_TYPE_PRIORITY, SECRET_PII_TYPES } from "./pii-types.js";
|
|
2
|
+
export * from "./pii-types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Source of entity detection
|
|
5
|
+
*/
|
|
6
|
+
export var DetectionSource;
|
|
7
|
+
(function (DetectionSource) {
|
|
8
|
+
DetectionSource["REGEX"] = "REGEX";
|
|
9
|
+
DetectionSource["NER"] = "NER";
|
|
10
|
+
DetectionSource["HYBRID"] = "HYBRID";
|
|
11
|
+
})(DetectionSource || (DetectionSource = {}));
|
|
12
|
+
/**
|
|
13
|
+
* Default XML-style tag format: `<PII type="..." id="N"/>`
|
|
14
|
+
*/
|
|
15
|
+
export const DEFAULT_TAG_FORMAT = {
|
|
16
|
+
open: "<",
|
|
17
|
+
close: "/>",
|
|
18
|
+
keyword: "PII",
|
|
19
|
+
};
|
|
20
|
+
export function createDefaultPolicy() {
|
|
21
|
+
const allTypes = new Set(Object.values(PIIType));
|
|
22
|
+
// Secret types are opt-in only — exclude from default enabled set
|
|
23
|
+
const secretTypeSet = new Set(SECRET_PII_TYPES);
|
|
24
|
+
for (const secretType of secretTypeSet) {
|
|
25
|
+
allTypes.delete(secretType);
|
|
26
|
+
}
|
|
27
|
+
const defaultThresholds = new Map();
|
|
28
|
+
for (const type of allTypes) {
|
|
29
|
+
// Higher threshold for NER-detected types (more uncertainty)
|
|
30
|
+
defaultThresholds.set(type, type === PIIType.PERSON || type === PIIType.ORG ? 0.7 : 0.5);
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
enabledTypes: allTypes,
|
|
34
|
+
regexEnabledTypes: new Set([
|
|
35
|
+
PIIType.ADDRESS,
|
|
36
|
+
PIIType.EMAIL,
|
|
37
|
+
PIIType.PHONE,
|
|
38
|
+
PIIType.POSTAL_CODE,
|
|
39
|
+
PIIType.IBAN,
|
|
40
|
+
PIIType.BIC_SWIFT,
|
|
41
|
+
PIIType.CREDIT_CARD,
|
|
42
|
+
PIIType.IP_ADDRESS,
|
|
43
|
+
PIIType.URL,
|
|
44
|
+
PIIType.DATE,
|
|
45
|
+
PIIType.CASE_ID,
|
|
46
|
+
PIIType.CUSTOMER_ID,
|
|
47
|
+
]),
|
|
48
|
+
nerEnabledTypes: new Set([
|
|
49
|
+
PIIType.PERSON,
|
|
50
|
+
PIIType.ORG,
|
|
51
|
+
PIIType.LOCATION,
|
|
52
|
+
PIIType.ADDRESS,
|
|
53
|
+
PIIType.DATE_OF_BIRTH,
|
|
54
|
+
]),
|
|
55
|
+
typePriority: [...DEFAULT_TYPE_PRIORITY],
|
|
56
|
+
confidenceThresholds: defaultThresholds,
|
|
57
|
+
customIdPatterns: [],
|
|
58
|
+
allowlistTerms: new Set(),
|
|
59
|
+
denylistPatterns: [],
|
|
60
|
+
reuseIdsForRepeatedPII: false,
|
|
61
|
+
enableLeakScan: true,
|
|
62
|
+
enableSemanticMasking: false,
|
|
63
|
+
excludeLocationScopes: new Set(),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Merges a partial policy with defaults
|
|
68
|
+
*/
|
|
69
|
+
export function mergePolicy(partial) {
|
|
70
|
+
const defaultPolicy = createDefaultPolicy();
|
|
71
|
+
// Deep merge confidenceThresholds Map
|
|
72
|
+
let confidenceThresholds = defaultPolicy.confidenceThresholds;
|
|
73
|
+
if (partial.confidenceThresholds !== undefined) {
|
|
74
|
+
confidenceThresholds = new Map(defaultPolicy.confidenceThresholds);
|
|
75
|
+
// Merge in partial thresholds
|
|
76
|
+
for (const [type, threshold] of partial.confidenceThresholds) {
|
|
77
|
+
confidenceThresholds.set(type, threshold);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
enabledTypes: partial.enabledTypes ?? defaultPolicy.enabledTypes,
|
|
82
|
+
regexEnabledTypes: partial.regexEnabledTypes ?? defaultPolicy.regexEnabledTypes,
|
|
83
|
+
nerEnabledTypes: partial.nerEnabledTypes ?? defaultPolicy.nerEnabledTypes,
|
|
84
|
+
typePriority: partial.typePriority ?? defaultPolicy.typePriority,
|
|
85
|
+
confidenceThresholds,
|
|
86
|
+
customIdPatterns: partial.customIdPatterns ?? defaultPolicy.customIdPatterns,
|
|
87
|
+
allowlistTerms: partial.allowlistTerms ?? defaultPolicy.allowlistTerms,
|
|
88
|
+
denylistPatterns: partial.denylistPatterns ?? defaultPolicy.denylistPatterns,
|
|
89
|
+
reuseIdsForRepeatedPII: partial.reuseIdsForRepeatedPII ?? defaultPolicy.reuseIdsForRepeatedPII,
|
|
90
|
+
enableLeakScan: partial.enableLeakScan ?? defaultPolicy.enableLeakScan,
|
|
91
|
+
enableSemanticMasking: partial.enableSemanticMasking ?? defaultPolicy.enableSemanticMasking,
|
|
92
|
+
excludeLocationScopes: partial.excludeLocationScopes ?? defaultPolicy.excludeLocationScopes,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PII Type Enumeration
|
|
3
|
+
* Defines all supported PII categories for detection and anonymization
|
|
4
|
+
*/
|
|
5
|
+
export declare enum PIIType {
|
|
6
|
+
PERSON = "PERSON",
|
|
7
|
+
ORG = "ORG",
|
|
8
|
+
LOCATION = "LOCATION",
|
|
9
|
+
ADDRESS = "ADDRESS",
|
|
10
|
+
POSTAL_CODE = "POSTAL_CODE",
|
|
11
|
+
EMAIL = "EMAIL",
|
|
12
|
+
PHONE = "PHONE",
|
|
13
|
+
GITHUB_USERNAME = "GITHUB_USERNAME",
|
|
14
|
+
URL = "URL",
|
|
15
|
+
IP_ADDRESS = "IP_ADDRESS",
|
|
16
|
+
IBAN = "IBAN",
|
|
17
|
+
BIC_SWIFT = "BIC_SWIFT",
|
|
18
|
+
ACCOUNT_NUMBER = "ACCOUNT_NUMBER",
|
|
19
|
+
CREDIT_CARD = "CREDIT_CARD",
|
|
20
|
+
DATE = "DATE",
|
|
21
|
+
TAX_ID = "TAX_ID",
|
|
22
|
+
NATIONAL_ID = "NATIONAL_ID",
|
|
23
|
+
DATE_OF_BIRTH = "DATE_OF_BIRTH",
|
|
24
|
+
CASE_ID = "CASE_ID",
|
|
25
|
+
CUSTOMER_ID = "CUSTOMER_ID",
|
|
26
|
+
API_KEY = "API_KEY",
|
|
27
|
+
PRIVATE_KEY = "PRIVATE_KEY",
|
|
28
|
+
JWT = "JWT",
|
|
29
|
+
CONNECTION_STRING = "CONNECTION_STRING",
|
|
30
|
+
AWS_CREDENTIALS = "AWS_CREDENTIALS",
|
|
31
|
+
ENV_VAR_SECRET = "ENV_VAR_SECRET",
|
|
32
|
+
CONFIG_SECRET = "CONFIG_SECRET"
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* All PII types as a readonly array for iteration
|
|
36
|
+
*/
|
|
37
|
+
export declare const ALL_PII_TYPES: readonly PIIType[];
|
|
38
|
+
/**
|
|
39
|
+
* PII types that are detected via regex (structured PII)
|
|
40
|
+
*/
|
|
41
|
+
export declare const REGEX_PII_TYPES: readonly PIIType[];
|
|
42
|
+
/**
|
|
43
|
+
* PII types that are secrets/credentials (opt-in, regex-based)
|
|
44
|
+
*/
|
|
45
|
+
export declare const SECRET_PII_TYPES: readonly PIIType[];
|
|
46
|
+
/**
|
|
47
|
+
* PII types that are detected via NER model (soft PII)
|
|
48
|
+
*/
|
|
49
|
+
export declare const NER_PII_TYPES: readonly PIIType[];
|
|
50
|
+
/**
|
|
51
|
+
* Default priority order for resolving overlapping entities
|
|
52
|
+
* Higher index = higher priority
|
|
53
|
+
*/
|
|
54
|
+
export declare const DEFAULT_TYPE_PRIORITY: readonly PIIType[];
|
|
55
|
+
/**
|
|
56
|
+
* Maps NER model labels to PIIType
|
|
57
|
+
* Common label formats from NER models (B-PER, I-PER, B-ORG, etc.)
|
|
58
|
+
*/
|
|
59
|
+
export declare const NER_LABEL_TO_PII_TYPE: Record<string, PIIType>;
|
|
60
|
+
/**
|
|
61
|
+
* Get PIIType from NER label (handles B-/I- prefixes)
|
|
62
|
+
*/
|
|
63
|
+
export declare function getPIITypeFromNERLabel(label: string): PIIType | null;
|
|
64
|
+
//# sourceMappingURL=pii-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pii-types.d.ts","sourceRoot":"","sources":["../../src/types/pii-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,OAAO;IAEjB,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAG3B,KAAK,UAAU;IACf,KAAK,UAAU;IACf,eAAe,oBAAoB;IACnC,GAAG,QAAQ;IACX,UAAU,eAAe;IAGzB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAG3B,IAAI,SAAS;IAGb,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAG/B,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAG3B,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,GAAG,QAAQ;IACX,iBAAiB,sBAAsB;IACvC,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,aAAa,kBAAkB;CAChC;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,OAAO,EAAwC,CAAC;AAErF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,OAAO,EAiB7C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,OAAO,EAQ9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,OAAO,EAM3C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,OAAO,EAgCnD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAWzD,CAAC;AAEF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CASpE"}
|