@decaf-ts/integrations 0.1.3 → 0.2.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/dist/integrations.cjs +1 -1
- package/docker/azure-blob-compose.yml +21 -0
- package/docker/gcs-blob-compose.yml +21 -0
- package/docker/ipfs-compose.yml +25 -0
- package/docker/minio-compose.yml +25 -0
- package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +293 -0
- package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/azure/index.cjs +24 -0
- package/lib/cjs/blob/azure/index.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobErrors.cjs +74 -0
- package/lib/cjs/blob/core/BlobErrors.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobKey.cjs +37 -0
- package/lib/cjs/blob/core/BlobKey.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobStoreFactory.cjs +57 -0
- package/lib/cjs/blob/core/BlobStoreFactory.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobStoreService.cjs +42 -0
- package/lib/cjs/blob/core/BlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobTypes.cjs +4 -0
- package/lib/cjs/blob/core/BlobTypes.cjs.map +1 -0
- package/lib/cjs/blob/core/BlobValue.cjs +72 -0
- package/lib/cjs/blob/core/BlobValue.cjs.map +1 -0
- package/lib/cjs/blob/core/index.cjs +29 -0
- package/lib/cjs/blob/core/index.cjs.map +1 -0
- package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +272 -0
- package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/gcp/index.cjs +24 -0
- package/lib/cjs/blob/gcp/index.cjs.map +1 -0
- package/lib/cjs/blob/index.cjs +25 -0
- package/lib/cjs/blob/index.cjs.map +1 -0
- package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs +182 -0
- package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs +27 -0
- package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs.map +1 -0
- package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs +35 -0
- package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs.map +1 -0
- package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs +45 -0
- package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs.map +1 -0
- package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs +35 -0
- package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs.map +1 -0
- package/lib/cjs/blob/ipfs/index.cjs +28 -0
- package/lib/cjs/blob/ipfs/index.cjs.map +1 -0
- package/lib/cjs/blob/local/LocalBlobStoreService.cjs +288 -0
- package/lib/cjs/blob/local/LocalBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/local/index.cjs +24 -0
- package/lib/cjs/blob/local/index.cjs.map +1 -0
- package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs +146 -0
- package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/memory/index.cjs +24 -0
- package/lib/cjs/blob/memory/index.cjs.map +1 -0
- package/lib/cjs/blob/s3/MinioBlobStoreService.cjs +14 -0
- package/lib/cjs/blob/s3/MinioBlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/s3/R2BlobStoreService.cjs +14 -0
- package/lib/cjs/blob/s3/R2BlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/s3/S3BlobStoreService.cjs +322 -0
- package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +1 -0
- package/lib/cjs/blob/s3/index.cjs +26 -0
- package/lib/cjs/blob/s3/index.cjs.map +1 -0
- package/lib/cjs/docker/DockerComposeService.cjs +2 -2
- package/lib/cjs/docker/DockerComposeService.cjs.map +1 -1
- package/lib/cjs/index.cjs +3 -3
- package/lib/esm/blob/azure/AzureBlobStoreService.js +288 -0
- package/lib/esm/blob/azure/AzureBlobStoreService.js.map +1 -0
- package/lib/esm/blob/azure/index.js +7 -0
- package/lib/esm/blob/azure/index.js.map +1 -0
- package/lib/esm/blob/core/BlobErrors.js +61 -0
- package/lib/esm/blob/core/BlobErrors.js.map +1 -0
- package/lib/esm/blob/core/BlobKey.js +32 -0
- package/lib/esm/blob/core/BlobKey.js.map +1 -0
- package/lib/esm/blob/core/BlobStoreFactory.js +52 -0
- package/lib/esm/blob/core/BlobStoreFactory.js.map +1 -0
- package/lib/esm/blob/core/BlobStoreService.js +37 -0
- package/lib/esm/blob/core/BlobStoreService.js.map +1 -0
- package/lib/esm/blob/core/BlobTypes.js +2 -0
- package/lib/esm/blob/core/BlobTypes.js.map +1 -0
- package/lib/esm/blob/core/BlobValue.js +66 -0
- package/lib/esm/blob/core/BlobValue.js.map +1 -0
- package/lib/esm/blob/core/index.js +12 -0
- package/lib/esm/blob/core/index.js.map +1 -0
- package/lib/esm/blob/gcp/GcsBlobStoreService.js +267 -0
- package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +1 -0
- package/lib/esm/blob/gcp/index.js +7 -0
- package/lib/esm/blob/gcp/index.js.map +1 -0
- package/lib/esm/blob/index.js +8 -0
- package/lib/esm/blob/index.js.map +1 -0
- package/lib/esm/blob/ipfs/IpfsBlobStoreService.js +177 -0
- package/lib/esm/blob/ipfs/IpfsBlobStoreService.js.map +1 -0
- package/lib/esm/blob/ipfs/IpfsKeyIndex.js +23 -0
- package/lib/esm/blob/ipfs/IpfsKeyIndex.js.map +1 -0
- package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js +30 -0
- package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js.map +1 -0
- package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js +40 -0
- package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js.map +1 -0
- package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js +30 -0
- package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js.map +1 -0
- package/lib/esm/blob/ipfs/index.js +11 -0
- package/lib/esm/blob/ipfs/index.js.map +1 -0
- package/lib/esm/blob/local/LocalBlobStoreService.js +283 -0
- package/lib/esm/blob/local/LocalBlobStoreService.js.map +1 -0
- package/lib/esm/blob/local/index.js +7 -0
- package/lib/esm/blob/local/index.js.map +1 -0
- package/lib/esm/blob/memory/MemoryBlobStoreService.js +141 -0
- package/lib/esm/blob/memory/MemoryBlobStoreService.js.map +1 -0
- package/lib/esm/blob/memory/index.js +7 -0
- package/lib/esm/blob/memory/index.js.map +1 -0
- package/lib/esm/blob/s3/MinioBlobStoreService.js +9 -0
- package/lib/esm/blob/s3/MinioBlobStoreService.js.map +1 -0
- package/lib/esm/blob/s3/R2BlobStoreService.js +9 -0
- package/lib/esm/blob/s3/R2BlobStoreService.js.map +1 -0
- package/lib/esm/blob/s3/S3BlobStoreService.js +317 -0
- package/lib/esm/blob/s3/S3BlobStoreService.js.map +1 -0
- package/lib/esm/blob/s3/index.js +9 -0
- package/lib/esm/blob/s3/index.js.map +1 -0
- package/lib/esm/docker/DockerComposeService.js +2 -2
- package/lib/esm/docker/DockerComposeService.js.map +1 -1
- package/lib/esm/index.js +3 -3
- package/lib/types/blob/azure/AzureBlobStoreService.d.cts +25 -0
- package/lib/types/blob/azure/AzureBlobStoreService.d.mts +25 -0
- package/lib/types/blob/azure/index.d.cts +6 -0
- package/lib/types/blob/azure/index.d.mts +6 -0
- package/lib/types/blob/core/BlobErrors.d.cts +14 -0
- package/lib/types/blob/core/BlobErrors.d.mts +14 -0
- package/lib/types/blob/core/BlobKey.d.cts +9 -0
- package/lib/types/blob/core/BlobKey.d.mts +9 -0
- package/lib/types/blob/core/BlobStoreFactory.d.cts +5 -0
- package/lib/types/blob/core/BlobStoreFactory.d.mts +5 -0
- package/lib/types/blob/core/BlobStoreService.d.cts +28 -0
- package/lib/types/blob/core/BlobStoreService.d.mts +28 -0
- package/lib/types/blob/core/BlobTypes.d.cts +122 -0
- package/lib/types/blob/core/BlobTypes.d.mts +122 -0
- package/lib/types/blob/core/BlobValue.d.cts +13 -0
- package/lib/types/blob/core/BlobValue.d.mts +13 -0
- package/lib/types/blob/core/index.d.cts +11 -0
- package/lib/types/blob/core/index.d.mts +11 -0
- package/lib/types/blob/gcp/GcsBlobStoreService.d.cts +25 -0
- package/lib/types/blob/gcp/GcsBlobStoreService.d.mts +25 -0
- package/lib/types/blob/gcp/index.d.cts +6 -0
- package/lib/types/blob/gcp/index.d.mts +6 -0
- package/lib/types/blob/index.d.cts +7 -0
- package/lib/types/blob/index.d.mts +7 -0
- package/lib/types/blob/ipfs/IpfsBlobStoreService.d.cts +26 -0
- package/lib/types/blob/ipfs/IpfsBlobStoreService.d.mts +26 -0
- package/lib/types/blob/ipfs/IpfsKeyIndex.d.cts +9 -0
- package/lib/types/blob/ipfs/IpfsKeyIndex.d.mts +9 -0
- package/lib/types/blob/ipfs/LocalJsonIpfsKeyIndex.d.cts +11 -0
- package/lib/types/blob/ipfs/LocalJsonIpfsKeyIndex.d.mts +11 -0
- package/lib/types/blob/ipfs/MemoryIpfsKeyIndex.d.cts +15 -0
- package/lib/types/blob/ipfs/MemoryIpfsKeyIndex.d.mts +15 -0
- package/lib/types/blob/ipfs/PostgresIpfsKeyIndex.d.cts +11 -0
- package/lib/types/blob/ipfs/PostgresIpfsKeyIndex.d.mts +11 -0
- package/lib/types/blob/ipfs/index.d.cts +10 -0
- package/lib/types/blob/ipfs/index.d.mts +10 -0
- package/lib/types/blob/local/LocalBlobStoreService.d.cts +30 -0
- package/lib/types/blob/local/LocalBlobStoreService.d.mts +30 -0
- package/lib/types/blob/local/index.d.cts +6 -0
- package/lib/types/blob/local/index.d.mts +6 -0
- package/lib/types/blob/memory/MemoryBlobStoreService.d.cts +28 -0
- package/lib/types/blob/memory/MemoryBlobStoreService.d.mts +28 -0
- package/lib/types/blob/memory/index.d.cts +6 -0
- package/lib/types/blob/memory/index.d.mts +6 -0
- package/lib/types/blob/s3/MinioBlobStoreService.d.cts +8 -0
- package/lib/types/blob/s3/MinioBlobStoreService.d.mts +8 -0
- package/lib/types/blob/s3/R2BlobStoreService.d.cts +8 -0
- package/lib/types/blob/s3/R2BlobStoreService.d.mts +8 -0
- package/lib/types/blob/s3/S3BlobStoreService.d.cts +25 -0
- package/lib/types/blob/s3/S3BlobStoreService.d.mts +25 -0
- package/lib/types/blob/s3/index.d.cts +8 -0
- package/lib/types/blob/s3/index.d.mts +8 -0
- package/lib/types/docker/DockerComposeService.d.cts +6 -0
- package/lib/types/docker/DockerComposeService.d.mts +6 -0
- package/lib/types/index.d.cts +2 -2
- package/lib/types/index.d.mts +2 -2
- package/package.json +88 -6
package/dist/integrations.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e,o;e=this,o=(e,o,r,i)=>{"use strict";e.COMMIT="
|
|
1
|
+
var e,o;e=this,o=(e,o,r,i)=>{"use strict";e.COMMIT="96f5884",e.FULL_VERSION="0.1.4-96f5884",e.PACKAGE_NAME="@decaf-ts/integrations",e.VERSION="0.1.4",e.execWithLogging=async(e,n,t,s=r.LogLevel.info)=>(t.debug("Executing: "+e),new Promise((r,d)=>{const c=o.exec(e,n),a=[],l=[];c.stdout?.on("data",e=>{a.push(e),t[s](e.trim())}),c.stderr?.on("data",e=>{l.push(e),t.error(e.trim())}),c.on("close",e=>{0===e?(t.silly("Command completed successfully"),r({stdout:a.join("\n"),stderr:l.join("\n")})):(t.critical(`Command failed with code ${e}:\n ${l.join("\n")}`),d(new i.InternalError(`Command failed with code ${e}: ${l.join("\n")}`)))}),c.on("error",e=>{t.critical("Command execution error",e),d(e)})}))},"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("child_process"),require("@decaf-ts/logging"),require("@decaf-ts/db-decorators")):"function"==typeof define&&define.amd?define(["exports","child_process","@decaf-ts/logging","@decaf-ts/db-decorators"],o):o((e="undefined"!=typeof globalThis?globalThis:e||self).integrations={},e.childProcess,e.decafTsLogging,e.decafTsDbDecorators);
|
|
2
2
|
//# sourceMappingURL=integrations.cjs.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
services:
|
|
2
|
+
# Azurite - Azure Blob storage emulator (covers the azure-blob provider)
|
|
3
|
+
azurite-blob:
|
|
4
|
+
image: mcr.microsoft.com/azure-storage/azurite:3.33.0
|
|
5
|
+
container_name: azurite-blob-integration
|
|
6
|
+
restart: unless-stopped
|
|
7
|
+
command: azurite -l /data --blobHost 0.0.0.0 --blobPort 10000 --skipApiVersionCheck
|
|
8
|
+
ports:
|
|
9
|
+
- "10000:10000"
|
|
10
|
+
volumes:
|
|
11
|
+
- azurite-blob-data:/data
|
|
12
|
+
healthcheck:
|
|
13
|
+
test: ["CMD", "curl", "-s", "-o", "/dev/null", "http://localhost:10000/"]
|
|
14
|
+
interval: 10s
|
|
15
|
+
timeout: 5s
|
|
16
|
+
retries: 5
|
|
17
|
+
start_period: 10s
|
|
18
|
+
|
|
19
|
+
volumes:
|
|
20
|
+
azurite-blob-data:
|
|
21
|
+
name: azurite-blob-data
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
services:
|
|
2
|
+
# fake-gcs-server - Google Cloud Storage emulator (covers the gcs blob provider)
|
|
3
|
+
gcs-blob:
|
|
4
|
+
image: fsouza/fake-gcs-server:1.49.3
|
|
5
|
+
container_name: gcs-blob-integration
|
|
6
|
+
restart: unless-stopped
|
|
7
|
+
command: -host 0.0.0.0 -port 4443 -scheme http -public-host localhost:4443
|
|
8
|
+
ports:
|
|
9
|
+
- "4443:4443"
|
|
10
|
+
volumes:
|
|
11
|
+
- gcs-blob-data:/data
|
|
12
|
+
healthcheck:
|
|
13
|
+
test: ["CMD", "wget", "-q", "-O", "-", "http://localhost:4443/"]
|
|
14
|
+
interval: 10s
|
|
15
|
+
timeout: 5s
|
|
16
|
+
retries: 5
|
|
17
|
+
start_period: 10s
|
|
18
|
+
|
|
19
|
+
volumes:
|
|
20
|
+
gcs-blob-data:
|
|
21
|
+
name: gcs-blob-data
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
services:
|
|
2
|
+
# Kubo - IPFS node (covers the ipfs blob provider)
|
|
3
|
+
# API on 5001, gateway on 8080
|
|
4
|
+
ipfs:
|
|
5
|
+
image: ipfs/kubo:v0.32.1
|
|
6
|
+
container_name: ipfs-blob-integration
|
|
7
|
+
restart: unless-stopped
|
|
8
|
+
ports:
|
|
9
|
+
- "5001:5001"
|
|
10
|
+
- "8080:8080"
|
|
11
|
+
volumes:
|
|
12
|
+
- ipfs-blob-data:/data/ipfs
|
|
13
|
+
- ipfs-blob-staging:/export
|
|
14
|
+
healthcheck:
|
|
15
|
+
test: ["CMD-SHELL", "ipfs id > /dev/null 2>&1 || exit 1"]
|
|
16
|
+
interval: 10s
|
|
17
|
+
timeout: 5s
|
|
18
|
+
retries: 5
|
|
19
|
+
start_period: 15s
|
|
20
|
+
|
|
21
|
+
volumes:
|
|
22
|
+
ipfs-blob-data:
|
|
23
|
+
name: ipfs-blob-data
|
|
24
|
+
ipfs-blob-staging:
|
|
25
|
+
name: ipfs-blob-staging
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
services:
|
|
2
|
+
# MinIO - S3-compatible object storage (covers s3, minio, and r2 blob providers)
|
|
3
|
+
minio:
|
|
4
|
+
image: minio/minio:RELEASE.2024-08-29T01-40-52Z
|
|
5
|
+
container_name: minio-blob-integration
|
|
6
|
+
restart: unless-stopped
|
|
7
|
+
command: server /data --console-address ":9101"
|
|
8
|
+
ports:
|
|
9
|
+
- "9100:9000"
|
|
10
|
+
- "9101:9101"
|
|
11
|
+
environment:
|
|
12
|
+
- MINIO_ROOT_USER=minioadmin
|
|
13
|
+
- MINIO_ROOT_PASSWORD=minioadmin
|
|
14
|
+
volumes:
|
|
15
|
+
- minio-blob-data:/data
|
|
16
|
+
healthcheck:
|
|
17
|
+
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/ready"]
|
|
18
|
+
interval: 10s
|
|
19
|
+
timeout: 5s
|
|
20
|
+
retries: 5
|
|
21
|
+
start_period: 10s
|
|
22
|
+
|
|
23
|
+
volumes:
|
|
24
|
+
minio-blob-data:
|
|
25
|
+
name: minio-blob-data
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AzureBlobStoreService = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @module integrations/blob/azure/service
|
|
6
|
+
* @summary Azure Blob storage service.
|
|
7
|
+
* @description Blob store backed by Azure Blob Storage via @azure/storage-blob.
|
|
8
|
+
*/
|
|
9
|
+
const storage_blob_1 = require("@azure/storage-blob");
|
|
10
|
+
const identity_1 = require("@azure/identity");
|
|
11
|
+
const core_1 = require("@decaf-ts/core");
|
|
12
|
+
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
13
|
+
const BlobStoreService_js_1 = require("./../core/BlobStoreService.cjs");
|
|
14
|
+
const BlobValue_js_1 = require("./../core/BlobValue.cjs");
|
|
15
|
+
class AzureBlobStoreService extends BlobStoreService_js_1.BlobStoreService {
|
|
16
|
+
async initialize(...args) {
|
|
17
|
+
const { log } = (await this.logCtx(args, "initialize", true)).for(this.initialize);
|
|
18
|
+
const config = this.getConfigFromArgs(...args);
|
|
19
|
+
if (!config.container) {
|
|
20
|
+
throw new db_decorators_1.InternalError("AzureBlobStoreService requires a container");
|
|
21
|
+
}
|
|
22
|
+
if (config.connectionString) {
|
|
23
|
+
this.blobServiceClient =
|
|
24
|
+
storage_blob_1.BlobServiceClient.fromConnectionString(config.connectionString);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
const endpoint = config.endpoint || `https://${config.accountName}.blob.core.windows.net`;
|
|
28
|
+
this.blobServiceClient = new storage_blob_1.BlobServiceClient(endpoint, new identity_1.DefaultAzureCredential());
|
|
29
|
+
}
|
|
30
|
+
const client = this.blobServiceClient.getContainerClient(config.container);
|
|
31
|
+
this._config = config;
|
|
32
|
+
this._client = client;
|
|
33
|
+
log.verbose(`Initialized Azure Blob store ${config.sourceId}`);
|
|
34
|
+
return { config, client };
|
|
35
|
+
}
|
|
36
|
+
async put(key, value, options = {}, ...args) {
|
|
37
|
+
const { log } = (await this.logCtx(args, "put", true)).for(this.put);
|
|
38
|
+
log.verbose(`Putting blob ${key}`);
|
|
39
|
+
const blobName = this.physicalKey(key);
|
|
40
|
+
if (options.ifNotExists) {
|
|
41
|
+
if (await this.has(key)) {
|
|
42
|
+
throw new db_decorators_1.ConflictError(`Blob already exists: ${key}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const buffer = await (0, BlobValue_js_1.collectToBuffer)(value);
|
|
46
|
+
if (options.expectedSha256) {
|
|
47
|
+
const sha256 = await (0, BlobValue_js_1.computeSha256)(buffer);
|
|
48
|
+
if (options.expectedSha256 !== sha256) {
|
|
49
|
+
throw new db_decorators_1.ValidationError(`Checksum mismatch for ${key}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
const blockBlobClient = this.client.getBlockBlobClient(blobName);
|
|
54
|
+
const response = await blockBlobClient.uploadData(buffer, {
|
|
55
|
+
blobHTTPHeaders: options.contentType
|
|
56
|
+
? { blobContentType: options.contentType }
|
|
57
|
+
: undefined,
|
|
58
|
+
metadata: options.metadata,
|
|
59
|
+
});
|
|
60
|
+
const metadata = {
|
|
61
|
+
contentType: options.contentType,
|
|
62
|
+
contentLength: buffer.length,
|
|
63
|
+
etag: response.etag,
|
|
64
|
+
versionId: response.versionId,
|
|
65
|
+
custom: options.metadata,
|
|
66
|
+
};
|
|
67
|
+
return {
|
|
68
|
+
key,
|
|
69
|
+
uri: this.uri(key, "azure-blob", response.versionId ? `version=${response.versionId}` : undefined),
|
|
70
|
+
provider: this.provider,
|
|
71
|
+
sourceId: this.sourceId,
|
|
72
|
+
metadata,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
throw this.parseError(error);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async get(key, options = {}, ...args) {
|
|
80
|
+
const { log } = (await this.logCtx(args, "get", true)).for(this.get);
|
|
81
|
+
log.verbose(`Getting blob ${key}`);
|
|
82
|
+
const blobName = this.physicalKey(key);
|
|
83
|
+
try {
|
|
84
|
+
const blobClient = this.client.getBlobClient(blobName);
|
|
85
|
+
const downloadResponse = await blobClient.download(options.range?.start, options.range
|
|
86
|
+
? (options.range.end ?? undefined) !== undefined
|
|
87
|
+
? (options.range.end ?? undefined) - (options.range?.start ?? 0) + 1
|
|
88
|
+
: undefined
|
|
89
|
+
: undefined);
|
|
90
|
+
const metadata = {
|
|
91
|
+
contentType: downloadResponse.contentType,
|
|
92
|
+
contentLength: downloadResponse.contentLength,
|
|
93
|
+
etag: downloadResponse.etag,
|
|
94
|
+
};
|
|
95
|
+
const readable = downloadResponse.readableStreamBody;
|
|
96
|
+
return {
|
|
97
|
+
key,
|
|
98
|
+
value: (0, BlobValue_js_1.toAsyncIterable)(readable),
|
|
99
|
+
uri: this.uri(key, "azure-blob"),
|
|
100
|
+
provider: this.provider,
|
|
101
|
+
sourceId: this.sourceId,
|
|
102
|
+
metadata,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
throw this.parseError(error);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
async has(key, ...args) {
|
|
110
|
+
const { log } = (await this.logCtx(args, "has", true)).for(this.has);
|
|
111
|
+
log.verbose(`Checking blob ${key}`);
|
|
112
|
+
try {
|
|
113
|
+
const blobClient = this.client.getBlobClient(this.physicalKey(key));
|
|
114
|
+
return Boolean(await blobClient.exists());
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
throw this.parseError(error);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
async stat(key, ...args) {
|
|
121
|
+
const { log } = (await this.logCtx(args, "stat", true)).for(this.stat);
|
|
122
|
+
log.verbose(`Statting blob ${key}`);
|
|
123
|
+
try {
|
|
124
|
+
const blobClient = this.client.getBlobClient(this.physicalKey(key));
|
|
125
|
+
const props = await blobClient.getProperties();
|
|
126
|
+
return {
|
|
127
|
+
contentType: props.contentType,
|
|
128
|
+
contentLength: props.contentLength,
|
|
129
|
+
etag: props.etag,
|
|
130
|
+
custom: props.metadata,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
throw this.parseError(error);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
async delete(key, ...args) {
|
|
138
|
+
const { log } = (await this.logCtx(args, "delete", true)).for(this.delete);
|
|
139
|
+
log.verbose(`Deleting blob ${key}`);
|
|
140
|
+
try {
|
|
141
|
+
const blobClient = this.client.getBlobClient(this.physicalKey(key));
|
|
142
|
+
await blobClient.delete();
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
throw this.parseError(error);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
async copy(fromKey, toKey, options = {}, ...args) {
|
|
149
|
+
const { log } = (await this.logCtx(args, "copy", true)).for(this.copy);
|
|
150
|
+
log.verbose(`Copying blob ${fromKey} to ${toKey}`);
|
|
151
|
+
try {
|
|
152
|
+
const sourceClient = this.client.getBlobClient(this.physicalKey(fromKey));
|
|
153
|
+
const targetClient = this.client.getBlobClient(this.physicalKey(toKey));
|
|
154
|
+
const poller = await targetClient.beginCopyFromURL(sourceClient.url);
|
|
155
|
+
await poller.pollUntilDone();
|
|
156
|
+
const props = await targetClient.getProperties();
|
|
157
|
+
const metadata = {
|
|
158
|
+
contentType: options.contentType ?? props.contentType,
|
|
159
|
+
contentLength: props.contentLength,
|
|
160
|
+
etag: props.etag,
|
|
161
|
+
custom: options.metadata,
|
|
162
|
+
};
|
|
163
|
+
return {
|
|
164
|
+
key: toKey,
|
|
165
|
+
uri: this.uri(toKey, "azure-blob"),
|
|
166
|
+
provider: this.provider,
|
|
167
|
+
sourceId: this.sourceId,
|
|
168
|
+
metadata,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
throw this.parseError(error);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
async list(options = {}, ...args) {
|
|
176
|
+
const { log } = (await this.logCtx(args, "list", true)).for(this.list);
|
|
177
|
+
log.verbose("Listing blobs");
|
|
178
|
+
const prefix = this.physicalKey(options.prefix ?? "");
|
|
179
|
+
try {
|
|
180
|
+
const items = [];
|
|
181
|
+
const maxPageSize = options.limit ?? undefined;
|
|
182
|
+
for await (const blob of this.client.listBlobsFlat({
|
|
183
|
+
prefix: prefix || undefined,
|
|
184
|
+
includeMetadata: true,
|
|
185
|
+
})) {
|
|
186
|
+
items.push({
|
|
187
|
+
key: blob.name,
|
|
188
|
+
metadata: {
|
|
189
|
+
contentLength: blob.properties.contentLength,
|
|
190
|
+
etag: blob.properties.etag,
|
|
191
|
+
contentType: blob.properties.contentType,
|
|
192
|
+
custom: blob.metadata,
|
|
193
|
+
},
|
|
194
|
+
});
|
|
195
|
+
if (maxPageSize && items.length >= maxPageSize)
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
return { items };
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
throw this.parseError(error);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
async url(key, options = {}, ...args) {
|
|
205
|
+
const { log } = (await this.logCtx(args, "url", true)).for(this.url);
|
|
206
|
+
log.verbose(`Building url for blob ${key}`);
|
|
207
|
+
const blobName = this.physicalKey(key);
|
|
208
|
+
const operation = options.operation ?? "get";
|
|
209
|
+
const expiresIn = options.expiresInSeconds ?? 300;
|
|
210
|
+
try {
|
|
211
|
+
const blobClient = this.client.getBlobClient(blobName);
|
|
212
|
+
const credential = this.blobServiceClient.credential;
|
|
213
|
+
let url;
|
|
214
|
+
if (credential && typeof credential.accountName === "string") {
|
|
215
|
+
const sasToken = (0, storage_blob_1.generateBlobSASQueryParameters)({
|
|
216
|
+
containerName: this.config.container,
|
|
217
|
+
blobName,
|
|
218
|
+
permissions: storage_blob_1.BlobSASPermissions.from({
|
|
219
|
+
read: operation === "get",
|
|
220
|
+
create: operation === "put",
|
|
221
|
+
write: operation === "put",
|
|
222
|
+
}),
|
|
223
|
+
startsOn: new Date(),
|
|
224
|
+
expiresOn: new Date(Date.now() + expiresIn * 1000),
|
|
225
|
+
contentType: options.contentType,
|
|
226
|
+
}, credential).toString();
|
|
227
|
+
url = `${blobClient.url}?${sasToken}`;
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
const token = await blobClient.generateSasUrl({
|
|
231
|
+
permissions: storage_blob_1.BlobSASPermissions.from({
|
|
232
|
+
read: operation === "get",
|
|
233
|
+
create: operation === "put",
|
|
234
|
+
write: operation === "put",
|
|
235
|
+
}),
|
|
236
|
+
expiresOn: new Date(Date.now() + expiresIn * 1000),
|
|
237
|
+
contentType: options.contentType,
|
|
238
|
+
});
|
|
239
|
+
url = token;
|
|
240
|
+
}
|
|
241
|
+
return {
|
|
242
|
+
url,
|
|
243
|
+
method: operation === "put" ? "PUT" : "GET",
|
|
244
|
+
expiresAt: new Date(Date.now() + expiresIn * 1000),
|
|
245
|
+
headers: options.contentType
|
|
246
|
+
? { "Content-Type": options.contentType }
|
|
247
|
+
: undefined,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
catch (error) {
|
|
251
|
+
throw this.parseError(error);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
parseError(error) {
|
|
255
|
+
const err = error;
|
|
256
|
+
if (err instanceof db_decorators_1.NotFoundError ||
|
|
257
|
+
err instanceof db_decorators_1.ConflictError ||
|
|
258
|
+
err instanceof core_1.AuthorizationError ||
|
|
259
|
+
err instanceof core_1.ForbiddenError ||
|
|
260
|
+
err instanceof db_decorators_1.ValidationError ||
|
|
261
|
+
err instanceof core_1.ConnectionError ||
|
|
262
|
+
err instanceof core_1.UnsupportedError ||
|
|
263
|
+
err instanceof db_decorators_1.InternalError) {
|
|
264
|
+
return err;
|
|
265
|
+
}
|
|
266
|
+
const message = err.message || "Unknown error";
|
|
267
|
+
const lower = message.toLowerCase();
|
|
268
|
+
const statusCode = err?.statusCode || err?.$metadata?.httpStatusCode;
|
|
269
|
+
const code = err?.code;
|
|
270
|
+
if (lower.includes("blobnotfound") || statusCode === 404 || lower.includes("not found") || code === "BlobNotFound") {
|
|
271
|
+
return new db_decorators_1.NotFoundError(err);
|
|
272
|
+
}
|
|
273
|
+
if (statusCode === 409 || lower.includes("conflict") || lower.includes("already exists")) {
|
|
274
|
+
return new db_decorators_1.ConflictError(err);
|
|
275
|
+
}
|
|
276
|
+
if (statusCode === 401 || lower.includes("unauthorized")) {
|
|
277
|
+
return new core_1.AuthorizationError(err);
|
|
278
|
+
}
|
|
279
|
+
if (statusCode === 403 || lower.includes("permission") || lower.includes("forbidden")) {
|
|
280
|
+
return new core_1.ForbiddenError(err);
|
|
281
|
+
}
|
|
282
|
+
if (statusCode === 429 || lower.includes("rate limit")) {
|
|
283
|
+
return new db_decorators_1.ConflictError(err);
|
|
284
|
+
}
|
|
285
|
+
if (statusCode === 503 || lower.includes("timeout") || lower.includes("unavailable") || lower.includes("connection")) {
|
|
286
|
+
return new core_1.ConnectionError(err);
|
|
287
|
+
}
|
|
288
|
+
return new db_decorators_1.InternalError(err);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
exports.AzureBlobStoreService = AzureBlobStoreService;
|
|
292
|
+
//# sourceMappingURL=AzureBlobStoreService.js.map
|
|
293
|
+
//# sourceMappingURL=AzureBlobStoreService.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blob/azure/AzureBlobStoreService.cjs","sourceRoot":"","sources":["blob/azure/AzureBlobStoreService.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
/**
|
|
18
|
+
* @module integrations/blob/azure
|
|
19
|
+
* @summary Azure Blob storage exports.
|
|
20
|
+
* @description Re-exports the Azure Blob store service.
|
|
21
|
+
*/
|
|
22
|
+
__exportStar(require("./AzureBlobStoreService.cjs"), exports);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
24
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blob/azure/index.cjs","sourceRoot":"","sources":["blob/azure/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;GAIG;AACH,6DAA2C;AAC3C,iCAAiC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ValidationError = exports.UnsupportedError = exports.NotFoundError = exports.InternalError = exports.ForbiddenError = exports.ConnectionError = exports.ConflictError = exports.BadRequestError = exports.AuthorizationError = void 0;
|
|
4
|
+
exports.translateBlobError = translateBlobError;
|
|
5
|
+
/**
|
|
6
|
+
* @module integrations/blob/core/errors
|
|
7
|
+
* @summary Blob error translation helpers.
|
|
8
|
+
* @description Re-exports standard DECAF errors used by blob store implementations and provides
|
|
9
|
+
* helper functions for translating provider library errors into the appropriate DECAF error types.
|
|
10
|
+
*/
|
|
11
|
+
const core_1 = require("@decaf-ts/core");
|
|
12
|
+
Object.defineProperty(exports, "AuthorizationError", { enumerable: true, get: function () { return core_1.AuthorizationError; } });
|
|
13
|
+
Object.defineProperty(exports, "ConnectionError", { enumerable: true, get: function () { return core_1.ConnectionError; } });
|
|
14
|
+
Object.defineProperty(exports, "ForbiddenError", { enumerable: true, get: function () { return core_1.ForbiddenError; } });
|
|
15
|
+
Object.defineProperty(exports, "UnsupportedError", { enumerable: true, get: function () { return core_1.UnsupportedError; } });
|
|
16
|
+
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
17
|
+
Object.defineProperty(exports, "BadRequestError", { enumerable: true, get: function () { return db_decorators_1.BadRequestError; } });
|
|
18
|
+
Object.defineProperty(exports, "ConflictError", { enumerable: true, get: function () { return db_decorators_1.ConflictError; } });
|
|
19
|
+
Object.defineProperty(exports, "InternalError", { enumerable: true, get: function () { return db_decorators_1.InternalError; } });
|
|
20
|
+
Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function () { return db_decorators_1.NotFoundError; } });
|
|
21
|
+
Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return db_decorators_1.ValidationError; } });
|
|
22
|
+
/**
|
|
23
|
+
* Translates a generic error into a DECAF error based on HTTP status code or message keywords.
|
|
24
|
+
* Used as a fallback by provider parseError methods.
|
|
25
|
+
*/
|
|
26
|
+
function translateBlobError(error) {
|
|
27
|
+
if (error instanceof db_decorators_1.NotFoundError ||
|
|
28
|
+
error instanceof db_decorators_1.ConflictError ||
|
|
29
|
+
error instanceof core_1.AuthorizationError ||
|
|
30
|
+
error instanceof core_1.ForbiddenError ||
|
|
31
|
+
error instanceof db_decorators_1.ValidationError ||
|
|
32
|
+
error instanceof core_1.ConnectionError ||
|
|
33
|
+
error instanceof core_1.UnsupportedError ||
|
|
34
|
+
error instanceof db_decorators_1.InternalError) {
|
|
35
|
+
return error;
|
|
36
|
+
}
|
|
37
|
+
const message = error.message || error.name || "Unknown error";
|
|
38
|
+
const lowerMessage = message.toLowerCase();
|
|
39
|
+
const statusCode = error?.statusCode ||
|
|
40
|
+
error?.$metadata?.httpStatusCode ||
|
|
41
|
+
error?.code;
|
|
42
|
+
if (lowerMessage.includes("not found") ||
|
|
43
|
+
statusCode === 404 ||
|
|
44
|
+
lowerMessage.includes("enoent") ||
|
|
45
|
+
lowerMessage.includes("blobnotfound") ||
|
|
46
|
+
statusCode === "ENOENT") {
|
|
47
|
+
return new db_decorators_1.NotFoundError(error);
|
|
48
|
+
}
|
|
49
|
+
if (lowerMessage.includes("already exists") ||
|
|
50
|
+
lowerMessage.includes("conflict") ||
|
|
51
|
+
statusCode === 409 ||
|
|
52
|
+
statusCode === "EEXIST") {
|
|
53
|
+
return new db_decorators_1.ConflictError(error);
|
|
54
|
+
}
|
|
55
|
+
if (lowerMessage.includes("unauthorized") || statusCode === 401) {
|
|
56
|
+
return new core_1.AuthorizationError(error);
|
|
57
|
+
}
|
|
58
|
+
if (lowerMessage.includes("permission") || statusCode === 403) {
|
|
59
|
+
return new core_1.ForbiddenError(error);
|
|
60
|
+
}
|
|
61
|
+
if (lowerMessage.includes("rate limit") ||
|
|
62
|
+
statusCode === 429) {
|
|
63
|
+
return new db_decorators_1.ConflictError(error);
|
|
64
|
+
}
|
|
65
|
+
if (lowerMessage.includes("connection") ||
|
|
66
|
+
lowerMessage.includes("timeout") ||
|
|
67
|
+
lowerMessage.includes("unavailable") ||
|
|
68
|
+
statusCode === 503) {
|
|
69
|
+
return new core_1.ConnectionError(error);
|
|
70
|
+
}
|
|
71
|
+
return new db_decorators_1.InternalError(error);
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=BlobErrors.js.map
|
|
74
|
+
//# sourceMappingURL=BlobErrors.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blob/core/BlobErrors.cjs","sourceRoot":"","sources":["blob/core/BlobErrors.js"],"names":[],"mappings":";;;AAaA,gDA8CC;AA3DD;;;;;GAKG;AACH,yCAAwG;AAE/F,mGAFA,yBAAkB,OAEA;AAAkC,gGAFhC,sBAAe,OAEgC;AAAE,+FAFhC,qBAAc,OAEgC;AAAgC,iGAF9D,uBAAgB,OAE8D;AAD5I,2DAAyH;AAC5F,gGADpB,+BAAe,OACoB;AAAE,8FADpB,6BAAa,OACoB;AAAmC,8FADrD,6BAAa,OACqD;AAAE,8FADrD,6BAAa,OACqD;AAAoB,gGADvE,+BAAe,OACuE;AAC7J;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,KAAK;IACpC,IAAI,KAAK,YAAY,6BAAa;QAC9B,KAAK,YAAY,6BAAa;QAC9B,KAAK,YAAY,yBAAkB;QACnC,KAAK,YAAY,qBAAc;QAC/B,KAAK,YAAY,+BAAe;QAChC,KAAK,YAAY,sBAAe;QAChC,KAAK,YAAY,uBAAgB;QACjC,KAAK,YAAY,6BAAa,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,IAAI,eAAe,CAAC;IAC/D,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,KAAK,EAAE,UAAU;QAChC,KAAK,EAAE,SAAS,EAAE,cAAc;QAChC,KAAK,EAAE,IAAI,CAAC;IAChB,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;QAClC,UAAU,KAAK,GAAG;QAClB,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC/B,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC;QACrC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,IAAI,6BAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACvC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;QACjC,UAAU,KAAK,GAAG;QAClB,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,IAAI,6BAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QAC9D,OAAO,IAAI,yBAAkB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QAC5D,OAAO,IAAI,qBAAc,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;QACnC,UAAU,KAAK,GAAG,EAAE,CAAC;QACrB,OAAO,IAAI,6BAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;QACnC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;QAChC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC;QACpC,UAAU,KAAK,GAAG,EAAE,CAAC;QACrB,OAAO,IAAI,sBAAe,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,IAAI,6BAAa,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AACD,sCAAsC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cleanKey = cleanKey;
|
|
4
|
+
exports.physicalKey = physicalKey;
|
|
5
|
+
/**
|
|
6
|
+
* @module integrations/blob/core/key
|
|
7
|
+
* @summary Blob key helpers.
|
|
8
|
+
* @description Validation, cleaning, and prefixing helpers for blob keys.
|
|
9
|
+
*/
|
|
10
|
+
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
11
|
+
/**
|
|
12
|
+
* Strips leading slashes from a blob key and rejects unsafe path segments.
|
|
13
|
+
*/
|
|
14
|
+
function cleanKey(key) {
|
|
15
|
+
if (typeof key !== "string") {
|
|
16
|
+
throw new db_decorators_1.ValidationError(`Blob key must be a string`);
|
|
17
|
+
}
|
|
18
|
+
const clean = key.replace(/^\/+/, "");
|
|
19
|
+
if (clean === "" ||
|
|
20
|
+
clean === "." ||
|
|
21
|
+
clean === ".." ||
|
|
22
|
+
clean.includes("../") ||
|
|
23
|
+
clean.startsWith("../")) {
|
|
24
|
+
throw new db_decorators_1.ValidationError(`Invalid blob key: ${key}`);
|
|
25
|
+
}
|
|
26
|
+
return clean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Applies the configured prefix (trimmed of leading/trailing slashes) to a cleaned key.
|
|
30
|
+
*/
|
|
31
|
+
function physicalKey(key, prefix) {
|
|
32
|
+
const clean = cleanKey(key);
|
|
33
|
+
const trimmedPrefix = prefix?.replace(/^\/+|\/+$/g, "");
|
|
34
|
+
return trimmedPrefix ? `${trimmedPrefix}/${clean}` : clean;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=BlobKey.js.map
|
|
37
|
+
//# sourceMappingURL=BlobKey.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blob/core/BlobKey.cjs","sourceRoot":"","sources":["blob/core/BlobKey.js"],"names":[],"mappings":";;AASA,4BAaC;AAID,kCAIC;AA9BD;;;;GAIG;AACH,2DAA0D;AAC1D;;GAEG;AACH,SAAgB,QAAQ,CAAC,GAAG;IACxB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,+BAAe,CAAC,2BAA2B,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtC,IAAI,KAAK,KAAK,EAAE;QACZ,KAAK,KAAK,GAAG;QACb,KAAK,KAAK,IAAI;QACd,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QACrB,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,+BAAe,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AACD;;GAEG;AACH,SAAgB,WAAW,CAAC,GAAG,EAAE,MAAM;IACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,aAAa,GAAG,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACxD,OAAO,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/D,CAAC;AACD,mCAAmC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BlobStoreFactory = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @module integrations/blob/core/factory
|
|
6
|
+
* @summary Blob store factory.
|
|
7
|
+
* @description Creates uninitialized blob store services selected by provider.
|
|
8
|
+
*/
|
|
9
|
+
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
10
|
+
const S3BlobStoreService_js_1 = require("./../s3/S3BlobStoreService.cjs");
|
|
11
|
+
const MinioBlobStoreService_js_1 = require("./../s3/MinioBlobStoreService.cjs");
|
|
12
|
+
const R2BlobStoreService_js_1 = require("./../s3/R2BlobStoreService.cjs");
|
|
13
|
+
const AzureBlobStoreService_js_1 = require("./../azure/AzureBlobStoreService.cjs");
|
|
14
|
+
const GcsBlobStoreService_js_1 = require("./../gcp/GcsBlobStoreService.cjs");
|
|
15
|
+
const LocalBlobStoreService_js_1 = require("./../local/LocalBlobStoreService.cjs");
|
|
16
|
+
const IpfsBlobStoreService_js_1 = require("./../ipfs/IpfsBlobStoreService.cjs");
|
|
17
|
+
const MemoryBlobStoreService_js_1 = require("./../memory/MemoryBlobStoreService.cjs");
|
|
18
|
+
class BlobStoreFactory {
|
|
19
|
+
create(config) {
|
|
20
|
+
let service;
|
|
21
|
+
switch (config.provider) {
|
|
22
|
+
case "s3":
|
|
23
|
+
service = new S3BlobStoreService_js_1.S3BlobStoreService();
|
|
24
|
+
break;
|
|
25
|
+
case "minio":
|
|
26
|
+
service = new MinioBlobStoreService_js_1.MinioBlobStoreService();
|
|
27
|
+
break;
|
|
28
|
+
case "r2":
|
|
29
|
+
service = new R2BlobStoreService_js_1.R2BlobStoreService();
|
|
30
|
+
break;
|
|
31
|
+
case "azure-blob":
|
|
32
|
+
service = new AzureBlobStoreService_js_1.AzureBlobStoreService();
|
|
33
|
+
break;
|
|
34
|
+
case "gcs":
|
|
35
|
+
service = new GcsBlobStoreService_js_1.GcsBlobStoreService();
|
|
36
|
+
break;
|
|
37
|
+
case "local":
|
|
38
|
+
service = new LocalBlobStoreService_js_1.LocalBlobStoreService();
|
|
39
|
+
break;
|
|
40
|
+
case "ipfs":
|
|
41
|
+
service = new IpfsBlobStoreService_js_1.IpfsBlobStoreService();
|
|
42
|
+
break;
|
|
43
|
+
case "memory":
|
|
44
|
+
service = new MemoryBlobStoreService_js_1.MemoryBlobStoreService();
|
|
45
|
+
break;
|
|
46
|
+
default:
|
|
47
|
+
return assertNever(config);
|
|
48
|
+
}
|
|
49
|
+
return service;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.BlobStoreFactory = BlobStoreFactory;
|
|
53
|
+
function assertNever(value) {
|
|
54
|
+
throw new db_decorators_1.ValidationError(`Unsupported blob provider: ${JSON.stringify(value)}`);
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=BlobStoreFactory.js.map
|
|
57
|
+
//# sourceMappingURL=BlobStoreFactory.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blob/core/BlobStoreFactory.cjs","sourceRoot":"","sources":["blob/core/BlobStoreFactory.js"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,2DAA0D;AAC1D,yEAAmE;AACnE,+EAAyE;AACzE,yEAAmE;AACnE,kFAA4E;AAC5E,4EAAsE;AACtE,kFAA4E;AAC5E,+EAAyE;AACzE,qFAA+E;AAC/E,MAAa,gBAAgB;IACzB,MAAM,CAAC,MAAM;QACT,IAAI,OAAO,CAAC;QACZ,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtB,KAAK,IAAI;gBACL,OAAO,GAAG,IAAI,0CAAkB,EAAE,CAAC;gBACnC,MAAM;YACV,KAAK,OAAO;gBACR,OAAO,GAAG,IAAI,gDAAqB,EAAE,CAAC;gBACtC,MAAM;YACV,KAAK,IAAI;gBACL,OAAO,GAAG,IAAI,0CAAkB,EAAE,CAAC;gBACnC,MAAM;YACV,KAAK,YAAY;gBACb,OAAO,GAAG,IAAI,gDAAqB,EAAE,CAAC;gBACtC,MAAM;YACV,KAAK,KAAK;gBACN,OAAO,GAAG,IAAI,4CAAmB,EAAE,CAAC;gBACpC,MAAM;YACV,KAAK,OAAO;gBACR,OAAO,GAAG,IAAI,gDAAqB,EAAE,CAAC;gBACtC,MAAM;YACV,KAAK,MAAM;gBACP,OAAO,GAAG,IAAI,8CAAoB,EAAE,CAAC;gBACrC,MAAM;YACV,KAAK,QAAQ;gBACT,OAAO,GAAG,IAAI,kDAAsB,EAAE,CAAC;gBACvC,MAAM;YACV;gBACI,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AAjCD,4CAiCC;AACD,SAAS,WAAW,CAAC,KAAK;IACtB,MAAM,IAAI,+BAAe,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACrF,CAAC;AACD,4CAA4C"}
|