@wokcito/prisma-generator-pothos-codegen 1.0.0

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 (78) hide show
  1. package/README.md +416 -0
  2. package/package.json +76 -0
  3. package/src/bin.d.ts +2 -0
  4. package/src/bin.js +5 -0
  5. package/src/bin.js.map +1 -0
  6. package/src/crudGenerator/index.d.ts +3 -0
  7. package/src/crudGenerator/index.js +96 -0
  8. package/src/crudGenerator/index.js.map +1 -0
  9. package/src/crudGenerator/templates/mutation.d.ts +9 -0
  10. package/src/crudGenerator/templates/mutation.js +59 -0
  11. package/src/crudGenerator/templates/mutation.js.map +1 -0
  12. package/src/crudGenerator/templates/object.d.ts +4 -0
  13. package/src/crudGenerator/templates/object.js +59 -0
  14. package/src/crudGenerator/templates/object.js.map +1 -0
  15. package/src/crudGenerator/templates/query.d.ts +6 -0
  16. package/src/crudGenerator/templates/query.js +37 -0
  17. package/src/crudGenerator/templates/query.js.map +1 -0
  18. package/src/crudGenerator/templates/resolver.d.ts +2 -0
  19. package/src/crudGenerator/templates/resolver.js +35 -0
  20. package/src/crudGenerator/templates/resolver.js.map +1 -0
  21. package/src/crudGenerator/templates/root.d.ts +20 -0
  22. package/src/crudGenerator/templates/root.js +305 -0
  23. package/src/crudGenerator/templates/root.js.map +1 -0
  24. package/src/crudGenerator/utils/generator.d.ts +10 -0
  25. package/src/crudGenerator/utils/generator.js +20 -0
  26. package/src/crudGenerator/utils/generator.js.map +1 -0
  27. package/src/crudGenerator/utils/objectFields.d.ts +7 -0
  28. package/src/crudGenerator/utils/objectFields.js +58 -0
  29. package/src/crudGenerator/utils/objectFields.js.map +1 -0
  30. package/src/crudGenerator/utils/parts.d.ts +25 -0
  31. package/src/crudGenerator/utils/parts.js +132 -0
  32. package/src/crudGenerator/utils/parts.js.map +1 -0
  33. package/src/env.d.ts +3 -0
  34. package/src/env.js +7 -0
  35. package/src/env.js.map +1 -0
  36. package/src/generator.d.ts +6 -0
  37. package/src/generator.js +22 -0
  38. package/src/generator.js.map +1 -0
  39. package/src/index.d.ts +2 -0
  40. package/src/index.js +3 -0
  41. package/src/index.js.map +1 -0
  42. package/src/inputsGenerator/index.d.ts +34 -0
  43. package/src/inputsGenerator/index.js +19 -0
  44. package/src/inputsGenerator/index.js.map +1 -0
  45. package/src/inputsGenerator/utils/dmmf.d.ts +20 -0
  46. package/src/inputsGenerator/utils/dmmf.js +113 -0
  47. package/src/inputsGenerator/utils/dmmf.js.map +1 -0
  48. package/src/inputsGenerator/utils/inputFields.d.ts +4 -0
  49. package/src/inputsGenerator/utils/inputFields.js +74 -0
  50. package/src/inputsGenerator/utils/inputFields.js.map +1 -0
  51. package/src/inputsGenerator/utils/parser.d.ts +5 -0
  52. package/src/inputsGenerator/utils/parser.js +23 -0
  53. package/src/inputsGenerator/utils/parser.js.map +1 -0
  54. package/src/inputsGenerator/utils/parts.d.ts +7 -0
  55. package/src/inputsGenerator/utils/parts.js +158 -0
  56. package/src/inputsGenerator/utils/parts.js.map +1 -0
  57. package/src/inputsGenerator/utils/templates.d.ts +8 -0
  58. package/src/inputsGenerator/utils/templates.js +60 -0
  59. package/src/inputsGenerator/utils/templates.js.map +1 -0
  60. package/src/utils/config.d.ts +85 -0
  61. package/src/utils/config.js +113 -0
  62. package/src/utils/config.js.map +1 -0
  63. package/src/utils/configUtils.d.ts +2 -0
  64. package/src/utils/configUtils.js +9 -0
  65. package/src/utils/configUtils.js.map +1 -0
  66. package/src/utils/filesystem.d.ts +7 -0
  67. package/src/utils/filesystem.js +38 -0
  68. package/src/utils/filesystem.js.map +1 -0
  69. package/src/utils/replacer.d.ts +4 -0
  70. package/src/utils/replacer.js +3 -0
  71. package/src/utils/replacer.js.map +1 -0
  72. package/src/utils/string.d.ts +4 -0
  73. package/src/utils/string.js +18 -0
  74. package/src/utils/string.js.map +1 -0
  75. package/src/utils/template.d.ts +3 -0
  76. package/src/utils/template.js +13 -0
  77. package/src/utils/template.js.map +1 -0
  78. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,7 @@
1
+ import { ConfigInternal } from '../../utils/config';
2
+ import type { DMMF } from '@prisma/generator-helper';
3
+ export declare const getEnums: (dmmf: DMMF.Document) => string;
4
+ export declare const getImports: (config: ConfigInternal, fileLocation: string) => string;
5
+ export declare const getScalars: ({ inputs: { excludeScalars } }: ConfigInternal, dmmf: DMMF.Document) => string;
6
+ export declare const getUtil: () => string;
7
+ export declare const getInputs: (config: ConfigInternal, dmmf: DMMF.Document) => string;
@@ -0,0 +1,158 @@
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 () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getInputs = exports.getUtil = exports.getScalars = exports.getImports = exports.getEnums = void 0;
37
+ const parts_1 = require("../../crudGenerator/utils/parts");
38
+ const template_1 = require("../../utils/template");
39
+ const dmmf_1 = require("./dmmf");
40
+ const inputFields_1 = require("./inputFields");
41
+ const T = __importStar(require("./templates"));
42
+ const getEnums = (dmmf) => {
43
+ return [
44
+ ...dmmf.schema.enumTypes.prisma,
45
+ ...dmmf.datamodel.enums.map((el) => ({ ...el, values: el.values.map(({ name }) => name) })),
46
+ ]
47
+ .map((el) => (0, template_1.useTemplate)(T.enumTemplate, { enumName: el.name, values: JSON.stringify(el.values) }))
48
+ .join('\n\n');
49
+ };
50
+ exports.getEnums = getEnums;
51
+ const getImports = (config, fileLocation) =>
52
+ // Add ts-nocheck command to get rid of "Excessive stack depth comparing types" error.
53
+ ['// @ts-nocheck', config.inputs.prismaImporter, (0, parts_1.getBuilderCalculatedImport)({ config, fileLocation })].join('\n');
54
+ exports.getImports = getImports;
55
+ const getScalars = ({ inputs: { excludeScalars } }, dmmf) => {
56
+ var _a;
57
+ const usedScalars = (0, dmmf_1.getUsedScalars)((_a = dmmf.schema.inputObjectTypes.prisma) !== null && _a !== void 0 ? _a : []);
58
+ return [
59
+ ...(usedScalars.hasDateTime && !(excludeScalars === null || excludeScalars === void 0 ? void 0 : excludeScalars.includes('DateTime')) ? [T.dateTimeScalar] : []),
60
+ ...(usedScalars.hasDecimal && !(excludeScalars === null || excludeScalars === void 0 ? void 0 : excludeScalars.includes('Decimal')) ? [T.decimalScalar] : []),
61
+ ...(usedScalars.hasBytes && !(excludeScalars === null || excludeScalars === void 0 ? void 0 : excludeScalars.includes('Bytes')) ? [T.bytesScalar] : []),
62
+ ...(usedScalars.hasJson && !(excludeScalars === null || excludeScalars === void 0 ? void 0 : excludeScalars.includes('Json')) ? [T.jsonScalar] : []),
63
+ ...(usedScalars.hasBigInt && !(excludeScalars === null || excludeScalars === void 0 ? void 0 : excludeScalars.includes('BigInt')) ? [T.bigIntScalar] : []),
64
+ ...(usedScalars.hasNEVER && !(excludeScalars === null || excludeScalars === void 0 ? void 0 : excludeScalars.includes('NEVER')) ? [T.neverScalar] : []),
65
+ ].join('\n\n');
66
+ };
67
+ exports.getScalars = getScalars;
68
+ const getUtil = () => `type Filters = {
69
+ string: Prisma.StringFieldUpdateOperationsInput;
70
+ nullableString: Prisma.NullableStringFieldUpdateOperationsInput;
71
+ dateTime: Prisma.DateTimeFieldUpdateOperationsInput;
72
+ nullableDateTime: Prisma.NullableDateTimeFieldUpdateOperationsInput;
73
+ int: Prisma.IntFieldUpdateOperationsInput;
74
+ nullableInt: Prisma.NullableIntFieldUpdateOperationsInput;
75
+ bool: Prisma.BoolFieldUpdateOperationsInput;
76
+ nullableBool: Prisma.NullableBoolFieldUpdateOperationsInput;
77
+ bigInt: Prisma.BigIntFieldUpdateOperationsInput;
78
+ nullableBigInt: Prisma.NullableBigIntFieldUpdateOperationsInput;
79
+ bytes: Prisma.BytesFieldUpdateOperationsInput;
80
+ nullableBytes: Prisma.NullableBytesFieldUpdateOperationsInput;
81
+ float: Prisma.FloatFieldUpdateOperationsInput;
82
+ nullableFloat: Prisma.NullableFloatFieldUpdateOperationsInput;
83
+ decimal: Prisma.DecimalFieldUpdateOperationsInput;
84
+ nullableDecimal: Prisma.NullableDecimalFieldUpdateOperationsInput;
85
+ };
86
+
87
+ type ApplyFilters<InputField> = {
88
+ [F in keyof Filters]: 0 extends 1 & Filters[F]
89
+ ? never
90
+ : Filters[F] extends InputField
91
+ ? Filters[F]
92
+ : never;
93
+ }[keyof Filters];
94
+
95
+ type PrismaUpdateOperationsInputFilter<T extends object> = {
96
+ [K in keyof T]: [ApplyFilters<T[K]>] extends [never] ? T[K] : ApplyFilters<T[K]>
97
+ };`;
98
+ exports.getUtil = getUtil;
99
+ const makeInputs = (config, dmmf, inputNames) => {
100
+ var _a;
101
+ return ((_a = dmmf.schema.inputObjectTypes.prisma) !== null && _a !== void 0 ? _a : [])
102
+ // Filter out irrelevant input types
103
+ .filter((input) => ['Filter', 'Compound', 'UpdateOperations'].some((allowedKeyword) => input.name.includes(allowedKeyword)) ||
104
+ Object.keys(inputNames).some((inputName) => input.name.startsWith(inputName)))
105
+ .map((input) => {
106
+ const model = Object.entries(inputNames).find(([inputName]) => input.name.startsWith(inputName));
107
+ return (0, template_1.useTemplate)(T.inputTemplate, {
108
+ inputName: input.name.replace('Unchecked', ''),
109
+ prismaInputName: input.name,
110
+ fields: (0, inputFields_1.getInputFieldsString)(input, model === null || model === void 0 ? void 0 : model[1], config).replaceAll('Unchecked', ''),
111
+ });
112
+ })
113
+ .join('\n\n');
114
+ };
115
+ const getInputs = (config, dmmf) => {
116
+ if (config.inputs.simple)
117
+ return makeInputs(config, dmmf,
118
+ // Map from possible input names to their related model
119
+ dmmf.datamodel.models.reduce((prev, curr) => {
120
+ return {
121
+ ...prev,
122
+ [`${curr.name}UncheckedCreateInput`]: curr,
123
+ [`${curr.name}CreateNestedManyWithout`]: curr,
124
+ [`${curr.name}UncheckedUpdateInput`]: curr,
125
+ [`${curr.name}UpdateManyMutationInput`]: curr,
126
+ [`${curr.name}UpdateManyWithout`]: curr,
127
+ [`${curr.name}OrderByWithRelationInput`]: curr,
128
+ [`${curr.name}OrderByRelationAggregateInput`]: curr,
129
+ [`${curr.name}Where`]: curr,
130
+ };
131
+ }, {}));
132
+ else
133
+ return makeInputs(config, dmmf,
134
+ // Map from possible input names to their related model
135
+ dmmf.datamodel.models.reduce((prev, curr) => {
136
+ return {
137
+ ...prev,
138
+ ...[
139
+ 'Where',
140
+ 'ScalarWhere',
141
+ 'Create',
142
+ 'Update',
143
+ 'Upsert',
144
+ 'OrderBy',
145
+ 'CountOrderBy',
146
+ 'MaxOrderBy',
147
+ 'MinOrderBy',
148
+ 'AvgOrderBy',
149
+ 'SumOrderBy',
150
+ ].reduce((prev, keyword) => ({
151
+ ...prev,
152
+ [`${curr.name}${keyword}`]: curr,
153
+ }), {}),
154
+ };
155
+ }, {}));
156
+ };
157
+ exports.getInputs = getInputs;
158
+ //# sourceMappingURL=parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.js","sourceRoot":"","sources":["../../../../src/inputsGenerator/utils/parts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare const enumTemplate = "export const #{enumName} = builder.enumType('#{enumName}', {\n values: #{values} as const,\n});";
2
+ export declare const inputTemplate = "export const #{inputName}Fields = (t: any) => ({\n #{fields}\n});\nexport const #{inputName} = builder.inputRef<PrismaUpdateOperationsInputFilter<Prisma.#{prismaInputName}>, false>('#{inputName}').implement({\n fields: #{inputName}Fields,\n});";
3
+ export declare const dateTimeScalar = "export const DateTime = builder.scalarType('DateTime', {\n parseValue: (value) => {\n try {\n const date = new Date(value)\n if (date.toString() === 'Invalid Date') throw new Error('Invalid Date')\n return date\n } catch (error) {\n throw new Error('Invalid Date');\n }\n },\n serialize: (value) => value ? new Date(value) : null,\n});";
4
+ export declare const decimalScalar = "export const Decimal = builder.scalarType('Decimal', {\n serialize: (value) => parseFloat(value),\n parseValue: (value) => {\n try {\n return new Prisma.Decimal(parseFloat(value));\n } catch (error) {\n throw new Error('Invalid Decimal');\n }\n },\n});";
5
+ export declare const bytesScalar = "export const Bytes = builder.scalarType('Bytes', {\n serialize: (value) => value,\n parseValue: (value) => {\n if (Array.isArray(value)) return Buffer.from(value);\n if (typeof value === 'string') return Buffer.from(value, 'utf8');\n throw new Error('Bytes must be string or array');\n },\n});";
6
+ export declare const jsonScalar = "export const Json = builder.scalarType('Json', {\n serialize: (value) => value,\n});";
7
+ export declare const bigIntScalar = "export const Bigint = builder.scalarType('BigInt', {\n serialize: (value) => value.toString(),\n parseValue: (value) => {\n try {\n return BigInt(value);\n } catch (error) {\n throw new Error('Invalid Bigint');\n } \n },\n});";
8
+ export declare const neverScalar = "export const NEVER = builder.scalarType('NEVER', {\n serialize: (value) => value,\n description: 'Never fill this, its created for inputs that dont have fields',\n});";
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.neverScalar = exports.bigIntScalar = exports.jsonScalar = exports.bytesScalar = exports.decimalScalar = exports.dateTimeScalar = exports.inputTemplate = exports.enumTemplate = void 0;
4
+ exports.enumTemplate = `export const #{enumName} = builder.enumType('#{enumName}', {
5
+ values: #{values} as const,
6
+ });`;
7
+ exports.inputTemplate = `export const #{inputName}Fields = (t: any) => ({
8
+ #{fields}
9
+ });
10
+ export const #{inputName} = builder.inputRef<PrismaUpdateOperationsInputFilter<Prisma.#{prismaInputName}>, false>('#{inputName}').implement({
11
+ fields: #{inputName}Fields,
12
+ });`;
13
+ exports.dateTimeScalar = `export const DateTime = builder.scalarType('DateTime', {
14
+ parseValue: (value) => {
15
+ try {
16
+ const date = new Date(value)
17
+ if (date.toString() === 'Invalid Date') throw new Error('Invalid Date')
18
+ return date
19
+ } catch (error) {
20
+ throw new Error('Invalid Date');
21
+ }
22
+ },
23
+ serialize: (value) => value ? new Date(value) : null,
24
+ });`;
25
+ exports.decimalScalar = `export const Decimal = builder.scalarType('Decimal', {
26
+ serialize: (value) => parseFloat(value),
27
+ parseValue: (value) => {
28
+ try {
29
+ return new Prisma.Decimal(parseFloat(value));
30
+ } catch (error) {
31
+ throw new Error('Invalid Decimal');
32
+ }
33
+ },
34
+ });`;
35
+ exports.bytesScalar = `export const Bytes = builder.scalarType('Bytes', {
36
+ serialize: (value) => value,
37
+ parseValue: (value) => {
38
+ if (Array.isArray(value)) return Buffer.from(value);
39
+ if (typeof value === 'string') return Buffer.from(value, 'utf8');
40
+ throw new Error('Bytes must be string or array');
41
+ },
42
+ });`;
43
+ exports.jsonScalar = `export const Json = builder.scalarType('Json', {
44
+ serialize: (value) => value,
45
+ });`;
46
+ exports.bigIntScalar = `export const Bigint = builder.scalarType('BigInt', {
47
+ serialize: (value) => value.toString(),
48
+ parseValue: (value) => {
49
+ try {
50
+ return BigInt(value);
51
+ } catch (error) {
52
+ throw new Error('Invalid Bigint');
53
+ }
54
+ },
55
+ });`;
56
+ exports.neverScalar = `export const NEVER = builder.scalarType('NEVER', {
57
+ serialize: (value) => value,
58
+ description: 'Never fill this, its created for inputs that dont have fields',
59
+ });`;
60
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../../src/inputsGenerator/utils/templates.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;;IAExB,CAAA;AAES,QAAA,aAAa,GAAG;;;;;IAKzB,CAAA;AAES,QAAA,cAAc,GAAG;;;;;;;;;;;IAW1B,CAAA;AAES,QAAA,aAAa,GAAG;;;;;;;;;IASzB,CAAA;AAES,QAAA,WAAW,GAAG;;;;;;;IAOvB,CAAA;AAES,QAAA,UAAU,GAAG;;IAEtB,CAAA;AAES,QAAA,YAAY,GAAG;;;;;;;;;IASxB,CAAA;AAES,QAAA,WAAW,GAAG;;;IAGvB,CAAA"}
@@ -0,0 +1,85 @@
1
+ import { ExtendedGeneratorOptions } from '../generator';
2
+ import { Replacer } from './replacer';
3
+ import type { DMMF } from '@prisma/generator-helper';
4
+ /** Interface used to configure generator behavior */
5
+ export interface Config {
6
+ /** Input type generation config */
7
+ inputs?: {
8
+ /** Create simpler inputs for easier customization and ~65% less generated code. Default: `false` */
9
+ simple?: boolean;
10
+ /** How to import the Prisma namespace. Default: `"import { Prisma } from '.prisma/client';"` */
11
+ prismaImporter?: string;
12
+ /** Path to generate the inputs file to from project root. Default: `'./generated/inputs.ts'` */
13
+ outputFilePath?: string;
14
+ /** List of excluded scalars from generated output */
15
+ excludeScalars?: string[];
16
+ /** A function to replace generated source. Combined with global replacer config */
17
+ replacer?: Replacer<'inputs'>;
18
+ /** Map all Prisma fields with "@id" attribute to Graphql "ID" Scalar.
19
+ *
20
+ * ATTENTION: Mapping non String requires a conversion inside resolver, once GraphQl ID Input are coerced to String by definition. Default: false */
21
+ mapIdFieldsToGraphqlId?: false | 'WhereUniqueInputs';
22
+ };
23
+ /** CRUD generation config */
24
+ crud?: {
25
+ /** Disable generaton of crud. Default: `false` */
26
+ disabled?: boolean;
27
+ /** How to import the inputs. Default `"import * as Inputs from '../inputs';"` */
28
+ inputsImporter?: string;
29
+ /** How to import the Prisma namespace at the objects.ts file. Default `"import { Prisma } from '.prisma/client';"`. Please use "resolverImports" to import prismaClient at resolvers. */
30
+ prismaImporter?: string;
31
+ /** How to call the prisma client. Default `'_context.prisma'` */
32
+ prismaCaller?: string;
33
+ /** Any additional imports you might want to add to the resolvers (e.g. your prisma client). Default: `''` */
34
+ resolverImports?: string;
35
+ /** Directory to generate crud code into from project root. Default: `'./generated'` */
36
+ outputDir?: string;
37
+ /** A function to replace generated source. Combined with global replacer config */
38
+ replacer?: Replacer<'crud'>;
39
+ /** A boolean to enable/disable generation of `autocrud.ts` which can be imported in schema root to auto generate all crud objects, queries and mutations. Default: `true` */
40
+ generateAutocrud?: boolean;
41
+ /** An array of parts of resolver names to be excluded from generation. Ie: ["User"] Default: [] */
42
+ excludeResolversContain?: string[];
43
+ /** An array of resolver names to be excluded from generation. Ie: ["upsertOneComment"] Default: [] */
44
+ excludeResolversExact?: string[];
45
+ /** An array of parts of resolver names to be included from generation (to bypass exclude contain). Ie: if exclude ["User"], include ["UserReputation"] Default: [] */
46
+ includeResolversContain?: string[];
47
+ /** An array of resolver names to be included from generation (to bypass exclude contain). Ie: if exclude ["User"], include ["UserReputation"] Default: [] */
48
+ includeResolversExact?: string[];
49
+ /** Caution: This delete the whole folder (Only use if the folder only has auto generated contents). A boolean to delete output dir before generate. Default: False */
50
+ deleteOutputDirBeforeGenerate?: boolean;
51
+ /** Export all crud queries/mutations/objects in objects.ts at root dir. Default: true */
52
+ exportEverythingInObjectsDotTs?: boolean;
53
+ /** Map all Prisma fields with "@id" attribute to Graphql "ID" Scalar. Default: 'Objects' */
54
+ mapIdFieldsToGraphqlId?: false | 'Objects';
55
+ /** Change the generated variables from object.base.ts from something like `UserName` to `User_Name`. This avoids generated duplicated names in some cases. See [issue #58](https://github.com/Cauen/prisma-generator-pothos-codegen/issues/58). Default: False */
56
+ underscoreBetweenObjectVariableNames?: false | 'Objects';
57
+ };
58
+ /** Global config */
59
+ global?: {
60
+ /** A function to replace generated source */
61
+ replacer?: Replacer;
62
+ /** Run function before generate */
63
+ beforeGenerate?: (dmmf: DMMF.Document) => void;
64
+ /** Run function after generate */
65
+ afterGenerate?: (dmmf: DMMF.Document) => void;
66
+ /** Location of builder. Default: './builder', */
67
+ builderLocation?: string;
68
+ };
69
+ }
70
+ /** Type representing a configuration filled with default values where the original config was missing them, for internal purposes */
71
+ export type ConfigInternal = {
72
+ inputs: NonNullable<Required<Config['inputs']>>;
73
+ crud: NonNullable<Required<Config['crud']>>;
74
+ global: NonNullable<Required<Config['global']>>;
75
+ };
76
+ /** Parses the configuration file path */
77
+ export declare const getConfigPath: ({ generatorConfigPath, schemaPath, }: {
78
+ generatorConfigPath?: string;
79
+ schemaPath: string;
80
+ }) => string | undefined;
81
+ /** Parses the configuration file based on the provided schema and config paths */
82
+ export declare const parseConfig: (configPath: string) => Promise<Config>;
83
+ export declare const getDefaultConfig: (global?: Config['global']) => ConfigInternal;
84
+ /** Receives the config path from generator options, loads the config from file, fills out the default values, and returns it */
85
+ export declare const getConfig: (extendedGeneratorOptions: ExtendedGeneratorOptions) => Promise<ConfigInternal>;
@@ -0,0 +1,113 @@
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 () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.getConfig = exports.getDefaultConfig = exports.parseConfig = exports.getConfigPath = void 0;
40
+ const node_path_1 = __importDefault(require("node:path"));
41
+ /** Parses the configuration file path */
42
+ const getConfigPath = ({ generatorConfigPath, schemaPath, }) => {
43
+ const envConfigPath = process.env.POTHOS_CRUD_CONFIG_PATH;
44
+ const configPath = envConfigPath || generatorConfigPath; // use env var if set
45
+ if (!configPath)
46
+ return undefined;
47
+ const schemaDirName = node_path_1.default.dirname(schemaPath);
48
+ const optionsPath = node_path_1.default.join(schemaDirName, configPath);
49
+ return optionsPath;
50
+ };
51
+ exports.getConfigPath = getConfigPath;
52
+ /** Parses the configuration file based on the provided schema and config paths */
53
+ const parseConfig = async (configPath) => {
54
+ const importedFile = await Promise.resolve(`${configPath}`).then(s => __importStar(require(s))); // throw error if dont exist
55
+ const { crud, global, inputs } = importedFile || {};
56
+ return { crud, global, inputs };
57
+ };
58
+ exports.parseConfig = parseConfig;
59
+ const getDefaultConfig = () => ({
60
+ inputs: {
61
+ simple: false,
62
+ prismaImporter: `import { Prisma } from '.prisma/client';`,
63
+ outputFilePath: './generated/inputs.ts',
64
+ excludeScalars: [],
65
+ replacer: (str) => str,
66
+ mapIdFieldsToGraphqlId: false,
67
+ },
68
+ crud: {
69
+ disabled: false,
70
+ inputsImporter: `import * as Inputs from '../inputs';`,
71
+ prismaImporter: `import { Prisma } from '.prisma/client';`,
72
+ prismaCaller: '_context.prisma',
73
+ resolverImports: '',
74
+ outputDir: './generated',
75
+ replacer: (str) => str,
76
+ generateAutocrud: true,
77
+ excludeResolversContain: [],
78
+ excludeResolversExact: [],
79
+ includeResolversContain: [],
80
+ includeResolversExact: [],
81
+ deleteOutputDirBeforeGenerate: false,
82
+ exportEverythingInObjectsDotTs: true,
83
+ mapIdFieldsToGraphqlId: 'Objects',
84
+ underscoreBetweenObjectVariableNames: false,
85
+ },
86
+ global: {
87
+ replacer: (str) => str,
88
+ builderLocation: './builder',
89
+ beforeGenerate: () => {
90
+ // noop
91
+ },
92
+ afterGenerate: () => {
93
+ // noop
94
+ },
95
+ },
96
+ });
97
+ exports.getDefaultConfig = getDefaultConfig;
98
+ /** Receives the config path from generator options, loads the config from file, fills out the default values, and returns it */
99
+ const getConfig = async (extendedGeneratorOptions) => {
100
+ const { generatorConfigPath, schemaPath } = extendedGeneratorOptions;
101
+ const configPath = (0, exports.getConfigPath)({ generatorConfigPath, schemaPath });
102
+ if (!configPath)
103
+ return (0, exports.getDefaultConfig)();
104
+ const { inputs, crud, global } = await (0, exports.parseConfig)(configPath);
105
+ const defaultConfig = (0, exports.getDefaultConfig)(global);
106
+ return {
107
+ inputs: { ...defaultConfig.inputs, ...inputs },
108
+ crud: { ...defaultConfig.crud, ...crud },
109
+ global: { ...defaultConfig.global, ...global },
110
+ };
111
+ };
112
+ exports.getConfig = getConfig;
113
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { ConfigInternal } from './config';
2
+ export declare function getConfigCrudUnderscore(config: ConfigInternal): "" | "_";
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getConfigCrudUnderscore = getConfigCrudUnderscore;
4
+ function getConfigCrudUnderscore(config) {
5
+ if (config.crud.underscoreBetweenObjectVariableNames)
6
+ return '_';
7
+ return '';
8
+ }
9
+ //# sourceMappingURL=configUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configUtils.js","sourceRoot":"","sources":["../../../src/utils/configUtils.ts"],"names":[],"mappings":";;AAEA,0DAGC;AAHD,SAAgB,uBAAuB,CAAC,MAAsB;IAC5D,IAAI,MAAM,CAAC,IAAI,CAAC,oCAAoC;QAAE,OAAO,GAAG,CAAA;IAChE,OAAO,EAAE,CAAA;AACX,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { PathLike } from 'node:fs';
2
+ import { ConfigInternal } from './config';
3
+ import { ReplacerSection } from './replacer';
4
+ export declare const debugLog: (value: string, timestamp?: boolean) => Promise<void>;
5
+ export declare const deleteFolder: (path: PathLike) => Promise<void>;
6
+ /** Replace content before writing to file using the replacers set in the config file */
7
+ export declare const writeFile: (config: ConfigInternal, section: ReplacerSection, content: string, location: string) => Promise<void>;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.writeFile = exports.deleteFolder = exports.debugLog = void 0;
7
+ const promises_1 = __importDefault(require("node:fs/promises"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const env_1 = require("../env");
10
+ const debugLog = async (value, timestamp = true) => {
11
+ if (!env_1.env.isTesting)
12
+ return;
13
+ await promises_1.default.appendFile('log.txt', `${timestamp ? `${new Date().toISOString()}: ` : ''}${JSON.stringify(value)},\n`);
14
+ };
15
+ exports.debugLog = debugLog;
16
+ const deleteFolder = (path) => {
17
+ return promises_1.default.rm(path, { recursive: true, force: true });
18
+ };
19
+ exports.deleteFolder = deleteFolder;
20
+ /** Replace content before writing to file using the replacers set in the config file */
21
+ const writeFile = async (config, section, content, location) => {
22
+ await (0, exports.debugLog)(`Writing to ${location}`);
23
+ const replace = (str) => [
24
+ config.global.replacer,
25
+ ...(section === 'inputs' ? [config.inputs.replacer] : []),
26
+ ...((section === null || section === void 0 ? void 0 : section.includes('crud')) ? [config.crud.replacer] : []),
27
+ ].reduce((el, replacer) => replacer(el, section), str);
28
+ try {
29
+ const dir = node_path_1.default.dirname(location);
30
+ await promises_1.default.mkdir(dir, { recursive: true });
31
+ await promises_1.default.writeFile(location, replace(content), { flag: 'w' });
32
+ }
33
+ catch (err) {
34
+ await (0, exports.debugLog)(JSON.stringify(err));
35
+ }
36
+ };
37
+ exports.writeFile = writeFile;
38
+ //# sourceMappingURL=filesystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../../src/utils/filesystem.ts"],"names":[],"mappings":";;;;;;AACA,gEAAiC;AACjC,0DAA4B;AAC5B,gCAA4B;AAIrB,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAa,EAAE,SAAS,GAAG,IAAI,EAAE,EAAE;IAChE,IAAI,CAAC,SAAG,CAAC,SAAS;QAAE,OAAM;IAC1B,MAAM,kBAAE,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAClH,CAAC,CAAA;AAHY,QAAA,QAAQ,YAGpB;AAEM,MAAM,YAAY,GAAG,CAAC,IAAc,EAAE,EAAE;IAC7C,OAAO,kBAAE,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AACtD,CAAC,CAAA;AAFY,QAAA,YAAY,gBAExB;AAED,wFAAwF;AACjF,MAAM,SAAS,GAAG,KAAK,EAC5B,MAAsB,EACtB,OAAwB,EACxB,OAAe,EACf,QAAgB,EACD,EAAE;IACjB,MAAM,IAAA,gBAAQ,EAAC,cAAc,QAAQ,EAAE,CAAC,CAAA;IAExC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAU,EAAE,CACtC;QACE,MAAM,CAAC,MAAM,CAAC,QAAQ;QACtB,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAA+B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,GAAG,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAA+B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACpF,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,CAAA;IAExD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,mBAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAClC,MAAM,kBAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACxC,MAAM,kBAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;IAC/D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAA,gBAAQ,EAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;IACrC,CAAC;AACH,CAAC,CAAA;AAtBY,QAAA,SAAS,aAsBrB"}
@@ -0,0 +1,4 @@
1
+ export type ReplacerSection = 'crud.model.object' | 'crud.model.index' | 'crud.model.resolver' | 'crud.model.resolverIndex' | 'crud.objects' | 'crud.utils' | 'crud.autocrud' | 'inputs' | 'debug.log' | 'debug.dmmf';
2
+ export type Replacer<T extends string = ''> = (generated: string, section: keyof {
3
+ [S in ReplacerSection as S extends `${T}${infer _}` ? S : never]: never;
4
+ }) => string;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=replacer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replacer.js","sourceRoot":"","sources":["../../../src/utils/replacer.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export declare const firstLetterUpperCase: (s: string) => string;
2
+ export declare const firstLetterLowerCase: (s: string) => string;
3
+ export declare const getCompositeName: (fields: readonly string[]) => string;
4
+ export declare const escapeQuotesAndMultilineSupport: (input: string | undefined) => string | undefined;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.escapeQuotesAndMultilineSupport = exports.getCompositeName = exports.firstLetterLowerCase = exports.firstLetterUpperCase = void 0;
4
+ const firstLetterUpperCase = (s) => { var _a; return ((_a = s[0]) === null || _a === void 0 ? void 0 : _a.toUpperCase()) + s.slice(1); };
5
+ exports.firstLetterUpperCase = firstLetterUpperCase;
6
+ const firstLetterLowerCase = (s) => { var _a; return ((_a = s[0]) === null || _a === void 0 ? void 0 : _a.toLowerCase()) + s.slice(1); };
7
+ exports.firstLetterLowerCase = firstLetterLowerCase;
8
+ const getCompositeName = (fields) => fields.map((f) => f).join('_');
9
+ exports.getCompositeName = getCompositeName;
10
+ const escapeQuotesAndMultilineSupport = (input) => {
11
+ if (!input)
12
+ return undefined;
13
+ const withScapedQuotes = input.replace(/['"`´]/g, '\\$&');
14
+ const isMultiline = withScapedQuotes.includes('\n');
15
+ return isMultiline ? `\`${withScapedQuotes}\`` : `'${withScapedQuotes}'`;
16
+ };
17
+ exports.escapeQuotesAndMultilineSupport = escapeQuotesAndMultilineSupport;
18
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../../src/utils/string.ts"],"names":[],"mappings":";;;AAAO,MAAM,oBAAoB,GAAG,CAAC,CAAS,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,CAAC,CAAC,0CAAE,WAAW,EAAE,IAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,EAAA,CAAA;AAAtE,QAAA,oBAAoB,wBAAkD;AAE5E,MAAM,oBAAoB,GAAG,CAAC,CAAS,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,CAAC,CAAC,0CAAE,WAAW,EAAE,IAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,EAAA,CAAA;AAAtE,QAAA,oBAAoB,wBAAkD;AAE5E,MAAM,gBAAgB,GAAG,CAAC,MAAyB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAAhF,QAAA,gBAAgB,oBAAgE;AAEtF,MAAM,+BAA+B,GAAG,CAAC,KAAyB,EAAsB,EAAE;IAC/F,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAA;IAC5B,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IACzD,MAAM,WAAW,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACnD,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,gBAAgB,IAAI,CAAC,CAAC,CAAC,IAAI,gBAAgB,GAAG,CAAA;AAC1E,CAAC,CAAA;AALY,QAAA,+BAA+B,mCAK3C"}
@@ -0,0 +1,3 @@
1
+ type Variables<T extends string> = T extends `${infer _}#{${infer VarName}}${infer Tail}` ? VarName | Variables<Tail> : never;
2
+ export declare const useTemplate: <T extends string, S extends Variables<T> | null = null>(template: T, variables: Omit<{ [V in Variables<T>]: string; }, S extends null ? "" : S>, skip?: S[]) => string;
3
+ export {};
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useTemplate = void 0;
4
+ const useTemplate = (template, variables, skip) => {
5
+ let newTemplate = template;
6
+ Object.entries(variables).forEach(([name, value]) => {
7
+ if (!(skip === null || skip === void 0 ? void 0 : skip.includes(name)))
8
+ newTemplate = newTemplate.replace(new RegExp(`#{${name}}`, 'g'), value);
9
+ });
10
+ return newTemplate;
11
+ };
12
+ exports.useTemplate = useTemplate;
13
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/utils/template.ts"],"names":[],"mappings":";;;AAIO,MAAM,WAAW,GAAG,CACzB,QAAW,EACX,SAAyE,EACzE,IAAU,EACF,EAAE;IACV,IAAI,WAAW,GAAW,QAAQ,CAAA;IAClC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;QAClD,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,IAAS,CAAC,CAAA;YAAE,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE,KAAe,CAAC,CAAA;IACnH,CAAC,CAAC,CAAA;IACF,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAVY,QAAA,WAAW,eAUvB"}