@zenstackhq/trpc 0.6.0-pre.19

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.
Files changed (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/config.d.ts +9 -0
  4. package/config.js +8 -0
  5. package/config.js.map +1 -0
  6. package/generator.d.ts +4 -0
  7. package/generator.js +152 -0
  8. package/generator.js.map +1 -0
  9. package/helpers.d.ts +9 -0
  10. package/helpers.js +141 -0
  11. package/helpers.js.map +1 -0
  12. package/index.d.ts +5 -0
  13. package/index.js +21 -0
  14. package/index.js.map +1 -0
  15. package/package.json +37 -0
  16. package/project.d.ts +2 -0
  17. package/project.js +15 -0
  18. package/project.js.map +1 -0
  19. package/types.d.ts +0 -0
  20. package/types.js +2 -0
  21. package/types.js.map +1 -0
  22. package/utils/removeDir.d.ts +1 -0
  23. package/utils/removeDir.js +30 -0
  24. package/utils/removeDir.js.map +1 -0
  25. package/utils/uncapitalizeFirstLetter.d.ts +1 -0
  26. package/utils/uncapitalizeFirstLetter.js +8 -0
  27. package/utils/uncapitalizeFirstLetter.js.map +1 -0
  28. package/zod/generator.d.ts +4 -0
  29. package/zod/generator.js +92 -0
  30. package/zod/generator.js.map +1 -0
  31. package/zod/helpers/aggregate-helpers.d.ts +5 -0
  32. package/zod/helpers/aggregate-helpers.js +64 -0
  33. package/zod/helpers/aggregate-helpers.js.map +1 -0
  34. package/zod/helpers/comments-helpers.d.ts +6 -0
  35. package/zod/helpers/comments-helpers.js +99 -0
  36. package/zod/helpers/comments-helpers.js.map +1 -0
  37. package/zod/helpers/helpers.d.ts +8 -0
  38. package/zod/helpers/helpers.js +39 -0
  39. package/zod/helpers/helpers.js.map +1 -0
  40. package/zod/helpers/include-helpers.d.ts +2 -0
  41. package/zod/helpers/include-helpers.js +79 -0
  42. package/zod/helpers/include-helpers.js.map +1 -0
  43. package/zod/helpers/index.d.ts +4 -0
  44. package/zod/helpers/index.js +21 -0
  45. package/zod/helpers/index.js.map +1 -0
  46. package/zod/helpers/model-helpers.d.ts +6 -0
  47. package/zod/helpers/model-helpers.js +39 -0
  48. package/zod/helpers/model-helpers.js.map +1 -0
  49. package/zod/helpers/modelArgs-helpers.d.ts +2 -0
  50. package/zod/helpers/modelArgs-helpers.js +62 -0
  51. package/zod/helpers/modelArgs-helpers.js.map +1 -0
  52. package/zod/helpers/mongodb-helpers.d.ts +3 -0
  53. package/zod/helpers/mongodb-helpers.js +65 -0
  54. package/zod/helpers/mongodb-helpers.js.map +1 -0
  55. package/zod/helpers/select-helpers.d.ts +2 -0
  56. package/zod/helpers/select-helpers.js +137 -0
  57. package/zod/helpers/select-helpers.js.map +1 -0
  58. package/zod/index.d.ts +5 -0
  59. package/zod/index.js +21 -0
  60. package/zod/index.js.map +1 -0
  61. package/zod/transformer.d.ts +70 -0
  62. package/zod/transformer.js +467 -0
  63. package/zod/transformer.js.map +1 -0
  64. package/zod/types.d.ts +20 -0
  65. package/zod/types.js +3 -0
  66. package/zod/types.js.map +1 -0
  67. package/zod/utils/formatFile.d.ts +1 -0
  68. package/zod/utils/formatFile.js +32 -0
  69. package/zod/utils/formatFile.js.map +1 -0
  70. package/zod/utils/removeDir.d.ts +1 -0
  71. package/zod/utils/removeDir.js +30 -0
  72. package/zod/utils/removeDir.js.map +1 -0
  73. package/zod/utils/writeFileSafely.d.ts +1 -0
  74. package/zod/utils/writeFileSafely.js +26 -0
  75. package/zod/utils/writeFileSafely.js.map +1 -0
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addMissingInputObjectTypesForSelect = void 0;
4
+ const model_helpers_1 = require("./model-helpers");
5
+ function addMissingInputObjectTypesForSelect(inputObjectTypes, outputObjectTypes, models) {
6
+ // generate input object types necessary to support ModelSelect._count
7
+ const modelCountOutputTypes = getModelCountOutputTypes(outputObjectTypes);
8
+ const modelCountOutputTypeSelectInputObjectTypes = generateModelCountOutputTypeSelectInputObjectTypes(modelCountOutputTypes);
9
+ const modelCountOutputTypeArgsInputObjectTypes = generateModelCountOutputTypeArgsInputObjectTypes(modelCountOutputTypes);
10
+ const modelSelectInputObjectTypes = generateModelSelectInputObjectTypes(models);
11
+ const generatedInputObjectTypes = [
12
+ modelCountOutputTypeSelectInputObjectTypes,
13
+ modelCountOutputTypeArgsInputObjectTypes,
14
+ modelSelectInputObjectTypes,
15
+ ].flat();
16
+ for (const inputObjectType of generatedInputObjectTypes) {
17
+ inputObjectTypes.push(inputObjectType);
18
+ }
19
+ }
20
+ exports.addMissingInputObjectTypesForSelect = addMissingInputObjectTypesForSelect;
21
+ function getModelCountOutputTypes(outputObjectTypes) {
22
+ return outputObjectTypes.filter(({ name }) => name.includes('CountOutputType'));
23
+ }
24
+ function generateModelCountOutputTypeSelectInputObjectTypes(modelCountOutputTypes) {
25
+ const modelCountOutputTypeSelectInputObjectTypes = [];
26
+ for (const modelCountOutputType of modelCountOutputTypes) {
27
+ const { name: modelCountOutputTypeName, fields: modelCountOutputTypeFields } = modelCountOutputType;
28
+ const modelCountOutputTypeSelectInputObjectType = {
29
+ name: `${modelCountOutputTypeName}Select`,
30
+ constraints: {
31
+ maxNumFields: null,
32
+ minNumFields: null,
33
+ },
34
+ fields: modelCountOutputTypeFields.map(({ name }) => ({
35
+ name,
36
+ isRequired: false,
37
+ isNullable: false,
38
+ inputTypes: [
39
+ {
40
+ isList: false,
41
+ type: `Boolean`,
42
+ location: 'scalar',
43
+ },
44
+ ],
45
+ })),
46
+ };
47
+ modelCountOutputTypeSelectInputObjectTypes.push(modelCountOutputTypeSelectInputObjectType);
48
+ }
49
+ return modelCountOutputTypeSelectInputObjectTypes;
50
+ }
51
+ function generateModelCountOutputTypeArgsInputObjectTypes(modelCountOutputTypes) {
52
+ const modelCountOutputTypeArgsInputObjectTypes = [];
53
+ for (const modelCountOutputType of modelCountOutputTypes) {
54
+ const { name: modelCountOutputTypeName } = modelCountOutputType;
55
+ const modelCountOutputTypeArgsInputObjectType = {
56
+ name: `${modelCountOutputTypeName}Args`,
57
+ constraints: {
58
+ maxNumFields: null,
59
+ minNumFields: null,
60
+ },
61
+ fields: [
62
+ {
63
+ name: 'select',
64
+ isRequired: false,
65
+ isNullable: false,
66
+ inputTypes: [
67
+ {
68
+ isList: false,
69
+ type: `${modelCountOutputTypeName}Select`,
70
+ location: 'inputObjectTypes',
71
+ namespace: 'prisma',
72
+ },
73
+ ],
74
+ },
75
+ ],
76
+ };
77
+ modelCountOutputTypeArgsInputObjectTypes.push(modelCountOutputTypeArgsInputObjectType);
78
+ }
79
+ return modelCountOutputTypeArgsInputObjectTypes;
80
+ }
81
+ function generateModelSelectInputObjectTypes(models) {
82
+ const modelSelectInputObjectTypes = [];
83
+ for (const model of models) {
84
+ const { name: modelName, fields: modelFields } = model;
85
+ const fields = [];
86
+ for (const modelField of modelFields) {
87
+ const { name: modelFieldName, isList, type } = modelField;
88
+ const isRelationField = (0, model_helpers_1.checkIsModelRelationField)(modelField);
89
+ const field = {
90
+ name: modelFieldName,
91
+ isRequired: false,
92
+ isNullable: false,
93
+ inputTypes: [{ isList: false, type: 'Boolean', location: 'scalar' }],
94
+ };
95
+ if (isRelationField) {
96
+ const schemaArgInputType = {
97
+ isList: false,
98
+ type: isList ? `${type}FindManyArgs` : `${type}Args`,
99
+ location: 'inputObjectTypes',
100
+ namespace: 'prisma',
101
+ };
102
+ field.inputTypes.push(schemaArgInputType);
103
+ }
104
+ fields.push(field);
105
+ }
106
+ const hasManyRelationToAnotherModel = (0, model_helpers_1.checkModelHasManyModelRelation)(model);
107
+ const shouldAddCountField = hasManyRelationToAnotherModel;
108
+ if (shouldAddCountField) {
109
+ const _countField = {
110
+ name: '_count',
111
+ isRequired: false,
112
+ isNullable: false,
113
+ inputTypes: [
114
+ { isList: false, type: 'Boolean', location: 'scalar' },
115
+ {
116
+ isList: false,
117
+ type: `${modelName}CountOutputTypeArgs`,
118
+ location: 'inputObjectTypes',
119
+ namespace: 'prisma',
120
+ },
121
+ ],
122
+ };
123
+ fields.push(_countField);
124
+ }
125
+ const modelSelectInputObjectType = {
126
+ name: `${modelName}Select`,
127
+ constraints: {
128
+ maxNumFields: null,
129
+ minNumFields: null,
130
+ },
131
+ fields,
132
+ };
133
+ modelSelectInputObjectTypes.push(modelSelectInputObjectType);
134
+ }
135
+ return modelSelectInputObjectTypes;
136
+ }
137
+ //# sourceMappingURL=select-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-helpers.js","sourceRoot":"","sources":["../../../src/zod/helpers/select-helpers.ts"],"names":[],"mappings":"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"}
package/zod/index.d.ts ADDED
@@ -0,0 +1,5 @@
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>;
package/zod/index.js ADDED
@@ -0,0 +1,21 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.name = void 0;
13
+ const generator_1 = require("./generator");
14
+ exports.name = 'Zod';
15
+ function run(model, options, dmmf) {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ return (0, generator_1.generate)(model, options, dmmf);
18
+ });
19
+ }
20
+ exports.default = run;
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/zod/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,2CAAuC;AAE1B,QAAA,IAAI,GAAG,KAAK,CAAC;AAE1B,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"}
@@ -0,0 +1,70 @@
1
+ import type { DMMF as PrismaDMMF } from '@prisma/generator-helper';
2
+ import { AggregateOperationSupport, TransformerParams } from './types';
3
+ export default class Transformer {
4
+ name: string;
5
+ fields: PrismaDMMF.SchemaArg[];
6
+ schemaImports: Set<string>;
7
+ models: PrismaDMMF.Model[];
8
+ modelOperations: PrismaDMMF.ModelMapping[];
9
+ aggregateOperationSupport: AggregateOperationSupport;
10
+ enumTypes: PrismaDMMF.SchemaEnum[];
11
+ static enumNames: string[];
12
+ static rawOpsMap: {
13
+ [name: string]: string;
14
+ };
15
+ static provider: string;
16
+ private static outputPath;
17
+ private hasJson;
18
+ private static prismaClientOutputPath;
19
+ private static isCustomPrismaClientOutputPath;
20
+ private static isGenerateSelect;
21
+ private static isGenerateInclude;
22
+ constructor(params: TransformerParams);
23
+ static setOutputPath(outPath: string): void;
24
+ static setIsGenerateSelect(isGenerateSelect: boolean): void;
25
+ static setIsGenerateInclude(isGenerateInclude: boolean): void;
26
+ static getOutputPath(): string;
27
+ static setPrismaClientOutputPath(prismaClientCustomPath: string): void;
28
+ generateEnumSchemas(): Promise<void>;
29
+ generateImportZodStatement(): string;
30
+ generateExportSchemaStatement(name: string, schema: string): string;
31
+ generateObjectSchema(): Promise<void>;
32
+ generateObjectSchemaFields(): string[];
33
+ generateObjectSchemaField(field: PrismaDMMF.SchemaArg): [string, PrismaDMMF.SchemaArg, boolean][];
34
+ wrapWithZodValidators(mainValidator: string, field: PrismaDMMF.SchemaArg, inputType: PrismaDMMF.SchemaArgInputType): string;
35
+ addSchemaImport(name: string): void;
36
+ generatePrismaStringLine(field: PrismaDMMF.SchemaArg, inputType: PrismaDMMF.SchemaArgInputType, inputsLength: number): string;
37
+ generateFieldValidators(zodStringWithMainType: string, field: PrismaDMMF.SchemaArg): string;
38
+ prepareObjectSchema(zodObjectSchemaFields: string[]): string;
39
+ generateExportObjectSchemaStatement(schema: string): string;
40
+ addFinalWrappers({ zodStringFields }: {
41
+ zodStringFields: string[];
42
+ }): string;
43
+ generateImportPrismaStatement(): string;
44
+ generateJsonSchemaImplementation(): string;
45
+ generateObjectSchemaImportStatements(): string;
46
+ generateSchemaImports(): string;
47
+ checkIsModelQueryType(type: string): {
48
+ isModelQueryType: boolean;
49
+ modelName: string;
50
+ queryName: string;
51
+ } | {
52
+ isModelQueryType: boolean;
53
+ modelName?: undefined;
54
+ queryName?: undefined;
55
+ };
56
+ resolveModelQuerySchemaName(modelName: string, queryName: string): string;
57
+ wrapWithZodUnion(zodStringFields: string[]): string;
58
+ wrapWithZodObject(zodStringFields: string | string[]): string;
59
+ resolveObjectSchemaName(): string;
60
+ generateModelSchemas(): Promise<void>;
61
+ generateImportStatements(imports: (string | undefined)[]): string;
62
+ resolveSelectIncludeImportAndZodSchemaLine(model: PrismaDMMF.Model): {
63
+ selectImport: string;
64
+ includeImport: string;
65
+ selectZodSchemaLine: string;
66
+ includeZodSchemaLine: string;
67
+ selectZodSchemaLineLazy: string;
68
+ includeZodSchemaLineLazy: string;
69
+ };
70
+ }