zenstack 0.1.26 → 0.1.28
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.
|
@@ -47,93 +47,11 @@ class ReactHooksGenerator {
|
|
|
47
47
|
const project = new ts_morph_1.Project();
|
|
48
48
|
const models = (0, utils_1.extractDataModelsWithAllowRules)(context.schema);
|
|
49
49
|
this.generateIndex(project, context, models);
|
|
50
|
-
this.generateRequestRuntime(project, context);
|
|
51
50
|
models.forEach((d) => this.generateModelHooks(project, context, d));
|
|
52
51
|
yield project.save();
|
|
53
52
|
console.log(colors_1.default.blue(' ✔️ React hooks generated'));
|
|
54
53
|
});
|
|
55
54
|
}
|
|
56
|
-
generateRequestRuntime(project, context) {
|
|
57
|
-
const content = `
|
|
58
|
-
import useSWR, { useSWRConfig } from 'swr';
|
|
59
|
-
import type { ScopedMutator } from 'swr/dist/types';
|
|
60
|
-
|
|
61
|
-
const fetcher = async (url: string, options?: RequestInit) => {
|
|
62
|
-
const res = await fetch(url, options);
|
|
63
|
-
if (!res.ok) {
|
|
64
|
-
const error: Error & { info?: any; status?: number } = new Error(
|
|
65
|
-
'An error occurred while fetching the data.'
|
|
66
|
-
);
|
|
67
|
-
error.info = await res.json();
|
|
68
|
-
error.status = res.status;
|
|
69
|
-
throw error;
|
|
70
|
-
}
|
|
71
|
-
return res.json();
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
function makeUrl(url: string, args: unknown) {
|
|
75
|
-
return args ? url + \`?q=\${encodeURIComponent(JSON.stringify(args))}\` : url;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
export function get<Data, Error = any>(url: string, args?: unknown) {
|
|
79
|
-
return useSWR<Data, Error>(makeUrl(url, args), fetcher);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export async function post<Data, Result>(
|
|
83
|
-
url: string,
|
|
84
|
-
data: Data,
|
|
85
|
-
mutate: ScopedMutator<any>
|
|
86
|
-
) {
|
|
87
|
-
const r: Result = await fetcher(url, {
|
|
88
|
-
method: 'POST',
|
|
89
|
-
headers: {
|
|
90
|
-
'content-type': 'application/json',
|
|
91
|
-
},
|
|
92
|
-
body: JSON.stringify(data),
|
|
93
|
-
});
|
|
94
|
-
mutate(url);
|
|
95
|
-
return r;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
export async function put<Data, Result>(
|
|
99
|
-
url: string,
|
|
100
|
-
data: Data,
|
|
101
|
-
mutate: ScopedMutator<any>
|
|
102
|
-
) {
|
|
103
|
-
const r: Result = await fetcher(url, {
|
|
104
|
-
method: 'PUT',
|
|
105
|
-
headers: {
|
|
106
|
-
'content-type': 'application/json',
|
|
107
|
-
},
|
|
108
|
-
body: JSON.stringify(data),
|
|
109
|
-
});
|
|
110
|
-
mutate(url, r);
|
|
111
|
-
return r;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
export async function del<Result>(
|
|
115
|
-
url: string,
|
|
116
|
-
args: unknown,
|
|
117
|
-
mutate: ScopedMutator<any>
|
|
118
|
-
) {
|
|
119
|
-
const reqUrl = makeUrl(url, args);
|
|
120
|
-
const r: Result = await fetcher(reqUrl, {
|
|
121
|
-
method: 'DELETE',
|
|
122
|
-
});
|
|
123
|
-
const path = url.split('/');
|
|
124
|
-
path.pop();
|
|
125
|
-
mutate(path.join('/'));
|
|
126
|
-
return r;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
export function getMutate() {
|
|
130
|
-
const { mutate } = useSWRConfig();
|
|
131
|
-
return mutate;
|
|
132
|
-
}
|
|
133
|
-
`;
|
|
134
|
-
const sf = project.createSourceFile(path.join(context.outDir, `src/hooks/request.ts`), content, { overwrite: true });
|
|
135
|
-
sf.formatText();
|
|
136
|
-
}
|
|
137
55
|
generateModelHooks(project, context, model) {
|
|
138
56
|
const fileName = (0, change_case_1.paramCase)(model.name);
|
|
139
57
|
const sf = project.createSourceFile(path.join(context.outDir, `src/hooks/${fileName}.ts`), undefined, { overwrite: true });
|
|
@@ -142,6 +60,10 @@ class ReactHooksGenerator {
|
|
|
142
60
|
isTypeOnly: true,
|
|
143
61
|
moduleSpecifier: '../../.prisma',
|
|
144
62
|
});
|
|
63
|
+
sf.addImportDeclaration({
|
|
64
|
+
namedImports: ['get', 'post', 'put', 'del', 'getMutate'],
|
|
65
|
+
moduleSpecifier: constants_1.INTERNAL_PACKAGE,
|
|
66
|
+
});
|
|
145
67
|
sf.addStatements([`import * as request from './request';`]);
|
|
146
68
|
sf.addStatements(`const endpoint = '/api/${constants_1.API_ROUTE_NAME}/data/${model.name}';`);
|
|
147
69
|
const useFuncBody = sf
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/react-hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAAmC;AACnC,2CAA6B;AAC7B,6CAAwC;AAExC,oDAA4B;AAC5B,oCAA2D;AAC3D,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/react-hooks/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "zenstack",
|
|
3
3
|
"displayName": "ZenStack CLI and Language Tools",
|
|
4
4
|
"description": "ZenStack CLI and Language Tools",
|
|
5
|
-
"version": "0.1.
|
|
5
|
+
"version": "0.1.28",
|
|
6
6
|
"engines": {
|
|
7
7
|
"vscode": "^1.56.0"
|
|
8
8
|
},
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
},
|
|
48
48
|
"main": "./out/extension.js",
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@zenstackhq/internal": "0.1.
|
|
50
|
+
"@zenstackhq/internal": "0.1.8",
|
|
51
51
|
"change-case": "^4.1.2",
|
|
52
52
|
"chevrotain": "^9.1.0",
|
|
53
53
|
"colors": "^1.4.0",
|