@streetjs/storage 1.0.0 → 1.0.2

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 (225) hide show
  1. package/dist/drivers/local.d.ts +8 -0
  2. package/dist/drivers/local.d.ts.map +1 -1
  3. package/dist/drivers/local.js +18 -3
  4. package/dist/drivers/local.js.map +1 -1
  5. package/dist/tests/contract.d.ts +19 -0
  6. package/dist/tests/contract.d.ts.map +1 -1
  7. package/dist/tests/contract.js +28 -0
  8. package/dist/tests/contract.js.map +1 -1
  9. package/package.json +10 -6
  10. package/dist/tests/access.test.d.ts +0 -2
  11. package/dist/tests/access.test.d.ts.map +0 -1
  12. package/dist/tests/access.test.js +0 -270
  13. package/dist/tests/access.test.js.map +0 -1
  14. package/dist/tests/azure-driver.test.d.ts +0 -2
  15. package/dist/tests/azure-driver.test.d.ts.map +0 -1
  16. package/dist/tests/azure-driver.test.js +0 -183
  17. package/dist/tests/azure-driver.test.js.map +0 -1
  18. package/dist/tests/backblaze-driver.test.d.ts +0 -2
  19. package/dist/tests/backblaze-driver.test.d.ts.map +0 -1
  20. package/dist/tests/backblaze-driver.test.js +0 -185
  21. package/dist/tests/backblaze-driver.test.js.map +0 -1
  22. package/dist/tests/bridge-degradation.test.d.ts +0 -2
  23. package/dist/tests/bridge-degradation.test.d.ts.map +0 -1
  24. package/dist/tests/bridge-degradation.test.js +0 -138
  25. package/dist/tests/bridge-degradation.test.js.map +0 -1
  26. package/dist/tests/cli.test.d.ts +0 -2
  27. package/dist/tests/cli.test.d.ts.map +0 -1
  28. package/dist/tests/cli.test.js +0 -127
  29. package/dist/tests/cli.test.js.map +0 -1
  30. package/dist/tests/contract.test.d.ts +0 -2
  31. package/dist/tests/contract.test.d.ts.map +0 -1
  32. package/dist/tests/contract.test.js +0 -110
  33. package/dist/tests/contract.test.js.map +0 -1
  34. package/dist/tests/directory.test.d.ts +0 -2
  35. package/dist/tests/directory.test.d.ts.map +0 -1
  36. package/dist/tests/directory.test.js +0 -125
  37. package/dist/tests/directory.test.js.map +0 -1
  38. package/dist/tests/errors.test.d.ts +0 -2
  39. package/dist/tests/errors.test.d.ts.map +0 -1
  40. package/dist/tests/errors.test.js +0 -93
  41. package/dist/tests/errors.test.js.map +0 -1
  42. package/dist/tests/events-bridge.test.d.ts +0 -2
  43. package/dist/tests/events-bridge.test.d.ts.map +0 -1
  44. package/dist/tests/events-bridge.test.js +0 -228
  45. package/dist/tests/events-bridge.test.js.map +0 -1
  46. package/dist/tests/example-smoke.test.d.ts +0 -2
  47. package/dist/tests/example-smoke.test.d.ts.map +0 -1
  48. package/dist/tests/example-smoke.test.js +0 -34
  49. package/dist/tests/example-smoke.test.js.map +0 -1
  50. package/dist/tests/gcs-driver.test.d.ts +0 -2
  51. package/dist/tests/gcs-driver.test.d.ts.map +0 -1
  52. package/dist/tests/gcs-driver.test.js +0 -197
  53. package/dist/tests/gcs-driver.test.js.map +0 -1
  54. package/dist/tests/image.test.d.ts +0 -2
  55. package/dist/tests/image.test.d.ts.map +0 -1
  56. package/dist/tests/image.test.js +0 -102
  57. package/dist/tests/image.test.js.map +0 -1
  58. package/dist/tests/lifecycle.test.d.ts +0 -2
  59. package/dist/tests/lifecycle.test.d.ts.map +0 -1
  60. package/dist/tests/lifecycle.test.js +0 -171
  61. package/dist/tests/lifecycle.test.js.map +0 -1
  62. package/dist/tests/local-driver.test.d.ts +0 -2
  63. package/dist/tests/local-driver.test.d.ts.map +0 -1
  64. package/dist/tests/local-driver.test.js +0 -153
  65. package/dist/tests/local-driver.test.js.map +0 -1
  66. package/dist/tests/local-streaming.test.d.ts +0 -2
  67. package/dist/tests/local-streaming.test.d.ts.map +0 -1
  68. package/dist/tests/local-streaming.test.js +0 -121
  69. package/dist/tests/local-streaming.test.js.map +0 -1
  70. package/dist/tests/memory-driver.test.d.ts +0 -2
  71. package/dist/tests/memory-driver.test.d.ts.map +0 -1
  72. package/dist/tests/memory-driver.test.js +0 -180
  73. package/dist/tests/memory-driver.test.js.map +0 -1
  74. package/dist/tests/memory-streaming.test.d.ts +0 -2
  75. package/dist/tests/memory-streaming.test.d.ts.map +0 -1
  76. package/dist/tests/memory-streaming.test.js +0 -92
  77. package/dist/tests/memory-streaming.test.js.map +0 -1
  78. package/dist/tests/minio-driver.test.d.ts +0 -2
  79. package/dist/tests/minio-driver.test.d.ts.map +0 -1
  80. package/dist/tests/minio-driver.test.js +0 -146
  81. package/dist/tests/minio-driver.test.js.map +0 -1
  82. package/dist/tests/non-s3-integration.test.d.ts +0 -2
  83. package/dist/tests/non-s3-integration.test.d.ts.map +0 -1
  84. package/dist/tests/non-s3-integration.test.js +0 -201
  85. package/dist/tests/non-s3-integration.test.js.map +0 -1
  86. package/dist/tests/observability.registration.test.d.ts +0 -2
  87. package/dist/tests/observability.registration.test.d.ts.map +0 -1
  88. package/dist/tests/observability.registration.test.js +0 -103
  89. package/dist/tests/observability.registration.test.js.map +0 -1
  90. package/dist/tests/observability.test.d.ts +0 -2
  91. package/dist/tests/observability.test.d.ts.map +0 -1
  92. package/dist/tests/observability.test.js +0 -240
  93. package/dist/tests/observability.test.js.map +0 -1
  94. package/dist/tests/plugin.test.d.ts +0 -2
  95. package/dist/tests/plugin.test.d.ts.map +0 -1
  96. package/dist/tests/plugin.test.js +0 -112
  97. package/dist/tests/plugin.test.js.map +0 -1
  98. package/dist/tests/prop-concurrent.test.d.ts +0 -2
  99. package/dist/tests/prop-concurrent.test.d.ts.map +0 -1
  100. package/dist/tests/prop-concurrent.test.js +0 -59
  101. package/dist/tests/prop-concurrent.test.js.map +0 -1
  102. package/dist/tests/prop-copy.test.d.ts +0 -2
  103. package/dist/tests/prop-copy.test.d.ts.map +0 -1
  104. package/dist/tests/prop-copy.test.js +0 -63
  105. package/dist/tests/prop-copy.test.js.map +0 -1
  106. package/dist/tests/prop-delete.test.d.ts +0 -2
  107. package/dist/tests/prop-delete.test.d.ts.map +0 -1
  108. package/dist/tests/prop-delete.test.js +0 -35
  109. package/dist/tests/prop-delete.test.js.map +0 -1
  110. package/dist/tests/prop-directory.test.d.ts +0 -2
  111. package/dist/tests/prop-directory.test.d.ts.map +0 -1
  112. package/dist/tests/prop-directory.test.js +0 -118
  113. package/dist/tests/prop-directory.test.js.map +0 -1
  114. package/dist/tests/prop-driver-conformance.test.d.ts +0 -2
  115. package/dist/tests/prop-driver-conformance.test.d.ts.map +0 -1
  116. package/dist/tests/prop-driver-conformance.test.js +0 -110
  117. package/dist/tests/prop-driver-conformance.test.js.map +0 -1
  118. package/dist/tests/prop-driver-equivalence.test.d.ts +0 -2
  119. package/dist/tests/prop-driver-equivalence.test.d.ts.map +0 -1
  120. package/dist/tests/prop-driver-equivalence.test.js +0 -163
  121. package/dist/tests/prop-driver-equivalence.test.js.map +0 -1
  122. package/dist/tests/prop-lifecycle.test.d.ts +0 -2
  123. package/dist/tests/prop-lifecycle.test.d.ts.map +0 -1
  124. package/dist/tests/prop-lifecycle.test.js +0 -83
  125. package/dist/tests/prop-lifecycle.test.js.map +0 -1
  126. package/dist/tests/prop-list.test.d.ts +0 -2
  127. package/dist/tests/prop-list.test.d.ts.map +0 -1
  128. package/dist/tests/prop-list.test.js +0 -53
  129. package/dist/tests/prop-list.test.js.map +0 -1
  130. package/dist/tests/prop-metadata.test.d.ts +0 -2
  131. package/dist/tests/prop-metadata.test.d.ts.map +0 -1
  132. package/dist/tests/prop-metadata.test.js +0 -87
  133. package/dist/tests/prop-metadata.test.js.map +0 -1
  134. package/dist/tests/prop-move.test.d.ts +0 -2
  135. package/dist/tests/prop-move.test.d.ts.map +0 -1
  136. package/dist/tests/prop-move.test.js +0 -67
  137. package/dist/tests/prop-move.test.js.map +0 -1
  138. package/dist/tests/prop-multipart-abort.test.d.ts +0 -2
  139. package/dist/tests/prop-multipart-abort.test.d.ts.map +0 -1
  140. package/dist/tests/prop-multipart-abort.test.js +0 -48
  141. package/dist/tests/prop-multipart-abort.test.js.map +0 -1
  142. package/dist/tests/prop-multipart.test.d.ts +0 -2
  143. package/dist/tests/prop-multipart.test.d.ts.map +0 -1
  144. package/dist/tests/prop-multipart.test.js +0 -65
  145. package/dist/tests/prop-multipart.test.js.map +0 -1
  146. package/dist/tests/prop-resumable.test.d.ts +0 -2
  147. package/dist/tests/prop-resumable.test.d.ts.map +0 -1
  148. package/dist/tests/prop-resumable.test.js +0 -78
  149. package/dist/tests/prop-resumable.test.js.map +0 -1
  150. package/dist/tests/prop-search.test.d.ts +0 -2
  151. package/dist/tests/prop-search.test.d.ts.map +0 -1
  152. package/dist/tests/prop-search.test.js +0 -120
  153. package/dist/tests/prop-search.test.js.map +0 -1
  154. package/dist/tests/prop-signed-url.test.d.ts +0 -2
  155. package/dist/tests/prop-signed-url.test.d.ts.map +0 -1
  156. package/dist/tests/prop-signed-url.test.js +0 -74
  157. package/dist/tests/prop-signed-url.test.js.map +0 -1
  158. package/dist/tests/prop-streaming.test.d.ts +0 -2
  159. package/dist/tests/prop-streaming.test.d.ts.map +0 -1
  160. package/dist/tests/prop-streaming.test.js +0 -34
  161. package/dist/tests/prop-streaming.test.js.map +0 -1
  162. package/dist/tests/prop-upload-download.test.d.ts +0 -2
  163. package/dist/tests/prop-upload-download.test.d.ts.map +0 -1
  164. package/dist/tests/prop-upload-download.test.js +0 -30
  165. package/dist/tests/prop-upload-download.test.js.map +0 -1
  166. package/dist/tests/prop-validation.test.d.ts +0 -2
  167. package/dist/tests/prop-validation.test.d.ts.map +0 -1
  168. package/dist/tests/prop-validation.test.js +0 -50
  169. package/dist/tests/prop-validation.test.js.map +0 -1
  170. package/dist/tests/prop-versioning.test.d.ts +0 -2
  171. package/dist/tests/prop-versioning.test.d.ts.map +0 -1
  172. package/dist/tests/prop-versioning.test.js +0 -74
  173. package/dist/tests/prop-versioning.test.js.map +0 -1
  174. package/dist/tests/queue-bridge.test.d.ts +0 -2
  175. package/dist/tests/queue-bridge.test.d.ts.map +0 -1
  176. package/dist/tests/queue-bridge.test.js +0 -111
  177. package/dist/tests/queue-bridge.test.js.map +0 -1
  178. package/dist/tests/r2-driver.test.d.ts +0 -2
  179. package/dist/tests/r2-driver.test.d.ts.map +0 -1
  180. package/dist/tests/r2-driver.test.js +0 -143
  181. package/dist/tests/r2-driver.test.js.map +0 -1
  182. package/dist/tests/realtime-bridge.test.d.ts +0 -2
  183. package/dist/tests/realtime-bridge.test.d.ts.map +0 -1
  184. package/dist/tests/realtime-bridge.test.js +0 -106
  185. package/dist/tests/realtime-bridge.test.js.map +0 -1
  186. package/dist/tests/resumable.test.d.ts +0 -2
  187. package/dist/tests/resumable.test.d.ts.map +0 -1
  188. package/dist/tests/resumable.test.js +0 -104
  189. package/dist/tests/resumable.test.js.map +0 -1
  190. package/dist/tests/s3-base.test.d.ts +0 -2
  191. package/dist/tests/s3-base.test.d.ts.map +0 -1
  192. package/dist/tests/s3-base.test.js +0 -289
  193. package/dist/tests/s3-base.test.js.map +0 -1
  194. package/dist/tests/s3-integration.test.d.ts +0 -2
  195. package/dist/tests/s3-integration.test.d.ts.map +0 -1
  196. package/dist/tests/s3-integration.test.js +0 -270
  197. package/dist/tests/s3-integration.test.js.map +0 -1
  198. package/dist/tests/s3.test.d.ts +0 -2
  199. package/dist/tests/s3.test.d.ts.map +0 -1
  200. package/dist/tests/s3.test.js +0 -203
  201. package/dist/tests/s3.test.js.map +0 -1
  202. package/dist/tests/scaffold.test.d.ts +0 -2
  203. package/dist/tests/scaffold.test.d.ts.map +0 -1
  204. package/dist/tests/scaffold.test.js +0 -13
  205. package/dist/tests/scaffold.test.js.map +0 -1
  206. package/dist/tests/search.test.d.ts +0 -2
  207. package/dist/tests/search.test.d.ts.map +0 -1
  208. package/dist/tests/search.test.js +0 -106
  209. package/dist/tests/search.test.js.map +0 -1
  210. package/dist/tests/supabase-driver.test.d.ts +0 -2
  211. package/dist/tests/supabase-driver.test.d.ts.map +0 -1
  212. package/dist/tests/supabase-driver.test.js +0 -196
  213. package/dist/tests/supabase-driver.test.js.map +0 -1
  214. package/dist/tests/testing-utilities.test.d.ts +0 -2
  215. package/dist/tests/testing-utilities.test.d.ts.map +0 -1
  216. package/dist/tests/testing-utilities.test.js +0 -138
  217. package/dist/tests/testing-utilities.test.js.map +0 -1
  218. package/dist/tests/validation.test.d.ts +0 -2
  219. package/dist/tests/validation.test.d.ts.map +0 -1
  220. package/dist/tests/validation.test.js +0 -135
  221. package/dist/tests/validation.test.js.map +0 -1
  222. package/dist/tests/versioning.test.d.ts +0 -2
  223. package/dist/tests/versioning.test.d.ts.map +0 -1
  224. package/dist/tests/versioning.test.js +0 -128
  225. package/dist/tests/versioning.test.js.map +0 -1
@@ -1,180 +0,0 @@
1
- // Unit tests for the MemoryStorageDriver primitive object operations.
2
- //
3
- // Verifies the mandatory StorageDriver primitives implemented in task 3.1:
4
- // put / get / exists / delete / stat / list, plus consistent not-found
5
- // reporting via the discriminated MaybeObject result. Uses the Node.js built-in
6
- // test runner (node:test) and is executed via `node --test dist/tests/*.test.js`.
7
- //
8
- // The driver is imported from the built driver module (`../drivers/memory.js`)
9
- // because MemoryStorageDriver is not re-exported from the package entry point.
10
- // A fixed Clock is injected so timestamps are deterministic and assertable.
11
- //
12
- // Requirements: 4.1, 4.2, 4.3, 4.4, 4.9, 4.10, 2.4
13
- import test from "node:test";
14
- import assert from "node:assert/strict";
15
- import { MemoryStorageDriver } from "../drivers/memory.js";
16
- /** A fixed clock returning a constant epoch-ms value for deterministic tests. */
17
- const FIXED_NOW = 1_700_000_000_000;
18
- const fixedClock = () => FIXED_NOW;
19
- /** Convenience: build a driver with the injected fixed clock. */
20
- function makeDriver() {
21
- return new MemoryStorageDriver({ clock: fixedClock });
22
- }
23
- /** Encode a UTF-8 string into a Uint8Array for storage. */
24
- function bytes(str) {
25
- return new TextEncoder().encode(str);
26
- }
27
- // ── put ──────────────────────────────────────────────────────────────────────
28
- test("put returns metadata with size, checksum, etag, and timestamps", async () => {
29
- const driver = makeDriver();
30
- const content = bytes("hello world");
31
- const meta = await driver.put("greetings/hello.txt", content, {
32
- contentType: "text/plain",
33
- });
34
- assert.equal(meta.key, "greetings/hello.txt");
35
- assert.equal(meta.size, content.byteLength);
36
- assert.equal(meta.contentType, "text/plain");
37
- // checksum/etag are the sha-256 hex digest of the bytes.
38
- assert.match(meta.checksum, /^[0-9a-f]{64}$/);
39
- assert.equal(meta.etag, meta.checksum);
40
- // Deterministic timestamps come from the injected fixed clock.
41
- assert.equal(meta.createdAt, FIXED_NOW);
42
- assert.equal(meta.updatedAt, FIXED_NOW);
43
- });
44
- test("put applies default content type and access level when unspecified", async () => {
45
- const driver = makeDriver();
46
- const meta = await driver.put("data/blob.bin", bytes("raw"), {});
47
- assert.equal(meta.contentType, "application/octet-stream");
48
- assert.equal(meta.accessLevel, "private");
49
- assert.deepEqual(meta.custom, {});
50
- });
51
- test("put carries owner, tenant, access level, and custom metadata", async () => {
52
- const driver = makeDriver();
53
- const meta = await driver.put("tenants/a/file.txt", bytes("x"), {
54
- owner: "user-1",
55
- tenant: "tenant-a",
56
- accessLevel: "public",
57
- custom: { label: "invoice" },
58
- });
59
- assert.equal(meta.owner, "user-1");
60
- assert.equal(meta.tenant, "tenant-a");
61
- assert.equal(meta.accessLevel, "public");
62
- assert.deepEqual(meta.custom, { label: "invoice" });
63
- });
64
- // ── get (round-trip + not-found) ──────────────────────────────────────────────
65
- test("get round-trips the stored bytes exactly and reports found:true", async () => {
66
- const driver = makeDriver();
67
- const content = bytes("the quick brown fox");
68
- await driver.put("docs/fox.txt", content, {});
69
- const result = await driver.get("docs/fox.txt");
70
- assert.equal(result.found, true);
71
- assert.deepEqual(result.bytes, content);
72
- assert.equal(result.metadata.key, "docs/fox.txt");
73
- assert.equal(result.metadata.size, content.byteLength);
74
- });
75
- test("get preserves arbitrary binary bytes without mutation", async () => {
76
- const driver = makeDriver();
77
- const content = new Uint8Array([0, 255, 1, 254, 127, 128]);
78
- await driver.put("bin/data", content, {});
79
- const result = await driver.get("bin/data");
80
- assert.equal(result.found, true);
81
- assert.deepEqual(result.bytes, content);
82
- });
83
- test("get on a missing key reports found:false (not an error)", async () => {
84
- const driver = makeDriver();
85
- const result = await driver.get("does/not/exist");
86
- assert.equal(result.found, false);
87
- assert.equal(result.bytes, undefined);
88
- });
89
- test("get returns a copy so mutating the result never corrupts the store", async () => {
90
- const driver = makeDriver();
91
- const content = bytes("immutable");
92
- await driver.put("safe/key", content, {});
93
- const first = await driver.get("safe/key");
94
- assert.ok(first.found);
95
- first.bytes[0] = 0; // mutate the returned buffer
96
- const second = await driver.get("safe/key");
97
- assert.ok(second.found);
98
- assert.deepEqual(second.bytes, content);
99
- });
100
- // ── exists ─────────────────────────────────────────────────────────────────
101
- test("exists returns true for a stored key and false otherwise", async () => {
102
- const driver = makeDriver();
103
- await driver.put("present.txt", bytes("here"), {});
104
- assert.equal(await driver.exists("present.txt"), true);
105
- assert.equal(await driver.exists("absent.txt"), false);
106
- });
107
- // ── delete ───────────────────────────────────────────────────────────────────
108
- test("delete removes visibility so a subsequent exists returns false", async () => {
109
- const driver = makeDriver();
110
- await driver.put("temp/file.txt", bytes("bye"), {});
111
- assert.equal(await driver.exists("temp/file.txt"), true);
112
- await driver.delete("temp/file.txt");
113
- assert.equal(await driver.exists("temp/file.txt"), false);
114
- const result = await driver.get("temp/file.txt");
115
- assert.equal(result.found, false);
116
- });
117
- test("delete on a missing key is a no-op (does not throw)", async () => {
118
- const driver = makeDriver();
119
- await assert.doesNotReject(() => driver.delete("never/existed"));
120
- });
121
- // ── stat ─────────────────────────────────────────────────────────────────────
122
- test("stat returns metadata for an existing key without content", async () => {
123
- const driver = makeDriver();
124
- const content = bytes("stat me");
125
- await driver.put("stat/key.txt", content, { contentType: "text/plain" });
126
- const meta = await driver.stat("stat/key.txt");
127
- assert.ok(meta);
128
- assert.equal(meta.key, "stat/key.txt");
129
- assert.equal(meta.size, content.byteLength);
130
- assert.equal(meta.contentType, "text/plain");
131
- assert.equal(meta.updatedAt, FIXED_NOW);
132
- // stat carries no bytes field.
133
- assert.equal(meta.bytes, undefined);
134
- });
135
- test("stat returns null for a missing key", async () => {
136
- const driver = makeDriver();
137
- const meta = await driver.stat("no/such/key");
138
- assert.equal(meta, null);
139
- });
140
- // ── list ─────────────────────────────────────────────────────────────────────
141
- test("list returns keys matching a prefix, sorted", async () => {
142
- const driver = makeDriver();
143
- await driver.put("photos/b.png", bytes("b"), {});
144
- await driver.put("photos/a.png", bytes("a"), {});
145
- await driver.put("docs/readme.md", bytes("doc"), {});
146
- const items = await driver.list("photos/");
147
- assert.deepEqual(items.map((item) => item.key), ["photos/a.png", "photos/b.png"]);
148
- });
149
- test("list with a prefix excludes non-matching keys", async () => {
150
- const driver = makeDriver();
151
- await driver.put("a/1", bytes("1"), {});
152
- await driver.put("a/2", bytes("2"), {});
153
- await driver.put("b/1", bytes("3"), {});
154
- const items = await driver.list("a/");
155
- assert.equal(items.length, 2);
156
- assert.ok(items.every((item) => item.key.startsWith("a/")));
157
- });
158
- test("list with an empty prefix returns every stored key", async () => {
159
- const driver = makeDriver();
160
- await driver.put("x", bytes("1"), {});
161
- await driver.put("y", bytes("2"), {});
162
- const items = await driver.list("");
163
- assert.deepEqual(items.map((item) => item.key).sort(), ["x", "y"]);
164
- });
165
- test("list returns an empty array when no key matches the prefix", async () => {
166
- const driver = makeDriver();
167
- await driver.put("only/one", bytes("1"), {});
168
- const items = await driver.list("missing/");
169
- assert.deepEqual(items, []);
170
- });
171
- test("list items carry size and updatedAt from stored metadata", async () => {
172
- const driver = makeDriver();
173
- const content = bytes("sized");
174
- await driver.put("items/one", content, {});
175
- const [item] = await driver.list("items/");
176
- assert.equal(item.key, "items/one");
177
- assert.equal(item.size, content.byteLength);
178
- assert.equal(item.updatedAt, FIXED_NOW);
179
- });
180
- //# sourceMappingURL=memory-driver.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory-driver.test.js","sourceRoot":"","sources":["../../src/tests/memory-driver.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=memory-streaming.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory-streaming.test.d.ts","sourceRoot":"","sources":["../../src/tests/memory-streaming.test.ts"],"names":[],"mappings":""}
@@ -1,92 +0,0 @@
1
- // Unit tests for the streaming primitives of MemoryStorageDriver (task 3.2).
2
- //
3
- // Verifies that `putStream` consumes a Node Readable and stores the assembled
4
- // bytes with the same computed metadata as `put`, that `getStream` returns a
5
- // Node Readable of the stored bytes (emitted intact, not byte-by-byte), that a
6
- // putStream -> getStream round-trip preserves the original bytes, that
7
- // `getStream` throws NotFoundError on a missing key, and that a failing source
8
- // stream rejects putStream and stores nothing. Uses the Node.js built-in test
9
- // runner (node:test) and is executed via `node --test dist/tests/*.test.js`.
10
- //
11
- // Requirements: 5.1, 5.2, 5.5
12
- import test from "node:test";
13
- import assert from "node:assert/strict";
14
- import { Readable } from "node:stream";
15
- import { buffer as streamToBuffer } from "node:stream/consumers";
16
- import { MemoryStorageDriver } from "../drivers/memory.js";
17
- import { NotFoundError } from "../errors.js";
18
- /** A fixed clock returning a constant epoch-ms timestamp for determinism. */
19
- const fixedClock = () => 1_700_000_000_000;
20
- test("putStream stores the streamed bytes and computes metadata like put", async () => {
21
- const driver = new MemoryStorageDriver({ clock: fixedClock });
22
- const payload = Buffer.from("hello streaming world");
23
- // Feed the payload across multiple chunks to exercise assembly.
24
- const source = Readable.from([
25
- payload.subarray(0, 5),
26
- payload.subarray(5, 11),
27
- payload.subarray(11),
28
- ]);
29
- const metadata = await driver.putStream("docs/stream.txt", source, {
30
- contentType: "text/plain",
31
- });
32
- assert.equal(metadata.key, "docs/stream.txt");
33
- assert.equal(metadata.size, payload.byteLength);
34
- assert.equal(metadata.contentType, "text/plain");
35
- assert.equal(metadata.createdAt, 1_700_000_000_000);
36
- assert.equal(metadata.updatedAt, 1_700_000_000_000);
37
- assert.ok(metadata.checksum.length > 0);
38
- assert.equal(metadata.etag, metadata.checksum);
39
- // Bytes are retrievable via the primitive get() as well.
40
- const got = await driver.get("docs/stream.txt");
41
- assert.equal(got.found, true);
42
- assert.deepEqual(Buffer.from(got.bytes), payload);
43
- });
44
- test("putStream metadata matches an equivalent buffered put", async () => {
45
- const streamDriver = new MemoryStorageDriver({ clock: fixedClock });
46
- const putDriver = new MemoryStorageDriver({ clock: fixedClock });
47
- const payload = Buffer.from("consistency across write paths");
48
- const viaStream = await streamDriver.putStream("k", Readable.from([payload]), { contentType: "application/octet-stream" });
49
- const viaPut = await putDriver.put("k", new Uint8Array(payload), {
50
- contentType: "application/octet-stream",
51
- });
52
- assert.equal(viaStream.size, viaPut.size);
53
- assert.equal(viaStream.checksum, viaPut.checksum);
54
- assert.equal(viaStream.etag, viaPut.etag);
55
- });
56
- test("getStream returns a Readable of the stored bytes emitted intact", async () => {
57
- const driver = new MemoryStorageDriver({ clock: fixedClock });
58
- const payload = Buffer.from("downloadable content");
59
- await driver.put("file.bin", new Uint8Array(payload), {});
60
- const stream = await driver.getStream("file.bin");
61
- assert.ok(stream instanceof Readable);
62
- // Collect chunks to confirm the bytes are delivered as binary (not object-mode
63
- // integers from iterating a Buffer byte-by-byte).
64
- const chunks = [];
65
- for await (const chunk of stream) {
66
- assert.ok(Buffer.isBuffer(chunk) || chunk instanceof Uint8Array);
67
- chunks.push(Buffer.from(chunk));
68
- }
69
- assert.deepEqual(Buffer.concat(chunks), payload);
70
- });
71
- test("putStream -> getStream round-trip preserves the original bytes", async () => {
72
- const driver = new MemoryStorageDriver({ clock: fixedClock });
73
- const payload = Buffer.from([0, 1, 2, 3, 255, 254, 128, 42, 7]);
74
- await driver.putStream("round/trip", Readable.from([payload]), {});
75
- const out = await streamToBuffer(await driver.getStream("round/trip"));
76
- assert.deepEqual(out, payload);
77
- });
78
- test("getStream throws NotFoundError for a missing key", async () => {
79
- const driver = new MemoryStorageDriver({ clock: fixedClock });
80
- await assert.rejects(() => driver.getStream("missing/key"), NotFoundError);
81
- });
82
- test("putStream rejects and stores nothing when the source stream errors", async () => {
83
- const driver = new MemoryStorageDriver({ clock: fixedClock });
84
- const failing = new Readable({
85
- read() {
86
- this.destroy(new Error("source failure"));
87
- },
88
- });
89
- await assert.rejects(() => driver.putStream("partial/key", failing, {}), /source failure/);
90
- assert.equal(await driver.exists("partial/key"), false);
91
- });
92
- //# sourceMappingURL=memory-streaming.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory-streaming.test.js","sourceRoot":"","sources":["../../src/tests/memory-streaming.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=minio-driver.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"minio-driver.test.d.ts","sourceRoot":"","sources":["../../src/tests/minio-driver.test.ts"],"names":[],"mappings":""}
@@ -1,146 +0,0 @@
1
- // Unit tests for the MinIO driver submodule (task 28.4). MinIO speaks the S3 API
2
- // against a self-hosted endpoint, so the driver is a thin specialization of the
3
- // shared S3-style base. These tests exercise the injected-client path with an
4
- // in-memory S3ClientLike double (no `minio` SDK, no external service), the
5
- // StorageConfigError guard when no client is injected, and the shared driver
6
- // contract-conformance suite.
7
- //
8
- // The SDK-building path (connectMinIODriver) uses a lazy dynamic import of the
9
- // optional `minio` peer dependency; with the SDK absent it must throw
10
- // StorageConfigError rather than a raw module-resolution error.
11
- //
12
- // Requirements: 2.1, 2.3, 3.3
13
- import test from "node:test";
14
- import assert from "node:assert/strict";
15
- import { createMinIODriver, connectMinIODriver } from "../drivers/minio.js";
16
- import { StorageConfigError } from "../errors.js";
17
- import { registerStorageDriverContractTests } from "./contract.js";
18
- const FIXED_NOW = 1_700_000_000_000;
19
- const fixedClock = () => FIXED_NOW;
20
- function bytes(str) {
21
- return new TextEncoder().encode(str);
22
- }
23
- /** A minimal in-memory S3ClientLike double, mirroring the s3-base test fake. */
24
- function makeFakeClient() {
25
- const objects = new Map(); // key -> { body, contentType, metadata }
26
- return {
27
- async putObject({ key, body, contentType, metadata }) {
28
- objects.set(key, {
29
- body: body.slice(),
30
- contentType,
31
- metadata: metadata ? { ...metadata } : undefined,
32
- });
33
- return { etag: `"${key}-etag"` };
34
- },
35
- async getObject({ key }) {
36
- const obj = objects.get(key);
37
- if (obj === undefined)
38
- return null;
39
- return {
40
- body: obj.body.slice(),
41
- contentType: obj.contentType,
42
- etag: `"${key}-etag"`,
43
- size: obj.body.byteLength,
44
- lastModified: FIXED_NOW,
45
- metadata: obj.metadata,
46
- };
47
- },
48
- async headObject({ key }) {
49
- const obj = objects.get(key);
50
- if (obj === undefined)
51
- return null;
52
- return {
53
- contentType: obj.contentType,
54
- etag: `"${key}-etag"`,
55
- size: obj.body.byteLength,
56
- lastModified: FIXED_NOW,
57
- metadata: obj.metadata,
58
- };
59
- },
60
- async deleteObject({ key }) {
61
- objects.delete(key);
62
- },
63
- async listObjects({ prefix }) {
64
- return [...objects.entries()]
65
- .filter(([key]) => key.startsWith(prefix))
66
- .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))
67
- .map(([key, obj]) => ({ key, size: obj.body.byteLength, updatedAt: FIXED_NOW }));
68
- },
69
- };
70
- }
71
- function makeDriver() {
72
- return createMinIODriver(makeFakeClient(), { clock: fixedClock });
73
- }
74
- // ── name / specialization ───────────────────────────────────────────────────
75
- test("driver name is fixed to minio", () => {
76
- assert.equal(makeDriver().name, "minio");
77
- });
78
- test("name is not overridable through options", () => {
79
- // MinIODriverOptions omits `name`; even a stray value must not change it.
80
- const strayOptions = { clock: fixedClock, name: "s3" };
81
- const driver = createMinIODriver(makeFakeClient(), strayOptions);
82
- assert.equal(driver.name, "minio");
83
- });
84
- // ── injected-client primitives round-trip via the base ───────────────────────
85
- test("put/get round-trips bytes and typed metadata over the injected client", async () => {
86
- const driver = makeDriver();
87
- const content = bytes("minio object payload");
88
- await driver.put("bucketed/key.txt", content, {
89
- contentType: "text/plain",
90
- owner: "user-9",
91
- tenant: "tenant-z",
92
- accessLevel: "public",
93
- custom: { label: "report" },
94
- });
95
- const result = await driver.get("bucketed/key.txt");
96
- assert.equal(result.found, true);
97
- assert.deepEqual(result.bytes, content);
98
- assert.equal(result.metadata.contentType, "text/plain");
99
- assert.equal(result.metadata.owner, "user-9");
100
- assert.equal(result.metadata.tenant, "tenant-z");
101
- assert.equal(result.metadata.accessLevel, "public");
102
- assert.deepEqual(result.metadata.custom, { label: "report" });
103
- });
104
- test("exists/delete/stat/list behave consistently", async () => {
105
- const driver = makeDriver();
106
- await driver.put("d/a.txt", bytes("a"), {});
107
- await driver.put("d/b.txt", bytes("bb"), {});
108
- assert.equal(await driver.exists("d/a.txt"), true);
109
- assert.equal(await driver.exists("d/missing.txt"), false);
110
- const stat = await driver.stat("d/b.txt");
111
- assert.ok(stat);
112
- assert.equal(stat.size, 2);
113
- assert.equal(await driver.stat("d/missing.txt"), null);
114
- const items = await driver.list("d/");
115
- assert.deepEqual(items.map((i) => i.key), ["d/a.txt", "d/b.txt"]);
116
- await driver.delete("d/a.txt");
117
- assert.equal(await driver.exists("d/a.txt"), false);
118
- });
119
- test("get on a missing key reports found:false", async () => {
120
- const driver = makeDriver();
121
- const result = await driver.get("nope");
122
- assert.equal(result.found, false);
123
- });
124
- // ── configuration guards ──────────────────────────────────────────────────────
125
- test("createMinIODriver throws StorageConfigError when no client is injected", () => {
126
- assert.throws(() => createMinIODriver(undefined), (err) => {
127
- assert.ok(err instanceof StorageConfigError);
128
- assert.equal(err.provider, "minio");
129
- return true;
130
- });
131
- });
132
- test("connectMinIODriver throws StorageConfigError when the minio SDK is absent", async () => {
133
- await assert.rejects(() => connectMinIODriver({
134
- bucket: "b",
135
- endPoint: "127.0.0.1",
136
- accessKey: "ak",
137
- secretKey: "sk",
138
- }), (err) => {
139
- assert.ok(err instanceof StorageConfigError);
140
- assert.equal(err.provider, "minio");
141
- return true;
142
- });
143
- });
144
- // ── shared contract-conformance suite ─────────────────────────────────────────
145
- registerStorageDriverContractTests("minio", () => createMinIODriver(makeFakeClient(), { clock: fixedClock }), test);
146
- //# sourceMappingURL=minio-driver.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"minio-driver.test.js","sourceRoot":"","sources":["../../src/tests/minio-driver.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=non-s3-integration.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"non-s3-integration.test.d.ts","sourceRoot":"","sources":["../../src/tests/non-s3-integration.test.ts"],"names":[],"mappings":""}