@edgestore/shared 0.1.5-alpha.14 → 0.1.5-alpha.16

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.
@@ -0,0 +1,270 @@
1
+ import { z } from 'zod';
2
+ import { type KeysOfUnion, type MaybePromise, type Simplify } from '../types';
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 InferBucketPathObjectFromDef<TDef extends AnyDef> = InferBucketPathKeysFromDef<TDef> extends never ? Record<string, never> : {
16
+ [TKey in InferBucketPathKeysFromDef<TDef>]: string;
17
+ };
18
+ export type InferMetadataObject<TBucket extends Builder<any, AnyDef>> = TBucket['_def']['metadata'] extends (...args: any) => any ? Awaited<ReturnType<TBucket['_def']['metadata']>> : Record<string, never>;
19
+ type InferMetadataObjectFromDef<TDef extends AnyDef> = TDef['metadata'] extends (...args: any) => any ? Awaited<ReturnType<TDef['metadata']>> : Record<string, never>;
20
+ export type AnyContext = Record<string, string | undefined | null>;
21
+ export type AnyInput = z.AnyZodObject | z.ZodNever;
22
+ export type AnyPath = Record<string, () => string>[];
23
+ type PathParam<TPath extends AnyPath> = {
24
+ path: keyof UnionToIntersection<TPath[number]>;
25
+ };
26
+ type Conditions<TPath extends AnyPath> = {
27
+ eq?: string | PathParam<TPath>;
28
+ lt?: string | PathParam<TPath>;
29
+ lte?: string | PathParam<TPath>;
30
+ gt?: string | PathParam<TPath>;
31
+ gte?: string | PathParam<TPath>;
32
+ contains?: string | PathParam<TPath>;
33
+ in?: string | PathParam<TPath> | (string | PathParam<TPath>)[];
34
+ not?: string | PathParam<TPath> | Conditions<TPath>;
35
+ };
36
+ export type AccessControlSchema<TCtx, TDef extends AnyDef> = Merge<{
37
+ [TKey in keyof TCtx]?: string | PathParam<TDef['path']> | Conditions<TDef['path']>;
38
+ }, {
39
+ OR?: AccessControlSchema<TCtx, TDef>[];
40
+ AND?: AccessControlSchema<TCtx, TDef>[];
41
+ NOT?: AccessControlSchema<TCtx, TDef>[];
42
+ }>;
43
+ type BucketConfig = {
44
+ /**
45
+ * Maximum size for a single file in bytes
46
+ *
47
+ * e.g. 1024 * 1024 * 10 = 10MB
48
+ */
49
+ maxSize?: number;
50
+ /**
51
+ * Accepted MIME types
52
+ *
53
+ * e.g. ['image/jpeg', 'image/png']
54
+ *
55
+ * You can also use wildcards after the slash:
56
+ *
57
+ * e.g. ['image/*']
58
+ */
59
+ accept?: string[];
60
+ };
61
+ type FileInfo = {
62
+ size: number;
63
+ type: string;
64
+ extension: string;
65
+ fileName?: string;
66
+ replaceTargetUrl?: string;
67
+ temporary: boolean;
68
+ };
69
+ type BeforeUploadFn<TCtx, TDef extends AnyDef> = (params: {
70
+ ctx: TCtx;
71
+ input: z.infer<TDef['input']>;
72
+ fileInfo: FileInfo;
73
+ }) => MaybePromise<boolean>;
74
+ type BeforeDeleteFn<TCtx, TDef extends AnyDef> = (params: {
75
+ ctx: TCtx;
76
+ fileInfo: {
77
+ url: string;
78
+ size: number;
79
+ uploadedAt: Date;
80
+ path: InferBucketPathObjectFromDef<TDef>;
81
+ metadata: InferMetadataObjectFromDef<TDef>;
82
+ };
83
+ }) => MaybePromise<boolean>;
84
+ export type AnyMetadata = Record<string, string | undefined | null>;
85
+ type MetadataFn<TCtx, TInput extends AnyInput, TMetadata extends AnyMetadata> = (params: {
86
+ ctx: TCtx;
87
+ input: z.infer<TInput>;
88
+ }) => MaybePromise<TMetadata>;
89
+ export type AnyMetadataFn = MetadataFn<any, AnyInput, AnyMetadata>;
90
+ type BucketType = 'IMAGE' | 'FILE';
91
+ type Def<TInput extends AnyInput, TPath extends AnyPath, TMetadata extends AnyMetadataFn> = {
92
+ type: BucketType;
93
+ input: TInput;
94
+ path: TPath;
95
+ metadata: TMetadata;
96
+ bucketConfig?: BucketConfig;
97
+ accessControl?: AccessControlSchema<any, any>;
98
+ beforeUpload?: BeforeUploadFn<any, any>;
99
+ beforeDelete?: BeforeDeleteFn<any, any>;
100
+ };
101
+ type AnyDef = Def<AnyInput, AnyPath, AnyMetadataFn>;
102
+ type Builder<TCtx, TDef extends AnyDef> = {
103
+ /** only used for types */
104
+ $config: {
105
+ ctx: TCtx;
106
+ };
107
+ /**
108
+ * @internal
109
+ */
110
+ _def: TDef;
111
+ /**
112
+ * You can set an input that will be required in every upload from the client.
113
+ *
114
+ * This can be used to add additional information to the file, like choose the file path or add metadata.
115
+ */
116
+ input<TInput extends AnyInput>(input: TInput): Builder<TCtx, {
117
+ type: TDef['type'];
118
+ input: TInput;
119
+ path: TDef['path'];
120
+ metadata: TDef['metadata'];
121
+ bucketConfig: TDef['bucketConfig'];
122
+ accessControl: TDef['accessControl'];
123
+ beforeUpload: TDef['beforeUpload'];
124
+ beforeDelete: TDef['beforeDelete'];
125
+ }>;
126
+ /**
127
+ * The `path` is similar to folders in a file system.
128
+ * But in this case, every segment of the path must have a meaning.
129
+ *
130
+ * ```
131
+ * // e.g. 123/profile/file.jpg
132
+ * {
133
+ * author: '123',
134
+ * type: 'profile',
135
+ * }
136
+ * ```
137
+ */
138
+ path<TParams extends AnyPath>(pathResolver: (params: {
139
+ ctx: Simplify<ConvertStringToFunction<TCtx>>;
140
+ input: Simplify<ConvertStringToFunction<z.infer<TDef['input']>>>;
141
+ }) => [...TParams]): Builder<TCtx, {
142
+ type: TDef['type'];
143
+ input: TDef['input'];
144
+ path: TParams;
145
+ metadata: TDef['metadata'];
146
+ bucketConfig: TDef['bucketConfig'];
147
+ accessControl: TDef['accessControl'];
148
+ beforeUpload: TDef['beforeUpload'];
149
+ beforeDelete: TDef['beforeDelete'];
150
+ }>;
151
+ /**
152
+ * This metadata will be added to every file uploaded to this bucket.
153
+ *
154
+ * This can be used, for example, to filter files.
155
+ */
156
+ metadata<TMetadata extends AnyMetadata>(metadata: MetadataFn<TCtx, TDef['input'], TMetadata>): Builder<TCtx, {
157
+ type: TDef['type'];
158
+ input: TDef['input'];
159
+ path: TDef['path'];
160
+ metadata: MetadataFn<any, any, TMetadata>;
161
+ bucketConfig: TDef['bucketConfig'];
162
+ accessControl: TDef['accessControl'];
163
+ beforeUpload: TDef['beforeUpload'];
164
+ beforeDelete: TDef['beforeDelete'];
165
+ }>;
166
+ /**
167
+ * If you set this, your bucket will automatically be configured as a protected bucket.
168
+ *
169
+ * This means that images will only be accessible from within your app.
170
+ * And only if it passes the check set in this function.
171
+ */
172
+ accessControl(accessControl: AccessControlSchema<TCtx, TDef>): Builder<TCtx, {
173
+ type: TDef['type'];
174
+ input: TDef['input'];
175
+ path: TDef['path'];
176
+ metadata: TDef['metadata'];
177
+ bucketConfig: TDef['bucketConfig'];
178
+ accessControl: AccessControlSchema<any, any>;
179
+ beforeUpload: TDef['beforeUpload'];
180
+ beforeDelete: TDef['beforeDelete'];
181
+ }>;
182
+ /**
183
+ * return `true` to allow upload
184
+ *
185
+ * By default every upload from your app is allowed.
186
+ */
187
+ beforeUpload(beforeUpload: BeforeUploadFn<TCtx, TDef>): Builder<TCtx, {
188
+ type: TDef['type'];
189
+ input: TDef['input'];
190
+ path: TDef['path'];
191
+ metadata: TDef['metadata'];
192
+ bucketConfig: TDef['bucketConfig'];
193
+ accessControl: TDef['accessControl'];
194
+ beforeUpload: BeforeUploadFn<any, any>;
195
+ beforeDelete: TDef['beforeDelete'];
196
+ }>;
197
+ /**
198
+ * return `true` to allow delete
199
+ *
200
+ * This function must be defined if you want to delete files directly from the client.
201
+ */
202
+ beforeDelete(beforeDelete: BeforeDeleteFn<TCtx, TDef>): Builder<TCtx, {
203
+ type: TDef['type'];
204
+ input: TDef['input'];
205
+ path: TDef['path'];
206
+ metadata: TDef['metadata'];
207
+ bucketConfig: TDef['bucketConfig'];
208
+ accessControl: TDef['accessControl'];
209
+ beforeUpload: TDef['beforeUpload'];
210
+ beforeDelete: BeforeDeleteFn<any, any>;
211
+ }>;
212
+ };
213
+ export type AnyBuilder = Builder<any, AnyDef>;
214
+ declare class EdgeStoreBuilder<TCtx = Record<string, never>> {
215
+ context<TNewContext extends AnyContext>(): EdgeStoreBuilder<TNewContext>;
216
+ create(): {
217
+ /**
218
+ * Builder object for creating an image bucket
219
+ */
220
+ imageBucket(config?: BucketConfig | undefined): Builder<TCtx, {
221
+ type: "IMAGE";
222
+ input: z.ZodNever;
223
+ path: [];
224
+ metadata: () => Record<string, never>;
225
+ bucketConfig?: BucketConfig | undefined;
226
+ accessControl?: AccessControlSchema<any, any> | undefined;
227
+ beforeUpload?: BeforeUploadFn<any, any> | undefined;
228
+ beforeDelete?: BeforeDeleteFn<any, any> | undefined;
229
+ }>;
230
+ /**
231
+ * Builder object for creating a file bucket
232
+ */
233
+ fileBucket(config?: BucketConfig | undefined): Builder<TCtx, {
234
+ type: "FILE";
235
+ input: z.ZodNever;
236
+ path: [];
237
+ metadata: () => Record<string, never>;
238
+ bucketConfig?: BucketConfig | undefined;
239
+ accessControl?: AccessControlSchema<any, any> | undefined;
240
+ beforeUpload?: BeforeUploadFn<any, any> | undefined;
241
+ beforeDelete?: BeforeDeleteFn<any, any> | undefined;
242
+ }>;
243
+ /**
244
+ * Create a router
245
+ */
246
+ router: <TBuckets extends Record<string, Builder<TCtx, AnyDef>>>(buckets: TBuckets) => {
247
+ $config: {
248
+ ctx: TCtx;
249
+ };
250
+ buckets: TBuckets;
251
+ };
252
+ };
253
+ }
254
+ export type EdgeStoreRouter<TCtx> = {
255
+ /**
256
+ * Only used for types
257
+ * @internal
258
+ */
259
+ $config: {
260
+ ctx: TCtx;
261
+ };
262
+ buckets: Record<string, Builder<TCtx, AnyDef>>;
263
+ };
264
+ export type AnyRouter = EdgeStoreRouter<any>;
265
+ /**
266
+ * Initialize EdgeStore - be done exactly once per backend
267
+ */
268
+ export declare const initEdgeStore: EdgeStoreBuilder<Record<string, never>>;
269
+ export {};
270
+ //# 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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"}
@@ -0,0 +1,21 @@
1
+ type RecursivePathProxy = {
2
+ (): string;
3
+ ctx: any;
4
+ input: any;
5
+ };
6
+ /**
7
+ * Creates a Proxy that prints the path to the property when called.
8
+ *
9
+ * Example:
10
+ *
11
+ * ```ts
12
+ * const pathParamProxy = createPathParamProxy();
13
+ * console.log(pathParamProxy.ctx.user.id());
14
+ * // Logs: "ctx.user.id"
15
+ * console.log(pathParamProxy.input.type());
16
+ * // Logs: "input.type"
17
+ * ```
18
+ */
19
+ export declare function createPathParamProxy(): RecursivePathProxy;
20
+ export {};
21
+ //# sourceMappingURL=createPathParamProxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPathParamProxy.d.ts","sourceRoot":"","sources":["../../src/internals/createPathParamProxy.ts"],"names":[],"mappings":"AAAA,KAAK,kBAAkB,GAAG;IACxB,IAAI,MAAM,CAAC;IACX,GAAG,EAAE,GAAG,CAAC;IACT,KAAK,EAAE,GAAG,CAAC;CACZ,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,IAAI,kBAAkB,CAoBzD"}
@@ -0,0 +1,114 @@
1
+ import { type MaybePromise } from '../types';
2
+ import { type AnyBuilder, type AnyMetadata, type EdgeStoreRouter } from './bucketBuilder';
3
+ export type InitParams = {
4
+ ctx: any;
5
+ router: EdgeStoreRouter<any>;
6
+ };
7
+ export type InitRes = {
8
+ token?: string;
9
+ };
10
+ export type GetFileParams = {
11
+ url: string;
12
+ };
13
+ export type GetFileRes = {
14
+ url: string;
15
+ size: number;
16
+ uploadedAt: Date;
17
+ path: {
18
+ [key: string]: string;
19
+ };
20
+ metadata: {
21
+ [key: string]: string;
22
+ };
23
+ };
24
+ export type RequestUploadParams = {
25
+ multipart?: {
26
+ uploadId?: string;
27
+ parts: number[];
28
+ };
29
+ bucketName: string;
30
+ bucketType: string;
31
+ fileInfo: {
32
+ size: number;
33
+ extension: string;
34
+ isPublic: boolean;
35
+ fileName?: string;
36
+ path: {
37
+ key: string;
38
+ value: string;
39
+ }[];
40
+ metadata: AnyMetadata;
41
+ replaceTargetUrl?: string;
42
+ temporary: boolean;
43
+ };
44
+ };
45
+ export type RequestUploadPartsParams = {
46
+ multipart: {
47
+ uploadId: string;
48
+ parts: number[];
49
+ };
50
+ path: string;
51
+ };
52
+ export type RequestUploadPartsRes = {
53
+ multipart: {
54
+ uploadId: string;
55
+ parts: {
56
+ partNumber: number;
57
+ uploadUrl: string;
58
+ }[];
59
+ };
60
+ };
61
+ export type CompleteMultipartUploadParams = {
62
+ uploadId: string;
63
+ key: string;
64
+ parts: {
65
+ partNumber: number;
66
+ eTag: string;
67
+ }[];
68
+ };
69
+ export type CompleteMultipartUploadRes = {
70
+ success: boolean;
71
+ };
72
+ export type RequestUploadRes = {
73
+ uploadUrl: string;
74
+ accessUrl: string;
75
+ thumbnailUrl?: string | null;
76
+ } | {
77
+ multipart: {
78
+ key: string;
79
+ uploadId: string;
80
+ partSize: number;
81
+ totalParts: number;
82
+ parts: {
83
+ partNumber: number;
84
+ uploadUrl: string;
85
+ }[];
86
+ };
87
+ accessUrl: string;
88
+ thumbnailUrl?: string | null;
89
+ };
90
+ export type ConfirmUpload = {
91
+ bucket: AnyBuilder;
92
+ url: string;
93
+ };
94
+ export type ConfirmUploadRes = {
95
+ success: boolean;
96
+ };
97
+ export type DeleteFileParams = {
98
+ bucket: AnyBuilder;
99
+ url: string;
100
+ };
101
+ export type DeleteFileRes = {
102
+ success: boolean;
103
+ };
104
+ export type Provider = {
105
+ init: (params: InitParams) => MaybePromise<InitRes>;
106
+ getBaseUrl: () => MaybePromise<string>;
107
+ getFile: (params: GetFileParams) => MaybePromise<GetFileRes>;
108
+ requestUpload: (params: RequestUploadParams) => MaybePromise<RequestUploadRes>;
109
+ requestUploadParts: (params: RequestUploadPartsParams) => MaybePromise<RequestUploadPartsRes>;
110
+ completeMultipartUpload: (params: CompleteMultipartUploadParams) => MaybePromise<CompleteMultipartUploadRes>;
111
+ confirmUpload: (params: ConfirmUpload) => MaybePromise<ConfirmUploadRes>;
112
+ deleteFile: (params: DeleteFileParams) => MaybePromise<DeleteFileRes>;
113
+ };
114
+ //# sourceMappingURL=providerTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerTypes.d.ts","sourceRoot":"","sources":["../../src/internals/providerTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { type Simplify } from '../types';
2
+ import { type AnyMetadata } from './bucketBuilder';
3
+ import { type DeleteFileRes, type RequestUploadPartsRes, type RequestUploadRes } from './providerTypes';
4
+ export type SharedInitRes = {
5
+ newCookies: string[];
6
+ token: string | undefined;
7
+ baseUrl: string;
8
+ };
9
+ export type SharedRequestUploadRes = Simplify<RequestUploadRes & {
10
+ size: number;
11
+ uploadedAt: string;
12
+ path: Record<string, string>;
13
+ pathOrder: string[];
14
+ metadata: AnyMetadata;
15
+ }>;
16
+ export type SharedRequestUploadPartsRes = RequestUploadPartsRes;
17
+ export type SharedDeleteFileRes = DeleteFileRes;
18
+ //# sourceMappingURL=sharedFuncTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharedFuncTypes.d.ts","sourceRoot":"","sources":["../../src/internals/sharedFuncTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAC3C,gBAAgB,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,WAAW,CAAC;CACvB,CACF,CAAC;AACF,MAAM,MAAM,2BAA2B,GAAG,qBAAqB,CAAC;AAChE,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAC"}
@@ -0,0 +1,30 @@
1
+ export type UploadOptions = {
2
+ /**
3
+ * e.g. 'my-file-name.jpg'
4
+ *
5
+ * By default, a unique file name will be generated for each upload.
6
+ * If you want to use a custom file name, you can use this option.
7
+ * If you use the same file name for multiple uploads, the previous file will be overwritten.
8
+ * But it might take some time for the CDN cache to be cleared.
9
+ * So maybe you will keep seeing the old file for a while.
10
+ *
11
+ * If you want to replace an existing file immediately leave the `manualFileName` option empty and use the `replaceTargetUrl` option.
12
+ */
13
+ manualFileName?: string;
14
+ /**
15
+ * Use this to replace an existing file.
16
+ * It will automatically delete the existing file when the upload is complete.
17
+ */
18
+ replaceTargetUrl?: string;
19
+ /**
20
+ * If true, the file needs to be confirmed by using the `confirmUpload` function.
21
+ * If the file is not confirmed within 24 hours, it will be deleted.
22
+ *
23
+ * This is useful for pages where the file is uploaded as soon as it is selected,
24
+ * but the user can leave the page without submitting the form.
25
+ *
26
+ * This avoids unnecessary zombie files in the bucket.
27
+ */
28
+ temporary?: boolean;
29
+ };
30
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/internals/types.ts"],"names":[],"mappings":"AAAA,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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * @internal
3
+ */
4
+ export type identity<TType> = TType;
5
+ export type InferOptional<TType, TKeys extends keyof TType> = Omit<TType, TKeys> & Partial<Pick<TType, TKeys>>;
6
+ export type UndefinedKeys<TType> = {
7
+ [K in keyof TType]: undefined extends TType[K] ? K : never;
8
+ }[keyof TType];
9
+ /**
10
+ * @internal
11
+ */
12
+ export type FlatOverwrite<TType, TWith> = InferOptional<{
13
+ [TKey in keyof TType | keyof TWith]: TKey extends keyof TWith ? TWith[TKey] : TKey extends keyof TType ? TType[TKey] : never;
14
+ }, UndefinedKeys<TType> | UndefinedKeys<TWith>>;
15
+ /**
16
+ * @internal
17
+ */
18
+ export type IntersectionError<TKey extends string> = `The property '${TKey}' in your router collides with a built-in method, rename this router or procedure on your backend.`;
19
+ /**
20
+ * @internal
21
+ */
22
+ export type ProtectedIntersection<TType, TWith> = keyof TType & keyof TWith extends never ? TType & TWith : IntersectionError<string & keyof TType & keyof TWith>;
23
+ /**
24
+ * @public
25
+ */
26
+ export type Maybe<TType> = TType | null | undefined;
27
+ /**
28
+ * @internal
29
+ */
30
+ export type ThenArg<TType> = TType extends PromiseLike<infer U> ? ThenArg<U> : TType;
31
+ /**
32
+ * @internal
33
+ * @see https://github.com/ianstormtaylor/superstruct/blob/7973400cd04d8ad92bbdc2b6f35acbfb3c934079/src/utils.ts#L323-L325
34
+ */
35
+ export type Simplify<TType> = TType extends any[] | Date ? TType : {
36
+ [K in keyof TType]: TType[K];
37
+ };
38
+ /**
39
+ * @internal
40
+ */
41
+ export type Prettify<TType> = {
42
+ [K in keyof TType]: TType[K];
43
+ } & {};
44
+ /**
45
+ * @public
46
+ */
47
+ export type Dict<TType> = Record<string, TType | undefined>;
48
+ /**
49
+ * @public
50
+ */
51
+ export type MaybePromise<TType> = Promise<TType> | TType;
52
+ /**
53
+ * @internal
54
+ *
55
+ * Creates a "lower-priority" type inference.
56
+ * https://github.com/microsoft/TypeScript/issues/14829#issuecomment-322267089
57
+ */
58
+ export type InferLast<TType> = TType & {
59
+ [KeyType in keyof TType]: TType[KeyType];
60
+ };
61
+ /**
62
+ * @public
63
+ */
64
+ export type inferAsyncReturnType<TFunction extends (...args: any) => any> = ThenArg<ReturnType<TFunction>>;
65
+ export type FilterKeys<TObj extends object, TFilter> = {
66
+ [TKey in keyof TObj]: TObj[TKey] extends TFilter ? TKey : never;
67
+ }[keyof TObj];
68
+ /**
69
+ * @internal
70
+ */
71
+ export type Filter<TObj extends object, TFilter> = Pick<TObj, FilterKeys<TObj, TFilter>>;
72
+ /**
73
+ * Unwrap return type if the type is a function (sync or async), else use the type as is
74
+ * @internal
75
+ */
76
+ export type Unwrap<TType> = TType extends (...args: any[]) => infer R ? ThenArg<R> : TType;
77
+ /**
78
+ * Makes the object recursively optional.
79
+ * @internal
80
+ */
81
+ export type DeepPartial<TObject> = TObject extends object ? {
82
+ [P in keyof TObject]?: DeepPartial<TObject[P]>;
83
+ } : TObject;
84
+ /**
85
+ * Get the keys of a union type.
86
+ * @internal
87
+ */
88
+ export type KeysOfUnion<TUnion> = TUnion extends TUnion ? keyof TUnion extends string ? keyof TUnion : string : never;
89
+ /**
90
+ * Unify a union of objects into a single object.
91
+ * @internal
92
+ */
93
+ export type UnifyUnion<TUnion> = Simplify<(TUnion extends any ? (k: TUnion) => void : never) extends (k: infer I) => void ? I : never>;
94
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edgestore/shared",
3
- "version": "0.1.5-alpha.14",
3
+ "version": "0.1.5-alpha.16",
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",
@@ -47,13 +47,20 @@
47
47
  "license": "MIT",
48
48
  "peerDependencies": {
49
49
  "react": ">=16.8.0",
50
- "react-dom": ">=16.8.0"
50
+ "react-dom": ">=16.8.0",
51
+ "zod": ">=3.0.0"
52
+ },
53
+ "peerDependenciesMeta": {
54
+ "zod": {
55
+ "optional": true
56
+ }
51
57
  },
52
58
  "devDependencies": {
53
59
  "@types/node": "^18.11.18",
54
60
  "react": "^18.2.0",
55
61
  "react-dom": "^18.2.0",
56
- "typescript": "^5.1.6"
62
+ "typescript": "^5.1.6",
63
+ "zod": "3.21.4"
57
64
  },
58
- "gitHead": "443a96fea331ba76622c2a428e1dd41db2694eeb"
65
+ "gitHead": "2f11a326b8412df19c375a75f1f8a329b6b9287b"
59
66
  }