@edgestore/server 0.1.5-alpha.5 → 0.1.5-alpha.6
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/adapters/express/index.d.ts +1 -0
- package/adapters/express/index.js +1 -0
- package/dist/adapters/next/app/index.d.ts +1 -1
- package/dist/adapters/next/app/index.d.ts.map +1 -1
- package/dist/adapters/next/pages/index.d.ts +1 -1
- package/dist/adapters/next/pages/index.d.ts.map +1 -1
- package/dist/core/client/index.d.ts +20 -6
- package/dist/core/client/index.d.ts.map +1 -1
- package/dist/core/index.js +19 -3
- package/dist/core/index.mjs +19 -3
- package/package.json +2 -2
- package/src/adapters/next/app/index.ts +1 -2
- package/src/adapters/next/pages/index.ts +1 -2
- package/src/core/client/index.ts +47 -11
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../../dist/adapters/express';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('../../dist/adapters/express');
|
|
@@ -10,7 +10,7 @@ export type Config<TCtx> = {
|
|
|
10
10
|
provider?: Provider;
|
|
11
11
|
router: EdgeStoreRouter<TCtx>;
|
|
12
12
|
logLevel?: LogLevel;
|
|
13
|
-
} & (TCtx extends Record<string, never> ?
|
|
13
|
+
} & (TCtx extends Record<string, never> ? object : {
|
|
14
14
|
provider?: Provider;
|
|
15
15
|
router: EdgeStoreRouter<TCtx>;
|
|
16
16
|
createContext: (opts: CreateContextOptions) => MaybePromise<TCtx>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/next/app/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/next/app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAK7E,OAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAenD,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,EAAE,WAAW,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,MAAM,CAAC,IAAI,IAAI;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,GAAG,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACnC,MAAM,GACN;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,CAAC;AAEP,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,SAGhD,WAAW,uBAiK/B"}
|
|
@@ -11,7 +11,7 @@ export type Config<TCtx> = {
|
|
|
11
11
|
provider?: Provider;
|
|
12
12
|
router: EdgeStoreRouter<TCtx>;
|
|
13
13
|
logLevel?: LogLevel;
|
|
14
|
-
} & (TCtx extends Record<string, never> ?
|
|
14
|
+
} & (TCtx extends Record<string, never> ? object : {
|
|
15
15
|
provider?: Provider;
|
|
16
16
|
router: EdgeStoreRouter<TCtx>;
|
|
17
17
|
createContext: (opts: CreateContextOptions) => MaybePromise<TCtx>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/next/pages/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/next/pages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAK7E,OAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAenD,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,EAAE,cAAc,CAAC;IACpB,GAAG,EAAE,eAAe,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,MAAM,CAAC,IAAI,IAAI;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,GAAG,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACnC,MAAM,GACN;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,CAAC;AAEP,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,SAGhD,cAAc,OAAO,eAAe,mBAoHxD"}
|
|
@@ -38,9 +38,18 @@ export type UploadOptions = {
|
|
|
38
38
|
*/
|
|
39
39
|
temporary?: boolean;
|
|
40
40
|
};
|
|
41
|
+
type TextContent = string;
|
|
42
|
+
type BlobContent = {
|
|
43
|
+
blob: Blob;
|
|
44
|
+
extension: string;
|
|
45
|
+
};
|
|
46
|
+
type UrlContent = {
|
|
47
|
+
url: string;
|
|
48
|
+
extension: string;
|
|
49
|
+
};
|
|
41
50
|
export type UploadFileRequest<TBucket extends AnyBuilder> = {
|
|
42
51
|
/**
|
|
43
|
-
* Can be a string or
|
|
52
|
+
* Can be a string, a blob or an url.
|
|
44
53
|
*
|
|
45
54
|
* If it's a string, it will be converted to a blob with the type `text/plain`.
|
|
46
55
|
*
|
|
@@ -58,11 +67,16 @@ export type UploadFileRequest<TBucket extends AnyBuilder> = {
|
|
|
58
67
|
* extension: "csv",
|
|
59
68
|
* }
|
|
60
69
|
* ```
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* // url
|
|
74
|
+
* content: {
|
|
75
|
+
* url: "https://example.com/my-file.csv",
|
|
76
|
+
* }
|
|
77
|
+
* ```
|
|
61
78
|
*/
|
|
62
|
-
content:
|
|
63
|
-
blob: Blob;
|
|
64
|
-
extension: string;
|
|
65
|
-
};
|
|
79
|
+
content: TextContent | BlobContent | UrlContent;
|
|
66
80
|
options?: UploadOptions;
|
|
67
81
|
} & (TBucket['$config']['ctx'] extends Record<string, never> ? {} : {
|
|
68
82
|
ctx: TBucket['$config']['ctx'];
|
|
@@ -177,7 +191,7 @@ type EdgeStoreClient<TRouter extends AnyRouter> = {
|
|
|
177
191
|
* You can also filter the results by passing a filter object.
|
|
178
192
|
* The results are paginated.
|
|
179
193
|
*/
|
|
180
|
-
listFiles: (params?: ListFilesRequest<TRouter['buckets'][K]>) => Promise<ListFilesResponse<TRouter['buckets'][K]
|
|
194
|
+
listFiles: (params?: ListFilesRequest<TRouter['buckets'][K]>) => Promise<Prettify<ListFilesResponse<TRouter['buckets'][K]>>>;
|
|
181
195
|
};
|
|
182
196
|
};
|
|
183
197
|
export declare function initEdgeStoreClient<TRouter extends AnyRouter>(config: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/client/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,IAAI,CAAC;AAErD,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACzB,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,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;;;;;;;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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/client/index.ts"],"names":[],"mappings":"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"}
|
package/dist/core/index.js
CHANGED
|
@@ -10,6 +10,13 @@ require('cookie');
|
|
|
10
10
|
require('jose');
|
|
11
11
|
require('uuid');
|
|
12
12
|
|
|
13
|
+
// type guard for `content`
|
|
14
|
+
function isTextContent(content) {
|
|
15
|
+
return typeof content === 'string';
|
|
16
|
+
}
|
|
17
|
+
function isBlobContent(content) {
|
|
18
|
+
return typeof content !== 'string' && 'blob' in content;
|
|
19
|
+
}
|
|
13
20
|
function initEdgeStoreClient(config) {
|
|
14
21
|
const sdk = index.initEdgeStoreSdk({
|
|
15
22
|
accessKey: config.accessKey,
|
|
@@ -27,8 +34,8 @@ function initEdgeStoreClient(config) {
|
|
|
27
34
|
const content = params.content;
|
|
28
35
|
const ctx = 'ctx' in params ? params.ctx : {};
|
|
29
36
|
const input = 'input' in params ? params.input : {};
|
|
30
|
-
const { blob, extension } = (()=>{
|
|
31
|
-
if (
|
|
37
|
+
const { blob, extension } = await (async ()=>{
|
|
38
|
+
if (isTextContent(content)) {
|
|
32
39
|
return {
|
|
33
40
|
blob: new Blob([
|
|
34
41
|
content
|
|
@@ -37,11 +44,16 @@ function initEdgeStoreClient(config) {
|
|
|
37
44
|
}),
|
|
38
45
|
extension: 'txt'
|
|
39
46
|
};
|
|
40
|
-
} else {
|
|
47
|
+
} else if (isBlobContent(content)) {
|
|
41
48
|
return {
|
|
42
49
|
blob: content.blob,
|
|
43
50
|
extension: content.extension
|
|
44
51
|
};
|
|
52
|
+
} else {
|
|
53
|
+
return {
|
|
54
|
+
blob: await getBlobFromUrl(content.url),
|
|
55
|
+
extension: content.extension
|
|
56
|
+
};
|
|
45
57
|
}
|
|
46
58
|
})();
|
|
47
59
|
const path = shared.buildPath({
|
|
@@ -158,6 +170,10 @@ function initEdgeStoreClient(config) {
|
|
|
158
170
|
}
|
|
159
171
|
return url;
|
|
160
172
|
}
|
|
173
|
+
async function getBlobFromUrl(url) {
|
|
174
|
+
const res = await fetch(url);
|
|
175
|
+
return await res.blob();
|
|
176
|
+
}
|
|
161
177
|
|
|
162
178
|
class EdgeStoreApiClientError extends Error {
|
|
163
179
|
constructor(opts){
|
package/dist/core/index.mjs
CHANGED
|
@@ -7,6 +7,13 @@ import 'cookie';
|
|
|
7
7
|
import 'jose';
|
|
8
8
|
import 'uuid';
|
|
9
9
|
|
|
10
|
+
// type guard for `content`
|
|
11
|
+
function isTextContent(content) {
|
|
12
|
+
return typeof content === 'string';
|
|
13
|
+
}
|
|
14
|
+
function isBlobContent(content) {
|
|
15
|
+
return typeof content !== 'string' && 'blob' in content;
|
|
16
|
+
}
|
|
10
17
|
function initEdgeStoreClient(config) {
|
|
11
18
|
const sdk = initEdgeStoreSdk({
|
|
12
19
|
accessKey: config.accessKey,
|
|
@@ -24,8 +31,8 @@ function initEdgeStoreClient(config) {
|
|
|
24
31
|
const content = params.content;
|
|
25
32
|
const ctx = 'ctx' in params ? params.ctx : {};
|
|
26
33
|
const input = 'input' in params ? params.input : {};
|
|
27
|
-
const { blob, extension } = (()=>{
|
|
28
|
-
if (
|
|
34
|
+
const { blob, extension } = await (async ()=>{
|
|
35
|
+
if (isTextContent(content)) {
|
|
29
36
|
return {
|
|
30
37
|
blob: new Blob([
|
|
31
38
|
content
|
|
@@ -34,11 +41,16 @@ function initEdgeStoreClient(config) {
|
|
|
34
41
|
}),
|
|
35
42
|
extension: 'txt'
|
|
36
43
|
};
|
|
37
|
-
} else {
|
|
44
|
+
} else if (isBlobContent(content)) {
|
|
38
45
|
return {
|
|
39
46
|
blob: content.blob,
|
|
40
47
|
extension: content.extension
|
|
41
48
|
};
|
|
49
|
+
} else {
|
|
50
|
+
return {
|
|
51
|
+
blob: await getBlobFromUrl(content.url),
|
|
52
|
+
extension: content.extension
|
|
53
|
+
};
|
|
42
54
|
}
|
|
43
55
|
})();
|
|
44
56
|
const path = buildPath({
|
|
@@ -155,6 +167,10 @@ function initEdgeStoreClient(config) {
|
|
|
155
167
|
}
|
|
156
168
|
return url;
|
|
157
169
|
}
|
|
170
|
+
async function getBlobFromUrl(url) {
|
|
171
|
+
const res = await fetch(url);
|
|
172
|
+
return await res.blob();
|
|
173
|
+
}
|
|
158
174
|
|
|
159
175
|
class EdgeStoreApiClientError extends Error {
|
|
160
176
|
constructor(opts){
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edgestore/server",
|
|
3
|
-
"version": "0.1.5-alpha.
|
|
3
|
+
"version": "0.1.5-alpha.6",
|
|
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",
|
|
@@ -127,5 +127,5 @@
|
|
|
127
127
|
"typescript": "^5.1.6",
|
|
128
128
|
"zod": "^3.21.4"
|
|
129
129
|
},
|
|
130
|
-
"gitHead": "
|
|
130
|
+
"gitHead": "c39746e4fcf5a5d9568794bbe0236f8d21812e7d"
|
|
131
131
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/ban-types */
|
|
2
1
|
import { type NextRequest } from 'next/server';
|
|
3
2
|
import { type EdgeStoreRouter } from '../../../core/internals/bucketBuilder';
|
|
4
3
|
import EdgeStoreError, {
|
|
@@ -32,7 +31,7 @@ export type Config<TCtx> = {
|
|
|
32
31
|
router: EdgeStoreRouter<TCtx>;
|
|
33
32
|
logLevel?: LogLevel;
|
|
34
33
|
} & (TCtx extends Record<string, never>
|
|
35
|
-
?
|
|
34
|
+
? object
|
|
36
35
|
: {
|
|
37
36
|
provider?: Provider;
|
|
38
37
|
router: EdgeStoreRouter<TCtx>;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/ban-types */
|
|
2
1
|
import { type NextApiRequest, type NextApiResponse } from 'next/types';
|
|
3
2
|
import { type EdgeStoreRouter } from '../../../core/internals/bucketBuilder';
|
|
4
3
|
import EdgeStoreError, {
|
|
@@ -33,7 +32,7 @@ export type Config<TCtx> = {
|
|
|
33
32
|
router: EdgeStoreRouter<TCtx>;
|
|
34
33
|
logLevel?: LogLevel;
|
|
35
34
|
} & (TCtx extends Record<string, never>
|
|
36
|
-
?
|
|
35
|
+
? object
|
|
37
36
|
: {
|
|
38
37
|
provider?: Provider;
|
|
39
38
|
router: EdgeStoreRouter<TCtx>;
|
package/src/core/client/index.ts
CHANGED
|
@@ -49,9 +49,32 @@ export type UploadOptions = {
|
|
|
49
49
|
temporary?: boolean;
|
|
50
50
|
};
|
|
51
51
|
|
|
52
|
+
type TextContent = string;
|
|
53
|
+
type BlobContent = {
|
|
54
|
+
blob: Blob;
|
|
55
|
+
extension: string;
|
|
56
|
+
};
|
|
57
|
+
type UrlContent = {
|
|
58
|
+
url: string;
|
|
59
|
+
extension: string;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
// type guard for `content`
|
|
63
|
+
function isTextContent(
|
|
64
|
+
content: TextContent | BlobContent | UrlContent,
|
|
65
|
+
): content is TextContent {
|
|
66
|
+
return typeof content === 'string';
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function isBlobContent(
|
|
70
|
+
content: TextContent | BlobContent | UrlContent,
|
|
71
|
+
): content is BlobContent {
|
|
72
|
+
return typeof content !== 'string' && 'blob' in content;
|
|
73
|
+
}
|
|
74
|
+
|
|
52
75
|
export type UploadFileRequest<TBucket extends AnyBuilder> = {
|
|
53
76
|
/**
|
|
54
|
-
* Can be a string or
|
|
77
|
+
* Can be a string, a blob or an url.
|
|
55
78
|
*
|
|
56
79
|
* If it's a string, it will be converted to a blob with the type `text/plain`.
|
|
57
80
|
*
|
|
@@ -69,13 +92,16 @@ export type UploadFileRequest<TBucket extends AnyBuilder> = {
|
|
|
69
92
|
* extension: "csv",
|
|
70
93
|
* }
|
|
71
94
|
* ```
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```ts
|
|
98
|
+
* // url
|
|
99
|
+
* content: {
|
|
100
|
+
* url: "https://example.com/my-file.csv",
|
|
101
|
+
* }
|
|
102
|
+
* ```
|
|
72
103
|
*/
|
|
73
|
-
content:
|
|
74
|
-
| string
|
|
75
|
-
| {
|
|
76
|
-
blob: Blob;
|
|
77
|
-
extension: string;
|
|
78
|
-
};
|
|
104
|
+
content: TextContent | BlobContent | UrlContent;
|
|
79
105
|
options?: UploadOptions;
|
|
80
106
|
} & (TBucket['$config']['ctx'] extends Record<string, never>
|
|
81
107
|
? {}
|
|
@@ -201,7 +227,7 @@ type EdgeStoreClient<TRouter extends AnyRouter> = {
|
|
|
201
227
|
*/
|
|
202
228
|
listFiles: (
|
|
203
229
|
params?: ListFilesRequest<TRouter['buckets'][K]>,
|
|
204
|
-
) => Promise<ListFilesResponse<TRouter['buckets'][K]
|
|
230
|
+
) => Promise<Prettify<ListFilesResponse<TRouter['buckets'][K]>>>;
|
|
205
231
|
};
|
|
206
232
|
};
|
|
207
233
|
|
|
@@ -235,17 +261,22 @@ export function initEdgeStoreClient<TRouter extends AnyRouter>(config: {
|
|
|
235
261
|
const ctx = 'ctx' in params ? params.ctx : {};
|
|
236
262
|
const input = 'input' in params ? params.input : {};
|
|
237
263
|
|
|
238
|
-
const { blob, extension } = (() => {
|
|
239
|
-
if (
|
|
264
|
+
const { blob, extension } = await (async () => {
|
|
265
|
+
if (isTextContent(content)) {
|
|
240
266
|
return {
|
|
241
267
|
blob: new Blob([content], { type: 'text/plain' }),
|
|
242
268
|
extension: 'txt',
|
|
243
269
|
};
|
|
244
|
-
} else {
|
|
270
|
+
} else if (isBlobContent(content)) {
|
|
245
271
|
return {
|
|
246
272
|
blob: content.blob,
|
|
247
273
|
extension: content.extension,
|
|
248
274
|
};
|
|
275
|
+
} else {
|
|
276
|
+
return {
|
|
277
|
+
blob: await getBlobFromUrl(content.url),
|
|
278
|
+
extension: content.extension,
|
|
279
|
+
};
|
|
249
280
|
}
|
|
250
281
|
})();
|
|
251
282
|
|
|
@@ -383,6 +414,11 @@ function getUrl(url: string, baseUrl?: string) {
|
|
|
383
414
|
return url;
|
|
384
415
|
}
|
|
385
416
|
|
|
417
|
+
async function getBlobFromUrl(url: string) {
|
|
418
|
+
const res = await fetch(url);
|
|
419
|
+
return await res.blob();
|
|
420
|
+
}
|
|
421
|
+
|
|
386
422
|
export type InferClientResponse<TRouter extends AnyRouter> = {
|
|
387
423
|
[TBucketName in keyof TRouter['buckets']]: {
|
|
388
424
|
[TClienFn in keyof EdgeStoreClient<TRouter>[TBucketName]]: Simplify<
|