@edgestore/react 0.1.2 → 0.1.3-alpha.1
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/contextProvider.d.ts +5 -3
- package/dist/contextProvider.d.ts.map +1 -1
- package/dist/createNextProxy.d.ts +2 -6
- package/dist/createNextProxy.d.ts.map +1 -1
- package/dist/index.js +27 -37
- package/dist/index.mjs +27 -37
- package/package.json +11 -11
- package/src/contextProvider.tsx +23 -33
- package/src/createNextProxy.ts +12 -12
|
@@ -4,10 +4,12 @@ import { type BucketFunctions } from './createNextProxy';
|
|
|
4
4
|
type EdgeStoreContextValue<TRouter extends AnyRouter> = {
|
|
5
5
|
edgestore: BucketFunctions<TRouter>;
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* This will re-run the Edge Store initialization process,
|
|
8
|
+
* which will run the `createContext` function again.
|
|
9
|
+
*
|
|
10
|
+
* Can be used after a sign-in or sign-out, for example.
|
|
9
11
|
*/
|
|
10
|
-
|
|
12
|
+
reset: () => Promise<void>;
|
|
11
13
|
};
|
|
12
14
|
export declare function createEdgeStoreProvider<TRouter extends AnyRouter>(opts?: {
|
|
13
15
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contextProvider.d.ts","sourceRoot":"","sources":["../src/contextProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAK1E,KAAK,qBAAqB,CAAC,OAAO,SAAS,SAAS,IAAI;IACtD,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACpC
|
|
1
|
+
{"version":3,"file":"contextProvider.d.ts","sourceRoot":"","sources":["../src/contextProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAK1E,KAAK,qBAAqB,CAAC,OAAO,SAAS,SAAS,IAAI;IACtD,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACpC;;;;;OAKG;IACH,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,OAAO,SAAS,SAAS,EAAE,IAAI,CAAC,EAAE;IACxE;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;;kBASa,MAAM,SAAS;QACzB;;;;;;WAMG;;;;EAgCN"}
|
|
@@ -28,14 +28,10 @@ export type BucketFunctions<TRouter extends AnyRouter> = {
|
|
|
28
28
|
}>;
|
|
29
29
|
confirmUpload: (params: {
|
|
30
30
|
url: string;
|
|
31
|
-
}) => Promise<
|
|
32
|
-
success: boolean;
|
|
33
|
-
}>;
|
|
31
|
+
}) => Promise<void>;
|
|
34
32
|
delete: (params: {
|
|
35
33
|
url: string;
|
|
36
|
-
}) => Promise<
|
|
37
|
-
success: boolean;
|
|
38
|
-
}>;
|
|
34
|
+
}) => Promise<void>;
|
|
39
35
|
};
|
|
40
36
|
};
|
|
41
37
|
type OnProgressChangeHandler = (progress: number) => void;
|
|
@@ -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
|
|
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"}
|
package/dist/index.js
CHANGED
|
@@ -52,16 +52,22 @@ function createNextProxy({ apiPath, uploadingCountRef, maxConcurrentUploads = 5
|
|
|
52
52
|
}
|
|
53
53
|
},
|
|
54
54
|
confirmUpload: async (params)=>{
|
|
55
|
-
|
|
55
|
+
const { success } = await confirmUpload(params, {
|
|
56
56
|
bucketName: bucketName,
|
|
57
57
|
apiPath
|
|
58
58
|
});
|
|
59
|
+
if (!success) {
|
|
60
|
+
throw new EdgeStoreError('Failed to confirm upload');
|
|
61
|
+
}
|
|
59
62
|
},
|
|
60
63
|
delete: async (params)=>{
|
|
61
|
-
|
|
64
|
+
const { success } = await deleteFile(params, {
|
|
62
65
|
bucketName: bucketName,
|
|
63
66
|
apiPath
|
|
64
67
|
});
|
|
68
|
+
if (!success) {
|
|
69
|
+
throw new EdgeStoreError('Failed to delete file');
|
|
70
|
+
}
|
|
65
71
|
}
|
|
66
72
|
};
|
|
67
73
|
return bucketFunctions;
|
|
@@ -110,9 +116,7 @@ async function uploadFile({ file, input, onProgressChange, options }, { apiPath,
|
|
|
110
116
|
thumbnailUrl: json.thumbnailUrl ? getUrl(json.thumbnailUrl, apiPath) : null,
|
|
111
117
|
size: json.size,
|
|
112
118
|
uploadedAt: new Date(json.uploadedAt),
|
|
113
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
114
119
|
path: json.path,
|
|
115
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
116
120
|
metadata: json.metadata
|
|
117
121
|
};
|
|
118
122
|
} catch (e) {
|
|
@@ -232,9 +236,7 @@ async function confirmUpload({ url }, { apiPath, bucketName }) {
|
|
|
232
236
|
if (!res.ok) {
|
|
233
237
|
throw new EdgeStoreError('An error occurred');
|
|
234
238
|
}
|
|
235
|
-
return
|
|
236
|
-
success: true
|
|
237
|
-
};
|
|
239
|
+
return res.json();
|
|
238
240
|
}
|
|
239
241
|
async function deleteFile({ url }, { apiPath, bucketName }) {
|
|
240
242
|
const res = await fetch(`${apiPath}/delete-file`, {
|
|
@@ -250,9 +252,7 @@ async function deleteFile({ url }, { apiPath, bucketName }) {
|
|
|
250
252
|
if (!res.ok) {
|
|
251
253
|
throw new EdgeStoreError('An error occurred');
|
|
252
254
|
}
|
|
253
|
-
return
|
|
254
|
-
success: true
|
|
255
|
-
};
|
|
255
|
+
return res.json();
|
|
256
256
|
}
|
|
257
257
|
async function queuedPromises({ items, fn, maxParallel, maxRetries = 0 }) {
|
|
258
258
|
const results = new Array(items.length);
|
|
@@ -321,38 +321,28 @@ function createEdgeStoreProvider(opts) {
|
|
|
321
321
|
}
|
|
322
322
|
function EdgeStoreProviderInner({ children, context, basePath, maxConcurrentUploads }) {
|
|
323
323
|
const apiPath = basePath ? `${basePath}` : '/api/edgestore';
|
|
324
|
-
const [token, setToken] = React__namespace.useState(null);
|
|
325
324
|
const uploadingCountRef = React__namespace.useRef(0);
|
|
326
325
|
React__namespace.useEffect(()=>{
|
|
327
|
-
void
|
|
328
|
-
method: 'POST'
|
|
329
|
-
}).then(async (res)=>{
|
|
330
|
-
if (res.ok) {
|
|
331
|
-
const json = await res.json();
|
|
332
|
-
setToken(json.token);
|
|
333
|
-
await fetch(`${DEFAULT_BASE_URL}/_init`, {
|
|
334
|
-
method: 'GET',
|
|
335
|
-
headers: {
|
|
336
|
-
'x-edgestore-token': json.token
|
|
337
|
-
}
|
|
338
|
-
});
|
|
339
|
-
}
|
|
340
|
-
});
|
|
326
|
+
void init();
|
|
341
327
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
342
328
|
}, []);
|
|
343
|
-
function
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
329
|
+
async function init() {
|
|
330
|
+
const res = await fetch(`${apiPath}/init`, {
|
|
331
|
+
method: 'POST'
|
|
332
|
+
});
|
|
333
|
+
if (res.ok) {
|
|
334
|
+
const json = await res.json();
|
|
335
|
+
await fetch(`${DEFAULT_BASE_URL}/_init`, {
|
|
336
|
+
method: 'GET',
|
|
337
|
+
headers: {
|
|
338
|
+
'x-edgestore-token': json.token
|
|
339
|
+
}
|
|
340
|
+
});
|
|
354
341
|
}
|
|
355
342
|
}
|
|
343
|
+
async function reset() {
|
|
344
|
+
await init();
|
|
345
|
+
}
|
|
356
346
|
return /*#__PURE__*/ React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/ React__namespace.createElement(context.Provider, {
|
|
357
347
|
value: {
|
|
358
348
|
edgestore: createNextProxy({
|
|
@@ -360,7 +350,7 @@ function EdgeStoreProviderInner({ children, context, basePath, maxConcurrentUplo
|
|
|
360
350
|
uploadingCountRef,
|
|
361
351
|
maxConcurrentUploads
|
|
362
352
|
}),
|
|
363
|
-
|
|
353
|
+
reset
|
|
364
354
|
}
|
|
365
355
|
}, children));
|
|
366
356
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -28,16 +28,22 @@ function createNextProxy({ apiPath, uploadingCountRef, maxConcurrentUploads = 5
|
|
|
28
28
|
}
|
|
29
29
|
},
|
|
30
30
|
confirmUpload: async (params)=>{
|
|
31
|
-
|
|
31
|
+
const { success } = await confirmUpload(params, {
|
|
32
32
|
bucketName: bucketName,
|
|
33
33
|
apiPath
|
|
34
34
|
});
|
|
35
|
+
if (!success) {
|
|
36
|
+
throw new EdgeStoreError('Failed to confirm upload');
|
|
37
|
+
}
|
|
35
38
|
},
|
|
36
39
|
delete: async (params)=>{
|
|
37
|
-
|
|
40
|
+
const { success } = await deleteFile(params, {
|
|
38
41
|
bucketName: bucketName,
|
|
39
42
|
apiPath
|
|
40
43
|
});
|
|
44
|
+
if (!success) {
|
|
45
|
+
throw new EdgeStoreError('Failed to delete file');
|
|
46
|
+
}
|
|
41
47
|
}
|
|
42
48
|
};
|
|
43
49
|
return bucketFunctions;
|
|
@@ -86,9 +92,7 @@ async function uploadFile({ file, input, onProgressChange, options }, { apiPath,
|
|
|
86
92
|
thumbnailUrl: json.thumbnailUrl ? getUrl(json.thumbnailUrl, apiPath) : null,
|
|
87
93
|
size: json.size,
|
|
88
94
|
uploadedAt: new Date(json.uploadedAt),
|
|
89
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
90
95
|
path: json.path,
|
|
91
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
92
96
|
metadata: json.metadata
|
|
93
97
|
};
|
|
94
98
|
} catch (e) {
|
|
@@ -208,9 +212,7 @@ async function confirmUpload({ url }, { apiPath, bucketName }) {
|
|
|
208
212
|
if (!res.ok) {
|
|
209
213
|
throw new EdgeStoreError('An error occurred');
|
|
210
214
|
}
|
|
211
|
-
return
|
|
212
|
-
success: true
|
|
213
|
-
};
|
|
215
|
+
return res.json();
|
|
214
216
|
}
|
|
215
217
|
async function deleteFile({ url }, { apiPath, bucketName }) {
|
|
216
218
|
const res = await fetch(`${apiPath}/delete-file`, {
|
|
@@ -226,9 +228,7 @@ async function deleteFile({ url }, { apiPath, bucketName }) {
|
|
|
226
228
|
if (!res.ok) {
|
|
227
229
|
throw new EdgeStoreError('An error occurred');
|
|
228
230
|
}
|
|
229
|
-
return
|
|
230
|
-
success: true
|
|
231
|
-
};
|
|
231
|
+
return res.json();
|
|
232
232
|
}
|
|
233
233
|
async function queuedPromises({ items, fn, maxParallel, maxRetries = 0 }) {
|
|
234
234
|
const results = new Array(items.length);
|
|
@@ -297,38 +297,28 @@ function createEdgeStoreProvider(opts) {
|
|
|
297
297
|
}
|
|
298
298
|
function EdgeStoreProviderInner({ children, context, basePath, maxConcurrentUploads }) {
|
|
299
299
|
const apiPath = basePath ? `${basePath}` : '/api/edgestore';
|
|
300
|
-
const [token, setToken] = React.useState(null);
|
|
301
300
|
const uploadingCountRef = React.useRef(0);
|
|
302
301
|
React.useEffect(()=>{
|
|
303
|
-
void
|
|
304
|
-
method: 'POST'
|
|
305
|
-
}).then(async (res)=>{
|
|
306
|
-
if (res.ok) {
|
|
307
|
-
const json = await res.json();
|
|
308
|
-
setToken(json.token);
|
|
309
|
-
await fetch(`${DEFAULT_BASE_URL}/_init`, {
|
|
310
|
-
method: 'GET',
|
|
311
|
-
headers: {
|
|
312
|
-
'x-edgestore-token': json.token
|
|
313
|
-
}
|
|
314
|
-
});
|
|
315
|
-
}
|
|
316
|
-
});
|
|
302
|
+
void init();
|
|
317
303
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
318
304
|
}, []);
|
|
319
|
-
function
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
305
|
+
async function init() {
|
|
306
|
+
const res = await fetch(`${apiPath}/init`, {
|
|
307
|
+
method: 'POST'
|
|
308
|
+
});
|
|
309
|
+
if (res.ok) {
|
|
310
|
+
const json = await res.json();
|
|
311
|
+
await fetch(`${DEFAULT_BASE_URL}/_init`, {
|
|
312
|
+
method: 'GET',
|
|
313
|
+
headers: {
|
|
314
|
+
'x-edgestore-token': json.token
|
|
315
|
+
}
|
|
316
|
+
});
|
|
330
317
|
}
|
|
331
318
|
}
|
|
319
|
+
async function reset() {
|
|
320
|
+
await init();
|
|
321
|
+
}
|
|
332
322
|
return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(context.Provider, {
|
|
333
323
|
value: {
|
|
334
324
|
edgestore: createNextProxy({
|
|
@@ -336,7 +326,7 @@ function EdgeStoreProviderInner({ children, context, basePath, maxConcurrentUplo
|
|
|
336
326
|
uploadingCountRef,
|
|
337
327
|
maxConcurrentUploads
|
|
338
328
|
}),
|
|
339
|
-
|
|
329
|
+
reset
|
|
340
330
|
}
|
|
341
331
|
}, children));
|
|
342
332
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edgestore/react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3-alpha.1",
|
|
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,6 @@
|
|
|
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
|
-
},
|
|
28
22
|
"exports": {
|
|
29
23
|
"./package.json": "./package.json",
|
|
30
24
|
".": {
|
|
@@ -54,14 +48,14 @@
|
|
|
54
48
|
"uuid": "^9.0.0"
|
|
55
49
|
},
|
|
56
50
|
"peerDependencies": {
|
|
57
|
-
"@edgestore/server": "0.1.
|
|
51
|
+
"@edgestore/server": "0.1.3-alpha.1",
|
|
58
52
|
"next": "*",
|
|
59
53
|
"react": ">=16.8.0",
|
|
60
54
|
"react-dom": ">=16.8.0",
|
|
61
55
|
"zod": ">=3.0.0"
|
|
62
56
|
},
|
|
63
57
|
"devDependencies": {
|
|
64
|
-
"@edgestore/server": "0.1.
|
|
58
|
+
"@edgestore/server": "0.1.3-alpha.1",
|
|
65
59
|
"@types/cookie": "^0.5.1",
|
|
66
60
|
"@types/node": "^18.11.18",
|
|
67
61
|
"@types/uuid": "^9.0.1",
|
|
@@ -71,5 +65,11 @@
|
|
|
71
65
|
"typescript": "^5.1.6",
|
|
72
66
|
"zod": "^3.21.4"
|
|
73
67
|
},
|
|
74
|
-
"gitHead": "
|
|
75
|
-
|
|
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
|
+
}
|
package/src/contextProvider.tsx
CHANGED
|
@@ -8,10 +8,12 @@ const DEFAULT_BASE_URL =
|
|
|
8
8
|
type EdgeStoreContextValue<TRouter extends AnyRouter> = {
|
|
9
9
|
edgestore: BucketFunctions<TRouter>;
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
11
|
+
* This will re-run the Edge Store initialization process,
|
|
12
|
+
* which will run the `createContext` function again.
|
|
13
|
+
*
|
|
14
|
+
* Can be used after a sign-in or sign-out, for example.
|
|
13
15
|
*/
|
|
14
|
-
|
|
16
|
+
reset: () => Promise<void>;
|
|
15
17
|
};
|
|
16
18
|
|
|
17
19
|
export function createEdgeStoreProvider<TRouter extends AnyRouter>(opts?: {
|
|
@@ -85,43 +87,31 @@ function EdgeStoreProviderInner<TRouter extends AnyRouter>({
|
|
|
85
87
|
maxConcurrentUploads?: number;
|
|
86
88
|
}) {
|
|
87
89
|
const apiPath = basePath ? `${basePath}` : '/api/edgestore';
|
|
88
|
-
const [token, setToken] = React.useState<string | null>(null);
|
|
89
90
|
const uploadingCountRef = React.useRef(0);
|
|
90
91
|
React.useEffect(() => {
|
|
91
|
-
void
|
|
92
|
-
method: 'POST',
|
|
93
|
-
}).then(async (res) => {
|
|
94
|
-
if (res.ok) {
|
|
95
|
-
const json = await res.json();
|
|
96
|
-
setToken(json.token);
|
|
97
|
-
await fetch(`${DEFAULT_BASE_URL}/_init`, {
|
|
98
|
-
method: 'GET',
|
|
99
|
-
headers: {
|
|
100
|
-
'x-edgestore-token': json.token,
|
|
101
|
-
},
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
});
|
|
92
|
+
void init();
|
|
105
93
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
106
94
|
}, []);
|
|
107
95
|
|
|
108
|
-
function
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
uri.searchParams.set('token', token ?? '');
|
|
121
|
-
return `${uri}`;
|
|
96
|
+
async function init() {
|
|
97
|
+
const res = await fetch(`${apiPath}/init`, {
|
|
98
|
+
method: 'POST',
|
|
99
|
+
});
|
|
100
|
+
if (res.ok) {
|
|
101
|
+
const json = await res.json();
|
|
102
|
+
await fetch(`${DEFAULT_BASE_URL}/_init`, {
|
|
103
|
+
method: 'GET',
|
|
104
|
+
headers: {
|
|
105
|
+
'x-edgestore-token': json.token,
|
|
106
|
+
},
|
|
107
|
+
});
|
|
122
108
|
}
|
|
123
109
|
}
|
|
124
110
|
|
|
111
|
+
async function reset() {
|
|
112
|
+
await init();
|
|
113
|
+
}
|
|
114
|
+
|
|
125
115
|
return (
|
|
126
116
|
<>
|
|
127
117
|
<context.Provider
|
|
@@ -131,7 +121,7 @@ function EdgeStoreProviderInner<TRouter extends AnyRouter>({
|
|
|
131
121
|
uploadingCountRef,
|
|
132
122
|
maxConcurrentUploads,
|
|
133
123
|
}),
|
|
134
|
-
|
|
124
|
+
reset,
|
|
135
125
|
}}
|
|
136
126
|
>
|
|
137
127
|
{children}
|
package/src/createNextProxy.ts
CHANGED
|
@@ -40,12 +40,8 @@ export type BucketFunctions<TRouter extends AnyRouter> = {
|
|
|
40
40
|
path: InferBucketPathObject<TRouter['buckets'][K]>;
|
|
41
41
|
}
|
|
42
42
|
>;
|
|
43
|
-
confirmUpload: (params: { url: string }) => Promise<
|
|
44
|
-
|
|
45
|
-
}>;
|
|
46
|
-
delete: (params: { url: string }) => Promise<{
|
|
47
|
-
success: boolean;
|
|
48
|
-
}>;
|
|
43
|
+
confirmUpload: (params: { url: string }) => Promise<void>;
|
|
44
|
+
delete: (params: { url: string }) => Promise<void>;
|
|
49
45
|
};
|
|
50
46
|
};
|
|
51
47
|
|
|
@@ -113,16 +109,22 @@ export function createNextProxy<TRouter extends AnyRouter>({
|
|
|
113
109
|
}
|
|
114
110
|
},
|
|
115
111
|
confirmUpload: async (params: { url: string }) => {
|
|
116
|
-
|
|
112
|
+
const { success } = await confirmUpload(params, {
|
|
117
113
|
bucketName: bucketName as string,
|
|
118
114
|
apiPath,
|
|
119
115
|
});
|
|
116
|
+
if (!success) {
|
|
117
|
+
throw new EdgeStoreError('Failed to confirm upload');
|
|
118
|
+
}
|
|
120
119
|
},
|
|
121
120
|
delete: async (params: { url: string }) => {
|
|
122
|
-
|
|
121
|
+
const { success } = await deleteFile(params, {
|
|
123
122
|
bucketName: bucketName as string,
|
|
124
123
|
apiPath,
|
|
125
124
|
});
|
|
125
|
+
if (!success) {
|
|
126
|
+
throw new EdgeStoreError('Failed to delete file');
|
|
127
|
+
}
|
|
126
128
|
},
|
|
127
129
|
};
|
|
128
130
|
return bucketFunctions;
|
|
@@ -193,9 +195,7 @@ async function uploadFile(
|
|
|
193
195
|
: null,
|
|
194
196
|
size: json.size,
|
|
195
197
|
uploadedAt: new Date(json.uploadedAt),
|
|
196
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
197
198
|
path: json.path as any,
|
|
198
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
199
199
|
metadata: json.metadata as any,
|
|
200
200
|
};
|
|
201
201
|
} catch (e) {
|
|
@@ -361,7 +361,7 @@ async function confirmUpload(
|
|
|
361
361
|
if (!res.ok) {
|
|
362
362
|
throw new EdgeStoreError('An error occurred');
|
|
363
363
|
}
|
|
364
|
-
return
|
|
364
|
+
return res.json();
|
|
365
365
|
}
|
|
366
366
|
|
|
367
367
|
async function deleteFile(
|
|
@@ -391,7 +391,7 @@ async function deleteFile(
|
|
|
391
391
|
if (!res.ok) {
|
|
392
392
|
throw new EdgeStoreError('An error occurred');
|
|
393
393
|
}
|
|
394
|
-
return
|
|
394
|
+
return res.json();
|
|
395
395
|
}
|
|
396
396
|
|
|
397
397
|
async function queuedPromises<TType, TRes>({
|