@edgestore/server 0.1.1 → 0.1.3-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +1 -1
  2. package/adapters/index.d.ts +1 -0
  3. package/adapters/index.js +1 -0
  4. package/dist/adapters/index.d.ts +2 -0
  5. package/dist/adapters/index.d.ts.map +1 -0
  6. package/dist/adapters/index.js +2 -0
  7. package/dist/adapters/index.mjs +1 -0
  8. package/dist/adapters/next/app/index.d.ts.map +1 -1
  9. package/dist/adapters/next/app/index.js +28 -5
  10. package/dist/adapters/next/app/index.mjs +28 -5
  11. package/dist/adapters/next/pages/index.d.ts.map +1 -1
  12. package/dist/adapters/next/pages/index.js +18 -2
  13. package/dist/adapters/next/pages/index.mjs +18 -2
  14. package/dist/adapters/shared.d.ts +33 -0
  15. package/dist/adapters/shared.d.ts.map +1 -1
  16. package/dist/core/client/index.d.ts +8 -0
  17. package/dist/core/client/index.d.ts.map +1 -1
  18. package/dist/core/index.js +5 -4
  19. package/dist/core/index.mjs +6 -5
  20. package/dist/core/internals/bucketBuilder.d.ts +1 -0
  21. package/dist/core/internals/bucketBuilder.d.ts.map +1 -1
  22. package/dist/core/sdk/index.d.ts +41 -0
  23. package/dist/core/sdk/index.d.ts.map +1 -1
  24. package/dist/{index-579b8015.mjs → index-30a3741e.mjs} +43 -2
  25. package/dist/{index-62d969e5.js → index-50ab9e08.js} +43 -2
  26. package/dist/{index-0a168903.js → index-f33a00fb.js} +41 -0
  27. package/dist/providers/aws/index.d.ts.map +1 -1
  28. package/dist/providers/aws/index.js +6 -0
  29. package/dist/providers/aws/index.mjs +6 -0
  30. package/dist/providers/edgestore/index.d.ts.map +1 -1
  31. package/dist/providers/edgestore/index.js +24 -10
  32. package/dist/providers/edgestore/index.mjs +24 -10
  33. package/dist/providers/index.d.ts +1 -2
  34. package/dist/providers/index.d.ts.map +1 -1
  35. package/dist/providers/index.js +2 -0
  36. package/dist/providers/index.mjs +1 -0
  37. package/dist/providers/types.d.ts +24 -0
  38. package/dist/providers/types.d.ts.map +1 -1
  39. package/dist/{shared-2a9c8307.mjs → shared-7fc08e14.mjs} +40 -2
  40. package/dist/{shared-ae739a04.js → shared-a5b84d0b.js} +41 -1
  41. package/dist/{shared-fac1b0a0.js → shared-a86ccc68.js} +39 -1
  42. package/package.json +13 -3
  43. package/providers/index.d.ts +1 -0
  44. package/providers/index.js +1 -0
  45. package/src/adapters/index.ts +6 -0
  46. package/src/adapters/next/app/index.ts +31 -2
  47. package/src/adapters/next/pages/index.ts +20 -0
  48. package/src/adapters/shared.ts +85 -0
  49. package/src/core/client/index.ts +9 -3
  50. package/src/core/internals/bucketBuilder.ts +1 -0
  51. package/src/core/sdk/index.ts +81 -0
  52. package/src/providers/aws/index.ts +6 -0
  53. package/src/providers/edgestore/index.ts +21 -8
  54. package/src/providers/index.ts +1 -2
  55. package/src/providers/types.ts +30 -0
@@ -82,13 +82,16 @@ const edgeStoreRawSdk = {
82
82
  mimeType: fileInfo.type,
83
83
  metadata: fileInfo.metadata,
84
84
  fileName: fileInfo.fileName,
85
- replaceTargetUrl: fileInfo.replaceTargetUrl
85
+ replaceTargetUrl: fileInfo.replaceTargetUrl,
86
+ isTemporary: fileInfo.temporary
86
87
  }
87
88
  });
88
89
  return {
89
90
  multipart: res.multipart,
90
91
  signedUrl: res.signedUrl,
91
- accessUrl: res.url
92
+ accessUrl: res.url,
93
+ path: res.path,
94
+ thumbnailUrl: res.thumbnailUrl
92
95
  };
93
96
  },
94
97
  async requestUploadParts ({ accessKey, secretKey, key, multipart }) {
@@ -105,6 +108,28 @@ const edgeStoreRawSdk = {
105
108
  multipart: res.multipart
106
109
  };
107
110
  },
111
+ async completeMultipartUpload ({ accessKey, secretKey, uploadId, key, parts }) {
112
+ return await makeRequest({
113
+ path: '/complete-multipart-upload',
114
+ accessKey,
115
+ secretKey,
116
+ body: {
117
+ uploadId,
118
+ key,
119
+ parts
120
+ }
121
+ });
122
+ },
123
+ async confirmUpload ({ accessKey, secretKey, url }) {
124
+ return await makeRequest({
125
+ path: '/confirm-upload',
126
+ accessKey,
127
+ secretKey,
128
+ body: {
129
+ url
130
+ }
131
+ });
132
+ },
108
133
  async deleteFile ({ accessKey, secretKey, url }) {
109
134
  return await makeRequest({
110
135
  path: '/delete-file',
@@ -167,6 +192,22 @@ function initEdgeStoreSdk(params) {
167
192
  multipart
168
193
  });
169
194
  },
195
+ async completeMultipartUpload ({ uploadId, key, parts }) {
196
+ return await edgeStoreRawSdk.completeMultipartUpload({
197
+ accessKey,
198
+ secretKey,
199
+ uploadId,
200
+ key,
201
+ parts
202
+ });
203
+ },
204
+ async confirmUpload ({ url }) {
205
+ return await edgeStoreRawSdk.confirmUpload({
206
+ accessKey,
207
+ secretKey,
208
+ url
209
+ });
210
+ },
170
211
  async deleteFile ({ url }) {
171
212
  return await edgeStoreRawSdk.deleteFile({
172
213
  accessKey,
@@ -81,12 +81,15 @@ const edgeStoreRawSdk = {
81
81
  metadata: fileInfo.metadata,
82
82
  fileName: fileInfo.fileName,
83
83
  replaceTargetUrl: fileInfo.replaceTargetUrl,
84
+ isTemporary: fileInfo.temporary,
84
85
  },
85
86
  });
86
87
  return {
87
88
  multipart: res.multipart,
88
89
  signedUrl: res.signedUrl,
89
90
  accessUrl: res.url,
91
+ path: res.path,
92
+ thumbnailUrl: res.thumbnailUrl,
90
93
  };
91
94
  },
92
95
  async requestUploadParts({ accessKey, secretKey, key, multipart, }) {
@@ -103,6 +106,28 @@ const edgeStoreRawSdk = {
103
106
  multipart: res.multipart,
104
107
  };
105
108
  },
109
+ async completeMultipartUpload({ accessKey, secretKey, uploadId, key, parts, }) {
110
+ return await makeRequest({
111
+ path: '/complete-multipart-upload',
112
+ accessKey,
113
+ secretKey,
114
+ body: {
115
+ uploadId,
116
+ key,
117
+ parts,
118
+ },
119
+ });
120
+ },
121
+ async confirmUpload({ accessKey, secretKey, url, }) {
122
+ return await makeRequest({
123
+ path: '/confirm-upload',
124
+ accessKey,
125
+ secretKey,
126
+ body: {
127
+ url,
128
+ },
129
+ });
130
+ },
106
131
  async deleteFile({ accessKey, secretKey, url, }) {
107
132
  return await makeRequest({
108
133
  path: '/delete-file',
@@ -165,6 +190,22 @@ function initEdgeStoreSdk(params) {
165
190
  multipart,
166
191
  });
167
192
  },
193
+ async completeMultipartUpload({ uploadId, key, parts, }) {
194
+ return await edgeStoreRawSdk.completeMultipartUpload({
195
+ accessKey,
196
+ secretKey,
197
+ uploadId,
198
+ key,
199
+ parts,
200
+ });
201
+ },
202
+ async confirmUpload({ url }) {
203
+ return await edgeStoreRawSdk.confirmUpload({
204
+ accessKey,
205
+ secretKey,
206
+ url,
207
+ });
208
+ },
168
209
  async deleteFile({ url }) {
169
210
  return await edgeStoreRawSdk.deleteFile({
170
211
  accessKey,
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/aws/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,QAAQ,CA4FlE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/aws/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,QAAQ,CAkGlE"}
@@ -65,6 +65,12 @@ function AWSProvider(options) {
65
65
  async requestUploadParts () {
66
66
  throw new Error('Not implemented');
67
67
  },
68
+ async completeMultipartUpload () {
69
+ throw new Error('Not implemented');
70
+ },
71
+ async confirmUpload () {
72
+ throw new Error('Not implemented');
73
+ },
68
74
  async deleteFile ({ url }) {
69
75
  const path = url.replace(`${baseUrl}/`, '');
70
76
  await s3Client.send(new clientS3.DeleteObjectCommand({
@@ -61,6 +61,12 @@ function AWSProvider(options) {
61
61
  async requestUploadParts () {
62
62
  throw new Error('Not implemented');
63
63
  },
64
+ async completeMultipartUpload () {
65
+ throw new Error('Not implemented');
66
+ },
67
+ async confirmUpload () {
68
+ throw new Error('Not implemented');
69
+ },
64
70
  async deleteFile ({ url }) {
65
71
  const path = url.replace(`${baseUrl}/`, '');
66
72
  await s3Client.send(new DeleteObjectCommand({
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/edgestore/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,QAAQ,EAAyB,MAAM,UAAU,CAAC;AAIhE,MAAM,MAAM,wBAAwB,GAAG;IACrC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,OAAO,CAAC,EAAE,wBAAwB,GACjC,QAAQ,CA6HV"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/edgestore/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,QAAQ,EAAyB,MAAM,UAAU,CAAC;AAIhE,MAAM,MAAM,wBAAwB,GAAG;IACrC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,OAAO,CAAC,EAAE,wBAAwB,GACjC,QAAQ,CA0IV"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var index = require('../../index-62d969e5.js');
5
+ var index = require('../../index-50ab9e08.js');
6
6
 
7
7
  const DEFAULT_BASE_URL = 'https://files.edgestore.dev';
8
8
  function EdgeStoreProvider(options) {
@@ -38,29 +38,28 @@ function EdgeStoreProvider(options) {
38
38
  };
39
39
  },
40
40
  async requestUpload ({ bucketName, bucketType, fileInfo }) {
41
- // multiplart upload if file is bigger than a certain size
41
+ // multipart upload if file is bigger than a certain size
42
42
  const MULTIPART_THRESHOLD = 10 * 1024 * 1024; // 10MB
43
- const CONCURRENCY = 3;
44
43
  let partSize = 5 * 1024 * 1024; // 5MB
45
44
  if (fileInfo.size > MULTIPART_THRESHOLD) {
46
45
  let totalParts = Math.ceil(fileInfo.size / partSize);
47
- if (totalParts > 10000) {
48
- // the maximum number of parts is 10000
49
- totalParts = 10000;
46
+ if (totalParts > 1000) {
47
+ // the maximum number of parts is 1000
48
+ totalParts = 1000;
50
49
  partSize = Math.ceil(fileInfo.size / totalParts);
51
50
  }
52
- const requestParts = totalParts > CONCURRENCY ? CONCURRENCY : totalParts;
53
51
  const res = await edgeStoreSdk.requestUpload({
54
52
  bucketName,
55
53
  bucketType,
56
54
  fileInfo,
57
55
  multipart: {
58
56
  parts: Array.from({
59
- length: requestParts
57
+ length: totalParts
60
58
  }).map((_, index)=>index + 1)
61
59
  }
62
60
  });
63
61
  const multipart = res.multipart ? {
62
+ key: res.multipart.key,
64
63
  uploadId: res.multipart.uploadId,
65
64
  parts: res.multipart.parts.map((part)=>({
66
65
  partNumber: part.partNumber,
@@ -72,12 +71,14 @@ function EdgeStoreProvider(options) {
72
71
  if (multipart) {
73
72
  return {
74
73
  accessUrl: res.accessUrl,
74
+ thumbnailUrl: res.thumbnailUrl,
75
75
  multipart
76
76
  };
77
77
  } else if (res.signedUrl) {
78
78
  return {
79
79
  accessUrl: res.accessUrl,
80
- uploadUrl: res.signedUrl
80
+ uploadUrl: res.signedUrl,
81
+ thumbnailUrl: res.thumbnailUrl
81
82
  };
82
83
  } else {
83
84
  throw new Error('Could not get upload url');
@@ -91,7 +92,8 @@ function EdgeStoreProvider(options) {
91
92
  if (res.signedUrl) {
92
93
  return {
93
94
  accessUrl: res.accessUrl,
94
- uploadUrl: res.signedUrl
95
+ uploadUrl: res.signedUrl,
96
+ thumbnailUrl: res.thumbnailUrl
95
97
  };
96
98
  }
97
99
  throw new Error('Could not get upload url');
@@ -111,6 +113,18 @@ function EdgeStoreProvider(options) {
111
113
  }
112
114
  };
113
115
  },
116
+ completeMultipartUpload: async ({ uploadId, key, parts })=>{
117
+ return await edgeStoreSdk.completeMultipartUpload({
118
+ uploadId,
119
+ key,
120
+ parts
121
+ });
122
+ },
123
+ confirmUpload: async ({ url })=>{
124
+ return await edgeStoreSdk.confirmUpload({
125
+ url
126
+ });
127
+ },
114
128
  deleteFile: async ({ url })=>{
115
129
  return await edgeStoreSdk.deleteFile({
116
130
  url
@@ -1,4 +1,4 @@
1
- import { E as EdgeStoreCredentialsError, i as initEdgeStoreSdk } from '../../index-579b8015.mjs';
1
+ import { E as EdgeStoreCredentialsError, i as initEdgeStoreSdk } from '../../index-30a3741e.mjs';
2
2
 
3
3
  const DEFAULT_BASE_URL = 'https://files.edgestore.dev';
4
4
  function EdgeStoreProvider(options) {
@@ -34,29 +34,28 @@ function EdgeStoreProvider(options) {
34
34
  };
35
35
  },
36
36
  async requestUpload ({ bucketName, bucketType, fileInfo }) {
37
- // multiplart upload if file is bigger than a certain size
37
+ // multipart upload if file is bigger than a certain size
38
38
  const MULTIPART_THRESHOLD = 10 * 1024 * 1024; // 10MB
39
- const CONCURRENCY = 3;
40
39
  let partSize = 5 * 1024 * 1024; // 5MB
41
40
  if (fileInfo.size > MULTIPART_THRESHOLD) {
42
41
  let totalParts = Math.ceil(fileInfo.size / partSize);
43
- if (totalParts > 10000) {
44
- // the maximum number of parts is 10000
45
- totalParts = 10000;
42
+ if (totalParts > 1000) {
43
+ // the maximum number of parts is 1000
44
+ totalParts = 1000;
46
45
  partSize = Math.ceil(fileInfo.size / totalParts);
47
46
  }
48
- const requestParts = totalParts > CONCURRENCY ? CONCURRENCY : totalParts;
49
47
  const res = await edgeStoreSdk.requestUpload({
50
48
  bucketName,
51
49
  bucketType,
52
50
  fileInfo,
53
51
  multipart: {
54
52
  parts: Array.from({
55
- length: requestParts
53
+ length: totalParts
56
54
  }).map((_, index)=>index + 1)
57
55
  }
58
56
  });
59
57
  const multipart = res.multipart ? {
58
+ key: res.multipart.key,
60
59
  uploadId: res.multipart.uploadId,
61
60
  parts: res.multipart.parts.map((part)=>({
62
61
  partNumber: part.partNumber,
@@ -68,12 +67,14 @@ function EdgeStoreProvider(options) {
68
67
  if (multipart) {
69
68
  return {
70
69
  accessUrl: res.accessUrl,
70
+ thumbnailUrl: res.thumbnailUrl,
71
71
  multipart
72
72
  };
73
73
  } else if (res.signedUrl) {
74
74
  return {
75
75
  accessUrl: res.accessUrl,
76
- uploadUrl: res.signedUrl
76
+ uploadUrl: res.signedUrl,
77
+ thumbnailUrl: res.thumbnailUrl
77
78
  };
78
79
  } else {
79
80
  throw new Error('Could not get upload url');
@@ -87,7 +88,8 @@ function EdgeStoreProvider(options) {
87
88
  if (res.signedUrl) {
88
89
  return {
89
90
  accessUrl: res.accessUrl,
90
- uploadUrl: res.signedUrl
91
+ uploadUrl: res.signedUrl,
92
+ thumbnailUrl: res.thumbnailUrl
91
93
  };
92
94
  }
93
95
  throw new Error('Could not get upload url');
@@ -107,6 +109,18 @@ function EdgeStoreProvider(options) {
107
109
  }
108
110
  };
109
111
  },
112
+ completeMultipartUpload: async ({ uploadId, key, parts })=>{
113
+ return await edgeStoreSdk.completeMultipartUpload({
114
+ uploadId,
115
+ key,
116
+ parts
117
+ });
118
+ },
119
+ confirmUpload: async ({ url })=>{
120
+ return await edgeStoreSdk.confirmUpload({
121
+ url
122
+ });
123
+ },
110
124
  deleteFile: async ({ url })=>{
111
125
  return await edgeStoreSdk.deleteFile({
112
126
  url
@@ -1,3 +1,2 @@
1
- export * from './aws';
2
- export * from './edgestore';
1
+ export * from './types';
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ 'use strict';
2
+
@@ -0,0 +1 @@
1
+
@@ -38,6 +38,7 @@ export type RequestUploadParams = {
38
38
  }[];
39
39
  metadata: AnyMetadata;
40
40
  replaceTargetUrl?: string;
41
+ temporary: boolean;
41
42
  };
42
43
  };
43
44
  export type RequestUploadPartsParams = {
@@ -56,11 +57,24 @@ export type RequestUploadPartsRes = {
56
57
  }[];
57
58
  };
58
59
  };
60
+ export type CompleteMultipartUploadParams = {
61
+ uploadId: string;
62
+ key: string;
63
+ parts: {
64
+ partNumber: number;
65
+ eTag: string;
66
+ }[];
67
+ };
68
+ export type CompleteMultipartUploadRes = {
69
+ success: boolean;
70
+ };
59
71
  export type RequestUploadRes = {
60
72
  uploadUrl: string;
61
73
  accessUrl: string;
74
+ thumbnailUrl?: string | null;
62
75
  } | {
63
76
  multipart: {
77
+ key: string;
64
78
  uploadId: string;
65
79
  partSize: number;
66
80
  totalParts: number;
@@ -70,6 +84,14 @@ export type RequestUploadRes = {
70
84
  }[];
71
85
  };
72
86
  accessUrl: string;
87
+ thumbnailUrl?: string | null;
88
+ };
89
+ export type ConfirmUpload = {
90
+ bucket: AnyBuilder;
91
+ url: string;
92
+ };
93
+ export type ConfirmUploadRes = {
94
+ success: boolean;
73
95
  };
74
96
  export type DeleteFileParams = {
75
97
  bucket: AnyBuilder;
@@ -84,6 +106,8 @@ export type Provider = {
84
106
  getFile: (params: GetFileParams) => MaybePromise<GetFileRes>;
85
107
  requestUpload: (params: RequestUploadParams) => MaybePromise<RequestUploadRes>;
86
108
  requestUploadParts: (params: RequestUploadPartsParams) => MaybePromise<RequestUploadPartsRes>;
109
+ completeMultipartUpload: (params: CompleteMultipartUploadParams) => MaybePromise<CompleteMultipartUploadRes>;
110
+ confirmUpload: (params: ConfirmUpload) => MaybePromise<ConfirmUploadRes>;
87
111
  deleteFile: (params: DeleteFileParams) => MaybePromise<DeleteFileRes>;
88
112
  };
89
113
  //# sourceMappingURL=types.d.ts.map
@@ -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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"}
@@ -80,7 +80,8 @@ async function requestUpload(params) {
80
80
  type: fileInfo.type,
81
81
  fileName: fileInfo.fileName,
82
82
  extension: fileInfo.extension,
83
- replaceTargetUrl: fileInfo.replaceTargetUrl
83
+ replaceTargetUrl: fileInfo.replaceTargetUrl,
84
+ temporary: fileInfo.temporary
84
85
  }
85
86
  });
86
87
  if (!canUpload) {
@@ -174,6 +175,43 @@ async function requestUploadParts(params) {
174
175
  path
175
176
  });
176
177
  }
178
+ async function completeMultipartUpload(params) {
179
+ const { provider, router, ctxToken, body: { bucketName, uploadId, key, parts } } = params;
180
+ if (!ctxToken) {
181
+ throw new EdgeStoreError({
182
+ message: 'Missing edgestore-ctx cookie',
183
+ code: 'UNAUTHORIZED'
184
+ });
185
+ }
186
+ await getContext(ctxToken); // just to check if the token is valid
187
+ const bucket = router.buckets[bucketName];
188
+ if (!bucket) {
189
+ throw new Error(`Bucket ${bucketName} not found`);
190
+ }
191
+ return await provider.completeMultipartUpload({
192
+ uploadId,
193
+ key,
194
+ parts
195
+ });
196
+ }
197
+ async function confirmUpload(params) {
198
+ const { provider, router, ctxToken, body: { bucketName, url } } = params;
199
+ if (!ctxToken) {
200
+ throw new EdgeStoreError({
201
+ message: 'Missing edgestore-ctx cookie',
202
+ code: 'UNAUTHORIZED'
203
+ });
204
+ }
205
+ await getContext(ctxToken); // just to check if the token is valid
206
+ const bucket = router.buckets[bucketName];
207
+ if (!bucket) {
208
+ throw new Error(`Bucket ${bucketName} not found`);
209
+ }
210
+ await provider.confirmUpload({
211
+ bucket,
212
+ url
213
+ });
214
+ }
177
215
  async function deleteFile(params) {
178
216
  const { provider, router, ctxToken, body: { bucketName, url } } = params;
179
217
  if (!ctxToken) {
@@ -260,4 +298,4 @@ async function getContext(token) {
260
298
  return await decryptJWT(token);
261
299
  }
262
300
 
263
- export { EdgeStoreError as E, requestUploadParts as a, EDGE_STORE_ERROR_CODES as b, deleteFile as d, init as i, requestUpload as r };
301
+ export { EdgeStoreError as E, requestUploadParts as a, confirmUpload as b, completeMultipartUpload as c, deleteFile as d, EDGE_STORE_ERROR_CODES as e, init as i, requestUpload as r };
@@ -82,7 +82,8 @@ async function requestUpload(params) {
82
82
  type: fileInfo.type,
83
83
  fileName: fileInfo.fileName,
84
84
  extension: fileInfo.extension,
85
- replaceTargetUrl: fileInfo.replaceTargetUrl
85
+ replaceTargetUrl: fileInfo.replaceTargetUrl,
86
+ temporary: fileInfo.temporary
86
87
  }
87
88
  });
88
89
  if (!canUpload) {
@@ -176,6 +177,43 @@ async function requestUploadParts(params) {
176
177
  path
177
178
  });
178
179
  }
180
+ async function completeMultipartUpload(params) {
181
+ const { provider, router, ctxToken, body: { bucketName, uploadId, key, parts } } = params;
182
+ if (!ctxToken) {
183
+ throw new EdgeStoreError({
184
+ message: 'Missing edgestore-ctx cookie',
185
+ code: 'UNAUTHORIZED'
186
+ });
187
+ }
188
+ await getContext(ctxToken); // just to check if the token is valid
189
+ const bucket = router.buckets[bucketName];
190
+ if (!bucket) {
191
+ throw new Error(`Bucket ${bucketName} not found`);
192
+ }
193
+ return await provider.completeMultipartUpload({
194
+ uploadId,
195
+ key,
196
+ parts
197
+ });
198
+ }
199
+ async function confirmUpload(params) {
200
+ const { provider, router, ctxToken, body: { bucketName, url } } = params;
201
+ if (!ctxToken) {
202
+ throw new EdgeStoreError({
203
+ message: 'Missing edgestore-ctx cookie',
204
+ code: 'UNAUTHORIZED'
205
+ });
206
+ }
207
+ await getContext(ctxToken); // just to check if the token is valid
208
+ const bucket = router.buckets[bucketName];
209
+ if (!bucket) {
210
+ throw new Error(`Bucket ${bucketName} not found`);
211
+ }
212
+ await provider.confirmUpload({
213
+ bucket,
214
+ url
215
+ });
216
+ }
179
217
  async function deleteFile(params) {
180
218
  const { provider, router, ctxToken, body: { bucketName, url } } = params;
181
219
  if (!ctxToken) {
@@ -264,6 +302,8 @@ async function getContext(token) {
264
302
 
265
303
  exports.EDGE_STORE_ERROR_CODES = EDGE_STORE_ERROR_CODES;
266
304
  exports.EdgeStoreError = EdgeStoreError;
305
+ exports.completeMultipartUpload = completeMultipartUpload;
306
+ exports.confirmUpload = confirmUpload;
267
307
  exports.deleteFile = deleteFile;
268
308
  exports.init = init;
269
309
  exports.requestUpload = requestUpload;
@@ -78,6 +78,7 @@ async function requestUpload(params) {
78
78
  fileName: fileInfo.fileName,
79
79
  extension: fileInfo.extension,
80
80
  replaceTargetUrl: fileInfo.replaceTargetUrl,
81
+ temporary: fileInfo.temporary,
81
82
  },
82
83
  });
83
84
  if (!canUpload) {
@@ -166,6 +167,43 @@ async function requestUploadParts(params) {
166
167
  path,
167
168
  });
168
169
  }
170
+ async function completeMultipartUpload(params) {
171
+ const { provider, router, ctxToken, body: { bucketName, uploadId, key, parts }, } = params;
172
+ if (!ctxToken) {
173
+ throw new EdgeStoreError({
174
+ message: 'Missing edgestore-ctx cookie',
175
+ code: 'UNAUTHORIZED',
176
+ });
177
+ }
178
+ await getContext(ctxToken); // just to check if the token is valid
179
+ const bucket = router.buckets[bucketName];
180
+ if (!bucket) {
181
+ throw new Error(`Bucket ${bucketName} not found`);
182
+ }
183
+ return await provider.completeMultipartUpload({
184
+ uploadId,
185
+ key,
186
+ parts,
187
+ });
188
+ }
189
+ async function confirmUpload(params) {
190
+ const { provider, router, ctxToken, body: { bucketName, url }, } = params;
191
+ if (!ctxToken) {
192
+ throw new EdgeStoreError({
193
+ message: 'Missing edgestore-ctx cookie',
194
+ code: 'UNAUTHORIZED',
195
+ });
196
+ }
197
+ await getContext(ctxToken); // just to check if the token is valid
198
+ const bucket = router.buckets[bucketName];
199
+ if (!bucket) {
200
+ throw new Error(`Bucket ${bucketName} not found`);
201
+ }
202
+ await provider.confirmUpload({
203
+ bucket,
204
+ url,
205
+ });
206
+ }
169
207
  async function deleteFile(params) {
170
208
  const { provider, router, ctxToken, body: { bucketName, url }, } = params;
171
209
  if (!ctxToken) {
@@ -256,4 +294,4 @@ async function getContext(token) {
256
294
  return await decryptJWT(token);
257
295
  }
258
296
 
259
- export { EdgeStoreError as E, requestUploadParts as a, EDGE_STORE_ERROR_CODES as b, deleteFile as d, init as i, requestUpload as r };
297
+ export { EdgeStoreError as E, requestUploadParts as a, confirmUpload as b, completeMultipartUpload as c, deleteFile as d, EDGE_STORE_ERROR_CODES as e, init as i, requestUpload as r };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@edgestore/server",
3
- "version": "0.1.1",
4
- "description": "The best DX for uploading files from your Next.js app",
3
+ "version": "0.1.3-alpha.0",
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",
7
7
  "author": "Ravi <me@ravi.com>",
@@ -37,6 +37,11 @@
37
37
  "require": "./dist/core/index.js",
38
38
  "default": "./dist/core/index.js"
39
39
  },
40
+ "./adapters": {
41
+ "import": "./dist/adapters/index.mjs",
42
+ "require": "./dist/adapters/index.js",
43
+ "default": "./dist/adapters/index.js"
44
+ },
40
45
  "./adapters/next/pages": {
41
46
  "import": "./dist/adapters/next/pages/index.mjs",
42
47
  "require": "./dist/adapters/next/pages/index.js",
@@ -56,6 +61,11 @@
56
61
  "import": "./dist/providers/edgestore/index.mjs",
57
62
  "require": "./dist/providers/edgestore/index.js",
58
63
  "default": "./dist/providers/edgestore/index.js"
64
+ },
65
+ "./providers": {
66
+ "import": "./dist/providers/index.mjs",
67
+ "require": "./dist/providers/index.js",
68
+ "default": "./dist/providers/index.js"
59
69
  }
60
70
  },
61
71
  "files": [
@@ -94,5 +104,5 @@
94
104
  "typescript": "^5.1.6",
95
105
  "zod": "^3.21.4"
96
106
  },
97
- "gitHead": "aef56ef04e24a3de539d949831b2bf876a15d4e3"
107
+ "gitHead": "3ed23e543ee1ed151685884bb0983c2471e03880"
98
108
  }
@@ -0,0 +1 @@
1
+ export * from '../dist/providers';
@@ -0,0 +1 @@
1
+ module.exports = require('../dist/providers');