@edgestore/server 0.1.0 → 0.1.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/README.md +6 -6
- package/adapters/index.d.ts +1 -0
- package/adapters/index.js +1 -0
- package/dist/adapters/index.d.ts +2 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +2 -0
- package/dist/adapters/index.mjs +1 -0
- package/dist/adapters/next/app/index.d.ts +4 -4
- package/dist/adapters/next/app/index.d.ts.map +1 -1
- package/dist/adapters/next/app/index.js +22 -2
- package/dist/adapters/next/app/index.mjs +22 -2
- package/dist/adapters/next/pages/index.d.ts +4 -4
- package/dist/adapters/next/pages/index.d.ts.map +1 -1
- package/dist/adapters/next/pages/index.js +18 -2
- package/dist/adapters/next/pages/index.mjs +18 -2
- package/dist/adapters/shared.d.ts +35 -2
- package/dist/adapters/shared.d.ts.map +1 -1
- package/dist/core/client/index.d.ts +11 -3
- package/dist/core/client/index.d.ts.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +5 -4
- package/dist/core/index.mjs +6 -5
- package/dist/core/internals/bucketBuilder.d.ts +2 -1
- package/dist/core/internals/bucketBuilder.d.ts.map +1 -1
- package/dist/core/sdk/index.d.ts +43 -2
- package/dist/core/sdk/index.d.ts.map +1 -1
- package/dist/{index-579b8015.mjs → index-30a3741e.mjs} +43 -2
- package/dist/{index-62d969e5.js → index-50ab9e08.js} +43 -2
- package/dist/{index-0a168903.js → index-f33a00fb.js} +41 -0
- package/dist/providers/aws/index.d.ts +28 -1
- package/dist/providers/aws/index.d.ts.map +1 -1
- package/dist/providers/aws/index.js +7 -1
- package/dist/providers/aws/index.mjs +7 -1
- package/dist/providers/edgestore/index.d.ts +13 -1
- package/dist/providers/edgestore/index.d.ts.map +1 -1
- package/dist/providers/edgestore/index.js +24 -10
- package/dist/providers/edgestore/index.mjs +24 -10
- package/dist/providers/index.d.ts +1 -2
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +2 -0
- package/dist/providers/index.mjs +1 -0
- package/dist/providers/types.d.ts +26 -2
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/{shared-2a9c8307.mjs → shared-7fc08e14.mjs} +40 -2
- package/dist/{shared-ae739a04.js → shared-a5b84d0b.js} +41 -1
- package/dist/{shared-fac1b0a0.js → shared-a86ccc68.js} +39 -1
- package/package.json +13 -3
- package/providers/index.d.ts +1 -0
- package/providers/index.js +1 -0
- package/src/adapters/index.ts +6 -0
- package/src/adapters/next/app/index.ts +33 -7
- package/src/adapters/next/pages/index.ts +27 -7
- package/src/adapters/shared.ts +90 -2
- package/src/core/client/index.ts +15 -9
- package/src/core/index.ts +1 -1
- package/src/core/internals/bucketBuilder.ts +6 -1
- package/src/core/sdk/index.ts +83 -2
- package/src/providers/aws/index.ts +39 -5
- package/src/providers/edgestore/index.ts +34 -9
- package/src/providers/index.ts +1 -2
- package/src/providers/types.ts +34 -4
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
import { initEdgeStoreSdk } from '../../core/sdk';
|
|
2
2
|
import EdgeStoreCredentialsError from '../../libs/errors/EdgeStoreCredentialsError';
|
|
3
|
-
import { Provider, RequestUploadRes } from '../types';
|
|
3
|
+
import { type Provider, type RequestUploadRes } from '../types';
|
|
4
4
|
|
|
5
5
|
const DEFAULT_BASE_URL = 'https://files.edgestore.dev';
|
|
6
6
|
|
|
7
7
|
export type EdgeStoreProviderOptions = {
|
|
8
|
+
/**
|
|
9
|
+
* Access key for your EdgeStore project.
|
|
10
|
+
* Can be found in the EdgeStore dashboard.
|
|
11
|
+
*
|
|
12
|
+
* This can be omitted if the `EDGE_STORE_ACCESS_KEY` environment variable is set.
|
|
13
|
+
*/
|
|
8
14
|
accessKey?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Secret key for your EdgeStore project.
|
|
17
|
+
* Can be found in the EdgeStore dashboard.
|
|
18
|
+
*
|
|
19
|
+
* This can be omitted if the `EDGE_STORE_SECRET_KEY` environment variable is set.
|
|
20
|
+
*/
|
|
9
21
|
secretKey?: string;
|
|
10
22
|
};
|
|
11
23
|
|
|
@@ -54,31 +66,29 @@ export function EdgeStoreProvider(
|
|
|
54
66
|
bucketType,
|
|
55
67
|
fileInfo,
|
|
56
68
|
}): Promise<RequestUploadRes> {
|
|
57
|
-
//
|
|
69
|
+
// multipart upload if file is bigger than a certain size
|
|
58
70
|
const MULTIPART_THRESHOLD = 10 * 1024 * 1024; // 10MB
|
|
59
|
-
const CONCURRENCY = 3;
|
|
60
71
|
let partSize = 5 * 1024 * 1024; // 5MB
|
|
61
72
|
if (fileInfo.size > MULTIPART_THRESHOLD) {
|
|
62
73
|
let totalParts = Math.ceil(fileInfo.size / partSize);
|
|
63
|
-
if (totalParts >
|
|
64
|
-
// the maximum number of parts is
|
|
65
|
-
totalParts =
|
|
74
|
+
if (totalParts > 1000) {
|
|
75
|
+
// the maximum number of parts is 1000
|
|
76
|
+
totalParts = 1000;
|
|
66
77
|
partSize = Math.ceil(fileInfo.size / totalParts);
|
|
67
78
|
}
|
|
68
|
-
const requestParts =
|
|
69
|
-
totalParts > CONCURRENCY ? CONCURRENCY : totalParts;
|
|
70
79
|
const res = await edgeStoreSdk.requestUpload({
|
|
71
80
|
bucketName,
|
|
72
81
|
bucketType,
|
|
73
82
|
fileInfo,
|
|
74
83
|
multipart: {
|
|
75
|
-
parts: Array.from({ length:
|
|
84
|
+
parts: Array.from({ length: totalParts }).map(
|
|
76
85
|
(_, index) => index + 1,
|
|
77
86
|
),
|
|
78
87
|
},
|
|
79
88
|
});
|
|
80
89
|
const multipart = res.multipart
|
|
81
90
|
? {
|
|
91
|
+
key: res.multipart.key,
|
|
82
92
|
uploadId: res.multipart.uploadId,
|
|
83
93
|
parts: res.multipart.parts.map((part) => ({
|
|
84
94
|
partNumber: part.partNumber,
|
|
@@ -91,12 +101,14 @@ export function EdgeStoreProvider(
|
|
|
91
101
|
if (multipart) {
|
|
92
102
|
return {
|
|
93
103
|
accessUrl: res.accessUrl,
|
|
104
|
+
thumbnailUrl: res.thumbnailUrl,
|
|
94
105
|
multipart,
|
|
95
106
|
};
|
|
96
107
|
} else if (res.signedUrl) {
|
|
97
108
|
return {
|
|
98
109
|
accessUrl: res.accessUrl,
|
|
99
110
|
uploadUrl: res.signedUrl,
|
|
111
|
+
thumbnailUrl: res.thumbnailUrl,
|
|
100
112
|
};
|
|
101
113
|
} else {
|
|
102
114
|
throw new Error('Could not get upload url');
|
|
@@ -111,6 +123,7 @@ export function EdgeStoreProvider(
|
|
|
111
123
|
return {
|
|
112
124
|
accessUrl: res.accessUrl,
|
|
113
125
|
uploadUrl: res.signedUrl,
|
|
126
|
+
thumbnailUrl: res.thumbnailUrl,
|
|
114
127
|
};
|
|
115
128
|
}
|
|
116
129
|
throw new Error('Could not get upload url');
|
|
@@ -130,6 +143,18 @@ export function EdgeStoreProvider(
|
|
|
130
143
|
},
|
|
131
144
|
};
|
|
132
145
|
},
|
|
146
|
+
completeMultipartUpload: async ({ uploadId, key, parts }) => {
|
|
147
|
+
return await edgeStoreSdk.completeMultipartUpload({
|
|
148
|
+
uploadId,
|
|
149
|
+
key,
|
|
150
|
+
parts,
|
|
151
|
+
});
|
|
152
|
+
},
|
|
153
|
+
confirmUpload: async ({ url }) => {
|
|
154
|
+
return await edgeStoreSdk.confirmUpload({
|
|
155
|
+
url,
|
|
156
|
+
});
|
|
157
|
+
},
|
|
133
158
|
deleteFile: async ({ url }) => {
|
|
134
159
|
return await edgeStoreSdk.deleteFile({
|
|
135
160
|
url,
|
package/src/providers/index.ts
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './edgestore';
|
|
1
|
+
export * from './types';
|
package/src/providers/types.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
-
AnyBuilder,
|
|
3
|
-
AnyMetadata,
|
|
4
|
-
EdgeStoreRouter,
|
|
2
|
+
type AnyBuilder,
|
|
3
|
+
type AnyMetadata,
|
|
4
|
+
type EdgeStoreRouter,
|
|
5
5
|
} from '../core/internals/bucketBuilder';
|
|
6
|
-
import { MaybePromise } from '../types';
|
|
6
|
+
import { type MaybePromise } from '../types';
|
|
7
7
|
|
|
8
8
|
export type InitParams = {
|
|
9
9
|
ctx: any;
|
|
@@ -47,6 +47,7 @@ export type RequestUploadParams = {
|
|
|
47
47
|
}[];
|
|
48
48
|
metadata: AnyMetadata;
|
|
49
49
|
replaceTargetUrl?: string;
|
|
50
|
+
temporary: boolean;
|
|
50
51
|
};
|
|
51
52
|
};
|
|
52
53
|
|
|
@@ -68,13 +69,28 @@ export type RequestUploadPartsRes = {
|
|
|
68
69
|
};
|
|
69
70
|
};
|
|
70
71
|
|
|
72
|
+
export type CompleteMultipartUploadParams = {
|
|
73
|
+
uploadId: string;
|
|
74
|
+
key: string;
|
|
75
|
+
parts: {
|
|
76
|
+
partNumber: number;
|
|
77
|
+
eTag: string;
|
|
78
|
+
}[];
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export type CompleteMultipartUploadRes = {
|
|
82
|
+
success: boolean;
|
|
83
|
+
};
|
|
84
|
+
|
|
71
85
|
export type RequestUploadRes =
|
|
72
86
|
| {
|
|
73
87
|
uploadUrl: string;
|
|
74
88
|
accessUrl: string;
|
|
89
|
+
thumbnailUrl?: string | null;
|
|
75
90
|
}
|
|
76
91
|
| {
|
|
77
92
|
multipart: {
|
|
93
|
+
key: string;
|
|
78
94
|
uploadId: string;
|
|
79
95
|
partSize: number;
|
|
80
96
|
totalParts: number;
|
|
@@ -84,8 +100,18 @@ export type RequestUploadRes =
|
|
|
84
100
|
}[];
|
|
85
101
|
};
|
|
86
102
|
accessUrl: string;
|
|
103
|
+
thumbnailUrl?: string | null;
|
|
87
104
|
};
|
|
88
105
|
|
|
106
|
+
export type ConfirmUpload = {
|
|
107
|
+
bucket: AnyBuilder;
|
|
108
|
+
url: string;
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
export type ConfirmUploadRes = {
|
|
112
|
+
success: boolean;
|
|
113
|
+
};
|
|
114
|
+
|
|
89
115
|
export type DeleteFileParams = {
|
|
90
116
|
bucket: AnyBuilder;
|
|
91
117
|
url: string;
|
|
@@ -105,5 +131,9 @@ export type Provider = {
|
|
|
105
131
|
requestUploadParts: (
|
|
106
132
|
params: RequestUploadPartsParams,
|
|
107
133
|
) => MaybePromise<RequestUploadPartsRes>;
|
|
134
|
+
completeMultipartUpload: (
|
|
135
|
+
params: CompleteMultipartUploadParams,
|
|
136
|
+
) => MaybePromise<CompleteMultipartUploadRes>;
|
|
137
|
+
confirmUpload: (params: ConfirmUpload) => MaybePromise<ConfirmUploadRes>;
|
|
108
138
|
deleteFile: (params: DeleteFileParams) => MaybePromise<DeleteFileRes>;
|
|
109
139
|
};
|