@edgestore/server 0.1.5-alpha.0 → 0.1.5-alpha.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.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var shared = require('../../../shared-306c1af2.js');
5
+ var shared = require('../../../shared-5d1e7f43.js');
6
6
  var providers_edgestore_index = require('../../../providers/edgestore/index.js');
7
7
  require('@panva/hkdf');
8
8
  require('cookie');
@@ -1,4 +1,4 @@
1
- import { i as init, r as requestUpload, a as requestUploadParts, c as completeMultipartUpload, b as confirmUpload, d as deleteFile, E as EdgeStoreError, e as EDGE_STORE_ERROR_CODES } from '../../../shared-6dea9e91.mjs';
1
+ import { i as init, r as requestUpload, a as requestUploadParts, c as completeMultipartUpload, d as confirmUpload, e as deleteFile, E as EdgeStoreError, f as EDGE_STORE_ERROR_CODES } from '../../../shared-30b7a2ab.mjs';
2
2
  import { EdgeStoreProvider } from '../../../providers/edgestore/index.mjs';
3
3
  import '@panva/hkdf';
4
4
  import 'cookie';
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var shared = require('../../../shared-306c1af2.js');
5
+ var shared = require('../../../shared-5d1e7f43.js');
6
6
  var providers_edgestore_index = require('../../../providers/edgestore/index.js');
7
7
  require('@panva/hkdf');
8
8
  require('cookie');
@@ -1,4 +1,4 @@
1
- import { i as init, r as requestUpload, a as requestUploadParts, c as completeMultipartUpload, b as confirmUpload, d as deleteFile, E as EdgeStoreError, e as EDGE_STORE_ERROR_CODES } from '../../../shared-6dea9e91.mjs';
1
+ import { i as init, r as requestUpload, a as requestUploadParts, c as completeMultipartUpload, d as confirmUpload, e as deleteFile, E as EdgeStoreError, f as EDGE_STORE_ERROR_CODES } from '../../../shared-30b7a2ab.mjs';
2
2
  import { EdgeStoreProvider } from '../../../providers/edgestore/index.mjs';
3
3
  import '@panva/hkdf';
4
4
  import 'cookie';
@@ -1,4 +1,4 @@
1
- import { type EdgeStoreRouter } from '../core/internals/bucketBuilder';
1
+ import { type AnyBuilder, type EdgeStoreRouter } from '../core/internals/bucketBuilder';
2
2
  import { type Provider } from '../providers/types';
3
3
  export declare function init<TCtx>(params: {
4
4
  provider: Provider;
@@ -102,6 +102,24 @@ export declare function deleteFile<TCtx>(params: {
102
102
  ctxToken: string | undefined;
103
103
  body: DeleteFileBody;
104
104
  }): Promise<import("../providers/types").DeleteFileRes>;
105
+ export declare function buildPath(params: {
106
+ fileInfo: RequestUploadBody['fileInfo'];
107
+ bucket: AnyBuilder;
108
+ pathAttrs: {
109
+ ctx: any;
110
+ input: any;
111
+ };
112
+ }): {
113
+ key: string;
114
+ value: string;
115
+ }[];
116
+ export declare function parsePath(path: {
117
+ key: string;
118
+ value: string;
119
+ }[]): {
120
+ parsedPath: Record<string, string>;
121
+ pathOrder: string[];
122
+ };
105
123
  export type InitRes = Awaited<ReturnType<typeof init>>;
106
124
  export type RequestUploadRes = Awaited<ReturnType<typeof requestUpload>>;
107
125
  export type RequestUploadPartsRes = Awaited<ReturnType<typeof requestUploadParts>>;
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/adapters/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/adapters/shared.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,eAAe,EACrB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAMnD,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;IACvC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,GAAG,EAAE,IAAI,CAAC;CACX;;;;GA4BA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;CACH,CAAC;AAEF,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE;IAChD,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,iBAAiB,CAAC;CACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2GA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;IACF,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE;IACrD,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,wBAAwB,CAAC;CAChC,+DAsBA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;KACd,EAAE,CAAC;CACL,CAAC;AAEF,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE;IAC1D,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,2BAA2B,CAAC;CACnC,oEAuBA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE;IAChD,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,iBAAiB,CAAC;CACzB,0DAwBA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE;IAC7C,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,cAAc,CAAC;CACtB,uDAwCA;AA4CD,wBAAgB,SAAS,CAAC,MAAM,EAAE;IAChC,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE;QACT,GAAG,EAAE,GAAG,CAAC;QACT,KAAK,EAAE,GAAG,CAAC;KACZ,CAAC;CACH;;;IAwBA;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE;;;EAU/D;AA2BD,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;AACvD,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC;AACzE,MAAM,MAAM,qBAAqB,GAAG,OAAO,CACzC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CACtC,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC"}
@@ -1,5 +1,6 @@
1
+ import { type z, type ZodNever } from 'zod';
1
2
  import { type AnyRouter, type Comparison } from '..';
2
- import { type Simplify } from '../../types';
3
+ import { type Prettify, type Simplify } from '../../types';
3
4
  import { type AnyBuilder, type InferBucketPathKeys, type InferBucketPathObject, type InferMetadataObject } from '../internals/bucketBuilder';
4
5
  export type GetFileRes<TBucket extends AnyBuilder> = {
5
6
  url: string;
@@ -8,6 +9,53 @@ export type GetFileRes<TBucket extends AnyBuilder> = {
8
9
  metadata: InferMetadataObject<TBucket>;
9
10
  path: InferBucketPathObject<TBucket>;
10
11
  };
12
+ export type UploadOptions = {
13
+ /**
14
+ * e.g. 'my-file-name.jpg'
15
+ *
16
+ * By default, a unique file name will be generated for each upload.
17
+ * If you want to use a custom file name, you can use this option.
18
+ * If you use the same file name for multiple uploads, the previous file will be overwritten.
19
+ * But it might take some time for the CDN cache to be cleared.
20
+ * So maybe you will keep seeing the old file for a while.
21
+ *
22
+ * If you want to replace an existing file immediately leave the `manualFileName` option empty and use the `replaceTargetUrl` option.
23
+ */
24
+ manualFileName?: string;
25
+ /**
26
+ * Use this to replace an existing file.
27
+ * It will automatically delete the existing file when the upload is complete.
28
+ */
29
+ replaceTargetUrl?: string;
30
+ /**
31
+ * If true, the file needs to be confirmed by using the `confirmUpload` function.
32
+ * If the file is not confirmed within 24 hours, it will be deleted.
33
+ *
34
+ * This is useful for pages where the file is uploaded as soon as it is selected,
35
+ * but the user can leave the page without submitting the form.
36
+ *
37
+ * This avoids unnecessary zombie files in the bucket.
38
+ */
39
+ temporary?: boolean;
40
+ };
41
+ export type UploadFileRequest<TBucket extends AnyBuilder> = {
42
+ content: string | {
43
+ blob: Blob;
44
+ extension: string;
45
+ };
46
+ options?: UploadOptions;
47
+ } & (TBucket['$config']['ctx'] extends Record<string, never> ? {} : {
48
+ ctx: TBucket['$config']['ctx'];
49
+ }) & (TBucket['_def']['input'] extends ZodNever ? {} : {
50
+ input: z.infer<TBucket['_def']['input']>;
51
+ });
52
+ export type UploadFileRes<TBucket extends AnyBuilder> = {
53
+ url: string;
54
+ size: number;
55
+ metadata: InferMetadataObject<TBucket>;
56
+ path: InferBucketPathObject<TBucket>;
57
+ pathOrder: (keyof InferBucketPathObject<TBucket>)[];
58
+ };
11
59
  type Filter<TBucket extends AnyBuilder> = {
12
60
  AND?: Filter<TBucket>[];
13
61
  OR?: Filter<TBucket>[];
@@ -52,6 +100,7 @@ type EdgeStoreClient<TRouter extends AnyRouter> = {
52
100
  getFile: (params: {
53
101
  url: string;
54
102
  }) => Promise<GetFileRes<TRouter['buckets'][K]>>;
103
+ upload: (params: UploadFileRequest<TRouter['buckets'][K]>) => Promise<Prettify<UploadFileRes<TRouter['buckets'][K]>>>;
55
104
  /**
56
105
  * Confirm a temporary file upload.
57
106
  */
@@ -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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"}
@@ -2,7 +2,13 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var shared = require('../shared-5d1e7f43.js');
5
6
  var index = require('../index-50ab9e08.js');
7
+ require('@panva/hkdf');
8
+ require('cookie');
9
+ require('jose');
10
+ require('uuid');
11
+ require('@swc/helpers/_/_define_property');
6
12
 
7
13
  function initEdgeStoreClient(config) {
8
14
  const sdk = index.initEdgeStoreSdk({
@@ -17,6 +23,82 @@ function initEdgeStoreClient(config) {
17
23
  throw new Error(`Bucket ${bucketName} not found`);
18
24
  }
19
25
  const client = {
26
+ async upload (params) {
27
+ const content = params.content;
28
+ const ctx = 'ctx' in params ? params.ctx : {};
29
+ const input = 'input' in params ? params.input : {};
30
+ const { blob, extension } = (()=>{
31
+ if (typeof content === 'string') {
32
+ return {
33
+ blob: new Blob([
34
+ content
35
+ ], {
36
+ type: 'text/plain'
37
+ }),
38
+ extension: 'txt'
39
+ };
40
+ } else {
41
+ return {
42
+ blob: content.blob,
43
+ extension: content.extension
44
+ };
45
+ }
46
+ })();
47
+ const path = shared.buildPath({
48
+ bucket,
49
+ pathAttrs: {
50
+ ctx,
51
+ input
52
+ },
53
+ fileInfo: {
54
+ type: blob.type,
55
+ size: blob.size,
56
+ extension,
57
+ temporary: false,
58
+ fileName: params.options?.manualFileName,
59
+ replaceTargetUrl: params.options?.replaceTargetUrl
60
+ }
61
+ });
62
+ const metadata = await bucket._def.metadata({
63
+ ctx,
64
+ input
65
+ });
66
+ const requestUploadRes = await sdk.requestUpload({
67
+ bucketName,
68
+ bucketType: bucket._def.type,
69
+ fileInfo: {
70
+ fileName: params.options?.manualFileName,
71
+ replaceTargetUrl: params.options?.replaceTargetUrl,
72
+ type: blob.type,
73
+ size: blob.size,
74
+ extension,
75
+ isPublic: bucket._def.accessControl === undefined,
76
+ temporary: params.options?.temporary ?? false,
77
+ path,
78
+ metadata
79
+ }
80
+ });
81
+ const { signedUrl, multipart } = requestUploadRes;
82
+ if (multipart) {
83
+ // TODO
84
+ throw new Error('Multipart upload not implemented');
85
+ } else if (signedUrl) {
86
+ await fetch(signedUrl, {
87
+ method: 'PUT',
88
+ body: blob
89
+ });
90
+ } else {
91
+ throw new Error('Missing signedUrl');
92
+ }
93
+ const { parsedPath, pathOrder } = shared.parsePath(path);
94
+ return {
95
+ url: requestUploadRes.accessUrl,
96
+ size: blob.size,
97
+ metadata,
98
+ path: parsedPath,
99
+ pathOrder
100
+ };
101
+ },
20
102
  async getFile (params) {
21
103
  const res = await sdk.getFile(params);
22
104
  return {
@@ -27,39 +109,6 @@ function initEdgeStoreClient(config) {
27
109
  path: res.path
28
110
  };
29
111
  },
30
- // TODO: Replace with `upload`
31
- // async requestUpload(params) {
32
- // const { file, path, metadata, replaceTargetUrl } = params;
33
- // const fileExtension = file.name.includes('.')
34
- // ? file.name.split('.').pop()
35
- // : undefined;
36
- // if (!fileExtension) {
37
- // throw new Error('Missing file extension');
38
- // }
39
- // const parsedPath = Object.keys(bucket._def.path).map((key) => {
40
- // const value = path[key as keyof typeof path];
41
- // if (value === undefined) {
42
- // throw new Error(`Missing path param ${key}`);
43
- // }
44
- // return {
45
- // key,
46
- // value,
47
- // };
48
- // });
49
- // const fileInfo = {
50
- // size: file.size,
51
- // extension: fileExtension,
52
- // isPublic: bucket._def.accessControl === undefined,
53
- // path: parsedPath,
54
- // metadata,
55
- // replaceTargetUrl,
56
- // };
57
- // return await sdk.requestUpload({
58
- // bucketName,
59
- // bucketType: bucket._def.type,
60
- // fileInfo,
61
- // });
62
- // },
63
112
  async confirmUpload (params) {
64
113
  return await sdk.confirmUpload(params);
65
114
  },
@@ -1,5 +1,11 @@
1
+ import { b as buildPath, p as parsePath } from '../shared-30b7a2ab.mjs';
1
2
  import { i as initEdgeStoreSdk } from '../index-30a3741e.mjs';
2
3
  export { e as edgeStoreRawSdk, i as initEdgeStoreSdk } from '../index-30a3741e.mjs';
4
+ import '@panva/hkdf';
5
+ import 'cookie';
6
+ import 'jose';
7
+ import 'uuid';
8
+ import '@swc/helpers/_/_define_property';
3
9
 
4
10
  function initEdgeStoreClient(config) {
5
11
  const sdk = initEdgeStoreSdk({
@@ -14,6 +20,82 @@ function initEdgeStoreClient(config) {
14
20
  throw new Error(`Bucket ${bucketName} not found`);
15
21
  }
16
22
  const client = {
23
+ async upload (params) {
24
+ const content = params.content;
25
+ const ctx = 'ctx' in params ? params.ctx : {};
26
+ const input = 'input' in params ? params.input : {};
27
+ const { blob, extension } = (()=>{
28
+ if (typeof content === 'string') {
29
+ return {
30
+ blob: new Blob([
31
+ content
32
+ ], {
33
+ type: 'text/plain'
34
+ }),
35
+ extension: 'txt'
36
+ };
37
+ } else {
38
+ return {
39
+ blob: content.blob,
40
+ extension: content.extension
41
+ };
42
+ }
43
+ })();
44
+ const path = buildPath({
45
+ bucket,
46
+ pathAttrs: {
47
+ ctx,
48
+ input
49
+ },
50
+ fileInfo: {
51
+ type: blob.type,
52
+ size: blob.size,
53
+ extension,
54
+ temporary: false,
55
+ fileName: params.options?.manualFileName,
56
+ replaceTargetUrl: params.options?.replaceTargetUrl
57
+ }
58
+ });
59
+ const metadata = await bucket._def.metadata({
60
+ ctx,
61
+ input
62
+ });
63
+ const requestUploadRes = await sdk.requestUpload({
64
+ bucketName,
65
+ bucketType: bucket._def.type,
66
+ fileInfo: {
67
+ fileName: params.options?.manualFileName,
68
+ replaceTargetUrl: params.options?.replaceTargetUrl,
69
+ type: blob.type,
70
+ size: blob.size,
71
+ extension,
72
+ isPublic: bucket._def.accessControl === undefined,
73
+ temporary: params.options?.temporary ?? false,
74
+ path,
75
+ metadata
76
+ }
77
+ });
78
+ const { signedUrl, multipart } = requestUploadRes;
79
+ if (multipart) {
80
+ // TODO
81
+ throw new Error('Multipart upload not implemented');
82
+ } else if (signedUrl) {
83
+ await fetch(signedUrl, {
84
+ method: 'PUT',
85
+ body: blob
86
+ });
87
+ } else {
88
+ throw new Error('Missing signedUrl');
89
+ }
90
+ const { parsedPath, pathOrder } = parsePath(path);
91
+ return {
92
+ url: requestUploadRes.accessUrl,
93
+ size: blob.size,
94
+ metadata,
95
+ path: parsedPath,
96
+ pathOrder
97
+ };
98
+ },
17
99
  async getFile (params) {
18
100
  const res = await sdk.getFile(params);
19
101
  return {
@@ -24,39 +106,6 @@ function initEdgeStoreClient(config) {
24
106
  path: res.path
25
107
  };
26
108
  },
27
- // TODO: Replace with `upload`
28
- // async requestUpload(params) {
29
- // const { file, path, metadata, replaceTargetUrl } = params;
30
- // const fileExtension = file.name.includes('.')
31
- // ? file.name.split('.').pop()
32
- // : undefined;
33
- // if (!fileExtension) {
34
- // throw new Error('Missing file extension');
35
- // }
36
- // const parsedPath = Object.keys(bucket._def.path).map((key) => {
37
- // const value = path[key as keyof typeof path];
38
- // if (value === undefined) {
39
- // throw new Error(`Missing path param ${key}`);
40
- // }
41
- // return {
42
- // key,
43
- // value,
44
- // };
45
- // });
46
- // const fileInfo = {
47
- // size: file.size,
48
- // extension: fileExtension,
49
- // isPublic: bucket._def.accessControl === undefined,
50
- // path: parsedPath,
51
- // metadata,
52
- // replaceTargetUrl,
53
- // };
54
- // return await sdk.requestUpload({
55
- // bucketName,
56
- // bucketType: bucket._def.type,
57
- // fileInfo,
58
- // });
59
- // },
60
109
  async confirmUpload (params) {
61
110
  return await sdk.confirmUpload(params);
62
111
  },
@@ -45,7 +45,7 @@ function AWSProvider(options) {
45
45
  const pathPrefix = `${esBucketName}${fileInfo.isPublic ? '/_public' : ''}`;
46
46
  const nameId = uuid.v4();
47
47
  const extension = fileInfo.extension ? `.${fileInfo.extension.replace('.', '')}` : '';
48
- const fileName = `${nameId}${extension}`;
48
+ const fileName = fileInfo.fileName ?? `${nameId}${extension}`;
49
49
  const filePath = fileInfo.path.reduce((acc, item)=>{
50
50
  return `${acc}/${item.value}`;
51
51
  }, '');
@@ -41,7 +41,7 @@ function AWSProvider(options) {
41
41
  const pathPrefix = `${esBucketName}${fileInfo.isPublic ? '/_public' : ''}`;
42
42
  const nameId = v4();
43
43
  const extension = fileInfo.extension ? `.${fileInfo.extension.replace('.', '')}` : '';
44
- const fileName = `${nameId}${extension}`;
44
+ const fileName = fileInfo.fileName ?? `${nameId}${extension}`;
45
45
  const filePath = fileInfo.path.reduce((acc, item)=>{
46
46
  return `${acc}/${item.value}`;
47
47
  }, '');
@@ -32,6 +32,7 @@ export type RequestUploadParams = {
32
32
  size: number;
33
33
  extension: string;
34
34
  isPublic: boolean;
35
+ fileName?: string;
35
36
  path: {
36
37
  key: string;
37
38
  value: string;
@@ -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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"}
@@ -149,11 +149,7 @@ async function requestUpload(params) {
149
149
  metadata
150
150
  }
151
151
  });
152
- const parsedPath = path.reduce((acc, curr)=>{
153
- acc[curr.key] = curr.value;
154
- return acc;
155
- }, {});
156
- const pathOrder = path.map((p)=>p.key);
152
+ const { parsedPath, pathOrder } = parsePath(path);
157
153
  return {
158
154
  ...requestUploadRes,
159
155
  size: fileInfo.size,
@@ -297,6 +293,17 @@ function buildPath(params) {
297
293
  });
298
294
  return path;
299
295
  }
296
+ function parsePath(path) {
297
+ const parsedPath = path.reduce((acc, curr)=>{
298
+ acc[curr.key] = curr.value;
299
+ return acc;
300
+ }, {});
301
+ const pathOrder = path.map((p)=>p.key);
302
+ return {
303
+ parsedPath,
304
+ pathOrder
305
+ };
306
+ }
300
307
  async function getContext(token) {
301
308
  if (!token) {
302
309
  throw new Error('No token');
@@ -320,4 +327,4 @@ async function getContext(token) {
320
327
  return url;
321
328
  }
322
329
 
323
- 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 };
330
+ export { EdgeStoreError as E, requestUploadParts as a, buildPath as b, completeMultipartUpload as c, confirmUpload as d, deleteFile as e, EDGE_STORE_ERROR_CODES as f, init as i, parsePath as p, requestUpload as r };
@@ -151,11 +151,7 @@ async function requestUpload(params) {
151
151
  metadata
152
152
  }
153
153
  });
154
- const parsedPath = path.reduce((acc, curr)=>{
155
- acc[curr.key] = curr.value;
156
- return acc;
157
- }, {});
158
- const pathOrder = path.map((p)=>p.key);
154
+ const { parsedPath, pathOrder } = parsePath(path);
159
155
  return {
160
156
  ...requestUploadRes,
161
157
  size: fileInfo.size,
@@ -299,6 +295,17 @@ function buildPath(params) {
299
295
  });
300
296
  return path;
301
297
  }
298
+ function parsePath(path) {
299
+ const parsedPath = path.reduce((acc, curr)=>{
300
+ acc[curr.key] = curr.value;
301
+ return acc;
302
+ }, {});
303
+ const pathOrder = path.map((p)=>p.key);
304
+ return {
305
+ parsedPath,
306
+ pathOrder
307
+ };
308
+ }
302
309
  async function getContext(token) {
303
310
  if (!token) {
304
311
  throw new Error('No token');
@@ -324,9 +331,11 @@ async function getContext(token) {
324
331
 
325
332
  exports.EDGE_STORE_ERROR_CODES = EDGE_STORE_ERROR_CODES;
326
333
  exports.EdgeStoreError = EdgeStoreError;
334
+ exports.buildPath = buildPath;
327
335
  exports.completeMultipartUpload = completeMultipartUpload;
328
336
  exports.confirmUpload = confirmUpload;
329
337
  exports.deleteFile = deleteFile;
330
338
  exports.init = init;
339
+ exports.parsePath = parsePath;
331
340
  exports.requestUpload = requestUpload;
332
341
  exports.requestUploadParts = requestUploadParts;
@@ -141,11 +141,7 @@ async function requestUpload(params) {
141
141
  metadata,
142
142
  },
143
143
  });
144
- const parsedPath = path.reduce((acc, curr) => {
145
- acc[curr.key] = curr.value;
146
- return acc;
147
- }, {});
148
- const pathOrder = path.map((p) => p.key);
144
+ const { parsedPath, pathOrder } = parsePath(path);
149
145
  return {
150
146
  ...requestUploadRes,
151
147
  size: fileInfo.size,
@@ -293,6 +289,17 @@ function buildPath(params) {
293
289
  });
294
290
  return path;
295
291
  }
292
+ function parsePath(path) {
293
+ const parsedPath = path.reduce((acc, curr) => {
294
+ acc[curr.key] = curr.value;
295
+ return acc;
296
+ }, {});
297
+ const pathOrder = path.map((p) => p.key);
298
+ return {
299
+ parsedPath,
300
+ pathOrder,
301
+ };
302
+ }
296
303
  async function getContext(token) {
297
304
  if (!token) {
298
305
  throw new Error('No token');
@@ -317,4 +324,4 @@ function unproxyUrl(url) {
317
324
  return url;
318
325
  }
319
326
 
320
- 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 };
327
+ export { EdgeStoreError as E, requestUploadParts as a, buildPath as b, completeMultipartUpload as c, confirmUpload as d, deleteFile as e, EDGE_STORE_ERROR_CODES as f, init as i, parsePath as p, requestUpload as r };
package/dist/types.d.ts CHANGED
@@ -35,6 +35,12 @@ export type ThenArg<TType> = TType extends PromiseLike<infer U> ? ThenArg<U> : T
35
35
  export type Simplify<TType> = TType extends any[] | Date ? TType : {
36
36
  [K in keyof TType]: TType[K];
37
37
  };
38
+ /**
39
+ * @internal
40
+ */
41
+ export type Prettify<TType> = {
42
+ [K in keyof TType]: TType[K];
43
+ } & {};
38
44
  /**
39
45
  * @public
40
46
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edgestore/server",
3
- "version": "0.1.5-alpha.0",
3
+ "version": "0.1.5-alpha.2",
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",
@@ -117,5 +117,5 @@
117
117
  "typescript": "^5.1.6",
118
118
  "zod": "^3.21.4"
119
119
  },
120
- "gitHead": "bea31f57147499993eaf25c86f24c211dc86dd91"
120
+ "gitHead": "d14ccf9e6af38023cfab35d4b64bc75cc69052b4"
121
121
  }
@@ -162,12 +162,8 @@ export async function requestUpload<TCtx>(params: {
162
162
  metadata,
163
163
  },
164
164
  });
165
- const parsedPath = path.reduce<Record<string, string>>((acc, curr) => {
166
- acc[curr.key] = curr.value;
167
- return acc;
168
- }, {});
165
+ const { parsedPath, pathOrder } = parsePath(path);
169
166
 
170
- const pathOrder = path.map((p) => p.key);
171
167
  return {
172
168
  ...requestUploadRes,
173
169
  size: fileInfo.size,
@@ -385,7 +381,7 @@ async function getDerivedEncryptionKey(secret: string) {
385
381
  );
386
382
  }
387
383
 
388
- function buildPath(params: {
384
+ export function buildPath(params: {
389
385
  fileInfo: RequestUploadBody['fileInfo'];
390
386
  bucket: AnyBuilder;
391
387
  pathAttrs: {
@@ -418,6 +414,18 @@ function buildPath(params: {
418
414
  return path;
419
415
  }
420
416
 
417
+ export function parsePath(path: { key: string; value: string }[]) {
418
+ const parsedPath = path.reduce<Record<string, string>>((acc, curr) => {
419
+ acc[curr.key] = curr.value;
420
+ return acc;
421
+ }, {});
422
+ const pathOrder = path.map((p) => p.key);
423
+ return {
424
+ parsedPath,
425
+ pathOrder,
426
+ };
427
+ }
428
+
421
429
  async function getContext(token?: string) {
422
430
  if (!token) {
423
431
  throw new Error('No token');
@@ -1,5 +1,8 @@
1
+ /* eslint-disable @typescript-eslint/ban-types */
2
+ import { type z, type ZodNever } from 'zod';
1
3
  import { type AnyRouter, type Comparison } from '..';
2
- import { type Simplify } from '../../types';
4
+ import { buildPath, parsePath } from '../../adapters/shared';
5
+ import { type Prettify, type Simplify } from '../../types';
3
6
  import {
4
7
  type AnyBuilder,
5
8
  type InferBucketPathKeys,
@@ -16,6 +19,63 @@ export type GetFileRes<TBucket extends AnyBuilder> = {
16
19
  path: InferBucketPathObject<TBucket>;
17
20
  };
18
21
 
22
+ export type UploadOptions = {
23
+ /**
24
+ * e.g. 'my-file-name.jpg'
25
+ *
26
+ * By default, a unique file name will be generated for each upload.
27
+ * If you want to use a custom file name, you can use this option.
28
+ * If you use the same file name for multiple uploads, the previous file will be overwritten.
29
+ * But it might take some time for the CDN cache to be cleared.
30
+ * So maybe you will keep seeing the old file for a while.
31
+ *
32
+ * If you want to replace an existing file immediately leave the `manualFileName` option empty and use the `replaceTargetUrl` option.
33
+ */
34
+ manualFileName?: string;
35
+ /**
36
+ * Use this to replace an existing file.
37
+ * It will automatically delete the existing file when the upload is complete.
38
+ */
39
+ replaceTargetUrl?: string;
40
+ /**
41
+ * If true, the file needs to be confirmed by using the `confirmUpload` function.
42
+ * If the file is not confirmed within 24 hours, it will be deleted.
43
+ *
44
+ * This is useful for pages where the file is uploaded as soon as it is selected,
45
+ * but the user can leave the page without submitting the form.
46
+ *
47
+ * This avoids unnecessary zombie files in the bucket.
48
+ */
49
+ temporary?: boolean;
50
+ };
51
+
52
+ export type UploadFileRequest<TBucket extends AnyBuilder> = {
53
+ content:
54
+ | string
55
+ | {
56
+ blob: Blob;
57
+ extension: string;
58
+ };
59
+ options?: UploadOptions;
60
+ } & (TBucket['$config']['ctx'] extends Record<string, never>
61
+ ? {}
62
+ : {
63
+ ctx: TBucket['$config']['ctx'];
64
+ }) &
65
+ (TBucket['_def']['input'] extends ZodNever
66
+ ? {}
67
+ : {
68
+ input: z.infer<TBucket['_def']['input']>;
69
+ });
70
+
71
+ export type UploadFileRes<TBucket extends AnyBuilder> = {
72
+ url: string;
73
+ size: number;
74
+ metadata: InferMetadataObject<TBucket>;
75
+ path: InferBucketPathObject<TBucket>;
76
+ pathOrder: (keyof InferBucketPathObject<TBucket>)[];
77
+ };
78
+
19
79
  type Filter<TBucket extends AnyBuilder> = {
20
80
  AND?: Filter<TBucket>[];
21
81
  OR?: Filter<TBucket>[];
@@ -65,18 +125,9 @@ type EdgeStoreClient<TRouter extends AnyRouter> = {
65
125
  getFile: (params: {
66
126
  url: string;
67
127
  }) => Promise<GetFileRes<TRouter['buckets'][K]>>;
68
- // TODO: replace with `upload`
69
- // requestUpload: (params: {
70
- // file: File;
71
- // path: {
72
- // [TKey in InferBucketPathKeys<TRouter['buckets'][K]>]: string;
73
- // };
74
- // metadata: InferMetadataObject<TRouter['buckets'][K]>;
75
- // replaceTargetUrl?: string;
76
- // }) => Promise<{
77
- // uploadUrl: string;
78
- // accessUrl: string;
79
- // }>;
128
+ upload: (
129
+ params: UploadFileRequest<TRouter['buckets'][K]>,
130
+ ) => Promise<Prettify<UploadFileRes<TRouter['buckets'][K]>>>;
80
131
  /**
81
132
  * Confirm a temporary file upload.
82
133
  */
@@ -124,6 +175,86 @@ export function initEdgeStoreClient<TRouter extends AnyRouter>(config: {
124
175
  throw new Error(`Bucket ${bucketName} not found`);
125
176
  }
126
177
  const client: EdgeStoreClient<TRouter>[string] = {
178
+ async upload(params) {
179
+ const content = params.content;
180
+ const ctx = 'ctx' in params ? params.ctx : {};
181
+ const input = 'input' in params ? params.input : {};
182
+
183
+ const { blob, extension } = (() => {
184
+ if (typeof content === 'string') {
185
+ return {
186
+ blob: new Blob([content], { type: 'text/plain' }),
187
+ extension: 'txt',
188
+ };
189
+ } else {
190
+ return {
191
+ blob: content.blob,
192
+ extension: content.extension,
193
+ };
194
+ }
195
+ })();
196
+
197
+ const path = buildPath({
198
+ bucket,
199
+ pathAttrs: {
200
+ ctx,
201
+ input,
202
+ },
203
+ fileInfo: {
204
+ type: blob.type,
205
+ size: blob.size,
206
+ extension,
207
+ temporary: false,
208
+ fileName: params.options?.manualFileName,
209
+ replaceTargetUrl: params.options?.replaceTargetUrl,
210
+ },
211
+ });
212
+ const metadata = await bucket._def.metadata({
213
+ ctx,
214
+ input,
215
+ });
216
+
217
+ const requestUploadRes = await sdk.requestUpload({
218
+ bucketName,
219
+ bucketType: bucket._def.type,
220
+ fileInfo: {
221
+ fileName: params.options?.manualFileName,
222
+ replaceTargetUrl: params.options?.replaceTargetUrl,
223
+ type: blob.type,
224
+ size: blob.size,
225
+ extension,
226
+ isPublic: bucket._def.accessControl === undefined,
227
+ temporary: params.options?.temporary ?? false,
228
+ path,
229
+ metadata,
230
+ },
231
+ });
232
+
233
+ const { signedUrl, multipart } = requestUploadRes;
234
+
235
+ if (multipart) {
236
+ // TODO
237
+ throw new Error('Multipart upload not implemented');
238
+ } else if (signedUrl) {
239
+ await fetch(signedUrl, {
240
+ method: 'PUT',
241
+ body: blob,
242
+ });
243
+ } else {
244
+ throw new Error('Missing signedUrl');
245
+ }
246
+ const { parsedPath, pathOrder } = parsePath(path);
247
+ return {
248
+ url: requestUploadRes.accessUrl,
249
+ size: blob.size,
250
+ metadata,
251
+ path: parsedPath,
252
+ pathOrder,
253
+ } satisfies UploadFileRes<typeof bucket> as UploadFileRes<
254
+ TRouter['buckets'][string]
255
+ >;
256
+ },
257
+
127
258
  async getFile(params) {
128
259
  const res = await sdk.getFile(params);
129
260
  return {
@@ -136,41 +267,6 @@ export function initEdgeStoreClient<TRouter extends AnyRouter>(config: {
136
267
  TRouter['buckets'][string]
137
268
  >;
138
269
  },
139
- // TODO: Replace with `upload`
140
- // async requestUpload(params) {
141
- // const { file, path, metadata, replaceTargetUrl } = params;
142
- // const fileExtension = file.name.includes('.')
143
- // ? file.name.split('.').pop()
144
- // : undefined;
145
- // if (!fileExtension) {
146
- // throw new Error('Missing file extension');
147
- // }
148
- // const parsedPath = Object.keys(bucket._def.path).map((key) => {
149
- // const value = path[key as keyof typeof path];
150
- // if (value === undefined) {
151
- // throw new Error(`Missing path param ${key}`);
152
- // }
153
- // return {
154
- // key,
155
- // value,
156
- // };
157
- // });
158
-
159
- // const fileInfo = {
160
- // size: file.size,
161
- // extension: fileExtension,
162
- // isPublic: bucket._def.accessControl === undefined,
163
- // path: parsedPath,
164
- // metadata,
165
- // replaceTargetUrl,
166
- // };
167
-
168
- // return await sdk.requestUpload({
169
- // bucketName,
170
- // bucketType: bucket._def.type,
171
- // fileInfo,
172
- // });
173
- // },
174
270
 
175
271
  async confirmUpload(params) {
176
272
  return await sdk.confirmUpload(params);
@@ -107,7 +107,7 @@ export function AWSProvider(options?: AWSProviderOptions): Provider {
107
107
  const extension = fileInfo.extension
108
108
  ? `.${fileInfo.extension.replace('.', '')}`
109
109
  : '';
110
- const fileName = `${nameId}${extension}`;
110
+ const fileName = fileInfo.fileName ?? `${nameId}${extension}`;
111
111
  const filePath = fileInfo.path.reduce((acc, item) => {
112
112
  return `${acc}/${item.value}`;
113
113
  }, '');
@@ -41,6 +41,7 @@ export type RequestUploadParams = {
41
41
  size: number;
42
42
  extension: string;
43
43
  isPublic: boolean;
44
+ fileName?: string;
44
45
  path: {
45
46
  key: string;
46
47
  value: string;
package/src/types.ts CHANGED
@@ -61,6 +61,14 @@ export type Simplify<TType> = TType extends any[] | Date
61
61
  ? TType
62
62
  : { [K in keyof TType]: TType[K] };
63
63
 
64
+ /**
65
+ * @internal
66
+ */
67
+ export type Prettify<TType> = {
68
+ [K in keyof TType]: TType[K];
69
+ // eslint-disable-next-line @typescript-eslint/ban-types
70
+ } & {};
71
+
64
72
  /**
65
73
  * @public
66
74
  */