@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 +0,0 @@
1
- {"version":3,"file":"image.test.js","sourceRoot":"","sources":["../../src/tests/image.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=lifecycle.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lifecycle.test.d.ts","sourceRoot":"","sources":["../../src/tests/lifecycle.test.ts"],"names":[],"mappings":""}
@@ -1,171 +0,0 @@
1
- // Unit tests for the lifecycle engine wired into the storage facade (task
2
- // 15.1).
3
- //
4
- // Verifies the Requirement 13 semantics over the zero-dependency `memory`
5
- // provider (which has no native `lifecycle` capability, so the engine simulates
6
- // rule evaluation over the driver primitives, measuring object age against the
7
- // injected clock):
8
- //
9
- // - all four rule types are supported (13.1): delete-after-days,
10
- // archive-after-months, expire-temp-uploads, move-to-cold.
11
- // - each qualifying object is actioned exactly once — a repeated evaluation
12
- // produces no further action on already-actioned objects (13.2).
13
- // - actions are simulated in memory for MemoryStorageDriver (13.3).
14
- // - age thresholds and optional prefixes scope which objects qualify.
15
- // - internal bookkeeping keys (e.g. version snapshots) are never actioned by
16
- // age-based rules.
17
- //
18
- // Uses the Node.js built-in test runner (node:test); executed via
19
- // `node --test dist/tests/*.test.js`.
20
- //
21
- // Requirements: 13.1, 13.2, 13.3
22
- import test from "node:test";
23
- import assert from "node:assert/strict";
24
- import { createStorage } from "../facade.js";
25
- import { LifecycleEngine, ARCHIVE_KEY_PREFIX } from "../lifecycle.js";
26
- import { MemoryStorageDriver } from "../drivers/memory.js";
27
- const DAY = 24 * 60 * 60 * 1000;
28
- const T0 = 1_700_000_000_000;
29
- /** Build a facade + backing driver sharing a mutable clock for age control. */
30
- function makeStorage() {
31
- let now = T0;
32
- const clock = () => now;
33
- const driver = new MemoryStorageDriver({ clock });
34
- const storage = createStorage({ provider: "memory", driver, clock });
35
- return {
36
- storage,
37
- driver,
38
- setTime: (value) => {
39
- now = value;
40
- },
41
- };
42
- }
43
- test("delete-after-days deletes aged objects and keeps young ones (Req 13.1)", async () => {
44
- const { storage, setTime } = makeStorage();
45
- setTime(T0);
46
- await storage.put("old", "a");
47
- setTime(T0 + 10 * DAY);
48
- await storage.put("young", "b");
49
- // Evaluate 10 days after the first write: "old" is 10 days old, "young" 0.
50
- const outcomes = await storage.applyLifecycle({ type: "delete-after-days", days: 5 });
51
- assert.deepEqual(outcomes, [{ key: "old", action: "deleted" }]);
52
- assert.equal(await storage.exists("old"), false);
53
- assert.equal(await storage.exists("young"), true);
54
- });
55
- test("delete-after-days applies exactly once (Req 13.2)", async () => {
56
- const { storage, setTime } = makeStorage();
57
- setTime(T0);
58
- await storage.put("a", "x");
59
- await storage.put("b", "y");
60
- setTime(T0 + 30 * DAY);
61
- const first = await storage.applyLifecycle({ type: "delete-after-days", days: 7 });
62
- assert.equal(first.length, 2);
63
- // A second evaluation finds nothing further to delete.
64
- const second = await storage.applyLifecycle({ type: "delete-after-days", days: 7 });
65
- assert.deepEqual(second, []);
66
- });
67
- test("delete-after-days honors the optional prefix", async () => {
68
- const { storage, setTime } = makeStorage();
69
- setTime(T0);
70
- await storage.put("logs/one", "x");
71
- await storage.put("logs/two", "y");
72
- await storage.put("keep/three", "z");
73
- setTime(T0 + 30 * DAY);
74
- const outcomes = await storage.applyLifecycle({
75
- type: "delete-after-days",
76
- days: 1,
77
- prefix: "logs/",
78
- });
79
- assert.deepEqual(outcomes.map((o) => o.key).sort(), ["logs/one", "logs/two"]);
80
- assert.equal(await storage.exists("keep/three"), true);
81
- });
82
- test("archive-after-months relocates aged objects under the archive prefix (Req 13.1)", async () => {
83
- const { storage, driver, setTime } = makeStorage();
84
- setTime(T0);
85
- await storage.put("report", "payload", { contentType: "text/plain" });
86
- setTime(T0 + 90 * DAY); // ~3 months
87
- const outcomes = await storage.applyLifecycle({ type: "archive-after-months", months: 2 });
88
- assert.deepEqual(outcomes, [{ key: "report", action: "archived" }]);
89
- // The original key no longer resolves; the content is preserved under the
90
- // reserved archive prefix.
91
- assert.equal(await storage.exists("report"), false);
92
- const archived = await driver.get(`${ARCHIVE_KEY_PREFIX}report`);
93
- assert.equal(archived.found, true);
94
- assert.equal(Buffer.from(archived.bytes).toString(), "payload");
95
- });
96
- test("archive-after-months applies exactly once (Req 13.2)", async () => {
97
- const { storage, setTime } = makeStorage();
98
- setTime(T0);
99
- await storage.put("report", "payload");
100
- setTime(T0 + 90 * DAY);
101
- const first = await storage.applyLifecycle({ type: "archive-after-months", months: 1 });
102
- assert.equal(first.length, 1);
103
- const second = await storage.applyLifecycle({ type: "archive-after-months", months: 1 });
104
- assert.deepEqual(second, []);
105
- });
106
- test("expire-temp-uploads deletes aged transient multipart state (Req 13.1, 13.3)", async () => {
107
- const { storage, setTime } = makeStorage();
108
- setTime(T0);
109
- const uploadId = await storage.createMultipartUpload("big", { contentType: "text/plain" });
110
- await storage.uploadPart(uploadId, 1, new TextEncoder().encode("part-1"));
111
- setTime(T0 + 60_000);
112
- const outcomes = await storage.applyLifecycle({ type: "expire-temp-uploads", afterMs: 30_000 });
113
- assert.equal(outcomes.length, 1);
114
- assert.equal(outcomes[0].action, "expired");
115
- assert.ok(outcomes[0].key.startsWith(".multipart/"));
116
- // Exactly once: a second evaluation finds nothing further to expire.
117
- const second = await storage.applyLifecycle({ type: "expire-temp-uploads", afterMs: 30_000 });
118
- assert.deepEqual(second, []);
119
- });
120
- test("expire-temp-uploads leaves young transient state untouched", async () => {
121
- const { storage, setTime } = makeStorage();
122
- setTime(T0);
123
- const uploadId = await storage.createMultipartUpload("big", { contentType: "text/plain" });
124
- await storage.uploadPart(uploadId, 1, new TextEncoder().encode("part-1"));
125
- setTime(T0 + 5_000);
126
- const outcomes = await storage.applyLifecycle({ type: "expire-temp-uploads", afterMs: 30_000 });
127
- assert.deepEqual(outcomes, []);
128
- });
129
- test("move-to-cold relocates aged objects under coldPrefix exactly once (Req 13.1, 13.2)", async () => {
130
- const { storage, driver, setTime } = makeStorage();
131
- setTime(T0);
132
- await storage.put("data/a", "alpha");
133
- setTime(T0 + 40 * DAY);
134
- const outcomes = await storage.applyLifecycle({
135
- type: "move-to-cold",
136
- afterDays: 30,
137
- coldPrefix: "cold/",
138
- prefix: "data/",
139
- });
140
- assert.deepEqual(outcomes, [{ key: "data/a", action: "moved" }]);
141
- assert.equal(await storage.exists("data/a"), false);
142
- const cold = await driver.get("cold/data/a");
143
- assert.equal(cold.found, true);
144
- assert.equal(Buffer.from(cold.bytes).toString(), "alpha");
145
- // A second evaluation does not move the already-tiered object again.
146
- const second = await storage.applyLifecycle({
147
- type: "move-to-cold",
148
- afterDays: 30,
149
- coldPrefix: "cold/",
150
- prefix: "data/",
151
- });
152
- assert.deepEqual(second, []);
153
- });
154
- test("age-based rules never action internal version-snapshot keys", async () => {
155
- // With versioning enabled the overwrite snapshots prior content under the
156
- // reserved `.versions/` key space. A delete-after-days over the whole key
157
- // space must action only the real object, never the snapshot.
158
- const versioned = createStorage({ provider: "memory", versioning: true, clock: () => T0 });
159
- await versioned.put("k", "v1");
160
- await versioned.put("k", "v2"); // snapshots prior content under `.versions/`
161
- assert.equal((await versioned.listVersions("k")).length, 1);
162
- const outcomes = await versioned.applyLifecycle({ type: "delete-after-days", days: 0 });
163
- // Only the real object "k" is actioned; the snapshot under `.versions/` is not.
164
- assert.deepEqual(outcomes, [{ key: "k", action: "deleted" }]);
165
- assert.equal((await versioned.listVersions("k")).length, 1);
166
- });
167
- test("LifecycleEngine is exported and constructible", () => {
168
- const engine = new LifecycleEngine({ driver: new MemoryStorageDriver({ clock: () => T0 }) });
169
- assert.ok(engine instanceof LifecycleEngine);
170
- });
171
- //# sourceMappingURL=lifecycle.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lifecycle.test.js","sourceRoot":"","sources":["../../src/tests/lifecycle.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=local-driver.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-driver.test.d.ts","sourceRoot":"","sources":["../../src/tests/local-driver.test.ts"],"names":[],"mappings":""}
@@ -1,153 +0,0 @@
1
- // Unit tests for LocalStorageDriver primitive object operations.
2
- //
3
- // Exercises the mandatory StorageDriver primitives implemented in
4
- // `src/drivers/local.ts` (task 4.1): put/get/exists/delete/stat/list against a
5
- // real filesystem root. Each test uses an isolated temporary directory created
6
- // via `fs.mkdtemp` under `os.tmpdir()` and removes it afterward so tests never
7
- // touch shared state. Uses the Node.js built-in test runner (node:test) and is
8
- // executed via `node --test dist/tests/*.test.js`.
9
- //
10
- // Verifies: put/get round-trips bytes exactly; get on a missing key reports
11
- // {found:false}; exists returns true/false correctly; delete removes
12
- // visibility; stat returns metadata or null; list returns keys matching a
13
- // prefix and never surfaces `.meta.json` sidecar files; nested keys work.
14
- //
15
- // Requirements: 4.1, 4.2, 4.3, 4.4, 2.4
16
- import test from "node:test";
17
- import assert from "node:assert/strict";
18
- import * as fs from "node:fs/promises";
19
- import * as os from "node:os";
20
- import * as path from "node:path";
21
- import { LocalStorageDriver } from "../drivers/local.js";
22
- /**
23
- * Create a fresh, isolated temporary root and a driver bound to it, run `body`,
24
- * and always clean up the directory afterward.
25
- */
26
- async function withDriver(body) {
27
- const root = await fs.mkdtemp(path.join(os.tmpdir(), "streetjs-local-driver-"));
28
- const driver = new LocalStorageDriver({ root });
29
- try {
30
- await body(driver, root);
31
- }
32
- finally {
33
- await fs.rm(root, { recursive: true, force: true });
34
- }
35
- }
36
- /** Minimal write metadata: the driver fills in defaults. */
37
- const NO_META = {};
38
- test("put/get round-trips bytes exactly", async () => {
39
- await withDriver(async (driver) => {
40
- const bytes = new Uint8Array([0, 1, 2, 3, 255, 128, 64, 0, 17]);
41
- const written = await driver.put("photos/cat.bin", bytes, NO_META);
42
- assert.equal(written.key, "photos/cat.bin");
43
- assert.equal(written.size, bytes.byteLength);
44
- const result = await driver.get("photos/cat.bin");
45
- assert.equal(result.found, true);
46
- assert.deepEqual(result.bytes, bytes);
47
- assert.equal(result.metadata.key, "photos/cat.bin");
48
- assert.equal(result.metadata.size, bytes.byteLength);
49
- });
50
- });
51
- test("put/get round-trips empty content exactly", async () => {
52
- await withDriver(async (driver) => {
53
- const empty = new Uint8Array([]);
54
- await driver.put("empty.bin", empty, NO_META);
55
- const result = await driver.get("empty.bin");
56
- assert.ok(result.found);
57
- assert.equal(result.bytes.byteLength, 0);
58
- assert.equal(result.metadata.size, 0);
59
- });
60
- });
61
- test("get on a missing key reports not-found", async () => {
62
- await withDriver(async (driver) => {
63
- const result = await driver.get("does/not/exist.txt");
64
- assert.equal(result.found, false);
65
- assert.equal(result.bytes, undefined);
66
- assert.equal(result.metadata, undefined);
67
- });
68
- });
69
- test("exists returns true for a stored key and false otherwise", async () => {
70
- await withDriver(async (driver) => {
71
- assert.equal(await driver.exists("report.pdf"), false);
72
- await driver.put("report.pdf", new Uint8Array([1, 2, 3]), NO_META);
73
- assert.equal(await driver.exists("report.pdf"), true);
74
- assert.equal(await driver.exists("other.pdf"), false);
75
- });
76
- });
77
- test("delete removes visibility of a stored object", async () => {
78
- await withDriver(async (driver) => {
79
- await driver.put("temp/file.txt", new Uint8Array([9, 9, 9]), NO_META);
80
- assert.equal(await driver.exists("temp/file.txt"), true);
81
- await driver.delete("temp/file.txt");
82
- assert.equal(await driver.exists("temp/file.txt"), false);
83
- const result = await driver.get("temp/file.txt");
84
- assert.equal(result.found, false);
85
- assert.equal(await driver.stat("temp/file.txt"), null);
86
- });
87
- });
88
- test("delete of a missing key is a no-op", async () => {
89
- await withDriver(async (driver) => {
90
- await driver.delete("never/created.txt");
91
- assert.equal(await driver.exists("never/created.txt"), false);
92
- });
93
- });
94
- test("stat returns metadata for an existing key and null for a missing one", async () => {
95
- await withDriver(async (driver) => {
96
- assert.equal(await driver.stat("missing.txt"), null);
97
- const bytes = new Uint8Array([1, 2, 3, 4, 5]);
98
- await driver.put("docs/readme.txt", bytes, { contentType: "text/plain" });
99
- const meta = await driver.stat("docs/readme.txt");
100
- assert.ok(meta);
101
- assert.equal(meta.key, "docs/readme.txt");
102
- assert.equal(meta.size, bytes.byteLength);
103
- assert.equal(meta.contentType, "text/plain");
104
- assert.ok(typeof meta.checksum === "string" && meta.checksum.length > 0);
105
- assert.ok(typeof meta.createdAt === "number");
106
- assert.ok(typeof meta.updatedAt === "number");
107
- });
108
- });
109
- test("list returns keys matching a prefix", async () => {
110
- await withDriver(async (driver) => {
111
- await driver.put("images/a.png", new Uint8Array([1]), NO_META);
112
- await driver.put("images/b.png", new Uint8Array([2]), NO_META);
113
- await driver.put("videos/c.mp4", new Uint8Array([3]), NO_META);
114
- const items = await driver.list("images/");
115
- const keys = items.map((item) => item.key).sort();
116
- assert.deepEqual(keys, ["images/a.png", "images/b.png"]);
117
- const all = await driver.list("");
118
- const allKeys = all.map((item) => item.key).sort();
119
- assert.deepEqual(allKeys, ["images/a.png", "images/b.png", "videos/c.mp4"]);
120
- });
121
- });
122
- test("list never surfaces .meta.json sidecar files", async () => {
123
- await withDriver(async (driver) => {
124
- await driver.put("data/record.json", new Uint8Array([1, 2, 3]), NO_META);
125
- const items = await driver.list("");
126
- const keys = items.map((item) => item.key);
127
- assert.deepEqual(keys, ["data/record.json"]);
128
- assert.ok(!keys.some((key) => key.endsWith(".meta.json")));
129
- });
130
- });
131
- test("list returns items carrying key, size, and updatedAt", async () => {
132
- await withDriver(async (driver) => {
133
- const bytes = new Uint8Array([1, 2, 3, 4]);
134
- await driver.put("k.bin", bytes, NO_META);
135
- const [item] = await driver.list("k");
136
- assert.equal(item.key, "k.bin");
137
- assert.equal(item.size, bytes.byteLength);
138
- assert.ok(typeof item.updatedAt === "number");
139
- });
140
- });
141
- test("nested keys round-trip through put/get/exists/list", async () => {
142
- await withDriver(async (driver) => {
143
- const bytes = new Uint8Array([10, 20, 30, 40]);
144
- await driver.put("a/b/c.txt", bytes, NO_META);
145
- assert.equal(await driver.exists("a/b/c.txt"), true);
146
- const result = await driver.get("a/b/c.txt");
147
- assert.equal(result.found, true);
148
- assert.deepEqual(result.bytes, bytes);
149
- const items = await driver.list("a/");
150
- assert.deepEqual(items.map((item) => item.key), ["a/b/c.txt"]);
151
- });
152
- });
153
- //# sourceMappingURL=local-driver.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-driver.test.js","sourceRoot":"","sources":["../../src/tests/local-driver.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=local-streaming.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-streaming.test.d.ts","sourceRoot":"","sources":["../../src/tests/local-streaming.test.ts"],"names":[],"mappings":""}
@@ -1,121 +0,0 @@
1
- // Unit tests for the streaming primitives of LocalStorageDriver (task 4.2).
2
- //
3
- // Verifies that `putStream` streams a Node Readable to disk at `root/<key>`
4
- // (creating parent dirs) while computing checksum/etag/size, that the resulting
5
- // metadata matches an equivalent buffered `put`, that an overwrite preserves the
6
- // original `createdAt` while advancing `updatedAt`, that `getStream` returns a
7
- // Node Readable of the stored bytes and a putStream -> getStream round-trip
8
- // preserves the original bytes, that `getStream` throws NotFoundError on a
9
- // missing key, and that a failing source stream rejects putStream and leaves no
10
- // visible object. Uses the Node.js built-in test runner (node:test) and is
11
- // executed via `node --test dist/tests/*.test.js`.
12
- //
13
- // Requirements: 5.1, 5.2, 5.3, 5.5
14
- import test from "node:test";
15
- import assert from "node:assert/strict";
16
- import { Readable } from "node:stream";
17
- import { buffer as streamToBuffer } from "node:stream/consumers";
18
- import * as fs from "node:fs/promises";
19
- import * as os from "node:os";
20
- import * as path from "node:path";
21
- import { LocalStorageDriver } from "../drivers/local.js";
22
- import { NotFoundError } from "../errors.js";
23
- /** Create a fresh temp directory to serve as the driver root. */
24
- async function tempRoot() {
25
- return fs.mkdtemp(path.join(os.tmpdir(), "streetjs-storage-local-stream-"));
26
- }
27
- /** A fixed clock returning a constant epoch-ms timestamp for determinism. */
28
- const fixedClock = () => 1_700_000_000_000;
29
- test("putStream streams bytes to disk and computes metadata like put", async () => {
30
- const root = await tempRoot();
31
- const driver = new LocalStorageDriver({ root, clock: fixedClock });
32
- const payload = Buffer.from("hello local streaming world");
33
- // Feed the payload across multiple chunks to exercise incremental hashing.
34
- const source = Readable.from([
35
- payload.subarray(0, 6),
36
- payload.subarray(6, 15),
37
- payload.subarray(15),
38
- ]);
39
- const metadata = await driver.putStream("docs/stream.txt", source, {
40
- contentType: "text/plain",
41
- });
42
- assert.equal(metadata.key, "docs/stream.txt");
43
- assert.equal(metadata.size, payload.byteLength);
44
- assert.equal(metadata.contentType, "text/plain");
45
- assert.equal(metadata.createdAt, fixedClock());
46
- assert.equal(metadata.updatedAt, fixedClock());
47
- // The bytes were actually written to root/<key> on disk.
48
- const onDisk = await fs.readFile(path.join(root, "docs/stream.txt"));
49
- assert.deepEqual(onDisk, payload);
50
- await fs.rm(root, { recursive: true, force: true });
51
- });
52
- test("putStream metadata matches an equivalent buffered put", async () => {
53
- const rootA = await tempRoot();
54
- const rootB = await tempRoot();
55
- const streamDriver = new LocalStorageDriver({ root: rootA, clock: fixedClock });
56
- const putDriver = new LocalStorageDriver({ root: rootB, clock: fixedClock });
57
- const payload = Buffer.from("consistency across write paths");
58
- const viaStream = await streamDriver.putStream("k", Readable.from([payload]), { contentType: "application/octet-stream" });
59
- const viaPut = await putDriver.put("k", new Uint8Array(payload), {
60
- contentType: "application/octet-stream",
61
- });
62
- assert.equal(viaStream.size, viaPut.size);
63
- assert.equal(viaStream.checksum, viaPut.checksum);
64
- assert.equal(viaStream.etag, viaPut.etag);
65
- await fs.rm(rootA, { recursive: true, force: true });
66
- await fs.rm(rootB, { recursive: true, force: true });
67
- });
68
- test("putStream overwrite preserves the original createdAt", async () => {
69
- const root = await tempRoot();
70
- let nowValue = 1_700_000_000_000;
71
- const driver = new LocalStorageDriver({ root, clock: () => nowValue });
72
- const first = await driver.putStream("over/write", Readable.from([Buffer.from("v1")]), {});
73
- nowValue = 1_700_000_005_000;
74
- const second = await driver.putStream("over/write", Readable.from([Buffer.from("v2 longer")]), {});
75
- assert.equal(second.createdAt, first.createdAt);
76
- assert.equal(second.updatedAt, nowValue);
77
- assert.ok(second.updatedAt > second.createdAt);
78
- await fs.rm(root, { recursive: true, force: true });
79
- });
80
- test("getStream returns a Readable of the stored bytes emitted intact", async () => {
81
- const root = await tempRoot();
82
- const driver = new LocalStorageDriver({ root, clock: fixedClock });
83
- const payload = Buffer.from("downloadable content");
84
- await driver.put("file.bin", new Uint8Array(payload), {});
85
- const stream = await driver.getStream("file.bin");
86
- assert.ok(stream instanceof Readable);
87
- const out = await streamToBuffer(stream);
88
- assert.deepEqual(out, payload);
89
- await fs.rm(root, { recursive: true, force: true });
90
- });
91
- test("putStream -> getStream round-trip preserves the original bytes", async () => {
92
- const root = await tempRoot();
93
- const driver = new LocalStorageDriver({ root, clock: fixedClock });
94
- const payload = Buffer.from([0, 1, 2, 3, 255, 254, 128, 42, 7]);
95
- await driver.putStream("round/trip", Readable.from([payload]), {});
96
- const out = await streamToBuffer(await driver.getStream("round/trip"));
97
- assert.deepEqual(out, payload);
98
- await fs.rm(root, { recursive: true, force: true });
99
- });
100
- test("getStream throws NotFoundError for a missing key", async () => {
101
- const root = await tempRoot();
102
- const driver = new LocalStorageDriver({ root, clock: fixedClock });
103
- await assert.rejects(() => driver.getStream("missing/key"), NotFoundError);
104
- await fs.rm(root, { recursive: true, force: true });
105
- });
106
- test("putStream rejects and leaves no visible object when the source errors", async () => {
107
- const root = await tempRoot();
108
- const driver = new LocalStorageDriver({ root, clock: fixedClock });
109
- const failing = new Readable({
110
- read() {
111
- this.destroy(new Error("source failure"));
112
- },
113
- });
114
- await assert.rejects(() => driver.putStream("partial/key", failing, {}), /source failure/);
115
- // No metadata sidecar was written, so the object is not visible.
116
- assert.equal(await driver.stat("partial/key"), null);
117
- const result = await driver.get("partial/key");
118
- assert.equal(result.found, false);
119
- await fs.rm(root, { recursive: true, force: true });
120
- });
121
- //# sourceMappingURL=local-streaming.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-streaming.test.js","sourceRoot":"","sources":["../../src/tests/local-streaming.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=memory-driver.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory-driver.test.d.ts","sourceRoot":"","sources":["../../src/tests/memory-driver.test.ts"],"names":[],"mappings":""}