@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/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.getInputTypeByOpName = exports.generateHelperImport = exports.generateRouterSchemaImports = exports.generateProcedure = void 0;
4
- const uncapitalizeFirstLetter_1 = require("./utils/uncapitalizeFirstLetter");
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, uncapitalizeFirstLetter_1.uncapitalizeFirstLetter)(modelName)}.${prismaMethod}(input))),
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, uncapitalizeFirstLetter_1.uncapitalizeFirstLetter)(modelName)}.${prismaMethod}(input))),
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
- function generateRouterSchemaImports(sourceFile, name) {
21
- sourceFile.addStatements(`import { ${name}Schema } from '../schemas/${name}.schema';`);
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 getInputTypeByOpName = (opName, modelName) => {
229
+ const getInputSchemaByOpName = (opName, modelName) => {
29
230
  let inputType;
30
231
  switch (opName) {
31
232
  case 'findUnique':
32
- inputType = `${modelName}Schema.findUnique`;
233
+ inputType = `${modelName}InputSchema.findUnique`;
33
234
  break;
34
235
  case 'findFirst':
35
- inputType = `${modelName}Schema.findFirst`;
236
+ inputType = `${modelName}InputSchema.findFirst`;
36
237
  break;
37
238
  case 'findMany':
38
- inputType = `${modelName}Schema.findMany`;
239
+ inputType = `${modelName}InputSchema.findMany`;
39
240
  break;
40
241
  case 'findRaw':
41
- inputType = `${modelName}Schema.findRawObject`;
242
+ inputType = `${modelName}InputSchema.findRawObject`;
42
243
  break;
43
244
  case 'createOne':
44
- inputType = `${modelName}Schema.create`;
245
+ inputType = `${modelName}InputSchema.create`;
45
246
  break;
46
247
  case 'createMany':
47
- inputType = `${modelName}Schema.createMany`;
248
+ inputType = `${modelName}InputSchema.createMany`;
48
249
  break;
49
250
  case 'deleteOne':
50
- inputType = `${modelName}Schema.delete`;
251
+ inputType = `${modelName}InputSchema.delete`;
51
252
  break;
52
253
  case 'updateOne':
53
- inputType = `${modelName}Schema.update`;
254
+ inputType = `${modelName}InputSchema.update`;
54
255
  break;
55
256
  case 'deleteMany':
56
- inputType = `${modelName}Schema.deleteMany`;
257
+ inputType = `${modelName}InputSchema.deleteMany`;
57
258
  break;
58
259
  case 'updateMany':
59
- inputType = `${modelName}Schema.updateMany`;
260
+ inputType = `${modelName}InputSchema.updateMany`;
60
261
  break;
61
262
  case 'upsertOne':
62
- inputType = `${modelName}Schema.upsert`;
263
+ inputType = `${modelName}InputSchema.upsert`;
63
264
  break;
64
265
  case 'aggregate':
65
- inputType = `${modelName}Schema.aggregate`;
266
+ inputType = `${modelName}InputSchema.aggregate`;
66
267
  break;
67
268
  case 'aggregateRaw':
68
- inputType = `${modelName}Schema.aggregateRawObject`;
269
+ inputType = `${modelName}InputSchema.aggregateRawObject`;
69
270
  break;
70
271
  case 'groupBy':
71
- inputType = `${modelName}Schema.groupBy`;
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.getInputTypeByOpName = getInputTypeByOpName;
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":"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"}
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;AAE3B,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"}
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.2",
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": "^4.7.1",
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.2"
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/lower-case-first": "^1.0.1",
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.2"
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"}
@@ -1,4 +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 function generate(model: Model, options: PluginOptions, dmmf: DMMF.Document): Promise<void>;
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
@@ -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>;