@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.
- package/Cli/package.json +6 -0
- package/LICENSE +21 -0
- package/README.md +37 -0
- package/bin/package.json +6 -0
- package/digester/Digester/package.json +6 -0
- package/digester/TypeMapper/package.json +6 -0
- package/dist/cjs/Cli.js +95 -0
- package/dist/cjs/Cli.js.map +1 -0
- package/dist/cjs/bin.js +14 -0
- package/dist/cjs/bin.js.map +1 -0
- package/dist/cjs/digester/Digester.js +488 -0
- package/dist/cjs/digester/Digester.js.map +1 -0
- package/dist/cjs/digester/TypeMapper.js +262 -0
- package/dist/cjs/digester/TypeMapper.js.map +1 -0
- package/dist/cjs/generator/Generator.js +126 -0
- package/dist/cjs/generator/Generator.js.map +1 -0
- package/dist/cjs/generator/IndexGenerator.js +164 -0
- package/dist/cjs/generator/IndexGenerator.js.map +1 -0
- package/dist/cjs/generator/ModelsGenerator.js +255 -0
- package/dist/cjs/generator/ModelsGenerator.js.map +1 -0
- package/dist/cjs/generator/NamingHelper.js +164 -0
- package/dist/cjs/generator/NamingHelper.js.map +1 -0
- package/dist/cjs/generator/PackageGenerator.js +168 -0
- package/dist/cjs/generator/PackageGenerator.js.map +1 -0
- package/dist/cjs/generator/QueryModelsGenerator.js +182 -0
- package/dist/cjs/generator/QueryModelsGenerator.js.map +1 -0
- package/dist/cjs/generator/ServiceFnGenerator.js +258 -0
- package/dist/cjs/generator/ServiceFnGenerator.js.map +1 -0
- package/dist/cjs/generator/ServiceFnPromiseGenerator.js +182 -0
- package/dist/cjs/generator/ServiceFnPromiseGenerator.js.map +1 -0
- package/dist/cjs/index.js +38 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/model/DataModel.js +28 -0
- package/dist/cjs/model/DataModel.js.map +1 -0
- package/dist/cjs/parser/EdmxSchema.js +20 -0
- package/dist/cjs/parser/EdmxSchema.js.map +1 -0
- package/dist/cjs/parser/XmlParser.js +47 -0
- package/dist/cjs/parser/XmlParser.js.map +1 -0
- package/dist/dts/Cli.d.ts +9 -0
- package/dist/dts/Cli.d.ts.map +1 -0
- package/dist/dts/bin.d.ts +3 -0
- package/dist/dts/bin.d.ts.map +1 -0
- package/dist/dts/digester/Digester.d.ts +33 -0
- package/dist/dts/digester/Digester.d.ts.map +1 -0
- package/dist/dts/digester/TypeMapper.d.ts +79 -0
- package/dist/dts/digester/TypeMapper.d.ts.map +1 -0
- package/dist/dts/generator/Generator.d.ts +45 -0
- package/dist/dts/generator/Generator.d.ts.map +1 -0
- package/dist/dts/generator/IndexGenerator.d.ts +14 -0
- package/dist/dts/generator/IndexGenerator.d.ts.map +1 -0
- package/dist/dts/generator/ModelsGenerator.d.ts +14 -0
- package/dist/dts/generator/ModelsGenerator.d.ts.map +1 -0
- package/dist/dts/generator/NamingHelper.d.ts +110 -0
- package/dist/dts/generator/NamingHelper.d.ts.map +1 -0
- package/dist/dts/generator/PackageGenerator.d.ts +53 -0
- package/dist/dts/generator/PackageGenerator.d.ts.map +1 -0
- package/dist/dts/generator/QueryModelsGenerator.d.ts +14 -0
- package/dist/dts/generator/QueryModelsGenerator.d.ts.map +1 -0
- package/dist/dts/generator/ServiceFnGenerator.d.ts +37 -0
- package/dist/dts/generator/ServiceFnGenerator.d.ts.map +1 -0
- package/dist/dts/generator/ServiceFnPromiseGenerator.d.ts +40 -0
- package/dist/dts/generator/ServiceFnPromiseGenerator.d.ts.map +1 -0
- package/dist/dts/index.d.ts +101 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/dts/model/DataModel.d.ts +188 -0
- package/dist/dts/model/DataModel.d.ts.map +1 -0
- package/dist/dts/parser/EdmxSchema.d.ts +228 -0
- package/dist/dts/parser/EdmxSchema.d.ts.map +1 -0
- package/dist/dts/parser/XmlParser.d.ts +31 -0
- package/dist/dts/parser/XmlParser.d.ts.map +1 -0
- package/dist/esm/Cli.js +87 -0
- package/dist/esm/Cli.js.map +1 -0
- package/dist/esm/bin.js +12 -0
- package/dist/esm/bin.js.map +1 -0
- package/dist/esm/digester/Digester.js +478 -0
- package/dist/esm/digester/Digester.js.map +1 -0
- package/dist/esm/digester/TypeMapper.js +248 -0
- package/dist/esm/digester/TypeMapper.js.map +1 -0
- package/dist/esm/generator/Generator.js +116 -0
- package/dist/esm/generator/Generator.js.map +1 -0
- package/dist/esm/generator/IndexGenerator.js +157 -0
- package/dist/esm/generator/IndexGenerator.js.map +1 -0
- package/dist/esm/generator/ModelsGenerator.js +248 -0
- package/dist/esm/generator/ModelsGenerator.js.map +1 -0
- package/dist/esm/generator/NamingHelper.js +147 -0
- package/dist/esm/generator/NamingHelper.js.map +1 -0
- package/dist/esm/generator/PackageGenerator.js +156 -0
- package/dist/esm/generator/PackageGenerator.js.map +1 -0
- package/dist/esm/generator/QueryModelsGenerator.js +175 -0
- package/dist/esm/generator/QueryModelsGenerator.js.map +1 -0
- package/dist/esm/generator/ServiceFnGenerator.js +251 -0
- package/dist/esm/generator/ServiceFnGenerator.js.map +1 -0
- package/dist/esm/generator/ServiceFnPromiseGenerator.js +174 -0
- package/dist/esm/generator/ServiceFnPromiseGenerator.js.map +1 -0
- package/dist/esm/index.js +101 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/model/DataModel.js +21 -0
- package/dist/esm/model/DataModel.js.map +1 -0
- package/dist/esm/package.json +4 -0
- package/dist/esm/parser/EdmxSchema.js +13 -0
- package/dist/esm/parser/EdmxSchema.js.map +1 -0
- package/dist/esm/parser/XmlParser.js +37 -0
- package/dist/esm/parser/XmlParser.js.map +1 -0
- package/generator/Generator/package.json +6 -0
- package/generator/IndexGenerator/package.json +6 -0
- package/generator/ModelsGenerator/package.json +6 -0
- package/generator/NamingHelper/package.json +6 -0
- package/generator/PackageGenerator/package.json +6 -0
- package/generator/QueryModelsGenerator/package.json +6 -0
- package/generator/ServiceFnGenerator/package.json +6 -0
- package/generator/ServiceFnPromiseGenerator/package.json +6 -0
- package/model/DataModel/package.json +6 -0
- package/package.json +157 -0
- package/parser/EdmxSchema/package.json +6 -0
- package/parser/XmlParser/package.json +6 -0
- package/src/Cli.ts +115 -0
- package/src/bin.ts +17 -0
- package/src/digester/Digester.ts +600 -0
- package/src/digester/TypeMapper.ts +181 -0
- package/src/generator/Generator.ts +183 -0
- package/src/generator/IndexGenerator.ts +189 -0
- package/src/generator/ModelsGenerator.ts +344 -0
- package/src/generator/NamingHelper.ts +159 -0
- package/src/generator/PackageGenerator.ts +176 -0
- package/src/generator/QueryModelsGenerator.ts +228 -0
- package/src/generator/ServiceFnGenerator.ts +324 -0
- package/src/generator/ServiceFnPromiseGenerator.ts +242 -0
- package/src/index.ts +114 -0
- package/src/model/DataModel.ts +254 -0
- package/src/parser/EdmxSchema.ts +308 -0
- package/src/parser/XmlParser.ts +47 -0
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common EDMX schema interfaces for OData metadata parsing.
|
|
3
|
+
* These interfaces represent the parsed XML structure from xml2js.
|
|
4
|
+
*
|
|
5
|
+
* @since 1.0.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Common Types
|
|
10
|
+
// ============================================================================
|
|
11
|
+
|
|
12
|
+
export interface ODataEdmxModel {
|
|
13
|
+
readonly "edmx:Edmx": {
|
|
14
|
+
readonly $: { readonly Version: string }
|
|
15
|
+
readonly "edmx:DataServices": ReadonlyArray<DataServices>
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface DataServices {
|
|
20
|
+
readonly Schema: ReadonlyArray<Schema>
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface Schema {
|
|
24
|
+
readonly $: {
|
|
25
|
+
readonly Namespace: string
|
|
26
|
+
readonly Alias?: string
|
|
27
|
+
}
|
|
28
|
+
readonly EntityType?: ReadonlyArray<EntityType>
|
|
29
|
+
readonly ComplexType?: ReadonlyArray<ComplexType>
|
|
30
|
+
readonly EnumType?: ReadonlyArray<EnumType>
|
|
31
|
+
readonly EntityContainer?: ReadonlyArray<EntityContainer>
|
|
32
|
+
readonly TypeDefinition?: ReadonlyArray<TypeDefinition>
|
|
33
|
+
readonly Association?: ReadonlyArray<Association>
|
|
34
|
+
readonly Function?: ReadonlyArray<Operation>
|
|
35
|
+
readonly Action?: ReadonlyArray<Operation>
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// ============================================================================
|
|
39
|
+
// Entity Type
|
|
40
|
+
// ============================================================================
|
|
41
|
+
|
|
42
|
+
export interface EntityType {
|
|
43
|
+
readonly $: {
|
|
44
|
+
readonly Name: string
|
|
45
|
+
readonly BaseType?: string
|
|
46
|
+
readonly Abstract?: string
|
|
47
|
+
readonly OpenType?: string
|
|
48
|
+
}
|
|
49
|
+
readonly Key?: ReadonlyArray<Key>
|
|
50
|
+
readonly Property?: ReadonlyArray<Property>
|
|
51
|
+
readonly NavigationProperty?: ReadonlyArray<NavigationProperty>
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface Key {
|
|
55
|
+
readonly PropertyRef: ReadonlyArray<PropertyRef>
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export interface PropertyRef {
|
|
59
|
+
readonly $: {
|
|
60
|
+
readonly Name: string
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface Property {
|
|
65
|
+
readonly $: {
|
|
66
|
+
readonly Name: string
|
|
67
|
+
readonly Type: string
|
|
68
|
+
readonly Nullable?: string
|
|
69
|
+
readonly MaxLength?: string
|
|
70
|
+
readonly Precision?: string
|
|
71
|
+
readonly Scale?: string
|
|
72
|
+
readonly DefaultValue?: string
|
|
73
|
+
readonly ConcurrencyMode?: string
|
|
74
|
+
// SAP-specific attributes
|
|
75
|
+
readonly "sap:label"?: string
|
|
76
|
+
readonly "sap:creatable"?: string
|
|
77
|
+
readonly "sap:updatable"?: string
|
|
78
|
+
readonly "sap:filterable"?: string
|
|
79
|
+
readonly "sap:sortable"?: string
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// ============================================================================
|
|
84
|
+
// Navigation Property
|
|
85
|
+
// ============================================================================
|
|
86
|
+
|
|
87
|
+
// V2 NavigationProperty (uses Relationship/FromRole/ToRole)
|
|
88
|
+
export interface NavigationPropertyV2 {
|
|
89
|
+
readonly $: {
|
|
90
|
+
readonly Name: string
|
|
91
|
+
readonly Relationship: string
|
|
92
|
+
readonly FromRole: string
|
|
93
|
+
readonly ToRole: string
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// V4 NavigationProperty (uses Type directly)
|
|
98
|
+
export interface NavigationPropertyV4 {
|
|
99
|
+
readonly $: {
|
|
100
|
+
readonly Name: string
|
|
101
|
+
readonly Type: string
|
|
102
|
+
readonly Nullable?: string
|
|
103
|
+
readonly Partner?: string
|
|
104
|
+
readonly ContainsTarget?: string
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export type NavigationProperty = NavigationPropertyV2 | NavigationPropertyV4
|
|
109
|
+
|
|
110
|
+
// ============================================================================
|
|
111
|
+
// Complex Type
|
|
112
|
+
// ============================================================================
|
|
113
|
+
|
|
114
|
+
export interface ComplexType {
|
|
115
|
+
readonly $: {
|
|
116
|
+
readonly Name: string
|
|
117
|
+
readonly BaseType?: string
|
|
118
|
+
readonly Abstract?: string
|
|
119
|
+
readonly OpenType?: string
|
|
120
|
+
}
|
|
121
|
+
readonly Property?: ReadonlyArray<Property>
|
|
122
|
+
readonly NavigationProperty?: ReadonlyArray<NavigationProperty>
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// ============================================================================
|
|
126
|
+
// Enum Type
|
|
127
|
+
// ============================================================================
|
|
128
|
+
|
|
129
|
+
export interface EnumType {
|
|
130
|
+
readonly $: {
|
|
131
|
+
readonly Name: string
|
|
132
|
+
readonly UnderlyingType?: string
|
|
133
|
+
readonly IsFlags?: string
|
|
134
|
+
}
|
|
135
|
+
readonly Member: ReadonlyArray<EnumMember>
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export interface EnumMember {
|
|
139
|
+
readonly $: {
|
|
140
|
+
readonly Name: string
|
|
141
|
+
readonly Value?: string
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// ============================================================================
|
|
146
|
+
// Type Definition
|
|
147
|
+
// ============================================================================
|
|
148
|
+
|
|
149
|
+
export interface TypeDefinition {
|
|
150
|
+
readonly $: {
|
|
151
|
+
readonly Name: string
|
|
152
|
+
readonly UnderlyingType: string
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// ============================================================================
|
|
157
|
+
// Association (V2 only)
|
|
158
|
+
// ============================================================================
|
|
159
|
+
|
|
160
|
+
export interface Association {
|
|
161
|
+
readonly $: {
|
|
162
|
+
readonly Name: string
|
|
163
|
+
}
|
|
164
|
+
readonly End: ReadonlyArray<AssociationEnd>
|
|
165
|
+
readonly ReferentialConstraint?: ReadonlyArray<ReferentialConstraint>
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export interface AssociationEnd {
|
|
169
|
+
readonly $: {
|
|
170
|
+
readonly Role: string
|
|
171
|
+
readonly Type: string
|
|
172
|
+
readonly Multiplicity: string
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export interface ReferentialConstraint {
|
|
177
|
+
readonly Principal: ReadonlyArray<ConstraintRole>
|
|
178
|
+
readonly Dependent: ReadonlyArray<ConstraintRole>
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
export interface ConstraintRole {
|
|
182
|
+
readonly $: {
|
|
183
|
+
readonly Role: string
|
|
184
|
+
}
|
|
185
|
+
readonly PropertyRef: ReadonlyArray<PropertyRef>
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// ============================================================================
|
|
189
|
+
// Entity Container
|
|
190
|
+
// ============================================================================
|
|
191
|
+
|
|
192
|
+
export interface EntityContainer {
|
|
193
|
+
readonly $: {
|
|
194
|
+
readonly Name: string
|
|
195
|
+
readonly "m:IsDefaultEntityContainer"?: string
|
|
196
|
+
}
|
|
197
|
+
readonly EntitySet?: ReadonlyArray<EntitySet>
|
|
198
|
+
readonly Singleton?: ReadonlyArray<Singleton>
|
|
199
|
+
readonly AssociationSet?: ReadonlyArray<AssociationSet>
|
|
200
|
+
readonly FunctionImport?: ReadonlyArray<FunctionImport>
|
|
201
|
+
readonly ActionImport?: ReadonlyArray<ActionImport>
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
export interface EntitySet {
|
|
205
|
+
readonly $: {
|
|
206
|
+
readonly Name: string
|
|
207
|
+
readonly EntityType: string
|
|
208
|
+
}
|
|
209
|
+
readonly NavigationPropertyBinding?: ReadonlyArray<NavigationPropertyBinding>
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
export interface Singleton {
|
|
213
|
+
readonly $: {
|
|
214
|
+
readonly Name: string
|
|
215
|
+
readonly Type: string
|
|
216
|
+
}
|
|
217
|
+
readonly NavigationPropertyBinding?: ReadonlyArray<NavigationPropertyBinding>
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
export interface NavigationPropertyBinding {
|
|
221
|
+
readonly $: {
|
|
222
|
+
readonly Path: string
|
|
223
|
+
readonly Target: string
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
export interface AssociationSet {
|
|
228
|
+
readonly $: {
|
|
229
|
+
readonly Name: string
|
|
230
|
+
readonly Association: string
|
|
231
|
+
}
|
|
232
|
+
readonly End: ReadonlyArray<AssociationSetEnd>
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
export interface AssociationSetEnd {
|
|
236
|
+
readonly $: {
|
|
237
|
+
readonly Role: string
|
|
238
|
+
readonly EntitySet: string
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// ============================================================================
|
|
243
|
+
// Function / Action
|
|
244
|
+
// ============================================================================
|
|
245
|
+
|
|
246
|
+
export interface Operation {
|
|
247
|
+
readonly $: {
|
|
248
|
+
readonly Name: string
|
|
249
|
+
readonly IsBound?: string
|
|
250
|
+
readonly EntitySetPath?: string
|
|
251
|
+
}
|
|
252
|
+
readonly Parameter?: ReadonlyArray<OperationParameter>
|
|
253
|
+
readonly ReturnType?: ReadonlyArray<OperationReturnType>
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
export interface OperationParameter {
|
|
257
|
+
readonly $: {
|
|
258
|
+
readonly Name: string
|
|
259
|
+
readonly Type: string
|
|
260
|
+
readonly Nullable?: string
|
|
261
|
+
readonly Unicode?: string
|
|
262
|
+
readonly Mode?: string
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
export interface OperationReturnType {
|
|
267
|
+
readonly $?: {
|
|
268
|
+
readonly Type: string
|
|
269
|
+
readonly Nullable?: string
|
|
270
|
+
}
|
|
271
|
+
readonly Type?: string
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// ============================================================================
|
|
275
|
+
// Function Import / Action Import
|
|
276
|
+
// ============================================================================
|
|
277
|
+
|
|
278
|
+
export interface FunctionImport {
|
|
279
|
+
readonly $: {
|
|
280
|
+
readonly Name: string
|
|
281
|
+
readonly Function?: string
|
|
282
|
+
readonly EntitySet?: string
|
|
283
|
+
readonly ReturnType?: string
|
|
284
|
+
readonly "m:HttpMethod"?: string
|
|
285
|
+
}
|
|
286
|
+
readonly Parameter?: ReadonlyArray<OperationParameter>
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
export interface ActionImport {
|
|
290
|
+
readonly $: {
|
|
291
|
+
readonly Name: string
|
|
292
|
+
readonly Action: string
|
|
293
|
+
readonly EntitySet?: string
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
// ============================================================================
|
|
298
|
+
// Version Detection
|
|
299
|
+
// ============================================================================
|
|
300
|
+
|
|
301
|
+
export type ODataVersion = "V2" | "V4"
|
|
302
|
+
|
|
303
|
+
export const detectODataVersion = (edmx: ODataEdmxModel): ODataVersion => {
|
|
304
|
+
const version = edmx["edmx:Edmx"].$.Version
|
|
305
|
+
if (version === "1.0") return "V2"
|
|
306
|
+
if (version === "4.0") return "V4"
|
|
307
|
+
throw new Error(`Unsupported EDMX version: ${version}`)
|
|
308
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effect-wrapped XML parser for OData metadata.
|
|
3
|
+
*
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Effect from "effect/Effect"
|
|
7
|
+
import * as Schema from "effect/Schema"
|
|
8
|
+
import { parseStringPromise } from "xml2js"
|
|
9
|
+
import type { ODataEdmxModel } from "./EdmxSchema.js"
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Error thrown when XML parsing fails.
|
|
13
|
+
*
|
|
14
|
+
* @since 1.0.0
|
|
15
|
+
* @category errors
|
|
16
|
+
*/
|
|
17
|
+
export class XmlParseError extends Schema.TaggedError<XmlParseError>()(
|
|
18
|
+
"XmlParseError",
|
|
19
|
+
{
|
|
20
|
+
message: Schema.String,
|
|
21
|
+
cause: Schema.Unknown
|
|
22
|
+
}
|
|
23
|
+
) {}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Parse OData metadata XML content into a structured object.
|
|
27
|
+
*
|
|
28
|
+
* @since 1.0.0
|
|
29
|
+
* @category parsing
|
|
30
|
+
*/
|
|
31
|
+
export const parseODataMetadata = (
|
|
32
|
+
xmlContent: string
|
|
33
|
+
): Effect.Effect<ODataEdmxModel, XmlParseError> =>
|
|
34
|
+
Effect.tryPromise({
|
|
35
|
+
try: () =>
|
|
36
|
+
parseStringPromise(xmlContent, {
|
|
37
|
+
explicitArray: true,
|
|
38
|
+
preserveChildrenOrder: true,
|
|
39
|
+
attrkey: "$",
|
|
40
|
+
charkey: "_"
|
|
41
|
+
}) as Promise<ODataEdmxModel>,
|
|
42
|
+
catch: (error) =>
|
|
43
|
+
new XmlParseError({
|
|
44
|
+
message: "Failed to parse OData metadata XML",
|
|
45
|
+
cause: error
|
|
46
|
+
})
|
|
47
|
+
})
|