@veryfront/ext-observability-sentry 0.1.1174 → 0.1.1175

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/esm/policy.d.ts CHANGED
@@ -38,5 +38,6 @@ export declare function flushWithSentryPolicy(sdk: Pick<SentryPolicySdk, "flush"
38
38
  export declare function applySentryScopePolicy(scope: SentryPolicyScope, serviceName: string, context: ApplicationErrorContext): void;
39
39
  export declare function prepareSentryEvent<TEvent extends SentryPolicyEvent>(event: TEvent, serviceName: string): TEvent & SentryPolicyEvent;
40
40
  export declare function redactSensitiveText(value: string): string;
41
+ export declare function sanitizeApplicationErrorAttributes(attributes: Record<string, string | number | boolean>): Record<string, string | number | boolean>;
41
42
  export declare function sanitizeStackFramePath(value: string): string;
42
43
  //# sourceMappingURL=policy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAE9E,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AASnD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACjE,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5C,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACzC,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI,CAAC;CAC/D,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE;QACV,MAAM,CAAC,EAAE,KAAK,CAAC;YACb,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,UAAU,CAAC,EAAE;gBACX,MAAM,CAAC,EAAE,KAAK,CAAC;oBACb,QAAQ,CAAC,EAAE,MAAM,CAAC;oBAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;iBACnB,CAAC,CAAC;aACJ,CAAC;SACH,CAAC,CAAC;KACJ,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,eAAe,EACpB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,uBAAuB,GAC/B,MAAM,GAAG,SAAS,CAWpB;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,EACnC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAMlB;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,iBAAiB,EACxB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,uBAAuB,GAC/B,IAAI,CAaN;AAED,wBAAgB,kBAAkB,CAAC,MAAM,SAAS,iBAAiB,EACjE,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,iBAAiB,CAwB5B;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOzD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAW5D"}
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAE9E,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAWnD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACjE,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5C,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACzC,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI,CAAC;CAC/D,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE;QACV,MAAM,CAAC,EAAE,KAAK,CAAC;YACb,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,UAAU,CAAC,EAAE;gBACX,MAAM,CAAC,EAAE,KAAK,CAAC;oBACb,QAAQ,CAAC,EAAE,MAAM,CAAC;oBAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;iBACnB,CAAC,CAAC;aACJ,CAAC;SACH,CAAC,CAAC;KACJ,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,eAAe,EACpB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,uBAAuB,GAC/B,MAAM,GAAG,SAAS,CAWpB;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,EACnC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAMlB;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,iBAAiB,EACxB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,uBAAuB,GAC/B,IAAI,CAmBN;AAED,wBAAgB,kBAAkB,CAAC,MAAM,SAAS,iBAAiB,EACjE,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,iBAAiB,CAwB5B;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOzD;AAED,wBAAgB,kCAAkC,CAChD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACpD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAU3C;AAOD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAW5D"}
package/esm/policy.js CHANGED
@@ -4,6 +4,7 @@ const BEARER_TOKEN_PATTERN = /\bBearer\s+[A-Za-z0-9._~+/=-]+\b/gi;
4
4
  const JWT_PATTERN = /\b[A-Za-z0-9_-]{16,}\.[A-Za-z0-9_-]{16,}\.[A-Za-z0-9_-]{16,}\b/g;
5
5
  const URL_CREDENTIAL_PATTERN = /(https?:\/\/)[^@\s/]+(@[^/\s]+)/gi;
6
6
  const SENSITIVE_QUERY_PATTERN = /([?&](?:access_token|api_key|auth|authorization|dsn|password|secret|token)=)[^&#\s]+/gi;
7
+ const SENSITIVE_ATTRIBUTE_KEY_PATTERN = /(?:^|[_\-.])(?:api[_\-.]?key|auth|authorization|cookie|credentials?|dsn|jwt|password|secret|session|signature|token)(?:$|[_\-.])/i;
7
8
  export function captureWithSentryPolicy(sdk, serviceName, error, context) {
8
9
  try {
9
10
  let eventId;
@@ -40,6 +41,9 @@ export function applySentryScopePolicy(scope, serviceName, context) {
40
41
  ...(context.spanId ? { span_id: context.spanId } : {}),
41
42
  });
42
43
  }
44
+ if (context.attributes && Object.keys(context.attributes).length > 0) {
45
+ scope.setContext("veryfront_application_error", sanitizeApplicationErrorAttributes(context.attributes));
46
+ }
43
47
  }
44
48
  export function prepareSentryEvent(event, serviceName) {
45
49
  event.tags = {
@@ -75,6 +79,21 @@ export function redactSensitiveText(value) {
75
79
  .replace(URL_CREDENTIAL_PATTERN, "$1[REDACTED]$2")
76
80
  .replace(SENSITIVE_QUERY_PATTERN, "$1[REDACTED]");
77
81
  }
82
+ export function sanitizeApplicationErrorAttributes(attributes) {
83
+ const sanitized = {};
84
+ for (const [key, value] of Object.entries(attributes)) {
85
+ if (typeof value !== "string") {
86
+ sanitized[key] = value;
87
+ continue;
88
+ }
89
+ sanitized[key] = isSensitiveAttributeKey(key) ? "[REDACTED]" : redactSensitiveText(value);
90
+ }
91
+ return sanitized;
92
+ }
93
+ function isSensitiveAttributeKey(key) {
94
+ const normalized = key.replace(/([a-z0-9])([A-Z])/g, "$1_$2");
95
+ return SENSITIVE_ATTRIBUTE_KEY_PATTERN.test(normalized);
96
+ }
78
97
  export function sanitizeStackFramePath(value) {
79
98
  const redacted = redactSensitiveText(value);
80
99
  const path = redacted.startsWith("file://") ? redacted.slice("file://".length) : redacted;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veryfront/ext-observability-sentry",
3
- "version": "0.1.1174",
3
+ "version": "0.1.1175",
4
4
  "description": "Veryfront first-party extension package for ext-observability-sentry",
5
5
  "keywords": [
6
6
  "veryfront",
@@ -56,7 +56,7 @@
56
56
  "@sentry/node": "10.68.0"
57
57
  },
58
58
  "peerDependencies": {
59
- "veryfront": "^0.1.1174"
59
+ "veryfront": "^0.1.1175"
60
60
  },
61
61
  "type": "module",
62
62
  "types": "./esm/index.d.ts",