@danielfgray/pg-sourcerer 0.2.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/pgsourcerer +2 -0
- package/dist/__tests__/fixtures/index.d.ts +15 -0
- package/dist/__tests__/fixtures/index.d.ts.map +1 -0
- package/dist/__tests__/fixtures/index.js +19 -0
- package/dist/__tests__/fixtures/index.js.map +1 -0
- package/dist/__tests__/fixtures/introspection.json +40522 -0
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +7 -46
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +38 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +13 -2
- package/dist/config.js.map +1 -1
- package/dist/{lib/conjure.d.ts → conjure/index.d.ts} +62 -3
- package/dist/conjure/index.d.ts.map +1 -0
- package/dist/{lib/conjure.js → conjure/index.js} +124 -3
- package/dist/conjure/index.js.map +1 -0
- package/dist/conjure/signature.d.ts +85 -0
- package/dist/conjure/signature.d.ts.map +1 -0
- package/dist/conjure/signature.js +130 -0
- package/dist/conjure/signature.js.map +1 -0
- package/dist/conjure/types.d.ts +97 -0
- package/dist/conjure/types.d.ts.map +1 -0
- package/dist/conjure/types.js +206 -0
- package/dist/conjure/types.js.map +1 -0
- package/dist/errors.d.ts +114 -139
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +82 -36
- package/dist/errors.js.map +1 -1
- package/dist/generate.d.ts +45 -46
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +86 -59
- package/dist/generate.js.map +1 -1
- package/dist/hex/builder.d.ts +12 -0
- package/dist/hex/builder.d.ts.map +1 -0
- package/dist/hex/builder.js +64 -0
- package/dist/hex/builder.js.map +1 -0
- package/dist/hex/ddl.d.ts +53 -0
- package/dist/hex/ddl.d.ts.map +1 -0
- package/dist/hex/ddl.js +306 -0
- package/dist/hex/ddl.js.map +1 -0
- package/dist/hex/index.d.ts +105 -0
- package/dist/hex/index.d.ts.map +1 -0
- package/dist/hex/index.js +81 -0
- package/dist/hex/index.js.map +1 -0
- package/dist/hex/primitives.d.ts +23 -0
- package/dist/hex/primitives.d.ts.map +1 -0
- package/dist/hex/primitives.js +38 -0
- package/dist/hex/primitives.js.map +1 -0
- package/dist/hex/query.d.ts +116 -0
- package/dist/hex/query.d.ts.map +1 -0
- package/dist/hex/query.js +219 -0
- package/dist/hex/query.js.map +1 -0
- package/dist/hex/types.d.ts +287 -0
- package/dist/hex/types.d.ts.map +1 -0
- package/dist/hex/types.js +431 -0
- package/dist/hex/types.js.map +1 -0
- package/dist/index.d.ts +17 -25
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -44
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +76 -140
- package/dist/init.js.map +1 -1
- package/dist/ir/extensions/queries.d.ts +6 -6
- package/dist/ir/extensions/queries.d.ts.map +1 -1
- package/dist/ir/extensions/queries.js +6 -4
- package/dist/ir/extensions/queries.js.map +1 -1
- package/dist/ir/extensions/schema-builder.d.ts.map +1 -1
- package/dist/ir/extensions/schema-builder.js.map +1 -1
- package/dist/ir/index.d.ts.map +1 -1
- package/dist/ir/index.js.map +1 -1
- package/dist/ir/relation-graph.d.ts.map +1 -1
- package/dist/ir/relation-graph.js +8 -8
- package/dist/ir/relation-graph.js.map +1 -1
- package/dist/ir/semantic-ir.d.ts +38 -0
- package/dist/ir/semantic-ir.d.ts.map +1 -1
- package/dist/ir/semantic-ir.js +50 -2
- package/dist/ir/semantic-ir.js.map +1 -1
- package/dist/ir/smart-tags.d.ts.map +1 -1
- package/dist/ir/smart-tags.js.map +1 -1
- package/dist/lib/field-utils.d.ts.map +1 -1
- package/dist/lib/field-utils.js +7 -7
- package/dist/lib/field-utils.js.map +1 -1
- package/dist/lib/join-graph.d.ts +95 -0
- package/dist/lib/join-graph.d.ts.map +1 -0
- package/dist/lib/join-graph.js +305 -0
- package/dist/lib/join-graph.js.map +1 -0
- package/dist/lib/picker.d.ts +60 -0
- package/dist/lib/picker.d.ts.map +1 -0
- package/dist/lib/picker.js +325 -0
- package/dist/lib/picker.js.map +1 -0
- package/dist/plugins/arktype.d.ts +20 -24
- package/dist/plugins/arktype.d.ts.map +1 -1
- package/dist/plugins/arktype.js +462 -386
- package/dist/plugins/arktype.js.map +1 -1
- package/dist/plugins/effect/http.d.ts +7 -0
- package/dist/plugins/effect/http.d.ts.map +1 -0
- package/dist/plugins/effect/http.js +460 -0
- package/dist/plugins/effect/http.js.map +1 -0
- package/dist/plugins/effect/index.d.ts +22 -0
- package/dist/plugins/effect/index.d.ts.map +1 -0
- package/dist/plugins/effect/index.js +65 -0
- package/dist/plugins/effect/index.js.map +1 -0
- package/dist/plugins/effect/models.d.ts +6 -0
- package/dist/plugins/effect/models.d.ts.map +1 -0
- package/dist/plugins/effect/models.js +116 -0
- package/dist/plugins/effect/models.js.map +1 -0
- package/dist/plugins/effect/repos.d.ts +21 -0
- package/dist/plugins/effect/repos.d.ts.map +1 -0
- package/dist/plugins/effect/repos.js +131 -0
- package/dist/plugins/effect/repos.js.map +1 -0
- package/dist/plugins/effect/schemas.d.ts +7 -0
- package/dist/plugins/effect/schemas.d.ts.map +1 -0
- package/dist/plugins/effect/schemas.js +75 -0
- package/dist/plugins/effect/schemas.js.map +1 -0
- package/dist/plugins/effect/shared.d.ts +116 -0
- package/dist/plugins/effect/shared.d.ts.map +1 -0
- package/dist/plugins/effect/shared.js +164 -0
- package/dist/plugins/effect/shared.js.map +1 -0
- package/dist/plugins/http-elysia.d.ts +20 -27
- package/dist/plugins/http-elysia.d.ts.map +1 -1
- package/dist/plugins/http-elysia.js +350 -475
- package/dist/plugins/http-elysia.js.map +1 -1
- package/dist/plugins/http-express.d.ts +20 -31
- package/dist/plugins/http-express.d.ts.map +1 -1
- package/dist/plugins/http-express.js +281 -268
- package/dist/plugins/http-express.js.map +1 -1
- package/dist/plugins/http-hono.d.ts +17 -33
- package/dist/plugins/http-hono.d.ts.map +1 -1
- package/dist/plugins/http-hono.js +317 -341
- package/dist/plugins/http-hono.js.map +1 -1
- package/dist/plugins/http-orpc.d.ts +34 -33
- package/dist/plugins/http-orpc.d.ts.map +1 -1
- package/dist/plugins/http-orpc.js +345 -257
- package/dist/plugins/http-orpc.js.map +1 -1
- package/dist/plugins/http-trpc.d.ts +33 -35
- package/dist/plugins/http-trpc.d.ts.map +1 -1
- package/dist/plugins/http-trpc.js +337 -241
- package/dist/plugins/http-trpc.js.map +1 -1
- package/dist/plugins/kysely.d.ts +54 -59
- package/dist/plugins/kysely.d.ts.map +1 -1
- package/dist/plugins/kysely.js +826 -687
- package/dist/plugins/kysely.js.map +1 -1
- package/dist/plugins/sql-queries.d.ts +38 -44
- package/dist/plugins/sql-queries.d.ts.map +1 -1
- package/dist/plugins/sql-queries.js +497 -897
- package/dist/plugins/sql-queries.js.map +1 -1
- package/dist/plugins/types.d.ts +12 -20
- package/dist/plugins/types.d.ts.map +1 -1
- package/dist/plugins/types.js +84 -227
- package/dist/plugins/types.js.map +1 -1
- package/dist/plugins/valibot.d.ts +7 -44
- package/dist/plugins/valibot.d.ts.map +1 -1
- package/dist/plugins/valibot.js +376 -382
- package/dist/plugins/valibot.js.map +1 -1
- package/dist/plugins/zod.d.ts +20 -24
- package/dist/plugins/zod.d.ts.map +1 -1
- package/dist/plugins/zod.js +370 -367
- package/dist/plugins/zod.js.map +1 -1
- package/dist/runtime/emit.d.ts +64 -0
- package/dist/runtime/emit.d.ts.map +1 -0
- package/dist/runtime/emit.js +445 -0
- package/dist/runtime/emit.js.map +1 -0
- package/dist/runtime/errors.d.ts +36 -0
- package/dist/runtime/errors.d.ts.map +1 -0
- package/dist/runtime/errors.js +29 -0
- package/dist/runtime/errors.js.map +1 -0
- package/dist/runtime/file-assignment.d.ts +161 -0
- package/dist/runtime/file-assignment.d.ts.map +1 -0
- package/dist/runtime/file-assignment.js +195 -0
- package/dist/runtime/file-assignment.js.map +1 -0
- package/dist/runtime/orchestrator.d.ts +62 -0
- package/dist/runtime/orchestrator.d.ts.map +1 -0
- package/dist/runtime/orchestrator.js +99 -0
- package/dist/runtime/orchestrator.js.map +1 -0
- package/dist/runtime/registry.d.ts +268 -0
- package/dist/runtime/registry.d.ts.map +1 -0
- package/dist/runtime/registry.js +436 -0
- package/dist/runtime/registry.js.map +1 -0
- package/dist/runtime/types.d.ts +182 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +2 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/runtime/validation.d.ts +41 -0
- package/dist/runtime/validation.d.ts.map +1 -0
- package/dist/runtime/validation.js +70 -0
- package/dist/runtime/validation.js.map +1 -0
- package/dist/services/config-loader.d.ts.map +1 -1
- package/dist/services/config-loader.js +15 -6
- package/dist/services/config-loader.js.map +1 -1
- package/dist/services/config.d.ts +55 -25
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/config.js +60 -34
- package/dist/services/config.js.map +1 -1
- package/dist/services/file-writer.d.ts +3 -3
- package/dist/services/file-writer.d.ts.map +1 -1
- package/dist/services/file-writer.js +6 -8
- package/dist/services/file-writer.js.map +1 -1
- package/dist/services/inflection.d.ts +126 -27
- package/dist/services/inflection.d.ts.map +1 -1
- package/dist/services/inflection.js +300 -72
- package/dist/services/inflection.js.map +1 -1
- package/dist/services/introspection.d.ts.map +1 -1
- package/dist/services/introspection.js +6 -6
- package/dist/services/introspection.js.map +1 -1
- package/dist/services/ir-builder.d.ts.map +1 -1
- package/dist/services/ir-builder.js +73 -77
- package/dist/services/ir-builder.js.map +1 -1
- package/dist/services/ir.d.ts.map +1 -1
- package/dist/services/ir.js.map +1 -1
- package/dist/services/pg-types.d.ts.map +1 -1
- package/dist/services/pg-types.js +3 -3
- package/dist/services/pg-types.js.map +1 -1
- package/dist/services/smart-tags-parser.d.ts.map +1 -1
- package/dist/services/smart-tags-parser.js +4 -4
- package/dist/services/smart-tags-parser.js.map +1 -1
- package/dist/services/type-hints.d.ts.map +1 -1
- package/dist/services/type-hints.js +1 -1
- package/dist/services/type-hints.js.map +1 -1
- package/dist/services/user-module-parser.d.ts +46 -0
- package/dist/services/user-module-parser.d.ts.map +1 -0
- package/dist/services/user-module-parser.js +181 -0
- package/dist/services/user-module-parser.js.map +1 -0
- package/dist/shared/converters.d.ts +60 -0
- package/dist/shared/converters.d.ts.map +1 -0
- package/dist/shared/converters.js +168 -0
- package/dist/shared/converters.js.map +1 -0
- package/dist/shared/query-types.d.ts +95 -0
- package/dist/shared/query-types.d.ts.map +1 -0
- package/dist/shared/query-types.js +9 -0
- package/dist/shared/query-types.js.map +1 -0
- package/dist/testing.d.ts +125 -37
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +134 -42
- package/dist/testing.js.map +1 -1
- package/dist/user-module.d.ts +86 -0
- package/dist/user-module.d.ts.map +1 -0
- package/dist/user-module.js +55 -0
- package/dist/user-module.js.map +1 -0
- package/package.json +10 -6
- package/dist/lib/conjure.d.ts.map +0 -1
- package/dist/lib/conjure.js.map +0 -1
- package/dist/lib/hex.d.ts +0 -119
- package/dist/lib/hex.d.ts.map +0 -1
- package/dist/lib/hex.js +0 -188
- package/dist/lib/hex.js.map +0 -1
- package/dist/plugins/effect.d.ts +0 -53
- package/dist/plugins/effect.d.ts.map +0 -1
- package/dist/plugins/effect.js +0 -1074
- package/dist/plugins/effect.js.map +0 -1
- package/dist/plugins/kysely/queries.d.ts +0 -92
- package/dist/plugins/kysely/queries.d.ts.map +0 -1
- package/dist/plugins/kysely/queries.js +0 -1169
- package/dist/plugins/kysely/queries.js.map +0 -1
- package/dist/plugins/kysely/shared.d.ts +0 -59
- package/dist/plugins/kysely/shared.d.ts.map +0 -1
- package/dist/plugins/kysely/shared.js +0 -247
- package/dist/plugins/kysely/shared.js.map +0 -1
- package/dist/plugins/kysely/types.d.ts +0 -22
- package/dist/plugins/kysely/types.d.ts.map +0 -1
- package/dist/plugins/kysely/types.js +0 -428
- package/dist/plugins/kysely/types.js.map +0 -1
- package/dist/services/artifact-store.d.ts +0 -65
- package/dist/services/artifact-store.d.ts.map +0 -1
- package/dist/services/artifact-store.js +0 -57
- package/dist/services/artifact-store.js.map +0 -1
- package/dist/services/core-providers.d.ts +0 -15
- package/dist/services/core-providers.d.ts.map +0 -1
- package/dist/services/core-providers.js +0 -23
- package/dist/services/core-providers.js.map +0 -1
- package/dist/services/emissions.d.ts +0 -103
- package/dist/services/emissions.d.ts.map +0 -1
- package/dist/services/emissions.js +0 -241
- package/dist/services/emissions.js.map +0 -1
- package/dist/services/execution.d.ts +0 -35
- package/dist/services/execution.d.ts.map +0 -1
- package/dist/services/execution.js +0 -86
- package/dist/services/execution.js.map +0 -1
- package/dist/services/file-builder.d.ts +0 -85
- package/dist/services/file-builder.d.ts.map +0 -1
- package/dist/services/file-builder.js +0 -112
- package/dist/services/file-builder.js.map +0 -1
- package/dist/services/plugin-meta.d.ts +0 -33
- package/dist/services/plugin-meta.d.ts.map +0 -1
- package/dist/services/plugin-meta.js +0 -24
- package/dist/services/plugin-meta.js.map +0 -1
- package/dist/services/plugin-runner.d.ts +0 -42
- package/dist/services/plugin-runner.d.ts.map +0 -1
- package/dist/services/plugin-runner.js +0 -84
- package/dist/services/plugin-runner.js.map +0 -1
- package/dist/services/plugin.d.ts +0 -421
- package/dist/services/plugin.d.ts.map +0 -1
- package/dist/services/plugin.js +0 -197
- package/dist/services/plugin.js.map +0 -1
- package/dist/services/resolution.d.ts +0 -38
- package/dist/services/resolution.d.ts.map +0 -1
- package/dist/services/resolution.js +0 -242
- package/dist/services/resolution.js.map +0 -1
- package/dist/services/service-registry.d.ts +0 -74
- package/dist/services/service-registry.d.ts.map +0 -1
- package/dist/services/service-registry.js +0 -61
- package/dist/services/service-registry.js.map +0 -1
- package/dist/services/symbols.d.ts +0 -144
- package/dist/services/symbols.d.ts.map +0 -1
- package/dist/services/symbols.js +0 -144
- package/dist/services/symbols.js.map +0 -1
|
@@ -3,26 +3,60 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Provides configurable naming conventions for entities, fields, enums, etc.
|
|
5
5
|
* Users configure with simple string→string functions that compose naturally.
|
|
6
|
+
*
|
|
7
|
+
* ## Inflection Registry
|
|
8
|
+
*
|
|
9
|
+
* The registry tracks the provenance of inflected names, allowing the file
|
|
10
|
+
* assignment system to determine which base entity a derived name belongs to.
|
|
11
|
+
*
|
|
12
|
+
* Example: `UserInsert` → base entity `User`, variant `insert`
|
|
13
|
+
*
|
|
14
|
+
* This solves the problem where schemas for `UserInsert` would incorrectly
|
|
15
|
+
* go to `generated/userinsert/` instead of `generated/user/`.
|
|
6
16
|
*/
|
|
7
17
|
import { Context, Layer } from "effect";
|
|
8
18
|
import type { PgAttribute, PgClass, PgProc, PgType } from "@danielfgray/pg-introspection";
|
|
9
19
|
import type { SmartTags, ShapeKind } from "../ir/index.js";
|
|
10
20
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*
|
|
21
|
+
* The kind of name variant being registered.
|
|
22
|
+
* Extends ShapeKind with additional categories for enums, composites, etc.
|
|
23
|
+
*/
|
|
24
|
+
export type NameVariant = ShapeKind | "enum" | "composite" | "domain" | "function" | "entity";
|
|
25
|
+
/**
|
|
26
|
+
* Information about an inflected name and its provenance.
|
|
27
|
+
*/
|
|
28
|
+
export interface InflectedName {
|
|
29
|
+
/** The inflected name (e.g., "UserInsert") */
|
|
30
|
+
readonly name: string;
|
|
31
|
+
/** Base entity this derives from (e.g., "User") */
|
|
32
|
+
readonly baseEntity: string;
|
|
33
|
+
/** What kind of variant this is */
|
|
34
|
+
readonly variant: NameVariant;
|
|
35
|
+
/** Origin for debugging (e.g., "shapeName(User, insert)") */
|
|
36
|
+
readonly origin: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Registry for tracking inflected names and their provenance.
|
|
17
40
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
41
|
+
* Used by the file assignment system to determine which base entity
|
|
42
|
+
* a derived name (like "UserInsert") belongs to.
|
|
43
|
+
*/
|
|
44
|
+
export interface InflectionRegistry {
|
|
45
|
+
/** Record an inflected name with its provenance */
|
|
46
|
+
register(info: InflectedName): void;
|
|
47
|
+
/** Look up provenance by inflected name */
|
|
48
|
+
lookup(name: string): InflectedName | undefined;
|
|
49
|
+
/** Get all names registered for a base entity */
|
|
50
|
+
getVariants(baseEntity: string): readonly InflectedName[];
|
|
51
|
+
/** Check if a name has already been registered (potential conflict) */
|
|
52
|
+
hasConflict(name: string): boolean;
|
|
53
|
+
/** Get all registered names (for debugging) */
|
|
54
|
+
getAll(): ReadonlyMap<string, InflectedName>;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Create a new InflectionRegistry instance.
|
|
25
58
|
*/
|
|
59
|
+
export declare function createInflectionRegistry(): InflectionRegistry;
|
|
26
60
|
export declare const inflect: {
|
|
27
61
|
/** Convert snake_case to camelCase */
|
|
28
62
|
readonly camelCase: (self: string) => string;
|
|
@@ -30,6 +64,8 @@ export declare const inflect: {
|
|
|
30
64
|
readonly pascalCase: (self: string) => string;
|
|
31
65
|
/** Convert camelCase to snake_case */
|
|
32
66
|
readonly snakeCase: (self: string) => string;
|
|
67
|
+
/** Convert PascalCase/camelCase to kebab-case */
|
|
68
|
+
readonly kebabCase: (str: string) => string;
|
|
33
69
|
/** Singularize a word (users → user) */
|
|
34
70
|
readonly singularize: (word: string) => string;
|
|
35
71
|
/** Pluralize a word (user → users) */
|
|
@@ -44,14 +80,36 @@ export declare const inflect: {
|
|
|
44
80
|
readonly uppercase: (s: string) => string;
|
|
45
81
|
};
|
|
46
82
|
/**
|
|
47
|
-
* Core inflection interface - shared naming transformations
|
|
83
|
+
* Core inflection interface - shared naming transformations.
|
|
84
|
+
*
|
|
85
|
+
* Includes a registry that tracks the provenance of inflected names,
|
|
86
|
+
* allowing file assignment to correctly group derived names (like UserInsert)
|
|
87
|
+
* with their base entity (User).
|
|
88
|
+
*
|
|
89
|
+
* ## Semantic vs Mechanical Methods
|
|
90
|
+
*
|
|
91
|
+
* Plugins should use SEMANTIC methods that express intent:
|
|
92
|
+
* - entityRoutePath(entity) → "/users"
|
|
93
|
+
*
|
|
94
|
+
* NOT mechanical methods that assume casing:
|
|
95
|
+
* - toCamelCase(entityName) + "Create" ❌
|
|
96
|
+
*
|
|
97
|
+
* This allows users to customize naming conventions without plugins
|
|
98
|
+
* having to understand the transformations.
|
|
48
99
|
*/
|
|
49
100
|
export interface CoreInflection {
|
|
50
101
|
readonly camelCase: (text: string) => string;
|
|
51
102
|
readonly pascalCase: (text: string) => string;
|
|
103
|
+
readonly kebabCase: (text: string) => string;
|
|
52
104
|
readonly pluralize: (text: string) => string;
|
|
53
105
|
readonly singularize: (text: string) => string;
|
|
54
106
|
readonly safeIdentifier: (text: string) => string;
|
|
107
|
+
/**
|
|
108
|
+
* Build a variable name from entity and suffix.
|
|
109
|
+
* @example variableName("User", "Router") → "userRouter"
|
|
110
|
+
* @example variableName("User", "ElysiaRoutes") → "userElysiaRoutes"
|
|
111
|
+
*/
|
|
112
|
+
readonly variableName: (entityName: string, suffix: string) => string;
|
|
55
113
|
readonly entityName: (pgClass: PgClass, tags: SmartTags) => string;
|
|
56
114
|
readonly shapeName: (entityName: string, kind: ShapeKind) => string;
|
|
57
115
|
readonly fieldName: (pgAttribute: PgAttribute, tags: SmartTags) => string;
|
|
@@ -59,6 +117,36 @@ export interface CoreInflection {
|
|
|
59
117
|
readonly enumValueName: (value: string) => string;
|
|
60
118
|
readonly relationName: (name: string) => string;
|
|
61
119
|
readonly functionName: (pgProc: PgProc, tags: SmartTags) => string;
|
|
120
|
+
readonly folderName: (entityName: string) => string;
|
|
121
|
+
/**
|
|
122
|
+
* Base route path for an entity (plural, kebab-case).
|
|
123
|
+
* @example entityRoutePath("User") → "/users"
|
|
124
|
+
* @example entityRoutePath("BlogPost") → "/blog-posts"
|
|
125
|
+
*/
|
|
126
|
+
readonly entityRoutePath: (entityName: string) => string;
|
|
127
|
+
/**
|
|
128
|
+
* Route path segment for cursor pagination.
|
|
129
|
+
* @example cursorRoutePath("created_at") → "/by-created-at"
|
|
130
|
+
* @example cursorRoutePath("updatedAt") → "/by-updated-at"
|
|
131
|
+
*/
|
|
132
|
+
readonly cursorRoutePath: (columnName: string) => string;
|
|
133
|
+
/**
|
|
134
|
+
* Route path for indexed column lookup (with param).
|
|
135
|
+
* @example lookupRoutePath("email", "email") → "/by-email/:email"
|
|
136
|
+
* @example lookupRoutePath("user_id", "userId") → "/by-user-id/:userId"
|
|
137
|
+
*/
|
|
138
|
+
readonly lookupRoutePath: (columnName: string, paramName: string) => string;
|
|
139
|
+
/**
|
|
140
|
+
* Route path for a custom function.
|
|
141
|
+
* @example functionRoutePath("calculateTotal") → "/calculate-total"
|
|
142
|
+
*/
|
|
143
|
+
readonly functionRoutePath: (fnName: string) => string;
|
|
144
|
+
/**
|
|
145
|
+
* Registry tracking the provenance of inflected names.
|
|
146
|
+
* Auto-populated when shapeName(), entityName(), enumName() are called.
|
|
147
|
+
* Used by file assignment to determine base entity for derived names.
|
|
148
|
+
*/
|
|
149
|
+
readonly registry: InflectionRegistry;
|
|
62
150
|
}
|
|
63
151
|
declare const Inflection_base: Context.TagClass<Inflection, "Inflection", CoreInflection>;
|
|
64
152
|
/** Service tag */
|
|
@@ -140,6 +228,11 @@ export interface InflectionConfig {
|
|
|
140
228
|
* Default: camelCase (overloads are warned and skipped)
|
|
141
229
|
*/
|
|
142
230
|
readonly functionName?: TransformFn;
|
|
231
|
+
/**
|
|
232
|
+
* Transform entity name → folder name for file output.
|
|
233
|
+
* Default: uncapitalize (User → user, UserEmail → userEmail)
|
|
234
|
+
*/
|
|
235
|
+
readonly folderName?: TransformFn;
|
|
143
236
|
}
|
|
144
237
|
/**
|
|
145
238
|
* Default inflection transforms - applies common JS/TS naming conventions:
|
|
@@ -156,11 +249,11 @@ export interface InflectionConfig {
|
|
|
156
249
|
*/
|
|
157
250
|
export declare const defaultTransforms: InflectionConfig;
|
|
158
251
|
/**
|
|
159
|
-
*
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
*
|
|
252
|
+
* Create a CoreInflection instance with its own registry and optional config.
|
|
253
|
+
*
|
|
254
|
+
* Each instance gets a fresh InflectionRegistry that tracks name provenance
|
|
255
|
+
* for file assignment purposes. The registry is auto-populated when
|
|
256
|
+
* shapeName(), entityName(), enumName(), and functionName() are called.
|
|
164
257
|
*
|
|
165
258
|
* By default, applies standard JS/TS naming conventions (PascalCase entities,
|
|
166
259
|
* camelCase relations, etc.). User config is merged on top of defaults.
|
|
@@ -178,17 +271,20 @@ export declare const defaultInflection: CoreInflection;
|
|
|
178
271
|
* fieldName: inflect.camelCase, // Also camelCase fields
|
|
179
272
|
* })
|
|
180
273
|
*
|
|
181
|
-
* //
|
|
182
|
-
* const
|
|
183
|
-
*
|
|
184
|
-
* fieldName: (name) => name,
|
|
185
|
-
* enumName: (name) => name,
|
|
186
|
-
* shapeSuffix: (name) => name,
|
|
187
|
-
* relationName: (name) => name,
|
|
188
|
-
* })
|
|
274
|
+
* // Look up provenance later
|
|
275
|
+
* const info = inflection.registry.lookup("UserInsert")
|
|
276
|
+
* // → { name: "UserInsert", baseEntity: "User", variant: "insert", ... }
|
|
189
277
|
* ```
|
|
190
278
|
*/
|
|
191
279
|
export declare function createInflection(config?: InflectionConfig): CoreInflection;
|
|
280
|
+
/**
|
|
281
|
+
* Default inflection instance - creates a new instance with standard conventions.
|
|
282
|
+
*
|
|
283
|
+
* Note: This is a getter that returns a fresh instance each time to ensure
|
|
284
|
+
* each usage gets its own registry. For most cases, use createInflection()
|
|
285
|
+
* or makeInflectionLayer() directly.
|
|
286
|
+
*/
|
|
287
|
+
export declare const defaultInflection: CoreInflection;
|
|
192
288
|
/**
|
|
193
289
|
* Create an Effect Layer that provides inflection with optional configuration overrides.
|
|
194
290
|
*
|
|
@@ -239,6 +335,9 @@ export declare function composeInflectionConfigs(pluginDefaults: InflectionConfi
|
|
|
239
335
|
* This is used by PluginRunner to merge plugin's inflectionDefaults
|
|
240
336
|
* with the user's configured inflection.
|
|
241
337
|
*
|
|
338
|
+
* The composed inflection shares the base inflection's registry, so all
|
|
339
|
+
* registrations go to the same place regardless of composition.
|
|
340
|
+
*
|
|
242
341
|
* @param baseInflection - The user's CoreInflection instance
|
|
243
342
|
* @param pluginDefaults - Plugin's default transforms to apply first
|
|
244
343
|
* @returns New CoreInflection with composed behavior
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inflection.d.ts","sourceRoot":"","sources":["../../src/services/inflection.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"inflection.d.ts","sourceRoot":"","sources":["../../src/services/inflection.ts"],"names":[],"mappings":"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"}
|