@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 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 just 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.
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 on a development environment.
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":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/client/index.ts"],"names":[],"mappings":"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"}
@@ -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 doesn't work on localhost,
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/')) {
@@ -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 doesn't work on localhost,
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
- * Can also be set via the `EDGE_STORE_BASE_URL` environment variable.
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
- * Can also be set via the `EDGE_STORE_JWT_SECRET` environment variable.
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.1.6",
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.1.6",
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": "c9d1d53a21038b4c0c3b9df685d2cac9cabc88ae"
126
+ "gitHead": "a5ecda9ba69eaada4624556dd9422ce49e5dfb66"
127
127
  }
@@ -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,
@@ -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
- url: string;
116
- size: number;
117
- metadata: InferMetadataObject<TBucket>;
118
- path: InferBucketPathObject<TBucket>;
119
- pathOrder: (keyof InferBucketPathObject<TBucket>)[];
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 on a development environment.
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 doesn't work on localhost,
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
- * Can also be set via the `EDGE_STORE_BASE_URL` environment variable.
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
- * Can also be set via the `EDGE_STORE_JWT_SECRET` environment variable.
47
+ * It can also be set via the `EDGE_STORE_JWT_SECRET` environment variable.
48
48
  */
49
49
  jwtSecret?: string;
50
50
  };