prisma-nestjs-graphql 19.1.0 → 19.3.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.
package/README.md CHANGED
@@ -70,6 +70,12 @@ Path to `tsconfig.json` (absolute path or relative to current working directory)
70
70
  Type: `string | undefined`
71
71
  Default: `tsconfig.json` if exists, `undefined` otherwise
72
72
 
73
+ #### `prismaClientImport`
74
+
75
+ The path to use to import the Prisma Client package
76
+ Type: `string | undefined`
77
+ Default: `@prisma/client`
78
+
73
79
  #### `combineScalarFilters`
74
80
 
75
81
  Combine nested/nullable scalar filters to single
@@ -117,16 +123,19 @@ Type: `boolean`
117
123
  Default: `false`
118
124
 
119
125
  #### `emitBlocks`
126
+
120
127
  Emit only selected blocks. Be aware, that some blocks do depend on others, e.g. one can't emit `models` without emitting `enums`.
121
128
  Type: `("args" | "inputs" | "outputs" | "models" | "enums")[]`
122
129
  Default: `["args", "inputs", "outputs", "models", "enums"]`
123
130
 
124
131
  #### `omitModelsCount`
132
+
125
133
  Omit `_count` field from models.
126
134
  Type: `boolean`
127
135
  Default: `false`
128
136
 
129
137
  #### `purgeOutput`
138
+
130
139
  Delete all files in `output` folder.
131
140
  Type: `boolean`
132
141
  Default: `false`
@@ -145,6 +154,13 @@ Type: `boolean`
145
154
  Default: `false`
146
155
  **Note**: It will break compatiblity between Prisma types and generated classes.
147
156
 
157
+ #### `unsafeCompatibleWhereUniqueInput`
158
+
159
+ Set TypeScript property type as non optional for all fields in `*WhereUniqueInput` classes.
160
+ See [#177](https://github.com/unlight/prisma-nestjs-graphql/issues/177) for more details.
161
+ Type: `boolean`
162
+ Default: `false`
163
+
148
164
  #### `useInputType`
149
165
 
150
166
  Since GraphQL does not support input union type, this setting map
package/generate.cjs CHANGED
@@ -1,7 +1,5 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var assert = require('assert');
6
4
  var AwaitEventEmitter = require('await-event-emitter');
7
5
  var lodash = require('lodash');
@@ -15,16 +13,6 @@ var filenamify = require('filenamify');
15
13
  var flat = require('flat');
16
14
  var pluralize = require('pluralize');
17
15
 
18
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
19
-
20
- var AwaitEventEmitter__default = /*#__PURE__*/_interopDefaultLegacy(AwaitEventEmitter);
21
- var JSON5__default = /*#__PURE__*/_interopDefaultLegacy(JSON5);
22
- var pupa__default = /*#__PURE__*/_interopDefaultLegacy(pupa);
23
- var getRelativePath__default = /*#__PURE__*/_interopDefaultLegacy(getRelativePath);
24
- var outmatch__default = /*#__PURE__*/_interopDefaultLegacy(outmatch);
25
- var filenamify__default = /*#__PURE__*/_interopDefaultLegacy(filenamify);
26
- var pluralize__default = /*#__PURE__*/_interopDefaultLegacy(pluralize);
27
-
28
16
  function pascalCase(string) {
29
17
  return lodash.startCase(lodash.camelCase(string)).replaceAll(" ", "");
30
18
  }
@@ -86,9 +74,11 @@ function argsType(field, args) {
86
74
  });
87
75
  }
88
76
 
77
+ const BeforeGenerateField = "BeforeGenerateField";
78
+
89
79
  function combineScalarFilters(eventEmitter) {
90
80
  eventEmitter.on("BeforeInputType", beforeInputType$2);
91
- eventEmitter.on("BeforeGenerateField", beforeGenerateField);
81
+ eventEmitter.on(BeforeGenerateField, beforeGenerateField);
92
82
  eventEmitter.on("PostBegin", postBegin);
93
83
  }
94
84
  function beforeInputType$2(args) {
@@ -393,7 +383,7 @@ function relativePath(from, to) {
393
383
  if (!to.startsWith("/")) {
394
384
  to = `/${to}`;
395
385
  }
396
- let result = getRelativePath__default["default"](from, to);
386
+ let result = getRelativePath(from, to);
397
387
  if (!result.startsWith(".")) {
398
388
  result = `./${result}`;
399
389
  }
@@ -478,7 +468,7 @@ function getGraphqlInputType(inputTypes, pattern) {
478
468
  if (pattern) {
479
469
  if (pattern.startsWith("matcher:") || pattern.startsWith("match:")) {
480
470
  const { 1: patternValue } = pattern.split(":", 2);
481
- const isMatch = outmatch__default["default"](patternValue, { separator: false });
471
+ const isMatch = outmatch(patternValue, { separator: false });
482
472
  result = inputTypes.find((x) => isMatch(String(x.type)));
483
473
  if (result) {
484
474
  return result;
@@ -571,7 +561,7 @@ function getWhereUniqueAtLeastKeys(model) {
571
561
  for (const uniqueIndex of model.uniqueIndexes) {
572
562
  names.push(createFieldName(uniqueIndex));
573
563
  }
574
- return names.map((name) => `'${name}'`).join(" | ");
564
+ return names;
575
565
  }
576
566
  function createFieldName(args) {
577
567
  const { name, fields } = args;
@@ -651,9 +641,10 @@ function inputType(args) {
651
641
  const useInputType = config.useInputType.find(
652
642
  (x) => inputType2.name.includes(x.typeName)
653
643
  );
644
+ const isWhereUnique = isWhereUniqueInputType(inputType2.name);
654
645
  for (const field of inputType2.fields) {
655
646
  field.inputTypes = field.inputTypes.filter((t) => !removeTypes.has(String(t.type)));
656
- eventEmitter.emitSync("BeforeGenerateField", field, args);
647
+ eventEmitter.emitSync(BeforeGenerateField, field, args);
657
648
  const { inputTypes, isRequired, name } = field;
658
649
  if (inputTypes.length === 0) {
659
650
  continue;
@@ -669,16 +660,22 @@ function inputType(args) {
669
660
  });
670
661
  const modelField = model == null ? void 0 : model.fields.find((f) => f.name === name);
671
662
  const isCustomsApplicable = typeName === (modelField == null ? void 0 : modelField.type);
672
- const whereUniqueInputType = isWhereUniqueInputType(typeName) && model && `Prisma.AtLeast<${typeName}, ${getWhereUniqueAtLeastKeys(model)}>`;
663
+ const atLeastKeys = model && getWhereUniqueAtLeastKeys(model);
664
+ const whereUniqueInputType = isWhereUniqueInputType(typeName) && atLeastKeys && `Prisma.AtLeast<${typeName}, ${atLeastKeys.map((name2) => `'${name2}'`).join(" | ")}>`;
673
665
  const propertyType = lodash.castArray(
674
666
  (propertySettings == null ? void 0 : propertySettings.name) || whereUniqueInputType || getPropertyType({
675
667
  location,
676
668
  type: typeName
677
669
  })
678
670
  );
671
+ const hasExclamationToken = Boolean(
672
+ isWhereUnique && config.unsafeCompatibleWhereUniqueInput && (atLeastKeys == null ? void 0 : atLeastKeys.includes(name))
673
+ );
679
674
  const property = propertyStructure({
680
675
  name,
681
676
  isNullable: !isRequired,
677
+ hasExclamationToken: hasExclamationToken || void 0,
678
+ hasQuestionToken: hasExclamationToken ? false : void 0,
682
679
  propertyType,
683
680
  isList
684
681
  });
@@ -686,16 +683,16 @@ function inputType(args) {
686
683
  if (propertySettings) {
687
684
  importDeclarations.create({ ...propertySettings });
688
685
  } else if (propertyType.includes("Decimal")) {
689
- importDeclarations.add("Decimal", "@prisma/client/runtime/library");
686
+ importDeclarations.add("Decimal", `${config.prismaClientImport}/runtime/library`);
690
687
  } else if (propertyType.some((p) => p.startsWith("Prisma."))) {
691
- importDeclarations.add("Prisma", "@prisma/client");
688
+ importDeclarations.add("Prisma", config.prismaClientImport);
692
689
  }
693
690
  let graphqlType;
694
691
  const shouldHideField = (settings == null ? void 0 : settings.shouldHideField({
695
692
  name: inputType2.name,
696
693
  input: true
697
694
  })) || config.decorate.some(
698
- (d) => d.name === "HideField" && d.from === "@nestjs/graphql" && d.isMatchField(name) && d.isMatchType(inputType2.name)
695
+ (d) => d.name === "HideField" && d.from === moduleSpecifier && d.isMatchField(name) && d.isMatchType(inputType2.name)
699
696
  );
700
697
  const fieldType = settings == null ? void 0 : settings.getFieldType({
701
698
  name: inputType2.name,
@@ -726,14 +723,14 @@ function inputType(args) {
726
723
  }
727
724
  assert.ok(property.decorators, "property.decorators is undefined");
728
725
  if (shouldHideField) {
729
- importDeclarations.add("HideField", "@nestjs/graphql");
726
+ importDeclarations.add("HideField", moduleSpecifier);
730
727
  property.decorators.push({ name: "HideField", arguments: [] });
731
728
  } else {
732
729
  property.decorators.push({
733
730
  name: "Field",
734
731
  arguments: [
735
732
  isList ? `() => [${graphqlType}]` : `() => ${graphqlType}`,
736
- JSON5__default["default"].stringify({
733
+ JSON5.stringify({
737
734
  ...settings == null ? void 0 : settings.fieldArguments(),
738
735
  nullable: !isRequired
739
736
  })
@@ -789,7 +786,7 @@ function inputType(args) {
789
786
  if (decorate.isMatchField(name) && decorate.isMatchType(inputType2.name)) {
790
787
  property.decorators.push({
791
788
  name: decorate.name,
792
- arguments: (_d = decorate.arguments) == null ? void 0 : _d.map((x) => pupa__default["default"](x, { propertyType }))
789
+ arguments: (_d = decorate.arguments) == null ? void 0 : _d.map((x) => pupa(x, { propertyType }))
793
790
  });
794
791
  importDeclarations.create(decorate);
795
792
  }
@@ -869,7 +866,7 @@ class ObjectSettings extends Array {
869
866
  resultArguments.unshift(name);
870
867
  }
871
868
  }
872
- return resultArguments.map((x) => JSON5__default["default"].stringify(x));
869
+ return resultArguments.map((x) => JSON5.stringify(x));
873
870
  }
874
871
  fieldArguments() {
875
872
  const item = this.find((item2) => item2.kind === "Field");
@@ -974,7 +971,7 @@ function createSettingElement({
974
971
  name,
975
972
  namespace: false,
976
973
  kind: "Decorator",
977
- arguments: Array.isArray(options2.arguments) ? options2.arguments.map((s) => JSON5__default["default"].stringify(s)) : options2.arguments
974
+ arguments: Array.isArray(options2.arguments) ? options2.arguments.map((s) => JSON5.stringify(s)) : options2.arguments
978
975
  });
979
976
  return result;
980
977
  }
@@ -1001,7 +998,7 @@ function customType(args) {
1001
998
  result.namespaceImport = namespace;
1002
999
  }
1003
1000
  if (typeof options.match === "string" || Array.isArray(options.match)) {
1004
- result.match = outmatch__default["default"](options.match, { separator: false });
1001
+ result.match = outmatch(options.match, { separator: false });
1005
1002
  }
1006
1003
  return result;
1007
1004
  }
@@ -1024,7 +1021,7 @@ function hideFieldDecorator(match) {
1024
1021
  result.output = Boolean(options.output);
1025
1022
  result.input = Boolean(options.input);
1026
1023
  if (typeof options.match === "string" || Array.isArray(options.match)) {
1027
- result.match = outmatch__default["default"](options.match, { separator: false });
1024
+ result.match = outmatch(options.match, { separator: false });
1028
1025
  }
1029
1026
  } else {
1030
1027
  if (/output:\s*true/.test(match.groups.args)) {
@@ -1038,10 +1035,10 @@ function hideFieldDecorator(match) {
1038
1035
  }
1039
1036
  function parseArgs(string) {
1040
1037
  try {
1041
- return JSON5__default["default"].parse(string);
1038
+ return JSON5.parse(string);
1042
1039
  } catch {
1043
1040
  try {
1044
- return JSON5__default["default"].parse(`[${string}]`);
1041
+ return JSON5.parse(`[${string}]`);
1045
1042
  } catch {
1046
1043
  throw new Error(`Failed to parse: ${string}`);
1047
1044
  }
@@ -1223,7 +1220,7 @@ function modelOutputType(outputType, args) {
1223
1220
  if (propertySettings) {
1224
1221
  importDeclarations.create({ ...propertySettings });
1225
1222
  } else if (propertyType.includes("Decimal")) {
1226
- importDeclarations.add("Decimal", "@prisma/client/runtime/library");
1223
+ importDeclarations.add("Decimal", `${config.prismaClientImport}/runtime/library`);
1227
1224
  }
1228
1225
  assert.ok(property.decorators, "property.decorators is undefined");
1229
1226
  const shouldHideField = (settings == null ? void 0 : settings.shouldHideField({ name: outputType.name, output: true })) || config.decorate.some(
@@ -1237,7 +1234,7 @@ function modelOutputType(outputType, args) {
1237
1234
  name: "Field",
1238
1235
  arguments: [
1239
1236
  isList ? `() => [${graphqlType}]` : `() => ${graphqlType}`,
1240
- JSON5__default["default"].stringify({
1237
+ JSON5.stringify({
1241
1238
  ...settings == null ? void 0 : settings.fieldArguments(),
1242
1239
  nullable: Boolean(field.isNullable),
1243
1240
  defaultValue: ["number", "string", "boolean"].includes(
@@ -1261,7 +1258,7 @@ function modelOutputType(outputType, args) {
1261
1258
  if (decorate.isMatchField(field.name) && decorate.isMatchType(outputTypeName)) {
1262
1259
  property.decorators.push({
1263
1260
  name: decorate.name,
1264
- arguments: (_f = decorate.arguments) == null ? void 0 : _f.map((x) => pupa__default["default"](x, { propertyType }))
1261
+ arguments: (_f = decorate.arguments) == null ? void 0 : _f.map((x) => pupa(x, { propertyType }))
1265
1262
  });
1266
1263
  importDeclarations.create(decorate);
1267
1264
  }
@@ -1406,7 +1403,7 @@ function outputType(outputType2, args) {
1406
1403
  if (propertySettings) {
1407
1404
  importDeclarations.create({ ...propertySettings });
1408
1405
  } else if (propertyType.includes("Decimal")) {
1409
- importDeclarations.add("Decimal", "@prisma/client/runtime/library");
1406
+ importDeclarations.add("Decimal", `${config.prismaClientImport}/runtime/library`);
1410
1407
  }
1411
1408
  let graphqlType;
1412
1409
  const shouldHideField = (settings == null ? void 0 : settings.shouldHideField({
@@ -1453,7 +1450,7 @@ function outputType(outputType2, args) {
1453
1450
  name: "Field",
1454
1451
  arguments: [
1455
1452
  isList ? `() => [${graphqlType}]` : `() => ${graphqlType}`,
1456
- JSON5__default["default"].stringify({
1453
+ JSON5.stringify({
1457
1454
  ...settings == null ? void 0 : settings.fieldArguments(),
1458
1455
  nullable: Boolean(field.isNullable)
1459
1456
  })
@@ -1686,7 +1683,7 @@ function createConfig(data) {
1686
1683
  const configOutputFilePattern = String(
1687
1684
  config.outputFilePattern || `{model}/{name}.{type}.ts`
1688
1685
  );
1689
- let outputFilePattern = filenamify__default["default"](configOutputFilePattern, {
1686
+ let outputFilePattern = filenamify(configOutputFilePattern, {
1690
1687
  replacement: "/"
1691
1688
  }).replaceAll("..", "/").replaceAll(/\/+/g, "/");
1692
1689
  outputFilePattern = lodash.trim(outputFilePattern, "/");
@@ -1729,19 +1726,20 @@ function createConfig(data) {
1729
1726
  `Missed 'from' or 'name' part in configuration for decorate`
1730
1727
  );
1731
1728
  decorate.push({
1732
- isMatchField: outmatch__default["default"](element.field, { separator: false }),
1733
- isMatchType: outmatch__default["default"](element.type, { separator: false }),
1729
+ isMatchField: outmatch(element.field, { separator: false }),
1730
+ isMatchType: outmatch(element.type, { separator: false }),
1734
1731
  from: element.from,
1735
1732
  name: element.name,
1736
1733
  namedImport: toBoolean(element.namedImport),
1737
1734
  defaultImport: toBoolean(element.defaultImport) ? true : element.defaultImport,
1738
1735
  namespaceImport: element.namespaceImport,
1739
- arguments: element.arguments ? JSON5__default["default"].parse(element.arguments) : void 0
1736
+ arguments: element.arguments ? JSON5.parse(element.arguments) : void 0
1740
1737
  });
1741
1738
  }
1742
1739
  return {
1743
1740
  outputFilePattern,
1744
1741
  tsConfigFilePath: createTsConfigFilePathValue(config.tsConfigFilePath),
1742
+ prismaClientImport: createPrismaImport(config.prismaClientImport),
1745
1743
  combineScalarFilters: toBoolean(config.combineScalarFilters),
1746
1744
  noAtomicOperations: toBoolean(config.noAtomicOperations),
1747
1745
  reExport: ReExport[String(config.reExport)] || ReExport.None,
@@ -1757,6 +1755,9 @@ function createConfig(data) {
1757
1755
  requireSingleFieldsInWhereUniqueInput: toBoolean(
1758
1756
  config.requireSingleFieldsInWhereUniqueInput
1759
1757
  ),
1758
+ unsafeCompatibleWhereUniqueInput: toBoolean(
1759
+ config.unsafeCompatibleWhereUniqueInput
1760
+ ),
1760
1761
  graphqlScalars: config.graphqlScalars || {},
1761
1762
  decorate
1762
1763
  };
@@ -1770,6 +1771,11 @@ function createTsConfigFilePathValue(value) {
1770
1771
  if (tsConfigFileExists("tsconfig.json"))
1771
1772
  return "tsconfig.json";
1772
1773
  }
1774
+ function createPrismaImport(value) {
1775
+ if (typeof value === "string")
1776
+ return value;
1777
+ return "@prisma/client";
1778
+ }
1773
1779
  function createUseInputType(data) {
1774
1780
  if (!data) {
1775
1781
  return [];
@@ -1797,7 +1803,7 @@ function toBoolean(value) {
1797
1803
 
1798
1804
  function generateFileName(args) {
1799
1805
  const { template, type, name, getModelName } = args;
1800
- return pupa__default["default"](template, {
1806
+ return pupa(template, {
1801
1807
  type,
1802
1808
  get model() {
1803
1809
  const result = getModelName(name) || "prisma";
@@ -1815,7 +1821,7 @@ function generateFileName(args) {
1815
1821
  },
1816
1822
  plural: {
1817
1823
  get type() {
1818
- return pluralize__default["default"](type);
1824
+ return pluralize(type);
1819
1825
  }
1820
1826
  }
1821
1827
  });
@@ -1962,7 +1968,7 @@ async function generate(args) {
1962
1968
  const generatorOutputValue = (_a = generator.output) == null ? void 0 : _a.value;
1963
1969
  assert.ok(generatorOutputValue, "Missing generator configuration: output");
1964
1970
  const config = createConfig(generator.config);
1965
- const eventEmitter = new AwaitEventEmitter__default["default"]();
1971
+ const eventEmitter = new AwaitEventEmitter();
1966
1972
  eventEmitter.on("Warning", warning);
1967
1973
  config.emitBlocks.models && eventEmitter.on("Model", modelData);
1968
1974
  if (config.emitBlocks.prismaEnums || config.emitBlocks.schemaEnums) {
package/generate.d.ts CHANGED
@@ -78,7 +78,7 @@ declare namespace DMMF {
78
78
  hasDefaultValue: boolean;
79
79
  default?: FieldDefault | FieldDefaultScalar | FieldDefaultScalar[];
80
80
  relationFromFields?: string[];
81
- relationToFields?: any[];
81
+ relationToFields?: string[];
82
82
  relationOnDelete?: string;
83
83
  relationName?: string;
84
84
  documentation?: string;
@@ -230,6 +230,7 @@ type DecorateElement = {
230
230
  declare function createConfig(data: Record<string, unknown>): {
231
231
  outputFilePattern: string;
232
232
  tsConfigFilePath: string | undefined;
233
+ prismaClientImport: string;
233
234
  combineScalarFilters: boolean;
234
235
  noAtomicOperations: boolean;
235
236
  reExport: ReExport;
@@ -243,6 +244,7 @@ declare function createConfig(data: Record<string, unknown>): {
243
244
  useInputType: ConfigInputItem[];
244
245
  noTypeId: boolean;
245
246
  requireSingleFieldsInWhereUniqueInput: boolean;
247
+ unsafeCompatibleWhereUniqueInput: boolean;
246
248
  graphqlScalars: Record<string, ImportNameSpec | undefined>;
247
249
  decorate: DecorateElement[];
248
250
  };
package/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
 
2
- export { }
2
+ export { }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prisma-nestjs-graphql",
3
- "version": "19.1.0",
3
+ "version": "19.3.0",
4
4
  "license": "MIT",
5
5
  "description": "Generate object types, inputs, args, etc. from prisma schema file for usage with @nestjs/graphql module",
6
6
  "bin": "bin.js",
@@ -52,8 +52,10 @@
52
52
  "eslint:fix": "npm run eslint -- --fix",
53
53
  "build": "sh Taskfile build",
54
54
  "prisma:g": "node node_modules/prisma/build/index.js generate",
55
+ "prisma:custom:g": "node node_modules/prisma/build/index.js generate --schema=./custom-package-generator/schema.prisma",
55
56
  "format": "npx prettier ./@generated --write",
56
57
  "regen": "rm -rf @generated && npm run prisma:g && npm run format",
58
+ "regen:custom": "rm -rf @generated-custom && npm run prisma:custom:g && npm run format",
57
59
  "rt": "npm run regen && npm test",
58
60
  "example": "node-dev example/main.ts",
59
61
  "clean_cache": "rm -rf node_modules/.cache",
@@ -70,10 +72,10 @@
70
72
  }
71
73
  },
72
74
  "dependencies": {
73
- "@prisma/generator-helper": "^5.1.1",
75
+ "@prisma/generator-helper": "^5.6.0",
74
76
  "await-event-emitter": "^2.0.2",
75
77
  "filenamify": "4.X",
76
- "flat": "^5.0.2",
78
+ "flat": "5.X",
77
79
  "get-relative-path": "^1.0.2",
78
80
  "graceful-fs": "^4.2.11",
79
81
  "json5": "^2.2.3",
@@ -84,69 +86,66 @@
84
86
  "ts-morph": ">=11 <=16"
85
87
  },
86
88
  "devDependencies": {
87
- "@commitlint/cli": "^17.6.7",
88
- "@commitlint/config-conventional": "^17.6.7",
89
- "@nestjs/apollo": "^12.0.7",
90
- "@nestjs/common": "^10.1.3",
91
- "@nestjs/core": "^10.1.3",
92
- "@nestjs/graphql": "^12.0.8",
93
- "@nestjs/platform-express": "^10.1.3",
94
- "@paljs/plugins": "^5.3.3",
95
- "@prisma/client": "^5.1.1",
89
+ "@commitlint/cli": "^18.4.3",
90
+ "@commitlint/config-conventional": "^18.4.3",
91
+ "@nestjs/apollo": "^12.0.11",
92
+ "@nestjs/common": "^10.2.10",
93
+ "@nestjs/core": "^10.2.10",
94
+ "@nestjs/graphql": "^12.0.11",
95
+ "@nestjs/platform-express": "^10.2.10",
96
+ "@paljs/plugins": "^6.0.7",
97
+ "@prisma/client": "^5.6.0",
96
98
  "@semantic-release/changelog": "^6.0.3",
97
99
  "@semantic-release/git": "^10.0.1",
98
- "@swc/core": "^1.3.74",
99
- "@swc/helpers": "^0.5.1",
100
+ "@swc/core": "^1.3.99",
101
+ "@swc/helpers": "^0.5.3",
100
102
  "@swc/register": "^0.1.10",
101
- "@types/flat": "^5.0.2",
102
- "@types/graceful-fs": "^4.1.6",
103
- "@types/lodash": "^4.14.196",
104
- "@types/mocha": "^10.0.1",
105
- "@types/node": "^20.4.7",
106
- "@types/pluralize": "^0.0.30",
107
- "@typescript-eslint/eslint-plugin": "^6.2.1",
108
- "@typescript-eslint/parser": "^6.2.1",
109
- "apollo-server-express": "^3.10.0",
103
+ "@types/flat": "^5.0.5",
104
+ "@types/graceful-fs": "^4.1.9",
105
+ "@types/lodash": "^4.14.202",
106
+ "@types/mocha": "^10.0.6",
107
+ "@types/node": "^20.10.0",
108
+ "@types/pluralize": "^0.0.33",
109
+ "@typescript-eslint/eslint-plugin": "^6.12.0",
110
+ "@typescript-eslint/parser": "^6.12.0",
111
+ "apollo-server-express": "^3.13.0",
110
112
  "c8": "^8.0.1",
111
113
  "class-transformer": "^0.5.1",
112
114
  "class-validator": "^0.14.0",
113
115
  "commitizen": "^4.3.0",
114
116
  "cz-customizable": "^7.0.0",
115
117
  "decimal.js": "^10.4.3",
116
- "eslint": "^8.46.0",
117
- "eslint-import-resolver-node": "^0.3.7",
118
+ "eslint": "^8.54.0",
119
+ "eslint-import-resolver-node": "^0.3.9",
118
120
  "eslint-plugin-etc": "^2.0.3",
119
- "eslint-plugin-import": "^2.28.0",
121
+ "eslint-plugin-import": "^2.29.0",
120
122
  "eslint-plugin-only-warn": "^1.1.0",
121
- "eslint-plugin-prettier": "^5.0.0",
123
+ "eslint-plugin-prettier": "^5.0.1",
122
124
  "eslint-plugin-regexp": "^1.15.0",
123
125
  "eslint-plugin-simple-import-sort": "^10.0.0",
124
- "eslint-plugin-sort-class-members": "^1.18.0",
125
- "eslint-plugin-unicorn": "^48.0.1",
126
+ "eslint-plugin-sort-class-members": "^1.19.0",
127
+ "eslint-plugin-unicorn": "^49.0.0",
126
128
  "eslint-plugin-wix-editor": "^3.3.0",
127
- "expect": "^29.6.2",
129
+ "expect": "^29.7.0",
128
130
  "git-branch-is": "^4.0.0",
129
- "graphql": "^16.7.1",
130
- "graphql-scalars": "^1.22.2",
131
+ "graphql": "^16.8.1",
132
+ "graphql-scalars": "^1.22.4",
131
133
  "graphql-type-json": "^0.3.2",
132
134
  "mocha": "^10.2.0",
133
135
  "ololog": "^1.1.175",
134
136
  "precise-commits": "^1.0.2",
135
- "prettier": "^3.0.1",
136
- "prisma": "^5.1.1",
137
+ "prettier": "^3.1.0",
138
+ "prisma": "^5.6.0",
137
139
  "prisma-graphql-type-decimal": "^3.0.0",
138
140
  "reflect-metadata": "^0.1.13",
139
141
  "request": "^2.88.2",
140
142
  "rxjs": "^7.8.1",
141
- "semantic-release": "^21.0.7",
143
+ "semantic-release": "^22.0.8",
142
144
  "simplytyped": "^3.3.0",
143
145
  "temp-dir": "2.X",
144
146
  "ts-node": "^10.9.1",
145
- "tslib": "^2.6.1",
146
- "typescript": "^5.1.6",
147
+ "tslib": "^2.6.2",
148
+ "typescript": "^5.3.2",
147
149
  "watchexec-bin": "^1.0.0"
148
- },
149
- "overrides": {
150
- "prisma": "^5.1.1"
151
150
  }
152
151
  }