@edgestore/server 0.0.0-alpha.13 → 0.0.0-alpha.14

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/next/app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAKxE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAW9C,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,EAAE,WAAW,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,MAAM,CAAC,IAAI,IAAI,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACzD;IACE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;CAC/B,GACD;IACE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,aAAa,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CACnE,CAAC;AAEN,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,SAEhD,WAAW,uBAmF/B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/next/app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAKxE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAW9C,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,EAAE,WAAW,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,MAAM,CAAC,IAAI,IAAI,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACzD;IACE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;CAC/B,GACD;IACE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,aAAa,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CACnE,CAAC;AAEN,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,SAEhD,WAAW,uBA0G/B"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var shared = require('../../../shared-5ed6e18e.js');
5
+ var shared = require('../../../shared-ae739a04.js');
6
6
  var providers_edgestore_index = require('../../../providers/edgestore/index.js');
7
7
  require('@panva/hkdf');
8
8
  require('cookie');
@@ -70,6 +70,26 @@ function createEdgeStoreNextHandler(config) {
70
70
  return new Response(null, {
71
71
  status: 200
72
72
  });
73
+ } else if (req.nextUrl.pathname === '/api/edgestore/proxy-file') {
74
+ const url = req.nextUrl.searchParams.get('url');
75
+ if (typeof url === 'string') {
76
+ const proxyRes = await fetch(url, {
77
+ headers: {
78
+ cookie: req.cookies.toString() ?? ''
79
+ }
80
+ });
81
+ const data = await proxyRes.arrayBuffer();
82
+ return new Response(data, {
83
+ status: proxyRes.status,
84
+ headers: {
85
+ 'Content-Type': proxyRes.headers.get('Content-Type') ?? 'application/octet-stream'
86
+ }
87
+ });
88
+ } else {
89
+ return new Response(null, {
90
+ status: 400
91
+ });
92
+ }
73
93
  } else {
74
94
  return new Response(null, {
75
95
  status: 404
@@ -1,4 +1,4 @@
1
- import { i as init, r as requestUpload, a as requestUploadParts, d as deleteFile, E as EdgeStoreError, b as EDGE_STORE_ERROR_CODES } from '../../../shared-59c74ca7.mjs';
1
+ import { i as init, r as requestUpload, a as requestUploadParts, d as deleteFile, E as EdgeStoreError, b as EDGE_STORE_ERROR_CODES } from '../../../shared-2a9c8307.mjs';
2
2
  import { EdgeStoreProvider } from '../../../providers/edgestore/index.mjs';
3
3
  import '@panva/hkdf';
4
4
  import 'cookie';
@@ -66,6 +66,26 @@ function createEdgeStoreNextHandler(config) {
66
66
  return new Response(null, {
67
67
  status: 200
68
68
  });
69
+ } else if (req.nextUrl.pathname === '/api/edgestore/proxy-file') {
70
+ const url = req.nextUrl.searchParams.get('url');
71
+ if (typeof url === 'string') {
72
+ const proxyRes = await fetch(url, {
73
+ headers: {
74
+ cookie: req.cookies.toString() ?? ''
75
+ }
76
+ });
77
+ const data = await proxyRes.arrayBuffer();
78
+ return new Response(data, {
79
+ status: proxyRes.status,
80
+ headers: {
81
+ 'Content-Type': proxyRes.headers.get('Content-Type') ?? 'application/octet-stream'
82
+ }
83
+ });
84
+ } else {
85
+ return new Response(null, {
86
+ status: 400
87
+ });
88
+ }
69
89
  } else {
70
90
  return new Response(null, {
71
91
  status: 404
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/next/pages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAKxE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAW9C,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,EAAE,cAAc,CAAC;IACpB,GAAG,EAAE,eAAe,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,MAAM,CAAC,IAAI,IAAI,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACzD;IACE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;CAC/B,GACD;IACE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,aAAa,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CACnE,CAAC;AAEN,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,SAEhD,cAAc,OAAO,eAAe,mBAuDxD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/next/pages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAKxE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAW9C,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,EAAE,cAAc,CAAC;IACpB,GAAG,EAAE,eAAe,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,MAAM,CAAC,IAAI,IAAI,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACzD;IACE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;CAC/B,GACD;IACE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,aAAa,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CACnE,CAAC;AAEN,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,SAEhD,cAAc,OAAO,eAAe,mBA0ExD"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var shared = require('../../../shared-5ed6e18e.js');
5
+ var shared = require('../../../shared-ae739a04.js');
6
6
  var providers_edgestore_index = require('../../../providers/edgestore/index.js');
7
7
  require('@panva/hkdf');
8
8
  require('cookie');
@@ -52,6 +52,20 @@ function createEdgeStoreNextHandler(config) {
52
52
  ctxToken: req.cookies['edgestore-ctx']
53
53
  });
54
54
  res.status(200).end();
55
+ } else if (req.url?.startsWith('/api/edgestore/proxy-file')) {
56
+ const { url } = req.query;
57
+ if (typeof url === 'string') {
58
+ const proxyRes = await fetch(url, {
59
+ headers: {
60
+ cookie: req.headers.cookie ?? ''
61
+ }
62
+ });
63
+ const data = await proxyRes.arrayBuffer();
64
+ res.setHeader('Content-Type', proxyRes.headers.get('Content-Type') ?? 'application/octet-stream');
65
+ res.end(Buffer.from(data));
66
+ } else {
67
+ res.status(400).end();
68
+ }
55
69
  } else {
56
70
  res.status(404).end();
57
71
  }
@@ -1,4 +1,4 @@
1
- import { i as init, r as requestUpload, a as requestUploadParts, d as deleteFile, E as EdgeStoreError, b as EDGE_STORE_ERROR_CODES } from '../../../shared-59c74ca7.mjs';
1
+ import { i as init, r as requestUpload, a as requestUploadParts, d as deleteFile, E as EdgeStoreError, b as EDGE_STORE_ERROR_CODES } from '../../../shared-2a9c8307.mjs';
2
2
  import { EdgeStoreProvider } from '../../../providers/edgestore/index.mjs';
3
3
  import '@panva/hkdf';
4
4
  import 'cookie';
@@ -48,6 +48,20 @@ function createEdgeStoreNextHandler(config) {
48
48
  ctxToken: req.cookies['edgestore-ctx']
49
49
  });
50
50
  res.status(200).end();
51
+ } else if (req.url?.startsWith('/api/edgestore/proxy-file')) {
52
+ const { url } = req.query;
53
+ if (typeof url === 'string') {
54
+ const proxyRes = await fetch(url, {
55
+ headers: {
56
+ cookie: req.headers.cookie ?? ''
57
+ }
58
+ });
59
+ const data = await proxyRes.arrayBuffer();
60
+ res.setHeader('Content-Type', proxyRes.headers.get('Content-Type') ?? 'application/octet-stream');
61
+ res.end(Buffer.from(data));
62
+ } else {
63
+ res.status(400).end();
64
+ }
51
65
  } else {
52
66
  res.status(404).end();
53
67
  }
@@ -1,14 +1,12 @@
1
1
  import { AnyRouter, Comparison } from '..';
2
2
  import { Simplify } from '../../types';
3
- import { AnyBuilder, InferBucketPathKeys, InferMetadataObject } from '../internals/bucketBuilder';
3
+ import { AnyBuilder, InferBucketPathKeys, InferBucketPathObject, InferMetadataObject } from '../internals/bucketBuilder';
4
4
  export type GetFileRes<TBucket extends AnyBuilder> = {
5
5
  url: string;
6
6
  size: number;
7
7
  uploadedAt: Date;
8
8
  metadata: InferMetadataObject<TBucket>;
9
- path: {
10
- [TKey in InferBucketPathKeys<TBucket>]: string;
11
- };
9
+ path: InferBucketPathObject<TBucket>;
12
10
  };
13
11
  type Filter<TBucket extends AnyBuilder> = {
14
12
  AND?: Filter<TBucket>[];
@@ -35,17 +33,13 @@ export type ListFilesResponse<TBucket extends AnyBuilder> = {
35
33
  size: number;
36
34
  uploadedAt: Date;
37
35
  metadata: InferMetadataObject<TBucket>;
38
- path: {
39
- [TKey in InferBucketPathKeys<TBucket>]: string;
40
- };
36
+ path: InferBucketPathObject<TBucket>;
41
37
  }[] : {
42
38
  url: string;
43
39
  size: number;
44
40
  uploadedAt: Date;
45
41
  metadata: InferMetadataObject<TBucket>;
46
- path: {
47
- [TKey in InferBucketPathKeys<TBucket>]: string;
48
- };
42
+ path: InferBucketPathObject<TBucket>;
49
43
  }[];
50
44
  pagination: {
51
45
  currentPage: number;
@@ -79,6 +73,14 @@ export declare function initEdgeStoreClient<TRouter extends AnyRouter>(config: {
79
73
  router: TRouter;
80
74
  accessKey?: string;
81
75
  secretKey?: string;
76
+ /**
77
+ * The base URL of your application.
78
+ *
79
+ * This is only needed for getting protected files on a development environment.
80
+ *
81
+ * @example http://localhost:3000/api/edgestore
82
+ */
83
+ baseUrl?: string;
82
84
  }): EdgeStoreClient<TRouter>;
83
85
  export type InferClientResponse<TRouter extends AnyRouter> = {
84
86
  [TBucketName in keyof TRouter['buckets']]: {
@@ -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":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAGpC,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,KAAK,MAAM,CAAC,OAAO,SAAS,UAAU,IAAI;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE;SACJ,CAAC,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU;KACjD,CAAC;IACF,QAAQ,CAAC,EAAE;SACR,CAAC,IAAI,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU;KACvD,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,UAAU,IAAI;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,UAAU,CAAC,EAAE;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,UAAU,IAAI;IAC1D,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,OAAO,GACzC;QACE,GAAG,EAAE,MAAM,CAAC;QACZ,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,IAAI,CAAC;QACjB,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC;KACtC,EAAE,GACH;QACE,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,IAAI,CAAC;QACjB,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC;KACtC,EAAE,CAAC;IACR,UAAU,EAAE;QACV,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;AAEF,KAAK,eAAe,CAAC,OAAO,SAAS,SAAS,IAAI;KAC/C,CAAC,IAAI,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG;QAC/B,OAAO,EAAE,CAAC,MAAM,EAAE;YAChB,GAAG,EAAE,MAAM,CAAC;SACb,KAAK,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAajD;;WAEG;QACH,UAAU,EAAE,CAAC,MAAM,EAAE;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC;YAC/C,OAAO,EAAE,OAAO,CAAC;SAClB,CAAC,CAAC;QACH;;;;;WAKG;QACH,SAAS,EAAE,CACT,MAAM,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAC7C,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACxD;CACF,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,SAAS,SAAS,EAAE,MAAM,EAAE;IACrE,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,4BA+FA;AAwBD,MAAM,MAAM,mBAAmB,CAAC,OAAO,SAAS,SAAS,IAAI;KAC1D,WAAW,IAAI,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG;SACxC,QAAQ,IAAI,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,GAAG,QAAQ,CACjE,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CACrE;KACF;CACF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { EdgeStoreRouter } from './internals/bucketBuilder';
2
2
  export * from './client';
3
3
  export * from './sdk';
4
- export type { InferBucketPathKeys, InferMetadataObject, } from './internals/bucketBuilder';
4
+ export type { InferBucketPathKeys, InferBucketPathObject, InferMetadataObject, } from './internals/bucketBuilder';
5
5
  export type AnyRouter = EdgeStoreRouter<any>;
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,YAAY,EACV,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,YAAY,EACV,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC"}
@@ -20,7 +20,7 @@ function initEdgeStoreClient(config) {
20
20
  async getFile (params) {
21
21
  const res = await sdk.getFile(params);
22
22
  return {
23
- url: res.url,
23
+ url: getUrl(res.url, config.baseUrl),
24
24
  size: res.size,
25
25
  uploadedAt: new Date(res.uploadedAt),
26
26
  metadata: res.metadata,
@@ -72,7 +72,7 @@ function initEdgeStoreClient(config) {
72
72
  });
73
73
  const files = res.data.map((file)=>{
74
74
  return {
75
- url: file.url,
75
+ url: getUrl(file.url, config.baseUrl),
76
76
  thumbnailUrl: file.thumbnailUrl,
77
77
  size: file.size,
78
78
  uploadedAt: new Date(file.uploadedAt),
@@ -90,6 +90,24 @@ function initEdgeStoreClient(config) {
90
90
  }
91
91
  });
92
92
  }
93
+ /**
94
+ * Protected files need third-party cookies to work.
95
+ * Since third party cookies doesn't work on localhost,
96
+ * we need to proxy the file through the server.
97
+ */ function getUrl(url, baseUrl) {
98
+ if (process.env.NODE_ENV === 'development' && !url.includes('/_public/')) {
99
+ if (!baseUrl) {
100
+ throw new Error('Missing baseUrl. You need to pass the baseUrl to `initEdgeStoreClient` to get protected files in development.');
101
+ }
102
+ const proxyUrl = new URL(baseUrl);
103
+ proxyUrl.pathname = `${proxyUrl.pathname}/proxy-file`;
104
+ proxyUrl.search = new URLSearchParams({
105
+ url
106
+ }).toString();
107
+ return proxyUrl.toString();
108
+ }
109
+ return url;
110
+ }
93
111
 
94
112
  exports.edgeStoreRawSdk = index.edgeStoreRawSdk;
95
113
  exports.initEdgeStoreSdk = index.initEdgeStoreSdk;
@@ -17,7 +17,7 @@ function initEdgeStoreClient(config) {
17
17
  async getFile (params) {
18
18
  const res = await sdk.getFile(params);
19
19
  return {
20
- url: res.url,
20
+ url: getUrl(res.url, config.baseUrl),
21
21
  size: res.size,
22
22
  uploadedAt: new Date(res.uploadedAt),
23
23
  metadata: res.metadata,
@@ -69,7 +69,7 @@ function initEdgeStoreClient(config) {
69
69
  });
70
70
  const files = res.data.map((file)=>{
71
71
  return {
72
- url: file.url,
72
+ url: getUrl(file.url, config.baseUrl),
73
73
  thumbnailUrl: file.thumbnailUrl,
74
74
  size: file.size,
75
75
  uploadedAt: new Date(file.uploadedAt),
@@ -87,5 +87,23 @@ function initEdgeStoreClient(config) {
87
87
  }
88
88
  });
89
89
  }
90
+ /**
91
+ * Protected files need third-party cookies to work.
92
+ * Since third party cookies doesn't work on localhost,
93
+ * we need to proxy the file through the server.
94
+ */ function getUrl(url, baseUrl) {
95
+ if (process.env.NODE_ENV === 'development' && !url.includes('/_public/')) {
96
+ if (!baseUrl) {
97
+ throw new Error('Missing baseUrl. You need to pass the baseUrl to `initEdgeStoreClient` to get protected files in development.');
98
+ }
99
+ const proxyUrl = new URL(baseUrl);
100
+ proxyUrl.pathname = `${proxyUrl.pathname}/proxy-file`;
101
+ proxyUrl.search = new URLSearchParams({
102
+ url
103
+ }).toString();
104
+ return proxyUrl.toString();
105
+ }
106
+ return url;
107
+ }
90
108
 
91
109
  export { initEdgeStoreClient };
@@ -9,6 +9,12 @@ type ConvertStringToFunction<TType> = {
9
9
  type UnionToIntersection<TType> = (TType extends any ? (k: TType) => void : never) extends (k: infer I) => void ? I : never;
10
10
  export type InferBucketPathKeys<TBucket extends Builder<any, AnyDef>> = KeysOfUnion<TBucket['_def']['path'][number]>;
11
11
  type InferBucketPathKeysFromDef<TDef extends AnyDef> = KeysOfUnion<TDef['path'][number]>;
12
+ export type InferBucketPathObject<TBucket extends Builder<any, AnyDef>> = InferBucketPathKeys<TBucket> extends never ? Record<string, never> : {
13
+ [TKey in InferBucketPathKeys<TBucket>]: string;
14
+ };
15
+ export type InferBucketPathObjectFromDef<TDef extends AnyDef> = InferBucketPathKeysFromDef<TDef> extends never ? Record<string, never> : {
16
+ [TKey in InferBucketPathKeysFromDef<TDef>]: string;
17
+ };
12
18
  export type InferMetadataObject<TBucket extends Builder<any, AnyDef>> = TBucket['_def']['metadata'] extends (...args: any) => any ? Awaited<ReturnType<TBucket['_def']['metadata']>> : Record<string, never>;
13
19
  type InferMetadataObjectFromDef<TDef extends AnyDef> = TDef['metadata'] extends (...args: any) => any ? Awaited<ReturnType<TDef['metadata']>> : Record<string, never>;
14
20
  export type AnyContext = Record<string, string | undefined | null>;
@@ -66,13 +72,11 @@ type BeforeUploadFn<TCtx, TDef extends AnyDef> = (params: {
66
72
  }) => MaybePromise<boolean>;
67
73
  type BeforeDeleteFn<TCtx, TDef extends AnyDef> = (params: {
68
74
  ctx: TCtx;
69
- file: {
75
+ fileInfo: {
70
76
  url: string;
71
77
  size: number;
72
78
  uploadedAt: Date;
73
- path: {
74
- [TKey in InferBucketPathKeysFromDef<TDef>]: string;
75
- };
79
+ path: InferBucketPathObjectFromDef<TDef>;
76
80
  metadata: InferMetadataObjectFromDef<TDef>;
77
81
  };
78
82
  }) => MaybePromise<boolean>;
@@ -103,6 +107,11 @@ type Builder<TCtx, TDef extends AnyDef> = {
103
107
  * @internal
104
108
  */
105
109
  _def: TDef;
110
+ /**
111
+ * You can set an input that will be required in every upload from the client.
112
+ *
113
+ * This can be used to add additional information to the file, like choose the file path or add metadata.
114
+ */
106
115
  input<TInput extends AnyInput>(input: TInput): Builder<TCtx, {
107
116
  type: TDef['type'];
108
117
  input: TInput;
@@ -113,6 +122,18 @@ type Builder<TCtx, TDef extends AnyDef> = {
113
122
  beforeUpload: TDef['beforeUpload'];
114
123
  beforeDelete: TDef['beforeDelete'];
115
124
  }>;
125
+ /**
126
+ * The `path` is similar to folders in a file system.
127
+ * But in this case, every segment of the path must have a meaning.
128
+ *
129
+ * ```
130
+ * // e.g. 123/profile/file.jpg
131
+ * {
132
+ * author: '123',
133
+ * type: 'profile',
134
+ * }
135
+ * ```
136
+ */
116
137
  path<TParams extends AnyPath>(pathResolver: (params: {
117
138
  ctx: Simplify<ConvertStringToFunction<TCtx>>;
118
139
  input: Simplify<ConvertStringToFunction<z.infer<TDef['input']>>>;
@@ -126,6 +147,11 @@ type Builder<TCtx, TDef extends AnyDef> = {
126
147
  beforeUpload: TDef['beforeUpload'];
127
148
  beforeDelete: TDef['beforeDelete'];
128
149
  }>;
150
+ /**
151
+ * This metadata will be added to every file uploaded to this bucket.
152
+ *
153
+ * This can be used, for example, to filter files.
154
+ */
129
155
  metadata<TMetadata extends AnyMetadata>(metadata: MetadataFn<TCtx, TDef['input'], TMetadata>): Builder<TCtx, {
130
156
  type: TDef['type'];
131
157
  input: TDef['input'];
@@ -136,6 +162,12 @@ type Builder<TCtx, TDef extends AnyDef> = {
136
162
  beforeUpload: TDef['beforeUpload'];
137
163
  beforeDelete: TDef['beforeDelete'];
138
164
  }>;
165
+ /**
166
+ * If you set this, your bucket will automatically be configured as a protected bucket.
167
+ *
168
+ * This means that images will only be accessible from within your app.
169
+ * And only if it passes the check set in this function.
170
+ */
139
171
  accessControl(accessControl: AccessControlSchema<TCtx, TDef>): Builder<TCtx, {
140
172
  type: TDef['type'];
141
173
  input: TDef['input'];
@@ -146,6 +178,11 @@ type Builder<TCtx, TDef extends AnyDef> = {
146
178
  beforeUpload: TDef['beforeUpload'];
147
179
  beforeDelete: TDef['beforeDelete'];
148
180
  }>;
181
+ /**
182
+ * return `true` to allow upload
183
+ *
184
+ * By default every upload from your app is allowed.
185
+ */
149
186
  beforeUpload(beforeUpload: BeforeUploadFn<TCtx, TDef>): Builder<TCtx, {
150
187
  type: TDef['type'];
151
188
  input: TDef['input'];
@@ -156,6 +193,11 @@ type Builder<TCtx, TDef extends AnyDef> = {
156
193
  beforeUpload: BeforeUploadFn<any, any>;
157
194
  beforeDelete: TDef['beforeDelete'];
158
195
  }>;
196
+ /**
197
+ * return `true` to allow delete
198
+ *
199
+ * This function must be defined if you want to delete files directly from the client.
200
+ */
159
201
  beforeDelete(beforeDelete: BeforeDeleteFn<TCtx, TDef>): Builder<TCtx, {
160
202
  type: TDef['type'];
161
203
  input: TDef['input'];
@@ -1 +1 @@
1
- {"version":3,"file":"bucketBuilder.d.ts","sourceRoot":"","sources":["../../../src/core/internals/bucketBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bucketBuilder.d.ts","sourceRoot":"","sources":["../../../src/core/internals/bucketBuilder.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,6 @@ import { Provider } from '../types';
2
2
  export type EdgeStoreProviderOptions = {
3
3
  accessKey?: string;
4
4
  secretKey?: string;
5
- baseUrl?: string;
6
5
  };
7
6
  export declare function EdgeStoreProvider(options?: EdgeStoreProviderOptions): Provider;
8
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/edgestore/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAoB,MAAM,UAAU,CAAC;AAKtD,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,OAAO,CAAC,EAAE,wBAAwB,GACjC,QAAQ,CA4HV"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/edgestore/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAoB,MAAM,UAAU,CAAC;AAItD,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,OAAO,CAAC,EAAE,wBAAwB,GACjC,QAAQ,CA6HV"}
@@ -4,9 +4,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var index = require('../../index-62d969e5.js');
6
6
 
7
- const DEFAULT_BASE_URL = process.env.EDGE_STORE_BASE_URL ?? 'https://files.edgestore.dev';
7
+ const DEFAULT_BASE_URL = 'https://files.edgestore.dev';
8
8
  function EdgeStoreProvider(options) {
9
- const { accessKey = process.env.EDGE_STORE_ACCESS_KEY, secretKey = process.env.EDGE_STORE_SECRET_KEY, baseUrl = process.env.EDGE_STORE_BASE_URL ?? DEFAULT_BASE_URL } = options ?? {};
9
+ const { accessKey = process.env.EDGE_STORE_ACCESS_KEY, secretKey = process.env.EDGE_STORE_SECRET_KEY } = options ?? {};
10
+ const baseUrl = process.env.EDGE_STORE_BASE_URL ?? DEFAULT_BASE_URL;
10
11
  if (!accessKey || !secretKey) {
11
12
  throw new index.EdgeStoreCredentialsError();
12
13
  }
@@ -1,8 +1,9 @@
1
1
  import { E as EdgeStoreCredentialsError, i as initEdgeStoreSdk } from '../../index-579b8015.mjs';
2
2
 
3
- const DEFAULT_BASE_URL = process.env.EDGE_STORE_BASE_URL ?? 'https://files.edgestore.dev';
3
+ const DEFAULT_BASE_URL = 'https://files.edgestore.dev';
4
4
  function EdgeStoreProvider(options) {
5
- const { accessKey = process.env.EDGE_STORE_ACCESS_KEY, secretKey = process.env.EDGE_STORE_SECRET_KEY, baseUrl = process.env.EDGE_STORE_BASE_URL ?? DEFAULT_BASE_URL } = options ?? {};
5
+ const { accessKey = process.env.EDGE_STORE_ACCESS_KEY, secretKey = process.env.EDGE_STORE_SECRET_KEY } = options ?? {};
6
+ const baseUrl = process.env.EDGE_STORE_BASE_URL ?? DEFAULT_BASE_URL;
6
7
  if (!accessKey || !secretKey) {
7
8
  throw new EdgeStoreCredentialsError();
8
9
  }
@@ -190,12 +190,12 @@ async function deleteFile(params) {
190
190
  if (!bucket._def.beforeDelete) {
191
191
  throw new Error('You need to define beforeDelete if you want to delete files directly from the frontend.');
192
192
  }
193
- const file = await provider.getFile({
193
+ const fileInfo = await provider.getFile({
194
194
  url
195
195
  });
196
196
  const canDelete = await bucket._def.beforeDelete({
197
197
  ctx,
198
- file
198
+ fileInfo
199
199
  });
200
200
  if (!canDelete) {
201
201
  throw new Error('Delete not allowed');
@@ -192,12 +192,12 @@ async function deleteFile(params) {
192
192
  if (!bucket._def.beforeDelete) {
193
193
  throw new Error('You need to define beforeDelete if you want to delete files directly from the frontend.');
194
194
  }
195
- const file = await provider.getFile({
195
+ const fileInfo = await provider.getFile({
196
196
  url
197
197
  });
198
198
  const canDelete = await bucket._def.beforeDelete({
199
199
  ctx,
200
- file
200
+ fileInfo
201
201
  });
202
202
  if (!canDelete) {
203
203
  throw new Error('Delete not allowed');
@@ -182,12 +182,12 @@ async function deleteFile(params) {
182
182
  if (!bucket._def.beforeDelete) {
183
183
  throw new Error('You need to define beforeDelete if you want to delete files directly from the frontend.');
184
184
  }
185
- const file = await provider.getFile({
185
+ const fileInfo = await provider.getFile({
186
186
  url,
187
187
  });
188
188
  const canDelete = await bucket._def.beforeDelete({
189
189
  ctx,
190
- file,
190
+ fileInfo,
191
191
  });
192
192
  if (!canDelete) {
193
193
  throw new Error('Delete not allowed');
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@edgestore/server",
3
- "version": "0.0.0-alpha.13",
4
- "description": "Image Handling for React/Next.js",
3
+ "version": "0.0.0-alpha.14",
4
+ "description": "The best DX for uploading files from your Next.js app",
5
5
  "homepage": "https://edgestore.dev",
6
- "repository": "https://github.com/edgestorejs/edge-store.git",
6
+ "repository": "https://github.com/edgestorejs/edgestore.git",
7
7
  "author": "Ravi <me@ravi.com>",
8
8
  "main": "dist/index.js",
9
9
  "module": "dist/index.mjs",
@@ -12,6 +12,8 @@
12
12
  "react",
13
13
  "nodejs",
14
14
  "nextjs",
15
+ "upload",
16
+ "file",
15
17
  "image",
16
18
  "cdn",
17
19
  "edgestore",
@@ -92,5 +94,5 @@
92
94
  "typescript": "^5.1.6",
93
95
  "zod": "^3.21.4"
94
96
  },
95
- "gitHead": "f89bcb0360feec96fb842ad447d86a0e5c58900d"
97
+ "gitHead": "6e0044e7fcb252014e5a4fc9257d54e897f42b84"
96
98
  }
@@ -96,6 +96,29 @@ export function createEdgeStoreNextHandler<TCtx>(config: Config<TCtx>) {
96
96
  return new Response(null, {
97
97
  status: 200,
98
98
  });
99
+ } else if (req.nextUrl.pathname === '/api/edgestore/proxy-file') {
100
+ const url = req.nextUrl.searchParams.get('url');
101
+ if (typeof url === 'string') {
102
+ const proxyRes = await fetch(url, {
103
+ headers: {
104
+ cookie: req.cookies.toString() ?? '',
105
+ },
106
+ });
107
+
108
+ const data = await proxyRes.arrayBuffer();
109
+ return new Response(data, {
110
+ status: proxyRes.status,
111
+ headers: {
112
+ 'Content-Type':
113
+ proxyRes.headers.get('Content-Type') ??
114
+ 'application/octet-stream',
115
+ },
116
+ });
117
+ } else {
118
+ return new Response(null, {
119
+ status: 400,
120
+ });
121
+ }
99
122
  } else {
100
123
  return new Response(null, {
101
124
  status: 404,
@@ -77,6 +77,25 @@ export function createEdgeStoreNextHandler<TCtx>(config: Config<TCtx>) {
77
77
  ctxToken: req.cookies['edgestore-ctx'],
78
78
  });
79
79
  res.status(200).end();
80
+ } else if (req.url?.startsWith('/api/edgestore/proxy-file')) {
81
+ const { url } = req.query;
82
+ if (typeof url === 'string') {
83
+ const proxyRes = await fetch(url, {
84
+ headers: {
85
+ cookie: req.headers.cookie ?? '',
86
+ },
87
+ });
88
+
89
+ const data = await proxyRes.arrayBuffer();
90
+ res.setHeader(
91
+ 'Content-Type',
92
+ proxyRes.headers.get('Content-Type') ?? 'application/octet-stream',
93
+ );
94
+
95
+ res.end(Buffer.from(data));
96
+ } else {
97
+ res.status(400).end();
98
+ }
80
99
  } else {
81
100
  res.status(404).end();
82
101
  }
@@ -239,12 +239,12 @@ export async function deleteFile<TCtx>(params: {
239
239
  );
240
240
  }
241
241
 
242
- const file = await provider.getFile({
242
+ const fileInfo = await provider.getFile({
243
243
  url,
244
244
  });
245
245
  const canDelete = await bucket._def.beforeDelete({
246
246
  ctx,
247
- file,
247
+ fileInfo,
248
248
  });
249
249
  if (!canDelete) {
250
250
  throw new Error('Delete not allowed');
@@ -3,6 +3,7 @@ import { Simplify } from '../../types';
3
3
  import {
4
4
  AnyBuilder,
5
5
  InferBucketPathKeys,
6
+ InferBucketPathObject,
6
7
  InferMetadataObject,
7
8
  } from '../internals/bucketBuilder';
8
9
  import { initEdgeStoreSdk } from '../sdk';
@@ -12,9 +13,7 @@ export type GetFileRes<TBucket extends AnyBuilder> = {
12
13
  size: number;
13
14
  uploadedAt: Date;
14
15
  metadata: InferMetadataObject<TBucket>;
15
- path: {
16
- [TKey in InferBucketPathKeys<TBucket>]: string;
17
- };
16
+ path: InferBucketPathObject<TBucket>;
18
17
  };
19
18
 
20
19
  type Filter<TBucket extends AnyBuilder> = {
@@ -45,18 +44,14 @@ export type ListFilesResponse<TBucket extends AnyBuilder> = {
45
44
  size: number;
46
45
  uploadedAt: Date;
47
46
  metadata: InferMetadataObject<TBucket>;
48
- path: {
49
- [TKey in InferBucketPathKeys<TBucket>]: string;
50
- };
47
+ path: InferBucketPathObject<TBucket>;
51
48
  }[]
52
49
  : {
53
50
  url: string;
54
51
  size: number;
55
52
  uploadedAt: Date;
56
53
  metadata: InferMetadataObject<TBucket>;
57
- path: {
58
- [TKey in InferBucketPathKeys<TBucket>]: string;
59
- };
54
+ path: InferBucketPathObject<TBucket>;
60
55
  }[];
61
56
  pagination: {
62
57
  currentPage: number;
@@ -104,6 +99,14 @@ export function initEdgeStoreClient<TRouter extends AnyRouter>(config: {
104
99
  router: TRouter;
105
100
  accessKey?: string;
106
101
  secretKey?: string;
102
+ /**
103
+ * The base URL of your application.
104
+ *
105
+ * This is only needed for getting protected files on a development environment.
106
+ *
107
+ * @example http://localhost:3000/api/edgestore
108
+ */
109
+ baseUrl?: string;
107
110
  }) {
108
111
  const sdk = initEdgeStoreSdk({
109
112
  accessKey: config.accessKey,
@@ -120,7 +123,7 @@ export function initEdgeStoreClient<TRouter extends AnyRouter>(config: {
120
123
  async getFile(params) {
121
124
  const res = await sdk.getFile(params);
122
125
  return {
123
- url: res.url,
126
+ url: getUrl(res.url, config.baseUrl),
124
127
  size: res.size,
125
128
  uploadedAt: new Date(res.uploadedAt),
126
129
  metadata: res.metadata,
@@ -179,7 +182,7 @@ export function initEdgeStoreClient<TRouter extends AnyRouter>(config: {
179
182
 
180
183
  const files = res.data.map((file) => {
181
184
  return {
182
- url: file.url,
185
+ url: getUrl(file.url, config.baseUrl),
183
186
  thumbnailUrl: file.thumbnailUrl,
184
187
  size: file.size,
185
188
  uploadedAt: new Date(file.uploadedAt),
@@ -201,6 +204,28 @@ export function initEdgeStoreClient<TRouter extends AnyRouter>(config: {
201
204
  });
202
205
  }
203
206
 
207
+ /**
208
+ * Protected files need third-party cookies to work.
209
+ * Since third party cookies doesn't work on localhost,
210
+ * we need to proxy the file through the server.
211
+ */
212
+ function getUrl(url: string, baseUrl?: string) {
213
+ if (process.env.NODE_ENV === 'development' && !url.includes('/_public/')) {
214
+ if (!baseUrl) {
215
+ throw new Error(
216
+ 'Missing baseUrl. You need to pass the baseUrl to `initEdgeStoreClient` to get protected files in development.',
217
+ );
218
+ }
219
+ const proxyUrl = new URL(baseUrl);
220
+ proxyUrl.pathname = `${proxyUrl.pathname}/proxy-file`;
221
+ proxyUrl.search = new URLSearchParams({
222
+ url,
223
+ }).toString();
224
+ return proxyUrl.toString();
225
+ }
226
+ return url;
227
+ }
228
+
204
229
  export type InferClientResponse<TRouter extends AnyRouter> = {
205
230
  [TBucketName in keyof TRouter['buckets']]: {
206
231
  [TClienFn in keyof EdgeStoreClient<TRouter>[TBucketName]]: Simplify<
package/src/core/index.ts CHANGED
@@ -4,6 +4,7 @@ export * from './client';
4
4
  export * from './sdk';
5
5
  export type {
6
6
  InferBucketPathKeys,
7
+ InferBucketPathObject,
7
8
  InferMetadataObject,
8
9
  } from './internals/bucketBuilder';
9
10
 
@@ -29,6 +29,20 @@ type InferBucketPathKeysFromDef<TDef extends AnyDef> = KeysOfUnion<
29
29
  TDef['path'][number]
30
30
  >;
31
31
 
32
+ export type InferBucketPathObject<TBucket extends Builder<any, AnyDef>> =
33
+ InferBucketPathKeys<TBucket> extends never
34
+ ? Record<string, never>
35
+ : {
36
+ [TKey in InferBucketPathKeys<TBucket>]: string;
37
+ };
38
+
39
+ export type InferBucketPathObjectFromDef<TDef extends AnyDef> =
40
+ InferBucketPathKeysFromDef<TDef> extends never
41
+ ? Record<string, never>
42
+ : {
43
+ [TKey in InferBucketPathKeysFromDef<TDef>]: string;
44
+ };
45
+
32
46
  export type InferMetadataObject<TBucket extends Builder<any, AnyDef>> =
33
47
  TBucket['_def']['metadata'] extends (...args: any) => any
34
48
  ? Awaited<ReturnType<TBucket['_def']['metadata']>>
@@ -109,13 +123,11 @@ type BeforeUploadFn<TCtx, TDef extends AnyDef> = (params: {
109
123
 
110
124
  type BeforeDeleteFn<TCtx, TDef extends AnyDef> = (params: {
111
125
  ctx: TCtx;
112
- file: {
126
+ fileInfo: {
113
127
  url: string;
114
128
  size: number;
115
129
  uploadedAt: Date;
116
- path: {
117
- [TKey in InferBucketPathKeysFromDef<TDef>]: string;
118
- };
130
+ path: InferBucketPathObjectFromDef<TDef>;
119
131
  metadata: InferMetadataObjectFromDef<TDef>;
120
132
  };
121
133
  }) => MaybePromise<boolean>;
@@ -158,6 +170,11 @@ type Builder<TCtx, TDef extends AnyDef> = {
158
170
  * @internal
159
171
  */
160
172
  _def: TDef;
173
+ /**
174
+ * You can set an input that will be required in every upload from the client.
175
+ *
176
+ * This can be used to add additional information to the file, like choose the file path or add metadata.
177
+ */
161
178
  input<TInput extends AnyInput>(
162
179
  input: TInput,
163
180
  ): Builder<
@@ -173,6 +190,18 @@ type Builder<TCtx, TDef extends AnyDef> = {
173
190
  beforeDelete: TDef['beforeDelete'];
174
191
  }
175
192
  >;
193
+ /**
194
+ * The `path` is similar to folders in a file system.
195
+ * But in this case, every segment of the path must have a meaning.
196
+ *
197
+ * ```
198
+ * // e.g. 123/profile/file.jpg
199
+ * {
200
+ * author: '123',
201
+ * type: 'profile',
202
+ * }
203
+ * ```
204
+ */
176
205
  path<TParams extends AnyPath>(
177
206
  pathResolver: (params: {
178
207
  ctx: Simplify<ConvertStringToFunction<TCtx>>;
@@ -191,6 +220,11 @@ type Builder<TCtx, TDef extends AnyDef> = {
191
220
  beforeDelete: TDef['beforeDelete'];
192
221
  }
193
222
  >;
223
+ /**
224
+ * This metadata will be added to every file uploaded to this bucket.
225
+ *
226
+ * This can be used, for example, to filter files.
227
+ */
194
228
  metadata<TMetadata extends AnyMetadata>(
195
229
  metadata: MetadataFn<TCtx, TDef['input'], TMetadata>,
196
230
  ): Builder<
@@ -206,6 +240,12 @@ type Builder<TCtx, TDef extends AnyDef> = {
206
240
  beforeDelete: TDef['beforeDelete'];
207
241
  }
208
242
  >;
243
+ /**
244
+ * If you set this, your bucket will automatically be configured as a protected bucket.
245
+ *
246
+ * This means that images will only be accessible from within your app.
247
+ * And only if it passes the check set in this function.
248
+ */
209
249
  accessControl(accessControl: AccessControlSchema<TCtx, TDef>): Builder<
210
250
  TCtx,
211
251
  {
@@ -219,6 +259,11 @@ type Builder<TCtx, TDef extends AnyDef> = {
219
259
  beforeDelete: TDef['beforeDelete'];
220
260
  }
221
261
  >;
262
+ /**
263
+ * return `true` to allow upload
264
+ *
265
+ * By default every upload from your app is allowed.
266
+ */
222
267
  beforeUpload(beforeUpload: BeforeUploadFn<TCtx, TDef>): Builder<
223
268
  TCtx,
224
269
  {
@@ -232,6 +277,11 @@ type Builder<TCtx, TDef extends AnyDef> = {
232
277
  beforeDelete: TDef['beforeDelete'];
233
278
  }
234
279
  >;
280
+ /**
281
+ * return `true` to allow delete
282
+ *
283
+ * This function must be defined if you want to delete files directly from the client.
284
+ */
235
285
  beforeDelete(beforeDelete: BeforeDeleteFn<TCtx, TDef>): Builder<
236
286
  TCtx,
237
287
  {
@@ -2,13 +2,11 @@ import { initEdgeStoreSdk } from '../../core/sdk';
2
2
  import EdgeStoreCredentialsError from '../../libs/errors/EdgeStoreCredentialsError';
3
3
  import { Provider, RequestUploadRes } from '../types';
4
4
 
5
- const DEFAULT_BASE_URL =
6
- process.env.EDGE_STORE_BASE_URL ?? 'https://files.edgestore.dev';
5
+ const DEFAULT_BASE_URL = 'https://files.edgestore.dev';
7
6
 
8
7
  export type EdgeStoreProviderOptions = {
9
8
  accessKey?: string;
10
9
  secretKey?: string;
11
- baseUrl?: string;
12
10
  };
13
11
 
14
12
  export function EdgeStoreProvider(
@@ -17,9 +15,10 @@ export function EdgeStoreProvider(
17
15
  const {
18
16
  accessKey = process.env.EDGE_STORE_ACCESS_KEY,
19
17
  secretKey = process.env.EDGE_STORE_SECRET_KEY,
20
- baseUrl = process.env.EDGE_STORE_BASE_URL ?? DEFAULT_BASE_URL,
21
18
  } = options ?? {};
22
19
 
20
+ const baseUrl = process.env.EDGE_STORE_BASE_URL ?? DEFAULT_BASE_URL;
21
+
23
22
  if (!accessKey || !secretKey) {
24
23
  throw new EdgeStoreCredentialsError();
25
24
  }