@visulima/storage 1.0.0-alpha.17 → 1.0.0-alpha.19
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/CHANGELOG.md +21 -0
- package/LICENSE.md +3 -0
- package/dist/adapter/nuxt/module.d.ts +3 -3
- package/dist/adapter/nuxt/module.js +1 -93
- package/dist/handler/http/fetch/index.d.ts +6 -6
- package/dist/handler/http/fetch/index.js +1 -4
- package/dist/handler/http/hono/index.d.ts +3 -3
- package/dist/handler/http/hono/index.js +1 -65
- package/dist/handler/http/nextjs/index.d.ts +4 -4
- package/dist/handler/http/nextjs/index.js +1 -37
- package/dist/handler/http/node/index.d.ts +6 -6
- package/dist/handler/http/node/index.js +1 -8
- package/dist/handler/http/solid-start/index.d.ts +4 -4
- package/dist/handler/http/solid-start/index.js +1 -44
- package/dist/index.js +1 -13
- package/dist/openapi/index.js +1 -5
- package/dist/packem_shared/AwsLightFile-BTLiRxXj.js +1 -0
- package/dist/packem_shared/AwsLightMetaStorage-DHz1nf_H.js +1 -0
- package/dist/packem_shared/AwsLightStorage-CA9cdfJ6.js +1 -0
- package/dist/packem_shared/AzureFile-BKHru1zB.js +1 -0
- package/dist/packem_shared/AzureSMetaStorage-BqA4jUDJ.js +1 -0
- package/dist/packem_shared/AzureStorage-BKUjCymW.js +1 -0
- package/dist/packem_shared/BaseTransformer-D68eLyz1.js +1 -0
- package/dist/packem_shared/DiskStorage-DNjpDMX9.js +1 -0
- package/dist/packem_shared/DiskStorageWithChecksum-Bb6JX_tC.js +1 -0
- package/dist/packem_shared/ERRORS-B9jkvKwx.js +1 -0
- package/dist/packem_shared/File-alcSNpLq.js +1 -0
- package/dist/packem_shared/GCSConfig-BQ0OpVhe.js +1 -0
- package/dist/packem_shared/GCSFile-CHjX_fJk.js +1 -0
- package/dist/packem_shared/GCSMetaStorage-CpxQ8wM9.js +1 -0
- package/dist/packem_shared/GCStorage-DAg1V55T.js +1 -0
- package/dist/packem_shared/LocalMetaStorage-BWuFvWn4.js +1 -0
- package/dist/packem_shared/MediaTransformer-2C8MJeAg.js +1 -0
- package/dist/packem_shared/MetaStorage-Y4m1dWgd.js +1 -0
- package/dist/packem_shared/Metadata-B6Ir0KO7.js +1 -0
- package/dist/packem_shared/Multipart-Bd9YFFn0.js +1 -0
- package/dist/packem_shared/Multipart-D5bcEvga.js +1 -0
- package/dist/packem_shared/NetlifyBlobFile-CpzkMKng.js +1 -0
- package/dist/packem_shared/NetlifyBlobMetaStorage-dD0oBLom.js +1 -0
- package/dist/packem_shared/NetlifyBlobStorage-ByTwCN-h.js +1 -0
- package/dist/packem_shared/NoOpMetrics-Dky06sf1.js +1 -0
- package/dist/packem_shared/OpenTelemetryMetrics-9uxQMSlg.js +1 -0
- package/dist/packem_shared/Rest-CYEBbtCD.js +1 -0
- package/dist/packem_shared/Rest-DoonVU7B.js +1 -0
- package/dist/packem_shared/S3File-Du6wP0Sz.js +1 -0
- package/dist/packem_shared/S3MetaStorage-vcriiosn.js +1 -0
- package/dist/packem_shared/S3Storage-Fx6-OSc-.js +1 -0
- package/dist/packem_shared/TUS_RESUMABLE-B7KtPVeC.js +1 -0
- package/dist/packem_shared/Tus-Bd_2Ki2G.js +1 -0
- package/dist/packem_shared/Tus-CUBCkuPE.js +1 -0
- package/dist/packem_shared/ValidationError-D8KKJiKA.js +1 -0
- package/dist/packem_shared/VercelBlobFile-CL9MjKcY.js +1 -0
- package/dist/packem_shared/VercelBlobMetaStorage-BsOTx-Su.js +1 -0
- package/dist/packem_shared/VercelBlobStorage-kNkk5Cn4.js +1 -0
- package/dist/packem_shared/_commonjsHelpers-D6W6KoPK.js +1 -0
- package/dist/packem_shared/aws-light-meta-storage-TPyQwLvk.js +4 -0
- package/dist/packem_shared/backblaze-DEflv87m.js +1 -0
- package/dist/packem_shared/base-handler-core-DaggCVsq.js +1 -0
- package/dist/packem_shared/base-handler-fetch-DnarP64X.js +1 -0
- package/dist/packem_shared/base-handler-node-BTes6sql.js +1 -0
- package/dist/packem_shared/cache-qV_5Umeq.js +1 -0
- package/dist/packem_shared/cloudflare-DLAeQvgD.js +1 -0
- package/dist/packem_shared/defaultCloudStorageFileNameValidation-yiM9GxHr.js +1 -0
- package/dist/packem_shared/digitalOcean-nhZUds87.js +1 -0
- package/dist/packem_shared/disk-storage-BvdK4bqF.js +5 -0
- package/dist/packem_shared/gcs-meta-storage-CvGkpzVE.js +1 -0
- package/dist/packem_shared/has-content-Bx2p8Okx.js +1 -0
- package/dist/packem_shared/headers-DC2MEOrK.js +27 -0
- package/dist/packem_shared/is-expired-1JuZjDtb.js +1 -0
- package/dist/packem_shared/isRetryableError-DQNSZiBc.js +1 -0
- package/dist/packem_shared/isValidMediaType-B-2UKjZx.js +1 -0
- package/dist/packem_shared/local-meta-storage-Bkwqi_gi.js +1 -0
- package/dist/packem_shared/{media-transformer.d-ChmjTvjc.d.ts → media-transformer.d-CY9CsEOe.d.ts} +1 -1
- package/dist/packem_shared/minio-BWwgGXeE.js +1 -0
- package/dist/packem_shared/multipart-base-C6OjBwMS.js +1 -0
- package/dist/packem_shared/part-match-DqD5U7An.js +1 -0
- package/dist/packem_shared/path-D7rMc9nq-B718mbm6.js +1 -0
- package/dist/packem_shared/response-builder-Wdo_fvcF.js +1 -0
- package/dist/packem_shared/rest-base-B2Dv7esY.js +1 -0
- package/dist/packem_shared/restOpenApiSpec-PaIVbESh.js +1 -0
- package/dist/packem_shared/s3-base-storage-xHZNtsGe.js +1 -0
- package/dist/packem_shared/sharedGet-Ce7WGAsc.js +1 -0
- package/dist/packem_shared/storage-m_Cxgiih.js +1 -0
- package/dist/packem_shared/tigris-DZoyrMNd.js +1 -0
- package/dist/packem_shared/transformOpenApiSpec-C0vEbDTO.js +1 -0
- package/dist/packem_shared/{tus-base.d-CpLzyd-S.d.ts → tus-base.d-DNZRXR9X.d.ts} +2 -2
- package/dist/packem_shared/tusOpenApiSpec-DF0-hlWV.js +1 -0
- package/dist/packem_shared/{types.d-DBjmJvIT.d.ts → types.d-BCN94sB_.d.ts} +1 -1
- package/dist/packem_shared/{types.d-DviSTLOg.d.ts → types.d-D4caL2Fp.d.ts} +1 -1
- package/dist/packem_shared/update-size-DANV7aa2.js +1 -0
- package/dist/packem_shared/validator-DK41xp8N.js +1 -0
- package/dist/packem_shared/waitForStorage-ChSBLhLc.js +1 -0
- package/dist/packem_shared/wasabi-Dmce4x9s.js +1 -0
- package/dist/packem_shared/xhrOpenApiSpec-nyoboz83.js +1 -0
- package/dist/storage/aws/clients/index.js +1 -6
- package/dist/storage/aws/index.js +1 -3
- package/dist/storage/aws-light/index.js +1 -3
- package/dist/storage/azure/index.js +1 -3
- package/dist/storage/gcs/index.js +1 -4
- package/dist/storage/local/index.js +1 -3
- package/dist/storage/netlify-blob/index.js +1 -3
- package/dist/storage/vercel-blob/index.js +1 -3
- package/dist/transformer/audio-transformer.d.ts +1 -1
- package/dist/transformer/audio-transformer.js +1 -278
- package/dist/transformer/image-transformer.d.ts +1 -1
- package/dist/transformer/image-transformer.js +1 -1100
- package/dist/transformer/index.d.ts +2 -2
- package/dist/transformer/index.js +1 -4
- package/dist/transformer/video-transformer.d.ts +1 -1
- package/dist/transformer/video-transformer.js +1 -310
- package/package.json +18 -18
- package/dist/packem_shared/AwsLightFile-C-Nd5rtl.js +0 -11
- package/dist/packem_shared/AwsLightMetaStorage-BIDb5EPg.js +0 -4
- package/dist/packem_shared/AwsLightStorage-CMuKw4bI.js +0 -133
- package/dist/packem_shared/AzureFile-C0kug4w4.js +0 -8
- package/dist/packem_shared/AzureSMetaStorage-BEbXX9Uk.js +0 -89
- package/dist/packem_shared/AzureStorage-98-LRZ1e.js +0 -359
- package/dist/packem_shared/BaseTransformer-9965D4pb.js +0 -83
- package/dist/packem_shared/DiskStorage-COMe_G42.js +0 -12
- package/dist/packem_shared/DiskStorageWithChecksum-BVaaZiyS.js +0 -249
- package/dist/packem_shared/ERRORS-D0apMqnc.js +0 -97
- package/dist/packem_shared/File-CPUhj3DI.js +0 -69
- package/dist/packem_shared/GCSConfig-vPP22kN6.js +0 -11
- package/dist/packem_shared/GCSFile-DaDiCKE2.js +0 -8
- package/dist/packem_shared/GCSMetaStorage-BygVH0Ee.js +0 -7
- package/dist/packem_shared/GCStorage-4hSx_bN1.js +0 -410
- package/dist/packem_shared/LocalMetaStorage-DvnZqf61.js +0 -7
- package/dist/packem_shared/MediaTransformer-BRRqYA0E.js +0 -1202
- package/dist/packem_shared/MetaStorage-pECeFOad.js +0 -46
- package/dist/packem_shared/Metadata-DRLXeJ0F.js +0 -89
- package/dist/packem_shared/Multipart-BzzvNxt4.js +0 -128
- package/dist/packem_shared/Multipart-DLtFLQ8s.js +0 -163
- package/dist/packem_shared/NetlifyBlobFile-CfyJtGWN.js +0 -14
- package/dist/packem_shared/NetlifyBlobMetaStorage-eJT6RFy9.js +0 -9
- package/dist/packem_shared/NetlifyBlobStorage-nPv7iIAG.js +0 -376
- package/dist/packem_shared/NoOpMetrics-DhAk5rXc.js +0 -10
- package/dist/packem_shared/OpenTelemetryMetrics-BnxhqIaH.js +0 -67
- package/dist/packem_shared/Rest-DEa7IA9R.js +0 -267
- package/dist/packem_shared/Rest-qhMbCn5a.js +0 -228
- package/dist/packem_shared/S3File-BXCuJaQZ.js +0 -11
- package/dist/packem_shared/S3MetaStorage-yT4CznlV.js +0 -77
- package/dist/packem_shared/S3Storage-wi5XT-yu.js +0 -317
- package/dist/packem_shared/TUS_RESUMABLE-Dtfsffnj.js +0 -434
- package/dist/packem_shared/Tus-Ck0Hdle5.js +0 -195
- package/dist/packem_shared/Tus-_0vCdHyB.js +0 -200
- package/dist/packem_shared/ValidationError-BfF1aE4h.js +0 -26
- package/dist/packem_shared/VercelBlobFile-DkFIIb9Q.js +0 -18
- package/dist/packem_shared/VercelBlobMetaStorage-DjFmi4vp.js +0 -9
- package/dist/packem_shared/VercelBlobStorage-CmMgiDgr.js +0 -261
- package/dist/packem_shared/_commonjsHelpers-BqLXS_qQ.js +0 -5
- package/dist/packem_shared/aws-light-meta-storage-BGZEiY3y.js +0 -447
- package/dist/packem_shared/backblaze-BlMnIcBC.js +0 -20
- package/dist/packem_shared/base-handler-core-lVB-D59L.js +0 -306
- package/dist/packem_shared/base-handler-fetch-CitgN-Aw.js +0 -291
- package/dist/packem_shared/base-handler-node-BiO2DF87.js +0 -731
- package/dist/packem_shared/cache-B88MXQ_2.js +0 -18
- package/dist/packem_shared/cloudflare-Bi1q8wXE.js +0 -21
- package/dist/packem_shared/defaultCloudStorageFileNameValidation-Brw40ZEP.js +0 -11
- package/dist/packem_shared/digitalOcean-CWQRJM3L.js +0 -21
- package/dist/packem_shared/disk-storage-D9RfoKjW.js +0 -832
- package/dist/packem_shared/gcs-meta-storage-8FovEDbW.js +0 -159
- package/dist/packem_shared/has-content-CY66ehMK.js +0 -3
- package/dist/packem_shared/headers-YLRp1dLo.js +0 -1318
- package/dist/packem_shared/is-expired-CTThU1q5.js +0 -8
- package/dist/packem_shared/isRetryableError-Dycp7127.js +0 -82
- package/dist/packem_shared/isValidMediaType-BeDgiObq.js +0 -35
- package/dist/packem_shared/local-meta-storage-D-pPc3FI.js +0 -658
- package/dist/packem_shared/minio-C2YBZQOw.js +0 -22
- package/dist/packem_shared/multipart-base-C994naBi.js +0 -102
- package/dist/packem_shared/part-match-Dt738Ddb.js +0 -96
- package/dist/packem_shared/path-aV9lMdcn-DMU5H1-h.js +0 -162
- package/dist/packem_shared/response-builder-BtnRiBUI.js +0 -45
- package/dist/packem_shared/rest-base-k1ory8uB.js +0 -457
- package/dist/packem_shared/restOpenApiSpec-BBJ_SiPE.js +0 -800
- package/dist/packem_shared/s3-base-storage-zUO8u8Cp.js +0 -510
- package/dist/packem_shared/sharedGet-CkSLSnMd.js +0 -1022
- package/dist/packem_shared/storage-5XW1E7XU.js +0 -1188
- package/dist/packem_shared/tigris-Hac8TKnX.js +0 -21
- package/dist/packem_shared/transformOpenApiSpec-BodFhFls.js +0 -975
- package/dist/packem_shared/tusOpenApiSpec-DzppyJTW.js +0 -740
- package/dist/packem_shared/update-size-CCGm6i1J.js +0 -8
- package/dist/packem_shared/validator-DuO17wFF.js +0 -79
- package/dist/packem_shared/waitForStorage-Cscw85sx.js +0 -18
- package/dist/packem_shared/wasabi-DIyflHSd.js +0 -21
- package/dist/packem_shared/xhrOpenApiSpec-CXz7BC5J.js +0 -264
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
## @visulima/storage [1.0.0-alpha.19](https://github.com/visulima/visulima/compare/@visulima/storage@1.0.0-alpha.18...@visulima/storage@1.0.0-alpha.19) (2026-05-06)
|
|
2
|
+
|
|
3
|
+
### Miscellaneous Chores
|
|
4
|
+
|
|
5
|
+
* re-enable jsdoc/match-description in api-platform and tighten config docs ([4ecaa31](https://github.com/visulima/visulima/commit/4ecaa315064cdd798af1ea1296be1fe52967bf9a))
|
|
6
|
+
* **storage:** apply partial lint cleanup from agent batch ([ffcbea2](https://github.com/visulima/visulima/commit/ffcbea2a738fd2a116b26e58eda433109a944d85))
|
|
7
|
+
* **storage:** apply prettier and eslint quote-style auto-fix ([437aab6](https://github.com/visulima/visulima/commit/437aab6dc248a8ac058c2af3832bd898a2c51053))
|
|
8
|
+
* **storage:** clear lint and prettier diagnostics ([d6c05b1](https://github.com/visulima/visulima/commit/d6c05b11d278d844c872a6cd3364f95778381003))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Dependencies
|
|
12
|
+
|
|
13
|
+
* **@visulima/fs:** upgraded to 5.0.0-alpha.14
|
|
14
|
+
|
|
15
|
+
## @visulima/storage [1.0.0-alpha.18](https://github.com/visulima/visulima/compare/@visulima/storage@1.0.0-alpha.17...@visulima/storage@1.0.0-alpha.18) (2026-05-04)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Dependencies
|
|
19
|
+
|
|
20
|
+
* **@visulima/fs:** upgraded to 5.0.0-alpha.13
|
|
21
|
+
|
|
1
22
|
## @visulima/storage [1.0.0-alpha.17](https://github.com/visulima/visulima/compare/@visulima/storage@1.0.0-alpha.16...@visulima/storage@1.0.0-alpha.17) (2026-04-30)
|
|
2
23
|
|
|
3
24
|
## @visulima/storage [1.0.0-alpha.16](https://github.com/visulima/visulima/compare/@visulima/storage@1.0.0-alpha.15...@visulima/storage@1.0.0-alpha.16) (2026-04-28)
|
package/LICENSE.md
CHANGED
|
@@ -120,11 +120,14 @@ Repository: git+https://github.com/visulima/visulima.git
|
|
|
120
120
|
> >
|
|
121
121
|
> >
|
|
122
122
|
> > # Licenses of bundled dependencies
|
|
123
|
+
> >
|
|
123
124
|
> > The published @visulima/error artifact additionally contains code with the following licenses:
|
|
124
125
|
> > MIT
|
|
125
126
|
> >
|
|
126
127
|
> > # Bundled dependencies:
|
|
128
|
+
> >
|
|
127
129
|
> > ## is-plain-obj
|
|
130
|
+
> >
|
|
128
131
|
> > License: MIT
|
|
129
132
|
> > By: Sindre Sorhus
|
|
130
133
|
> > Repository: sindresorhus/is-plain-obj
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { U as UploadOptions } from "../../packem_shared/types.d-
|
|
1
|
+
import { U as UploadOptions } from "../../packem_shared/types.d-D4caL2Fp.js";
|
|
2
2
|
import { U as UploadFile, B as BaseStorage } from "../../packem_shared/storage.d-BOMUJD96.js";
|
|
3
3
|
import 'node:stream';
|
|
4
4
|
import 'node:events';
|
|
5
5
|
import 'node:http';
|
|
6
6
|
import '@visulima/pagination';
|
|
7
|
-
import "../../packem_shared/media-transformer.d-
|
|
8
|
-
import "../../packem_shared/types.d-
|
|
7
|
+
import "../../packem_shared/media-transformer.d-CY9CsEOe.js";
|
|
8
|
+
import "../../packem_shared/types.d-BCN94sB_.js";
|
|
9
9
|
import 'node:crypto';
|
|
10
10
|
import 'lru-cache';
|
|
11
11
|
/**
|
|
@@ -1,93 +1 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
const handlerStorage = /* @__PURE__ */ new Map();
|
|
4
|
-
const nuxtModule = defineNuxtModule({
|
|
5
|
-
defaults: {
|
|
6
|
-
basePath: "/api/upload",
|
|
7
|
-
cors: {
|
|
8
|
-
headers: ["Content-Type", "Upload-Offset", "Upload-Length", "Tus-Resumable"],
|
|
9
|
-
methods: ["GET", "POST", "PATCH", "PUT", "HEAD", "DELETE", "OPTIONS"],
|
|
10
|
-
origin: "*"
|
|
11
|
-
},
|
|
12
|
-
multipart: true,
|
|
13
|
-
rest: true,
|
|
14
|
-
tus: true
|
|
15
|
-
},
|
|
16
|
-
meta: {
|
|
17
|
-
compatibility: {
|
|
18
|
-
nuxt: ">=4.0.0"
|
|
19
|
-
},
|
|
20
|
-
configKey: "storage",
|
|
21
|
-
name: "@visulima/storage"
|
|
22
|
-
},
|
|
23
|
-
async setup(options, nuxt) {
|
|
24
|
-
const {
|
|
25
|
-
basePath = "/api/upload",
|
|
26
|
-
cors = {
|
|
27
|
-
headers: ["Content-Type", "Upload-Offset", "Upload-Length", "Tus-Resumable"],
|
|
28
|
-
methods: ["GET", "POST", "PATCH", "PUT", "HEAD", "DELETE", "OPTIONS"],
|
|
29
|
-
origin: "*"
|
|
30
|
-
},
|
|
31
|
-
multipart = true,
|
|
32
|
-
multipartOptions = {},
|
|
33
|
-
rest = true,
|
|
34
|
-
restOptions = {},
|
|
35
|
-
storage,
|
|
36
|
-
tus = true,
|
|
37
|
-
tusOptions = {}
|
|
38
|
-
} = options;
|
|
39
|
-
if (!storage) {
|
|
40
|
-
throw new Error("[@visulima/storage/nuxt] Storage instance is required");
|
|
41
|
-
}
|
|
42
|
-
const { Multipart, Rest, Tus } = await import('../../handler/http/node/index.js');
|
|
43
|
-
const multipartHandler = multipart ? new Multipart({ storage, ...multipartOptions }) : void 0;
|
|
44
|
-
const restHandler = rest ? new Rest({ storage, ...restOptions }) : void 0;
|
|
45
|
-
const tusHandler = tus ? new Tus({ storage, ...tusOptions }) : void 0;
|
|
46
|
-
const setCorsHeaders = (event) => {
|
|
47
|
-
const origin = Array.isArray(cors.origin) ? cors.origin.join(", ") : cors.origin || "*";
|
|
48
|
-
event.node.res.setHeader("Access-Control-Allow-Origin", origin);
|
|
49
|
-
if (cors.methods) {
|
|
50
|
-
event.node.res.setHeader("Access-Control-Allow-Methods", cors.methods.join(", "));
|
|
51
|
-
}
|
|
52
|
-
if (cors.headers) {
|
|
53
|
-
event.node.res.setHeader("Access-Control-Allow-Headers", cors.headers.join(", "));
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
if (multipartHandler) {
|
|
57
|
-
handlerStorage.set(`${basePath}/multipart`, { handler: multipartHandler, setCorsHeaders });
|
|
58
|
-
}
|
|
59
|
-
if (restHandler) {
|
|
60
|
-
handlerStorage.set(`${basePath}/rest`, { handler: restHandler, setCorsHeaders });
|
|
61
|
-
}
|
|
62
|
-
if (tusHandler) {
|
|
63
|
-
handlerStorage.set(`${basePath}/tus`, { handler: tusHandler, setCorsHeaders });
|
|
64
|
-
}
|
|
65
|
-
nuxt.hook("nitro:config", (nitroConfig) => {
|
|
66
|
-
const routeRules = nitroConfig.routeRules || {};
|
|
67
|
-
if (multipartHandler) {
|
|
68
|
-
routeRules[`${basePath}/multipart/**`] = { cors: true };
|
|
69
|
-
}
|
|
70
|
-
if (restHandler) {
|
|
71
|
-
routeRules[`${basePath}/rest/**`] = { cors: true };
|
|
72
|
-
}
|
|
73
|
-
if (tusHandler) {
|
|
74
|
-
routeRules[`${basePath}/tus/**`] = { cors: true };
|
|
75
|
-
}
|
|
76
|
-
nitroConfig.routeRules = routeRules;
|
|
77
|
-
});
|
|
78
|
-
nuxt.hook("nitro:init", (nitro) => {
|
|
79
|
-
nitro.hooks.hook("request", async (event) => {
|
|
80
|
-
const url = event.node.req.url || "";
|
|
81
|
-
for (const [route, { handler, setCorsHeaders: setHeaders }] of handlerStorage.entries()) {
|
|
82
|
-
if (url.startsWith(route)) {
|
|
83
|
-
setHeaders(event);
|
|
84
|
-
await handler.handle(event.node.req, event.node.res);
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
export { nuxtModule as default };
|
|
1
|
+
var v=Object.defineProperty;var p=(a,r)=>v(a,"name",{value:r,configurable:!0});import{defineNuxtModule as b}from"@nuxt/kit";var U=Object.defineProperty,S=p((a,r)=>U(a,"name",{value:r,configurable:!0}),"g");const i=new Map,j=b({defaults:{basePath:"/api/upload",cors:{headers:["Content-Type","Upload-Offset","Upload-Length","Tus-Resumable"],methods:["GET","POST","PATCH","PUT","HEAD","DELETE","OPTIONS"],origin:"*"},multipart:!0,rest:!0,tus:!0},meta:{compatibility:{nuxt:">=4.0.0"},configKey:"storage",name:"@visulima/storage"},async setup(a,r){const{basePath:o="/api/upload",cors:s={headers:["Content-Type","Upload-Offset","Upload-Length","Tus-Resumable"],methods:["GET","POST","PATCH","PUT","HEAD","DELETE","OPTIONS"],origin:"*"},multipart:h=!0,multipartOptions:m={},rest:g=!0,restOptions:T={},storage:n,tus:f=!0,tusOptions:H={}}=a;if(!n)throw new Error("[@visulima/storage/nuxt] Storage instance is required");const{Multipart:O,Rest:A,Tus:C}=await import("../../handler/http/node/index.js"),u=h?new O({storage:n,...m}):void 0,d=g?new A({storage:n,...T}):void 0,l=f?new C({storage:n,...H}):void 0,c=S(t=>{const e=Array.isArray(s.origin)?s.origin.join(", "):s.origin||"*";t.node.res.setHeader("Access-Control-Allow-Origin",e),s.methods&&t.node.res.setHeader("Access-Control-Allow-Methods",s.methods.join(", ")),s.headers&&t.node.res.setHeader("Access-Control-Allow-Headers",s.headers.join(", "))},"setCorsHeaders");u&&i.set(`${o}/multipart`,{handler:u,setCorsHeaders:c}),d&&i.set(`${o}/rest`,{handler:d,setCorsHeaders:c}),l&&i.set(`${o}/tus`,{handler:l,setCorsHeaders:c}),r.hook("nitro:config",t=>{const e=t.routeRules||{};u&&(e[`${o}/multipart/**`]={cors:!0}),d&&(e[`${o}/rest/**`]={cors:!0}),l&&(e[`${o}/tus/**`]={cors:!0}),t.routeRules=e}),r.hook("nitro:init",t=>{t.hooks.hook("request",async e=>{const w=e.node.req.url||"";for(const[E,{handler:P,setCorsHeaders:y}]of i.entries())if(w.startsWith(E)){y(e),await P.handle(e.node.req,e.node.res);return}})})}});export{j as default};
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { U as UploadFile, l as UploadResponse } from "../../../packem_shared/storage.d-BOMUJD96.js";
|
|
2
2
|
import 'node:stream';
|
|
3
|
-
import { H as Handlers, R as ResponseFile, a as ResponseList, U as UploadOptions } from "../../../packem_shared/types.d-
|
|
4
|
-
export { type A as AsyncHandler, type B as BaseHandler, type M as MethodHandler, type b as RequestEvent, type c as UploadErrorEvent, type d as UploadEvent } from "../../../packem_shared/types.d-
|
|
5
|
-
import { B as BaseHandlerCore } from "../../../packem_shared/tus-base.d-
|
|
6
|
-
export { T as TUS_RESUMABLE, a as TUS_VERSION } from "../../../packem_shared/tus-base.d-
|
|
3
|
+
import { H as Handlers, R as ResponseFile, a as ResponseList, U as UploadOptions } from "../../../packem_shared/types.d-D4caL2Fp.js";
|
|
4
|
+
export { type A as AsyncHandler, type B as BaseHandler, type M as MethodHandler, type b as RequestEvent, type c as UploadErrorEvent, type d as UploadEvent } from "../../../packem_shared/types.d-D4caL2Fp.js";
|
|
5
|
+
import { B as BaseHandlerCore } from "../../../packem_shared/tus-base.d-DNZRXR9X.js";
|
|
6
|
+
export { T as TUS_RESUMABLE, a as TUS_VERSION } from "../../../packem_shared/tus-base.d-DNZRXR9X.js";
|
|
7
7
|
import 'node:crypto';
|
|
8
8
|
import 'node:http';
|
|
9
9
|
import 'lru-cache';
|
|
10
10
|
import 'node:events';
|
|
11
11
|
import '@visulima/pagination';
|
|
12
|
-
import "../../../packem_shared/media-transformer.d-
|
|
13
|
-
import "../../../packem_shared/types.d-
|
|
12
|
+
import "../../../packem_shared/media-transformer.d-CY9CsEOe.js";
|
|
13
|
+
import "../../../packem_shared/types.d-BCN94sB_.js";
|
|
14
14
|
/**
|
|
15
15
|
* Base handler for Web API Fetch platform (Request/Response).
|
|
16
16
|
* Extends BaseHandlerCore with Fetch-specific request/response handling.
|
|
@@ -1,4 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { default as Rest } from '../../../packem_shared/Rest-DEa7IA9R.js';
|
|
3
|
-
export { Tus } from '../../../packem_shared/Tus-_0vCdHyB.js';
|
|
4
|
-
export { TUS_RESUMABLE, TUS_VERSION } from '../../../packem_shared/TUS_RESUMABLE-Dtfsffnj.js';
|
|
1
|
+
import{default as o}from"../../../packem_shared/Multipart-Bd9YFFn0.js";import{default as f}from"../../../packem_shared/Rest-DoonVU7B.js";import{Tus as p}from"../../../packem_shared/Tus-Bd_2Ki2G.js";import{TUS_RESUMABLE as s,TUS_VERSION as u}from"../../../packem_shared/TUS_RESUMABLE-B7KtPVeC.js";export{o as Multipart,f as Rest,s as TUS_RESUMABLE,u as TUS_VERSION,p as Tus};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { U as UploadFile } from "../../../packem_shared/storage.d-BOMUJD96.js";
|
|
2
2
|
import 'node:stream';
|
|
3
|
-
import { U as UploadOptions } from "../../../packem_shared/types.d-
|
|
3
|
+
import { U as UploadOptions } from "../../../packem_shared/types.d-D4caL2Fp.js";
|
|
4
4
|
import 'node:crypto';
|
|
5
5
|
import 'node:http';
|
|
6
6
|
import 'lru-cache';
|
|
7
7
|
import 'node:events';
|
|
8
8
|
import '@visulima/pagination';
|
|
9
|
-
import "../../../packem_shared/media-transformer.d-
|
|
10
|
-
import "../../../packem_shared/types.d-
|
|
9
|
+
import "../../../packem_shared/media-transformer.d-CY9CsEOe.js";
|
|
10
|
+
import "../../../packem_shared/types.d-BCN94sB_.js";
|
|
11
11
|
declare const GET_MATCH_RESULT: unique symbol;
|
|
12
12
|
/**
|
|
13
13
|
* Interface representing a router.
|
|
@@ -1,65 +1 @@
|
|
|
1
|
-
import Multipart from
|
|
2
|
-
import RestFetch from '../../../packem_shared/Rest-DEa7IA9R.js';
|
|
3
|
-
import { Tus } from '../../../packem_shared/Tus-_0vCdHyB.js';
|
|
4
|
-
|
|
5
|
-
const createHandlerFunction = (handler) => async (c) => {
|
|
6
|
-
try {
|
|
7
|
-
const request = c.req.raw;
|
|
8
|
-
return await handler.fetch(request);
|
|
9
|
-
} catch (error) {
|
|
10
|
-
const errorObject = error;
|
|
11
|
-
const statusCode = errorObject.statusCode || (errorObject.status ? Number.parseInt(errorObject.status, 10) : void 0) || 500;
|
|
12
|
-
return Response.json({ error: errorObject.message || "Request failed" }, { status: statusCode });
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
const createStorageHandler = (app, config) => {
|
|
16
|
-
const { path, type, ...handlerConfig } = config;
|
|
17
|
-
let handler;
|
|
18
|
-
switch (type) {
|
|
19
|
-
case "multipart": {
|
|
20
|
-
handler = new Multipart(handlerConfig);
|
|
21
|
-
break;
|
|
22
|
-
}
|
|
23
|
-
case "rest": {
|
|
24
|
-
handler = new RestFetch(handlerConfig);
|
|
25
|
-
break;
|
|
26
|
-
}
|
|
27
|
-
case "tus": {
|
|
28
|
-
handler = new Tus(handlerConfig);
|
|
29
|
-
break;
|
|
30
|
-
}
|
|
31
|
-
default: {
|
|
32
|
-
throw new Error(`Unknown handler type: ${String(type ?? "unknown")}`);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
const handlerFunction = createHandlerFunction(handler);
|
|
36
|
-
switch (type) {
|
|
37
|
-
case "multipart": {
|
|
38
|
-
app.post(path, handlerFunction);
|
|
39
|
-
app.get(`${path}/:id?/:metadata?`, handlerFunction);
|
|
40
|
-
app.delete(`${path}/:id`, handlerFunction);
|
|
41
|
-
app.on("OPTIONS", path, handlerFunction);
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
case "rest": {
|
|
45
|
-
app.post(path, handlerFunction);
|
|
46
|
-
app.put(`${path}/:id`, handlerFunction);
|
|
47
|
-
app.patch(`${path}/:id`, handlerFunction);
|
|
48
|
-
app.get(`${path}/:id?`, handlerFunction);
|
|
49
|
-
app.on("HEAD", `${path}/:id`, handlerFunction);
|
|
50
|
-
app.delete(`${path}/:id?`, handlerFunction);
|
|
51
|
-
app.on("OPTIONS", path, handlerFunction);
|
|
52
|
-
break;
|
|
53
|
-
}
|
|
54
|
-
case "tus": {
|
|
55
|
-
app.all(path, handlerFunction);
|
|
56
|
-
app.all(`${path}/:id`, handlerFunction);
|
|
57
|
-
break;
|
|
58
|
-
}
|
|
59
|
-
default: {
|
|
60
|
-
throw new Error(`Unknown handler type: ${String(type)}`);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
export { createStorageHandler };
|
|
1
|
+
var d=Object.defineProperty;var c=(t,n)=>d(t,"name",{value:n,configurable:!0});import u from"../../../packem_shared/Multipart-Bd9YFFn0.js";import l from"../../../packem_shared/Rest-DoonVU7B.js";import{Tus as p}from"../../../packem_shared/Tus-Bd_2Ki2G.js";var w=Object.defineProperty,i=c((t,n)=>w(t,"name",{value:n,configurable:!0}),"a");const m=i(t=>async n=>{try{const e=n.req.raw;return await t.fetch(e)}catch(e){const a=e,s=a.statusCode||(a.status?Number.parseInt(a.status,10):void 0)||500;return Response.json({error:a.message||"Request failed"},{status:s})}},"createHandlerFunction"),g=i((t,n)=>{const{path:e,type:a,...s}=n;let o;switch(a){case"multipart":{o=new u(s);break}case"rest":{o=new l(s);break}case"tus":{o=new p(s);break}default:throw new Error(`Unknown handler type: ${String(a??"unknown")}`)}const r=m(o);switch(a){case"multipart":{t.post(e,r),t.get(`${e}/:id?/:metadata?`,r),t.delete(`${e}/:id`,r),t.on("OPTIONS",e,r);break}case"rest":{t.post(e,r),t.put(`${e}/:id`,r),t.patch(`${e}/:id`,r),t.get(`${e}/:id?`,r),t.on("HEAD",`${e}/:id`,r),t.delete(`${e}/:id?`,r),t.on("OPTIONS",e,r);break}case"tus":{t.all(e,r),t.all(`${e}/:id`,r);break}default:throw new Error(`Unknown handler type: ${String(a)}`)}},"createStorageHandler");export{g as createStorageHandler};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { NextRequest, NextResponse } from 'next/server.js';
|
|
2
2
|
import { U as UploadFile } from "../../../packem_shared/storage.d-BOMUJD96.js";
|
|
3
3
|
import 'node:stream';
|
|
4
|
-
import { U as UploadOptions } from "../../../packem_shared/types.d-
|
|
4
|
+
import { U as UploadOptions } from "../../../packem_shared/types.d-D4caL2Fp.js";
|
|
5
5
|
import 'node:crypto';
|
|
6
6
|
import 'node:http';
|
|
7
7
|
import 'lru-cache';
|
|
8
8
|
import 'node:events';
|
|
9
9
|
import '@visulima/pagination';
|
|
10
|
-
import "../../../packem_shared/media-transformer.d-
|
|
11
|
-
import "../../../packem_shared/types.d-
|
|
10
|
+
import "../../../packem_shared/media-transformer.d-CY9CsEOe.js";
|
|
11
|
+
import "../../../packem_shared/types.d-BCN94sB_.js";
|
|
12
12
|
/**
|
|
13
13
|
* Configuration for Next.js handler.
|
|
14
14
|
*/
|
|
@@ -65,5 +65,5 @@ interface NextjsHandlerConfig<TFile extends UploadFile> extends UploadOptions<TF
|
|
|
65
65
|
* export const OPTIONS = handler;
|
|
66
66
|
* ```
|
|
67
67
|
*/
|
|
68
|
-
declare const createHandler: <TFile extends UploadFile>(config: NextjsHandlerConfig<TFile>) => (request: NextRequest) => Promise<NextResponse
|
|
68
|
+
declare const createHandler: <TFile extends UploadFile>(config: NextjsHandlerConfig<TFile>) => ((request: NextRequest) => Promise<NextResponse>);
|
|
69
69
|
export { NextjsHandlerConfig, createHandler };
|
|
@@ -1,37 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import Multipart from '../../../packem_shared/Multipart-DLtFLQ8s.js';
|
|
3
|
-
import RestFetch from '../../../packem_shared/Rest-DEa7IA9R.js';
|
|
4
|
-
import { Tus } from '../../../packem_shared/Tus-_0vCdHyB.js';
|
|
5
|
-
|
|
6
|
-
const createHandler = (config) => {
|
|
7
|
-
let handler;
|
|
8
|
-
switch (config.type) {
|
|
9
|
-
case "multipart": {
|
|
10
|
-
handler = new Multipart(config);
|
|
11
|
-
break;
|
|
12
|
-
}
|
|
13
|
-
case "rest": {
|
|
14
|
-
handler = new RestFetch(config);
|
|
15
|
-
break;
|
|
16
|
-
}
|
|
17
|
-
case "tus": {
|
|
18
|
-
handler = new Tus(config);
|
|
19
|
-
break;
|
|
20
|
-
}
|
|
21
|
-
default: {
|
|
22
|
-
throw new Error(`Unknown handler type: ${String(config.type ?? "unknown")}`);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
const nextjsHandler = async (request) => {
|
|
26
|
-
try {
|
|
27
|
-
return await handler.fetch(request);
|
|
28
|
-
} catch (error) {
|
|
29
|
-
const errorObject = error;
|
|
30
|
-
const statusCode = errorObject.statusCode || (errorObject.status ? Number.parseInt(errorObject.status, 10) : void 0) || 500;
|
|
31
|
-
return NextResponse.json({ error: errorObject.message || "Request failed" }, { status: statusCode });
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
return nextjsHandler;
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
export { createHandler };
|
|
1
|
+
var c=Object.defineProperty;var a=(e,r)=>c(e,"name",{value:r,configurable:!0});import{NextResponse as i}from"next/server.js";import m from"../../../packem_shared/Multipart-Bd9YFFn0.js";import p from"../../../packem_shared/Rest-DoonVU7B.js";import{Tus as d}from"../../../packem_shared/Tus-Bd_2Ki2G.js";var l=Object.defineProperty,n=a((e,r)=>l(e,"name",{value:r,configurable:!0}),"r");const k=n(e=>{let r;switch(e.type){case"multipart":{r=new m(e);break}case"rest":{r=new p(e);break}case"tus":{r=new d(e);break}default:throw new Error(`Unknown handler type: ${String(e.type??"unknown")}`)}return n(async s=>{try{return await r.fetch(s)}catch(o){const t=o,u=t.statusCode||(t.status?Number.parseInt(t.status,10):void 0)||500;return i.json({error:t.message||"Request failed"},{status:u})}},"nextjsHandler")},"createHandler");export{k as createHandler};
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
2
|
import { U as UploadFile, l as UploadResponse } from "../../../packem_shared/storage.d-BOMUJD96.js";
|
|
3
3
|
import { Readable } from 'node:stream';
|
|
4
|
-
import { H as Handlers, A as AsyncHandler, U as UploadOptions, R as ResponseFile, a as ResponseList, M as MethodHandler } from "../../../packem_shared/types.d-
|
|
5
|
-
export { type B as BaseHandler, type b as RequestEvent, type c as UploadErrorEvent, type d as UploadEvent } from "../../../packem_shared/types.d-
|
|
6
|
-
import { B as BaseHandlerCore } from "../../../packem_shared/tus-base.d-
|
|
7
|
-
export { T as TUS_RESUMABLE, a as TUS_VERSION } from "../../../packem_shared/tus-base.d-
|
|
4
|
+
import { H as Handlers, A as AsyncHandler, U as UploadOptions, R as ResponseFile, a as ResponseList, M as MethodHandler } from "../../../packem_shared/types.d-D4caL2Fp.js";
|
|
5
|
+
export { type B as BaseHandler, type b as RequestEvent, type c as UploadErrorEvent, type d as UploadEvent } from "../../../packem_shared/types.d-D4caL2Fp.js";
|
|
6
|
+
import { B as BaseHandlerCore } from "../../../packem_shared/tus-base.d-DNZRXR9X.js";
|
|
7
|
+
export { T as TUS_RESUMABLE, a as TUS_VERSION } from "../../../packem_shared/tus-base.d-DNZRXR9X.js";
|
|
8
8
|
import 'node:crypto';
|
|
9
9
|
import 'lru-cache';
|
|
10
10
|
import 'node:events';
|
|
11
11
|
import '@visulima/pagination';
|
|
12
|
-
import "../../../packem_shared/media-transformer.d-
|
|
13
|
-
import "../../../packem_shared/types.d-
|
|
12
|
+
import "../../../packem_shared/media-transformer.d-CY9CsEOe.js";
|
|
13
|
+
import "../../../packem_shared/types.d-BCN94sB_.js";
|
|
14
14
|
/**
|
|
15
15
|
* Base handler for Node.js platform (IncomingMessage/ServerResponse).
|
|
16
16
|
* Extends BaseHandlerCore with Node.js-specific request/response handling.
|
|
@@ -1,8 +1 @@
|
|
|
1
|
-
import Multipart from
|
|
2
|
-
import Rest from '../../../packem_shared/Rest-qhMbCn5a.js';
|
|
3
|
-
import { Tus } from '../../../packem_shared/Tus-Ck0Hdle5.js';
|
|
4
|
-
export { TUS_RESUMABLE, TUS_VERSION } from '../../../packem_shared/TUS_RESUMABLE-Dtfsffnj.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export { Multipart, Rest, Tus };
|
|
1
|
+
import o from"../../../packem_shared/Multipart-D5bcEvga.js";import m from"../../../packem_shared/Rest-CYEBbtCD.js";import{Tus as f}from"../../../packem_shared/Tus-CUBCkuPE.js";import{TUS_RESUMABLE as S,TUS_VERSION as a}from"../../../packem_shared/TUS_RESUMABLE-B7KtPVeC.js";export{o as Multipart,m as Rest,S as TUS_RESUMABLE,a as TUS_VERSION,f as Tus};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { APIEvent } from '@solidjs/start/server';
|
|
2
2
|
import { U as UploadFile } from "../../../packem_shared/storage.d-BOMUJD96.js";
|
|
3
3
|
import 'node:stream';
|
|
4
|
-
import { U as UploadOptions } from "../../../packem_shared/types.d-
|
|
4
|
+
import { U as UploadOptions } from "../../../packem_shared/types.d-D4caL2Fp.js";
|
|
5
5
|
import 'node:crypto';
|
|
6
6
|
import 'node:http';
|
|
7
7
|
import 'lru-cache';
|
|
8
8
|
import 'node:events';
|
|
9
9
|
import '@visulima/pagination';
|
|
10
|
-
import "../../../packem_shared/media-transformer.d-
|
|
11
|
-
import "../../../packem_shared/types.d-
|
|
10
|
+
import "../../../packem_shared/media-transformer.d-CY9CsEOe.js";
|
|
11
|
+
import "../../../packem_shared/types.d-BCN94sB_.js";
|
|
12
12
|
/**
|
|
13
13
|
* Configuration for SolidStart handler.
|
|
14
14
|
*/
|
|
@@ -65,5 +65,5 @@ interface SolidStartHandlerConfig<TFile extends UploadFile> extends UploadOption
|
|
|
65
65
|
* export const OPTIONS = handler;
|
|
66
66
|
* ```
|
|
67
67
|
*/
|
|
68
|
-
declare const createSolidStartHandler: <TFile extends UploadFile>(config: SolidStartHandlerConfig<TFile>) => (event: APIEvent) => Promise<Response
|
|
68
|
+
declare const createSolidStartHandler: <TFile extends UploadFile>(config: SolidStartHandlerConfig<TFile>) => ((event: APIEvent) => Promise<Response>);
|
|
69
69
|
export { SolidStartHandlerConfig, createSolidStartHandler };
|
|
@@ -1,44 +1 @@
|
|
|
1
|
-
import Multipart from
|
|
2
|
-
import RestFetch from '../../../packem_shared/Rest-DEa7IA9R.js';
|
|
3
|
-
import { Tus } from '../../../packem_shared/Tus-_0vCdHyB.js';
|
|
4
|
-
|
|
5
|
-
const createSolidStartHandler = (config) => {
|
|
6
|
-
let handler;
|
|
7
|
-
switch (config.type) {
|
|
8
|
-
case "multipart": {
|
|
9
|
-
handler = new Multipart(config);
|
|
10
|
-
break;
|
|
11
|
-
}
|
|
12
|
-
case "rest": {
|
|
13
|
-
handler = new RestFetch(config);
|
|
14
|
-
break;
|
|
15
|
-
}
|
|
16
|
-
case "tus": {
|
|
17
|
-
handler = new Tus(config);
|
|
18
|
-
break;
|
|
19
|
-
}
|
|
20
|
-
default: {
|
|
21
|
-
throw new Error(`Unknown handler type: ${String(config.type ?? "unknown")}`);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
const solidStartHandler = async (event) => {
|
|
25
|
-
try {
|
|
26
|
-
return await handler.fetch(event.request);
|
|
27
|
-
} catch (error) {
|
|
28
|
-
const errorObject = error;
|
|
29
|
-
const statusCode = errorObject.statusCode || (errorObject.status ? Number.parseInt(errorObject.status, 10) : void 0) || 500;
|
|
30
|
-
return Response.json(
|
|
31
|
-
{ error: errorObject.message || "Request failed" },
|
|
32
|
-
{
|
|
33
|
-
headers: {
|
|
34
|
-
"Content-Type": "application/json"
|
|
35
|
-
},
|
|
36
|
-
status: statusCode
|
|
37
|
-
}
|
|
38
|
-
);
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
return solidStartHandler;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
export { createSolidStartHandler };
|
|
1
|
+
var i=Object.defineProperty;var a=(t,e)=>i(t,"name",{value:e,configurable:!0});import c from"../../../packem_shared/Multipart-Bd9YFFn0.js";import d from"../../../packem_shared/Rest-DoonVU7B.js";import{Tus as l}from"../../../packem_shared/Tus-Bd_2Ki2G.js";var p=Object.defineProperty,n=a((t,e)=>p(t,"name",{value:e,configurable:!0}),"s");const b=n(t=>{let e;switch(t.type){case"multipart":{e=new c(t);break}case"rest":{e=new d(t);break}case"tus":{e=new l(t);break}default:throw new Error(`Unknown handler type: ${String(t.type??"unknown")}`)}return n(async s=>{try{return await e.fetch(s.request)}catch(o){const r=o,u=r.statusCode||(r.status?Number.parseInt(r.status,10):void 0)||500;return Response.json({error:r.message||"Request failed"},{headers:{"Content-Type":"application/json"},status:u})}},"solidStartHandler")},"createSolidStartHandler");export{b as createSolidStartHandler};
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { D as DiskStorage } from './packem_shared/disk-storage-D9RfoKjW.js';
|
|
3
|
-
export { default as DiskStorageWithChecksum } from './packem_shared/DiskStorageWithChecksum-BVaaZiyS.js';
|
|
4
|
-
export { L as LocalMetaStorage } from './packem_shared/local-meta-storage-D-pPc3FI.js';
|
|
5
|
-
export { default as MetaStorage } from './packem_shared/MetaStorage-pECeFOad.js';
|
|
6
|
-
export { B as AbstractBaseStorage, d as defaultCloudStorageFileNameValidation, a as defaultFilesystemFileNameValidation } from './packem_shared/storage-5XW1E7XU.js';
|
|
7
|
-
export { ERRORS, ErrorMap, UploadError, isUploadError, throwErrorCode } from './packem_shared/ERRORS-D0apMqnc.js';
|
|
8
|
-
export { createRetryWrapper, isRetryableError, retry } from './packem_shared/isRetryableError-Dycp7127.js';
|
|
9
|
-
export { fileTypeFromBlob, fileTypeFromBuffer, fileTypeFromTokenizer, supportedExtensions, supportedMimeTypes } from 'file-type';
|
|
10
|
-
export { default as File } from './packem_shared/File-CPUhj3DI.js';
|
|
11
|
-
export { default as NoOpMetrics } from './packem_shared/NoOpMetrics-DhAk5rXc.js';
|
|
12
|
-
export { default as OpenTelemetryMetrics } from './packem_shared/OpenTelemetryMetrics-BnxhqIaH.js';
|
|
13
|
-
export { Metadata } from './packem_shared/Metadata-DRLXeJ0F.js';
|
|
1
|
+
import{waitForStorage as o}from"./packem_shared/waitForStorage-ChSBLhLc.js";import{q as a}from"./packem_shared/disk-storage-BvdK4bqF.js";import{default as s}from"./packem_shared/DiskStorageWithChecksum-Bb6JX_tC.js";import{O as l}from"./packem_shared/local-meta-storage-Bkwqi_gi.js";import{default as m}from"./packem_shared/MetaStorage-Y4m1dWgd.js";import{B as x,d as u,a as y}from"./packem_shared/storage-m_Cxgiih.js";import{ERRORS as S,ErrorMap as g,UploadError as E,isUploadError as M,throwErrorCode as c}from"./packem_shared/ERRORS-B9jkvKwx.js";import{createRetryWrapper as T,isRetryableError as R,retry as k}from"./packem_shared/isRetryableError-DQNSZiBc.js";import{fileTypeFromBlob as O,fileTypeFromBuffer as b,fileTypeFromTokenizer as h,supportedExtensions as C,supportedMimeTypes as N}from"file-type";import{default as D}from"./packem_shared/File-alcSNpLq.js";import{default as V}from"./packem_shared/NoOpMetrics-Dky06sf1.js";import{default as q}from"./packem_shared/OpenTelemetryMetrics-9uxQMSlg.js";import{Metadata as A}from"./packem_shared/Metadata-B6Ir0KO7.js";export{x as AbstractBaseStorage,a as DiskStorage,s as DiskStorageWithChecksum,S as ERRORS,g as ErrorMap,D as File,l as LocalMetaStorage,m as MetaStorage,A as Metadata,V as NoOpMetrics,q as OpenTelemetryMetrics,E as UploadError,T as createRetryWrapper,u as defaultCloudStorageFileNameValidation,y as defaultFilesystemFileNameValidation,O as fileTypeFromBlob,b as fileTypeFromBuffer,h as fileTypeFromTokenizer,R as isRetryableError,M as isUploadError,k as retry,C as supportedExtensions,N as supportedMimeTypes,c as throwErrorCode,o as waitForStorage};
|
package/dist/openapi/index.js
CHANGED
|
@@ -1,5 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { sharedErrorSchemaObject, sharedFileMetaExampleObject, sharedFileMetaSchemaObject, sharedGet, sharedGetList } from '../packem_shared/sharedGet-CkSLSnMd.js';
|
|
3
|
-
export { default as transformOpenApiSpec } from '../packem_shared/transformOpenApiSpec-BodFhFls.js';
|
|
4
|
-
export { default as tusOpenApiSpec } from '../packem_shared/tusOpenApiSpec-DzppyJTW.js';
|
|
5
|
-
export { default as xhrOpenApiSpec } from '../packem_shared/xhrOpenApiSpec-CXz7BC5J.js';
|
|
1
|
+
import{default as t}from"../packem_shared/restOpenApiSpec-PaIVbESh.js";import{sharedErrorSchemaObject as p,sharedFileMetaExampleObject as s,sharedFileMetaSchemaObject as o,sharedGet as f,sharedGetList as c}from"../packem_shared/sharedGet-Ce7WGAsc.js";import{default as m}from"../packem_shared/transformOpenApiSpec-C0vEbDTO.js";import{default as i}from"../packem_shared/tusOpenApiSpec-DF0-hlWV.js";import{default as x}from"../packem_shared/xhrOpenApiSpec-nyoboz83.js";export{t as restOpenApiSpec,p as sharedErrorSchemaObject,s as sharedFileMetaExampleObject,o as sharedFileMetaSchemaObject,f as sharedGet,c as sharedGetList,m as transformOpenApiSpec,i as tusOpenApiSpec,x as xhrOpenApiSpec};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var r=Object.defineProperty;var e=(t,a)=>r(t,"name",{value:a,configurable:!0});import s from"./File-alcSNpLq.js";var i=Object.defineProperty,l=e((t,a)=>i(t,"name",{value:a,configurable:!0}),"t");class d extends s{static{e(this,"a")}static{l(this,"AwsLightFile")}Parts;UploadId;uri;partsUrls;partSize}export{d as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./MetaStorage-Y4m1dWgd.js";import"./Metadata-B6Ir0KO7.js";import{l as i}from"./aws-light-meta-storage-TPyQwLvk.js";import"./is-expired-1JuZjDtb.js";export{i as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var l=Object.defineProperty;var u=(o,e)=>l(o,"name",{value:e,configurable:!0});import{Readable as p}from"node:stream";import{S as h}from"./s3-base-storage-xHZNtsGe.js";import{w as f,l as S}from"./aws-light-meta-storage-TPyQwLvk.js";import y from"./AwsLightFile-BTLiRxXj.js";var C=Object.defineProperty,w=u((o,e)=>C(o,"name",{value:e,configurable:!0}),"u");class K extends h{static name="aws-light";s3Api;constructor(e){const{bucket:t=process.env.S3_BUCKET||process.env.AWS_S3_BUCKET,region:r}=e;if(!t)throw new Error("S3 bucket is not defined");if(!r)throw new Error("S3 region is not defined");if(!e.accessKeyId)throw new Error("accessKeyId is required");if(!e.secretAccessKey)throw new Error("secretAccessKey is required");super({bucket:t,clientDirectUpload:e.clientDirectUpload,expiration:e.expiration?.maxAge?{maxAge:String(e.expiration.maxAge)}:void 0,filename:e.filename,logger:e.logger,metaStorage:e.metaStorage,metaStorageConfig:e.metaStorageConfig?{...e.metaStorageConfig,...e}:{...e},partSize:e.partSize,retryConfig:{...e.retryConfig,shouldRetry:w(i=>{const s=i;return s.statusCode&&[408,429,500,502,503,504].includes(s.statusCode)?!0:s.retryable??!1},"shouldRetry")}}),this.s3Api=new f({accessKeyId:e.accessKeyId,bucket:t,endpoint:e.endpoint,region:r,secretAccessKey:e.secretAccessKey,service:e.service,sessionToken:e.sessionToken});const{metaStorage:a,metaStorageConfig:n}=e;if(!a){const i={...e,...n,logger:this.logger};this.meta=new S(i)}}normalizeError(e){const t=e;return t.statusCode||t.code?{code:t.code||t.name,message:t.message,name:t.name,statusCode:t.statusCode||500}:super.normalizeError(e)}async update({id:e},t){if(this.config.clientDirectUpload){const r=await this.getMeta(e);return this.buildPresigned({...r,...t})}return super.update({id:e},t)}async getStream({id:e}){return this.instrumentOperation("getStream",async()=>{const t=this.getS3Api(),{Body:r,ContentLength:a,ContentType:n,ETag:i,Expires:s,LastModified:g}=await this.retry(()=>t.getObject({Bucket:this.bucket,Key:e}));await this.checkIfExpired({expiredAt:s});const c=r instanceof ReadableStream?p.fromWeb(r):r,m=new p({read(){c.on("data",d=>{this.push(d)}),c.on("end",()=>{this.push(null)}),c.on("error",d=>{this.destroy(d)})}});return{headers:{"Content-Length":a?.toString()??"0","Content-Type":n,...i&&{ETag:i},...s&&{"X-Upload-Expires":s.toString()},...g&&{"Last-Modified":g.toString()}},size:Number(a),stream:m}})}getS3Api(){return this.s3Api}getFileClass(){return y}getAcl(){}async accessCheck(e=30){await this.s3Api.checkBucketAccess({Bucket:this.bucket})}}export{K as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var a=Object.defineProperty;var t=(e,r)=>a(e,"name",{value:r,configurable:!0});import i from"./File-alcSNpLq.js";var s=Object.defineProperty,u=t((e,r)=>s(e,"name",{value:r,configurable:!0}),"i");class c extends i{static{t(this,"s")}static{u(this,"AzureFile")}requestId;uri}export{c as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var h=Object.defineProperty;var r=(i,t)=>h(i,"name",{value:t,configurable:!0});import{BlobServiceClient as s,StorageSharedKeyCredential as p}from"@azure/storage-blob";import{throwErrorCode as c,ERRORS as l}from"./ERRORS-B9jkvKwx.js";import u from"./MetaStorage-Y4m1dWgd.js";import{parseMetadata as f,stringifyMetadata as g}from"./Metadata-B6Ir0KO7.js";var N=Object.defineProperty,C=r((i,t)=>N(i,"name",{value:t,configurable:!0}),"c");let v=class extends u{static{r(this,"N")}constructor(t){super(t),this.config=t;const{client:a,...e}=t;if(a===void 0){const n=e.connectionString||process.env.AZURE_STORAGE_CONNECTION_STRING||void 0;if(n)this.client=s.fromConnectionString(n);else{const d=e.accountKey||process.env.AZURE_STORAGE_ACCOUNT_KEY||void 0,o=e.accountName||process.env.AZURE_STORAGE_ACCOUNT||void 0;if(!e.accountKey)throw new Error("Missing required parameter: Azure blob storage account key.");if(!e.accountName)throw new Error("Missing required parameter: Azure blob storage account name.");const m=new p(o,d);this.client=new s(t.endpoint??`https://${o}.blob.core.windows.net`,m)}}else this.client=a;if(!(e.containerName||process.env.AZURE_STORAGE_CONTAINER))throw new Error("Missing required parameter: Azure container name.");this.containerClient=this.client.getContainerClient(e.containerName)}config;static{C(this,"AzureMetaStorage")}client;containerClient;async get(t){const a=this.containerClient.getAppendBlobClient(this.getMetaName(t));let e;try{e=await a.getProperties()}catch{throw c(l.UNKNOWN_ERROR)}if(!e.metadata)throw c(l.FILE_NOT_FOUND);const n=e.metadata;return n.metadata&&typeof n.metadata=="string"&&(n.metadata=f(n.metadata)),n}async touch(t,a){return this.save(t,a)}async delete(t){await this.containerClient.getBlockBlobClient(this.getMetaName(t)).deleteIfExists()}async save(t,a){const e={...a};return e.metadata&&(e.metadata=g(a.metadata)),await this.containerClient.getAppendBlobClient(this.getMetaName(t)).setMetadata(e,{}),a}async list(){const t=[],a=this.containerClient.listBlobsFlat({prefix:this.prefix});for await(const e of a)t.push(e);return t.filter(e=>e.name.endsWith(this.suffix)).map(e=>({createdAt:e.properties.createdOn,id:this.getIdFromMetaName(e.name)}))}};export{v as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var y=Object.defineProperty;var d=(l,t)=>y(l,"name",{value:t,configurable:!0});import{BlobServiceClient as m,StorageSharedKeyCredential as p}from"@azure/storage-blob";import{L as g}from"./path-D7rMc9nq-B718mbm6.js";import{r as f,d as w,o as b}from"./part-match-DqD5U7An.js";import{throwErrorCode as s,ERRORS as c}from"./ERRORS-B9jkvKwx.js";import{B as C,t as E}from"./storage-m_Cxgiih.js";import{createRetryWrapper as O}from"./isRetryableError-DQNSZiBc.js";import{O as T}from"./local-meta-storage-Bkwqi_gi.js";import N from"./AzureFile-BKHru1zB.js";import R from"./AzureSMetaStorage-BqA4jUDJ.js";import{o as S}from"./has-content-Bx2p8Okx.js";var F=Object.defineProperty,v=d((l,t)=>F(l,"name",{value:t,configurable:!0}),"m");class q extends C{static name="azure";checksumTypes=["md5"];meta;client;containerClient;root;retry;constructor(t){if(super(t),!t.containerName)throw new Error("Missing required parameter: Azure container name.");const e=t.connectionString||process.env.AZURE_STORAGE_CONNECTION_STRING||void 0;if(e)this.client=m.fromConnectionString(e);else{const i=t.accountKey||process.env.AZURE_STORAGE_ACCOUNT_KEY||void 0,n=t.accountName||process.env.AZURE_STORAGE_ACCOUNT||void 0;if(!t.accountKey)throw new Error("Missing required parameter: Azure blob storage account key.");if(!t.accountName)throw new Error("Missing required parameter: Azure blob storage account name.");const a=new p(n,i);this.client=new m(t.endpoint??`https://${n}.blob.core.windows.net`,a)}this.containerClient=this.client.getContainerClient(t.containerName),this.root=t.root?g(t.root).replace(/^\//,""):"";const r={backoffMultiplier:2,initialDelay:1e3,maxDelay:3e4,maxRetries:3,retryableStatusCodes:[408,429,500,502,503,504],shouldRetry:v(i=>{const n=i;if(n.statusCode&&[408,429,500,502,503,504].includes(n.statusCode))return!0;if(i instanceof Error){const a=n.code;if(a==="ECONNRESET"||a==="ETIMEDOUT"||a==="ENOTFOUND"||a==="ECONNREFUSED")return!0}return!1},"shouldRetry"),...t.retryConfig};if(this.retry=O(r),t.metaStorage)this.meta=t.metaStorage;else{let i={...t,...t.metaStorageConfig,logger:this.logger};"directory"in i?(this.logger?.debug("Using local meta storage"),this.meta=new T(i)):(e===i.connectionString&&(i={...i,client:this.client}),this.meta=new R(i))}this.isReady=!1,this.accessCheck().then(()=>{this.isReady=!0}).catch(i=>{this.logger?.error("Storage access check failed: %O",i)})}async create(t){return this.instrumentOperation("create",async()=>{const e={...t};if(t.ttl){const o=typeof t.ttl=="string"?E(t.ttl):t.ttl;o!==void 0&&(e.expiredAt=Date.now()+o)}const r=new N(e);r.name=this.namingFunction(r),await this.validate(r);try{const o=await this.getMeta(r.id);if(o.bytesWritten>=0)return o}catch{}const i=this.containerClient.getBlockBlobClient(this.getFullPath(r.name)),n={};for(const[o,h]of Object.entries(r.metadata||{}))n[o]=JSON.stringify(h);const a=await this.retry(()=>i.uploadData(Buffer.from(""),{blobHTTPHeaders:{blobContentType:r.contentType},metadata:{name:r.name,originalName:r.originalName,...n}}));return a.requestId===void 0?s(c.FILE_ERROR,"azure create upload error"):(r.requestId=a.requestId,r.uri=a._response.headers.get("location"),r.bytesWritten=0,await this.saveMeta(r),r.status="created",await this.onCreate(r),r)})}async delete({id:t}){return this.instrumentOperation("delete",async()=>{const e=await this.getMeta(t);e.status="deleted",await Promise.all([this.deleteMeta(e.id),this.retry(()=>this.containerClient.getBlockBlobClient(this.getFullPath(e.name)).deleteIfExists())]);const r={...e};return await this.onDelete(r),r})}async move(t,e){return this.instrumentOperation("move",async()=>{const r=await this.copy(t,e),i=this.getFullPath(t);return await this.retry(()=>this.containerClient.getBlockBlobClient(i).deleteIfExists()),r})}async write(t){return this.instrumentOperation("write",async()=>{let e;if("contentType"in t&&"metadata"in t&&!("body"in t)&&!("start"in t)?e=t:(e=await this.getMeta(t.id),await this.checkIfExpired(e)),e.status==="completed")return e;if(!f(t,e))return s(c.FILE_CONFLICT);await this.lock(t.id);try{if(S(t)){if((e.bytesWritten===0||Number.isNaN(e.bytesWritten))&&(!e.contentType||e.contentType==="application/octet-stream"))try{const{fileType:a,stream:o}=await w(t.body);a?.mime&&(e.contentType=a.mime),t.body=o}catch{}const r=this.containerClient.getBlockBlobClient(this.getFullPath(e.name)),i=new AbortController;t.body.on("error",()=>{i.abort()});const n=await this.retry(()=>r.uploadStream(t.body,void 0,void 0,{abortSignal:i.signal,blobHTTPHeaders:{blobContentType:e.contentType??"application/octet-stream"},metadata:e.metadata}));if(n.requestId===void 0)return s(c.FILE_ERROR,"azure write upload error");e.requestId=n.requestId,e.bytesWritten+=t.contentLength||0,e.status=b(e),e.status==="completed"&&(e.uri=n._response.headers.get("location"),await this.deleteMeta(e.id))}}finally{await this.unlock(t.id)}return e})}async get({id:t}){return this.instrumentOperation("get",async()=>{const e=this.containerClient.getBlockBlobClient(t);if(!await this.retry(()=>e.exists()))try{return await this.getMeta(t),s(c.GONE)}catch{return s(c.FILE_NOT_FOUND)}const r=await this.retry(()=>e.getProperties()),{contentLength:i,contentType:n,etag:a,expiresOn:o,lastModified:h,metadata:u}=r;return{content:await this.retry(()=>e.downloadToBuffer()),contentType:n,ETag:a,expiredAt:o,id:t,metadata:u||{},modifiedAt:h,name:u?.name||t,originalName:u?.originalName||"",size:i}})}async exists({id:t}){return this.instrumentOperation("exists",async()=>{try{await this.getMeta(t);const e=this.containerClient.getBlockBlobClient(t);return await this.retry(()=>e.exists())}catch{return!1}})}async copy(t,e){return this.instrumentOperation("copy",async()=>{const r=this.containerClient.getBlockBlobClient(this.getFullPath(t));if(!await this.retry(()=>r.exists()))try{return await this.getMeta(t),s(c.GONE)}catch{return s(c.FILE_NOT_FOUND)}const i=this.containerClient.getBlockBlobClient(this.getFullPath(e)),n=await this.retry(()=>i.beginCopyFromURL(r.url));return await this.retry(()=>n.pollUntilDone()),{...await this.getMeta(t),id:e,name:e}})}async list(t=1e3){return this.instrumentOperation("list",async()=>{const e=[];let r=!0,i;for(;r;)try{const n=this.containerClient.listBlobsFlat({includeMetadata:!0,prefix:this.root}).byPage({continuationToken:i,maxPageSize:t}),a=(await this.retry(()=>n.next())).value;a!==void 0&&"segment"in a&&a.segment.blobItems.forEach(o=>{o.deleted||e.push({createdAt:o.properties.createdOn,id:o.name,modifiedAt:o.properties.lastModified})}),r=a?.continuationToken!==void 0,r&&(i=a.continuationToken)}catch(n){const a=this.normalizeError(n instanceof Error?n:new Error(String(n)));throw await this.onError(a),n}return e},{limit:t})}getFullPath(t){return this.assetFolder!==void 0?`${this.assetFolder}/${t}`:t}async accessCheck(){await this.retry(()=>this.containerClient.getProperties())}}export{q as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var n=Object.defineProperty;var s=(a,t)=>n(a,"name",{value:t,configurable:!0});import{Readable as i}from"node:stream";import c from"mime";import{N as h}from"./cache-qV_5Umeq.js";var f=Object.defineProperty,m=s((a,t)=>f(a,"name",{value:t,configurable:!0}),"n");class C{static{s(this,"l")}constructor(t,e,r){this.storage=t,this.config=e,this.logger=r,this.cache=e.cache??new h}storage;static{m(this,"BaseTransformer")}config;logger;cache;async transformStream(t,e){const r=await this.transform(t,e);if(r&&"buffer"in r){const{buffer:o}=r;return{headers:{"Content-Length":o.length.toString(),"Content-Type":this.getContentTypeFromResult(r)},size:o.length,stream:i.from(o)}}throw new Error("Streaming transformation not supported for this transformer")}clearCache(t){t?this.cache?.delete(t):this.cache?.clear?.()}getCacheStats(){return{maxSize:-1,size:this.cache?.size??0}}getContentTypeFromResult(t){if(t?.format){const e=c.getType(t.format);if(e)return e}return"application/octet-stream"}}export{C as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"node:fs";import"node:fs/promises";import"node:stream";import"./local-meta-storage-Bkwqi_gi.js";import{q as u}from"./disk-storage-BvdK4bqF.js";import"./path-D7rMc9nq-B718mbm6.js";import"./part-match-DqD5U7An.js";import"./ERRORS-B9jkvKwx.js";import"./storage-m_Cxgiih.js";import"./File-alcSNpLq.js";import"./update-size-DANV7aa2.js";import"./has-content-Bx2p8Okx.js";export{u as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var g=Object.defineProperty;var o=(i,t)=>g(i,"name",{value:t,configurable:!0});import{createReadStream as f,createWriteStream as b}from"node:fs";import{truncate as w}from"node:fs/promises";import{Transform as E,pipeline as F}from"node:stream";import{q as C,y as v,m as W,s as R}from"./disk-storage-BvdK4bqF.js";import{y as S}from"./local-meta-storage-Bkwqi_gi.js";import{r as T,d as N,o as O}from"./part-match-DqD5U7An.js";import{throwErrorCode as p,ERRORS as n}from"./ERRORS-B9jkvKwx.js";import{LRUCache as k}from"lru-cache";import{createHash as P}from"node:crypto";import{u as x}from"./update-size-DANV7aa2.js";import{o as M}from"./has-content-Bx2p8Okx.js";var _=Object.defineProperty,I=o((i,t)=>_(i,"name",{value:t,configurable:!0}),"a");class L extends E{static{o(this,"n")}constructor(t,e){super(),this.path=e,this.hashes=t,this.hash=this.hashes.get(e)||P(this.hashes.algorithm),this.hashCopy=this.hash.copy()}path;static{I(this,"RangeChecksum")}hash;hashCopy;hashes;reset(){this.hashes.set(this.path,this.hashCopy)}digest(t="hex"){return this.hash.copy().digest(t)}_transform(t,e,s){this.push(t),this.hash.update(t),s()}_flush(t){t()}}var z=Object.defineProperty,U=o((i,t)=>z(i,"name",{value:t,configurable:!0}),"h");class A extends k{static{o(this,"p")}constructor(t="sha1",e){super({ttl:1e3,ttlAutopurge:!0,...e}),this.algorithm=t}algorithm;static{U(this,"RangeHasher")}hex(t){return this.get(t)?.copy().digest("hex")||""}base64(t){return this.get(t)?.copy().digest("base64")||""}async init(t,e=0){return this.get(t)?.copy()||this.updateFromFs(t,e)}digester(t){return new L(this,t)}async updateFromFs(t,e=0,s){const r=await this.fromFs(t,e,s);return this.set(t,r),r}fromFs(t,e=0,s){return new Promise((r,a)=>{const h=this.digester(t);s!==void 0&&(h.hash=s),f(t,{start:e}).on("error",a).on("end",()=>{r(h.hash)}).pipe(h).resume()})}}var H=Object.defineProperty,l=o((i,t)=>H(i,"name",{value:t,configurable:!0}),"d");class Z extends C{static{o(this,"O")}static{l(this,"DiskStorageWithChecksum")}hashes;constructor(t){super(t),this.hashes=new A(t?.checksum==="sha1"?"sha1":"md5")}async delete({id:t}){try{const e=await this.getMeta(t),s=this.getFilePath(e.name);this.hashes.delete(s),await S(s),await this.deleteMeta(t);const r={...e,status:"deleted"};return await this.onDelete(r),r}catch(e){this.logger?.error("[error]: Could not delete file: %O",e);const s=this.normalizeError(e instanceof Error?e:new Error(String(e)));await this.onError(s)}return{id:t}}async write(t){let e;if("contentType"in t&&"metadata"in t&&!("body"in t)&&!("start"in t)?e=t:(e=await this.getMeta(t.id),await this.checkIfExpired(e)),e.status==="completed")return e;if(t.size!==void 0&&x(e,t.size),!T(t,e))return p(n.FILE_CONFLICT);const s=this.getFilePath(e.name);try{const r=t.start||0;if(await v(s),(e.bytesWritten===0||Number.isNaN(e.bytesWritten))&&(e.bytesWritten=r),await this.hashes.init(s),M(t)){if(this.isUnsupportedChecksum(t.checksumAlgorithm))return p(n.UNSUPPORTED_CHECKSUM_ALGORITHM);if((t.start===0||t.start===void 0)&&(e.bytesWritten===0||Number.isNaN(e.bytesWritten))&&(!e.contentType||e.contentType==="application/octet-stream"))try{const{fileType:m,stream:c}=await N(t.body);m?.mime&&(e.contentType=m.mime),t.body=c}catch{}const[a,h]=await this.lazyWrite({...t,...e});if(h)return await w(s,e.bytesWritten),p(h);typeof a!="number"&&await this.hashes.updateFromFs(s,e.bytesWritten),e.bytesWritten=a}return e.status=O(e),e.hash={algorithm:this.hashes.algorithm,value:this.hashes.hex(s)},e.status==="completed"&&this.hashes.delete(s),await this.saveMeta(e),e}catch(r){await this.hashes.updateFromFs(s,e.bytesWritten);const a=this.normalizeError(r instanceof Error?r:new Error(String(r)));return await this.onError(a),p(n.FILE_ERROR,(typeof a.message=="string"?a.message:String(r))||String(r))}}lazyWrite(t){return new Promise((e,s)=>{const r=this.getFilePath(t.name),a=b(r,{flags:"r+",start:t.start}),h=new W(t.contentLength||Number(t.size)-t.start),m=R(t.checksum,t.checksumAlgorithm),c=this.hashes.digester(r),y=!t.checksum,d=l(u=>{c.reset(),a.close(),e([Number.NaN,u])},"failWithCode");h.on("error",()=>{d(n.FILE_CONFLICT)}),m.on("error",()=>{d(n.CHECKSUM_MISMATCH)}),t.body.on("aborted",()=>{d(y?void 0:n.REQUEST_ABORTED)}),F(t.body,h,m,c,a,u=>{if(u){c.reset(),s(u);return}e([t.start+a.bytesWritten])})})}}export{Z as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var E=Object.defineProperty;var a=(e,o)=>E(e,"name",{value:o,configurable:!0});var c=Object.defineProperty,s=a((e,o)=>c(e,"name",{value:o,configurable:!0}),"s"),l=(e=>(e.BAD_REQUEST="BadRequest",e.CHECKSUM_MISMATCH="ChecksumMismatch",e.FILE_CONFLICT="FileConflict",e.FILE_ERROR="FileError",e.FILE_LOCKED="FileLocked",e.FILE_NOT_ALLOWED="FileNotAllowed",e.FILE_NOT_FOUND="FileNotFound",e.FORBIDDEN="Forbidden",e.GONE="Gone",e.INVALID_FILE_NAME="InvalidFileName",e.INVALID_FILE_SIZE="InvalidFileSize",e.INVALID_RANGE="InvalidRange",e.INVALID_TYPE="Invalidtype",e.METHOD_NOT_ALLOWED="MethodNotAllowed",e.REQUEST_ABORTED="RequestAborted",e.REQUEST_ENTITY_TOO_LARGE="RequestEntityTooLarge",e.STORAGE_BUSY="StorageBusy",e.STORAGE_ERROR="StorageError",e.TOO_MANY_REQUESTS="TooManyRequests",e.UNKNOWN_ERROR="UnknownError",e.UNPROCESSABLE_ENTITY="UnprocessableEntity",e.UNSUPPORTED_CHECKSUM_ALGORITHM="UnsupportedChecksumAlgorithm",e.UNSUPPORTED_MEDIA_TYPE="UnsupportedMediaType",e))(l||{});const d=(()=>{const e={BadRequest:[400,"Bad request"],ChecksumMismatch:[460,"Checksum mismatch"],FileConflict:[409,"File conflict"],FileError:[500,"Something went wrong writing the file"],FileLocked:[423,"File locked"],FileNotAllowed:[403,"File not allowed"],FileNotFound:[404,"Not found"],Forbidden:[403,"Authenticated user is not allowed access"],Gone:[410,"The file for this url no longer exists"],InvalidFileName:[400,"Invalid file name or it cannot be retrieved"],InvalidFileSize:[400,"File size cannot be retrieved"],InvalidRange:[400,"Invalid or missing content-range header"],Invalidtype:[400,'Invalid or missing "content-type" header'],MethodNotAllowed:[405,"Method not allowed"],RequestAborted:[499,"Request aborted"],RequestEntityTooLarge:[413,"Request entity too large"],StorageBusy:[503,"Storage is busy"],StorageError:[503,"Storage error"],TooManyRequests:[429,"Too many requests"],UnknownError:[500,"Something went wrong"],UnprocessableEntity:[422,"Validation failed"],UnsupportedChecksumAlgorithm:[400,"Unsupported checksum algorithm"],UnsupportedMediaType:[415,"Unsupported media type"]},o={};return Object.keys(e).forEach(r=>{const[t,n]=e[r];o[r]={code:r,message:n,statusCode:t}}),o})();class u extends Error{static{a(this,"UploadError")}static{s(this,"UploadError")}name="UploadError";UploadErrorCode="UnknownError";detail;constructor(o="UnknownError",r,t){super(r||o),this.name="UploadError",this.detail=t,Object.values(l).includes(o)&&(this.UploadErrorCode=o)}}const p=s(e=>!!e.UploadErrorCode,"isUploadError"),U=s((e,o)=>{const r=e;let t;r&&typeof r=="string"&&r in d&&(t=d[r]);const n=o||(t?.body&&typeof t.body=="object"&&"message"in t.body?t.body.message:void 0)||t?.message||"UnknownError",i=new u(r,n);throw i.UploadErrorCode=r,typeof o=="string"&&(i.detail=o),i},"throwErrorCode");export{l as ERRORS,d as ErrorMap,u as UploadError,p as isUploadError,U as throwErrorCode};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var m=Object.defineProperty;var o=(t,i)=>m(t,"name",{value:i,configurable:!0});import p from"@sindresorhus/fnv1a";import{nanoid as f}from"nanoid";var y=Object.defineProperty,a=o((t,i)=>y(t,"name",{value:i,configurable:!0}),"t");const l=a(t=>p(t,{size:64}).toString(16),"hash"),g=a(t=>{if(typeof t.mimeType=="string")return t.mimeType;if(typeof t.type=="string")return t.type;if(typeof t.filetype=="string")return t.filetype},"extractMimeType"),u=a(t=>{if(typeof t.name=="string")return t.name;if(typeof t.title=="string")return t.title;if(typeof t.originalName=="string")return t.originalName;if(typeof t.filename=="string")return t.filename},"extractOriginalName"),d=a(t=>{const{metadata:i,originalName:n,size:e}=t,s=String(i.lastModified??Date.now());return[n,e,s].filter(Boolean).map(String).map(r=>l(r)).join("-")},"generateFileId");class N{static{o(this,"g")}static{a(this,"File")}bytesWritten=Number.NaN;contentType;originalName;id;metadata;name="";size;status;expiredAt;createdAt;modifiedAt;hash;content;ETag;constructor({contentType:i,expiredAt:n,metadata:e,originalName:s,size:r}){this.metadata=e,this.originalName=s||u(e)||(this.id=f()),this.contentType=i||g(e)||"application/octet-stream",this.expiredAt=n,typeof r=="string"||typeof r=="number"?this.size=Number(r):(typeof e.size=="string"||typeof e.size=="number")&&(this.size=Number(e.size)),typeof this.size=="number"&&this.size<=0&&(this.size=void 0),this.id||=d(this)}}export{N as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const o={authScopes:["https://www.googleapis.com/auth/iam","https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/devstorage.full_control"],storageAPI:"https://storage.googleapis.com/storage/v1/b",uploadAPI:"https://storage.googleapis.com/upload/storage/v1/b"};export{o as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var t=Object.defineProperty;var a=(e,r)=>t(e,"name",{value:r,configurable:!0});import i from"./File-alcSNpLq.js";var l=Object.defineProperty,o=a((e,r)=>l(e,"name",{value:r,configurable:!0}),"l");class u extends i{static{a(this,"p")}static{o(this,"GCSFile")}GCSUploadURI;uri}export{u as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"node:crypto";import"gaxios";import"google-auth-library";import{E as f}from"./gcs-meta-storage-CvGkpzVE.js";import"./MetaStorage-Y4m1dWgd.js";import"./Metadata-B6Ir0KO7.js";import"./GCSConfig-BQ0OpVhe.js";export{f as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var g=Object.defineProperty;var d=(c,t)=>g(c,"name",{value:t,configurable:!0});import{randomUUID as f}from"node:crypto";import{request as y}from"gaxios";import{GoogleAuth as w}from"google-auth-library";import{r as C,E,b as R,g as b,d as l}from"./gcs-meta-storage-CvGkpzVE.js";import{r as U,d as k,o as $}from"./part-match-DqD5U7An.js";import{throwErrorCode as I,ERRORS as O}from"./ERRORS-B9jkvKwx.js";import{B as S,t as T}from"./storage-m_Cxgiih.js";import{O as v}from"./local-meta-storage-Bkwqi_gi.js";import m from"./GCSConfig-BQ0OpVhe.js";import A from"./GCSFile-CHjX_fJk.js";import{o as B}from"./has-content-Bx2p8Okx.js";var P=Object.defineProperty,j=d((c,t)=>P(c,"name",{value:t,configurable:!0}),"e");class x extends Error{static{d(this,"o")}constructor(t,e,r){super(t),this.code=e,this.config=r}code;config;static{j(this,"FetchError")}name="FetchError"}var G=Object.defineProperty,p=d((c,t)=>G(c,"name",{value:t,configurable:!0}),"m");const q=p(c=>c>=200&&c<300||c===308||c===499,"validateStatus");class Q extends S{static name="gcs";checksumTypes=["md5","crc32c"];meta;bucket;authClient;storageBaseURI;uploadBaseURI;isCustomEndpoint=!1;retryOptions={};useAuthWithCustomEndpoint;userProject;constructor(t){super(t);const e=t.bucket||process.env.GCS_BUCKET;if(!e)throw new Error("GCS bucket is not defined");if(!t.projectId)throw new Error("Sorry, we cannot connect to Cloud Services without a project ID.");this.bucket=e,this.storageBaseURI=`${t.storageAPI||m.storageAPI}/${this.bucket}/o`,this.uploadBaseURI=`${t.uploadAPI||m.uploadAPI}/${this.bucket}/o`,this.isCustomEndpoint=new URL(this.storageBaseURI).hostname!=="storage.googleapis.com";const{retryOptions:r,useAuthWithCustomEndpoint:s,userProject:o}=t;this.userProject=o,this.useAuthWithCustomEndpoint=s||!1,this.retryOptions={...C,...r},t.scopes||=m.authScopes,this.authClient=new w(t);const{bucket:i,metaStorage:n,metaStorageConfig:a,projectId:h}=t;if(n)this.meta=n;else{let u={...t,...a,logger:this.logger};"directory"in u?(this.logger?.debug("Using local meta storage"),this.meta=new v(u)):(i===u.bucket&&h===u.projectId&&(u={...u,authClient:this.authClient}),this.meta=new E(u))}this.isReady=!1,this.accessCheck().then(()=>{this.isReady=!0}).catch(u=>{this.logger?.error("Storage access check failed: %O",u)})}normalizeError(t){if(t.config){const e=+t.code||500;return{code:`GCS${e}`,message:t.message,name:t.name,retryable:e>=499,statusCode:e}}return{code:"GenericUploadError",message:`[${this.constructor.name}] ${t.message}`,name:t.name,statusCode:500}}async create(t){return this.instrumentOperation("create",async()=>{const e={...t};if(t.ttl){const a=typeof t.ttl=="string"?T(t.ttl):t.ttl;a!==void 0&&(e.expiredAt=Date.now()+a)}const r=new A(e);r.name=this.namingFunction(r),await this.validate(r);try{const a=await this.getMeta(r.id);return a.bytesWritten=await this.internalWrite(a),a}catch{}const s={"Content-Type":"application/json; charset=utf-8","X-Goog-Upload-Command":"start","X-Goog-Upload-Protocol":"resumable","X-Upload-Content-Length":r.size.toString(),"X-Upload-Content-Type":r.contentType},o={body:JSON.stringify({metadata:r.metadata}),headers:s,method:"POST",params:{name:r.name,size:r.size,uploadType:"resumable"},url:this.uploadBaseURI},i=await this.makeRequest(o);if(i.status!==200)throw new Error("Expected 200 response from GCS");const n=i.headers.get("X-Goog-Upload-Status")||i.headers.get("x-goog-upload-status");if(n!=="active")throw new Error(`X-Goog-Upload-Status response header expected 'active' got: ${n}`);return r.uri=i.headers.get("location"),this.config.clientDirectUpload?(r.GCSUploadURI=r.uri,this.logger?.debug("send uploadURI to client: %s",r.GCSUploadURI),r.status="created",r):(r.bytesWritten=0,await this.saveMeta(r),r.status="created",await this.onCreate(r),r)})}async write(t){return this.instrumentOperation("write",async()=>{let e;if("contentType"in t&&"metadata"in t&&!("body"in t)&&!("start"in t)?e=t:(e=await this.getMeta(t.id),await this.checkIfExpired(e)),e.status==="completed")return e;if(!U(t,e))return I(O.FILE_CONFLICT);await this.lock(t.id);try{if(B(t)&&(e.bytesWritten===0||Number.isNaN(e.bytesWritten))&&(!e.contentType||e.contentType==="application/octet-stream"))try{const{fileType:r,stream:s}=await k(t.body);r?.mime&&(e.contentType=r.mime),t.body=s}catch{}e.bytesWritten=await this.internalWrite({...e,...t}),e.status=$(e),e.status==="completed"&&(e.uri=`${this.storageBaseURI}/${e.name}`,await this.internalOnComplete(e))}finally{await this.unlock(t.id)}return e})}async delete({id:t}){return this.instrumentOperation("delete",async()=>{const e=await this.getMeta(t);if(!e.uri)throw new Error(`File ${t} does not have a valid URI`);e.status="deleted",await Promise.all([this.makeRequest({method:"DELETE",url:e.uri,validateStatus:q}),this.deleteMeta(e.id)]);const r={...e};return await this.onDelete(r),r})}async copy(t,e){return this.instrumentOperation("copy",async()=>{const r=new URL(`/${this.bucket}/${t}`,"file://"),s=new URL(encodeURI(e),r).pathname,[,o,...i]=s.split("/"),n=i.join("/"),a=`${this.storageBaseURI}/${t}/rewriteTo/b/${o}/o/${n}`;let h={};const u={body:"",headers:{"Content-Type":"application/json"},method:"POST",url:a};do u.body=h.rewriteToken?JSON.stringify({rewriteToken:h.rewriteToken}):"",h=(await this.makeRequest(u)).data||{};while(h.rewriteToken);return await this.getMeta(e)})}async move(t,e){return this.instrumentOperation("move",async()=>{const r=await this.copy(t,e),s=`${this.storageBaseURI}/${t}`;return await this.makeRequest({method:"DELETE",url:s}),r})}async get({id:t}){return this.instrumentOperation("get",async()=>{const{data:e}=await this.makeRequest({params:{alt:"json"},url:`${this.storageBaseURI}/${t}`});if(await this.checkIfExpired({expiredAt:e.timeDeleted}),!e.uri)throw new Error("File URI not found");const r=(await this.makeRequest({params:{alt:"media"},url:e.uri})).data;let s;if(typeof r=="string")s=Buffer.from(r,"utf8");else if(r&&typeof r=="object"&&"data"in r){const o=r.data;s=Buffer.from(o)}else s=Buffer.from(r);return{...e,content:s}})}async exists({id:t}){return this.instrumentOperation("exists",async()=>{try{return await this.getMeta(t),await this.makeRequest({method:"HEAD",url:`${this.storageBaseURI}/${t}`}),!0}catch{return!1}})}async list(t=1e3){return this.instrumentOperation("list",async()=>{const e=[];let r=!0,s={params:{maxResults:t},url:this.storageBaseURI};for(;r;)try{const{data:o}=await this.makeRequest(s);(o?.items||[]).forEach(({name:i,timeCreated:n,updated:a})=>{e.push({createdAt:n,id:i,modifiedAt:a})}),r=o?.nextPageToken!==void 0,r&&(s={...s,params:{...s.params,pageToken:o.nextPageToken}})}catch(o){const i=this.normalizeError(o instanceof Error?o:new Error(String(o)));throw await this.onError(i),o}return e},{limit:t})}async internalWrite(t){const{body:e,bytesWritten:r,size:s,uri:o=""}=t,i=R(t),n={method:"PUT"};if(e?.on){const a=new AbortController;e.on("aborted",()=>{a.abort()}),n.body=e,n.signal=a.signal}n.headers={Accept:"application/json","Content-Range":i,...s===r?{"X-Goog-Upload-Command":"upload, finalize"}:{}};try{const a=await this.makeRequest({url:o,...n});if(a.status===308){const h=a.headers.get("range");return h?b(h):0}if(a.status===200)return this.logger?.debug("uploaded %O",a.data),s;throw new x(String(a.data),`GCS${a.status}`,{uri:o})}catch(a){this.logger?.error(o,a);const h=this.normalizeError(a instanceof Error?a:new Error(String(a)));throw await this.onError(h),a}}internalOnComplete=p(t=>this.deleteMeta(t.id),"internalOnComplete");async makeRequest(t){return typeof t.url=="string"&&(t.url=t.url.replaceAll("/:",":")),t={...t,headers:{"User-Agent":`${l.name}/${l.version}`,"x-goog-api-client":`gl-node/${process.versions.node} gccl/${l.version} gccl-invocation-id/${f()}`},params:{...this.userProject===void 0?{}:{userProject:this.userProject}},retry:!0,retryConfig:this.retryOptions,timeout:6e4},this.isCustomEndpoint&&!this.useAuthWithCustomEndpoint?y(t):this.authClient.request(t)}async accessCheck(){return this.makeRequest({url:this.storageBaseURI.replace("/o","")})}}export{Q as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"node:fs/promises";import"node:os";import{O as f}from"./local-meta-storage-Bkwqi_gi.js";import"./path-D7rMc9nq-B718mbm6.js";import"./ERRORS-B9jkvKwx.js";import"./MetaStorage-Y4m1dWgd.js";import"./Metadata-B6Ir0KO7.js";export{f as default};
|