@danielfgray/pg-sourcerer 0.1.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 (145) hide show
  1. package/dist/cli.d.ts +3 -0
  2. package/dist/cli.d.ts.map +1 -0
  3. package/dist/cli.js +104 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/config.d.ts +133 -0
  6. package/dist/config.d.ts.map +1 -0
  7. package/dist/config.js +47 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/errors.d.ts +129 -0
  10. package/dist/errors.d.ts.map +1 -0
  11. package/dist/errors.js +41 -0
  12. package/dist/errors.js.map +1 -0
  13. package/dist/generate.d.ts +75 -0
  14. package/dist/generate.d.ts.map +1 -0
  15. package/dist/generate.js +183 -0
  16. package/dist/generate.js.map +1 -0
  17. package/dist/index.d.ts +35 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +62 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/init.d.ts +4 -0
  22. package/dist/init.d.ts.map +1 -0
  23. package/dist/init.js +229 -0
  24. package/dist/init.js.map +1 -0
  25. package/dist/ir/index.d.ts +7 -0
  26. package/dist/ir/index.d.ts.map +1 -0
  27. package/dist/ir/index.js +7 -0
  28. package/dist/ir/index.js.map +1 -0
  29. package/dist/ir/relation-graph.d.ts +113 -0
  30. package/dist/ir/relation-graph.d.ts.map +1 -0
  31. package/dist/ir/relation-graph.js +232 -0
  32. package/dist/ir/relation-graph.js.map +1 -0
  33. package/dist/ir/semantic-ir.d.ts +448 -0
  34. package/dist/ir/semantic-ir.d.ts.map +1 -0
  35. package/dist/ir/semantic-ir.js +138 -0
  36. package/dist/ir/semantic-ir.js.map +1 -0
  37. package/dist/ir/smart-tags.d.ts +24 -0
  38. package/dist/ir/smart-tags.d.ts.map +1 -0
  39. package/dist/ir/smart-tags.js +30 -0
  40. package/dist/ir/smart-tags.js.map +1 -0
  41. package/dist/lib/conjure.d.ts +431 -0
  42. package/dist/lib/conjure.d.ts.map +1 -0
  43. package/dist/lib/conjure.js +697 -0
  44. package/dist/lib/conjure.js.map +1 -0
  45. package/dist/lib/field-utils.d.ts +61 -0
  46. package/dist/lib/field-utils.d.ts.map +1 -0
  47. package/dist/lib/field-utils.js +132 -0
  48. package/dist/lib/field-utils.js.map +1 -0
  49. package/dist/lib/hex.d.ts +117 -0
  50. package/dist/lib/hex.d.ts.map +1 -0
  51. package/dist/lib/hex.js +185 -0
  52. package/dist/lib/hex.js.map +1 -0
  53. package/dist/plugins/arktype.d.ts +11 -0
  54. package/dist/plugins/arktype.d.ts.map +1 -0
  55. package/dist/plugins/arktype.js +207 -0
  56. package/dist/plugins/arktype.js.map +1 -0
  57. package/dist/plugins/effect-model.d.ts +10 -0
  58. package/dist/plugins/effect-model.d.ts.map +1 -0
  59. package/dist/plugins/effect-model.js +261 -0
  60. package/dist/plugins/effect-model.js.map +1 -0
  61. package/dist/plugins/kysely-queries.d.ts +7 -0
  62. package/dist/plugins/kysely-queries.d.ts.map +1 -0
  63. package/dist/plugins/kysely-queries.js +380 -0
  64. package/dist/plugins/kysely-queries.js.map +1 -0
  65. package/dist/plugins/sql-queries.d.ts +6 -0
  66. package/dist/plugins/sql-queries.d.ts.map +1 -0
  67. package/dist/plugins/sql-queries.js +249 -0
  68. package/dist/plugins/sql-queries.js.map +1 -0
  69. package/dist/plugins/types.d.ts +18 -0
  70. package/dist/plugins/types.d.ts.map +1 -0
  71. package/dist/plugins/types.js +263 -0
  72. package/dist/plugins/types.js.map +1 -0
  73. package/dist/plugins/zod.d.ts +11 -0
  74. package/dist/plugins/zod.d.ts.map +1 -0
  75. package/dist/plugins/zod.js +180 -0
  76. package/dist/plugins/zod.js.map +1 -0
  77. package/dist/services/artifact-store.d.ts +55 -0
  78. package/dist/services/artifact-store.d.ts.map +1 -0
  79. package/dist/services/artifact-store.js +51 -0
  80. package/dist/services/artifact-store.js.map +1 -0
  81. package/dist/services/config-loader.d.ts +45 -0
  82. package/dist/services/config-loader.d.ts.map +1 -0
  83. package/dist/services/config-loader.js +113 -0
  84. package/dist/services/config-loader.js.map +1 -0
  85. package/dist/services/emissions.d.ts +89 -0
  86. package/dist/services/emissions.d.ts.map +1 -0
  87. package/dist/services/emissions.js +194 -0
  88. package/dist/services/emissions.js.map +1 -0
  89. package/dist/services/file-builder.d.ts +81 -0
  90. package/dist/services/file-builder.d.ts.map +1 -0
  91. package/dist/services/file-builder.js +112 -0
  92. package/dist/services/file-builder.js.map +1 -0
  93. package/dist/services/file-writer.d.ts +57 -0
  94. package/dist/services/file-writer.d.ts.map +1 -0
  95. package/dist/services/file-writer.js +76 -0
  96. package/dist/services/file-writer.js.map +1 -0
  97. package/dist/services/inflection.d.ts +227 -0
  98. package/dist/services/inflection.d.ts.map +1 -0
  99. package/dist/services/inflection.js +350 -0
  100. package/dist/services/inflection.js.map +1 -0
  101. package/dist/services/introspection.d.ts +46 -0
  102. package/dist/services/introspection.d.ts.map +1 -0
  103. package/dist/services/introspection.js +99 -0
  104. package/dist/services/introspection.js.map +1 -0
  105. package/dist/services/ir-builder.d.ts +46 -0
  106. package/dist/services/ir-builder.d.ts.map +1 -0
  107. package/dist/services/ir-builder.js +923 -0
  108. package/dist/services/ir-builder.js.map +1 -0
  109. package/dist/services/ir.d.ts +28 -0
  110. package/dist/services/ir.d.ts.map +1 -0
  111. package/dist/services/ir.js +25 -0
  112. package/dist/services/ir.js.map +1 -0
  113. package/dist/services/pg-types.d.ts +197 -0
  114. package/dist/services/pg-types.d.ts.map +1 -0
  115. package/dist/services/pg-types.js +274 -0
  116. package/dist/services/pg-types.js.map +1 -0
  117. package/dist/services/plugin-meta.d.ts +33 -0
  118. package/dist/services/plugin-meta.d.ts.map +1 -0
  119. package/dist/services/plugin-meta.js +24 -0
  120. package/dist/services/plugin-meta.js.map +1 -0
  121. package/dist/services/plugin-runner.d.ts +52 -0
  122. package/dist/services/plugin-runner.d.ts.map +1 -0
  123. package/dist/services/plugin-runner.js +182 -0
  124. package/dist/services/plugin-runner.js.map +1 -0
  125. package/dist/services/plugin.d.ts +286 -0
  126. package/dist/services/plugin.d.ts.map +1 -0
  127. package/dist/services/plugin.js +132 -0
  128. package/dist/services/plugin.js.map +1 -0
  129. package/dist/services/smart-tags-parser.d.ts +37 -0
  130. package/dist/services/smart-tags-parser.d.ts.map +1 -0
  131. package/dist/services/smart-tags-parser.js +79 -0
  132. package/dist/services/smart-tags-parser.js.map +1 -0
  133. package/dist/services/symbols.d.ts +85 -0
  134. package/dist/services/symbols.d.ts.map +1 -0
  135. package/dist/services/symbols.js +128 -0
  136. package/dist/services/symbols.js.map +1 -0
  137. package/dist/services/type-hints.d.ts +62 -0
  138. package/dist/services/type-hints.d.ts.map +1 -0
  139. package/dist/services/type-hints.js +117 -0
  140. package/dist/services/type-hints.js.map +1 -0
  141. package/dist/testing.d.ts +77 -0
  142. package/dist/testing.d.ts.map +1 -0
  143. package/dist/testing.js +84 -0
  144. package/dist/testing.js.map +1 -0
  145. package/package.json +74 -0
@@ -0,0 +1,207 @@
1
+ /**
2
+ * ArkType Plugin - Generate ArkType schemas for entities
3
+ *
4
+ * Generates ArkType type definitions for Row, Insert, Update, and Patch shapes,
5
+ * with inferred TypeScript types.
6
+ *
7
+ * ArkType uses string-based syntax for type definitions:
8
+ * - `type({ foo: "string", bar: "number?" })` for objects
9
+ * - `"string | null"` for nullable
10
+ * - `"string[]"` for arrays
11
+ * - Union syntax `"'a' | 'b' | 'c'"` for enums
12
+ */
13
+ import { Schema as S } from "effect";
14
+ import { definePlugin } from "../services/plugin.js";
15
+ import { TsType } from "../services/pg-types.js";
16
+ import { getTableEntities, getEnumEntities } from "../ir/semantic-ir.js";
17
+ import { conjure } from "../lib/conjure.js";
18
+ import { isUuidType, isDateType, resolveFieldType } from "../lib/field-utils.js";
19
+ const { ts, exp, obj } = conjure;
20
+ // ============================================================================
21
+ // Configuration
22
+ // ============================================================================
23
+ const ArkTypePluginConfig = S.Struct({
24
+ /** Output directory relative to main outputDir */
25
+ outputDir: S.String,
26
+ /** Export inferred types alongside schemas */
27
+ exportTypes: S.Boolean,
28
+ });
29
+ // ============================================================================
30
+ // ArkType Schema Builders (pure functions)
31
+ // ============================================================================
32
+ /**
33
+ * Build ArkType string-based type expression.
34
+ *
35
+ * ArkType uses string syntax for most types:
36
+ * - `"string"`, `"number"`, `"boolean"`, `"bigint"`
37
+ * - `"Date"` for Date objects
38
+ * - `"string?"` for optional
39
+ * - `"string | null"` for nullable
40
+ * - `"string[]"` for arrays
41
+ */
42
+ const buildArkTypeString = (baseType, modifiers) => {
43
+ let result = baseType;
44
+ // Apply array first (before nullable/optional)
45
+ if (modifiers.isArray) {
46
+ result = `${result}[]`;
47
+ }
48
+ // For nullable, use union with null
49
+ if (modifiers.nullable) {
50
+ result = `${result} | null`;
51
+ }
52
+ // Optional uses ? suffix in object keys, not in the type string itself
53
+ // We handle this at the property level
54
+ return result;
55
+ };
56
+ /**
57
+ * Build ArkType enum as union of string literals: `"'a' | 'b' | 'c'"`
58
+ */
59
+ const buildArkTypeEnumString = (values) => values.map((v) => `'${v}'`).join(" | ");
60
+ /**
61
+ * Map TypeScript type to ArkType string type
62
+ */
63
+ const tsTypeToArkTypeString = (tsType) => {
64
+ switch (tsType) {
65
+ case TsType.String:
66
+ return "string";
67
+ case TsType.Number:
68
+ return "number";
69
+ case TsType.Boolean:
70
+ return "boolean";
71
+ case TsType.BigInt:
72
+ return "bigint";
73
+ case TsType.Date:
74
+ return "Date";
75
+ case TsType.Buffer:
76
+ case TsType.Unknown:
77
+ default:
78
+ return "unknown";
79
+ }
80
+ };
81
+ /**
82
+ * Resolve a field to its ArkType type string
83
+ */
84
+ const resolveFieldArkTypeString = (field, ctx) => {
85
+ const resolved = resolveFieldType(field, ctx.enums, ctx.extensions);
86
+ // Enum → union of string literals
87
+ if (resolved.enumDef) {
88
+ const baseType = buildArkTypeEnumString(resolved.enumDef.values);
89
+ // Wrap enum in parens if adding modifiers
90
+ const needsParens = field.nullable || field.isArray;
91
+ const wrapped = needsParens ? `(${baseType})` : baseType;
92
+ return buildArkTypeString(wrapped, {
93
+ nullable: field.nullable,
94
+ isArray: field.isArray,
95
+ });
96
+ }
97
+ // UUID → string.uuid
98
+ if (isUuidType(field)) {
99
+ return buildArkTypeString("string.uuid", {
100
+ nullable: field.nullable,
101
+ isArray: field.isArray,
102
+ });
103
+ }
104
+ // Date/timestamp → Date
105
+ if (isDateType(field)) {
106
+ return buildArkTypeString("Date", {
107
+ nullable: field.nullable,
108
+ isArray: field.isArray,
109
+ });
110
+ }
111
+ // Standard type mapping
112
+ return buildArkTypeString(tsTypeToArkTypeString(resolved.tsType), {
113
+ nullable: field.nullable,
114
+ isArray: field.isArray,
115
+ });
116
+ };
117
+ // ============================================================================
118
+ // Shape → Statement Generation
119
+ // ============================================================================
120
+ /**
121
+ * Build type({ ... }) expression from shape fields
122
+ *
123
+ * ArkType uses string keys for optionality: `"key?": "type"`
124
+ */
125
+ const buildShapeArkTypeObject = (shape, ctx) => {
126
+ const objBuilder = shape.fields.reduce((builder, field) => {
127
+ const typeString = resolveFieldArkTypeString(field, ctx);
128
+ // Use "key?" syntax for optional fields - must use stringProp for valid JS
129
+ if (field.optional) {
130
+ return builder.stringProp(`${field.name}?`, conjure.str(typeString));
131
+ }
132
+ return builder.prop(field.name, conjure.str(typeString));
133
+ }, obj());
134
+ // Build: type({ ... })
135
+ return conjure.id("type").call([objBuilder.build()]).build();
136
+ };
137
+ /**
138
+ * Generate schema const + optional inferred type for a shape
139
+ */
140
+ const generateShapeStatements = (shape, entityName, shapeKind, ctx, exportTypes) => {
141
+ const symbolCtx = { capability: "schemas:arktype", entity: entityName, shape: shapeKind };
142
+ const schemaExpr = buildShapeArkTypeObject(shape, ctx);
143
+ const schemaStatement = exp.const(shape.name, symbolCtx, schemaExpr);
144
+ if (!exportTypes) {
145
+ return [schemaStatement];
146
+ }
147
+ // Generate: export type ShapeName = typeof ShapeName.infer
148
+ // ArkType uses Schema.infer for the inferred type
149
+ const inferType = ts.typeof(`${shape.name}.infer`);
150
+ const typeStatement = exp.type(shape.name, symbolCtx, inferType);
151
+ return [schemaStatement, typeStatement];
152
+ };
153
+ /**
154
+ * Collect all defined shapes from an entity as [kind, shape] pairs
155
+ */
156
+ const collectShapes = (entity) => [
157
+ ["row", entity.shapes.row],
158
+ ["insert", entity.shapes.insert],
159
+ ["update", entity.shapes.update],
160
+ ].filter((entry) => entry[1] != null);
161
+ /**
162
+ * Generate all statements for an entity's shapes
163
+ */
164
+ const generateEntityStatements = (entity, ctx, exportTypes) => collectShapes(entity).flatMap(([kind, shape]) => generateShapeStatements(shape, entity.name, kind, ctx, exportTypes));
165
+ // ============================================================================
166
+ // Plugin Definition
167
+ // ============================================================================
168
+ /**
169
+ * ArkType Plugin
170
+ *
171
+ * Generates ArkType schemas for each entity's shapes (base, Insert, Update)
172
+ * with inferred TypeScript types.
173
+ */
174
+ export const arktypePlugin = definePlugin({
175
+ name: "arktype",
176
+ provides: ["schemas:arktype", "schemas"],
177
+ configSchema: ArkTypePluginConfig,
178
+ inflection: {
179
+ outputFile: (ctx) => `${ctx.entityName}.ts`,
180
+ symbolName: (entityName, artifactKind) => `${entityName}${artifactKind}`,
181
+ },
182
+ run: (ctx, config) => {
183
+ const enumEntities = getEnumEntities(ctx.ir);
184
+ const fieldCtx = { enums: enumEntities, extensions: ctx.ir.extensions };
185
+ getTableEntities(ctx.ir)
186
+ .filter((entity) => entity.tags.omit !== true)
187
+ .forEach((entity) => {
188
+ const statements = generateEntityStatements(entity, fieldCtx, config.exportTypes);
189
+ const entityName = ctx.inflection.entityName(entity.pgClass, entity.tags);
190
+ const fileNameCtx = {
191
+ entityName,
192
+ pgName: entity.pgName,
193
+ schema: entity.schemaName,
194
+ inflection: ctx.inflection,
195
+ entity,
196
+ };
197
+ const fileName = ctx.pluginInflection.outputFile(fileNameCtx);
198
+ const filePath = `${config.outputDir}/${fileName}`;
199
+ ctx
200
+ .file(filePath)
201
+ .import({ kind: "package", names: ["type"], from: "arktype" })
202
+ .ast(conjure.symbolProgram(...statements))
203
+ .emit();
204
+ });
205
+ },
206
+ });
207
+ //# sourceMappingURL=arktype.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arktype.js","sourceRoot":"","sources":["../../src/plugins/arktype.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Effect Model Plugin
3
+ *
4
+ * Generates @effect/sql Model classes for each entity.
5
+ */
6
+ export declare const effectModelPlugin: import("../index.js").PluginFactory<{
7
+ readonly outputDir: string;
8
+ readonly enumStyle?: "inline" | "separate" | undefined;
9
+ }>;
10
+ //# sourceMappingURL=effect-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-model.d.ts","sourceRoot":"","sources":["../../src/plugins/effect-model.ts"],"names":[],"mappings":"AAyTA;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;EAmE5B,CAAC"}
@@ -0,0 +1,261 @@
1
+ /**
2
+ * Effect Model Plugin - Generate @effect/sql Model classes for entities
3
+ *
4
+ * Generates Model classes with proper variants based on:
5
+ * - Field properties (isGenerated, isIdentity, hasDefault, nullable)
6
+ * - Smart tags (sensitive, insert override)
7
+ */
8
+ import { Schema as S } from "effect";
9
+ import { definePlugin } from "../services/plugin.js";
10
+ import { inflect } from "../services/inflection.js";
11
+ import { TsType } from "../services/pg-types.js";
12
+ import { getEnumEntities, getTableEntities } from "../ir/semantic-ir.js";
13
+ import { conjure } from "../lib/conjure.js";
14
+ import { isUuidType, isDateType, isBigIntType, resolveFieldType } from "../lib/field-utils.js";
15
+ const { exp, obj } = conjure;
16
+ // ============================================================================
17
+ // Configuration
18
+ // ============================================================================
19
+ const EffectModelPluginConfig = S.Struct({
20
+ /** Output directory relative to main outputDir */
21
+ outputDir: S.String,
22
+ /** How to handle enums: "inline" or "separate" file */
23
+ enumStyle: S.optional(S.Union(S.Literal("inline"), S.Literal("separate"))),
24
+ });
25
+ // ============================================================================
26
+ // Smart Tags
27
+ // ============================================================================
28
+ const EffectModelTagsSchema = S.Struct({
29
+ /** Override insert optionality: "optional" or "required" */
30
+ insert: S.optional(S.Union(S.Literal("optional"), S.Literal("required"))),
31
+ /** Mark field as sensitive - excluded from json variants */
32
+ sensitive: S.optional(S.Boolean),
33
+ });
34
+ const getEffectModelTags = (field) => {
35
+ const pluginTags = field.tags["effect:model"];
36
+ if (!pluginTags)
37
+ return {};
38
+ return S.decodeUnknownSync(EffectModelTagsSchema)(pluginTags);
39
+ };
40
+ const isSensitive = (field) => getEffectModelTags(field).sensitive === true;
41
+ const getInsertOverride = (field) => getEffectModelTags(field).insert;
42
+ // ============================================================================
43
+ // Schema Builders (pure functions)
44
+ // ============================================================================
45
+ /** Cast n.Expression to ExpressionKind for recast compatibility */
46
+ const toExprKind = (expr) => expr;
47
+ /** Map TypeScript type to Effect Schema property access */
48
+ const tsTypeToEffectSchema = (tsType) => {
49
+ const prop = tsType === TsType.String
50
+ ? "String"
51
+ : tsType === TsType.Number
52
+ ? "Number"
53
+ : tsType === TsType.Boolean
54
+ ? "Boolean"
55
+ : tsType === TsType.BigInt
56
+ ? "BigInt"
57
+ : tsType === TsType.Date
58
+ ? "Date"
59
+ : "Unknown";
60
+ return conjure.id("S").prop(prop).build();
61
+ };
62
+ /** Build S.Union(S.Literal(...), ...) for an enum */
63
+ const buildEnumSchema = (enumResult) => conjure
64
+ .id("S")
65
+ .method("Union", enumResult.values.map(v => conjure
66
+ .id("S")
67
+ .method("Literal", [conjure.str(v)])
68
+ .build()))
69
+ .build();
70
+ // ============================================================================
71
+ // Schema Wrappers
72
+ // ============================================================================
73
+ const wrapIf = (schema, condition, wrapper) => (condition ? wrapper(schema) : schema);
74
+ const wrapNullable = (schema) => conjure.id("S").method("NullOr", [schema]).build();
75
+ const wrapArray = (schema) => conjure.id("S").method("Array", [schema]).build();
76
+ const wrapGenerated = (schema) => conjure.id("Model").method("Generated", [schema]).build();
77
+ const wrapSensitive = (schema) => conjure.id("Model").method("Sensitive", [schema]).build();
78
+ const wrapFieldOption = (schema) => conjure.id("Model").method("FieldOption", [schema]).build();
79
+ /**
80
+ * Determine if a field should be treated as DB-generated.
81
+ * Includes GENERATED ALWAYS, IDENTITY, and PK fields with defaults.
82
+ */
83
+ const isDbGenerated = (field, entity) => field.isGenerated ||
84
+ field.isIdentity ||
85
+ (field.hasDefault && entity.primaryKey?.columns.includes(field.columnName) === true);
86
+ /**
87
+ * Check for auto-timestamp patterns (created_at, updated_at)
88
+ */
89
+ const getAutoTimestamp = (field) => {
90
+ if (!field.hasDefault)
91
+ return undefined;
92
+ const name = field.columnName.toLowerCase();
93
+ if (name === "created_at" || name === "createdat")
94
+ return "insert";
95
+ if (name === "updated_at" || name === "updatedat")
96
+ return "update";
97
+ return undefined;
98
+ };
99
+ // ============================================================================
100
+ // Field → Schema Expression
101
+ // ============================================================================
102
+ /**
103
+ * Build the base Effect Schema type for a field
104
+ */
105
+ const buildBaseSchemaType = (field, ctx) => {
106
+ const resolved = resolveFieldType(field, ctx.enums, ctx.extensions);
107
+ if (resolved.enumDef)
108
+ return buildEnumSchema(resolved.enumDef);
109
+ if (isUuidType(field))
110
+ return conjure.id("S").prop("UUID").build();
111
+ if (isDateType(field))
112
+ return conjure.id("S").prop("Date").build();
113
+ if (isBigIntType(field))
114
+ return conjure.id("S").prop("BigInt").build();
115
+ return tsTypeToEffectSchema(resolved.tsType);
116
+ };
117
+ /**
118
+ * Build the complete field schema expression with all wrappers applied
119
+ */
120
+ const buildFieldSchema = (field, ctx) => {
121
+ // Check for auto-timestamp patterns first (returns early with special type)
122
+ const autoTs = getAutoTimestamp(field);
123
+ if (autoTs === "insert")
124
+ return conjure.id("Model").prop("DateTimeInsertFromDate").build();
125
+ if (autoTs === "update")
126
+ return conjure.id("Model").prop("DateTimeUpdateFromDate").build();
127
+ // Build base type with array/nullable wrappers
128
+ let schema = buildBaseSchemaType(field, ctx);
129
+ schema = wrapIf(schema, field.isArray, wrapArray);
130
+ schema = wrapIf(schema, field.nullable, wrapNullable);
131
+ schema = wrapIf(schema, isSensitive(field), wrapSensitive);
132
+ // Determine generated/optional status
133
+ const insertOverride = getInsertOverride(field);
134
+ const shouldBeGenerated = insertOverride === "required"
135
+ ? field.isGenerated || field.isIdentity
136
+ : isDbGenerated(field, ctx.entity);
137
+ if (shouldBeGenerated) {
138
+ schema = wrapGenerated(schema);
139
+ }
140
+ else if (insertOverride === "optional") {
141
+ schema = wrapFieldOption(schema);
142
+ }
143
+ return schema;
144
+ };
145
+ // ============================================================================
146
+ // Entity → Model Class
147
+ // ============================================================================
148
+ /**
149
+ * Build Model.Class<ClassName>("table_name")({ ...fields })
150
+ */
151
+ const buildModelClass = (entity, className, ctx) => {
152
+ // Build fields object from row shape
153
+ const fieldsObj = entity.shapes.row.fields.reduce((builder, field) => builder.prop(field.name, buildFieldSchema(field, ctx)), obj());
154
+ // Build: Model.Class<ClassName>("table_name")
155
+ const modelClassRef = conjure.b.memberExpression(conjure.b.identifier("Model"), conjure.b.identifier("Class"));
156
+ const modelClassWithType = conjure.b.callExpression(modelClassRef, [
157
+ conjure.str(entity.name),
158
+ ]);
159
+ // Add type parameters: Model.Class<ClassName>
160
+ // Use typeParameters for TypeScript (not typeArguments which is for Flow)
161
+ modelClassWithType.typeParameters =
162
+ conjure.b.tsTypeParameterInstantiation([
163
+ conjure.b.tsTypeReference(conjure.b.identifier(className)),
164
+ ]);
165
+ // Call with fields: Model.Class<ClassName>("table_name")({ ... })
166
+ return conjure.b.callExpression(modelClassWithType, [fieldsObj.build()]);
167
+ };
168
+ /**
169
+ * Generate: export class ClassName extends Model.Class<ClassName>("table")({ ... }) {}
170
+ */
171
+ const generateModelStatement = (entity, className, ctx) => {
172
+ const modelExpr = buildModelClass(entity, className, ctx);
173
+ const classDecl = conjure.b.classDeclaration(conjure.b.identifier(className), conjure.b.classBody([]), toExprKind(modelExpr));
174
+ return {
175
+ _tag: "SymbolStatement",
176
+ node: conjure.b.exportNamedDeclaration(classDecl, []),
177
+ symbol: {
178
+ name: className,
179
+ capability: "models:effect",
180
+ entity: entity.name,
181
+ isType: false,
182
+ },
183
+ };
184
+ };
185
+ /**
186
+ * Generate enum schema: export const EnumName = S.Union(S.Literal(...), ...)
187
+ */
188
+ const generateEnumStatement = (enumEntity) => exp.const(enumEntity.name, { capability: "models:effect", entity: enumEntity.name }, buildEnumSchema({
189
+ name: enumEntity.name,
190
+ pgName: enumEntity.pgName,
191
+ values: enumEntity.values,
192
+ }));
193
+ // ============================================================================
194
+ // File Emission Helpers
195
+ // ============================================================================
196
+ const buildFileNameContext = (entityName, pgName, schemaName, inflection, entity) => ({
197
+ entityName,
198
+ pgName,
199
+ schema: schemaName,
200
+ inflection,
201
+ entity,
202
+ });
203
+ // ============================================================================
204
+ // Plugin Definition
205
+ // ============================================================================
206
+ /**
207
+ * Effect Model Plugin
208
+ *
209
+ * Generates @effect/sql Model classes for each entity.
210
+ */
211
+ export const effectModelPlugin = definePlugin({
212
+ name: "effect-model",
213
+ provides: ["models:effect", "models"],
214
+ configSchema: EffectModelPluginConfig,
215
+ inflection: {
216
+ outputFile: ctx => `${ctx.entityName}.ts`,
217
+ symbolName: (entityName, _artifactKind) => entityName,
218
+ },
219
+ inflectionDefaults: {
220
+ entityName: inflect.pascalCase,
221
+ enumName: inflect.pascalCase,
222
+ },
223
+ run: (ctx, config) => {
224
+ const enumEntities = getEnumEntities(ctx.ir);
225
+ const enumStyle = config.enumStyle ?? "inline";
226
+ // Generate separate enum files if configured
227
+ if (enumStyle === "separate") {
228
+ enumEntities
229
+ .filter(e => e.tags.omit !== true)
230
+ .forEach(enumEntity => {
231
+ const fileNameCtx = buildFileNameContext(enumEntity.name, enumEntity.pgName, enumEntity.schemaName, ctx.inflection, enumEntity);
232
+ const filePath = `${config.outputDir}/${ctx.pluginInflection.outputFile(fileNameCtx)}`;
233
+ ctx
234
+ .file(filePath)
235
+ .import({ kind: "package", names: ["Schema as S"], from: "effect" })
236
+ .ast(conjure.symbolProgram(generateEnumStatement(enumEntity)))
237
+ .emit();
238
+ });
239
+ }
240
+ // Generate table/view entity model files
241
+ getTableEntities(ctx.ir)
242
+ .filter(entity => entity.tags.omit !== true)
243
+ .forEach(entity => {
244
+ const className = ctx.inflection.entityName(entity.pgClass, entity.tags);
245
+ const fieldCtx = {
246
+ entity,
247
+ enums: enumEntities,
248
+ extensions: ctx.ir.extensions,
249
+ };
250
+ const fileNameCtx = buildFileNameContext(className, entity.pgName, entity.schemaName, ctx.inflection, entity);
251
+ const filePath = `${config.outputDir}/${ctx.pluginInflection.outputFile(fileNameCtx)}`;
252
+ ctx
253
+ .file(filePath)
254
+ .import({ kind: "package", names: ["Model"], from: "@effect/sql" })
255
+ .import({ kind: "package", names: ["Schema as S"], from: "effect" })
256
+ .ast(conjure.symbolProgram(generateModelStatement(entity, className, fieldCtx)))
257
+ .emit();
258
+ });
259
+ },
260
+ });
261
+ //# sourceMappingURL=effect-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-model.js","sourceRoot":"","sources":["../../src/plugins/effect-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare const kyselyQueriesPlugin: import("../index.js").PluginFactory<{
2
+ readonly outputDir: string;
3
+ readonly header?: string | undefined;
4
+ readonly dbTypesPath?: string | undefined;
5
+ readonly executeQueries?: boolean | undefined;
6
+ }>;
7
+ //# sourceMappingURL=kysely-queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kysely-queries.d.ts","sourceRoot":"","sources":["../../src/plugins/kysely-queries.ts"],"names":[],"mappings":"AAmeA,eAAO,MAAM,mBAAmB;;;;;EA0E9B,CAAA"}