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.
Files changed (170) hide show
  1. package/CHANGELOG.md +37 -1
  2. package/dist/core/bootstrap.d.ts.map +1 -1
  3. package/dist/core/bootstrap.js +110 -25
  4. package/dist/core/bootstrap.js.map +1 -1
  5. package/dist/core/contract.d.ts +37 -0
  6. package/dist/core/contract.d.ts.map +1 -0
  7. package/dist/core/contract.js +19 -0
  8. package/dist/core/contract.js.map +1 -0
  9. package/dist/core/index.d.ts +1 -0
  10. package/dist/core/index.d.ts.map +1 -1
  11. package/dist/core/index.js +1 -0
  12. package/dist/core/index.js.map +1 -1
  13. package/dist/core/types.d.ts +12 -0
  14. package/dist/core/types.d.ts.map +1 -1
  15. package/dist/email/email-service.d.ts +5 -2
  16. package/dist/email/email-service.d.ts.map +1 -1
  17. package/dist/email/email-service.js +8 -4
  18. package/dist/email/email-service.js.map +1 -1
  19. package/dist/email/index.d.ts +1 -1
  20. package/dist/email/index.d.ts.map +1 -1
  21. package/dist/email/index.js.map +1 -1
  22. package/dist/email/templated-email-service.d.ts.map +1 -1
  23. package/dist/email/templated-email-service.js +2 -1
  24. package/dist/email/templated-email-service.js.map +1 -1
  25. package/dist/email/types.d.ts +9 -4
  26. package/dist/email/types.d.ts.map +1 -1
  27. package/dist/email/webhooks/handler-factory.d.ts.map +1 -1
  28. package/dist/email/webhooks/handler-factory.js +7 -3
  29. package/dist/email/webhooks/handler-factory.js.map +1 -1
  30. package/dist/email/webhooks/notification-parser.d.ts +2 -1
  31. package/dist/email/webhooks/notification-parser.d.ts.map +1 -1
  32. package/dist/email/webhooks/notification-parser.js +1 -2
  33. package/dist/email/webhooks/notification-parser.js.map +1 -1
  34. package/dist/email/webhooks/signature-verification.d.ts.map +1 -1
  35. package/dist/email/webhooks/signature-verification.js +3 -3
  36. package/dist/email/webhooks/signature-verification.js.map +1 -1
  37. package/dist/email/webhooks/subscription-handler.d.ts +2 -0
  38. package/dist/email/webhooks/subscription-handler.d.ts.map +1 -1
  39. package/dist/email/webhooks/subscription-handler.js +5 -5
  40. package/dist/email/webhooks/subscription-handler.js.map +1 -1
  41. package/dist/email/webhooks/types.d.ts +2 -0
  42. package/dist/email/webhooks/types.d.ts.map +1 -1
  43. package/dist/http/error-handler.d.ts +3 -1
  44. package/dist/http/error-handler.d.ts.map +1 -1
  45. package/dist/http/error-handler.js +3 -4
  46. package/dist/http/error-handler.js.map +1 -1
  47. package/dist/http/index.d.ts +1 -0
  48. package/dist/http/index.d.ts.map +1 -1
  49. package/dist/http/index.js +1 -0
  50. package/dist/http/index.js.map +1 -1
  51. package/dist/http/route-context.d.ts.map +1 -1
  52. package/dist/http/route-context.js +7 -2
  53. package/dist/http/route-context.js.map +1 -1
  54. package/dist/http/route-helpers.d.ts.map +1 -1
  55. package/dist/http/route-helpers.js +1 -1
  56. package/dist/http/route-helpers.js.map +1 -1
  57. package/dist/http/route-openapi-context.d.ts +2 -0
  58. package/dist/http/route-openapi-context.d.ts.map +1 -1
  59. package/dist/http/route-openapi-context.js.map +1 -1
  60. package/dist/http/route-response.d.ts +2 -1
  61. package/dist/http/route-response.d.ts.map +1 -1
  62. package/dist/http/route-response.js +3 -4
  63. package/dist/http/route-response.js.map +1 -1
  64. package/dist/jobs/define-job.d.ts +12 -8
  65. package/dist/jobs/define-job.d.ts.map +1 -1
  66. package/dist/jobs/define-job.js +2 -0
  67. package/dist/jobs/define-job.js.map +1 -1
  68. package/dist/jobs/drivers/mock-driver.d.ts +3 -1
  69. package/dist/jobs/drivers/mock-driver.d.ts.map +1 -1
  70. package/dist/jobs/drivers/mock-driver.js +15 -21
  71. package/dist/jobs/drivers/mock-driver.js.map +1 -1
  72. package/dist/jobs/index.d.ts +2 -2
  73. package/dist/jobs/index.d.ts.map +1 -1
  74. package/dist/jobs/index.js +1 -1
  75. package/dist/jobs/index.js.map +1 -1
  76. package/dist/jobs/job-runner.d.ts +7 -0
  77. package/dist/jobs/job-runner.d.ts.map +1 -0
  78. package/dist/jobs/job-runner.js +38 -0
  79. package/dist/jobs/job-runner.js.map +1 -0
  80. package/dist/jobs/job-service.d.ts +6 -6
  81. package/dist/jobs/job-service.d.ts.map +1 -1
  82. package/dist/jobs/job-service.js +8 -0
  83. package/dist/jobs/job-service.js.map +1 -1
  84. package/dist/jobs/observability/emf.d.ts +5 -15
  85. package/dist/jobs/observability/emf.d.ts.map +1 -1
  86. package/dist/jobs/observability/emf.js +87 -67
  87. package/dist/jobs/observability/emf.js.map +1 -1
  88. package/dist/jobs/observability/index.d.ts +2 -4
  89. package/dist/jobs/observability/index.d.ts.map +1 -1
  90. package/dist/jobs/observability/index.js +1 -3
  91. package/dist/jobs/observability/index.js.map +1 -1
  92. package/dist/jobs/observability/types.d.ts +16 -193
  93. package/dist/jobs/observability/types.d.ts.map +1 -1
  94. package/dist/jobs/types.d.ts +17 -7
  95. package/dist/jobs/types.d.ts.map +1 -1
  96. package/dist/jobs/worker.d.ts +3 -0
  97. package/dist/jobs/worker.d.ts.map +1 -1
  98. package/dist/jobs/worker.js +66 -13
  99. package/dist/jobs/worker.js.map +1 -1
  100. package/dist/list-query/client.d.ts +36 -0
  101. package/dist/list-query/client.d.ts.map +1 -0
  102. package/dist/list-query/client.js +74 -0
  103. package/dist/list-query/client.js.map +1 -0
  104. package/dist/list-query/parser.d.ts.map +1 -1
  105. package/dist/list-query/parser.js +8 -46
  106. package/dist/list-query/parser.js.map +1 -1
  107. package/dist/list-query/protocol.d.ts +14 -0
  108. package/dist/list-query/protocol.d.ts.map +1 -0
  109. package/dist/list-query/protocol.js +44 -0
  110. package/dist/list-query/protocol.js.map +1 -0
  111. package/dist/list-query/query-schema.d.ts.map +1 -1
  112. package/dist/list-query/query-schema.js +6 -5
  113. package/dist/list-query/query-schema.js.map +1 -1
  114. package/dist/list-query/types.d.ts +2 -5
  115. package/dist/list-query/types.d.ts.map +1 -1
  116. package/dist/middleware/rate-limit.d.ts.map +1 -1
  117. package/dist/middleware/rate-limit.js +1 -1
  118. package/dist/middleware/rate-limit.js.map +1 -1
  119. package/dist/observability/exception-tracking.d.ts +6 -1
  120. package/dist/observability/exception-tracking.d.ts.map +1 -1
  121. package/dist/observability/exception-tracking.js +29 -5
  122. package/dist/observability/exception-tracking.js.map +1 -1
  123. package/dist/observability/index.d.ts +1 -0
  124. package/dist/observability/index.d.ts.map +1 -1
  125. package/dist/observability/index.js +1 -0
  126. package/dist/observability/index.js.map +1 -1
  127. package/dist/observability/pino-logger.d.ts +3 -1
  128. package/dist/observability/pino-logger.d.ts.map +1 -1
  129. package/dist/observability/pino-logger.js +17 -11
  130. package/dist/observability/pino-logger.js.map +1 -1
  131. package/dist/observability/sanitizers.d.ts +14 -0
  132. package/dist/observability/sanitizers.d.ts.map +1 -0
  133. package/dist/observability/sanitizers.js +52 -0
  134. package/dist/observability/sanitizers.js.map +1 -0
  135. package/dist/openapi/drift.d.ts +6 -0
  136. package/dist/openapi/drift.d.ts.map +1 -0
  137. package/dist/openapi/drift.js +18 -0
  138. package/dist/openapi/drift.js.map +1 -0
  139. package/dist/openapi/openapi.d.ts +5 -0
  140. package/dist/openapi/openapi.d.ts.map +1 -1
  141. package/dist/openapi/openapi.js +5 -2
  142. package/dist/openapi/openapi.js.map +1 -1
  143. package/dist/uploads/guardduty.d.ts +20 -0
  144. package/dist/uploads/guardduty.d.ts.map +1 -0
  145. package/dist/uploads/guardduty.js +29 -0
  146. package/dist/uploads/guardduty.js.map +1 -0
  147. package/dist/uploads/index.d.ts +1 -1
  148. package/dist/uploads/index.d.ts.map +1 -1
  149. package/dist/uploads/index.js.map +1 -1
  150. package/dist/uploads/s3-key.d.ts +3 -0
  151. package/dist/uploads/s3-key.d.ts.map +1 -0
  152. package/dist/uploads/s3-key.js +5 -0
  153. package/dist/uploads/s3-key.js.map +1 -0
  154. package/dist/uploads/uploads.service.d.ts +27 -7
  155. package/dist/uploads/uploads.service.d.ts.map +1 -1
  156. package/dist/uploads/uploads.service.js +50 -14
  157. package/dist/uploads/uploads.service.js.map +1 -1
  158. package/package.json +11 -1
  159. package/dist/jobs/observability/client.d.ts +0 -26
  160. package/dist/jobs/observability/client.d.ts.map +0 -1
  161. package/dist/jobs/observability/client.js +0 -286
  162. package/dist/jobs/observability/client.js.map +0 -1
  163. package/dist/jobs/observability/dashboard.d.ts +0 -19
  164. package/dist/jobs/observability/dashboard.d.ts.map +0 -1
  165. package/dist/jobs/observability/dashboard.js +0 -144
  166. package/dist/jobs/observability/dashboard.js.map +0 -1
  167. package/dist/jobs/scheduler.d.ts +0 -17
  168. package/dist/jobs/scheduler.d.ts.map +0 -1
  169. package/dist/jobs/scheduler.js +0 -83
  170. 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(): ExceptionTracker;
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;AAI9C;;;;;;;;;;;;;;;;;;;;;;;;;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;;;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,CA2HhG;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,oBAAoB,IAAI,gBAAgB,CAkCvD"}
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 (logToConsole) {
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 (logToConsole) {
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 (logToConsole) {
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;AACjD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA6FzE;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,UAAkB,EAAW,EAAE,CAAC,UAAU,IAAI,GAAG,CAAC;AAE1F;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAClC,aAAkC,EAClC,UAAkB,EAClB,MAA+B;IAE/B,0CAA0C;IAC1C,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,kCAAkC;IAClC,OAAO,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iCAAiC,CAC/C,MAA+B;IAE/B,OAAO,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACvB,0DAA0D;QAC1D,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAEvD,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE;YACnC,EAAE,EAAE,SAAS;YACb,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM;YACpB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI;YAChB,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;SACtC,CAAC,CAAC;QAEH,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AA4CD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAO,GAA6B,EAAE;IAC5E,MAAM,EACJ,SAAS,GAAG,oBAAoB,EAChC,UAAU,GAAG,EAAE,EACf,gBAAgB,EAChB,YAAY,GAAG,CAAC,MAAM,EAAE,GACzB,GAAG,OAAO,CAAC;IAEZ,kDAAkD;IAClD,IAAI,QAAQ,GAAgC,gBAAgB,IAAI,IAAI,CAAC;IAErE,KAAK,UAAU,SAAS;QACtB,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAE9B,IAAI,CAAC;YACH,+CAA+C;YAC/C,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;YACxE,QAAQ,GAAG,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACpC,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,UAAU,SAAS,CACtB,UAAkB,EAClB,KAAa,EACb,eAAe,GAA2B,EAAE;QAE5C,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,IAAI,CAAC;YACH,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;YAE5E,MAAM,aAAa,GAAG,EAAE,GAAG,UAAU,EAAE,GAAG,eAAe,EAAE,CAAC;YAC5D,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3E,IAAI;gBACJ,KAAK;aACN,CAAC,CAAC,CAAC;YAEJ,MAAM,MAAM,CAAC,IAAI,CACf,IAAI,oBAAoB,CAAC;gBACvB,SAAS,EAAE,SAAS;gBACpB,UAAU,EAAE;oBACV;wBACE,UAAU,EAAE,UAAU;wBACtB,KAAK,EAAE,KAAK;wBACZ,IAAI,EAAE,OAAO;wBACb,SAAS,EAAE,IAAI,IAAI,EAAE;wBACrB,UAAU,EAAE,cAAc;qBAC3B;iBACF;aACF,CAAC,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,8DAA8D;YAC9D,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAA4C,EAAE,CAAC;IAEjE,OAAO;QACL,gBAAgB,CAAC,KAAY,EAAE,OAAiC;YAC9D,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;YAEhC,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE;oBAC3B,KAAK,EAAE,KAAK,CAAC,OAAO;oBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,SAAS,EAAE,GAAG,EAAE,SAAS,IAAI,OAAO,EAAE,SAAS;oBAC/C,MAAM,EAAE,GAAG,EAAE,MAAM;oBACnB,GAAG,OAAO;iBACX,CAAC,CAAC;YACL,CAAC;YAED,+BAA+B;YAC/B,KAAK,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE;gBAC9B,SAAS,EAAE,KAAK,CAAC,IAAI,IAAI,OAAO;gBAChC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,SAAS,CAAC;gBACrD,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,IAAI,GAAG,CAAC;aAC/C,CAAC,CAAC;QACL,CAAC;QAED,cAAc,CACZ,OAAe,EACf,KAAmC,EACnC,OAAiC;YAEjC,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;YAEhC,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,KAAK,GACT,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;gBACvF,KAAK,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE;oBACzC,SAAS,EAAE,GAAG,EAAE,SAAS;oBACzB,MAAM,EAAE,GAAG,EAAE,MAAM;oBACnB,GAAG,OAAO;iBACX,CAAC,CAAC;YACL,CAAC;YAED,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;gBACtB,KAAK,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE;oBAC9B,SAAS,EAAE,SAAS;oBACpB,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,SAAS,CAAC;iBACtD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAA4D;YAClE,iDAAiD;YACjD,+EAA+E;YAC/E,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;QAED,UAAU,CAAC,GAAW,EAAE,IAA6B;YACnD,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,gBAAgB,CAAC,KAAY,EAAE,OAAiC;YAC9D,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE;gBAC3B,KAAK,EAAE,KAAK,CAAC,OAAO;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,SAAS,EAAE,GAAG,EAAE,SAAS,IAAI,OAAO,EAAE,SAAS;gBAC/C,GAAG,OAAO;aACX,CAAC,CAAC;QACL,CAAC;QAED,cAAc,CACZ,OAAe,EACf,KAAmC,EACnC,OAAiC;YAEjC,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;YAChC,MAAM,KAAK,GACT,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;YACvF,KAAK,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE;gBACzC,SAAS,EAAE,GAAG,EAAE,SAAS;gBACzB,GAAG,OAAO;aACX,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,4BAA4B;QAC9B,CAAC;QAED,UAAU;YACR,4BAA4B;QAC9B,CAAC;KACF,CAAC;AACJ,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;AAE1B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,cAAc,EACd,sBAAsB,EACtB,cAAc,GACf,MAAM,sBAAsB,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;AAE1B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,YAAY,EAGZ,cAAc,EACd,sBAAsB,EACtB,cAAc,GACf,MAAM,sBAAsB,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;AAGjD;;;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;;;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,CA6CrF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,GAAG,iBAAiB,CA8B5E;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB;IAC3B,KAAK;IAEL,UAAU;QACR,KAAK,UAAU,MAAM;YAAQ,KAAK;;;IAGpC,SAAS;IAET,IAAI;CACL,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 && typeof item === 'object' && !Array.isArray(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":"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"}
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;AAGpD,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAK1B,MAAM,WAAW,uBAAuB;IACtC,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;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,sBAAsB,CA8DzF"}
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"}
@@ -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 { writeSpec };
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":"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"}
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"}
@@ -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;AAQjF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,aAAa;AACb,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,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,3 @@
1
+ /** Match the relative paths returned by UploadsService with native S3 object keys. */
2
+ export declare function normalizeS3Key(path: string): string;
3
+ //# sourceMappingURL=s3-key.d.ts.map
@@ -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,5 @@
1
+ /** Match the relative paths returned by UploadsService with native S3 object keys. */
2
+ export function normalizeS3Key(path) {
3
+ return path.replace(/^\/+/, '').replace(/\/+/g, '/');
4
+ }
5
+ //# sourceMappingURL=s3-key.js.map
@@ -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"}