@edgestore/react 0.1.3-alpha.2 → 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.
- package/dist/createNextProxy.d.ts +9 -0
- package/dist/createNextProxy.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.mjs +1 -0
- package/dist/utils/index.d.ts +14 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +45 -0
- package/dist/utils/index.mjs +40 -0
- package/package.json +10 -4
- package/src/createNextProxy.ts +16 -0
- package/src/utils/index.ts +31 -0
- package/utils/index.d.ts +1 -0
- package/utils/index.js +1 -0
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"createNextProxy.d.ts","sourceRoot":"","sources":["../src/createNextProxy.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
package/dist/index.mjs
CHANGED
|
@@ -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.
|
|
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",
|
|
@@ -31,6 +31,11 @@
|
|
|
31
31
|
"import": "./dist/index.mjs",
|
|
32
32
|
"require": "./dist/index.js",
|
|
33
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"
|
|
34
39
|
}
|
|
35
40
|
},
|
|
36
41
|
"files": [
|
|
@@ -38,6 +43,7 @@
|
|
|
38
43
|
"src",
|
|
39
44
|
"README.md",
|
|
40
45
|
"package.json",
|
|
46
|
+
"utils",
|
|
41
47
|
"!**/*.test.*"
|
|
42
48
|
],
|
|
43
49
|
"private": false,
|
|
@@ -54,14 +60,14 @@
|
|
|
54
60
|
"uuid": "^9.0.0"
|
|
55
61
|
},
|
|
56
62
|
"peerDependencies": {
|
|
57
|
-
"@edgestore/server": "0.1.3-alpha.
|
|
63
|
+
"@edgestore/server": "0.1.3-alpha.3",
|
|
58
64
|
"next": "*",
|
|
59
65
|
"react": ">=16.8.0",
|
|
60
66
|
"react-dom": ">=16.8.0",
|
|
61
67
|
"zod": ">=3.0.0"
|
|
62
68
|
},
|
|
63
69
|
"devDependencies": {
|
|
64
|
-
"@edgestore/server": "0.1.3-alpha.
|
|
70
|
+
"@edgestore/server": "0.1.3-alpha.3",
|
|
65
71
|
"@types/cookie": "^0.5.1",
|
|
66
72
|
"@types/node": "^18.11.18",
|
|
67
73
|
"@types/uuid": "^9.0.1",
|
|
@@ -71,5 +77,5 @@
|
|
|
71
77
|
"typescript": "^5.1.6",
|
|
72
78
|
"zod": "^3.21.4"
|
|
73
79
|
},
|
|
74
|
-
"gitHead": "
|
|
80
|
+
"gitHead": "f251931cec589c801432683521c8aa30428fa107"
|
|
75
81
|
}
|
package/src/createNextProxy.ts
CHANGED
|
@@ -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
|
+
}
|
package/utils/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../dist/utils';
|
package/utils/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('../dist/utils');
|