@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.
- package/LICENSE +21 -0
- package/README.md +719 -0
- package/dist/access.d.ts +95 -0
- package/dist/access.d.ts.map +1 -0
- package/dist/access.js +114 -0
- package/dist/access.js.map +1 -0
- package/dist/cli/commands.d.ts +88 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +369 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/generators.d.ts +41 -0
- package/dist/cli/generators.d.ts.map +1 -0
- package/dist/cli/generators.js +119 -0
- package/dist/cli/generators.js.map +1 -0
- package/dist/directory.d.ts +88 -0
- package/dist/directory.d.ts.map +1 -0
- package/dist/directory.js +148 -0
- package/dist/directory.js.map +1 -0
- package/dist/driver.d.ts +83 -0
- package/dist/driver.d.ts.map +1 -0
- package/dist/driver.js +16 -0
- package/dist/driver.js.map +1 -0
- package/dist/drivers/azure.d.ts +239 -0
- package/dist/drivers/azure.d.ts.map +1 -0
- package/dist/drivers/azure.js +476 -0
- package/dist/drivers/azure.js.map +1 -0
- package/dist/drivers/backblaze.d.ts +105 -0
- package/dist/drivers/backblaze.d.ts.map +1 -0
- package/dist/drivers/backblaze.js +279 -0
- package/dist/drivers/backblaze.js.map +1 -0
- package/dist/drivers/gcs.d.ts +239 -0
- package/dist/drivers/gcs.d.ts.map +1 -0
- package/dist/drivers/gcs.js +454 -0
- package/dist/drivers/gcs.js.map +1 -0
- package/dist/drivers/local.d.ts +126 -0
- package/dist/drivers/local.d.ts.map +1 -0
- package/dist/drivers/local.js +321 -0
- package/dist/drivers/local.js.map +1 -0
- package/dist/drivers/memory.d.ts +104 -0
- package/dist/drivers/memory.d.ts.map +1 -0
- package/dist/drivers/memory.js +197 -0
- package/dist/drivers/memory.js.map +1 -0
- package/dist/drivers/minio.d.ts +90 -0
- package/dist/drivers/minio.d.ts.map +1 -0
- package/dist/drivers/minio.js +276 -0
- package/dist/drivers/minio.js.map +1 -0
- package/dist/drivers/r2.d.ts +100 -0
- package/dist/drivers/r2.d.ts.map +1 -0
- package/dist/drivers/r2.js +240 -0
- package/dist/drivers/r2.js.map +1 -0
- package/dist/drivers/s3-base.d.ts +270 -0
- package/dist/drivers/s3-base.d.ts.map +1 -0
- package/dist/drivers/s3-base.js +436 -0
- package/dist/drivers/s3-base.js.map +1 -0
- package/dist/drivers/s3.d.ts +111 -0
- package/dist/drivers/s3.d.ts.map +1 -0
- package/dist/drivers/s3.js +311 -0
- package/dist/drivers/s3.js.map +1 -0
- package/dist/drivers/supabase.d.ts +246 -0
- package/dist/drivers/supabase.d.ts.map +1 -0
- package/dist/drivers/supabase.js +502 -0
- package/dist/drivers/supabase.js.map +1 -0
- package/dist/errors.d.ts +115 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +131 -0
- package/dist/errors.js.map +1 -0
- package/dist/examples/storage-demo.d.ts +53 -0
- package/dist/examples/storage-demo.d.ts.map +1 -0
- package/dist/examples/storage-demo.js +242 -0
- package/dist/examples/storage-demo.js.map +1 -0
- package/dist/facade.d.ts +192 -0
- package/dist/facade.d.ts.map +1 -0
- package/dist/facade.js +898 -0
- package/dist/facade.js.map +1 -0
- package/dist/image.d.ts +94 -0
- package/dist/image.d.ts.map +1 -0
- package/dist/image.js +224 -0
- package/dist/image.js.map +1 -0
- package/dist/index.d.ts +47 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/events.d.ts +108 -0
- package/dist/integrations/events.d.ts.map +1 -0
- package/dist/integrations/events.js +111 -0
- package/dist/integrations/events.js.map +1 -0
- package/dist/integrations/queue.d.ts +89 -0
- package/dist/integrations/queue.d.ts.map +1 -0
- package/dist/integrations/queue.js +91 -0
- package/dist/integrations/queue.js.map +1 -0
- package/dist/integrations/realtime.d.ts +95 -0
- package/dist/integrations/realtime.d.ts.map +1 -0
- package/dist/integrations/realtime.js +90 -0
- package/dist/integrations/realtime.js.map +1 -0
- package/dist/lifecycle.d.ts +137 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +240 -0
- package/dist/lifecycle.js.map +1 -0
- package/dist/metadata.d.ts +109 -0
- package/dist/metadata.d.ts.map +1 -0
- package/dist/metadata.js +139 -0
- package/dist/metadata.js.map +1 -0
- package/dist/multipart.d.ts +108 -0
- package/dist/multipart.d.ts.map +1 -0
- package/dist/multipart.js +200 -0
- package/dist/multipart.js.map +1 -0
- package/dist/observability.d.ts +82 -0
- package/dist/observability.d.ts.map +1 -0
- package/dist/observability.js +175 -0
- package/dist/observability.js.map +1 -0
- package/dist/plugin.d.ts +82 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +100 -0
- package/dist/plugin.js.map +1 -0
- package/dist/resumable.d.ts +118 -0
- package/dist/resumable.d.ts.map +1 -0
- package/dist/resumable.js +223 -0
- package/dist/resumable.js.map +1 -0
- package/dist/search.d.ts +57 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +172 -0
- package/dist/search.js.map +1 -0
- package/dist/signed-url.d.ts +110 -0
- package/dist/signed-url.d.ts.map +1 -0
- package/dist/signed-url.js +237 -0
- package/dist/signed-url.js.map +1 -0
- package/dist/testing/index.d.ts +219 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +393 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/tests/access.test.d.ts +2 -0
- package/dist/tests/access.test.d.ts.map +1 -0
- package/dist/tests/access.test.js +270 -0
- package/dist/tests/access.test.js.map +1 -0
- package/dist/tests/azure-driver.test.d.ts +2 -0
- package/dist/tests/azure-driver.test.d.ts.map +1 -0
- package/dist/tests/azure-driver.test.js +183 -0
- package/dist/tests/azure-driver.test.js.map +1 -0
- package/dist/tests/backblaze-driver.test.d.ts +2 -0
- package/dist/tests/backblaze-driver.test.d.ts.map +1 -0
- package/dist/tests/backblaze-driver.test.js +185 -0
- package/dist/tests/backblaze-driver.test.js.map +1 -0
- package/dist/tests/bridge-degradation.test.d.ts +2 -0
- package/dist/tests/bridge-degradation.test.d.ts.map +1 -0
- package/dist/tests/bridge-degradation.test.js +138 -0
- package/dist/tests/bridge-degradation.test.js.map +1 -0
- package/dist/tests/cli.test.d.ts +2 -0
- package/dist/tests/cli.test.d.ts.map +1 -0
- package/dist/tests/cli.test.js +127 -0
- package/dist/tests/cli.test.js.map +1 -0
- package/dist/tests/contract.d.ts +131 -0
- package/dist/tests/contract.d.ts.map +1 -0
- package/dist/tests/contract.js +222 -0
- package/dist/tests/contract.js.map +1 -0
- package/dist/tests/contract.test.d.ts +2 -0
- package/dist/tests/contract.test.d.ts.map +1 -0
- package/dist/tests/contract.test.js +110 -0
- package/dist/tests/contract.test.js.map +1 -0
- package/dist/tests/directory.test.d.ts +2 -0
- package/dist/tests/directory.test.d.ts.map +1 -0
- package/dist/tests/directory.test.js +125 -0
- package/dist/tests/directory.test.js.map +1 -0
- package/dist/tests/errors.test.d.ts +2 -0
- package/dist/tests/errors.test.d.ts.map +1 -0
- package/dist/tests/errors.test.js +93 -0
- package/dist/tests/errors.test.js.map +1 -0
- package/dist/tests/events-bridge.test.d.ts +2 -0
- package/dist/tests/events-bridge.test.d.ts.map +1 -0
- package/dist/tests/events-bridge.test.js +228 -0
- package/dist/tests/events-bridge.test.js.map +1 -0
- package/dist/tests/example-smoke.test.d.ts +2 -0
- package/dist/tests/example-smoke.test.d.ts.map +1 -0
- package/dist/tests/example-smoke.test.js +34 -0
- package/dist/tests/example-smoke.test.js.map +1 -0
- package/dist/tests/gcs-driver.test.d.ts +2 -0
- package/dist/tests/gcs-driver.test.d.ts.map +1 -0
- package/dist/tests/gcs-driver.test.js +197 -0
- package/dist/tests/gcs-driver.test.js.map +1 -0
- package/dist/tests/image.test.d.ts +2 -0
- package/dist/tests/image.test.d.ts.map +1 -0
- package/dist/tests/image.test.js +102 -0
- package/dist/tests/image.test.js.map +1 -0
- package/dist/tests/lifecycle.test.d.ts +2 -0
- package/dist/tests/lifecycle.test.d.ts.map +1 -0
- package/dist/tests/lifecycle.test.js +171 -0
- package/dist/tests/lifecycle.test.js.map +1 -0
- package/dist/tests/local-driver.test.d.ts +2 -0
- package/dist/tests/local-driver.test.d.ts.map +1 -0
- package/dist/tests/local-driver.test.js +153 -0
- package/dist/tests/local-driver.test.js.map +1 -0
- package/dist/tests/local-streaming.test.d.ts +2 -0
- package/dist/tests/local-streaming.test.d.ts.map +1 -0
- package/dist/tests/local-streaming.test.js +121 -0
- package/dist/tests/local-streaming.test.js.map +1 -0
- package/dist/tests/memory-driver.test.d.ts +2 -0
- package/dist/tests/memory-driver.test.d.ts.map +1 -0
- package/dist/tests/memory-driver.test.js +180 -0
- package/dist/tests/memory-driver.test.js.map +1 -0
- package/dist/tests/memory-streaming.test.d.ts +2 -0
- package/dist/tests/memory-streaming.test.d.ts.map +1 -0
- package/dist/tests/memory-streaming.test.js +92 -0
- package/dist/tests/memory-streaming.test.js.map +1 -0
- package/dist/tests/minio-driver.test.d.ts +2 -0
- package/dist/tests/minio-driver.test.d.ts.map +1 -0
- package/dist/tests/minio-driver.test.js +146 -0
- package/dist/tests/minio-driver.test.js.map +1 -0
- package/dist/tests/non-s3-integration.test.d.ts +2 -0
- package/dist/tests/non-s3-integration.test.d.ts.map +1 -0
- package/dist/tests/non-s3-integration.test.js +201 -0
- package/dist/tests/non-s3-integration.test.js.map +1 -0
- package/dist/tests/observability.registration.test.d.ts +2 -0
- package/dist/tests/observability.registration.test.d.ts.map +1 -0
- package/dist/tests/observability.registration.test.js +103 -0
- package/dist/tests/observability.registration.test.js.map +1 -0
- package/dist/tests/observability.test.d.ts +2 -0
- package/dist/tests/observability.test.d.ts.map +1 -0
- package/dist/tests/observability.test.js +240 -0
- package/dist/tests/observability.test.js.map +1 -0
- package/dist/tests/plugin.test.d.ts +2 -0
- package/dist/tests/plugin.test.d.ts.map +1 -0
- package/dist/tests/plugin.test.js +112 -0
- package/dist/tests/plugin.test.js.map +1 -0
- package/dist/tests/prop-concurrent.test.d.ts +2 -0
- package/dist/tests/prop-concurrent.test.d.ts.map +1 -0
- package/dist/tests/prop-concurrent.test.js +59 -0
- package/dist/tests/prop-concurrent.test.js.map +1 -0
- package/dist/tests/prop-copy.test.d.ts +2 -0
- package/dist/tests/prop-copy.test.d.ts.map +1 -0
- package/dist/tests/prop-copy.test.js +63 -0
- package/dist/tests/prop-copy.test.js.map +1 -0
- package/dist/tests/prop-delete.test.d.ts +2 -0
- package/dist/tests/prop-delete.test.d.ts.map +1 -0
- package/dist/tests/prop-delete.test.js +35 -0
- package/dist/tests/prop-delete.test.js.map +1 -0
- package/dist/tests/prop-directory.test.d.ts +2 -0
- package/dist/tests/prop-directory.test.d.ts.map +1 -0
- package/dist/tests/prop-directory.test.js +118 -0
- package/dist/tests/prop-directory.test.js.map +1 -0
- package/dist/tests/prop-driver-conformance.test.d.ts +2 -0
- package/dist/tests/prop-driver-conformance.test.d.ts.map +1 -0
- package/dist/tests/prop-driver-conformance.test.js +110 -0
- package/dist/tests/prop-driver-conformance.test.js.map +1 -0
- package/dist/tests/prop-driver-equivalence.test.d.ts +2 -0
- package/dist/tests/prop-driver-equivalence.test.d.ts.map +1 -0
- package/dist/tests/prop-driver-equivalence.test.js +163 -0
- package/dist/tests/prop-driver-equivalence.test.js.map +1 -0
- package/dist/tests/prop-lifecycle.test.d.ts +2 -0
- package/dist/tests/prop-lifecycle.test.d.ts.map +1 -0
- package/dist/tests/prop-lifecycle.test.js +83 -0
- package/dist/tests/prop-lifecycle.test.js.map +1 -0
- package/dist/tests/prop-list.test.d.ts +2 -0
- package/dist/tests/prop-list.test.d.ts.map +1 -0
- package/dist/tests/prop-list.test.js +53 -0
- package/dist/tests/prop-list.test.js.map +1 -0
- package/dist/tests/prop-metadata.test.d.ts +2 -0
- package/dist/tests/prop-metadata.test.d.ts.map +1 -0
- package/dist/tests/prop-metadata.test.js +87 -0
- package/dist/tests/prop-metadata.test.js.map +1 -0
- package/dist/tests/prop-move.test.d.ts +2 -0
- package/dist/tests/prop-move.test.d.ts.map +1 -0
- package/dist/tests/prop-move.test.js +67 -0
- package/dist/tests/prop-move.test.js.map +1 -0
- package/dist/tests/prop-multipart-abort.test.d.ts +2 -0
- package/dist/tests/prop-multipart-abort.test.d.ts.map +1 -0
- package/dist/tests/prop-multipart-abort.test.js +48 -0
- package/dist/tests/prop-multipart-abort.test.js.map +1 -0
- package/dist/tests/prop-multipart.test.d.ts +2 -0
- package/dist/tests/prop-multipart.test.d.ts.map +1 -0
- package/dist/tests/prop-multipart.test.js +65 -0
- package/dist/tests/prop-multipart.test.js.map +1 -0
- package/dist/tests/prop-resumable.test.d.ts +2 -0
- package/dist/tests/prop-resumable.test.d.ts.map +1 -0
- package/dist/tests/prop-resumable.test.js +78 -0
- package/dist/tests/prop-resumable.test.js.map +1 -0
- package/dist/tests/prop-search.test.d.ts +2 -0
- package/dist/tests/prop-search.test.d.ts.map +1 -0
- package/dist/tests/prop-search.test.js +120 -0
- package/dist/tests/prop-search.test.js.map +1 -0
- package/dist/tests/prop-signed-url.test.d.ts +2 -0
- package/dist/tests/prop-signed-url.test.d.ts.map +1 -0
- package/dist/tests/prop-signed-url.test.js +74 -0
- package/dist/tests/prop-signed-url.test.js.map +1 -0
- package/dist/tests/prop-streaming.test.d.ts +2 -0
- package/dist/tests/prop-streaming.test.d.ts.map +1 -0
- package/dist/tests/prop-streaming.test.js +34 -0
- package/dist/tests/prop-streaming.test.js.map +1 -0
- package/dist/tests/prop-upload-download.test.d.ts +2 -0
- package/dist/tests/prop-upload-download.test.d.ts.map +1 -0
- package/dist/tests/prop-upload-download.test.js +30 -0
- package/dist/tests/prop-upload-download.test.js.map +1 -0
- package/dist/tests/prop-validation.test.d.ts +2 -0
- package/dist/tests/prop-validation.test.d.ts.map +1 -0
- package/dist/tests/prop-validation.test.js +50 -0
- package/dist/tests/prop-validation.test.js.map +1 -0
- package/dist/tests/prop-versioning.test.d.ts +2 -0
- package/dist/tests/prop-versioning.test.d.ts.map +1 -0
- package/dist/tests/prop-versioning.test.js +74 -0
- package/dist/tests/prop-versioning.test.js.map +1 -0
- package/dist/tests/queue-bridge.test.d.ts +2 -0
- package/dist/tests/queue-bridge.test.d.ts.map +1 -0
- package/dist/tests/queue-bridge.test.js +111 -0
- package/dist/tests/queue-bridge.test.js.map +1 -0
- package/dist/tests/r2-driver.test.d.ts +2 -0
- package/dist/tests/r2-driver.test.d.ts.map +1 -0
- package/dist/tests/r2-driver.test.js +143 -0
- package/dist/tests/r2-driver.test.js.map +1 -0
- package/dist/tests/realtime-bridge.test.d.ts +2 -0
- package/dist/tests/realtime-bridge.test.d.ts.map +1 -0
- package/dist/tests/realtime-bridge.test.js +106 -0
- package/dist/tests/realtime-bridge.test.js.map +1 -0
- package/dist/tests/resumable.test.d.ts +2 -0
- package/dist/tests/resumable.test.d.ts.map +1 -0
- package/dist/tests/resumable.test.js +104 -0
- package/dist/tests/resumable.test.js.map +1 -0
- package/dist/tests/s3-base.test.d.ts +2 -0
- package/dist/tests/s3-base.test.d.ts.map +1 -0
- package/dist/tests/s3-base.test.js +289 -0
- package/dist/tests/s3-base.test.js.map +1 -0
- package/dist/tests/s3-integration.test.d.ts +2 -0
- package/dist/tests/s3-integration.test.d.ts.map +1 -0
- package/dist/tests/s3-integration.test.js +270 -0
- package/dist/tests/s3-integration.test.js.map +1 -0
- package/dist/tests/s3.test.d.ts +2 -0
- package/dist/tests/s3.test.d.ts.map +1 -0
- package/dist/tests/s3.test.js +203 -0
- package/dist/tests/s3.test.js.map +1 -0
- package/dist/tests/scaffold.test.d.ts +2 -0
- package/dist/tests/scaffold.test.d.ts.map +1 -0
- package/dist/tests/scaffold.test.js +13 -0
- package/dist/tests/scaffold.test.js.map +1 -0
- package/dist/tests/search.test.d.ts +2 -0
- package/dist/tests/search.test.d.ts.map +1 -0
- package/dist/tests/search.test.js +106 -0
- package/dist/tests/search.test.js.map +1 -0
- package/dist/tests/supabase-driver.test.d.ts +2 -0
- package/dist/tests/supabase-driver.test.d.ts.map +1 -0
- package/dist/tests/supabase-driver.test.js +196 -0
- package/dist/tests/supabase-driver.test.js.map +1 -0
- package/dist/tests/testing-utilities.test.d.ts +2 -0
- package/dist/tests/testing-utilities.test.d.ts.map +1 -0
- package/dist/tests/testing-utilities.test.js +138 -0
- package/dist/tests/testing-utilities.test.js.map +1 -0
- package/dist/tests/validation.test.d.ts +2 -0
- package/dist/tests/validation.test.d.ts.map +1 -0
- package/dist/tests/validation.test.js +135 -0
- package/dist/tests/validation.test.js.map +1 -0
- package/dist/tests/versioning.test.d.ts +2 -0
- package/dist/tests/versioning.test.d.ts.map +1 -0
- package/dist/tests/versioning.test.js +128 -0
- package/dist/tests/versioning.test.js.map +1 -0
- package/dist/types.d.ts +232 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +23 -0
- package/dist/types.js.map +1 -0
- package/dist/validation.d.ts +105 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +225 -0
- package/dist/validation.js.map +1 -0
- package/dist/versioning.d.ts +100 -0
- package/dist/versioning.d.ts.map +1 -0
- package/dist/versioning.js +179 -0
- package/dist/versioning.js.map +1 -0
- 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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"}
|
package/dist/image.d.ts
ADDED
|
@@ -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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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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"}
|