@zuplo/cli 7.9.9 → 7.9.12

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.
Files changed (62) hide show
  1. package/node_modules/@posthog/core/dist/featureFlagUtils.d.ts.map +1 -1
  2. package/node_modules/@posthog/core/dist/featureFlagUtils.js +2 -1
  3. package/node_modules/@posthog/core/dist/featureFlagUtils.mjs +2 -1
  4. package/node_modules/@posthog/core/dist/index.d.ts +1 -0
  5. package/node_modules/@posthog/core/dist/index.d.ts.map +1 -1
  6. package/node_modules/@posthog/core/dist/index.js +66 -10
  7. package/node_modules/@posthog/core/dist/index.mjs +1 -0
  8. package/node_modules/@posthog/core/dist/privacy.d.ts +35 -0
  9. package/node_modules/@posthog/core/dist/privacy.d.ts.map +1 -0
  10. package/node_modules/@posthog/core/dist/privacy.js +366 -0
  11. package/node_modules/@posthog/core/dist/privacy.mjs +319 -0
  12. package/node_modules/@posthog/core/package.json +2 -2
  13. package/node_modules/@posthog/core/src/featureFlagUtils.ts +2 -0
  14. package/node_modules/@posthog/core/src/index.ts +1 -0
  15. package/node_modules/@posthog/core/src/privacy.ts +696 -0
  16. package/node_modules/@posthog/types/dist/index.d.ts +1 -1
  17. package/node_modules/@posthog/types/dist/index.d.ts.map +1 -1
  18. package/node_modules/@posthog/types/dist/posthog-config.d.ts +39 -8
  19. package/node_modules/@posthog/types/dist/posthog-config.d.ts.map +1 -1
  20. package/node_modules/@posthog/types/package.json +1 -1
  21. package/node_modules/@posthog/types/src/index.ts +1 -0
  22. package/node_modules/@posthog/types/src/posthog-config.ts +41 -8
  23. package/node_modules/@zuplo/core/customer.cli.minified.js +223 -223
  24. package/node_modules/@zuplo/core/index.minified.js +228 -228
  25. package/node_modules/@zuplo/core/package.json +1 -1
  26. package/node_modules/@zuplo/graphql/package.json +1 -1
  27. package/node_modules/@zuplo/openapi-tools/package.json +1 -1
  28. package/node_modules/@zuplo/otel/package.json +1 -1
  29. package/node_modules/@zuplo/runtime/out/esm/chunk-2XSPVUOE.js +411 -0
  30. package/node_modules/@zuplo/runtime/out/esm/chunk-2XSPVUOE.js.map +1 -0
  31. package/node_modules/@zuplo/runtime/out/esm/chunk-PBDT4FDO.js +37 -0
  32. package/node_modules/@zuplo/runtime/out/esm/{chunk-MWIJG5KC.js.map → chunk-PBDT4FDO.js.map} +1 -1
  33. package/node_modules/@zuplo/runtime/out/esm/{chunk-54HRCPVQ.js → chunk-VTO3F6DK.js} +2 -2
  34. package/node_modules/@zuplo/runtime/out/esm/{chunk-6O4OZCO6.js → chunk-YJ2BHVUH.js} +2 -2
  35. package/node_modules/@zuplo/runtime/out/esm/index.js +1 -1
  36. package/node_modules/@zuplo/runtime/out/esm/index.js.map +1 -1
  37. package/node_modules/@zuplo/runtime/out/esm/internal/index.js +1 -1
  38. package/node_modules/@zuplo/runtime/out/esm/mcp-gateway/index.js +1 -1
  39. package/node_modules/@zuplo/runtime/out/esm/mocks/index.js +1 -1
  40. package/node_modules/@zuplo/runtime/out/esm/sdks/aws/index.js +1 -1
  41. package/node_modules/@zuplo/runtime/out/types/index.d.ts +164 -54
  42. package/node_modules/@zuplo/runtime/out/types/internal/index.d.ts +44 -0
  43. package/node_modules/@zuplo/runtime/package.json +1 -1
  44. package/node_modules/express-rate-limit/dist/index.cjs +9 -7
  45. package/node_modules/express-rate-limit/dist/index.mjs +9 -7
  46. package/node_modules/express-rate-limit/package.json +9 -9
  47. package/node_modules/fast-copy/README.md +8 -7
  48. package/node_modules/fast-copy/dist/cjs/index.cjs +1 -1
  49. package/node_modules/fast-copy/dist/cjs/index.cjs.map +1 -1
  50. package/node_modules/fast-copy/dist/es/index.mjs +1 -1
  51. package/node_modules/fast-copy/dist/es/index.mjs.map +1 -1
  52. package/node_modules/fast-copy/dist/umd/index.js +1 -1
  53. package/node_modules/fast-copy/dist/umd/index.js.map +1 -1
  54. package/node_modules/fast-copy/package.json +1 -1
  55. package/package.json +11 -11
  56. package/node_modules/@zuplo/runtime/out/esm/chunk-MWIJG5KC.js +0 -37
  57. package/node_modules/@zuplo/runtime/out/esm/chunk-WFAFGL5Y.js +0 -411
  58. package/node_modules/@zuplo/runtime/out/esm/chunk-WFAFGL5Y.js.map +0 -1
  59. /package/node_modules/@zuplo/runtime/out/esm/{chunk-WFAFGL5Y.js.LEGAL.txt → chunk-2XSPVUOE.js.LEGAL.txt} +0 -0
  60. /package/node_modules/@zuplo/runtime/out/esm/{chunk-MWIJG5KC.js.LEGAL.txt → chunk-PBDT4FDO.js.LEGAL.txt} +0 -0
  61. /package/node_modules/@zuplo/runtime/out/esm/{chunk-54HRCPVQ.js.map → chunk-VTO3F6DK.js.map} +0 -0
  62. /package/node_modules/@zuplo/runtime/out/esm/{chunk-6O4OZCO6.js.map → chunk-YJ2BHVUH.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"featureFlagUtils.d.ts","sourceRoot":"","sources":["../src/featureFlagUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAEhB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EAEtB,mBAAmB,EACnB,2BAA2B,EAC5B,MAAM,SAAS,CAAA;AAEhB,eAAO,MAAM,sBAAsB,kBAE7B,mBAAmB,CAAC,sBAAsB,EAAE,OAAO,CAAC,GACpD,mBAAmB,CAAC,sBAAsB,EAAE,cAAc,GAAG,qBAAqB,CAAC,KACtF,2BAgCF,CAAA;AAqBD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,UAAW,oBAAoB,CAAC,OAAO,CAAC,KAAG,oBAAoB,CAAC,cAAc,CAMhH,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,UACxB,oBAAoB,CAAC,OAAO,CAAC,KACnC,oBAAoB,CAAC,qBAAqB,CAa5C,CAAA;AAED,eAAO,MAAM,mBAAmB,WAAY,iBAAiB,GAAG,SAAS,KAAG,gBAAgB,GAAG,SAE9F,CAAA;AAED,eAAO,MAAM,YAAY,aAAc,GAAG,KAAG,GAU5C,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,uCAAuC,iBACpC,sBAAsB,CAAC,cAAc,CAAC,uBAC/B,sBAAsB,CAAC,qBAAqB,CAAC,KACjE,2BAaF,CAAA;AAED,eAAO,MAAM,eAAe,SAAU,iBAAiB,SAAS,gBAAgB,KAAG,iBAMlF,CAAA;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAEpE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAE/E;AAED,eAAO,MAAM,oBAAoB,gBAAiB,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,KAAG,iBAAiB,EAWtG,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,6CAA6C,YACxD,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,aAAa,EACb,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,MAAM,EACN,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,KAAK,CACG,CAAA;AAEV,eAAO,MAAM,oCAAoC,EAAE,SAAS,MAAM,EAmCjE,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,eAChC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,kBAChB,SAAS,MAAM,EAAE,KAC/B,MAAM,CAAC,MAAM,EAAE,GAAG,CAUpB,CAAA"}
1
+ {"version":3,"file":"featureFlagUtils.d.ts","sourceRoot":"","sources":["../src/featureFlagUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAEhB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EAEtB,mBAAmB,EACnB,2BAA2B,EAC5B,MAAM,SAAS,CAAA;AAEhB,eAAO,MAAM,sBAAsB,kBAE7B,mBAAmB,CAAC,sBAAsB,EAAE,OAAO,CAAC,GACpD,mBAAmB,CAAC,sBAAsB,EAAE,cAAc,GAAG,qBAAqB,CAAC,KACtF,2BAgCF,CAAA;AAqBD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,UAAW,oBAAoB,CAAC,OAAO,CAAC,KAAG,oBAAoB,CAAC,cAAc,CAMhH,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,UACxB,oBAAoB,CAAC,OAAO,CAAC,KACnC,oBAAoB,CAAC,qBAAqB,CAa5C,CAAA;AAED,eAAO,MAAM,mBAAmB,WAAY,iBAAiB,GAAG,SAAS,KAAG,gBAAgB,GAAG,SAE9F,CAAA;AAED,eAAO,MAAM,YAAY,aAAc,GAAG,KAAG,GAU5C,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,uCAAuC,iBACpC,sBAAsB,CAAC,cAAc,CAAC,uBAC/B,sBAAsB,CAAC,qBAAqB,CAAC,KACjE,2BAaF,CAAA;AAED,eAAO,MAAM,eAAe,SAAU,iBAAiB,SAAS,gBAAgB,KAAG,iBAMlF,CAAA;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAEpE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAE/E;AAED,eAAO,MAAM,oBAAoB,gBAAiB,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,KAAG,iBAAiB,EAWtG,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,6CAA6C,YACxD,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,aAAa,EACb,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,MAAM,EACN,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,KAAK,CACG,CAAA;AAEV,eAAO,MAAM,oCAAoC,EAAE,SAAS,MAAM,EAqCjE,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,eAChC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,kBAChB,SAAS,MAAM,EAAE,KAC/B,MAAM,CAAC,MAAM,EAAE,GAAG,CAUpB,CAAA"}
@@ -180,7 +180,8 @@ const MINIMAL_FLAG_CALLED_EVENT_PROPERTIES = [
180
180
  '$lib',
181
181
  '$lib_version',
182
182
  '$device_id',
183
- '$is_server'
183
+ '$is_server',
184
+ '$react_native_version'
184
185
  ];
185
186
  const minimizeFlagCalledEventProperties = (properties, transportKeys = [])=>{
186
187
  const minimal = {};
@@ -151,7 +151,8 @@ const MINIMAL_FLAG_CALLED_EVENT_PROPERTIES = [
151
151
  '$lib',
152
152
  '$lib_version',
153
153
  '$device_id',
154
- '$is_server'
154
+ '$is_server',
155
+ '$react_native_version'
155
156
  ];
156
157
  const minimizeFlagCalledEventProperties = (properties, transportKeys = [])=>{
157
158
  const minimal = {};
@@ -26,6 +26,7 @@ export { uuidv7 } from './vendor/uuidv7';
26
26
  export * from './cookie';
27
27
  export * from './posthog-core';
28
28
  export * from './posthog-core-stateless';
29
+ export * from './privacy';
29
30
  export * from './tracing-headers';
30
31
  export * from './types';
31
32
  export { getValidationError, getLengthFromRules, getRequirementsHint } from './surveys/validation';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACpB,6CAA6C,EAC7C,iCAAiC,GAClC,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,gCAAgC,EAChC,iBAAiB,EACjB,QAAQ,EACR,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,uCAAuC,EACvC,yBAAyB,GAC1B,MAAM,8BAA8B,CAAA;AACrC,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,8BAA8B,EAC9B,kBAAkB,EAClB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACL,YAAY,EACZ,UAAU,EACV,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,QAAQ,CAAA;AACf,cAAc,SAAS,CAAA;AACvB,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAA;AACjD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACpC,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,cAAc,CAAA;AAIrB,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAGzG,YAAY,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAA;AAGhE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,8BAA8B,EAC9B,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,WAAW,CAAA;AAClB,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,WAAW,CAAA;AAElB,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,UAAU,EACV,OAAO,EACP,aAAa,GACd,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAG/F,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAClE,YAAY,EACV,IAAI,EACJ,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,YAAY,GACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,9 @@ var __webpack_modules__ = {
30
30
  "./posthog-core" (module) {
31
31
  module.exports = require("./posthog-core.js");
32
32
  },
33
+ "./privacy" (module) {
34
+ module.exports = require("./privacy.js");
35
+ },
33
36
  "./surveys/validation" (module) {
34
37
  module.exports = require("./surveys/validation.js");
35
38
  },
@@ -337,9 +340,62 @@ var __webpack_exports__ = {};
337
340
  "isGzipSupported"
338
341
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_posthog_core_stateless__rspack_import_17[__rspack_import_key];
339
342
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
340
- var _tracing_headers__rspack_import_18 = __webpack_require__("./tracing-headers");
343
+ var _privacy__rspack_import_18 = __webpack_require__("./privacy");
344
+ var __rspack_reexport = {};
345
+ for(const __rspack_import_key in _privacy__rspack_import_18)if ([
346
+ "resolveFeatureFlagPayload",
347
+ "PostHogTraces",
348
+ "getRequirementsHint",
349
+ "getFeatureFlagValue",
350
+ "isGzipData",
351
+ "hashSHA1",
352
+ "getFeatureFlagVariant",
353
+ "DEFAULT_HISTOGRAM_BOUNDS",
354
+ "getVariantFromValue",
355
+ "getOtlpSeverityNumber",
356
+ "toOtlpKeyValueList",
357
+ "matchFeatureFlagProperty",
358
+ "PostHogMetrics",
359
+ "parseFeatureFlagSemver",
360
+ "InconclusiveMatchError",
361
+ "inertSpan",
362
+ "uuidv7",
363
+ "getLengthFromRules",
364
+ "default",
365
+ "isGzipRequest",
366
+ "getFeatureFlagVariantLookupTable",
367
+ "getEnabledFromValue",
368
+ "parsePayload",
369
+ "isNativeAsyncGzipError",
370
+ "getHoldoutVariant",
371
+ "buildResourceAttributes",
372
+ "MINIMAL_FLAG_CALLED_EVENT_CAMPAIGN_PROPERTIES",
373
+ "resolveMetricsConfig",
374
+ "runWithActiveSpan",
375
+ "toOtlpAnyValue",
376
+ "PostHogLogs",
377
+ "buildMetricsResourceAttributes",
378
+ "buildOtlpLogRecord",
379
+ "getOtlpSeverityText",
380
+ "gzipCompress",
381
+ "buildOtlpMetricsPayload",
382
+ "SyncSpanContextManager",
383
+ "osResourceAttributes",
384
+ "buildOtlpLogsPayload",
385
+ "minimizeFlagCalledEventProperties",
386
+ "flagDetailsToResults",
387
+ "resolveTracesConfig",
388
+ "getFeatureFlagHash",
389
+ "getValidationError",
390
+ "ErrorTracking",
391
+ "isNativeAsyncGzipReadError",
392
+ "relativeDateParseForFeatureFlagMatching",
393
+ "isGzipSupported"
394
+ ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_privacy__rspack_import_18[__rspack_import_key];
395
+ __webpack_require__.d(__webpack_exports__, __rspack_reexport);
396
+ var _tracing_headers__rspack_import_19 = __webpack_require__("./tracing-headers");
341
397
  var __rspack_reexport = {};
342
- for(const __rspack_import_key in _tracing_headers__rspack_import_18)if ([
398
+ for(const __rspack_import_key in _tracing_headers__rspack_import_19)if ([
343
399
  "resolveFeatureFlagPayload",
344
400
  "PostHogTraces",
345
401
  "getRequirementsHint",
@@ -388,11 +444,11 @@ var __webpack_exports__ = {};
388
444
  "isNativeAsyncGzipReadError",
389
445
  "relativeDateParseForFeatureFlagMatching",
390
446
  "isGzipSupported"
391
- ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_tracing_headers__rspack_import_18[__rspack_import_key];
447
+ ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_tracing_headers__rspack_import_19[__rspack_import_key];
392
448
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
393
- var _types__rspack_import_19 = __webpack_require__("./types");
449
+ var _types__rspack_import_20 = __webpack_require__("./types");
394
450
  var __rspack_reexport = {};
395
- for(const __rspack_import_key in _types__rspack_import_19)if ([
451
+ for(const __rspack_import_key in _types__rspack_import_20)if ([
396
452
  "resolveFeatureFlagPayload",
397
453
  "PostHogTraces",
398
454
  "getRequirementsHint",
@@ -441,9 +497,9 @@ var __webpack_exports__ = {};
441
497
  "isNativeAsyncGzipReadError",
442
498
  "relativeDateParseForFeatureFlagMatching",
443
499
  "isGzipSupported"
444
- ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_types__rspack_import_19[__rspack_import_key];
500
+ ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_types__rspack_import_20[__rspack_import_key];
445
501
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
446
- var _surveys_validation__rspack_import_20 = __webpack_require__("./surveys/validation");
502
+ var _surveys_validation__rspack_import_21 = __webpack_require__("./surveys/validation");
447
503
  __webpack_require__.d(__webpack_exports__, {
448
504
  DEFAULT_HISTOGRAM_BOUNDS: ()=>_metrics__rspack_import_9.DEFAULT_HISTOGRAM_BOUNDS,
449
505
  ErrorTracking: ()=>_error_tracking__rspack_import_4,
@@ -465,11 +521,11 @@ var __webpack_exports__ = {};
465
521
  getFeatureFlagVariant: ()=>_featureFlagLocalEvaluation__rspack_import_1.getFeatureFlagVariant,
466
522
  getFeatureFlagVariantLookupTable: ()=>_featureFlagLocalEvaluation__rspack_import_1.getFeatureFlagVariantLookupTable,
467
523
  getHoldoutVariant: ()=>_featureFlagLocalEvaluation__rspack_import_1.getHoldoutVariant,
468
- getLengthFromRules: ()=>_surveys_validation__rspack_import_20.getLengthFromRules,
524
+ getLengthFromRules: ()=>_surveys_validation__rspack_import_21.getLengthFromRules,
469
525
  getOtlpSeverityNumber: ()=>_logs_logs_utils__rspack_import_5.getOtlpSeverityNumber,
470
526
  getOtlpSeverityText: ()=>_logs_logs_utils__rspack_import_5.getOtlpSeverityText,
471
- getRequirementsHint: ()=>_surveys_validation__rspack_import_20.getRequirementsHint,
472
- getValidationError: ()=>_surveys_validation__rspack_import_20.getValidationError,
527
+ getRequirementsHint: ()=>_surveys_validation__rspack_import_21.getRequirementsHint,
528
+ getValidationError: ()=>_surveys_validation__rspack_import_21.getValidationError,
473
529
  getVariantFromValue: ()=>_featureFlagUtils__rspack_import_0.getVariantFromValue,
474
530
  gzipCompress: ()=>_gzip__rspack_import_2.gzipCompress,
475
531
  hashSHA1: ()=>_featureFlagLocalEvaluation__rspack_import_1.hashSHA1,
@@ -3,6 +3,7 @@ export * from "./utils/index.mjs";
3
3
  export * from "./cookie.mjs";
4
4
  export * from "./posthog-core.mjs";
5
5
  export * from "./posthog-core-stateless.mjs";
6
+ export * from "./privacy.mjs";
6
7
  export * from "./tracing-headers.mjs";
7
8
  export * from "./types.mjs";
8
9
  export { MINIMAL_FLAG_CALLED_EVENT_CAMPAIGN_PROPERTIES, flagDetailsToResults, getEnabledFromValue, getFeatureFlagValue, getVariantFromValue, minimizeFlagCalledEventProperties, parsePayload } from "./featureFlagUtils.mjs";
@@ -0,0 +1,35 @@
1
+ export interface TextSanitizationOptions {
2
+ maxStringLength: number;
3
+ truncationSuffix: string;
4
+ }
5
+ /**
6
+ * Sanitizes agent-narrated free text (`$mcp_intent`, the `send_feedback`
7
+ * fields): structured PII on top of the passes every captured string gets.
8
+ *
9
+ * Every step of the order is load-bearing. The binary gate reads the value as it
10
+ * arrived, because splicing `[redacted]` into a blob — a Luhn-valid run inside
11
+ * base64 is enough — stops it looking like base64 and would ship it whole.
12
+ * Credentials go before PII, because a PII pattern can cut a token in half (a
13
+ * phone-shaped run inside one) and leave the halves behind. PII goes before the
14
+ * URL pass, because the URL rewrite percent-encodes the `@` that the email
15
+ * pattern anchors on.
16
+ */
17
+ export declare function sanitizeFreeText(value: string, options: TextSanitizationOptions): string;
18
+ /**
19
+ * Redacts structured personal identifiers (emails, IP addresses, credit-card
20
+ * numbers, US SSNs, and phone numbers) from a free-text string. Intended for the
21
+ * agent-narrated `$mcp_intent` value only — not for structured tool parameters or
22
+ * responses, where the same shapes are often legitimate data. Horizontal Unicode
23
+ * spaces are first normalized to an ASCII space so copy-pasted identifiers still
24
+ * match. Returns a new string; leaves the input's identifiers untouched when
25
+ * nothing matches.
26
+ */
27
+ export declare function redactPii(value: string): string;
28
+ export declare function sanitizeCapturedValue(value: unknown, options: TextSanitizationOptions): unknown;
29
+ /**
30
+ * {@link sanitizeCapturedValue} with the intent-grade string pass
31
+ * ({@link sanitizeFreeText}) on every string leaf, so nested agent-narrated
32
+ * values get structured-PII redaction in the load-bearing order too.
33
+ */
34
+ export declare function sanitizeFreeTextValue(value: unknown, options: TextSanitizationOptions): unknown;
35
+ //# sourceMappingURL=privacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privacy.d.ts","sourceRoot":"","sources":["../src/privacy.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,uBAAuB;IACtC,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAqiBD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAKxF;AA6DD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAU/C;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAE/F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAE/F"}
@@ -0,0 +1,366 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ const REDACTED_VALUE = '[redacted]';
31
+ const BINARY_REDACTED_VALUE = '[binary data redacted - not supported by PostHog MCP analytics]';
32
+ const BASE64_PATTERN = /^[A-Za-z0-9+/\n\r]+=*$/;
33
+ const BASE64URL_PATTERN = /^[A-Za-z0-9_-]+={0,2}$/;
34
+ const BASE64URL_SPECIFIC_CHAR_PATTERN = /[-_]/;
35
+ const BASE64_DATA_URL_PREFIX_PATTERN = /^data:[^,\s]*;base64,/i;
36
+ const BASE64_DATA_URL_PAYLOAD_PATTERN = /^[A-Za-z0-9+/_-]+={0,2}$/;
37
+ const SIZE_GATE = 10240;
38
+ const POSTHOG_TOKEN_PATTERN = /\bph[a-z]_[A-Za-z0-9_-]{20,}\b/g;
39
+ const SENSITIVE_KEY_PATTERN = /^(authorization|cookie|set-cookie|x-api-key|api[-_]?key|api[-_]?token|access[-_]?token|refresh[-_]?token|token|password|secret|client[-_]?secret|private[-_]?key)$/i;
40
+ const URL_PATTERN = /[a-z][a-z0-9+.-]{0,63}:[^\s<>"]+/gi;
41
+ const URL_END_PATTERN = /[\s<>"]/;
42
+ const URL_PATTERN_ONCE = new RegExp(URL_PATTERN.source, 'i');
43
+ const URL_AUTHORITY_SEARCH = /[a-z][a-z0-9+.-]{0,63}:\/\//i;
44
+ const URL_AUTHORITY_PATTERN = new RegExp(`^${URL_AUTHORITY_SEARCH.source}`, 'i');
45
+ const URL_AUTHORITY_SEARCH_ALL = new RegExp(URL_AUTHORITY_SEARCH.source, 'gi');
46
+ const URL_FIELD_CHARACTERS = '=&';
47
+ const LEGACY_FIELD_SEPARATOR = ';';
48
+ const URL_TRAILING_PUNCTUATION = ".,;:!?)]}'";
49
+ const MAX_URL_LENGTH = 8192;
50
+ const MAX_URL_QUERY_FIELDS = 128;
51
+ const SENSITIVE_QUERY_KEY_SEGMENT_PATTERN = /(^|[-_./;])(auth|token|secret|password|passwd|pwd|credential|signature|sig|key|hmac|sas|bearer|jwt|session|sessionid)([-_./;]|$)/i;
52
+ const SENSITIVE_QUERY_KEY_EXACT_PATTERN = /^(code|AWSAccessKeyId|GoogleAccessId|Policy)$/i;
53
+ const UNICODE_SPACE_PATTERN = /[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/g;
54
+ const EMAIL_PATTERN = /[A-Za-z0-9._%+-]{1,64}@[A-Za-z0-9.-]{1,255}\.[A-Za-z]{2,24}/g;
55
+ const IPV4_PATTERN = /\b(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\b/g;
56
+ const IPV6_PATTERN = /(^|[^\w:])((?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){1,7}:|(?:[0-9A-Fa-f]{1,4}:){1,6}:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4}){0,5}|::(?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4}){0,6})))(?=$|[^\w:])/g;
57
+ const US_SSN_PATTERN = /\b\d{3}[ .-]\d{2}[ .-]\d{4}\b/g;
58
+ const CREDIT_CARD_CANDIDATE_PATTERN = /\b\d(?:[ ./-]?\d){12,}\b/g;
59
+ const DIGIT_GROUP_PATTERN = /\d+/g;
60
+ const PHONE_NANP_PATTERN = /(^|[^\w+])((?:\+?1[ ./-]?)?(?:\(\d{3}\)[ ./-]?|\d{3}[ ./-])\d{3}[ ./-]\d{4})(?![\w])/g;
61
+ const PHONE_INTL_PATTERN = /(^|[^\w])(\+\d{1,3}(?:[ ./()-]{0,2}\d){7,13})(?![\w])/g;
62
+ function shouldRedactKey(key) {
63
+ return SENSITIVE_KEY_PATTERN.test(key);
64
+ }
65
+ function shouldRedactQueryKey(key) {
66
+ return shouldRedactKey(key) || SENSITIVE_QUERY_KEY_SEGMENT_PATTERN.test(key) || SENSITIVE_QUERY_KEY_EXACT_PATTERN.test(key);
67
+ }
68
+ function isBase64DataUrl(value) {
69
+ const prefix = BASE64_DATA_URL_PREFIX_PATTERN.exec(value);
70
+ if (!prefix) return false;
71
+ let payload;
72
+ try {
73
+ payload = decodeURIComponent(value.slice(prefix[0].length));
74
+ } catch {
75
+ return false;
76
+ }
77
+ return BASE64_DATA_URL_PAYLOAD_PATTERN.test(payload.replace(/[\r\n]/g, ''));
78
+ }
79
+ function exceedsUrlFieldLimit(fields) {
80
+ return fields.split('&', MAX_URL_QUERY_FIELDS + 1).length > MAX_URL_QUERY_FIELDS;
81
+ }
82
+ function hasLegacySensitiveField(value) {
83
+ return value.split(LEGACY_FIELD_SEPARATOR).some((piece)=>shouldRedactQueryKey(piece.split('=', 1)[0]));
84
+ }
85
+ function sanitizeUrlFieldValue(key, value, allowNestedUrls) {
86
+ if (shouldRedactQueryKey(key)) return REDACTED_VALUE;
87
+ if (value.includes(LEGACY_FIELD_SEPARATOR) && hasLegacySensitiveField(value)) return REDACTED_VALUE;
88
+ if (!URL_PATTERN_ONCE.test(value)) return value;
89
+ return allowNestedUrls ? sanitizeUrlsInString(value, {
90
+ allowNestedUrls: false,
91
+ stripPunctuation: true
92
+ }) : REDACTED_VALUE;
93
+ }
94
+ function sanitizeUrlFields(fields, allowNestedUrls) {
95
+ const sanitized = new URLSearchParams();
96
+ let changed = false;
97
+ let lastFieldSensitive = false;
98
+ for (const [key, value] of new URLSearchParams(fields)){
99
+ const sanitizedValue = sanitizeUrlFieldValue(key, value, allowNestedUrls);
100
+ changed ||= sanitizedValue !== value;
101
+ lastFieldSensitive = shouldRedactQueryKey(key) || sanitizedValue !== value;
102
+ sanitized.append(key, sanitizedValue);
103
+ }
104
+ return {
105
+ changed,
106
+ lastFieldSensitive,
107
+ serialized: sanitized.toString()
108
+ };
109
+ }
110
+ function splitTrailingPunctuation(value) {
111
+ let end = value.length;
112
+ while(end > 0 && URL_TRAILING_PUNCTUATION.includes(value[end - 1]))end--;
113
+ return {
114
+ address: value.slice(0, end),
115
+ suffix: value.slice(end)
116
+ };
117
+ }
118
+ function sanitizeFragmentTail(tail, headLastFieldSensitive, allowNestedUrls) {
119
+ if (!headLastFieldSensitive) return sanitizeFragmentPart(tail, allowNestedUrls);
120
+ return {
121
+ value: '' === tail ? '' : REDACTED_VALUE,
122
+ lastFieldSensitive: true
123
+ };
124
+ }
125
+ function splitFragmentParts(hash) {
126
+ const fragment = hash.slice(1);
127
+ const separator = fragment.indexOf('?');
128
+ if (separator < 0) return {
129
+ head: fragment,
130
+ tail: null
131
+ };
132
+ return {
133
+ head: fragment.slice(0, separator),
134
+ tail: fragment.slice(separator + 1)
135
+ };
136
+ }
137
+ function sanitizeFragmentPart(part, allowNestedUrls) {
138
+ if (!part.includes('=')) return {
139
+ value: sanitizeFragmentText(part, allowNestedUrls),
140
+ lastFieldSensitive: false
141
+ };
142
+ const fields = sanitizeUrlFields(part, allowNestedUrls);
143
+ return {
144
+ value: fields.changed ? fields.serialized : part,
145
+ lastFieldSensitive: fields.lastFieldSensitive
146
+ };
147
+ }
148
+ function sanitizeFragmentText(text, allowNestedUrls) {
149
+ if (!allowNestedUrls) return URL_PATTERN_ONCE.test(text) ? REDACTED_VALUE : text;
150
+ return sanitizeUrlsInString(text, {
151
+ allowNestedUrls: false,
152
+ stripPunctuation: true
153
+ });
154
+ }
155
+ function findEmbeddedAuthorityIndexes(value) {
156
+ if (!value.includes('://')) return [];
157
+ const starts = [
158
+ ...value.matchAll(URL_AUTHORITY_SEARCH_ALL)
159
+ ].map((match)=>match.index);
160
+ const indexes = [];
161
+ const delimiters = {
162
+ query: false,
163
+ fragment: false,
164
+ fragmentQuery: false
165
+ };
166
+ let pending = 0;
167
+ let inFields = false;
168
+ let lastStructural = '';
169
+ for(let cursor = 0; cursor < value.length && pending < starts.length; cursor++){
170
+ if (starts[pending] === cursor) {
171
+ if (cursor > 0 && '=' !== lastStructural) indexes.push(cursor);
172
+ pending++;
173
+ }
174
+ const character = value[cursor];
175
+ if (isDelimiter(character, delimiters, lastStructural)) {
176
+ lastStructural = character;
177
+ inFields = true;
178
+ } else if (inFields && URL_FIELD_CHARACTERS.includes(character)) lastStructural = character;
179
+ }
180
+ return indexes;
181
+ }
182
+ function isDelimiter(character, seen, lastStructural) {
183
+ if ('#' === character) return seen.fragment ? false : seen.fragment = true;
184
+ if ('?' !== character) return false;
185
+ if (seen.fragment) {
186
+ if ('=' === lastStructural) return false;
187
+ return seen.fragmentQuery ? false : seen.fragmentQuery = true;
188
+ }
189
+ return seen.query ? false : seen.query = true;
190
+ }
191
+ function sanitizeUrl(value, mode) {
192
+ const embedded = findEmbeddedAuthorityIndexes(value);
193
+ if (0 === embedded.length) return sanitizeSingleUrl(value, mode);
194
+ let result = '';
195
+ let start = 0;
196
+ for (const index of embedded){
197
+ result += sanitizeSingleUrl(value.slice(start, index), {
198
+ ...mode,
199
+ stripPunctuation: false
200
+ });
201
+ start = index;
202
+ }
203
+ return result + sanitizeSingleUrl(value.slice(start), mode);
204
+ }
205
+ function sanitizeSingleUrl(value, mode) {
206
+ if (value.length > MAX_URL_LENGTH && URL_AUTHORITY_PATTERN.test(value)) return REDACTED_VALUE;
207
+ const { address, suffix } = mode.stripPunctuation ? splitTrailingPunctuation(value) : {
208
+ address: value,
209
+ suffix: ''
210
+ };
211
+ let url;
212
+ try {
213
+ url = new URL(address);
214
+ } catch {
215
+ return REDACTED_VALUE + suffix;
216
+ }
217
+ const query = url.search.slice(1);
218
+ const hasFragment = '' !== url.hash;
219
+ const fragment = splitFragmentParts(url.hash);
220
+ if (exceedsUrlFieldLimit(query) || exceedsUrlFieldLimit(fragment.head) || exceedsUrlFieldLimit(fragment.tail ?? '')) return REDACTED_VALUE + suffix;
221
+ let changed = false;
222
+ if (url.username || url.password) {
223
+ url.username = REDACTED_VALUE;
224
+ url.password = '';
225
+ changed = true;
226
+ }
227
+ const sanitizedQuery = sanitizeUrlFields(query, mode.allowNestedUrls);
228
+ if (sanitizedQuery.changed) {
229
+ url.search = sanitizedQuery.serialized;
230
+ changed = true;
231
+ }
232
+ const sanitizedHead = sanitizeFragmentPart(fragment.head, mode.allowNestedUrls);
233
+ const sanitizedTail = null === fragment.tail ? null : sanitizeFragmentTail(fragment.tail, sanitizedHead.lastFieldSensitive, mode.allowNestedUrls);
234
+ const sanitizedHash = null === sanitizedTail ? sanitizedHead.value : `${sanitizedHead.value}?${sanitizedTail.value}`;
235
+ if (sanitizedHash !== url.hash.slice(1)) {
236
+ url.hash = sanitizedHash;
237
+ changed = true;
238
+ }
239
+ const trailingFields = hasFragment ? sanitizedTail ?? sanitizedHead : sanitizedQuery;
240
+ return (changed ? url.toString() : address) + (trailingFields.lastFieldSensitive ? '' : suffix);
241
+ }
242
+ function sanitizeUrlsInString(text, mode) {
243
+ return text.replace(URL_PATTERN, (match)=>sanitizeUrl(match, {
244
+ ...mode,
245
+ stripPunctuation: mode.stripPunctuation && match.length !== text.length
246
+ }));
247
+ }
248
+ function isBinaryBlob(value) {
249
+ return value.length >= SIZE_GATE && (BASE64_PATTERN.test(value) || isBase64DataUrl(value) || BASE64URL_SPECIFIC_CHAR_PATTERN.test(value) && BASE64URL_PATTERN.test(value));
250
+ }
251
+ function redactCredentials(value) {
252
+ return value.replace(POSTHOG_TOKEN_PATTERN, REDACTED_VALUE);
253
+ }
254
+ function redactUrls(value) {
255
+ return sanitizeUrlsInString(value, {
256
+ allowNestedUrls: true,
257
+ stripPunctuation: true
258
+ });
259
+ }
260
+ function redactCapturedHead(value, redact, options) {
261
+ const scannedHeadLength = 4 * options.maxStringLength;
262
+ if (value.length > scannedHeadLength) {
263
+ const head = redact(value.slice(0, headLength(value, scannedHeadLength)));
264
+ if (head.length >= 2 * options.maxStringLength) return head + options.truncationSuffix;
265
+ }
266
+ return redact(value);
267
+ }
268
+ function headLength(value, scannedHeadLength) {
269
+ let end = scannedHeadLength;
270
+ while(end > 0 && !URL_END_PATTERN.test(value[end - 1]))end--;
271
+ return end;
272
+ }
273
+ function sanitizeString(value, options) {
274
+ return isBinaryBlob(value) ? BINARY_REDACTED_VALUE : redactCapturedHead(value, (head)=>redactUrls(redactCredentials(head)), options);
275
+ }
276
+ function sanitizeFreeText(value, options) {
277
+ if (isBinaryBlob(value)) return BINARY_REDACTED_VALUE;
278
+ return redactCapturedHead(value, (head)=>redactUrls(redactPii(redactCredentials(head))), options);
279
+ }
280
+ function passesLuhn(digits) {
281
+ let sum = 0;
282
+ let double = false;
283
+ for(let index = digits.length - 1; index >= 0; index--){
284
+ let digit = digits.charCodeAt(index) - 48;
285
+ if (digit < 0 || digit > 9) return false;
286
+ if (double) {
287
+ digit *= 2;
288
+ if (digit > 9) digit -= 9;
289
+ }
290
+ sum += digit;
291
+ double = !double;
292
+ }
293
+ return sum % 10 === 0;
294
+ }
295
+ function redactCardInMatch(match) {
296
+ const groups = [];
297
+ for(let m = DIGIT_GROUP_PATTERN.exec(match); null !== m; m = DIGIT_GROUP_PATTERN.exec(match))groups.push({
298
+ digits: m[0],
299
+ start: m.index,
300
+ end: m.index + m[0].length
301
+ });
302
+ let output = '';
303
+ let cursor = 0;
304
+ let first = 0;
305
+ while(first < groups.length){
306
+ let digits = '';
307
+ let matchedLast = -1;
308
+ for(let last = first; last < groups.length; last++){
309
+ digits += groups[last].digits;
310
+ if (digits.length > 19) break;
311
+ if (digits.length >= 13 && passesLuhn(digits)) matchedLast = last;
312
+ }
313
+ if (matchedLast >= 0) {
314
+ output += match.slice(cursor, groups[first].start) + REDACTED_VALUE;
315
+ cursor = groups[matchedLast].end;
316
+ first = matchedLast + 1;
317
+ } else first++;
318
+ }
319
+ return output + match.slice(cursor);
320
+ }
321
+ function redactPii(value) {
322
+ let result = value.replace(UNICODE_SPACE_PATTERN, ' ');
323
+ result = result.replace(EMAIL_PATTERN, REDACTED_VALUE);
324
+ result = result.replace(IPV4_PATTERN, REDACTED_VALUE);
325
+ result = result.replace(IPV6_PATTERN, `$1${REDACTED_VALUE}`);
326
+ result = result.replace(CREDIT_CARD_CANDIDATE_PATTERN, redactCardInMatch);
327
+ result = result.replace(US_SSN_PATTERN, REDACTED_VALUE);
328
+ result = result.replace(PHONE_NANP_PATTERN, `$1${REDACTED_VALUE}`);
329
+ result = result.replace(PHONE_INTL_PATTERN, `$1${REDACTED_VALUE}`);
330
+ return result;
331
+ }
332
+ function sanitizeCapturedValue(value, options) {
333
+ return sanitizeValueWith(value, (stringValue)=>sanitizeString(stringValue, options));
334
+ }
335
+ function sanitizeFreeTextValue(value, options) {
336
+ return sanitizeValueWith(value, (stringValue)=>sanitizeFreeText(stringValue, options));
337
+ }
338
+ function sanitizeValueWith(value, sanitizeStringFn) {
339
+ if (null == value) return value;
340
+ if ('string' == typeof value) return sanitizeStringFn(value);
341
+ if (Array.isArray(value)) return value.map((item)=>sanitizeValueWith(item, sanitizeStringFn));
342
+ if (value instanceof Date) return value;
343
+ if ('object' != typeof value) return value;
344
+ const result = {};
345
+ for (const [key, nestedValue] of Object.entries(value))result[key] = shouldRedactKey(key) ? REDACTED_VALUE : sanitizeValueWith(nestedValue, sanitizeStringFn);
346
+ return result;
347
+ }
348
+ __webpack_require__.d(__webpack_exports__, {
349
+ redactPii: ()=>redactPii,
350
+ sanitizeCapturedValue: ()=>sanitizeCapturedValue,
351
+ sanitizeFreeText: ()=>sanitizeFreeText,
352
+ sanitizeFreeTextValue: ()=>sanitizeFreeTextValue
353
+ });
354
+ exports.redactPii = __webpack_exports__.redactPii;
355
+ exports.sanitizeCapturedValue = __webpack_exports__.sanitizeCapturedValue;
356
+ exports.sanitizeFreeText = __webpack_exports__.sanitizeFreeText;
357
+ exports.sanitizeFreeTextValue = __webpack_exports__.sanitizeFreeTextValue;
358
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
359
+ "redactPii",
360
+ "sanitizeCapturedValue",
361
+ "sanitizeFreeText",
362
+ "sanitizeFreeTextValue"
363
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
364
+ Object.defineProperty(exports, '__esModule', {
365
+ value: true
366
+ });