@zenstackhq/trpc 1.0.0-beta.2 → 1.0.0-beta.21
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 +198 -59
- package/generator.js.map +1 -1
- package/helpers.d.ts +9 -3
- package/helpers.js +227 -22
- package/helpers.js.map +1 -1
- package/index.d.ts +2 -1
- package/index.js +2 -1
- package/index.js.map +1 -1
- package/package.json +15 -8
- package/res/client/next.ts +17 -0
- package/res/client/react.ts +17 -0
- package/res/client/utils.ts +32 -0
- package/utils/uncapitalizeFirstLetter.d.ts +0 -1
- package/utils/uncapitalizeFirstLetter.js +0 -8
- package/utils/uncapitalizeFirstLetter.js.map +0 -1
- package/zod/generator.d.ts +0 -4
- package/zod/generator.js +0 -92
- package/zod/generator.js.map +0 -1
- package/zod/index.d.ts +0 -5
- package/zod/index.js +0 -21
- package/zod/index.js.map +0 -1
- package/zod/transformer.d.ts +0 -65
- package/zod/transformer.js +0 -446
- package/zod/transformer.js.map +0 -1
- package/zod/types.d.ts +0 -20
- package/zod/types.js +0 -3
- package/zod/types.js.map +0 -1
- package/zod/utils/formatFile.d.ts +0 -1
- package/zod/utils/formatFile.js +0 -32
- package/zod/utils/formatFile.js.map +0 -1
- package/zod/utils/removeDir.d.ts +0 -1
- package/zod/utils/removeDir.js +0 -30
- package/zod/utils/removeDir.js.map +0 -1
- package/zod/utils/writeFileSafely.d.ts +0 -1
- package/zod/utils/writeFileSafely.js +0 -26
- package/zod/utils/writeFileSafely.js.map +0 -1
package/helpers.js
CHANGED
|
@@ -1,81 +1,285 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveModelsComments = exports.getProcedureTypeByOpName = exports.
|
|
4
|
-
const
|
|
3
|
+
exports.resolveModelsComments = exports.getProcedureTypeByOpName = exports.getInputSchemaByOpName = exports.generateHelperImport = exports.generateRouterSchemaImports = exports.generateRouterTypingImports = exports.generateRouterTyping = exports.generateProcedure = void 0;
|
|
4
|
+
const sdk_1 = require("@zenstackhq/sdk");
|
|
5
|
+
const lower_case_first_1 = require("lower-case-first");
|
|
6
|
+
const upper_case_first_1 = require("upper-case-first");
|
|
7
|
+
const _1 = require(".");
|
|
5
8
|
function generateProcedure(writer, opType, typeName, modelName, baseOpType) {
|
|
6
9
|
const procType = (0, exports.getProcedureTypeByOpName)(baseOpType);
|
|
7
10
|
const prismaMethod = opType.replace('One', '');
|
|
8
11
|
if (procType === 'query') {
|
|
12
|
+
// the cast "as any" is to circumvent a TS compiler misfired error in certain cases
|
|
9
13
|
writer.write(`
|
|
10
|
-
${opType}: procedure.input(${typeName}).query(({ctx, input}) => checkRead(db(ctx).${(0,
|
|
14
|
+
${opType}: procedure.input(${typeName}).query(({ctx, input}) => checkRead(db(ctx).${(0, lower_case_first_1.lowerCaseFirst)(modelName)}.${prismaMethod}(input as any))) as ProcReturns<
|
|
15
|
+
"query",
|
|
16
|
+
Proc,
|
|
17
|
+
(typeof ${(0, upper_case_first_1.upperCaseFirst)(modelName)}InputSchema)["${opType.replace('OrThrow', '')}"],
|
|
18
|
+
ReturnType<PrismaClient["${(0, lower_case_first_1.lowerCaseFirst)(modelName)}"]["${opType}"]>
|
|
19
|
+
>,
|
|
11
20
|
`);
|
|
12
21
|
}
|
|
13
22
|
else if (procType === 'mutation') {
|
|
23
|
+
// the cast "as any" is to circumvent a TS compiler misfired error in certain cases
|
|
14
24
|
writer.write(`
|
|
15
|
-
${opType}: procedure.input(${typeName}).mutation(async ({ctx, input}) => checkMutate(db(ctx).${(0,
|
|
25
|
+
${opType}: procedure.input(${typeName}).mutation(async ({ctx, input}) => checkMutate(db(ctx).${(0, lower_case_first_1.lowerCaseFirst)(modelName)}.${prismaMethod}(input as any))) as ProcReturns<
|
|
26
|
+
"mutation",
|
|
27
|
+
Proc,
|
|
28
|
+
(typeof ${(0, upper_case_first_1.upperCaseFirst)(modelName)}InputSchema)["${opType.replace('OrThrow', '')}"],
|
|
29
|
+
ReturnType<PrismaClient["${(0, lower_case_first_1.lowerCaseFirst)(modelName)}"]["${opType}"]>
|
|
30
|
+
>,
|
|
16
31
|
`);
|
|
17
32
|
}
|
|
18
33
|
}
|
|
19
34
|
exports.generateProcedure = generateProcedure;
|
|
20
|
-
|
|
21
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Given a model and Prisma operation, returns related TS types.
|
|
37
|
+
*/
|
|
38
|
+
function getPrismaOperationTypes(model, operation) {
|
|
39
|
+
// TODO: find a way to derive from Prisma Client API's generic types
|
|
40
|
+
// instead of duplicating them
|
|
41
|
+
const capModel = (0, upper_case_first_1.upperCaseFirst)(model);
|
|
42
|
+
const capOperation = (0, upper_case_first_1.upperCaseFirst)(operation);
|
|
43
|
+
let genericBase = `Prisma.${capModel}${capOperation}Args`;
|
|
44
|
+
const getPayload = `Prisma.${capModel}GetPayload<T>`;
|
|
45
|
+
const selectSubset = `Prisma.SelectSubset<T, ${genericBase}>`;
|
|
46
|
+
let argsType;
|
|
47
|
+
let resultType;
|
|
48
|
+
switch (operation) {
|
|
49
|
+
case 'findUnique':
|
|
50
|
+
case 'findUniqueOrThrow':
|
|
51
|
+
case 'findFirst':
|
|
52
|
+
case 'findFirstOrThrow':
|
|
53
|
+
argsType = selectSubset;
|
|
54
|
+
resultType = getPayload;
|
|
55
|
+
break;
|
|
56
|
+
case 'findMany':
|
|
57
|
+
argsType = selectSubset;
|
|
58
|
+
resultType = `Array<${getPayload}>`;
|
|
59
|
+
break;
|
|
60
|
+
case 'create':
|
|
61
|
+
argsType = selectSubset;
|
|
62
|
+
resultType = getPayload;
|
|
63
|
+
break;
|
|
64
|
+
case 'createMany':
|
|
65
|
+
argsType = selectSubset;
|
|
66
|
+
resultType = `Prisma.BatchPayload`;
|
|
67
|
+
break;
|
|
68
|
+
case 'update':
|
|
69
|
+
argsType = selectSubset;
|
|
70
|
+
resultType = getPayload;
|
|
71
|
+
break;
|
|
72
|
+
case 'updateMany':
|
|
73
|
+
argsType = selectSubset;
|
|
74
|
+
resultType = `Prisma.BatchPayload`;
|
|
75
|
+
break;
|
|
76
|
+
case 'upsert':
|
|
77
|
+
argsType = selectSubset;
|
|
78
|
+
resultType = getPayload;
|
|
79
|
+
break;
|
|
80
|
+
case 'delete':
|
|
81
|
+
argsType = selectSubset;
|
|
82
|
+
resultType = getPayload;
|
|
83
|
+
break;
|
|
84
|
+
case 'deleteMany':
|
|
85
|
+
argsType = selectSubset;
|
|
86
|
+
resultType = `Prisma.BatchPayload`;
|
|
87
|
+
break;
|
|
88
|
+
case 'count':
|
|
89
|
+
argsType = `Prisma.Subset<T, ${genericBase}>`;
|
|
90
|
+
resultType = `'select' extends keyof T
|
|
91
|
+
? T['select'] extends true
|
|
92
|
+
? number
|
|
93
|
+
: Prisma.GetScalarType<T['select'], Prisma.${capModel}CountAggregateOutputType>
|
|
94
|
+
: number`;
|
|
95
|
+
break;
|
|
96
|
+
case 'aggregate':
|
|
97
|
+
argsType = `Prisma.Subset<T, ${genericBase}>`;
|
|
98
|
+
resultType = `Prisma.Get${capModel}AggregateType<T>`;
|
|
99
|
+
break;
|
|
100
|
+
case 'groupBy':
|
|
101
|
+
genericBase = `Prisma.${capModel}GroupByArgs,
|
|
102
|
+
HasSelectOrTake extends Prisma.Or<
|
|
103
|
+
Prisma.Extends<'skip', Prisma.Keys<T>>,
|
|
104
|
+
Prisma.Extends<'take', Prisma.Keys<T>>
|
|
105
|
+
>,
|
|
106
|
+
OrderByArg extends Prisma.True extends HasSelectOrTake
|
|
107
|
+
? { orderBy: Prisma.${capModel}GroupByArgs['orderBy'] }
|
|
108
|
+
: { orderBy?: Prisma.${capModel}GroupByArgs['orderBy'] },
|
|
109
|
+
OrderFields extends Prisma.ExcludeUnderscoreKeys<Prisma.Keys<Prisma.MaybeTupleToUnion<T['orderBy']>>>,
|
|
110
|
+
ByFields extends Prisma.MaybeTupleToUnion<T['by']>,
|
|
111
|
+
ByValid extends Prisma.Has<ByFields, OrderFields>,
|
|
112
|
+
HavingFields extends Prisma.GetHavingFields<T['having']>,
|
|
113
|
+
HavingValid extends Prisma.Has<ByFields, HavingFields>,
|
|
114
|
+
ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False,
|
|
115
|
+
InputErrors extends ByEmpty extends Prisma.True
|
|
116
|
+
? \`Error: "by" must not be empty.\`
|
|
117
|
+
: HavingValid extends Prisma.False
|
|
118
|
+
? {
|
|
119
|
+
[P in HavingFields]: P extends ByFields
|
|
120
|
+
? never
|
|
121
|
+
: P extends string
|
|
122
|
+
? \`Error: Field "\${P}" used in "having" needs to be provided in "by".\`
|
|
123
|
+
: [
|
|
124
|
+
Error,
|
|
125
|
+
'Field ',
|
|
126
|
+
P,
|
|
127
|
+
\` in "having" needs to be provided in "by"\`,
|
|
128
|
+
]
|
|
129
|
+
}[HavingFields]
|
|
130
|
+
: 'take' extends Prisma.Keys<T>
|
|
131
|
+
? 'orderBy' extends Prisma.Keys<T>
|
|
132
|
+
? ByValid extends Prisma.True
|
|
133
|
+
? {}
|
|
134
|
+
: {
|
|
135
|
+
[P in OrderFields]: P extends ByFields
|
|
136
|
+
? never
|
|
137
|
+
: \`Error: Field "\${P}" in "orderBy" needs to be provided in "by"\`
|
|
138
|
+
}[OrderFields]
|
|
139
|
+
: 'Error: If you provide "take", you also need to provide "orderBy"'
|
|
140
|
+
: 'skip' extends Prisma.Keys<T>
|
|
141
|
+
? 'orderBy' extends Prisma.Keys<T>
|
|
142
|
+
? ByValid extends Prisma.True
|
|
143
|
+
? {}
|
|
144
|
+
: {
|
|
145
|
+
[P in OrderFields]: P extends ByFields
|
|
146
|
+
? never
|
|
147
|
+
: \`Error: Field "\${P}" in "orderBy" needs to be provided in "by"\`
|
|
148
|
+
}[OrderFields]
|
|
149
|
+
: 'Error: If you provide "skip", you also need to provide "orderBy"'
|
|
150
|
+
: ByValid extends Prisma.True
|
|
151
|
+
? {}
|
|
152
|
+
: {
|
|
153
|
+
[P in OrderFields]: P extends ByFields
|
|
154
|
+
? never
|
|
155
|
+
: \`Error: Field "\${P}" in "orderBy" needs to be provided in "by"\`
|
|
156
|
+
}[OrderFields]
|
|
157
|
+
`;
|
|
158
|
+
argsType = `Prisma.SubsetIntersection<T, Prisma.${capModel}GroupByArgs, OrderByArg> & InputErrors`;
|
|
159
|
+
resultType = `{} extends InputErrors ? Prisma.Get${capModel}GroupByPayload<T> : InputErrors`;
|
|
160
|
+
break;
|
|
161
|
+
default:
|
|
162
|
+
throw new sdk_1.PluginError(_1.name, `Unsupported operation: "${operation}"`);
|
|
163
|
+
}
|
|
164
|
+
return { genericBase, argsType, resultType };
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Generate precise Prisma-like typing for router procedures.
|
|
168
|
+
*/
|
|
169
|
+
function generateRouterTyping(writer, opType, modelName, baseOpType) {
|
|
170
|
+
const procType = (0, exports.getProcedureTypeByOpName)(baseOpType);
|
|
171
|
+
const { genericBase, argsType, resultType } = getPrismaOperationTypes(modelName, opType);
|
|
172
|
+
const errorType = `TRPCClientErrorLike<AppRouter>`;
|
|
173
|
+
writer.block(() => {
|
|
174
|
+
if (procType === 'query') {
|
|
175
|
+
writer.writeLine(`
|
|
176
|
+
useQuery: <T extends ${genericBase}>(
|
|
177
|
+
input: ${argsType},
|
|
178
|
+
opts?: UseTRPCQueryOptions<string, T, ${resultType}, ${resultType}, Error>
|
|
179
|
+
) => UseTRPCQueryResult<
|
|
180
|
+
${resultType},
|
|
181
|
+
${errorType}
|
|
182
|
+
>;
|
|
183
|
+
useInfiniteQuery: <T extends ${genericBase}>(
|
|
184
|
+
input: Omit<${argsType}, 'cursor'>,
|
|
185
|
+
opts?: UseTRPCInfiniteQueryOptions<string, T, ${resultType}, Error>
|
|
186
|
+
) => UseTRPCInfiniteQueryResult<
|
|
187
|
+
${resultType},
|
|
188
|
+
${errorType}
|
|
189
|
+
>;
|
|
190
|
+
`);
|
|
191
|
+
}
|
|
192
|
+
else if (procType === 'mutation') {
|
|
193
|
+
writer.writeLine(`
|
|
194
|
+
useMutation: <T extends ${genericBase}>(opts?: UseTRPCMutationOptions<
|
|
195
|
+
${genericBase},
|
|
196
|
+
${errorType},
|
|
197
|
+
Prisma.${(0, upper_case_first_1.upperCaseFirst)(modelName)}GetPayload<null>,
|
|
198
|
+
Context
|
|
199
|
+
>,) =>
|
|
200
|
+
Omit<UseTRPCMutationResult<${resultType}, ${errorType}, ${argsType}, Context>, 'mutateAsync'> & {
|
|
201
|
+
mutateAsync:
|
|
202
|
+
<T extends ${genericBase}>(variables: T, opts?: UseTRPCMutationOptions<T, ${errorType}, ${resultType}, Context>) => Promise<${resultType}>
|
|
203
|
+
};
|
|
204
|
+
`);
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
exports.generateRouterTyping = generateRouterTyping;
|
|
209
|
+
function generateRouterTypingImports(sourceFile, model) {
|
|
210
|
+
const importingDir = sourceFile.getDirectoryPath();
|
|
211
|
+
const prismaImport = (0, sdk_1.getPrismaClientImportSpec)(model, importingDir);
|
|
212
|
+
sourceFile.addStatements([
|
|
213
|
+
`import type { Prisma } from '${prismaImport}';`,
|
|
214
|
+
`import type { UseTRPCMutationOptions, UseTRPCMutationResult, UseTRPCQueryOptions, UseTRPCQueryResult, UseTRPCInfiniteQueryOptions, UseTRPCInfiniteQueryResult } from '@trpc/react-query/shared';`,
|
|
215
|
+
`import type { TRPCClientErrorLike } from '@trpc/client';`,
|
|
216
|
+
`import type { AnyRouter } from '@trpc/server';`,
|
|
217
|
+
]);
|
|
218
|
+
}
|
|
219
|
+
exports.generateRouterTypingImports = generateRouterTypingImports;
|
|
220
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
221
|
+
function generateRouterSchemaImports(sourceFile, name, zodSchemasImport) {
|
|
222
|
+
sourceFile.addStatements(`import { ${name}InputSchema } from '${zodSchemasImport}/input';`);
|
|
22
223
|
}
|
|
23
224
|
exports.generateRouterSchemaImports = generateRouterSchemaImports;
|
|
24
225
|
function generateHelperImport(sourceFile) {
|
|
25
226
|
sourceFile.addStatements(`import { checkRead, checkMutate } from '../helper';`);
|
|
26
227
|
}
|
|
27
228
|
exports.generateHelperImport = generateHelperImport;
|
|
28
|
-
const
|
|
229
|
+
const getInputSchemaByOpName = (opName, modelName) => {
|
|
29
230
|
let inputType;
|
|
30
231
|
switch (opName) {
|
|
31
232
|
case 'findUnique':
|
|
32
|
-
inputType = `${modelName}
|
|
233
|
+
inputType = `${modelName}InputSchema.findUnique`;
|
|
33
234
|
break;
|
|
34
235
|
case 'findFirst':
|
|
35
|
-
inputType = `${modelName}
|
|
236
|
+
inputType = `${modelName}InputSchema.findFirst`;
|
|
36
237
|
break;
|
|
37
238
|
case 'findMany':
|
|
38
|
-
inputType = `${modelName}
|
|
239
|
+
inputType = `${modelName}InputSchema.findMany`;
|
|
39
240
|
break;
|
|
40
241
|
case 'findRaw':
|
|
41
|
-
inputType = `${modelName}
|
|
242
|
+
inputType = `${modelName}InputSchema.findRawObject`;
|
|
42
243
|
break;
|
|
43
244
|
case 'createOne':
|
|
44
|
-
inputType = `${modelName}
|
|
245
|
+
inputType = `${modelName}InputSchema.create`;
|
|
45
246
|
break;
|
|
46
247
|
case 'createMany':
|
|
47
|
-
inputType = `${modelName}
|
|
248
|
+
inputType = `${modelName}InputSchema.createMany`;
|
|
48
249
|
break;
|
|
49
250
|
case 'deleteOne':
|
|
50
|
-
inputType = `${modelName}
|
|
251
|
+
inputType = `${modelName}InputSchema.delete`;
|
|
51
252
|
break;
|
|
52
253
|
case 'updateOne':
|
|
53
|
-
inputType = `${modelName}
|
|
254
|
+
inputType = `${modelName}InputSchema.update`;
|
|
54
255
|
break;
|
|
55
256
|
case 'deleteMany':
|
|
56
|
-
inputType = `${modelName}
|
|
257
|
+
inputType = `${modelName}InputSchema.deleteMany`;
|
|
57
258
|
break;
|
|
58
259
|
case 'updateMany':
|
|
59
|
-
inputType = `${modelName}
|
|
260
|
+
inputType = `${modelName}InputSchema.updateMany`;
|
|
60
261
|
break;
|
|
61
262
|
case 'upsertOne':
|
|
62
|
-
inputType = `${modelName}
|
|
263
|
+
inputType = `${modelName}InputSchema.upsert`;
|
|
63
264
|
break;
|
|
64
265
|
case 'aggregate':
|
|
65
|
-
inputType = `${modelName}
|
|
266
|
+
inputType = `${modelName}InputSchema.aggregate`;
|
|
66
267
|
break;
|
|
67
268
|
case 'aggregateRaw':
|
|
68
|
-
inputType = `${modelName}
|
|
269
|
+
inputType = `${modelName}InputSchema.aggregateRawObject`;
|
|
69
270
|
break;
|
|
70
271
|
case 'groupBy':
|
|
71
|
-
inputType = `${modelName}
|
|
272
|
+
inputType = `${modelName}InputSchema.groupBy`;
|
|
273
|
+
break;
|
|
274
|
+
case 'count':
|
|
275
|
+
inputType = `${modelName}InputSchema.count`;
|
|
72
276
|
break;
|
|
73
277
|
default:
|
|
74
278
|
console.log('getInputTypeByOpName: ', { opName, modelName });
|
|
75
279
|
}
|
|
76
280
|
return inputType;
|
|
77
281
|
};
|
|
78
|
-
exports.
|
|
282
|
+
exports.getInputSchemaByOpName = getInputSchemaByOpName;
|
|
79
283
|
const getProcedureTypeByOpName = (opName) => {
|
|
80
284
|
let procType;
|
|
81
285
|
switch (opName) {
|
|
@@ -86,6 +290,7 @@ const getProcedureTypeByOpName = (opName) => {
|
|
|
86
290
|
case 'aggregate':
|
|
87
291
|
case 'aggregateRaw':
|
|
88
292
|
case 'groupBy':
|
|
293
|
+
case 'count':
|
|
89
294
|
procType = 'query';
|
|
90
295
|
break;
|
|
91
296
|
case 'createOne':
|
package/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
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 const name = "tRPC";
|
|
5
|
+
export declare const dependencies: string[];
|
|
5
6
|
export default function run(model: Model, options: PluginOptions, dmmf: DMMF.Document): Promise<void>;
|
package/index.js
CHANGED
|
@@ -9,9 +9,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.name = void 0;
|
|
12
|
+
exports.dependencies = exports.name = void 0;
|
|
13
13
|
const generator_1 = require("./generator");
|
|
14
14
|
exports.name = 'tRPC';
|
|
15
|
+
exports.dependencies = ['@core/zod'];
|
|
15
16
|
function run(model, options, dmmf) {
|
|
16
17
|
return __awaiter(this, void 0, void 0, function* () {
|
|
17
18
|
return (0, generator_1.generate)(model, options, dmmf);
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,2CAAuC;AAE1B,QAAA,IAAI,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,2CAAuC;AAE1B,QAAA,IAAI,GAAG,MAAM,CAAC;AACd,QAAA,YAAY,GAAG,CAAC,WAAW,CAAC,CAAC;AAE1C,SAA8B,GAAG,CAAC,KAAY,EAAE,OAAsB,EAAE,IAAmB;;QACvF,OAAO,IAAA,oBAAQ,EAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;CAAA;AAFD,sBAEC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zenstackhq/trpc",
|
|
3
3
|
"displayName": "ZenStack plugin for tRPC",
|
|
4
|
-
"version": "1.0.0-beta.
|
|
4
|
+
"version": "1.0.0-beta.21",
|
|
5
5
|
"description": "ZenStack plugin for tRPC",
|
|
6
6
|
"main": "index.js",
|
|
7
7
|
"repository": {
|
|
@@ -12,36 +12,43 @@
|
|
|
12
12
|
"directory": "dist",
|
|
13
13
|
"linkDirectory": true
|
|
14
14
|
},
|
|
15
|
-
"keywords": [
|
|
15
|
+
"keywords": [
|
|
16
|
+
"trpc"
|
|
17
|
+
],
|
|
16
18
|
"author": "ZenStack Team",
|
|
17
19
|
"license": "MIT",
|
|
18
20
|
"dependencies": {
|
|
19
|
-
"@prisma/generator-helper": "^
|
|
20
|
-
"@prisma/internals": "^4.7.1",
|
|
21
|
+
"@prisma/generator-helper": "^5.0.0",
|
|
21
22
|
"change-case": "^4.1.2",
|
|
22
23
|
"lower-case-first": "^2.0.2",
|
|
23
24
|
"prettier": "^2.8.3",
|
|
24
25
|
"ts-morph": "^16.0.0",
|
|
25
26
|
"tslib": "^2.4.1",
|
|
27
|
+
"upper-case-first": "^2.0.2",
|
|
26
28
|
"zod": "3.21.1",
|
|
27
|
-
"@zenstackhq/sdk": "1.0.0-beta.
|
|
29
|
+
"@zenstackhq/sdk": "1.0.0-beta.21"
|
|
28
30
|
},
|
|
29
31
|
"devDependencies": {
|
|
32
|
+
"@trpc/next": "^10.32.0",
|
|
33
|
+
"@trpc/react-query": "^10.32.0",
|
|
34
|
+
"@trpc/server": "^10.32.0",
|
|
30
35
|
"@types/jest": "^29.5.0",
|
|
31
|
-
"@types/
|
|
36
|
+
"@types/node": "^18.0.0",
|
|
32
37
|
"@types/prettier": "^2.7.2",
|
|
33
38
|
"copyfiles": "^2.4.1",
|
|
34
39
|
"jest": "^29.5.0",
|
|
40
|
+
"next": "^13.4.7",
|
|
35
41
|
"rimraf": "^3.0.2",
|
|
36
42
|
"ts-jest": "^29.0.5",
|
|
37
43
|
"typescript": "^4.9.4",
|
|
38
|
-
"@zenstackhq/testtools": "1.0.0-beta.
|
|
44
|
+
"@zenstackhq/testtools": "1.0.0-beta.21"
|
|
39
45
|
},
|
|
40
46
|
"scripts": {
|
|
41
47
|
"clean": "rimraf dist",
|
|
42
|
-
"build": "pnpm lint && pnpm clean && tsc && copyfiles ./package.json ./README.md ./LICENSE dist",
|
|
48
|
+
"build": "pnpm lint && pnpm clean && tsc && copyfiles ./package.json ./README.md ./LICENSE 'res/**/*' dist && pnpm pack dist --pack-destination '../../../../.build'",
|
|
43
49
|
"watch": "tsc --watch",
|
|
44
50
|
"lint": "eslint src --ext ts",
|
|
51
|
+
"test": "ZENSTACK_TEST=1 jest",
|
|
45
52
|
"publish-dev": "pnpm publish --tag dev"
|
|
46
53
|
}
|
|
47
54
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
|
|
3
|
+
import type { AnyRouter } from '@trpc/server';
|
|
4
|
+
import type { NextPageContext } from 'next';
|
|
5
|
+
import { type CreateTRPCNext, createTRPCNext as _createTRPCNext } from '@trpc/next';
|
|
6
|
+
import type { DeepOverrideAtPath } from './utils';
|
|
7
|
+
import type { ClientType } from '../routers';
|
|
8
|
+
|
|
9
|
+
export function createTRPCNext<
|
|
10
|
+
TRouter extends AnyRouter,
|
|
11
|
+
TPath extends string | undefined = undefined,
|
|
12
|
+
TSSRContext extends NextPageContext = NextPageContext,
|
|
13
|
+
TFlags = null
|
|
14
|
+
>(opts: Parameters<typeof _createTRPCNext>[0]) {
|
|
15
|
+
const r: CreateTRPCNext<TRouter, TSSRContext, TFlags> = _createTRPCNext<TRouter, TSSRContext, TFlags>(opts);
|
|
16
|
+
return r as DeepOverrideAtPath<CreateTRPCNext<TRouter, TSSRContext, TFlags>, ClientType<TRouter>, TPath>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
|
|
3
|
+
import type { AnyRouter } from '@trpc/server';
|
|
4
|
+
import type { CreateTRPCReactOptions } from '@trpc/react-query/shared';
|
|
5
|
+
import { type CreateTRPCReact, createTRPCReact as _createTRPCReact } from '@trpc/react-query';
|
|
6
|
+
import type { DeepOverrideAtPath } from './utils';
|
|
7
|
+
import type { ClientType } from '../routers';
|
|
8
|
+
|
|
9
|
+
export function createTRPCReact<
|
|
10
|
+
TRouter extends AnyRouter,
|
|
11
|
+
TPath extends string | undefined = undefined,
|
|
12
|
+
TSSRContext = unknown,
|
|
13
|
+
TFlags = null
|
|
14
|
+
>(opts?: CreateTRPCReactOptions<TRouter>) {
|
|
15
|
+
const r: CreateTRPCReact<TRouter, TSSRContext, TFlags> = _createTRPCReact<TRouter, TSSRContext, TFlags>(opts);
|
|
16
|
+
return r as DeepOverrideAtPath<CreateTRPCReact<TRouter, TSSRContext, TFlags>, ClientType<TRouter>, TPath>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
|
|
3
|
+
// inspired by: https://stackoverflow.com/questions/70632026/generic-to-recursively-modify-a-given-type-interface-in-typescript
|
|
4
|
+
|
|
5
|
+
type Primitive = string | Function | number | boolean | Symbol | undefined | null;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Recursively merges `T` and `R`. If there's a shared key, use `R`'s field type to overwrite `T`.
|
|
9
|
+
*/
|
|
10
|
+
export type DeepOverride<T, R> = T extends Primitive
|
|
11
|
+
? R
|
|
12
|
+
: R extends Primitive
|
|
13
|
+
? R
|
|
14
|
+
: {
|
|
15
|
+
[K in keyof T]: K extends keyof R ? DeepOverride<T[K], R[K]> : T[K];
|
|
16
|
+
} & {
|
|
17
|
+
[K in Exclude<keyof R, keyof T>]: R[K];
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Traverse to `Path` (denoted by dot separated string literal type) in `T`, and starting from there,
|
|
22
|
+
* recursively merge with `R`.
|
|
23
|
+
*/
|
|
24
|
+
export type DeepOverrideAtPath<T, R, Path extends string | undefined = undefined> = Path extends undefined
|
|
25
|
+
? DeepOverride<T, R>
|
|
26
|
+
: Path extends `${infer P1}.${infer P2}`
|
|
27
|
+
? P1 extends keyof T
|
|
28
|
+
? Omit<T, P1> & Record<P1, DeepOverride<T[P1], DeepOverrideAtPath<T[P1], R, P2>>>
|
|
29
|
+
: never
|
|
30
|
+
: Path extends keyof T
|
|
31
|
+
? Omit<T, Path> & Record<Path, DeepOverride<T[Path], R>>
|
|
32
|
+
: never;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const uncapitalizeFirstLetter: (str: string) => string;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.uncapitalizeFirstLetter = void 0;
|
|
4
|
-
const uncapitalizeFirstLetter = (str) => {
|
|
5
|
-
return str.charAt(0).toLowerCase() + str.slice(1);
|
|
6
|
-
};
|
|
7
|
-
exports.uncapitalizeFirstLetter = uncapitalizeFirstLetter;
|
|
8
|
-
//# sourceMappingURL=uncapitalizeFirstLetter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uncapitalizeFirstLetter.js","sourceRoot":"","sources":["../../src/utils/uncapitalizeFirstLetter.ts"],"names":[],"mappings":";;;AAAO,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAE,EAAE;IACnD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC;AAFW,QAAA,uBAAuB,2BAElC"}
|
package/zod/generator.d.ts
DELETED
package/zod/generator.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.generate = void 0;
|
|
16
|
-
const sdk_1 = require("@zenstackhq/sdk");
|
|
17
|
-
const ast_1 = require("@zenstackhq/sdk/ast");
|
|
18
|
-
const dmmf_helpers_1 = require("@zenstackhq/sdk/dmmf-helpers");
|
|
19
|
-
const fs_1 = require("fs");
|
|
20
|
-
const path_1 = __importDefault(require("path"));
|
|
21
|
-
const transformer_1 = __importDefault(require("./transformer"));
|
|
22
|
-
const removeDir_1 = __importDefault(require("./utils/removeDir"));
|
|
23
|
-
const writeFileSafely_1 = require("./utils/writeFileSafely");
|
|
24
|
-
function generate(model, options, dmmf) {
|
|
25
|
-
var _a, _b, _c;
|
|
26
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
-
let output = (_a = options.output) !== null && _a !== void 0 ? _a : './generated';
|
|
28
|
-
output = (0, sdk_1.resolvePath)(output, options);
|
|
29
|
-
yield handleGeneratorOutputValue(output);
|
|
30
|
-
const prismaClientDmmf = dmmf;
|
|
31
|
-
const modelOperations = prismaClientDmmf.mappings.modelOperations;
|
|
32
|
-
const inputObjectTypes = prismaClientDmmf.schema.inputObjectTypes.prisma;
|
|
33
|
-
const outputObjectTypes = prismaClientDmmf.schema.outputObjectTypes.prisma;
|
|
34
|
-
const models = prismaClientDmmf.datamodel.models;
|
|
35
|
-
yield generateEnumSchemas(prismaClientDmmf.schema.enumTypes.prisma, (_b = prismaClientDmmf.schema.enumTypes.model) !== null && _b !== void 0 ? _b : []);
|
|
36
|
-
const dataSource = model.declarations.find((d) => (0, ast_1.isDataSource)(d));
|
|
37
|
-
const dataSourceProvider = (0, sdk_1.getLiteral)((_c = dataSource === null || dataSource === void 0 ? void 0 : dataSource.fields.find((f) => f.name === 'provider')) === null || _c === void 0 ? void 0 : _c.value);
|
|
38
|
-
transformer_1.default.provider = dataSourceProvider;
|
|
39
|
-
const generatorConfigOptions = {};
|
|
40
|
-
Object.entries(options).forEach(([k, v]) => (generatorConfigOptions[k] = v));
|
|
41
|
-
(0, dmmf_helpers_1.addMissingInputObjectTypes)(inputObjectTypes, outputObjectTypes, models);
|
|
42
|
-
const aggregateOperationSupport = (0, dmmf_helpers_1.resolveAggregateOperationSupport)(inputObjectTypes);
|
|
43
|
-
yield generateObjectSchemas(inputObjectTypes, output);
|
|
44
|
-
yield generateModelSchemas(models, modelOperations, aggregateOperationSupport);
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
exports.generate = generate;
|
|
48
|
-
function handleGeneratorOutputValue(output) {
|
|
49
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
-
// create the output directory and delete contents that might exist from a previous run
|
|
51
|
-
yield fs_1.promises.mkdir(output, { recursive: true });
|
|
52
|
-
const isRemoveContentsOnly = true;
|
|
53
|
-
yield (0, removeDir_1.default)(output, isRemoveContentsOnly);
|
|
54
|
-
transformer_1.default.setOutputPath(output);
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
function generateEnumSchemas(prismaSchemaEnum, modelSchemaEnum) {
|
|
58
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
59
|
-
const enumTypes = [...prismaSchemaEnum, ...modelSchemaEnum];
|
|
60
|
-
const enumNames = enumTypes.map((enumItem) => enumItem.name);
|
|
61
|
-
transformer_1.default.enumNames = enumNames !== null && enumNames !== void 0 ? enumNames : [];
|
|
62
|
-
const transformer = new transformer_1.default({
|
|
63
|
-
enumTypes,
|
|
64
|
-
});
|
|
65
|
-
yield transformer.generateEnumSchemas();
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
function generateObjectSchemas(inputObjectTypes, output) {
|
|
69
|
-
var _a, _b;
|
|
70
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
-
const moduleNames = [];
|
|
72
|
-
for (let i = 0; i < inputObjectTypes.length; i += 1) {
|
|
73
|
-
const fields = (_a = inputObjectTypes[i]) === null || _a === void 0 ? void 0 : _a.fields;
|
|
74
|
-
const name = (_b = inputObjectTypes[i]) === null || _b === void 0 ? void 0 : _b.name;
|
|
75
|
-
const transformer = new transformer_1.default({ name, fields });
|
|
76
|
-
const moduleName = yield transformer.generateObjectSchema();
|
|
77
|
-
moduleNames.push(moduleName);
|
|
78
|
-
}
|
|
79
|
-
yield (0, writeFileSafely_1.writeFileSafely)(path_1.default.join(output, `schemas/objects/index.ts`), moduleNames.map((name) => `export * from './${name}';`).join('\n'));
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
function generateModelSchemas(models, modelOperations, aggregateOperationSupport) {
|
|
83
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
84
|
-
const transformer = new transformer_1.default({
|
|
85
|
-
models,
|
|
86
|
-
modelOperations,
|
|
87
|
-
aggregateOperationSupport,
|
|
88
|
-
});
|
|
89
|
-
yield transformer.generateModelSchemas();
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=generator.js.map
|
package/zod/generator.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/zod/generator.ts"],"names":[],"mappings":"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"}
|
package/zod/index.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { DMMF } from '@prisma/generator-helper';
|
|
2
|
-
import { PluginOptions } from '@zenstackhq/sdk';
|
|
3
|
-
import { Model } from '@zenstackhq/sdk/ast';
|
|
4
|
-
export declare const name = "Zod";
|
|
5
|
-
export default function run(model: Model, options: PluginOptions, dmmf: DMMF.Document): Promise<void>;
|