prisma-kysely 2.2.1 → 3.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 (94) hide show
  1. package/README.md +3 -3
  2. package/dist/bin.js +1 -4
  3. package/dist/generator.js +868 -80
  4. package/package.json +46 -34
  5. package/dist/__test__/e2e.test.js +0 -650
  6. package/dist/__test__/e2e.test.js.map +0 -1
  7. package/dist/bin.js.map +0 -1
  8. package/dist/constants.js +0 -5
  9. package/dist/constants.js.map +0 -1
  10. package/dist/dialectTests/common.js +0 -59
  11. package/dist/dialectTests/common.js.map +0 -1
  12. package/dist/dialectTests/mysql.js +0 -37
  13. package/dist/dialectTests/mysql.js.map +0 -1
  14. package/dist/dialectTests/postgresql.js +0 -33
  15. package/dist/dialectTests/postgresql.js.map +0 -1
  16. package/dist/dialectTests/sqlite.js +0 -56
  17. package/dist/dialectTests/sqlite.js.map +0 -1
  18. package/dist/generator.js.map +0 -1
  19. package/dist/helpers/generateDatabaseType.js +0 -27
  20. package/dist/helpers/generateDatabaseType.js.map +0 -1
  21. package/dist/helpers/generateDatabaseType.test.js +0 -127
  22. package/dist/helpers/generateDatabaseType.test.js.map +0 -1
  23. package/dist/helpers/generateEnumType.js +0 -32
  24. package/dist/helpers/generateEnumType.js.map +0 -1
  25. package/dist/helpers/generateEnumType.test.js +0 -52
  26. package/dist/helpers/generateEnumType.test.js.map +0 -1
  27. package/dist/helpers/generateField.js +0 -38
  28. package/dist/helpers/generateField.js.map +0 -1
  29. package/dist/helpers/generateField.test.js +0 -132
  30. package/dist/helpers/generateField.test.js.map +0 -1
  31. package/dist/helpers/generateFieldType.js +0 -99
  32. package/dist/helpers/generateFieldType.js.map +0 -1
  33. package/dist/helpers/generateFieldType.test.js +0 -118
  34. package/dist/helpers/generateFieldType.test.js.map +0 -1
  35. package/dist/helpers/generateFile.js +0 -26
  36. package/dist/helpers/generateFile.js.map +0 -1
  37. package/dist/helpers/generateFile.test.js +0 -29
  38. package/dist/helpers/generateFile.test.js.map +0 -1
  39. package/dist/helpers/generateFiles.js +0 -100
  40. package/dist/helpers/generateFiles.js.map +0 -1
  41. package/dist/helpers/generateImplicitManyToManyModels.js +0 -86
  42. package/dist/helpers/generateImplicitManyToManyModels.js.map +0 -1
  43. package/dist/helpers/generateImplicitManyToManyModels.test.js +0 -636
  44. package/dist/helpers/generateImplicitManyToManyModels.test.js.map +0 -1
  45. package/dist/helpers/generateModel.js +0 -59
  46. package/dist/helpers/generateModel.js.map +0 -1
  47. package/dist/helpers/generateModel.test.js +0 -173
  48. package/dist/helpers/generateModel.test.js.map +0 -1
  49. package/dist/helpers/generateStringLiteralUnion.js +0 -16
  50. package/dist/helpers/generateStringLiteralUnion.js.map +0 -1
  51. package/dist/helpers/generateStringLiteralUnion.test.js +0 -22
  52. package/dist/helpers/generateStringLiteralUnion.test.js.map +0 -1
  53. package/dist/helpers/generateTypeOverrideFromDocumentation.js +0 -43
  54. package/dist/helpers/generateTypeOverrideFromDocumentation.js.map +0 -1
  55. package/dist/helpers/generateTypeOverrideFromDocumentation.test.js +0 -33
  56. package/dist/helpers/generateTypeOverrideFromDocumentation.test.js.map +0 -1
  57. package/dist/helpers/generateTypedReferenceNode.js +0 -12
  58. package/dist/helpers/generateTypedReferenceNode.js.map +0 -1
  59. package/dist/helpers/generateTypedReferenceNode.test.js +0 -11
  60. package/dist/helpers/generateTypedReferenceNode.test.js.map +0 -1
  61. package/dist/helpers/generatedEnumType.test.js +0 -65
  62. package/dist/helpers/generatedEnumType.test.js.map +0 -1
  63. package/dist/helpers/multiSchemaHelpers.js +0 -66
  64. package/dist/helpers/multiSchemaHelpers.js.map +0 -1
  65. package/dist/helpers/multiSchemaHelpers.test.js +0 -76
  66. package/dist/helpers/multiSchemaHelpers.test.js.map +0 -1
  67. package/dist/helpers/wrappedTypeHelpers.js +0 -27
  68. package/dist/helpers/wrappedTypeHelpers.js.map +0 -1
  69. package/dist/helpers/wrappedTypeHelpers.test.js +0 -27
  70. package/dist/helpers/wrappedTypeHelpers.test.js.map +0 -1
  71. package/dist/utils/applyJSDocWorkaround.js +0 -8
  72. package/dist/utils/applyJSDocWorkaround.js.map +0 -1
  73. package/dist/utils/formatFile.js +0 -53
  74. package/dist/utils/formatFile.js.map +0 -1
  75. package/dist/utils/formatFile.test.js +0 -13
  76. package/dist/utils/formatFile.test.js.map +0 -1
  77. package/dist/utils/isValidTSIdentifier.js +0 -5
  78. package/dist/utils/isValidTSIdentifier.js.map +0 -1
  79. package/dist/utils/normalizeCase.js +0 -12
  80. package/dist/utils/normalizeCase.js.map +0 -1
  81. package/dist/utils/normalizeCase.test.js +0 -37
  82. package/dist/utils/normalizeCase.test.js.map +0 -1
  83. package/dist/utils/sorted.js +0 -10
  84. package/dist/utils/sorted.js.map +0 -1
  85. package/dist/utils/testUtils.js +0 -42
  86. package/dist/utils/testUtils.js.map +0 -1
  87. package/dist/utils/validateConfig.js +0 -71
  88. package/dist/utils/validateConfig.js.map +0 -1
  89. package/dist/utils/validateConfig.test.js +0 -20
  90. package/dist/utils/validateConfig.test.js.map +0 -1
  91. package/dist/utils/words.js +0 -96
  92. package/dist/utils/words.js.map +0 -1
  93. package/dist/utils/writeFileSafely.js +0 -24
  94. package/dist/utils/writeFileSafely.js.map +0 -1
@@ -1,650 +0,0 @@
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
- const node_child_process_1 = require("node:child_process");
7
- const promises_1 = __importDefault(require("node:fs/promises"));
8
- const node_util_1 = require("node:util");
9
- const vitest_1 = require("vitest");
10
- const exec = (0, node_util_1.promisify)(node_child_process_1.exec);
11
- (0, vitest_1.beforeEach)(async () => {
12
- await promises_1.default.rename("./prisma", "./prisma-old").catch(() => { });
13
- });
14
- (0, vitest_1.afterEach)(async () => {
15
- await promises_1.default
16
- .rm("./prisma", {
17
- force: true,
18
- recursive: true,
19
- })
20
- .catch(() => { });
21
- await promises_1.default.rename("./prisma-old", "./prisma").catch(() => { });
22
- });
23
- (0, vitest_1.test)("End to end test", { timeout: 20000 }, async () => {
24
- await exec("yarn prisma init --datasource-provider sqlite");
25
- await promises_1.default.writeFile("./prisma/schema.prisma", `datasource db {
26
- provider = "sqlite"
27
- url = "file:./dev.db"
28
- }
29
-
30
- generator kysely {
31
- provider = "node ./dist/bin.js"
32
- }
33
-
34
- model TestUser {
35
- id String @id
36
- name String
37
- age Int
38
- rating Float
39
- updatedAt DateTime
40
- sprockets Sprocket[]
41
- }
42
-
43
- model Sprocket {
44
- id Int @id
45
- users TestUser[]
46
- }`);
47
- await exec("yarn prisma generate");
48
- const generatedSource = await promises_1.default.readFile("./prisma/generated/types.ts", {
49
- encoding: "utf-8",
50
- });
51
- (0, vitest_1.expect)(generatedSource).toContain(`export type SprocketToTestUser = {
52
- A: number;
53
- B: string;
54
- };`);
55
- (0, vitest_1.expect)(generatedSource).toContain("_SprocketToTestUser: SprocketToTestUser");
56
- (0, vitest_1.expect)(generatedSource).not.toContain("Insertable");
57
- });
58
- (0, vitest_1.test)("End to end test - with custom type override", { timeout: 20000 }, async () => {
59
- await exec("yarn prisma init --datasource-provider sqlite");
60
- await promises_1.default.writeFile("./prisma/schema.prisma", `datasource db {
61
- provider = "sqlite"
62
- url = "file:./dev.db"
63
- }
64
-
65
- generator kysely {
66
- provider = "node ./dist/bin.js"
67
- }
68
-
69
- model TestUser {
70
- id String @id
71
- name String
72
-
73
- /// @kyselyType('member' | 'owner')
74
- role String
75
- }`);
76
- await exec("yarn prisma generate");
77
- const generatedSource = await promises_1.default.readFile("./prisma/generated/types.ts", {
78
- encoding: "utf-8",
79
- });
80
- (0, vitest_1.expect)(generatedSource).toContain(`export type TestUser = {
81
- id: string;
82
- name: string;
83
- /**
84
- * @kyselyType('member' | 'owner')
85
- */
86
- role: 'member' | 'owner';
87
- };`);
88
- });
89
- (0, vitest_1.test)("End to end test - separate entrypoints", { timeout: 20000 }, async () => {
90
- await exec("yarn prisma init --datasource-provider mysql");
91
- await promises_1.default.writeFile("./prisma/schema.prisma", `datasource db {
92
- provider = "mysql"
93
- url = "mysql://root:password@localhost:3306/test"
94
- }
95
-
96
- generator kysely {
97
- provider = "node ./dist/bin.js"
98
- enumFileName = "enums.ts"
99
- }
100
-
101
- enum TestEnum {
102
- A
103
- B
104
- C
105
- }
106
-
107
- model TestUser {
108
- id String @id
109
- name String
110
- age Int
111
- rating Float
112
- updatedAt DateTime
113
- abc TestEnum
114
- }`);
115
- await exec("yarn prisma generate");
116
- const typeFile = await promises_1.default.readFile("./prisma/generated/types.ts", {
117
- encoding: "utf-8",
118
- });
119
- (0, vitest_1.expect)(typeFile).not.toContain("export const");
120
- (0, vitest_1.expect)(typeFile).toContain(`import type { TestEnum } from "./enums";`);
121
- const enumFile = await promises_1.default.readFile("./prisma/generated/enums.ts", {
122
- encoding: "utf-8",
123
- });
124
- (0, vitest_1.expect)(enumFile).toEqual(`export const TestEnum = {
125
- A: "A",
126
- B: "B",
127
- C: "C"
128
- } as const;
129
- export type TestEnum = (typeof TestEnum)[keyof typeof TestEnum];
130
- `);
131
- });
132
- (0, vitest_1.test)("End to end test - separate entrypoints but no enums", { timeout: 20000 }, async () => {
133
- await exec("yarn prisma init --datasource-provider sqlite");
134
- await promises_1.default.writeFile("./prisma/schema.prisma", `datasource db {
135
- provider = "sqlite"
136
- url = "file:./dev.db"
137
- }
138
-
139
- generator kysely {
140
- provider = "node ./dist/bin.js"
141
- enumFileName = "enums.ts"
142
- }
143
-
144
- model TestUser {
145
- id String @id
146
- name String
147
- age Int
148
- rating Float
149
- updatedAt DateTime
150
- }`);
151
- await exec("yarn prisma db push");
152
- await exec("yarn prisma generate");
153
- const typeFile = await promises_1.default.readFile("./prisma/generated/types.ts", {
154
- encoding: "utf-8",
155
- });
156
- (0, vitest_1.expect)(typeFile).not.toContain('from "./enums"');
157
- await (0, vitest_1.expect)(promises_1.default.readFile("./prisma/generated/enums.ts", {
158
- encoding: "utf-8",
159
- })).rejects.toThrow();
160
- });
161
- (0, vitest_1.test)("End to end test - multi-schema support", { timeout: 20000 }, async () => {
162
- await exec("yarn prisma init --datasource-provider postgresql");
163
- await promises_1.default.writeFile("./prisma/schema.prisma", `generator kysely {
164
- provider = "node ./dist/bin.js"
165
- previewFeatures = ["multiSchema"]
166
- }
167
-
168
- datasource db {
169
- provider = "postgresql"
170
- schemas = ["mammals", "birds"]
171
- url = env("TEST_DATABASE_URL")
172
- }
173
-
174
- model Elephant {
175
- id Int @id
176
- name String
177
-
178
- @@map("elephants")
179
- @@schema("mammals")
180
- }
181
-
182
- model Eagle {
183
- id Int @id
184
- name String
185
-
186
- @@map("eagles")
187
- @@schema("birds")
188
- }`);
189
- await exec("yarn prisma generate");
190
- const typeFile = await promises_1.default.readFile("./prisma/generated/types.ts", {
191
- encoding: "utf-8",
192
- });
193
- (0, vitest_1.expect)(typeFile).toContain(`export type DB = {
194
- "birds.eagles": Eagle;
195
- "mammals.elephants": Elephant;
196
- };`);
197
- });
198
- (0, vitest_1.test)("End to end test - multi-schema and filterBySchema support", { timeout: 20000 }, async () => {
199
- await exec("yarn prisma init --datasource-provider postgresql");
200
- await promises_1.default.writeFile("./prisma/schema.prisma", `generator kysely {
201
- provider = "node ./dist/bin.js"
202
- previewFeatures = ["multiSchema"]
203
- filterBySchema = ["mammals"]
204
- }
205
-
206
- datasource db {
207
- provider = "postgresql"
208
- schemas = ["mammals", "birds"]
209
- url = env("TEST_DATABASE_URL")
210
- }
211
-
212
- model Elephant {
213
- id Int @id
214
- name String
215
-
216
- @@map("elephants")
217
- @@schema("mammals")
218
- }
219
-
220
- model Eagle {
221
- id Int @id
222
- name String
223
-
224
- @@map("eagles")
225
- @@schema("birds")
226
- }`);
227
- await exec("yarn prisma generate");
228
- const typeFile = await promises_1.default.readFile("./prisma/generated/types.ts", {
229
- encoding: "utf-8",
230
- });
231
- (0, vitest_1.expect)(typeFile).toContain(`export type DB = {
232
- "mammals.elephants": Elephant;
233
- };`);
234
- });
235
- (0, vitest_1.test)("End to end test - multi-schema and groupBySchema support", { timeout: 20000 }, async () => {
236
- await exec("yarn prisma init --datasource-provider postgresql");
237
- await promises_1.default.writeFile("./prisma/schema.prisma", `
238
- generator kysely {
239
- provider = "node ./dist/bin.js"
240
- previewFeatures = ["multiSchema"]
241
- groupBySchema = true
242
- }
243
-
244
- datasource db {
245
- provider = "postgresql"
246
- schemas = ["mammals", "birds", "world"]
247
- url = env("TEST_DATABASE_URL")
248
- }
249
-
250
- model Elephant {
251
- id Int @id
252
- name String
253
- ability Ability @default(WALK)
254
- color Color
255
-
256
- @@map("elephants")
257
- @@schema("mammals")
258
- }
259
-
260
- model Eagle {
261
- id Int @id
262
- name String
263
- ability Ability @default(FLY)
264
-
265
- @@map("eagles")
266
- @@schema("birds")
267
- }
268
-
269
- enum Ability {
270
- FLY
271
- WALK
272
-
273
- @@schema("world")
274
- }
275
-
276
- enum Color {
277
- GRAY
278
- PINK
279
-
280
- @@schema("mammals")
281
- }
282
- `);
283
- await exec("yarn prisma generate");
284
- const typeFile = await promises_1.default.readFile("./prisma/generated/types.ts", {
285
- encoding: "utf-8",
286
- });
287
- (0, vitest_1.expect)(typeFile).toContain(`export namespace Birds {
288
- export type Eagle = {`);
289
- (0, vitest_1.expect)(typeFile).toContain(`export namespace Mammals {
290
- export const Color = {`);
291
- (0, vitest_1.expect)(typeFile).toContain("color: Mammals.Color;");
292
- (0, vitest_1.expect)(typeFile).toContain(`export type DB = {
293
- "birds.eagles": Birds.Eagle;
294
- "mammals.elephants": Mammals.Elephant;
295
- };`);
296
- });
297
- (0, vitest_1.test)("End to end test - multi-schema, groupBySchema and defaultSchema support", { timeout: 20000 }, async () => {
298
- await exec("yarn prisma init --datasource-provider postgresql");
299
- await promises_1.default.writeFile("./prisma/schema.prisma", `
300
- generator kysely {
301
- provider = "node ./dist/bin.js"
302
- previewFeatures = ["multiSchema"]
303
- groupBySchema = true
304
- defaultSchema = "fish"
305
- }
306
-
307
- datasource db {
308
- provider = "postgresql"
309
- schemas = ["mammals", "birds", "world", "fish"]
310
- url = env("TEST_DATABASE_URL")
311
- }
312
-
313
- model Elephant {
314
- id Int @id
315
- name String
316
- ability Ability @default(WALK)
317
- color Color
318
-
319
- @@map("elephants")
320
- @@schema("mammals")
321
- }
322
-
323
- model Eagle {
324
- id Int @id
325
- name String
326
- ability Ability @default(FLY)
327
-
328
- @@map("eagles")
329
- @@schema("birds")
330
- }
331
-
332
- model Shark {
333
- id Int @id
334
- name String
335
- color Color
336
-
337
- @@map("shark")
338
- @@schema("fish")
339
- }
340
-
341
- enum Ability {
342
- FLY
343
- WALK
344
-
345
- @@schema("world")
346
- }
347
-
348
- enum Color {
349
- GRAY
350
- PINK
351
-
352
- @@schema("mammals")
353
- }
354
- `);
355
- await exec("yarn prisma generate");
356
- const typeFile = await promises_1.default.readFile("./prisma/generated/types.ts", {
357
- encoding: "utf-8",
358
- });
359
- (0, vitest_1.expect)(typeFile).toContain(`export namespace Birds {
360
- export type Eagle = {`);
361
- (0, vitest_1.expect)(typeFile).toContain(`export namespace Mammals {
362
- export const Color = {`);
363
- (0, vitest_1.expect)(typeFile).toContain("export type Shark = {");
364
- (0, vitest_1.expect)(typeFile).toContain("color: Mammals.Color;");
365
- (0, vitest_1.expect)(typeFile).toContain(`export type DB = {
366
- "birds.eagles": Birds.Eagle;
367
- "mammals.elephants": Mammals.Elephant;
368
- shark: Shark;
369
- };`);
370
- });
371
- (0, vitest_1.test)("End to end test - multi-schema, groupBySchema and filterBySchema support", { timeout: 20000 }, async () => {
372
- await exec("yarn prisma init --datasource-provider postgresql");
373
- await promises_1.default.writeFile("./prisma/schema.prisma", `
374
- generator kysely {
375
- provider = "node ./dist/bin.js"
376
- previewFeatures = ["multiSchema"]
377
- groupBySchema = true
378
- filterBySchema = ["mammals", "world"]
379
- }
380
-
381
- datasource db {
382
- provider = "postgresql"
383
- schemas = ["mammals", "birds", "world"]
384
- url = env("TEST_DATABASE_URL")
385
- }
386
-
387
- model Elephant {
388
- id Int @id
389
- name String
390
- ability Ability @default(WALK)
391
- color Color
392
-
393
- @@map("elephants")
394
- @@schema("mammals")
395
- }
396
-
397
- model Eagle {
398
- id Int @id
399
- name String
400
- ability Ability @default(FLY)
401
-
402
- @@map("eagles")
403
- @@schema("birds")
404
- }
405
-
406
- enum Ability {
407
- FLY
408
- WALK
409
-
410
- @@schema("world")
411
- }
412
-
413
- enum Color {
414
- GRAY
415
- PINK
416
-
417
- @@schema("mammals")
418
- }
419
- `);
420
- await exec("yarn prisma generate");
421
- const typeFile = await promises_1.default.readFile("./prisma/generated/types.ts", {
422
- encoding: "utf-8",
423
- });
424
- (0, vitest_1.expect)(typeFile).not.toContain(`export namespace Birds {
425
- export type Eagle = {`);
426
- (0, vitest_1.expect)(typeFile).toContain(`export namespace Mammals {
427
- export const Color = {`);
428
- (0, vitest_1.expect)(typeFile).toContain("color: Mammals.Color;");
429
- (0, vitest_1.expect)(typeFile).toContain(`export type DB = {
430
- "mammals.elephants": Mammals.Elephant;
431
- };`);
432
- });
433
- (0, vitest_1.test)("End to end test - SQLite with JSON support", { timeout: 20000 }, async () => {
434
- await exec("yarn prisma init --datasource-provider sqlite");
435
- await promises_1.default.writeFile("./prisma/schema.prisma", `datasource db {
436
- provider = "sqlite"
437
- url = "file:./dev.db"
438
- }
439
-
440
- generator kysely {
441
- provider = "node ./dist/bin.js"
442
- }
443
-
444
- model TestUser {
445
- id String @id
446
- name String
447
- metadata Json // JSON field supported in SQLite since Prisma 6.2
448
- preferences Json? // Optional JSON field
449
-
450
- /// @kyselyType({ theme: 'light' | 'dark', language: string })
451
- settings Json
452
-
453
- createdAt DateTime @default(now())
454
- }
455
-
456
- model Product {
457
- id Int @id @default(autoincrement())
458
- name String
459
- details Json // Product details as JSON
460
-
461
- /// @kyselyType(string[])
462
- tags Json? // Optional tags as JSON array
463
- }`);
464
- await exec("yarn prisma generate");
465
- const generatedSource = await promises_1.default.readFile("./prisma/generated/types.ts", {
466
- encoding: "utf-8",
467
- });
468
- (0, vitest_1.expect)(generatedSource).toContain(`export type TestUser = {
469
- id: string;
470
- name: string;
471
- metadata: unknown;
472
- preferences: unknown | null;
473
- /**
474
- * @kyselyType({ theme: 'light' | 'dark', language: string })
475
- */
476
- settings: { theme: 'light' | 'dark', language: string };
477
- createdAt: Generated<string>;
478
- };`);
479
- (0, vitest_1.expect)(generatedSource).toContain(`export type Product = {
480
- id: Generated<number>;
481
- name: string;
482
- details: unknown;
483
- /**
484
- * @kyselyType(string[])
485
- */
486
- tags: string[] | null;
487
- };`);
488
- (0, vitest_1.expect)(generatedSource).toContain(`export type DB = {
489
- Product: Product;
490
- TestUser: TestUser;
491
- };`);
492
- });
493
- (0, vitest_1.test)("End to end test - multi-schema with views support", { timeout: 20000 }, async () => {
494
- await exec("yarn prisma init --datasource-provider postgresql");
495
- await promises_1.default.writeFile("./prisma/schema.prisma", `generator kysely {
496
- provider = "node ./dist/bin.js"
497
- previewFeatures = ["multiSchema", "views"]
498
- }
499
-
500
- datasource db {
501
- provider = "postgresql"
502
- schemas = ["public", "analytics"]
503
- url = env("TEST_DATABASE_URL")
504
- }
505
-
506
- model User {
507
- id Int @id
508
- name String
509
- email String
510
- posts Post[]
511
-
512
- @@schema("public")
513
- }
514
-
515
- model Post {
516
- id Int @id
517
- title String
518
- content String
519
- authorId Int
520
- author User @relation(fields: [authorId], references: [id])
521
-
522
- @@schema("public")
523
- }
524
-
525
- view UserStats {
526
- id Int @unique
527
- name String
528
- postCount Int
529
-
530
- @@schema("analytics")
531
- }
532
-
533
- view PostSummary {
534
- id Int @unique
535
- title String
536
- author String
537
-
538
- @@schema("public")
539
- }`);
540
- await exec("yarn prisma generate");
541
- const typeFile = await promises_1.default.readFile("./prisma/generated/types.ts", {
542
- encoding: "utf-8",
543
- });
544
- (0, vitest_1.expect)(typeFile).toContain(`export type DB = {
545
- "analytics.UserStats": UserStats;
546
- Post: Post;
547
- PostSummary: PostSummary;
548
- User: User;
549
- };`);
550
- (0, vitest_1.expect)(typeFile).toContain(`export type UserStats = {
551
- id: number;
552
- name: string;
553
- postCount: number;
554
- };`);
555
- (0, vitest_1.expect)(typeFile).toContain(`export type PostSummary = {
556
- id: number;
557
- title: string;
558
- author: string;
559
- };`);
560
- });
561
- (0, vitest_1.test)("End to end test - exportWrappedTypes", { timeout: 20000 }, async () => {
562
- await exec("yarn prisma init --datasource-provider sqlite");
563
- await promises_1.default.writeFile("./prisma/schema.prisma", `datasource db {
564
- provider = "sqlite"
565
- url = "file:./dev.db"
566
- }
567
-
568
- generator kysely {
569
- provider = "node ./dist/bin.js"
570
- exportWrappedTypes = true
571
- }
572
-
573
- model User {
574
- id String @id
575
- name String
576
- }`);
577
- await exec("yarn prisma generate");
578
- const generatedSource = await promises_1.default.readFile("./prisma/generated/types.ts", {
579
- encoding: "utf-8",
580
- });
581
- (0, vitest_1.expect)(generatedSource).toContain("export type UserTable = {");
582
- (0, vitest_1.expect)(generatedSource).toContain("export type User = Selectable<UserTable>;");
583
- (0, vitest_1.expect)(generatedSource).toContain("export type NewUser = Insertable<UserTable>;");
584
- (0, vitest_1.expect)(generatedSource).toContain("export type UserUpdate = Updateable<UserTable>;");
585
- (0, vitest_1.expect)(generatedSource).toContain("export type DB = {\n User: UserTable;\n};");
586
- });
587
- (0, vitest_1.test)("End to end test - groupBySchema and exportWrappedTypes support", { timeout: 20000 }, async () => {
588
- await exec("yarn prisma init --datasource-provider postgresql");
589
- await promises_1.default.writeFile("./prisma/schema.prisma", `
590
- generator kysely {
591
- provider = "node ./dist/bin.js"
592
- previewFeatures = ["multiSchema"]
593
- groupBySchema = true
594
- exportWrappedTypes = true
595
- }
596
-
597
- datasource db {
598
- provider = "postgresql"
599
- schemas = ["mammals", "birds", "world"]
600
- url = env("TEST_DATABASE_URL")
601
- }
602
-
603
- model Elephant {
604
- id Int @id
605
- name String
606
- ability Ability @default(WALK)
607
- color Color
608
-
609
- @@map("elephants")
610
- @@schema("mammals")
611
- }
612
-
613
- model Eagle {
614
- id Int @id
615
- name String
616
- ability Ability @default(FLY)
617
-
618
- @@map("eagles")
619
- @@schema("birds")
620
- }
621
-
622
- enum Ability {
623
- FLY
624
- WALK
625
-
626
- @@schema("world")
627
- }
628
-
629
- enum Color {
630
- GRAY
631
- PINK
632
-
633
- @@schema("mammals")
634
- }
635
- `);
636
- await exec("yarn prisma generate");
637
- const typeFile = await promises_1.default.readFile("./prisma/generated/types.ts", {
638
- encoding: "utf-8",
639
- });
640
- (0, vitest_1.expect)(typeFile).toContain(`export namespace Birds {
641
- export type EagleTable = {`);
642
- (0, vitest_1.expect)(typeFile).toContain(`export namespace Mammals {
643
- export const Color = {`);
644
- (0, vitest_1.expect)(typeFile).toContain("color: Mammals.Color;");
645
- (0, vitest_1.expect)(typeFile).toContain(`export type DB = {
646
- "birds.eagles": Birds.EagleTable;
647
- "mammals.elephants": Mammals.ElephantTable;
648
- };`);
649
- });
650
- //# sourceMappingURL=e2e.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"e2e.test.js","sourceRoot":"","sources":["../../src/__test__/e2e.test.ts"],"names":[],"mappings":"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"}
package/dist/bin.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";;;AACA,uBAAqB"}
package/dist/constants.js DELETED
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GENERATOR_NAME = void 0;
4
- exports.GENERATOR_NAME = "Kysely types";
5
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG,cAAc,CAAC"}