@bgord/bun 1.19.13 → 1.19.14

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 (245) hide show
  1. package/dist/ab-hono-noop.middleware.d.ts +2 -3
  2. package/dist/ab-hono-noop.middleware.d.ts.map +1 -1
  3. package/dist/ab-hono-noop.middleware.js +4 -9
  4. package/dist/ab-hono-noop.middleware.js.map +1 -1
  5. package/dist/ab-variant-name.vo.d.ts +9 -0
  6. package/dist/ab-variant-name.vo.d.ts.map +1 -0
  7. package/dist/ab-variant-name.vo.js +10 -0
  8. package/dist/ab-variant-name.vo.js.map +1 -0
  9. package/dist/ab-variant.vo.d.ts +2 -1
  10. package/dist/ab-variant.vo.d.ts.map +1 -1
  11. package/dist/ab-variant.vo.js.map +1 -1
  12. package/dist/basic-auth-password.vo.d.ts +2 -1
  13. package/dist/basic-auth-password.vo.d.ts.map +1 -1
  14. package/dist/basic-auth-password.vo.js +2 -1
  15. package/dist/basic-auth-password.vo.js.map +1 -1
  16. package/dist/basic-auth-username.vo.d.ts +2 -1
  17. package/dist/basic-auth-username.vo.d.ts.map +1 -1
  18. package/dist/basic-auth-username.vo.js +2 -1
  19. package/dist/basic-auth-username.vo.js.map +1 -1
  20. package/dist/cache-repository-redis.adapter.d.ts +1 -2
  21. package/dist/cache-repository-redis.adapter.d.ts.map +1 -1
  22. package/dist/cache-repository-redis.adapter.js.map +1 -1
  23. package/dist/certificate-inspector-noop.adapter.d.ts +2 -1
  24. package/dist/certificate-inspector-noop.adapter.d.ts.map +1 -1
  25. package/dist/certificate-inspector-noop.adapter.js.map +1 -1
  26. package/dist/certificate-inspector-tls.adapter.d.ts +2 -1
  27. package/dist/certificate-inspector-tls.adapter.d.ts.map +1 -1
  28. package/dist/certificate-inspector-tls.adapter.js.map +1 -1
  29. package/dist/certificate-inspector.port.d.ts +2 -1
  30. package/dist/certificate-inspector.port.d.ts.map +1 -1
  31. package/dist/csv-stringifier.adapter.d.ts.map +1 -1
  32. package/dist/csv-stringifier.adapter.js +1 -0
  33. package/dist/csv-stringifier.adapter.js.map +1 -1
  34. package/dist/environment-loader-encrypted.adapter.d.ts +1 -1
  35. package/dist/environment-loader-encrypted.adapter.d.ts.map +1 -1
  36. package/dist/environment-loader-encrypted.adapter.js +5 -7
  37. package/dist/environment-loader-encrypted.adapter.js.map +1 -1
  38. package/dist/environment-loader-noop.adapter.d.ts +1 -1
  39. package/dist/environment-loader-noop.adapter.d.ts.map +1 -1
  40. package/dist/environment-loader-noop.adapter.js +5 -7
  41. package/dist/environment-loader-noop.adapter.js.map +1 -1
  42. package/dist/environment-loader-process-safe.adapter.d.ts +1 -1
  43. package/dist/environment-loader-process-safe.adapter.d.ts.map +1 -1
  44. package/dist/environment-loader-process-safe.adapter.js +2 -9
  45. package/dist/environment-loader-process-safe.adapter.js.map +1 -1
  46. package/dist/environment-loader-process.adapter.d.ts +1 -1
  47. package/dist/environment-loader-process.adapter.d.ts.map +1 -1
  48. package/dist/environment-loader-process.adapter.js +5 -7
  49. package/dist/environment-loader-process.adapter.js.map +1 -1
  50. package/dist/environment-loader.port.d.ts +0 -3
  51. package/dist/environment-loader.port.d.ts.map +1 -1
  52. package/dist/environment-loader.port.js +1 -1
  53. package/dist/environment-loader.port.js.map +1 -1
  54. package/dist/event-upcaster-chain.adapter.d.ts.map +1 -1
  55. package/dist/event-upcaster-chain.adapter.js +5 -0
  56. package/dist/event-upcaster-chain.adapter.js.map +1 -1
  57. package/dist/event-validator-registry.adapter.d.ts +1 -1
  58. package/dist/event-validator-registry.adapter.d.ts.map +1 -1
  59. package/dist/event-validator-registry.adapter.js +2 -7
  60. package/dist/event-validator-registry.adapter.js.map +1 -1
  61. package/dist/event-validator-registry.port.d.ts +0 -3
  62. package/dist/event-validator-registry.port.d.ts.map +1 -1
  63. package/dist/event-validator-registry.port.js +1 -1
  64. package/dist/event-validator-registry.port.js.map +1 -1
  65. package/dist/file-uploader-hono.middleware.d.ts.map +1 -1
  66. package/dist/file-uploader-hono.middleware.js +4 -13
  67. package/dist/file-uploader-hono.middleware.js.map +1 -1
  68. package/dist/file-uploader.middleware.d.ts.map +1 -1
  69. package/dist/file-uploader.middleware.js +1 -0
  70. package/dist/file-uploader.middleware.js.map +1 -1
  71. package/dist/graceful-shutdown.service.d.ts +8 -4
  72. package/dist/graceful-shutdown.service.d.ts.map +1 -1
  73. package/dist/graceful-shutdown.service.js +27 -26
  74. package/dist/graceful-shutdown.service.js.map +1 -1
  75. package/dist/hostname.vo.d.ts +8 -0
  76. package/dist/hostname.vo.d.ts.map +1 -0
  77. package/dist/hostname.vo.js +9 -0
  78. package/dist/hostname.vo.js.map +1 -0
  79. package/dist/http-logger.middleware.js +1 -1
  80. package/dist/http-logger.middleware.js.map +1 -1
  81. package/dist/image-blur.adapter.d.ts +2 -0
  82. package/dist/image-blur.adapter.d.ts.map +1 -1
  83. package/dist/image-blur.adapter.js +1 -1
  84. package/dist/image-blur.adapter.js.map +1 -1
  85. package/dist/image-compressor.adapter.d.ts +2 -0
  86. package/dist/image-compressor.adapter.d.ts.map +1 -1
  87. package/dist/image-compressor.adapter.js +1 -1
  88. package/dist/image-compressor.adapter.js.map +1 -1
  89. package/dist/image-exif-clear.adapter.d.ts +2 -0
  90. package/dist/image-exif-clear.adapter.d.ts.map +1 -1
  91. package/dist/image-exif-clear.adapter.js +1 -1
  92. package/dist/image-exif-clear.adapter.js.map +1 -1
  93. package/dist/image-formatter.adapter.d.ts +2 -0
  94. package/dist/image-formatter.adapter.d.ts.map +1 -1
  95. package/dist/image-formatter.adapter.js +1 -1
  96. package/dist/image-formatter.adapter.js.map +1 -1
  97. package/dist/image-generator-web-view.adapter.d.ts.map +1 -1
  98. package/dist/image-generator-web-view.adapter.js +1 -0
  99. package/dist/image-generator-web-view.adapter.js.map +1 -1
  100. package/dist/image-grayscale.adapter.d.ts +2 -0
  101. package/dist/image-grayscale.adapter.d.ts.map +1 -1
  102. package/dist/image-grayscale.adapter.js +1 -1
  103. package/dist/image-grayscale.adapter.js.map +1 -1
  104. package/dist/image-processor.adapter.d.ts +2 -0
  105. package/dist/image-processor.adapter.d.ts.map +1 -1
  106. package/dist/image-processor.adapter.js +1 -1
  107. package/dist/image-processor.adapter.js.map +1 -1
  108. package/dist/image-resizer.adapter.d.ts +2 -0
  109. package/dist/image-resizer.adapter.d.ts.map +1 -1
  110. package/dist/image-resizer.adapter.js +1 -1
  111. package/dist/image-resizer.adapter.js.map +1 -1
  112. package/dist/image.types.d.ts +1 -1
  113. package/dist/image.types.d.ts.map +1 -1
  114. package/dist/index.d.ts +2 -0
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.js +2 -0
  117. package/dist/index.js.map +1 -1
  118. package/dist/job-registry.adapter.d.ts +1 -1
  119. package/dist/job-registry.adapter.d.ts.map +1 -1
  120. package/dist/job-registry.adapter.js +2 -7
  121. package/dist/job-registry.adapter.js.map +1 -1
  122. package/dist/job-registry.port.d.ts +0 -3
  123. package/dist/job-registry.port.d.ts.map +1 -1
  124. package/dist/job-registry.port.js +1 -1
  125. package/dist/job-registry.port.js.map +1 -1
  126. package/dist/prerequisite-verifier-binary.adapter.js +1 -1
  127. package/dist/prerequisite-verifier-binary.adapter.js.map +1 -1
  128. package/dist/prerequisite-verifier-dns.adapter.d.ts +2 -1
  129. package/dist/prerequisite-verifier-dns.adapter.d.ts.map +1 -1
  130. package/dist/prerequisite-verifier-dns.adapter.js.map +1 -1
  131. package/dist/prerequisite-verifier-ssl-certificate-expiry.adapter.d.ts +2 -1
  132. package/dist/prerequisite-verifier-ssl-certificate-expiry.adapter.d.ts.map +1 -1
  133. package/dist/prerequisite-verifier-ssl-certificate-expiry.adapter.js.map +1 -1
  134. package/dist/prerequisite-verifier-translations.adapter.js +5 -5
  135. package/dist/prerequisite-verifier-translations.adapter.js.map +1 -1
  136. package/dist/reactive-config-file-json.adapter.d.ts +1 -1
  137. package/dist/reactive-config-file-json.adapter.d.ts.map +1 -1
  138. package/dist/reactive-config-file-json.adapter.js +2 -7
  139. package/dist/reactive-config-file-json.adapter.js.map +1 -1
  140. package/dist/reactive-config-noop.adapter.d.ts +1 -1
  141. package/dist/reactive-config-noop.adapter.d.ts.map +1 -1
  142. package/dist/reactive-config-noop.adapter.js +2 -7
  143. package/dist/reactive-config-noop.adapter.js.map +1 -1
  144. package/dist/reactive-config-with-fallback.adapter.d.ts +1 -1
  145. package/dist/reactive-config-with-fallback.adapter.d.ts.map +1 -1
  146. package/dist/reactive-config-with-fallback.adapter.js +2 -7
  147. package/dist/reactive-config-with-fallback.adapter.js.map +1 -1
  148. package/dist/reactive-config.port.d.ts +0 -3
  149. package/dist/reactive-config.port.d.ts.map +1 -1
  150. package/dist/reactive-config.port.js +1 -1
  151. package/dist/reactive-config.port.js.map +1 -1
  152. package/dist/remote-file-storage-disk.adapter.d.ts +2 -0
  153. package/dist/remote-file-storage-disk.adapter.d.ts.map +1 -1
  154. package/dist/remote-file-storage-disk.adapter.js +1 -1
  155. package/dist/remote-file-storage-disk.adapter.js.map +1 -1
  156. package/dist/shield-api-key.strategy.d.ts.map +1 -1
  157. package/dist/shield-api-key.strategy.js +6 -1
  158. package/dist/shield-api-key.strategy.js.map +1 -1
  159. package/dist/shield-basic-auth.strategy.d.ts.map +1 -1
  160. package/dist/shield-basic-auth.strategy.js +3 -2
  161. package/dist/shield-basic-auth.strategy.js.map +1 -1
  162. package/dist/shield-recaptcha.strategy.js +1 -1
  163. package/dist/shield-recaptcha.strategy.js.map +1 -1
  164. package/dist/sitemap-entry.vo.d.ts +1 -0
  165. package/dist/sitemap-entry.vo.d.ts.map +1 -1
  166. package/dist/sitemap-entry.vo.js +9 -1
  167. package/dist/sitemap-entry.vo.js.map +1 -1
  168. package/dist/standard-schema-validator.service.d.ts +5 -0
  169. package/dist/standard-schema-validator.service.d.ts.map +1 -0
  170. package/dist/standard-schema-validator.service.js +14 -0
  171. package/dist/standard-schema-validator.service.js.map +1 -0
  172. package/dist/subject-application-resolver.vo.d.ts +0 -1
  173. package/dist/subject-application-resolver.vo.d.ts.map +1 -1
  174. package/dist/subject-application-resolver.vo.js +2 -3
  175. package/dist/subject-application-resolver.vo.js.map +1 -1
  176. package/dist/subject-request-resolver.vo.d.ts +0 -1
  177. package/dist/subject-request-resolver.vo.d.ts.map +1 -1
  178. package/dist/subject-request-resolver.vo.js +2 -3
  179. package/dist/subject-request-resolver.vo.js.map +1 -1
  180. package/dist/temporary-file-absolute.adapter.d.ts +2 -0
  181. package/dist/temporary-file-absolute.adapter.d.ts.map +1 -1
  182. package/dist/temporary-file-absolute.adapter.js +1 -1
  183. package/dist/temporary-file-absolute.adapter.js.map +1 -1
  184. package/dist/timing.middleware.d.ts.map +1 -1
  185. package/dist/timing.middleware.js +1 -2
  186. package/dist/timing.middleware.js.map +1 -1
  187. package/dist/woodchopper-sampling-every-nth.strategy.d.ts.map +1 -1
  188. package/dist/woodchopper-sampling-every-nth.strategy.js +1 -3
  189. package/dist/woodchopper-sampling-every-nth.strategy.js.map +1 -1
  190. package/package.json +7 -7
  191. package/readme.md +3 -0
  192. package/src/ab-hono-noop.middleware.ts +2 -13
  193. package/src/ab-variant-name.vo.ts +17 -0
  194. package/src/ab-variant.vo.ts +2 -1
  195. package/src/basic-auth-password.vo.ts +5 -0
  196. package/src/basic-auth-username.vo.ts +5 -0
  197. package/src/cache-repository-redis.adapter.ts +1 -2
  198. package/src/certificate-inspector-noop.adapter.ts +2 -1
  199. package/src/certificate-inspector-tls.adapter.ts +2 -1
  200. package/src/certificate-inspector.port.ts +2 -1
  201. package/src/csv-stringifier.adapter.ts +1 -0
  202. package/src/environment-loader-encrypted.adapter.ts +9 -9
  203. package/src/environment-loader-noop.adapter.ts +9 -9
  204. package/src/environment-loader-process-safe.adapter.ts +8 -11
  205. package/src/environment-loader-process.adapter.ts +9 -9
  206. package/src/environment-loader.port.ts +0 -2
  207. package/src/event-upcaster-chain.adapter.ts +5 -0
  208. package/src/event-validator-registry.adapter.ts +3 -9
  209. package/src/event-validator-registry.port.ts +0 -2
  210. package/src/file-uploader-hono.middleware.ts +3 -17
  211. package/src/file-uploader.middleware.ts +1 -0
  212. package/src/graceful-shutdown.service.ts +27 -28
  213. package/src/hostname.vo.ts +15 -0
  214. package/src/http-logger.middleware.ts +1 -1
  215. package/src/image-blur.adapter.ts +9 -2
  216. package/src/image-compressor.adapter.ts +9 -2
  217. package/src/image-exif-clear.adapter.ts +9 -2
  218. package/src/image-formatter.adapter.ts +5 -1
  219. package/src/image-generator-web-view.adapter.ts +1 -0
  220. package/src/image-grayscale.adapter.ts +9 -2
  221. package/src/image-processor.adapter.ts +5 -1
  222. package/src/image-resizer.adapter.ts +9 -2
  223. package/src/image.types.ts +1 -1
  224. package/src/index.ts +2 -0
  225. package/src/job-registry.adapter.ts +3 -6
  226. package/src/job-registry.port.ts +0 -2
  227. package/src/prerequisite-verifier-binary.adapter.ts +1 -1
  228. package/src/prerequisite-verifier-dns.adapter.ts +2 -1
  229. package/src/prerequisite-verifier-ssl-certificate-expiry.adapter.ts +2 -1
  230. package/src/prerequisite-verifier-translations.adapter.ts +4 -4
  231. package/src/reactive-config-file-json.adapter.ts +3 -9
  232. package/src/reactive-config-noop.adapter.ts +3 -9
  233. package/src/reactive-config-with-fallback.adapter.ts +3 -9
  234. package/src/reactive-config.port.ts +0 -2
  235. package/src/remote-file-storage-disk.adapter.ts +5 -1
  236. package/src/shield-api-key.strategy.ts +7 -1
  237. package/src/shield-basic-auth.strategy.ts +4 -2
  238. package/src/shield-recaptcha.strategy.ts +1 -1
  239. package/src/sitemap-entry.vo.ts +11 -4
  240. package/src/standard-schema-validator.service.ts +15 -0
  241. package/src/subject-application-resolver.vo.ts +2 -6
  242. package/src/subject-request-resolver.vo.ts +2 -6
  243. package/src/temporary-file-absolute.adapter.ts +6 -1
  244. package/src/timing.middleware.ts +1 -3
  245. package/src/woodchopper-sampling-every-nth.strategy.ts +1 -2
@@ -1,4 +1,4 @@
1
- import { EventValidatorRegistryError, } from "./event-validator-registry.port";
1
+ import { StandardSchemaValidator } from "./standard-schema-validator.service";
2
2
  const EventValidatorRegistryAdapterError = {
3
3
  MissingName: "event.validator.registry.adapter.error.missing.name",
4
4
  UnknownEvent: "event.validator.registry.adapter.error.unknown.event",
@@ -20,12 +20,7 @@ export class EventValidatorRegistryAdapter {
20
20
  const schema = this.map.get(name);
21
21
  if (!schema)
22
22
  throw new Error(EventValidatorRegistryAdapterError.UnknownEvent);
23
- const result = schema["~standard"].validate(raw);
24
- if (result instanceof Promise)
25
- throw new Error(EventValidatorRegistryError.NoAsyncSchema);
26
- if (result.issues)
27
- throw new Error(result.issues[0]?.message);
28
- return result.value;
23
+ return StandardSchemaValidator.validate(schema, raw);
29
24
  }
30
25
  }
31
26
  //# sourceMappingURL=event-validator-registry.adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-validator-registry.adapter.js","sourceRoot":"","sources":["../src/event-validator-registry.adapter.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,2BAA2B,GAE5B,MAAM,iCAAiC,CAAC;AAMzC,MAAM,kCAAkC,GAAG;IACzC,WAAW,EAAE,qDAAqD;IAClE,YAAY,EAAE,sDAAsD;CACrE,CAAC;AAEF,MAAM,OAAO,6BAA6B;IACvB,GAAG,CAA8D;IACzE,KAAK,CAAsC;IAEpD,YAAY,QAA2C;QACrD,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,IAA0B;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,QAAQ,CAAC,GAAY;QACnB,MAAM,IAAI,GAAI,GAAuC,CAAC,IAAI,CAAC;QAC3D,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,WAAW,CAAC,CAAC;QAE3E,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,YAAY,CAAC,CAAC;QAE9E,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEjD,IAAI,MAAM,YAAY,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC;QAC1F,IAAI,MAAM,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;CACF"}
1
+ {"version":3,"file":"event-validator-registry.adapter.js","sourceRoot":"","sources":["../src/event-validator-registry.adapter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAM9E,MAAM,kCAAkC,GAAG;IACzC,WAAW,EAAE,qDAAqD;IAClE,YAAY,EAAE,sDAAsD;CACrE,CAAC;AAEF,MAAM,OAAO,6BAA6B;IACvB,GAAG,CAA8D;IACzE,KAAK,CAAsC;IAEpD,YAAY,QAA2C;QACrD,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,IAA0B;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,QAAQ,CAAC,GAAY;QACnB,MAAM,IAAI,GAAI,GAAuC,CAAC,IAAI,CAAC;QAC3D,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,WAAW,CAAC,CAAC;QAE3E,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,YAAY,CAAC,CAAC;QAE9E,OAAO,uBAAuB,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvD,CAAC;CACF"}
@@ -1,7 +1,4 @@
1
1
  import type { GenericEvent } from "./event.types";
2
- export declare const EventValidatorRegistryError: {
3
- NoAsyncSchema: string;
4
- };
5
2
  export interface EventValidatorRegistryPort<Event> {
6
3
  readonly names: ReadonlyArray<GenericEvent["name"]>;
7
4
  accepts(name: GenericEvent["name"]): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"event-validator-registry.port.d.ts","sourceRoot":"","sources":["../src/event-validator-registry.port.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,eAAO,MAAM,2BAA2B;IAAK,aAAa;CAA8C,CAAC;AAEzG,MAAM,WAAW,0BAA0B,CAAC,KAAK;IAC/C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAEpD,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;IAE7C,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAAC;CAC/B"}
1
+ {"version":3,"file":"event-validator-registry.port.d.ts","sourceRoot":"","sources":["../src/event-validator-registry.port.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,WAAW,0BAA0B,CAAC,KAAK;IAC/C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAEpD,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;IAE7C,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAAC;CAC/B"}
@@ -1,2 +1,2 @@
1
- export const EventValidatorRegistryError = { NoAsyncSchema: "event.validator.registry.no.async.schema" };
1
+ export {};
2
2
  //# sourceMappingURL=event-validator-registry.port.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-validator-registry.port.js","sourceRoot":"","sources":["../src/event-validator-registry.port.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,aAAa,EAAE,0CAA0C,EAAE,CAAC"}
1
+ {"version":3,"file":"event-validator-registry.port.js","sourceRoot":"","sources":["../src/event-validator-registry.port.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"file-uploader-hono.middleware.d.ts","sourceRoot":"","sources":["../src/file-uploader-hono.middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,kBAAkB,EAGxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,qBAAa,0BAA2B,YAAW,kBAAkB;IAGvD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IAEpD,YAA6B,MAAM,EAAE,kBAAkB,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EAE1E;IAED,MAAM,gEAoBL;CACF"}
1
+ {"version":3,"file":"file-uploader-hono.middleware.d.ts","sourceRoot":"","sources":["../src/file-uploader-hono.middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,kBAAkB,EAA0B,MAAM,4BAA4B,CAAC;AAC7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,qBAAa,0BAA2B,YAAW,kBAAkB;IAGvD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IAEpD,YAA6B,MAAM,EAAE,kBAAkB,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EAE1E;IAED,MAAM,gEAUL;CACF"}
@@ -1,6 +1,6 @@
1
1
  import { createMiddleware } from "hono/factory";
2
2
  import { HTTPException } from "hono/http-exception";
3
- import { FileUploaderError, FileUploaderMiddleware, } from "./file-uploader.middleware";
3
+ import { FileUploaderMiddleware } from "./file-uploader.middleware";
4
4
  export class FileUploaderHonoMiddleware {
5
5
  config;
6
6
  middleware;
@@ -13,18 +13,9 @@ export class FileUploaderHonoMiddleware {
13
13
  const body = await context.req.raw.clone().formData();
14
14
  const file = body.get(this.config.field);
15
15
  const result = this.middleware.validate(file instanceof File ? file : null);
16
- if (result.valid)
17
- return next();
18
- switch (result.error) {
19
- case FileUploaderError.MissingFile:
20
- throw new HTTPException(400, { message: FileUploaderError.MissingFile });
21
- case FileUploaderError.EmptyFile:
22
- throw new HTTPException(400, { message: FileUploaderError.EmptyFile });
23
- case FileUploaderError.SizeLimit:
24
- throw new HTTPException(400, { message: FileUploaderError.SizeLimit });
25
- case FileUploaderError.InvalidMime:
26
- throw new HTTPException(400, { message: FileUploaderError.InvalidMime });
27
- }
16
+ if (result.valid === false)
17
+ throw new HTTPException(400, { message: result.error });
18
+ return next();
28
19
  });
29
20
  }
30
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"file-uploader-hono.middleware.js","sourceRoot":"","sources":["../src/file-uploader-hono.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAEL,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,OAAO,0BAA0B;IAGR,MAAM;IAFlB,UAAU,CAAyB;IAEpD,YAA6B,MAA8C;sBAA9C,MAAM;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,MAAM;QACJ,OAAO,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;YAC9C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC;YACtD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEzC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAE5E,IAAI,MAAM,CAAC,KAAK;gBAAE,OAAO,IAAI,EAAE,CAAC;YAEhC,QAAQ,MAAM,CAAC,KAAK,EAAE,CAAC;gBACrB,KAAK,iBAAiB,CAAC,WAAW;oBAChC,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC3E,KAAK,iBAAiB,CAAC,SAAS;oBAC9B,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,iBAAiB,CAAC,SAAS,EAAE,CAAC,CAAC;gBACzE,KAAK,iBAAiB,CAAC,SAAS;oBAC9B,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,iBAAiB,CAAC,SAAS,EAAE,CAAC,CAAC;gBACzE,KAAK,iBAAiB,CAAC,WAAW;oBAChC,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"file-uploader-hono.middleware.js","sourceRoot":"","sources":["../src/file-uploader-hono.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAA2B,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAG7F,MAAM,OAAO,0BAA0B;IAGR,MAAM;IAFlB,UAAU,CAAyB;IAEpD,YAA6B,MAA8C;sBAA9C,MAAM;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,MAAM;QACJ,OAAO,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;YAC9C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC;YACtD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEzC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAE5E,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK;gBAAE,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACpF,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-uploader.middleware.d.ts","sourceRoot":"","sources":["../src/file-uploader.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,MAAM,MAAM,kBAAkB,GAAG;IAAE,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAA;CAAE,CAAC;AAE3F,eAAO,MAAM,iBAAiB;aAC5B,WAAW,EAAE,4BAA4B;aACzC,SAAS,EAAE,0BAA0B;aACrC,WAAW,EAAE,4BAA4B;aACzC,SAAS,EAAE,0BAA0B;CAC7B,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE7F,MAAM,MAAM,oBAAoB,GAAG;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAElG,qBAAa,sBAAsB;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAnC,YAA6B,MAAM,EAAE,kBAAkB,EAAI;IAE3D,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,oBAAoB,CAchD;CACF"}
1
+ {"version":3,"file":"file-uploader.middleware.d.ts","sourceRoot":"","sources":["../src/file-uploader.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,MAAM,MAAM,kBAAkB,GAAG;IAAE,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAA;CAAE,CAAC;AAE3F,eAAO,MAAM,iBAAiB;aAC5B,WAAW,EAAE,4BAA4B;aACzC,SAAS,EAAE,0BAA0B;aACrC,WAAW,EAAE,4BAA4B;aACzC,SAAS,EAAE,0BAA0B;CAC7B,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE7F,MAAM,MAAM,oBAAoB,GAAG;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAElG,qBAAa,sBAAsB;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAnC,YAA6B,MAAM,EAAE,kBAAkB,EAAI;IAE3D,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,oBAAoB,CAehD;CACF"}
@@ -18,6 +18,7 @@ export class FileUploaderMiddleware {
18
18
  const size = tools.Size.fromBytes(file.size);
19
19
  if (size.isGreaterThan(this.config.maxSize))
20
20
  return { valid: false, error: FileUploaderError.SizeLimit };
21
+ // TODO: MIME spoofing possible by reading client-supplied file.type
21
22
  const mime = tools.Mime.fromString(file.type);
22
23
  if (!this.config.MimeRegistry.hasMime(mime)) {
23
24
  return { valid: false, error: FileUploaderError.InvalidMime };
@@ -1 +1 @@
1
- {"version":3,"file":"file-uploader.middleware.js","sourceRoot":"","sources":["../src/file-uploader.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,WAAW,EAAE,4BAA4B;IACzC,SAAS,EAAE,0BAA0B;IACrC,WAAW,EAAE,4BAA4B;IACzC,SAAS,EAAE,0BAA0B;CAC7B,CAAC;AAMX,MAAM,OAAO,sBAAsB;IACJ,MAAM;IAAnC,YAA6B,MAA0B;sBAA1B,MAAM;IAAuB,CAAC;IAE3D,QAAQ,CAAC,IAAiB;QACxB,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,CAAC,WAAW,EAAE,CAAC;QACzE,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,CAAC,SAAS,EAAE,CAAC;QAEjF,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,CAAC,SAAS,EAAE,CAAC;QAEzG,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,CAAC,WAAW,EAAE,CAAC;QAChE,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"file-uploader.middleware.js","sourceRoot":"","sources":["../src/file-uploader.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,WAAW,EAAE,4BAA4B;IACzC,SAAS,EAAE,0BAA0B;IACrC,WAAW,EAAE,4BAA4B;IACzC,SAAS,EAAE,0BAA0B;CAC7B,CAAC;AAMX,MAAM,OAAO,sBAAsB;IACJ,MAAM;IAAnC,YAA6B,MAA0B;sBAA1B,MAAM;IAAuB,CAAC;IAE3D,QAAQ,CAAC,IAAiB;QACxB,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,CAAC,WAAW,EAAE,CAAC;QACzE,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,CAAC,SAAS,EAAE,CAAC;QAEjF,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,CAAC,SAAS,EAAE,CAAC;QAEzG,oEAAoE;QACpE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,CAAC,WAAW,EAAE,CAAC;QAChE,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;CACF"}
@@ -1,16 +1,20 @@
1
1
  import type { LoggerPort } from "./logger.port";
2
- type ServerType = ReturnType<typeof Bun.serve>;
2
+ export type ServerType = ReturnType<typeof Bun.serve>;
3
3
  type Dependencies = {
4
4
  Logger: LoggerPort;
5
5
  };
6
+ type Config = {
7
+ cleanup: () => Promise<void> | void;
8
+ exit?: (code: number) => never;
9
+ };
6
10
  export declare class GracefulShutdown {
7
11
  private readonly deps;
8
- private readonly exitFn;
12
+ private readonly config;
9
13
  private readonly base;
10
14
  private isShuttingDown;
11
- constructor(deps: Dependencies, exitFn?: (code: number) => never);
15
+ constructor(deps: Dependencies, config?: Config);
12
16
  private shutdown;
13
- applyTo(server: ServerType, cleanup?: () => any): void;
17
+ applyTo(server: ServerType): void;
14
18
  }
15
19
  export {};
16
20
  //# sourceMappingURL=graceful-shutdown.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graceful-shutdown.service.d.ts","sourceRoot":"","sources":["../src/graceful-shutdown.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AAE/C,KAAK,YAAY,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAE3C,qBAAa,gBAAgB;IAKzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0D;IAC/E,OAAO,CAAC,cAAc,CAAS;IAE/B,YACmB,IAAI,EAAE,YAAY,EAClB,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAA4C,EACrF;IAEJ,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,MAAM,GAAgB,QAoB1D;CACF"}
1
+ {"version":3,"file":"graceful-shutdown.service.d.ts","sourceRoot":"","sources":["../src/graceful-shutdown.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AAEtD,KAAK,YAAY,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAC3C,KAAK,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAA;CAAE,CAAC;AAEtF,qBAAa,gBAAgB;IAKzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0D;IAC/E,OAAO,CAAC,cAAc,CAAS;IAE/B,YACmB,IAAI,EAAE,YAAY,EAClB,MAAM,GAAE,MAAoD,EAC3E;YAEU,QAAQ;IAsBtB,OAAO,CAAC,MAAM,EAAE,UAAU,QAezB;CACF"}
@@ -1,14 +1,14 @@
1
1
  import * as tools from "@bgord/tools";
2
2
  export class GracefulShutdown {
3
3
  deps;
4
- exitFn;
4
+ config;
5
5
  base = { operation: "shutdown", component: "infra" };
6
6
  isShuttingDown = false;
7
- constructor(deps, exitFn = (code) => process.exit(code)) {
7
+ constructor(deps, config = { cleanup: tools.noop, exit: process.exit }) {
8
8
  this.deps = deps;
9
- this.exitFn = exitFn;
9
+ this.config = config;
10
10
  }
11
- shutdown(server, cleanup, exitCode) {
11
+ async shutdown(server, exitCode) {
12
12
  // Stryker disable all
13
13
  if (this.isShuttingDown)
14
14
  return;
@@ -20,29 +20,30 @@ export class GracefulShutdown {
20
20
  catch (error) {
21
21
  this.deps.Logger.error({ message: "Server stop failed", error, ...this.base });
22
22
  }
23
- Promise.resolve()
24
- .then(() => cleanup())
25
- .then(() => this.deps.Logger.info({ message: "HTTP server closed", ...this.base }))
26
- .catch((error) => this.deps.Logger.error({ message: "Cleanup hook failed", error, ...this.base }))
27
- .finally(() => this.exitFn(exitCode));
23
+ try {
24
+ await this.config.cleanup();
25
+ this.deps.Logger.info({ message: "HTTP server closed", ...this.base });
26
+ }
27
+ catch (error) {
28
+ this.deps.Logger.error({ message: "Cleanup hook failed", error, ...this.base });
29
+ }
30
+ finally {
31
+ this.config.exit?.(exitCode);
32
+ }
28
33
  }
29
- applyTo(server, cleanup = tools.noop) {
30
- process.once("SIGTERM", () => {
31
- this.deps.Logger.info({ message: "SIGTERM received", ...this.base });
32
- this.shutdown(server, cleanup, 0);
33
- });
34
- process.once("SIGINT", () => {
35
- this.deps.Logger.info({ message: "SIGINT received", ...this.base });
36
- this.shutdown(server, cleanup, 0);
37
- });
38
- process.once("unhandledRejection", (error) => {
39
- this.deps.Logger.error({ message: "UnhandledRejection received", error, ...this.base });
40
- this.shutdown(server, cleanup, 1);
41
- });
42
- process.once("uncaughtException", (error) => {
43
- this.deps.Logger.error({ message: "UncaughtException received", error, ...this.base });
44
- this.shutdown(server, cleanup, 1);
45
- });
34
+ applyTo(server) {
35
+ const graceful = (signal) => () => {
36
+ this.deps.Logger.info({ message: `${signal} received`, ...this.base });
37
+ this.shutdown(server, 0);
38
+ };
39
+ const fatal = (event) => (error) => {
40
+ this.deps.Logger.error({ message: `${event} received`, error, ...this.base });
41
+ this.shutdown(server, 1);
42
+ };
43
+ process.once("SIGTERM", graceful("SIGTERM"));
44
+ process.once("SIGINT", graceful("SIGINT"));
45
+ process.once("unhandledRejection", fatal("UnhandledRejection"));
46
+ process.once("uncaughtException", fatal("UncaughtException"));
46
47
  }
47
48
  }
48
49
  //# sourceMappingURL=graceful-shutdown.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"graceful-shutdown.service.js","sourceRoot":"","sources":["../src/graceful-shutdown.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graceful-shutdown.service.js","sourceRoot":"","sources":["../src/graceful-shutdown.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAQtC,MAAM,OAAO,gBAAgB;IAKR,IAAI;IACJ,MAAM;IALR,IAAI,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAW,CAAC;IACvE,cAAc,GAAG,KAAK,CAAC;IAE/B,YACmB,IAAkB,EAClB,MAAM,GAAW,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;oBAD5D,IAAI;sBACJ,MAAM;IACtB,CAAC;IAEI,KAAK,CAAC,QAAQ,CAAC,MAAkB,EAAE,QAAgB;QACzD,sBAAsB;QACtB,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO;QAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,sBAAsB;QAEtB,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAClF,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,MAAkB;QACxB,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,GAAG,EAAE;YACxC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACvE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,KAAc,EAAE,EAAE;YAClD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAChE,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ import * as v from "valibot";
2
+ export declare const HostnameError: {
3
+ Type: string;
4
+ Invalid: string;
5
+ };
6
+ export declare const Hostname: v.SchemaWithPipe<readonly [v.StringSchema<string>, v.DomainAction<string, string>, v.BrandAction<string, "Hostname">]>;
7
+ export type HostnameType = v.InferOutput<typeof Hostname>;
8
+ //# sourceMappingURL=hostname.vo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostname.vo.d.ts","sourceRoot":"","sources":["../src/hostname.vo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAE7B,eAAO,MAAM,aAAa;IACxB,IAAI;IACJ,OAAO;CACR,CAAC;AAEF,eAAO,MAAM,QAAQ,wHAKpB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import * as v from "valibot";
2
+ export const HostnameError = {
3
+ Type: "hostname.type",
4
+ Invalid: "hostname.invalid",
5
+ };
6
+ export const Hostname = v.pipe(v.string(HostnameError.Type), v.domain(HostnameError.Invalid),
7
+ // Stryker disable next-line StringLiteral
8
+ v.brand("Hostname"));
9
+ //# sourceMappingURL=hostname.vo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostname.vo.js","sourceRoot":"","sources":["../src/hostname.vo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAE7B,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,kBAAkB;CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAC5B,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAC5B,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;AAC/B,0CAA0C;AAC1C,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CACpB,CAAC"}
@@ -29,7 +29,7 @@ export class HttpLoggerMiddleware {
29
29
  this.config = config;
30
30
  }
31
31
  shouldSkip(context) {
32
- if (context.request.header("accept") === "text/event-stream")
32
+ if (context.request.header("accept")?.toLowerCase().startsWith("text/event-stream"))
33
33
  return true;
34
34
  return (this.config?.skip?.some((rule) => {
35
35
  if (rule instanceof URLPattern)
@@ -1 +1 @@
1
- {"version":3,"file":"http-logger.middleware.js","sourceRoot":"","sources":["../src/http-logger.middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-logger.middleware.js","sourceRoot":"","sources":["../src/http-logger.middleware.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,11 @@ import type * as tools from "@bgord/tools";
2
2
  import type { FileRenamerPort } from "./file-renamer.port";
3
3
  import type { FileWriterPort } from "./file-writer.port";
4
4
  import type { ImageBlurPort, ImageBlurStrategy } from "./image-blur.port";
5
+ import type { NonceProviderPort } from "./nonce-provider.port";
5
6
  type Dependencies = {
6
7
  FileRenamer: FileRenamerPort;
7
8
  FileWriter: FileWriterPort;
9
+ NonceProvider: NonceProviderPort;
8
10
  };
9
11
  export declare class ImageBlurAdapter implements ImageBlurPort {
10
12
  private readonly deps;
@@ -1 +1 @@
1
- {"version":3,"file":"image-blur.adapter.d.ts","sourceRoot":"","sources":["../src/image-blur.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,KAAK,YAAY,GAAG;IAAE,WAAW,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,cAAc,CAAA;CAAE,CAAC;AAEjF,qBAAa,gBAAiB,YAAW,aAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,YAAY,EAAI;IAE7C,IAAI,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAgB9F;CACF"}
1
+ {"version":3,"file":"image-blur.adapter.d.ts","sourceRoot":"","sources":["../src/image-blur.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,KAAK,YAAY,GAAG;IAClB,WAAW,EAAE,eAAe,CAAC;IAC7B,UAAU,EAAE,cAAc,CAAC;IAC3B,aAAa,EAAE,iBAAiB,CAAC;CAClC,CAAC;AAEF,qBAAa,gBAAiB,YAAW,aAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,YAAY,EAAI;IAE7C,IAAI,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAkB9F;CACF"}
@@ -6,7 +6,7 @@ export class ImageBlurAdapter {
6
6
  async blur(recipe) {
7
7
  const final = recipe.strategy === "output_path" ? recipe.output : recipe.input;
8
8
  const filename = final.getFilename();
9
- const temporary = final.withFilename(filename.withSuffix("-blurred"));
9
+ const temporary = final.withFilename(filename.withSuffix(`-blurred-${this.deps.NonceProvider.generate()}`));
10
10
  const extension = final.getFilename().getExtension();
11
11
  const format = (extension === "jpg" ? "jpeg" : extension);
12
12
  const blurred = await Bun.file(recipe.input.get()).image()[format]().placeholder();
@@ -1 +1 @@
1
- {"version":3,"file":"image-blur.adapter.js","sourceRoot":"","sources":["../src/image-blur.adapter.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,gBAAgB;IACE,IAAI;IAAjC,YAA6B,IAAkB;oBAAlB,IAAI;IAAiB,CAAC;IAEnD,KAAK,CAAC,IAAI,CAAC,MAAyB;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAE/E,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;QAEtE,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAuB,CAAC;QAEhF,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QACnF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAEjF,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAErD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"image-blur.adapter.js","sourceRoot":"","sources":["../src/image-blur.adapter.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,gBAAgB;IACE,IAAI;IAAjC,YAA6B,IAAkB;oBAAlB,IAAI;IAAiB,CAAC;IAEnD,KAAK,CAAC,IAAI,CAAC,MAAyB;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAE/E,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAClC,QAAQ,CAAC,UAAU,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CACtE,CAAC;QAEF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAuB,CAAC;QAEhF,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QACnF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAEjF,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAErD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -2,9 +2,11 @@ import type * as tools from "@bgord/tools";
2
2
  import type { FileRenamerPort } from "./file-renamer.port";
3
3
  import type { FileWriterPort } from "./file-writer.port";
4
4
  import type { ImageCompressorPort, ImageCompressorStrategy } from "./image-compressor.port";
5
+ import type { NonceProviderPort } from "./nonce-provider.port";
5
6
  type Dependencies = {
6
7
  FileRenamer: FileRenamerPort;
7
8
  FileWriter: FileWriterPort;
9
+ NonceProvider: NonceProviderPort;
8
10
  };
9
11
  export declare class ImageCompressorAdapter implements ImageCompressorPort {
10
12
  private readonly deps;
@@ -1 +1 @@
1
- {"version":3,"file":"image-compressor.adapter.d.ts","sourceRoot":"","sources":["../src/image-compressor.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAE5F,KAAK,YAAY,GAAG;IAAE,WAAW,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,cAAc,CAAA;CAAE,CAAC;AAEjF,qBAAa,sBAAuB,YAAW,mBAAmB;IAGpD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAM;IAE7C,YAA6B,IAAI,EAAE,YAAY,EAAI;IAE7C,QAAQ,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAgBxG;CACF"}
1
+ {"version":3,"file":"image-compressor.adapter.d.ts","sourceRoot":"","sources":["../src/image-compressor.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,KAAK,YAAY,GAAG;IAClB,WAAW,EAAE,eAAe,CAAC;IAC7B,UAAU,EAAE,cAAc,CAAC;IAC3B,aAAa,EAAE,iBAAiB,CAAC;CAClC,CAAC;AAEF,qBAAa,sBAAuB,YAAW,mBAAmB;IAGpD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAM;IAE7C,YAA6B,IAAI,EAAE,YAAY,EAAI;IAE7C,QAAQ,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAkBxG;CACF"}
@@ -8,7 +8,7 @@ export class ImageCompressorAdapter {
8
8
  const quality = recipe.quality ?? ImageCompressorAdapter.DEFAULT_QUALITY;
9
9
  const final = recipe.strategy === "output_path" ? recipe.output : recipe.input;
10
10
  const filename = final.getFilename();
11
- const temporary = final.withFilename(filename.withSuffix("-compressed"));
11
+ const temporary = final.withFilename(filename.withSuffix(`-compressed-${this.deps.NonceProvider.generate()}`));
12
12
  const extension = final.getFilename().getExtension();
13
13
  const format = (extension === "jpg" ? "jpeg" : extension);
14
14
  const compressed = await Bun.file(recipe.input.get()).image().rotate(0)[format]({ quality }).bytes();
@@ -1 +1 @@
1
- {"version":3,"file":"image-compressor.adapter.js","sourceRoot":"","sources":["../src/image-compressor.adapter.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,sBAAsB;IAGJ,IAAI;IAFzB,MAAM,CAAU,eAAe,GAAG,EAAE,CAAC;IAE7C,YAA6B,IAAkB;oBAAlB,IAAI;IAAiB,CAAC;IAEnD,KAAK,CAAC,QAAQ,CAAC,MAA+B;QAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,sBAAsB,CAAC,eAAe,CAAC;QAEzE,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/E,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;QAEzE,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAuB,CAAC;QAEhF,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAErG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QAC9D,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAErD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"image-compressor.adapter.js","sourceRoot":"","sources":["../src/image-compressor.adapter.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,sBAAsB;IAGJ,IAAI;IAFzB,MAAM,CAAU,eAAe,GAAG,EAAE,CAAC;IAE7C,YAA6B,IAAkB;oBAAlB,IAAI;IAAiB,CAAC;IAEnD,KAAK,CAAC,QAAQ,CAAC,MAA+B;QAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,sBAAsB,CAAC,eAAe,CAAC;QAEzE,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/E,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAClC,QAAQ,CAAC,UAAU,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CACzE,CAAC;QAEF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAuB,CAAC;QAEhF,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAErG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QAC9D,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAErD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -2,9 +2,11 @@ import type * as tools from "@bgord/tools";
2
2
  import type { FileRenamerPort } from "./file-renamer.port";
3
3
  import type { FileWriterPort } from "./file-writer.port";
4
4
  import type { ImageExifClearPort, ImageExifClearStrategy } from "./image-exif-clear.port";
5
+ import type { NonceProviderPort } from "./nonce-provider.port";
5
6
  type Dependencies = {
6
7
  FileRenamer: FileRenamerPort;
7
8
  FileWriter: FileWriterPort;
9
+ NonceProvider: NonceProviderPort;
8
10
  };
9
11
  export declare class ImageExifClearAdapter implements ImageExifClearPort {
10
12
  private readonly deps;
@@ -1 +1 @@
1
- {"version":3,"file":"image-exif-clear.adapter.d.ts","sourceRoot":"","sources":["../src/image-exif-clear.adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAE1F,KAAK,YAAY,GAAG;IAAE,WAAW,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,cAAc,CAAA;CAAE,CAAC;AAEjF,qBAAa,qBAAsB,YAAW,kBAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,YAAY,EAAI;IAE7C,KAAK,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAapG;CACF"}
1
+ {"version":3,"file":"image-exif-clear.adapter.d.ts","sourceRoot":"","sources":["../src/image-exif-clear.adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,KAAK,YAAY,GAAG;IAClB,WAAW,EAAE,eAAe,CAAC;IAC7B,UAAU,EAAE,cAAc,CAAC;IAC3B,aAAa,EAAE,iBAAiB,CAAC;CAClC,CAAC;AAEF,qBAAa,qBAAsB,YAAW,kBAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,YAAY,EAAI;IAE7C,KAAK,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAepG;CACF"}
@@ -5,7 +5,7 @@ export class ImageExifClearAdapter {
5
5
  }
6
6
  async clear(recipe) {
7
7
  const final = recipe.strategy === "output_path" ? recipe.output : recipe.input;
8
- const temporary = final.withFilename(final.getFilename().withSuffix("-exif-cleared"));
8
+ const temporary = final.withFilename(final.getFilename().withSuffix(`-exif-cleared-${this.deps.NonceProvider.generate()}`));
9
9
  const extension = final.getFilename().getExtension();
10
10
  const format = (extension === "jpg" ? "jpeg" : extension);
11
11
  const cleared = await Bun.file(recipe.input.get()).image().rotate(0)[format]().bytes();
@@ -1 +1 @@
1
- {"version":3,"file":"image-exif-clear.adapter.js","sourceRoot":"","sources":["../src/image-exif-clear.adapter.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,qBAAqB;IACH,IAAI;IAAjC,YAA6B,IAAkB;oBAAlB,IAAI;IAAiB,CAAC;IAEnD,KAAK,CAAC,KAAK,CAAC,MAA8B;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/E,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;QAEtF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAuB,CAAC;QAEhF,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAEvF,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3D,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAErD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"image-exif-clear.adapter.js","sourceRoot":"","sources":["../src/image-exif-clear.adapter.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,qBAAqB;IACH,IAAI;IAAjC,YAA6B,IAAkB;oBAAlB,IAAI;IAAiB,CAAC;IAEnD,KAAK,CAAC,KAAK,CAAC,MAA8B;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/E,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAClC,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CACtF,CAAC;QAEF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAuB,CAAC;QAEhF,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAEvF,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3D,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAErD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -3,10 +3,12 @@ import type { FileCleanerPort } from "./file-cleaner.port";
3
3
  import type { FileRenamerPort } from "./file-renamer.port";
4
4
  import type { FileWriterPort } from "./file-writer.port";
5
5
  import type { ImageFormatterPort, ImageFormatterStrategy } from "./image-formatter.port";
6
+ import type { NonceProviderPort } from "./nonce-provider.port";
6
7
  type Dependencies = {
7
8
  FileCleaner: FileCleanerPort;
8
9
  FileRenamer: FileRenamerPort;
9
10
  FileWriter: FileWriterPort;
11
+ NonceProvider: NonceProviderPort;
10
12
  };
11
13
  export declare class ImageFormatterAdapter implements ImageFormatterPort {
12
14
  private readonly deps;
@@ -1 +1 @@
1
- {"version":3,"file":"image-formatter.adapter.d.ts","sourceRoot":"","sources":["../src/image-formatter.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEzF,KAAK,YAAY,GAAG;IAClB,WAAW,EAAE,eAAe,CAAC;IAC7B,WAAW,EAAE,eAAe,CAAC;IAC7B,UAAU,EAAE,cAAc,CAAC;CAC5B,CAAC;AAEF,qBAAa,qBAAsB,YAAW,kBAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,YAAY,EAAI;IAE7C,MAAM,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAqBrG;CACF"}
1
+ {"version":3,"file":"image-formatter.adapter.d.ts","sourceRoot":"","sources":["../src/image-formatter.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,KAAK,YAAY,GAAG;IAClB,WAAW,EAAE,eAAe,CAAC;IAC7B,WAAW,EAAE,eAAe,CAAC;IAC7B,UAAU,EAAE,cAAc,CAAC;IAC3B,aAAa,EAAE,iBAAiB,CAAC;CAClC,CAAC;AAEF,qBAAa,qBAAsB,YAAW,kBAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,YAAY,EAAI;IAE7C,MAAM,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAuBrG;CACF"}
@@ -7,7 +7,7 @@ export class ImageFormatterAdapter {
7
7
  const final = recipe.strategy === "output_path"
8
8
  ? recipe.output
9
9
  : recipe.input.withFilename(recipe.input.getFilename().withExtension(recipe.to));
10
- const temporary = final.withFilename(final.getFilename().withSuffix("-formatted"));
10
+ const temporary = final.withFilename(final.getFilename().withSuffix(`-formatted-${this.deps.NonceProvider.generate()}`));
11
11
  const extension = final.getFilename().getExtension();
12
12
  const format = (extension === "jpg" ? "jpeg" : extension);
13
13
  const bytes = await Bun.file(recipe.input.get()).image().rotate(0)[format]().bytes();
@@ -1 +1 @@
1
- {"version":3,"file":"image-formatter.adapter.js","sourceRoot":"","sources":["../src/image-formatter.adapter.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,qBAAqB;IACH,IAAI;IAAjC,YAA6B,IAAkB;oBAAlB,IAAI;IAAiB,CAAC;IAEnD,KAAK,CAAC,MAAM,CAAC,MAA8B;QACzC,MAAM,KAAK,GACT,MAAM,CAAC,QAAQ,KAAK,aAAa;YAC/B,CAAC,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAErF,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QAEnF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAuB,CAAC;QAEhF,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAErF,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAErD,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;YACzE,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"image-formatter.adapter.js","sourceRoot":"","sources":["../src/image-formatter.adapter.ts"],"names":[],"mappings":"AAeA,MAAM,OAAO,qBAAqB;IACH,IAAI;IAAjC,YAA6B,IAAkB;oBAAlB,IAAI;IAAiB,CAAC;IAEnD,KAAK,CAAC,MAAM,CAAC,MAA8B;QACzC,MAAM,KAAK,GACT,MAAM,CAAC,QAAQ,KAAK,aAAa;YAC/B,CAAC,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAErF,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAClC,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CACnF,CAAC;QAEF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAuB,CAAC;QAEhF,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAErF,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAErD,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;YACzE,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"image-generator-web-view.adapter.d.ts","sourceRoot":"","sources":["../src/image-generator-web-view.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAEhC,qBAAa,4BAA6B,YAAW,kBAAkB;IAC/D,QAAQ,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAW7E;CACF"}
1
+ {"version":3,"file":"image-generator-web-view.adapter.d.ts","sourceRoot":"","sources":["../src/image-generator-web-view.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAEhC,qBAAa,4BAA6B,YAAW,kBAAkB;IAC/D,QAAQ,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAY7E;CACF"}
@@ -55,6 +55,7 @@ export class ImageGeneratorWebViewAdapter {
55
55
  const env_1 = { stack: [], error: void 0, hasError: false };
56
56
  try {
57
57
  const view = __addDisposableResource(env_1, new Bun.WebView(config), true);
58
+ // TODO: Potential XSS risk
58
59
  await view.navigate(`data:text/html;charset=utf-8,${encodeURIComponent(config.template)}`);
59
60
  const image = await view.screenshot({
60
61
  encoding: "buffer",
@@ -1 +1 @@
1
- {"version":3,"file":"image-generator-web-view.adapter.js","sourceRoot":"","sources":["../src/image-generator-web-view.adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,OAAO,4BAA4B;IACvC,KAAK,CAAC,QAAQ,CAAC,MAA4B;;;YACzC,MAAY,IAAI,kCAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAA,CAAC;YAE3C,MAAM,IAAI,CAAC,QAAQ,CAAC,gCAAgC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAE3F,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;gBAClC,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAkC;aACvE,CAAC,CAAC;YAEH,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;;;;;;;;;;;IAC/B,CAAC;CACF"}
1
+ {"version":3,"file":"image-generator-web-view.adapter.js","sourceRoot":"","sources":["../src/image-generator-web-view.adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,OAAO,4BAA4B;IACvC,KAAK,CAAC,QAAQ,CAAC,MAA4B;;;YACzC,MAAY,IAAI,kCAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAA,CAAC;YAE3C,2BAA2B;YAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,gCAAgC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAE3F,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;gBAClC,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAkC;aACvE,CAAC,CAAC;YAEH,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;;;;;;;;;;;IAC/B,CAAC;CACF"}
@@ -2,9 +2,11 @@ import type * as tools from "@bgord/tools";
2
2
  import type { FileRenamerPort } from "./file-renamer.port";
3
3
  import type { FileWriterPort } from "./file-writer.port";
4
4
  import type { ImageGrayscalePort, ImageGrayscaleStrategy } from "./image-grayscale.port";
5
+ import type { NonceProviderPort } from "./nonce-provider.port";
5
6
  type Dependencies = {
6
7
  FileRenamer: FileRenamerPort;
7
8
  FileWriter: FileWriterPort;
9
+ NonceProvider: NonceProviderPort;
8
10
  };
9
11
  export declare class ImageGrayscaleAdapter implements ImageGrayscalePort {
10
12
  private readonly deps;
@@ -1 +1 @@
1
- {"version":3,"file":"image-grayscale.adapter.d.ts","sourceRoot":"","sources":["../src/image-grayscale.adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEzF,KAAK,YAAY,GAAG;IAAE,WAAW,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,cAAc,CAAA;CAAE,CAAC;AAEjF,qBAAa,qBAAsB,YAAW,kBAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,YAAY,EAAI;IAE7C,SAAS,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAoBxG;CACF"}
1
+ {"version":3,"file":"image-grayscale.adapter.d.ts","sourceRoot":"","sources":["../src/image-grayscale.adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,KAAK,YAAY,GAAG;IAClB,WAAW,EAAE,eAAe,CAAC;IAC7B,UAAU,EAAE,cAAc,CAAC;IAC3B,aAAa,EAAE,iBAAiB,CAAC;CAClC,CAAC;AAEF,qBAAa,qBAAsB,YAAW,kBAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,YAAY,EAAI;IAE7C,SAAS,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAsBxG;CACF"}
@@ -6,7 +6,7 @@ export class ImageGrayscaleAdapter {
6
6
  async grayscale(recipe) {
7
7
  const final = recipe.strategy === "output_path" ? recipe.output : recipe.input;
8
8
  const filename = final.getFilename();
9
- const temporary = final.withFilename(filename.withSuffix("-grayscale"));
9
+ const temporary = final.withFilename(filename.withSuffix(`-grayscale-${this.deps.NonceProvider.generate()}`));
10
10
  const extension = final.getFilename().getExtension();
11
11
  const format = (extension === "jpg" ? "jpeg" : extension);
12
12
  const grayscaled = await Bun.file(recipe.input.get())
@@ -1 +1 @@
1
- {"version":3,"file":"image-grayscale.adapter.js","sourceRoot":"","sources":["../src/image-grayscale.adapter.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,qBAAqB;IACH,IAAI;IAAjC,YAA6B,IAAkB;oBAAlB,IAAI;IAAiB,CAAC;IAEnD,KAAK,CAAC,SAAS,CAAC,MAA8B;QAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAE/E,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QAExE,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAuB,CAAC;QAEhF,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;aAClD,KAAK,EAAE;aACP,MAAM,CAAC,CAAC,CAAC;aACT,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC3B,MAAM,CAAC,EAAE;aACT,KAAK,EAAE,CAAC;QAEX,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QAC9D,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAErD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"image-grayscale.adapter.js","sourceRoot":"","sources":["../src/image-grayscale.adapter.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,qBAAqB;IACH,IAAI;IAAjC,YAA6B,IAAkB;oBAAlB,IAAI;IAAiB,CAAC;IAEnD,KAAK,CAAC,SAAS,CAAC,MAA8B;QAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAE/E,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAClC,QAAQ,CAAC,UAAU,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CACxE,CAAC;QAEF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAuB,CAAC;QAEhF,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;aAClD,KAAK,EAAE;aACP,MAAM,CAAC,CAAC,CAAC;aACT,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC3B,MAAM,CAAC,EAAE;aACT,KAAK,EAAE,CAAC;QAEX,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QAC9D,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAErD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -3,10 +3,12 @@ import type { FileCleanerPort } from "./file-cleaner.port";
3
3
  import type { FileRenamerPort } from "./file-renamer.port";
4
4
  import type { FileWriterPort } from "./file-writer.port";
5
5
  import type { ImageProcessorPort, ImageProcessorStrategy } from "./image-processor.port";
6
+ import type { NonceProviderPort } from "./nonce-provider.port";
6
7
  type Dependencies = {
7
8
  FileCleaner: FileCleanerPort;
8
9
  FileRenamer: FileRenamerPort;
9
10
  FileWriter: FileWriterPort;
11
+ NonceProvider: NonceProviderPort;
10
12
  };
11
13
  export declare class ImageProcessorAdapter implements ImageProcessorPort {
12
14
  private readonly deps;
@@ -1 +1 @@
1
- {"version":3,"file":"image-processor.adapter.d.ts","sourceRoot":"","sources":["../src/image-processor.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEzF,KAAK,YAAY,GAAG;IAClB,WAAW,EAAE,eAAe,CAAC;IAC7B,WAAW,EAAE,eAAe,CAAC;IAC7B,UAAU,EAAE,cAAc,CAAC;CAC5B,CAAC;AAEF,qBAAa,qBAAsB,YAAW,kBAAkB;IAGlD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAM;IAE7C,YAA6B,IAAI,EAAE,YAAY,EAAI;IAE7C,OAAO,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CA0BtG;CACF"}
1
+ {"version":3,"file":"image-processor.adapter.d.ts","sourceRoot":"","sources":["../src/image-processor.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,KAAK,YAAY,GAAG;IAClB,WAAW,EAAE,eAAe,CAAC;IAC7B,WAAW,EAAE,eAAe,CAAC;IAC7B,UAAU,EAAE,cAAc,CAAC;IAC3B,aAAa,EAAE,iBAAiB,CAAC;CAClC,CAAC;AAEF,qBAAa,qBAAsB,YAAW,kBAAkB;IAGlD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAM;IAE7C,YAA6B,IAAI,EAAE,YAAY,EAAI;IAE7C,OAAO,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CA4BtG;CACF"}
@@ -8,7 +8,7 @@ export class ImageProcessorAdapter {
8
8
  const final = recipe.strategy === "output_path"
9
9
  ? recipe.output
10
10
  : recipe.input.withFilename(recipe.input.getFilename().withExtension(recipe.to));
11
- const temporary = final.withFilename(final.getFilename().withSuffix("-processed"));
11
+ const temporary = final.withFilename(final.getFilename().withSuffix(`-processed-${this.deps.NonceProvider.generate()}`));
12
12
  const extension = final.getFilename().getExtension();
13
13
  const format = (extension === "jpg" ? "jpeg" : extension);
14
14
  const quality = recipe.quality ?? ImageProcessorAdapter.DEFAULT_QUALITY;
@@ -1 +1 @@
1
- {"version":3,"file":"image-processor.adapter.js","sourceRoot":"","sources":["../src/image-processor.adapter.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,qBAAqB;IAGH,IAAI;IAFzB,MAAM,CAAU,eAAe,GAAG,EAAE,CAAC;IAE7C,YAA6B,IAAkB;oBAAlB,IAAI;IAAiB,CAAC;IAEnD,KAAK,CAAC,OAAO,CAAC,MAA8B;QAC1C,MAAM,KAAK,GACT,MAAM,CAAC,QAAQ,KAAK,aAAa;YAC/B,CAAC,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAErF,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QACnF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAuB,CAAC;QAChF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,qBAAqB,CAAC,eAAe,CAAC;QAExE,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;aACjD,KAAK,EAAE;aACP,MAAM,CAAC,CAAC,CAAC;aACT,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CACnF,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;aACpB,KAAK,EAAE,CAAC;QAEX,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAErD,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;YACzE,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"image-processor.adapter.js","sourceRoot":"","sources":["../src/image-processor.adapter.ts"],"names":[],"mappings":"AAeA,MAAM,OAAO,qBAAqB;IAGH,IAAI;IAFzB,MAAM,CAAU,eAAe,GAAG,EAAE,CAAC;IAE7C,YAA6B,IAAkB;oBAAlB,IAAI;IAAiB,CAAC;IAEnD,KAAK,CAAC,OAAO,CAAC,MAA8B;QAC1C,MAAM,KAAK,GACT,MAAM,CAAC,QAAQ,KAAK,aAAa;YAC/B,CAAC,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAErF,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAClC,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CACnF,CAAC;QACF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAuB,CAAC;QAChF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,qBAAqB,CAAC,eAAe,CAAC;QAExE,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;aACjD,KAAK,EAAE;aACP,MAAM,CAAC,CAAC,CAAC;aACT,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CACnF,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;aACpB,KAAK,EAAE,CAAC;QAEX,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAErD,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;YACzE,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -2,9 +2,11 @@ import type * as tools from "@bgord/tools";
2
2
  import type { FileRenamerPort } from "./file-renamer.port";
3
3
  import type { FileWriterPort } from "./file-writer.port";
4
4
  import type { ImageResizerPort, ImageResizerStrategy } from "./image-resizer.port";
5
+ import type { NonceProviderPort } from "./nonce-provider.port";
5
6
  type Dependencies = {
6
7
  FileWriter: FileWriterPort;
7
8
  FileRenamer: FileRenamerPort;
9
+ NonceProvider: NonceProviderPort;
8
10
  };
9
11
  export declare class ImageResizerAdapter implements ImageResizerPort {
10
12
  private readonly deps;
@@ -1 +1 @@
1
- {"version":3,"file":"image-resizer.adapter.d.ts","sourceRoot":"","sources":["../src/image-resizer.adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEnF,KAAK,YAAY,GAAG;IAAE,UAAU,EAAE,cAAc,CAAC;IAAC,WAAW,EAAE,eAAe,CAAA;CAAE,CAAC;AAEjF,qBAAa,mBAAoB,YAAW,gBAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,YAAY,EAAI;IAE7C,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAkBnG;CACF"}
1
+ {"version":3,"file":"image-resizer.adapter.d.ts","sourceRoot":"","sources":["../src/image-resizer.adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,KAAK,YAAY,GAAG;IAClB,UAAU,EAAE,cAAc,CAAC;IAC3B,WAAW,EAAE,eAAe,CAAC;IAC7B,aAAa,EAAE,iBAAiB,CAAC;CAClC,CAAC;AAEF,qBAAa,mBAAoB,YAAW,gBAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,YAAY,EAAI;IAE7C,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAoBnG;CACF"}