prisma-kysely 1.4.2 → 1.5.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
@@ -83,6 +83,40 @@ hope it's just as useful for you! 😎
83
83
  | `readOnlyIds` | Use Kysely's `GeneratedAlways` for `@id` fields with default values, preventing insert and update. |
84
84
  | `[typename]TypeOverride` | Allows you to override the resulting TypeScript type for any Prisma type. Useful when targeting a different environment than Node (e.g. WinterCG compatible runtimes that use UInt8Arrays instead of Buffers for binary types etc.) Check out the [config validator](https://github.com/valtyr/prisma-kysely/blob/main/src/utils/validateConfig.ts) for a complete list of options. |
85
85
 
86
+ ### Per-field type overrides
87
+
88
+ In some cases, you might want to override a type for a specific field. This
89
+ could be useful, for example, for constraining string types to certain literal
90
+ values. Be aware though that this does not of course come with any runtime
91
+ validation, and in most cases won't be guaranteed to match the actual data in
92
+ the database.
93
+
94
+ That disclaimer aside, here's how it works: Add a `@kyselyType(...)` declaration
95
+ to the Prisma docstring (deliniated using three slashes `///`) for the field
96
+ with your type inside the parentheses.
97
+
98
+ ```prisma
99
+ model User {
100
+ id String @id
101
+ name String
102
+
103
+ /// @kyselyType('member' | 'admin')
104
+ role String
105
+ }
106
+ ```
107
+
108
+ The parentheses can include any valid TS type declaration.
109
+
110
+ The output for the example above would be as follows:
111
+
112
+ ```ts
113
+ export type User = {
114
+ id: string;
115
+ name: string;
116
+ role: "member" | "owner";
117
+ };
118
+ ```
119
+
86
120
  ### Gotchas
87
121
 
88
122
  #### Default values
@@ -143,8 +177,9 @@ you can think of.
143
177
  partly stolen from
144
178
  [`prisma-dbml-generator`](https://github.com/notiz-dev/prisma-dbml-generator/blob/752f89cf40257a9698913294b38843ac742f8345/src/generator/many-to-many-tables.ts).
145
179
  Many-too-many thanks to them!
146
- - Jökull Sólberg ([@jokull](https://github.com/jokull)) for being this library's
147
- main proponent on Twitter!
180
+ - Igal Klebanov ([@igalklebanov](https://github.com/igalklebanov)) and Jökull Sólberg ([@jokull](https://github.com/jokull)) for being this library's
181
+ main proponents on Twitter!
182
+ - The authors and maintainers of Kysely ❤️‍🔥
148
183
 
149
184
  ```diff
150
185
  + Boyce-Codd gang unite! 💽
@@ -54,6 +54,37 @@ const exec = (0, util_1.promisify)(child_process_1.exec);
54
54
  };`)).toBeTruthy();
55
55
  (0, vitest_1.expect)(generatedSource.includes("_SprocketToTestUser: SprocketToTestUser")).toBeTruthy();
56
56
  }, { timeout: 20000 });
57
+ (0, vitest_1.test)("End to end test - with custom type override", async () => {
58
+ await exec("yarn prisma init --datasource-provider sqlite");
59
+ await promises_1.default.writeFile("./prisma/schema.prisma", `datasource db {
60
+ provider = "sqlite"
61
+ url = "file:./dev.db"
62
+ }
63
+
64
+ generator kysely {
65
+ provider = "node ./dist/bin.js"
66
+ }
67
+
68
+ model TestUser {
69
+ id String @id
70
+ name String
71
+
72
+ /// @kyselyType('member' | 'owner')
73
+ role String
74
+ }`);
75
+ await exec("yarn prisma generate");
76
+ const generatedSource = await promises_1.default.readFile("./prisma/generated/types.ts", {
77
+ encoding: "utf-8",
78
+ });
79
+ (0, vitest_1.expect)(generatedSource.includes(`export type TestUser = {
80
+ id: string;
81
+ name: string;
82
+ /**
83
+ * @kyselyType('member' | 'owner')
84
+ */
85
+ role: "member" | "owner";
86
+ };`)).toBeTruthy();
87
+ }, { timeout: 20000 });
57
88
  (0, vitest_1.test)("End to end test - separate entrypoints", async () => {
58
89
  await exec("yarn prisma init --datasource-provider mysql");
59
90
  await promises_1.default.writeFile("./prisma/schema.prisma", `datasource db {
@@ -126,4 +157,41 @@ export type TestEnum = (typeof TestEnum)[keyof typeof TestEnum];
126
157
  encoding: "utf-8",
127
158
  })).rejects.toThrow();
128
159
  }, { timeout: 20000 });
160
+ (0, vitest_1.test)("End to end test - multi-schema support", async () => {
161
+ await exec("yarn prisma init --datasource-provider postgresql");
162
+ await promises_1.default.writeFile("./prisma/schema.prisma", `generator kysely {
163
+ provider = "node ./dist/bin.js"
164
+ previewFeatures = ["multiSchema"]
165
+ }
166
+
167
+ datasource db {
168
+ provider = "postgresql"
169
+ schemas = ["mammals", "birds"]
170
+ url = env("TEST_DATABASE_URL")
171
+ }
172
+
173
+ model Elephant {
174
+ id Int @id
175
+ name String
176
+
177
+ @@map("elephants")
178
+ @@schema("mammals")
179
+ }
180
+
181
+ model Eagle {
182
+ id Int @id
183
+ name String
184
+
185
+ @@map("eagles")
186
+ @@schema("birds")
187
+ }`);
188
+ await exec("yarn prisma generate");
189
+ const typeFile = await promises_1.default.readFile("./prisma/generated/types.ts", {
190
+ encoding: "utf-8",
191
+ });
192
+ (0, vitest_1.expect)(typeFile).toContain(`export type DB = {
193
+ "birds.eagles": Eagle;
194
+ "mammals.elephants": Elephant;
195
+ };`);
196
+ }, { timeout: 20000 });
129
197
  //# sourceMappingURL=e2e.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"e2e.test.js","sourceRoot":"","sources":["../../src/__test__/e2e.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"e2e.test.js","sourceRoot":"","sources":["../../src/__test__/e2e.test.ts"],"names":[],"mappings":"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"}
package/dist/generator.js CHANGED
@@ -14,6 +14,7 @@ const sorted_1 = require("./utils/sorted");
14
14
  const validateConfig_1 = require("./utils/validateConfig");
15
15
  const writeFileSafely_1 = require("./utils/writeFileSafely");
16
16
  const generateEnumType_1 = require("./helpers/generateEnumType");
17
+ const multiSchemaHelpers_1 = require("./helpers/multiSchemaHelpers");
17
18
  const { version } = require("../package.json");
18
19
  (0, generator_helper_1.generatorHandler)({
19
20
  onManifest() {
@@ -24,6 +25,7 @@ const { version } = require("../package.json");
24
25
  };
25
26
  },
26
27
  onGenerate: async (options) => {
28
+ var _a;
27
29
  const config = (0, validateConfig_1.validateConfig)({
28
30
  ...options.generator.config,
29
31
  databaseProvider: options.datasources[0].provider,
@@ -32,7 +34,10 @@ const { version } = require("../package.json");
32
34
  return (0, generateEnumType_1.generateEnumType)(name, values);
33
35
  });
34
36
  const implicitManyToManyModels = (0, generateImplicitManyToManyModels_1.generateImplicitManyToManyModels)(options.dmmf.datamodel.models);
35
- const models = (0, sorted_1.sorted)([...options.dmmf.datamodel.models, ...implicitManyToManyModels], (a, b) => a.name.localeCompare(b.name)).map((m) => (0, generateModel_1.generateModel)(m, config));
37
+ let models = (0, sorted_1.sorted)([...options.dmmf.datamodel.models, ...implicitManyToManyModels], (a, b) => a.name.localeCompare(b.name)).map((m) => (0, generateModel_1.generateModel)(m, config));
38
+ if ((_a = options.generator.previewFeatures) === null || _a === void 0 ? void 0 : _a.includes("multiSchema")) {
39
+ models = (0, multiSchemaHelpers_1.convertToMultiSchemaModels)(models, options.datamodel);
40
+ }
36
41
  const databaseType = (0, generateDatabaseType_1.generateDatabaseType)(models.map((m) => ({ tableName: m.tableName, typeName: m.typeName })), config);
37
42
  const files = (0, generateFiles_1.generateFiles)({
38
43
  databaseType,
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":";;;;;AACA,+DAA4D;AAC5D,gDAAwB;AAExB,2CAA6C;AAC7C,yEAAsE;AACtE,2DAAwD;AACxD,iGAA8F;AAC9F,2DAAwD;AACxD,2CAAwC;AACxC,2DAAwD;AACxD,6DAA0D;AAE1D,iEAA8D;AAG9D,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/C,IAAA,mCAAgB,EAAC;IACf,UAAU;QACR,OAAO;YACL,OAAO;YACP,aAAa,EAAE,aAAa;YAC5B,UAAU,EAAE,0BAAc;SAC3B,CAAC;IACJ,CAAC;IACD,UAAU,EAAE,KAAK,EAAE,OAAyB,EAAE,EAAE;QAE9C,MAAM,MAAM,GAAG,IAAA,+BAAc,EAAC;YAC5B,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM;YAC3B,gBAAgB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ;SAClD,CAAC,CAAC;QAGH,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;YACtE,OAAO,IAAA,mCAAgB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAMH,MAAM,wBAAwB,GAAG,IAAA,mEAAgC,EAC/D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAC9B,CAAC;QAGF,MAAM,MAAM,GAAG,IAAA,eAAM,EACnB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,wBAAwB,CAAC,EAC/D,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CACvC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,6BAAa,EAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAGvC,MAAM,YAAY,GAAG,IAAA,2CAAoB,EACvC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EACrE,MAAM,CACP,CAAC;QAGF,MAAM,KAAK,GAAG,IAAA,6BAAa,EAAC;YAC1B,YAAY;YACZ,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;YACjD,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1D,KAAK;YACL,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,YAAY,EAAE,MAAM,CAAC,QAAQ;SAC9B,CAAC,CAAC;QAGH,MAAM,OAAO,CAAC,UAAU,CACtB,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;;YAClC,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAC7B,CAAA,MAAA,OAAO,CAAC,SAAS,CAAC,MAAM,0CAAE,KAAK,KAAI,EAAE,EACrC,QAAQ,CACT,CAAC;YACF,OAAO,IAAA,iCAAe,EAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,10 @@ exports.generateDatabaseType = void 0;
7
7
  const typescript_1 = __importDefault(require("typescript"));
8
8
  const isValidTSIdentifier_1 = __importDefault(require("../utils/isValidTSIdentifier"));
9
9
  const normalizeCase_1 = require("../utils/normalizeCase");
10
+ const sorted_1 = require("../utils/sorted");
10
11
  const generateDatabaseType = (models, config) => {
11
- const properties = models.map((field) => {
12
+ const sortedModels = (0, sorted_1.sorted)(models, (a, b) => a.tableName.localeCompare(b.tableName));
13
+ const properties = sortedModels.map((field) => {
12
14
  const caseNormalizedTableName = (0, normalizeCase_1.normalizeCase)(field.tableName, config);
13
15
  const nameIdentifier = (0, isValidTSIdentifier_1.default)(caseNormalizedTableName)
14
16
  ? typescript_1.default.factory.createIdentifier(caseNormalizedTableName)
@@ -1 +1 @@
1
- {"version":3,"file":"generateDatabaseType.js","sourceRoot":"","sources":["../../src/helpers/generateDatabaseType.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4B;AAE5B,uFAA8D;AAC9D,0DAAsD;AAG/C,MAAM,oBAAoB,GAAG,CAClC,MAAiD,EACjD,MAAc,EACd,EAAE;IACF,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACtC,MAAM,uBAAuB,GAAG,IAAA,6BAAa,EAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAMvE,MAAM,cAAc,GAAG,IAAA,6BAAmB,EAAC,uBAAuB,CAAC;YACjE,CAAC,CAAC,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,uBAAuB,CAAC;YACtD,CAAC,CAAC,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,CAAC;QAE5D,OAAO,oBAAE,CAAC,OAAO,CAAC,uBAAuB,CACvC,SAAS,EACT,cAAc,EACd,SAAS,EACT,oBAAE,CAAC,OAAO,CAAC,uBAAuB,CAChC,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC3C,SAAS,CACV,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,oBAAE,CAAC,OAAO,CAAC,0BAA0B,CAC1C,SAAS,EACT,CAAC,oBAAE,CAAC,OAAO,CAAC,cAAc,CAAC,oBAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,EACxD,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,EACjC,SAAS,EACT,oBAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAC7C,CAAC;AACJ,CAAC,CAAC;AAjCW,QAAA,oBAAoB,wBAiC/B"}
1
+ {"version":3,"file":"generateDatabaseType.js","sourceRoot":"","sources":["../../src/helpers/generateDatabaseType.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4B;AAE5B,uFAA8D;AAC9D,0DAAsD;AACtD,4CAAwC;AAGjC,MAAM,oBAAoB,GAAG,CAClC,MAAiD,EACjD,MAAc,EACd,EAAE;IACF,MAAM,YAAY,GAAG,IAAA,eAAM,EAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC3C,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CACvC,CAAC;IAEF,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5C,MAAM,uBAAuB,GAAG,IAAA,6BAAa,EAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAMvE,MAAM,cAAc,GAAG,IAAA,6BAAmB,EAAC,uBAAuB,CAAC;YACjE,CAAC,CAAC,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,uBAAuB,CAAC;YACtD,CAAC,CAAC,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,CAAC;QAE5D,OAAO,oBAAE,CAAC,OAAO,CAAC,uBAAuB,CACvC,SAAS,EACT,cAAc,EACd,SAAS,EACT,oBAAE,CAAC,OAAO,CAAC,uBAAuB,CAChC,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC3C,SAAS,CACV,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,oBAAE,CAAC,OAAO,CAAC,0BAA0B,CAC1C,SAAS,EACT,CAAC,oBAAE,CAAC,OAAO,CAAC,cAAc,CAAC,oBAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,EACxD,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,EACjC,SAAS,EACT,oBAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAC7C,CAAC;AACJ,CAAC,CAAC;AArCW,QAAA,oBAAoB,wBAqC/B"}
@@ -56,8 +56,8 @@ const testUtils_1 = require("../utils/testUtils");
56
56
  const result = (0, testUtils_1.stringifyTsNode)(node);
57
57
  (0, vitest_1.expect)(result).toEqual(`export type DB = {
58
58
  Bookmark: Bookmark;
59
- "user session_*table ;D": Session;
60
59
  User: User;
60
+ "user session_*table ;D": Session;
61
61
  };`);
62
62
  });
63
63
  //# sourceMappingURL=generateDatabaseType.test.js.map
@@ -61,21 +61,21 @@ const overrideType = (type, config) => {
61
61
  }
62
62
  };
63
63
  exports.overrideType = overrideType;
64
- const generateFieldTypeInner = (type, config) => {
64
+ const generateFieldTypeInner = (type, config, typeOverride) => {
65
65
  switch (config.databaseProvider) {
66
66
  case "sqlite":
67
- return (0, exports.overrideType)(type, config) || exports.sqliteTypeMap[type];
67
+ return typeOverride || (0, exports.overrideType)(type, config) || exports.sqliteTypeMap[type];
68
68
  case "mysql":
69
- return (0, exports.overrideType)(type, config) || exports.mysqlTypeMap[type];
69
+ return typeOverride || (0, exports.overrideType)(type, config) || exports.mysqlTypeMap[type];
70
70
  case "postgresql":
71
- return (0, exports.overrideType)(type, config) || exports.postgresqlTypeMap[type];
71
+ return (typeOverride || (0, exports.overrideType)(type, config) || exports.postgresqlTypeMap[type]);
72
72
  case "cockroachdb":
73
- return (0, exports.overrideType)(type, config) || exports.postgresqlTypeMap[type];
73
+ return (typeOverride || (0, exports.overrideType)(type, config) || exports.postgresqlTypeMap[type]);
74
74
  }
75
75
  };
76
76
  exports.generateFieldTypeInner = generateFieldTypeInner;
77
- const generateFieldType = (type, config) => {
78
- const fieldType = (0, exports.generateFieldTypeInner)(type, config);
77
+ const generateFieldType = (type, config, typeOverride) => {
78
+ const fieldType = (0, exports.generateFieldTypeInner)(type, config, typeOverride || null);
79
79
  if (!fieldType)
80
80
  throw new Error(`Unsupported type ${type} for database ${config.databaseProvider}`);
81
81
  return fieldType;
@@ -1 +1 @@
1
- {"version":3,"file":"generateFieldType.js","sourceRoot":"","sources":["../../src/helpers/generateFieldType.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generateFieldType.js","sourceRoot":"","sources":["../../src/helpers/generateFieldType.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ exports.generateModel = void 0;
7
7
  const typescript_1 = __importDefault(require("typescript"));
8
8
  const generateField_1 = require("./generateField");
9
9
  const generateFieldType_1 = require("./generateFieldType");
10
+ const generateTypeOverrideFromDocumentation_1 = require("./generateTypeOverrideFromDocumentation");
10
11
  const normalizeCase_1 = require("../utils/normalizeCase");
11
12
  const defaultTypesImplementedInJS = ["cuid", "uuid"];
12
13
  const generateModel = (model, config) => {
@@ -15,12 +16,16 @@ const generateModel = (model, config) => {
15
16
  !(typeof field.default === "object" &&
16
17
  "name" in field.default &&
17
18
  defaultTypesImplementedInJS.includes(field.default.name));
19
+ const typeOverride = field.documentation
20
+ ? (0, generateTypeOverrideFromDocumentation_1.generateTypeOverrideFromDocumentation)(field.documentation)
21
+ : null;
18
22
  if (field.kind === "object" || field.kind === "unsupported")
19
23
  return [];
24
+ const dbName = typeof field.dbName === "string" ? field.dbName : null;
20
25
  if (field.kind === "enum") {
21
26
  return (0, generateField_1.generateField)({
22
27
  isId: field.isId,
23
- name: field.name,
28
+ name: (0, normalizeCase_1.normalizeCase)(dbName || field.name, config),
24
29
  type: typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier(field.type), undefined),
25
30
  nullable: !field.isRequired,
26
31
  generated: isGenerated,
@@ -29,10 +34,9 @@ const generateModel = (model, config) => {
29
34
  config,
30
35
  });
31
36
  }
32
- const dbName = typeof field.dbName === "string" ? field.dbName : null;
33
37
  return (0, generateField_1.generateField)({
34
38
  name: (0, normalizeCase_1.normalizeCase)(dbName || field.name, config),
35
- type: typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier((0, generateFieldType_1.generateFieldType)(field.type, config)), undefined),
39
+ type: typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier((0, generateFieldType_1.generateFieldType)(field.type, config, typeOverride)), undefined),
36
40
  nullable: !field.isRequired,
37
41
  generated: isGenerated,
38
42
  list: field.isList,
@@ -1 +1 @@
1
- {"version":3,"file":"generateModel.js","sourceRoot":"","sources":["../../src/helpers/generateModel.ts"],"names":[],"mappings":";;;;;;AACA,4DAA4B;AAE5B,mDAAwD;AACxD,2DAAgE;AAChE,0DAAsD;AAQtD,MAAM,2BAA2B,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9C,MAAM,aAAa,GAAG,CAAC,KAAiB,EAAE,MAAc,EAAE,EAAE;IACjE,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAChD,MAAM,WAAW,GACf,KAAK,CAAC,eAAe;YACrB,CAAC,CACC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;gBACjC,MAAM,IAAI,KAAK,CAAC,OAAO;gBACvB,2BAA2B,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CACzD,CAAC;QAEJ,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;YAAE,OAAO,EAAE,CAAC;QACvE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;YACzB,OAAO,IAAA,6BAAa,EAAC;gBACnB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,oBAAE,CAAC,OAAO,CAAC,uBAAuB,CACtC,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,EACvC,SAAS,CACV;gBACD,QAAQ,EAAE,CAAC,KAAK,CAAC,UAAU;gBAC3B,SAAS,EAAE,WAAW;gBACtB,IAAI,EAAE,KAAK,CAAC,MAAM;gBAClB,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,MAAM;aACP,CAAC,CAAC;SACJ;QACD,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAEtE,OAAO,IAAA,6BAAa,EAAC;YACnB,IAAI,EAAE,IAAA,6BAAa,EAAC,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;YACjD,IAAI,EAAE,oBAAE,CAAC,OAAO,CAAC,uBAAuB,CACtC,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAA,qCAAiB,EAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAClE,SAAS,CACV;YACD,QAAQ,EAAE,CAAC,KAAK,CAAC,UAAU;YAC3B,SAAS,EAAE,WAAW;YACtB,IAAI,EAAE,KAAK,CAAC,MAAM;YAClB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM;SACP,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,IAAI;QACpB,SAAS,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI;QACrC,UAAU,EAAE,oBAAE,CAAC,OAAO,CAAC,0BAA0B,CAC/C,SAAS,EACT,CAAC,oBAAE,CAAC,OAAO,CAAC,cAAc,CAAC,oBAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,EACxD,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,EACvC,SAAS,EACT,oBAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAC7C;KACF,CAAC;AACJ,CAAC,CAAC;AAtDW,QAAA,aAAa,iBAsDxB"}
1
+ {"version":3,"file":"generateModel.js","sourceRoot":"","sources":["../../src/helpers/generateModel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateTypeOverrideFromDocumentation = void 0;
4
+ const START_LEXEME = "@kyselyType(";
5
+ const generateTypeOverrideFromDocumentation = (documentation) => {
6
+ const tokens = documentation.split("");
7
+ let matchState = null;
8
+ let parentheses = 0;
9
+ let i = 0;
10
+ while (i < documentation.length) {
11
+ const currentToken = tokens[i];
12
+ if (matchState) {
13
+ if (currentToken === ")" && parentheses === 0)
14
+ return matchState.tokens.join("");
15
+ if (currentToken === ")")
16
+ parentheses--;
17
+ if (currentToken === "(")
18
+ parentheses++;
19
+ matchState.tokens.push(currentToken);
20
+ i++;
21
+ if (i === documentation.length) {
22
+ i = matchState.startLocation + 1;
23
+ matchState = null;
24
+ continue;
25
+ }
26
+ continue;
27
+ }
28
+ if (currentToken === "@") {
29
+ const isMatch = tokens.slice(i, i + START_LEXEME.length).join("") === START_LEXEME;
30
+ if (!isMatch) {
31
+ i++;
32
+ continue;
33
+ }
34
+ matchState = { tokens: [], startLocation: i };
35
+ i += START_LEXEME.length;
36
+ continue;
37
+ }
38
+ i++;
39
+ }
40
+ return null;
41
+ };
42
+ exports.generateTypeOverrideFromDocumentation = generateTypeOverrideFromDocumentation;
43
+ //# sourceMappingURL=generateTypeOverrideFromDocumentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateTypeOverrideFromDocumentation.js","sourceRoot":"","sources":["../../src/helpers/generateTypeOverrideFromDocumentation.ts"],"names":[],"mappings":";;;AAAA,MAAM,YAAY,GAAG,cAAc,CAAC;AAS7B,MAAM,qCAAqC,GAAG,CACnD,aAAqB,EACrB,EAAE;IACF,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEvC,IAAI,UAAU,GAAuD,IAAI,CAAC;IAC1E,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE;QAC/B,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAG/B,IAAI,UAAU,EAAE;YAGd,IAAI,YAAY,KAAK,GAAG,IAAI,WAAW,KAAK,CAAC;gBAC3C,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAIpC,IAAI,YAAY,KAAK,GAAG;gBAAE,WAAW,EAAE,CAAC;YACxC,IAAI,YAAY,KAAK,GAAG;gBAAE,WAAW,EAAE,CAAC;YAGxC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAErC,CAAC,EAAE,CAAC;YAKJ,IAAI,CAAC,KAAK,aAAa,CAAC,MAAM,EAAE;gBAC9B,CAAC,GAAG,UAAU,CAAC,aAAa,GAAG,CAAC,CAAC;gBACjC,UAAU,GAAG,IAAI,CAAC;gBAClB,SAAS;aACV;YAED,SAAS;SACV;QAID,IAAI,YAAY,KAAK,GAAG,EAAE;YACxB,MAAM,OAAO,GACX,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,YAAY,CAAC;YAGrE,IAAI,CAAC,OAAO,EAAE;gBACZ,CAAC,EAAE,CAAC;gBACJ,SAAS;aACV;YAGD,UAAU,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;YAC9C,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC;YAEzB,SAAS;SACV;QAED,CAAC,EAAE,CAAC;KACL;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AA/DW,QAAA,qCAAqC,yCA+DhD"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const generateTypeOverrideFromDocumentation_1 = require("./generateTypeOverrideFromDocumentation");
5
+ (0, vitest_1.test)("finds a type override", () => {
6
+ const docString = "this is some property \n here is the type override @kyselyType('admin' | 'member') ";
7
+ (0, vitest_1.expect)((0, generateTypeOverrideFromDocumentation_1.generateTypeOverrideFromDocumentation)(docString)).toEqual("'admin' | 'member'");
8
+ });
9
+ (0, vitest_1.test)("supports parentheses in type", () => {
10
+ const docString = "this is some property \n here is the type override @kyselyType(('admin' | 'member')) ";
11
+ (0, vitest_1.expect)((0, generateTypeOverrideFromDocumentation_1.generateTypeOverrideFromDocumentation)(docString)).toEqual("('admin' | 'member')");
12
+ });
13
+ (0, vitest_1.test)("reacts correctly to unbalanced parens", () => {
14
+ const docString = "this is some property \n here is the type override @kyselyType(('admin' | 'member') ";
15
+ (0, vitest_1.expect)((0, generateTypeOverrideFromDocumentation_1.generateTypeOverrideFromDocumentation)(docString)).toEqual(null);
16
+ });
17
+ (0, vitest_1.test)("reacts correctly to extra parens", () => {
18
+ const docString = "this is some property \n here is the type override @kyselyType(('admin' | 'member'))) ";
19
+ (0, vitest_1.expect)((0, generateTypeOverrideFromDocumentation_1.generateTypeOverrideFromDocumentation)(docString)).toEqual("('admin' | 'member')");
20
+ });
21
+ (0, vitest_1.test)("finds type following incomplete one", () => {
22
+ const docString = "this is some property \n here is the type @kyselyType( override @kyselyType('admin' | 'member') ";
23
+ (0, vitest_1.expect)((0, generateTypeOverrideFromDocumentation_1.generateTypeOverrideFromDocumentation)(docString)).toEqual("'admin' | 'member'");
24
+ });
25
+ (0, vitest_1.test)("doesn't do anything in case of no type", () => {
26
+ const docString = "this is some property with no override";
27
+ (0, vitest_1.expect)((0, generateTypeOverrideFromDocumentation_1.generateTypeOverrideFromDocumentation)(docString)).toEqual(null);
28
+ });
29
+ (0, vitest_1.test)("bails when we have an at sign and no match", () => {
30
+ const docString = "hit me up at squiggly@goofy.af";
31
+ (0, vitest_1.expect)((0, generateTypeOverrideFromDocumentation_1.generateTypeOverrideFromDocumentation)(docString)).toEqual(null);
32
+ });
33
+ //# sourceMappingURL=generateTypeOverrideFromDocumentation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateTypeOverrideFromDocumentation.test.js","sourceRoot":"","sources":["../../src/helpers/generateTypeOverrideFromDocumentation.test.ts"],"names":[],"mappings":";;AAAA,mCAAsC;AAEtC,mGAAgG;AAEhG,IAAA,aAAI,EAAC,uBAAuB,EAAE,GAAG,EAAE;IACjC,MAAM,SAAS,GACb,qFAAqF,CAAC;IAExF,IAAA,eAAM,EAAC,IAAA,6EAAqC,EAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAC9D,oBAAoB,CACrB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,8BAA8B,EAAE,GAAG,EAAE;IACxC,MAAM,SAAS,GACb,uFAAuF,CAAC;IAE1F,IAAA,eAAM,EAAC,IAAA,6EAAqC,EAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAC9D,sBAAsB,CACvB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,uCAAuC,EAAE,GAAG,EAAE;IACjD,MAAM,SAAS,GACb,sFAAsF,CAAC;IAEzF,IAAA,eAAM,EAAC,IAAA,6EAAqC,EAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,kCAAkC,EAAE,GAAG,EAAE;IAC5C,MAAM,SAAS,GACb,wFAAwF,CAAC;IAE3F,IAAA,eAAM,EAAC,IAAA,6EAAqC,EAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAC9D,sBAAsB,CACvB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,qCAAqC,EAAE,GAAG,EAAE;IAC/C,MAAM,SAAS,GACb,kGAAkG,CAAC;IAErG,IAAA,eAAM,EAAC,IAAA,6EAAqC,EAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAC9D,oBAAoB,CACrB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,wCAAwC,EAAE,GAAG,EAAE;IAClD,MAAM,SAAS,GAAG,wCAAwC,CAAC;IAE3D,IAAA,eAAM,EAAC,IAAA,6EAAqC,EAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,4CAA4C,EAAE,GAAG,EAAE;IACtD,MAAM,SAAS,GAAG,gCAAgC,CAAC;IAEnD,IAAA,eAAM,EAAC,IAAA,6EAAqC,EAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertToMultiSchemaModels = void 0;
4
+ const prisma_ast_1 = require("@mrleebo/prisma-ast");
5
+ const convertToMultiSchemaModels = (models, dataModelStr) => {
6
+ const parsedSchema = (0, prisma_ast_1.getSchema)(dataModelStr);
7
+ const multiSchemaMap = new Map(parsedSchema.list
8
+ .filter((block) => block.type === "model")
9
+ .map((model) => {
10
+ var _a;
11
+ const schemaProperty = model.properties.find((prop) => prop.type === "attribute" && prop.name === "schema");
12
+ const schemaName = (_a = schemaProperty === null || schemaProperty === void 0 ? void 0 : schemaProperty.args) === null || _a === void 0 ? void 0 : _a[0].value;
13
+ if (typeof schemaName !== "string") {
14
+ return [model.name, ""];
15
+ }
16
+ return [model.name, schemaName.replace(/"/g, "")];
17
+ }));
18
+ return models.map((model) => {
19
+ const schemaName = multiSchemaMap.get(model.typeName);
20
+ if (!schemaName) {
21
+ return model;
22
+ }
23
+ return { ...model, tableName: `${schemaName}.${model.tableName}` };
24
+ });
25
+ };
26
+ exports.convertToMultiSchemaModels = convertToMultiSchemaModels;
27
+ //# sourceMappingURL=multiSchemaHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiSchemaHelpers.js","sourceRoot":"","sources":["../../src/helpers/multiSchemaHelpers.ts"],"names":[],"mappings":";;;AAAA,oDAI6B;AAoBtB,MAAM,0BAA0B,GAAG,CACxC,MAAW,EACX,YAAoB,EACf,EAAE;IACP,MAAM,YAAY,GAAG,IAAA,sBAAS,EAAC,YAAY,CAAC,CAAC;IAE7C,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,YAAY,CAAC,IAAI;SACd,MAAM,CAAC,CAAC,KAAK,EAAkB,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;SACzD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;;QACb,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAC1C,CAAC,IAAI,EAA0B,EAAE,CAC/B,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CACtD,CAAC;QAEF,MAAM,UAAU,GAAG,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,IAAI,0CAAG,CAAC,EAAE,KAAK,CAAC;QAEnD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YAClC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACzB;QAED,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CACL,CAAC;IAEF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEtD,IAAI,CAAC,UAAU,EAAE;YACf,OAAO,KAAK,CAAC;SACd;QAED,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,GAAG,UAAU,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAlCW,QAAA,0BAA0B,8BAkCrC"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const multiSchemaHelpers_1 = require("./multiSchemaHelpers");
5
+ const testDataModel = `generator kysely {
6
+ provider = "node ./dist/bin.js"
7
+ previewFeatures = ["multiSchema"]
8
+ }
9
+
10
+ datasource db {
11
+ provider = "postgresql"
12
+ schemas = ["mammals", "birds"]
13
+ url = env("TEST_DATABASE_URL")
14
+ }
15
+
16
+ model Elephant {
17
+ id Int @id
18
+ name String
19
+
20
+ @@map("elephants")
21
+ @@schema("mammals")
22
+ }
23
+
24
+ model Eagle {
25
+ id Int @id
26
+ name String
27
+
28
+ @@map("eagles")
29
+ @@schema("birds")
30
+ }`;
31
+ (0, vitest_1.test)("returns a list of models with schemas appended to the table name", () => {
32
+ const initialModels = [
33
+ { typeName: "Elephant", tableName: "elephants" },
34
+ { typeName: "Eagle", tableName: "eagles" },
35
+ ];
36
+ const result = (0, multiSchemaHelpers_1.convertToMultiSchemaModels)(initialModels, testDataModel);
37
+ (0, vitest_1.expect)(result).toEqual([
38
+ { typeName: "Elephant", tableName: "mammals.elephants" },
39
+ { typeName: "Eagle", tableName: "birds.eagles" },
40
+ ]);
41
+ });
42
+ //# sourceMappingURL=multiSchemaHelpers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiSchemaHelpers.test.js","sourceRoot":"","sources":["../../src/helpers/multiSchemaHelpers.test.ts"],"names":[],"mappings":";;AAAA,mCAAsC;AAEtC,6DAAkE;AAElE,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;EAyBpB,CAAC;AAEH,IAAA,aAAI,EAAC,kEAAkE,EAAE,GAAG,EAAE;IAC5E,MAAM,aAAa,GAAG;QACpB,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE;QAChD,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;KAC3C,CAAC;IAEF,MAAM,MAAM,GAAG,IAAA,+CAA0B,EAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAExE,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC;QACrB,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,mBAAmB,EAAE;QACxD,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE;KACjD,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "repository": {
5
5
  "url": "https://github.com/valtyr/prisma-kysely"
6
6
  },
7
- "version": "1.4.2",
7
+ "version": "1.5.0",
8
8
  "main": "dist/generator.js",
9
9
  "files": [
10
10
  "dist"
@@ -26,6 +26,7 @@
26
26
  "edit": "code ."
27
27
  },
28
28
  "dependencies": {
29
+ "@mrleebo/prisma-ast": "^0.6.0",
29
30
  "@prisma/generator-helper": "4.13.0",
30
31
  "@prisma/internals": "4.13.0",
31
32
  "typescript": "4.6.2",
@@ -40,18 +41,18 @@
40
41
  "@types/prettier": "2.4.2",
41
42
  "@typescript-eslint/eslint-plugin": "^5.54.0",
42
43
  "@typescript-eslint/parser": "^5.54.0",
43
- "@vitest/coverage-c8": "^0.29.8",
44
+ "@vitest/coverage-v8": "^0.32.2",
44
45
  "better-sqlite3": "^8.2.0",
45
46
  "eslint": "^8.35.0",
46
47
  "kysely": "^0.23.4",
47
48
  "mysql2": "^3.2.0",
48
49
  "pg": "^8.10.0",
49
50
  "prettier": "^2.8.4",
50
- "prisma": "4.13.0",
51
+ "prisma": "4.16.2",
51
52
  "ttypescript": "^1.5.15",
52
53
  "typescript-transform-paths": "^3.4.6",
53
54
  "vite-tsconfig-paths": "^4.0.7",
54
- "vitest": "^0.29.8"
55
+ "vitest": "^0.32.2"
55
56
  },
56
57
  "prettier": {
57
58
  "importOrder": [