@streetjs/storage 1.0.0

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 (363) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +719 -0
  3. package/dist/access.d.ts +95 -0
  4. package/dist/access.d.ts.map +1 -0
  5. package/dist/access.js +114 -0
  6. package/dist/access.js.map +1 -0
  7. package/dist/cli/commands.d.ts +88 -0
  8. package/dist/cli/commands.d.ts.map +1 -0
  9. package/dist/cli/commands.js +369 -0
  10. package/dist/cli/commands.js.map +1 -0
  11. package/dist/cli/generators.d.ts +41 -0
  12. package/dist/cli/generators.d.ts.map +1 -0
  13. package/dist/cli/generators.js +119 -0
  14. package/dist/cli/generators.js.map +1 -0
  15. package/dist/directory.d.ts +88 -0
  16. package/dist/directory.d.ts.map +1 -0
  17. package/dist/directory.js +148 -0
  18. package/dist/directory.js.map +1 -0
  19. package/dist/driver.d.ts +83 -0
  20. package/dist/driver.d.ts.map +1 -0
  21. package/dist/driver.js +16 -0
  22. package/dist/driver.js.map +1 -0
  23. package/dist/drivers/azure.d.ts +239 -0
  24. package/dist/drivers/azure.d.ts.map +1 -0
  25. package/dist/drivers/azure.js +476 -0
  26. package/dist/drivers/azure.js.map +1 -0
  27. package/dist/drivers/backblaze.d.ts +105 -0
  28. package/dist/drivers/backblaze.d.ts.map +1 -0
  29. package/dist/drivers/backblaze.js +279 -0
  30. package/dist/drivers/backblaze.js.map +1 -0
  31. package/dist/drivers/gcs.d.ts +239 -0
  32. package/dist/drivers/gcs.d.ts.map +1 -0
  33. package/dist/drivers/gcs.js +454 -0
  34. package/dist/drivers/gcs.js.map +1 -0
  35. package/dist/drivers/local.d.ts +126 -0
  36. package/dist/drivers/local.d.ts.map +1 -0
  37. package/dist/drivers/local.js +321 -0
  38. package/dist/drivers/local.js.map +1 -0
  39. package/dist/drivers/memory.d.ts +104 -0
  40. package/dist/drivers/memory.d.ts.map +1 -0
  41. package/dist/drivers/memory.js +197 -0
  42. package/dist/drivers/memory.js.map +1 -0
  43. package/dist/drivers/minio.d.ts +90 -0
  44. package/dist/drivers/minio.d.ts.map +1 -0
  45. package/dist/drivers/minio.js +276 -0
  46. package/dist/drivers/minio.js.map +1 -0
  47. package/dist/drivers/r2.d.ts +100 -0
  48. package/dist/drivers/r2.d.ts.map +1 -0
  49. package/dist/drivers/r2.js +240 -0
  50. package/dist/drivers/r2.js.map +1 -0
  51. package/dist/drivers/s3-base.d.ts +270 -0
  52. package/dist/drivers/s3-base.d.ts.map +1 -0
  53. package/dist/drivers/s3-base.js +436 -0
  54. package/dist/drivers/s3-base.js.map +1 -0
  55. package/dist/drivers/s3.d.ts +111 -0
  56. package/dist/drivers/s3.d.ts.map +1 -0
  57. package/dist/drivers/s3.js +311 -0
  58. package/dist/drivers/s3.js.map +1 -0
  59. package/dist/drivers/supabase.d.ts +246 -0
  60. package/dist/drivers/supabase.d.ts.map +1 -0
  61. package/dist/drivers/supabase.js +502 -0
  62. package/dist/drivers/supabase.js.map +1 -0
  63. package/dist/errors.d.ts +115 -0
  64. package/dist/errors.d.ts.map +1 -0
  65. package/dist/errors.js +131 -0
  66. package/dist/errors.js.map +1 -0
  67. package/dist/examples/storage-demo.d.ts +53 -0
  68. package/dist/examples/storage-demo.d.ts.map +1 -0
  69. package/dist/examples/storage-demo.js +242 -0
  70. package/dist/examples/storage-demo.js.map +1 -0
  71. package/dist/facade.d.ts +192 -0
  72. package/dist/facade.d.ts.map +1 -0
  73. package/dist/facade.js +898 -0
  74. package/dist/facade.js.map +1 -0
  75. package/dist/image.d.ts +94 -0
  76. package/dist/image.d.ts.map +1 -0
  77. package/dist/image.js +224 -0
  78. package/dist/image.js.map +1 -0
  79. package/dist/index.d.ts +47 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +53 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/integrations/events.d.ts +108 -0
  84. package/dist/integrations/events.d.ts.map +1 -0
  85. package/dist/integrations/events.js +111 -0
  86. package/dist/integrations/events.js.map +1 -0
  87. package/dist/integrations/queue.d.ts +89 -0
  88. package/dist/integrations/queue.d.ts.map +1 -0
  89. package/dist/integrations/queue.js +91 -0
  90. package/dist/integrations/queue.js.map +1 -0
  91. package/dist/integrations/realtime.d.ts +95 -0
  92. package/dist/integrations/realtime.d.ts.map +1 -0
  93. package/dist/integrations/realtime.js +90 -0
  94. package/dist/integrations/realtime.js.map +1 -0
  95. package/dist/lifecycle.d.ts +137 -0
  96. package/dist/lifecycle.d.ts.map +1 -0
  97. package/dist/lifecycle.js +240 -0
  98. package/dist/lifecycle.js.map +1 -0
  99. package/dist/metadata.d.ts +109 -0
  100. package/dist/metadata.d.ts.map +1 -0
  101. package/dist/metadata.js +139 -0
  102. package/dist/metadata.js.map +1 -0
  103. package/dist/multipart.d.ts +108 -0
  104. package/dist/multipart.d.ts.map +1 -0
  105. package/dist/multipart.js +200 -0
  106. package/dist/multipart.js.map +1 -0
  107. package/dist/observability.d.ts +82 -0
  108. package/dist/observability.d.ts.map +1 -0
  109. package/dist/observability.js +175 -0
  110. package/dist/observability.js.map +1 -0
  111. package/dist/plugin.d.ts +82 -0
  112. package/dist/plugin.d.ts.map +1 -0
  113. package/dist/plugin.js +100 -0
  114. package/dist/plugin.js.map +1 -0
  115. package/dist/resumable.d.ts +118 -0
  116. package/dist/resumable.d.ts.map +1 -0
  117. package/dist/resumable.js +223 -0
  118. package/dist/resumable.js.map +1 -0
  119. package/dist/search.d.ts +57 -0
  120. package/dist/search.d.ts.map +1 -0
  121. package/dist/search.js +172 -0
  122. package/dist/search.js.map +1 -0
  123. package/dist/signed-url.d.ts +110 -0
  124. package/dist/signed-url.d.ts.map +1 -0
  125. package/dist/signed-url.js +237 -0
  126. package/dist/signed-url.js.map +1 -0
  127. package/dist/testing/index.d.ts +219 -0
  128. package/dist/testing/index.d.ts.map +1 -0
  129. package/dist/testing/index.js +393 -0
  130. package/dist/testing/index.js.map +1 -0
  131. package/dist/tests/access.test.d.ts +2 -0
  132. package/dist/tests/access.test.d.ts.map +1 -0
  133. package/dist/tests/access.test.js +270 -0
  134. package/dist/tests/access.test.js.map +1 -0
  135. package/dist/tests/azure-driver.test.d.ts +2 -0
  136. package/dist/tests/azure-driver.test.d.ts.map +1 -0
  137. package/dist/tests/azure-driver.test.js +183 -0
  138. package/dist/tests/azure-driver.test.js.map +1 -0
  139. package/dist/tests/backblaze-driver.test.d.ts +2 -0
  140. package/dist/tests/backblaze-driver.test.d.ts.map +1 -0
  141. package/dist/tests/backblaze-driver.test.js +185 -0
  142. package/dist/tests/backblaze-driver.test.js.map +1 -0
  143. package/dist/tests/bridge-degradation.test.d.ts +2 -0
  144. package/dist/tests/bridge-degradation.test.d.ts.map +1 -0
  145. package/dist/tests/bridge-degradation.test.js +138 -0
  146. package/dist/tests/bridge-degradation.test.js.map +1 -0
  147. package/dist/tests/cli.test.d.ts +2 -0
  148. package/dist/tests/cli.test.d.ts.map +1 -0
  149. package/dist/tests/cli.test.js +127 -0
  150. package/dist/tests/cli.test.js.map +1 -0
  151. package/dist/tests/contract.d.ts +131 -0
  152. package/dist/tests/contract.d.ts.map +1 -0
  153. package/dist/tests/contract.js +222 -0
  154. package/dist/tests/contract.js.map +1 -0
  155. package/dist/tests/contract.test.d.ts +2 -0
  156. package/dist/tests/contract.test.d.ts.map +1 -0
  157. package/dist/tests/contract.test.js +110 -0
  158. package/dist/tests/contract.test.js.map +1 -0
  159. package/dist/tests/directory.test.d.ts +2 -0
  160. package/dist/tests/directory.test.d.ts.map +1 -0
  161. package/dist/tests/directory.test.js +125 -0
  162. package/dist/tests/directory.test.js.map +1 -0
  163. package/dist/tests/errors.test.d.ts +2 -0
  164. package/dist/tests/errors.test.d.ts.map +1 -0
  165. package/dist/tests/errors.test.js +93 -0
  166. package/dist/tests/errors.test.js.map +1 -0
  167. package/dist/tests/events-bridge.test.d.ts +2 -0
  168. package/dist/tests/events-bridge.test.d.ts.map +1 -0
  169. package/dist/tests/events-bridge.test.js +228 -0
  170. package/dist/tests/events-bridge.test.js.map +1 -0
  171. package/dist/tests/example-smoke.test.d.ts +2 -0
  172. package/dist/tests/example-smoke.test.d.ts.map +1 -0
  173. package/dist/tests/example-smoke.test.js +34 -0
  174. package/dist/tests/example-smoke.test.js.map +1 -0
  175. package/dist/tests/gcs-driver.test.d.ts +2 -0
  176. package/dist/tests/gcs-driver.test.d.ts.map +1 -0
  177. package/dist/tests/gcs-driver.test.js +197 -0
  178. package/dist/tests/gcs-driver.test.js.map +1 -0
  179. package/dist/tests/image.test.d.ts +2 -0
  180. package/dist/tests/image.test.d.ts.map +1 -0
  181. package/dist/tests/image.test.js +102 -0
  182. package/dist/tests/image.test.js.map +1 -0
  183. package/dist/tests/lifecycle.test.d.ts +2 -0
  184. package/dist/tests/lifecycle.test.d.ts.map +1 -0
  185. package/dist/tests/lifecycle.test.js +171 -0
  186. package/dist/tests/lifecycle.test.js.map +1 -0
  187. package/dist/tests/local-driver.test.d.ts +2 -0
  188. package/dist/tests/local-driver.test.d.ts.map +1 -0
  189. package/dist/tests/local-driver.test.js +153 -0
  190. package/dist/tests/local-driver.test.js.map +1 -0
  191. package/dist/tests/local-streaming.test.d.ts +2 -0
  192. package/dist/tests/local-streaming.test.d.ts.map +1 -0
  193. package/dist/tests/local-streaming.test.js +121 -0
  194. package/dist/tests/local-streaming.test.js.map +1 -0
  195. package/dist/tests/memory-driver.test.d.ts +2 -0
  196. package/dist/tests/memory-driver.test.d.ts.map +1 -0
  197. package/dist/tests/memory-driver.test.js +180 -0
  198. package/dist/tests/memory-driver.test.js.map +1 -0
  199. package/dist/tests/memory-streaming.test.d.ts +2 -0
  200. package/dist/tests/memory-streaming.test.d.ts.map +1 -0
  201. package/dist/tests/memory-streaming.test.js +92 -0
  202. package/dist/tests/memory-streaming.test.js.map +1 -0
  203. package/dist/tests/minio-driver.test.d.ts +2 -0
  204. package/dist/tests/minio-driver.test.d.ts.map +1 -0
  205. package/dist/tests/minio-driver.test.js +146 -0
  206. package/dist/tests/minio-driver.test.js.map +1 -0
  207. package/dist/tests/non-s3-integration.test.d.ts +2 -0
  208. package/dist/tests/non-s3-integration.test.d.ts.map +1 -0
  209. package/dist/tests/non-s3-integration.test.js +201 -0
  210. package/dist/tests/non-s3-integration.test.js.map +1 -0
  211. package/dist/tests/observability.registration.test.d.ts +2 -0
  212. package/dist/tests/observability.registration.test.d.ts.map +1 -0
  213. package/dist/tests/observability.registration.test.js +103 -0
  214. package/dist/tests/observability.registration.test.js.map +1 -0
  215. package/dist/tests/observability.test.d.ts +2 -0
  216. package/dist/tests/observability.test.d.ts.map +1 -0
  217. package/dist/tests/observability.test.js +240 -0
  218. package/dist/tests/observability.test.js.map +1 -0
  219. package/dist/tests/plugin.test.d.ts +2 -0
  220. package/dist/tests/plugin.test.d.ts.map +1 -0
  221. package/dist/tests/plugin.test.js +112 -0
  222. package/dist/tests/plugin.test.js.map +1 -0
  223. package/dist/tests/prop-concurrent.test.d.ts +2 -0
  224. package/dist/tests/prop-concurrent.test.d.ts.map +1 -0
  225. package/dist/tests/prop-concurrent.test.js +59 -0
  226. package/dist/tests/prop-concurrent.test.js.map +1 -0
  227. package/dist/tests/prop-copy.test.d.ts +2 -0
  228. package/dist/tests/prop-copy.test.d.ts.map +1 -0
  229. package/dist/tests/prop-copy.test.js +63 -0
  230. package/dist/tests/prop-copy.test.js.map +1 -0
  231. package/dist/tests/prop-delete.test.d.ts +2 -0
  232. package/dist/tests/prop-delete.test.d.ts.map +1 -0
  233. package/dist/tests/prop-delete.test.js +35 -0
  234. package/dist/tests/prop-delete.test.js.map +1 -0
  235. package/dist/tests/prop-directory.test.d.ts +2 -0
  236. package/dist/tests/prop-directory.test.d.ts.map +1 -0
  237. package/dist/tests/prop-directory.test.js +118 -0
  238. package/dist/tests/prop-directory.test.js.map +1 -0
  239. package/dist/tests/prop-driver-conformance.test.d.ts +2 -0
  240. package/dist/tests/prop-driver-conformance.test.d.ts.map +1 -0
  241. package/dist/tests/prop-driver-conformance.test.js +110 -0
  242. package/dist/tests/prop-driver-conformance.test.js.map +1 -0
  243. package/dist/tests/prop-driver-equivalence.test.d.ts +2 -0
  244. package/dist/tests/prop-driver-equivalence.test.d.ts.map +1 -0
  245. package/dist/tests/prop-driver-equivalence.test.js +163 -0
  246. package/dist/tests/prop-driver-equivalence.test.js.map +1 -0
  247. package/dist/tests/prop-lifecycle.test.d.ts +2 -0
  248. package/dist/tests/prop-lifecycle.test.d.ts.map +1 -0
  249. package/dist/tests/prop-lifecycle.test.js +83 -0
  250. package/dist/tests/prop-lifecycle.test.js.map +1 -0
  251. package/dist/tests/prop-list.test.d.ts +2 -0
  252. package/dist/tests/prop-list.test.d.ts.map +1 -0
  253. package/dist/tests/prop-list.test.js +53 -0
  254. package/dist/tests/prop-list.test.js.map +1 -0
  255. package/dist/tests/prop-metadata.test.d.ts +2 -0
  256. package/dist/tests/prop-metadata.test.d.ts.map +1 -0
  257. package/dist/tests/prop-metadata.test.js +87 -0
  258. package/dist/tests/prop-metadata.test.js.map +1 -0
  259. package/dist/tests/prop-move.test.d.ts +2 -0
  260. package/dist/tests/prop-move.test.d.ts.map +1 -0
  261. package/dist/tests/prop-move.test.js +67 -0
  262. package/dist/tests/prop-move.test.js.map +1 -0
  263. package/dist/tests/prop-multipart-abort.test.d.ts +2 -0
  264. package/dist/tests/prop-multipart-abort.test.d.ts.map +1 -0
  265. package/dist/tests/prop-multipart-abort.test.js +48 -0
  266. package/dist/tests/prop-multipart-abort.test.js.map +1 -0
  267. package/dist/tests/prop-multipart.test.d.ts +2 -0
  268. package/dist/tests/prop-multipart.test.d.ts.map +1 -0
  269. package/dist/tests/prop-multipart.test.js +65 -0
  270. package/dist/tests/prop-multipart.test.js.map +1 -0
  271. package/dist/tests/prop-resumable.test.d.ts +2 -0
  272. package/dist/tests/prop-resumable.test.d.ts.map +1 -0
  273. package/dist/tests/prop-resumable.test.js +78 -0
  274. package/dist/tests/prop-resumable.test.js.map +1 -0
  275. package/dist/tests/prop-search.test.d.ts +2 -0
  276. package/dist/tests/prop-search.test.d.ts.map +1 -0
  277. package/dist/tests/prop-search.test.js +120 -0
  278. package/dist/tests/prop-search.test.js.map +1 -0
  279. package/dist/tests/prop-signed-url.test.d.ts +2 -0
  280. package/dist/tests/prop-signed-url.test.d.ts.map +1 -0
  281. package/dist/tests/prop-signed-url.test.js +74 -0
  282. package/dist/tests/prop-signed-url.test.js.map +1 -0
  283. package/dist/tests/prop-streaming.test.d.ts +2 -0
  284. package/dist/tests/prop-streaming.test.d.ts.map +1 -0
  285. package/dist/tests/prop-streaming.test.js +34 -0
  286. package/dist/tests/prop-streaming.test.js.map +1 -0
  287. package/dist/tests/prop-upload-download.test.d.ts +2 -0
  288. package/dist/tests/prop-upload-download.test.d.ts.map +1 -0
  289. package/dist/tests/prop-upload-download.test.js +30 -0
  290. package/dist/tests/prop-upload-download.test.js.map +1 -0
  291. package/dist/tests/prop-validation.test.d.ts +2 -0
  292. package/dist/tests/prop-validation.test.d.ts.map +1 -0
  293. package/dist/tests/prop-validation.test.js +50 -0
  294. package/dist/tests/prop-validation.test.js.map +1 -0
  295. package/dist/tests/prop-versioning.test.d.ts +2 -0
  296. package/dist/tests/prop-versioning.test.d.ts.map +1 -0
  297. package/dist/tests/prop-versioning.test.js +74 -0
  298. package/dist/tests/prop-versioning.test.js.map +1 -0
  299. package/dist/tests/queue-bridge.test.d.ts +2 -0
  300. package/dist/tests/queue-bridge.test.d.ts.map +1 -0
  301. package/dist/tests/queue-bridge.test.js +111 -0
  302. package/dist/tests/queue-bridge.test.js.map +1 -0
  303. package/dist/tests/r2-driver.test.d.ts +2 -0
  304. package/dist/tests/r2-driver.test.d.ts.map +1 -0
  305. package/dist/tests/r2-driver.test.js +143 -0
  306. package/dist/tests/r2-driver.test.js.map +1 -0
  307. package/dist/tests/realtime-bridge.test.d.ts +2 -0
  308. package/dist/tests/realtime-bridge.test.d.ts.map +1 -0
  309. package/dist/tests/realtime-bridge.test.js +106 -0
  310. package/dist/tests/realtime-bridge.test.js.map +1 -0
  311. package/dist/tests/resumable.test.d.ts +2 -0
  312. package/dist/tests/resumable.test.d.ts.map +1 -0
  313. package/dist/tests/resumable.test.js +104 -0
  314. package/dist/tests/resumable.test.js.map +1 -0
  315. package/dist/tests/s3-base.test.d.ts +2 -0
  316. package/dist/tests/s3-base.test.d.ts.map +1 -0
  317. package/dist/tests/s3-base.test.js +289 -0
  318. package/dist/tests/s3-base.test.js.map +1 -0
  319. package/dist/tests/s3-integration.test.d.ts +2 -0
  320. package/dist/tests/s3-integration.test.d.ts.map +1 -0
  321. package/dist/tests/s3-integration.test.js +270 -0
  322. package/dist/tests/s3-integration.test.js.map +1 -0
  323. package/dist/tests/s3.test.d.ts +2 -0
  324. package/dist/tests/s3.test.d.ts.map +1 -0
  325. package/dist/tests/s3.test.js +203 -0
  326. package/dist/tests/s3.test.js.map +1 -0
  327. package/dist/tests/scaffold.test.d.ts +2 -0
  328. package/dist/tests/scaffold.test.d.ts.map +1 -0
  329. package/dist/tests/scaffold.test.js +13 -0
  330. package/dist/tests/scaffold.test.js.map +1 -0
  331. package/dist/tests/search.test.d.ts +2 -0
  332. package/dist/tests/search.test.d.ts.map +1 -0
  333. package/dist/tests/search.test.js +106 -0
  334. package/dist/tests/search.test.js.map +1 -0
  335. package/dist/tests/supabase-driver.test.d.ts +2 -0
  336. package/dist/tests/supabase-driver.test.d.ts.map +1 -0
  337. package/dist/tests/supabase-driver.test.js +196 -0
  338. package/dist/tests/supabase-driver.test.js.map +1 -0
  339. package/dist/tests/testing-utilities.test.d.ts +2 -0
  340. package/dist/tests/testing-utilities.test.d.ts.map +1 -0
  341. package/dist/tests/testing-utilities.test.js +138 -0
  342. package/dist/tests/testing-utilities.test.js.map +1 -0
  343. package/dist/tests/validation.test.d.ts +2 -0
  344. package/dist/tests/validation.test.d.ts.map +1 -0
  345. package/dist/tests/validation.test.js +135 -0
  346. package/dist/tests/validation.test.js.map +1 -0
  347. package/dist/tests/versioning.test.d.ts +2 -0
  348. package/dist/tests/versioning.test.d.ts.map +1 -0
  349. package/dist/tests/versioning.test.js +128 -0
  350. package/dist/tests/versioning.test.js.map +1 -0
  351. package/dist/types.d.ts +232 -0
  352. package/dist/types.d.ts.map +1 -0
  353. package/dist/types.js +23 -0
  354. package/dist/types.js.map +1 -0
  355. package/dist/validation.d.ts +105 -0
  356. package/dist/validation.d.ts.map +1 -0
  357. package/dist/validation.js +225 -0
  358. package/dist/validation.js.map +1 -0
  359. package/dist/versioning.d.ts +100 -0
  360. package/dist/versioning.d.ts.map +1 -0
  361. package/dist/versioning.js +179 -0
  362. package/dist/versioning.js.map +1 -0
  363. package/package.json +137 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facade.js","sourceRoot":"","sources":["../src/facade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * @streetjs/storage — the Image Processor over a structural codec (task 19.1).
3
+ *
4
+ * The Image Processor generates transformed / reformatted variants of stored
5
+ * image objects. Application code reaches it as `storage.images` and calls
6
+ * {@link ImageProcessor.transform | transform(key, operations)}. All actual
7
+ * pixel work is delegated to the optional, structural {@link ImageCodec}
8
+ * supplied as `config.imageCodec`; this module owns only the provider-agnostic
9
+ * orchestration:
10
+ *
11
+ * - **Source resolution & guarding.** The source object is read through the
12
+ * driver. A missing object raises {@link NotFoundError}. A source whose
13
+ * content type is not an image raises {@link UnsupportedImageError}, and — as
14
+ * Requirement 14.4 requires — the source object is never modified: the guard
15
+ * runs before any codec call or any write, and the derived variant is always
16
+ * written to a distinct reserved key, so the source bytes are left untouched
17
+ * regardless of whether processing would otherwise succeed.
18
+ * - **Transformations (Requirement 14.1).** `resize`, `crop`, `rotate`, `fit`,
19
+ * `thumbnail`, and `compress` are assembled into a single codec operation and
20
+ * performed THROUGH the injected {@link ImageCodec}. `thumbnail` additionally
21
+ * projects onto a square `resize` so minimal codecs that only understand
22
+ * `resize` still produce a thumbnail.
23
+ * - **Format conversion (Requirement 14.2).** Output in `webp`, `avif`, `png`,
24
+ * or `jpeg` is selected via `operations.format` (defaulting to the source's
25
+ * own format); any other requested output format raises
26
+ * {@link UnsupportedImageError}.
27
+ * - **Caching (Requirement 14.3).** Identical requests — the same source object
28
+ * (keyed by its content checksum) with the same transformation parameters —
29
+ * return a cached result without re-invoking the codec or re-writing the
30
+ * variant.
31
+ *
32
+ * The public {@link ImageProcessor}/{@link ImageOperations} types are owned by
33
+ * `facade.ts` (and re-exported from `index.ts`); they are imported here
34
+ * type-only so there is no runtime import cycle between the two modules, exactly
35
+ * as `directory.ts` relates to `facade.ts`.
36
+ *
37
+ * _Requirements: 14.1, 14.2, 14.3, 14.4_
38
+ */
39
+ import type { StorageDriver } from "./driver.js";
40
+ import type { ImageOperations, ImageProcessor } from "./facade.js";
41
+ import type { ImageCodec, StorageObjectMetadata } from "./types.js";
42
+ /** Reserved key prefix under which derived image variants are written. */
43
+ export declare const IMAGE_VARIANT_PREFIX = ".image-variants/";
44
+ /**
45
+ * A concrete {@link ImageProcessor} over any {@link StorageDriver}, delegating
46
+ * pixel work to the injected structural {@link ImageCodec}. It holds the driver,
47
+ * the optional codec, and an in-memory cache of previously produced variant
48
+ * metadata keyed by `(source key, source checksum, operation signature)` so an
49
+ * identical repeated request is served from cache (Requirement 14.3).
50
+ */
51
+ export declare class StorageImageProcessor implements ImageProcessor {
52
+ private readonly driver;
53
+ private readonly codec?;
54
+ /** Cache of produced variant metadata, keyed by the transform signature. */
55
+ private readonly cache;
56
+ constructor(driver: StorageDriver, codec?: ImageCodec);
57
+ /**
58
+ * Produce a transformed / reformatted variant of the image stored at `key`
59
+ * and return the variant's {@link StorageObjectMetadata}.
60
+ *
61
+ * The source object is read first and guarded: a missing object throws
62
+ * {@link NotFoundError}; a non-image source throws {@link UnsupportedImageError}
63
+ * before any codec call or write, so the source object is never modified
64
+ * (Requirement 14.4). Supported transformations (resize/crop/rotate/fit/
65
+ * thumbnail/compress — Requirement 14.1) and output formats (webp/avif/png/
66
+ * jpeg — Requirement 14.2) are performed through the injected codec. An
67
+ * identical prior request (same source content + same parameters) is served
68
+ * from the in-memory cache without re-invoking the codec (Requirement 14.3).
69
+ */
70
+ transform(key: string, operations: ImageOperations): Promise<StorageObjectMetadata>;
71
+ /**
72
+ * Assemble the requested {@link ImageOperations} into a single
73
+ * {@link CodecOperation}. `thumbnail` additionally projects onto a square
74
+ * `resize` (unless `resize` is explicitly provided) so a minimal codec that
75
+ * only understands `resize` still yields a thumbnail; `compress` supplies the
76
+ * `quality` when an explicit `quality` is not set.
77
+ */
78
+ private toCodecOperation;
79
+ /**
80
+ * Build a stable signature for a transform request from the source key, the
81
+ * source content checksum (so a changed source is a cache miss), the
82
+ * normalized operations, and the resolved output format. Used both as the
83
+ * cache key and to derive the variant's storage key.
84
+ */
85
+ private signature;
86
+ /**
87
+ * Derive the reserved storage key the variant is written under. It nests the
88
+ * variant beneath {@link IMAGE_VARIANT_PREFIX} and the source key, keyed by
89
+ * the transform signature so distinct transforms of the same source never
90
+ * collide and the source object's own key is never targeted (Requirement 14.4).
91
+ */
92
+ private variantKey;
93
+ }
94
+ //# sourceMappingURL=image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../src/image.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EAAe,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEhF,OAAO,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEpE,0EAA0E;AAC1E,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AA4DvD;;;;;;GAMG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAa;IAEpC,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4C;gBAEtD,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,UAAU;IAKrD;;;;;;;;;;;;OAYG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAoEzF;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IA8BxB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAmBjB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;CAGnB"}
package/dist/image.js ADDED
@@ -0,0 +1,224 @@
1
+ /**
2
+ * @streetjs/storage — the Image Processor over a structural codec (task 19.1).
3
+ *
4
+ * The Image Processor generates transformed / reformatted variants of stored
5
+ * image objects. Application code reaches it as `storage.images` and calls
6
+ * {@link ImageProcessor.transform | transform(key, operations)}. All actual
7
+ * pixel work is delegated to the optional, structural {@link ImageCodec}
8
+ * supplied as `config.imageCodec`; this module owns only the provider-agnostic
9
+ * orchestration:
10
+ *
11
+ * - **Source resolution & guarding.** The source object is read through the
12
+ * driver. A missing object raises {@link NotFoundError}. A source whose
13
+ * content type is not an image raises {@link UnsupportedImageError}, and — as
14
+ * Requirement 14.4 requires — the source object is never modified: the guard
15
+ * runs before any codec call or any write, and the derived variant is always
16
+ * written to a distinct reserved key, so the source bytes are left untouched
17
+ * regardless of whether processing would otherwise succeed.
18
+ * - **Transformations (Requirement 14.1).** `resize`, `crop`, `rotate`, `fit`,
19
+ * `thumbnail`, and `compress` are assembled into a single codec operation and
20
+ * performed THROUGH the injected {@link ImageCodec}. `thumbnail` additionally
21
+ * projects onto a square `resize` so minimal codecs that only understand
22
+ * `resize` still produce a thumbnail.
23
+ * - **Format conversion (Requirement 14.2).** Output in `webp`, `avif`, `png`,
24
+ * or `jpeg` is selected via `operations.format` (defaulting to the source's
25
+ * own format); any other requested output format raises
26
+ * {@link UnsupportedImageError}.
27
+ * - **Caching (Requirement 14.3).** Identical requests — the same source object
28
+ * (keyed by its content checksum) with the same transformation parameters —
29
+ * return a cached result without re-invoking the codec or re-writing the
30
+ * variant.
31
+ *
32
+ * The public {@link ImageProcessor}/{@link ImageOperations} types are owned by
33
+ * `facade.ts` (and re-exported from `index.ts`); they are imported here
34
+ * type-only so there is no runtime import cycle between the two modules, exactly
35
+ * as `directory.ts` relates to `facade.ts`.
36
+ *
37
+ * _Requirements: 14.1, 14.2, 14.3, 14.4_
38
+ */
39
+ import { createHash } from "node:crypto";
40
+ import { NotFoundError, StorageError, UnsupportedImageError } from "./errors.js";
41
+ import { normalizeMetadata } from "./metadata.js";
42
+ /** Reserved key prefix under which derived image variants are written. */
43
+ export const IMAGE_VARIANT_PREFIX = ".image-variants/";
44
+ /** The output formats the processor can emit (Requirement 14.2). */
45
+ const SUPPORTED_OUTPUT_FORMATS = new Set([
46
+ "webp",
47
+ "avif",
48
+ "png",
49
+ "jpeg",
50
+ ]);
51
+ /**
52
+ * Map a source object content type onto one of the supported output
53
+ * {@link ImageFormat}s, used as the default output format when a transform does
54
+ * not request an explicit `format`. Returns `undefined` when the source content
55
+ * type is not an image (the caller turns that into an
56
+ * {@link UnsupportedImageError}).
57
+ */
58
+ function contentTypeToFormat(contentType) {
59
+ const lower = contentType.toLowerCase();
60
+ if (!lower.startsWith("image/")) {
61
+ return undefined;
62
+ }
63
+ const subtype = lower.slice("image/".length).split(";")[0]?.trim() ?? "";
64
+ switch (subtype) {
65
+ case "jpeg":
66
+ case "jpg":
67
+ return "jpeg";
68
+ case "png":
69
+ return "png";
70
+ case "webp":
71
+ return "webp";
72
+ case "avif":
73
+ return "avif";
74
+ default:
75
+ // A recognised image content type we do not emit natively still counts as
76
+ // an image source; default its output to png so conversion is possible.
77
+ return "png";
78
+ }
79
+ }
80
+ /**
81
+ * A concrete {@link ImageProcessor} over any {@link StorageDriver}, delegating
82
+ * pixel work to the injected structural {@link ImageCodec}. It holds the driver,
83
+ * the optional codec, and an in-memory cache of previously produced variant
84
+ * metadata keyed by `(source key, source checksum, operation signature)` so an
85
+ * identical repeated request is served from cache (Requirement 14.3).
86
+ */
87
+ export class StorageImageProcessor {
88
+ driver;
89
+ codec;
90
+ /** Cache of produced variant metadata, keyed by the transform signature. */
91
+ cache = new Map();
92
+ constructor(driver, codec) {
93
+ this.driver = driver;
94
+ this.codec = codec;
95
+ }
96
+ /**
97
+ * Produce a transformed / reformatted variant of the image stored at `key`
98
+ * and return the variant's {@link StorageObjectMetadata}.
99
+ *
100
+ * The source object is read first and guarded: a missing object throws
101
+ * {@link NotFoundError}; a non-image source throws {@link UnsupportedImageError}
102
+ * before any codec call or write, so the source object is never modified
103
+ * (Requirement 14.4). Supported transformations (resize/crop/rotate/fit/
104
+ * thumbnail/compress — Requirement 14.1) and output formats (webp/avif/png/
105
+ * jpeg — Requirement 14.2) are performed through the injected codec. An
106
+ * identical prior request (same source content + same parameters) is served
107
+ * from the in-memory cache without re-invoking the codec (Requirement 14.3).
108
+ */
109
+ async transform(key, operations) {
110
+ // 1. Resolve the source. A missing object has no image to process.
111
+ const source = await this.driver.get(key);
112
+ if (!source.found) {
113
+ throw new NotFoundError(key, `Cannot transform image "${key}": object not found.`);
114
+ }
115
+ // 2. Guard: the source must be a supported image. This runs before any
116
+ // codec call and before any write, and the variant is written to a
117
+ // distinct reserved key, so the source object is never modified
118
+ // regardless of the requested operations (Requirement 14.4).
119
+ const sourceFormat = contentTypeToFormat(source.metadata.contentType);
120
+ if (sourceFormat === undefined) {
121
+ throw new UnsupportedImageError(`Cannot transform "${key}": content type "${source.metadata.contentType}" is not a ` +
122
+ `supported image format.`, { format: source.metadata.contentType, key });
123
+ }
124
+ // 3. Resolve the output format (Requirement 14.2). An explicit, unsupported
125
+ // output format is rejected without modifying the source.
126
+ const outputFormat = operations.format ?? sourceFormat;
127
+ if (!SUPPORTED_OUTPUT_FORMATS.has(outputFormat)) {
128
+ throw new UnsupportedImageError(`Cannot transform "${key}": output format "${String(operations.format)}" is not ` +
129
+ `supported. Supported output formats: webp, avif, png, jpeg.`, { format: String(operations.format), key });
130
+ }
131
+ // 4. Cache lookup keyed by source identity + operation signature so an
132
+ // identical repeated request returns the cached variant without touching
133
+ // the codec or the store again (Requirement 14.3).
134
+ const signature = this.signature(key, source.metadata.checksum, operations, outputFormat);
135
+ const cached = this.cache.get(signature);
136
+ if (cached !== undefined) {
137
+ return cached;
138
+ }
139
+ // 5. A codec is required to perform the pixel work.
140
+ if (this.codec === undefined) {
141
+ throw new StorageError(`Cannot transform image "${key}": no image codec is configured. Provide ` +
142
+ `"imageCodec" in the storage configuration to enable image processing.`);
143
+ }
144
+ // 6. Perform the transformation THROUGH the injected structural codec
145
+ // (Requirement 14.1). The derived bytes are written to a distinct
146
+ // reserved variant key, never back over the source.
147
+ const codecOperation = this.toCodecOperation(operations, outputFormat);
148
+ const processed = await this.codec.transform(source.bytes, codecOperation);
149
+ const variantKey = this.variantKey(key, signature, outputFormat);
150
+ const metadata = normalizeMetadata(await this.driver.put(variantKey, processed, {
151
+ contentType: `image/${outputFormat}`,
152
+ owner: source.metadata.owner,
153
+ tenant: source.metadata.tenant,
154
+ accessLevel: source.metadata.accessLevel,
155
+ }));
156
+ this.cache.set(signature, metadata);
157
+ return metadata;
158
+ }
159
+ /**
160
+ * Assemble the requested {@link ImageOperations} into a single
161
+ * {@link CodecOperation}. `thumbnail` additionally projects onto a square
162
+ * `resize` (unless `resize` is explicitly provided) so a minimal codec that
163
+ * only understands `resize` still yields a thumbnail; `compress` supplies the
164
+ * `quality` when an explicit `quality` is not set.
165
+ */
166
+ toCodecOperation(operations, outputFormat) {
167
+ const quality = operations.quality ?? operations.compress?.quality;
168
+ const operation = { format: outputFormat };
169
+ if (operations.resize !== undefined) {
170
+ operation.resize = operations.resize;
171
+ }
172
+ else if (operations.thumbnail !== undefined) {
173
+ operation.resize = { width: operations.thumbnail.size, height: operations.thumbnail.size };
174
+ }
175
+ if (operations.crop !== undefined) {
176
+ operation.crop = operations.crop;
177
+ }
178
+ if (operations.rotate !== undefined) {
179
+ operation.rotate = operations.rotate;
180
+ }
181
+ if (operations.fit !== undefined) {
182
+ operation.fit = operations.fit;
183
+ }
184
+ if (operations.thumbnail !== undefined) {
185
+ operation.thumbnail = operations.thumbnail;
186
+ }
187
+ if (operations.compress !== undefined) {
188
+ operation.compress = operations.compress;
189
+ }
190
+ if (quality !== undefined) {
191
+ operation.quality = quality;
192
+ }
193
+ return operation;
194
+ }
195
+ /**
196
+ * Build a stable signature for a transform request from the source key, the
197
+ * source content checksum (so a changed source is a cache miss), the
198
+ * normalized operations, and the resolved output format. Used both as the
199
+ * cache key and to derive the variant's storage key.
200
+ */
201
+ signature(key, checksum, operations, outputFormat) {
202
+ const canonical = JSON.stringify({
203
+ resize: operations.resize ?? null,
204
+ crop: operations.crop ?? null,
205
+ rotate: operations.rotate ?? null,
206
+ fit: operations.fit ?? null,
207
+ thumbnail: operations.thumbnail ?? null,
208
+ compress: operations.compress ?? null,
209
+ quality: operations.quality ?? null,
210
+ format: outputFormat,
211
+ });
212
+ return createHash("sha256").update(`${key}\u0000${checksum}\u0000${canonical}`).digest("hex");
213
+ }
214
+ /**
215
+ * Derive the reserved storage key the variant is written under. It nests the
216
+ * variant beneath {@link IMAGE_VARIANT_PREFIX} and the source key, keyed by
217
+ * the transform signature so distinct transforms of the same source never
218
+ * collide and the source object's own key is never targeted (Requirement 14.4).
219
+ */
220
+ variantKey(key, signature, outputFormat) {
221
+ return `${IMAGE_VARIANT_PREFIX}${key}/${signature.slice(0, 32)}.${outputFormat}`;
222
+ }
223
+ }
224
+ //# sourceMappingURL=image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../src/image.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @streetjs/storage
3
+ *
4
+ * Unified storage framework for StreetJS. This is the public entry point of the
5
+ * package: core types, errors, the driver contract, drivers, the storage
6
+ * facade, integrations, plugin, and CLI commands are re-exported from here.
7
+ */
8
+ /** The semantic version line of the storage framework package surface. */
9
+ export declare const STORAGE_FRAMEWORK_VERSION: "1.0.0";
10
+ /**
11
+ * Marker identifying the package. Replaced/augmented with real public exports
12
+ * (types, errors, drivers, facade) in later tasks.
13
+ */
14
+ export declare const STORAGE_PACKAGE_NAME: "@streetjs/storage";
15
+ export { StorageError, StorageConfigError, NotFoundError, ValidationError, AuthorizationError, UnsupportedImageError, } from "./errors.js";
16
+ export { createStorage } from "./facade.js";
17
+ export type { Storage, PutOptions, ImageProcessor, ImageOperations, ImageFormat, ImageResize, ImageCrop, ImageFit, DirectoryApi, } from "./facade.js";
18
+ export { StorageImageProcessor, IMAGE_VARIANT_PREFIX } from "./image.js";
19
+ export { ValidationPipeline, BUILT_IN_VALIDATORS } from "./validation.js";
20
+ export type { Validator } from "./validation.js";
21
+ export { AccessController } from "./access.js";
22
+ export type { AccessOperation, AccessContext, AccessControllerOptions, } from "./access.js";
23
+ export { MultipartManager } from "./multipart.js";
24
+ export { ResumableManager } from "./resumable.js";
25
+ export { SignedUrlService } from "./signed-url.js";
26
+ export type { SignedUrlServiceOptions } from "./signed-url.js";
27
+ export { VersioningManager } from "./versioning.js";
28
+ export { LifecycleEngine, ARCHIVE_KEY_PREFIX } from "./lifecycle.js";
29
+ export type { LifecycleEngineOptions } from "./lifecycle.js";
30
+ export { searchObjects } from "./search.js";
31
+ export { StorageDirectoryApi } from "./directory.js";
32
+ export { registerStorageObservability, STORAGE_HEALTH_CHECK_NAME, STORAGE_UPLOADS_METRIC, STORAGE_DOWNLOADS_METRIC, STORAGE_BYTES_UPLOADED_METRIC, STORAGE_BYTES_DOWNLOADED_METRIC, STORAGE_ACTIVE_UPLOADS_METRIC, STORAGE_FAILED_UPLOADS_METRIC, STORAGE_USAGE_METRIC, STORAGE_LATENCY_METRIC, STORAGE_MULTIPART_METRIC, STORAGE_RESUMABLE_METRIC, } from "./observability.js";
33
+ export type { StorageObservabilityHandle, StorageObservabilityOptions, StorageTelemetry, StorageIntrospect, } from "./observability.js";
34
+ export { StoragePlugin } from "./plugin.js";
35
+ export type { StoragePluginOptions } from "./plugin.js";
36
+ export { bridgeStorageEvents } from "./integrations/events.js";
37
+ export type { StorageEventName, StorageEventPayload, StorageEventPublisher, } from "./integrations/events.js";
38
+ export { bridgeStorageQueue } from "./integrations/queue.js";
39
+ export type { StorageJobName, StorageJobPayload, StorageQueuePublisher, } from "./integrations/queue.js";
40
+ export { bridgeStorageRealtime, STORAGE_UPLOAD_CHANNEL } from "./integrations/realtime.js";
41
+ export type { StorageRealtimeEventName, StorageRealtimeEventPayload, StorageRealtimePublisher, } from "./integrations/realtime.js";
42
+ export { buildObjectMetadata, normalizeMetadata, toWriteMetadata, DEFAULT_CONTENT_TYPE, DEFAULT_ACCESS_LEVEL, STORAGE_METADATA_FIELDS, } from "./metadata.js";
43
+ export type { BuildMetadataInput } from "./metadata.js";
44
+ export type { StorageDriver, MaybeObject, StoredPart, MultipartCapability, ResumableCapability, VersioningCapability, SignedUrlCapability, LifecycleCapability, NodeReadable, } from "./driver.js";
45
+ export type { StorageMetadataMap, StorageObjectMetadata, WriteMetadata, GetResult, CopyResult, MoveResult, StorageListItem, ListOptions, AccessLevel, SignedOperation, SignedUrlOptions, SignedUrlVerification, VersionInfo, LifecycleRule, LifecycleOutcome, ValidationConfig, ValidationInput, ValidationResult, SearchFilters, AuthLike, ImageCodec, EventsLike, QueueLike, RealtimeLike, StorageConfig, StorageStats, DriverProbe, } from "./types.js";
46
+ export { StorageCommands } from "./cli/commands.js";
47
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @streetjs/storage
3
+ *
4
+ * Unified storage framework for StreetJS. This is the public entry point of the
5
+ * package: core types, errors, the driver contract, drivers, the storage
6
+ * facade, integrations, plugin, and CLI commands are re-exported from here.
7
+ */
8
+ /** The semantic version line of the storage framework package surface. */
9
+ export const STORAGE_FRAMEWORK_VERSION = "1.0.0";
10
+ /**
11
+ * Marker identifying the package. Replaced/augmented with real public exports
12
+ * (types, errors, drivers, facade) in later tasks.
13
+ */
14
+ export const STORAGE_PACKAGE_NAME = "@streetjs/storage";
15
+ // ── Typed error hierarchy (task 2.2) ────────────────────────────────────────
16
+ export { StorageError, StorageConfigError, NotFoundError, ValidationError, AuthorizationError, UnsupportedImageError, } from "./errors.js";
17
+ // ── Storage facade (src/facade.ts, task 5.1) ────────────────────────────────
18
+ export { createStorage } from "./facade.js";
19
+ // ── Image processor (src/image.ts, task 19.1) ───────────────────────────────
20
+ export { StorageImageProcessor, IMAGE_VARIANT_PREFIX } from "./image.js";
21
+ // ── Validation pipeline (src/validation.ts, task 8.1) ───────────────────────
22
+ export { ValidationPipeline, BUILT_IN_VALIDATORS } from "./validation.js";
23
+ // ── Access controller (src/access.ts, task 16.1) ────────────────────────────
24
+ export { AccessController } from "./access.js";
25
+ // ── Multipart upload manager (src/multipart.ts, task 10.1) ──────────────────
26
+ export { MultipartManager } from "./multipart.js";
27
+ // ── Resumable upload manager (src/resumable.ts, task 11.1) ──────────────────
28
+ export { ResumableManager } from "./resumable.js";
29
+ // ── Signed URL service (src/signed-url.ts, task 13.1) ───────────────────────
30
+ export { SignedUrlService } from "./signed-url.js";
31
+ // ── Versioning manager (src/versioning.ts, task 14.1) ───────────────────────
32
+ export { VersioningManager } from "./versioning.js";
33
+ // ── Lifecycle engine (src/lifecycle.ts, task 15.1) ──────────────────────────
34
+ export { LifecycleEngine, ARCHIVE_KEY_PREFIX } from "./lifecycle.js";
35
+ // ── Search filtering (src/search.ts, task 18.1) ─────────────────────────────
36
+ export { searchObjects } from "./search.js";
37
+ // ── Directory API (src/directory.ts, task 17.1) ─────────────────────────────
38
+ export { StorageDirectoryApi } from "./directory.js";
39
+ // ── Observability wiring (src/observability.ts, task 22.1) ──────────────────
40
+ export { registerStorageObservability, STORAGE_HEALTH_CHECK_NAME, STORAGE_UPLOADS_METRIC, STORAGE_DOWNLOADS_METRIC, STORAGE_BYTES_UPLOADED_METRIC, STORAGE_BYTES_DOWNLOADED_METRIC, STORAGE_ACTIVE_UPLOADS_METRIC, STORAGE_FAILED_UPLOADS_METRIC, STORAGE_USAGE_METRIC, STORAGE_LATENCY_METRIC, STORAGE_MULTIPART_METRIC, STORAGE_RESUMABLE_METRIC, } from "./observability.js";
41
+ // ── Storage plugin (src/plugin.ts, task 23.1) ───────────────────────────────
42
+ export { StoragePlugin } from "./plugin.js";
43
+ // ── Events integration bridge (src/integrations/events.ts, task 21.1) ───────
44
+ export { bridgeStorageEvents } from "./integrations/events.js";
45
+ // ── Queue integration bridge (src/integrations/queue.ts, task 21.2) ─────────
46
+ export { bridgeStorageQueue } from "./integrations/queue.js";
47
+ // ── Realtime integration bridge (src/integrations/realtime.ts, task 21.3) ───
48
+ export { bridgeStorageRealtime, STORAGE_UPLOAD_CHANNEL } from "./integrations/realtime.js";
49
+ // ── Typed metadata layer (src/metadata.ts, task 9.1) ────────────────────────
50
+ export { buildObjectMetadata, normalizeMetadata, toWriteMetadata, DEFAULT_CONTENT_TYPE, DEFAULT_ACCESS_LEVEL, STORAGE_METADATA_FIELDS, } from "./metadata.js";
51
+ // ── Storage CLI commands (src/cli/commands.ts, task 24.2) ───────────────────
52
+ export { StorageCommands } from "./cli/commands.js";
53
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAgB,CAAC;AAE1D;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAA4B,CAAC;AAEjE,+EAA+E;AAC/E,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAErB,+EAA+E;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAa5C,+EAA+E;AAC/E,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEzE,+EAA+E;AAC/E,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAG1E,+EAA+E;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAO/C,+EAA+E;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,+EAA+E;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,+EAA+E;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,+EAA+E;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,+EAA+E;AAC/E,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGrE,+EAA+E;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,+EAA+E;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,+EAA+E;AAC/E,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,6BAA6B,EAC7B,+BAA+B,EAC/B,6BAA6B,EAC7B,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAQ5B,+EAA+E;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,+EAA+E;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAO/D,+EAA+E;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAO7D,+EAA+E;AAC/E,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAO3F,+EAA+E;AAC/E,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AA+CvB,+EAA+E;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * @streetjs/storage — the Events integration bridge.
3
+ *
4
+ * This module publishes typed storage lifecycle events (`storage.uploaded`,
5
+ * `storage.deleted`, `storage.updated`, `storage.moved`, `storage.restored`,
6
+ * `storage.expired`) through an events layer, each payload carrying the affected
7
+ * object key and (when available) its {@link StorageObjectMetadata}
8
+ * (Requirements 18.1, 18.2). Lifecycle-rule actions publish through this same
9
+ * bridge (Requirement 13.4).
10
+ *
11
+ * Following the events package's structural-interface pattern, the bridge
12
+ * depends only on the minimal {@link EventsLike} shape declared in `types.ts`
13
+ * (any object exposing `publish(event, payload)`), never on the concrete
14
+ * `@streetjs/events` package, so there is no hard dependency and no circular
15
+ * dependency (Requirements 18.3, 28.3). {@link EventsLike} is re-exported here
16
+ * for convenience; it is intentionally the single definition that lives in
17
+ * `types.ts`.
18
+ *
19
+ * **Never throws into the operation path.** Every publish is wrapped so that a
20
+ * synchronous throw or an asynchronous rejection from the underlying events
21
+ * layer is swallowed: a publish failure must never break the storage operation
22
+ * that triggered it. This mirrors the graceful-degradation guarantee the Queue
23
+ * and Realtime bridges also uphold.
24
+ *
25
+ * The facade constructs a {@link StorageEventPublisher} via
26
+ * {@link bridgeStorageEvents} only when `config.bridges?.events` is provided;
27
+ * when it is absent the facade holds no publisher and event publication is a
28
+ * complete no-op.
29
+ *
30
+ * _Requirements: 13.4, 18.1, 18.2, 18.3, 28.3_
31
+ */
32
+ import type { EventsLike, LifecycleOutcome, StorageObjectMetadata } from "../types.js";
33
+ export type { EventsLike } from "../types.js";
34
+ /**
35
+ * The exhaustive set of typed event names the storage framework publishes
36
+ * (Requirement 18.1). Every object mutation and every applied lifecycle action
37
+ * maps onto exactly one of these names.
38
+ */
39
+ export type StorageEventName = "storage.uploaded" | "storage.deleted" | "storage.updated" | "storage.moved" | "storage.restored" | "storage.expired";
40
+ /**
41
+ * The payload published with every storage event. It always carries the
42
+ * affected object `key` (Requirement 18.2) and, when the triggering operation
43
+ * has it in hand, the object's full {@link StorageObjectMetadata}. Events raised
44
+ * from an applied lifecycle rule additionally carry the originating lifecycle
45
+ * `action` so a single `storage.moved`/`storage.deleted`/`storage.expired`
46
+ * listener can still distinguish the rule that produced it.
47
+ */
48
+ export interface StorageEventPayload {
49
+ /** The affected object key (always present — Requirement 18.2). */
50
+ readonly key: string;
51
+ /** The object metadata when the operation has it available. */
52
+ readonly metadata?: StorageObjectMetadata;
53
+ /** The originating lifecycle action, present only for lifecycle events. */
54
+ readonly action?: LifecycleOutcome["action"];
55
+ }
56
+ /**
57
+ * The publisher the facade holds and calls at each object-mutation point. Every
58
+ * method is fire-and-forget and guaranteed never to throw into the caller: the
59
+ * underlying publish is isolated so a failing events layer cannot break a
60
+ * storage operation.
61
+ */
62
+ export interface StorageEventPublisher {
63
+ /**
64
+ * Publish an already-named storage event with the given payload. Never throws.
65
+ * The typed convenience methods below are thin wrappers over this.
66
+ */
67
+ publish(event: StorageEventName, payload: StorageEventPayload): void;
68
+ /** Publish `storage.uploaded` for a newly created object. */
69
+ uploaded(metadata: StorageObjectMetadata): void;
70
+ /** Publish `storage.updated` for an overwritten (already-existing) object. */
71
+ updated(metadata: StorageObjectMetadata): void;
72
+ /** Publish `storage.deleted` for a removed object. */
73
+ deleted(key: string, metadata?: StorageObjectMetadata): void;
74
+ /** Publish `storage.moved` for a relocated/renamed object. */
75
+ moved(metadata: StorageObjectMetadata): void;
76
+ /** Publish `storage.restored` for a version restored to current. */
77
+ restored(metadata: StorageObjectMetadata): void;
78
+ /** Publish `storage.expired` for an expired transient/temporary object. */
79
+ expired(key: string, metadata?: StorageObjectMetadata): void;
80
+ /**
81
+ * Publish the event corresponding to an applied {@link LifecycleOutcome}
82
+ * (Requirement 13.4). The lifecycle `action` maps onto the typed event name
83
+ * and is echoed in the payload's `action` field:
84
+ *
85
+ * - `deleted` → `storage.deleted`
86
+ * - `expired` → `storage.expired`
87
+ * - `moved` → `storage.moved`
88
+ * - `archived` → `storage.moved` (archiving relocates the object)
89
+ */
90
+ lifecycle(outcome: LifecycleOutcome): void;
91
+ }
92
+ /**
93
+ * Create a {@link StorageEventPublisher} that publishes typed storage events
94
+ * through the supplied structural {@link EventsLike} bridge.
95
+ *
96
+ * The returned publisher is what the facade wires into its object operations
97
+ * (`put` → uploaded/updated, `delete` → deleted, `move`/`rename` → moved,
98
+ * `restoreVersion` → restored) and its lifecycle evaluation (`applyLifecycle`
99
+ * → deleted/expired/moved via {@link StorageEventPublisher.lifecycle}). Every
100
+ * method is guaranteed never to throw into the caller.
101
+ *
102
+ * ```ts
103
+ * const publisher = bridgeStorageEvents(events);
104
+ * publisher.uploaded(metadata); // publishes "storage.uploaded" — never throws
105
+ * ```
106
+ */
107
+ export declare function bridgeStorageEvents(events: EventsLike): StorageEventPublisher;
108
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/integrations/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAKvF,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GACxB,kBAAkB,GAClB,iBAAiB,GACjB,iBAAiB,GACjB,eAAe,GACf,kBAAkB,GAClB,iBAAiB,CAAC;AAEtB;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC,mEAAmE;IACnE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IAC1C,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;CAC9C;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAErE,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAEhD,8EAA8E;IAC9E,OAAO,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAE/C,sDAAsD;IACtD,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAE7D,8DAA8D;IAC9D,KAAK,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAE7C,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAEhD,2EAA2E;IAC3E,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAE7D;;;;;;;;;OASG;IACH,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC5C;AAmCD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,qBAAqB,CAgC7E"}