glasswork 1.5.0 → 1.6.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/CHANGELOG.md +54 -1
- package/README.md +6 -2
- package/dist/audit/audit-logger.d.ts +6 -1
- package/dist/audit/audit-logger.d.ts.map +1 -1
- package/dist/audit/audit-logger.js +6 -1
- package/dist/audit/audit-logger.js.map +1 -1
- package/dist/auth/assert.d.ts +4 -0
- package/dist/auth/assert.d.ts.map +1 -1
- package/dist/auth/assert.js +7 -3
- package/dist/auth/assert.js.map +1 -1
- package/dist/auth/better-auth-provider.js +13 -4
- package/dist/auth/better-auth-provider.js.map +1 -1
- package/dist/auth/errors.d.ts +17 -0
- package/dist/auth/errors.d.ts.map +1 -0
- package/dist/auth/errors.js +23 -0
- package/dist/auth/errors.js.map +1 -0
- package/dist/auth/index.d.ts +2 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +1 -0
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/middleware.d.ts +13 -0
- package/dist/auth/middleware.d.ts.map +1 -1
- package/dist/auth/middleware.js +19 -8
- package/dist/auth/middleware.js.map +1 -1
- package/dist/auth/types.d.ts +4 -0
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/config/providers.d.ts.map +1 -1
- package/dist/config/providers.js +5 -4
- package/dist/config/providers.js.map +1 -1
- package/dist/core/bootstrap.d.ts +2 -2
- package/dist/core/bootstrap.d.ts.map +1 -1
- package/dist/core/bootstrap.js +142 -68
- package/dist/core/bootstrap.js.map +1 -1
- package/dist/core/contract.d.ts +9 -2
- package/dist/core/contract.d.ts.map +1 -1
- package/dist/core/contract.js +2 -1
- package/dist/core/contract.js.map +1 -1
- package/dist/core/errors.d.ts +16 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +31 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/glasswork-config.d.ts +42 -0
- package/dist/core/glasswork-config.d.ts.map +1 -0
- package/dist/core/glasswork-config.js +2 -0
- package/dist/core/glasswork-config.js.map +1 -0
- package/dist/core/index.d.ts +6 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +4 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/job-services.d.ts +16 -0
- package/dist/core/job-services.d.ts.map +1 -0
- package/dist/core/job-services.js +19 -0
- package/dist/core/job-services.js.map +1 -0
- package/dist/core/lifecycle.d.ts +29 -1
- package/dist/core/lifecycle.d.ts.map +1 -1
- package/dist/core/lifecycle.js +98 -15
- package/dist/core/lifecycle.js.map +1 -1
- package/dist/core/module-graph.d.ts +2 -0
- package/dist/core/module-graph.d.ts.map +1 -1
- package/dist/core/module-graph.js +63 -10
- package/dist/core/module-graph.js.map +1 -1
- package/dist/core/module-inspection.d.ts +44 -0
- package/dist/core/module-inspection.d.ts.map +1 -0
- package/dist/core/module-inspection.js +114 -0
- package/dist/core/module-inspection.js.map +1 -0
- package/dist/core/module-runtime.d.ts +8 -0
- package/dist/core/module-runtime.d.ts.map +1 -1
- package/dist/core/module-runtime.js +60 -6
- package/dist/core/module-runtime.js.map +1 -1
- package/dist/core/request-scope.js +1 -1
- package/dist/core/request-scope.js.map +1 -1
- package/dist/core/types.d.ts +98 -7
- package/dist/core/types.d.ts.map +1 -1
- package/dist/email/ses.d.ts +7 -0
- package/dist/email/ses.d.ts.map +1 -0
- package/dist/email/ses.js +6 -0
- package/dist/email/ses.js.map +1 -0
- package/dist/email/smtp.d.ts +7 -0
- package/dist/email/smtp.d.ts.map +1 -0
- package/dist/email/smtp.js +6 -0
- package/dist/email/smtp.js.map +1 -0
- package/dist/email/transports/ses-transport.d.ts.map +1 -1
- package/dist/email/transports/ses-transport.js +6 -4
- package/dist/email/transports/ses-transport.js.map +1 -1
- package/dist/email/transports/smtp-transport.d.ts +40 -0
- package/dist/email/transports/smtp-transport.d.ts.map +1 -0
- package/dist/email/transports/smtp-transport.js +67 -0
- package/dist/email/transports/smtp-transport.js.map +1 -0
- package/dist/http/error-handler.d.ts +7 -1
- package/dist/http/error-handler.d.ts.map +1 -1
- package/dist/http/error-handler.js +18 -6
- package/dist/http/error-handler.js.map +1 -1
- package/dist/http/error-response.dto.d.ts +6 -0
- package/dist/http/error-response.dto.d.ts.map +1 -1
- package/dist/http/error-response.dto.js +6 -0
- package/dist/http/error-response.dto.js.map +1 -1
- package/dist/http/errors.d.ts +12 -0
- package/dist/http/errors.d.ts.map +1 -1
- package/dist/http/errors.js +35 -23
- package/dist/http/errors.js.map +1 -1
- package/dist/http/index.d.ts +1 -1
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/index.js +1 -1
- package/dist/http/index.js.map +1 -1
- package/dist/http/route-authorization.d.ts.map +1 -1
- package/dist/http/route-authorization.js +3 -3
- package/dist/http/route-authorization.js.map +1 -1
- package/dist/http/route-helpers.d.ts +2 -1
- package/dist/http/route-helpers.d.ts.map +1 -1
- package/dist/http/route-helpers.js +29 -2
- package/dist/http/route-helpers.js.map +1 -1
- package/dist/http/route-openapi-context.d.ts +15 -1
- package/dist/http/route-openapi-context.d.ts.map +1 -1
- package/dist/http/route-openapi-context.js.map +1 -1
- package/dist/http/route-response.d.ts +6 -2
- package/dist/http/route-response.d.ts.map +1 -1
- package/dist/http/route-response.js +36 -16
- package/dist/http/route-response.js.map +1 -1
- package/dist/http/route-types.d.ts +12 -4
- package/dist/http/route-types.d.ts.map +1 -1
- package/dist/http/route-types.js.map +1 -1
- package/dist/http/route-validation.d.ts.map +1 -1
- package/dist/http/route-validation.js +21 -1
- package/dist/http/route-validation.js.map +1 -1
- package/dist/jobs/drivers/eventbridge-scheduler-driver.d.ts +1 -0
- package/dist/jobs/drivers/eventbridge-scheduler-driver.d.ts.map +1 -1
- package/dist/jobs/drivers/eventbridge-scheduler-driver.js +12 -2
- package/dist/jobs/drivers/eventbridge-scheduler-driver.js.map +1 -1
- package/dist/jobs/drivers/mock-driver.d.ts +4 -0
- package/dist/jobs/drivers/mock-driver.d.ts.map +1 -1
- package/dist/jobs/drivers/mock-driver.js +10 -3
- package/dist/jobs/drivers/mock-driver.js.map +1 -1
- package/dist/jobs/drivers/sqs-driver.d.ts +1 -1
- package/dist/jobs/drivers/sqs-driver.d.ts.map +1 -1
- package/dist/jobs/drivers/sqs-driver.js +8 -2
- package/dist/jobs/drivers/sqs-driver.js.map +1 -1
- package/dist/jobs/errors.d.ts +14 -1
- package/dist/jobs/errors.d.ts.map +1 -1
- package/dist/jobs/errors.js +19 -2
- package/dist/jobs/errors.js.map +1 -1
- package/dist/jobs/index.d.ts +3 -3
- package/dist/jobs/index.d.ts.map +1 -1
- package/dist/jobs/index.js +1 -1
- package/dist/jobs/index.js.map +1 -1
- package/dist/jobs/job-service.d.ts +46 -7
- package/dist/jobs/job-service.d.ts.map +1 -1
- package/dist/jobs/job-service.js +63 -9
- package/dist/jobs/job-service.js.map +1 -1
- package/dist/jobs/scheduler.d.ts +6 -0
- package/dist/jobs/scheduler.d.ts.map +1 -0
- package/dist/jobs/scheduler.js +6 -0
- package/dist/jobs/scheduler.js.map +1 -0
- package/dist/jobs/sqs.d.ts +7 -0
- package/dist/jobs/sqs.d.ts.map +1 -0
- package/dist/jobs/sqs.js +7 -0
- package/dist/jobs/sqs.js.map +1 -0
- package/dist/jobs/types.d.ts +6 -1
- package/dist/jobs/types.d.ts.map +1 -1
- package/dist/jobs/utils.d.ts +6 -0
- package/dist/jobs/utils.d.ts.map +1 -1
- package/dist/jobs/utils.js +8 -0
- package/dist/jobs/utils.js.map +1 -1
- package/dist/middleware/rate-limit.d.ts.map +1 -1
- package/dist/middleware/rate-limit.js +5 -4
- package/dist/middleware/rate-limit.js.map +1 -1
- package/dist/observability/exception-tracking.d.ts +23 -0
- package/dist/observability/exception-tracking.d.ts.map +1 -1
- package/dist/observability/exception-tracking.js +101 -6
- package/dist/observability/exception-tracking.js.map +1 -1
- package/dist/observability/index.d.ts +1 -1
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +1 -1
- package/dist/observability/index.js.map +1 -1
- package/dist/observability/sanitizers.d.ts.map +1 -1
- package/dist/observability/sanitizers.js +2 -0
- package/dist/observability/sanitizers.js.map +1 -1
- package/dist/openapi/drift.d.ts +17 -2
- package/dist/openapi/drift.d.ts.map +1 -1
- package/dist/openapi/drift.js +79 -5
- package/dist/openapi/drift.js.map +1 -1
- package/dist/openapi/openapi.d.ts.map +1 -1
- package/dist/openapi/openapi.js +2 -1
- package/dist/openapi/openapi.js.map +1 -1
- package/dist/utils/environment.d.ts +10 -2
- package/dist/utils/environment.d.ts.map +1 -1
- package/dist/utils/environment.js +20 -3
- package/dist/utils/environment.js.map +1 -1
- package/dist/utils/module-interop.d.ts +9 -0
- package/dist/utils/module-interop.d.ts.map +1 -0
- package/dist/utils/module-interop.js +16 -0
- package/dist/utils/module-interop.js.map +1 -0
- package/dist/utils/optional-dependency.d.ts +6 -0
- package/dist/utils/optional-dependency.d.ts.map +1 -0
- package/dist/utils/optional-dependency.js +16 -0
- package/dist/utils/optional-dependency.js.map +1 -0
- package/dist/utils/serialize-prisma-types.d.ts +51 -15
- package/dist/utils/serialize-prisma-types.d.ts.map +1 -1
- package/dist/utils/serialize-prisma-types.js +47 -16
- package/dist/utils/serialize-prisma-types.js.map +1 -1
- package/package.json +56 -12
|
@@ -1,6 +1,51 @@
|
|
|
1
1
|
import { isTest } from '../utils/environment.js';
|
|
2
|
+
import { namedExports } from '../utils/module-interop.js';
|
|
2
3
|
import { getRequestContext, setRequestUser } from './request-context.js';
|
|
3
4
|
const loggerLevels = { info: 'info', warning: 'warn', error: 'error' };
|
|
5
|
+
/**
|
|
6
|
+
* Flush a tracker without ever throwing. Trackers without `flush` count as completed; a
|
|
7
|
+
* failing flush is logged and reported as not completed.
|
|
8
|
+
*/
|
|
9
|
+
export async function flushExceptionTracker(tracker, timeoutMs, logger) {
|
|
10
|
+
if (!tracker.flush)
|
|
11
|
+
return { completed: true, pending: 0 };
|
|
12
|
+
try {
|
|
13
|
+
const flushing = tracker.flush(timeoutMs);
|
|
14
|
+
const settled = await settleWithin([flushing], timeoutMs);
|
|
15
|
+
const result = settled.completed
|
|
16
|
+
? toFlushResult(await flushing)
|
|
17
|
+
: { completed: false, pending: 0 };
|
|
18
|
+
if (!result.completed)
|
|
19
|
+
logger?.warn('Exception tracker flush timed out', { timeoutMs });
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
logger?.error('Exception tracker flush failed', error);
|
|
24
|
+
return { completed: false, pending: 0 };
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function toFlushResult(result) {
|
|
28
|
+
if (typeof result === 'object' && result !== null)
|
|
29
|
+
return result;
|
|
30
|
+
return { completed: result !== false, pending: 0 };
|
|
31
|
+
}
|
|
32
|
+
/** Wait for the given promises to settle, at most `timeoutMs`. Never rejects. */
|
|
33
|
+
async function settleWithin(promises, timeoutMs) {
|
|
34
|
+
if (promises.length === 0)
|
|
35
|
+
return { completed: true, pending: 0 };
|
|
36
|
+
let pending = promises.length;
|
|
37
|
+
const settled = Promise.allSettled(promises.map((promise) => promise.finally(() => {
|
|
38
|
+
pending--;
|
|
39
|
+
}))).then(() => true);
|
|
40
|
+
let timer;
|
|
41
|
+
const deadline = new Promise((resolve) => {
|
|
42
|
+
timer = setTimeout(() => resolve(false), timeoutMs);
|
|
43
|
+
timer.unref?.();
|
|
44
|
+
});
|
|
45
|
+
const completed = await Promise.race([settled, deadline]);
|
|
46
|
+
clearTimeout(timer);
|
|
47
|
+
return completed ? { completed: true, pending: 0 } : { completed: false, pending };
|
|
48
|
+
}
|
|
4
49
|
/**
|
|
5
50
|
* Default exception tracking configuration.
|
|
6
51
|
* Only tracks 5xx server errors by default.
|
|
@@ -96,13 +141,41 @@ export function createCloudWatchTracker(options = {}) {
|
|
|
96
141
|
const { namespace = 'Application/Errors', dimensions = {}, cloudWatchClient, logToConsole = !isTest(), logger, } = options;
|
|
97
142
|
// Lazy-load AWS SDK to avoid bundling if not used
|
|
98
143
|
let cwClient = cloudWatchClient ?? null;
|
|
99
|
-
|
|
144
|
+
// A client passed in is borrowed; only a client created here is destroyed on close.
|
|
145
|
+
let ownsClient = false;
|
|
146
|
+
let closed = false;
|
|
147
|
+
let closeFinished = false;
|
|
148
|
+
let disposed = false;
|
|
149
|
+
let closing;
|
|
150
|
+
let clientPromise;
|
|
151
|
+
const inFlight = new Set();
|
|
152
|
+
function disposeOwnedClient() {
|
|
153
|
+
if (!ownsClient || !cwClient || disposed)
|
|
154
|
+
return;
|
|
155
|
+
disposed = true;
|
|
156
|
+
try {
|
|
157
|
+
cwClient.destroy?.();
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
logger?.error('CloudWatch client close failed', error);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
function getClient() {
|
|
100
164
|
if (cwClient)
|
|
101
|
-
return cwClient;
|
|
165
|
+
return Promise.resolve(cwClient);
|
|
166
|
+
clientPromise ??= loadClient();
|
|
167
|
+
return clientPromise;
|
|
168
|
+
}
|
|
169
|
+
async function loadClient() {
|
|
102
170
|
try {
|
|
103
171
|
// Dynamic import to avoid bundling if not used
|
|
104
|
-
const { CloudWatchClient } = await import('@aws-sdk/client-cloudwatch');
|
|
172
|
+
const { CloudWatchClient } = namedExports(await import('@aws-sdk/client-cloudwatch'));
|
|
105
173
|
cwClient = new CloudWatchClient({});
|
|
174
|
+
ownsClient = true;
|
|
175
|
+
if (closeFinished) {
|
|
176
|
+
disposeOwnedClient();
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
106
179
|
return cwClient;
|
|
107
180
|
}
|
|
108
181
|
catch {
|
|
@@ -110,12 +183,22 @@ export function createCloudWatchTracker(options = {}) {
|
|
|
110
183
|
return null;
|
|
111
184
|
}
|
|
112
185
|
}
|
|
186
|
+
/** Metrics are sent in the background; keep them so flush() can wait for them. */
|
|
187
|
+
function sendMetric(...args) {
|
|
188
|
+
if (closed)
|
|
189
|
+
return;
|
|
190
|
+
const sending = putMetric(...args);
|
|
191
|
+
inFlight.add(sending);
|
|
192
|
+
void sending.finally(() => inFlight.delete(sending));
|
|
193
|
+
}
|
|
113
194
|
async function putMetric(metricName, value, extraDimensions = {}) {
|
|
114
195
|
const client = await getClient();
|
|
115
196
|
if (!client)
|
|
116
197
|
return;
|
|
117
198
|
try {
|
|
118
|
-
const { PutMetricDataCommand } = await import('@aws-sdk/client-cloudwatch');
|
|
199
|
+
const { PutMetricDataCommand } = namedExports(await import('@aws-sdk/client-cloudwatch'));
|
|
200
|
+
if (closeFinished)
|
|
201
|
+
return;
|
|
119
202
|
const allDimensions = { ...dimensions, ...extraDimensions };
|
|
120
203
|
const dimensionArray = Object.entries(allDimensions).map(([Name, Value]) => ({
|
|
121
204
|
Name,
|
|
@@ -161,7 +244,7 @@ export function createCloudWatchTracker(options = {}) {
|
|
|
161
244
|
});
|
|
162
245
|
}
|
|
163
246
|
// Publish metric to CloudWatch
|
|
164
|
-
|
|
247
|
+
sendMetric('ErrorCount', 1, {
|
|
165
248
|
ErrorType: error.name || 'Error',
|
|
166
249
|
Path: String(context?.path ?? ctx?.path ?? 'unknown'),
|
|
167
250
|
StatusCode: String(context?.statusCode ?? 500),
|
|
@@ -184,7 +267,7 @@ export function createCloudWatchTracker(options = {}) {
|
|
|
184
267
|
});
|
|
185
268
|
}
|
|
186
269
|
if (level === 'error') {
|
|
187
|
-
|
|
270
|
+
sendMetric('ErrorCount', 1, {
|
|
188
271
|
ErrorType: 'Message',
|
|
189
272
|
Path: String(context?.path ?? ctx?.path ?? 'unknown'),
|
|
190
273
|
});
|
|
@@ -198,6 +281,18 @@ export function createCloudWatchTracker(options = {}) {
|
|
|
198
281
|
setContext(key, data) {
|
|
199
282
|
contextStore[key] = data;
|
|
200
283
|
},
|
|
284
|
+
flush(timeoutMs) {
|
|
285
|
+
return settleWithin([...inFlight], timeoutMs);
|
|
286
|
+
},
|
|
287
|
+
close(timeoutMs) {
|
|
288
|
+
closed = true;
|
|
289
|
+
closing ??= settleWithin([...inFlight], timeoutMs).then((result) => {
|
|
290
|
+
closeFinished = true;
|
|
291
|
+
disposeOwnedClient();
|
|
292
|
+
return result;
|
|
293
|
+
});
|
|
294
|
+
return closing;
|
|
295
|
+
},
|
|
201
296
|
};
|
|
202
297
|
}
|
|
203
298
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exception-tracking.js","sourceRoot":"","sources":["../../src/observability/exception-tracking.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEzE,MAAM,YAAY,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"exception-tracking.js","sourceRoot":"","sources":["../../src/observability/exception-tracking.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @module glasswork/observability
|
|
3
3
|
* Logging, request context, and exception tracking.
|
|
4
4
|
*/
|
|
5
|
-
export { type CloudWatchClientLike, type CloudWatchTrackerOptions, createCloudWatchTracker, createConsoleTracker, createExceptionTrackingMiddleware, defaultTrackStatusCodes, type ExceptionTracker, type ExceptionTrackingConfig, shouldTrackException, } from './exception-tracking.js';
|
|
5
|
+
export { type CloudWatchClientLike, type CloudWatchTrackerOptions, createCloudWatchTracker, createConsoleTracker, createExceptionTrackingMiddleware, defaultTrackStatusCodes, type ExceptionTracker, type ExceptionTrackingConfig, type FlushResult, flushExceptionTracker, shouldTrackException, } from './exception-tracking.js';
|
|
6
6
|
export { type ContextAwarePinoOptions, createContextAwarePinoLogger, createPinoHttpMiddleware, lambdaPinoConfig, type PinoLogger, } from './pino-logger.js';
|
|
7
7
|
export { getRequestActor, getRequestContext, getRequestId, type RequestAuthContext, type RequestContext, setRequestAuth, setRequestContextValue, setRequestUser, } from './request-context.js';
|
|
8
8
|
export { createSanitizedExceptionTracker, createSanitizedLogger, type ObservabilitySanitizers, sanitizeLogMetadata, } from './sanitizers.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,uBAAuB,EACvB,oBAAoB,EACpB,iCAAiC,EACjC,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,KAAK,uBAAuB,EAC5B,4BAA4B,EAC5B,wBAAwB,EACxB,gBAAgB,EAChB,KAAK,UAAU,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,cAAc,EACd,sBAAsB,EACtB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,+BAA+B,EAC/B,qBAAqB,EACrB,KAAK,uBAAuB,EAC5B,mBAAmB,GACpB,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,uBAAuB,EACvB,oBAAoB,EACpB,iCAAiC,EACjC,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EAChB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,KAAK,uBAAuB,EAC5B,4BAA4B,EAC5B,wBAAwB,EACxB,gBAAgB,EAChB,KAAK,UAAU,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,cAAc,EACd,sBAAsB,EACtB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,+BAA+B,EAC/B,qBAAqB,EACrB,KAAK,uBAAuB,EAC5B,mBAAmB,GACpB,MAAM,iBAAiB,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @module glasswork/observability
|
|
3
3
|
* Logging, request context, and exception tracking.
|
|
4
4
|
*/
|
|
5
|
-
export { createCloudWatchTracker, createConsoleTracker, createExceptionTrackingMiddleware, defaultTrackStatusCodes, shouldTrackException, } from './exception-tracking.js';
|
|
5
|
+
export { createCloudWatchTracker, createConsoleTracker, createExceptionTrackingMiddleware, defaultTrackStatusCodes, flushExceptionTracker, shouldTrackException, } from './exception-tracking.js';
|
|
6
6
|
export { createContextAwarePinoLogger, createPinoHttpMiddleware, lambdaPinoConfig, } from './pino-logger.js';
|
|
7
7
|
export { getRequestActor, getRequestContext, getRequestId, setRequestAuth, setRequestContextValue, setRequestUser, } from './request-context.js';
|
|
8
8
|
export { createSanitizedExceptionTracker, createSanitizedLogger, sanitizeLogMetadata, } from './sanitizers.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAGL,uBAAuB,EACvB,oBAAoB,EACpB,iCAAiC,EACjC,uBAAuB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAGL,uBAAuB,EACvB,oBAAoB,EACpB,iCAAiC,EACjC,uBAAuB,EAIvB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAEL,4BAA4B,EAC5B,wBAAwB,EACxB,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,YAAY,EAGZ,cAAc,EACd,sBAAsB,EACtB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,+BAA+B,EAC/B,qBAAqB,EAErB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitizers.d.ts","sourceRoot":"","sources":["../../src/observability/sanitizers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,wFAAwF;AACxF,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3E;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,UAAU,GAAE,uBAA4B,GACvC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED,sFAAsF;AACtF,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,UAAU,GAAE,uBAA4B,GACvC,MAAM,CAgCR;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,gBAAgB,EACzB,UAAU,GAAE,uBAA4B,GACvC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"sanitizers.d.ts","sourceRoot":"","sources":["../../src/observability/sanitizers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,wFAAwF;AACxF,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3E;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,UAAU,GAAE,uBAA4B,GACvC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED,sFAAsF;AACtF,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,UAAU,GAAE,uBAA4B,GACvC,MAAM,CAgCR;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,gBAAgB,EACzB,UAAU,GAAE,uBAA4B,GACvC,gBAAgB,CAqBlB"}
|
|
@@ -47,6 +47,8 @@ export function createSanitizedExceptionTracker(tracker, sanitizers = {}) {
|
|
|
47
47
|
tracker.setUser({ ...safe, id: safe.id });
|
|
48
48
|
},
|
|
49
49
|
setContext: (key, data) => tracker.setContext(key, sanitizeLogMetadata(data, sanitizers)),
|
|
50
|
+
...(tracker.flush ? { flush: (timeoutMs) => tracker.flush?.(timeoutMs) } : {}),
|
|
51
|
+
...(tracker.close ? { close: (timeoutMs) => tracker.close?.(timeoutMs) } : {}),
|
|
50
52
|
};
|
|
51
53
|
}
|
|
52
54
|
//# sourceMappingURL=sanitizers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitizers.js","sourceRoot":"","sources":["../../src/observability/sanitizers.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,mBAAmB,CACjC,QAAiC,EACjC,UAAU,GAA4B,EAAE;IAExC,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC/B,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;QACvD,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;AACjD,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,qBAAqB,CACnC,MAAc,EACd,UAAU,GAA4B,EAAE;IAExC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAW,EAAE;QAChD,IAAI,KAAK,YAAY,KAAK;YAAE,OAAO,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;QACtE,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;QAC3E,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,OAAO,mBAAmB,CAAC,KAAgC,EAAE,UAAU,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CACZ,KAA0C,EAC1C,OAAe,EACf,MAAiB,EACjB,EAAE;QACF,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IACxF,CAAC,CAAC;IACF,OAAO;QACL,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;QAC9D,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;QAC5D,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;QAC5D,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;QAC9D,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE;YAClB,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACvD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI;gBACpC,KAAK,EAAE,CAAC,OAAe,EAAE,GAAG,MAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;gBACxF,IAAI,EAAE,CAAC,OAAe,EAAE,GAAG,MAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;gBACtF,IAAI,EAAE,CAAC,OAAe,EAAE,GAAG,MAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;gBACtF,KAAK,EAAE,CAAC,OAAe,EAAE,GAAG,MAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;aACzF,CAAC;YACF,OAAO,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAClD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,OAAyB,EACzB,UAAU,GAA4B,EAAE;IAExC,OAAO;QACL,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CACnC,OAAO,CAAC,gBAAgB,CACtB,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,EAClC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAC/D;QACH,cAAc,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAC1C,OAAO,CAAC,cAAc,CACpB,UAAU,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,OAAO,EACxC,KAAK,EACL,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAC/D;QACH,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACnD,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ;gBAAE,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,UAAU,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"sanitizers.js","sourceRoot":"","sources":["../../src/observability/sanitizers.ts"],"names":[],"mappings":"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"}
|
package/dist/openapi/drift.d.ts
CHANGED
|
@@ -1,6 +1,21 @@
|
|
|
1
|
+
/** One difference between the saved contract and the generated document. */
|
|
2
|
+
export interface OpenAPIDifference {
|
|
3
|
+
/** `added` and `removed` are relative to the saved contract. */
|
|
4
|
+
kind: 'added' | 'removed' | 'changed';
|
|
5
|
+
/** JSON Pointer of the value, such as `/paths/~1api~1projects/get/responses/200`. */
|
|
6
|
+
pointer: string;
|
|
7
|
+
}
|
|
1
8
|
export declare class OpenAPIDriftError extends Error {
|
|
2
|
-
|
|
9
|
+
readonly differences: OpenAPIDifference[];
|
|
10
|
+
constructor(filePath: string, differences?: OpenAPIDifference[]);
|
|
3
11
|
}
|
|
4
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Compares JSON documents without changing the committed contract file. On a mismatch the
|
|
14
|
+
* error lists the changed operations and schemas.
|
|
15
|
+
*/
|
|
5
16
|
export declare function assertOpenAPIMatches(document: unknown, filePath: string): Promise<void>;
|
|
17
|
+
/** Writes a document in the form `assertOpenAPIMatches()` reads: indented JSON. */
|
|
18
|
+
export declare function writeOpenAPIDocument(document: unknown, filePath: string): Promise<void>;
|
|
19
|
+
/** Lists where two JSON documents differ, at the deepest object key that differs. */
|
|
20
|
+
export declare function diffOpenAPI(expected: unknown, actual: unknown): OpenAPIDifference[];
|
|
6
21
|
//# sourceMappingURL=drift.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../../src/openapi/drift.ts"],"names":[],"mappings":"AAGA,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../../src/openapi/drift.ts"],"names":[],"mappings":"AAGA,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IACtC,qFAAqF;IACrF,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,WAAW,EAAE,iBAAiB,EAAE,CAAC;IAE1C,YAAY,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAE,iBAAiB,EAAO,EAIlE;CACF;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7F;AAED,mFAAmF;AACnF,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F;AAED,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,iBAAiB,EAAE,CAInF"}
|
package/dist/openapi/drift.js
CHANGED
|
@@ -1,18 +1,92 @@
|
|
|
1
|
-
import { readFile } from 'node:fs/promises';
|
|
1
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { isDeepStrictEqual } from 'node:util';
|
|
3
|
+
const HTTP_METHODS = new Set(['get', 'put', 'post', 'delete', 'options', 'head', 'patch', 'trace']);
|
|
4
|
+
const MAX_LISTED = 20;
|
|
3
5
|
export class OpenAPIDriftError extends Error {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
+
differences;
|
|
7
|
+
constructor(filePath, differences = []) {
|
|
8
|
+
super(formatDrift(filePath, differences));
|
|
6
9
|
this.name = 'OpenAPIDriftError';
|
|
10
|
+
this.differences = differences;
|
|
7
11
|
}
|
|
8
12
|
}
|
|
9
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Compares JSON documents without changing the committed contract file. On a mismatch the
|
|
15
|
+
* error lists the changed operations and schemas.
|
|
16
|
+
*/
|
|
10
17
|
export async function assertOpenAPIMatches(document, filePath) {
|
|
11
18
|
const expected = JSON.parse(await readFile(filePath, 'utf8'));
|
|
12
19
|
// Normalize to JSON so omitted undefined properties match the written artifact.
|
|
13
20
|
const actual = JSON.parse(JSON.stringify(document));
|
|
14
21
|
if (!isDeepStrictEqual(expected, actual)) {
|
|
15
|
-
throw new OpenAPIDriftError(filePath);
|
|
22
|
+
throw new OpenAPIDriftError(filePath, diffOpenAPI(expected, actual));
|
|
16
23
|
}
|
|
17
24
|
}
|
|
25
|
+
/** Writes a document in the form `assertOpenAPIMatches()` reads: indented JSON. */
|
|
26
|
+
export async function writeOpenAPIDocument(document, filePath) {
|
|
27
|
+
await writeFile(filePath, `${JSON.stringify(document, null, 2)}\n`, 'utf8');
|
|
28
|
+
}
|
|
29
|
+
/** Lists where two JSON documents differ, at the deepest object key that differs. */
|
|
30
|
+
export function diffOpenAPI(expected, actual) {
|
|
31
|
+
const differences = [];
|
|
32
|
+
collect(expected, actual, '', differences);
|
|
33
|
+
return differences;
|
|
34
|
+
}
|
|
35
|
+
function isObject(value) {
|
|
36
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
37
|
+
}
|
|
38
|
+
function collect(expected, actual, pointer, differences) {
|
|
39
|
+
if (isDeepStrictEqual(expected, actual))
|
|
40
|
+
return;
|
|
41
|
+
if (!isObject(expected) || !isObject(actual)) {
|
|
42
|
+
differences.push({ kind: 'changed', pointer });
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
for (const key of new Set([...Object.keys(expected), ...Object.keys(actual)])) {
|
|
46
|
+
const child = `${pointer}/${key.replaceAll('~', '~0').replaceAll('/', '~1')}`;
|
|
47
|
+
if (!(key in actual))
|
|
48
|
+
differences.push({ kind: 'removed', pointer: child });
|
|
49
|
+
else if (!(key in expected))
|
|
50
|
+
differences.push({ kind: 'added', pointer: child });
|
|
51
|
+
else
|
|
52
|
+
collect(expected[key], actual[key], child, differences);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function unescapePointerToken(token) {
|
|
56
|
+
return token.replaceAll('~1', '/').replaceAll('~0', '~');
|
|
57
|
+
}
|
|
58
|
+
/** `GET /api/projects` or `schema ProjectDto` for a pointer, with the rest of the pointer. */
|
|
59
|
+
function describe(pointer) {
|
|
60
|
+
const tokens = pointer.split('/').slice(1);
|
|
61
|
+
if (tokens[0] === 'paths' && tokens[1] !== undefined) {
|
|
62
|
+
const path = unescapePointerToken(tokens[1]);
|
|
63
|
+
if (tokens[2] !== undefined && HTTP_METHODS.has(tokens[2])) {
|
|
64
|
+
return { subject: `${tokens[2].toUpperCase()} ${path}`, detail: tokens.slice(3).join('/') };
|
|
65
|
+
}
|
|
66
|
+
return { subject: path, detail: tokens.slice(2).join('/') };
|
|
67
|
+
}
|
|
68
|
+
if (tokens[0] === 'components' && tokens[1] === 'schemas' && tokens[2] !== undefined) {
|
|
69
|
+
return {
|
|
70
|
+
subject: `schema ${unescapePointerToken(tokens[2])}`,
|
|
71
|
+
detail: tokens.slice(3).join('/'),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return { subject: pointer || '(document)', detail: '' };
|
|
75
|
+
}
|
|
76
|
+
function formatDrift(filePath, differences) {
|
|
77
|
+
const symbol = { added: '+', removed: '-', changed: '~' };
|
|
78
|
+
const lines = differences.slice(0, MAX_LISTED).map(({ kind, pointer }) => {
|
|
79
|
+
const { subject, detail } = describe(pointer);
|
|
80
|
+
const kindOfWhole = detail === '' ? kind : 'changed';
|
|
81
|
+
return ` ${symbol[kindOfWhole]} ${subject}${detail ? `: ${detail} ${kind}` : ''}`;
|
|
82
|
+
});
|
|
83
|
+
if (differences.length > MAX_LISTED) {
|
|
84
|
+
lines.push(` … and ${differences.length - MAX_LISTED} more`);
|
|
85
|
+
}
|
|
86
|
+
return [
|
|
87
|
+
`OpenAPI contract drift in ${filePath}${lines.length ? ':' : ''}`,
|
|
88
|
+
...lines,
|
|
89
|
+
`Regenerate and commit ${filePath} if the change is intended.`,
|
|
90
|
+
].join('\n');
|
|
91
|
+
}
|
|
18
92
|
//# sourceMappingURL=drift.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/openapi/drift.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/openapi/drift.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/openapi/openapi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAqB,MAAM,MAAM,CAAC;AACpD,OAAO,EAAE,aAAa,EAAuB,MAAM,cAAc,CAAC;AAElE,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/openapi/openapi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAqB,MAAM,MAAM,CAAC;AACpD,OAAO,EAAE,aAAa,EAAuB,MAAM,cAAc,CAAC;AAElE,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAI/D,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,IAAI,CAAC;IACV,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;IACxE;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,sBAAsB,CAiEzF"}
|
package/dist/openapi/openapi.js
CHANGED
|
@@ -2,6 +2,7 @@ import { writeFile } from 'node:fs/promises';
|
|
|
2
2
|
import { generateSpecs, openAPIRouteHandler } from 'hono-openapi';
|
|
3
3
|
import { deepMerge } from '../utils/deep-merge.js';
|
|
4
4
|
import { createLogger } from '../utils/logger.js';
|
|
5
|
+
import { namedExports } from '../utils/module-interop.js';
|
|
5
6
|
import { defaultOpenAPIComponents } from './defaults.js';
|
|
6
7
|
/**
|
|
7
8
|
* Configure OpenAPI documentation for the application.
|
|
@@ -51,7 +52,7 @@ export function configureOpenAPI(options) {
|
|
|
51
52
|
let handlerPromise;
|
|
52
53
|
app.get('/api', async (c, next) => {
|
|
53
54
|
handlerPromise ??= import('@hono/swagger-ui')
|
|
54
|
-
.then((
|
|
55
|
+
.then((module) => namedExports(module).swaggerUI({ url: '/api/openapi.json' }))
|
|
55
56
|
.catch((cause) => {
|
|
56
57
|
throw new Error('Unable to load Swagger UI. Install the optional peer with: npm install @hono/swagger-ui', { cause });
|
|
57
58
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/openapi/openapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAQlE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAmCzD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgC;IAC/D,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAErE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,oEAAoE;IACpE,uDAAuD;IACvD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IAE5E,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,IAAI,WAAW,KAAK,aAAa,CAAC;IAC7E,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,IAAI,WAAW,KAAK,aAAa,CAAC;IAEvE,4FAA4F;IAC5F,MAAM,kBAAkB,GAAG,0BAA0B,CAAC,wBAAwB,EAAE;QAC9E,gBAAgB,EAAE,SAAS,EAAE,OAAO,IAAI,KAAK;QAC7C,WAAW,EAAE,CAAC,CAAC,UAAU,EAAE,IAAI;KAChC,CAAC,CAAC;IAEH,mEAAmE;IACnE,MAAM,mBAAmB,GAAG,SAAS,CACnC,EAAE,UAAU,EAAE,kBAAkB,EAAE,EAClC,OAAO,CAAC,aAAa,IAAI,EAAE,CAC5B,CAAC;IAEF,4DAA4D;IAC5D,IAAI,gBAAgB,EAAE,CAAC;QACrB,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;IACjG,CAAC;IAED,iDAAiD;IACjD,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,cAAsD,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;YAChC,cAAc,KAAK,MAAM,CAAC,kBAAkB,CAAC;iBAC1C,IAAI,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/openapi/openapi.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,16 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export declare function isLambda(): boolean;
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
9
|
+
* Detect the runtime environment.
|
|
10
|
+
*
|
|
11
|
+
* `NODE_ENV=production` and `NODE_ENV=test` are used as-is. Otherwise AWS Lambda
|
|
12
|
+
* counts as production and everything else as development. This is the default
|
|
13
|
+
* for the `environment` option of `bootstrap()`.
|
|
14
|
+
*/
|
|
15
|
+
export declare function detectEnvironment(): 'development' | 'production' | 'test';
|
|
16
|
+
/**
|
|
17
|
+
* Check if the detected environment is production
|
|
18
|
+
* (`NODE_ENV=production`, or AWS Lambda unless `NODE_ENV=test`).
|
|
11
19
|
*/
|
|
12
20
|
export declare function isProduction(): boolean;
|
|
13
21
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/utils/environment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;;GAGG;AACH,wBAAgB,MAAM,IAAI,OAAO,CAUhC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAEvC"}
|
|
1
|
+
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/utils/environment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,GAAG,YAAY,GAAG,MAAM,CAMzE;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;;GAGG;AACH,wBAAgB,MAAM,IAAI,OAAO,CAUhC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAEvC"}
|
|
@@ -8,11 +8,28 @@ export function isLambda() {
|
|
|
8
8
|
return !!(process.env.AWS_LAMBDA_FUNCTION_NAME || process.env.LAMBDA_TASK_ROOT);
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
11
|
+
* Detect the runtime environment.
|
|
12
|
+
*
|
|
13
|
+
* `NODE_ENV=production` and `NODE_ENV=test` are used as-is. Otherwise AWS Lambda
|
|
14
|
+
* counts as production and everything else as development. This is the default
|
|
15
|
+
* for the `environment` option of `bootstrap()`.
|
|
16
|
+
*/
|
|
17
|
+
export function detectEnvironment() {
|
|
18
|
+
const nodeEnv = process.env.NODE_ENV;
|
|
19
|
+
if (nodeEnv === 'production')
|
|
20
|
+
return 'production';
|
|
21
|
+
if (nodeEnv === 'test')
|
|
22
|
+
return 'test';
|
|
23
|
+
if (isLambda())
|
|
24
|
+
return 'production';
|
|
25
|
+
return 'development';
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Check if the detected environment is production
|
|
29
|
+
* (`NODE_ENV=production`, or AWS Lambda unless `NODE_ENV=test`).
|
|
13
30
|
*/
|
|
14
31
|
export function isProduction() {
|
|
15
|
-
return
|
|
32
|
+
return detectEnvironment() === 'production';
|
|
16
33
|
}
|
|
17
34
|
/**
|
|
18
35
|
* Check if running in test environment.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/utils/environment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAClF,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/utils/environment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAClF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrC,IAAI,OAAO,KAAK,YAAY;QAAE,OAAO,YAAY,CAAC;IAClD,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACtC,IAAI,QAAQ,EAAE;QAAE,OAAO,YAAY,CAAC;IACpC,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,iBAAiB,EAAE,KAAK,YAAY,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM;IACpB,uBAAuB;IACvB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,wEAAwE;IACxE,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Named exports of a dynamically imported module.
|
|
3
|
+
*
|
|
4
|
+
* Node exposes the named exports of a CommonJS package through `import()`, but a bundler that
|
|
5
|
+
* turns the package into an ESM chunk may expose them only as `default`. Optional peers such
|
|
6
|
+
* as the AWS SDK clients are CommonJS packages, so read their exports from either place.
|
|
7
|
+
*/
|
|
8
|
+
export declare function namedExports<T extends object>(module: T): T;
|
|
9
|
+
//# sourceMappingURL=module-interop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-interop.d.ts","sourceRoot":"","sources":["../../src/utils/module-interop.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAO3D"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Named exports of a dynamically imported module.
|
|
3
|
+
*
|
|
4
|
+
* Node exposes the named exports of a CommonJS package through `import()`, but a bundler that
|
|
5
|
+
* turns the package into an ESM chunk may expose them only as `default`. Optional peers such
|
|
6
|
+
* as the AWS SDK clients are CommonJS packages, so read their exports from either place.
|
|
7
|
+
*/
|
|
8
|
+
export function namedExports(module) {
|
|
9
|
+
// Check first: module mocks may throw for an export they do not define.
|
|
10
|
+
const fallback = 'default' in module ? module.default : undefined;
|
|
11
|
+
if (fallback === null || (typeof fallback !== 'object' && typeof fallback !== 'function')) {
|
|
12
|
+
return module;
|
|
13
|
+
}
|
|
14
|
+
return { ...fallback, ...module };
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=module-interop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-interop.js","sourceRoot":"","sources":["../../src/utils/module-interop.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAmB,MAAS;IACtD,wEAAwE;IACxE,MAAM,QAAQ,GAAG,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,CAAC,EAAE,CAAC;QAC1F,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAO,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loads an optional peer the first time an adapter needs it, so importing the adapter's entry
|
|
3
|
+
* point works without the peer installed. A missing peer fails with an install hint.
|
|
4
|
+
*/
|
|
5
|
+
export declare function optionalDependency<T extends object>(name: string, user: string, load: () => Promise<T>): () => Promise<T>;
|
|
6
|
+
//# sourceMappingURL=optional-dependency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optional-dependency.d.ts","sourceRoot":"","sources":["../../src/utils/optional-dependency.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EACjD,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACrB,MAAM,OAAO,CAAC,CAAC,CAAC,CASlB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { namedExports } from './module-interop.js';
|
|
2
|
+
/**
|
|
3
|
+
* Loads an optional peer the first time an adapter needs it, so importing the adapter's entry
|
|
4
|
+
* point works without the peer installed. A missing peer fails with an install hint.
|
|
5
|
+
*/
|
|
6
|
+
export function optionalDependency(name, user, load) {
|
|
7
|
+
let loading;
|
|
8
|
+
return () => {
|
|
9
|
+
loading ??= load().then(namedExports, (cause) => {
|
|
10
|
+
loading = undefined;
|
|
11
|
+
throw new Error(`${user} requires ${name}. Install it with: npm install ${name}`, { cause });
|
|
12
|
+
});
|
|
13
|
+
return loading;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=optional-dependency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optional-dependency.js","sourceRoot":"","sources":["../../src/utils/optional-dependency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,IAAY,EACZ,IAAsB;IAEtB,IAAI,OAA+B,CAAC;IACpC,OAAO,GAAG,EAAE;QACV,OAAO,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,KAAc,EAAE,EAAE;YACvD,OAAO,GAAG,SAAS,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,aAAa,IAAI,kCAAkC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/F,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC"}
|