@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.
Files changed (62) hide show
  1. package/README.md +6 -6
  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 +4 -4
  9. package/dist/adapters/next/app/index.d.ts.map +1 -1
  10. package/dist/adapters/next/app/index.js +22 -2
  11. package/dist/adapters/next/app/index.mjs +22 -2
  12. package/dist/adapters/next/pages/index.d.ts +4 -4
  13. package/dist/adapters/next/pages/index.d.ts.map +1 -1
  14. package/dist/adapters/next/pages/index.js +18 -2
  15. package/dist/adapters/next/pages/index.mjs +18 -2
  16. package/dist/adapters/shared.d.ts +35 -2
  17. package/dist/adapters/shared.d.ts.map +1 -1
  18. package/dist/core/client/index.d.ts +11 -3
  19. package/dist/core/client/index.d.ts.map +1 -1
  20. package/dist/core/index.d.ts +1 -1
  21. package/dist/core/index.d.ts.map +1 -1
  22. package/dist/core/index.js +5 -4
  23. package/dist/core/index.mjs +6 -5
  24. package/dist/core/internals/bucketBuilder.d.ts +2 -1
  25. package/dist/core/internals/bucketBuilder.d.ts.map +1 -1
  26. package/dist/core/sdk/index.d.ts +43 -2
  27. package/dist/core/sdk/index.d.ts.map +1 -1
  28. package/dist/{index-579b8015.mjs → index-30a3741e.mjs} +43 -2
  29. package/dist/{index-62d969e5.js → index-50ab9e08.js} +43 -2
  30. package/dist/{index-0a168903.js → index-f33a00fb.js} +41 -0
  31. package/dist/providers/aws/index.d.ts +28 -1
  32. package/dist/providers/aws/index.d.ts.map +1 -1
  33. package/dist/providers/aws/index.js +7 -1
  34. package/dist/providers/aws/index.mjs +7 -1
  35. package/dist/providers/edgestore/index.d.ts +13 -1
  36. package/dist/providers/edgestore/index.d.ts.map +1 -1
  37. package/dist/providers/edgestore/index.js +24 -10
  38. package/dist/providers/edgestore/index.mjs +24 -10
  39. package/dist/providers/index.d.ts +1 -2
  40. package/dist/providers/index.d.ts.map +1 -1
  41. package/dist/providers/index.js +2 -0
  42. package/dist/providers/index.mjs +1 -0
  43. package/dist/providers/types.d.ts +26 -2
  44. package/dist/providers/types.d.ts.map +1 -1
  45. package/dist/{shared-2a9c8307.mjs → shared-7fc08e14.mjs} +40 -2
  46. package/dist/{shared-ae739a04.js → shared-a5b84d0b.js} +41 -1
  47. package/dist/{shared-fac1b0a0.js → shared-a86ccc68.js} +39 -1
  48. package/package.json +13 -3
  49. package/providers/index.d.ts +1 -0
  50. package/providers/index.js +1 -0
  51. package/src/adapters/index.ts +6 -0
  52. package/src/adapters/next/app/index.ts +33 -7
  53. package/src/adapters/next/pages/index.ts +27 -7
  54. package/src/adapters/shared.ts +90 -2
  55. package/src/core/client/index.ts +15 -9
  56. package/src/core/index.ts +1 -1
  57. package/src/core/internals/bucketBuilder.ts +6 -1
  58. package/src/core/sdk/index.ts +83 -2
  59. package/src/providers/aws/index.ts +39 -5
  60. package/src/providers/edgestore/index.ts +34 -9
  61. package/src/providers/index.ts +1 -2
  62. 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
- // multiplart upload if file is bigger than a certain size
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 > 10000) {
64
- // the maximum number of parts is 10000
65
- totalParts = 10000;
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: requestParts }).map(
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,
@@ -1,2 +1 @@
1
- export * from './aws';
2
- export * from './edgestore';
1
+ export * from './types';
@@ -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
  };