@kensio/yulin 1.10.3 → 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 (125) hide show
  1. package/dist/service/cloudfront/origin/s3/sim-cf-s3-origin-responses.d.ts.map +1 -1
  2. package/dist/service/cloudfront/origin/s3/sim-cf-s3-origin-responses.js +7 -1
  3. package/dist/service/cloudfront/origin/s3/sim-cf-s3-origin-responses.js.map +1 -1
  4. package/dist/service/s3/bucket/sim-s3-bucket-access.d.ts +16 -0
  5. package/dist/service/s3/bucket/sim-s3-bucket-access.d.ts.map +1 -1
  6. package/dist/service/s3/bucket/sim-s3-bucket-access.js +22 -1
  7. package/dist/service/s3/bucket/sim-s3-bucket-access.js.map +1 -1
  8. package/dist/service/s3/command/get-object/get-object-loader.d.ts +2 -1
  9. package/dist/service/s3/command/get-object/get-object-loader.d.ts.map +1 -1
  10. package/dist/service/s3/command/get-object/get-object-loader.js +5 -1
  11. package/dist/service/s3/command/get-object/get-object-loader.js.map +1 -1
  12. package/dist/service/s3/command/get-object/get-object.command.d.ts +5 -0
  13. package/dist/service/s3/command/get-object/get-object.command.d.ts.map +1 -1
  14. package/dist/service/s3/command/list-objects/list-objects-page-builder.d.ts +3 -3
  15. package/dist/service/s3/command/list-objects/list-objects-page-builder.d.ts.map +1 -1
  16. package/dist/service/s3/command/list-objects/list-objects-page-builder.js +13 -17
  17. package/dist/service/s3/command/list-objects/list-objects-page-builder.js.map +1 -1
  18. package/dist/service/s3/command/list-objects/list-objects.command.d.ts +3 -8
  19. package/dist/service/s3/command/list-objects/list-objects.command.d.ts.map +1 -1
  20. package/dist/service/s3/command/list-objects/list-objects.handler.d.ts +3 -0
  21. package/dist/service/s3/command/list-objects/list-objects.handler.d.ts.map +1 -1
  22. package/dist/service/s3/command/list-objects/list-objects.handler.js +6 -2
  23. package/dist/service/s3/command/list-objects/list-objects.handler.js.map +1 -1
  24. package/dist/service/s3/command/list-objects-v2/list-objects-v2-continuation-token.d.ts +20 -0
  25. package/dist/service/s3/command/list-objects-v2/list-objects-v2-continuation-token.d.ts.map +1 -0
  26. package/dist/service/s3/command/list-objects-v2/list-objects-v2-continuation-token.js +29 -0
  27. package/dist/service/s3/command/list-objects-v2/list-objects-v2-continuation-token.js.map +1 -0
  28. package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.d.ts +31 -0
  29. package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.d.ts.map +1 -0
  30. package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.js +48 -0
  31. package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.js.map +1 -0
  32. package/dist/service/s3/command/list-objects-v2/list-objects-v2.command.d.ts +41 -0
  33. package/dist/service/s3/command/list-objects-v2/list-objects-v2.command.d.ts.map +1 -0
  34. package/dist/service/s3/command/list-objects-v2/list-objects-v2.command.js +2 -0
  35. package/dist/service/s3/command/list-objects-v2/list-objects-v2.command.js.map +1 -0
  36. package/dist/service/s3/command/list-objects-v2/list-objects-v2.handler.d.ts +41 -0
  37. package/dist/service/s3/command/list-objects-v2/list-objects-v2.handler.d.ts.map +1 -0
  38. package/dist/service/s3/command/list-objects-v2/list-objects-v2.handler.js +64 -0
  39. package/dist/service/s3/command/list-objects-v2/list-objects-v2.handler.js.map +1 -0
  40. package/dist/service/s3/command/object/sim-s3-object-commands.d.ts +8 -0
  41. package/dist/service/s3/command/object/sim-s3-object-commands.d.ts.map +1 -1
  42. package/dist/service/s3/command/object/sim-s3-object-commands.js +13 -0
  43. package/dist/service/s3/command/object/sim-s3-object-commands.js.map +1 -1
  44. package/dist/service/s3/command/put-object/put-object-builder.d.ts +10 -0
  45. package/dist/service/s3/command/put-object/put-object-builder.d.ts.map +1 -1
  46. package/dist/service/s3/command/put-object/put-object-builder.js +8 -0
  47. package/dist/service/s3/command/put-object/put-object-builder.js.map +1 -1
  48. package/dist/service/s3/command/put-object/put-object.command.d.ts +4 -0
  49. package/dist/service/s3/command/put-object/put-object.command.d.ts.map +1 -1
  50. package/dist/service/s3/command/put-object/put-object.handler.d.ts.map +1 -1
  51. package/dist/service/s3/command/put-object/put-object.handler.js +4 -1
  52. package/dist/service/s3/command/put-object/put-object.handler.js.map +1 -1
  53. package/dist/service/s3/command/sim-s3-bucket-command-state.d.ts +4 -1
  54. package/dist/service/s3/command/sim-s3-bucket-command-state.d.ts.map +1 -1
  55. package/dist/service/s3/command/sim-s3-command.types.d.ts +2 -1
  56. package/dist/service/s3/command/sim-s3-command.types.d.ts.map +1 -1
  57. package/dist/service/s3/notification/event/sim-s3-object-event-builder.d.ts.map +1 -1
  58. package/dist/service/s3/notification/event/sim-s3-object-event-builder.js +1 -2
  59. package/dist/service/s3/notification/event/sim-s3-object-event-builder.js.map +1 -1
  60. package/dist/service/s3/object/s3-object-etag.d.ts +20 -0
  61. package/dist/service/s3/object/s3-object-etag.d.ts.map +1 -0
  62. package/dist/service/s3/object/s3-object-etag.js +25 -0
  63. package/dist/service/s3/object/s3-object-etag.js.map +1 -0
  64. package/dist/service/s3/object/s3-object-listing-limits.d.ts +26 -0
  65. package/dist/service/s3/object/s3-object-listing-limits.d.ts.map +1 -0
  66. package/dist/service/s3/object/s3-object-listing-limits.js +46 -0
  67. package/dist/service/s3/object/s3-object-listing-limits.js.map +1 -0
  68. package/dist/service/s3/object/s3-object-listing.d.ts +51 -0
  69. package/dist/service/s3/object/s3-object-listing.d.ts.map +1 -0
  70. package/dist/service/s3/object/s3-object-listing.js +64 -0
  71. package/dist/service/s3/object/s3-object-listing.js.map +1 -0
  72. package/dist/service/s3/object/s3-object-response-headers.d.ts +23 -6
  73. package/dist/service/s3/object/s3-object-response-headers.d.ts.map +1 -1
  74. package/dist/service/s3/object/s3-object-response-headers.js +18 -8
  75. package/dist/service/s3/object/s3-object-response-headers.js.map +1 -1
  76. package/dist/service/s3/object/s3-object-summary.d.ts +33 -0
  77. package/dist/service/s3/object/s3-object-summary.d.ts.map +1 -0
  78. package/dist/service/s3/object/s3-object-summary.js +40 -0
  79. package/dist/service/s3/object/s3-object-summary.js.map +1 -0
  80. package/dist/service/s3/object/s3-object.d.ts +25 -0
  81. package/dist/service/s3/object/s3-object.d.ts.map +1 -1
  82. package/dist/service/s3/object/s3-object.js +31 -1
  83. package/dist/service/s3/object/s3-object.js.map +1 -1
  84. package/dist/service/s3/sdk/sim-s3-sdk-command-router.d.ts.map +1 -1
  85. package/dist/service/s3/sdk/sim-s3-sdk-command-router.js +4 -0
  86. package/dist/service/s3/sdk/sim-s3-sdk-command-router.js.map +1 -1
  87. package/dist/service/s3/serve/sim-s3-rest-object-reader.d.ts.map +1 -1
  88. package/dist/service/s3/serve/sim-s3-rest-object-reader.js +6 -1
  89. package/dist/service/s3/serve/sim-s3-rest-object-reader.js.map +1 -1
  90. package/dist/service/s3/serve/website/sim-s3-website-object-loader.d.ts.map +1 -1
  91. package/dist/service/s3/serve/website/sim-s3-website-object-loader.js +6 -1
  92. package/dist/service/s3/serve/website/sim-s3-website-object-loader.js.map +1 -1
  93. package/dist/service/s3/serve/website/sim-s3-website-object.d.ts +13 -4
  94. package/dist/service/s3/serve/website/sim-s3-website-object.d.ts.map +1 -1
  95. package/dist/service/s3/serve/website/sim-s3-website-object.js +15 -6
  96. package/dist/service/s3/serve/website/sim-s3-website-object.js.map +1 -1
  97. package/dist/service/s3/sim-s3-commands.d.ts +6 -0
  98. package/dist/service/s3/sim-s3-commands.d.ts.map +1 -1
  99. package/dist/service/s3/sim-s3-commands.js +2 -0
  100. package/dist/service/s3/sim-s3-commands.js.map +1 -1
  101. package/dist/service/s3/sim-s3.d.ts +24 -34
  102. package/dist/service/s3/sim-s3.d.ts.map +1 -1
  103. package/dist/service/s3/sim-s3.js +32 -40
  104. package/dist/service/s3/sim-s3.js.map +1 -1
  105. package/dist/service/s3/storage/filesystem/filesystem-path-exists.d.ts +8 -0
  106. package/dist/service/s3/storage/filesystem/filesystem-path-exists.d.ts.map +1 -1
  107. package/dist/service/s3/storage/filesystem/filesystem-path-exists.js +11 -1
  108. package/dist/service/s3/storage/filesystem/filesystem-path-exists.js.map +1 -1
  109. package/dist/service/s3/storage/filesystem/s3-filesystem-object-file.d.ts +19 -0
  110. package/dist/service/s3/storage/filesystem/s3-filesystem-object-file.d.ts.map +1 -0
  111. package/dist/service/s3/storage/filesystem/s3-filesystem-object-file.js +55 -0
  112. package/dist/service/s3/storage/filesystem/s3-filesystem-object-file.js.map +1 -0
  113. package/dist/service/s3/storage/filesystem/s3-filesystem-object-keys.d.ts +14 -4
  114. package/dist/service/s3/storage/filesystem/s3-filesystem-object-keys.d.ts.map +1 -1
  115. package/dist/service/s3/storage/filesystem/s3-filesystem-object-keys.js +27 -5
  116. package/dist/service/s3/storage/filesystem/s3-filesystem-object-keys.js.map +1 -1
  117. package/dist/service/s3/storage/filesystem/s3-filesystem-storage.d.ts +1 -2
  118. package/dist/service/s3/storage/filesystem/s3-filesystem-storage.d.ts.map +1 -1
  119. package/dist/service/s3/storage/filesystem/s3-filesystem-storage.js +10 -36
  120. package/dist/service/s3/storage/filesystem/s3-filesystem-storage.js.map +1 -1
  121. package/package.json +1 -1
  122. package/dist/service/s3/notification/event/sim-s3-object-etag.d.ts +0 -8
  123. package/dist/service/s3/notification/event/sim-s3-object-etag.d.ts.map +0 -1
  124. package/dist/service/s3/notification/event/sim-s3-object-etag.js +0 -11
  125. package/dist/service/s3/notification/event/sim-s3-object-etag.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sim-s3-commands.d.ts","sourceRoot":"","sources":["../../../src/service/s3/sim-s3-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,kDAAkD,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0DAA0D,CAAC;AACrG,OAAO,EAAE,yBAAyB,EAAE,MAAM,wDAAwD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,sEAAsE,CAAC;AAEtH,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,+DAA+D,CAAC;AAEnH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IACvD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;IAChD,QAAQ,CAAC,GAAG,CAAC,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,wBAAwB,CAAC,EAAE,6BAA6B,CAAC;CACnE;AAED,UAAU,uBAAwB,SAAQ,eAAe;IACvD,QAAQ,CAAC,kBAAkB,EAAE,wBAAwB,CAAC;IACtD,QAAQ,CAAC,gBAAgB,EAAE,mBAAmB,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;CACrD;AAED;;;;;;;GAOG;AACH,qBAAa,aAAa;IACxB,SAAgB,OAAO,EAAE,mBAAmB,CAAC;IAC7C,SAAgB,cAAc,EAAE,yBAAyB,CAAC;IAC1D,SAAgB,kBAAkB,EAAE,8BAA8B,CAAC;IACnE,SAAgB,aAAa,EAAE,yBAAyB,CAAC;IACzD,SAAgB,OAAO,EAAE,mBAAmB,CAAC;IAC7C,SAAgB,cAAc,EAAE,mBAAmB,CAAC;IAEpD,YAAY,UAAU,EAAE,uBAAuB,EA6B9C;CACF"}
1
+ {"version":3,"file":"sim-s3-commands.d.ts","sourceRoot":"","sources":["../../../src/service/s3/sim-s3-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,kDAAkD,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0DAA0D,CAAC;AACrG,OAAO,EAAE,yBAAyB,EAAE,MAAM,wDAAwD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,sEAAsE,CAAC;AAEtH,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,+DAA+D,CAAC;AAEnH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAE/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IACvD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;IAChD,QAAQ,CAAC,GAAG,CAAC,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,wBAAwB,CAAC,EAAE,6BAA6B,CAAC;IAClE;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,UAAU,uBAAwB,SAAQ,eAAe;IACvD,QAAQ,CAAC,kBAAkB,EAAE,wBAAwB,CAAC;IACtD,QAAQ,CAAC,gBAAgB,EAAE,mBAAmB,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;CACrD;AAED;;;;;;;GAOG;AACH,qBAAa,aAAa;IACxB,SAAgB,OAAO,EAAE,mBAAmB,CAAC;IAC7C,SAAgB,cAAc,EAAE,yBAAyB,CAAC;IAC1D,SAAgB,kBAAkB,EAAE,8BAA8B,CAAC;IACnE,SAAgB,aAAa,EAAE,yBAAyB,CAAC;IACzD,SAAgB,OAAO,EAAE,mBAAmB,CAAC;IAC7C,SAAgB,cAAc,EAAE,mBAAmB,CAAC;IAEpD,YAAY,UAAU,EAAE,uBAAuB,EA8B9C;CACF"}
@@ -7,6 +7,7 @@ import { SimS3ObjectCommands } from "./command/object/sim-s3-object-commands.js"
7
7
  import { SimS3PublicAccessBlockCommands } from "./command/public-access-block/sim-s3-public-access-block-commands.js";
8
8
  import { SimS3NoNotificationDestinations } from "./notification/destination/sim-s3-service-notification-destinations.js";
9
9
  import { SimS3ObjectNotifier } from "./notification/sim-s3-object-notifier.js";
10
+ import { SimS3ObjectListingLimits } from "./object/s3-object-listing-limits.js";
10
11
  /**
11
12
  * The command areas of one simulated S3 scope, and the state they share.
12
13
  *
@@ -34,6 +35,7 @@ export class SimS3Commands {
34
35
  background,
35
36
  notificationDestinations,
36
37
  notifications: this.objectNotifier,
38
+ listing: new SimS3ObjectListingLimits(properties.maxKeysPerPage),
37
39
  };
38
40
  this.buckets = new SimS3BucketCommands({
39
41
  ...state,
@@ -1 +1 @@
1
- {"version":3,"file":"sim-s3-commands.js","sourceRoot":"","sources":["../../../src/service/s3/sim-s3-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACL,kBAAkB,GAEnB,MAAM,kDAAkD,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0DAA0D,CAAC;AACrG,OAAO,EAAE,yBAAyB,EAAE,MAAM,wDAAwD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,sEAAsE,CAAC;AAGtH,OAAO,EAAE,+BAA+B,EAAE,MAAM,wEAAwE,CAAC;AACzH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAyB/E;;;;;;;GAOG;AACH,MAAM,OAAO,aAAa;IACR,OAAO,CAAsB;IAC7B,cAAc,CAA4B;IAC1C,kBAAkB,CAAiC;IACnD,aAAa,CAA4B;IACzC,OAAO,CAAsB;IAC7B,cAAc,CAAsB;IAEpD,YAAY,UAAmC;QAC7C,MAAM,EACJ,GAAG,GAAG,IAAI,kBAAkB,EAAE,EAC9B,UAAU,GAAG,IAAI,eAAe,EAAE,EAClC,wBAAwB,GAAG,IAAI,+BAA+B,EAAE,GACjE,GAAG,UAAU,CAAC;QAEf,IAAI,CAAC,cAAc,GAAG,IAAI,mBAAmB,CAAC;YAC5C,YAAY,EAAE,wBAAwB;YACtC,UAAU;SACX,CAAC,CAAC;QAEH,MAAM,KAAK,GAA4B;YACrC,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,GAAG;YACH,UAAU;YACV,wBAAwB;YACxB,aAAa,EAAE,IAAI,CAAC,cAAc;SACnC,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAmB,CAAC;YACrC,GAAG,KAAK;YACR,kBAAkB,EAAE,UAAU,CAAC,kBAAkB;YACjD,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;SAC9C,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,IAAI,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,kBAAkB,GAAG,IAAI,8BAA8B,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,CAAC,aAAa,GAAG,IAAI,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;CACF"}
1
+ {"version":3,"file":"sim-s3-commands.js","sourceRoot":"","sources":["../../../src/service/s3/sim-s3-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACL,kBAAkB,GAEnB,MAAM,kDAAkD,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0DAA0D,CAAC;AACrG,OAAO,EAAE,yBAAyB,EAAE,MAAM,wDAAwD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,sEAAsE,CAAC;AAGtH,OAAO,EAAE,+BAA+B,EAAE,MAAM,wEAAwE,CAAC;AACzH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AA+BhF;;;;;;;GAOG;AACH,MAAM,OAAO,aAAa;IACR,OAAO,CAAsB;IAC7B,cAAc,CAA4B;IAC1C,kBAAkB,CAAiC;IACnD,aAAa,CAA4B;IACzC,OAAO,CAAsB;IAC7B,cAAc,CAAsB;IAEpD,YAAY,UAAmC;QAC7C,MAAM,EACJ,GAAG,GAAG,IAAI,kBAAkB,EAAE,EAC9B,UAAU,GAAG,IAAI,eAAe,EAAE,EAClC,wBAAwB,GAAG,IAAI,+BAA+B,EAAE,GACjE,GAAG,UAAU,CAAC;QAEf,IAAI,CAAC,cAAc,GAAG,IAAI,mBAAmB,CAAC;YAC5C,YAAY,EAAE,wBAAwB;YACtC,UAAU;SACX,CAAC,CAAC;QAEH,MAAM,KAAK,GAA4B;YACrC,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,GAAG;YACH,UAAU;YACV,wBAAwB;YACxB,aAAa,EAAE,IAAI,CAAC,cAAc;YAClC,OAAO,EAAE,IAAI,wBAAwB,CAAC,UAAU,CAAC,cAAc,CAAC;SACjE,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAmB,CAAC;YACrC,GAAG,KAAK;YACR,kBAAkB,EAAE,UAAU,CAAC,kBAAkB;YACjD,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;SAC9C,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,IAAI,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,kBAAkB,GAAG,IAAI,8BAA8B,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,CAAC,aAAa,GAAG,IAAI,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;CACF"}
@@ -14,8 +14,6 @@ import type { SimS3MountFilesystemOptions } from "./mount/sim-s3-mount.type.js";
14
14
  */
15
15
  export declare class SimS3 {
16
16
  private readonly buckets;
17
- private readonly accountRegionScope;
18
- private readonly s3GlobalRegistry;
19
17
  private readonly commands;
20
18
  private readonly bucketAccess;
21
19
  private readonly cfnFactory;
@@ -55,6 +53,16 @@ export declare class SimS3 {
55
53
  deleteObjects(command: simS3Commands.SimDeleteObjectsCommand, options?: SimS3RequestOptions): Promise<simS3Commands.SimDeleteObjectsCommandOutput>;
56
54
  /** Handle a List Objects Command from the SDK. */
57
55
  listObjects(command: simS3Commands.SimListObjectsCommand, options?: SimS3RequestOptions): Promise<simS3Commands.SimListObjectsCommandOutput>;
56
+ /** Handle a List Objects V2 Command from the SDK. */
57
+ listObjectsV2(command: simS3Commands.SimListObjectsV2Command, options?: SimS3RequestOptions): Promise<simS3Commands.SimListObjectsV2CommandOutput>;
58
+ /**
59
+ * Change how many keys one page of an Object listing holds, which real S3
60
+ * fixes at a thousand.
61
+ *
62
+ * Lowering it is how a test gets a caller to walk a continuation without
63
+ * storing a thousand and one Objects to provoke one.
64
+ */
65
+ configureMaxKeysPerPage(maxKeys: number): void;
58
66
  /** Get a simulated S3 Bucket instance by name. */
59
67
  getSimBucketByName(bucketName: SimS3BucketName | string): SimS3Bucket | undefined;
60
68
  /**
@@ -64,11 +72,8 @@ export declare class SimS3 {
64
72
  */
65
73
  getNotificationDeliveryFailures(): readonly SimS3NotificationDeliveryFailure[];
66
74
  /**
67
- * Get the simulated S3 REST API endpoint URL for this Region.
68
- *
69
- * This is the endpoint an AWS SDK S3 client is configured with, so that the
70
- * client, and the presigner built on it, address simulated S3 the same way
71
- * they address the real thing.
75
+ * Get the simulated S3 REST API endpoint URL for this Region, which is what
76
+ * an AWS SDK S3 client, and the presigner built on it, is configured with.
72
77
  */
73
78
  getServiceUrl(): URL;
74
79
  /** Get the simulated S3 REST API endpoint URL for one Bucket. */
@@ -80,42 +85,27 @@ export declare class SimS3 {
80
85
  */
81
86
  findBucketScope(bucketName: SimS3BucketName | string): SimAwsAccountRegionScope | undefined;
82
87
  /**
83
- * Have a simulated S3 Bucket use a local filesystem directory for storage.
84
- *
85
- * Passing somewhere to reload, as `{ reload: srv }`, also watches the
86
- * directory: a build that writes into it reloads the connected browsers once
87
- * the writes stop, without the Bucket having to be filled again.
88
+ * Have a simulated S3 Bucket use a local filesystem directory for storage,
89
+ * watching it when `{ reload: srv }` says where to reload.
88
90
  *
89
- * A file on disk carries no metadata, so an Object read out of one is
90
- * described by its extension and by what the Bucket was told about the
91
- * Objects the mount replaced: a CDK `BucketDeployment` into the same Bucket
92
- * says what it publishes, which is how a mounted directory of brotli files
93
- * keeps its `content-encoding`. `systemMetadata` declares the rest for a key
94
- * prefix, and goes over the top of anything inherited.
91
+ * See `SimS3BucketAccess.mountFilesystem`, which describes what a mounted
92
+ * directory does about the metadata a file cannot carry.
95
93
  */
96
94
  mountBucketFilesystem(bucketName: SimS3BucketName | string, directoryPath: string, options?: SimS3MountFilesystemOptions): void;
97
- /**
98
- * The mounted directories being watched for changes.
99
- *
100
- * A directory mounted with somewhere to reload is watched from then on, and
101
- * a build in it reloads the browser rather than restarting anything.
102
- */
95
+ /** The mounted directories being watched for changes. */
103
96
  watchedMountedDirectories(): readonly string[];
104
- /**
105
- * Stop watching mounted directories.
106
- *
107
- * A watch holds an open filesystem handle, so a process with one open does
108
- * not exit on its own. A dev process wants exactly that and never calls this;
109
- * anything with an end, such as a test, calls it when it is done.
110
- */
97
+ /** Stop watching mounted directories, as `close` does. */
111
98
  stopWatchingMountedDirectories(): void;
112
99
  /**
113
100
  * Let go of everything this simulated S3 is holding open.
114
101
  *
115
102
  * The mounted directory watches, which is what `SimAws.close()` reaches to
116
- * release when a simulated environment is closed as a whole. The Buckets and
117
- * the Objects in them are left where they are, mounts included: this is the
118
- * open filesystem handles going, not the storage behind them.
103
+ * release when a simulated environment is closed as a whole. A watch holds an
104
+ * open filesystem handle, so a process with one open does not exit on its
105
+ * own: a dev process wants exactly that, and anything with an end, such as a
106
+ * test, closes when it is done. The Buckets and the Objects in them are left
107
+ * where they are, mounts included: this is the open filesystem handles going,
108
+ * not the storage behind them.
119
109
  */
120
110
  close(): void;
121
111
  /** Get this service's CloudFormation Resource factory. */
@@ -1 +1 @@
1
- {"version":3,"file":"sim-s3.d.ts","sourceRoot":"","sources":["../../../src/service/s3/sim-s3.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sim-s3.d.ts","sourceRoot":"","sources":["../../../src/service/s3/sim-s3.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import { SimS3GlobalRegistry } from "./sim-s3-global-registry.js";
2
2
  import { SimS3BucketAccess } from "./bucket/sim-s3-bucket-access.js";
3
- import { simS3ServiceUrl } from "./bucket/sim-s3-endpoint-url.js";
4
3
  import { SimS3CloudFormationResourceFactory } from "./cfn/sim-cfn-s3-resource-factory.js";
5
4
  import { simAwsAccountRegionScopeFactory } from "../aws/sim-aws-account-region-scope.factory.js";
6
5
  import { SimS3Commands } from "./sim-s3-commands.js";
@@ -12,16 +11,12 @@ import { SimS3SdkCommandRouter } from "./sdk/sim-s3-sdk-command-router.js";
12
11
  */
13
12
  export class SimS3 {
14
13
  buckets = new Map();
15
- accountRegionScope;
16
- s3GlobalRegistry;
17
14
  commands;
18
15
  bucketAccess;
19
16
  cfnFactory = new SimS3CloudFormationResourceFactory(this);
20
17
  sdkRouter = new SimS3SdkCommandRouter(this);
21
18
  constructor(properties = {}) {
22
19
  const { accountRegionScope = simAwsAccountRegionScopeFactory.make(), s3GlobalRegistry = new SimS3GlobalRegistry(), } = properties;
23
- this.accountRegionScope = accountRegionScope;
24
- this.s3GlobalRegistry = s3GlobalRegistry;
25
20
  this.commands = new SimS3Commands({
26
21
  ...properties,
27
22
  accountRegionScope,
@@ -31,6 +26,7 @@ export class SimS3 {
31
26
  this.bucketAccess = new SimS3BucketAccess({
32
27
  buckets: this.buckets,
33
28
  accountRegionScope,
29
+ s3GlobalRegistry,
34
30
  });
35
31
  }
36
32
  /** Handle a Create Bucket Command from the SDK. */
@@ -101,9 +97,23 @@ export class SimS3 {
101
97
  async listObjects(command, options) {
102
98
  return await this.commands.objects.list(command, options);
103
99
  }
100
+ /** Handle a List Objects V2 Command from the SDK. */
101
+ async listObjectsV2(command, options) {
102
+ return await this.commands.objects.listV2(command, options);
103
+ }
104
+ /**
105
+ * Change how many keys one page of an Object listing holds, which real S3
106
+ * fixes at a thousand.
107
+ *
108
+ * Lowering it is how a test gets a caller to walk a continuation without
109
+ * storing a thousand and one Objects to provoke one.
110
+ */
111
+ configureMaxKeysPerPage(maxKeys) {
112
+ this.commands.objects.configureMaxKeysPerPage(maxKeys);
113
+ }
104
114
  /** Get a simulated S3 Bucket instance by name. */
105
115
  getSimBucketByName(bucketName) {
106
- return this.buckets.get(bucketName);
116
+ return this.bucketAccess.find(bucketName);
107
117
  }
108
118
  /**
109
119
  * Get the Bucket event notifications this S3 could not deliver, which is the
@@ -114,14 +124,11 @@ export class SimS3 {
114
124
  return this.commands.objectNotifier.deliveryFailures;
115
125
  }
116
126
  /**
117
- * Get the simulated S3 REST API endpoint URL for this Region.
118
- *
119
- * This is the endpoint an AWS SDK S3 client is configured with, so that the
120
- * client, and the presigner built on it, address simulated S3 the same way
121
- * they address the real thing.
127
+ * Get the simulated S3 REST API endpoint URL for this Region, which is what
128
+ * an AWS SDK S3 client, and the presigner built on it, is configured with.
122
129
  */
123
130
  getServiceUrl() {
124
- return simS3ServiceUrl(this.accountRegionScope.regionName);
131
+ return this.bucketAccess.serviceUrl();
125
132
  }
126
133
  /** Get the simulated S3 REST API endpoint URL for one Bucket. */
127
134
  getBucketUrl(bucketName) {
@@ -135,41 +142,23 @@ export class SimS3 {
135
142
  * Find the Account Region scope for a globally registered simulated S3 Bucket.
136
143
  */
137
144
  findBucketScope(bucketName) {
138
- return this.s3GlobalRegistry.findBucketScope(bucketName);
145
+ return this.bucketAccess.scopeOf(bucketName);
139
146
  }
140
147
  /**
141
- * Have a simulated S3 Bucket use a local filesystem directory for storage.
148
+ * Have a simulated S3 Bucket use a local filesystem directory for storage,
149
+ * watching it when `{ reload: srv }` says where to reload.
142
150
  *
143
- * Passing somewhere to reload, as `{ reload: srv }`, also watches the
144
- * directory: a build that writes into it reloads the connected browsers once
145
- * the writes stop, without the Bucket having to be filled again.
146
- *
147
- * A file on disk carries no metadata, so an Object read out of one is
148
- * described by its extension and by what the Bucket was told about the
149
- * Objects the mount replaced: a CDK `BucketDeployment` into the same Bucket
150
- * says what it publishes, which is how a mounted directory of brotli files
151
- * keeps its `content-encoding`. `systemMetadata` declares the rest for a key
152
- * prefix, and goes over the top of anything inherited.
151
+ * See `SimS3BucketAccess.mountFilesystem`, which describes what a mounted
152
+ * directory does about the metadata a file cannot carry.
153
153
  */
154
154
  mountBucketFilesystem(bucketName, directoryPath, options = {}) {
155
155
  this.bucketAccess.mountFilesystem(bucketName, directoryPath, options);
156
156
  }
157
- /**
158
- * The mounted directories being watched for changes.
159
- *
160
- * A directory mounted with somewhere to reload is watched from then on, and
161
- * a build in it reloads the browser rather than restarting anything.
162
- */
157
+ /** The mounted directories being watched for changes. */
163
158
  watchedMountedDirectories() {
164
159
  return this.bucketAccess.watchedMounts();
165
160
  }
166
- /**
167
- * Stop watching mounted directories.
168
- *
169
- * A watch holds an open filesystem handle, so a process with one open does
170
- * not exit on its own. A dev process wants exactly that and never calls this;
171
- * anything with an end, such as a test, calls it when it is done.
172
- */
161
+ /** Stop watching mounted directories, as `close` does. */
173
162
  stopWatchingMountedDirectories() {
174
163
  this.bucketAccess.stopWatchingMounts();
175
164
  }
@@ -177,9 +166,12 @@ export class SimS3 {
177
166
  * Let go of everything this simulated S3 is holding open.
178
167
  *
179
168
  * The mounted directory watches, which is what `SimAws.close()` reaches to
180
- * release when a simulated environment is closed as a whole. The Buckets and
181
- * the Objects in them are left where they are, mounts included: this is the
182
- * open filesystem handles going, not the storage behind them.
169
+ * release when a simulated environment is closed as a whole. A watch holds an
170
+ * open filesystem handle, so a process with one open does not exit on its
171
+ * own: a dev process wants exactly that, and anything with an end, such as a
172
+ * test, closes when it is done. The Buckets and the Objects in them are left
173
+ * where they are, mounts included: this is the open filesystem handles going,
174
+ * not the storage behind them.
183
175
  */
184
176
  close() {
185
177
  this.stopWatchingMountedDirectories();
@@ -1 +1 @@
1
- {"version":3,"file":"sim-s3.js","sourceRoot":"","sources":["../../../src/service/s3/sim-s3.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sim-s3.js","sourceRoot":"","sources":["../../../src/service/s3/sim-s3.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;AAE1F,OAAO,EAAE,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AACjG,OAAO,EAAE,aAAa,EAAwB,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAM3E;;;;GAIG;AACH,MAAM,OAAO,KAAK;IACC,OAAO,GAAG,IAAI,GAAG,EAAgC,CAAC;IAElD,QAAQ,CAAgB;IACxB,YAAY,CAAoB;IAChC,UAAU,GAAG,IAAI,kCAAkC,CAAC,IAAI,CAAC,CAAC;IAC1D,SAAS,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAE7D,YAAY,UAAU,GAAoB,EAAE;QAC1C,MAAM,EACJ,kBAAkB,GAAG,+BAA+B,CAAC,IAAI,EAAE,EAC3D,gBAAgB,GAAG,IAAI,mBAAmB,EAAE,GAC7C,GAAG,UAAU,CAAC;QAEf,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC;YAChC,GAAG,UAAU;YACb,kBAAkB;YAClB,gBAAgB;YAChB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,IAAI,iBAAiB,CAAC;YACxC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,kBAAkB;YAClB,gBAAgB;SACjB,CAAC,CAAC;IACL,CAAC;IAED,mDAAmD;IACnD,KAAK,CAAC,YAAY,CAChB,OAA6C,EAC7C,OAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,mDAAmD;IACnD,KAAK,CAAC,YAAY,CAChB,OAA6C,EAC7C,OAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,uDAAuD;IACvD,KAAK,CAAC,eAAe,CACnB,OAAgD,EAChD,OAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,uDAAuD;IACvD,KAAK,CAAC,eAAe,CACnB,OAAgD,EAChD,OAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,0DAA0D;IAC1D,KAAK,CAAC,kBAAkB,CACtB,OAAmD,EACnD,OAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,oBAAoB,CACxB,OAAqD,EACrD,OAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,oBAAoB,CACxB,OAAqD,EACrD,OAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,gEAAgE;IAChE,KAAK,CAAC,uBAAuB,CAC3B,OAAwD,EACxD,OAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAED,wDAAwD;IACxD,KAAK,CAAC,gBAAgB,CACpB,OAAiD,EACjD,OAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,2EAA2E;IAC3E,KAAK,CAAC,kCAAkC,CACtC,OAAmE,EACnE,OAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,2EAA2E;IAC3E,KAAK,CAAC,kCAAkC,CACtC,OAAmE,EACnE,OAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,kDAAkD;IAClD,KAAK,CAAC,WAAW,CACf,OAA4C,EAC5C,OAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,gDAAgD;IAChD,KAAK,CAAC,SAAS,CACb,OAA0C,EAC1C,OAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,gDAAgD;IAChD,KAAK,CAAC,SAAS,CACb,OAA0C,EAC1C,OAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,mDAAmD;IACnD,KAAK,CAAC,YAAY,CAChB,OAA6C,EAC7C,OAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,oDAAoD;IACpD,KAAK,CAAC,aAAa,CACjB,OAA8C,EAC9C,OAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,kDAAkD;IAClD,KAAK,CAAC,WAAW,CACf,OAA4C,EAC5C,OAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,qDAAqD;IACrD,KAAK,CAAC,aAAa,CACjB,OAA8C,EAC9C,OAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;OAMG;IACH,uBAAuB,CAAC,OAAe;QACrC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,kDAAkD;IAClD,kBAAkB,CAChB,UAAoC;QAEpC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACH,+BAA+B;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;IAED,iEAAiE;IACjE,YAAY,CAAC,UAAoC;QAC/C,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,4DAA4D;IAC5D,mBAAmB,CAAC,UAAoC;QACtD,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,eAAe,CACb,UAAoC;QAEpC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;OAMG;IACH,qBAAqB,CACnB,UAAoC,EACpC,aAAqB,EACrB,OAAO,GAAgC,EAAE;QAEzC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IAED,yDAAyD;IACzD,yBAAyB;QACvB,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC;IAED,0DAA0D;IAC1D,8BAA8B;QAC5B,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;IACzC,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK;QACH,IAAI,CAAC,8BAA8B,EAAE,CAAC;IACxC,CAAC;IAED,0DAA0D;IAC1D,kBAAkB;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,yEAAyE;IACzE,gBAAgB;QACd,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF;AAED,OAAO,EAA4B,MAAM,qCAAqC,CAAC"}
@@ -1,3 +1,11 @@
1
+ /**
2
+ * Whether a filesystem error is the one meaning nothing is at that path.
3
+ *
4
+ * Reading a file that is not there is not a failure to anything mapping a
5
+ * directory onto a Bucket: it is an Object the Bucket does not hold. Every
6
+ * other error still is one, so only this code is answered rather than raised.
7
+ */
8
+ export declare function isMissingFilesystemPathError(error: unknown): boolean;
1
9
  /**
2
10
  * Check whether a filesystem path exists.
3
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem-path-exists.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/filesystem-path-exists.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAazE"}
1
+ {"version":3,"file":"filesystem-path-exists.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/filesystem-path-exists.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEpE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAazE"}
@@ -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"}