@odata-effect/odata-effect-generator 0.3.1 → 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/dist/cjs/Cli.js +19 -3
- package/dist/cjs/Cli.js.map +1 -1
- package/dist/cjs/digester/Digester.js +34 -30
- package/dist/cjs/digester/Digester.js.map +1 -1
- package/dist/cjs/generator/Generator.js.map +1 -1
- package/dist/cjs/generator/ModelsGenerator.js +26 -2
- package/dist/cjs/generator/ModelsGenerator.js.map +1 -1
- package/dist/cjs/generator/NamingHelper.js +90 -1
- package/dist/cjs/generator/NamingHelper.js.map +1 -1
- package/dist/cjs/generator/OperationsGenerator.js +44 -16
- package/dist/cjs/generator/OperationsGenerator.js.map +1 -1
- package/dist/cjs/index.js +7 -3
- package/dist/cjs/model/DataModel.js.map +1 -1
- package/dist/cjs/model/GeneratorConfig.js +70 -0
- package/dist/cjs/model/GeneratorConfig.js.map +1 -0
- package/dist/dts/Cli.d.ts.map +1 -1
- package/dist/dts/digester/Digester.d.ts +2 -1
- package/dist/dts/digester/Digester.d.ts.map +1 -1
- package/dist/dts/generator/Generator.d.ts +7 -4
- package/dist/dts/generator/Generator.d.ts.map +1 -1
- package/dist/dts/generator/NamingHelper.d.ts +49 -0
- package/dist/dts/generator/NamingHelper.d.ts.map +1 -1
- package/dist/dts/generator/OperationsGenerator.d.ts +1 -0
- package/dist/dts/generator/OperationsGenerator.d.ts.map +1 -1
- package/dist/dts/index.d.ts +41 -12
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/model/DataModel.d.ts +1 -0
- package/dist/dts/model/DataModel.d.ts.map +1 -1
- package/dist/dts/model/GeneratorConfig.d.ts +114 -0
- package/dist/dts/model/GeneratorConfig.d.ts.map +1 -0
- package/dist/esm/Cli.js +19 -3
- package/dist/esm/Cli.js.map +1 -1
- package/dist/esm/digester/Digester.js +35 -31
- package/dist/esm/digester/Digester.js.map +1 -1
- package/dist/esm/generator/Generator.js.map +1 -1
- package/dist/esm/generator/ModelsGenerator.js +26 -2
- package/dist/esm/generator/ModelsGenerator.js.map +1 -1
- package/dist/esm/generator/NamingHelper.js +84 -0
- package/dist/esm/generator/NamingHelper.js.map +1 -1
- package/dist/esm/generator/OperationsGenerator.js +45 -17
- package/dist/esm/generator/OperationsGenerator.js.map +1 -1
- package/dist/esm/index.js +41 -12
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/model/DataModel.js.map +1 -1
- package/dist/esm/model/GeneratorConfig.js +60 -0
- package/dist/esm/model/GeneratorConfig.js.map +1 -0
- package/model/GeneratorConfig/package.json +6 -0
- package/package.json +9 -1
- package/src/Cli.ts +26 -3
- package/src/digester/Digester.ts +55 -29
- package/src/generator/Generator.ts +7 -4
- package/src/generator/ModelsGenerator.ts +31 -2
- package/src/generator/NamingHelper.ts +115 -0
- package/src/generator/OperationsGenerator.ts +51 -18
- package/src/index.ts +43 -12
- package/src/model/DataModel.ts +1 -0
- package/src/model/GeneratorConfig.ts +180 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration for code generation including name overrides.
|
|
3
|
+
*
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Override configuration for property names.
|
|
9
|
+
* Maps OData property names to TypeScript property names.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const overrides: PropertyOverrides = {
|
|
14
|
+
* "ID": "id", // OData "ID" -> TypeScript "id" (instead of "iD")
|
|
15
|
+
* "SKU": "sku" // OData "SKU" -> TypeScript "sku"
|
|
16
|
+
* }
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @since 1.0.0
|
|
20
|
+
* @category config
|
|
21
|
+
*/
|
|
22
|
+
export type PropertyOverrides = Record<string, string>
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Override configuration for a single entity or complex type.
|
|
26
|
+
*
|
|
27
|
+
* @since 1.0.0
|
|
28
|
+
* @category config
|
|
29
|
+
*/
|
|
30
|
+
export interface TypeOverrides {
|
|
31
|
+
/**
|
|
32
|
+
* Override the TypeScript class name for this type.
|
|
33
|
+
* If not specified, uses the default camelCase conversion.
|
|
34
|
+
*/
|
|
35
|
+
readonly name?: string
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Override individual property names.
|
|
39
|
+
* Maps OData property names to TypeScript property names.
|
|
40
|
+
*/
|
|
41
|
+
readonly properties?: PropertyOverrides
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Override configuration for an operation (Function/Action/FunctionImport).
|
|
46
|
+
*
|
|
47
|
+
* @since 1.0.0
|
|
48
|
+
* @category config
|
|
49
|
+
*/
|
|
50
|
+
export interface OperationOverrides {
|
|
51
|
+
/**
|
|
52
|
+
* Override the TypeScript function name for this operation.
|
|
53
|
+
* If not specified, uses the default camelCase conversion.
|
|
54
|
+
*/
|
|
55
|
+
readonly name?: string
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Override individual parameter names.
|
|
59
|
+
* Maps OData parameter names to TypeScript parameter names.
|
|
60
|
+
*/
|
|
61
|
+
readonly parameters?: PropertyOverrides
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Override configuration for naming conversions.
|
|
66
|
+
*
|
|
67
|
+
* @since 1.0.0
|
|
68
|
+
* @category config
|
|
69
|
+
*/
|
|
70
|
+
export interface NamingOverrides {
|
|
71
|
+
/**
|
|
72
|
+
* Override configurations for entity types.
|
|
73
|
+
* Keys are OData entity type names.
|
|
74
|
+
*/
|
|
75
|
+
readonly entities?: Record<string, TypeOverrides>
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Override configurations for complex types.
|
|
79
|
+
* Keys are OData complex type names.
|
|
80
|
+
*/
|
|
81
|
+
readonly complexTypes?: Record<string, TypeOverrides>
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Override configurations for operations (Functions/Actions/FunctionImports).
|
|
85
|
+
* Keys are OData operation names.
|
|
86
|
+
*/
|
|
87
|
+
readonly operations?: Record<string, OperationOverrides>
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Global property name overrides applied to all types.
|
|
91
|
+
* Type-specific overrides take precedence over global overrides.
|
|
92
|
+
*/
|
|
93
|
+
readonly properties?: PropertyOverrides
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Get the overridden property name or undefined if no override exists.
|
|
98
|
+
*
|
|
99
|
+
* @since 1.0.0
|
|
100
|
+
* @category naming
|
|
101
|
+
*/
|
|
102
|
+
export const getPropertyOverride = (
|
|
103
|
+
overrides: NamingOverrides | undefined,
|
|
104
|
+
typeName: string,
|
|
105
|
+
typeKind: "entity" | "complex",
|
|
106
|
+
odataPropertyName: string
|
|
107
|
+
): string | undefined => {
|
|
108
|
+
if (!overrides) return undefined
|
|
109
|
+
|
|
110
|
+
// Check type-specific overrides first
|
|
111
|
+
const typeOverrides = typeKind === "entity"
|
|
112
|
+
? overrides.entities?.[typeName]
|
|
113
|
+
: overrides.complexTypes?.[typeName]
|
|
114
|
+
|
|
115
|
+
if (typeOverrides?.properties?.[odataPropertyName]) {
|
|
116
|
+
return typeOverrides.properties[odataPropertyName]
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Check global property overrides
|
|
120
|
+
if (overrides.properties?.[odataPropertyName]) {
|
|
121
|
+
return overrides.properties[odataPropertyName]
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return undefined
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Get the overridden type name or undefined if no override exists.
|
|
129
|
+
*
|
|
130
|
+
* @since 1.0.0
|
|
131
|
+
* @category naming
|
|
132
|
+
*/
|
|
133
|
+
export const getTypeOverride = (
|
|
134
|
+
overrides: NamingOverrides | undefined,
|
|
135
|
+
typeName: string,
|
|
136
|
+
typeKind: "entity" | "complex"
|
|
137
|
+
): string | undefined => {
|
|
138
|
+
if (!overrides) return undefined
|
|
139
|
+
|
|
140
|
+
const typeOverrides = typeKind === "entity"
|
|
141
|
+
? overrides.entities?.[typeName]
|
|
142
|
+
: overrides.complexTypes?.[typeName]
|
|
143
|
+
|
|
144
|
+
return typeOverrides?.name
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Get the overridden operation name or undefined if no override exists.
|
|
149
|
+
*
|
|
150
|
+
* @since 1.0.0
|
|
151
|
+
* @category naming
|
|
152
|
+
*/
|
|
153
|
+
export const getOperationOverride = (
|
|
154
|
+
overrides: NamingOverrides | undefined,
|
|
155
|
+
operationName: string
|
|
156
|
+
): string | undefined => {
|
|
157
|
+
if (!overrides) return undefined
|
|
158
|
+
return overrides.operations?.[operationName]?.name
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Get the overridden operation parameter name or undefined if no override exists.
|
|
163
|
+
*
|
|
164
|
+
* @since 1.0.0
|
|
165
|
+
* @category naming
|
|
166
|
+
*/
|
|
167
|
+
export const getOperationParameterOverride = (
|
|
168
|
+
overrides: NamingOverrides | undefined,
|
|
169
|
+
operationName: string,
|
|
170
|
+
parameterName: string
|
|
171
|
+
): string | undefined => {
|
|
172
|
+
if (!overrides) return undefined
|
|
173
|
+
|
|
174
|
+
// Check operation-specific parameter overrides
|
|
175
|
+
const opOverride = overrides.operations?.[operationName]?.parameters?.[parameterName]
|
|
176
|
+
if (opOverride) return opOverride
|
|
177
|
+
|
|
178
|
+
// Fall back to global property overrides
|
|
179
|
+
return overrides.properties?.[parameterName]
|
|
180
|
+
}
|