@kensio/yulin 1.10.2 → 1.10.4

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 (235) hide show
  1. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-config.d.ts +8 -17
  2. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-config.d.ts.map +1 -1
  3. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-config.js +24 -102
  4. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-config.js.map +1 -1
  5. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-cors-config.d.ts +13 -0
  6. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-cors-config.d.ts.map +1 -0
  7. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-cors-config.js +76 -0
  8. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-cors-config.js.map +1 -0
  9. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-custom-headers.d.ts +17 -0
  10. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-custom-headers.d.ts.map +1 -0
  11. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-custom-headers.js +45 -0
  12. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-custom-headers.js.map +1 -0
  13. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-field-reader.d.ts +37 -0
  14. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-field-reader.d.ts.map +1 -0
  15. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-field-reader.js +75 -0
  16. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-field-reader.js.map +1 -0
  17. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-security-headers.d.ts +11 -0
  18. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-security-headers.d.ts.map +1 -0
  19. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-security-headers.js +30 -0
  20. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-security-headers.js.map +1 -0
  21. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-security-values.d.ts +19 -0
  22. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-security-values.d.ts.map +1 -0
  23. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-security-values.js +72 -0
  24. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-security-values.js.map +1 -0
  25. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-server-timing.d.ts +13 -0
  26. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-server-timing.d.ts.map +1 -0
  27. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-server-timing.js +24 -0
  28. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-server-timing.js.map +1 -0
  29. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts +2 -0
  30. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts.map +1 -1
  31. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.js.map +1 -1
  32. package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.d.ts +2 -0
  33. package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.d.ts.map +1 -1
  34. package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.js.map +1 -1
  35. package/dist/service/cloudfront/controller/response-headers/sim-cf-response-headers-applicator.d.ts +1 -1
  36. package/dist/service/cloudfront/controller/response-headers/sim-cf-response-headers-applicator.d.ts.map +1 -1
  37. package/dist/service/cloudfront/controller/response-headers/sim-cf-response-headers-applicator.js +2 -2
  38. package/dist/service/cloudfront/controller/response-headers/sim-cf-response-headers-applicator.js.map +1 -1
  39. package/dist/service/cloudfront/controller/sim-cloudfront-controller.d.ts +1 -0
  40. package/dist/service/cloudfront/controller/sim-cloudfront-controller.d.ts.map +1 -1
  41. package/dist/service/cloudfront/controller/sim-cloudfront-controller.js +8 -1
  42. package/dist/service/cloudfront/controller/sim-cloudfront-controller.js.map +1 -1
  43. package/dist/service/cloudfront/controller/sim-cloudfront-error-response.d.ts +22 -0
  44. package/dist/service/cloudfront/controller/sim-cloudfront-error-response.d.ts.map +1 -0
  45. package/dist/service/cloudfront/controller/sim-cloudfront-error-response.js +31 -0
  46. package/dist/service/cloudfront/controller/sim-cloudfront-error-response.js.map +1 -0
  47. package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.d.ts.map +1 -1
  48. package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.js +1 -1
  49. package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.js.map +1 -1
  50. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.d.ts +9 -0
  51. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.d.ts.map +1 -0
  52. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.js +34 -0
  53. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.js.map +1 -0
  54. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.d.ts +29 -0
  55. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.d.ts.map +1 -0
  56. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.js +51 -0
  57. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.js.map +1 -0
  58. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.d.ts +2 -0
  59. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.d.ts.map +1 -1
  60. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.js +3 -1
  61. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.js.map +1 -1
  62. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.d.ts +3 -0
  63. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.d.ts.map +1 -1
  64. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.js +7 -32
  65. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.js.map +1 -1
  66. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.d.ts +14 -1
  67. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.d.ts.map +1 -1
  68. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.js +16 -1
  69. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.js.map +1 -1
  70. package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.d.ts +7 -3
  71. package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.d.ts.map +1 -1
  72. package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.js +6 -3
  73. package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.js.map +1 -1
  74. package/dist/service/cloudfront/error/sim-cloudfront.error.d.ts +11 -0
  75. package/dist/service/cloudfront/error/sim-cloudfront.error.d.ts.map +1 -1
  76. package/dist/service/cloudfront/error/sim-cloudfront.error.js +13 -0
  77. package/dist/service/cloudfront/error/sim-cloudfront.error.js.map +1 -1
  78. package/dist/service/cloudfront/origin/s3/sim-cf-s3-origin-responses.d.ts.map +1 -1
  79. package/dist/service/cloudfront/origin/s3/sim-cf-s3-origin-responses.js +7 -1
  80. package/dist/service/cloudfront/origin/s3/sim-cf-s3-origin-responses.js.map +1 -1
  81. package/dist/service/cloudfront/response-headers-policy/sim-cf-cors-origin-pattern.d.ts +27 -0
  82. package/dist/service/cloudfront/response-headers-policy/sim-cf-cors-origin-pattern.d.ts.map +1 -0
  83. package/dist/service/cloudfront/response-headers-policy/sim-cf-cors-origin-pattern.js +70 -0
  84. package/dist/service/cloudfront/response-headers-policy/sim-cf-cors-origin-pattern.js.map +1 -0
  85. package/dist/service/cloudfront/response-headers-policy/sim-cf-response-headers-policy-cors.d.ts +44 -0
  86. package/dist/service/cloudfront/response-headers-policy/sim-cf-response-headers-policy-cors.d.ts.map +1 -0
  87. package/dist/service/cloudfront/response-headers-policy/sim-cf-response-headers-policy-cors.js +111 -0
  88. package/dist/service/cloudfront/response-headers-policy/sim-cf-response-headers-policy-cors.js.map +1 -0
  89. package/dist/service/cloudfront/response-headers-policy/sim-cf-response-headers-policy.d.ts +10 -2
  90. package/dist/service/cloudfront/response-headers-policy/sim-cf-response-headers-policy.d.ts.map +1 -1
  91. package/dist/service/cloudfront/response-headers-policy/sim-cf-response-headers-policy.js +14 -2
  92. package/dist/service/cloudfront/response-headers-policy/sim-cf-response-headers-policy.js.map +1 -1
  93. package/dist/service/cloudfront/sim-cloudfront-commands.d.ts +3 -0
  94. package/dist/service/cloudfront/sim-cloudfront-commands.d.ts.map +1 -1
  95. package/dist/service/cloudfront/sim-cloudfront-commands.js +3 -0
  96. package/dist/service/cloudfront/sim-cloudfront-commands.js.map +1 -1
  97. package/dist/service/cloudfront/sim-cloudfront.d.ts.map +1 -1
  98. package/dist/service/cloudfront/sim-cloudfront.js +1 -0
  99. package/dist/service/cloudfront/sim-cloudfront.js.map +1 -1
  100. package/dist/service/rekognition/label/sim-rekognition-label-declaration.d.ts +1 -1
  101. package/dist/service/rekognition/moderation/sim-rekognition-moderation-taxonomy.d.ts +2 -2
  102. package/dist/service/rekognition/moderation/sim-rekognition-moderation-taxonomy.js +3 -3
  103. package/dist/service/rekognition/moderation/sim-rekognition-moderation-taxonomy.js.map +1 -1
  104. package/dist/service/rekognition/sim-rekognition.d.ts +4 -4
  105. package/dist/service/rekognition/sim-rekognition.js +4 -4
  106. package/dist/service/s3/bucket/sim-s3-bucket-access.d.ts +16 -0
  107. package/dist/service/s3/bucket/sim-s3-bucket-access.d.ts.map +1 -1
  108. package/dist/service/s3/bucket/sim-s3-bucket-access.js +22 -1
  109. package/dist/service/s3/bucket/sim-s3-bucket-access.js.map +1 -1
  110. package/dist/service/s3/command/get-object/get-object-loader.d.ts +2 -1
  111. package/dist/service/s3/command/get-object/get-object-loader.d.ts.map +1 -1
  112. package/dist/service/s3/command/get-object/get-object-loader.js +5 -1
  113. package/dist/service/s3/command/get-object/get-object-loader.js.map +1 -1
  114. package/dist/service/s3/command/get-object/get-object.command.d.ts +5 -0
  115. package/dist/service/s3/command/get-object/get-object.command.d.ts.map +1 -1
  116. package/dist/service/s3/command/list-objects/list-objects-page-builder.d.ts +3 -3
  117. package/dist/service/s3/command/list-objects/list-objects-page-builder.d.ts.map +1 -1
  118. package/dist/service/s3/command/list-objects/list-objects-page-builder.js +13 -17
  119. package/dist/service/s3/command/list-objects/list-objects-page-builder.js.map +1 -1
  120. package/dist/service/s3/command/list-objects/list-objects.command.d.ts +3 -8
  121. package/dist/service/s3/command/list-objects/list-objects.command.d.ts.map +1 -1
  122. package/dist/service/s3/command/list-objects/list-objects.handler.d.ts +3 -0
  123. package/dist/service/s3/command/list-objects/list-objects.handler.d.ts.map +1 -1
  124. package/dist/service/s3/command/list-objects/list-objects.handler.js +6 -2
  125. package/dist/service/s3/command/list-objects/list-objects.handler.js.map +1 -1
  126. package/dist/service/s3/command/list-objects-v2/list-objects-v2-continuation-token.d.ts +20 -0
  127. package/dist/service/s3/command/list-objects-v2/list-objects-v2-continuation-token.d.ts.map +1 -0
  128. package/dist/service/s3/command/list-objects-v2/list-objects-v2-continuation-token.js +29 -0
  129. package/dist/service/s3/command/list-objects-v2/list-objects-v2-continuation-token.js.map +1 -0
  130. package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.d.ts +31 -0
  131. package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.d.ts.map +1 -0
  132. package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.js +48 -0
  133. package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.js.map +1 -0
  134. package/dist/service/s3/command/list-objects-v2/list-objects-v2.command.d.ts +41 -0
  135. package/dist/service/s3/command/list-objects-v2/list-objects-v2.command.d.ts.map +1 -0
  136. package/dist/service/s3/command/list-objects-v2/list-objects-v2.command.js +2 -0
  137. package/dist/service/s3/command/list-objects-v2/list-objects-v2.command.js.map +1 -0
  138. package/dist/service/s3/command/list-objects-v2/list-objects-v2.handler.d.ts +41 -0
  139. package/dist/service/s3/command/list-objects-v2/list-objects-v2.handler.d.ts.map +1 -0
  140. package/dist/service/s3/command/list-objects-v2/list-objects-v2.handler.js +64 -0
  141. package/dist/service/s3/command/list-objects-v2/list-objects-v2.handler.js.map +1 -0
  142. package/dist/service/s3/command/object/sim-s3-object-commands.d.ts +8 -0
  143. package/dist/service/s3/command/object/sim-s3-object-commands.d.ts.map +1 -1
  144. package/dist/service/s3/command/object/sim-s3-object-commands.js +13 -0
  145. package/dist/service/s3/command/object/sim-s3-object-commands.js.map +1 -1
  146. package/dist/service/s3/command/put-object/put-object-builder.d.ts +10 -0
  147. package/dist/service/s3/command/put-object/put-object-builder.d.ts.map +1 -1
  148. package/dist/service/s3/command/put-object/put-object-builder.js +8 -0
  149. package/dist/service/s3/command/put-object/put-object-builder.js.map +1 -1
  150. package/dist/service/s3/command/put-object/put-object.command.d.ts +4 -0
  151. package/dist/service/s3/command/put-object/put-object.command.d.ts.map +1 -1
  152. package/dist/service/s3/command/put-object/put-object.handler.d.ts.map +1 -1
  153. package/dist/service/s3/command/put-object/put-object.handler.js +4 -1
  154. package/dist/service/s3/command/put-object/put-object.handler.js.map +1 -1
  155. package/dist/service/s3/command/sim-s3-bucket-command-state.d.ts +4 -1
  156. package/dist/service/s3/command/sim-s3-bucket-command-state.d.ts.map +1 -1
  157. package/dist/service/s3/command/sim-s3-command.types.d.ts +2 -1
  158. package/dist/service/s3/command/sim-s3-command.types.d.ts.map +1 -1
  159. package/dist/service/s3/notification/event/sim-s3-object-event-builder.d.ts.map +1 -1
  160. package/dist/service/s3/notification/event/sim-s3-object-event-builder.js +1 -2
  161. package/dist/service/s3/notification/event/sim-s3-object-event-builder.js.map +1 -1
  162. package/dist/service/s3/object/s3-object-etag.d.ts +20 -0
  163. package/dist/service/s3/object/s3-object-etag.d.ts.map +1 -0
  164. package/dist/service/s3/object/s3-object-etag.js +25 -0
  165. package/dist/service/s3/object/s3-object-etag.js.map +1 -0
  166. package/dist/service/s3/object/s3-object-listing-limits.d.ts +26 -0
  167. package/dist/service/s3/object/s3-object-listing-limits.d.ts.map +1 -0
  168. package/dist/service/s3/object/s3-object-listing-limits.js +46 -0
  169. package/dist/service/s3/object/s3-object-listing-limits.js.map +1 -0
  170. package/dist/service/s3/object/s3-object-listing.d.ts +51 -0
  171. package/dist/service/s3/object/s3-object-listing.d.ts.map +1 -0
  172. package/dist/service/s3/object/s3-object-listing.js +64 -0
  173. package/dist/service/s3/object/s3-object-listing.js.map +1 -0
  174. package/dist/service/s3/object/s3-object-response-headers.d.ts +23 -6
  175. package/dist/service/s3/object/s3-object-response-headers.d.ts.map +1 -1
  176. package/dist/service/s3/object/s3-object-response-headers.js +18 -8
  177. package/dist/service/s3/object/s3-object-response-headers.js.map +1 -1
  178. package/dist/service/s3/object/s3-object-summary.d.ts +33 -0
  179. package/dist/service/s3/object/s3-object-summary.d.ts.map +1 -0
  180. package/dist/service/s3/object/s3-object-summary.js +40 -0
  181. package/dist/service/s3/object/s3-object-summary.js.map +1 -0
  182. package/dist/service/s3/object/s3-object.d.ts +25 -0
  183. package/dist/service/s3/object/s3-object.d.ts.map +1 -1
  184. package/dist/service/s3/object/s3-object.js +31 -1
  185. package/dist/service/s3/object/s3-object.js.map +1 -1
  186. package/dist/service/s3/sdk/sim-s3-sdk-command-router.d.ts.map +1 -1
  187. package/dist/service/s3/sdk/sim-s3-sdk-command-router.js +4 -0
  188. package/dist/service/s3/sdk/sim-s3-sdk-command-router.js.map +1 -1
  189. package/dist/service/s3/serve/sim-s3-rest-object-reader.d.ts.map +1 -1
  190. package/dist/service/s3/serve/sim-s3-rest-object-reader.js +6 -1
  191. package/dist/service/s3/serve/sim-s3-rest-object-reader.js.map +1 -1
  192. package/dist/service/s3/serve/website/sim-s3-website-object-loader.d.ts.map +1 -1
  193. package/dist/service/s3/serve/website/sim-s3-website-object-loader.js +6 -1
  194. package/dist/service/s3/serve/website/sim-s3-website-object-loader.js.map +1 -1
  195. package/dist/service/s3/serve/website/sim-s3-website-object.d.ts +13 -4
  196. package/dist/service/s3/serve/website/sim-s3-website-object.d.ts.map +1 -1
  197. package/dist/service/s3/serve/website/sim-s3-website-object.js +15 -6
  198. package/dist/service/s3/serve/website/sim-s3-website-object.js.map +1 -1
  199. package/dist/service/s3/sim-s3-commands.d.ts +6 -0
  200. package/dist/service/s3/sim-s3-commands.d.ts.map +1 -1
  201. package/dist/service/s3/sim-s3-commands.js +2 -0
  202. package/dist/service/s3/sim-s3-commands.js.map +1 -1
  203. package/dist/service/s3/sim-s3.d.ts +24 -34
  204. package/dist/service/s3/sim-s3.d.ts.map +1 -1
  205. package/dist/service/s3/sim-s3.js +32 -40
  206. package/dist/service/s3/sim-s3.js.map +1 -1
  207. package/dist/service/s3/storage/filesystem/filesystem-path-exists.d.ts +8 -0
  208. package/dist/service/s3/storage/filesystem/filesystem-path-exists.d.ts.map +1 -1
  209. package/dist/service/s3/storage/filesystem/filesystem-path-exists.js +11 -1
  210. package/dist/service/s3/storage/filesystem/filesystem-path-exists.js.map +1 -1
  211. package/dist/service/s3/storage/filesystem/s3-filesystem-object-file.d.ts +19 -0
  212. package/dist/service/s3/storage/filesystem/s3-filesystem-object-file.d.ts.map +1 -0
  213. package/dist/service/s3/storage/filesystem/s3-filesystem-object-file.js +55 -0
  214. package/dist/service/s3/storage/filesystem/s3-filesystem-object-file.js.map +1 -0
  215. package/dist/service/s3/storage/filesystem/s3-filesystem-object-keys.d.ts +14 -4
  216. package/dist/service/s3/storage/filesystem/s3-filesystem-object-keys.d.ts.map +1 -1
  217. package/dist/service/s3/storage/filesystem/s3-filesystem-object-keys.js +27 -5
  218. package/dist/service/s3/storage/filesystem/s3-filesystem-object-keys.js.map +1 -1
  219. package/dist/service/s3/storage/filesystem/s3-filesystem-storage.d.ts +1 -2
  220. package/dist/service/s3/storage/filesystem/s3-filesystem-storage.d.ts.map +1 -1
  221. package/dist/service/s3/storage/filesystem/s3-filesystem-storage.js +10 -36
  222. package/dist/service/s3/storage/filesystem/s3-filesystem-storage.js.map +1 -1
  223. package/dist/service/sns/signature/sim-sns-certificate.d.ts +9 -3
  224. package/dist/service/sns/signature/sim-sns-certificate.d.ts.map +1 -1
  225. package/dist/service/sns/signature/sim-sns-certificate.js +13 -8
  226. package/dist/service/sns/signature/sim-sns-certificate.js.map +1 -1
  227. package/dist/service/sns/signature/sim-sns-der.d.ts +16 -0
  228. package/dist/service/sns/signature/sim-sns-der.d.ts.map +1 -1
  229. package/dist/service/sns/signature/sim-sns-der.js +23 -0
  230. package/dist/service/sns/signature/sim-sns-der.js.map +1 -1
  231. package/package.json +1 -1
  232. package/dist/service/s3/notification/event/sim-s3-object-etag.d.ts +0 -8
  233. package/dist/service/s3/notification/event/sim-s3-object-etag.d.ts.map +0 -1
  234. package/dist/service/s3/notification/event/sim-s3-object-etag.js +0 -11
  235. package/dist/service/s3/notification/event/sim-s3-object-etag.js.map +0 -1
@@ -1,4 +1,14 @@
1
1
  import { stat } from "node:fs/promises";
2
+ /**
3
+ * Whether a filesystem error is the one meaning nothing is at that path.
4
+ *
5
+ * Reading a file that is not there is not a failure to anything mapping a
6
+ * directory onto a Bucket: it is an Object the Bucket does not hold. Every
7
+ * other error still is one, so only this code is answered rather than raised.
8
+ */
9
+ export function isMissingFilesystemPathError(error) {
10
+ return error instanceof Error && "code" in error && error.code === "ENOENT";
11
+ }
2
12
  /**
3
13
  * Check whether a filesystem path exists.
4
14
  */
@@ -9,7 +19,7 @@ export async function filesystemPathExists(path) {
9
19
  return true;
10
20
  }
11
21
  catch (error) {
12
- if (error instanceof Error && "code" in error && error.code === "ENOENT") {
22
+ if (isMissingFilesystemPathError(error)) {
13
23
  return false;
14
24
  }
15
25
  /* v8 ignore next */
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem-path-exists.js","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/filesystem-path-exists.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAY;IACrD,IAAI,CAAC;QACH,mEAAmE;QACnE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,oBAAoB;QACpB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"filesystem-path-exists.js","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/filesystem-path-exists.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAAc;IACzD,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC9E,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAY;IACrD,IAAI,CAAC;QACH,mEAAmE;QACnE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,4BAA4B,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,oBAAoB;QACpB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { SimS3ObjectMetadata } from "../../object/s3-object.js";
2
+ import { SimS3Object } from "../../object/s3-object.js";
3
+ interface FilesystemS3ObjectFile {
4
+ readonly key: string;
5
+ readonly filePath: string;
6
+ readonly metadata: SimS3ObjectMetadata;
7
+ }
8
+ /**
9
+ * Read a file as the Object a Bucket holds at a key, or nothing when the file
10
+ * is not there.
11
+ *
12
+ * The file's own modification time becomes the Object's, since it is the one
13
+ * thing about a mounted file that is not a guess: a directory is written to
14
+ * behind S3's back, so when S3 was told about the Object says nothing useful.
15
+ * Everything else a file cannot say for itself arrives here already decided.
16
+ */
17
+ export declare function filesystemS3ObjectFile(file: FilesystemS3ObjectFile): Promise<SimS3Object | undefined>;
18
+ export {};
19
+ //# sourceMappingURL=s3-filesystem-object-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3-filesystem-object-file.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-object-file.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,UAAU,sBAAsB;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;CACxC;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CA0BlC"}
@@ -0,0 +1,55 @@
1
+ import { open } from "node:fs/promises";
2
+ import { SimS3Object } from "../../object/s3-object.js";
3
+ import { isMissingFilesystemPathError } from "./filesystem-path-exists.js";
4
+ /**
5
+ * Read a file as the Object a Bucket holds at a key, or nothing when the file
6
+ * is not there.
7
+ *
8
+ * The file's own modification time becomes the Object's, since it is the one
9
+ * thing about a mounted file that is not a guess: a directory is written to
10
+ * behind S3's back, so when S3 was told about the Object says nothing useful.
11
+ * Everything else a file cannot say for itself arrives here already decided.
12
+ */
13
+ export async function filesystemS3ObjectFile(file) {
14
+ // One open handle for both, because the bytes and the time they were written
15
+ // have to describe the same file. A mounted directory is rebuilt while it is
16
+ // being served, so reading the path twice can pair one file's content with
17
+ // its replacement's timestamp.
18
+ const handle = await openFileToRead(file.filePath);
19
+ if (handle === undefined) {
20
+ return undefined;
21
+ }
22
+ try {
23
+ const [body, fileStats] = await Promise.all([
24
+ handle.readFile(),
25
+ handle.stat(),
26
+ ]);
27
+ return new SimS3Object({
28
+ key: file.key,
29
+ body,
30
+ metadata: file.metadata,
31
+ lastModified: fileStats.mtime,
32
+ });
33
+ }
34
+ finally {
35
+ await handle.close();
36
+ }
37
+ }
38
+ /**
39
+ * Open a file, or answer with nothing when there is no such file, since a key
40
+ * a Bucket does not hold is not a failure to read.
41
+ */
42
+ async function openFileToRead(filePath) {
43
+ try {
44
+ // oxlint-disable-next-line security/detect-non-literal-fs-filename
45
+ return await open(filePath);
46
+ }
47
+ catch (error) {
48
+ if (isMissingFilesystemPathError(error)) {
49
+ return undefined;
50
+ }
51
+ /* v8 ignore next */
52
+ throw error;
53
+ }
54
+ }
55
+ //# sourceMappingURL=s3-filesystem-object-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3-filesystem-object-file.js","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-object-file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAGxC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAQ3E;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAA4B;IAE5B,6EAA6E;IAC7E,6EAA6E;IAC7E,2EAA2E;IAC3E,+BAA+B;IAC/B,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEnD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC1C,MAAM,CAAC,QAAQ,EAAE;YACjB,MAAM,CAAC,IAAI,EAAE;SACd,CAAC,CAAC;QAEH,OAAO,IAAI,WAAW,CAAC;YACrB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI;YACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,SAAS,CAAC,KAAK;SAC9B,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,cAAc,CAC3B,QAAgB;IAEhB,IAAI,CAAC;QACH,mEAAmE;QACnE,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,4BAA4B,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,oBAAoB;QACpB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -4,23 +4,33 @@ interface FilesystemS3ObjectKeysProperties {
4
4
  readonly safety: FilesystemS3StorageSafety;
5
5
  }
6
6
  /**
7
- * Finds the Object keys a storage directory holds.
7
+ * Maps between the Object keys of a Bucket and the files of a directory.
8
8
  *
9
9
  * A directory tree is a listing here, so the walk lives on its own rather than
10
10
  * in the storage class: files become keys relative to the directory root, with
11
- * platform separators normalised to the `/` an S3 key uses.
11
+ * platform separators normalised to the `/` an S3 key uses, and a key becomes
12
+ * the file path under the root it names.
12
13
  */
13
14
  export declare class FilesystemS3ObjectKeys {
14
15
  private readonly directoryPath;
15
16
  private readonly safety;
16
17
  constructor(properties: FilesystemS3ObjectKeysProperties);
17
18
  /**
18
- * List every Object key under the storage directory.
19
+ * List the Object keys under the storage directory, under a prefix when one
20
+ * is given.
19
21
  *
20
22
  * A directory that is not there holds nothing, which is what an empty Bucket
21
23
  * looks like.
22
24
  */
23
- list(): Promise<string[]>;
25
+ list(prefix?: string): Promise<string[]>;
26
+ /**
27
+ * The file an Object key names, once the key is known to be safe to follow.
28
+ *
29
+ * The guard after resolving is defensive rather than the check that matters:
30
+ * key validation has already rejected anything that could climb out, and this
31
+ * is the assertion that it did.
32
+ */
33
+ filePathFor(key: string): string;
24
34
  private listInDirectory;
25
35
  }
26
36
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"s3-filesystem-object-keys.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-object-keys.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAG3E,UAAU,gCAAgC;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,yBAAyB,CAAC;CAC5C;AAED;;;;;;GAMG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IAEnD,YAAY,UAAU,EAAE,gCAAgC,EAGvD;IAED;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAM9B;YAEa,eAAe;CA8B9B"}
1
+ {"version":3,"file":"s3-filesystem-object-keys.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-object-keys.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAG3E,UAAU,gCAAgC;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,yBAAyB,CAAC;CAC5C;AAED;;;;;;;GAOG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IAEnD,YAAY,UAAU,EAAE,gCAAgC,EAGvD;IAED;;;;;;OAMG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAU7C;IAED;;;;;;OAMG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAgB/B;YAEa,eAAe;CA8B9B"}
@@ -2,11 +2,12 @@ import { readdir } from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { filesystemPathExists } from "./filesystem-path-exists.js";
4
4
  /**
5
- * Finds the Object keys a storage directory holds.
5
+ * Maps between the Object keys of a Bucket and the files of a directory.
6
6
  *
7
7
  * A directory tree is a listing here, so the walk lives on its own rather than
8
8
  * in the storage class: files become keys relative to the directory root, with
9
- * platform separators normalised to the `/` an S3 key uses.
9
+ * platform separators normalised to the `/` an S3 key uses, and a key becomes
10
+ * the file path under the root it names.
10
11
  */
11
12
  export class FilesystemS3ObjectKeys {
12
13
  directoryPath;
@@ -16,16 +17,37 @@ export class FilesystemS3ObjectKeys {
16
17
  this.safety = properties.safety;
17
18
  }
18
19
  /**
19
- * List every Object key under the storage directory.
20
+ * List the Object keys under the storage directory, under a prefix when one
21
+ * is given.
20
22
  *
21
23
  * A directory that is not there holds nothing, which is what an empty Bucket
22
24
  * looks like.
23
25
  */
24
- async list() {
26
+ async list(prefix) {
25
27
  if (!(await filesystemPathExists(this.directoryPath))) {
26
28
  return [];
27
29
  }
28
- return await this.listInDirectory(this.directoryPath);
30
+ const keys = await this.listInDirectory(this.directoryPath);
31
+ return prefix === undefined
32
+ ? keys
33
+ : keys.filter((key) => key.startsWith(prefix));
34
+ }
35
+ /**
36
+ * The file an Object key names, once the key is known to be safe to follow.
37
+ *
38
+ * The guard after resolving is defensive rather than the check that matters:
39
+ * key validation has already rejected anything that could climb out, and this
40
+ * is the assertion that it did.
41
+ */
42
+ filePathFor(key) {
43
+ this.safety.assertSafeObjectKey(key);
44
+ const filePath = path.resolve(this.directoryPath, key);
45
+ /* v8 ignore if -- defensive guard after object key validation */
46
+ if (filePath !== this.directoryPath &&
47
+ !filePath.startsWith(`${this.directoryPath}${path.sep}`)) {
48
+ throw new Error(`Invalid S3 Object key outside storage directory: ${key}`);
49
+ }
50
+ return filePath;
29
51
  }
30
52
  async listInDirectory(directoryPath) {
31
53
  // oxlint-disable-next-line security/detect-non-literal-fs-filename
@@ -1 +1 @@
1
- {"version":3,"file":"s3-filesystem-object-keys.js","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-object-keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAOnE;;;;;;GAMG;AACH,MAAM,OAAO,sBAAsB;IAChB,aAAa,CAAS;IACtB,MAAM,CAA4B;IAEnD,YAAY,UAA4C;QACtD,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;YACtD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxD,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,aAAqB;QACjD,mEAAmE;QACnE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACtE,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,iBAAiB,GAAwB,EAAE,CAAC;QAElD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAEvD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxD,SAAS;YACX,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnB,MAAM,GAAG,GAAG,IAAI;qBACb,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC;qBACvC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;qBACf,IAAI,CAAC,GAAG,CAAC,CAAC;gBAEb,IAAI,IAAI,CAAC,MAAM,CAAC,2BAA2B,CAAC,GAAG,CAAC,EAAE,CAAC;oBACjD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAExD,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;CACF"}
1
+ {"version":3,"file":"s3-filesystem-object-keys.js","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-object-keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAOnE;;;;;;;GAOG;AACH,MAAM,OAAO,sBAAsB;IAChB,aAAa,CAAS;IACtB,MAAM,CAA4B;IAEnD,YAAY,UAA4C;QACtD,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAClC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CAAC,MAAe;QACxB,IAAI,CAAC,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;YACtD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE5D,OAAO,MAAM,KAAK,SAAS;YACzB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,GAAW;QACrB,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAErC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAEvD,iEAAiE;QACjE,IACE,QAAQ,KAAK,IAAI,CAAC,aAAa;YAC/B,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EACxD,CAAC;YACD,MAAM,IAAI,KAAK,CACb,oDAAoD,GAAG,EAAE,CAC1D,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,aAAqB;QACjD,mEAAmE;QACnE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACtE,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,iBAAiB,GAAwB,EAAE,CAAC;QAElD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAEvD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxD,SAAS;YACX,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnB,MAAM,GAAG,GAAG,IAAI;qBACb,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC;qBACvC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;qBACf,IAAI,CAAC,GAAG,CAAC,CAAC;gBAEb,IAAI,IAAI,CAAC,MAAM,CAAC,2BAA2B,CAAC,GAAG,CAAC,EAAE,CAAC;oBACjD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAExD,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
1
  import type { SimS3BucketStorage } from "../s3-bucket-storage.js";
2
- import { SimS3Object } from "../../object/s3-object.js";
2
+ import type { SimS3Object } from "../../object/s3-object.js";
3
3
  import { SimS3DeclaredSystemMetadata } from "../../object/s3-declared-system-metadata.js";
4
4
  interface FilesystemS3BucketStorageProperties {
5
5
  readonly directoryPath: string;
@@ -48,7 +48,6 @@ export declare class FilesystemS3BucketStorage implements SimS3BucketStorage {
48
48
  * filesystem-backed Buckets are read and written but never emptied.
49
49
  */
50
50
  deleteObject(key: string): Promise<boolean>;
51
- private filePathForObjectKey;
52
51
  }
53
52
  export {};
54
53
  //# sourceMappingURL=s3-filesystem-storage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"s3-filesystem-storage.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAQxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAE1F,UAAU,mCAAmC;IAC3C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEtD;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,2BAA2B,CAAC;CACvD;AAED;;;;;;;GAOG;AACH,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;IAE7D,YAAY,UAAU,EAAE,mCAAmC,EAa1D;IAED;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CA+B7D;IAED;;OAEG;IACG,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAazD;IAED;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAOlD;IAED;;;;;;;;OAQG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ1C;IAED,OAAO,CAAC,oBAAoB;CAiB7B"}
1
+ {"version":3,"file":"s3-filesystem-storage.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAQ7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAG1F,UAAU,mCAAmC;IAC3C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEtD;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,2BAA2B,CAAC;CACvD;AAED;;;;;;;GAOG;AACH,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;IAE7D,YAAY,UAAU,EAAE,mCAAmC,EAa1D;IAED;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAc7D;IAED;;OAEG;IACG,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAWzD;IAED;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAOlD;IAED;;;;;;;;OAQG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ1C;CACF"}
@@ -1,12 +1,12 @@
1
- import { SimS3Object } from "../../object/s3-object.js";
2
1
  import path from "node:path";
3
- import { mkdir, readFile, writeFile } from "node:fs/promises";
2
+ import { mkdir, writeFile } from "node:fs/promises";
4
3
  import { FilesystemS3StorageSafety } from "./s3-filesystem-safety.js";
5
4
  import { metadataForFilesystemS3ObjectKey } from "./s3-filesystem-object-metadata.js";
6
5
  import { FilesystemS3ObjectKeys } from "./s3-filesystem-object-keys.js";
7
6
  import { assertDefined } from "../../../../util/type-guard/defined.js";
8
7
  import { SimS3NotImplemented } from "../../error/sim-s3.error.js";
9
8
  import { SimS3DeclaredSystemMetadata } from "../../object/s3-declared-system-metadata.js";
9
+ import { filesystemS3ObjectFile } from "./s3-filesystem-object-file.js";
10
10
  /**
11
11
  * Maps simulated S3 Objects to files under a directory.
12
12
  * This is useful for local development, such as serving a static website
@@ -42,34 +42,18 @@ export class FilesystemS3BucketStorage {
42
42
  this.safety.assertSafeObjectKeyPath(key);
43
43
  return undefined;
44
44
  }
45
- const filePath = this.filePathForObjectKey(key);
46
- try {
47
- // oxlint-disable-next-line security/detect-non-literal-fs-filename
48
- const body = await readFile(filePath);
49
- return new SimS3Object({
50
- key,
51
- body,
52
- metadata: metadataForFilesystemS3ObjectKey(key, this.systemMetadata.headersForObjectKey(key)),
53
- });
54
- }
55
- catch (error) {
56
- if (error instanceof Error &&
57
- "code" in error &&
58
- error.code === "ENOENT") {
59
- return undefined;
60
- }
61
- /* v8 ignore next */
62
- throw error;
63
- }
45
+ return await filesystemS3ObjectFile({
46
+ key,
47
+ filePath: this.objectKeys.filePathFor(key),
48
+ metadata: metadataForFilesystemS3ObjectKey(key, this.systemMetadata.headersForObjectKey(key)),
49
+ });
64
50
  }
65
51
  /**
66
52
  * List simulated Objects based on files in the directory.
67
53
  */
68
54
  async listObjects(prefix) {
69
- const objectKeys = await this.objectKeys.list();
70
- return await Promise.all(objectKeys
71
- .filter((key) => prefix === undefined || key.startsWith(prefix))
72
- .map(async (key) => {
55
+ const objectKeys = await this.objectKeys.list(prefix);
56
+ return await Promise.all(objectKeys.map(async (key) => {
73
57
  const object = await this.getObject(key);
74
58
  assertDefined(object, "Sim S3 filesystem storage listed object");
75
59
  return object;
@@ -79,7 +63,7 @@ export class FilesystemS3BucketStorage {
79
63
  * Store a simulated Object as a file in the directory.
80
64
  */
81
65
  async putObject(object) {
82
- const filePath = this.filePathForObjectKey(object.key);
66
+ const filePath = this.objectKeys.filePathFor(object.key);
83
67
  // oxlint-disable-next-line security/detect-non-literal-fs-filename
84
68
  await mkdir(path.dirname(filePath), { recursive: true });
85
69
  // oxlint-disable-next-line security/detect-non-literal-fs-filename
@@ -99,15 +83,5 @@ export class FilesystemS3BucketStorage {
99
83
  `at ${this.directoryPath}, because it would remove a real file. ` +
100
84
  `Use the default in-memory Bucket storage to simulate deletion.`));
101
85
  }
102
- filePathForObjectKey(key) {
103
- this.safety.assertSafeObjectKey(key);
104
- const filePath = path.resolve(this.directoryPath, key);
105
- /* v8 ignore if -- defensive guard after object key validation */
106
- if (filePath !== this.directoryPath &&
107
- !filePath.startsWith(`${this.directoryPath}${path.sep}`)) {
108
- throw new Error(`Invalid S3 Object key outside storage directory: ${key}`);
109
- }
110
- return filePath;
111
- }
112
86
  }
113
87
  //# sourceMappingURL=s3-filesystem-storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"s3-filesystem-storage.js","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"s3-filesystem-storage.js","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-storage.ts"],"names":[],"mappings":"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"}
@@ -21,9 +21,15 @@ export declare function simSnsSelfSignedCertificatePem(input: SimSnsCertificateI
21
21
  * to allocate, and a serial derived from the key is unique in the only way that
22
22
  * matters: two simulated scopes with different keys have different serials.
23
23
  *
24
- * The top bit of the first byte is cleared, because a certificate serial number
25
- * has to be positive and a DER integer is signed. Clearing it is one byte of
26
- * uniqueness given up for a serial that never needs a leading zero.
24
+ * The bytes are the number itself, unsigned, and `derInteger` writes them the
25
+ * way DER writes an unsigned number, so how the sign of a written number is
26
+ * kept is the encoding's business rather than this function's.
27
+ *
28
+ * Which number it is stays this function's business, and X.509 says a serial
29
+ * number is positive. Zero is the one value a digest could name that is not,
30
+ * so it is answered with one instead. No real digest is all zeroes, and a
31
+ * certificate that is not a certificate is not worth the byte saved by leaving
32
+ * that to chance.
27
33
  */
28
34
  export declare function simSnsSerialNumber(digest: Buffer): Buffer;
29
35
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"sim-sns-certificate.d.ts","sourceRoot":"","sources":["../../../../src/service/sns/signature/sim-sns-certificate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA6D7C,UAAU,sBAAsB;IAC9B,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAuED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,sBAAsB,GAC5B,MAAM,CAaR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMzD"}
1
+ {"version":3,"file":"sim-sns-certificate.d.ts","sourceRoot":"","sources":["../../../../src/service/sns/signature/sim-sns-certificate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA6D7C,UAAU,sBAAsB;IAC9B,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAuED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,sBAAsB,GAC5B,MAAM,CAaR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIzD"}
@@ -1,5 +1,5 @@
1
1
  import { createSign } from "node:crypto";
2
- import { derBitStringTag, derBytes, derExplicitZeroTag, derIntegerTag, derNullTag, derObjectIdentifierTag, derPrintableStringTag, derSequenceTag, derSetTag, derText, derUtcTimeTag, derValue, } from "./sim-sns-der.js";
2
+ import { derBitStringTag, derBytes, derExplicitZeroTag, derInteger, derNullTag, derObjectIdentifierTag, derPrintableStringTag, derSequenceTag, derSetTag, derText, derUtcTimeTag, derValue, } from "./sim-sns-der.js";
3
3
  /**
4
4
  * The body bytes of the sha1WithRSAEncryption object identifier,
5
5
  * 1.2.840.113549.1.1.5.
@@ -17,7 +17,7 @@ const commonName = [0x55, 0x04, 0x03];
17
17
  /**
18
18
  * The version number of an X.509 v3 certificate, which counts from zero.
19
19
  */
20
- const version3 = 2;
20
+ const version3 = Buffer.from([2]);
21
21
  /**
22
22
  * When the certificate becomes valid, and when it stops being valid.
23
23
  *
@@ -73,7 +73,7 @@ function distinguishedName(name) {
73
73
  */
74
74
  function certificateBody(input) {
75
75
  const name = distinguishedName(input.subjectName);
76
- return derValue(derSequenceTag, derValue(derExplicitZeroTag, derBytes(derIntegerTag, version3)), derValue(derIntegerTag, input.serialNumber), signatureAlgorithm(), name, derValue(derSequenceTag, utcTime(notBefore), utcTime(notAfter)),
76
+ return derValue(derSequenceTag, derValue(derExplicitZeroTag, derInteger(version3)), derInteger(input.serialNumber), signatureAlgorithm(), name, derValue(derSequenceTag, utcTime(notBefore), utcTime(notAfter)),
77
77
  // Self-signed, so the issuer and the subject are the same Name.
78
78
  name, input.publicKey.export({ type: "spki", format: "der" }));
79
79
  }
@@ -98,13 +98,18 @@ export function simSnsSelfSignedCertificatePem(input) {
98
98
  * to allocate, and a serial derived from the key is unique in the only way that
99
99
  * matters: two simulated scopes with different keys have different serials.
100
100
  *
101
- * The top bit of the first byte is cleared, because a certificate serial number
102
- * has to be positive and a DER integer is signed. Clearing it is one byte of
103
- * uniqueness given up for a serial that never needs a leading zero.
101
+ * The bytes are the number itself, unsigned, and `derInteger` writes them the
102
+ * way DER writes an unsigned number, so how the sign of a written number is
103
+ * kept is the encoding's business rather than this function's.
104
+ *
105
+ * Which number it is stays this function's business, and X.509 says a serial
106
+ * number is positive. Zero is the one value a digest could name that is not,
107
+ * so it is answered with one instead. No real digest is all zeroes, and a
108
+ * certificate that is not a certificate is not worth the byte saved by leaving
109
+ * that to chance.
104
110
  */
105
111
  export function simSnsSerialNumber(digest) {
106
112
  const serial = Buffer.from(digest.subarray(0, serialNumberBytes));
107
- serial.writeUInt8(serial.readUInt8(0) & 0x7f, 0);
108
- return serial;
113
+ return serial.some((byte) => byte !== 0) ? serial : Buffer.from([1]);
109
114
  }
110
115
  //# sourceMappingURL=sim-sns-certificate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-sns-certificate.js","sourceRoot":"","sources":["../../../../src/service/sns/signature/sim-sns-certificate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sim-sns-certificate.js","sourceRoot":"","sources":["../../../../src/service/sns/signature/sim-sns-certificate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,eAAe,EACf,QAAQ,EACR,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACd,SAAS,EACT,OAAO,EACP,aAAa,EACb,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAE1B;;;;;;GAMG;AACH,MAAM,qBAAqB,GAAG;IAC5B,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CACrD,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAEtC;;GAEG;AACH,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAElC;;;;;;;;GAQG;AACH,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAEvD,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAEtD;;GAEG;AACH,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B;;GAEG;AACH,MAAM,aAAa,GAAG,EAAE,CAAC;AASzB;;;;;GAKG;AACH,SAAS,OAAO,CAAC,OAAa;IAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAE5D,OAAO,OAAO,CAAC,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,SAAS,KAAK,CAAC,GAAW;IACxB,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC,EAAE,EACpD,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CACjB,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,aAAa,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,CACnE,CAAC;IAEF,OAAO,gCAAgC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC;AACzF,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB;IACzB,OAAO,QAAQ,CACb,cAAc,EACd,QAAQ,CAAC,sBAAsB,EAAE,GAAG,qBAAqB,CAAC,EAC1D,QAAQ,CAAC,UAAU,CAAC,CACrB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,SAAS,GAAG,QAAQ,CACxB,cAAc,EACd,QAAQ,CAAC,sBAAsB,EAAE,GAAG,UAAU,CAAC,EAC/C,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,CACrC,CAAC;IAEF,OAAO,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,KAA6B;IACpD,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAElD,OAAO,QAAQ,CACb,cAAc,EACd,QAAQ,CAAC,kBAAkB,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,EAClD,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,EAC9B,kBAAkB,EAAE,EACpB,IAAI,EACJ,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/D,gEAAgE;IAChE,IAAI,EACJ,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CACxD,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,8BAA8B,CAC5C,KAA6B;IAE7B,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpC,OAAO,KAAK,CACV,QAAQ,CACN,cAAc,EACd,IAAI,EACJ,kBAAkB,EAAE,EACpB,QAAQ,CAAC,eAAe,EAAE,UAAU,EAAE,SAAS,CAAC,CACjD,CACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAElE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC"}
@@ -37,4 +37,20 @@ export declare function derText(tag: number, value: string): Buffer;
37
37
  * A DER value holding bytes given one at a time.
38
38
  */
39
39
  export declare function derBytes(tag: number, ...bytes: number[]): Buffer;
40
+ /**
41
+ * A DER integer holding a number given as unsigned bytes, most significant
42
+ * first.
43
+ *
44
+ * A DER integer is signed, and it is written in the fewest bytes that say what
45
+ * it is, so the bytes a number arrives as are not always the bytes it is
46
+ * written as. A leading zero is dropped, unless the byte after it has its top
47
+ * bit set: there the zero is the only thing keeping the number positive, and
48
+ * dropping it would say the number is negative instead.
49
+ *
50
+ * Getting either wrong does not produce a number read a little differently. A
51
+ * reader rejects the value rather than reading it leniently: OpenSSL answers a
52
+ * zero byte that was not needed with `illegal padding` and then refuses to
53
+ * parse the certificate carrying it at all.
54
+ */
55
+ export declare function derInteger(magnitude: Buffer): Buffer;
40
56
  //# sourceMappingURL=sim-sns-der.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-sns-der.d.ts","sourceRoot":"","sources":["../../../../src/service/sns/signature/sim-sns-der.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,cAAc,KAAO,CAAC;AAEnC,eAAO,MAAM,SAAS,KAAO,CAAC;AAE9B,eAAO,MAAM,aAAa,IAAO,CAAC;AAElC,eAAO,MAAM,eAAe,IAAO,CAAC;AAEpC,eAAO,MAAM,UAAU,IAAO,CAAC;AAE/B,eAAO,MAAM,sBAAsB,IAAO,CAAC;AAE3C,eAAO,MAAM,qBAAqB,KAAO,CAAC;AAE1C,eAAO,MAAM,aAAa,KAAO,CAAC;AAElC;;;GAGG;AACH,eAAO,MAAM,kBAAkB,MAAO,CAAC;AAwBvC;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAInE;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAEhE"}
1
+ {"version":3,"file":"sim-sns-der.d.ts","sourceRoot":"","sources":["../../../../src/service/sns/signature/sim-sns-der.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,cAAc,KAAO,CAAC;AAEnC,eAAO,MAAM,SAAS,KAAO,CAAC;AAE9B,eAAO,MAAM,aAAa,IAAO,CAAC;AAElC,eAAO,MAAM,eAAe,IAAO,CAAC;AAEpC,eAAO,MAAM,UAAU,IAAO,CAAC;AAE/B,eAAO,MAAM,sBAAsB,IAAO,CAAC;AAE3C,eAAO,MAAM,qBAAqB,KAAO,CAAC;AAE1C,eAAO,MAAM,aAAa,KAAO,CAAC;AAElC;;;GAGG;AACH,eAAO,MAAM,kBAAkB,MAAO,CAAC;AAwBvC;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAInE;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAEhE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CASpD"}
@@ -61,4 +61,27 @@ export function derText(tag, value) {
61
61
  export function derBytes(tag, ...bytes) {
62
62
  return derValue(tag, Buffer.from(bytes));
63
63
  }
64
+ /**
65
+ * A DER integer holding a number given as unsigned bytes, most significant
66
+ * first.
67
+ *
68
+ * A DER integer is signed, and it is written in the fewest bytes that say what
69
+ * it is, so the bytes a number arrives as are not always the bytes it is
70
+ * written as. A leading zero is dropped, unless the byte after it has its top
71
+ * bit set: there the zero is the only thing keeping the number positive, and
72
+ * dropping it would say the number is negative instead.
73
+ *
74
+ * Getting either wrong does not produce a number read a little differently. A
75
+ * reader rejects the value rather than reading it leniently: OpenSSL answers a
76
+ * zero byte that was not needed with `illegal padding` and then refuses to
77
+ * parse the certificate carrying it at all.
78
+ */
79
+ export function derInteger(magnitude) {
80
+ const significant = magnitude.findIndex((byte) => byte !== 0);
81
+ const body = significant === -1 ? Buffer.from([0]) : magnitude.subarray(significant);
82
+ const readsAsNegative = (body.readUInt8(0) & 0x80) !== 0;
83
+ return readsAsNegative
84
+ ? derValue(derIntegerTag, Buffer.from([0]), body)
85
+ : derValue(derIntegerTag, body);
86
+ }
64
87
  //# sourceMappingURL=sim-sns-der.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-sns-der.js","sourceRoot":"","sources":["../../../../src/service/sns/signature/sim-sns-der.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC;AAE9B,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAElC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AAEpC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC;AAE/B,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAE3C,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAElC;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEvC;;GAEG;AACH,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B;;GAEG;AACH,SAAS,SAAS,CAAC,MAAc;IAC/B,IAAI,MAAM,GAAG,cAAc,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,IAAI,IAAI,GAAG,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QAChE,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,GAAG,QAAkB;IACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAErC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,KAAa;IAChD,OAAO,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,GAAG,KAAe;IACtD,OAAO,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"sim-sns-der.js","sourceRoot":"","sources":["../../../../src/service/sns/signature/sim-sns-der.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC;AAE9B,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAElC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AAEpC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC;AAE/B,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAE3C,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAElC;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEvC;;GAEG;AACH,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B;;GAEG;AACH,SAAS,SAAS,CAAC,MAAc;IAC/B,IAAI,MAAM,GAAG,cAAc,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,IAAI,IAAI,GAAG,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QAChE,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,GAAG,QAAkB;IACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAErC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,KAAa;IAChD,OAAO,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,GAAG,KAAe;IACtD,OAAO,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU,CAAC,SAAiB;IAC1C,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;IAC9D,MAAM,IAAI,GACR,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC1E,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAEzD,OAAO,eAAe;QACpB,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;QACjD,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kensio/yulin",
3
- "version": "1.10.2",
3
+ "version": "1.10.4",
4
4
  "description": "AWS system behaviour simulation for isolated unit testing",
5
5
  "repository": "https://github.com/KensioSoftware/yulin",
6
6
  "homepage": "https://yulinsim.dev/",
@@ -1,8 +0,0 @@
1
- /**
2
- * The ETag real S3 gives an Object uploaded in one part.
3
- *
4
- * It is the MD5 of the bytes, in hex. An Object uploaded in several parts gets
5
- * a different form, which simulated S3 has no multipart upload to produce.
6
- */
7
- export declare function simS3ObjectETag(body: Buffer): string;
8
- //# sourceMappingURL=sim-s3-object-etag.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sim-s3-object-etag.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/notification/event/sim-s3-object-etag.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD"}
@@ -1,11 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- /**
3
- * The ETag real S3 gives an Object uploaded in one part.
4
- *
5
- * It is the MD5 of the bytes, in hex. An Object uploaded in several parts gets
6
- * a different form, which simulated S3 has no multipart upload to produce.
7
- */
8
- export function simS3ObjectETag(body) {
9
- return createHash("md5").update(body).digest("hex");
10
- }
11
- //# sourceMappingURL=sim-s3-object-etag.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sim-s3-object-etag.js","sourceRoot":"","sources":["../../../../../src/service/s3/notification/event/sim-s3-object-etag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC"}