@danielfgray/pg-sourcerer 0.2.1 → 0.2.2

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 (164) hide show
  1. package/dist/cli.js +3 -4
  2. package/dist/cli.js.map +1 -1
  3. package/dist/config.d.ts +1 -1
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +1 -1
  6. package/dist/config.js.map +1 -1
  7. package/dist/errors.d.ts +14 -1
  8. package/dist/errors.d.ts.map +1 -1
  9. package/dist/errors.js +2 -0
  10. package/dist/errors.js.map +1 -1
  11. package/dist/generate.d.ts +5 -9
  12. package/dist/generate.d.ts.map +1 -1
  13. package/dist/generate.js +27 -29
  14. package/dist/generate.js.map +1 -1
  15. package/dist/index.d.ts +19 -12
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +25 -13
  18. package/dist/index.js.map +1 -1
  19. package/dist/init.d.ts.map +1 -1
  20. package/dist/init.js +39 -9
  21. package/dist/init.js.map +1 -1
  22. package/dist/ir/extensions/queries.d.ts +264 -0
  23. package/dist/ir/extensions/queries.d.ts.map +1 -0
  24. package/dist/ir/extensions/queries.js +153 -0
  25. package/dist/ir/extensions/queries.js.map +1 -0
  26. package/dist/ir/extensions/schema-builder.d.ts +61 -0
  27. package/dist/ir/extensions/schema-builder.d.ts.map +1 -0
  28. package/dist/ir/extensions/schema-builder.js +5 -0
  29. package/dist/ir/extensions/schema-builder.js.map +1 -0
  30. package/dist/lib/conjure.d.ts +66 -0
  31. package/dist/lib/conjure.d.ts.map +1 -1
  32. package/dist/lib/conjure.js +127 -29
  33. package/dist/lib/conjure.js.map +1 -1
  34. package/dist/lib/hex.d.ts +10 -3
  35. package/dist/lib/hex.d.ts.map +1 -1
  36. package/dist/lib/hex.js +18 -8
  37. package/dist/lib/hex.js.map +1 -1
  38. package/dist/plugins/arktype.d.ts +27 -14
  39. package/dist/plugins/arktype.d.ts.map +1 -1
  40. package/dist/plugins/arktype.js +166 -130
  41. package/dist/plugins/arktype.js.map +1 -1
  42. package/dist/plugins/effect.d.ts +53 -0
  43. package/dist/plugins/effect.d.ts.map +1 -0
  44. package/dist/plugins/effect.js +1074 -0
  45. package/dist/plugins/effect.js.map +1 -0
  46. package/dist/plugins/http-elysia.d.ts +32 -0
  47. package/dist/plugins/http-elysia.d.ts.map +1 -0
  48. package/dist/plugins/http-elysia.js +613 -0
  49. package/dist/plugins/http-elysia.js.map +1 -0
  50. package/dist/plugins/http-express.d.ts +36 -0
  51. package/dist/plugins/http-express.d.ts.map +1 -0
  52. package/dist/plugins/http-express.js +388 -0
  53. package/dist/plugins/http-express.js.map +1 -0
  54. package/dist/plugins/http-hono.d.ts +36 -0
  55. package/dist/plugins/http-hono.d.ts.map +1 -0
  56. package/dist/plugins/http-hono.js +453 -0
  57. package/dist/plugins/http-hono.js.map +1 -0
  58. package/dist/plugins/http-orpc.d.ts +55 -0
  59. package/dist/plugins/http-orpc.d.ts.map +1 -0
  60. package/dist/plugins/http-orpc.js +370 -0
  61. package/dist/plugins/http-orpc.js.map +1 -0
  62. package/dist/plugins/http-trpc.d.ts +59 -0
  63. package/dist/plugins/http-trpc.d.ts.map +1 -0
  64. package/dist/plugins/http-trpc.js +392 -0
  65. package/dist/plugins/http-trpc.js.map +1 -0
  66. package/dist/plugins/kysely/queries.d.ts +92 -0
  67. package/dist/plugins/kysely/queries.d.ts.map +1 -0
  68. package/dist/plugins/kysely/queries.js +1169 -0
  69. package/dist/plugins/kysely/queries.js.map +1 -0
  70. package/dist/plugins/kysely/shared.d.ts +59 -0
  71. package/dist/plugins/kysely/shared.d.ts.map +1 -0
  72. package/dist/plugins/kysely/shared.js +247 -0
  73. package/dist/plugins/kysely/shared.js.map +1 -0
  74. package/dist/plugins/kysely/types.d.ts +22 -0
  75. package/dist/plugins/kysely/types.d.ts.map +1 -0
  76. package/dist/plugins/kysely/types.js +428 -0
  77. package/dist/plugins/kysely/types.js.map +1 -0
  78. package/dist/plugins/kysely.d.ts +72 -0
  79. package/dist/plugins/kysely.d.ts.map +1 -0
  80. package/dist/plugins/kysely.js +906 -0
  81. package/dist/plugins/kysely.js.map +1 -0
  82. package/dist/plugins/sql-queries.d.ts +55 -11
  83. package/dist/plugins/sql-queries.d.ts.map +1 -1
  84. package/dist/plugins/sql-queries.js +467 -218
  85. package/dist/plugins/sql-queries.js.map +1 -1
  86. package/dist/plugins/types.d.ts +20 -14
  87. package/dist/plugins/types.d.ts.map +1 -1
  88. package/dist/plugins/types.js +90 -112
  89. package/dist/plugins/types.js.map +1 -1
  90. package/dist/plugins/valibot.d.ts +45 -0
  91. package/dist/plugins/valibot.d.ts.map +1 -0
  92. package/dist/plugins/valibot.js +422 -0
  93. package/dist/plugins/valibot.js.map +1 -0
  94. package/dist/plugins/zod.d.ts +27 -14
  95. package/dist/plugins/zod.d.ts.map +1 -1
  96. package/dist/plugins/zod.js +231 -166
  97. package/dist/plugins/zod.js.map +1 -1
  98. package/dist/services/artifact-store.d.ts +11 -1
  99. package/dist/services/artifact-store.d.ts.map +1 -1
  100. package/dist/services/artifact-store.js +9 -0
  101. package/dist/services/artifact-store.js.map +1 -1
  102. package/dist/services/core-providers.d.ts +15 -0
  103. package/dist/services/core-providers.d.ts.map +1 -0
  104. package/dist/services/core-providers.js +23 -0
  105. package/dist/services/core-providers.js.map +1 -0
  106. package/dist/services/emissions.d.ts +14 -0
  107. package/dist/services/emissions.d.ts.map +1 -1
  108. package/dist/services/emissions.js +86 -47
  109. package/dist/services/emissions.js.map +1 -1
  110. package/dist/services/execution.d.ts +35 -0
  111. package/dist/services/execution.d.ts.map +1 -0
  112. package/dist/services/execution.js +86 -0
  113. package/dist/services/execution.js.map +1 -0
  114. package/dist/services/file-builder.d.ts +4 -0
  115. package/dist/services/file-builder.d.ts.map +1 -1
  116. package/dist/services/file-builder.js.map +1 -1
  117. package/dist/services/inflection.d.ts +2 -2
  118. package/dist/services/inflection.d.ts.map +1 -1
  119. package/dist/services/inflection.js +4 -4
  120. package/dist/services/inflection.js.map +1 -1
  121. package/dist/services/ir-builder.d.ts.map +1 -1
  122. package/dist/services/ir-builder.js +10 -3
  123. package/dist/services/ir-builder.js.map +1 -1
  124. package/dist/services/pg-types.d.ts +31 -0
  125. package/dist/services/pg-types.d.ts.map +1 -1
  126. package/dist/services/pg-types.js +24 -0
  127. package/dist/services/pg-types.js.map +1 -1
  128. package/dist/services/plugin-runner.d.ts +27 -37
  129. package/dist/services/plugin-runner.d.ts.map +1 -1
  130. package/dist/services/plugin-runner.js +73 -171
  131. package/dist/services/plugin-runner.js.map +1 -1
  132. package/dist/services/plugin.d.ts +349 -217
  133. package/dist/services/plugin.d.ts.map +1 -1
  134. package/dist/services/plugin.js +182 -130
  135. package/dist/services/plugin.js.map +1 -1
  136. package/dist/services/resolution.d.ts +38 -0
  137. package/dist/services/resolution.d.ts.map +1 -0
  138. package/dist/services/resolution.js +242 -0
  139. package/dist/services/resolution.js.map +1 -0
  140. package/dist/services/service-registry.d.ts +74 -0
  141. package/dist/services/service-registry.d.ts.map +1 -0
  142. package/dist/services/service-registry.js +61 -0
  143. package/dist/services/service-registry.js.map +1 -0
  144. package/dist/services/symbols.d.ts +59 -0
  145. package/dist/services/symbols.d.ts.map +1 -1
  146. package/dist/services/symbols.js +16 -0
  147. package/dist/services/symbols.js.map +1 -1
  148. package/dist/testing.d.ts +4 -25
  149. package/dist/testing.d.ts.map +1 -1
  150. package/dist/testing.js +2 -23
  151. package/dist/testing.js.map +1 -1
  152. package/package.json +1 -1
  153. package/dist/plugins/effect-model.d.ts +0 -17
  154. package/dist/plugins/effect-model.d.ts.map +0 -1
  155. package/dist/plugins/effect-model.js +0 -409
  156. package/dist/plugins/effect-model.js.map +0 -1
  157. package/dist/plugins/kysely-queries.d.ts +0 -66
  158. package/dist/plugins/kysely-queries.d.ts.map +0 -1
  159. package/dist/plugins/kysely-queries.js +0 -951
  160. package/dist/plugins/kysely-queries.js.map +0 -1
  161. package/dist/plugins/kysely-types.d.ts +0 -35
  162. package/dist/plugins/kysely-types.d.ts.map +0 -1
  163. package/dist/plugins/kysely-types.js +0 -601
  164. package/dist/plugins/kysely-types.js.map +0 -1
@@ -0,0 +1,428 @@
1
+ // @ts-nocheck - TODO: migrate to new plugin API
2
+ /**
3
+ * Kysely Types Generation
4
+ *
5
+ * Generates table interfaces with Generated<T>, ColumnType<S, I, U>, and DB interface.
6
+ * Uses RLS permissions to determine Generated<T> wrapping.
7
+ */
8
+ import { Option, pipe } from "effect";
9
+ import { findEnumByPgName, findCompositeByPgName, PgTypeOid } from "../../services/pg-types.js";
10
+ import { getEnumEntities, getTableEntities, getCompositeEntities } from "../../ir/semantic-ir.js";
11
+ import { conjure } from "../../lib/conjure.js";
12
+ import { isEnumType, getPgTypeName } from "../../lib/field-utils.js";
13
+ import { getExtensionTypeMapping } from "../../services/pg-types.js";
14
+ import { SCALAR_TYPES, COMPLEX_TYPES, GENERATED_TYPE_DEF, ARRAY_TYPE_DEF, ARRAY_TYPE_IMPL_DEF, } from "./shared.js";
15
+ const { ts, exp } = conjure;
16
+ /** Default config values */
17
+ export const defaultTypesConfig = {
18
+ outputFile: "db.ts",
19
+ runtimeEnums: false,
20
+ typeOnlyImports: true,
21
+ };
22
+ // ============================================================================
23
+ // Type Resolution
24
+ // ============================================================================
25
+ /** Build TypeHintFieldMatch from field and context */
26
+ const buildFieldMatch = (field, ctx) => ({
27
+ schema: ctx.schemaName,
28
+ table: ctx.tableName,
29
+ column: field.columnName,
30
+ pgType: field.isArray && field.elementTypeName
31
+ ? field.elementTypeName
32
+ : (field.pgAttribute.getType()?.typname ?? ""),
33
+ });
34
+ /**
35
+ * Resolve a field to its Kysely type.
36
+ * Handles: TypeHints, enums, complex types, scalar types, extensions.
37
+ */
38
+ function resolveFieldType(field, ctx) {
39
+ const pgType = field.pgAttribute.getType();
40
+ const typeName = pgType?.typname ?? "";
41
+ // 1. Check TypeHints first (highest priority)
42
+ const fieldMatch = buildFieldMatch(field, ctx);
43
+ const tsTypeHint = ctx.typeHints.getHint(fieldMatch, "tsType");
44
+ if (Option.isSome(tsTypeHint)) {
45
+ const hintTypeName = tsTypeHint.value;
46
+ const importPath = ctx.typeHints.getHint(fieldMatch, "import");
47
+ return {
48
+ selectType: ts.ref(hintTypeName),
49
+ needsColumnType: false,
50
+ externalImport: pipe(importPath, Option.map(path => ({ name: hintTypeName, from: path })), Option.getOrUndefined),
51
+ };
52
+ }
53
+ // 2. Check if it's an enum
54
+ if (isEnumType(field)) {
55
+ const enumName = getPgTypeName(field);
56
+ if (enumName) {
57
+ const enumDef = findEnumByPgName(ctx.enums, enumName);
58
+ if (Option.isSome(enumDef)) {
59
+ return {
60
+ selectType: ts.ref(enumDef.value.name),
61
+ needsColumnType: false,
62
+ };
63
+ }
64
+ }
65
+ }
66
+ // 3. Check if it's a composite type
67
+ if (pgType?.typtype === "c") {
68
+ const compositeName = getPgTypeName(field);
69
+ if (compositeName) {
70
+ const compositeDef = findCompositeByPgName(ctx.composites, compositeName);
71
+ if (Option.isSome(compositeDef)) {
72
+ return {
73
+ selectType: ts.ref(compositeDef.value.name),
74
+ needsColumnType: false,
75
+ };
76
+ }
77
+ }
78
+ }
79
+ // 4. Check complex types (need ColumnType wrapper)
80
+ const complexType = COMPLEX_TYPES[typeName];
81
+ if (complexType) {
82
+ return {
83
+ selectType: complexType.select(),
84
+ insertType: complexType.insert(),
85
+ updateType: complexType.update(),
86
+ needsColumnType: true,
87
+ externalImport: complexType.import,
88
+ };
89
+ }
90
+ // 5. Check simple scalar types
91
+ const scalarBuilder = SCALAR_TYPES[typeName];
92
+ if (scalarBuilder) {
93
+ return {
94
+ selectType: scalarBuilder(),
95
+ needsColumnType: false,
96
+ };
97
+ }
98
+ // 6. Check extension types (citext, etc.)
99
+ if (pgType) {
100
+ const extType = getExtensionTypeMapping(typeName, String(pgType.typnamespace), ctx.extensions);
101
+ if (Option.isSome(extType)) {
102
+ return {
103
+ selectType: ts.fromString(extType.value),
104
+ needsColumnType: false,
105
+ };
106
+ }
107
+ }
108
+ // 7. Default to string (PostgreSQL sends unknown types as strings)
109
+ return {
110
+ selectType: ts.string(),
111
+ needsColumnType: false,
112
+ };
113
+ }
114
+ /**
115
+ * Build the final field type with array/nullable/Generated wrappers.
116
+ */
117
+ function buildFieldType(field, kyselyType, needsGenerated) {
118
+ let baseType;
119
+ // If complex type, wrap in ColumnType<S, I, U>
120
+ if (kyselyType.needsColumnType && kyselyType.insertType && kyselyType.updateType) {
121
+ baseType = ts.ref("ColumnType", [kyselyType.selectType, kyselyType.insertType, kyselyType.updateType]);
122
+ }
123
+ else {
124
+ baseType = kyselyType.selectType;
125
+ }
126
+ // Wrap in array if needed
127
+ if (field.isArray) {
128
+ // For simple types, use T[]
129
+ // For complex types, use ArrayType<T>
130
+ if (kyselyType.needsColumnType) {
131
+ baseType = ts.ref("ArrayType", [baseType]);
132
+ }
133
+ else {
134
+ baseType = ts.array(baseType);
135
+ }
136
+ }
137
+ // Wrap in nullable if needed
138
+ if (field.nullable) {
139
+ baseType = ts.nullable(baseType);
140
+ }
141
+ // Wrap in Generated<T> if field has default and is not insertable
142
+ if (needsGenerated) {
143
+ baseType = ts.ref("Generated", [baseType]);
144
+ }
145
+ return baseType;
146
+ }
147
+ /**
148
+ * Determine if a field should be wrapped in Generated<T>.
149
+ *
150
+ * A field is Generated when:
151
+ * - It has a default value, AND
152
+ * - It's not required on insert (either auto-increment or RLS blocks insert)
153
+ */
154
+ function isGeneratedField(field) {
155
+ if (!field.hasDefault)
156
+ return false;
157
+ // If field can't be inserted via RLS, it's generated
158
+ if (!field.permissions.canInsert)
159
+ return true;
160
+ // Check for serial/identity columns (auto-incrementing)
161
+ const pgType = field.pgAttribute.getType();
162
+ if (!pgType)
163
+ return false;
164
+ // Check for identity columns (GENERATED ALWAYS AS IDENTITY)
165
+ if (field.isIdentity)
166
+ return true;
167
+ // Check for generated columns (GENERATED ALWAYS AS ...)
168
+ if (field.isGenerated)
169
+ return true;
170
+ // serial types have specific OIDs that resolve to int4/int8
171
+ // but the attribute itself may have attidentity or atthasdef
172
+ // For now, use a heuristic: if it's an integer with a default, likely generated
173
+ const typeOid = Number(pgType._id);
174
+ const isIntegerType = typeOid === PgTypeOid.Int2 || typeOid === PgTypeOid.Int4 || typeOid === PgTypeOid.Int8;
175
+ // If it's an integer primary key with a default, it's likely auto-increment
176
+ // This is a simplification - proper detection would check sequences
177
+ if (isIntegerType && field.hasDefault) {
178
+ // Check if it's a primary key (best effort)
179
+ const constraints = field.pgAttribute.getClass()?.getConstraints() ?? [];
180
+ const isPrimaryKey = constraints.some(c => c.contype === "p" && c.conkey?.includes(field.pgAttribute.attnum));
181
+ if (isPrimaryKey)
182
+ return true;
183
+ }
184
+ return false;
185
+ }
186
+ // ============================================================================
187
+ // Statement Generators
188
+ // ============================================================================
189
+ /**
190
+ * Generate enum type alias: `export type Status = "active" | "inactive"`
191
+ */
192
+ function generateEnumStatement(enumEntity) {
193
+ return exp.typeAlias(enumEntity.name, { capability: "types:kysely", entity: enumEntity.name }, ts.union(...enumEntity.values.map(v => ts.literal(v))));
194
+ }
195
+ /**
196
+ * Generate table interface with all column types.
197
+ */
198
+ function generateTableInterface(entity, ctx) {
199
+ const properties = [];
200
+ // Use the row shape for column definitions
201
+ for (const field of entity.shapes.row.fields) {
202
+ // Skip fields that aren't selectable via RLS
203
+ if (!field.permissions.canSelect)
204
+ continue;
205
+ const kyselyType = resolveFieldType(field, ctx);
206
+ const needsGenerated = isGeneratedField(field);
207
+ const fieldType = buildFieldType(field, kyselyType, needsGenerated);
208
+ properties.push({
209
+ name: field.name,
210
+ type: fieldType,
211
+ });
212
+ }
213
+ return exp.interface(entity.name, { capability: "types:kysely", entity: entity.name }, properties);
214
+ }
215
+ /**
216
+ * Generate composite type interface.
217
+ *
218
+ * Composite types are simpler than tables - they just have fields,
219
+ * no shapes, no Generated wrapping (composites can't have defaults).
220
+ */
221
+ function generateCompositeInterface(composite, ctx) {
222
+ const properties = [];
223
+ for (const field of composite.fields) {
224
+ const kyselyType = resolveFieldType(field, ctx);
225
+ // Composites don't have Generated wrapping - they're just data structures
226
+ const fieldType = buildFieldType(field, kyselyType, false);
227
+ properties.push({
228
+ name: field.name,
229
+ type: fieldType,
230
+ });
231
+ }
232
+ return exp.interface(composite.name, { capability: "types:kysely", entity: composite.name }, properties);
233
+ }
234
+ /**
235
+ * Generate DB interface: `export interface DB { 'schema.table': Table }`
236
+ */
237
+ function generateDBInterface(entities, defaultSchemas) {
238
+ const properties = [];
239
+ for (const entity of entities) {
240
+ // Skip entities that aren't selectable
241
+ if (!entity.permissions.canSelect)
242
+ continue;
243
+ // Use schema-qualified key if not in default schema
244
+ const key = defaultSchemas.includes(entity.schemaName)
245
+ ? entity.pgName
246
+ : `${entity.schemaName}.${entity.pgName}`;
247
+ properties.push({
248
+ name: key,
249
+ type: ts.ref(entity.name),
250
+ });
251
+ }
252
+ // Sort by key for stable output
253
+ properties.sort((a, b) => a.name.localeCompare(b.name));
254
+ return exp.interface("DB", { capability: "types:kysely", entity: "DB" }, properties);
255
+ }
256
+ function collectImports(entities, composites, ctx) {
257
+ const kyselyImports = new Set();
258
+ const externalImports = new Map();
259
+ const usedEnums = new Set();
260
+ let needsJsonTypes = false;
261
+ let needsArrayType = false;
262
+ let needsGenerated = false;
263
+ // Helper to process a single field
264
+ const processField = (field, schemaName, tableName, checkGenerated) => {
265
+ const kyselyType = resolveFieldType(field, {
266
+ ...ctx,
267
+ schemaName,
268
+ tableName,
269
+ });
270
+ // Check for ColumnType usage
271
+ if (kyselyType.needsColumnType) {
272
+ kyselyImports.add("ColumnType");
273
+ }
274
+ // Check for external imports
275
+ if (kyselyType.externalImport) {
276
+ const { name, from } = kyselyType.externalImport;
277
+ if (!externalImports.has(from)) {
278
+ externalImports.set(from, new Set());
279
+ }
280
+ externalImports.get(from).add(name);
281
+ }
282
+ // Check for enum usage
283
+ if (isEnumType(field)) {
284
+ const enumName = getPgTypeName(field);
285
+ if (enumName) {
286
+ const enumDef = findEnumByPgName(ctx.enums, enumName);
287
+ if (Option.isSome(enumDef)) {
288
+ usedEnums.add(enumDef.value.name);
289
+ }
290
+ }
291
+ }
292
+ // Check for JSON types
293
+ const pgType = field.pgAttribute.getType();
294
+ if (pgType?.typname === "json" || pgType?.typname === "jsonb") {
295
+ needsJsonTypes = true;
296
+ }
297
+ // Check for complex array types
298
+ if (field.isArray && kyselyType.needsColumnType) {
299
+ needsArrayType = true;
300
+ }
301
+ // Check for Generated (only for table fields)
302
+ if (checkGenerated && isGeneratedField(field)) {
303
+ needsGenerated = true;
304
+ }
305
+ };
306
+ // Process table entity fields
307
+ for (const entity of entities) {
308
+ if (!entity.permissions.canSelect)
309
+ continue;
310
+ for (const field of entity.shapes.row.fields) {
311
+ if (!field.permissions.canSelect)
312
+ continue;
313
+ processField(field, entity.schemaName, entity.pgName, true);
314
+ }
315
+ }
316
+ // Process composite entity fields
317
+ for (const composite of composites) {
318
+ for (const field of composite.fields) {
319
+ processField(field, composite.schemaName, composite.pgName, false);
320
+ }
321
+ }
322
+ return {
323
+ kyselyImports,
324
+ externalImports,
325
+ usedEnums,
326
+ needsJsonTypes,
327
+ needsArrayType,
328
+ needsGenerated,
329
+ };
330
+ }
331
+ // ============================================================================
332
+ // Core Generation Function
333
+ // ============================================================================
334
+ /**
335
+ * Generate Kysely types from the IR.
336
+ *
337
+ * @param ctx - Plugin context for file emission and services
338
+ * @param config - Types configuration (partial, defaults applied)
339
+ */
340
+ export function generateKyselyTypes(ctx, config = {}) {
341
+ // Apply defaults
342
+ const resolvedConfig = {
343
+ ...defaultTypesConfig,
344
+ ...config,
345
+ };
346
+ const { ir, typeHints } = ctx;
347
+ const enumEntities = getEnumEntities(ir);
348
+ const compositeEntities = getCompositeEntities(ir).filter(e => e.tags.omit !== true);
349
+ const tableEntities = getTableEntities(ir).filter(e => e.tags.omit !== true);
350
+ const defaultSchemas = ir.schemas;
351
+ // Build field context
352
+ const fieldCtx = {
353
+ schemaName: "", // Will be set per-entity
354
+ tableName: "",
355
+ enums: enumEntities,
356
+ composites: compositeEntities,
357
+ extensions: ir.extensions,
358
+ typeHints,
359
+ defaultSchemas,
360
+ };
361
+ // Collect what imports we need
362
+ const imports = collectImports(tableEntities, compositeEntities, fieldCtx);
363
+ // Build statements
364
+ const statements = [];
365
+ // Generate enum types
366
+ for (const enumEntity of enumEntities) {
367
+ if (enumEntity.tags.omit === true)
368
+ continue;
369
+ statements.push(generateEnumStatement(enumEntity));
370
+ }
371
+ // Generate composite type interfaces
372
+ for (const composite of compositeEntities) {
373
+ statements.push(generateCompositeInterface(composite, {
374
+ ...fieldCtx,
375
+ schemaName: composite.schemaName,
376
+ tableName: composite.pgName,
377
+ }));
378
+ }
379
+ // Generate table interfaces
380
+ for (const entity of tableEntities) {
381
+ statements.push(generateTableInterface(entity, {
382
+ ...fieldCtx,
383
+ schemaName: entity.schemaName,
384
+ tableName: entity.pgName,
385
+ }));
386
+ }
387
+ // Generate DB interface
388
+ statements.push(generateDBInterface(tableEntities, defaultSchemas));
389
+ // Build the file
390
+ const file = ctx.file(resolvedConfig.outputFile);
391
+ // Add Kysely imports
392
+ if (imports.kyselyImports.size > 0) {
393
+ file.import({
394
+ kind: "package",
395
+ types: [...imports.kyselyImports],
396
+ from: "kysely",
397
+ });
398
+ }
399
+ // Add external imports
400
+ for (const [from, names] of imports.externalImports) {
401
+ file.import({
402
+ kind: "relative",
403
+ types: [...names],
404
+ from,
405
+ });
406
+ }
407
+ // Build header with helper types
408
+ const helperTypes = [];
409
+ if (imports.needsGenerated) {
410
+ helperTypes.push(`export type Generated<T> = ${GENERATED_TYPE_DEF};`);
411
+ }
412
+ if (imports.needsArrayType) {
413
+ helperTypes.push(`export type ArrayType<T> = ${ARRAY_TYPE_DEF};`);
414
+ helperTypes.push(`export type ArrayTypeImpl<T> = ${ARRAY_TYPE_IMPL_DEF};`);
415
+ }
416
+ if (imports.needsJsonTypes) {
417
+ helperTypes.push(`export type JsonPrimitive = boolean | number | string | null;`);
418
+ helperTypes.push(`export type JsonObject = { [x: string]: JsonValue | undefined };`);
419
+ helperTypes.push(`export type JsonArray = JsonValue[];`);
420
+ helperTypes.push(`export type JsonValue = JsonArray | JsonObject | JsonPrimitive;`);
421
+ }
422
+ if (helperTypes.length > 0) {
423
+ file.header(helperTypes.join("\n\n"));
424
+ }
425
+ // Add the main content
426
+ file.ast(conjure.symbolProgram(...statements)).emit();
427
+ }
428
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/plugins/kysely/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { definePlugin } from "../services/plugin.js";
2
+ /**
3
+ * Configuration for the kysely plugin
4
+ */
5
+ export interface KyselyConfig {
6
+ /** Output directory for generated files */
7
+ readonly outputDir?: string;
8
+ /** DB interface type name */
9
+ readonly dbTypeName?: string;
10
+ /** Use camelCase for field names (true) or keep original (false) */
11
+ readonly camelCase?: boolean;
12
+ /** Use runtime enums instead of string literal unions */
13
+ readonly runtimeEnums?: boolean;
14
+ /** Use type-only imports (recommended) */
15
+ readonly typeOnlyImports?: boolean;
16
+ /** Whether to generate query functions (default: true) */
17
+ readonly generateQueries?: boolean;
18
+ /**
19
+ * Path to import DB type from (relative to query files).
20
+ * Defaults to "./${dbTypeName}.js" since both are in the same outputDir.
21
+ */
22
+ readonly dbTypesPath?: string;
23
+ /**
24
+ * Whether to call .execute() / .executeTakeFirst() on queries.
25
+ * When true (default), methods return Promise<Row> or Promise<Row[]>.
26
+ */
27
+ readonly executeQueries?: boolean;
28
+ /**
29
+ * Whether to generate listMany() method for unfiltered table scans.
30
+ * Disabled by default since unfiltered scans don't use indexes.
31
+ */
32
+ readonly generateListMany?: boolean;
33
+ /** Whether to generate function wrappers for stored functions. */
34
+ readonly generateFunctions?: boolean;
35
+ /** Output file name for scalar function wrappers (relative to outputDir). */
36
+ readonly functionsFile?: string;
37
+ /**
38
+ * Custom export name function for CRUD/lookup methods.
39
+ * @default (_entityName, methodName) => camelCase(methodName)
40
+ */
41
+ readonly exportName?: ExportNameFn;
42
+ /**
43
+ * Export style for generated query functions.
44
+ * - "flat": Individual exports (e.g., `export const findById = ...`)
45
+ * - "namespace": Single object export (e.g., `export const User = { findById: ... }`)
46
+ */
47
+ readonly exportStyle?: "flat" | "namespace";
48
+ /**
49
+ * Use explicit column lists instead of .selectAll().
50
+ * When true, generates .select(['col1', 'col2']) which excludes omitted fields at runtime.
51
+ */
52
+ readonly explicitColumns?: boolean;
53
+ /**
54
+ * Whether to pass db as first parameter to each function.
55
+ * When true (default), functions take `db: Kysely<DB>` as first arg.
56
+ */
57
+ readonly dbAsParameter?: boolean;
58
+ /**
59
+ * Header content to prepend to each generated query file.
60
+ * Use this to provide imports when dbAsParameter is false.
61
+ */
62
+ readonly header?: string;
63
+ /** Default limit for listMany queries. */
64
+ readonly defaultLimit?: number;
65
+ }
66
+ /**
67
+ * Function to generate export names for CRUD/lookup methods.
68
+ */
69
+ type ExportNameFn = (entityName: string, methodName: string) => string;
70
+ export declare function kysely(config: KyselyConfig): ReturnType<typeof definePlugin>;
71
+ export {};
72
+ //# sourceMappingURL=kysely.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kysely.d.ts","sourceRoot":"","sources":["../../src/plugins/kysely.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,YAAY,EAAsB,MAAM,uBAAuB,CAAC;AAgCzE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,2CAA2C;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,6BAA6B;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,oEAAoE;IACpE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,yDAAyD;IACzD,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,0CAA0C;IAC1C,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,0DAA0D;IAC1D,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,kEAAkE;IAClE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAC5C;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,0CAA0C;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAsBD;;GAEG;AACH,KAAK,YAAY,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;AAo5BvE,wBAAgB,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAkO5E"}