@zenstackhq/swr 1.3.2 → 1.4.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/generator.js CHANGED
@@ -29,6 +29,7 @@ function generate(model, options, dmmf) {
29
29
  if (options.useSuperJson !== undefined) {
30
30
  warnings.push('The option "useSuperJson" is deprecated. The generated hooks always use superjson for serialization.');
31
31
  }
32
+ const legacyMutations = options.legacyMutations !== false;
32
33
  const models = (0, sdk_1.getDataModels)(model);
33
34
  yield (0, sdk_1.generateModelMeta)(project, models, {
34
35
  output: path_1.default.join(outDir, '__model_meta.ts'),
@@ -43,61 +44,61 @@ function generate(model, options, dmmf) {
43
44
  warnings.push(`Unable to find mapping for model ${dataModel.name}`);
44
45
  return;
45
46
  }
46
- generateModelHooks(project, outDir, dataModel, mapping);
47
+ generateModelHooks(project, outDir, dataModel, mapping, legacyMutations);
47
48
  });
48
49
  yield (0, sdk_1.saveProject)(project);
49
50
  return warnings;
50
51
  });
51
52
  }
52
53
  exports.generate = generate;
53
- function generateModelHooks(project, outDir, model, mapping) {
54
+ function generateModelHooks(project, outDir, model, mapping, legacyMutations) {
54
55
  const fileName = (0, change_case_1.paramCase)(model.name);
55
56
  const sf = project.createSourceFile(path_1.default.join(outDir, `${fileName}.ts`), undefined, { overwrite: true });
56
57
  sf.addStatements('/* eslint-disable */');
57
58
  const prismaImport = (0, sdk_1.getPrismaClientImportSpec)(model.$container, outDir);
58
59
  sf.addImportDeclaration({
59
- namedImports: ['Prisma', model.name],
60
+ namedImports: ['Prisma'],
60
61
  isTypeOnly: true,
61
62
  moduleSpecifier: prismaImport,
62
63
  });
63
64
  sf.addStatements([
64
- `import { RequestHandlerContext, type GetNextArgs, type RequestOptions, type InfiniteRequestOptions, type PickEnumerable, type CheckSelect, useHooksContext } from '@zenstackhq/swr/runtime';`,
65
+ `import { type GetNextArgs, type QueryOptions, type InfiniteQueryOptions, type MutationOptions, type PickEnumerable, useHooksContext } from '@zenstackhq/swr/runtime';`,
65
66
  `import metadata from './__model_meta';`,
66
67
  `import * as request from '@zenstackhq/swr/runtime';`,
67
68
  ]);
68
69
  const modelNameCap = (0, upper_case_first_1.upperCaseFirst)(model.name);
69
70
  const prismaVersion = (0, sdk_1.getPrismaVersion)();
70
- const useMutation = sf.addFunction({
71
- name: `useMutate${model.name}`,
72
- isExported: true,
73
- statements: [
74
- 'const { endpoint, fetch, logging } = useHooksContext();',
75
- `const mutate = request.useMutate('${model.name}', metadata, logging);`,
76
- ],
77
- });
71
+ const useMutation = legacyMutations
72
+ ? sf.addFunction({
73
+ name: `useMutate${model.name}`,
74
+ isExported: true,
75
+ statements: [
76
+ 'const { endpoint, fetch } = useHooksContext();',
77
+ `const invalidate = request.useInvalidation('${model.name}', metadata);`,
78
+ ],
79
+ })
80
+ : undefined;
78
81
  const mutationFuncs = [];
79
82
  // create is somehow named "createOne" in the DMMF
80
83
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
81
84
  if (mapping.create || mapping.createOne) {
82
85
  const argsType = `Prisma.${model.name}CreateArgs`;
83
- const inputType = `Prisma.SelectSubset<T, ${argsType}>`;
84
- const returnType = `CheckSelect<T, ${model.name}, Prisma.${model.name}GetPayload<T>>`;
85
- mutationFuncs.push(generateMutation(useMutation, model, 'post', 'create', argsType, inputType, returnType, true));
86
+ mutationFuncs.push(generateMutation(sf, useMutation, model, 'POST', 'create', argsType, false));
86
87
  }
87
88
  // createMany
88
89
  if (mapping.createMany) {
89
90
  const argsType = `Prisma.${model.name}CreateManyArgs`;
90
- const inputType = `Prisma.SelectSubset<T, ${argsType}>`;
91
- const returnType = `Prisma.BatchPayload`;
92
- mutationFuncs.push(generateMutation(useMutation, model, 'post', 'createMany', argsType, inputType, returnType, false));
91
+ mutationFuncs.push(generateMutation(sf, useMutation, model, 'POST', 'createMany', argsType, true));
93
92
  }
94
93
  // findMany
95
94
  if (mapping.findMany) {
96
95
  const argsType = `Prisma.${model.name}FindManyArgs`;
97
96
  const inputType = `Prisma.SelectSubset<T, ${argsType}>`;
98
- const returnType = `Array<Prisma.${model.name}GetPayload<T>>`;
97
+ const returnElement = `Prisma.${model.name}GetPayload<T>`;
98
+ const returnType = `Array<${returnElement}>`;
99
+ const optimisticReturn = `Array<${makeOptimistic(returnElement)}>`;
99
100
  // regular findMany
100
- generateQueryHook(sf, model, 'findMany', argsType, inputType, returnType);
101
+ generateQueryHook(sf, model, 'findMany', argsType, inputType, optimisticReturn, undefined, false);
101
102
  // infinite findMany
102
103
  generateQueryHook(sf, model, 'findMany', argsType, inputType, returnType, undefined, true);
103
104
  }
@@ -105,56 +106,46 @@ function generateModelHooks(project, outDir, model, mapping) {
105
106
  if (mapping.findUnique) {
106
107
  const argsType = `Prisma.${model.name}FindUniqueArgs`;
107
108
  const inputType = `Prisma.SelectSubset<T, ${argsType}>`;
108
- const returnType = `Prisma.${model.name}GetPayload<T>`;
109
- generateQueryHook(sf, model, 'findUnique', argsType, inputType, returnType);
109
+ const returnType = makeOptimistic(`Prisma.${model.name}GetPayload<T>`);
110
+ generateQueryHook(sf, model, 'findUnique', argsType, inputType, returnType, undefined, false);
110
111
  }
111
112
  // findFirst
112
113
  if (mapping.findFirst) {
113
114
  const argsType = `Prisma.${model.name}FindFirstArgs`;
114
115
  const inputType = `Prisma.SelectSubset<T, ${argsType}>`;
115
- const returnType = `Prisma.${model.name}GetPayload<T>`;
116
- generateQueryHook(sf, model, 'findFirst', argsType, inputType, returnType);
116
+ const returnType = makeOptimistic(`Prisma.${model.name}GetPayload<T>`);
117
+ generateQueryHook(sf, model, 'findFirst', argsType, inputType, returnType, undefined, false);
117
118
  }
118
119
  // update
119
120
  // update is somehow named "updateOne" in the DMMF
120
121
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
121
122
  if (mapping.update || mapping.updateOne) {
122
123
  const argsType = `Prisma.${model.name}UpdateArgs`;
123
- const inputType = `Prisma.SelectSubset<T, ${argsType}>`;
124
- const returnType = `Prisma.${model.name}GetPayload<T>`;
125
- mutationFuncs.push(generateMutation(useMutation, model, 'put', 'update', argsType, inputType, returnType, true));
124
+ mutationFuncs.push(generateMutation(sf, useMutation, model, 'PUT', 'update', argsType, false));
126
125
  }
127
126
  // updateMany
128
127
  if (mapping.updateMany) {
129
128
  const argsType = `Prisma.${model.name}UpdateManyArgs`;
130
- const inputType = `Prisma.SelectSubset<T, ${argsType}>`;
131
- const returnType = `Prisma.BatchPayload`;
132
- mutationFuncs.push(generateMutation(useMutation, model, 'put', 'updateMany', argsType, inputType, returnType, false));
129
+ mutationFuncs.push(generateMutation(sf, useMutation, model, 'PUT', 'updateMany', argsType, true));
133
130
  }
134
131
  // upsert
135
132
  // upsert is somehow named "upsertOne" in the DMMF
136
133
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
137
134
  if (mapping.upsert || mapping.upsertOne) {
138
135
  const argsType = `Prisma.${model.name}UpsertArgs`;
139
- const inputType = `Prisma.SelectSubset<T, ${argsType}>`;
140
- const returnType = `Prisma.${model.name}GetPayload<T>`;
141
- mutationFuncs.push(generateMutation(useMutation, model, 'post', 'upsert', argsType, inputType, returnType, true));
136
+ mutationFuncs.push(generateMutation(sf, useMutation, model, 'POST', 'upsert', argsType, false));
142
137
  }
143
138
  // del
144
139
  // delete is somehow named "deleteOne" in the DMMF
145
140
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
146
141
  if (mapping.delete || mapping.deleteOne) {
147
142
  const argsType = `Prisma.${model.name}DeleteArgs`;
148
- const inputType = `Prisma.SelectSubset<T, ${argsType}>`;
149
- const returnType = `Prisma.${model.name}GetPayload<T>`;
150
- mutationFuncs.push(generateMutation(useMutation, model, 'delete', 'delete', argsType, inputType, returnType, true));
143
+ mutationFuncs.push(generateMutation(sf, useMutation, model, 'DELETE', 'delete', argsType, false));
151
144
  }
152
145
  // deleteMany
153
146
  if (mapping.deleteMany) {
154
147
  const argsType = `Prisma.${model.name}DeleteManyArgs`;
155
- const inputType = `Prisma.SelectSubset<T, ${argsType}>`;
156
- const returnType = `Prisma.BatchPayload`;
157
- mutationFuncs.push(generateMutation(useMutation, model, 'delete', 'deleteMany', argsType, inputType, returnType, false));
148
+ mutationFuncs.push(generateMutation(sf, useMutation, model, 'DELETE', 'deleteMany', argsType, true));
158
149
  }
159
150
  // aggregate
160
151
  if (mapping.aggregate) {
@@ -243,7 +234,10 @@ function generateModelHooks(project, outDir, model, mapping) {
243
234
  const returnType = `T extends { select: any; } ? T['select'] extends true ? number : Prisma.GetScalarType<T['select'], Prisma.${modelNameCap}CountAggregateOutputType> : number`;
244
235
  generateQueryHook(sf, model, 'count', argsType, inputType, returnType);
245
236
  }
246
- useMutation.addStatements(`return { ${mutationFuncs.join(', ')} };`);
237
+ useMutation === null || useMutation === void 0 ? void 0 : useMutation.addStatements(`return { ${mutationFuncs.join(', ')} };`);
238
+ }
239
+ function makeOptimistic(returnType) {
240
+ return `${returnType} & { $optimistic?: boolean }`;
247
241
  }
248
242
  function generateIndex(project, outDir, models) {
249
243
  const sf = project.createSourceFile(path_1.default.join(outDir, 'index.ts'), undefined, { overwrite: true });
@@ -270,7 +264,7 @@ function generateQueryHook(sf, model, operation, argsType, inputType, returnType
270
264
  }
271
265
  parameters.push({
272
266
  name: 'options?',
273
- type: infinite ? `InfiniteRequestOptions<${returnType}>` : `RequestOptions<${returnType}>`,
267
+ type: infinite ? `InfiniteQueryOptions<${returnType}>` : `QueryOptions<${returnType}>`,
274
268
  });
275
269
  sf.addFunction({
276
270
  name: `use${infinite ? 'Infinite' : ''}${(0, upper_case_first_1.upperCaseFirst)(operation)}${model.name}`,
@@ -280,30 +274,59 @@ function generateQueryHook(sf, model, operation, argsType, inputType, returnType
280
274
  })
281
275
  .addBody()
282
276
  .addStatements([
283
- 'const { endpoint, fetch } = useHooksContext();',
284
277
  !infinite
285
- ? `return request.useGet<${returnType}>('${model.name}', '${operation}', endpoint, args, options, fetch);`
286
- : `return request.useInfiniteGet<${inputType} | undefined, ${returnType}>('${model.name}', '${operation}', endpoint, getNextArgs, options, fetch);`,
278
+ ? `return request.useModelQuery('${model.name}', '${operation}', args, options);`
279
+ : `return request.useInfiniteModelQuery('${model.name}', '${operation}', getNextArgs, options);`,
287
280
  ]);
288
281
  }
289
- function generateMutation(func, model, method, operation, argsType, inputType, returnType, checkReadBack) {
282
+ function generateMutation(sf, useMutateModelFunc, model, method, operation, argsType, batchResult) {
283
+ // non-batch mutations are subject to read-back check
284
+ const checkReadBack = !batchResult;
285
+ const genericReturnType = batchResult ? 'Prisma.BatchPayload' : `Prisma.${model.name}GetPayload<T> | undefined`;
286
+ const returnType = batchResult ? 'Prisma.BatchPayload' : `Prisma.${model.name}GetPayload<${argsType}> | undefined`;
287
+ const genericInputType = `Prisma.SelectSubset<T, ${argsType}>`;
290
288
  const modelRouteName = (0, lower_case_first_1.lowerCaseFirst)(model.name);
291
289
  const funcName = `${operation}${model.name}`;
292
- const fetcherFunc = method === 'delete' ? 'del' : method;
293
- func.addFunction({
294
- name: funcName,
295
- isAsync: true,
296
- typeParameters: [`T extends ${argsType}`],
290
+ if (useMutateModelFunc) {
291
+ // generate async mutation function (legacy)
292
+ const mutationFunc = useMutateModelFunc.addFunction({
293
+ name: funcName,
294
+ isAsync: true,
295
+ typeParameters: [`T extends ${argsType}`],
296
+ parameters: [
297
+ {
298
+ name: 'args',
299
+ type: genericInputType,
300
+ },
301
+ ],
302
+ });
303
+ mutationFunc.addJsDoc(`@deprecated Use \`use${(0, upper_case_first_1.upperCaseFirst)(operation)}${model.name}\` hook instead.`);
304
+ mutationFunc
305
+ .addBody()
306
+ .addStatements([
307
+ `return await request.mutationRequest<${returnType}, ${checkReadBack}>('${method}', \`\${endpoint}/${modelRouteName}/${operation}\`, args, invalidate, fetch, ${checkReadBack});`,
308
+ ]);
309
+ }
310
+ // generate mutation hook
311
+ sf.addFunction({
312
+ name: `use${(0, upper_case_first_1.upperCaseFirst)(operation)}${model.name}`,
313
+ isExported: true,
297
314
  parameters: [
298
315
  {
299
- name: 'args',
300
- type: inputType,
316
+ name: 'options?',
317
+ type: `MutationOptions<${returnType}, unknown, ${argsType}>`,
301
318
  },
302
319
  ],
303
320
  })
304
321
  .addBody()
305
322
  .addStatements([
306
- `return await request.${fetcherFunc}<${returnType}, ${checkReadBack}>(\`\${endpoint}/${modelRouteName}/${operation}\`, args, mutate, fetch, ${checkReadBack});`,
323
+ `const mutation = request.useModelMutation('${model.name}', '${method}', '${operation}', metadata, options, ${checkReadBack});`,
324
+ `return {
325
+ ...mutation,
326
+ trigger<T extends ${argsType}>(args: ${genericInputType}) {
327
+ return mutation.trigger(args, options as any) as Promise<${genericReturnType}>;
328
+ }
329
+ };`,
307
330
  ]);
308
331
  return funcName;
309
332
  }
package/generator.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@zenstackhq/swr",
3
3
  "displayName": "ZenStack plugin for generating SWR hooks",
4
- "version": "1.3.2",
4
+ "version": "1.4.1",
5
5
  "description": "ZenStack plugin for generating SWR hooks",
6
6
  "main": "index.js",
7
7
  "repository": {
@@ -24,8 +24,8 @@
24
24
  "semver": "^7.3.8",
25
25
  "ts-morph": "^16.0.0",
26
26
  "upper-case-first": "^2.0.2",
27
- "@zenstackhq/runtime": "1.3.2",
28
- "@zenstackhq/sdk": "1.3.2"
27
+ "@zenstackhq/runtime": "1.4.1",
28
+ "@zenstackhq/sdk": "1.4.1"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@tanstack/react-query": "^4.28.0",
@@ -40,10 +40,10 @@
40
40
  "nock": "^13.3.6",
41
41
  "react": "18.2.0",
42
42
  "rimraf": "^3.0.2",
43
- "swr": "^2.0.3",
43
+ "swr": "^2.2.4",
44
44
  "ts-jest": "^29.0.5",
45
45
  "typescript": "^4.9.4",
46
- "@zenstackhq/testtools": "1.3.2"
46
+ "@zenstackhq/testtools": "1.4.1"
47
47
  },
48
48
  "scripts": {
49
49
  "clean": "rimraf dist",
@@ -1,7 +1,9 @@
1
1
  /// <reference types="react" />
2
2
  import { type ModelMeta } from '@zenstackhq/runtime/cross';
3
- import type { Fetcher, MutatorCallback, MutatorOptions, SWRConfiguration, SWRResponse } from 'swr';
4
- import { SWRInfiniteConfiguration, SWRInfiniteFetcher, SWRInfiniteResponse } from 'swr/infinite';
3
+ import type { Fetcher, SWRConfiguration, SWRResponse } from 'swr';
4
+ import { ScopedMutator } from 'swr/_internal';
5
+ import { type SWRInfiniteConfiguration, type SWRInfiniteFetcher, type SWRInfiniteResponse } from 'swr/infinite';
6
+ import { type SWRMutationConfiguration } from 'swr/mutation';
5
7
  export * from './prisma-types';
6
8
  /**
7
9
  * Function signature for `fetch`.
@@ -47,50 +49,62 @@ export declare function useHooksContext(): {
47
49
  endpoint: string;
48
50
  };
49
51
  /**
50
- * Client request options for regular query.
52
+ * Regular query options.
51
53
  */
52
- export type RequestOptions<Result, Error = any> = {
54
+ export type QueryOptions<Result, Error = unknown> = {
53
55
  /**
54
56
  * Disable data fetching
55
57
  */
56
58
  disabled?: boolean;
57
59
  /**
60
+ * @deprecated Use `fallbackData` instead
61
+ *
58
62
  * Equivalent to @see SWRConfiguration.fallbackData
59
63
  */
60
64
  initialData?: Result;
61
- } & SWRConfiguration<Result, Error, Fetcher<Result>>;
65
+ /**
66
+ * Whether to enable automatic optimistic update. Defaults to `true`.
67
+ */
68
+ optimisticUpdate?: boolean;
69
+ } & Omit<SWRConfiguration<Result, Error, Fetcher<Result>>, 'fetcher'>;
62
70
  /**
63
- * Client request options for infinite query.
71
+ * Infinite query options.
64
72
  */
65
- export type InfiniteRequestOptions<Result, Error = any> = {
73
+ export type InfiniteQueryOptions<Result, Error = unknown> = {
66
74
  /**
67
75
  * Disable data fetching
68
76
  */
69
77
  disabled?: boolean;
70
78
  /**
79
+ * @deprecated Use `fallbackData` instead
80
+ *
71
81
  * Equivalent to @see SWRInfiniteConfiguration.fallbackData
72
82
  */
73
83
  initialData?: Result[];
74
- } & SWRInfiniteConfiguration<Result, Error, SWRInfiniteFetcher<Result>>;
75
- export declare const QUERY_KEY_PREFIX = "zenstack";
76
- type QueryKey = {
77
- prefix: typeof QUERY_KEY_PREFIX;
78
- model: string;
79
- operation: string;
80
- args: unknown;
81
- };
82
- export declare function getQueryKey(model: string, operation: string, args?: unknown): string;
83
- export declare function parseQueryKey(key: unknown): QueryKey | undefined;
84
+ } & Omit<SWRInfiniteConfiguration<Result, Error, SWRInfiniteFetcher<Result>>, 'fetcher'>;
85
+ /**
86
+ * Mutation options.
87
+ */
88
+ export type MutationOptions<Result, Error, Args> = {
89
+ /**
90
+ * Whether to automatically optimistic-update queries potentially impacted. Defaults to `false`.
91
+ */
92
+ optimisticUpdate?: boolean;
93
+ } & Omit<SWRMutationConfiguration<Result, Error, string, Args>, 'fetcher'>;
84
94
  /**
85
- * Makes a GET request with SWR.
95
+ * Computes query key for the given model, operation, query args, and options.
96
+ */
97
+ export declare function getQueryKey(model: string, operation: string, args?: unknown, infinite?: boolean, optimisticUpdate?: boolean): string;
98
+ /**
99
+ * Makes a model query with SWR.
86
100
  *
87
- * @param url The request URL.
101
+ * @param model Model name
102
+ * @param operation Prisma operation (e.g, `findMany`)
88
103
  * @param args The request args object, which will be superjson-stringified and appended as "?q=" parameter
89
104
  * @param options Query options
90
- * @param fetch Custom fetch function
91
105
  * @returns SWR response
92
106
  */
93
- export declare function useGet<Result, Error = any>(model: string, operation: string, endpoint: string, args?: unknown, options?: RequestOptions<Result, Error>, fetch?: FetchFn): SWRResponse<Result, Error>;
107
+ export declare function useModelQuery<Result, Error = unknown>(model: string, operation: string, args?: unknown, options?: QueryOptions<Result, Error>): SWRResponse<Result, Error>;
94
108
  /**
95
109
  * Function for computing the query args for fetching a page during an infinite query.
96
110
  */
@@ -98,37 +112,25 @@ export type GetNextArgs<Args, Result> = (pageIndex: number, previousPageData: Re
98
112
  /**
99
113
  * Makes an infinite GET request with SWR.
100
114
  *
101
- * @param url The request URL.
102
- * @param getNextArgs Function for computing the query args for a page.
115
+ * @param model Model name
116
+ * @param operation Prisma operation (e.g, `findMany`)
117
+ * @param getNextArgs Function for computing the query args for a page
103
118
  * @param options Query options
104
- * @param fetch Custom fetch function
105
119
  * @returns SWR infinite query response
106
120
  */
107
- export declare function useInfiniteGet<Args, Result, Error = any>(model: string, operation: string, endpoint: string, getNextArgs: GetNextArgs<Args, any>, options?: InfiniteRequestOptions<Result, Error>, fetch?: FetchFn): SWRInfiniteResponse<Result, Error>;
121
+ export declare function useInfiniteModelQuery<Args, Result, Error = unknown>(model: string, operation: string, getNextArgs: GetNextArgs<Args, any>, options?: InfiniteQueryOptions<Result, Error>): SWRInfiniteResponse<Result, Error>;
122
+ export declare function useModelMutation<Args, Result, CheckReadBack extends boolean = boolean>(model: string, method: 'POST' | 'PUT' | 'DELETE', operation: string, modelMeta: ModelMeta, options?: MutationOptions<CheckReadBack extends true ? Result | undefined : Result, unknown, Args>, checkReadBack?: CheckReadBack): import("swr/mutation").SWRMutationResponse<CheckReadBack extends true ? Result | undefined : Result, unknown, string, Args>;
108
123
  /**
109
- * Makes a POST request.
124
+ * Makes a mutation request.
110
125
  *
111
- * @param url The request URL.
112
- * @param data The request data.
113
- * @param mutate Mutator for invalidating cache.
126
+ * @param url The request URL
127
+ * @param data The request data
128
+ * @param invalidate Function for invalidating a query
114
129
  */
115
- export declare function post<Result, C extends boolean = boolean>(url: string, data: unknown, mutate: Mutator, fetch?: FetchFn, checkReadBack?: C): Promise<C extends true ? Result | undefined : Result>;
130
+ export declare function mutationRequest<Result, C extends boolean = boolean>(method: 'POST' | 'PUT' | 'DELETE', url: string, data: unknown, invalidate?: Invalidator, fetch?: FetchFn, checkReadBack?: C): Promise<C extends true ? Result | undefined : Result>;
131
+ type Invalidator = (operation: string, args?: unknown) => ReturnType<ScopedMutator>;
132
+ export declare function useInvalidation(model: string, modelMeta: ModelMeta): Invalidator;
116
133
  /**
117
- * Makes a PUT request.
118
- *
119
- * @param url The request URL.
120
- * @param data The request data.
121
- * @param mutate Mutator for invalidating cache.
122
- */
123
- export declare function put<Result, C extends boolean = boolean>(url: string, data: unknown, mutate: Mutator, fetch?: FetchFn, checkReadBack?: C): Promise<C extends true ? Result | undefined : Result>;
124
- /**
125
- * Makes a DELETE request.
126
- *
127
- * @param url The request URL.
128
- * @param args The request args object, which will be superjson-stringified and appended as "?q=" parameter
129
- * @param mutate Mutator for invalidating cache.
134
+ * Makes fetch request for queries and mutations.
130
135
  */
131
- export declare function del<Result, C extends boolean = boolean>(url: string, args: unknown, mutate: Mutator, fetch?: FetchFn, checkReadBack?: C): Promise<C extends true ? Result | undefined : Result>;
132
- type Mutator = (operation: string, data?: unknown | Promise<unknown> | MutatorCallback, opts?: boolean | MutatorOptions) => Promise<unknown[]>;
133
- export declare function useMutate(model: string, modelMeta: ModelMeta, logging?: boolean): Mutator;
134
136
  export declare function fetcher<R, C extends boolean>(url: string, options?: RequestInit, fetch?: FetchFn, checkReadBack?: C): Promise<C extends true ? R | undefined : R>;
package/runtime/index.js CHANGED
@@ -49,7 +49,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
49
49
  return (mod && mod.__esModule) ? mod : { "default": mod };
50
50
  };
51
51
  Object.defineProperty(exports, "__esModule", { value: true });
52
- exports.fetcher = exports.useMutate = exports.del = exports.put = exports.post = exports.useInfiniteGet = exports.useGet = exports.parseQueryKey = exports.getQueryKey = exports.QUERY_KEY_PREFIX = exports.useHooksContext = exports.Provider = exports.RequestHandlerContext = void 0;
52
+ exports.fetcher = exports.useInvalidation = exports.mutationRequest = exports.useModelMutation = exports.useInfiniteModelQuery = exports.useModelQuery = exports.getQueryKey = exports.useHooksContext = exports.Provider = exports.RequestHandlerContext = void 0;
53
53
  /* eslint-disable @typescript-eslint/no-explicit-any */
54
54
  const browser_1 = require("@zenstackhq/runtime/browser");
55
55
  const cross_1 = require("@zenstackhq/runtime/cross");
@@ -57,7 +57,8 @@ const crossFetch = __importStar(require("cross-fetch"));
57
57
  const lower_case_first_1 = require("lower-case-first");
58
58
  const react_1 = require("react");
59
59
  const swr_1 = __importStar(require("swr"));
60
- const infinite_1 = __importDefault(require("swr/infinite"));
60
+ const infinite_1 = __importStar(require("swr/infinite"));
61
+ const mutation_1 = __importDefault(require("swr/mutation"));
61
62
  __exportStar(require("./prisma-types"), exports);
62
63
  const DEFAULT_QUERY_ENDPOINT = '/api/model';
63
64
  /**
@@ -79,137 +80,134 @@ function useHooksContext() {
79
80
  return Object.assign({ endpoint: endpoint !== null && endpoint !== void 0 ? endpoint : DEFAULT_QUERY_ENDPOINT }, rest);
80
81
  }
81
82
  exports.useHooksContext = useHooksContext;
82
- exports.QUERY_KEY_PREFIX = 'zenstack';
83
- function getQueryKey(model, operation, args) {
84
- return JSON.stringify({ prefix: exports.QUERY_KEY_PREFIX, model, operation, args });
83
+ const QUERY_KEY_PREFIX = 'zenstack:query';
84
+ const MUTATION_KEY_PREFIX = 'zenstack:mutation';
85
+ /**
86
+ * Computes query key for the given model, operation, query args, and options.
87
+ */
88
+ function getQueryKey(model, operation, args, infinite, optimisticUpdate) {
89
+ return JSON.stringify({
90
+ prefix: QUERY_KEY_PREFIX,
91
+ model,
92
+ operation,
93
+ args,
94
+ infinite: infinite === true,
95
+ optimisticUpdate: optimisticUpdate !== false,
96
+ });
85
97
  }
86
98
  exports.getQueryKey = getQueryKey;
99
+ function getMutationKey(model, operation) {
100
+ // use a random key since we don't have 1:1 mapping between mutation and query
101
+ // https://github.com/vercel/swr/discussions/2461#discussioncomment-5281784
102
+ return JSON.stringify({ prefix: MUTATION_KEY_PREFIX, model, operation, r: Date.now() });
103
+ }
87
104
  function parseQueryKey(key) {
88
- if (typeof key !== 'string') {
89
- return undefined;
90
- }
91
- try {
92
- const parsed = JSON.parse(key);
93
- if (!parsed || parsed.prefix !== exports.QUERY_KEY_PREFIX) {
105
+ let keyValue = key;
106
+ if (typeof key === 'string') {
107
+ try {
108
+ keyValue = JSON.parse(key);
109
+ }
110
+ catch (_a) {
94
111
  return undefined;
95
112
  }
96
- return parsed;
97
- }
98
- catch (_a) {
99
- return undefined;
100
113
  }
114
+ return (keyValue === null || keyValue === void 0 ? void 0 : keyValue.prefix) === QUERY_KEY_PREFIX ? keyValue : undefined;
101
115
  }
102
- exports.parseQueryKey = parseQueryKey;
103
116
  /**
104
- * Makes a GET request with SWR.
117
+ * Makes a model query with SWR.
105
118
  *
106
- * @param url The request URL.
119
+ * @param model Model name
120
+ * @param operation Prisma operation (e.g, `findMany`)
107
121
  * @param args The request args object, which will be superjson-stringified and appended as "?q=" parameter
108
122
  * @param options Query options
109
- * @param fetch Custom fetch function
110
123
  * @returns SWR response
111
124
  */
112
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
113
- function useGet(model, operation, endpoint, args, options, fetch) {
125
+ function useModelQuery(model, operation, args, options) {
114
126
  var _a;
115
- const key = (options === null || options === void 0 ? void 0 : options.disabled) ? null : getQueryKey(model, operation, args);
127
+ const { endpoint, fetch } = useHooksContext();
128
+ const key = (options === null || options === void 0 ? void 0 : options.disabled)
129
+ ? null
130
+ : getQueryKey(model, operation, args, false, (options === null || options === void 0 ? void 0 : options.optimisticUpdate) !== false);
116
131
  const url = makeUrl(`${endpoint}/${(0, lower_case_first_1.lowerCaseFirst)(model)}/${operation}`, args);
117
132
  return (0, swr_1.default)(key, () => fetcher(url, undefined, fetch, false), Object.assign(Object.assign({}, options), { fallbackData: (_a = options === null || options === void 0 ? void 0 : options.initialData) !== null && _a !== void 0 ? _a : options === null || options === void 0 ? void 0 : options.fallbackData }));
118
133
  }
119
- exports.useGet = useGet;
134
+ exports.useModelQuery = useModelQuery;
120
135
  /**
121
136
  * Makes an infinite GET request with SWR.
122
137
  *
123
- * @param url The request URL.
124
- * @param getNextArgs Function for computing the query args for a page.
138
+ * @param model Model name
139
+ * @param operation Prisma operation (e.g, `findMany`)
140
+ * @param getNextArgs Function for computing the query args for a page
125
141
  * @param options Query options
126
- * @param fetch Custom fetch function
127
142
  * @returns SWR infinite query response
128
143
  */
129
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
130
- function useInfiniteGet(model, operation, endpoint, getNextArgs, options, fetch) {
144
+ function useInfiniteModelQuery(model, operation, getNextArgs, options) {
131
145
  var _a;
146
+ const { endpoint, fetch } = useHooksContext();
132
147
  const getKey = (pageIndex, previousPageData) => {
133
148
  if (options === null || options === void 0 ? void 0 : options.disabled) {
134
149
  return null;
135
150
  }
136
151
  const nextArgs = getNextArgs(pageIndex, previousPageData);
137
152
  return nextArgs !== null // null means reached the end
138
- ? getQueryKey(model, operation, nextArgs)
153
+ ? getQueryKey(model, operation, nextArgs, true, false)
139
154
  : null;
140
155
  };
141
156
  return (0, infinite_1.default)(getKey, (key) => {
142
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
143
157
  const parsedKey = parseQueryKey(key);
144
- const url = makeUrl(`${endpoint}/${(0, lower_case_first_1.lowerCaseFirst)(parsedKey.model)}/${parsedKey.operation}`, parsedKey.args);
145
- return fetcher(url, undefined, fetch, false);
158
+ if (parsedKey) {
159
+ const { model, operation, args } = parsedKey;
160
+ const url = makeUrl(`${endpoint}/${(0, lower_case_first_1.lowerCaseFirst)(model)}/${operation}`, args);
161
+ return fetcher(url, undefined, fetch, false);
162
+ }
163
+ else {
164
+ throw new Error('Invalid query key: ' + key);
165
+ }
146
166
  }, Object.assign(Object.assign({}, options), { fallbackData: (_a = options === null || options === void 0 ? void 0 : options.initialData) !== null && _a !== void 0 ? _a : options === null || options === void 0 ? void 0 : options.fallbackData }));
147
167
  }
148
- exports.useInfiniteGet = useInfiniteGet;
149
- /**
150
- * Makes a POST request.
151
- *
152
- * @param url The request URL.
153
- * @param data The request data.
154
- * @param mutate Mutator for invalidating cache.
155
- */
156
- function post(url, data, mutate, fetch, checkReadBack) {
157
- return __awaiter(this, void 0, void 0, function* () {
158
- const r = yield fetcher(url, {
159
- method: 'POST',
160
- headers: {
161
- 'content-type': 'application/json',
162
- },
163
- body: marshal(data),
164
- }, fetch, checkReadBack);
165
- mutate(getOperationFromUrl(url), data);
166
- return r;
167
- });
168
+ exports.useInfiniteModelQuery = useInfiniteModelQuery;
169
+ function useModelMutation(model, method, operation, modelMeta, options, checkReadBack) {
170
+ const { endpoint, fetch, logging } = useHooksContext();
171
+ const invalidate = (options === null || options === void 0 ? void 0 : options.revalidate) !== false ? useInvalidation(model, modelMeta) : undefined;
172
+ const { cache, mutate } = (0, swr_1.useSWRConfig)();
173
+ return (0, mutation_1.default)(getMutationKey(model, operation), (_key, { arg }) => {
174
+ if (options === null || options === void 0 ? void 0 : options.optimisticUpdate) {
175
+ optimisticUpdate(model, operation, arg, modelMeta, cache, mutate, logging);
176
+ }
177
+ const url = `${endpoint}/${(0, lower_case_first_1.lowerCaseFirst)(model)}/${operation}`;
178
+ return mutationRequest(method, url, arg, invalidate, fetch, checkReadBack);
179
+ }, options);
168
180
  }
169
- exports.post = post;
181
+ exports.useModelMutation = useModelMutation;
170
182
  /**
171
- * Makes a PUT request.
183
+ * Makes a mutation request.
172
184
  *
173
- * @param url The request URL.
174
- * @param data The request data.
175
- * @param mutate Mutator for invalidating cache.
185
+ * @param url The request URL
186
+ * @param data The request data
187
+ * @param invalidate Function for invalidating a query
176
188
  */
177
- function put(url, data, mutate, fetch, checkReadBack) {
189
+ function mutationRequest(method, url, data, invalidate, fetch, checkReadBack) {
178
190
  return __awaiter(this, void 0, void 0, function* () {
179
- const r = yield fetcher(url, {
180
- method: 'PUT',
191
+ const reqUrl = method === 'DELETE' ? makeUrl(url, data) : url;
192
+ const r = yield fetcher(reqUrl, {
193
+ method,
181
194
  headers: {
182
195
  'content-type': 'application/json',
183
196
  },
184
- body: marshal(data),
185
- }, fetch, checkReadBack);
186
- mutate(getOperationFromUrl(url), data);
187
- return r;
188
- });
189
- }
190
- exports.put = put;
191
- /**
192
- * Makes a DELETE request.
193
- *
194
- * @param url The request URL.
195
- * @param args The request args object, which will be superjson-stringified and appended as "?q=" parameter
196
- * @param mutate Mutator for invalidating cache.
197
- */
198
- function del(url, args, mutate, fetch, checkReadBack) {
199
- return __awaiter(this, void 0, void 0, function* () {
200
- const reqUrl = makeUrl(url, args);
201
- const r = yield fetcher(reqUrl, {
202
- method: 'DELETE',
197
+ body: data ? marshal(data) : undefined,
203
198
  }, fetch, checkReadBack);
204
- mutate(getOperationFromUrl(url), args);
199
+ if (invalidate) {
200
+ yield invalidate(getOperationFromUrl(url), data);
201
+ }
205
202
  return r;
206
203
  });
207
204
  }
208
- exports.del = del;
209
- function useMutate(model, modelMeta, logging) {
205
+ exports.mutationRequest = mutationRequest;
206
+ function useInvalidation(model, modelMeta) {
210
207
  // https://swr.vercel.app/docs/advanced/cache#mutate-multiple-keys-from-regex
208
+ const { logging } = useHooksContext();
211
209
  const { cache, mutate } = (0, swr_1.useSWRConfig)();
212
- return (operation, args, opts) => __awaiter(this, void 0, void 0, function* () {
210
+ return (operation, args) => __awaiter(this, void 0, void 0, function* () {
213
211
  if (!(cache instanceof Map)) {
214
212
  throw new Error('mutate requires the cache provider to be a Map instance');
215
213
  }
@@ -227,11 +225,19 @@ function useMutate(model, modelMeta, logging) {
227
225
  console.log(`Invalidating query ${key} due to mutation "${model}.${operation}"`);
228
226
  });
229
227
  }
230
- const mutations = keys.map((key) => mutate(key, undefined, opts));
228
+ const mutations = keys.map((key) => {
229
+ const parsedKey = parseQueryKey(key);
230
+ // FIX: special handling for infinite query keys, but still not working
231
+ // https://github.com/vercel/swr/discussions/2843
232
+ return mutate((parsedKey === null || parsedKey === void 0 ? void 0 : parsedKey.infinite) ? (0, infinite_1.unstable_serialize)(() => key) : key);
233
+ });
231
234
  return Promise.all(mutations);
232
235
  });
233
236
  }
234
- exports.useMutate = useMutate;
237
+ exports.useInvalidation = useInvalidation;
238
+ /**
239
+ * Makes fetch request for queries and mutations.
240
+ */
235
241
  function fetcher(url, options, fetch, checkReadBack) {
236
242
  var _a, _b, _c;
237
243
  return __awaiter(this, void 0, void 0, function* () {
@@ -303,4 +309,44 @@ function getOperationFromUrl(url) {
303
309
  return r;
304
310
  }
305
311
  }
312
+ function optimisticUpdate(mutationModel, mutationOp, mutationArgs, modelMeta, cache, mutator, logging = false) {
313
+ return __awaiter(this, void 0, void 0, function* () {
314
+ const optimisticPromises = [];
315
+ for (const key of cache.keys()) {
316
+ const parsedKey = parseQueryKey(key);
317
+ if (!parsedKey) {
318
+ continue;
319
+ }
320
+ if (!parsedKey.optimisticUpdate) {
321
+ if (logging) {
322
+ console.log(`Skipping optimistic update for ${key} due to opt-out`);
323
+ }
324
+ continue;
325
+ }
326
+ const cacheValue = cache.get(key);
327
+ if (!cacheValue) {
328
+ continue;
329
+ }
330
+ if (cacheValue.error) {
331
+ if (logging) {
332
+ console.warn(`Skipping optimistic update for ${key} due to error:`, cacheValue.error);
333
+ }
334
+ continue;
335
+ }
336
+ const mutatedData = yield (0, cross_1.applyMutation)(parsedKey.model, parsedKey.operation, cacheValue.data, mutationModel, mutationOp, mutationArgs, modelMeta, logging);
337
+ if (mutatedData !== undefined) {
338
+ // mutation applicable to this query, update cache
339
+ if (logging) {
340
+ console.log(`Optimistically updating query ${JSON.stringify(key)} due to mutation "${mutationModel}.${mutationOp}"`);
341
+ }
342
+ optimisticPromises.push(mutator(key, mutatedData, {
343
+ // don't trigger revalidation here since we will do it
344
+ // when the remote mutation succeeds
345
+ revalidate: false,
346
+ }));
347
+ }
348
+ }
349
+ return Promise.all(optimisticPromises);
350
+ });
351
+ }
306
352
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAuD;AACvD,yDAAqE;AACrE,qDAMmC;AACnC,wDAA0C;AAC1C,uDAAkD;AAClD,iCAAkD;AAElD,2CAA2C;AAE3C,yDAKsB;AACtB,4DAA6E;AAC7E,iDAA+B;AA2B/B,MAAM,sBAAsB,GAAG,YAAY,CAAC;AAE5C;;GAEG;AACU,QAAA,qBAAqB,GAAG,IAAA,qBAAa,EAAwB;IACtE,QAAQ,EAAE,sBAAsB;IAChC,KAAK,EAAE,SAAS;CACnB,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,QAAQ,GAAG,6BAAqB,CAAC,QAAQ,CAAC;AAEvD;;GAEG;AACH,SAAgB,eAAe;IAC3B,MAAM,KAAwB,IAAA,kBAAU,EAAC,6BAAqB,CAAC,EAAzD,EAAE,QAAQ,OAA+C,EAA1C,IAAI,cAAnB,YAAqB,CAAoC,CAAC;IAChE,uBAAS,QAAQ,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,sBAAsB,IAAK,IAAI,EAAG;AACrE,CAAC;AAHD,0CAGC;AAyCD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAC1C,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAqBhD;;GAEG;AACH,SAAgB,WAAW,CACvB,KAAa,EACb,SAAiB,EACjB,IAAc,EACd,QAAkB,EAClB,gBAA0B;IAE1B,OAAO,IAAI,CAAC,SAAS,CAAC;QAClB,MAAM,EAAE,gBAAgB;QACxB,KAAK;QACL,SAAS;QACT,IAAI;QACJ,QAAQ,EAAE,QAAQ,KAAK,IAAI;QAC3B,gBAAgB,EAAE,gBAAgB,KAAK,KAAK;KAC/C,CAAC,CAAC;AACP,CAAC;AAfD,kCAeC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,SAAiB;IACpD,8EAA8E;IAC9E,2EAA2E;IAC3E,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,aAAa,CAAC,GAAY;IAC/B,IAAI,QAAQ,GAAQ,GAAG,CAAC;IACxB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QAAC,WAAM,CAAC;YACL,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IACD,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,MAAK,gBAAgB,CAAC,CAAC,CAAE,QAAqB,CAAC,CAAC,CAAC,SAAS,CAAC;AACtF,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,aAAa,CACzB,KAAa,EACb,SAAiB,EACjB,IAAc,EACd,OAAqC;;IAErC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,eAAe,EAAE,CAAC;IAC9C,MAAM,GAAG,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ;QACzB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,gBAAgB,MAAK,KAAK,CAAC,CAAC;IACtF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,QAAQ,IAAI,IAAA,iCAAc,EAAC,KAAK,CAAC,IAAI,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;IAC/E,OAAO,IAAA,aAAM,EAAgB,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAgB,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,kCACrF,OAAO,KACV,YAAY,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,mCAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,IAC7D,CAAC;AACP,CAAC;AAfD,sCAeC;AAOD;;;;;;;;GAQG;AACH,SAAgB,qBAAqB,CACjC,KAAa,EACb,SAAiB,EACjB,WAAmC,EACnC,OAA6C;;IAE7C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,eAAe,EAAE,CAAC;IAE9C,MAAM,MAAM,GAAG,CAAC,SAAiB,EAAE,gBAA+B,EAAE,EAAE;QAClE,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAC1D,OAAO,QAAQ,KAAK,IAAI,CAAC,6BAA6B;YAClD,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC;YACtD,CAAC,CAAC,IAAI,CAAC;IACf,CAAC,CAAC;IAEF,OAAO,IAAA,kBAAc,EACjB,MAAM,EACN,CAAC,GAAY,EAAE,EAAE;QACb,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,SAAS,EAAE,CAAC;YACZ,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;YAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,QAAQ,IAAI,IAAA,iCAAc,EAAC,KAAK,CAAC,IAAI,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;YAC/E,OAAO,OAAO,CAAgB,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,GAAG,CAAC,CAAC;QACjD,CAAC;IACL,CAAC,kCAEM,OAAO,KACV,YAAY,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,mCAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,IAElE,CAAC;AACN,CAAC;AAnCD,sDAmCC;AAED,SAAgB,gBAAgB,CAC5B,KAAa,EACb,MAAiC,EACjC,SAAiB,EACjB,SAAoB,EACpB,OAAkG,EAClG,aAA6B;IAE7B,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;IACvD,MAAM,UAAU,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,MAAK,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjG,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAA,kBAAY,GAAE,CAAC;IAEzC,OAAO,IAAA,kBAAc,EACjB,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,EAChC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAgB,EAAE,EAAE;QAC5B,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,gBAAgB,EAAE,CAAC;YAC5B,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/E,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,IAAA,iCAAc,EAAC,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;QAChE,OAAO,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IAC/E,CAAC,EACD,OAAO,CACV,CAAC;AACN,CAAC;AAvBD,4CAuBC;AAED;;;;;;GAMG;AACH,SAAsB,eAAe,CACjC,MAAiC,EACjC,GAAW,EACX,IAAa,EACb,UAAwB,EACxB,KAAe,EACf,aAAiB;;QAEjB,MAAM,MAAM,GAAG,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9D,MAAM,CAAC,GAAG,MAAM,OAAO,CACnB,MAAM,EACN;YACI,MAAM;YACN,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;aACrC;YACD,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SACzC,EACD,KAAK,EACL,aAAa,CAChB,CAAC;QAEF,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,UAAU,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,CAAC,CAAC;IACb,CAAC;CAAA;AA1BD,0CA0BC;AAKD,SAAgB,eAAe,CAAC,KAAa,EAAE,SAAoB;IAC/D,6EAA6E;IAC7E,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;IACtC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAA,kBAAY,GAAE,CAAC;IACzC,OAAO,CAAO,SAAiB,EAAE,IAAa,EAAE,EAAE;QAC9C,IAAI,CAAC,CAAC,KAAK,YAAY,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,IAAA,wBAAgB,EAAC,KAAK,EAAE,SAAkC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAEzG,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAY,EAAE,EAAE;YAC1D,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,MAAM,UAAU,GAAG,IAAA,qBAAa,EAAC,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YAC7E,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACjB,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,qBAAqB,KAAK,IAAI,SAAS,GAAG,CAAC,CAAC;YACrF,CAAC,CAAC,CAAC;QACP,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC/B,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YACrC,uEAAuE;YACvE,iDAAiD;YACjD,OAAO,MAAM,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,EAAC,CAAC,CAAC,IAAA,6BAAkB,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC,CAAA,CAAC;AACN,CAAC;AAlCD,0CAkCC;AAED;;GAEG;AACH,SAAsB,OAAO,CACzB,GAAW,EACX,OAAqB,EACrB,KAAe,EACf,aAAiB;;;QAEjB,MAAM,MAAM,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,UAAU,CAAC,KAAK,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACV,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5C,IACI,aAAa,KAAK,KAAK;iBACvB,MAAA,OAAO,CAAC,KAAK,0CAAE,MAAM,CAAA;gBACrB,CAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,IAAI,MAAK,OAAO;gBAC/B,CAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,MAAM,MAAK,qBAAqB,EACjD,CAAC;gBACC,8EAA8E;gBAC9E,OAAO,SAAgB,CAAC;YAC5B,CAAC;YACD,MAAM,KAAK,GAAgD,IAAI,KAAK,CAChE,4CAA4C,CAC/C,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;YAC3B,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,MAAM,KAAK,CAAC;QAChB,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC;YACD,OAAO,SAAS,CAAC,UAAU,CAAC,CAAC,IAAS,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAC;YACzD,MAAM,GAAG,CAAC;QACd,CAAC;;CACJ;AAlCD,0BAkCC;AAED,SAAS,OAAO,CAAC,KAAc;IAC3B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAS,EAAC,KAAK,CAAC,CAAC;IACxC,IAAI,IAAI,EAAE,CAAC;QACP,OAAO,IAAI,CAAC,SAAS,iCAAO,IAAY,KAAE,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,IAAG,CAAC;IAC/E,CAAC;SAAM,CAAC;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;;IAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,IAAI,KAAI,MAAA,MAAM,CAAC,IAAI,0CAAE,aAAa,CAAA,EAAE,CAAC;QAC5C,MAAM,gBAAgB,GAAG,IAAA,qBAAW,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7E,uCAAY,MAAM,KAAE,IAAI,EAAE,gBAAgB,IAAG;IACjD,CAAC;SAAM,CAAC;QACJ,OAAO,MAAM,CAAC;IAClB,CAAC;AACL,CAAC;AAED,SAAS,OAAO,CAAC,GAAW,EAAE,IAAa;IACvC,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,GAAG,CAAC;IACf,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAS,EAAC,IAAI,CAAC,CAAC;IACvC,IAAI,MAAM,GAAG,GAAG,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;IACpE,IAAI,IAAI,EAAE,CAAC;QACP,MAAM,IAAI,SAAS,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IACrF,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAW;IACpC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;IACtB,IAAI,CAAC,CAAC,EAAE,CAAC;QACL,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,CAAC;IACb,CAAC;AACL,CAAC;AAED,SAAe,gBAAgB,CAC3B,aAAqB,EACrB,UAAkB,EAClB,YAAiB,EACjB,SAAoB,EACpB,KAAY,EACZ,OAAsB,EACtB,OAAO,GAAG,KAAK;;QAEf,MAAM,kBAAkB,GAAyB,EAAE,CAAC;QACpD,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,SAAS;YACb,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;gBAC9B,IAAI,OAAO,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,kCAAkC,GAAG,iBAAiB,CAAC,CAAC;gBACxE,CAAC;gBACD,SAAS;YACb,CAAC;YAED,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,SAAS;YACb,CAAC;YAED,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;gBACnB,IAAI,OAAO,EAAE,CAAC;oBACV,OAAO,CAAC,IAAI,CAAC,kCAAkC,GAAG,gBAAgB,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC1F,CAAC;gBACD,SAAS;YACb,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,IAAA,qBAAa,EACnC,SAAS,CAAC,KAAK,EACf,SAAS,CAAC,SAAS,EACnB,UAAU,CAAC,IAAI,EACf,aAAa,EACb,UAAmC,EACnC,YAAY,EACZ,SAAS,EACT,OAAO,CACV,CAAC;YAEF,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC5B,kDAAkD;gBAClD,IAAI,OAAO,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CACP,iCAAiC,IAAI,CAAC,SAAS,CAC3C,GAAG,CACN,qBAAqB,aAAa,IAAI,UAAU,GAAG,CACvD,CAAC;gBACN,CAAC;gBACD,kBAAkB,CAAC,IAAI,CACnB,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE;oBACtB,sDAAsD;oBACtD,oCAAoC;oBACpC,UAAU,EAAE,KAAK;iBACpB,CAAC,CACL,CAAC;YACN,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC3C,CAAC;CAAA"}