logixia 2.0.4 → 2.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +172 -2614
- package/dist/{async-context-B05ArHgM.mjs → async-context-COuvmwsS.mjs} +4 -6
- package/dist/async-context-COuvmwsS.mjs.map +1 -0
- package/dist/{async-context-DTQgi8f7.js → async-context-Dv0bmPC-.js} +4 -6
- package/dist/async-context-Dv0bmPC-.js.map +1 -0
- package/dist/{azure-monitor.transport-DV03Z5P4.d.ts → azure-monitor.transport-Bvf7Xegt.d.ts} +2 -2
- package/dist/{azure-monitor.transport-DV03Z5P4.d.ts.map → azure-monitor.transport-Bvf7Xegt.d.ts.map} +1 -1
- package/dist/{azure-monitor.transport-C7kYyZUW.d.mts → azure-monitor.transport-CbSHOnNX.d.mts} +2 -2
- package/dist/{azure-monitor.transport-C7kYyZUW.d.mts.map → azure-monitor.transport-CbSHOnNX.d.mts.map} +1 -1
- package/dist/{azure-monitor.transport-BPbgjATu.mjs → azure-monitor.transport-Coz5Gesu.mjs} +5 -5
- package/dist/azure-monitor.transport-Coz5Gesu.mjs.map +1 -0
- package/dist/{azure-monitor.transport-CwbOLZHB.js → azure-monitor.transport-D6ryi8rA.js} +5 -5
- package/dist/azure-monitor.transport-D6ryi8rA.js.map +1 -0
- package/dist/azure.d.mts +1 -1
- package/dist/azure.d.ts +1 -1
- package/dist/azure.js +1 -1
- package/dist/azure.mjs +1 -1
- package/dist/{batch-buffer-DT4gdXmf.js → batch-buffer-CFzKnuNZ.js} +3 -3
- package/dist/{batch-buffer-DT4gdXmf.js.map → batch-buffer-CFzKnuNZ.js.map} +1 -1
- package/dist/{batch-buffer-0fgLmIPn.mjs → batch-buffer-CQUWDMYq.mjs} +3 -3
- package/dist/{batch-buffer-0fgLmIPn.mjs.map → batch-buffer-CQUWDMYq.mjs.map} +1 -1
- package/dist/browser.d.mts +5 -5
- package/dist/browser.d.mts.map +1 -1
- package/dist/browser.d.ts +5 -5
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +72 -13
- package/dist/browser.js.map +1 -1
- package/dist/browser.mjs +72 -13
- package/dist/browser.mjs.map +1 -1
- package/dist/{builder-D70z6kjj.mjs → builder-C_TgxEOW.mjs} +106 -153
- package/dist/builder-C_TgxEOW.mjs.map +1 -0
- package/dist/{builder-M7NoaugM.js → builder-CzmM_4Ub.js} +110 -180
- package/dist/builder-CzmM_4Ub.js.map +1 -0
- package/dist/cli/index.js +157 -66
- package/dist/cloudwatch.d.mts +1 -1
- package/dist/cloudwatch.d.ts +1 -1
- package/dist/cloudwatch.js +1 -1
- package/dist/cloudwatch.mjs +1 -1
- package/dist/{cloudwatch.transport-Bf7L4I59.d.ts → cloudwatch.transport-CQyT6U91.d.ts} +2 -2
- package/dist/{cloudwatch.transport-Bf7L4I59.d.ts.map → cloudwatch.transport-CQyT6U91.d.ts.map} +1 -1
- package/dist/{cloudwatch.transport-Rj4yTpRn.d.mts → cloudwatch.transport-CjVrI6S4.d.mts} +2 -2
- package/dist/{cloudwatch.transport-Rj4yTpRn.d.mts.map → cloudwatch.transport-CjVrI6S4.d.mts.map} +1 -1
- package/dist/{cloudwatch.transport-BTvYfLs9.mjs → cloudwatch.transport-Cr1aeTGj.mjs} +6 -6
- package/dist/cloudwatch.transport-Cr1aeTGj.mjs.map +1 -0
- package/dist/{cloudwatch.transport-B2wKQFF7.js → cloudwatch.transport-D4G5xYfG.js} +6 -6
- package/dist/cloudwatch.transport-D4G5xYfG.js.map +1 -0
- package/dist/correlation.d.mts +10 -55
- package/dist/correlation.d.mts.map +1 -1
- package/dist/correlation.d.ts +10 -55
- package/dist/correlation.d.ts.map +1 -1
- package/dist/correlation.js +15 -13
- package/dist/correlation.js.map +1 -1
- package/dist/correlation.mjs +15 -13
- package/dist/correlation.mjs.map +1 -1
- package/dist/{entry-fields-RLd1jCoR.js → entry-fields-CVwoQplO.js} +8 -3
- package/dist/entry-fields-CVwoQplO.js.map +1 -0
- package/dist/{entry-fields-CGuvT2R0.mjs → entry-fields-DNTKQxoU.mjs} +8 -3
- package/dist/entry-fields-DNTKQxoU.mjs.map +1 -0
- package/dist/gcp.d.mts +1 -1
- package/dist/gcp.d.ts +1 -1
- package/dist/gcp.js +1 -1
- package/dist/gcp.mjs +1 -1
- package/dist/{gcp.transport-CFQfdAOK.d.ts → gcp.transport-BCIvdFV-.d.ts} +4 -4
- package/dist/{gcp.transport-CFQfdAOK.d.ts.map → gcp.transport-BCIvdFV-.d.ts.map} +1 -1
- package/dist/{gcp.transport-KZe9hCAR.js → gcp.transport-CVuRpchl.js} +20 -16
- package/dist/gcp.transport-CVuRpchl.js.map +1 -0
- package/dist/{gcp.transport-C5D72b1g.d.mts → gcp.transport-D9SdLPwP.d.mts} +4 -4
- package/dist/{gcp.transport-C5D72b1g.d.mts.map → gcp.transport-D9SdLPwP.d.mts.map} +1 -1
- package/dist/{gcp.transport-CGKopAhQ.mjs → gcp.transport-LLK2bw2-.mjs} +20 -16
- package/dist/gcp.transport-LLK2bw2-.mjs.map +1 -0
- package/dist/http-shapes-BnBkJcid.d.mts +32 -0
- package/dist/http-shapes-BnBkJcid.d.mts.map +1 -0
- package/dist/http-shapes-BnBkJcid.d.ts +32 -0
- package/dist/http-shapes-BnBkJcid.d.ts.map +1 -0
- package/dist/{index-xqaJtAZn.d.mts → index-BAkPHp5D.d.mts} +150 -8
- package/dist/index-BAkPHp5D.d.mts.map +1 -0
- package/dist/{index-DwozbmB4.d.ts → index-e7LowmAu.d.ts} +150 -8
- package/dist/index-e7LowmAu.d.ts.map +1 -0
- package/dist/index.d.mts +21 -65
- package/dist/index.d.mts.map +1 -1
- package/dist/index.d.ts +21 -65
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -26
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +21 -21
- package/dist/index.mjs.map +1 -1
- package/dist/{internal-log-uCSd1PMc.mjs → internal-log-Cy5nF1ZL.mjs} +2 -81
- package/dist/internal-log-Cy5nF1ZL.mjs.map +1 -0
- package/dist/{internal-log-b0Vp4qrB.js → internal-log-DwqTjhpb.js} +1 -104
- package/dist/internal-log-DwqTjhpb.js.map +1 -0
- package/dist/{logitron-logger-D2B75Oc7.d.ts → logitron-logger-Qh3y9-WH.d.ts} +13 -100
- package/dist/logitron-logger-Qh3y9-WH.d.ts.map +1 -0
- package/dist/{logitron-logger-oEd6wNhf.d.mts → logitron-logger-sYuk8fOb.d.mts} +13 -100
- package/dist/logitron-logger-sYuk8fOb.d.mts.map +1 -0
- package/dist/middleware.d.mts +4 -17
- package/dist/middleware.d.mts.map +1 -1
- package/dist/middleware.d.ts +4 -17
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +9 -39
- package/dist/middleware.js.map +1 -1
- package/dist/middleware.mjs +7 -37
- package/dist/middleware.mjs.map +1 -1
- package/dist/nest.d.mts +24 -8
- package/dist/nest.d.mts.map +1 -1
- package/dist/nest.d.ts +24 -8
- package/dist/nest.d.ts.map +1 -1
- package/dist/nest.js +140 -27
- package/dist/nest.js.map +1 -1
- package/dist/nest.mjs +140 -27
- package/dist/nest.mjs.map +1 -1
- package/dist/{transport.manager-DkcEOlqV.js → otel-ChnVYRLA.js} +214 -23
- package/dist/otel-ChnVYRLA.js.map +1 -0
- package/dist/{transport.manager-eZ_EeC00.mjs → otel-DOuwGPCd.mjs} +173 -24
- package/dist/otel-DOuwGPCd.mjs.map +1 -0
- package/dist/{request-trace-C_fvIDv4.mjs → request-trace-BgNykH9M.mjs} +1 -5
- package/dist/{request-trace-C_fvIDv4.mjs.map → request-trace-BgNykH9M.mjs.map} +1 -1
- package/dist/{request-trace-wTJdKp6-.js → request-trace-ByujsUZk.js} +1 -5
- package/dist/{request-trace-wTJdKp6-.js.map → request-trace-ByujsUZk.js.map} +1 -1
- package/dist/{safe-stringify-BMRl3EX3.mjs → safe-stringify--7gbe95n.mjs} +37 -12
- package/dist/safe-stringify--7gbe95n.mjs.map +1 -0
- package/dist/{safe-stringify-DLz1Kz3o.js → safe-stringify-CN7icp8S.js} +37 -12
- package/dist/safe-stringify-CN7icp8S.js.map +1 -0
- package/dist/{search-DUfWuzFP.js → search-CRjhHxe9.js} +269 -25
- package/dist/search-CRjhHxe9.js.map +1 -0
- package/dist/{search-CazwyX5Z.d.ts → search-D-8HJADE.d.mts} +5 -2
- package/dist/search-D-8HJADE.d.mts.map +1 -0
- package/dist/{search-CWMVYC-R.mjs → search-DAXKE-P9.mjs} +269 -25
- package/dist/search-DAXKE-P9.mjs.map +1 -0
- package/dist/{search-BH33XhuU.d.mts → search-DPwTKPve.d.ts} +5 -2
- package/dist/search-DPwTKPve.d.ts.map +1 -0
- package/dist/search.d.mts +1 -1
- package/dist/search.d.ts +1 -1
- package/dist/search.js +1 -1
- package/dist/search.mjs +1 -1
- package/dist/{secret-config-CBZBs0p1.js → secret-config-BvFl2dC8.js} +7 -7
- package/dist/secret-config-BvFl2dC8.js.map +1 -0
- package/dist/{secret-config-BegMLkYl.mjs → secret-config-ByGq7kJd.mjs} +5 -5
- package/dist/secret-config-ByGq7kJd.mjs.map +1 -0
- package/dist/sensitive-names-CHMowujD.js +276 -0
- package/dist/sensitive-names-CHMowujD.js.map +1 -0
- package/dist/sensitive-names-o__1PUUR.mjs +217 -0
- package/dist/sensitive-names-o__1PUUR.mjs.map +1 -0
- package/dist/{slack.transport-DxHOXlLu.d.mts → slack.transport-BDyENuR0.d.mts} +2 -2
- package/dist/{slack.transport-DxHOXlLu.d.mts.map → slack.transport-BDyENuR0.d.mts.map} +1 -1
- package/dist/{slack.transport-DrirgDNy.d.ts → slack.transport-C6E0l4kw.d.ts} +2 -2
- package/dist/{slack.transport-DrirgDNy.d.ts.map → slack.transport-C6E0l4kw.d.ts.map} +1 -1
- package/dist/{slack.transport-Ce96JBDk.mjs → slack.transport-CSj1j0_X.mjs} +66 -15
- package/dist/slack.transport-CSj1j0_X.mjs.map +1 -0
- package/dist/{slack.transport-Dlx3xvb7.js → slack.transport-zLQ9MGxS.js} +67 -16
- package/dist/slack.transport-zLQ9MGxS.js.map +1 -0
- package/dist/testing.d.mts +11 -4
- package/dist/testing.d.mts.map +1 -1
- package/dist/testing.d.ts +11 -4
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +38 -3
- package/dist/testing.js.map +1 -1
- package/dist/testing.mjs +38 -3
- package/dist/testing.mjs.map +1 -1
- package/dist/{transport.types-BJVL1QQl.d.ts → transport.types-CzJq4IrF.d.mts} +14 -3
- package/dist/transport.types-CzJq4IrF.d.mts.map +1 -0
- package/dist/{transport.types-BJVL1QQl.d.mts → transport.types-CzJq4IrF.d.ts} +14 -3
- package/dist/transport.types-CzJq4IrF.d.ts.map +1 -0
- package/dist/transports.d.mts +25 -13
- package/dist/transports.d.mts.map +1 -1
- package/dist/transports.d.ts +25 -13
- package/dist/transports.d.ts.map +1 -1
- package/dist/transports.js +15 -15
- package/dist/transports.mjs +6 -6
- package/dist/worker-entry.js +130 -25
- package/dist/worker.d.mts +1 -1
- package/dist/worker.d.ts +1 -1
- package/dist/worker.js +1 -1
- package/dist/worker.mjs +1 -1
- package/dist/{worker.transport-BuPwBi3d.d.ts → worker.transport-B9mCQSM1.d.ts} +7 -2
- package/dist/worker.transport-B9mCQSM1.d.ts.map +1 -0
- package/dist/{worker.transport-hJay1wxA.d.mts → worker.transport-Bl8lFRck.d.mts} +7 -2
- package/dist/worker.transport-Bl8lFRck.d.mts.map +1 -0
- package/dist/{worker.transport-DLVA4y2e.mjs → worker.transport-D78xhNhB.mjs} +13 -10
- package/dist/worker.transport-D78xhNhB.mjs.map +1 -0
- package/dist/{worker.transport-C6GNl_r2.js → worker.transport-DQDv1nAJ.js} +13 -10
- package/dist/worker.transport-DQDv1nAJ.js.map +1 -0
- package/package.json +33 -65
- package/dist/async-context-B05ArHgM.mjs.map +0 -1
- package/dist/async-context-DTQgi8f7.js.map +0 -1
- package/dist/azure-monitor.transport-BPbgjATu.mjs.map +0 -1
- package/dist/azure-monitor.transport-CwbOLZHB.js.map +0 -1
- package/dist/builder-D70z6kjj.mjs.map +0 -1
- package/dist/builder-M7NoaugM.js.map +0 -1
- package/dist/cloudwatch.transport-B2wKQFF7.js.map +0 -1
- package/dist/cloudwatch.transport-BTvYfLs9.mjs.map +0 -1
- package/dist/entry-fields-CGuvT2R0.mjs.map +0 -1
- package/dist/entry-fields-RLd1jCoR.js.map +0 -1
- package/dist/gcp.transport-CGKopAhQ.mjs.map +0 -1
- package/dist/gcp.transport-KZe9hCAR.js.map +0 -1
- package/dist/index-DwozbmB4.d.ts.map +0 -1
- package/dist/index-xqaJtAZn.d.mts.map +0 -1
- package/dist/internal-log-b0Vp4qrB.js.map +0 -1
- package/dist/internal-log-uCSd1PMc.mjs.map +0 -1
- package/dist/logitron-logger-D2B75Oc7.d.ts.map +0 -1
- package/dist/logitron-logger-oEd6wNhf.d.mts.map +0 -1
- package/dist/safe-stringify-BMRl3EX3.mjs.map +0 -1
- package/dist/safe-stringify-DLz1Kz3o.js.map +0 -1
- package/dist/search-BH33XhuU.d.mts.map +0 -1
- package/dist/search-CWMVYC-R.mjs.map +0 -1
- package/dist/search-CazwyX5Z.d.ts.map +0 -1
- package/dist/search-DUfWuzFP.js.map +0 -1
- package/dist/secret-config-BegMLkYl.mjs.map +0 -1
- package/dist/secret-config-CBZBs0p1.js.map +0 -1
- package/dist/slack.transport-Ce96JBDk.mjs.map +0 -1
- package/dist/slack.transport-Dlx3xvb7.js.map +0 -1
- package/dist/transport.manager-DkcEOlqV.js.map +0 -1
- package/dist/transport.manager-eZ_EeC00.mjs.map +0 -1
- package/dist/transport.types-BJVL1QQl.d.mts.map +0 -1
- package/dist/transport.types-BJVL1QQl.d.ts.map +0 -1
- package/dist/worker.transport-BuPwBi3d.d.ts.map +0 -1
- package/dist/worker.transport-C6GNl_r2.js.map +0 -1
- package/dist/worker.transport-DLVA4y2e.mjs.map +0 -1
- package/dist/worker.transport-hJay1wxA.d.mts.map +0 -1
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
// src/utils/own-property.ts
|
|
2
|
+
/**
|
|
3
|
+
* True for the one key that must never be assigned with `target[key] = value`.
|
|
4
|
+
*
|
|
5
|
+
* Assigning `constructor` or `prototype` on a fresh plain object only creates an
|
|
6
|
+
* own property, which is harmless. Only `__proto__` invokes the prototype setter.
|
|
7
|
+
*/
|
|
8
|
+
function isProtoKey(key) {
|
|
9
|
+
return key === "__proto__";
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Copy `value` onto `target[key]` as an own, enumerable data property.
|
|
13
|
+
*
|
|
14
|
+
* Normal keys use a plain assignment, which is the fast path. `__proto__` goes
|
|
15
|
+
* through `Object.defineProperty` so that a key taken from logged or parsed data
|
|
16
|
+
* becomes an own property instead of replacing the object's prototype.
|
|
17
|
+
*/
|
|
18
|
+
function assignOwn(target, key, value) {
|
|
19
|
+
if (key === "__proto__") Object.defineProperty(target, key, {
|
|
20
|
+
value,
|
|
21
|
+
enumerable: true,
|
|
22
|
+
writable: true,
|
|
23
|
+
configurable: true
|
|
24
|
+
});
|
|
25
|
+
else target[key] = value;
|
|
26
|
+
}
|
|
27
|
+
// src/utils/sensitive-names.ts
|
|
28
|
+
/**
|
|
29
|
+
* The one list of sensitive names. Log redaction (redact.utils), the HTTP logger
|
|
30
|
+
* middleware and transport secret handling (transports/secret-config) all read it,
|
|
31
|
+
* so the lists cannot drift. No imports: safe from any module, including browser code.
|
|
32
|
+
*/
|
|
33
|
+
/** Field names redacted by name, wherever they appear in logged data. */
|
|
34
|
+
const SENSITIVE_KEY_NAMES = [
|
|
35
|
+
"password",
|
|
36
|
+
"passwd",
|
|
37
|
+
"secret",
|
|
38
|
+
"token",
|
|
39
|
+
"apiKey",
|
|
40
|
+
"api_key",
|
|
41
|
+
"accessToken",
|
|
42
|
+
"access_token",
|
|
43
|
+
"refreshToken",
|
|
44
|
+
"refresh_token",
|
|
45
|
+
"authorization",
|
|
46
|
+
"credentials",
|
|
47
|
+
"privateKey",
|
|
48
|
+
"private_key",
|
|
49
|
+
"clientSecret",
|
|
50
|
+
"client_secret",
|
|
51
|
+
"cookie",
|
|
52
|
+
"set-cookie",
|
|
53
|
+
"x-api-key",
|
|
54
|
+
"session",
|
|
55
|
+
"proxy-authorization",
|
|
56
|
+
"x-auth-token",
|
|
57
|
+
"x-access-token",
|
|
58
|
+
"aws_secret_access_key",
|
|
59
|
+
"awsSecretAccessKey",
|
|
60
|
+
"secretAccessKey"
|
|
61
|
+
];
|
|
62
|
+
/**
|
|
63
|
+
* Extra names that only mean "secret" inside transport configuration, where
|
|
64
|
+
* short words like `key` or `signature` are credentials, not log fields.
|
|
65
|
+
*/
|
|
66
|
+
const TRANSPORT_CONFIG_SECRET_NAMES = [
|
|
67
|
+
"writeKey",
|
|
68
|
+
"apiSecret",
|
|
69
|
+
"connectionString",
|
|
70
|
+
"sessionToken",
|
|
71
|
+
"passphrase",
|
|
72
|
+
"signature",
|
|
73
|
+
"pwd",
|
|
74
|
+
"pfx",
|
|
75
|
+
"cert",
|
|
76
|
+
"key",
|
|
77
|
+
"auth"
|
|
78
|
+
];
|
|
79
|
+
/** Request headers whose values are never logged. */
|
|
80
|
+
const DEFAULT_REDACT_HEADERS = [
|
|
81
|
+
"authorization",
|
|
82
|
+
"cookie",
|
|
83
|
+
"set-cookie",
|
|
84
|
+
"x-api-key",
|
|
85
|
+
"proxy-authorization",
|
|
86
|
+
"x-auth-token",
|
|
87
|
+
"x-access-token",
|
|
88
|
+
"x-csrf-token",
|
|
89
|
+
"x-amz-security-token"
|
|
90
|
+
];
|
|
91
|
+
/** Query-string parameters whose values are never logged. */
|
|
92
|
+
const DEFAULT_REDACT_QUERY_PARAMS = [
|
|
93
|
+
"token",
|
|
94
|
+
"access_token",
|
|
95
|
+
"refresh_token",
|
|
96
|
+
"code",
|
|
97
|
+
"password",
|
|
98
|
+
"secret",
|
|
99
|
+
"api_key",
|
|
100
|
+
"apikey",
|
|
101
|
+
"key",
|
|
102
|
+
"signature",
|
|
103
|
+
"sig",
|
|
104
|
+
"auth",
|
|
105
|
+
"accesstoken",
|
|
106
|
+
"refreshtoken",
|
|
107
|
+
"id_token",
|
|
108
|
+
"idtoken",
|
|
109
|
+
"client_secret",
|
|
110
|
+
"clientsecret",
|
|
111
|
+
"session",
|
|
112
|
+
"sessionid",
|
|
113
|
+
"session_id",
|
|
114
|
+
"jwt",
|
|
115
|
+
"auth_token",
|
|
116
|
+
"authtoken",
|
|
117
|
+
"api-key",
|
|
118
|
+
"x-api-key",
|
|
119
|
+
"x-amz-signature",
|
|
120
|
+
"x-amz-credential",
|
|
121
|
+
"x-amz-security-token",
|
|
122
|
+
"x-goog-signature",
|
|
123
|
+
"x-goog-credential",
|
|
124
|
+
"access-token",
|
|
125
|
+
"x-access-token",
|
|
126
|
+
"x-auth-token",
|
|
127
|
+
"apitoken",
|
|
128
|
+
"api_token"
|
|
129
|
+
];
|
|
130
|
+
function safeDecode(value) {
|
|
131
|
+
try {
|
|
132
|
+
return decodeURIComponent(value.replace(/\+/g, " "));
|
|
133
|
+
} catch {
|
|
134
|
+
return value;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/** Replace the values of sensitive query parameters, leaving the rest verbatim. */
|
|
138
|
+
function redactUrlQuery(url, redactParams) {
|
|
139
|
+
const q = url.indexOf("?");
|
|
140
|
+
if (q === -1) return url;
|
|
141
|
+
const hashAt = url.indexOf("#", q);
|
|
142
|
+
const query = url.slice(q + 1, hashAt === -1 ? void 0 : hashAt);
|
|
143
|
+
const hash = hashAt === -1 ? "" : url.slice(hashAt);
|
|
144
|
+
const cleaned = query.split("&").map((pair) => {
|
|
145
|
+
const eq = pair.indexOf("=");
|
|
146
|
+
const rawKey = eq === -1 ? pair : pair.slice(0, eq);
|
|
147
|
+
const decoded = safeDecode(rawKey);
|
|
148
|
+
const bracket = decoded.indexOf("[");
|
|
149
|
+
const name = (bracket === -1 ? decoded : decoded.slice(0, bracket)).toLowerCase();
|
|
150
|
+
return redactParams.has(name) && eq !== -1 ? `${rawKey}=[REDACTED]` : pair;
|
|
151
|
+
}).join("&");
|
|
152
|
+
return `${url.slice(0, q)}?${cleaned}${hash}`;
|
|
153
|
+
}
|
|
154
|
+
/** Lower-cased lookup set of the default names plus any extras. */
|
|
155
|
+
function buildNameSet(defaults, extra) {
|
|
156
|
+
return new Set([...defaults, ...extra ?? []].map((n) => n.toLowerCase()));
|
|
157
|
+
}
|
|
158
|
+
const REDACTED = "[REDACTED]";
|
|
159
|
+
const MIN_SCRUB_LENGTH = 3;
|
|
160
|
+
function queryNameOf(rawKey) {
|
|
161
|
+
const decoded = safeDecode(rawKey);
|
|
162
|
+
const bracket = decoded.indexOf("[");
|
|
163
|
+
return (bracket === -1 ? decoded : decoded.slice(0, bracket)).toLowerCase();
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Raw and decoded values of sensitive query parameters present in this URL.
|
|
167
|
+
* Values shorter than 3 characters or already `[REDACTED]` are ignored.
|
|
168
|
+
*/
|
|
169
|
+
function sensitiveQueryValues(url, names) {
|
|
170
|
+
const q = url.indexOf("?");
|
|
171
|
+
if (q === -1) return [];
|
|
172
|
+
const hashAt = url.indexOf("#", q);
|
|
173
|
+
const query = url.slice(q + 1, hashAt === -1 ? void 0 : hashAt);
|
|
174
|
+
const found = /* @__PURE__ */ new Set();
|
|
175
|
+
for (const pair of query.split("&")) {
|
|
176
|
+
const eq = pair.indexOf("=");
|
|
177
|
+
if (eq === -1 || !names.has(queryNameOf(pair.slice(0, eq)))) continue;
|
|
178
|
+
const raw = pair.slice(eq + 1);
|
|
179
|
+
for (const value of [raw, safeDecode(raw)]) if (value.length >= MIN_SCRUB_LENGTH && value !== REDACTED) found.add(value);
|
|
180
|
+
}
|
|
181
|
+
return [...found];
|
|
182
|
+
}
|
|
183
|
+
/** Replace every literal occurrence of `values` in `text` with `[REDACTED]`. */
|
|
184
|
+
function scrubValues(text, values) {
|
|
185
|
+
if (values.length === 0 || text.length === 0) return text;
|
|
186
|
+
let out = text;
|
|
187
|
+
for (const value of [...values].sort((a, b) => b.length - a.length)) if (value.length > 0 && out.includes(value)) out = out.split(value).join(REDACTED);
|
|
188
|
+
return out;
|
|
189
|
+
}
|
|
190
|
+
function isUrlTerminator(ch) {
|
|
191
|
+
return ch === " " || ch === "\n" || ch === "\r" || ch === " " || ch === "\"" || ch === "'" || ch === "`";
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Redact sensitive query values in every `?query` found inside free text (an
|
|
195
|
+
* error message, a stack line). Scans for `?` and cuts at whitespace or a quote.
|
|
196
|
+
*/
|
|
197
|
+
function redactUrlsInText(text, names) {
|
|
198
|
+
let q = text.indexOf("?");
|
|
199
|
+
if (q === -1) return text;
|
|
200
|
+
let out = "";
|
|
201
|
+
let cursor = 0;
|
|
202
|
+
while (q !== -1) {
|
|
203
|
+
let end = q + 1;
|
|
204
|
+
while (end < text.length && !isUrlTerminator(text.charAt(end))) end++;
|
|
205
|
+
out += text.slice(cursor, q) + redactUrlQuery(text.slice(q, end), names);
|
|
206
|
+
cursor = end;
|
|
207
|
+
q = text.indexOf("?", end);
|
|
208
|
+
}
|
|
209
|
+
return out + text.slice(cursor);
|
|
210
|
+
}
|
|
211
|
+
/** Shape-preserving URL redaction plus literal scrubbing of this request's secret values. */
|
|
212
|
+
function sanitizeText(text, names, values) {
|
|
213
|
+
return scrubValues(redactUrlsInText(text, names), values);
|
|
214
|
+
}
|
|
215
|
+
Object.defineProperty(exports, "DEFAULT_REDACT_HEADERS", {
|
|
216
|
+
enumerable: true,
|
|
217
|
+
get: function() {
|
|
218
|
+
return DEFAULT_REDACT_HEADERS;
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
Object.defineProperty(exports, "DEFAULT_REDACT_QUERY_PARAMS", {
|
|
222
|
+
enumerable: true,
|
|
223
|
+
get: function() {
|
|
224
|
+
return DEFAULT_REDACT_QUERY_PARAMS;
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
Object.defineProperty(exports, "SENSITIVE_KEY_NAMES", {
|
|
228
|
+
enumerable: true,
|
|
229
|
+
get: function() {
|
|
230
|
+
return SENSITIVE_KEY_NAMES;
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
Object.defineProperty(exports, "TRANSPORT_CONFIG_SECRET_NAMES", {
|
|
234
|
+
enumerable: true,
|
|
235
|
+
get: function() {
|
|
236
|
+
return TRANSPORT_CONFIG_SECRET_NAMES;
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
Object.defineProperty(exports, "assignOwn", {
|
|
240
|
+
enumerable: true,
|
|
241
|
+
get: function() {
|
|
242
|
+
return assignOwn;
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
Object.defineProperty(exports, "buildNameSet", {
|
|
246
|
+
enumerable: true,
|
|
247
|
+
get: function() {
|
|
248
|
+
return buildNameSet;
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
Object.defineProperty(exports, "isProtoKey", {
|
|
252
|
+
enumerable: true,
|
|
253
|
+
get: function() {
|
|
254
|
+
return isProtoKey;
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
Object.defineProperty(exports, "redactUrlQuery", {
|
|
258
|
+
enumerable: true,
|
|
259
|
+
get: function() {
|
|
260
|
+
return redactUrlQuery;
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
Object.defineProperty(exports, "sanitizeText", {
|
|
264
|
+
enumerable: true,
|
|
265
|
+
get: function() {
|
|
266
|
+
return sanitizeText;
|
|
267
|
+
}
|
|
268
|
+
});
|
|
269
|
+
Object.defineProperty(exports, "sensitiveQueryValues", {
|
|
270
|
+
enumerable: true,
|
|
271
|
+
get: function() {
|
|
272
|
+
return sensitiveQueryValues;
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
//# sourceMappingURL=sensitive-names-CHMowujD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sensitive-names-CHMowujD.js","names":[],"sources":["../src/utils/own-property.ts","../src/utils/sensitive-names.ts"],"sourcesContent":["/**\n * True for the one key that must never be assigned with `target[key] = value`.\n *\n * Assigning `constructor` or `prototype` on a fresh plain object only creates an\n * own property, which is harmless. Only `__proto__` invokes the prototype setter.\n */\nexport function isProtoKey(key: string): boolean {\n return key === '__proto__';\n}\n\n/**\n * Copy `value` onto `target[key]` as an own, enumerable data property.\n *\n * Normal keys use a plain assignment, which is the fast path. `__proto__` goes\n * through `Object.defineProperty` so that a key taken from logged or parsed data\n * becomes an own property instead of replacing the object's prototype.\n */\nexport function assignOwn(target: object, key: string, value: unknown): void {\n if (key === '__proto__') {\n Object.defineProperty(target, key, {\n value,\n enumerable: true,\n writable: true,\n configurable: true,\n });\n } else {\n (target as Record<string, unknown>)[key] = value;\n }\n}\n","/**\n * The one list of sensitive names. Log redaction (redact.utils), the HTTP logger\n * middleware and transport secret handling (transports/secret-config) all read it,\n * so the lists cannot drift. No imports: safe from any module, including browser code.\n */\n\n/** Field names redacted by name, wherever they appear in logged data. */\nexport const SENSITIVE_KEY_NAMES: readonly string[] = [\n 'password',\n 'passwd',\n 'secret',\n 'token',\n 'apiKey',\n 'api_key',\n 'accessToken',\n 'access_token',\n 'refreshToken',\n 'refresh_token',\n 'authorization',\n 'credentials',\n 'privateKey',\n 'private_key',\n 'clientSecret',\n 'client_secret',\n 'cookie',\n 'set-cookie',\n 'x-api-key',\n 'session',\n 'proxy-authorization',\n 'x-auth-token',\n 'x-access-token',\n 'aws_secret_access_key',\n 'awsSecretAccessKey',\n 'secretAccessKey',\n];\n\n/**\n * Extra names that only mean \"secret\" inside transport configuration, where\n * short words like `key` or `signature` are credentials, not log fields.\n */\nexport const TRANSPORT_CONFIG_SECRET_NAMES: readonly string[] = [\n 'writeKey',\n 'apiSecret',\n 'connectionString',\n 'sessionToken',\n 'passphrase',\n 'signature',\n 'pwd',\n 'pfx',\n 'cert',\n 'key',\n 'auth',\n];\n\n/** Request headers whose values are never logged. */\nexport const DEFAULT_REDACT_HEADERS: readonly string[] = [\n 'authorization',\n 'cookie',\n 'set-cookie',\n 'x-api-key',\n 'proxy-authorization',\n 'x-auth-token',\n 'x-access-token',\n 'x-csrf-token',\n 'x-amz-security-token',\n];\n\n/** Query-string parameters whose values are never logged. */\nexport const DEFAULT_REDACT_QUERY_PARAMS: readonly string[] = [\n 'token',\n 'access_token',\n 'refresh_token',\n 'code',\n 'password',\n 'secret',\n 'api_key',\n 'apikey',\n 'key',\n 'signature',\n 'sig',\n 'auth',\n 'accesstoken',\n 'refreshtoken',\n 'id_token',\n 'idtoken',\n 'client_secret',\n 'clientsecret',\n 'session',\n 'sessionid',\n 'session_id',\n 'jwt',\n 'auth_token',\n 'authtoken',\n 'api-key',\n 'x-api-key',\n 'x-amz-signature',\n 'x-amz-credential',\n 'x-amz-security-token',\n 'x-goog-signature',\n 'x-goog-credential',\n 'access-token',\n 'x-access-token',\n 'x-auth-token',\n 'apitoken',\n 'api_token',\n];\n\nfunction safeDecode(value: string): string {\n try {\n return decodeURIComponent(value.replace(/\\+/g, ' '));\n } catch {\n return value;\n }\n}\n\n/** Replace the values of sensitive query parameters, leaving the rest verbatim. */\nexport function redactUrlQuery(url: string, redactParams: ReadonlySet<string>): string {\n const q = url.indexOf('?');\n if (q === -1) return url;\n const hashAt = url.indexOf('#', q);\n const query = url.slice(q + 1, hashAt === -1 ? undefined : hashAt);\n const hash = hashAt === -1 ? '' : url.slice(hashAt);\n const cleaned = query\n .split('&')\n .map((pair) => {\n const eq = pair.indexOf('=');\n const rawKey = eq === -1 ? pair : pair.slice(0, eq);\n const decoded = safeDecode(rawKey);\n const bracket = decoded.indexOf('[');\n const name = (bracket === -1 ? decoded : decoded.slice(0, bracket)).toLowerCase();\n return redactParams.has(name) && eq !== -1 ? `${rawKey}=[REDACTED]` : pair;\n })\n .join('&');\n return `${url.slice(0, q)}?${cleaned}${hash}`;\n}\n\n/** Lower-cased lookup set of the default names plus any extras. */\nexport function buildNameSet(\n defaults: readonly string[],\n extra: readonly string[] | undefined\n): Set<string> {\n return new Set([...defaults, ...(extra ?? [])].map((n) => n.toLowerCase()));\n}\n\nconst REDACTED = '[REDACTED]';\nconst MIN_SCRUB_LENGTH = 3;\n\nfunction queryNameOf(rawKey: string): string {\n const decoded = safeDecode(rawKey);\n const bracket = decoded.indexOf('[');\n return (bracket === -1 ? decoded : decoded.slice(0, bracket)).toLowerCase();\n}\n\n/**\n * Raw and decoded values of sensitive query parameters present in this URL.\n * Values shorter than 3 characters or already `[REDACTED]` are ignored.\n */\nexport function sensitiveQueryValues(url: string, names: ReadonlySet<string>): string[] {\n const q = url.indexOf('?');\n if (q === -1) return [];\n const hashAt = url.indexOf('#', q);\n const query = url.slice(q + 1, hashAt === -1 ? undefined : hashAt);\n const found = new Set<string>();\n for (const pair of query.split('&')) {\n const eq = pair.indexOf('=');\n if (eq === -1 || !names.has(queryNameOf(pair.slice(0, eq)))) continue;\n const raw = pair.slice(eq + 1);\n for (const value of [raw, safeDecode(raw)]) {\n if (value.length >= MIN_SCRUB_LENGTH && value !== REDACTED) found.add(value);\n }\n }\n return [...found];\n}\n\n/** Replace every literal occurrence of `values` in `text` with `[REDACTED]`. */\nexport function scrubValues(text: string, values: readonly string[]): string {\n if (values.length === 0 || text.length === 0) return text;\n let out = text;\n for (const value of [...values].sort((a, b) => b.length - a.length)) {\n if (value.length > 0 && out.includes(value)) out = out.split(value).join(REDACTED);\n }\n return out;\n}\n\nfunction isUrlTerminator(ch: string): boolean {\n return (\n ch === ' ' ||\n ch === '\\n' ||\n ch === '\\r' ||\n ch === '\\t' ||\n ch === '\"' ||\n ch === \"'\" ||\n ch === '`'\n );\n}\n\n/**\n * Redact sensitive query values in every `?query` found inside free text (an\n * error message, a stack line). Scans for `?` and cuts at whitespace or a quote.\n */\nexport function redactUrlsInText(text: string, names: ReadonlySet<string>): string {\n let q = text.indexOf('?');\n if (q === -1) return text;\n let out = '';\n let cursor = 0;\n while (q !== -1) {\n let end = q + 1;\n while (end < text.length && !isUrlTerminator(text.charAt(end))) end++;\n out += text.slice(cursor, q) + redactUrlQuery(text.slice(q, end), names);\n cursor = end;\n q = text.indexOf('?', end);\n }\n return out + text.slice(cursor);\n}\n\n/** Shape-preserving URL redaction plus literal scrubbing of this request's secret values. */\nexport function sanitizeText(\n text: string,\n names: ReadonlySet<string>,\n values: readonly string[]\n): string {\n return scrubValues(redactUrlsInText(text, names), values);\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
// src/utils/own-property.ts
|
|
2
|
+
/**
|
|
3
|
+
* True for the one key that must never be assigned with `target[key] = value`.
|
|
4
|
+
*
|
|
5
|
+
* Assigning `constructor` or `prototype` on a fresh plain object only creates an
|
|
6
|
+
* own property, which is harmless. Only `__proto__` invokes the prototype setter.
|
|
7
|
+
*/
|
|
8
|
+
function isProtoKey(key) {
|
|
9
|
+
return key === "__proto__";
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Copy `value` onto `target[key]` as an own, enumerable data property.
|
|
13
|
+
*
|
|
14
|
+
* Normal keys use a plain assignment, which is the fast path. `__proto__` goes
|
|
15
|
+
* through `Object.defineProperty` so that a key taken from logged or parsed data
|
|
16
|
+
* becomes an own property instead of replacing the object's prototype.
|
|
17
|
+
*/
|
|
18
|
+
function assignOwn(target, key, value) {
|
|
19
|
+
if (key === "__proto__") Object.defineProperty(target, key, {
|
|
20
|
+
value,
|
|
21
|
+
enumerable: true,
|
|
22
|
+
writable: true,
|
|
23
|
+
configurable: true
|
|
24
|
+
});
|
|
25
|
+
else target[key] = value;
|
|
26
|
+
}
|
|
27
|
+
// src/utils/sensitive-names.ts
|
|
28
|
+
/**
|
|
29
|
+
* The one list of sensitive names. Log redaction (redact.utils), the HTTP logger
|
|
30
|
+
* middleware and transport secret handling (transports/secret-config) all read it,
|
|
31
|
+
* so the lists cannot drift. No imports: safe from any module, including browser code.
|
|
32
|
+
*/
|
|
33
|
+
/** Field names redacted by name, wherever they appear in logged data. */
|
|
34
|
+
const SENSITIVE_KEY_NAMES = [
|
|
35
|
+
"password",
|
|
36
|
+
"passwd",
|
|
37
|
+
"secret",
|
|
38
|
+
"token",
|
|
39
|
+
"apiKey",
|
|
40
|
+
"api_key",
|
|
41
|
+
"accessToken",
|
|
42
|
+
"access_token",
|
|
43
|
+
"refreshToken",
|
|
44
|
+
"refresh_token",
|
|
45
|
+
"authorization",
|
|
46
|
+
"credentials",
|
|
47
|
+
"privateKey",
|
|
48
|
+
"private_key",
|
|
49
|
+
"clientSecret",
|
|
50
|
+
"client_secret",
|
|
51
|
+
"cookie",
|
|
52
|
+
"set-cookie",
|
|
53
|
+
"x-api-key",
|
|
54
|
+
"session",
|
|
55
|
+
"proxy-authorization",
|
|
56
|
+
"x-auth-token",
|
|
57
|
+
"x-access-token",
|
|
58
|
+
"aws_secret_access_key",
|
|
59
|
+
"awsSecretAccessKey",
|
|
60
|
+
"secretAccessKey"
|
|
61
|
+
];
|
|
62
|
+
/**
|
|
63
|
+
* Extra names that only mean "secret" inside transport configuration, where
|
|
64
|
+
* short words like `key` or `signature` are credentials, not log fields.
|
|
65
|
+
*/
|
|
66
|
+
const TRANSPORT_CONFIG_SECRET_NAMES = [
|
|
67
|
+
"writeKey",
|
|
68
|
+
"apiSecret",
|
|
69
|
+
"connectionString",
|
|
70
|
+
"sessionToken",
|
|
71
|
+
"passphrase",
|
|
72
|
+
"signature",
|
|
73
|
+
"pwd",
|
|
74
|
+
"pfx",
|
|
75
|
+
"cert",
|
|
76
|
+
"key",
|
|
77
|
+
"auth"
|
|
78
|
+
];
|
|
79
|
+
/** Request headers whose values are never logged. */
|
|
80
|
+
const DEFAULT_REDACT_HEADERS = [
|
|
81
|
+
"authorization",
|
|
82
|
+
"cookie",
|
|
83
|
+
"set-cookie",
|
|
84
|
+
"x-api-key",
|
|
85
|
+
"proxy-authorization",
|
|
86
|
+
"x-auth-token",
|
|
87
|
+
"x-access-token",
|
|
88
|
+
"x-csrf-token",
|
|
89
|
+
"x-amz-security-token"
|
|
90
|
+
];
|
|
91
|
+
/** Query-string parameters whose values are never logged. */
|
|
92
|
+
const DEFAULT_REDACT_QUERY_PARAMS = [
|
|
93
|
+
"token",
|
|
94
|
+
"access_token",
|
|
95
|
+
"refresh_token",
|
|
96
|
+
"code",
|
|
97
|
+
"password",
|
|
98
|
+
"secret",
|
|
99
|
+
"api_key",
|
|
100
|
+
"apikey",
|
|
101
|
+
"key",
|
|
102
|
+
"signature",
|
|
103
|
+
"sig",
|
|
104
|
+
"auth",
|
|
105
|
+
"accesstoken",
|
|
106
|
+
"refreshtoken",
|
|
107
|
+
"id_token",
|
|
108
|
+
"idtoken",
|
|
109
|
+
"client_secret",
|
|
110
|
+
"clientsecret",
|
|
111
|
+
"session",
|
|
112
|
+
"sessionid",
|
|
113
|
+
"session_id",
|
|
114
|
+
"jwt",
|
|
115
|
+
"auth_token",
|
|
116
|
+
"authtoken",
|
|
117
|
+
"api-key",
|
|
118
|
+
"x-api-key",
|
|
119
|
+
"x-amz-signature",
|
|
120
|
+
"x-amz-credential",
|
|
121
|
+
"x-amz-security-token",
|
|
122
|
+
"x-goog-signature",
|
|
123
|
+
"x-goog-credential",
|
|
124
|
+
"access-token",
|
|
125
|
+
"x-access-token",
|
|
126
|
+
"x-auth-token",
|
|
127
|
+
"apitoken",
|
|
128
|
+
"api_token"
|
|
129
|
+
];
|
|
130
|
+
function safeDecode(value) {
|
|
131
|
+
try {
|
|
132
|
+
return decodeURIComponent(value.replace(/\+/g, " "));
|
|
133
|
+
} catch {
|
|
134
|
+
return value;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/** Replace the values of sensitive query parameters, leaving the rest verbatim. */
|
|
138
|
+
function redactUrlQuery(url, redactParams) {
|
|
139
|
+
const q = url.indexOf("?");
|
|
140
|
+
if (q === -1) return url;
|
|
141
|
+
const hashAt = url.indexOf("#", q);
|
|
142
|
+
const query = url.slice(q + 1, hashAt === -1 ? void 0 : hashAt);
|
|
143
|
+
const hash = hashAt === -1 ? "" : url.slice(hashAt);
|
|
144
|
+
const cleaned = query.split("&").map((pair) => {
|
|
145
|
+
const eq = pair.indexOf("=");
|
|
146
|
+
const rawKey = eq === -1 ? pair : pair.slice(0, eq);
|
|
147
|
+
const decoded = safeDecode(rawKey);
|
|
148
|
+
const bracket = decoded.indexOf("[");
|
|
149
|
+
const name = (bracket === -1 ? decoded : decoded.slice(0, bracket)).toLowerCase();
|
|
150
|
+
return redactParams.has(name) && eq !== -1 ? `${rawKey}=[REDACTED]` : pair;
|
|
151
|
+
}).join("&");
|
|
152
|
+
return `${url.slice(0, q)}?${cleaned}${hash}`;
|
|
153
|
+
}
|
|
154
|
+
/** Lower-cased lookup set of the default names plus any extras. */
|
|
155
|
+
function buildNameSet(defaults, extra) {
|
|
156
|
+
return new Set([...defaults, ...extra ?? []].map((n) => n.toLowerCase()));
|
|
157
|
+
}
|
|
158
|
+
const REDACTED = "[REDACTED]";
|
|
159
|
+
const MIN_SCRUB_LENGTH = 3;
|
|
160
|
+
function queryNameOf(rawKey) {
|
|
161
|
+
const decoded = safeDecode(rawKey);
|
|
162
|
+
const bracket = decoded.indexOf("[");
|
|
163
|
+
return (bracket === -1 ? decoded : decoded.slice(0, bracket)).toLowerCase();
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Raw and decoded values of sensitive query parameters present in this URL.
|
|
167
|
+
* Values shorter than 3 characters or already `[REDACTED]` are ignored.
|
|
168
|
+
*/
|
|
169
|
+
function sensitiveQueryValues(url, names) {
|
|
170
|
+
const q = url.indexOf("?");
|
|
171
|
+
if (q === -1) return [];
|
|
172
|
+
const hashAt = url.indexOf("#", q);
|
|
173
|
+
const query = url.slice(q + 1, hashAt === -1 ? void 0 : hashAt);
|
|
174
|
+
const found = /* @__PURE__ */ new Set();
|
|
175
|
+
for (const pair of query.split("&")) {
|
|
176
|
+
const eq = pair.indexOf("=");
|
|
177
|
+
if (eq === -1 || !names.has(queryNameOf(pair.slice(0, eq)))) continue;
|
|
178
|
+
const raw = pair.slice(eq + 1);
|
|
179
|
+
for (const value of [raw, safeDecode(raw)]) if (value.length >= MIN_SCRUB_LENGTH && value !== REDACTED) found.add(value);
|
|
180
|
+
}
|
|
181
|
+
return [...found];
|
|
182
|
+
}
|
|
183
|
+
/** Replace every literal occurrence of `values` in `text` with `[REDACTED]`. */
|
|
184
|
+
function scrubValues(text, values) {
|
|
185
|
+
if (values.length === 0 || text.length === 0) return text;
|
|
186
|
+
let out = text;
|
|
187
|
+
for (const value of [...values].sort((a, b) => b.length - a.length)) if (value.length > 0 && out.includes(value)) out = out.split(value).join(REDACTED);
|
|
188
|
+
return out;
|
|
189
|
+
}
|
|
190
|
+
function isUrlTerminator(ch) {
|
|
191
|
+
return ch === " " || ch === "\n" || ch === "\r" || ch === " " || ch === "\"" || ch === "'" || ch === "`";
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Redact sensitive query values in every `?query` found inside free text (an
|
|
195
|
+
* error message, a stack line). Scans for `?` and cuts at whitespace or a quote.
|
|
196
|
+
*/
|
|
197
|
+
function redactUrlsInText(text, names) {
|
|
198
|
+
let q = text.indexOf("?");
|
|
199
|
+
if (q === -1) return text;
|
|
200
|
+
let out = "";
|
|
201
|
+
let cursor = 0;
|
|
202
|
+
while (q !== -1) {
|
|
203
|
+
let end = q + 1;
|
|
204
|
+
while (end < text.length && !isUrlTerminator(text.charAt(end))) end++;
|
|
205
|
+
out += text.slice(cursor, q) + redactUrlQuery(text.slice(q, end), names);
|
|
206
|
+
cursor = end;
|
|
207
|
+
q = text.indexOf("?", end);
|
|
208
|
+
}
|
|
209
|
+
return out + text.slice(cursor);
|
|
210
|
+
}
|
|
211
|
+
/** Shape-preserving URL redaction plus literal scrubbing of this request's secret values. */
|
|
212
|
+
function sanitizeText(text, names, values) {
|
|
213
|
+
return scrubValues(redactUrlsInText(text, names), values);
|
|
214
|
+
}
|
|
215
|
+
export { buildNameSet as a, sensitiveQueryValues as c, TRANSPORT_CONFIG_SECRET_NAMES as i, assignOwn as l, DEFAULT_REDACT_QUERY_PARAMS as n, redactUrlQuery as o, SENSITIVE_KEY_NAMES as r, sanitizeText as s, DEFAULT_REDACT_HEADERS as t, isProtoKey as u };
|
|
216
|
+
|
|
217
|
+
//# sourceMappingURL=sensitive-names-o__1PUUR.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sensitive-names-o__1PUUR.mjs","names":[],"sources":["../src/utils/own-property.ts","../src/utils/sensitive-names.ts"],"sourcesContent":["/**\n * True for the one key that must never be assigned with `target[key] = value`.\n *\n * Assigning `constructor` or `prototype` on a fresh plain object only creates an\n * own property, which is harmless. Only `__proto__` invokes the prototype setter.\n */\nexport function isProtoKey(key: string): boolean {\n return key === '__proto__';\n}\n\n/**\n * Copy `value` onto `target[key]` as an own, enumerable data property.\n *\n * Normal keys use a plain assignment, which is the fast path. `__proto__` goes\n * through `Object.defineProperty` so that a key taken from logged or parsed data\n * becomes an own property instead of replacing the object's prototype.\n */\nexport function assignOwn(target: object, key: string, value: unknown): void {\n if (key === '__proto__') {\n Object.defineProperty(target, key, {\n value,\n enumerable: true,\n writable: true,\n configurable: true,\n });\n } else {\n (target as Record<string, unknown>)[key] = value;\n }\n}\n","/**\n * The one list of sensitive names. Log redaction (redact.utils), the HTTP logger\n * middleware and transport secret handling (transports/secret-config) all read it,\n * so the lists cannot drift. No imports: safe from any module, including browser code.\n */\n\n/** Field names redacted by name, wherever they appear in logged data. */\nexport const SENSITIVE_KEY_NAMES: readonly string[] = [\n 'password',\n 'passwd',\n 'secret',\n 'token',\n 'apiKey',\n 'api_key',\n 'accessToken',\n 'access_token',\n 'refreshToken',\n 'refresh_token',\n 'authorization',\n 'credentials',\n 'privateKey',\n 'private_key',\n 'clientSecret',\n 'client_secret',\n 'cookie',\n 'set-cookie',\n 'x-api-key',\n 'session',\n 'proxy-authorization',\n 'x-auth-token',\n 'x-access-token',\n 'aws_secret_access_key',\n 'awsSecretAccessKey',\n 'secretAccessKey',\n];\n\n/**\n * Extra names that only mean \"secret\" inside transport configuration, where\n * short words like `key` or `signature` are credentials, not log fields.\n */\nexport const TRANSPORT_CONFIG_SECRET_NAMES: readonly string[] = [\n 'writeKey',\n 'apiSecret',\n 'connectionString',\n 'sessionToken',\n 'passphrase',\n 'signature',\n 'pwd',\n 'pfx',\n 'cert',\n 'key',\n 'auth',\n];\n\n/** Request headers whose values are never logged. */\nexport const DEFAULT_REDACT_HEADERS: readonly string[] = [\n 'authorization',\n 'cookie',\n 'set-cookie',\n 'x-api-key',\n 'proxy-authorization',\n 'x-auth-token',\n 'x-access-token',\n 'x-csrf-token',\n 'x-amz-security-token',\n];\n\n/** Query-string parameters whose values are never logged. */\nexport const DEFAULT_REDACT_QUERY_PARAMS: readonly string[] = [\n 'token',\n 'access_token',\n 'refresh_token',\n 'code',\n 'password',\n 'secret',\n 'api_key',\n 'apikey',\n 'key',\n 'signature',\n 'sig',\n 'auth',\n 'accesstoken',\n 'refreshtoken',\n 'id_token',\n 'idtoken',\n 'client_secret',\n 'clientsecret',\n 'session',\n 'sessionid',\n 'session_id',\n 'jwt',\n 'auth_token',\n 'authtoken',\n 'api-key',\n 'x-api-key',\n 'x-amz-signature',\n 'x-amz-credential',\n 'x-amz-security-token',\n 'x-goog-signature',\n 'x-goog-credential',\n 'access-token',\n 'x-access-token',\n 'x-auth-token',\n 'apitoken',\n 'api_token',\n];\n\nfunction safeDecode(value: string): string {\n try {\n return decodeURIComponent(value.replace(/\\+/g, ' '));\n } catch {\n return value;\n }\n}\n\n/** Replace the values of sensitive query parameters, leaving the rest verbatim. */\nexport function redactUrlQuery(url: string, redactParams: ReadonlySet<string>): string {\n const q = url.indexOf('?');\n if (q === -1) return url;\n const hashAt = url.indexOf('#', q);\n const query = url.slice(q + 1, hashAt === -1 ? undefined : hashAt);\n const hash = hashAt === -1 ? '' : url.slice(hashAt);\n const cleaned = query\n .split('&')\n .map((pair) => {\n const eq = pair.indexOf('=');\n const rawKey = eq === -1 ? pair : pair.slice(0, eq);\n const decoded = safeDecode(rawKey);\n const bracket = decoded.indexOf('[');\n const name = (bracket === -1 ? decoded : decoded.slice(0, bracket)).toLowerCase();\n return redactParams.has(name) && eq !== -1 ? `${rawKey}=[REDACTED]` : pair;\n })\n .join('&');\n return `${url.slice(0, q)}?${cleaned}${hash}`;\n}\n\n/** Lower-cased lookup set of the default names plus any extras. */\nexport function buildNameSet(\n defaults: readonly string[],\n extra: readonly string[] | undefined\n): Set<string> {\n return new Set([...defaults, ...(extra ?? [])].map((n) => n.toLowerCase()));\n}\n\nconst REDACTED = '[REDACTED]';\nconst MIN_SCRUB_LENGTH = 3;\n\nfunction queryNameOf(rawKey: string): string {\n const decoded = safeDecode(rawKey);\n const bracket = decoded.indexOf('[');\n return (bracket === -1 ? decoded : decoded.slice(0, bracket)).toLowerCase();\n}\n\n/**\n * Raw and decoded values of sensitive query parameters present in this URL.\n * Values shorter than 3 characters or already `[REDACTED]` are ignored.\n */\nexport function sensitiveQueryValues(url: string, names: ReadonlySet<string>): string[] {\n const q = url.indexOf('?');\n if (q === -1) return [];\n const hashAt = url.indexOf('#', q);\n const query = url.slice(q + 1, hashAt === -1 ? undefined : hashAt);\n const found = new Set<string>();\n for (const pair of query.split('&')) {\n const eq = pair.indexOf('=');\n if (eq === -1 || !names.has(queryNameOf(pair.slice(0, eq)))) continue;\n const raw = pair.slice(eq + 1);\n for (const value of [raw, safeDecode(raw)]) {\n if (value.length >= MIN_SCRUB_LENGTH && value !== REDACTED) found.add(value);\n }\n }\n return [...found];\n}\n\n/** Replace every literal occurrence of `values` in `text` with `[REDACTED]`. */\nexport function scrubValues(text: string, values: readonly string[]): string {\n if (values.length === 0 || text.length === 0) return text;\n let out = text;\n for (const value of [...values].sort((a, b) => b.length - a.length)) {\n if (value.length > 0 && out.includes(value)) out = out.split(value).join(REDACTED);\n }\n return out;\n}\n\nfunction isUrlTerminator(ch: string): boolean {\n return (\n ch === ' ' ||\n ch === '\\n' ||\n ch === '\\r' ||\n ch === '\\t' ||\n ch === '\"' ||\n ch === \"'\" ||\n ch === '`'\n );\n}\n\n/**\n * Redact sensitive query values in every `?query` found inside free text (an\n * error message, a stack line). Scans for `?` and cuts at whitespace or a quote.\n */\nexport function redactUrlsInText(text: string, names: ReadonlySet<string>): string {\n let q = text.indexOf('?');\n if (q === -1) return text;\n let out = '';\n let cursor = 0;\n while (q !== -1) {\n let end = q + 1;\n while (end < text.length && !isUrlTerminator(text.charAt(end))) end++;\n out += text.slice(cursor, q) + redactUrlQuery(text.slice(q, end), names);\n cursor = end;\n q = text.indexOf('?', end);\n }\n return out + text.slice(cursor);\n}\n\n/** Shape-preserving URL redaction plus literal scrubbing of this request's secret values. */\nexport function sanitizeText(\n text: string,\n names: ReadonlySet<string>,\n values: readonly string[]\n): string {\n return scrubValues(redactUrlsInText(text, names), values);\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { _ as TransportLogEntry, l as IAsyncTransport } from "./transport.types-CzJq4IrF.mjs";
|
|
2
2
|
interface OtlpLogTransportConfig {
|
|
3
3
|
/** OTLP/HTTP logs endpoint, e.g. `http://localhost:4318/v1/logs`. */
|
|
4
4
|
url: string;
|
|
@@ -156,4 +156,4 @@ declare class SlackTransport implements IAsyncTransport {
|
|
|
156
156
|
private messageFor;
|
|
157
157
|
}
|
|
158
158
|
export { DiscordTransport as a, OtlpLogTransportConfig as c, DiscordEmbed as i, toOtelSeverity as l, SlackTransport as n, DiscordTransportConfig as o, SlackTransportConfig as r, OtlpLogTransport as s, SlackMessage as t };
|
|
159
|
-
//# sourceMappingURL=slack.transport-
|
|
159
|
+
//# sourceMappingURL=slack.transport-BDyENuR0.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.transport-
|
|
1
|
+
{"version":3,"file":"slack.transport-BDyENuR0.d.mts","names":[],"sources":["../src/transports/otlp.transport.ts","../src/transports/discord.transport.ts","../src/transports/slack.transport.ts"],"mappings":";UAuCiB;;EAEf;;EAEA,UAAU;;EAEV;;EAEA;;EAEA;;EAEA,qBAAqB;;EAErB;;EAEA;;EAEA;;EAEA;EACA;;;;;;;iBA0Bc,eAAe;EAAkB;EAAgB;;cA4GpD,4BAA4B;WACvB;WACA;mBAEC;mBACA;mBACA;mBACA;mBACA;mBACA;mBAEA;UACT;EAEI,YAAA,QAAQ;EA+BpB,MAAM,OAAO;;UAML;UA+BA;EAgBR,SAAS;UAID;UAIM;EA4BR,SAAS;;UC1RA;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA,SAAS;GACR;;UAGc;;EAEf;;EAEA;EACA;;EAEA;;EAEA;;;;;EAKA,aAAa,OAAO,sBAAsB;EAC1C,UAAU,OAAO;;EAEjB;;EAEA;;EAEA;EACA;;cA0FW,4BAA4B;WACvB;WACA;EACT,UAAU,OAAO;mBAEP;mBACA;mBACA;mBACA;EAEL,YAAA,QAAQ;EAiCpB,MAAM,OAAO;EAMb,SAAS;EAIT,SAAS;;EAKT,UAAU;UASF;;UAoBA;UAgBA;;;UC9OO;EACf;EACA;GACC;;UAGc;;EAEf;;EAEA;EACA;EACA;;EAEA;;;;;;EAMA,aAAa,OAAO,sBAAsB;EAC1C,UAAU,OAAO;;EAEjB;;EAEA;;EAEA;EACA;;cAgBW,0BAA0B;WACrB;WACA;EACT,UAAU,OAAO;mBAEP;mBACA;mBACA;mBACA;EAEL,YAAA,QAAQ;EA4BpB,MAAM,OAAO;EAMb,SAAS;EAIT,SAAS;;EAKT,UAAU;UASF;UAiBA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { _ as TransportLogEntry, l as IAsyncTransport } from "./transport.types-CzJq4IrF.js";
|
|
2
2
|
interface OtlpLogTransportConfig {
|
|
3
3
|
/** OTLP/HTTP logs endpoint, e.g. `http://localhost:4318/v1/logs`. */
|
|
4
4
|
url: string;
|
|
@@ -156,4 +156,4 @@ declare class SlackTransport implements IAsyncTransport {
|
|
|
156
156
|
private messageFor;
|
|
157
157
|
}
|
|
158
158
|
export { DiscordTransport as a, OtlpLogTransportConfig as c, DiscordEmbed as i, toOtelSeverity as l, SlackTransport as n, DiscordTransportConfig as o, SlackTransportConfig as r, OtlpLogTransport as s, SlackMessage as t };
|
|
159
|
-
//# sourceMappingURL=slack.transport-
|
|
159
|
+
//# sourceMappingURL=slack.transport-C6E0l4kw.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.transport-
|
|
1
|
+
{"version":3,"file":"slack.transport-C6E0l4kw.d.ts","names":[],"sources":["../src/transports/otlp.transport.ts","../src/transports/discord.transport.ts","../src/transports/slack.transport.ts"],"mappings":";UAuCiB;;EAEf;;EAEA,UAAU;;EAEV;;EAEA;;EAEA;;EAEA,qBAAqB;;EAErB;;EAEA;;EAEA;;EAEA;EACA;;;;;;;iBA0Bc,eAAe;EAAkB;EAAgB;;cA4GpD,4BAA4B;WACvB;WACA;mBAEC;mBACA;mBACA;mBACA;mBACA;mBACA;mBAEA;UACT;EAEI,YAAA,QAAQ;EA+BpB,MAAM,OAAO;;UAML;UA+BA;EAgBR,SAAS;UAID;UAIM;EA4BR,SAAS;;UC1RA;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA,SAAS;GACR;;UAGc;;EAEf;;EAEA;EACA;;EAEA;;EAEA;;;;;EAKA,aAAa,OAAO,sBAAsB;EAC1C,UAAU,OAAO;;EAEjB;;EAEA;;EAEA;EACA;;cA0FW,4BAA4B;WACvB;WACA;EACT,UAAU,OAAO;mBAEP;mBACA;mBACA;mBACA;EAEL,YAAA,QAAQ;EAiCpB,MAAM,OAAO;EAMb,SAAS;EAIT,SAAS;;EAKT,UAAU;UASF;;UAoBA;UAgBA;;;UC9OO;EACf;EACA;GACC;;UAGc;;EAEf;;EAEA;EACA;EACA;;EAEA;;;;;;EAMA,aAAa,OAAO,sBAAsB;EAC1C,UAAU,OAAO;;EAEjB;;EAEA;;EAEA;EACA;;cAgBW,0BAA0B;WACrB;WACA;EACT,UAAU,OAAO;mBAEP;mBACA;mBACA;mBACA;EAEL,YAAA,QAAQ;EA4BpB,MAAM,OAAO;EAMb,SAAS;EAIT,SAAS;;EAKT,UAAU;UASF;UAiBA"}
|