@edgestore/shared 0.0.0-canary-20260730114359

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.
Files changed (38) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/errors/EdgeStoreError.d.ts +47 -0
  4. package/dist/errors/EdgeStoreError.d.ts.map +1 -0
  5. package/dist/errors/EdgeStoreError.js +43 -0
  6. package/dist/errors/index.d.ts +9 -0
  7. package/dist/errors/index.d.ts.map +1 -0
  8. package/dist/errors/index.js +20 -0
  9. package/dist/index.d.ts +8 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +3 -0
  12. package/dist/internals/bucketBuilder.d.ts +315 -0
  13. package/dist/internals/bucketBuilder.d.ts.map +1 -0
  14. package/dist/internals/bucketBuilder.js +230 -0
  15. package/dist/internals/createPathParamProxy.d.ts +21 -0
  16. package/dist/internals/createPathParamProxy.d.ts.map +1 -0
  17. package/dist/internals/createPathParamProxy.js +29 -0
  18. package/dist/internals/providerCapabilities.d.ts +44 -0
  19. package/dist/internals/providerCapabilities.d.ts.map +1 -0
  20. package/dist/internals/providerTypes.d.ts +270 -0
  21. package/dist/internals/providerTypes.d.ts.map +1 -0
  22. package/dist/internals/sharedFuncTypes.d.ts +30 -0
  23. package/dist/internals/sharedFuncTypes.d.ts.map +1 -0
  24. package/dist/internals/types.d.ts +47 -0
  25. package/dist/internals/types.d.ts.map +1 -0
  26. package/dist/types.d.ts +94 -0
  27. package/dist/types.d.ts.map +1 -0
  28. package/package.json +81 -0
  29. package/src/errors/EdgeStoreError.ts +89 -0
  30. package/src/errors/index.ts +14 -0
  31. package/src/index.ts +7 -0
  32. package/src/internals/bucketBuilder.ts +677 -0
  33. package/src/internals/createPathParamProxy.ts +40 -0
  34. package/src/internals/providerCapabilities.ts +126 -0
  35. package/src/internals/providerTypes.ts +388 -0
  36. package/src/internals/sharedFuncTypes.ts +38 -0
  37. package/src/internals/types.ts +52 -0
  38. package/src/types.ts +146 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 EdgeStore contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # Internal Shared Package for EdgeStore
@@ -0,0 +1,47 @@
1
+ import { type Simplify } from '../types.js';
2
+ export declare const EDGE_STORE_ERROR_CODES: {
3
+ readonly BAD_REQUEST: 400;
4
+ readonly FILE_TOO_LARGE: 400;
5
+ readonly MIME_TYPE_NOT_ALLOWED: 400;
6
+ readonly UNAUTHORIZED: 401;
7
+ readonly UPLOAD_NOT_ALLOWED: 403;
8
+ readonly DELETE_NOT_ALLOWED: 403;
9
+ readonly CREATE_CONTEXT_ERROR: 500;
10
+ readonly SERVER_ERROR: 500;
11
+ };
12
+ export type EdgeStoreErrorCodeKey = keyof typeof EDGE_STORE_ERROR_CODES;
13
+ export type EdgeStoreErrorDetails<TCode extends EdgeStoreErrorCodeKey> = TCode extends 'FILE_TOO_LARGE' ? {
14
+ maxFileSize: number;
15
+ fileSize: number;
16
+ } : TCode extends 'MIME_TYPE_NOT_ALLOWED' ? {
17
+ allowedMimeTypes: string[];
18
+ mimeType: string;
19
+ } : never;
20
+ export type EdgeStoreJsonResponse = Simplify<{
21
+ message: string;
22
+ code: 'FILE_TOO_LARGE';
23
+ details: EdgeStoreErrorDetails<'FILE_TOO_LARGE'>;
24
+ } | {
25
+ message: string;
26
+ code: 'MIME_TYPE_NOT_ALLOWED';
27
+ details: EdgeStoreErrorDetails<'MIME_TYPE_NOT_ALLOWED'>;
28
+ } | {
29
+ message: string;
30
+ code: Exclude<EdgeStoreErrorCodeKey, 'FILE_TOO_LARGE' | 'MIME_TYPE_NOT_ALLOWED'>;
31
+ }>;
32
+ export declare class EdgeStoreError<TCode extends EdgeStoreErrorCodeKey> extends Error {
33
+ readonly cause?: Error;
34
+ readonly code: TCode;
35
+ readonly level: 'error' | 'warn';
36
+ readonly details: EdgeStoreErrorDetails<TCode>;
37
+ constructor(opts: {
38
+ message: string;
39
+ code: TCode;
40
+ cause?: Error;
41
+ } & (EdgeStoreErrorDetails<TCode> extends undefined ? object : {
42
+ details: EdgeStoreErrorDetails<TCode>;
43
+ }));
44
+ formattedMessage(): string;
45
+ formattedJson(): EdgeStoreJsonResponse;
46
+ }
47
+ //# sourceMappingURL=EdgeStoreError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EdgeStoreError.d.ts","sourceRoot":"","sources":["../../src/errors/EdgeStoreError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,eAAO,MAAM,sBAAsB;;;;;;;;;CASzB,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAAG,MAAM,OAAO,sBAAsB,CAAC;AAExE,MAAM,MAAM,qBAAqB,CAAC,KAAK,SAAS,qBAAqB,IACnE,KAAK,SAAS,gBAAgB,GAC1B;IACE,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,GACD,KAAK,SAAS,uBAAuB,GACnC;IACE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB,GACD,KAAK,CAAC;AAEd,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CACxC;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;CAClD,GACD;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,uBAAuB,CAAC;IAC9B,OAAO,EAAE,qBAAqB,CAAC,uBAAuB,CAAC,CAAC;CACzD,GACD;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CACX,qBAAqB,EACrB,gBAAgB,GAAG,uBAAuB,CAC3C,CAAC;CACH,CACJ,CAAC;AAEF,qBAAa,cAAc,CAAC,KAAK,SAAS,qBAAqB,CAAE,SAAQ,KAAK;IAC5E,SAAgB,KAAK,CAAC,EAAE,KAAK,CAAC;IAC9B,SAAgB,IAAI,EAAE,KAAK,CAAC;IAC5B,SAAgB,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACxC,SAAgB,OAAO,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC;gBAGpD,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,KAAK,CAAC;QACZ,KAAK,CAAC,EAAE,KAAK,CAAC;KACf,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,SAAS,GAC/C,MAAM,GACN;QACE,OAAO,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACvC,CAAC;IAWR,gBAAgB,IAAI,MAAM;IAM1B,aAAa,IAAI,qBAAqB;CAQvC"}
@@ -0,0 +1,43 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else obj[key] = value;
10
+ return obj;
11
+ }
12
+ const EDGE_STORE_ERROR_CODES = {
13
+ BAD_REQUEST: 400,
14
+ FILE_TOO_LARGE: 400,
15
+ MIME_TYPE_NOT_ALLOWED: 400,
16
+ UNAUTHORIZED: 401,
17
+ UPLOAD_NOT_ALLOWED: 403,
18
+ DELETE_NOT_ALLOWED: 403,
19
+ CREATE_CONTEXT_ERROR: 500,
20
+ SERVER_ERROR: 500
21
+ };
22
+ class EdgeStoreError extends Error {
23
+ formattedMessage() {
24
+ return `${this.message}${this.details ? `\n Details: ${JSON.stringify(this.details)}` : ''}${this.cause ? `\n Caused by: ${this.cause.message}` : ''}`;
25
+ }
26
+ formattedJson() {
27
+ return {
28
+ message: this.code === 'SERVER_ERROR' ? 'Internal server error' : this.message,
29
+ code: this.code,
30
+ details: this.details
31
+ };
32
+ }
33
+ constructor(opts){
34
+ super(opts.message), _define_property(this, "cause", void 0), _define_property(this, "code", void 0), _define_property(this, "level", void 0), _define_property(this, "details", void 0);
35
+ this.name = 'EdgeStoreError';
36
+ this.code = opts.code;
37
+ this.cause = opts.cause;
38
+ this.level = EDGE_STORE_ERROR_CODES[opts.code] >= 500 ? 'error' : 'warn';
39
+ this.details = 'details' in opts ? opts.details : undefined;
40
+ }
41
+ }
42
+
43
+ export { EDGE_STORE_ERROR_CODES, EdgeStoreError };
@@ -0,0 +1,9 @@
1
+ import { type EdgeStoreJsonResponse } from './EdgeStoreError.js';
2
+ export declare class EdgeStoreApiClientError extends Error {
3
+ readonly data: EdgeStoreJsonResponse;
4
+ constructor(opts: {
5
+ response: EdgeStoreJsonResponse;
6
+ });
7
+ }
8
+ export * from './EdgeStoreError.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE9D,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,SAAgB,IAAI,EAAE,qBAAqB,CAAC;gBAEhC,IAAI,EAAE;QAAE,QAAQ,EAAE,qBAAqB,CAAA;KAAE;CAMtD;AAED,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,20 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else obj[key] = value;
10
+ return obj;
11
+ }
12
+ class EdgeStoreApiClientError extends Error {
13
+ constructor(opts){
14
+ super(opts.response.message), _define_property(this, "data", void 0);
15
+ this.name = 'EdgeStoreApiClientError';
16
+ this.data = opts.response;
17
+ }
18
+ }
19
+
20
+ export { EdgeStoreApiClientError };
@@ -0,0 +1,8 @@
1
+ export * from './errors/index.js';
2
+ export * from './types.js';
3
+ export * from './internals/bucketBuilder.js';
4
+ export * from './internals/types.js';
5
+ export * from './internals/providerTypes.js';
6
+ export * from './internals/providerCapabilities.js';
7
+ export * from './internals/sharedFuncTypes.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export { EdgeStoreApiClientError } from './errors/index.js';
2
+ export { initEdgeStore } from './internals/bucketBuilder.js';
3
+ export { EDGE_STORE_ERROR_CODES, EdgeStoreError } from './errors/EdgeStoreError.js';
@@ -0,0 +1,315 @@
1
+ import { z } from 'zod';
2
+ import { type KeysOfUnion, type MaybePromise, type Simplify } from '../types.js';
3
+ type Merge<TType, TWith> = {
4
+ [TKey in keyof TType | keyof TWith]?: TKey extends keyof TType ? TKey extends keyof TWith ? TType[TKey] & TWith[TKey] : TType[TKey] : TWith[TKey & keyof TWith];
5
+ };
6
+ type ConvertStringToFunction<TType> = {
7
+ [K in keyof TType]: TType[K] extends object ? Simplify<ConvertStringToFunction<TType[K]>> : () => string;
8
+ };
9
+ type UnionToIntersection<TType> = (TType extends any ? (k: TType) => void : never) extends (k: infer I) => void ? I : never;
10
+ export type InferBucketPathKeys<TBucket extends Builder<any, AnyDef>> = KeysOfUnion<TBucket['_def']['path'][number]>;
11
+ type InferBucketPathKeysFromDef<TDef extends AnyDef> = KeysOfUnion<TDef['path'][number]>;
12
+ export type InferBucketPathObject<TBucket extends Builder<any, AnyDef>> = InferBucketPathKeys<TBucket> extends never ? Record<string, never> : {
13
+ [TKey in InferBucketPathKeys<TBucket>]: string;
14
+ };
15
+ export type InferBucketPathOrder<TBucket extends Builder<any, AnyDef>> = InferBucketPathKeys<TBucket> extends never ? [] : InferBucketPathKeys<TBucket>[];
16
+ export type InferBucketPathObjectFromDef<TDef extends AnyDef> = InferBucketPathKeysFromDef<TDef> extends never ? Record<string, never> : {
17
+ [TKey in InferBucketPathKeysFromDef<TDef>]: string;
18
+ };
19
+ type NormalizeMetadata<TMetadata> = string extends keyof TMetadata ? Record<string, Exclude<TMetadata[string], null | undefined>> : Simplify<{
20
+ [TKey in keyof TMetadata as Extract<TMetadata[TKey], null | undefined> extends never ? TKey : never]: Exclude<TMetadata[TKey], null | undefined>;
21
+ } & {
22
+ [TKey in keyof TMetadata as Extract<TMetadata[TKey], null | undefined> extends never ? never : TKey]?: Exclude<TMetadata[TKey], null | undefined>;
23
+ }>;
24
+ export type InferMetadataObject<TBucket extends Builder<any, AnyDef>> = TBucket['_def']['metadata'] extends (...args: any) => any ? NormalizeMetadata<Awaited<ReturnType<TBucket['_def']['metadata']>>> : Record<string, never>;
25
+ type InferMetadataObjectFromDef<TDef extends AnyDef> = TDef['metadata'] extends (...args: any) => any ? NormalizeMetadata<Awaited<ReturnType<TDef['metadata']>>> : Record<string, never>;
26
+ export type AnyContextValue = string | undefined;
27
+ /**
28
+ * Context shared by router hooks, path and metadata builders, and providers.
29
+ *
30
+ * Values are limited to strings so every supported provider receives the same
31
+ * context shape. Optional properties may be `undefined`; providers omit them
32
+ * when serializing the context.
33
+ */
34
+ export interface AnyContext {
35
+ [key: string]: AnyContextValue;
36
+ }
37
+ export type AnyInput = z.AnyZodObject | z.ZodNever;
38
+ export type AnyPath = Record<string, () => string>[];
39
+ type PathParam<TPath extends AnyPath> = {
40
+ path: keyof UnionToIntersection<TPath[number]>;
41
+ };
42
+ type Conditions<TPath extends AnyPath> = {
43
+ eq?: string | PathParam<TPath>;
44
+ lt?: string | PathParam<TPath>;
45
+ lte?: string | PathParam<TPath>;
46
+ gt?: string | PathParam<TPath>;
47
+ gte?: string | PathParam<TPath>;
48
+ contains?: string | PathParam<TPath>;
49
+ in?: string | PathParam<TPath> | (string | PathParam<TPath>)[];
50
+ not?: string | PathParam<TPath> | Conditions<TPath>;
51
+ };
52
+ export type AccessControlSchema<TCtx, TDef extends AnyDef> = Merge<{
53
+ [TKey in keyof TCtx]?: string | PathParam<TDef['path']> | Conditions<TDef['path']>;
54
+ }, {
55
+ OR?: AccessControlSchema<TCtx, TDef>[];
56
+ AND?: AccessControlSchema<TCtx, TDef>[];
57
+ NOT?: AccessControlSchema<TCtx, TDef>[];
58
+ }>;
59
+ export type AccessControl<TCtx, TDef extends AnyDef> = 'private' | AccessControlSchema<TCtx, TDef>;
60
+ export type AutoSignedUrlsConfig = {
61
+ expiresIn?: number;
62
+ includeThumbnails?: boolean;
63
+ };
64
+ type BucketConfig = {
65
+ /**
66
+ * Maximum size for a single file in bytes
67
+ *
68
+ * e.g. 1024 * 1024 * 10 = 10MB
69
+ */
70
+ maxSize?: number;
71
+ /**
72
+ * Accepted MIME types
73
+ *
74
+ * e.g. ['image/jpeg', 'image/png']
75
+ *
76
+ * You can also use wildcards after the slash:
77
+ *
78
+ * e.g. ['image/*']
79
+ */
80
+ accept?: string[];
81
+ };
82
+ type BeforeUploadFn<TCtx, TDef extends AnyDef> = (params: {
83
+ ctx: TCtx;
84
+ input: z.infer<TDef['input']>;
85
+ fileInfo: {
86
+ size: number;
87
+ type: string;
88
+ extension: string;
89
+ fileName?: string;
90
+ replaceTargetUrl?: string;
91
+ temporary: boolean;
92
+ };
93
+ }) => MaybePromise<boolean>;
94
+ type BeforeDeleteFn<TCtx, TDef extends AnyDef> = (params: {
95
+ ctx: TCtx;
96
+ fileInfo: {
97
+ url: string;
98
+ size: number;
99
+ uploadedAt: Date;
100
+ path: InferBucketPathObjectFromDef<TDef>;
101
+ metadata: InferMetadataObjectFromDef<TDef>;
102
+ };
103
+ }) => MaybePromise<boolean>;
104
+ export type AnyMetadata = Record<string, string | undefined | null>;
105
+ type MetadataFn<TCtx, TInput extends AnyInput, TMetadata extends AnyMetadata> = (params: {
106
+ ctx: TCtx;
107
+ input: z.infer<TInput>;
108
+ }) => MaybePromise<TMetadata>;
109
+ export type AnyMetadataFn = MetadataFn<any, AnyInput, AnyMetadata>;
110
+ type BucketType = 'IMAGE' | 'FILE';
111
+ type Def<TInput extends AnyInput, TPath extends AnyPath, TMetadata extends AnyMetadataFn> = {
112
+ type: BucketType;
113
+ input: TInput;
114
+ path: TPath;
115
+ metadata: TMetadata;
116
+ bucketConfig?: BucketConfig;
117
+ accessControl?: AccessControl<any, any>;
118
+ autoSignedUrls?: AutoSignedUrlsConfig;
119
+ beforeUpload?: BeforeUploadFn<any, any>;
120
+ beforeDelete?: BeforeDeleteFn<any, any>;
121
+ };
122
+ type AnyDef = Def<AnyInput, AnyPath, AnyMetadataFn>;
123
+ type Builder<TCtx, TDef extends AnyDef> = {
124
+ /** only used for types */
125
+ $config: {
126
+ ctx: TCtx;
127
+ };
128
+ /**
129
+ * @internal
130
+ */
131
+ _def: TDef;
132
+ /**
133
+ * You can set an input that will be required in every upload from the client.
134
+ *
135
+ * This can be used to add additional information to the file, like choose the file path or add metadata.
136
+ */
137
+ input<TInput extends AnyInput>(input: TInput): Builder<TCtx, {
138
+ type: TDef['type'];
139
+ input: TInput;
140
+ path: TDef['path'];
141
+ metadata: TDef['metadata'];
142
+ bucketConfig: TDef['bucketConfig'];
143
+ accessControl: TDef['accessControl'];
144
+ autoSignedUrls: TDef['autoSignedUrls'];
145
+ beforeUpload: TDef['beforeUpload'];
146
+ beforeDelete: TDef['beforeDelete'];
147
+ }>;
148
+ /**
149
+ * The `path` is similar to folders in a file system.
150
+ * But in this case, every segment of the path must have a meaning.
151
+ *
152
+ * ```
153
+ * // e.g. 123/profile/file.jpg
154
+ * {
155
+ * author: '123',
156
+ * type: 'profile',
157
+ * }
158
+ * ```
159
+ */
160
+ path<TParams extends AnyPath>(pathResolver: (params: {
161
+ ctx: Simplify<ConvertStringToFunction<TCtx>>;
162
+ input: Simplify<ConvertStringToFunction<z.infer<TDef['input']>>>;
163
+ }) => [...TParams]): Builder<TCtx, {
164
+ type: TDef['type'];
165
+ input: TDef['input'];
166
+ path: TParams;
167
+ metadata: TDef['metadata'];
168
+ bucketConfig: TDef['bucketConfig'];
169
+ accessControl: TDef['accessControl'];
170
+ autoSignedUrls: TDef['autoSignedUrls'];
171
+ beforeUpload: TDef['beforeUpload'];
172
+ beforeDelete: TDef['beforeDelete'];
173
+ }>;
174
+ /**
175
+ * This metadata will be added to every file uploaded to this bucket.
176
+ *
177
+ * This can be used, for example, to filter files.
178
+ */
179
+ metadata<TMetadata extends AnyMetadata>(metadata: MetadataFn<TCtx, TDef['input'], TMetadata>): Builder<TCtx, {
180
+ type: TDef['type'];
181
+ input: TDef['input'];
182
+ path: TDef['path'];
183
+ metadata: MetadataFn<any, any, TMetadata>;
184
+ bucketConfig: TDef['bucketConfig'];
185
+ accessControl: TDef['accessControl'];
186
+ autoSignedUrls: TDef['autoSignedUrls'];
187
+ beforeUpload: TDef['beforeUpload'];
188
+ beforeDelete: TDef['beforeDelete'];
189
+ }>;
190
+ /**
191
+ * If you set this, your bucket will automatically be configured as a protected bucket.
192
+ *
193
+ * This means that images will only be accessible from within your app.
194
+ * And only if it passes the check set in this function.
195
+ */
196
+ accessControl(accessControl: AccessControl<TCtx, TDef>): Builder<TCtx, {
197
+ type: TDef['type'];
198
+ input: TDef['input'];
199
+ path: TDef['path'];
200
+ metadata: TDef['metadata'];
201
+ bucketConfig: TDef['bucketConfig'];
202
+ accessControl: AccessControl<any, any>;
203
+ autoSignedUrls: TDef['autoSignedUrls'];
204
+ beforeUpload: TDef['beforeUpload'];
205
+ beforeDelete: TDef['beforeDelete'];
206
+ }>;
207
+ /**
208
+ * Automatically return temporary signed read URLs after uploads.
209
+ *
210
+ * This requires explicit non-public access control.
211
+ */
212
+ autoSignedUrls(config?: AutoSignedUrlsConfig): Builder<TCtx, {
213
+ type: TDef['type'];
214
+ input: TDef['input'];
215
+ path: TDef['path'];
216
+ metadata: TDef['metadata'];
217
+ bucketConfig: TDef['bucketConfig'];
218
+ accessControl: TDef['accessControl'];
219
+ autoSignedUrls: AutoSignedUrlsConfig;
220
+ beforeUpload: TDef['beforeUpload'];
221
+ beforeDelete: TDef['beforeDelete'];
222
+ }>;
223
+ /**
224
+ * return `true` to allow upload
225
+ *
226
+ * By default, every upload from your app is allowed.
227
+ */
228
+ beforeUpload(beforeUpload: BeforeUploadFn<TCtx, TDef>): Builder<TCtx, {
229
+ type: TDef['type'];
230
+ input: TDef['input'];
231
+ path: TDef['path'];
232
+ metadata: TDef['metadata'];
233
+ bucketConfig: TDef['bucketConfig'];
234
+ accessControl: TDef['accessControl'];
235
+ autoSignedUrls: TDef['autoSignedUrls'];
236
+ beforeUpload: BeforeUploadFn<any, any>;
237
+ beforeDelete: TDef['beforeDelete'];
238
+ }>;
239
+ /**
240
+ * return `true` to allow delete
241
+ *
242
+ * This function must be defined if you want to delete files directly from the client.
243
+ */
244
+ beforeDelete(beforeDelete: BeforeDeleteFn<TCtx, TDef>): Builder<TCtx, {
245
+ type: TDef['type'];
246
+ input: TDef['input'];
247
+ path: TDef['path'];
248
+ metadata: TDef['metadata'];
249
+ bucketConfig: TDef['bucketConfig'];
250
+ accessControl: TDef['accessControl'];
251
+ autoSignedUrls: TDef['autoSignedUrls'];
252
+ beforeUpload: TDef['beforeUpload'];
253
+ beforeDelete: BeforeDeleteFn<any, any>;
254
+ }>;
255
+ };
256
+ export type AnyBuilder = Builder<any, AnyDef>;
257
+ declare class EdgeStoreBuilder<TCtx = Record<string, never>> {
258
+ context<TNewContext extends AnyContext>(): EdgeStoreBuilder<TNewContext>;
259
+ create(): {
260
+ /**
261
+ * Builder object for creating an image bucket
262
+ */
263
+ imageBucket(config?: BucketConfig): Builder<TCtx, {
264
+ type: "IMAGE";
265
+ input: z.ZodNever;
266
+ path: [];
267
+ metadata: () => Record<string, never>;
268
+ bucketConfig?: BucketConfig;
269
+ accessControl?: AccessControl<any, any>;
270
+ autoSignedUrls?: AutoSignedUrlsConfig;
271
+ beforeUpload?: BeforeUploadFn<any, any>;
272
+ beforeDelete?: BeforeDeleteFn<any, any>;
273
+ }>;
274
+ /**
275
+ * Builder object for creating a file bucket
276
+ */
277
+ fileBucket(config?: BucketConfig): Builder<TCtx, {
278
+ type: "FILE";
279
+ input: z.ZodNever;
280
+ path: [];
281
+ metadata: () => Record<string, never>;
282
+ bucketConfig?: BucketConfig;
283
+ accessControl?: AccessControl<any, any>;
284
+ autoSignedUrls?: AutoSignedUrlsConfig;
285
+ beforeUpload?: BeforeUploadFn<any, any>;
286
+ beforeDelete?: BeforeDeleteFn<any, any>;
287
+ }>;
288
+ /**
289
+ * Create a router
290
+ */
291
+ router: <TBuckets extends Record<string, Builder<TCtx, AnyDef>>>(buckets: TBuckets) => {
292
+ $config: {
293
+ ctx: TCtx;
294
+ };
295
+ buckets: TBuckets;
296
+ };
297
+ };
298
+ }
299
+ export type EdgeStoreRouter<TCtx, TBuckets extends Record<string, Builder<TCtx, AnyDef>> = Record<string, Builder<TCtx, AnyDef>>> = {
300
+ /**
301
+ * Only used for types
302
+ * @internal
303
+ */
304
+ $config: {
305
+ ctx: TCtx;
306
+ };
307
+ buckets: TBuckets;
308
+ };
309
+ export type AnyRouter = EdgeStoreRouter<any, Record<string, AnyBuilder>>;
310
+ /**
311
+ * Initialize EdgeStore - be done exactly once per backend
312
+ */
313
+ export declare const initEdgeStore: EdgeStoreBuilder<Record<string, never>>;
314
+ export {};
315
+ //# sourceMappingURL=bucketBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bucketBuilder.d.ts","sourceRoot":"","sources":["../../src/internals/bucketBuilder.ts"],"names":[],"mappings":"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"}