@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,453 @@
1
+ /**
2
+ * HTTP Hono Plugin - Generate Hono route handlers from query plugins
3
+ *
4
+ * Consumes method symbols from sql-queries or kysely-queries via the symbol registry
5
+ * and generates type-safe Hono HTTP route handlers.
6
+ *
7
+ * Schema validation is provided via @hono/standard-validator when a schema plugin
8
+ * (zod, valibot, arktype) is configured. Without a schema plugin, routes are
9
+ * generated without validation middleware.
10
+ */
11
+ import { Schema as S } from "effect";
12
+ import { definePlugin } from "../services/plugin.js";
13
+ import { conjure, cast } from "../lib/conjure.js";
14
+ import { inflect } from "../services/inflection.js";
15
+ import { SCHEMA_BUILDER_KIND, } from "../ir/extensions/schema-builder.js";
16
+ import { getTableEntities } from "../ir/semantic-ir.js";
17
+ import { TsType } from "../services/pg-types.js";
18
+ const { b, stmt } = conjure;
19
+ // ============================================================================
20
+ // Configuration
21
+ // ============================================================================
22
+ const HttpHonoConfigSchema = S.Struct({
23
+ /** Output directory for generated route files. Default: "routes" */
24
+ outputDir: S.optionalWith(S.String, { default: () => "routes" }),
25
+ /** Base path for all routes. Default: "/api" */
26
+ basePath: S.optionalWith(S.String, { default: () => "/api" }),
27
+ /** Header content to prepend to each generated file */
28
+ header: S.optional(S.String),
29
+ /**
30
+ * Name of the aggregated router export.
31
+ * Default: "api"
32
+ */
33
+ aggregatorName: S.optionalWith(S.String, { default: () => "api" }),
34
+ });
35
+ // ============================================================================
36
+ // String Helpers
37
+ // ============================================================================
38
+ /** Convert PascalCase/camelCase to kebab-case */
39
+ const toKebabCase = (str) => str
40
+ .replace(/([a-z])([A-Z])/g, "$1-$2")
41
+ .replace(/_/g, "-")
42
+ .toLowerCase();
43
+ /** Convert entity name to URL path segment (kebab-case plural) */
44
+ const entityToPathSegment = (entityName) => inflect.pluralize(toKebabCase(entityName));
45
+ // ============================================================================
46
+ // Route Generation Helpers
47
+ // ============================================================================
48
+ /** Map query method kind to HTTP method */
49
+ const kindToHttpMethod = (kind) => {
50
+ switch (kind) {
51
+ case "read":
52
+ case "list":
53
+ case "lookup":
54
+ return "get";
55
+ case "create":
56
+ return "post";
57
+ case "update":
58
+ return "put";
59
+ case "delete":
60
+ return "delete";
61
+ case "function":
62
+ return "post";
63
+ }
64
+ };
65
+ /** Get the route path for a method */
66
+ const getRoutePath = (method) => {
67
+ switch (method.kind) {
68
+ case "read":
69
+ case "update":
70
+ case "delete": {
71
+ const pkParam = method.params.find((p) => p.source === "pk");
72
+ const paramName = pkParam?.name ?? "id";
73
+ return `/:${paramName}`;
74
+ }
75
+ case "list":
76
+ case "create":
77
+ return "/";
78
+ case "lookup": {
79
+ const field = method.lookupField ?? "field";
80
+ const fieldKebab = toKebabCase(field);
81
+ const lookupParam = method.params.find((p) => p.source === "lookup" || p.source === "fk");
82
+ const paramName = lookupParam?.name ?? field;
83
+ return `/by-${fieldKebab}/:${paramName}`;
84
+ }
85
+ case "function": {
86
+ return `/${toKebabCase(method.name)}`;
87
+ }
88
+ }
89
+ };
90
+ /**
91
+ * Build sValidator('target', schema) middleware call
92
+ */
93
+ const buildSValidator = (target, schema) => b.callExpression(b.identifier("sValidator"), [b.stringLiteral(target), cast.toExpr(schema)]);
94
+ /**
95
+ * Determine if a method needs body validation and which schema to use.
96
+ */
97
+ const getBodySchemaImport = (method, entityName) => {
98
+ if (method.kind === "create") {
99
+ return { entity: entityName, shape: "insert", schemaName: `${entityName}Insert` };
100
+ }
101
+ if (method.kind === "update") {
102
+ return { entity: entityName, shape: "update", schemaName: `${entityName}Update` };
103
+ }
104
+ return null;
105
+ };
106
+ // ============================================================================
107
+ // Handler Body Generation
108
+ // ============================================================================
109
+ /**
110
+ * Build the handler function body for a query method.
111
+ *
112
+ * When hasValidation is true, uses c.req.valid() for validated data.
113
+ * Otherwise falls back to manual extraction via c.req.param/query/json.
114
+ */
115
+ const buildHandlerBody = (method, hasValidation) => {
116
+ const statements = [];
117
+ const callSig = method.callSignature ?? { style: "named" };
118
+ const pathParams = method.params.filter((p) => p.source === "pk" || p.source === "fk" || p.source === "lookup");
119
+ const queryParams = method.params.filter((p) => p.source === "pagination");
120
+ const needsBody = method.params.some((p) => p.source === "body") ||
121
+ method.kind === "create" ||
122
+ method.kind === "update" ||
123
+ (method.kind === "function" && method.params.some((p) => !p.source));
124
+ if (hasValidation) {
125
+ // Use c.req.valid() for validated data
126
+ if (pathParams.length > 0) {
127
+ // const { id, slug } = c.req.valid('param')
128
+ const paramPattern = b.objectPattern(pathParams.map((p) => {
129
+ const prop = b.property("init", b.identifier(p.name), b.identifier(p.name));
130
+ prop.shorthand = true;
131
+ return prop;
132
+ }));
133
+ const validCall = b.callExpression(b.memberExpression(b.memberExpression(b.identifier("c"), b.identifier("req")), b.identifier("valid")), [b.stringLiteral("param")]);
134
+ statements.push(b.variableDeclaration("const", [b.variableDeclarator(paramPattern, validCall)]));
135
+ }
136
+ if (queryParams.length > 0) {
137
+ // const { limit, offset } = c.req.valid('query')
138
+ const queryPattern = b.objectPattern(queryParams.map((p) => {
139
+ const prop = b.property("init", b.identifier(p.name), b.identifier(p.name));
140
+ prop.shorthand = true;
141
+ return prop;
142
+ }));
143
+ const validCall = b.callExpression(b.memberExpression(b.memberExpression(b.identifier("c"), b.identifier("req")), b.identifier("valid")), [b.stringLiteral("query")]);
144
+ statements.push(b.variableDeclaration("const", [b.variableDeclarator(queryPattern, validCall)]));
145
+ }
146
+ if (needsBody) {
147
+ // const body = c.req.valid('json')
148
+ const validCall = b.callExpression(b.memberExpression(b.memberExpression(b.identifier("c"), b.identifier("req")), b.identifier("valid")), [b.stringLiteral("json")]);
149
+ statements.push(stmt.const("body", validCall));
150
+ }
151
+ }
152
+ else {
153
+ // No validation - manual extraction
154
+ for (const param of pathParams) {
155
+ const paramCall = b.callExpression(b.memberExpression(b.memberExpression(b.identifier("c"), b.identifier("req")), b.identifier("param")), [b.stringLiteral(param.name)]);
156
+ statements.push(stmt.const(param.name, paramCall));
157
+ }
158
+ for (const param of queryParams) {
159
+ const queryCall = b.callExpression(b.memberExpression(b.memberExpression(b.identifier("c"), b.identifier("req")), b.identifier("query")), [b.stringLiteral(param.name)]);
160
+ // Parse as number if needed
161
+ if (param.type === TsType.Number) {
162
+ const parsed = b.callExpression(b.identifier("Number"), [queryCall]);
163
+ statements.push(stmt.const(param.name, parsed));
164
+ }
165
+ else {
166
+ statements.push(stmt.const(param.name, queryCall));
167
+ }
168
+ }
169
+ if (needsBody) {
170
+ const jsonCall = b.callExpression(b.memberExpression(b.memberExpression(b.identifier("c"), b.identifier("req")), b.identifier("json")), []);
171
+ statements.push(stmt.const("body", b.awaitExpression(jsonCall)));
172
+ }
173
+ }
174
+ // Build the function call arguments
175
+ const args = [];
176
+ if (callSig.style === "positional") {
177
+ for (const param of method.params) {
178
+ if (param.source === "pk" ||
179
+ param.source === "fk" ||
180
+ param.source === "lookup" ||
181
+ param.source === "pagination") {
182
+ args.push(b.identifier(param.name));
183
+ }
184
+ else if (param.source === "body") {
185
+ args.push(b.identifier("body"));
186
+ }
187
+ else {
188
+ args.push(b.memberExpression(b.identifier("body"), b.identifier(param.name)));
189
+ }
190
+ }
191
+ }
192
+ else {
193
+ const bodyParam = method.params.find((p) => p.source === "body");
194
+ if (bodyParam && callSig.bodyStyle === "spread") {
195
+ args.push(b.identifier("body"));
196
+ }
197
+ else if (bodyParam && callSig.bodyStyle === "property") {
198
+ let objBuilder = conjure.obj();
199
+ for (const param of method.params) {
200
+ if (param.source === "pk" ||
201
+ param.source === "fk" ||
202
+ param.source === "lookup" ||
203
+ param.source === "pagination") {
204
+ objBuilder = objBuilder.shorthand(param.name);
205
+ }
206
+ }
207
+ objBuilder = objBuilder.prop(bodyParam.name, b.identifier("body"));
208
+ args.push(objBuilder.build());
209
+ }
210
+ else {
211
+ let objBuilder = conjure.obj();
212
+ for (const param of method.params) {
213
+ if (param.source === "pk" ||
214
+ param.source === "fk" ||
215
+ param.source === "lookup" ||
216
+ param.source === "pagination") {
217
+ objBuilder = objBuilder.shorthand(param.name);
218
+ }
219
+ }
220
+ if (method.params.length > 0) {
221
+ args.push(objBuilder.build());
222
+ }
223
+ }
224
+ }
225
+ // Build: const result = await Queries.queryFn(args)
226
+ const queryCall = b.callExpression(b.memberExpression(b.identifier("Queries"), b.identifier(method.name)), args.map(cast.toExpr));
227
+ statements.push(stmt.const("result", b.awaitExpression(queryCall)));
228
+ // Handle 404 for read/lookup that returns null
229
+ if (method.kind === "read" || (method.kind === "lookup" && method.isUniqueLookup)) {
230
+ const notFoundResponse = b.callExpression(b.memberExpression(b.identifier("c"), b.identifier("json")), [conjure.obj().prop("error", b.stringLiteral("Not found")).build(), b.numericLiteral(404)]);
231
+ statements.push(b.ifStatement(b.unaryExpression("!", b.identifier("result")), b.returnStatement(notFoundResponse)));
232
+ }
233
+ // return c.json(result) or c.json(result, 201) for create
234
+ const statusCode = method.kind === "create" ? 201 : undefined;
235
+ const jsonArgs = [b.identifier("result")];
236
+ if (statusCode) {
237
+ jsonArgs.push(b.numericLiteral(statusCode));
238
+ }
239
+ const jsonResponse = b.callExpression(b.memberExpression(b.identifier("c"), b.identifier("json")), jsonArgs.map(cast.toExpr));
240
+ statements.push(b.returnStatement(jsonResponse));
241
+ return statements;
242
+ };
243
+ // ============================================================================
244
+ // Route Validation Builders
245
+ // ============================================================================
246
+ /**
247
+ * Build validators for a route method.
248
+ *
249
+ * Returns:
250
+ * - validators: Array of sValidator() middleware expressions
251
+ * - needsSValidator: Whether to import sValidator from @hono/standard-validator
252
+ * - bodySchema: Body schema symbol import info (for symbol registry lookup)
253
+ * - schemaBuilderImport: Import spec for the schema library (zod, valibot, etc.)
254
+ */
255
+ const buildRouteValidators = (method, entityName, requestSchema, hasSchemaProvider) => {
256
+ const validators = [];
257
+ let needsSValidator = false;
258
+ let schemaBuilderImport = null;
259
+ // Build param validator for path parameters
260
+ const pathParams = method.params.filter((p) => p.source === "pk" || p.source === "fk" || p.source === "lookup");
261
+ if (pathParams.length > 0) {
262
+ const schemaResult = requestSchema(pathParams);
263
+ if (schemaResult) {
264
+ validators.push(buildSValidator("param", schemaResult.ast));
265
+ needsSValidator = true;
266
+ schemaBuilderImport = schemaResult.importSpec;
267
+ }
268
+ }
269
+ // Build query validator for pagination parameters
270
+ const queryParams = method.params.filter((p) => p.source === "pagination");
271
+ if (queryParams.length > 0) {
272
+ const schemaResult = requestSchema(queryParams);
273
+ if (schemaResult) {
274
+ validators.push(buildSValidator("query", schemaResult.ast));
275
+ needsSValidator = true;
276
+ if (!schemaBuilderImport) {
277
+ schemaBuilderImport = schemaResult.importSpec;
278
+ }
279
+ }
280
+ }
281
+ // Body validation - use imported schema from schema provider
282
+ const bodySchemaInfo = getBodySchemaImport(method, entityName);
283
+ let bodySchema = null;
284
+ if (bodySchemaInfo && hasSchemaProvider) {
285
+ // Import schema from schema provider and use it
286
+ bodySchema = bodySchemaInfo;
287
+ validators.push(buildSValidator("json", b.identifier(bodySchema.schemaName)));
288
+ needsSValidator = true;
289
+ }
290
+ return { validators, needsSValidator, bodySchema, schemaBuilderImport };
291
+ };
292
+ /**
293
+ * Build a single route with optional validation middleware.
294
+ */
295
+ const buildRouteCall = (method, entityName, requestSchema, hasSchemaProvider) => {
296
+ const httpMethod = kindToHttpMethod(method.kind);
297
+ const path = getRoutePath(method);
298
+ const { validators, needsSValidator, bodySchema, schemaBuilderImport } = buildRouteValidators(method, entityName, requestSchema, hasSchemaProvider);
299
+ // Build handler with or without validation
300
+ const hasValidation = validators.length > 0;
301
+ const handlerBody = buildHandlerBody(method, hasValidation);
302
+ const handler = b.arrowFunctionExpression([b.identifier("c")], b.blockStatement(handlerBody.map(cast.toStmt)));
303
+ handler.async = true;
304
+ return { httpMethod, path, handler, validators, needsSValidator, bodySchema, schemaBuilderImport };
305
+ };
306
+ // ============================================================================
307
+ // Plugin Definition
308
+ // ============================================================================
309
+ export function httpHono(config = {}) {
310
+ const parsed = S.decodeUnknownSync(HttpHonoConfigSchema)(config);
311
+ return definePlugin({
312
+ name: "http-hono",
313
+ kind: "http-routes",
314
+ singleton: true,
315
+ canProvide: () => true,
316
+ requires: () => [{ kind: "queries", params: {} }],
317
+ optionalRequires: () => [{ kind: "schemas", params: {} }],
318
+ provide: (_params, _deps, ctx) => {
319
+ const { outputDir, basePath, header, aggregatorName } = parsed;
320
+ const entityNames = ctx.symbols.getEntitiesWithMethods();
321
+ if (entityNames.length === 0) {
322
+ return;
323
+ }
324
+ const generatedRoutes = [];
325
+ const tableEntities = getTableEntities(ctx.ir);
326
+ for (const entityName of entityNames) {
327
+ const entityMethods = ctx.symbols.getEntityMethods(entityName);
328
+ if (!entityMethods || entityMethods.methods.length === 0)
329
+ continue;
330
+ const entity = tableEntities.find((e) => e.name === entityName);
331
+ const pathSegment = entityToPathSegment(entityName);
332
+ const filePath = `${outputDir}/${inflect.uncapitalize(entityName)}.ts`;
333
+ const routesVarName = `${inflect.uncapitalize(entityName)}Routes`;
334
+ const file = ctx.file(filePath);
335
+ if (header) {
336
+ file.header(header);
337
+ }
338
+ // Import Hono
339
+ file.import({ kind: "package", names: ["Hono"], from: "hono" });
340
+ // Import queries as namespace
341
+ const queriesImportPath = `../${entityMethods.importPath.replace(/\.ts$/, ".js")}`;
342
+ file.import({
343
+ kind: "relative",
344
+ namespace: "Queries",
345
+ from: queriesImportPath,
346
+ });
347
+ // Create a schema builder function that requests from the service registry
348
+ const requestSchema = (params) => {
349
+ if (params.length === 0)
350
+ return undefined;
351
+ try {
352
+ const request = { variant: "params", params };
353
+ return ctx.request(SCHEMA_BUILDER_KIND, request);
354
+ }
355
+ catch {
356
+ // No schema-builder registered, skip validation
357
+ return undefined;
358
+ }
359
+ };
360
+ // Check if a schema provider is available for body validation
361
+ // by checking if insert schema is registered in symbol registry
362
+ const hasSchemaProvider = ctx.symbols.resolve({
363
+ capability: "schemas",
364
+ entity: entityName,
365
+ shape: "insert",
366
+ }) !== undefined;
367
+ // Build the Hono route chain
368
+ let chainExpr = b.newExpression(b.identifier("Hono"), []);
369
+ let fileNeedsSValidator = false;
370
+ const bodySchemaImports = [];
371
+ let schemaLibraryImport = null;
372
+ for (const method of entityMethods.methods) {
373
+ const { httpMethod, path, handler, validators, needsSValidator, bodySchema, schemaBuilderImport } = buildRouteCall(method, entityName, requestSchema, hasSchemaProvider);
374
+ if (needsSValidator)
375
+ fileNeedsSValidator = true;
376
+ if (bodySchema)
377
+ bodySchemaImports.push(bodySchema);
378
+ if (schemaBuilderImport)
379
+ schemaLibraryImport = schemaBuilderImport;
380
+ // Build route call: .get('/path', validator1, validator2, handler)
381
+ const callArgs = [b.stringLiteral(path), ...validators, handler];
382
+ chainExpr = b.callExpression(b.memberExpression(cast.toExpr(chainExpr), b.identifier(httpMethod)), callArgs.map(cast.toExpr));
383
+ }
384
+ // Add imports based on what we need
385
+ if (fileNeedsSValidator) {
386
+ file.import({ kind: "package", names: ["sValidator"], from: "@hono/standard-validator" });
387
+ }
388
+ // Import schema library (e.g., { z } from 'zod') if using schema-builder
389
+ if (schemaLibraryImport) {
390
+ if (schemaLibraryImport.names) {
391
+ file.import({
392
+ kind: "package",
393
+ names: [...schemaLibraryImport.names],
394
+ from: schemaLibraryImport.from,
395
+ });
396
+ }
397
+ else if (schemaLibraryImport.namespace) {
398
+ file.import({
399
+ kind: "package",
400
+ namespace: schemaLibraryImport.namespace,
401
+ from: schemaLibraryImport.from,
402
+ });
403
+ }
404
+ }
405
+ // Import body schemas from schema plugins via symbol registry
406
+ for (const schemaImport of bodySchemaImports) {
407
+ file.import({
408
+ kind: "symbol",
409
+ ref: {
410
+ capability: "schemas",
411
+ entity: schemaImport.entity,
412
+ shape: schemaImport.shape,
413
+ },
414
+ });
415
+ }
416
+ const exportStmt = conjure.export.const(routesVarName, chainExpr);
417
+ file.ast(conjure.program(exportStmt)).emit();
418
+ generatedRoutes.push({
419
+ fileName: `${inflect.uncapitalize(entityName)}.js`,
420
+ exportName: routesVarName,
421
+ pathSegment,
422
+ });
423
+ }
424
+ // Generate aggregator index.ts
425
+ if (generatedRoutes.length > 0) {
426
+ const indexPath = `${outputDir}/index.ts`;
427
+ const indexFile = ctx.file(indexPath);
428
+ if (header) {
429
+ indexFile.header(header);
430
+ }
431
+ indexFile.import({ kind: "package", names: ["Hono"], from: "hono" });
432
+ for (const route of generatedRoutes) {
433
+ indexFile.import({
434
+ kind: "relative",
435
+ names: [route.exportName],
436
+ from: `./${route.fileName}`,
437
+ });
438
+ }
439
+ // Build: new Hono().basePath('/api').route('/users', userRoutes).route('/posts', postRoutes)...
440
+ let chainExpr = b.newExpression(b.identifier("Hono"), []);
441
+ // Add basePath
442
+ chainExpr = b.callExpression(b.memberExpression(cast.toExpr(chainExpr), b.identifier("basePath")), [b.stringLiteral(basePath)]);
443
+ // Add routes
444
+ for (const route of generatedRoutes) {
445
+ chainExpr = b.callExpression(b.memberExpression(cast.toExpr(chainExpr), b.identifier("route")), [b.stringLiteral(`/${route.pathSegment}`), b.identifier(route.exportName)]);
446
+ }
447
+ const exportStmt = conjure.export.const(aggregatorName, chainExpr);
448
+ indexFile.ast(conjure.program(exportStmt)).emit();
449
+ }
450
+ },
451
+ });
452
+ }
453
+ //# sourceMappingURL=http-hono.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-hono.js","sourceRoot":"","sources":["../../src/plugins/http-hono.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * HTTP oRPC Plugin - Generate oRPC routers from query plugins
3
+ *
4
+ * Consumes method symbols from sql-queries or kysely-queries via the symbol registry
5
+ * and generates type-safe oRPC procedures using @orpc/server.
6
+ *
7
+ * Uses oRPC's `type()` utility for simple params (type-only, no runtime validation)
8
+ * and imports body schemas from whatever plugin provides the "schemas" capability
9
+ * (zod, arktype, valibot, etc.) for runtime validation.
10
+ */
11
+ import { Schema as S } from "effect";
12
+ import { definePlugin } from "../services/plugin.js";
13
+ declare const HttpOrpcConfigSchema: S.Struct<{
14
+ /** Output directory for generated router files. Default: "orpc" */
15
+ outputDir: S.optionalWith<typeof S.String, {
16
+ default: () => string;
17
+ }>;
18
+ /**
19
+ * Header content to prepend to each generated file.
20
+ * MUST import `os` from @orpc/server.
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * header: `import { os } from "@orpc/server";`
25
+ * ```
26
+ */
27
+ header: typeof S.String;
28
+ /** Name of the aggregated router export. Default: "appRouter" */
29
+ aggregatorName: S.optionalWith<typeof S.String, {
30
+ default: () => string;
31
+ }>;
32
+ }>;
33
+ /** Input config type (with optional fields) */
34
+ export type HttpOrpcConfig = S.Schema.Encoded<typeof HttpOrpcConfigSchema>;
35
+ /**
36
+ * Create an http-orpc provider that generates oRPC routers.
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * import { httpOrpc } from "pg-sourcerer"
41
+ *
42
+ * export default defineConfig({
43
+ * plugins: [
44
+ * zod(),
45
+ * sqlQueries(),
46
+ * httpOrpc({
47
+ * header: `import { os } from "@orpc/server";`,
48
+ * }),
49
+ * ],
50
+ * })
51
+ * ```
52
+ */
53
+ export declare function httpOrpc(config: HttpOrpcConfig): ReturnType<typeof definePlugin>;
54
+ export {};
55
+ //# sourceMappingURL=http-orpc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-orpc.d.ts","sourceRoot":"","sources":["../../src/plugins/http-orpc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,YAAY,EAAsB,MAAM,uBAAuB,CAAC;AAYzE,QAAA,MAAM,oBAAoB;IACxB,mEAAmE;;;;IAGnE;;;;;;;;OAQG;;IAGH,iEAAiE;;;;EAEjE,CAAC;AAEH,+CAA+C;AAC/C,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,oBAAoB,CAAC,CAAC;AA0S3E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAsIhF"}