@edgestore/server 0.1.5-alpha.0 → 0.1.5-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/next/app/index.js +1 -1
- package/dist/adapters/next/app/index.mjs +1 -1
- package/dist/adapters/next/pages/index.js +1 -1
- package/dist/adapters/next/pages/index.mjs +1 -1
- package/dist/adapters/shared.d.ts +19 -1
- package/dist/adapters/shared.d.ts.map +1 -1
- package/dist/core/client/index.d.ts +50 -1
- package/dist/core/client/index.d.ts.map +1 -1
- package/dist/core/index.js +82 -33
- package/dist/core/index.mjs +82 -33
- package/dist/providers/aws/index.js +1 -1
- package/dist/providers/aws/index.mjs +1 -1
- package/dist/providers/types.d.ts +1 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/{shared-6dea9e91.mjs → shared-30b7a2ab.mjs} +13 -6
- package/dist/{shared-306c1af2.js → shared-5d1e7f43.js} +14 -5
- package/dist/{shared-9fad0d51.js → shared-88655ba7.js} +13 -6
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/adapters/shared.ts +14 -6
- package/src/core/client/index.ts +144 -48
- package/src/providers/aws/index.ts +1 -1
- package/src/providers/types.ts +1 -0
- package/src/types.ts +8 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var shared = require('../../../shared-
|
|
5
|
+
var shared = require('../../../shared-5d1e7f43.js');
|
|
6
6
|
var providers_edgestore_index = require('../../../providers/edgestore/index.js');
|
|
7
7
|
require('@panva/hkdf');
|
|
8
8
|
require('cookie');
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as init, r as requestUpload, a as requestUploadParts, c as completeMultipartUpload,
|
|
1
|
+
import { i as init, r as requestUpload, a as requestUploadParts, c as completeMultipartUpload, d as confirmUpload, e as deleteFile, E as EdgeStoreError, f as EDGE_STORE_ERROR_CODES } from '../../../shared-30b7a2ab.mjs';
|
|
2
2
|
import { EdgeStoreProvider } from '../../../providers/edgestore/index.mjs';
|
|
3
3
|
import '@panva/hkdf';
|
|
4
4
|
import 'cookie';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var shared = require('../../../shared-
|
|
5
|
+
var shared = require('../../../shared-5d1e7f43.js');
|
|
6
6
|
var providers_edgestore_index = require('../../../providers/edgestore/index.js');
|
|
7
7
|
require('@panva/hkdf');
|
|
8
8
|
require('cookie');
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as init, r as requestUpload, a as requestUploadParts, c as completeMultipartUpload,
|
|
1
|
+
import { i as init, r as requestUpload, a as requestUploadParts, c as completeMultipartUpload, d as confirmUpload, e as deleteFile, E as EdgeStoreError, f as EDGE_STORE_ERROR_CODES } from '../../../shared-30b7a2ab.mjs';
|
|
2
2
|
import { EdgeStoreProvider } from '../../../providers/edgestore/index.mjs';
|
|
3
3
|
import '@panva/hkdf';
|
|
4
4
|
import 'cookie';
|
|
@@ -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,53 @@ 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
|
+
export type UploadFileRequest<TBucket extends AnyBuilder> = {
|
|
42
|
+
content: string | {
|
|
43
|
+
blob: Blob;
|
|
44
|
+
extension: string;
|
|
45
|
+
};
|
|
46
|
+
options?: UploadOptions;
|
|
47
|
+
} & (TBucket['$config']['ctx'] extends Record<string, never> ? {} : {
|
|
48
|
+
ctx: TBucket['$config']['ctx'];
|
|
49
|
+
}) & (TBucket['_def']['input'] extends ZodNever ? {} : {
|
|
50
|
+
input: z.infer<TBucket['_def']['input']>;
|
|
51
|
+
});
|
|
52
|
+
export type UploadFileRes<TBucket extends AnyBuilder> = {
|
|
53
|
+
url: string;
|
|
54
|
+
size: number;
|
|
55
|
+
metadata: InferMetadataObject<TBucket>;
|
|
56
|
+
path: InferBucketPathObject<TBucket>;
|
|
57
|
+
pathOrder: (keyof InferBucketPathObject<TBucket>)[];
|
|
58
|
+
};
|
|
11
59
|
type Filter<TBucket extends AnyBuilder> = {
|
|
12
60
|
AND?: Filter<TBucket>[];
|
|
13
61
|
OR?: Filter<TBucket>[];
|
|
@@ -52,6 +100,7 @@ type EdgeStoreClient<TRouter extends AnyRouter> = {
|
|
|
52
100
|
getFile: (params: {
|
|
53
101
|
url: string;
|
|
54
102
|
}) => Promise<GetFileRes<TRouter['buckets'][K]>>;
|
|
103
|
+
upload: (params: UploadFileRequest<TRouter['buckets'][K]>) => Promise<Prettify<UploadFileRes<TRouter['buckets'][K]>>>;
|
|
55
104
|
/**
|
|
56
105
|
* Confirm a temporary file upload.
|
|
57
106
|
*/
|
|
@@ -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.js
CHANGED
|
@@ -2,7 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
var shared = require('../shared-5d1e7f43.js');
|
|
5
6
|
var index = require('../index-50ab9e08.js');
|
|
7
|
+
require('@panva/hkdf');
|
|
8
|
+
require('cookie');
|
|
9
|
+
require('jose');
|
|
10
|
+
require('uuid');
|
|
11
|
+
require('@swc/helpers/_/_define_property');
|
|
6
12
|
|
|
7
13
|
function initEdgeStoreClient(config) {
|
|
8
14
|
const sdk = index.initEdgeStoreSdk({
|
|
@@ -17,6 +23,82 @@ function initEdgeStoreClient(config) {
|
|
|
17
23
|
throw new Error(`Bucket ${bucketName} not found`);
|
|
18
24
|
}
|
|
19
25
|
const client = {
|
|
26
|
+
async upload (params) {
|
|
27
|
+
const content = params.content;
|
|
28
|
+
const ctx = 'ctx' in params ? params.ctx : {};
|
|
29
|
+
const input = 'input' in params ? params.input : {};
|
|
30
|
+
const { blob, extension } = (()=>{
|
|
31
|
+
if (typeof content === 'string') {
|
|
32
|
+
return {
|
|
33
|
+
blob: new Blob([
|
|
34
|
+
content
|
|
35
|
+
], {
|
|
36
|
+
type: 'text/plain'
|
|
37
|
+
}),
|
|
38
|
+
extension: 'txt'
|
|
39
|
+
};
|
|
40
|
+
} else {
|
|
41
|
+
return {
|
|
42
|
+
blob: content.blob,
|
|
43
|
+
extension: content.extension
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
})();
|
|
47
|
+
const path = shared.buildPath({
|
|
48
|
+
bucket,
|
|
49
|
+
pathAttrs: {
|
|
50
|
+
ctx,
|
|
51
|
+
input
|
|
52
|
+
},
|
|
53
|
+
fileInfo: {
|
|
54
|
+
type: blob.type,
|
|
55
|
+
size: blob.size,
|
|
56
|
+
extension,
|
|
57
|
+
temporary: false,
|
|
58
|
+
fileName: params.options?.manualFileName,
|
|
59
|
+
replaceTargetUrl: params.options?.replaceTargetUrl
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
const metadata = await bucket._def.metadata({
|
|
63
|
+
ctx,
|
|
64
|
+
input
|
|
65
|
+
});
|
|
66
|
+
const requestUploadRes = await sdk.requestUpload({
|
|
67
|
+
bucketName,
|
|
68
|
+
bucketType: bucket._def.type,
|
|
69
|
+
fileInfo: {
|
|
70
|
+
fileName: params.options?.manualFileName,
|
|
71
|
+
replaceTargetUrl: params.options?.replaceTargetUrl,
|
|
72
|
+
type: blob.type,
|
|
73
|
+
size: blob.size,
|
|
74
|
+
extension,
|
|
75
|
+
isPublic: bucket._def.accessControl === undefined,
|
|
76
|
+
temporary: params.options?.temporary ?? false,
|
|
77
|
+
path,
|
|
78
|
+
metadata
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
const { signedUrl, multipart } = requestUploadRes;
|
|
82
|
+
if (multipart) {
|
|
83
|
+
// TODO
|
|
84
|
+
throw new Error('Multipart upload not implemented');
|
|
85
|
+
} else if (signedUrl) {
|
|
86
|
+
await fetch(signedUrl, {
|
|
87
|
+
method: 'PUT',
|
|
88
|
+
body: blob
|
|
89
|
+
});
|
|
90
|
+
} else {
|
|
91
|
+
throw new Error('Missing signedUrl');
|
|
92
|
+
}
|
|
93
|
+
const { parsedPath, pathOrder } = shared.parsePath(path);
|
|
94
|
+
return {
|
|
95
|
+
url: requestUploadRes.accessUrl,
|
|
96
|
+
size: blob.size,
|
|
97
|
+
metadata,
|
|
98
|
+
path: parsedPath,
|
|
99
|
+
pathOrder
|
|
100
|
+
};
|
|
101
|
+
},
|
|
20
102
|
async getFile (params) {
|
|
21
103
|
const res = await sdk.getFile(params);
|
|
22
104
|
return {
|
|
@@ -27,39 +109,6 @@ function initEdgeStoreClient(config) {
|
|
|
27
109
|
path: res.path
|
|
28
110
|
};
|
|
29
111
|
},
|
|
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
112
|
async confirmUpload (params) {
|
|
64
113
|
return await sdk.confirmUpload(params);
|
|
65
114
|
},
|
package/dist/core/index.mjs
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
import { b as buildPath, p as parsePath } from '../shared-30b7a2ab.mjs';
|
|
1
2
|
import { i as initEdgeStoreSdk } from '../index-30a3741e.mjs';
|
|
2
3
|
export { e as edgeStoreRawSdk, i as initEdgeStoreSdk } from '../index-30a3741e.mjs';
|
|
4
|
+
import '@panva/hkdf';
|
|
5
|
+
import 'cookie';
|
|
6
|
+
import 'jose';
|
|
7
|
+
import 'uuid';
|
|
8
|
+
import '@swc/helpers/_/_define_property';
|
|
3
9
|
|
|
4
10
|
function initEdgeStoreClient(config) {
|
|
5
11
|
const sdk = initEdgeStoreSdk({
|
|
@@ -14,6 +20,82 @@ function initEdgeStoreClient(config) {
|
|
|
14
20
|
throw new Error(`Bucket ${bucketName} not found`);
|
|
15
21
|
}
|
|
16
22
|
const client = {
|
|
23
|
+
async upload (params) {
|
|
24
|
+
const content = params.content;
|
|
25
|
+
const ctx = 'ctx' in params ? params.ctx : {};
|
|
26
|
+
const input = 'input' in params ? params.input : {};
|
|
27
|
+
const { blob, extension } = (()=>{
|
|
28
|
+
if (typeof content === 'string') {
|
|
29
|
+
return {
|
|
30
|
+
blob: new Blob([
|
|
31
|
+
content
|
|
32
|
+
], {
|
|
33
|
+
type: 'text/plain'
|
|
34
|
+
}),
|
|
35
|
+
extension: 'txt'
|
|
36
|
+
};
|
|
37
|
+
} else {
|
|
38
|
+
return {
|
|
39
|
+
blob: content.blob,
|
|
40
|
+
extension: content.extension
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
})();
|
|
44
|
+
const path = buildPath({
|
|
45
|
+
bucket,
|
|
46
|
+
pathAttrs: {
|
|
47
|
+
ctx,
|
|
48
|
+
input
|
|
49
|
+
},
|
|
50
|
+
fileInfo: {
|
|
51
|
+
type: blob.type,
|
|
52
|
+
size: blob.size,
|
|
53
|
+
extension,
|
|
54
|
+
temporary: false,
|
|
55
|
+
fileName: params.options?.manualFileName,
|
|
56
|
+
replaceTargetUrl: params.options?.replaceTargetUrl
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
const metadata = await bucket._def.metadata({
|
|
60
|
+
ctx,
|
|
61
|
+
input
|
|
62
|
+
});
|
|
63
|
+
const requestUploadRes = await sdk.requestUpload({
|
|
64
|
+
bucketName,
|
|
65
|
+
bucketType: bucket._def.type,
|
|
66
|
+
fileInfo: {
|
|
67
|
+
fileName: params.options?.manualFileName,
|
|
68
|
+
replaceTargetUrl: params.options?.replaceTargetUrl,
|
|
69
|
+
type: blob.type,
|
|
70
|
+
size: blob.size,
|
|
71
|
+
extension,
|
|
72
|
+
isPublic: bucket._def.accessControl === undefined,
|
|
73
|
+
temporary: params.options?.temporary ?? false,
|
|
74
|
+
path,
|
|
75
|
+
metadata
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
const { signedUrl, multipart } = requestUploadRes;
|
|
79
|
+
if (multipart) {
|
|
80
|
+
// TODO
|
|
81
|
+
throw new Error('Multipart upload not implemented');
|
|
82
|
+
} else if (signedUrl) {
|
|
83
|
+
await fetch(signedUrl, {
|
|
84
|
+
method: 'PUT',
|
|
85
|
+
body: blob
|
|
86
|
+
});
|
|
87
|
+
} else {
|
|
88
|
+
throw new Error('Missing signedUrl');
|
|
89
|
+
}
|
|
90
|
+
const { parsedPath, pathOrder } = parsePath(path);
|
|
91
|
+
return {
|
|
92
|
+
url: requestUploadRes.accessUrl,
|
|
93
|
+
size: blob.size,
|
|
94
|
+
metadata,
|
|
95
|
+
path: parsedPath,
|
|
96
|
+
pathOrder
|
|
97
|
+
};
|
|
98
|
+
},
|
|
17
99
|
async getFile (params) {
|
|
18
100
|
const res = await sdk.getFile(params);
|
|
19
101
|
return {
|
|
@@ -24,39 +106,6 @@ function initEdgeStoreClient(config) {
|
|
|
24
106
|
path: res.path
|
|
25
107
|
};
|
|
26
108
|
},
|
|
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
109
|
async confirmUpload (params) {
|
|
61
110
|
return await sdk.confirmUpload(params);
|
|
62
111
|
},
|
|
@@ -45,7 +45,7 @@ function AWSProvider(options) {
|
|
|
45
45
|
const pathPrefix = `${esBucketName}${fileInfo.isPublic ? '/_public' : ''}`;
|
|
46
46
|
const nameId = uuid.v4();
|
|
47
47
|
const extension = fileInfo.extension ? `.${fileInfo.extension.replace('.', '')}` : '';
|
|
48
|
-
const fileName = `${nameId}${extension}`;
|
|
48
|
+
const fileName = fileInfo.fileName ?? `${nameId}${extension}`;
|
|
49
49
|
const filePath = fileInfo.path.reduce((acc, item)=>{
|
|
50
50
|
return `${acc}/${item.value}`;
|
|
51
51
|
}, '');
|
|
@@ -41,7 +41,7 @@ function AWSProvider(options) {
|
|
|
41
41
|
const pathPrefix = `${esBucketName}${fileInfo.isPublic ? '/_public' : ''}`;
|
|
42
42
|
const nameId = v4();
|
|
43
43
|
const extension = fileInfo.extension ? `.${fileInfo.extension.replace('.', '')}` : '';
|
|
44
|
-
const fileName = `${nameId}${extension}`;
|
|
44
|
+
const fileName = fileInfo.fileName ?? `${nameId}${extension}`;
|
|
45
45
|
const filePath = fileInfo.path.reduce((acc, item)=>{
|
|
46
46
|
return `${acc}/${item.value}`;
|
|
47
47
|
}, '');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -149,11 +149,7 @@ async function requestUpload(params) {
|
|
|
149
149
|
metadata
|
|
150
150
|
}
|
|
151
151
|
});
|
|
152
|
-
const parsedPath = path
|
|
153
|
-
acc[curr.key] = curr.value;
|
|
154
|
-
return acc;
|
|
155
|
-
}, {});
|
|
156
|
-
const pathOrder = path.map((p)=>p.key);
|
|
152
|
+
const { parsedPath, pathOrder } = parsePath(path);
|
|
157
153
|
return {
|
|
158
154
|
...requestUploadRes,
|
|
159
155
|
size: fileInfo.size,
|
|
@@ -297,6 +293,17 @@ function buildPath(params) {
|
|
|
297
293
|
});
|
|
298
294
|
return path;
|
|
299
295
|
}
|
|
296
|
+
function parsePath(path) {
|
|
297
|
+
const parsedPath = path.reduce((acc, curr)=>{
|
|
298
|
+
acc[curr.key] = curr.value;
|
|
299
|
+
return acc;
|
|
300
|
+
}, {});
|
|
301
|
+
const pathOrder = path.map((p)=>p.key);
|
|
302
|
+
return {
|
|
303
|
+
parsedPath,
|
|
304
|
+
pathOrder
|
|
305
|
+
};
|
|
306
|
+
}
|
|
300
307
|
async function getContext(token) {
|
|
301
308
|
if (!token) {
|
|
302
309
|
throw new Error('No token');
|
|
@@ -320,4 +327,4 @@ async function getContext(token) {
|
|
|
320
327
|
return url;
|
|
321
328
|
}
|
|
322
329
|
|
|
323
|
-
export { EdgeStoreError as E, requestUploadParts as a,
|
|
330
|
+
export { EdgeStoreError as E, requestUploadParts as a, buildPath as b, completeMultipartUpload as c, confirmUpload as d, deleteFile as e, EDGE_STORE_ERROR_CODES as f, init as i, parsePath as p, requestUpload as r };
|
|
@@ -151,11 +151,7 @@ async function requestUpload(params) {
|
|
|
151
151
|
metadata
|
|
152
152
|
}
|
|
153
153
|
});
|
|
154
|
-
const parsedPath = path
|
|
155
|
-
acc[curr.key] = curr.value;
|
|
156
|
-
return acc;
|
|
157
|
-
}, {});
|
|
158
|
-
const pathOrder = path.map((p)=>p.key);
|
|
154
|
+
const { parsedPath, pathOrder } = parsePath(path);
|
|
159
155
|
return {
|
|
160
156
|
...requestUploadRes,
|
|
161
157
|
size: fileInfo.size,
|
|
@@ -299,6 +295,17 @@ function buildPath(params) {
|
|
|
299
295
|
});
|
|
300
296
|
return path;
|
|
301
297
|
}
|
|
298
|
+
function parsePath(path) {
|
|
299
|
+
const parsedPath = path.reduce((acc, curr)=>{
|
|
300
|
+
acc[curr.key] = curr.value;
|
|
301
|
+
return acc;
|
|
302
|
+
}, {});
|
|
303
|
+
const pathOrder = path.map((p)=>p.key);
|
|
304
|
+
return {
|
|
305
|
+
parsedPath,
|
|
306
|
+
pathOrder
|
|
307
|
+
};
|
|
308
|
+
}
|
|
302
309
|
async function getContext(token) {
|
|
303
310
|
if (!token) {
|
|
304
311
|
throw new Error('No token');
|
|
@@ -324,9 +331,11 @@ async function getContext(token) {
|
|
|
324
331
|
|
|
325
332
|
exports.EDGE_STORE_ERROR_CODES = EDGE_STORE_ERROR_CODES;
|
|
326
333
|
exports.EdgeStoreError = EdgeStoreError;
|
|
334
|
+
exports.buildPath = buildPath;
|
|
327
335
|
exports.completeMultipartUpload = completeMultipartUpload;
|
|
328
336
|
exports.confirmUpload = confirmUpload;
|
|
329
337
|
exports.deleteFile = deleteFile;
|
|
330
338
|
exports.init = init;
|
|
339
|
+
exports.parsePath = parsePath;
|
|
331
340
|
exports.requestUpload = requestUpload;
|
|
332
341
|
exports.requestUploadParts = requestUploadParts;
|
|
@@ -141,11 +141,7 @@ async function requestUpload(params) {
|
|
|
141
141
|
metadata,
|
|
142
142
|
},
|
|
143
143
|
});
|
|
144
|
-
const parsedPath = path
|
|
145
|
-
acc[curr.key] = curr.value;
|
|
146
|
-
return acc;
|
|
147
|
-
}, {});
|
|
148
|
-
const pathOrder = path.map((p) => p.key);
|
|
144
|
+
const { parsedPath, pathOrder } = parsePath(path);
|
|
149
145
|
return {
|
|
150
146
|
...requestUploadRes,
|
|
151
147
|
size: fileInfo.size,
|
|
@@ -293,6 +289,17 @@ function buildPath(params) {
|
|
|
293
289
|
});
|
|
294
290
|
return path;
|
|
295
291
|
}
|
|
292
|
+
function parsePath(path) {
|
|
293
|
+
const parsedPath = path.reduce((acc, curr) => {
|
|
294
|
+
acc[curr.key] = curr.value;
|
|
295
|
+
return acc;
|
|
296
|
+
}, {});
|
|
297
|
+
const pathOrder = path.map((p) => p.key);
|
|
298
|
+
return {
|
|
299
|
+
parsedPath,
|
|
300
|
+
pathOrder,
|
|
301
|
+
};
|
|
302
|
+
}
|
|
296
303
|
async function getContext(token) {
|
|
297
304
|
if (!token) {
|
|
298
305
|
throw new Error('No token');
|
|
@@ -317,4 +324,4 @@ function unproxyUrl(url) {
|
|
|
317
324
|
return url;
|
|
318
325
|
}
|
|
319
326
|
|
|
320
|
-
export { EdgeStoreError as E, requestUploadParts as a,
|
|
327
|
+
export { EdgeStoreError as E, requestUploadParts as a, buildPath as b, completeMultipartUpload as c, confirmUpload as d, deleteFile as e, EDGE_STORE_ERROR_CODES as f, init as i, parsePath as p, requestUpload as r };
|
package/dist/types.d.ts
CHANGED
|
@@ -35,6 +35,12 @@ export type ThenArg<TType> = TType extends PromiseLike<infer U> ? ThenArg<U> : T
|
|
|
35
35
|
export type Simplify<TType> = TType extends any[] | Date ? TType : {
|
|
36
36
|
[K in keyof TType]: TType[K];
|
|
37
37
|
};
|
|
38
|
+
/**
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
export type Prettify<TType> = {
|
|
42
|
+
[K in keyof TType]: TType[K];
|
|
43
|
+
} & {};
|
|
38
44
|
/**
|
|
39
45
|
* @public
|
|
40
46
|
*/
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edgestore/server",
|
|
3
|
-
"version": "0.1.5-alpha.
|
|
3
|
+
"version": "0.1.5-alpha.2",
|
|
4
4
|
"description": "Upload files with ease from React/Next.js",
|
|
5
5
|
"homepage": "https://edgestore.dev",
|
|
6
6
|
"repository": "https://github.com/edgestorejs/edgestore.git",
|
|
@@ -117,5 +117,5 @@
|
|
|
117
117
|
"typescript": "^5.1.6",
|
|
118
118
|
"zod": "^3.21.4"
|
|
119
119
|
},
|
|
120
|
-
"gitHead": "
|
|
120
|
+
"gitHead": "d14ccf9e6af38023cfab35d4b64bc75cc69052b4"
|
|
121
121
|
}
|
package/src/adapters/shared.ts
CHANGED
|
@@ -162,12 +162,8 @@ export async function requestUpload<TCtx>(params: {
|
|
|
162
162
|
metadata,
|
|
163
163
|
},
|
|
164
164
|
});
|
|
165
|
-
const parsedPath = path
|
|
166
|
-
acc[curr.key] = curr.value;
|
|
167
|
-
return acc;
|
|
168
|
-
}, {});
|
|
165
|
+
const { parsedPath, pathOrder } = parsePath(path);
|
|
169
166
|
|
|
170
|
-
const pathOrder = path.map((p) => p.key);
|
|
171
167
|
return {
|
|
172
168
|
...requestUploadRes,
|
|
173
169
|
size: fileInfo.size,
|
|
@@ -385,7 +381,7 @@ async function getDerivedEncryptionKey(secret: string) {
|
|
|
385
381
|
);
|
|
386
382
|
}
|
|
387
383
|
|
|
388
|
-
function buildPath(params: {
|
|
384
|
+
export function buildPath(params: {
|
|
389
385
|
fileInfo: RequestUploadBody['fileInfo'];
|
|
390
386
|
bucket: AnyBuilder;
|
|
391
387
|
pathAttrs: {
|
|
@@ -418,6 +414,18 @@ function buildPath(params: {
|
|
|
418
414
|
return path;
|
|
419
415
|
}
|
|
420
416
|
|
|
417
|
+
export function parsePath(path: { key: string; value: string }[]) {
|
|
418
|
+
const parsedPath = path.reduce<Record<string, string>>((acc, curr) => {
|
|
419
|
+
acc[curr.key] = curr.value;
|
|
420
|
+
return acc;
|
|
421
|
+
}, {});
|
|
422
|
+
const pathOrder = path.map((p) => p.key);
|
|
423
|
+
return {
|
|
424
|
+
parsedPath,
|
|
425
|
+
pathOrder,
|
|
426
|
+
};
|
|
427
|
+
}
|
|
428
|
+
|
|
421
429
|
async function getContext(token?: string) {
|
|
422
430
|
if (!token) {
|
|
423
431
|
throw new Error('No token');
|
package/src/core/client/index.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/ban-types */
|
|
2
|
+
import { type z, type ZodNever } from 'zod';
|
|
1
3
|
import { type AnyRouter, type Comparison } from '..';
|
|
2
|
-
import {
|
|
4
|
+
import { buildPath, parsePath } from '../../adapters/shared';
|
|
5
|
+
import { type Prettify, type Simplify } from '../../types';
|
|
3
6
|
import {
|
|
4
7
|
type AnyBuilder,
|
|
5
8
|
type InferBucketPathKeys,
|
|
@@ -16,6 +19,63 @@ export type GetFileRes<TBucket extends AnyBuilder> = {
|
|
|
16
19
|
path: InferBucketPathObject<TBucket>;
|
|
17
20
|
};
|
|
18
21
|
|
|
22
|
+
export type UploadOptions = {
|
|
23
|
+
/**
|
|
24
|
+
* e.g. 'my-file-name.jpg'
|
|
25
|
+
*
|
|
26
|
+
* By default, a unique file name will be generated for each upload.
|
|
27
|
+
* If you want to use a custom file name, you can use this option.
|
|
28
|
+
* If you use the same file name for multiple uploads, the previous file will be overwritten.
|
|
29
|
+
* But it might take some time for the CDN cache to be cleared.
|
|
30
|
+
* So maybe you will keep seeing the old file for a while.
|
|
31
|
+
*
|
|
32
|
+
* If you want to replace an existing file immediately leave the `manualFileName` option empty and use the `replaceTargetUrl` option.
|
|
33
|
+
*/
|
|
34
|
+
manualFileName?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Use this to replace an existing file.
|
|
37
|
+
* It will automatically delete the existing file when the upload is complete.
|
|
38
|
+
*/
|
|
39
|
+
replaceTargetUrl?: string;
|
|
40
|
+
/**
|
|
41
|
+
* If true, the file needs to be confirmed by using the `confirmUpload` function.
|
|
42
|
+
* If the file is not confirmed within 24 hours, it will be deleted.
|
|
43
|
+
*
|
|
44
|
+
* This is useful for pages where the file is uploaded as soon as it is selected,
|
|
45
|
+
* but the user can leave the page without submitting the form.
|
|
46
|
+
*
|
|
47
|
+
* This avoids unnecessary zombie files in the bucket.
|
|
48
|
+
*/
|
|
49
|
+
temporary?: boolean;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export type UploadFileRequest<TBucket extends AnyBuilder> = {
|
|
53
|
+
content:
|
|
54
|
+
| string
|
|
55
|
+
| {
|
|
56
|
+
blob: Blob;
|
|
57
|
+
extension: string;
|
|
58
|
+
};
|
|
59
|
+
options?: UploadOptions;
|
|
60
|
+
} & (TBucket['$config']['ctx'] extends Record<string, never>
|
|
61
|
+
? {}
|
|
62
|
+
: {
|
|
63
|
+
ctx: TBucket['$config']['ctx'];
|
|
64
|
+
}) &
|
|
65
|
+
(TBucket['_def']['input'] extends ZodNever
|
|
66
|
+
? {}
|
|
67
|
+
: {
|
|
68
|
+
input: z.infer<TBucket['_def']['input']>;
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
export type UploadFileRes<TBucket extends AnyBuilder> = {
|
|
72
|
+
url: string;
|
|
73
|
+
size: number;
|
|
74
|
+
metadata: InferMetadataObject<TBucket>;
|
|
75
|
+
path: InferBucketPathObject<TBucket>;
|
|
76
|
+
pathOrder: (keyof InferBucketPathObject<TBucket>)[];
|
|
77
|
+
};
|
|
78
|
+
|
|
19
79
|
type Filter<TBucket extends AnyBuilder> = {
|
|
20
80
|
AND?: Filter<TBucket>[];
|
|
21
81
|
OR?: Filter<TBucket>[];
|
|
@@ -65,18 +125,9 @@ type EdgeStoreClient<TRouter extends AnyRouter> = {
|
|
|
65
125
|
getFile: (params: {
|
|
66
126
|
url: string;
|
|
67
127
|
}) => Promise<GetFileRes<TRouter['buckets'][K]>>;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
// path: {
|
|
72
|
-
// [TKey in InferBucketPathKeys<TRouter['buckets'][K]>]: string;
|
|
73
|
-
// };
|
|
74
|
-
// metadata: InferMetadataObject<TRouter['buckets'][K]>;
|
|
75
|
-
// replaceTargetUrl?: string;
|
|
76
|
-
// }) => Promise<{
|
|
77
|
-
// uploadUrl: string;
|
|
78
|
-
// accessUrl: string;
|
|
79
|
-
// }>;
|
|
128
|
+
upload: (
|
|
129
|
+
params: UploadFileRequest<TRouter['buckets'][K]>,
|
|
130
|
+
) => Promise<Prettify<UploadFileRes<TRouter['buckets'][K]>>>;
|
|
80
131
|
/**
|
|
81
132
|
* Confirm a temporary file upload.
|
|
82
133
|
*/
|
|
@@ -124,6 +175,86 @@ export function initEdgeStoreClient<TRouter extends AnyRouter>(config: {
|
|
|
124
175
|
throw new Error(`Bucket ${bucketName} not found`);
|
|
125
176
|
}
|
|
126
177
|
const client: EdgeStoreClient<TRouter>[string] = {
|
|
178
|
+
async upload(params) {
|
|
179
|
+
const content = params.content;
|
|
180
|
+
const ctx = 'ctx' in params ? params.ctx : {};
|
|
181
|
+
const input = 'input' in params ? params.input : {};
|
|
182
|
+
|
|
183
|
+
const { blob, extension } = (() => {
|
|
184
|
+
if (typeof content === 'string') {
|
|
185
|
+
return {
|
|
186
|
+
blob: new Blob([content], { type: 'text/plain' }),
|
|
187
|
+
extension: 'txt',
|
|
188
|
+
};
|
|
189
|
+
} else {
|
|
190
|
+
return {
|
|
191
|
+
blob: content.blob,
|
|
192
|
+
extension: content.extension,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
})();
|
|
196
|
+
|
|
197
|
+
const path = buildPath({
|
|
198
|
+
bucket,
|
|
199
|
+
pathAttrs: {
|
|
200
|
+
ctx,
|
|
201
|
+
input,
|
|
202
|
+
},
|
|
203
|
+
fileInfo: {
|
|
204
|
+
type: blob.type,
|
|
205
|
+
size: blob.size,
|
|
206
|
+
extension,
|
|
207
|
+
temporary: false,
|
|
208
|
+
fileName: params.options?.manualFileName,
|
|
209
|
+
replaceTargetUrl: params.options?.replaceTargetUrl,
|
|
210
|
+
},
|
|
211
|
+
});
|
|
212
|
+
const metadata = await bucket._def.metadata({
|
|
213
|
+
ctx,
|
|
214
|
+
input,
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
const requestUploadRes = await sdk.requestUpload({
|
|
218
|
+
bucketName,
|
|
219
|
+
bucketType: bucket._def.type,
|
|
220
|
+
fileInfo: {
|
|
221
|
+
fileName: params.options?.manualFileName,
|
|
222
|
+
replaceTargetUrl: params.options?.replaceTargetUrl,
|
|
223
|
+
type: blob.type,
|
|
224
|
+
size: blob.size,
|
|
225
|
+
extension,
|
|
226
|
+
isPublic: bucket._def.accessControl === undefined,
|
|
227
|
+
temporary: params.options?.temporary ?? false,
|
|
228
|
+
path,
|
|
229
|
+
metadata,
|
|
230
|
+
},
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
const { signedUrl, multipart } = requestUploadRes;
|
|
234
|
+
|
|
235
|
+
if (multipart) {
|
|
236
|
+
// TODO
|
|
237
|
+
throw new Error('Multipart upload not implemented');
|
|
238
|
+
} else if (signedUrl) {
|
|
239
|
+
await fetch(signedUrl, {
|
|
240
|
+
method: 'PUT',
|
|
241
|
+
body: blob,
|
|
242
|
+
});
|
|
243
|
+
} else {
|
|
244
|
+
throw new Error('Missing signedUrl');
|
|
245
|
+
}
|
|
246
|
+
const { parsedPath, pathOrder } = parsePath(path);
|
|
247
|
+
return {
|
|
248
|
+
url: requestUploadRes.accessUrl,
|
|
249
|
+
size: blob.size,
|
|
250
|
+
metadata,
|
|
251
|
+
path: parsedPath,
|
|
252
|
+
pathOrder,
|
|
253
|
+
} satisfies UploadFileRes<typeof bucket> as UploadFileRes<
|
|
254
|
+
TRouter['buckets'][string]
|
|
255
|
+
>;
|
|
256
|
+
},
|
|
257
|
+
|
|
127
258
|
async getFile(params) {
|
|
128
259
|
const res = await sdk.getFile(params);
|
|
129
260
|
return {
|
|
@@ -136,41 +267,6 @@ export function initEdgeStoreClient<TRouter extends AnyRouter>(config: {
|
|
|
136
267
|
TRouter['buckets'][string]
|
|
137
268
|
>;
|
|
138
269
|
},
|
|
139
|
-
// TODO: Replace with `upload`
|
|
140
|
-
// async requestUpload(params) {
|
|
141
|
-
// const { file, path, metadata, replaceTargetUrl } = params;
|
|
142
|
-
// const fileExtension = file.name.includes('.')
|
|
143
|
-
// ? file.name.split('.').pop()
|
|
144
|
-
// : undefined;
|
|
145
|
-
// if (!fileExtension) {
|
|
146
|
-
// throw new Error('Missing file extension');
|
|
147
|
-
// }
|
|
148
|
-
// const parsedPath = Object.keys(bucket._def.path).map((key) => {
|
|
149
|
-
// const value = path[key as keyof typeof path];
|
|
150
|
-
// if (value === undefined) {
|
|
151
|
-
// throw new Error(`Missing path param ${key}`);
|
|
152
|
-
// }
|
|
153
|
-
// return {
|
|
154
|
-
// key,
|
|
155
|
-
// value,
|
|
156
|
-
// };
|
|
157
|
-
// });
|
|
158
|
-
|
|
159
|
-
// const fileInfo = {
|
|
160
|
-
// size: file.size,
|
|
161
|
-
// extension: fileExtension,
|
|
162
|
-
// isPublic: bucket._def.accessControl === undefined,
|
|
163
|
-
// path: parsedPath,
|
|
164
|
-
// metadata,
|
|
165
|
-
// replaceTargetUrl,
|
|
166
|
-
// };
|
|
167
|
-
|
|
168
|
-
// return await sdk.requestUpload({
|
|
169
|
-
// bucketName,
|
|
170
|
-
// bucketType: bucket._def.type,
|
|
171
|
-
// fileInfo,
|
|
172
|
-
// });
|
|
173
|
-
// },
|
|
174
270
|
|
|
175
271
|
async confirmUpload(params) {
|
|
176
272
|
return await sdk.confirmUpload(params);
|
|
@@ -107,7 +107,7 @@ export function AWSProvider(options?: AWSProviderOptions): Provider {
|
|
|
107
107
|
const extension = fileInfo.extension
|
|
108
108
|
? `.${fileInfo.extension.replace('.', '')}`
|
|
109
109
|
: '';
|
|
110
|
-
const fileName = `${nameId}${extension}`;
|
|
110
|
+
const fileName = fileInfo.fileName ?? `${nameId}${extension}`;
|
|
111
111
|
const filePath = fileInfo.path.reduce((acc, item) => {
|
|
112
112
|
return `${acc}/${item.value}`;
|
|
113
113
|
}, '');
|
package/src/providers/types.ts
CHANGED
package/src/types.ts
CHANGED
|
@@ -61,6 +61,14 @@ export type Simplify<TType> = TType extends any[] | Date
|
|
|
61
61
|
? TType
|
|
62
62
|
: { [K in keyof TType]: TType[K] };
|
|
63
63
|
|
|
64
|
+
/**
|
|
65
|
+
* @internal
|
|
66
|
+
*/
|
|
67
|
+
export type Prettify<TType> = {
|
|
68
|
+
[K in keyof TType]: TType[K];
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
70
|
+
} & {};
|
|
71
|
+
|
|
64
72
|
/**
|
|
65
73
|
* @public
|
|
66
74
|
*/
|