@odata-effect/odata-effect-generator 0.1.2 → 0.2.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/README.md +223 -5
- package/dist/cjs/Cli.js +6 -2
- package/dist/cjs/Cli.js.map +1 -1
- package/dist/cjs/generator/Generator.js +33 -15
- package/dist/cjs/generator/Generator.js.map +1 -1
- package/dist/cjs/generator/IndexGenerator.js +19 -73
- package/dist/cjs/generator/IndexGenerator.js.map +1 -1
- package/dist/cjs/generator/NamingHelper.js +4 -1
- package/dist/cjs/generator/NamingHelper.js.map +1 -1
- package/dist/cjs/generator/NavigationGenerator.js +338 -0
- package/dist/cjs/generator/NavigationGenerator.js.map +1 -0
- package/dist/cjs/generator/OperationsGenerator.js +384 -0
- package/dist/cjs/generator/OperationsGenerator.js.map +1 -0
- package/dist/cjs/generator/QueryModelsGenerator.js +2 -2
- package/dist/cjs/generator/QueryModelsGenerator.js.map +1 -1
- package/dist/cjs/generator/ServiceFnGenerator.js +1 -1
- package/dist/cjs/generator/ServiceFnGenerator.js.map +1 -1
- package/dist/cjs/generator/ServiceFnPromiseGenerator.js +2 -2
- package/dist/cjs/generator/ServiceFnPromiseGenerator.js.map +1 -1
- package/dist/dts/Cli.d.ts.map +1 -1
- package/dist/dts/generator/Generator.d.ts +2 -0
- package/dist/dts/generator/Generator.d.ts.map +1 -1
- package/dist/dts/generator/IndexGenerator.d.ts.map +1 -1
- package/dist/dts/generator/NamingHelper.d.ts.map +1 -1
- package/dist/dts/generator/NavigationGenerator.d.ts +55 -0
- package/dist/dts/generator/NavigationGenerator.d.ts.map +1 -0
- package/dist/dts/generator/OperationsGenerator.d.ts +50 -0
- package/dist/dts/generator/OperationsGenerator.d.ts.map +1 -0
- package/dist/esm/Cli.js +6 -2
- package/dist/esm/Cli.js.map +1 -1
- package/dist/esm/generator/Generator.js +33 -15
- package/dist/esm/generator/Generator.js.map +1 -1
- package/dist/esm/generator/IndexGenerator.js +19 -73
- package/dist/esm/generator/IndexGenerator.js.map +1 -1
- package/dist/esm/generator/NamingHelper.js +4 -1
- package/dist/esm/generator/NamingHelper.js.map +1 -1
- package/dist/esm/generator/NavigationGenerator.js +330 -0
- package/dist/esm/generator/NavigationGenerator.js.map +1 -0
- package/dist/esm/generator/OperationsGenerator.js +375 -0
- package/dist/esm/generator/OperationsGenerator.js.map +1 -0
- package/dist/esm/generator/QueryModelsGenerator.js +2 -2
- package/dist/esm/generator/QueryModelsGenerator.js.map +1 -1
- package/dist/esm/generator/ServiceFnGenerator.js +1 -1
- package/dist/esm/generator/ServiceFnGenerator.js.map +1 -1
- package/dist/esm/generator/ServiceFnPromiseGenerator.js +2 -2
- package/dist/esm/generator/ServiceFnPromiseGenerator.js.map +1 -1
- package/generator/NavigationGenerator/package.json +6 -0
- package/generator/OperationsGenerator/package.json +6 -0
- package/package.json +17 -1
- package/src/Cli.ts +8 -2
- package/src/generator/Generator.ts +43 -13
- package/src/generator/IndexGenerator.ts +21 -74
- package/src/generator/NamingHelper.ts +6 -1
- package/src/generator/NavigationGenerator.ts +451 -0
- package/src/generator/OperationsGenerator.ts +481 -0
- package/src/generator/QueryModelsGenerator.ts +2 -2
- package/src/generator/ServiceFnGenerator.ts +1 -1
- package/src/generator/ServiceFnPromiseGenerator.ts +2 -2
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getPathBuildersModuleName = exports.generateNavigations = void 0;
|
|
7
|
+
var _NamingHelper = require("./NamingHelper.js");
|
|
8
|
+
const V2_CONFIG = {
|
|
9
|
+
odataNamespace: "OData",
|
|
10
|
+
clientModule: "ODataClient",
|
|
11
|
+
queryOptionsType: "ODataQueryOptions"
|
|
12
|
+
};
|
|
13
|
+
const V4_CONFIG = {
|
|
14
|
+
odataNamespace: "ODataV4",
|
|
15
|
+
clientModule: "ODataV4Client",
|
|
16
|
+
queryOptionsType: "ODataV4QueryOptions"
|
|
17
|
+
};
|
|
18
|
+
const getVersionConfig = version => version === "V4" ? V4_CONFIG : V2_CONFIG;
|
|
19
|
+
/**
|
|
20
|
+
* Get the path builders module name.
|
|
21
|
+
*/
|
|
22
|
+
const getPathBuildersModuleName = () => "PathBuilders";
|
|
23
|
+
/**
|
|
24
|
+
* Collect all navigation properties across all entity types.
|
|
25
|
+
*/
|
|
26
|
+
exports.getPathBuildersModuleName = getPathBuildersModuleName;
|
|
27
|
+
const collectAllNavigationProperties = dataModel => {
|
|
28
|
+
const navProps = [];
|
|
29
|
+
for (const entityType of dataModel.entityTypes.values()) {
|
|
30
|
+
for (const navProp of entityType.navigationProperties) {
|
|
31
|
+
const targetTypeName = (0, _NamingHelper.getClassName)(navProp.targetType);
|
|
32
|
+
navProps.push({
|
|
33
|
+
propertyName: navProp.name,
|
|
34
|
+
odataName: navProp.odataName,
|
|
35
|
+
sourceEntityName: entityType.name,
|
|
36
|
+
targetEntityName: targetTypeName,
|
|
37
|
+
isCollection: navProp.isCollection
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return navProps;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Check if a navigation property name has collisions (same name, different source entities).
|
|
45
|
+
*/
|
|
46
|
+
const findCollisions = navProps => {
|
|
47
|
+
const collisions = new Set();
|
|
48
|
+
const seen = new Map();
|
|
49
|
+
for (const prop of navProps) {
|
|
50
|
+
const existing = seen.get(prop.propertyName);
|
|
51
|
+
if (existing) {
|
|
52
|
+
// Collision if same name but different source entity
|
|
53
|
+
if (existing.sourceEntityName !== prop.sourceEntityName) {
|
|
54
|
+
collisions.add(prop.propertyName);
|
|
55
|
+
}
|
|
56
|
+
} else {
|
|
57
|
+
seen.set(prop.propertyName, prop);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return collisions;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Get the function name for a navigation property.
|
|
64
|
+
*/
|
|
65
|
+
const getNavFunctionName = (prop, hasCollision) => {
|
|
66
|
+
if (hasCollision) {
|
|
67
|
+
// Qualified name: personTrips, orderTrips
|
|
68
|
+
return (0, _NamingHelper.toCamelCase)(`${prop.sourceEntityName}_${prop.propertyName}`);
|
|
69
|
+
}
|
|
70
|
+
return (0, _NamingHelper.toCamelCase)(prop.propertyName);
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Collect derived types for an entity type (for type casting).
|
|
74
|
+
*/
|
|
75
|
+
const getDerivedTypes = (baseTypeFqName, dataModel) => {
|
|
76
|
+
const derived = [];
|
|
77
|
+
for (const entityType of dataModel.entityTypes.values()) {
|
|
78
|
+
if (entityType.baseType === baseTypeFqName) {
|
|
79
|
+
derived.push(entityType);
|
|
80
|
+
// Recursively get further derived types
|
|
81
|
+
derived.push(...getDerivedTypes(entityType.fqName, dataModel));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return derived;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Generate navigation builders.
|
|
88
|
+
*
|
|
89
|
+
* @since 1.0.0
|
|
90
|
+
* @category generation
|
|
91
|
+
*/
|
|
92
|
+
const generateNavigations = dataModel => {
|
|
93
|
+
const moduleName = getPathBuildersModuleName();
|
|
94
|
+
const content = generatePathBuildersFile(dataModel);
|
|
95
|
+
return {
|
|
96
|
+
navigationFiles: [{
|
|
97
|
+
fileName: `${moduleName}.ts`,
|
|
98
|
+
content
|
|
99
|
+
}]
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Generate the PathBuilders.ts file.
|
|
104
|
+
*/
|
|
105
|
+
exports.generateNavigations = generateNavigations;
|
|
106
|
+
const generatePathBuildersFile = dataModel => {
|
|
107
|
+
const lines = [];
|
|
108
|
+
const versionConfig = getVersionConfig(dataModel.version);
|
|
109
|
+
// Collect all nav properties and find collisions
|
|
110
|
+
const allNavProps = collectAllNavigationProperties(dataModel);
|
|
111
|
+
const collisions = findCollisions(allNavProps);
|
|
112
|
+
// Collect all entity type names that need to be referenced
|
|
113
|
+
const referencedTypes = collectReferencedTypes(dataModel);
|
|
114
|
+
// Header
|
|
115
|
+
lines.push(`/**`);
|
|
116
|
+
lines.push(` * Type-safe, tree-shakable path builders for OData navigation.`);
|
|
117
|
+
lines.push(` * Generated by odata-effect-gen.`);
|
|
118
|
+
lines.push(` *`);
|
|
119
|
+
lines.push(` * @example`);
|
|
120
|
+
lines.push(` * \`\`\`typescript`);
|
|
121
|
+
lines.push(` * import { pipe } from "effect"`);
|
|
122
|
+
lines.push(` * import { People, byKey, trips, planItems } from "./PathBuilders"`);
|
|
123
|
+
lines.push(` *`);
|
|
124
|
+
lines.push(` * const path = pipe(`);
|
|
125
|
+
lines.push(` * People,`);
|
|
126
|
+
lines.push(` * byKey("russellwhyte"),`);
|
|
127
|
+
lines.push(` * trips,`);
|
|
128
|
+
lines.push(` * byKey(0),`);
|
|
129
|
+
lines.push(` * planItems`);
|
|
130
|
+
lines.push(` * )`);
|
|
131
|
+
lines.push(` * \`\`\``);
|
|
132
|
+
lines.push(` *`);
|
|
133
|
+
lines.push(` * @since 1.0.0`);
|
|
134
|
+
lines.push(` */`);
|
|
135
|
+
lines.push(``);
|
|
136
|
+
// Imports
|
|
137
|
+
lines.push(`import * as ${versionConfig.odataNamespace} from "@odata-effect/odata-effect/${versionConfig.odataNamespace}"`);
|
|
138
|
+
lines.push(`import type { ${versionConfig.queryOptionsType} } from "@odata-effect/odata-effect/${versionConfig.clientModule}"`);
|
|
139
|
+
lines.push(`import type * as Schema from "effect/Schema"`);
|
|
140
|
+
lines.push(``);
|
|
141
|
+
// Import model types with Model suffix to avoid collision with entity set names
|
|
142
|
+
if (referencedTypes.size > 0) {
|
|
143
|
+
lines.push(`import type {`);
|
|
144
|
+
const typesList = Array.from(referencedTypes).sort();
|
|
145
|
+
for (let i = 0; i < typesList.length; i++) {
|
|
146
|
+
const isLast = i === typesList.length - 1;
|
|
147
|
+
lines.push(` ${typesList[i]} as ${typesList[i]}Model${isLast ? "" : ","}`);
|
|
148
|
+
}
|
|
149
|
+
lines.push(`} from "./Models"`);
|
|
150
|
+
lines.push(``);
|
|
151
|
+
}
|
|
152
|
+
// Path branded type
|
|
153
|
+
lines.push(`// ============================================================================`);
|
|
154
|
+
lines.push(`// Path Types`);
|
|
155
|
+
lines.push(`// ============================================================================`);
|
|
156
|
+
lines.push(``);
|
|
157
|
+
lines.push(`/**`);
|
|
158
|
+
lines.push(` * Branded path type that tracks the entity type and whether it's a collection.`);
|
|
159
|
+
lines.push(` * This enables type-safe navigation - you can only navigate to properties`);
|
|
160
|
+
lines.push(` * that exist on the current entity type.`);
|
|
161
|
+
lines.push(` *`);
|
|
162
|
+
lines.push(` * @since 1.0.0`);
|
|
163
|
+
lines.push(` * @category types`);
|
|
164
|
+
lines.push(` */`);
|
|
165
|
+
lines.push(`export type Path<TEntity, IsCollection extends boolean = false> = string & {`);
|
|
166
|
+
lines.push(` readonly _entity: TEntity`);
|
|
167
|
+
lines.push(` readonly _collection: IsCollection`);
|
|
168
|
+
lines.push(`}`);
|
|
169
|
+
lines.push(``);
|
|
170
|
+
// Entity set roots (PascalCase, types use Model suffix to avoid collision)
|
|
171
|
+
lines.push(`// ============================================================================`);
|
|
172
|
+
lines.push(`// Entity Set Roots`);
|
|
173
|
+
lines.push(`// ============================================================================`);
|
|
174
|
+
lines.push(``);
|
|
175
|
+
for (const entitySet of dataModel.entitySets.values()) {
|
|
176
|
+
const entityType = dataModel.entityTypes.get(entitySet.entityTypeFqName);
|
|
177
|
+
if (entityType) {
|
|
178
|
+
lines.push(`/**`);
|
|
179
|
+
lines.push(` * Root path for ${entitySet.name} entity set.`);
|
|
180
|
+
lines.push(` *`);
|
|
181
|
+
lines.push(` * @since 1.0.0`);
|
|
182
|
+
lines.push(` * @category entity-sets`);
|
|
183
|
+
lines.push(` */`);
|
|
184
|
+
lines.push(`export const ${entitySet.name}: Path<${entityType.name}Model, true> = "${entitySet.name}" as Path<${entityType.name}Model, true>`);
|
|
185
|
+
lines.push(``);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
// byKey function
|
|
189
|
+
lines.push(`// ============================================================================`);
|
|
190
|
+
lines.push(`// Key Access`);
|
|
191
|
+
lines.push(`// ============================================================================`);
|
|
192
|
+
lines.push(``);
|
|
193
|
+
lines.push(`/**`);
|
|
194
|
+
lines.push(` * Navigate to a specific entity by key.`);
|
|
195
|
+
lines.push(` * Works on any collection path.`);
|
|
196
|
+
lines.push(` *`);
|
|
197
|
+
lines.push(` * @example`);
|
|
198
|
+
lines.push(` * \`\`\`typescript`);
|
|
199
|
+
lines.push(` * pipe(People, byKey("russellwhyte")) // Path<PersonModel, false>`);
|
|
200
|
+
lines.push(` * pipe(Airports, byKey("KSFO")) // Path<AirportModel, false>`);
|
|
201
|
+
lines.push(` * \`\`\``);
|
|
202
|
+
lines.push(` *`);
|
|
203
|
+
lines.push(` * @since 1.0.0`);
|
|
204
|
+
lines.push(` * @category navigation`);
|
|
205
|
+
lines.push(` */`);
|
|
206
|
+
lines.push(`export const byKey = <T>(key: string | number) =>`);
|
|
207
|
+
lines.push(` (base: Path<T, true>): Path<T, false> =>`);
|
|
208
|
+
lines.push(` \`\${base}(\${typeof key === "string" ? \`'\${key}'\` : key})\` as Path<T, false>`);
|
|
209
|
+
lines.push(``);
|
|
210
|
+
// Navigation property functions
|
|
211
|
+
lines.push(`// ============================================================================`);
|
|
212
|
+
lines.push(`// Navigation Properties`);
|
|
213
|
+
lines.push(`// ============================================================================`);
|
|
214
|
+
lines.push(``);
|
|
215
|
+
// Group nav props by source entity for better organization
|
|
216
|
+
const navPropsBySource = new Map();
|
|
217
|
+
for (const prop of allNavProps) {
|
|
218
|
+
const existing = navPropsBySource.get(prop.sourceEntityName) || [];
|
|
219
|
+
existing.push(prop);
|
|
220
|
+
navPropsBySource.set(prop.sourceEntityName, existing);
|
|
221
|
+
}
|
|
222
|
+
for (const [sourceEntity, props] of navPropsBySource) {
|
|
223
|
+
lines.push(`// From ${sourceEntity}`);
|
|
224
|
+
for (const prop of props) {
|
|
225
|
+
const hasCollision = collisions.has(prop.propertyName);
|
|
226
|
+
const fnName = getNavFunctionName(prop, hasCollision);
|
|
227
|
+
const targetType = prop.targetEntityName;
|
|
228
|
+
lines.push(`/**`);
|
|
229
|
+
lines.push(` * Navigate to ${prop.odataName}${prop.isCollection ? " collection" : ""}.`);
|
|
230
|
+
lines.push(` *`);
|
|
231
|
+
lines.push(` * @since 1.0.0`);
|
|
232
|
+
lines.push(` * @category navigation`);
|
|
233
|
+
lines.push(` */`);
|
|
234
|
+
lines.push(`export const ${fnName} = (base: Path<${sourceEntity}Model, false>): Path<${targetType}Model, ${prop.isCollection}> =>`);
|
|
235
|
+
lines.push(` \`\${base}/${prop.odataName}\` as Path<${targetType}Model, ${prop.isCollection}>`);
|
|
236
|
+
lines.push(``);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
// Type casting functions for derived types
|
|
240
|
+
const castFunctions = generateTypeCastFunctions(dataModel);
|
|
241
|
+
if (castFunctions.length > 0) {
|
|
242
|
+
lines.push(`// ============================================================================`);
|
|
243
|
+
lines.push(`// Type Casting (for entity inheritance)`);
|
|
244
|
+
lines.push(`// ============================================================================`);
|
|
245
|
+
lines.push(``);
|
|
246
|
+
lines.push(...castFunctions);
|
|
247
|
+
}
|
|
248
|
+
// Terminal operations
|
|
249
|
+
lines.push(`// ============================================================================`);
|
|
250
|
+
lines.push(`// Terminal Operations`);
|
|
251
|
+
lines.push(`// ============================================================================`);
|
|
252
|
+
lines.push(``);
|
|
253
|
+
lines.push(`/**`);
|
|
254
|
+
lines.push(` * Fetch a collection of entities at the given path.`);
|
|
255
|
+
lines.push(` *`);
|
|
256
|
+
lines.push(` * @example`);
|
|
257
|
+
lines.push(` * \`\`\`typescript`);
|
|
258
|
+
lines.push(` * const allPeople = yield* pipe(People, fetchCollection(Person))`);
|
|
259
|
+
lines.push(` * \`\`\``);
|
|
260
|
+
lines.push(` *`);
|
|
261
|
+
lines.push(` * @since 1.0.0`);
|
|
262
|
+
lines.push(` * @category operations`);
|
|
263
|
+
lines.push(` */`);
|
|
264
|
+
lines.push(`export const fetchCollection = <T, I>(schema: Schema.Schema<T, I>) =>`);
|
|
265
|
+
lines.push(` (path: Path<T, true>, options?: ${versionConfig.queryOptionsType}) =>`);
|
|
266
|
+
lines.push(` ${versionConfig.odataNamespace}.getCollection(path, schema, options)`);
|
|
267
|
+
lines.push(``);
|
|
268
|
+
lines.push(`/**`);
|
|
269
|
+
lines.push(` * Fetch a single entity at the given path.`);
|
|
270
|
+
lines.push(` *`);
|
|
271
|
+
lines.push(` * @example`);
|
|
272
|
+
lines.push(` * \`\`\`typescript`);
|
|
273
|
+
lines.push(` * const person = yield* pipe(People, byKey("russell"), fetchOne(Person))`);
|
|
274
|
+
lines.push(` * \`\`\``);
|
|
275
|
+
lines.push(` *`);
|
|
276
|
+
lines.push(` * @since 1.0.0`);
|
|
277
|
+
lines.push(` * @category operations`);
|
|
278
|
+
lines.push(` */`);
|
|
279
|
+
lines.push(`export const fetchOne = <T, I>(schema: Schema.Schema<T, I>) =>`);
|
|
280
|
+
lines.push(` (path: Path<T, false>, options?: ${versionConfig.queryOptionsType}) =>`);
|
|
281
|
+
lines.push(` ${versionConfig.odataNamespace}.get(path, schema, options)`);
|
|
282
|
+
lines.push(``);
|
|
283
|
+
return lines.join("\n");
|
|
284
|
+
};
|
|
285
|
+
/**
|
|
286
|
+
* Generate type casting functions for derived types.
|
|
287
|
+
*/
|
|
288
|
+
const generateTypeCastFunctions = dataModel => {
|
|
289
|
+
const lines = [];
|
|
290
|
+
const processed = new Set();
|
|
291
|
+
for (const entityType of dataModel.entityTypes.values()) {
|
|
292
|
+
const derivedTypes = getDerivedTypes(entityType.fqName, dataModel);
|
|
293
|
+
for (const derived of derivedTypes) {
|
|
294
|
+
const fnName = `as${derived.name}`;
|
|
295
|
+
if (processed.has(fnName)) continue;
|
|
296
|
+
processed.add(fnName);
|
|
297
|
+
const castPath = `${dataModel.namespace}.${derived.odataName}`;
|
|
298
|
+
lines.push(`/**`);
|
|
299
|
+
lines.push(` * Cast collection to ${derived.name} (filters to derived type).`);
|
|
300
|
+
lines.push(` *`);
|
|
301
|
+
lines.push(` * @since 1.0.0`);
|
|
302
|
+
lines.push(` * @category casting`);
|
|
303
|
+
lines.push(` */`);
|
|
304
|
+
lines.push(`export const ${fnName} = (base: Path<${entityType.name}Model, true>): Path<${derived.name}Model, true> =>`);
|
|
305
|
+
lines.push(` \`\${base}/${castPath}\` as Path<${derived.name}Model, true>`);
|
|
306
|
+
lines.push(``);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
return lines;
|
|
310
|
+
};
|
|
311
|
+
/**
|
|
312
|
+
* Collect all entity type names referenced in paths.
|
|
313
|
+
*/
|
|
314
|
+
const collectReferencedTypes = dataModel => {
|
|
315
|
+
const types = new Set();
|
|
316
|
+
// Entity set entity types
|
|
317
|
+
for (const entitySet of dataModel.entitySets.values()) {
|
|
318
|
+
const entityType = dataModel.entityTypes.get(entitySet.entityTypeFqName);
|
|
319
|
+
if (entityType) {
|
|
320
|
+
types.add(entityType.name);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
// Navigation target types
|
|
324
|
+
for (const entityType of dataModel.entityTypes.values()) {
|
|
325
|
+
for (const navProp of entityType.navigationProperties) {
|
|
326
|
+
types.add((0, _NamingHelper.getClassName)(navProp.targetType));
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
// Derived types
|
|
330
|
+
for (const entityType of dataModel.entityTypes.values()) {
|
|
331
|
+
const derivedTypes = getDerivedTypes(entityType.fqName, dataModel);
|
|
332
|
+
for (const derived of derivedTypes) {
|
|
333
|
+
types.add(derived.name);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
return types;
|
|
337
|
+
};
|
|
338
|
+
//# sourceMappingURL=NavigationGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavigationGenerator.js","names":["_NamingHelper","require","V2_CONFIG","odataNamespace","clientModule","queryOptionsType","V4_CONFIG","getVersionConfig","version","getPathBuildersModuleName","exports","collectAllNavigationProperties","dataModel","navProps","entityType","entityTypes","values","navProp","navigationProperties","targetTypeName","getClassName","targetType","push","propertyName","name","odataName","sourceEntityName","targetEntityName","isCollection","findCollisions","collisions","Set","seen","Map","prop","existing","get","add","set","getNavFunctionName","hasCollision","toCamelCase","getDerivedTypes","baseTypeFqName","derived","baseType","fqName","generateNavigations","moduleName","content","generatePathBuildersFile","navigationFiles","fileName","lines","versionConfig","allNavProps","referencedTypes","collectReferencedTypes","size","typesList","Array","from","sort","i","length","isLast","entitySet","entitySets","entityTypeFqName","navPropsBySource","sourceEntity","props","has","fnName","castFunctions","generateTypeCastFunctions","join","processed","derivedTypes","castPath","namespace","types"],"sources":["../../../src/generator/NavigationGenerator.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|