@edgestore/server 0.1.5-alpha.0 → 0.1.5-alpha.10
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/adapters/express/index.d.ts +1 -0
- package/adapters/express/index.js +1 -0
- package/dist/adapters/express/index.d.ts +20 -0
- package/dist/adapters/express/index.d.ts.map +1 -0
- package/dist/adapters/express/index.js +117 -0
- package/dist/adapters/express/index.mjs +113 -0
- package/dist/adapters/next/app/index.d.ts +5 -3
- package/dist/adapters/next/app/index.d.ts.map +1 -1
- package/dist/adapters/next/app/index.js +45 -16
- package/dist/adapters/next/app/index.mjs +44 -15
- package/dist/adapters/next/pages/index.d.ts +5 -3
- package/dist/adapters/next/pages/index.d.ts.map +1 -1
- package/dist/adapters/next/pages/index.js +37 -13
- package/dist/adapters/next/pages/index.mjs +36 -12
- package/dist/adapters/shared.d.ts +19 -1
- package/dist/adapters/shared.d.ts.map +1 -1
- package/dist/core/client/index.d.ts +116 -4
- package/dist/core/client/index.d.ts.map +1 -1
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +109 -34
- package/dist/core/index.mjs +110 -36
- package/dist/core/sdk/index.d.ts.map +1 -1
- package/dist/{index-f33a00fb.js → index-0c401ce1.js} +38 -4
- package/dist/{index-50ab9e08.js → index-23d1ede9.mjs} +42 -7
- package/dist/{index-30a3741e.mjs → index-a2e7ca9e.js} +49 -4
- package/dist/libs/errors/EdgeStoreApiClientError.d.ts +8 -0
- package/dist/libs/errors/EdgeStoreApiClientError.d.ts.map +1 -0
- package/dist/libs/errors/EdgeStoreCredentialsError.d.ts.map +1 -1
- package/dist/libs/errors/EdgeStoreError.d.ts +36 -4
- package/dist/libs/errors/EdgeStoreError.d.ts.map +1 -1
- package/dist/libs/logger.d.ts +13 -0
- package/dist/libs/logger.d.ts.map +1 -0
- package/dist/logger-7ea2248c.mjs +40 -0
- package/dist/logger-b530a3e1.js +42 -0
- package/dist/logger-e0066db9.js +33 -0
- package/dist/providers/aws/index.js +1 -1
- package/dist/providers/aws/index.mjs +1 -1
- package/dist/providers/azure/index.d.ts +20 -0
- package/dist/providers/azure/index.d.ts.map +1 -0
- package/dist/providers/azure/index.js +61 -0
- package/dist/providers/azure/index.mjs +57 -0
- package/dist/providers/edgestore/index.d.ts.map +1 -1
- package/dist/providers/edgestore/index.js +10 -3
- package/dist/providers/edgestore/index.mjs +10 -3
- package/dist/providers/types.d.ts +1 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/{shared-306c1af2.js → shared-06cb0d86.js} +150 -61
- package/dist/{shared-9fad0d51.js → shared-d474acc6.js} +114 -46
- package/dist/{shared-6dea9e91.mjs → shared-d7ea66fb.mjs} +141 -52
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +17 -2
- package/providers/azure/index.d.ts +1 -0
- package/providers/azure/index.js +1 -0
- package/src/adapters/express/index.ts +164 -0
- package/src/adapters/next/app/index.ts +63 -20
- package/src/adapters/next/pages/index.ts +52 -15
- package/src/adapters/shared.ts +142 -40
- package/src/core/client/index.ts +233 -51
- package/src/core/index.ts +6 -0
- package/src/core/sdk/index.ts +7 -1
- package/src/libs/errors/EdgeStoreApiClientError.ts +14 -0
- package/src/libs/errors/EdgeStoreCredentialsError.ts +1 -2
- package/src/libs/errors/EdgeStoreError.ts +74 -7
- package/src/libs/logger.ts +44 -0
- package/src/providers/aws/index.ts +1 -1
- package/src/providers/azure/index.ts +89 -0
- package/src/providers/edgestore/index.ts +9 -2
- package/src/providers/types.ts +1 -0
- package/src/types.ts +8 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type EdgeStoreRouter } from '../core/internals/bucketBuilder';
|
|
1
|
+
import { type AnyBuilder, type EdgeStoreRouter } from '../core/internals/bucketBuilder';
|
|
2
2
|
import { type Provider } from '../providers/types';
|
|
3
3
|
export declare function init<TCtx>(params: {
|
|
4
4
|
provider: Provider;
|
|
@@ -102,6 +102,24 @@ export declare function deleteFile<TCtx>(params: {
|
|
|
102
102
|
ctxToken: string | undefined;
|
|
103
103
|
body: DeleteFileBody;
|
|
104
104
|
}): Promise<import("../providers/types").DeleteFileRes>;
|
|
105
|
+
export declare function buildPath(params: {
|
|
106
|
+
fileInfo: RequestUploadBody['fileInfo'];
|
|
107
|
+
bucket: AnyBuilder;
|
|
108
|
+
pathAttrs: {
|
|
109
|
+
ctx: any;
|
|
110
|
+
input: any;
|
|
111
|
+
};
|
|
112
|
+
}): {
|
|
113
|
+
key: string;
|
|
114
|
+
value: string;
|
|
115
|
+
}[];
|
|
116
|
+
export declare function parsePath(path: {
|
|
117
|
+
key: string;
|
|
118
|
+
value: string;
|
|
119
|
+
}[]): {
|
|
120
|
+
parsedPath: Record<string, string>;
|
|
121
|
+
pathOrder: string[];
|
|
122
|
+
};
|
|
105
123
|
export type InitRes = Awaited<ReturnType<typeof init>>;
|
|
106
124
|
export type RequestUploadRes = Awaited<ReturnType<typeof requestUpload>>;
|
|
107
125
|
export type RequestUploadPartsRes = Awaited<ReturnType<typeof requestUploadParts>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/adapters/shared.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/adapters/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { type z, type ZodNever } from 'zod';
|
|
1
2
|
import { type AnyRouter, type Comparison } from '..';
|
|
2
|
-
import { type Simplify } from '../../types';
|
|
3
|
+
import { type Prettify, type Simplify } from '../../types';
|
|
3
4
|
import { type AnyBuilder, type InferBucketPathKeys, type InferBucketPathObject, type InferMetadataObject } from '../internals/bucketBuilder';
|
|
4
5
|
export type GetFileRes<TBucket extends AnyBuilder> = {
|
|
5
6
|
url: string;
|
|
@@ -8,6 +9,82 @@ export type GetFileRes<TBucket extends AnyBuilder> = {
|
|
|
8
9
|
metadata: InferMetadataObject<TBucket>;
|
|
9
10
|
path: InferBucketPathObject<TBucket>;
|
|
10
11
|
};
|
|
12
|
+
export type UploadOptions = {
|
|
13
|
+
/**
|
|
14
|
+
* e.g. 'my-file-name.jpg'
|
|
15
|
+
*
|
|
16
|
+
* By default, a unique file name will be generated for each upload.
|
|
17
|
+
* If you want to use a custom file name, you can use this option.
|
|
18
|
+
* If you use the same file name for multiple uploads, the previous file will be overwritten.
|
|
19
|
+
* But it might take some time for the CDN cache to be cleared.
|
|
20
|
+
* So maybe you will keep seeing the old file for a while.
|
|
21
|
+
*
|
|
22
|
+
* If you want to replace an existing file immediately leave the `manualFileName` option empty and use the `replaceTargetUrl` option.
|
|
23
|
+
*/
|
|
24
|
+
manualFileName?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Use this to replace an existing file.
|
|
27
|
+
* It will automatically delete the existing file when the upload is complete.
|
|
28
|
+
*/
|
|
29
|
+
replaceTargetUrl?: string;
|
|
30
|
+
/**
|
|
31
|
+
* If true, the file needs to be confirmed by using the `confirmUpload` function.
|
|
32
|
+
* If the file is not confirmed within 24 hours, it will be deleted.
|
|
33
|
+
*
|
|
34
|
+
* This is useful for pages where the file is uploaded as soon as it is selected,
|
|
35
|
+
* but the user can leave the page without submitting the form.
|
|
36
|
+
*
|
|
37
|
+
* This avoids unnecessary zombie files in the bucket.
|
|
38
|
+
*/
|
|
39
|
+
temporary?: boolean;
|
|
40
|
+
};
|
|
41
|
+
type TextContent = string;
|
|
42
|
+
type BlobContent = {
|
|
43
|
+
blob: Blob;
|
|
44
|
+
extension: string;
|
|
45
|
+
};
|
|
46
|
+
type UrlContent = {
|
|
47
|
+
url: string;
|
|
48
|
+
extension: string;
|
|
49
|
+
};
|
|
50
|
+
export type UploadFileRequest<TBucket extends AnyBuilder> = {
|
|
51
|
+
/**
|
|
52
|
+
* Can be a string, a blob or an url.
|
|
53
|
+
*
|
|
54
|
+
* If it's a string, it will be converted to a blob with the type `text/plain`.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* // string
|
|
58
|
+
* content: "some text"
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* // blob
|
|
62
|
+
* content: {
|
|
63
|
+
* blob: new Blob([text], { type: "text/csv" }),
|
|
64
|
+
* extension: "csv",
|
|
65
|
+
* }
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* // url
|
|
69
|
+
* content: {
|
|
70
|
+
* url: "https://example.com/my-file.csv",
|
|
71
|
+
* extension: "csv",
|
|
72
|
+
* }
|
|
73
|
+
*/
|
|
74
|
+
content: TextContent | BlobContent | UrlContent;
|
|
75
|
+
options?: UploadOptions;
|
|
76
|
+
} & (TBucket['$config']['ctx'] extends Record<string, never> ? {} : {
|
|
77
|
+
ctx: TBucket['$config']['ctx'];
|
|
78
|
+
}) & (TBucket['_def']['input'] extends ZodNever ? {} : {
|
|
79
|
+
input: z.infer<TBucket['_def']['input']>;
|
|
80
|
+
});
|
|
81
|
+
export type UploadFileRes<TBucket extends AnyBuilder> = {
|
|
82
|
+
url: string;
|
|
83
|
+
size: number;
|
|
84
|
+
metadata: InferMetadataObject<TBucket>;
|
|
85
|
+
path: InferBucketPathObject<TBucket>;
|
|
86
|
+
pathOrder: (keyof InferBucketPathObject<TBucket>)[];
|
|
87
|
+
};
|
|
11
88
|
type Filter<TBucket extends AnyBuilder> = {
|
|
12
89
|
AND?: Filter<TBucket>[];
|
|
13
90
|
OR?: Filter<TBucket>[];
|
|
@@ -53,7 +130,42 @@ type EdgeStoreClient<TRouter extends AnyRouter> = {
|
|
|
53
130
|
url: string;
|
|
54
131
|
}) => Promise<GetFileRes<TRouter['buckets'][K]>>;
|
|
55
132
|
/**
|
|
56
|
-
*
|
|
133
|
+
* Use this function to upload a file to the bucket directly from your backend.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```ts
|
|
137
|
+
* // simple example
|
|
138
|
+
* await backendClient.myBucket.upload({
|
|
139
|
+
* content: "some text",
|
|
140
|
+
* });
|
|
141
|
+
* ```
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```ts
|
|
145
|
+
* // complete example
|
|
146
|
+
* await backendClient.myBucket.upload({
|
|
147
|
+
* content: {
|
|
148
|
+
* blob: new Blob([text], { type: "text/csv" }),
|
|
149
|
+
* extension: "csv",
|
|
150
|
+
* },
|
|
151
|
+
* options: {
|
|
152
|
+
* temporary: true,
|
|
153
|
+
* replaceTargetUrl: replaceUrl,
|
|
154
|
+
* manualFileName: "test.csv",
|
|
155
|
+
* },
|
|
156
|
+
* ctx: {
|
|
157
|
+
* userId: "123",
|
|
158
|
+
* userRole: "admin",
|
|
159
|
+
* },
|
|
160
|
+
* input: {
|
|
161
|
+
* type: "post",
|
|
162
|
+
* },
|
|
163
|
+
* });
|
|
164
|
+
* ```
|
|
165
|
+
*/
|
|
166
|
+
upload: (params: UploadFileRequest<TRouter['buckets'][K]>) => Promise<Prettify<UploadFileRes<TRouter['buckets'][K]>>>;
|
|
167
|
+
/**
|
|
168
|
+
* Confirm a temporary file upload directly from your backend.
|
|
57
169
|
*/
|
|
58
170
|
confirmUpload: (params: {
|
|
59
171
|
url: string;
|
|
@@ -61,7 +173,7 @@ type EdgeStoreClient<TRouter extends AnyRouter> = {
|
|
|
61
173
|
success: boolean;
|
|
62
174
|
}>;
|
|
63
175
|
/**
|
|
64
|
-
* Programmatically delete a file.
|
|
176
|
+
* Programmatically delete a file directly from your backend.
|
|
65
177
|
*/
|
|
66
178
|
deleteFile: (params: {
|
|
67
179
|
url: string;
|
|
@@ -74,7 +186,7 @@ type EdgeStoreClient<TRouter extends AnyRouter> = {
|
|
|
74
186
|
* You can also filter the results by passing a filter object.
|
|
75
187
|
* The results are paginated.
|
|
76
188
|
*/
|
|
77
|
-
listFiles: (params?: ListFilesRequest<TRouter['buckets'][K]>) => Promise<ListFilesResponse<TRouter['buckets'][K]
|
|
189
|
+
listFiles: (params?: ListFilesRequest<TRouter['buckets'][K]>) => Promise<Prettify<ListFilesResponse<TRouter['buckets'][K]>>>;
|
|
78
190
|
};
|
|
79
191
|
};
|
|
80
192
|
export declare function initEdgeStoreClient<TRouter extends AnyRouter>(config: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/client/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/client/index.ts"],"names":[],"mappings":"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"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -2,5 +2,7 @@ import { type EdgeStoreRouter } from './internals/bucketBuilder';
|
|
|
2
2
|
export * from './client';
|
|
3
3
|
export * from './sdk';
|
|
4
4
|
export type { InferBucketPathKeys, InferBucketPathObject, InferMetadataObject, } from './internals/bucketBuilder';
|
|
5
|
+
export type { EdgeStoreErrorCodeKey, EdgeStoreErrorDetails, EdgeStoreJsonResponse, } from '../libs/errors/EdgeStoreError';
|
|
6
|
+
export { EdgeStoreApiClientError } from '../libs/errors/EdgeStoreApiClientError';
|
|
5
7
|
export type AnyRouter = EdgeStoreRouter<any>;
|
|
6
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,YAAY,EACV,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,YAAY,EACV,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAEjF,MAAM,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC"}
|
package/dist/core/index.js
CHANGED
|
@@ -2,8 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var shared = require('../shared-06cb0d86.js');
|
|
6
|
+
var index = require('../index-a2e7ca9e.js');
|
|
7
|
+
var _define_property = require('@swc/helpers/_/_define_property');
|
|
8
|
+
require('@panva/hkdf');
|
|
9
|
+
require('cookie');
|
|
10
|
+
require('jose');
|
|
11
|
+
require('uuid');
|
|
6
12
|
|
|
13
|
+
// type guard for `content`
|
|
14
|
+
function isTextContent(content) {
|
|
15
|
+
return typeof content === 'string';
|
|
16
|
+
}
|
|
17
|
+
function isBlobContent(content) {
|
|
18
|
+
return typeof content !== 'string' && 'blob' in content;
|
|
19
|
+
}
|
|
7
20
|
function initEdgeStoreClient(config) {
|
|
8
21
|
const sdk = index.initEdgeStoreSdk({
|
|
9
22
|
accessKey: config.accessKey,
|
|
@@ -17,6 +30,87 @@ function initEdgeStoreClient(config) {
|
|
|
17
30
|
throw new Error(`Bucket ${bucketName} not found`);
|
|
18
31
|
}
|
|
19
32
|
const client = {
|
|
33
|
+
async upload (params) {
|
|
34
|
+
const content = params.content;
|
|
35
|
+
const ctx = 'ctx' in params ? params.ctx : {};
|
|
36
|
+
const input = 'input' in params ? params.input : {};
|
|
37
|
+
const { blob, extension } = await (async ()=>{
|
|
38
|
+
if (isTextContent(content)) {
|
|
39
|
+
return {
|
|
40
|
+
blob: new Blob([
|
|
41
|
+
content
|
|
42
|
+
], {
|
|
43
|
+
type: 'text/plain'
|
|
44
|
+
}),
|
|
45
|
+
extension: 'txt'
|
|
46
|
+
};
|
|
47
|
+
} else if (isBlobContent(content)) {
|
|
48
|
+
return {
|
|
49
|
+
blob: content.blob,
|
|
50
|
+
extension: content.extension
|
|
51
|
+
};
|
|
52
|
+
} else {
|
|
53
|
+
return {
|
|
54
|
+
blob: await getBlobFromUrl(content.url),
|
|
55
|
+
extension: content.extension
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
})();
|
|
59
|
+
const path = shared.buildPath({
|
|
60
|
+
bucket,
|
|
61
|
+
pathAttrs: {
|
|
62
|
+
ctx,
|
|
63
|
+
input
|
|
64
|
+
},
|
|
65
|
+
fileInfo: {
|
|
66
|
+
type: blob.type,
|
|
67
|
+
size: blob.size,
|
|
68
|
+
extension,
|
|
69
|
+
temporary: false,
|
|
70
|
+
fileName: params.options?.manualFileName,
|
|
71
|
+
replaceTargetUrl: params.options?.replaceTargetUrl
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
const metadata = await bucket._def.metadata({
|
|
75
|
+
ctx,
|
|
76
|
+
input
|
|
77
|
+
});
|
|
78
|
+
const requestUploadRes = await sdk.requestUpload({
|
|
79
|
+
bucketName,
|
|
80
|
+
bucketType: bucket._def.type,
|
|
81
|
+
fileInfo: {
|
|
82
|
+
fileName: params.options?.manualFileName,
|
|
83
|
+
replaceTargetUrl: params.options?.replaceTargetUrl,
|
|
84
|
+
type: blob.type,
|
|
85
|
+
size: blob.size,
|
|
86
|
+
extension,
|
|
87
|
+
isPublic: bucket._def.accessControl === undefined,
|
|
88
|
+
temporary: params.options?.temporary ?? false,
|
|
89
|
+
path,
|
|
90
|
+
metadata
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
const { signedUrl, multipart } = requestUploadRes;
|
|
94
|
+
if (multipart) {
|
|
95
|
+
// TODO
|
|
96
|
+
throw new Error('Multipart upload not implemented');
|
|
97
|
+
} else if (signedUrl) {
|
|
98
|
+
await fetch(signedUrl, {
|
|
99
|
+
method: 'PUT',
|
|
100
|
+
body: blob
|
|
101
|
+
});
|
|
102
|
+
} else {
|
|
103
|
+
throw new Error('Missing signedUrl');
|
|
104
|
+
}
|
|
105
|
+
const { parsedPath, pathOrder } = shared.parsePath(path);
|
|
106
|
+
return {
|
|
107
|
+
url: requestUploadRes.accessUrl,
|
|
108
|
+
size: blob.size,
|
|
109
|
+
metadata,
|
|
110
|
+
path: parsedPath,
|
|
111
|
+
pathOrder
|
|
112
|
+
};
|
|
113
|
+
},
|
|
20
114
|
async getFile (params) {
|
|
21
115
|
const res = await sdk.getFile(params);
|
|
22
116
|
return {
|
|
@@ -27,39 +121,6 @@ function initEdgeStoreClient(config) {
|
|
|
27
121
|
path: res.path
|
|
28
122
|
};
|
|
29
123
|
},
|
|
30
|
-
// TODO: Replace with `upload`
|
|
31
|
-
// async requestUpload(params) {
|
|
32
|
-
// const { file, path, metadata, replaceTargetUrl } = params;
|
|
33
|
-
// const fileExtension = file.name.includes('.')
|
|
34
|
-
// ? file.name.split('.').pop()
|
|
35
|
-
// : undefined;
|
|
36
|
-
// if (!fileExtension) {
|
|
37
|
-
// throw new Error('Missing file extension');
|
|
38
|
-
// }
|
|
39
|
-
// const parsedPath = Object.keys(bucket._def.path).map((key) => {
|
|
40
|
-
// const value = path[key as keyof typeof path];
|
|
41
|
-
// if (value === undefined) {
|
|
42
|
-
// throw new Error(`Missing path param ${key}`);
|
|
43
|
-
// }
|
|
44
|
-
// return {
|
|
45
|
-
// key,
|
|
46
|
-
// value,
|
|
47
|
-
// };
|
|
48
|
-
// });
|
|
49
|
-
// const fileInfo = {
|
|
50
|
-
// size: file.size,
|
|
51
|
-
// extension: fileExtension,
|
|
52
|
-
// isPublic: bucket._def.accessControl === undefined,
|
|
53
|
-
// path: parsedPath,
|
|
54
|
-
// metadata,
|
|
55
|
-
// replaceTargetUrl,
|
|
56
|
-
// };
|
|
57
|
-
// return await sdk.requestUpload({
|
|
58
|
-
// bucketName,
|
|
59
|
-
// bucketType: bucket._def.type,
|
|
60
|
-
// fileInfo,
|
|
61
|
-
// });
|
|
62
|
-
// },
|
|
63
124
|
async confirmUpload (params) {
|
|
64
125
|
return await sdk.confirmUpload(params);
|
|
65
126
|
},
|
|
@@ -109,7 +170,21 @@ function initEdgeStoreClient(config) {
|
|
|
109
170
|
}
|
|
110
171
|
return url;
|
|
111
172
|
}
|
|
173
|
+
async function getBlobFromUrl(url) {
|
|
174
|
+
const res = await fetch(url);
|
|
175
|
+
return await res.blob();
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
class EdgeStoreApiClientError extends Error {
|
|
179
|
+
constructor(opts){
|
|
180
|
+
super(opts.response.message);
|
|
181
|
+
_define_property._(this, "data", void 0);
|
|
182
|
+
this.name = 'EdgeStoreApiClientError';
|
|
183
|
+
this.data = opts.response;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
112
186
|
|
|
113
187
|
exports.edgeStoreRawSdk = index.edgeStoreRawSdk;
|
|
114
188
|
exports.initEdgeStoreSdk = index.initEdgeStoreSdk;
|
|
189
|
+
exports.EdgeStoreApiClientError = EdgeStoreApiClientError;
|
|
115
190
|
exports.initEdgeStoreClient = initEdgeStoreClient;
|
package/dist/core/index.mjs
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { b as buildPath, p as parsePath } from '../shared-d7ea66fb.mjs';
|
|
2
|
+
import { i as initEdgeStoreSdk } from '../index-23d1ede9.mjs';
|
|
3
|
+
export { e as edgeStoreRawSdk, i as initEdgeStoreSdk } from '../index-23d1ede9.mjs';
|
|
4
|
+
import { _ } from '@swc/helpers/_/_define_property';
|
|
5
|
+
import '@panva/hkdf';
|
|
6
|
+
import 'cookie';
|
|
7
|
+
import 'jose';
|
|
8
|
+
import 'uuid';
|
|
3
9
|
|
|
10
|
+
// type guard for `content`
|
|
11
|
+
function isTextContent(content) {
|
|
12
|
+
return typeof content === 'string';
|
|
13
|
+
}
|
|
14
|
+
function isBlobContent(content) {
|
|
15
|
+
return typeof content !== 'string' && 'blob' in content;
|
|
16
|
+
}
|
|
4
17
|
function initEdgeStoreClient(config) {
|
|
5
18
|
const sdk = initEdgeStoreSdk({
|
|
6
19
|
accessKey: config.accessKey,
|
|
@@ -14,6 +27,87 @@ function initEdgeStoreClient(config) {
|
|
|
14
27
|
throw new Error(`Bucket ${bucketName} not found`);
|
|
15
28
|
}
|
|
16
29
|
const client = {
|
|
30
|
+
async upload (params) {
|
|
31
|
+
const content = params.content;
|
|
32
|
+
const ctx = 'ctx' in params ? params.ctx : {};
|
|
33
|
+
const input = 'input' in params ? params.input : {};
|
|
34
|
+
const { blob, extension } = await (async ()=>{
|
|
35
|
+
if (isTextContent(content)) {
|
|
36
|
+
return {
|
|
37
|
+
blob: new Blob([
|
|
38
|
+
content
|
|
39
|
+
], {
|
|
40
|
+
type: 'text/plain'
|
|
41
|
+
}),
|
|
42
|
+
extension: 'txt'
|
|
43
|
+
};
|
|
44
|
+
} else if (isBlobContent(content)) {
|
|
45
|
+
return {
|
|
46
|
+
blob: content.blob,
|
|
47
|
+
extension: content.extension
|
|
48
|
+
};
|
|
49
|
+
} else {
|
|
50
|
+
return {
|
|
51
|
+
blob: await getBlobFromUrl(content.url),
|
|
52
|
+
extension: content.extension
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
})();
|
|
56
|
+
const path = buildPath({
|
|
57
|
+
bucket,
|
|
58
|
+
pathAttrs: {
|
|
59
|
+
ctx,
|
|
60
|
+
input
|
|
61
|
+
},
|
|
62
|
+
fileInfo: {
|
|
63
|
+
type: blob.type,
|
|
64
|
+
size: blob.size,
|
|
65
|
+
extension,
|
|
66
|
+
temporary: false,
|
|
67
|
+
fileName: params.options?.manualFileName,
|
|
68
|
+
replaceTargetUrl: params.options?.replaceTargetUrl
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
const metadata = await bucket._def.metadata({
|
|
72
|
+
ctx,
|
|
73
|
+
input
|
|
74
|
+
});
|
|
75
|
+
const requestUploadRes = await sdk.requestUpload({
|
|
76
|
+
bucketName,
|
|
77
|
+
bucketType: bucket._def.type,
|
|
78
|
+
fileInfo: {
|
|
79
|
+
fileName: params.options?.manualFileName,
|
|
80
|
+
replaceTargetUrl: params.options?.replaceTargetUrl,
|
|
81
|
+
type: blob.type,
|
|
82
|
+
size: blob.size,
|
|
83
|
+
extension,
|
|
84
|
+
isPublic: bucket._def.accessControl === undefined,
|
|
85
|
+
temporary: params.options?.temporary ?? false,
|
|
86
|
+
path,
|
|
87
|
+
metadata
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
const { signedUrl, multipart } = requestUploadRes;
|
|
91
|
+
if (multipart) {
|
|
92
|
+
// TODO
|
|
93
|
+
throw new Error('Multipart upload not implemented');
|
|
94
|
+
} else if (signedUrl) {
|
|
95
|
+
await fetch(signedUrl, {
|
|
96
|
+
method: 'PUT',
|
|
97
|
+
body: blob
|
|
98
|
+
});
|
|
99
|
+
} else {
|
|
100
|
+
throw new Error('Missing signedUrl');
|
|
101
|
+
}
|
|
102
|
+
const { parsedPath, pathOrder } = parsePath(path);
|
|
103
|
+
return {
|
|
104
|
+
url: requestUploadRes.accessUrl,
|
|
105
|
+
size: blob.size,
|
|
106
|
+
metadata,
|
|
107
|
+
path: parsedPath,
|
|
108
|
+
pathOrder
|
|
109
|
+
};
|
|
110
|
+
},
|
|
17
111
|
async getFile (params) {
|
|
18
112
|
const res = await sdk.getFile(params);
|
|
19
113
|
return {
|
|
@@ -24,39 +118,6 @@ function initEdgeStoreClient(config) {
|
|
|
24
118
|
path: res.path
|
|
25
119
|
};
|
|
26
120
|
},
|
|
27
|
-
// TODO: Replace with `upload`
|
|
28
|
-
// async requestUpload(params) {
|
|
29
|
-
// const { file, path, metadata, replaceTargetUrl } = params;
|
|
30
|
-
// const fileExtension = file.name.includes('.')
|
|
31
|
-
// ? file.name.split('.').pop()
|
|
32
|
-
// : undefined;
|
|
33
|
-
// if (!fileExtension) {
|
|
34
|
-
// throw new Error('Missing file extension');
|
|
35
|
-
// }
|
|
36
|
-
// const parsedPath = Object.keys(bucket._def.path).map((key) => {
|
|
37
|
-
// const value = path[key as keyof typeof path];
|
|
38
|
-
// if (value === undefined) {
|
|
39
|
-
// throw new Error(`Missing path param ${key}`);
|
|
40
|
-
// }
|
|
41
|
-
// return {
|
|
42
|
-
// key,
|
|
43
|
-
// value,
|
|
44
|
-
// };
|
|
45
|
-
// });
|
|
46
|
-
// const fileInfo = {
|
|
47
|
-
// size: file.size,
|
|
48
|
-
// extension: fileExtension,
|
|
49
|
-
// isPublic: bucket._def.accessControl === undefined,
|
|
50
|
-
// path: parsedPath,
|
|
51
|
-
// metadata,
|
|
52
|
-
// replaceTargetUrl,
|
|
53
|
-
// };
|
|
54
|
-
// return await sdk.requestUpload({
|
|
55
|
-
// bucketName,
|
|
56
|
-
// bucketType: bucket._def.type,
|
|
57
|
-
// fileInfo,
|
|
58
|
-
// });
|
|
59
|
-
// },
|
|
60
121
|
async confirmUpload (params) {
|
|
61
122
|
return await sdk.confirmUpload(params);
|
|
62
123
|
},
|
|
@@ -106,5 +167,18 @@ function initEdgeStoreClient(config) {
|
|
|
106
167
|
}
|
|
107
168
|
return url;
|
|
108
169
|
}
|
|
170
|
+
async function getBlobFromUrl(url) {
|
|
171
|
+
const res = await fetch(url);
|
|
172
|
+
return await res.blob();
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
class EdgeStoreApiClientError extends Error {
|
|
176
|
+
constructor(opts){
|
|
177
|
+
super(opts.response.message);
|
|
178
|
+
_(this, "data", void 0);
|
|
179
|
+
this.name = 'EdgeStoreApiClientError';
|
|
180
|
+
this.data = opts.response;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
109
183
|
|
|
110
|
-
export { initEdgeStoreClient };
|
|
184
|
+
export { EdgeStoreApiClientError, initEdgeStoreClient };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/sdk/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/sdk/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,37 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
2
|
+
const EDGE_STORE_ERROR_CODES = {
|
|
3
|
+
BAD_REQUEST: 400,
|
|
4
|
+
FILE_TOO_LARGE: 400,
|
|
5
|
+
MIME_TYPE_NOT_ALLOWED: 400,
|
|
6
|
+
UNAUTHORIZED: 401,
|
|
7
|
+
UPLOAD_NOT_ALLOWED: 403,
|
|
8
|
+
DELETE_NOT_ALLOWED: 403,
|
|
9
|
+
CREATE_CONTEXT_ERROR: 500,
|
|
10
|
+
SERVER_ERROR: 500,
|
|
11
|
+
};
|
|
12
|
+
class EdgeStoreError extends Error {
|
|
13
|
+
constructor(opts) {
|
|
14
|
+
super(opts.message);
|
|
15
|
+
this.name = 'EdgeStoreError';
|
|
16
|
+
this.code = opts.code;
|
|
17
|
+
this.cause = opts.cause;
|
|
18
|
+
this.level = EDGE_STORE_ERROR_CODES[opts.code] >= 500 ? 'error' : 'warn';
|
|
19
|
+
this.details = 'details' in opts ? opts.details : undefined;
|
|
20
|
+
}
|
|
21
|
+
formattedMessage() {
|
|
22
|
+
return `${this.message}${this.details ? `\n Details: ${JSON.stringify(this.details)}` : ''}${this.cause ? `\n Caused by: ${this.cause.message}` : ''}`;
|
|
23
|
+
}
|
|
24
|
+
formattedJson() {
|
|
25
|
+
return {
|
|
26
|
+
message: this.code === 'SERVER_ERROR' ? 'Internal server error' : this.message,
|
|
27
|
+
code: this.code,
|
|
28
|
+
details: this.details,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
1
33
|
const DEFAULT_MESSAGE = `Missing EDGE_STORE_ACCESS_KEY or EDGE_STORE_SECRET_KEY.
|
|
2
|
-
This can happen if you are trying to
|
|
3
|
-
The vanilla client should only be used in the backend.`;
|
|
34
|
+
This can happen if you are trying to import something related to the backend of Edge Store in a client component.`;
|
|
4
35
|
class EdgeStoreCredentialsError extends Error {
|
|
5
36
|
constructor(message = DEFAULT_MESSAGE) {
|
|
6
37
|
super(message);
|
|
@@ -31,7 +62,10 @@ const edgeStoreRawSdk = {
|
|
|
31
62
|
path: bucket._def.path.map((p) => {
|
|
32
63
|
const paramEntries = Object.entries(p);
|
|
33
64
|
if (paramEntries[0] === undefined) {
|
|
34
|
-
throw new
|
|
65
|
+
throw new EdgeStoreError({
|
|
66
|
+
message: `Empty path param found in: ${JSON.stringify(bucket._def.path)}`,
|
|
67
|
+
code: 'SERVER_ERROR',
|
|
68
|
+
});
|
|
35
69
|
}
|
|
36
70
|
const [key, value] = paramEntries[0];
|
|
37
71
|
return {
|
|
@@ -223,4 +257,4 @@ function initEdgeStoreSdk(params) {
|
|
|
223
257
|
};
|
|
224
258
|
}
|
|
225
259
|
|
|
226
|
-
export {
|
|
260
|
+
export { EdgeStoreError as E, EDGE_STORE_ERROR_CODES as a, EdgeStoreCredentialsError as b, edgeStoreRawSdk as e, initEdgeStoreSdk as i };
|