@vymalo/opencode-oauth2 0.11.0 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cache.d.ts +6 -6
- package/dist/cache.js +100 -104
- package/dist/cache.js.map +1 -1
- package/dist/config.d.ts +107 -107
- package/dist/config.js +173 -182
- package/dist/config.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib.js +1 -0
- package/dist/lib.js.map +1 -1
- package/dist/logging.d.ts +6 -6
- package/dist/logging.js +57 -56
- package/dist/logging.js.map +1 -1
- package/dist/model-discovery.d.ts +3 -3
- package/dist/model-discovery.js +61 -66
- package/dist/model-discovery.js.map +1 -1
- package/dist/model-normalization.js +84 -73
- package/dist/model-normalization.js.map +1 -1
- package/dist/oauth/browser.js +29 -25
- package/dist/oauth/browser.js.map +1 -1
- package/dist/oauth/client.d.ts +46 -46
- package/dist/oauth/client.js +411 -430
- package/dist/oauth/client.js.map +1 -1
- package/dist/oauth/device-code.d.ts +23 -23
- package/dist/oauth/device-code.js +225 -235
- package/dist/oauth/device-code.js.map +1 -1
- package/dist/oauth/discovery.d.ts +5 -5
- package/dist/oauth/discovery.js +34 -34
- package/dist/oauth/discovery.js.map +1 -1
- package/dist/oauth/http-utils.d.ts +27 -27
- package/dist/oauth/http-utils.js +96 -107
- package/dist/oauth/http-utils.js.map +1 -1
- package/dist/oauth/local-callback.d.ts +5 -5
- package/dist/oauth/local-callback.js +76 -74
- package/dist/oauth/local-callback.js.map +1 -1
- package/dist/oauth/pkce.d.ts +2 -2
- package/dist/oauth/pkce.js +9 -5
- package/dist/oauth/pkce.js.map +1 -1
- package/dist/oauth/subject-token.d.ts +15 -15
- package/dist/oauth/subject-token.js +68 -73
- package/dist/oauth/subject-token.js.map +1 -1
- package/dist/opencode.d.ts +15 -15
- package/dist/opencode.js +477 -497
- package/dist/opencode.js.map +1 -1
- package/dist/plugin.d.ts +39 -39
- package/dist/plugin.js +270 -277
- package/dist/plugin.js.map +1 -1
- package/dist/responses-repair.d.ts +12 -35
- package/dist/responses-repair.js +119 -125
- package/dist/responses-repair.js.map +1 -1
- package/dist/scheduler.d.ts +5 -5
- package/dist/scheduler.js +43 -45
- package/dist/scheduler.js.map +1 -1
- package/dist/types.d.ts +25 -25
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/package.json +3 -3
package/dist/config.js
CHANGED
|
@@ -1,205 +1,196 @@
|
|
|
1
1
|
export const DEFAULT_SYNC_INTERVAL_MINUTES = 60;
|
|
2
|
-
export const DEFAULT_HTTP_TIMEOUT_MS =
|
|
3
|
-
export const DEFAULT_TOKEN_EXPIRY_SKEW_MS =
|
|
2
|
+
export const DEFAULT_HTTP_TIMEOUT_MS = 15e3;
|
|
3
|
+
export const DEFAULT_TOKEN_EXPIRY_SKEW_MS = 3e4;
|
|
4
4
|
export const DEFAULT_LOG_LEVEL = "info";
|
|
5
5
|
export const DEFAULT_AUTH_FLOW = "authorization_code";
|
|
6
6
|
export const DEFAULT_K8S_SA_TOKEN_PATH = "/var/run/secrets/tokens/oauth2/token";
|
|
7
7
|
function ensureString(value, path) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
if (typeof value !== "string" || value.trim().length === 0) {
|
|
9
|
+
throw new Error(`${path} must be a non-empty string`);
|
|
10
|
+
}
|
|
11
|
+
return value.trim();
|
|
12
12
|
}
|
|
13
13
|
function ensureStringArray(value, path) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
if (!Array.isArray(value) || value.length === 0) {
|
|
15
|
+
throw new Error(`${path} must be a non-empty array of strings`);
|
|
16
|
+
}
|
|
17
|
+
return value.map((item, index) => ensureString(item, `${path}[${index}]`));
|
|
18
18
|
}
|
|
19
19
|
function validateRedirectPort(value, path) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
if (value === undefined || value === null) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
if (typeof value !== "number" || !Number.isInteger(value) || value <= 0 || value >= 65536) {
|
|
24
|
+
throw new Error(`${path} must be a positive integer less than 65536`);
|
|
25
|
+
}
|
|
26
|
+
return value;
|
|
27
27
|
}
|
|
28
28
|
function validateLogLevel(value, path) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
value === "error") {
|
|
37
|
-
return value;
|
|
38
|
-
}
|
|
39
|
-
throw new Error(`${path} must be one of "trace" | "debug" | "info" | "warn" | "error" (received ${JSON.stringify(value)})`);
|
|
29
|
+
if (value === undefined || value === null) {
|
|
30
|
+
return DEFAULT_LOG_LEVEL;
|
|
31
|
+
}
|
|
32
|
+
if (value === "trace" || value === "debug" || value === "info" || value === "warn" || value === "error") {
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
throw new Error(`${path} must be one of "trace" | "debug" | "info" | "warn" | "error" (received ${JSON.stringify(value)})`);
|
|
40
36
|
}
|
|
41
37
|
function validatePkce(value, path) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
38
|
+
if (value === undefined || value === null) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
if (typeof value !== "boolean") {
|
|
42
|
+
throw new Error(`${path} must be a boolean (received ${JSON.stringify(value)})`);
|
|
43
|
+
}
|
|
44
|
+
return value;
|
|
49
45
|
}
|
|
50
46
|
function validateAuthFlow(value, path) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
value === "token_exchange") {
|
|
59
|
-
return value;
|
|
60
|
-
}
|
|
61
|
-
throw new Error(`${path} must be one of "authorization_code" | "device_code" | "client_credentials" | "jwt_bearer" | "token_exchange" (received ${JSON.stringify(value)})`);
|
|
47
|
+
if (value === undefined || value === null) {
|
|
48
|
+
return DEFAULT_AUTH_FLOW;
|
|
49
|
+
}
|
|
50
|
+
if (value === "authorization_code" || value === "device_code" || value === "client_credentials" || value === "jwt_bearer" || value === "token_exchange") {
|
|
51
|
+
return value;
|
|
52
|
+
}
|
|
53
|
+
throw new Error(`${path} must be one of "authorization_code" | "device_code" | "client_credentials" | "jwt_bearer" | "token_exchange" (received ${JSON.stringify(value)})`);
|
|
62
54
|
}
|
|
63
55
|
function validateSubjectTokenSource(value, path) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
56
|
+
if (value === undefined || value === null) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
if (typeof value !== "object" || Array.isArray(value)) {
|
|
60
|
+
throw new Error(`${path} must be an object`);
|
|
61
|
+
}
|
|
62
|
+
const record = value;
|
|
63
|
+
const type = record.type;
|
|
64
|
+
switch (type) {
|
|
65
|
+
case "github_actions": {
|
|
66
|
+
const audience = record.audience;
|
|
67
|
+
if (typeof audience !== "string" || audience.trim().length === 0) {
|
|
68
|
+
throw new Error(`${path}.audience must be a non-empty string when type is "github_actions"`);
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
type: "github_actions",
|
|
72
|
+
audience: audience.trim()
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
case "kubernetes_sa": {
|
|
76
|
+
const tokenPath = record.tokenPath;
|
|
77
|
+
if (tokenPath !== undefined && tokenPath !== null) {
|
|
78
|
+
if (typeof tokenPath !== "string" || tokenPath.trim().length === 0) {
|
|
79
|
+
throw new Error(`${path}.tokenPath must be a non-empty string when provided`);
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
type: "kubernetes_sa",
|
|
83
|
+
tokenPath: tokenPath.trim()
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
return { type: "kubernetes_sa" };
|
|
87
|
+
}
|
|
88
|
+
case "file": {
|
|
89
|
+
const filePath = record.path;
|
|
90
|
+
if (typeof filePath !== "string" || filePath.trim().length === 0) {
|
|
91
|
+
throw new Error(`${path}.path must be a non-empty string when type is "file"`);
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
type: "file",
|
|
95
|
+
path: filePath.trim()
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
case "env": {
|
|
99
|
+
const varName = record.var;
|
|
100
|
+
if (typeof varName !== "string" || varName.trim().length === 0) {
|
|
101
|
+
throw new Error(`${path}.var must be a non-empty string when type is "env"`);
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
type: "env",
|
|
105
|
+
var: varName.trim()
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
default: throw new Error(`${path}.type must be one of "github_actions" | "kubernetes_sa" | "file" | "env" (received ${JSON.stringify(type)})`);
|
|
109
|
+
}
|
|
107
110
|
}
|
|
108
111
|
function normalizeServerConfig(input, index) {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
authFlow,
|
|
162
|
-
pkce,
|
|
163
|
-
subjectTokenSource,
|
|
164
|
-
tokenExchangeAudience
|
|
165
|
-
};
|
|
112
|
+
const path = `servers[${index}]`;
|
|
113
|
+
const id = ensureString(input.id, `${path}.id`);
|
|
114
|
+
const name = input.name && input.name.trim().length > 0 ? input.name.trim() : id;
|
|
115
|
+
const issuer = ensureString(input.issuer, `${path}.issuer`);
|
|
116
|
+
const baseURL = ensureString(input.baseURL, `${path}.baseURL`);
|
|
117
|
+
const clientId = ensureString(input.clientId, `${path}.clientId`);
|
|
118
|
+
const scopes = ensureStringArray(input.scopes, `${path}.scopes`);
|
|
119
|
+
const syncIntervalMinutes = typeof input.syncIntervalMinutes === "number" && Number.isFinite(input.syncIntervalMinutes) && input.syncIntervalMinutes > 0 ? input.syncIntervalMinutes : DEFAULT_SYNC_INTERVAL_MINUTES;
|
|
120
|
+
const redirectPort = validateRedirectPort(input.redirectPort, `${path}.redirectPort`);
|
|
121
|
+
const authFlow = validateAuthFlow(input.authFlow, `${path}.authFlow`);
|
|
122
|
+
const pkce = validatePkce(input.pkce, `${path}.pkce`);
|
|
123
|
+
const subjectTokenSource = validateSubjectTokenSource(input.subjectTokenSource, `${path}.subjectTokenSource`);
|
|
124
|
+
let clientSecret;
|
|
125
|
+
if (input.clientSecret !== undefined && input.clientSecret !== null) {
|
|
126
|
+
if (typeof input.clientSecret !== "string" || input.clientSecret.length === 0) {
|
|
127
|
+
throw new Error(`${path}.clientSecret must be a non-empty string when provided`);
|
|
128
|
+
}
|
|
129
|
+
clientSecret = input.clientSecret;
|
|
130
|
+
}
|
|
131
|
+
if (authFlow === "client_credentials" && !clientSecret) {
|
|
132
|
+
throw new Error(`${path}.clientSecret is required when authFlow is "client_credentials"`);
|
|
133
|
+
}
|
|
134
|
+
if ((authFlow === "jwt_bearer" || authFlow === "token_exchange") && !subjectTokenSource) {
|
|
135
|
+
throw new Error(`${path}.subjectTokenSource is required when authFlow is "${authFlow}" — set it to {type: "github_actions" | "kubernetes_sa" | "file" | "env", ...}`);
|
|
136
|
+
}
|
|
137
|
+
let tokenExchangeAudience;
|
|
138
|
+
if (input.tokenExchangeAudience !== undefined && input.tokenExchangeAudience !== null) {
|
|
139
|
+
if (typeof input.tokenExchangeAudience !== "string" || input.tokenExchangeAudience.trim().length === 0) {
|
|
140
|
+
throw new Error(`${path}.tokenExchangeAudience must be a non-empty string when provided`);
|
|
141
|
+
}
|
|
142
|
+
tokenExchangeAudience = input.tokenExchangeAudience.trim();
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
id,
|
|
146
|
+
name,
|
|
147
|
+
issuer,
|
|
148
|
+
baseURL,
|
|
149
|
+
clientId,
|
|
150
|
+
clientSecret,
|
|
151
|
+
scopes,
|
|
152
|
+
syncIntervalMinutes,
|
|
153
|
+
nameOverrides: input.nameOverrides ?? {},
|
|
154
|
+
authorizationEndpoint: input.authorizationEndpoint,
|
|
155
|
+
tokenEndpoint: input.tokenEndpoint,
|
|
156
|
+
deviceAuthorizationEndpoint: input.deviceAuthorizationEndpoint,
|
|
157
|
+
jwksUri: input.jwksUri,
|
|
158
|
+
redirectPort,
|
|
159
|
+
authFlow,
|
|
160
|
+
pkce,
|
|
161
|
+
subjectTokenSource,
|
|
162
|
+
tokenExchangeAudience
|
|
163
|
+
};
|
|
166
164
|
}
|
|
167
165
|
export function validateConfig(input) {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
httpTimeoutMs: typeof input.httpTimeoutMs === "number" &&
|
|
197
|
-
Number.isFinite(input.httpTimeoutMs) &&
|
|
198
|
-
input.httpTimeoutMs > 0
|
|
199
|
-
? input.httpTimeoutMs
|
|
200
|
-
: DEFAULT_HTTP_TIMEOUT_MS,
|
|
201
|
-
tokenExpirySkewMs,
|
|
202
|
-
logLevel: validateLogLevel(input.logLevel, "logLevel")
|
|
203
|
-
};
|
|
166
|
+
if (!input || typeof input !== "object") {
|
|
167
|
+
throw new Error("plugin config must be an object");
|
|
168
|
+
}
|
|
169
|
+
if (!Array.isArray(input.servers) || input.servers.length === 0) {
|
|
170
|
+
throw new Error("servers must be a non-empty array");
|
|
171
|
+
}
|
|
172
|
+
const normalizedServers = input.servers.map(normalizeServerConfig);
|
|
173
|
+
const ids = new Set();
|
|
174
|
+
for (const server of normalizedServers) {
|
|
175
|
+
if (ids.has(server.id)) {
|
|
176
|
+
throw new Error(`duplicate server id detected: ${server.id}`);
|
|
177
|
+
}
|
|
178
|
+
ids.add(server.id);
|
|
179
|
+
}
|
|
180
|
+
let tokenExpirySkewMs = DEFAULT_TOKEN_EXPIRY_SKEW_MS;
|
|
181
|
+
if (input.tokenExpirySkewMs !== undefined && input.tokenExpirySkewMs !== null) {
|
|
182
|
+
if (typeof input.tokenExpirySkewMs !== "number" || !Number.isFinite(input.tokenExpirySkewMs) || input.tokenExpirySkewMs <= 0) {
|
|
183
|
+
throw new Error("tokenExpirySkewMs must be a positive number");
|
|
184
|
+
}
|
|
185
|
+
tokenExpirySkewMs = input.tokenExpirySkewMs;
|
|
186
|
+
}
|
|
187
|
+
return {
|
|
188
|
+
servers: normalizedServers,
|
|
189
|
+
cacheNamespace: typeof input.cacheNamespace === "string" && input.cacheNamespace.trim().length > 0 ? input.cacheNamespace.trim() : "oauth2-model-sync",
|
|
190
|
+
httpTimeoutMs: typeof input.httpTimeoutMs === "number" && Number.isFinite(input.httpTimeoutMs) && input.httpTimeoutMs > 0 ? input.httpTimeoutMs : DEFAULT_HTTP_TIMEOUT_MS,
|
|
191
|
+
tokenExpirySkewMs,
|
|
192
|
+
logLevel: validateLogLevel(input.logLevel, "logLevel")
|
|
193
|
+
};
|
|
204
194
|
}
|
|
195
|
+
|
|
205
196
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"
|
|
1
|
+
{"mappings":"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","names":[],"sources":["../src/config.ts"],"version":3,"file":"config.js","sourceRoot":""}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"
|
|
1
|
+
{"mappings":";;;;AAIA,SAAS,eAAe","names":[],"sources":["../src/index.ts"],"version":3,"file":"index.js","sourceRoot":""}
|
package/dist/lib.js
CHANGED
|
@@ -5,4 +5,5 @@ export { diffModels, normalizeModelId, normalizeModelList } from "./model-normal
|
|
|
5
5
|
export { OAuth2ModelSyncPlugin } from "./plugin.js";
|
|
6
6
|
export { resolveCacheDir, FileCacheStore } from "./cache.js";
|
|
7
7
|
export { createOpencodeOauth2Plugin } from "./opencode.js";
|
|
8
|
+
|
|
8
9
|
//# sourceMappingURL=lib.js.map
|
package/dist/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"
|
|
1
|
+
{"mappings":"AAAA,SACE,yBACA,mBACA,+BAKA,sBACK;AAEP,SAAS,+BAA2D;AAEpE,SAAS,gBAAgB,mBAAmB;AAE5C,SAAS,YAAY,kBAAkB,0BAA0B;AAEjE,SAAS,6BAAiD;AAE1D,SAAS,iBAAiB,sBAAsB;AAEhD,SAAS,kCAAkC","names":[],"sources":["../src/lib.ts"],"version":3,"file":"lib.js","sourceRoot":""}
|
package/dist/logging.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export type LogLevel = "trace" | "debug" | "info" | "warn" | "error";
|
|
2
2
|
export declare const LOG_LEVEL_PRIORITY: Record<LogLevel, number>;
|
|
3
3
|
export interface LogFields {
|
|
4
|
-
|
|
4
|
+
[key: string]: unknown;
|
|
5
5
|
}
|
|
6
6
|
export interface Logger {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
trace(event: string, fields?: LogFields): void;
|
|
8
|
+
debug(event: string, fields?: LogFields): void;
|
|
9
|
+
info(event: string, fields?: LogFields): void;
|
|
10
|
+
warn(event: string, fields?: LogFields): void;
|
|
11
|
+
error(event: string, fields?: LogFields): void;
|
|
12
12
|
}
|
|
13
13
|
export declare function createJsonConsoleLogger(minLevel?: LogLevel): Logger;
|
package/dist/logging.js
CHANGED
|
@@ -1,63 +1,64 @@
|
|
|
1
1
|
export const LOG_LEVEL_PRIORITY = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
trace: 5,
|
|
3
|
+
debug: 10,
|
|
4
|
+
info: 20,
|
|
5
|
+
warn: 30,
|
|
6
|
+
error: 40
|
|
7
7
|
};
|
|
8
8
|
function redactFields(fields) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
9
|
+
if (!fields) {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
const redacted = {};
|
|
13
|
+
for (const [key, value] of Object.entries(fields)) {
|
|
14
|
+
if (/token|secret|password/i.test(key)) {
|
|
15
|
+
redacted[key] = "[redacted]";
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
redacted[key] = value;
|
|
19
|
+
}
|
|
20
|
+
return redacted;
|
|
21
21
|
}
|
|
22
22
|
export function createJsonConsoleLogger(minLevel = "info") {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
23
|
+
const minPriority = LOG_LEVEL_PRIORITY[minLevel];
|
|
24
|
+
const log = (level, event, fields) => {
|
|
25
|
+
if (LOG_LEVEL_PRIORITY[level] < minPriority) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const payload = {
|
|
29
|
+
ts: new Date().toISOString(),
|
|
30
|
+
level,
|
|
31
|
+
event,
|
|
32
|
+
...redactFields(fields) ?? {}
|
|
33
|
+
};
|
|
34
|
+
const line = JSON.stringify(payload);
|
|
35
|
+
if (level === "error") {
|
|
36
|
+
console.error(line);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (level === "warn") {
|
|
40
|
+
console.warn(line);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
console.log(line);
|
|
44
|
+
};
|
|
45
|
+
return {
|
|
46
|
+
trace(event, fields) {
|
|
47
|
+
log("trace", event, fields);
|
|
48
|
+
},
|
|
49
|
+
debug(event, fields) {
|
|
50
|
+
log("debug", event, fields);
|
|
51
|
+
},
|
|
52
|
+
info(event, fields) {
|
|
53
|
+
log("info", event, fields);
|
|
54
|
+
},
|
|
55
|
+
warn(event, fields) {
|
|
56
|
+
log("warn", event, fields);
|
|
57
|
+
},
|
|
58
|
+
error(event, fields) {
|
|
59
|
+
log("error", event, fields);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
62
|
}
|
|
63
|
+
|
|
63
64
|
//# sourceMappingURL=logging.js.map
|
package/dist/logging.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"
|
|
1
|
+
{"mappings":"AAEA,OAAO,MAAM,qBAA+C;CAC1D,OAAO;CACP,OAAO;CACP,MAAM;CACN,MAAM;CACN,OAAO;AACT;AAcA,SAAS,aAAa,QAA2C;CAC/D,IAAI,CAAC,QAAQ;EACX,OAAO;CACT;CAEA,MAAM,WAAsB,CAAC;CAC7B,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,GAAG;EACjD,IAAI,yBAAyB,KAAK,GAAG,GAAG;GACtC,SAAS,OAAO;GAChB;EACF;EACA,SAAS,OAAO;CAClB;CAEA,OAAO;AACT;AAEA,OAAO,SAAS,wBAAwB,WAAqB,QAAgB;CAC3E,MAAM,cAAc,mBAAmB;CAEvC,MAAM,OAAO,OAAiB,OAAe,WAA6B;EACxE,IAAI,mBAAmB,SAAS,aAAa;GAC3C;EACF;EAEA,MAAM,UAAU;GACd,IAAI,IAAI,KAAK,CAAC,CAAC,YAAY;GAC3B;GACA;GACA,GAAI,aAAa,MAAM,KAAK,CAAC;EAC/B;EAEA,MAAM,OAAO,KAAK,UAAU,OAAO;EACnC,IAAI,UAAU,SAAS;GACrB,QAAQ,MAAM,IAAI;GAClB;EACF;EAEA,IAAI,UAAU,QAAQ;GACpB,QAAQ,KAAK,IAAI;GACjB;EACF;EAEA,QAAQ,IAAI,IAAI;CAClB;CAEA,OAAO;EACL,MAAM,OAAO,QAAQ;GACnB,IAAI,SAAS,OAAO,MAAM;EAC5B;EACA,MAAM,OAAO,QAAQ;GACnB,IAAI,SAAS,OAAO,MAAM;EAC5B;EACA,KAAK,OAAO,QAAQ;GAClB,IAAI,QAAQ,OAAO,MAAM;EAC3B;EACA,KAAK,OAAO,QAAQ;GAClB,IAAI,QAAQ,OAAO,MAAM;EAC3B;EACA,MAAM,OAAO,QAAQ;GACnB,IAAI,SAAS,OAAO,MAAM;EAC5B;CACF;AACF","names":[],"sources":["../src/logging.ts"],"version":3,"file":"logging.js","sourceRoot":""}
|