phenoml 6.1.0 → 6.2.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/cjs/BaseClient.d.ts +2 -0
- package/dist/cjs/Client.js +3 -3
- package/dist/cjs/api/resources/agent/client/Client.js +8 -0
- package/dist/cjs/api/resources/agent/resources/prompts/client/Client.js +7 -0
- package/dist/cjs/api/resources/cohort/client/Client.js +1 -0
- package/dist/cjs/api/resources/construe/client/Client.js +10 -0
- package/dist/cjs/api/resources/fhir/client/Client.js +6 -0
- package/dist/cjs/api/resources/fhirProvider/client/Client.js +7 -0
- package/dist/cjs/api/resources/lang2Fhir/client/Client.js +5 -0
- package/dist/cjs/api/resources/summary/client/Client.js +6 -0
- package/dist/cjs/api/resources/tools/client/Client.js +4 -0
- package/dist/cjs/api/resources/tools/resources/mcpServer/client/Client.js +4 -0
- package/dist/cjs/api/resources/tools/resources/mcpServer/resources/tools/client/Client.js +4 -0
- package/dist/cjs/api/resources/workflows/client/Client.js +6 -0
- package/dist/cjs/core/exports.d.ts +1 -0
- package/dist/cjs/core/exports.js +17 -0
- package/dist/cjs/core/fetcher/Fetcher.d.ts +2 -0
- package/dist/cjs/core/fetcher/Fetcher.js +177 -1
- package/dist/cjs/core/index.d.ts +1 -0
- package/dist/cjs/core/index.js +2 -1
- package/dist/cjs/core/logging/exports.d.ts +18 -0
- package/dist/cjs/core/logging/exports.js +45 -0
- package/dist/cjs/core/logging/index.d.ts +1 -0
- package/dist/cjs/core/logging/index.js +17 -0
- package/dist/cjs/core/logging/logger.d.ts +126 -0
- package/dist/cjs/core/logging/logger.js +144 -0
- package/dist/cjs/exports.d.ts +1 -0
- package/dist/cjs/exports.js +17 -0
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/BaseClient.d.mts +2 -0
- package/dist/esm/Client.mjs +3 -3
- package/dist/esm/api/resources/agent/client/Client.mjs +8 -0
- package/dist/esm/api/resources/agent/resources/prompts/client/Client.mjs +7 -0
- package/dist/esm/api/resources/cohort/client/Client.mjs +1 -0
- package/dist/esm/api/resources/construe/client/Client.mjs +10 -0
- package/dist/esm/api/resources/fhir/client/Client.mjs +6 -0
- package/dist/esm/api/resources/fhirProvider/client/Client.mjs +7 -0
- package/dist/esm/api/resources/lang2Fhir/client/Client.mjs +5 -0
- package/dist/esm/api/resources/summary/client/Client.mjs +6 -0
- package/dist/esm/api/resources/tools/client/Client.mjs +4 -0
- package/dist/esm/api/resources/tools/resources/mcpServer/client/Client.mjs +4 -0
- package/dist/esm/api/resources/tools/resources/mcpServer/resources/tools/client/Client.mjs +4 -0
- package/dist/esm/api/resources/workflows/client/Client.mjs +6 -0
- package/dist/esm/core/exports.d.mts +1 -0
- package/dist/esm/core/exports.mjs +1 -0
- package/dist/esm/core/fetcher/Fetcher.d.mts +2 -0
- package/dist/esm/core/fetcher/Fetcher.mjs +177 -1
- package/dist/esm/core/index.d.mts +1 -0
- package/dist/esm/core/index.mjs +1 -0
- package/dist/esm/core/logging/exports.d.mts +18 -0
- package/dist/esm/core/logging/exports.mjs +9 -0
- package/dist/esm/core/logging/index.d.mts +1 -0
- package/dist/esm/core/logging/index.mjs +1 -0
- package/dist/esm/core/logging/logger.d.mts +126 -0
- package/dist/esm/core/logging/logger.mjs +138 -0
- package/dist/esm/exports.d.mts +1 -0
- package/dist/esm/exports.mjs +1 -0
- package/dist/esm/version.d.mts +1 -1
- package/dist/esm/version.mjs +1 -1
- package/package.json +2 -1
|
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.fetcher = void 0;
|
|
13
13
|
exports.fetcherImpl = fetcherImpl;
|
|
14
14
|
const json_js_1 = require("../json.js");
|
|
15
|
+
const logger_js_1 = require("../logging/logger.js");
|
|
15
16
|
const createRequestUrl_js_1 = require("./createRequestUrl.js");
|
|
16
17
|
const EndpointSupplier_js_1 = require("./EndpointSupplier.js");
|
|
17
18
|
const getErrorResponseBody_js_1 = require("./getErrorResponseBody.js");
|
|
@@ -21,6 +22,122 @@ const getResponseBody_js_1 = require("./getResponseBody.js");
|
|
|
21
22
|
const makeRequest_js_1 = require("./makeRequest.js");
|
|
22
23
|
const RawResponse_js_1 = require("./RawResponse.js");
|
|
23
24
|
const requestWithRetries_js_1 = require("./requestWithRetries.js");
|
|
25
|
+
const SENSITIVE_HEADERS = new Set([
|
|
26
|
+
"authorization",
|
|
27
|
+
"x-api-key",
|
|
28
|
+
"api-key",
|
|
29
|
+
"x-auth-token",
|
|
30
|
+
"cookie",
|
|
31
|
+
"set-cookie",
|
|
32
|
+
"proxy-authorization",
|
|
33
|
+
"x-csrf-token",
|
|
34
|
+
"x-xsrf-token",
|
|
35
|
+
]);
|
|
36
|
+
function redactHeaders(headers) {
|
|
37
|
+
const filtered = {};
|
|
38
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
39
|
+
if (SENSITIVE_HEADERS.has(key.toLowerCase())) {
|
|
40
|
+
filtered[key] = "[REDACTED]";
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
filtered[key] = value;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return filtered;
|
|
47
|
+
}
|
|
48
|
+
const SENSITIVE_QUERY_PARAMS = new Set([
|
|
49
|
+
"api_key",
|
|
50
|
+
"api-key",
|
|
51
|
+
"apikey",
|
|
52
|
+
"token",
|
|
53
|
+
"access_token",
|
|
54
|
+
"access-token",
|
|
55
|
+
"auth_token",
|
|
56
|
+
"auth-token",
|
|
57
|
+
"password",
|
|
58
|
+
"passwd",
|
|
59
|
+
"secret",
|
|
60
|
+
"api_secret",
|
|
61
|
+
"api-secret",
|
|
62
|
+
"apisecret",
|
|
63
|
+
"key",
|
|
64
|
+
"session",
|
|
65
|
+
"session_id",
|
|
66
|
+
"session-id",
|
|
67
|
+
]);
|
|
68
|
+
function redactQueryParameters(queryParameters) {
|
|
69
|
+
if (queryParameters == null) {
|
|
70
|
+
return queryParameters;
|
|
71
|
+
}
|
|
72
|
+
const redacted = {};
|
|
73
|
+
for (const [key, value] of Object.entries(queryParameters)) {
|
|
74
|
+
if (SENSITIVE_QUERY_PARAMS.has(key.toLowerCase())) {
|
|
75
|
+
redacted[key] = "[REDACTED]";
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
redacted[key] = value;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return redacted;
|
|
82
|
+
}
|
|
83
|
+
function redactUrl(url) {
|
|
84
|
+
const protocolIndex = url.indexOf("://");
|
|
85
|
+
if (protocolIndex === -1)
|
|
86
|
+
return url;
|
|
87
|
+
const afterProtocol = protocolIndex + 3;
|
|
88
|
+
const atIndex = url.indexOf("@", afterProtocol);
|
|
89
|
+
if (atIndex !== -1) {
|
|
90
|
+
const pathStart = url.indexOf("/", afterProtocol);
|
|
91
|
+
const queryStart = url.indexOf("?", afterProtocol);
|
|
92
|
+
const fragmentStart = url.indexOf("#", afterProtocol);
|
|
93
|
+
const firstDelimiter = Math.min(pathStart === -1 ? url.length : pathStart, queryStart === -1 ? url.length : queryStart, fragmentStart === -1 ? url.length : fragmentStart);
|
|
94
|
+
if (atIndex < firstDelimiter) {
|
|
95
|
+
url = `${url.slice(0, afterProtocol)}[REDACTED]@${url.slice(atIndex + 1)}`;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const queryStart = url.indexOf("?");
|
|
99
|
+
if (queryStart === -1)
|
|
100
|
+
return url;
|
|
101
|
+
const fragmentStart = url.indexOf("#", queryStart);
|
|
102
|
+
const queryEnd = fragmentStart !== -1 ? fragmentStart : url.length;
|
|
103
|
+
const queryString = url.slice(queryStart + 1, queryEnd);
|
|
104
|
+
if (queryString.length === 0)
|
|
105
|
+
return url;
|
|
106
|
+
// FAST PATH: Quick check if any sensitive keywords present
|
|
107
|
+
// Using indexOf is faster than regex for simple substring matching
|
|
108
|
+
const lower = queryString.toLowerCase();
|
|
109
|
+
const hasSensitive = lower.includes("token") || // catches token, access_token, auth_token, etc.
|
|
110
|
+
lower.includes("key") || // catches key, api_key, apikey, api-key, etc.
|
|
111
|
+
lower.includes("password") || // catches password
|
|
112
|
+
lower.includes("passwd") || // catches passwd
|
|
113
|
+
lower.includes("secret") || // catches secret, api_secret, etc.
|
|
114
|
+
lower.includes("session") || // catches session, session_id, session-id
|
|
115
|
+
lower.includes("auth"); // catches auth_token, auth-token, etc.
|
|
116
|
+
if (!hasSensitive) {
|
|
117
|
+
return url; // Early exit - no sensitive params
|
|
118
|
+
}
|
|
119
|
+
// SLOW PATH: Parse and redact
|
|
120
|
+
const redactedParams = [];
|
|
121
|
+
const params = queryString.split("&");
|
|
122
|
+
for (const param of params) {
|
|
123
|
+
const equalIndex = param.indexOf("=");
|
|
124
|
+
if (equalIndex === -1) {
|
|
125
|
+
redactedParams.push(param);
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
const key = param.slice(0, equalIndex);
|
|
129
|
+
let shouldRedact = SENSITIVE_QUERY_PARAMS.has(key.toLowerCase());
|
|
130
|
+
if (!shouldRedact && key.includes("%")) {
|
|
131
|
+
try {
|
|
132
|
+
const decodedKey = decodeURIComponent(key);
|
|
133
|
+
shouldRedact = SENSITIVE_QUERY_PARAMS.has(decodedKey.toLowerCase());
|
|
134
|
+
}
|
|
135
|
+
catch (_a) { }
|
|
136
|
+
}
|
|
137
|
+
redactedParams.push(shouldRedact ? `${key}=[REDACTED]` : param);
|
|
138
|
+
}
|
|
139
|
+
return url.slice(0, queryStart + 1) + redactedParams.join("&") + url.slice(queryEnd);
|
|
140
|
+
}
|
|
24
141
|
function getHeaders(args) {
|
|
25
142
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26
143
|
var _a;
|
|
@@ -54,11 +171,31 @@ function fetcherImpl(args) {
|
|
|
54
171
|
type: (_a = args.requestType) !== null && _a !== void 0 ? _a : "other",
|
|
55
172
|
});
|
|
56
173
|
const fetchFn = (_b = args.fetchFn) !== null && _b !== void 0 ? _b : (yield (0, getFetchFn_js_1.getFetchFn)());
|
|
174
|
+
const headers = yield getHeaders(args);
|
|
175
|
+
const logger = (0, logger_js_1.createLogger)(args.logging);
|
|
176
|
+
if (logger.isDebug()) {
|
|
177
|
+
const metadata = {
|
|
178
|
+
method: args.method,
|
|
179
|
+
url: redactUrl(url),
|
|
180
|
+
headers: redactHeaders(headers),
|
|
181
|
+
queryParameters: redactQueryParameters(args.queryParameters),
|
|
182
|
+
hasBody: requestBody != null,
|
|
183
|
+
};
|
|
184
|
+
logger.debug("Making HTTP request", metadata);
|
|
185
|
+
}
|
|
57
186
|
try {
|
|
58
187
|
const response = yield (0, requestWithRetries_js_1.requestWithRetries)(() => __awaiter(this, void 0, void 0, function* () {
|
|
59
|
-
return (0, makeRequest_js_1.makeRequest)(fetchFn, url, args.method,
|
|
188
|
+
return (0, makeRequest_js_1.makeRequest)(fetchFn, url, args.method, headers, requestBody, args.timeoutMs, args.abortSignal, args.withCredentials, args.duplex);
|
|
60
189
|
}), args.maxRetries);
|
|
61
190
|
if (response.status >= 200 && response.status < 400) {
|
|
191
|
+
if (logger.isDebug()) {
|
|
192
|
+
const metadata = {
|
|
193
|
+
method: args.method,
|
|
194
|
+
url: redactUrl(url),
|
|
195
|
+
statusCode: response.status,
|
|
196
|
+
};
|
|
197
|
+
logger.debug("HTTP request succeeded", metadata);
|
|
198
|
+
}
|
|
62
199
|
return {
|
|
63
200
|
ok: true,
|
|
64
201
|
body: (yield (0, getResponseBody_js_1.getResponseBody)(response, args.responseType)),
|
|
@@ -67,6 +204,14 @@ function fetcherImpl(args) {
|
|
|
67
204
|
};
|
|
68
205
|
}
|
|
69
206
|
else {
|
|
207
|
+
if (logger.isError()) {
|
|
208
|
+
const metadata = {
|
|
209
|
+
method: args.method,
|
|
210
|
+
url: redactUrl(url),
|
|
211
|
+
statusCode: response.status,
|
|
212
|
+
};
|
|
213
|
+
logger.error("HTTP request failed with error status", metadata);
|
|
214
|
+
}
|
|
70
215
|
return {
|
|
71
216
|
ok: false,
|
|
72
217
|
error: {
|
|
@@ -80,6 +225,13 @@ function fetcherImpl(args) {
|
|
|
80
225
|
}
|
|
81
226
|
catch (error) {
|
|
82
227
|
if ((_c = args.abortSignal) === null || _c === void 0 ? void 0 : _c.aborted) {
|
|
228
|
+
if (logger.isError()) {
|
|
229
|
+
const metadata = {
|
|
230
|
+
method: args.method,
|
|
231
|
+
url: redactUrl(url),
|
|
232
|
+
};
|
|
233
|
+
logger.error("HTTP request was aborted", metadata);
|
|
234
|
+
}
|
|
83
235
|
return {
|
|
84
236
|
ok: false,
|
|
85
237
|
error: {
|
|
@@ -90,6 +242,14 @@ function fetcherImpl(args) {
|
|
|
90
242
|
};
|
|
91
243
|
}
|
|
92
244
|
else if (error instanceof Error && error.name === "AbortError") {
|
|
245
|
+
if (logger.isError()) {
|
|
246
|
+
const metadata = {
|
|
247
|
+
method: args.method,
|
|
248
|
+
url: redactUrl(url),
|
|
249
|
+
timeoutMs: args.timeoutMs,
|
|
250
|
+
};
|
|
251
|
+
logger.error("HTTP request timed out", metadata);
|
|
252
|
+
}
|
|
93
253
|
return {
|
|
94
254
|
ok: false,
|
|
95
255
|
error: {
|
|
@@ -99,6 +259,14 @@ function fetcherImpl(args) {
|
|
|
99
259
|
};
|
|
100
260
|
}
|
|
101
261
|
else if (error instanceof Error) {
|
|
262
|
+
if (logger.isError()) {
|
|
263
|
+
const metadata = {
|
|
264
|
+
method: args.method,
|
|
265
|
+
url: redactUrl(url),
|
|
266
|
+
errorMessage: error.message,
|
|
267
|
+
};
|
|
268
|
+
logger.error("HTTP request failed with error", metadata);
|
|
269
|
+
}
|
|
102
270
|
return {
|
|
103
271
|
ok: false,
|
|
104
272
|
error: {
|
|
@@ -108,6 +276,14 @@ function fetcherImpl(args) {
|
|
|
108
276
|
rawResponse: RawResponse_js_1.unknownRawResponse,
|
|
109
277
|
};
|
|
110
278
|
}
|
|
279
|
+
if (logger.isError()) {
|
|
280
|
+
const metadata = {
|
|
281
|
+
method: args.method,
|
|
282
|
+
url: redactUrl(url),
|
|
283
|
+
error: (0, json_js_1.toJson)(error),
|
|
284
|
+
};
|
|
285
|
+
logger.error("HTTP request failed with unknown error", metadata);
|
|
286
|
+
}
|
|
111
287
|
return {
|
|
112
288
|
ok: false,
|
|
113
289
|
error: {
|
package/dist/cjs/core/index.d.ts
CHANGED
package/dist/cjs/core/index.js
CHANGED
|
@@ -36,9 +36,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
36
36
|
};
|
|
37
37
|
})();
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.url = void 0;
|
|
39
|
+
exports.url = exports.logging = void 0;
|
|
40
40
|
__exportStar(require("./auth/index.js"), exports);
|
|
41
41
|
__exportStar(require("./base64.js"), exports);
|
|
42
42
|
__exportStar(require("./fetcher/index.js"), exports);
|
|
43
|
+
exports.logging = __importStar(require("./logging/index.js"));
|
|
43
44
|
__exportStar(require("./runtime/index.js"), exports);
|
|
44
45
|
exports.url = __importStar(require("./url/index.js"));
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as logger from "./logger.js";
|
|
2
|
+
export declare namespace logging {
|
|
3
|
+
/**
|
|
4
|
+
* Configuration for logger instances.
|
|
5
|
+
*/
|
|
6
|
+
type LogConfig = logger.LogConfig;
|
|
7
|
+
type LogLevel = logger.LogLevel;
|
|
8
|
+
const LogLevel: typeof logger.LogLevel;
|
|
9
|
+
type ILogger = logger.ILogger;
|
|
10
|
+
/**
|
|
11
|
+
* Console logger implementation that outputs to the console.
|
|
12
|
+
*/
|
|
13
|
+
type ConsoleLogger = logger.ConsoleLogger;
|
|
14
|
+
/**
|
|
15
|
+
* Console logger implementation that outputs to the console.
|
|
16
|
+
*/
|
|
17
|
+
const ConsoleLogger: typeof logger.ConsoleLogger;
|
|
18
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.logging = void 0;
|
|
37
|
+
const logger = __importStar(require("./logger.js"));
|
|
38
|
+
var logging;
|
|
39
|
+
(function (logging) {
|
|
40
|
+
logging.LogLevel = logger.LogLevel;
|
|
41
|
+
/**
|
|
42
|
+
* Console logger implementation that outputs to the console.
|
|
43
|
+
*/
|
|
44
|
+
logging.ConsoleLogger = logger.ConsoleLogger;
|
|
45
|
+
})(logging || (exports.logging = logging = {}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./logger.js";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./logger.js"), exports);
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
export declare const LogLevel: {
|
|
2
|
+
readonly Debug: "debug";
|
|
3
|
+
readonly Info: "info";
|
|
4
|
+
readonly Warn: "warn";
|
|
5
|
+
readonly Error: "error";
|
|
6
|
+
};
|
|
7
|
+
export type LogLevel = (typeof LogLevel)[keyof typeof LogLevel];
|
|
8
|
+
export interface ILogger {
|
|
9
|
+
/**
|
|
10
|
+
* Logs a debug message.
|
|
11
|
+
* @param message - The message to log
|
|
12
|
+
* @param args - Additional arguments to log
|
|
13
|
+
*/
|
|
14
|
+
debug(message: string, ...args: unknown[]): void;
|
|
15
|
+
/**
|
|
16
|
+
* Logs an info message.
|
|
17
|
+
* @param message - The message to log
|
|
18
|
+
* @param args - Additional arguments to log
|
|
19
|
+
*/
|
|
20
|
+
info(message: string, ...args: unknown[]): void;
|
|
21
|
+
/**
|
|
22
|
+
* Logs a warning message.
|
|
23
|
+
* @param message - The message to log
|
|
24
|
+
* @param args - Additional arguments to log
|
|
25
|
+
*/
|
|
26
|
+
warn(message: string, ...args: unknown[]): void;
|
|
27
|
+
/**
|
|
28
|
+
* Logs an error message.
|
|
29
|
+
* @param message - The message to log
|
|
30
|
+
* @param args - Additional arguments to log
|
|
31
|
+
*/
|
|
32
|
+
error(message: string, ...args: unknown[]): void;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Configuration for logger initialization.
|
|
36
|
+
*/
|
|
37
|
+
export interface LogConfig {
|
|
38
|
+
/**
|
|
39
|
+
* Minimum log level to output.
|
|
40
|
+
* @default LogLevel.Info
|
|
41
|
+
*/
|
|
42
|
+
level?: LogLevel;
|
|
43
|
+
/**
|
|
44
|
+
* Logger implementation to use.
|
|
45
|
+
* @default new ConsoleLogger()
|
|
46
|
+
*/
|
|
47
|
+
logger?: ILogger;
|
|
48
|
+
/**
|
|
49
|
+
* Whether logging should be silenced.
|
|
50
|
+
* @default true
|
|
51
|
+
*/
|
|
52
|
+
silent?: boolean;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Default console-based logger implementation.
|
|
56
|
+
*/
|
|
57
|
+
export declare class ConsoleLogger implements ILogger {
|
|
58
|
+
debug(message: string, ...args: unknown[]): void;
|
|
59
|
+
info(message: string, ...args: unknown[]): void;
|
|
60
|
+
warn(message: string, ...args: unknown[]): void;
|
|
61
|
+
error(message: string, ...args: unknown[]): void;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Logger class that provides level-based logging functionality.
|
|
65
|
+
*/
|
|
66
|
+
export declare class Logger {
|
|
67
|
+
private readonly level;
|
|
68
|
+
private readonly logger;
|
|
69
|
+
private readonly silent;
|
|
70
|
+
/**
|
|
71
|
+
* Creates a new logger instance.
|
|
72
|
+
* @param config - Logger configuration
|
|
73
|
+
*/
|
|
74
|
+
constructor(config: Required<LogConfig>);
|
|
75
|
+
/**
|
|
76
|
+
* Checks if a log level should be output based on configuration.
|
|
77
|
+
* @param level - The log level to check
|
|
78
|
+
* @returns True if the level should be logged
|
|
79
|
+
*/
|
|
80
|
+
shouldLog(level: LogLevel): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Checks if debug logging is enabled.
|
|
83
|
+
* @returns True if debug logs should be output
|
|
84
|
+
*/
|
|
85
|
+
isDebug(): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Logs a debug message if debug logging is enabled.
|
|
88
|
+
* @param message - The message to log
|
|
89
|
+
* @param args - Additional arguments to log
|
|
90
|
+
*/
|
|
91
|
+
debug(message: string, ...args: unknown[]): void;
|
|
92
|
+
/**
|
|
93
|
+
* Checks if info logging is enabled.
|
|
94
|
+
* @returns True if info logs should be output
|
|
95
|
+
*/
|
|
96
|
+
isInfo(): boolean;
|
|
97
|
+
/**
|
|
98
|
+
* Logs an info message if info logging is enabled.
|
|
99
|
+
* @param message - The message to log
|
|
100
|
+
* @param args - Additional arguments to log
|
|
101
|
+
*/
|
|
102
|
+
info(message: string, ...args: unknown[]): void;
|
|
103
|
+
/**
|
|
104
|
+
* Checks if warning logging is enabled.
|
|
105
|
+
* @returns True if warning logs should be output
|
|
106
|
+
*/
|
|
107
|
+
isWarn(): boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Logs a warning message if warning logging is enabled.
|
|
110
|
+
* @param message - The message to log
|
|
111
|
+
* @param args - Additional arguments to log
|
|
112
|
+
*/
|
|
113
|
+
warn(message: string, ...args: unknown[]): void;
|
|
114
|
+
/**
|
|
115
|
+
* Checks if error logging is enabled.
|
|
116
|
+
* @returns True if error logs should be output
|
|
117
|
+
*/
|
|
118
|
+
isError(): boolean;
|
|
119
|
+
/**
|
|
120
|
+
* Logs an error message if error logging is enabled.
|
|
121
|
+
* @param message - The message to log
|
|
122
|
+
* @param args - Additional arguments to log
|
|
123
|
+
*/
|
|
124
|
+
error(message: string, ...args: unknown[]): void;
|
|
125
|
+
}
|
|
126
|
+
export declare function createLogger(config?: LogConfig | Logger): Logger;
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Logger = exports.ConsoleLogger = exports.LogLevel = void 0;
|
|
4
|
+
exports.createLogger = createLogger;
|
|
5
|
+
exports.LogLevel = {
|
|
6
|
+
Debug: "debug",
|
|
7
|
+
Info: "info",
|
|
8
|
+
Warn: "warn",
|
|
9
|
+
Error: "error",
|
|
10
|
+
};
|
|
11
|
+
const logLevelMap = {
|
|
12
|
+
[exports.LogLevel.Debug]: 1,
|
|
13
|
+
[exports.LogLevel.Info]: 2,
|
|
14
|
+
[exports.LogLevel.Warn]: 3,
|
|
15
|
+
[exports.LogLevel.Error]: 4,
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Default console-based logger implementation.
|
|
19
|
+
*/
|
|
20
|
+
class ConsoleLogger {
|
|
21
|
+
debug(message, ...args) {
|
|
22
|
+
console.debug(message, ...args);
|
|
23
|
+
}
|
|
24
|
+
info(message, ...args) {
|
|
25
|
+
console.info(message, ...args);
|
|
26
|
+
}
|
|
27
|
+
warn(message, ...args) {
|
|
28
|
+
console.warn(message, ...args);
|
|
29
|
+
}
|
|
30
|
+
error(message, ...args) {
|
|
31
|
+
console.error(message, ...args);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.ConsoleLogger = ConsoleLogger;
|
|
35
|
+
/**
|
|
36
|
+
* Logger class that provides level-based logging functionality.
|
|
37
|
+
*/
|
|
38
|
+
class Logger {
|
|
39
|
+
/**
|
|
40
|
+
* Creates a new logger instance.
|
|
41
|
+
* @param config - Logger configuration
|
|
42
|
+
*/
|
|
43
|
+
constructor(config) {
|
|
44
|
+
this.level = logLevelMap[config.level];
|
|
45
|
+
this.logger = config.logger;
|
|
46
|
+
this.silent = config.silent;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Checks if a log level should be output based on configuration.
|
|
50
|
+
* @param level - The log level to check
|
|
51
|
+
* @returns True if the level should be logged
|
|
52
|
+
*/
|
|
53
|
+
shouldLog(level) {
|
|
54
|
+
return !this.silent && this.level >= logLevelMap[level];
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Checks if debug logging is enabled.
|
|
58
|
+
* @returns True if debug logs should be output
|
|
59
|
+
*/
|
|
60
|
+
isDebug() {
|
|
61
|
+
return this.shouldLog(exports.LogLevel.Debug);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Logs a debug message if debug logging is enabled.
|
|
65
|
+
* @param message - The message to log
|
|
66
|
+
* @param args - Additional arguments to log
|
|
67
|
+
*/
|
|
68
|
+
debug(message, ...args) {
|
|
69
|
+
if (this.isDebug()) {
|
|
70
|
+
this.logger.debug(message, ...args);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Checks if info logging is enabled.
|
|
75
|
+
* @returns True if info logs should be output
|
|
76
|
+
*/
|
|
77
|
+
isInfo() {
|
|
78
|
+
return this.shouldLog(exports.LogLevel.Info);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Logs an info message if info logging is enabled.
|
|
82
|
+
* @param message - The message to log
|
|
83
|
+
* @param args - Additional arguments to log
|
|
84
|
+
*/
|
|
85
|
+
info(message, ...args) {
|
|
86
|
+
if (this.isInfo()) {
|
|
87
|
+
this.logger.info(message, ...args);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Checks if warning logging is enabled.
|
|
92
|
+
* @returns True if warning logs should be output
|
|
93
|
+
*/
|
|
94
|
+
isWarn() {
|
|
95
|
+
return this.shouldLog(exports.LogLevel.Warn);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Logs a warning message if warning logging is enabled.
|
|
99
|
+
* @param message - The message to log
|
|
100
|
+
* @param args - Additional arguments to log
|
|
101
|
+
*/
|
|
102
|
+
warn(message, ...args) {
|
|
103
|
+
if (this.isWarn()) {
|
|
104
|
+
this.logger.warn(message, ...args);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Checks if error logging is enabled.
|
|
109
|
+
* @returns True if error logs should be output
|
|
110
|
+
*/
|
|
111
|
+
isError() {
|
|
112
|
+
return this.shouldLog(exports.LogLevel.Error);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Logs an error message if error logging is enabled.
|
|
116
|
+
* @param message - The message to log
|
|
117
|
+
* @param args - Additional arguments to log
|
|
118
|
+
*/
|
|
119
|
+
error(message, ...args) {
|
|
120
|
+
if (this.isError()) {
|
|
121
|
+
this.logger.error(message, ...args);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.Logger = Logger;
|
|
126
|
+
function createLogger(config) {
|
|
127
|
+
var _a, _b, _c;
|
|
128
|
+
if (config == null) {
|
|
129
|
+
return defaultLogger;
|
|
130
|
+
}
|
|
131
|
+
if (config instanceof Logger) {
|
|
132
|
+
return config;
|
|
133
|
+
}
|
|
134
|
+
config = config !== null && config !== void 0 ? config : {};
|
|
135
|
+
(_a = config.level) !== null && _a !== void 0 ? _a : (config.level = exports.LogLevel.Info);
|
|
136
|
+
(_b = config.logger) !== null && _b !== void 0 ? _b : (config.logger = new ConsoleLogger());
|
|
137
|
+
(_c = config.silent) !== null && _c !== void 0 ? _c : (config.silent = true);
|
|
138
|
+
return new Logger(config);
|
|
139
|
+
}
|
|
140
|
+
const defaultLogger = new Logger({
|
|
141
|
+
level: exports.LogLevel.Info,
|
|
142
|
+
logger: new ConsoleLogger(),
|
|
143
|
+
silent: true,
|
|
144
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./core/exports.js";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./core/exports.js"), exports);
|
package/dist/cjs/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "6.
|
|
1
|
+
export declare const SDK_VERSION = "6.2.0";
|
package/dist/cjs/version.js
CHANGED
|
@@ -14,6 +14,8 @@ export interface BaseClientOptions {
|
|
|
14
14
|
/** Provide a custom fetch implementation. Useful for platforms that don't have a built-in fetch or need a custom implementation. */
|
|
15
15
|
fetch?: typeof fetch;
|
|
16
16
|
fetcher?: core.FetchFunction;
|
|
17
|
+
/** Configure logging for the client. */
|
|
18
|
+
logging?: core.logging.LogConfig | core.logging.Logger;
|
|
17
19
|
}
|
|
18
20
|
export interface BaseRequestOptions {
|
|
19
21
|
/** The maximum time to wait for a response in seconds. */
|
package/dist/esm/Client.mjs
CHANGED
|
@@ -13,11 +13,11 @@ import { mergeHeaders } from "./core/headers.mjs";
|
|
|
13
13
|
import * as core from "./core/index.mjs";
|
|
14
14
|
export class phenomlClient {
|
|
15
15
|
constructor(_options) {
|
|
16
|
-
this._options = Object.assign(Object.assign({}, _options), { headers: mergeHeaders({
|
|
16
|
+
this._options = Object.assign(Object.assign({}, _options), { logging: core.logging.createLogger(_options === null || _options === void 0 ? void 0 : _options.logging), headers: mergeHeaders({
|
|
17
17
|
"X-Fern-Language": "JavaScript",
|
|
18
18
|
"X-Fern-SDK-Name": "phenoml",
|
|
19
|
-
"X-Fern-SDK-Version": "6.
|
|
20
|
-
"User-Agent": "phenoml/
|
|
19
|
+
"X-Fern-SDK-Version": "6.2.0",
|
|
20
|
+
"User-Agent": "phenoml/auto",
|
|
21
21
|
"X-Fern-Runtime": core.RUNTIME.type,
|
|
22
22
|
"X-Fern-Runtime-Version": core.RUNTIME.version,
|
|
23
23
|
}, _options === null || _options === void 0 ? void 0 : _options.headers) });
|