@odata-effect/odata-effect-generator 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 (131) hide show
  1. package/Cli/package.json +6 -0
  2. package/LICENSE +21 -0
  3. package/README.md +37 -0
  4. package/bin/package.json +6 -0
  5. package/digester/Digester/package.json +6 -0
  6. package/digester/TypeMapper/package.json +6 -0
  7. package/dist/cjs/Cli.js +95 -0
  8. package/dist/cjs/Cli.js.map +1 -0
  9. package/dist/cjs/bin.js +14 -0
  10. package/dist/cjs/bin.js.map +1 -0
  11. package/dist/cjs/digester/Digester.js +488 -0
  12. package/dist/cjs/digester/Digester.js.map +1 -0
  13. package/dist/cjs/digester/TypeMapper.js +262 -0
  14. package/dist/cjs/digester/TypeMapper.js.map +1 -0
  15. package/dist/cjs/generator/Generator.js +126 -0
  16. package/dist/cjs/generator/Generator.js.map +1 -0
  17. package/dist/cjs/generator/IndexGenerator.js +164 -0
  18. package/dist/cjs/generator/IndexGenerator.js.map +1 -0
  19. package/dist/cjs/generator/ModelsGenerator.js +255 -0
  20. package/dist/cjs/generator/ModelsGenerator.js.map +1 -0
  21. package/dist/cjs/generator/NamingHelper.js +164 -0
  22. package/dist/cjs/generator/NamingHelper.js.map +1 -0
  23. package/dist/cjs/generator/PackageGenerator.js +168 -0
  24. package/dist/cjs/generator/PackageGenerator.js.map +1 -0
  25. package/dist/cjs/generator/QueryModelsGenerator.js +182 -0
  26. package/dist/cjs/generator/QueryModelsGenerator.js.map +1 -0
  27. package/dist/cjs/generator/ServiceFnGenerator.js +258 -0
  28. package/dist/cjs/generator/ServiceFnGenerator.js.map +1 -0
  29. package/dist/cjs/generator/ServiceFnPromiseGenerator.js +182 -0
  30. package/dist/cjs/generator/ServiceFnPromiseGenerator.js.map +1 -0
  31. package/dist/cjs/index.js +38 -0
  32. package/dist/cjs/index.js.map +1 -0
  33. package/dist/cjs/model/DataModel.js +28 -0
  34. package/dist/cjs/model/DataModel.js.map +1 -0
  35. package/dist/cjs/parser/EdmxSchema.js +20 -0
  36. package/dist/cjs/parser/EdmxSchema.js.map +1 -0
  37. package/dist/cjs/parser/XmlParser.js +47 -0
  38. package/dist/cjs/parser/XmlParser.js.map +1 -0
  39. package/dist/dts/Cli.d.ts +9 -0
  40. package/dist/dts/Cli.d.ts.map +1 -0
  41. package/dist/dts/bin.d.ts +3 -0
  42. package/dist/dts/bin.d.ts.map +1 -0
  43. package/dist/dts/digester/Digester.d.ts +33 -0
  44. package/dist/dts/digester/Digester.d.ts.map +1 -0
  45. package/dist/dts/digester/TypeMapper.d.ts +79 -0
  46. package/dist/dts/digester/TypeMapper.d.ts.map +1 -0
  47. package/dist/dts/generator/Generator.d.ts +45 -0
  48. package/dist/dts/generator/Generator.d.ts.map +1 -0
  49. package/dist/dts/generator/IndexGenerator.d.ts +14 -0
  50. package/dist/dts/generator/IndexGenerator.d.ts.map +1 -0
  51. package/dist/dts/generator/ModelsGenerator.d.ts +14 -0
  52. package/dist/dts/generator/ModelsGenerator.d.ts.map +1 -0
  53. package/dist/dts/generator/NamingHelper.d.ts +110 -0
  54. package/dist/dts/generator/NamingHelper.d.ts.map +1 -0
  55. package/dist/dts/generator/PackageGenerator.d.ts +53 -0
  56. package/dist/dts/generator/PackageGenerator.d.ts.map +1 -0
  57. package/dist/dts/generator/QueryModelsGenerator.d.ts +14 -0
  58. package/dist/dts/generator/QueryModelsGenerator.d.ts.map +1 -0
  59. package/dist/dts/generator/ServiceFnGenerator.d.ts +37 -0
  60. package/dist/dts/generator/ServiceFnGenerator.d.ts.map +1 -0
  61. package/dist/dts/generator/ServiceFnPromiseGenerator.d.ts +40 -0
  62. package/dist/dts/generator/ServiceFnPromiseGenerator.d.ts.map +1 -0
  63. package/dist/dts/index.d.ts +101 -0
  64. package/dist/dts/index.d.ts.map +1 -0
  65. package/dist/dts/model/DataModel.d.ts +188 -0
  66. package/dist/dts/model/DataModel.d.ts.map +1 -0
  67. package/dist/dts/parser/EdmxSchema.d.ts +228 -0
  68. package/dist/dts/parser/EdmxSchema.d.ts.map +1 -0
  69. package/dist/dts/parser/XmlParser.d.ts +31 -0
  70. package/dist/dts/parser/XmlParser.d.ts.map +1 -0
  71. package/dist/esm/Cli.js +87 -0
  72. package/dist/esm/Cli.js.map +1 -0
  73. package/dist/esm/bin.js +12 -0
  74. package/dist/esm/bin.js.map +1 -0
  75. package/dist/esm/digester/Digester.js +478 -0
  76. package/dist/esm/digester/Digester.js.map +1 -0
  77. package/dist/esm/digester/TypeMapper.js +248 -0
  78. package/dist/esm/digester/TypeMapper.js.map +1 -0
  79. package/dist/esm/generator/Generator.js +116 -0
  80. package/dist/esm/generator/Generator.js.map +1 -0
  81. package/dist/esm/generator/IndexGenerator.js +157 -0
  82. package/dist/esm/generator/IndexGenerator.js.map +1 -0
  83. package/dist/esm/generator/ModelsGenerator.js +248 -0
  84. package/dist/esm/generator/ModelsGenerator.js.map +1 -0
  85. package/dist/esm/generator/NamingHelper.js +147 -0
  86. package/dist/esm/generator/NamingHelper.js.map +1 -0
  87. package/dist/esm/generator/PackageGenerator.js +156 -0
  88. package/dist/esm/generator/PackageGenerator.js.map +1 -0
  89. package/dist/esm/generator/QueryModelsGenerator.js +175 -0
  90. package/dist/esm/generator/QueryModelsGenerator.js.map +1 -0
  91. package/dist/esm/generator/ServiceFnGenerator.js +251 -0
  92. package/dist/esm/generator/ServiceFnGenerator.js.map +1 -0
  93. package/dist/esm/generator/ServiceFnPromiseGenerator.js +174 -0
  94. package/dist/esm/generator/ServiceFnPromiseGenerator.js.map +1 -0
  95. package/dist/esm/index.js +101 -0
  96. package/dist/esm/index.js.map +1 -0
  97. package/dist/esm/model/DataModel.js +21 -0
  98. package/dist/esm/model/DataModel.js.map +1 -0
  99. package/dist/esm/package.json +4 -0
  100. package/dist/esm/parser/EdmxSchema.js +13 -0
  101. package/dist/esm/parser/EdmxSchema.js.map +1 -0
  102. package/dist/esm/parser/XmlParser.js +37 -0
  103. package/dist/esm/parser/XmlParser.js.map +1 -0
  104. package/generator/Generator/package.json +6 -0
  105. package/generator/IndexGenerator/package.json +6 -0
  106. package/generator/ModelsGenerator/package.json +6 -0
  107. package/generator/NamingHelper/package.json +6 -0
  108. package/generator/PackageGenerator/package.json +6 -0
  109. package/generator/QueryModelsGenerator/package.json +6 -0
  110. package/generator/ServiceFnGenerator/package.json +6 -0
  111. package/generator/ServiceFnPromiseGenerator/package.json +6 -0
  112. package/model/DataModel/package.json +6 -0
  113. package/package.json +157 -0
  114. package/parser/EdmxSchema/package.json +6 -0
  115. package/parser/XmlParser/package.json +6 -0
  116. package/src/Cli.ts +115 -0
  117. package/src/bin.ts +17 -0
  118. package/src/digester/Digester.ts +600 -0
  119. package/src/digester/TypeMapper.ts +181 -0
  120. package/src/generator/Generator.ts +183 -0
  121. package/src/generator/IndexGenerator.ts +189 -0
  122. package/src/generator/ModelsGenerator.ts +344 -0
  123. package/src/generator/NamingHelper.ts +159 -0
  124. package/src/generator/PackageGenerator.ts +176 -0
  125. package/src/generator/QueryModelsGenerator.ts +228 -0
  126. package/src/generator/ServiceFnGenerator.ts +324 -0
  127. package/src/generator/ServiceFnPromiseGenerator.ts +242 -0
  128. package/src/index.ts +114 -0
  129. package/src/model/DataModel.ts +254 -0
  130. package/src/parser/EdmxSchema.ts +308 -0
  131. package/src/parser/XmlParser.ts +47 -0
@@ -0,0 +1,488 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.digestMetadata = exports.DigestError = void 0;
7
+ var Effect = _interopRequireWildcard(require("effect/Effect"));
8
+ var Schema = _interopRequireWildcard(require("effect/Schema"));
9
+ var _NamingHelper = require("../generator/NamingHelper.js");
10
+ var _DataModel = require("../model/DataModel.js");
11
+ var _EdmxSchema = require("../parser/EdmxSchema.js");
12
+ var _TypeMapper = require("./TypeMapper.js");
13
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
+ /**
15
+ * Digester for converting parsed EDMX into a DataModel.
16
+ * Supports both OData V2 and V4.
17
+ *
18
+ * @since 1.0.0
19
+ */
20
+
21
+ /**
22
+ * Error thrown during metadata digestion.
23
+ *
24
+ * @since 1.0.0
25
+ * @category errors
26
+ */
27
+ class DigestError extends /*#__PURE__*/Schema.TaggedError()("DigestError", {
28
+ message: Schema.String,
29
+ cause: /*#__PURE__*/Schema.optional(Schema.Unknown)
30
+ }) {}
31
+ /**
32
+ * Digest OData metadata into a DataModel.
33
+ *
34
+ * @since 1.0.0
35
+ * @category digestion
36
+ */
37
+ exports.DigestError = DigestError;
38
+ const digestMetadata = edmx => Effect.try({
39
+ try: () => {
40
+ const version = (0, _EdmxSchema.detectODataVersion)(edmx);
41
+ const dataServices = edmx["edmx:Edmx"]["edmx:DataServices"][0];
42
+ const schemas = dataServices.Schema;
43
+ if (!schemas || schemas.length === 0) {
44
+ throw new Error("No schemas found in metadata");
45
+ }
46
+ // Use the first schema's namespace as the main namespace
47
+ const mainSchema = schemas[0];
48
+ const namespace = mainSchema.$.Namespace;
49
+ // Find entity container
50
+ let entityContainer;
51
+ for (const schema of schemas) {
52
+ if (schema.EntityContainer && schema.EntityContainer.length > 0) {
53
+ entityContainer = schema.EntityContainer[0];
54
+ break;
55
+ }
56
+ }
57
+ const serviceName = entityContainer?.$.Name ?? "ODataService";
58
+ const dataModel = (0, _DataModel.createDataModel)(version, namespace, serviceName);
59
+ // Build context for type resolution
60
+ const context = buildContext(version, namespace, schemas);
61
+ // First pass: collect all type names
62
+ for (const schema of schemas) {
63
+ collectTypeNames(schema, context);
64
+ }
65
+ // Second pass: digest all types
66
+ for (const schema of schemas) {
67
+ digestSchema(schema, dataModel, context);
68
+ }
69
+ // Digest entity container
70
+ if (entityContainer) {
71
+ digestEntityContainer(entityContainer, dataModel, context);
72
+ }
73
+ return dataModel;
74
+ },
75
+ catch: error => new DigestError({
76
+ message: error instanceof Error ? error.message : "Failed to digest metadata",
77
+ cause: error
78
+ })
79
+ });
80
+ /**
81
+ * Build digestion context from schemas.
82
+ */
83
+ exports.digestMetadata = digestMetadata;
84
+ const buildContext = (version, namespace, schemas) => {
85
+ const associations = new Map();
86
+ // Collect V2 associations
87
+ for (const schema of schemas) {
88
+ if (schema.Association) {
89
+ for (const assoc of schema.Association) {
90
+ const fqName = `${schema.$.Namespace}.${assoc.$.Name}`;
91
+ associations.set(fqName, assoc);
92
+ }
93
+ }
94
+ }
95
+ return {
96
+ version,
97
+ namespace,
98
+ associations,
99
+ enumTypes: new Set(),
100
+ complexTypes: new Set(),
101
+ entityTypes: new Set()
102
+ };
103
+ };
104
+ /**
105
+ * First pass: collect all type names for resolution.
106
+ */
107
+ const collectTypeNames = (schema, context) => {
108
+ const ns = schema.$.Namespace;
109
+ if (schema.EnumType) {
110
+ for (const enumType of schema.EnumType) {
111
+ context.enumTypes.add(`${ns}.${enumType.$.Name}`);
112
+ }
113
+ }
114
+ if (schema.ComplexType) {
115
+ for (const complexType of schema.ComplexType) {
116
+ context.complexTypes.add(`${ns}.${complexType.$.Name}`);
117
+ }
118
+ }
119
+ if (schema.EntityType) {
120
+ for (const entityType of schema.EntityType) {
121
+ context.entityTypes.add(`${ns}.${entityType.$.Name}`);
122
+ }
123
+ }
124
+ };
125
+ /**
126
+ * Digest a single schema.
127
+ */
128
+ const digestSchema = (schema, dataModel, context) => {
129
+ const ns = schema.$.Namespace;
130
+ // Digest enum types
131
+ if (schema.EnumType) {
132
+ for (const enumType of schema.EnumType) {
133
+ const model = digestEnumType(enumType, ns);
134
+ dataModel.enumTypes.set(model.fqName, model);
135
+ }
136
+ }
137
+ // Digest complex types
138
+ if (schema.ComplexType) {
139
+ for (const complexType of schema.ComplexType) {
140
+ const model = digestComplexType(complexType, ns, context);
141
+ dataModel.complexTypes.set(model.fqName, model);
142
+ }
143
+ }
144
+ // Digest entity types
145
+ if (schema.EntityType) {
146
+ for (const entityType of schema.EntityType) {
147
+ const model = digestEntityType(entityType, ns, context);
148
+ dataModel.entityTypes.set(model.fqName, model);
149
+ }
150
+ }
151
+ // Digest operations (V4 functions and actions)
152
+ if (schema.Function) {
153
+ for (const func of schema.Function) {
154
+ const model = digestOperation(func, ns, "Function", context);
155
+ dataModel.operations.set(model.fqName, model);
156
+ }
157
+ }
158
+ if (schema.Action) {
159
+ for (const action of schema.Action) {
160
+ const model = digestOperation(action, ns, "Action", context);
161
+ dataModel.operations.set(model.fqName, model);
162
+ }
163
+ }
164
+ };
165
+ /**
166
+ * Digest an enum type.
167
+ */
168
+ const digestEnumType = (enumType, namespace) => {
169
+ const name = enumType.$.Name;
170
+ const members = enumType.Member.map((member, index) => ({
171
+ name: member.$.Name,
172
+ value: member.$.Value !== undefined ? parseInt(member.$.Value, 10) : index
173
+ }));
174
+ return {
175
+ fqName: `${namespace}.${name}`,
176
+ odataName: name,
177
+ name: (0, _NamingHelper.getClassName)(name),
178
+ members,
179
+ isFlags: enumType.$.IsFlags === "true"
180
+ };
181
+ };
182
+ /**
183
+ * Digest a complex type.
184
+ */
185
+ const digestComplexType = (complexType, namespace, context) => {
186
+ const name = complexType.$.Name;
187
+ const properties = (complexType.Property ?? []).map(p => digestProperty(p, [], context));
188
+ const navigationProperties = (complexType.NavigationProperty ?? []).map(np => digestNavigationProperty(np, context));
189
+ const result = {
190
+ fqName: `${namespace}.${name}`,
191
+ odataName: name,
192
+ name: (0, _NamingHelper.getClassName)(name),
193
+ properties,
194
+ navigationProperties,
195
+ isAbstract: complexType.$.Abstract === "true",
196
+ isOpen: complexType.$.OpenType === "true"
197
+ };
198
+ if (complexType.$.BaseType) {
199
+ return {
200
+ ...result,
201
+ baseType: complexType.$.BaseType
202
+ };
203
+ }
204
+ return result;
205
+ };
206
+ /**
207
+ * Digest an entity type.
208
+ */
209
+ const digestEntityType = (entityType, namespace, context) => {
210
+ const name = entityType.$.Name;
211
+ const keyNames = new Set();
212
+ // Collect key property names
213
+ if (entityType.Key && entityType.Key[0]?.PropertyRef) {
214
+ for (const keyRef of entityType.Key[0].PropertyRef) {
215
+ keyNames.add(keyRef.$.Name);
216
+ }
217
+ }
218
+ const properties = (entityType.Property ?? []).map(p => digestProperty(p, Array.from(keyNames), context));
219
+ const keys = properties.filter(p => p.isKey);
220
+ const navigationProperties = (entityType.NavigationProperty ?? []).map(np => digestNavigationProperty(np, context));
221
+ const result = {
222
+ fqName: `${namespace}.${name}`,
223
+ odataName: name,
224
+ name: (0, _NamingHelper.getClassName)(name),
225
+ keys,
226
+ properties,
227
+ navigationProperties,
228
+ isAbstract: entityType.$.Abstract === "true",
229
+ isOpen: entityType.$.OpenType === "true"
230
+ };
231
+ if (entityType.$.BaseType) {
232
+ return {
233
+ ...result,
234
+ baseType: entityType.$.BaseType
235
+ };
236
+ }
237
+ return result;
238
+ };
239
+ /**
240
+ * Digest a property.
241
+ */
242
+ const digestProperty = (property, keyNames, context) => {
243
+ const odataName = property.$.Name;
244
+ const odataType = property.$.Type;
245
+ const {
246
+ baseType,
247
+ isCollection
248
+ } = (0, _TypeMapper.parseODataType)(odataType);
249
+ const isKey = keyNames.includes(odataName);
250
+ const isNullable = property.$.Nullable !== "false" && !isKey;
251
+ const typeMapping = resolveTypeMapping(baseType, context);
252
+ const result = {
253
+ odataName,
254
+ name: (0, _NamingHelper.getPropertyName)(odataName),
255
+ odataType,
256
+ typeMapping,
257
+ isCollection,
258
+ isNullable,
259
+ isKey
260
+ };
261
+ const withMaxLength = property.$.MaxLength ? {
262
+ ...result,
263
+ maxLength: parseInt(property.$.MaxLength, 10)
264
+ } : result;
265
+ const withPrecision = property.$.Precision ? {
266
+ ...withMaxLength,
267
+ precision: parseInt(property.$.Precision, 10)
268
+ } : withMaxLength;
269
+ const withScale = property.$.Scale ? {
270
+ ...withPrecision,
271
+ scale: parseInt(property.$.Scale, 10)
272
+ } : withPrecision;
273
+ return withScale;
274
+ };
275
+ /**
276
+ * Check if a navigation property is V4 style (has Type attribute).
277
+ */
278
+ const isV4NavigationProperty = navProp => {
279
+ return "Type" in navProp.$;
280
+ };
281
+ /**
282
+ * Digest a navigation property.
283
+ */
284
+ const digestNavigationProperty = (navProp, context) => {
285
+ const odataName = navProp.$.Name;
286
+ // V4 style navigation property (has Type attribute)
287
+ if (isV4NavigationProperty(navProp)) {
288
+ const {
289
+ baseType,
290
+ isCollection
291
+ } = (0, _TypeMapper.parseODataType)(navProp.$.Type);
292
+ const targetTypeName = (0, _TypeMapper.getSimpleTypeName)(baseType);
293
+ const result = {
294
+ odataName,
295
+ name: (0, _NamingHelper.getPropertyName)(odataName),
296
+ targetType: targetTypeName,
297
+ isCollection,
298
+ isNullable: navProp.$.Nullable !== "false"
299
+ };
300
+ if (navProp.$.Partner) {
301
+ return {
302
+ ...result,
303
+ partner: navProp.$.Partner
304
+ };
305
+ }
306
+ return result;
307
+ }
308
+ // V2 style navigation property (uses Relationship)
309
+ const v2NavProp = navProp;
310
+ const relationship = v2NavProp.$.Relationship;
311
+ const toRole = v2NavProp.$.ToRole;
312
+ const association = context.associations.get(relationship);
313
+ let targetType = "unknown";
314
+ let isCollection = false;
315
+ if (association) {
316
+ const targetEnd = association.End.find(end => end.$.Role === toRole);
317
+ if (targetEnd) {
318
+ targetType = (0, _TypeMapper.getSimpleTypeName)(targetEnd.$.Type);
319
+ isCollection = targetEnd.$.Multiplicity === "*";
320
+ }
321
+ }
322
+ return {
323
+ odataName,
324
+ name: (0, _NamingHelper.getPropertyName)(odataName),
325
+ targetType,
326
+ isCollection,
327
+ isNullable: true
328
+ };
329
+ };
330
+ /**
331
+ * Digest entity container.
332
+ */
333
+ const digestEntityContainer = (container, dataModel, context) => {
334
+ // Digest entity sets
335
+ if (container.EntitySet) {
336
+ for (const entitySet of container.EntitySet) {
337
+ const model = {
338
+ name: entitySet.$.Name,
339
+ entityTypeFqName: entitySet.$.EntityType,
340
+ entityTypeName: (0, _TypeMapper.getSimpleTypeName)(entitySet.$.EntityType)
341
+ };
342
+ dataModel.entitySets.set(model.name, model);
343
+ }
344
+ }
345
+ // Digest singletons (V4)
346
+ if (container.Singleton) {
347
+ for (const singleton of container.Singleton) {
348
+ const model = {
349
+ name: singleton.$.Name,
350
+ typeFqName: singleton.$.Type,
351
+ typeName: (0, _TypeMapper.getSimpleTypeName)(singleton.$.Type)
352
+ };
353
+ dataModel.singletons.set(model.name, model);
354
+ }
355
+ }
356
+ // Digest V2 function imports
357
+ if (container.FunctionImport) {
358
+ for (const funcImport of container.FunctionImport) {
359
+ // Only process V2 function imports (no Function reference)
360
+ if (!funcImport.$.Function) {
361
+ const params = (funcImport.Parameter ?? []).map(p => {
362
+ const {
363
+ baseType,
364
+ isCollection
365
+ } = (0, _TypeMapper.parseODataType)(p.$.Type);
366
+ return {
367
+ name: (0, _NamingHelper.getPropertyName)(p.$.Name),
368
+ odataType: p.$.Type,
369
+ typeMapping: resolveTypeMapping(baseType, context),
370
+ isNullable: p.$.Nullable !== "false",
371
+ isCollection
372
+ };
373
+ });
374
+ let model = {
375
+ fqName: `${context.namespace}.${funcImport.$.Name}`,
376
+ odataName: funcImport.$.Name,
377
+ name: (0, _NamingHelper.getPropertyName)(funcImport.$.Name),
378
+ type: "Function",
379
+ isBound: false,
380
+ parameters: params
381
+ };
382
+ if (funcImport.$.ReturnType) {
383
+ const {
384
+ baseType,
385
+ isCollection
386
+ } = (0, _TypeMapper.parseODataType)(funcImport.$.ReturnType);
387
+ model = {
388
+ ...model,
389
+ returnType: {
390
+ odataType: funcImport.$.ReturnType,
391
+ typeMapping: resolveTypeMapping(baseType, context),
392
+ isCollection,
393
+ isNullable: false
394
+ }
395
+ };
396
+ }
397
+ if (funcImport.$.EntitySet) {
398
+ model = {
399
+ ...model,
400
+ entitySetPath: funcImport.$.EntitySet
401
+ };
402
+ }
403
+ dataModel.operations.set(model.fqName, model);
404
+ }
405
+ }
406
+ }
407
+ };
408
+ /**
409
+ * Digest an operation (Function or Action).
410
+ */
411
+ const digestOperation = (operation, namespace, type, context) => {
412
+ const name = operation.$.Name;
413
+ const isBound = operation.$.IsBound === "true";
414
+ const allParams = (operation.Parameter ?? []).map(p => {
415
+ const {
416
+ baseType,
417
+ isCollection
418
+ } = (0, _TypeMapper.parseODataType)(p.$.Type);
419
+ return {
420
+ name: (0, _NamingHelper.getPropertyName)(p.$.Name),
421
+ odataType: p.$.Type,
422
+ typeMapping: resolveTypeMapping(baseType, context),
423
+ isNullable: p.$.Nullable !== "false",
424
+ isCollection
425
+ };
426
+ });
427
+ // First parameter is binding parameter if bound
428
+ const bindingParameter = isBound && allParams.length > 0 ? allParams[0] : undefined;
429
+ const parameters = isBound ? allParams.slice(1) : allParams;
430
+ let model = {
431
+ fqName: `${namespace}.${name}`,
432
+ odataName: name,
433
+ name: (0, _NamingHelper.getPropertyName)(name),
434
+ type,
435
+ isBound,
436
+ parameters
437
+ };
438
+ if (bindingParameter) {
439
+ model = {
440
+ ...model,
441
+ bindingParameter
442
+ };
443
+ }
444
+ if (operation.ReturnType && operation.ReturnType.length > 0) {
445
+ const rt = operation.ReturnType[0];
446
+ const typeStr = rt.$?.Type ?? rt.Type ?? "";
447
+ if (typeStr) {
448
+ const {
449
+ baseType,
450
+ isCollection
451
+ } = (0, _TypeMapper.parseODataType)(typeStr);
452
+ model = {
453
+ ...model,
454
+ returnType: {
455
+ odataType: typeStr,
456
+ typeMapping: resolveTypeMapping(baseType, context),
457
+ isCollection,
458
+ isNullable: rt.$?.Nullable !== "false"
459
+ }
460
+ };
461
+ }
462
+ }
463
+ if (operation.$.EntitySetPath) {
464
+ model = {
465
+ ...model,
466
+ entitySetPath: operation.$.EntitySetPath
467
+ };
468
+ }
469
+ return model;
470
+ };
471
+ /**
472
+ * Resolve type mapping based on context.
473
+ */
474
+ const resolveTypeMapping = (type, context) => {
475
+ if ((0, _TypeMapper.isPrimitiveType)(type)) {
476
+ return (0, _TypeMapper.getPrimitiveTypeMapping)(context.version, type);
477
+ }
478
+ const simpleTypeName = (0, _TypeMapper.getSimpleTypeName)(type);
479
+ if (context.enumTypes.has(type)) {
480
+ return (0, _TypeMapper.getEnumTypeMapping)((0, _NamingHelper.getClassName)(simpleTypeName));
481
+ }
482
+ if (context.complexTypes.has(type) || context.entityTypes.has(type)) {
483
+ return (0, _TypeMapper.getComplexTypeMapping)((0, _NamingHelper.getClassName)(simpleTypeName));
484
+ }
485
+ // Default to complex type mapping for unknown types
486
+ return (0, _TypeMapper.getComplexTypeMapping)((0, _NamingHelper.getClassName)(simpleTypeName));
487
+ };
488
+ //# sourceMappingURL=Digester.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Digester.js","names":["Effect","_interopRequireWildcard","require","Schema","_NamingHelper","_DataModel","_EdmxSchema","_TypeMapper","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DigestError","TaggedError","message","String","cause","optional","Unknown","exports","digestMetadata","edmx","try","version","detectODataVersion","dataServices","schemas","length","Error","mainSchema","namespace","$","Namespace","entityContainer","schema","EntityContainer","serviceName","Name","dataModel","createDataModel","context","buildContext","collectTypeNames","digestSchema","digestEntityContainer","catch","error","associations","Map","Association","assoc","fqName","enumTypes","Set","complexTypes","entityTypes","ns","EnumType","enumType","add","ComplexType","complexType","EntityType","entityType","model","digestEnumType","digestComplexType","digestEntityType","Function","func","digestOperation","operations","Action","action","name","members","Member","map","member","index","value","Value","undefined","parseInt","odataName","getClassName","isFlags","IsFlags","properties","Property","p","digestProperty","navigationProperties","NavigationProperty","np","digestNavigationProperty","result","isAbstract","Abstract","isOpen","OpenType","BaseType","baseType","keyNames","Key","PropertyRef","keyRef","Array","from","keys","filter","isKey","property","odataType","Type","isCollection","parseODataType","includes","isNullable","Nullable","typeMapping","resolveTypeMapping","getPropertyName","withMaxLength","MaxLength","maxLength","withPrecision","Precision","precision","withScale","Scale","scale","isV4NavigationProperty","navProp","targetTypeName","getSimpleTypeName","targetType","Partner","partner","v2NavProp","relationship","Relationship","toRole","ToRole","association","targetEnd","End","find","end","Role","Multiplicity","container","EntitySet","entitySet","entityTypeFqName","entityTypeName","entitySets","Singleton","singleton","typeFqName","typeName","singletons","FunctionImport","funcImport","params","Parameter","type","isBound","parameters","ReturnType","returnType","entitySetPath","operation","IsBound","allParams","bindingParameter","slice","rt","typeStr","EntitySetPath","isPrimitiveType","getPrimitiveTypeMapping","simpleTypeName","getEnumTypeMapping","getComplexTypeMapping"],"sources":["../../../src/digester/Digester.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}