@zenstackhq/swr 1.0.0-beta.8 → 1.0.0-beta.9
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.d.ts +1 -1
- package/generator.js +16 -35
- package/generator.js.map +1 -1
- package/package.json +10 -12
- package/runtime/index.d.ts +70 -0
- package/runtime/index.js +206 -0
- package/runtime/index.js.map +1 -0
- package/runtime/prisma-types.d.ts +6 -0
- package/runtime/prisma-types.js +5 -0
- package/runtime/prisma-types.js.map +1 -0
- package/res/helper.ts +0 -177
- package/res/marshal-json.ts +0 -12
- package/res/marshal-superjson.ts +0 -20
package/generator.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DMMF } from '@prisma/generator-helper';
|
|
1
|
+
import type { DMMF } from '@prisma/generator-helper';
|
|
2
2
|
import { PluginOptions } from '@zenstackhq/sdk';
|
|
3
3
|
import { Model } from '@zenstackhq/sdk/ast';
|
|
4
4
|
export declare function generate(model: Model, options: PluginOptions, dmmf: DMMF.Document): Promise<string[]>;
|
package/generator.js
CHANGED
|
@@ -15,7 +15,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.generate = void 0;
|
|
16
16
|
const sdk_1 = require("@zenstackhq/sdk");
|
|
17
17
|
const change_case_1 = require("change-case");
|
|
18
|
-
const fs_1 = __importDefault(require("fs"));
|
|
19
18
|
const lower_case_first_1 = require("lower-case-first");
|
|
20
19
|
const path_1 = __importDefault(require("path"));
|
|
21
20
|
const upper_case_first_1 = require("upper-case-first");
|
|
@@ -25,9 +24,11 @@ function generate(model, options, dmmf) {
|
|
|
25
24
|
outDir = (0, sdk_1.resolvePath)(outDir, options);
|
|
26
25
|
const project = (0, sdk_1.createProject)();
|
|
27
26
|
const warnings = [];
|
|
27
|
+
if (options.useSuperJson !== undefined) {
|
|
28
|
+
warnings.push('The option "useSuperJson" is deprecated. The generated hooks always use superjson for serialization.');
|
|
29
|
+
}
|
|
28
30
|
const models = (0, sdk_1.getDataModels)(model);
|
|
29
31
|
generateIndex(project, outDir, models);
|
|
30
|
-
generateHelper(project, outDir, options.useSuperJson === true);
|
|
31
32
|
models.forEach((dataModel) => {
|
|
32
33
|
const mapping = dmmf.mappings.modelOperations.find((op) => op.model === dataModel.name);
|
|
33
34
|
if (!mapping) {
|
|
@@ -41,18 +42,6 @@ function generate(model, options, dmmf) {
|
|
|
41
42
|
});
|
|
42
43
|
}
|
|
43
44
|
exports.generate = generate;
|
|
44
|
-
function wrapReadbackErrorCheck(code) {
|
|
45
|
-
return `try {
|
|
46
|
-
${code}
|
|
47
|
-
} catch (err: any) {
|
|
48
|
-
if (err.info?.prisma && err.info?.code === 'P2004' && err.info?.reason === '${sdk_1.CrudFailureReason.RESULT_NOT_READABLE}') {
|
|
49
|
-
// unable to readback data
|
|
50
|
-
return undefined;
|
|
51
|
-
} else {
|
|
52
|
-
throw err;
|
|
53
|
-
}
|
|
54
|
-
}`;
|
|
55
|
-
}
|
|
56
45
|
function generateModelHooks(project, outDir, model, mapping) {
|
|
57
46
|
const fileName = (0, change_case_1.paramCase)(model.name);
|
|
58
47
|
const sf = project.createSourceFile(path_1.default.join(outDir, `${fileName}.ts`), undefined, { overwrite: true });
|
|
@@ -65,8 +54,8 @@ function generateModelHooks(project, outDir, model, mapping) {
|
|
|
65
54
|
});
|
|
66
55
|
sf.addStatements([
|
|
67
56
|
`import { useContext } from 'react';`,
|
|
68
|
-
`import { RequestHandlerContext, type RequestOptions } from '
|
|
69
|
-
`import * as request from '
|
|
57
|
+
`import { RequestHandlerContext, type RequestOptions, type PickEnumerable } from '@zenstackhq/swr/runtime';`,
|
|
58
|
+
`import * as request from '@zenstackhq/swr/runtime';`,
|
|
70
59
|
]);
|
|
71
60
|
const prefixesToMutate = ['find', 'aggregate', 'count', 'groupBy'];
|
|
72
61
|
const useMutation = sf.addFunction({
|
|
@@ -87,14 +76,14 @@ function generateModelHooks(project, outDir, model, mapping) {
|
|
|
87
76
|
const argsType = `Prisma.${model.name}CreateArgs`;
|
|
88
77
|
const inputType = `Prisma.SelectSubset<T, ${argsType}>`;
|
|
89
78
|
const returnType = `Prisma.CheckSelect<T, ${model.name}, Prisma.${model.name}GetPayload<T>>`;
|
|
90
|
-
mutationFuncs.push(generateMutation(useMutation, model, 'post', 'create', argsType, inputType, returnType));
|
|
79
|
+
mutationFuncs.push(generateMutation(useMutation, model, 'post', 'create', argsType, inputType, returnType, true));
|
|
91
80
|
}
|
|
92
81
|
// createMany
|
|
93
82
|
if (mapping.createMany) {
|
|
94
83
|
const argsType = `Prisma.${model.name}CreateManyArgs`;
|
|
95
84
|
const inputType = `Prisma.SelectSubset<T, ${argsType}>`;
|
|
96
85
|
const returnType = `Prisma.BatchPayload`;
|
|
97
|
-
mutationFuncs.push(generateMutation(useMutation, model, 'post', 'createMany', argsType, inputType, returnType));
|
|
86
|
+
mutationFuncs.push(generateMutation(useMutation, model, 'post', 'createMany', argsType, inputType, returnType, false));
|
|
98
87
|
}
|
|
99
88
|
// findMany
|
|
100
89
|
if (mapping.findMany) {
|
|
@@ -124,14 +113,14 @@ function generateModelHooks(project, outDir, model, mapping) {
|
|
|
124
113
|
const argsType = `Prisma.${model.name}UpdateArgs`;
|
|
125
114
|
const inputType = `Prisma.SelectSubset<T, ${argsType}>`;
|
|
126
115
|
const returnType = `Prisma.${model.name}GetPayload<T>`;
|
|
127
|
-
mutationFuncs.push(generateMutation(useMutation, model, 'put', 'update', argsType, inputType, returnType));
|
|
116
|
+
mutationFuncs.push(generateMutation(useMutation, model, 'put', 'update', argsType, inputType, returnType, true));
|
|
128
117
|
}
|
|
129
118
|
// updateMany
|
|
130
119
|
if (mapping.updateMany) {
|
|
131
120
|
const argsType = `Prisma.${model.name}UpdateManyArgs`;
|
|
132
121
|
const inputType = `Prisma.SelectSubset<T, ${argsType}>`;
|
|
133
122
|
const returnType = `Prisma.BatchPayload`;
|
|
134
|
-
mutationFuncs.push(generateMutation(useMutation, model, 'put', 'updateMany', argsType, inputType, returnType));
|
|
123
|
+
mutationFuncs.push(generateMutation(useMutation, model, 'put', 'updateMany', argsType, inputType, returnType, false));
|
|
135
124
|
}
|
|
136
125
|
// upsert
|
|
137
126
|
// upsert is somehow named "upsertOne" in the DMMF
|
|
@@ -140,7 +129,7 @@ function generateModelHooks(project, outDir, model, mapping) {
|
|
|
140
129
|
const argsType = `Prisma.${model.name}UpsertArgs`;
|
|
141
130
|
const inputType = `Prisma.SelectSubset<T, ${argsType}>`;
|
|
142
131
|
const returnType = `Prisma.${model.name}GetPayload<T>`;
|
|
143
|
-
mutationFuncs.push(generateMutation(useMutation, model, 'post', 'upsert', argsType, inputType, returnType));
|
|
132
|
+
mutationFuncs.push(generateMutation(useMutation, model, 'post', 'upsert', argsType, inputType, returnType, true));
|
|
144
133
|
}
|
|
145
134
|
// del
|
|
146
135
|
// delete is somehow named "deleteOne" in the DMMF
|
|
@@ -149,14 +138,14 @@ function generateModelHooks(project, outDir, model, mapping) {
|
|
|
149
138
|
const argsType = `Prisma.${model.name}DeleteArgs`;
|
|
150
139
|
const inputType = `Prisma.SelectSubset<T, ${argsType}>`;
|
|
151
140
|
const returnType = `Prisma.${model.name}GetPayload<T>`;
|
|
152
|
-
mutationFuncs.push(generateMutation(useMutation, model, 'delete', 'delete', argsType, inputType, returnType));
|
|
141
|
+
mutationFuncs.push(generateMutation(useMutation, model, 'delete', 'delete', argsType, inputType, returnType, true));
|
|
153
142
|
}
|
|
154
143
|
// deleteMany
|
|
155
144
|
if (mapping.deleteMany) {
|
|
156
145
|
const argsType = `Prisma.${model.name}DeleteManyArgs`;
|
|
157
146
|
const inputType = `Prisma.SelectSubset<T, ${argsType}>`;
|
|
158
147
|
const returnType = `Prisma.BatchPayload`;
|
|
159
|
-
mutationFuncs.push(generateMutation(useMutation, model, 'delete', 'deleteMany', argsType, inputType, returnType));
|
|
148
|
+
mutationFuncs.push(generateMutation(useMutation, model, 'delete', 'deleteMany', argsType, inputType, returnType, false));
|
|
160
149
|
}
|
|
161
150
|
// aggregate
|
|
162
151
|
if (mapping.aggregate) {
|
|
@@ -172,7 +161,7 @@ function generateModelHooks(project, outDir, model, mapping) {
|
|
|
172
161
|
`HasSelectOrTake extends Prisma.Or<Prisma.Extends<'skip', Prisma.Keys<T>>, Prisma.Extends<'take', Prisma.Keys<T>>>`,
|
|
173
162
|
`OrderByArg extends Prisma.True extends HasSelectOrTake ? { orderBy: Prisma.${model.name}GroupByArgs['orderBy'] }: { orderBy?: Prisma.${model.name}GroupByArgs['orderBy'] },`,
|
|
174
163
|
`OrderFields extends Prisma.ExcludeUnderscoreKeys<Prisma.Keys<Prisma.MaybeTupleToUnion<T['orderBy']>>>`,
|
|
175
|
-
`ByFields extends Prisma.
|
|
164
|
+
`ByFields extends Prisma.MaybeTupleToUnion<T['by']>`,
|
|
176
165
|
`ByValid extends Prisma.Has<ByFields, OrderFields>`,
|
|
177
166
|
`HavingFields extends Prisma.GetHavingFields<T['having']>`,
|
|
178
167
|
`HavingValid extends Prisma.Has<ByFields, HavingFields>`,
|
|
@@ -222,7 +211,7 @@ function generateModelHooks(project, outDir, model, mapping) {
|
|
|
222
211
|
];
|
|
223
212
|
const inputType = `Prisma.SubsetIntersection<T, Prisma.${model.name}GroupByArgs, OrderByArg> & InputErrors`;
|
|
224
213
|
const returnType = `{} extends InputErrors ?
|
|
225
|
-
Array<
|
|
214
|
+
Array<PickEnumerable<Prisma.${model.name}GroupByOutputType, T['by']> &
|
|
226
215
|
{
|
|
227
216
|
[P in ((keyof T) & (keyof Prisma.${model.name}GroupByOutputType))]: P extends '_count'
|
|
228
217
|
? T[P] extends boolean
|
|
@@ -245,7 +234,6 @@ function generateModelHooks(project, outDir, model, mapping) {
|
|
|
245
234
|
function generateIndex(project, outDir, models) {
|
|
246
235
|
const sf = project.createSourceFile(path_1.default.join(outDir, 'index.ts'), undefined, { overwrite: true });
|
|
247
236
|
sf.addStatements(models.map((d) => `export * from './${(0, change_case_1.paramCase)(d.name)}';`));
|
|
248
|
-
sf.addStatements(`export * from './_helper';`);
|
|
249
237
|
}
|
|
250
238
|
function generateQueryHook(sf, model, operation, argsType, inputType, returnType, typeParameters) {
|
|
251
239
|
const modelRouteName = (0, lower_case_first_1.lowerCaseFirst)(model.name);
|
|
@@ -270,7 +258,7 @@ function generateQueryHook(sf, model, operation, argsType, inputType, returnType
|
|
|
270
258
|
`return request.get<${returnType}>(\`\${endpoint}/${modelRouteName}/${operation}\`, args, options, fetch);`,
|
|
271
259
|
]);
|
|
272
260
|
}
|
|
273
|
-
function generateMutation(func, model, method, operation, argsType, inputType, returnType) {
|
|
261
|
+
function generateMutation(func, model, method, operation, argsType, inputType, returnType, checkReadBack) {
|
|
274
262
|
const modelRouteName = (0, lower_case_first_1.lowerCaseFirst)(model.name);
|
|
275
263
|
const funcName = `${operation}${model.name}`;
|
|
276
264
|
const fetcherFunc = method === 'delete' ? 'del' : method;
|
|
@@ -287,15 +275,8 @@ function generateMutation(func, model, method, operation, argsType, inputType, r
|
|
|
287
275
|
})
|
|
288
276
|
.addBody()
|
|
289
277
|
.addStatements([
|
|
290
|
-
|
|
278
|
+
`return await request.${fetcherFunc}<${returnType}, ${checkReadBack}>(\`\${endpoint}/${modelRouteName}/${operation}\`, args, mutate, fetch, ${checkReadBack});`,
|
|
291
279
|
]);
|
|
292
280
|
return funcName;
|
|
293
281
|
}
|
|
294
|
-
function generateHelper(project, outDir, useSuperJson) {
|
|
295
|
-
const helperContent = fs_1.default.readFileSync(path_1.default.join(__dirname, './res/helper.ts'), 'utf-8');
|
|
296
|
-
const marshalContent = fs_1.default.readFileSync(path_1.default.join(__dirname, useSuperJson ? './res/marshal-superjson.ts' : './res/marshal-json.ts'), 'utf-8');
|
|
297
|
-
project.createSourceFile(path_1.default.join(outDir, '_helper.ts'), `${helperContent}\n${marshalContent}`, {
|
|
298
|
-
overwrite: true,
|
|
299
|
-
});
|
|
300
|
-
}
|
|
301
282
|
//# sourceMappingURL=generator.js.map
|
package/generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,
|
|
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.0.0-beta.
|
|
4
|
+
"version": "1.0.0-beta.9",
|
|
5
5
|
"description": "ZenStack plugin for generating SWR hooks",
|
|
6
6
|
"main": "index.js",
|
|
7
7
|
"repository": {
|
|
@@ -16,38 +16,36 @@
|
|
|
16
16
|
"author": "ZenStack Team",
|
|
17
17
|
"license": "MIT",
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@prisma/generator-helper": "
|
|
19
|
+
"@prisma/generator-helper": "^5.0.0",
|
|
20
20
|
"change-case": "^4.1.2",
|
|
21
21
|
"decimal.js": "^10.4.2",
|
|
22
22
|
"lower-case-first": "^2.0.2",
|
|
23
|
-
"superjson": "^1.11.0",
|
|
24
23
|
"ts-morph": "^16.0.0",
|
|
25
24
|
"upper-case-first": "^2.0.2",
|
|
26
|
-
"@zenstackhq/
|
|
25
|
+
"@zenstackhq/runtime": "1.0.0-beta.9",
|
|
26
|
+
"@zenstackhq/sdk": "1.0.0-beta.9"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@tanstack/react-query": "^4.28.0",
|
|
30
30
|
"@types/jest": "^29.5.0",
|
|
31
|
-
"@types/
|
|
32
|
-
"@types/react": "
|
|
31
|
+
"@types/node": "^18.0.0",
|
|
32
|
+
"@types/react": "18.2.0",
|
|
33
33
|
"@types/tmp": "^0.2.3",
|
|
34
|
-
"@types/upper-case-first": "^1.1.2",
|
|
35
34
|
"copyfiles": "^2.4.1",
|
|
36
35
|
"jest": "^29.5.0",
|
|
37
|
-
"react": "
|
|
38
|
-
"react-dom": "^17.0.2 || ^18",
|
|
36
|
+
"react": "18.2.0",
|
|
39
37
|
"rimraf": "^3.0.2",
|
|
40
38
|
"swr": "^2.0.3",
|
|
41
39
|
"ts-jest": "^29.0.5",
|
|
42
40
|
"typescript": "^4.9.4",
|
|
43
|
-
"@zenstackhq/testtools": "1.0.0-beta.
|
|
41
|
+
"@zenstackhq/testtools": "1.0.0-beta.9"
|
|
44
42
|
},
|
|
45
43
|
"scripts": {
|
|
46
44
|
"clean": "rimraf dist",
|
|
47
|
-
"build": "pnpm lint && pnpm clean && tsc && copyfiles ./package.json ./README.md ./LICENSE
|
|
45
|
+
"build": "pnpm lint && pnpm clean && tsc && copyfiles ./package.json ./README.md ./LICENSE dist && pnpm pack dist --pack-destination '../../../../.build'",
|
|
48
46
|
"watch": "tsc --watch",
|
|
49
47
|
"lint": "eslint src --ext ts",
|
|
50
|
-
"test": "jest",
|
|
48
|
+
"test": "ZENSTACK_TEST=1 jest",
|
|
51
49
|
"publish-dev": "pnpm publish --tag dev"
|
|
52
50
|
}
|
|
53
51
|
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { MutatorCallback, MutatorOptions, SWRResponse } from 'swr';
|
|
3
|
+
export * from './prisma-types';
|
|
4
|
+
/**
|
|
5
|
+
* Function signature for `fetch`.
|
|
6
|
+
*/
|
|
7
|
+
export type FetchFn = (url: string, options?: RequestInit) => Promise<Response>;
|
|
8
|
+
/**
|
|
9
|
+
* Context type for configuring react hooks.
|
|
10
|
+
*/
|
|
11
|
+
export type RequestHandlerContext = {
|
|
12
|
+
/**
|
|
13
|
+
* The endpoint to use for the queries.
|
|
14
|
+
*/
|
|
15
|
+
endpoint: string;
|
|
16
|
+
/**
|
|
17
|
+
* A custom fetch function for sending the HTTP requests.
|
|
18
|
+
*/
|
|
19
|
+
fetch?: FetchFn;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Context for configuring react hooks.
|
|
23
|
+
*/
|
|
24
|
+
export declare const RequestHandlerContext: import("react").Context<RequestHandlerContext>;
|
|
25
|
+
/**
|
|
26
|
+
* Context provider.
|
|
27
|
+
*/
|
|
28
|
+
export declare const Provider: import("react").Provider<RequestHandlerContext>;
|
|
29
|
+
/**
|
|
30
|
+
* Client request options
|
|
31
|
+
*/
|
|
32
|
+
export type RequestOptions<T> = {
|
|
33
|
+
disabled?: boolean;
|
|
34
|
+
initialData?: T;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Makes a GET request with SWR.
|
|
38
|
+
*
|
|
39
|
+
* @param url The request URL.
|
|
40
|
+
* @param args The request args object, which will be superjson-stringified and appended as "?q=" parameter
|
|
41
|
+
* @returns SWR response
|
|
42
|
+
*/
|
|
43
|
+
export declare function get<Result, Error = any>(url: string | null, args?: unknown, options?: RequestOptions<Result>, fetch?: FetchFn): SWRResponse<Result, Error>;
|
|
44
|
+
/**
|
|
45
|
+
* Makes a POST request.
|
|
46
|
+
*
|
|
47
|
+
* @param url The request URL.
|
|
48
|
+
* @param data The request data.
|
|
49
|
+
* @param mutate Mutator for invalidating cache.
|
|
50
|
+
*/
|
|
51
|
+
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>;
|
|
52
|
+
/**
|
|
53
|
+
* Makes a PUT request.
|
|
54
|
+
*
|
|
55
|
+
* @param url The request URL.
|
|
56
|
+
* @param data The request data.
|
|
57
|
+
* @param mutate Mutator for invalidating cache.
|
|
58
|
+
*/
|
|
59
|
+
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>;
|
|
60
|
+
/**
|
|
61
|
+
* Makes a DELETE request.
|
|
62
|
+
*
|
|
63
|
+
* @param url The request URL.
|
|
64
|
+
* @param args The request args object, which will be superjson-stringified and appended as "?q=" parameter
|
|
65
|
+
* @param mutate Mutator for invalidating cache.
|
|
66
|
+
*/
|
|
67
|
+
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>;
|
|
68
|
+
type Mutator = (data?: unknown | Promise<unknown> | MutatorCallback, opts?: boolean | MutatorOptions) => Promise<unknown[]>;
|
|
69
|
+
export declare function getMutate(prefixes: string[]): Mutator;
|
|
70
|
+
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
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
26
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
27
|
+
};
|
|
28
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
29
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
30
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
31
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
32
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
33
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
34
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.fetcher = exports.getMutate = exports.del = exports.put = exports.post = exports.get = exports.Provider = exports.RequestHandlerContext = void 0;
|
|
39
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
40
|
+
const browser_1 = require("@zenstackhq/runtime/browser");
|
|
41
|
+
const react_1 = require("react");
|
|
42
|
+
const swr_1 = __importStar(require("swr"));
|
|
43
|
+
__exportStar(require("./prisma-types"), exports);
|
|
44
|
+
/**
|
|
45
|
+
* Context for configuring react hooks.
|
|
46
|
+
*/
|
|
47
|
+
exports.RequestHandlerContext = (0, react_1.createContext)({
|
|
48
|
+
endpoint: '/api/model',
|
|
49
|
+
fetch: undefined,
|
|
50
|
+
});
|
|
51
|
+
/**
|
|
52
|
+
* Context provider.
|
|
53
|
+
*/
|
|
54
|
+
exports.Provider = exports.RequestHandlerContext.Provider;
|
|
55
|
+
/**
|
|
56
|
+
* Makes a GET request with SWR.
|
|
57
|
+
*
|
|
58
|
+
* @param url The request URL.
|
|
59
|
+
* @param args The request args object, which will be superjson-stringified and appended as "?q=" parameter
|
|
60
|
+
* @returns SWR response
|
|
61
|
+
*/
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
63
|
+
function get(url, args, options, fetch) {
|
|
64
|
+
const reqUrl = (options === null || options === void 0 ? void 0 : options.disabled) ? null : url ? makeUrl(url, args) : null;
|
|
65
|
+
return (0, swr_1.default)(reqUrl, (url) => fetcher(url, undefined, fetch, false), {
|
|
66
|
+
fallbackData: options === null || options === void 0 ? void 0 : options.initialData,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
exports.get = get;
|
|
70
|
+
/**
|
|
71
|
+
* Makes a POST request.
|
|
72
|
+
*
|
|
73
|
+
* @param url The request URL.
|
|
74
|
+
* @param data The request data.
|
|
75
|
+
* @param mutate Mutator for invalidating cache.
|
|
76
|
+
*/
|
|
77
|
+
function post(url, data, mutate, fetch, checkReadBack) {
|
|
78
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
79
|
+
const r = yield fetcher(url, {
|
|
80
|
+
method: 'POST',
|
|
81
|
+
headers: {
|
|
82
|
+
'content-type': 'application/json',
|
|
83
|
+
},
|
|
84
|
+
body: marshal(data),
|
|
85
|
+
}, fetch, checkReadBack);
|
|
86
|
+
mutate();
|
|
87
|
+
return r;
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
exports.post = post;
|
|
91
|
+
/**
|
|
92
|
+
* Makes a PUT request.
|
|
93
|
+
*
|
|
94
|
+
* @param url The request URL.
|
|
95
|
+
* @param data The request data.
|
|
96
|
+
* @param mutate Mutator for invalidating cache.
|
|
97
|
+
*/
|
|
98
|
+
function put(url, data, mutate, fetch, checkReadBack) {
|
|
99
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
100
|
+
const r = yield fetcher(url, {
|
|
101
|
+
method: 'PUT',
|
|
102
|
+
headers: {
|
|
103
|
+
'content-type': 'application/json',
|
|
104
|
+
},
|
|
105
|
+
body: marshal(data),
|
|
106
|
+
}, fetch, checkReadBack);
|
|
107
|
+
mutate();
|
|
108
|
+
return r;
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
exports.put = put;
|
|
112
|
+
/**
|
|
113
|
+
* Makes a DELETE request.
|
|
114
|
+
*
|
|
115
|
+
* @param url The request URL.
|
|
116
|
+
* @param args The request args object, which will be superjson-stringified and appended as "?q=" parameter
|
|
117
|
+
* @param mutate Mutator for invalidating cache.
|
|
118
|
+
*/
|
|
119
|
+
function del(url, args, mutate, fetch, checkReadBack) {
|
|
120
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
+
const reqUrl = makeUrl(url, args);
|
|
122
|
+
const r = yield fetcher(reqUrl, {
|
|
123
|
+
method: 'DELETE',
|
|
124
|
+
}, fetch, checkReadBack);
|
|
125
|
+
const path = url.split('/');
|
|
126
|
+
path.pop();
|
|
127
|
+
mutate();
|
|
128
|
+
return r;
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
exports.del = del;
|
|
132
|
+
function getMutate(prefixes) {
|
|
133
|
+
// https://swr.vercel.app/docs/advanced/cache#mutate-multiple-keys-from-regex
|
|
134
|
+
const { cache, mutate } = (0, swr_1.useSWRConfig)();
|
|
135
|
+
return (data, opts) => {
|
|
136
|
+
if (!(cache instanceof Map)) {
|
|
137
|
+
throw new Error('mutate requires the cache provider to be a Map instance');
|
|
138
|
+
}
|
|
139
|
+
const keys = Array.from(cache.keys()).filter((k) => typeof k === 'string' && prefixes.some((prefix) => k.startsWith(prefix)));
|
|
140
|
+
const mutations = keys.map((key) => mutate(key, data, opts));
|
|
141
|
+
return Promise.all(mutations);
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
exports.getMutate = getMutate;
|
|
145
|
+
function fetcher(url, options, fetch, checkReadBack) {
|
|
146
|
+
var _a, _b, _c;
|
|
147
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
148
|
+
const _fetch = fetch !== null && fetch !== void 0 ? fetch : window.fetch;
|
|
149
|
+
const res = yield _fetch(url, options);
|
|
150
|
+
if (!res.ok) {
|
|
151
|
+
const errData = unmarshal(yield res.text());
|
|
152
|
+
if (checkReadBack !== false &&
|
|
153
|
+
((_a = errData.error) === null || _a === void 0 ? void 0 : _a.prisma) &&
|
|
154
|
+
((_b = errData.error) === null || _b === void 0 ? void 0 : _b.code) === 'P2004' &&
|
|
155
|
+
((_c = errData.error) === null || _c === void 0 ? void 0 : _c.reason) === 'RESULT_NOT_READABLE') {
|
|
156
|
+
// policy doesn't allow mutation result to be read back, just return undefined
|
|
157
|
+
return undefined;
|
|
158
|
+
}
|
|
159
|
+
const error = new Error('An error occurred while fetching the data.');
|
|
160
|
+
error.info = errData.error;
|
|
161
|
+
error.status = res.status;
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
const textResult = yield res.text();
|
|
165
|
+
try {
|
|
166
|
+
return unmarshal(textResult).data;
|
|
167
|
+
}
|
|
168
|
+
catch (err) {
|
|
169
|
+
console.error(`Unable to deserialize data:`, textResult);
|
|
170
|
+
throw err;
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
exports.fetcher = fetcher;
|
|
175
|
+
function marshal(value) {
|
|
176
|
+
const { data, meta } = (0, browser_1.serialize)(value);
|
|
177
|
+
if (meta) {
|
|
178
|
+
return JSON.stringify(Object.assign(Object.assign({}, data), { meta: { serialization: meta } }));
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
return JSON.stringify(data);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
function unmarshal(value) {
|
|
185
|
+
var _a;
|
|
186
|
+
const parsed = JSON.parse(value);
|
|
187
|
+
if (parsed.data && ((_a = parsed.meta) === null || _a === void 0 ? void 0 : _a.serialization)) {
|
|
188
|
+
const deserializedData = (0, browser_1.deserialize)(parsed.data, parsed.meta.serialization);
|
|
189
|
+
return Object.assign(Object.assign({}, parsed), { data: deserializedData });
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
return parsed;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
function makeUrl(url, args) {
|
|
196
|
+
if (!args) {
|
|
197
|
+
return url;
|
|
198
|
+
}
|
|
199
|
+
const { data, meta } = (0, browser_1.serialize)(args);
|
|
200
|
+
let result = `${url}?q=${encodeURIComponent(JSON.stringify(data))}`;
|
|
201
|
+
if (meta) {
|
|
202
|
+
result += `&meta=${encodeURIComponent(JSON.stringify({ serialization: meta }))}`;
|
|
203
|
+
}
|
|
204
|
+
return result;
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type Enumerable<T> = T | Array<T>;
|
|
2
|
+
type _TupleToUnion<T> = T extends (infer E)[] ? E : never;
|
|
3
|
+
export type TupleToUnion<K extends readonly any[]> = _TupleToUnion<K>;
|
|
4
|
+
export type MaybeTupleToUnion<T> = T extends any[] ? TupleToUnion<T> : T;
|
|
5
|
+
export type PickEnumerable<T, K extends Enumerable<keyof T> | keyof T> = Pick<T, MaybeTupleToUnion<K>>;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
+
/// Types copied over from Prisma's generated code to avoid being broken due to Prisma upgrades
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
//# sourceMappingURL=prisma-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prisma-types.js","sourceRoot":"","sources":["../../src/runtime/prisma-types.ts"],"names":[],"mappings":";AAAA,uDAAuD;AACvD,+FAA+F"}
|
package/res/helper.ts
DELETED
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
/* eslint-disable */
|
|
2
|
-
|
|
3
|
-
import { createContext } from 'react';
|
|
4
|
-
import type { MutatorCallback, MutatorOptions, SWRResponse } from 'swr';
|
|
5
|
-
import useSWR, { useSWRConfig } from 'swr';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Function signature for `fetch`.
|
|
9
|
-
*/
|
|
10
|
-
export type FetchFn = (url: string, options?: RequestInit) => Promise<Response>;
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Context type for configuring react hooks.
|
|
14
|
-
*/
|
|
15
|
-
export type RequestHandlerContext = {
|
|
16
|
-
/**
|
|
17
|
-
* The endpoint to use for the queries.
|
|
18
|
-
*/
|
|
19
|
-
endpoint: string;
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* A custom fetch function for sending the HTTP requests.
|
|
23
|
-
*/
|
|
24
|
-
fetch?: FetchFn;
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Context for configuring react hooks.
|
|
29
|
-
*/
|
|
30
|
-
export const RequestHandlerContext = createContext<RequestHandlerContext>({
|
|
31
|
-
endpoint: '/api/model',
|
|
32
|
-
fetch: undefined,
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Context provider.
|
|
37
|
-
*/
|
|
38
|
-
export const Provider = RequestHandlerContext.Provider;
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Client request options
|
|
42
|
-
*/
|
|
43
|
-
export type RequestOptions<T> = {
|
|
44
|
-
// disable data fetching
|
|
45
|
-
disabled?: boolean;
|
|
46
|
-
initialData?: T;
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Makes a GET request with SWR.
|
|
51
|
-
*
|
|
52
|
-
* @param url The request URL.
|
|
53
|
-
* @param args The request args object, which will be superjson-stringified and appended as "?q=" parameter
|
|
54
|
-
* @returns SWR response
|
|
55
|
-
*/
|
|
56
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
57
|
-
export function get<Result, Error = any>(
|
|
58
|
-
url: string | null,
|
|
59
|
-
args?: unknown,
|
|
60
|
-
options?: RequestOptions<Result>,
|
|
61
|
-
fetch?: FetchFn
|
|
62
|
-
): SWRResponse<Result, Error> {
|
|
63
|
-
const reqUrl = options?.disabled ? null : url ? makeUrl(url, args) : null;
|
|
64
|
-
return useSWR<Result, Error>(reqUrl, (url) => fetcher(url, undefined, fetch), {
|
|
65
|
-
fallbackData: options?.initialData,
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Makes a POST request.
|
|
71
|
-
*
|
|
72
|
-
* @param url The request URL.
|
|
73
|
-
* @param data The request data.
|
|
74
|
-
* @param mutate Mutator for invalidating cache.
|
|
75
|
-
*/
|
|
76
|
-
export async function post<Result>(url: string, data: unknown, mutate: Mutator, fetch?: FetchFn): Promise<Result> {
|
|
77
|
-
const r: Result = await fetcher(
|
|
78
|
-
url,
|
|
79
|
-
{
|
|
80
|
-
method: 'POST',
|
|
81
|
-
headers: {
|
|
82
|
-
'content-type': 'application/json',
|
|
83
|
-
},
|
|
84
|
-
body: marshal(data),
|
|
85
|
-
},
|
|
86
|
-
fetch
|
|
87
|
-
);
|
|
88
|
-
mutate();
|
|
89
|
-
return r;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Makes a PUT request.
|
|
94
|
-
*
|
|
95
|
-
* @param url The request URL.
|
|
96
|
-
* @param data The request data.
|
|
97
|
-
* @param mutate Mutator for invalidating cache.
|
|
98
|
-
*/
|
|
99
|
-
export async function put<Result>(url: string, data: unknown, mutate: Mutator, fetch?: FetchFn): Promise<Result> {
|
|
100
|
-
const r: Result = await fetcher(
|
|
101
|
-
url,
|
|
102
|
-
{
|
|
103
|
-
method: 'PUT',
|
|
104
|
-
headers: {
|
|
105
|
-
'content-type': 'application/json',
|
|
106
|
-
},
|
|
107
|
-
body: marshal(data),
|
|
108
|
-
},
|
|
109
|
-
fetch
|
|
110
|
-
);
|
|
111
|
-
mutate();
|
|
112
|
-
return r;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Makes a DELETE request.
|
|
117
|
-
*
|
|
118
|
-
* @param url The request URL.
|
|
119
|
-
* @param args The request args object, which will be superjson-stringified and appended as "?q=" parameter
|
|
120
|
-
* @param mutate Mutator for invalidating cache.
|
|
121
|
-
*/
|
|
122
|
-
export async function del<Result>(url: string, args: unknown, mutate: Mutator, fetch?: FetchFn): Promise<Result> {
|
|
123
|
-
const reqUrl = makeUrl(url, args);
|
|
124
|
-
const r: Result = await fetcher(
|
|
125
|
-
reqUrl,
|
|
126
|
-
{
|
|
127
|
-
method: 'DELETE',
|
|
128
|
-
},
|
|
129
|
-
fetch
|
|
130
|
-
);
|
|
131
|
-
const path = url.split('/');
|
|
132
|
-
path.pop();
|
|
133
|
-
mutate();
|
|
134
|
-
return r;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
type Mutator = (
|
|
138
|
-
data?: unknown | Promise<unknown> | MutatorCallback,
|
|
139
|
-
opts?: boolean | MutatorOptions
|
|
140
|
-
) => Promise<unknown[]>;
|
|
141
|
-
|
|
142
|
-
export function getMutate(prefixes: string[]): Mutator {
|
|
143
|
-
// https://swr.vercel.app/docs/advanced/cache#mutate-multiple-keys-from-regex
|
|
144
|
-
const { cache, mutate } = useSWRConfig();
|
|
145
|
-
return (data?: unknown | Promise<unknown> | MutatorCallback, opts?: boolean | MutatorOptions) => {
|
|
146
|
-
if (!(cache instanceof Map)) {
|
|
147
|
-
throw new Error('mutate requires the cache provider to be a Map instance');
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
const keys = Array.from(cache.keys()).filter(
|
|
151
|
-
(k) => typeof k === 'string' && prefixes.some((prefix) => k.startsWith(prefix))
|
|
152
|
-
) as string[];
|
|
153
|
-
const mutations = keys.map((key) => mutate(key, data, opts));
|
|
154
|
-
return Promise.all(mutations);
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
export async function fetcher<R>(url: string, options?: RequestInit, fetch?: FetchFn) {
|
|
159
|
-
const _fetch = fetch ?? window.fetch;
|
|
160
|
-
const res = await _fetch(url, options);
|
|
161
|
-
if (!res.ok) {
|
|
162
|
-
const error: Error & { info?: unknown; status?: number } = new Error(
|
|
163
|
-
'An error occurred while fetching the data.'
|
|
164
|
-
);
|
|
165
|
-
error.info = unmarshal(await res.text());
|
|
166
|
-
error.status = res.status;
|
|
167
|
-
throw error;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
const textResult = await res.text();
|
|
171
|
-
try {
|
|
172
|
-
return unmarshal(textResult) as R;
|
|
173
|
-
} catch (err) {
|
|
174
|
-
console.error(`Unable to deserialize data:`, textResult);
|
|
175
|
-
throw err;
|
|
176
|
-
}
|
|
177
|
-
}
|
package/res/marshal-json.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
function marshal(value: unknown) {
|
|
2
|
-
return JSON.stringify(value);
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
function unmarshal(value: string) {
|
|
6
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7
|
-
return JSON.parse(value) as any;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
function makeUrl(url: string, args: unknown) {
|
|
11
|
-
return args ? url + `?q=${encodeURIComponent(JSON.stringify(args))}` : url;
|
|
12
|
-
}
|
package/res/marshal-superjson.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import superjson from 'superjson';
|
|
2
|
-
|
|
3
|
-
function marshal(value: unknown) {
|
|
4
|
-
return superjson.stringify(value);
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
function unmarshal(value: string) {
|
|
8
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
9
|
-
const j = JSON.parse(value) as any;
|
|
10
|
-
if (j?.json) {
|
|
11
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
|
-
return superjson.parse<any>(value);
|
|
13
|
-
} else {
|
|
14
|
-
return j;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function makeUrl(url: string, args: unknown) {
|
|
19
|
-
return args ? url + `?q=${encodeURIComponent(superjson.stringify(args))}` : url;
|
|
20
|
-
}
|