glasswork 1.2.0 → 1.4.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 +37 -1
- package/dist/core/bootstrap.d.ts.map +1 -1
- package/dist/core/bootstrap.js +110 -25
- package/dist/core/bootstrap.js.map +1 -1
- package/dist/core/contract.d.ts +37 -0
- package/dist/core/contract.d.ts.map +1 -0
- package/dist/core/contract.js +19 -0
- package/dist/core/contract.js.map +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/types.d.ts +12 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/email/email-service.d.ts +5 -2
- package/dist/email/email-service.d.ts.map +1 -1
- package/dist/email/email-service.js +8 -4
- package/dist/email/email-service.js.map +1 -1
- package/dist/email/index.d.ts +1 -1
- package/dist/email/index.d.ts.map +1 -1
- package/dist/email/index.js.map +1 -1
- package/dist/email/templated-email-service.d.ts.map +1 -1
- package/dist/email/templated-email-service.js +2 -1
- package/dist/email/templated-email-service.js.map +1 -1
- package/dist/email/types.d.ts +9 -4
- package/dist/email/types.d.ts.map +1 -1
- package/dist/email/webhooks/handler-factory.d.ts.map +1 -1
- package/dist/email/webhooks/handler-factory.js +7 -3
- package/dist/email/webhooks/handler-factory.js.map +1 -1
- package/dist/email/webhooks/notification-parser.d.ts +2 -1
- package/dist/email/webhooks/notification-parser.d.ts.map +1 -1
- package/dist/email/webhooks/notification-parser.js +1 -2
- package/dist/email/webhooks/notification-parser.js.map +1 -1
- package/dist/email/webhooks/signature-verification.d.ts.map +1 -1
- package/dist/email/webhooks/signature-verification.js +3 -3
- package/dist/email/webhooks/signature-verification.js.map +1 -1
- package/dist/email/webhooks/subscription-handler.d.ts +2 -0
- package/dist/email/webhooks/subscription-handler.d.ts.map +1 -1
- package/dist/email/webhooks/subscription-handler.js +5 -5
- package/dist/email/webhooks/subscription-handler.js.map +1 -1
- package/dist/email/webhooks/types.d.ts +2 -0
- package/dist/email/webhooks/types.d.ts.map +1 -1
- package/dist/http/error-handler.d.ts +3 -1
- package/dist/http/error-handler.d.ts.map +1 -1
- package/dist/http/error-handler.js +3 -4
- package/dist/http/error-handler.js.map +1 -1
- package/dist/http/index.d.ts +1 -0
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/index.js +1 -0
- package/dist/http/index.js.map +1 -1
- package/dist/http/route-context.d.ts.map +1 -1
- package/dist/http/route-context.js +7 -2
- package/dist/http/route-context.js.map +1 -1
- package/dist/http/route-helpers.d.ts.map +1 -1
- package/dist/http/route-helpers.js +1 -1
- package/dist/http/route-helpers.js.map +1 -1
- package/dist/http/route-openapi-context.d.ts +2 -0
- 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 +2 -1
- package/dist/http/route-response.d.ts.map +1 -1
- package/dist/http/route-response.js +3 -4
- package/dist/http/route-response.js.map +1 -1
- package/dist/jobs/define-job.d.ts +12 -8
- package/dist/jobs/define-job.d.ts.map +1 -1
- package/dist/jobs/define-job.js +2 -0
- package/dist/jobs/define-job.js.map +1 -1
- package/dist/jobs/drivers/mock-driver.d.ts +3 -1
- package/dist/jobs/drivers/mock-driver.d.ts.map +1 -1
- package/dist/jobs/drivers/mock-driver.js +15 -21
- package/dist/jobs/drivers/mock-driver.js.map +1 -1
- package/dist/jobs/index.d.ts +2 -2
- 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-runner.d.ts +7 -0
- package/dist/jobs/job-runner.d.ts.map +1 -0
- package/dist/jobs/job-runner.js +38 -0
- package/dist/jobs/job-runner.js.map +1 -0
- package/dist/jobs/job-service.d.ts +6 -6
- package/dist/jobs/job-service.d.ts.map +1 -1
- package/dist/jobs/job-service.js +8 -0
- package/dist/jobs/job-service.js.map +1 -1
- package/dist/jobs/observability/emf.d.ts +5 -15
- package/dist/jobs/observability/emf.d.ts.map +1 -1
- package/dist/jobs/observability/emf.js +87 -67
- package/dist/jobs/observability/emf.js.map +1 -1
- package/dist/jobs/observability/index.d.ts +2 -4
- package/dist/jobs/observability/index.d.ts.map +1 -1
- package/dist/jobs/observability/index.js +1 -3
- package/dist/jobs/observability/index.js.map +1 -1
- package/dist/jobs/observability/types.d.ts +16 -193
- package/dist/jobs/observability/types.d.ts.map +1 -1
- package/dist/jobs/types.d.ts +17 -7
- package/dist/jobs/types.d.ts.map +1 -1
- package/dist/jobs/worker.d.ts +3 -0
- package/dist/jobs/worker.d.ts.map +1 -1
- package/dist/jobs/worker.js +66 -13
- package/dist/jobs/worker.js.map +1 -1
- package/dist/list-query/client.d.ts +36 -0
- package/dist/list-query/client.d.ts.map +1 -0
- package/dist/list-query/client.js +74 -0
- package/dist/list-query/client.js.map +1 -0
- package/dist/list-query/parser.d.ts.map +1 -1
- package/dist/list-query/parser.js +8 -46
- package/dist/list-query/parser.js.map +1 -1
- package/dist/list-query/protocol.d.ts +14 -0
- package/dist/list-query/protocol.d.ts.map +1 -0
- package/dist/list-query/protocol.js +44 -0
- package/dist/list-query/protocol.js.map +1 -0
- package/dist/list-query/query-schema.d.ts.map +1 -1
- package/dist/list-query/query-schema.js +6 -5
- package/dist/list-query/query-schema.js.map +1 -1
- package/dist/list-query/types.d.ts +2 -5
- package/dist/list-query/types.d.ts.map +1 -1
- package/dist/middleware/rate-limit.d.ts.map +1 -1
- package/dist/middleware/rate-limit.js +1 -1
- package/dist/middleware/rate-limit.js.map +1 -1
- package/dist/observability/exception-tracking.d.ts +6 -1
- package/dist/observability/exception-tracking.d.ts.map +1 -1
- package/dist/observability/exception-tracking.js +29 -5
- package/dist/observability/exception-tracking.js.map +1 -1
- package/dist/observability/index.d.ts +1 -0
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +1 -0
- package/dist/observability/index.js.map +1 -1
- package/dist/observability/pino-logger.d.ts +3 -1
- package/dist/observability/pino-logger.d.ts.map +1 -1
- package/dist/observability/pino-logger.js +17 -11
- package/dist/observability/pino-logger.js.map +1 -1
- package/dist/observability/sanitizers.d.ts +14 -0
- package/dist/observability/sanitizers.d.ts.map +1 -0
- package/dist/observability/sanitizers.js +52 -0
- package/dist/observability/sanitizers.js.map +1 -0
- package/dist/openapi/drift.d.ts +6 -0
- package/dist/openapi/drift.d.ts.map +1 -0
- package/dist/openapi/drift.js +18 -0
- package/dist/openapi/drift.js.map +1 -0
- package/dist/openapi/openapi.d.ts +5 -0
- package/dist/openapi/openapi.d.ts.map +1 -1
- package/dist/openapi/openapi.js +5 -2
- package/dist/openapi/openapi.js.map +1 -1
- package/dist/uploads/guardduty.d.ts +20 -0
- package/dist/uploads/guardduty.d.ts.map +1 -0
- package/dist/uploads/guardduty.js +29 -0
- package/dist/uploads/guardduty.js.map +1 -0
- package/dist/uploads/index.d.ts +1 -1
- package/dist/uploads/index.d.ts.map +1 -1
- package/dist/uploads/index.js.map +1 -1
- package/dist/uploads/s3-key.d.ts +3 -0
- package/dist/uploads/s3-key.d.ts.map +1 -0
- package/dist/uploads/s3-key.js +5 -0
- package/dist/uploads/s3-key.js.map +1 -0
- package/dist/uploads/uploads.service.d.ts +27 -7
- package/dist/uploads/uploads.service.d.ts.map +1 -1
- package/dist/uploads/uploads.service.js +50 -14
- package/dist/uploads/uploads.service.js.map +1 -1
- package/package.json +11 -1
- package/dist/jobs/observability/client.d.ts +0 -26
- package/dist/jobs/observability/client.d.ts.map +0 -1
- package/dist/jobs/observability/client.js +0 -286
- package/dist/jobs/observability/client.js.map +0 -1
- package/dist/jobs/observability/dashboard.d.ts +0 -19
- package/dist/jobs/observability/dashboard.d.ts.map +0 -1
- package/dist/jobs/observability/dashboard.js +0 -144
- package/dist/jobs/observability/dashboard.js.map +0 -1
- package/dist/jobs/scheduler.d.ts +0 -17
- package/dist/jobs/scheduler.d.ts.map +0 -1
- package/dist/jobs/scheduler.js +0 -83
- package/dist/jobs/scheduler.js.map +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { MiddlewareHandler } from 'hono';
|
|
2
|
+
import type { Logger } from '../utils/logger.js';
|
|
2
3
|
/**
|
|
3
4
|
* Generic exception tracker interface for integrating with external error tracking services.
|
|
4
5
|
*
|
|
@@ -124,6 +125,8 @@ export declare function createExceptionTrackingMiddleware(config: ExceptionTrack
|
|
|
124
125
|
* Options for CloudWatch exception tracker
|
|
125
126
|
*/
|
|
126
127
|
export interface CloudWatchTrackerOptions {
|
|
128
|
+
/** Central logger; when configured, replaces direct console calls. */
|
|
129
|
+
logger?: Logger;
|
|
127
130
|
/**
|
|
128
131
|
* CloudWatch metric namespace.
|
|
129
132
|
* @default 'Application/Errors'
|
|
@@ -211,5 +214,7 @@ export declare function createCloudWatchTracker(options?: CloudWatchTrackerOptio
|
|
|
211
214
|
* });
|
|
212
215
|
* ```
|
|
213
216
|
*/
|
|
214
|
-
export declare function createConsoleTracker(
|
|
217
|
+
export declare function createConsoleTracker(options?: {
|
|
218
|
+
logger?: Logger;
|
|
219
|
+
}): ExceptionTracker;
|
|
215
220
|
//# sourceMappingURL=exception-tracking.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exception-tracking.d.ts","sourceRoot":"","sources":["../../src/observability/exception-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"exception-tracking.d.ts","sourceRoot":"","sources":["../../src/observability/exception-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAE9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAKjD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAExE;;;;;OAKG;IACH,cAAc,CACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,EACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI,CAAC;IAER;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAE5E;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC9D;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,OAAO,EAAE,gBAAgB,CAAC;IAE1B;;;;;;;;;;;;;;;;;;OAkBG;IACH,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;CACnD;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,eAAgB,MAAM,KAAG,OAA4B,CAAC;AAE1F;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,OAAO,GAAG,SAAS,EAClC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAQT;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,uBAAuB,GAC9B,iBAAiB,CAenB;AAMD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEpC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IAExC;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,wBAA6B,GAAG,gBAAgB,CAqIhG;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,gBAAgB,CA6CxF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { isTest } from '../utils/environment.js';
|
|
2
2
|
import { getRequestContext, setRequestUser } from './request-context.js';
|
|
3
|
+
const loggerLevels = { info: 'info', warning: 'warn', error: 'error' };
|
|
3
4
|
/**
|
|
4
5
|
* Default exception tracking configuration.
|
|
5
6
|
* Only tracks 5xx server errors by default.
|
|
@@ -92,7 +93,7 @@ export function createExceptionTrackingMiddleware(config) {
|
|
|
92
93
|
* ```
|
|
93
94
|
*/
|
|
94
95
|
export function createCloudWatchTracker(options = {}) {
|
|
95
|
-
const { namespace = 'Application/Errors', dimensions = {}, cloudWatchClient, logToConsole = !isTest(), } = options;
|
|
96
|
+
const { namespace = 'Application/Errors', dimensions = {}, cloudWatchClient, logToConsole = !isTest(), logger, } = options;
|
|
96
97
|
// Lazy-load AWS SDK to avoid bundling if not used
|
|
97
98
|
let cwClient = cloudWatchClient ?? null;
|
|
98
99
|
async function getClient() {
|
|
@@ -135,7 +136,10 @@ export function createCloudWatchTracker(options = {}) {
|
|
|
135
136
|
}
|
|
136
137
|
catch (err) {
|
|
137
138
|
// Don't throw - exception tracking should never break the app
|
|
138
|
-
if (
|
|
139
|
+
if (logger) {
|
|
140
|
+
logger.error('CloudWatch metric failed', err);
|
|
141
|
+
}
|
|
142
|
+
else if (logToConsole) {
|
|
139
143
|
console.error('[CloudWatchTracker] Failed to put metric:', err);
|
|
140
144
|
}
|
|
141
145
|
}
|
|
@@ -144,7 +148,10 @@ export function createCloudWatchTracker(options = {}) {
|
|
|
144
148
|
return {
|
|
145
149
|
captureException(error, context) {
|
|
146
150
|
const ctx = getRequestContext();
|
|
147
|
-
if (
|
|
151
|
+
if (logger) {
|
|
152
|
+
logger.error('Exception', error, { requestId: ctx?.requestId, ...context });
|
|
153
|
+
}
|
|
154
|
+
else if (logToConsole) {
|
|
148
155
|
console.error('[Exception]', {
|
|
149
156
|
error: error.message,
|
|
150
157
|
stack: error.stack,
|
|
@@ -162,7 +169,13 @@ export function createCloudWatchTracker(options = {}) {
|
|
|
162
169
|
},
|
|
163
170
|
captureMessage(message, level, context) {
|
|
164
171
|
const ctx = getRequestContext();
|
|
165
|
-
if (
|
|
172
|
+
if (logger) {
|
|
173
|
+
logger[loggerLevels[level]](message, {
|
|
174
|
+
requestId: ctx?.requestId,
|
|
175
|
+
...context,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
else if (logToConsole) {
|
|
166
179
|
const logFn = level === 'error' ? console.error : level === 'warning' ? console.warn : console.log;
|
|
167
180
|
logFn(`[${level.toUpperCase()}]`, message, {
|
|
168
181
|
requestId: ctx?.requestId,
|
|
@@ -209,10 +222,14 @@ export function createCloudWatchTracker(options = {}) {
|
|
|
209
222
|
* });
|
|
210
223
|
* ```
|
|
211
224
|
*/
|
|
212
|
-
export function createConsoleTracker() {
|
|
225
|
+
export function createConsoleTracker(options = {}) {
|
|
213
226
|
return {
|
|
214
227
|
captureException(error, context) {
|
|
215
228
|
const ctx = getRequestContext();
|
|
229
|
+
if (options.logger) {
|
|
230
|
+
options.logger.error('Exception', error, { requestId: ctx?.requestId, ...context });
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
216
233
|
console.error('[Exception]', {
|
|
217
234
|
error: error.message,
|
|
218
235
|
stack: error.stack,
|
|
@@ -222,6 +239,13 @@ export function createConsoleTracker() {
|
|
|
222
239
|
},
|
|
223
240
|
captureMessage(message, level, context) {
|
|
224
241
|
const ctx = getRequestContext();
|
|
242
|
+
if (options.logger) {
|
|
243
|
+
options.logger[level === 'warning' ? 'warn' : level](message, {
|
|
244
|
+
requestId: ctx?.requestId,
|
|
245
|
+
...context,
|
|
246
|
+
});
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
225
249
|
const logFn = level === 'error' ? console.error : level === 'warning' ? console.warn : console.log;
|
|
226
250
|
logFn(`[${level.toUpperCase()}]`, message, {
|
|
227
251
|
requestId: ctx?.requestId,
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"exception-tracking.js","sourceRoot":"","sources":["../../src/observability/exception-tracking.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,4 +5,5 @@
|
|
|
5
5
|
export { type CloudWatchClientLike, type CloudWatchTrackerOptions, createCloudWatchTracker, createConsoleTracker, createExceptionTrackingMiddleware, defaultTrackStatusCodes, type ExceptionTracker, type ExceptionTrackingConfig, 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
|
+
export { createSanitizedExceptionTracker, createSanitizedLogger, type ObservabilitySanitizers, sanitizeLogMetadata, } from './sanitizers.js';
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -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;
|
|
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"}
|
|
@@ -5,4 +5,5 @@
|
|
|
5
5
|
export { createCloudWatchTracker, createConsoleTracker, createExceptionTrackingMiddleware, defaultTrackStatusCodes, 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
|
+
export { createSanitizedExceptionTracker, createSanitizedLogger, sanitizeLogMetadata, } from './sanitizers.js';
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -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,EAGvB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAEL,4BAA4B,EAC5B,wBAAwB,EACxB,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;
|
|
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,EAGvB,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,5 +1,6 @@
|
|
|
1
1
|
import type { MiddlewareHandler } from 'hono';
|
|
2
2
|
import type { Logger } from '../utils/logger.js';
|
|
3
|
+
import { type ObservabilitySanitizers } from './sanitizers.js';
|
|
3
4
|
/**
|
|
4
5
|
* Pino logger interface - subset of pino.Logger for type compatibility.
|
|
5
6
|
* This allows the framework to work with Pino without a hard dependency.
|
|
@@ -17,6 +18,7 @@ export interface PinoLogger {
|
|
|
17
18
|
* Options for creating a context-aware Pino logger.
|
|
18
19
|
*/
|
|
19
20
|
export interface ContextAwarePinoOptions {
|
|
21
|
+
sanitizers?: ObservabilitySanitizers;
|
|
20
22
|
/**
|
|
21
23
|
* Base Pino logger instance.
|
|
22
24
|
* Create with: `pino({ level: 'info' })`
|
|
@@ -50,7 +52,7 @@ export declare function createContextAwarePinoLogger(options: ContextAwarePinoOp
|
|
|
50
52
|
* app.use(createPinoHttpMiddleware(logger));
|
|
51
53
|
* ```
|
|
52
54
|
*/
|
|
53
|
-
export declare function createPinoHttpMiddleware(pino: PinoLogger): MiddlewareHandler;
|
|
55
|
+
export declare function createPinoHttpMiddleware(pino: PinoLogger, sanitizers?: ObservabilitySanitizers): MiddlewareHandler;
|
|
54
56
|
/**
|
|
55
57
|
* Default Pino configuration optimized for AWS Lambda.
|
|
56
58
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pino-logger.d.ts","sourceRoot":"","sources":["../../src/observability/pino-logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"pino-logger.d.ts","sourceRoot":"","sources":["../../src/observability/pino-logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,KAAK,uBAAuB,EAAuB,MAAM,iBAAiB,CAAC;AAEpF;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,UAAU,CAAC;IACzD,KAAK,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC;;;OAGG;IACH,IAAI,EAAE,UAAU,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA+CD,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAiDrF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,UAAU,EAChB,UAAU,CAAC,EAAE,uBAAuB,GACnC,iBAAiB,CA8BnB;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB;IAC3B,KAAK;IAEL,UAAU;QACR,KAAK,UAAU,MAAM;YAAQ,KAAK;;;IAGpC,SAAS;IAET,IAAI;CACL,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getRequestContext } from './request-context.js';
|
|
2
|
+
import { sanitizeLogMetadata } from './sanitizers.js';
|
|
2
3
|
/**
|
|
3
4
|
* Create a context-aware logger that automatically includes request context.
|
|
4
5
|
*
|
|
@@ -61,29 +62,34 @@ export function createContextAwarePinoLogger(options) {
|
|
|
61
62
|
let obj = { ...bindings };
|
|
62
63
|
// Handle meta arguments
|
|
63
64
|
for (const item of meta) {
|
|
64
|
-
if (item
|
|
65
|
+
if (item instanceof Error) {
|
|
66
|
+
const error = options.sanitizers?.error?.(item) ?? item;
|
|
67
|
+
obj.err = { name: error.name, message: error.message, stack: error.stack };
|
|
68
|
+
}
|
|
69
|
+
else if (item && typeof item === 'object' && !Array.isArray(item)) {
|
|
65
70
|
obj = { ...obj, ...item };
|
|
66
71
|
}
|
|
67
72
|
}
|
|
68
|
-
return obj;
|
|
73
|
+
return sanitizeLogMetadata(obj, options.sanitizers);
|
|
69
74
|
}
|
|
70
75
|
return {
|
|
71
76
|
debug(msg, ...meta) {
|
|
72
|
-
pino.debug(createLogObject(msg, meta), msg);
|
|
77
|
+
pino.debug(createLogObject(msg, meta), options.sanitizers?.message?.(msg) ?? msg);
|
|
73
78
|
},
|
|
74
79
|
info(msg, ...meta) {
|
|
75
|
-
pino.info(createLogObject(msg, meta), msg);
|
|
80
|
+
pino.info(createLogObject(msg, meta), options.sanitizers?.message?.(msg) ?? msg);
|
|
76
81
|
},
|
|
77
82
|
warn(msg, ...meta) {
|
|
78
|
-
pino.warn(createLogObject(msg, meta), msg);
|
|
83
|
+
pino.warn(createLogObject(msg, meta), options.sanitizers?.message?.(msg) ?? msg);
|
|
79
84
|
},
|
|
80
85
|
error(msg, ...meta) {
|
|
81
|
-
pino.error(createLogObject(msg, meta), msg);
|
|
86
|
+
pino.error(createLogObject(msg, meta), options.sanitizers?.message?.(msg) ?? msg);
|
|
82
87
|
},
|
|
83
88
|
child(bindings) {
|
|
84
89
|
return createContextAwarePinoLogger({
|
|
85
|
-
pino: pino.child(bindings),
|
|
90
|
+
pino: pino.child(sanitizeLogMetadata(bindings, options.sanitizers)),
|
|
86
91
|
service,
|
|
92
|
+
sanitizers: options.sanitizers,
|
|
87
93
|
});
|
|
88
94
|
},
|
|
89
95
|
};
|
|
@@ -109,7 +115,7 @@ export function createContextAwarePinoLogger(options) {
|
|
|
109
115
|
* app.use(createPinoHttpMiddleware(logger));
|
|
110
116
|
* ```
|
|
111
117
|
*/
|
|
112
|
-
export function createPinoHttpMiddleware(pino) {
|
|
118
|
+
export function createPinoHttpMiddleware(pino, sanitizers) {
|
|
113
119
|
return async (c, next) => {
|
|
114
120
|
const start = Date.now();
|
|
115
121
|
await next();
|
|
@@ -127,13 +133,13 @@ export function createPinoHttpMiddleware(pino) {
|
|
|
127
133
|
}
|
|
128
134
|
// Use appropriate log level based on status
|
|
129
135
|
if (c.res.status >= 500) {
|
|
130
|
-
pino.error(logObject, 'HTTP Request');
|
|
136
|
+
pino.error(sanitizeLogMetadata(logObject, sanitizers), 'HTTP Request');
|
|
131
137
|
}
|
|
132
138
|
else if (c.res.status >= 400) {
|
|
133
|
-
pino.warn(logObject, 'HTTP Request');
|
|
139
|
+
pino.warn(sanitizeLogMetadata(logObject, sanitizers), 'HTTP Request');
|
|
134
140
|
}
|
|
135
141
|
else {
|
|
136
|
-
pino.info(logObject, 'HTTP Request');
|
|
142
|
+
pino.info(sanitizeLogMetadata(logObject, sanitizers), 'HTTP Request');
|
|
137
143
|
}
|
|
138
144
|
};
|
|
139
145
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pino-logger.js","sourceRoot":"","sources":["../../src/observability/pino-logger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"pino-logger.js","sourceRoot":"","sources":["../../src/observability/pino-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Logger } from '../utils/logger.js';
|
|
2
|
+
import type { ExceptionTracker } from './exception-tracking.js';
|
|
3
|
+
/** Explicit application policy applied before diagnostics reach a logger or tracker. */
|
|
4
|
+
export interface ObservabilitySanitizers {
|
|
5
|
+
path?: (path: string) => string;
|
|
6
|
+
message?: (message: string) => string;
|
|
7
|
+
error?: (error: Error) => Error;
|
|
8
|
+
metadata?: (metadata: Record<string, unknown>) => Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
export declare function sanitizeLogMetadata(metadata: Record<string, unknown>, sanitizers?: ObservabilitySanitizers): Record<string, unknown>;
|
|
11
|
+
/** Preserves the native logger and its children without registering global policy. */
|
|
12
|
+
export declare function createSanitizedLogger(logger: Logger, sanitizers?: ObservabilitySanitizers): Logger;
|
|
13
|
+
export declare function createSanitizedExceptionTracker(tracker: ExceptionTracker, sanitizers?: ObservabilitySanitizers): ExceptionTracker;
|
|
14
|
+
//# sourceMappingURL=sanitizers.d.ts.map
|
|
@@ -0,0 +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,CAmBlB"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export function sanitizeLogMetadata(metadata, sanitizers = {}) {
|
|
2
|
+
const result = { ...metadata };
|
|
3
|
+
if (typeof result.path === 'string' && sanitizers.path) {
|
|
4
|
+
result.path = sanitizers.path(result.path);
|
|
5
|
+
}
|
|
6
|
+
return sanitizers.metadata?.(result) ?? result;
|
|
7
|
+
}
|
|
8
|
+
/** Preserves the native logger and its children without registering global policy. */
|
|
9
|
+
export function createSanitizedLogger(logger, sanitizers = {}) {
|
|
10
|
+
const sanitizeValue = (value) => {
|
|
11
|
+
if (value instanceof Error)
|
|
12
|
+
return sanitizers.error?.(value) ?? value;
|
|
13
|
+
if (typeof value === 'string')
|
|
14
|
+
return sanitizers.message?.(value) ?? value;
|
|
15
|
+
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
16
|
+
return sanitizeLogMetadata(value, sanitizers);
|
|
17
|
+
}
|
|
18
|
+
return value;
|
|
19
|
+
};
|
|
20
|
+
const write = (level, message, values) => {
|
|
21
|
+
logger[level](sanitizers.message?.(message) ?? message, ...values.map(sanitizeValue));
|
|
22
|
+
};
|
|
23
|
+
return {
|
|
24
|
+
debug: (message, ...values) => write('debug', message, values),
|
|
25
|
+
info: (message, ...values) => write('info', message, values),
|
|
26
|
+
warn: (message, ...values) => write('warn', message, values),
|
|
27
|
+
error: (message, ...values) => write('error', message, values),
|
|
28
|
+
child: (bindings) => {
|
|
29
|
+
const safe = sanitizeLogMetadata(bindings, sanitizers);
|
|
30
|
+
const child = logger.child?.(safe) ?? {
|
|
31
|
+
debug: (message, ...values) => logger.debug(message, safe, ...values),
|
|
32
|
+
info: (message, ...values) => logger.info(message, safe, ...values),
|
|
33
|
+
warn: (message, ...values) => logger.warn(message, safe, ...values),
|
|
34
|
+
error: (message, ...values) => logger.error(message, safe, ...values),
|
|
35
|
+
};
|
|
36
|
+
return createSanitizedLogger(child, sanitizers);
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export function createSanitizedExceptionTracker(tracker, sanitizers = {}) {
|
|
41
|
+
return {
|
|
42
|
+
captureException: (error, context) => tracker.captureException(sanitizers.error?.(error) ?? error, context ? sanitizeLogMetadata(context, sanitizers) : undefined),
|
|
43
|
+
captureMessage: (message, level, context) => tracker.captureMessage(sanitizers.message?.(message) ?? message, level, context ? sanitizeLogMetadata(context, sanitizers) : undefined),
|
|
44
|
+
setUser: (user) => {
|
|
45
|
+
const safe = sanitizeLogMetadata(user, sanitizers);
|
|
46
|
+
if (typeof safe.id === 'string')
|
|
47
|
+
tracker.setUser({ ...safe, id: safe.id });
|
|
48
|
+
},
|
|
49
|
+
setContext: (key, data) => tracker.setContext(key, sanitizeLogMetadata(data, sanitizers)),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=sanitizers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitizers.js","sourceRoot":"","sources":["../../src/observability/sanitizers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare class OpenAPIDriftError extends Error {
|
|
2
|
+
constructor(filePath: string);
|
|
3
|
+
}
|
|
4
|
+
/** Compares JSON documents without changing the committed contract file. */
|
|
5
|
+
export declare function assertOpenAPIMatches(document: unknown, filePath: string): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=drift.d.ts.map
|
|
@@ -0,0 +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,EAG3B;CACF;AAED,4EAA4E;AAC5E,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7F"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
3
|
+
export class OpenAPIDriftError extends Error {
|
|
4
|
+
constructor(filePath) {
|
|
5
|
+
super(`OpenAPI contract drift: regenerate and commit ${filePath}`);
|
|
6
|
+
this.name = 'OpenAPIDriftError';
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
/** Compares JSON documents without changing the committed contract file. */
|
|
10
|
+
export async function assertOpenAPIMatches(document, filePath) {
|
|
11
|
+
const expected = JSON.parse(await readFile(filePath, 'utf8'));
|
|
12
|
+
// Normalize to JSON so omitted undefined properties match the written artifact.
|
|
13
|
+
const actual = JSON.parse(JSON.stringify(document));
|
|
14
|
+
if (!isDeepStrictEqual(expected, actual)) {
|
|
15
|
+
throw new OpenAPIDriftError(filePath);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=drift.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/openapi/drift.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,QAAgB;QAC1B,KAAK,CAAC,iDAAiD,QAAQ,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,QAAiB,EAAE,QAAgB;IAC5E,MAAM,QAAQ,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACvE,gFAAgF;IAChF,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { Hono } from 'hono';
|
|
2
|
+
import { generateSpecs } from 'hono-openapi';
|
|
2
3
|
import type { Environment, MiddlewareOptions, OpenAPIOptions, RateLimitOptions } from '../core/types.js';
|
|
4
|
+
import { type Logger } from '../utils/logger.js';
|
|
3
5
|
export interface ConfigureOpenAPIOptions {
|
|
6
|
+
logger?: Logger;
|
|
4
7
|
app: Hono;
|
|
5
8
|
environment: Environment;
|
|
6
9
|
openapi: OpenAPIOptions;
|
|
@@ -11,6 +14,8 @@ export interface ConfigureOpenAPIOptions {
|
|
|
11
14
|
* Result from configuring OpenAPI, includes optional write function.
|
|
12
15
|
*/
|
|
13
16
|
export interface ConfigureOpenAPIResult {
|
|
17
|
+
/** Generates the document from the same native Hono route registry. */
|
|
18
|
+
generateSpec?: () => Promise<Awaited<ReturnType<typeof generateSpecs>>>;
|
|
14
19
|
/**
|
|
15
20
|
* Write the OpenAPI spec to a file.
|
|
16
21
|
* Call this after all routes have been registered.
|
|
@@ -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;
|
|
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;AAG/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
|
@@ -32,7 +32,7 @@ export function configureOpenAPI(options) {
|
|
|
32
32
|
}
|
|
33
33
|
// Use 'error' level so errors are always logged (even in test mode)
|
|
34
34
|
// This ensures OpenAPI spec writing errors are visible
|
|
35
|
-
const logger = createLogger('Glasswork:OpenAPI', 'error');
|
|
35
|
+
const logger = options.logger ?? createLogger('Glasswork:OpenAPI', 'error');
|
|
36
36
|
const shouldServeSpecs = openapi.serveSpecs ?? environment === 'development';
|
|
37
37
|
const shouldServeUI = openapi.serveUI ?? environment === 'development';
|
|
38
38
|
// Filter components based on enabled features (only include headers that are actually used)
|
|
@@ -69,7 +69,10 @@ export function configureOpenAPI(options) {
|
|
|
69
69
|
logger.info(`OpenAPI spec written to ${filePath}`);
|
|
70
70
|
};
|
|
71
71
|
}
|
|
72
|
-
return {
|
|
72
|
+
return {
|
|
73
|
+
writeSpec,
|
|
74
|
+
generateSpec: () => generateSpecs(app, { documentation: mergedDocumentation }),
|
|
75
|
+
};
|
|
73
76
|
}
|
|
74
77
|
/**
|
|
75
78
|
* Filter component headers based on enabled features.
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/openapi/openapi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type GetObjectTaggingCommandInput, type GetObjectTaggingCommandOutput, type S3Client } from '@aws-sdk/client-s3';
|
|
2
|
+
declare const GUARD_DUTY_SCAN_STATUSES: readonly ['NO_THREATS_FOUND', 'THREATS_FOUND', 'UNSUPPORTED', 'ACCESS_DENIED', 'FAILED'];
|
|
3
|
+
export type GuardDutyScanStatus = (typeof GUARD_DUTY_SCAN_STATUSES)[number] | 'pending' | 'unknown';
|
|
4
|
+
export interface GuardDutyScanResult {
|
|
5
|
+
/** Native GuardDuty status, or pending/unknown when no recognized result is available. */
|
|
6
|
+
readonly status: GuardDutyScanStatus;
|
|
7
|
+
/** Original S3 response, including the object version and unmodified tags. */
|
|
8
|
+
readonly response: GetObjectTaggingCommandOutput;
|
|
9
|
+
}
|
|
10
|
+
/** Reads GuardDuty's scan tag without granting access or deciding application policy. */
|
|
11
|
+
export declare class GuardDutyMalwareScanner {
|
|
12
|
+
private readonly config;
|
|
13
|
+
constructor(config: {
|
|
14
|
+
client: S3Client;
|
|
15
|
+
bucketName: string;
|
|
16
|
+
});
|
|
17
|
+
getScanResult(filePath: string, options?: Omit<GetObjectTaggingCommandInput, 'Bucket' | 'Key'>): Promise<GuardDutyScanResult>;
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=guardduty.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardduty.d.ts","sourceRoot":"","sources":["../../src/uploads/guardduty.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,EAClC,KAAK,QAAQ,EACd,MAAM,oBAAoB,CAAC;AAG5B,QAAA,MAAM,wBAAwB,YAC5B,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,eAAe,EACf,QAAQ,CACA,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpG,MAAM,WAAW,mBAAmB;IAClC,0FAA0F;IAC1F,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,CAAC;CAClD;AAED,yFAAyF;AACzF,qBAAa,uBAAuB;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAnC,YAA6B,MAAM,EAAE;QAAE,MAAM,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAAI;IAE3E,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,IAAI,CAAC,4BAA4B,EAAE,QAAQ,GAAG,KAAK,CAAM,GACjE,OAAO,CAAC,mBAAmB,CAAC,CAc9B;CACF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { GetObjectTaggingCommand, } from '@aws-sdk/client-s3';
|
|
2
|
+
import { normalizeS3Key } from './s3-key.js';
|
|
3
|
+
const GUARD_DUTY_SCAN_STATUSES = [
|
|
4
|
+
'NO_THREATS_FOUND',
|
|
5
|
+
'THREATS_FOUND',
|
|
6
|
+
'UNSUPPORTED',
|
|
7
|
+
'ACCESS_DENIED',
|
|
8
|
+
'FAILED',
|
|
9
|
+
];
|
|
10
|
+
/** Reads GuardDuty's scan tag without granting access or deciding application policy. */
|
|
11
|
+
export class GuardDutyMalwareScanner {
|
|
12
|
+
config;
|
|
13
|
+
constructor(config) {
|
|
14
|
+
this.config = config;
|
|
15
|
+
}
|
|
16
|
+
async getScanResult(filePath, options = {}) {
|
|
17
|
+
const response = await this.config.client.send(new GetObjectTaggingCommand({
|
|
18
|
+
...options,
|
|
19
|
+
Bucket: this.config.bucketName,
|
|
20
|
+
Key: normalizeS3Key(filePath),
|
|
21
|
+
}));
|
|
22
|
+
const value = response.TagSet?.find((tag) => tag.Key === 'GuardDutyMalwareScanStatus')?.Value;
|
|
23
|
+
const status = value === undefined
|
|
24
|
+
? 'pending'
|
|
25
|
+
: (GUARD_DUTY_SCAN_STATUSES.find((candidate) => candidate === value) ?? 'unknown');
|
|
26
|
+
return { status, response };
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=guardduty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardduty.js","sourceRoot":"","sources":["../../src/uploads/guardduty.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,GAIxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,wBAAwB,GAAG;IAC/B,kBAAkB;IAClB,eAAe;IACf,aAAa;IACb,eAAe;IACf,QAAQ;CACA,CAAC;AAWX,yFAAyF;AACzF,MAAM,OAAO,uBAAuB;IACL,MAAM;IAAnC,YAA6B,MAAgD;sBAAhD,MAAM;IAA6C,CAAC;IAEjF,KAAK,CAAC,aAAa,CACjB,QAAgB,EAChB,OAAO,GAAyD,EAAE;QAElE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAC5C,IAAI,uBAAuB,CAAC;YAC1B,GAAG,OAAO;YACV,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAC9B,GAAG,EAAE,cAAc,CAAC,QAAQ,CAAC;SAC9B,CAAC,CACH,CAAC;QACF,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,4BAA4B,CAAC,EAAE,KAAK,CAAC;QAC9F,MAAM,MAAM,GACV,KAAK,KAAK,SAAS;YACjB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC;QACvF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;CACF"}
|
package/dist/uploads/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export type { UploadPathConfig } from './file-upload.js';
|
|
2
2
|
export { assertUploadPathOwnership, createUploadConfig } from './file-upload.js';
|
|
3
|
-
export type { SignedDownloadUrlResponse, SignedUrlResponse, StreamFileResult, UploadFileConfig, UploadsServiceConfig, } from './uploads.service.js';
|
|
3
|
+
export type { FinalizeUploadOptions, SignedDownloadUrlResponse, SignedUrlResponse, StreamFileResult, UploadFileConfig, UploadsServiceConfig, } from './uploads.service.js';
|
|
4
4
|
export { UploadsService } from './uploads.service.js';
|
|
5
5
|
export { fileNameWithExtension, sanitizedFileName } from './validators.js';
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/uploads/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACjF,YAAY,EACV,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/uploads/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACjF,YAAY,EACV,qBAAqB,EACrB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/uploads/index.ts"],"names":[],"mappings":"AAAA,UAAU;AAGV,YAAY;AACZ,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/uploads/index.ts"],"names":[],"mappings":"AAAA,UAAU;AAGV,YAAY;AACZ,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AASjF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,aAAa;AACb,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3-key.d.ts","sourceRoot":"","sources":["../../src/uploads/s3-key.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3-key.js","sourceRoot":"","sources":["../../src/uploads/s3-key.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACvD,CAAC"}
|