@edgestore/server 0.1.6 → 0.2.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.
- package/README.md +2 -2
- package/dist/core/client/index.d.ts +10 -3
- package/dist/core/client/index.d.ts.map +1 -1
- package/dist/core/index.js +4 -1
- package/dist/core/index.mjs +4 -1
- package/dist/providers/aws/index.d.ts +2 -2
- package/package.json +3 -3
- package/src/adapters/shared.ts +1 -1
- package/src/core/client/index.ts +23 -10
- package/src/providers/aws/index.ts +2 -2
package/README.md
CHANGED
|
@@ -98,7 +98,7 @@ export default function RootLayout({
|
|
|
98
98
|
|
|
99
99
|
### Upload file
|
|
100
100
|
|
|
101
|
-
You can use the `useEdgeStore` hook to access typesafe frontend client and use it to upload files.
|
|
101
|
+
You can use the `useEdgeStore` hook to access a typesafe frontend client and use it to upload files.
|
|
102
102
|
|
|
103
103
|
```tsx {1, 6, 19-28}
|
|
104
104
|
import * as React from 'react';
|
|
@@ -144,7 +144,7 @@ export default function Page() {
|
|
|
144
144
|
By passing the `replaceTargetUrl` option, you can replace an existing file with a new one.
|
|
145
145
|
It will automatically delete the old file after the upload is complete.
|
|
146
146
|
|
|
147
|
-
You can also
|
|
147
|
+
You can also upload the file using the same file name, but in that case, you might still see the old file for a while because of the CDN cache.
|
|
148
148
|
|
|
149
149
|
```tsx
|
|
150
150
|
const res = await edgestore.publicFiles.upload({
|
|
@@ -18,7 +18,7 @@ export type UploadOptions = {
|
|
|
18
18
|
* But it might take some time for the CDN cache to be cleared.
|
|
19
19
|
* So maybe you will keep seeing the old file for a while.
|
|
20
20
|
*
|
|
21
|
-
* If you want to replace an existing file immediately leave the `manualFileName` option empty and use the `replaceTargetUrl` option.
|
|
21
|
+
* If you want to replace an existing file, immediately leave the `manualFileName` option empty and use the `replaceTargetUrl` option.
|
|
22
22
|
*/
|
|
23
23
|
manualFileName?: string;
|
|
24
24
|
/**
|
|
@@ -77,7 +77,14 @@ export type UploadFileRequest<TBucket extends AnyBuilder> = {
|
|
|
77
77
|
}) & (TBucket['_def']['input'] extends ZodNever ? {} : {
|
|
78
78
|
input: z.infer<TBucket['_def']['input']>;
|
|
79
79
|
});
|
|
80
|
-
export type UploadFileRes<TBucket extends AnyBuilder> = {
|
|
80
|
+
export type UploadFileRes<TBucket extends AnyBuilder> = TBucket['_def']['type'] extends 'IMAGE' ? {
|
|
81
|
+
url: string;
|
|
82
|
+
thumbnailUrl: string | null;
|
|
83
|
+
size: number;
|
|
84
|
+
metadata: InferMetadataObject<TBucket>;
|
|
85
|
+
path: InferBucketPathObject<TBucket>;
|
|
86
|
+
pathOrder: (keyof InferBucketPathObject<TBucket>)[];
|
|
87
|
+
} : {
|
|
81
88
|
url: string;
|
|
82
89
|
size: number;
|
|
83
90
|
metadata: InferMetadataObject<TBucket>;
|
|
@@ -195,7 +202,7 @@ export declare function initEdgeStoreClient<TRouter extends AnyRouter>(config: {
|
|
|
195
202
|
/**
|
|
196
203
|
* The base URL of your application.
|
|
197
204
|
*
|
|
198
|
-
* This is only needed for getting protected files
|
|
205
|
+
* This is only needed for getting protected files in a development environment.
|
|
199
206
|
*
|
|
200
207
|
* @example http://localhost:3000/api/edgestore
|
|
201
208
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/client/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,IAAI,CAAC;AAIrC,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,UAAU,IAAI;IACnD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,IAAI,CAAC;IACjB,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,KAAK,WAAW,GAAG,MAAM,CAAC;AAC1B,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AACF,KAAK,UAAU,GAAG;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAeF,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,UAAU,IAAI;IAC1D;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,EAAE,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC;IAChD,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACxD,EAAE,GACF;IACE,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;CAChC,CAAC,GACJ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,QAAQ,GACtC,EAAE,GACF;IACE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;CAC1C,CAAC,CAAC;AAET,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,UAAU,IAAI;
|
|
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
|
@@ -105,6 +105,9 @@ function initEdgeStoreClient(config) {
|
|
|
105
105
|
const { parsedPath, pathOrder } = shared.parsePath(path);
|
|
106
106
|
return {
|
|
107
107
|
url: requestUploadRes.accessUrl,
|
|
108
|
+
...{
|
|
109
|
+
thumbnailUrl: requestUploadRes.thumbnailUrl
|
|
110
|
+
},
|
|
108
111
|
size: blob.size,
|
|
109
112
|
metadata,
|
|
110
113
|
path: parsedPath,
|
|
@@ -154,7 +157,7 @@ function initEdgeStoreClient(config) {
|
|
|
154
157
|
}
|
|
155
158
|
/**
|
|
156
159
|
* Protected files need third-party cookies to work.
|
|
157
|
-
* Since third party cookies
|
|
160
|
+
* Since third party cookies don't work on localhost,
|
|
158
161
|
* we need to proxy the file through the server.
|
|
159
162
|
*/ function getUrl(url, baseUrl) {
|
|
160
163
|
if (process.env.NODE_ENV === 'development' && !url.includes('/_public/')) {
|
package/dist/core/index.mjs
CHANGED
|
@@ -102,6 +102,9 @@ function initEdgeStoreClient(config) {
|
|
|
102
102
|
const { parsedPath, pathOrder } = parsePath(path);
|
|
103
103
|
return {
|
|
104
104
|
url: requestUploadRes.accessUrl,
|
|
105
|
+
...{
|
|
106
|
+
thumbnailUrl: requestUploadRes.thumbnailUrl
|
|
107
|
+
},
|
|
105
108
|
size: blob.size,
|
|
106
109
|
metadata,
|
|
107
110
|
path: parsedPath,
|
|
@@ -151,7 +154,7 @@ function initEdgeStoreClient(config) {
|
|
|
151
154
|
}
|
|
152
155
|
/**
|
|
153
156
|
* Protected files need third-party cookies to work.
|
|
154
|
-
* Since third party cookies
|
|
157
|
+
* Since third party cookies don't work on localhost,
|
|
155
158
|
* we need to proxy the file through the server.
|
|
156
159
|
*/ function getUrl(url, baseUrl) {
|
|
157
160
|
if (process.env.NODE_ENV === 'development' && !url.includes('/_public/')) {
|
|
@@ -28,14 +28,14 @@ export type AWSProviderOptions = {
|
|
|
28
28
|
* Base URL to use for accessing files.
|
|
29
29
|
* Only needed if you are using a custom domain or cloudfront.
|
|
30
30
|
*
|
|
31
|
-
*
|
|
31
|
+
* It can also be set via the `EDGE_STORE_BASE_URL` environment variable.
|
|
32
32
|
*/
|
|
33
33
|
baseUrl?: string;
|
|
34
34
|
/**
|
|
35
35
|
* Secret to use for encrypting JWT tokens.
|
|
36
36
|
* Can be generated with `openssl rand -base64 32`.
|
|
37
37
|
*
|
|
38
|
-
*
|
|
38
|
+
* It can also be set via the `EDGE_STORE_JWT_SECRET` environment variable.
|
|
39
39
|
*/
|
|
40
40
|
jwtSecret?: string;
|
|
41
41
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edgestore/server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
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",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
},
|
|
85
85
|
"license": "MIT",
|
|
86
86
|
"dependencies": {
|
|
87
|
-
"@edgestore/shared": "0.
|
|
87
|
+
"@edgestore/shared": "0.2.0",
|
|
88
88
|
"@panva/hkdf": "^1.0.4",
|
|
89
89
|
"cookie": "^0.5.0",
|
|
90
90
|
"jose": "^4.13.1",
|
|
@@ -123,5 +123,5 @@
|
|
|
123
123
|
"typescript": "^5.1.6",
|
|
124
124
|
"zod": "3.21.4"
|
|
125
125
|
},
|
|
126
|
-
"gitHead": "
|
|
126
|
+
"gitHead": "a5ecda9ba69eaada4624556dd9422ce49e5dfb66"
|
|
127
127
|
}
|
package/src/adapters/shared.ts
CHANGED
|
@@ -215,7 +215,7 @@ export async function requestUpload<TCtx>(params: {
|
|
|
215
215
|
return {
|
|
216
216
|
...requestUploadRes,
|
|
217
217
|
size: fileInfo.size,
|
|
218
|
-
uploadedAt: new Date().toISOString(),
|
|
218
|
+
uploadedAt: new Date().toISOString(), // TODO: maybe delete this field since it's not the actual upload time
|
|
219
219
|
path: parsedPath,
|
|
220
220
|
pathOrder,
|
|
221
221
|
metadata,
|
package/src/core/client/index.ts
CHANGED
|
@@ -31,7 +31,7 @@ export type UploadOptions = {
|
|
|
31
31
|
* But it might take some time for the CDN cache to be cleared.
|
|
32
32
|
* So maybe you will keep seeing the old file for a while.
|
|
33
33
|
*
|
|
34
|
-
* If you want to replace an existing file immediately leave the `manualFileName` option empty and use the `replaceTargetUrl` option.
|
|
34
|
+
* If you want to replace an existing file, immediately leave the `manualFileName` option empty and use the `replaceTargetUrl` option.
|
|
35
35
|
*/
|
|
36
36
|
manualFileName?: string;
|
|
37
37
|
/**
|
|
@@ -111,13 +111,23 @@ export type UploadFileRequest<TBucket extends AnyBuilder> = {
|
|
|
111
111
|
input: z.infer<TBucket['_def']['input']>;
|
|
112
112
|
});
|
|
113
113
|
|
|
114
|
-
export type UploadFileRes<TBucket extends AnyBuilder> =
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
114
|
+
export type UploadFileRes<TBucket extends AnyBuilder> =
|
|
115
|
+
TBucket['_def']['type'] extends 'IMAGE'
|
|
116
|
+
? {
|
|
117
|
+
url: string;
|
|
118
|
+
thumbnailUrl: string | null;
|
|
119
|
+
size: number;
|
|
120
|
+
metadata: InferMetadataObject<TBucket>;
|
|
121
|
+
path: InferBucketPathObject<TBucket>;
|
|
122
|
+
pathOrder: (keyof InferBucketPathObject<TBucket>)[];
|
|
123
|
+
}
|
|
124
|
+
: {
|
|
125
|
+
url: string;
|
|
126
|
+
size: number;
|
|
127
|
+
metadata: InferMetadataObject<TBucket>;
|
|
128
|
+
path: InferBucketPathObject<TBucket>;
|
|
129
|
+
pathOrder: (keyof InferBucketPathObject<TBucket>)[];
|
|
130
|
+
};
|
|
121
131
|
|
|
122
132
|
type Filter<TBucket extends AnyBuilder> = {
|
|
123
133
|
AND?: Filter<TBucket>[];
|
|
@@ -235,7 +245,7 @@ export function initEdgeStoreClient<TRouter extends AnyRouter>(config: {
|
|
|
235
245
|
/**
|
|
236
246
|
* The base URL of your application.
|
|
237
247
|
*
|
|
238
|
-
* This is only needed for getting protected files
|
|
248
|
+
* This is only needed for getting protected files in a development environment.
|
|
239
249
|
*
|
|
240
250
|
* @example http://localhost:3000/api/edgestore
|
|
241
251
|
*/
|
|
@@ -329,6 +339,9 @@ export function initEdgeStoreClient<TRouter extends AnyRouter>(config: {
|
|
|
329
339
|
const { parsedPath, pathOrder } = parsePath(path);
|
|
330
340
|
return {
|
|
331
341
|
url: requestUploadRes.accessUrl,
|
|
342
|
+
...{
|
|
343
|
+
thumbnailUrl: requestUploadRes.thumbnailUrl,
|
|
344
|
+
},
|
|
332
345
|
size: blob.size,
|
|
333
346
|
metadata,
|
|
334
347
|
path: parsedPath,
|
|
@@ -391,7 +404,7 @@ export function initEdgeStoreClient<TRouter extends AnyRouter>(config: {
|
|
|
391
404
|
|
|
392
405
|
/**
|
|
393
406
|
* Protected files need third-party cookies to work.
|
|
394
|
-
* Since third party cookies
|
|
407
|
+
* Since third party cookies don't work on localhost,
|
|
395
408
|
* we need to proxy the file through the server.
|
|
396
409
|
*/
|
|
397
410
|
function getUrl(url: string, baseUrl?: string) {
|
|
@@ -37,14 +37,14 @@ export type AWSProviderOptions = {
|
|
|
37
37
|
* Base URL to use for accessing files.
|
|
38
38
|
* Only needed if you are using a custom domain or cloudfront.
|
|
39
39
|
*
|
|
40
|
-
*
|
|
40
|
+
* It can also be set via the `EDGE_STORE_BASE_URL` environment variable.
|
|
41
41
|
*/
|
|
42
42
|
baseUrl?: string;
|
|
43
43
|
/**
|
|
44
44
|
* Secret to use for encrypting JWT tokens.
|
|
45
45
|
* Can be generated with `openssl rand -base64 32`.
|
|
46
46
|
*
|
|
47
|
-
*
|
|
47
|
+
* It can also be set via the `EDGE_STORE_JWT_SECRET` environment variable.
|
|
48
48
|
*/
|
|
49
49
|
jwtSecret?: string;
|
|
50
50
|
};
|