@edgestore/react 0.1.3-alpha.1 → 0.1.3-alpha.3

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,6 +1,13 @@
1
1
  /// <reference types="react" />
2
2
  import { type AnyRouter, type InferBucketPathObject, type InferMetadataObject } from '@edgestore/server/core';
3
3
  import { type z } from 'zod';
4
+ /**
5
+ * @internal
6
+ * @see https://www.totaltypescript.com/concepts/the-prettify-helper
7
+ */
8
+ export type Prettify<TType> = {
9
+ [K in keyof TType]: TType[K];
10
+ } & {};
4
11
  export type BucketFunctions<TRouter extends AnyRouter> = {
5
12
  [K in keyof TRouter['buckets']]: {
6
13
  upload: (params: z.infer<TRouter['buckets'][K]['_def']['input']> extends never ? {
@@ -19,12 +26,14 @@ export type BucketFunctions<TRouter extends AnyRouter> = {
19
26
  uploadedAt: Date;
20
27
  metadata: InferMetadataObject<TRouter['buckets'][K]>;
21
28
  path: InferBucketPathObject<TRouter['buckets'][K]>;
29
+ pathOrder: Prettify<keyof InferBucketPathObject<TRouter['buckets'][K]>>[];
22
30
  } : {
23
31
  url: string;
24
32
  size: number;
25
33
  uploadedAt: Date;
26
34
  metadata: InferMetadataObject<TRouter['buckets'][K]>;
27
35
  path: InferBucketPathObject<TRouter['buckets'][K]>;
36
+ pathOrder: Prettify<keyof InferBucketPathObject<TRouter['buckets'][K]>>[];
28
37
  }>;
29
38
  confirmUpload: (params: {
30
39
  url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"createNextProxy.d.ts","sourceRoot":"","sources":["../src/createNextProxy.ts"],"names":[],"mappings":";AACA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,MAAM,MAAM,eAAe,CAAC,OAAO,SAAS,SAAS,IAAI;KACtD,CAAC,IAAI,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG;QAC/B,MAAM,EAAE,CACN,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,GACjE;YACE,IAAI,EAAE,IAAI,CAAC;YACX,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;YAC3C,OAAO,CAAC,EAAE,aAAa,CAAC;SACzB,GACD;YACE,IAAI,EAAE,IAAI,CAAC;YACX,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACvD,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;YAC3C,OAAO,CAAC,EAAE,aAAa,CAAC;SACzB,KACF,OAAO,CACV,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,OAAO,GACjD;YACE,GAAG,EAAE,MAAM,CAAC;YACZ,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;YAC5B,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,IAAI,CAAC;YACjB,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,EAAE,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACpD,GACD;YACE,GAAG,EAAE,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,IAAI,CAAC;YACjB,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,EAAE,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACpD,CACN,CAAC;QACF,aAAa,EAAE,CAAC,MAAM,EAAE;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,EAAE,CAAC,MAAM,EAAE;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACpD;CACF,CAAC;AAEF,KAAK,uBAAuB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;AAE1D,KAAK,aAAa,GAAG;IACnB;;;;;;;;;;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,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EAAE,EACzD,OAAO,EACP,iBAAiB,EACjB,oBAAwB,GACzB,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClD,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,4BA6CA"}
1
+ {"version":3,"file":"createNextProxy.d.ts","sourceRoot":"","sources":["../src/createNextProxy.ts"],"names":[],"mappings":";AACA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,KAAK,IAAI;KAC3B,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;CAE7B,GAAG,EAAE,CAAC;AAEP,MAAM,MAAM,eAAe,CAAC,OAAO,SAAS,SAAS,IAAI;KACtD,CAAC,IAAI,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG;QAC/B,MAAM,EAAE,CACN,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,GACjE;YACE,IAAI,EAAE,IAAI,CAAC;YACX,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;YAC3C,OAAO,CAAC,EAAE,aAAa,CAAC;SACzB,GACD;YACE,IAAI,EAAE,IAAI,CAAC;YACX,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACvD,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;YAC3C,OAAO,CAAC,EAAE,aAAa,CAAC;SACzB,KACF,OAAO,CACV,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,OAAO,GACjD;YACE,GAAG,EAAE,MAAM,CAAC;YACZ,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;YAC5B,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,IAAI,CAAC;YACjB,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,EAAE,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,SAAS,EAAE,QAAQ,CACjB,MAAM,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CACnD,EAAE,CAAC;SACL,GACD;YACE,GAAG,EAAE,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,IAAI,CAAC;YACjB,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,EAAE,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,SAAS,EAAE,QAAQ,CACjB,MAAM,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CACnD,EAAE,CAAC;SACL,CACN,CAAC;QACF,aAAa,EAAE,CAAC,MAAM,EAAE;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,EAAE,CAAC,MAAM,EAAE;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACpD;CACF,CAAC;AAEF,KAAK,uBAAuB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;AAE1D,KAAK,aAAa,GAAG;IACnB;;;;;;;;;;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,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EAAE,EACzD,OAAO,EACP,iBAAiB,EACjB,oBAAwB,GACzB,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClD,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,4BA6CA"}
package/dist/index.js CHANGED
@@ -117,6 +117,7 @@ async function uploadFile({ file, input, onProgressChange, options }, { apiPath,
117
117
  size: json.size,
118
118
  uploadedAt: new Date(json.uploadedAt),
119
119
  path: json.path,
120
+ pathOrder: json.pathOrder,
120
121
  metadata: json.metadata
121
122
  };
122
123
  } catch (e) {
package/dist/index.mjs CHANGED
@@ -93,6 +93,7 @@ async function uploadFile({ file, input, onProgressChange, options }, { apiPath,
93
93
  size: json.size,
94
94
  uploadedAt: new Date(json.uploadedAt),
95
95
  path: json.path,
96
+ pathOrder: json.pathOrder,
96
97
  metadata: json.metadata
97
98
  };
98
99
  } catch (e) {
@@ -0,0 +1,14 @@
1
+ /**
2
+ * This will add the necessary query param to the url
3
+ * to make the browser download the file instead of opening it.
4
+ *
5
+ * You can also override the name of the file by passing the name param.
6
+ */
7
+ export declare function getDownloadUrl(url: string, name?: string): string;
8
+ /**
9
+ * This will format the file size to a human readable format.
10
+ *
11
+ * @example 1024 => 1 KB
12
+ */
13
+ export declare function formatFileSize(bytes?: number): string;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,UAIxD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,UAa5C"}
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ /**
6
+ * This will add the necessary query param to the url
7
+ * to make the browser download the file instead of opening it.
8
+ *
9
+ * You can also override the name of the file by passing the name param.
10
+ */ function getDownloadUrl(url, name) {
11
+ const urlObj = new URL(url);
12
+ urlObj.searchParams.set('download', name ?? 'true');
13
+ return urlObj.toString();
14
+ }
15
+ /**
16
+ * This will format the file size to a human readable format.
17
+ *
18
+ * @example 1024 => 1 KB
19
+ */ function formatFileSize(bytes) {
20
+ if (!bytes) {
21
+ return '0 Bytes';
22
+ }
23
+ bytes = Number(bytes);
24
+ if (bytes === 0) {
25
+ return '0 Bytes';
26
+ }
27
+ const k = 1024;
28
+ const dm = 2;
29
+ const sizes = [
30
+ 'Bytes',
31
+ 'KB',
32
+ 'MB',
33
+ 'GB',
34
+ 'TB',
35
+ 'PB',
36
+ 'EB',
37
+ 'ZB',
38
+ 'YB'
39
+ ];
40
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
41
+ return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;
42
+ }
43
+
44
+ exports.formatFileSize = formatFileSize;
45
+ exports.getDownloadUrl = getDownloadUrl;
@@ -0,0 +1,40 @@
1
+ /**
2
+ * This will add the necessary query param to the url
3
+ * to make the browser download the file instead of opening it.
4
+ *
5
+ * You can also override the name of the file by passing the name param.
6
+ */ function getDownloadUrl(url, name) {
7
+ const urlObj = new URL(url);
8
+ urlObj.searchParams.set('download', name ?? 'true');
9
+ return urlObj.toString();
10
+ }
11
+ /**
12
+ * This will format the file size to a human readable format.
13
+ *
14
+ * @example 1024 => 1 KB
15
+ */ function formatFileSize(bytes) {
16
+ if (!bytes) {
17
+ return '0 Bytes';
18
+ }
19
+ bytes = Number(bytes);
20
+ if (bytes === 0) {
21
+ return '0 Bytes';
22
+ }
23
+ const k = 1024;
24
+ const dm = 2;
25
+ const sizes = [
26
+ 'Bytes',
27
+ 'KB',
28
+ 'MB',
29
+ 'GB',
30
+ 'TB',
31
+ 'PB',
32
+ 'EB',
33
+ 'ZB',
34
+ 'YB'
35
+ ];
36
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
37
+ return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;
38
+ }
39
+
40
+ export { formatFileSize, getDownloadUrl };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edgestore/react",
3
- "version": "0.1.3-alpha.1",
3
+ "version": "0.1.3-alpha.3",
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",
@@ -19,12 +19,23 @@
19
19
  "edgestore",
20
20
  "edge-store"
21
21
  ],
22
+ "scripts": {
23
+ "build": "rollup --config rollup.config.ts --configPlugin rollup-plugin-swc3",
24
+ "dev": "pnpm build --watch",
25
+ "codegen:entrypoints": "tsx entrypoints.script.ts",
26
+ "lint": "eslint --cache --ext \".js,.ts,.tsx\" --ignore-path ../../.gitignore --report-unused-disable-directives src"
27
+ },
22
28
  "exports": {
23
29
  "./package.json": "./package.json",
24
30
  ".": {
25
31
  "import": "./dist/index.mjs",
26
32
  "require": "./dist/index.js",
27
33
  "default": "./dist/index.js"
34
+ },
35
+ "./utils": {
36
+ "import": "./dist/utils/index.mjs",
37
+ "require": "./dist/utils/index.js",
38
+ "default": "./dist/utils/index.js"
28
39
  }
29
40
  },
30
41
  "files": [
@@ -32,6 +43,7 @@
32
43
  "src",
33
44
  "README.md",
34
45
  "package.json",
46
+ "utils",
35
47
  "!**/*.test.*"
36
48
  ],
37
49
  "private": false,
@@ -48,14 +60,14 @@
48
60
  "uuid": "^9.0.0"
49
61
  },
50
62
  "peerDependencies": {
51
- "@edgestore/server": "0.1.3-alpha.1",
63
+ "@edgestore/server": "0.1.3-alpha.3",
52
64
  "next": "*",
53
65
  "react": ">=16.8.0",
54
66
  "react-dom": ">=16.8.0",
55
67
  "zod": ">=3.0.0"
56
68
  },
57
69
  "devDependencies": {
58
- "@edgestore/server": "0.1.3-alpha.1",
70
+ "@edgestore/server": "0.1.3-alpha.3",
59
71
  "@types/cookie": "^0.5.1",
60
72
  "@types/node": "^18.11.18",
61
73
  "@types/uuid": "^9.0.1",
@@ -65,11 +77,5 @@
65
77
  "typescript": "^5.1.6",
66
78
  "zod": "^3.21.4"
67
79
  },
68
- "gitHead": "d83c9799cd38def8b37f6c752332c568c37cf329",
69
- "scripts": {
70
- "build": "rollup --config rollup.config.ts --configPlugin rollup-plugin-swc3",
71
- "dev": "pnpm build --watch",
72
- "codegen:entrypoints": "tsx entrypoints.script.ts",
73
- "lint": "eslint --cache --ext \".js,.ts,.tsx\" --ignore-path ../../.gitignore --report-unused-disable-directives src"
74
- }
75
- }
80
+ "gitHead": "f251931cec589c801432683521c8aa30428fa107"
81
+ }
@@ -7,6 +7,15 @@ import {
7
7
  import { type z } from 'zod';
8
8
  import EdgeStoreError from './libs/errors/EdgeStoreError';
9
9
 
10
+ /**
11
+ * @internal
12
+ * @see https://www.totaltypescript.com/concepts/the-prettify-helper
13
+ */
14
+ export type Prettify<TType> = {
15
+ [K in keyof TType]: TType[K];
16
+ // eslint-disable-next-line @typescript-eslint/ban-types
17
+ } & {};
18
+
10
19
  export type BucketFunctions<TRouter extends AnyRouter> = {
11
20
  [K in keyof TRouter['buckets']]: {
12
21
  upload: (
@@ -31,6 +40,9 @@ export type BucketFunctions<TRouter extends AnyRouter> = {
31
40
  uploadedAt: Date;
32
41
  metadata: InferMetadataObject<TRouter['buckets'][K]>;
33
42
  path: InferBucketPathObject<TRouter['buckets'][K]>;
43
+ pathOrder: Prettify<
44
+ keyof InferBucketPathObject<TRouter['buckets'][K]>
45
+ >[];
34
46
  }
35
47
  : {
36
48
  url: string;
@@ -38,6 +50,9 @@ export type BucketFunctions<TRouter extends AnyRouter> = {
38
50
  uploadedAt: Date;
39
51
  metadata: InferMetadataObject<TRouter['buckets'][K]>;
40
52
  path: InferBucketPathObject<TRouter['buckets'][K]>;
53
+ pathOrder: Prettify<
54
+ keyof InferBucketPathObject<TRouter['buckets'][K]>
55
+ >[];
41
56
  }
42
57
  >;
43
58
  confirmUpload: (params: { url: string }) => Promise<void>;
@@ -196,6 +211,7 @@ async function uploadFile(
196
211
  size: json.size,
197
212
  uploadedAt: new Date(json.uploadedAt),
198
213
  path: json.path as any,
214
+ pathOrder: json.pathOrder as any,
199
215
  metadata: json.metadata as any,
200
216
  };
201
217
  } catch (e) {
@@ -0,0 +1,31 @@
1
+ /**
2
+ * This will add the necessary query param to the url
3
+ * to make the browser download the file instead of opening it.
4
+ *
5
+ * You can also override the name of the file by passing the name param.
6
+ */
7
+ export function getDownloadUrl(url: string, name?: string) {
8
+ const urlObj = new URL(url);
9
+ urlObj.searchParams.set('download', name ?? 'true');
10
+ return urlObj.toString();
11
+ }
12
+
13
+ /**
14
+ * This will format the file size to a human readable format.
15
+ *
16
+ * @example 1024 => 1 KB
17
+ */
18
+ export function formatFileSize(bytes?: number) {
19
+ if (!bytes) {
20
+ return '0 Bytes';
21
+ }
22
+ bytes = Number(bytes);
23
+ if (bytes === 0) {
24
+ return '0 Bytes';
25
+ }
26
+ const k = 1024;
27
+ const dm = 2;
28
+ const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
29
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
30
+ return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;
31
+ }
@@ -0,0 +1 @@
1
+ export * from '../dist/utils';
package/utils/index.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('../dist/utils');