@odata2ts/odata2ts 0.18.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 (97) hide show
  1. package/CHANGELOG.md +601 -0
  2. package/LICENSE +21 -0
  3. package/README.md +129 -0
  4. package/lib/FactoryFunctionModel.d.ts +13 -0
  5. package/lib/FactoryFunctionModel.js +3 -0
  6. package/lib/FactoryFunctionModel.js.map +1 -0
  7. package/lib/NamingModel.d.ts +191 -0
  8. package/lib/NamingModel.js +12 -0
  9. package/lib/NamingModel.js.map +1 -0
  10. package/lib/OptionModel.d.ts +208 -0
  11. package/lib/OptionModel.js +24 -0
  12. package/lib/OptionModel.js.map +1 -0
  13. package/lib/app.d.ts +8 -0
  14. package/lib/app.js +61 -0
  15. package/lib/app.js.map +1 -0
  16. package/lib/cli.d.ts +3 -0
  17. package/lib/cli.js +154 -0
  18. package/lib/cli.js.map +1 -0
  19. package/lib/data-model/DataModel.d.ts +68 -0
  20. package/lib/data-model/DataModel.js +114 -0
  21. package/lib/data-model/DataModel.js.map +1 -0
  22. package/lib/data-model/DataModelDigestion.d.ts +43 -0
  23. package/lib/data-model/DataModelDigestion.js +224 -0
  24. package/lib/data-model/DataModelDigestion.js.map +1 -0
  25. package/lib/data-model/DataModelDigestionV2.d.ts +10 -0
  26. package/lib/data-model/DataModelDigestionV2.js +201 -0
  27. package/lib/data-model/DataModelDigestionV2.js.map +1 -0
  28. package/lib/data-model/DataModelDigestionV4.d.ts +3 -0
  29. package/lib/data-model/DataModelDigestionV4.js +196 -0
  30. package/lib/data-model/DataModelDigestionV4.js.map +1 -0
  31. package/lib/data-model/DataTypeModel.d.ts +102 -0
  32. package/lib/data-model/DataTypeModel.js +9 -0
  33. package/lib/data-model/DataTypeModel.js.map +1 -0
  34. package/lib/data-model/NamingHelper.d.ts +57 -0
  35. package/lib/data-model/NamingHelper.js +225 -0
  36. package/lib/data-model/NamingHelper.js.map +1 -0
  37. package/lib/data-model/ServiceConfigHelper.d.ts +13 -0
  38. package/lib/data-model/ServiceConfigHelper.js +63 -0
  39. package/lib/data-model/ServiceConfigHelper.js.map +1 -0
  40. package/lib/data-model/edmx/ODataEdmxModelBase.d.ts +79 -0
  41. package/lib/data-model/edmx/ODataEdmxModelBase.js +3 -0
  42. package/lib/data-model/edmx/ODataEdmxModelBase.js.map +1 -0
  43. package/lib/data-model/edmx/ODataEdmxModelV3.d.ts +63 -0
  44. package/lib/data-model/edmx/ODataEdmxModelV3.js +3 -0
  45. package/lib/data-model/edmx/ODataEdmxModelV3.js.map +1 -0
  46. package/lib/data-model/edmx/ODataEdmxModelV4.d.ts +67 -0
  47. package/lib/data-model/edmx/ODataEdmxModelV4.js +3 -0
  48. package/lib/data-model/edmx/ODataEdmxModelV4.js.map +1 -0
  49. package/lib/defaultConfig.d.ts +9 -0
  50. package/lib/defaultConfig.js +176 -0
  51. package/lib/defaultConfig.js.map +1 -0
  52. package/lib/evaluateConfig.d.ts +25 -0
  53. package/lib/evaluateConfig.js +78 -0
  54. package/lib/evaluateConfig.js.map +1 -0
  55. package/lib/generator/ImportContainer.d.ts +16 -0
  56. package/lib/generator/ImportContainer.js +92 -0
  57. package/lib/generator/ImportContainer.js.map +1 -0
  58. package/lib/generator/ModelGenerator.d.ts +2 -0
  59. package/lib/generator/ModelGenerator.js +178 -0
  60. package/lib/generator/ModelGenerator.js.map +1 -0
  61. package/lib/generator/QueryObjectGenerator.d.ts +2 -0
  62. package/lib/generator/QueryObjectGenerator.js +234 -0
  63. package/lib/generator/QueryObjectGenerator.js.map +1 -0
  64. package/lib/generator/ServiceGenerator.d.ts +5 -0
  65. package/lib/generator/ServiceGenerator.js +412 -0
  66. package/lib/generator/ServiceGenerator.js.map +1 -0
  67. package/lib/generator/index.d.ts +3 -0
  68. package/lib/generator/index.js +10 -0
  69. package/lib/generator/index.js.map +1 -0
  70. package/lib/index.d.ts +3 -0
  71. package/lib/index.js +7 -0
  72. package/lib/index.js.map +1 -0
  73. package/lib/project/ProjectManager.d.ts +30 -0
  74. package/lib/project/ProjectManager.js +177 -0
  75. package/lib/project/ProjectManager.js.map +1 -0
  76. package/lib/project/formatter/BaseFormatter.d.ts +49 -0
  77. package/lib/project/formatter/BaseFormatter.js +31 -0
  78. package/lib/project/formatter/BaseFormatter.js.map +1 -0
  79. package/lib/project/formatter/FileFormatter.d.ts +16 -0
  80. package/lib/project/formatter/FileFormatter.js +3 -0
  81. package/lib/project/formatter/FileFormatter.js.map +1 -0
  82. package/lib/project/formatter/NoopFormatter.d.ts +29 -0
  83. package/lib/project/formatter/NoopFormatter.js +43 -0
  84. package/lib/project/formatter/NoopFormatter.js.map +1 -0
  85. package/lib/project/formatter/PrettierFormatter.d.ts +46 -0
  86. package/lib/project/formatter/PrettierFormatter.js +93 -0
  87. package/lib/project/formatter/PrettierFormatter.js.map +1 -0
  88. package/lib/project/formatter/index.d.ts +2 -0
  89. package/lib/project/formatter/index.js +15 -0
  90. package/lib/project/formatter/index.js.map +1 -0
  91. package/lib/project/logger/logFilePath.d.ts +1 -0
  92. package/lib/project/logger/logFilePath.js +13 -0
  93. package/lib/project/logger/logFilePath.js.map +1 -0
  94. package/lib/run-cli.d.ts +2 -0
  95. package/lib/run-cli.js +7 -0
  96. package/lib/run-cli.js.map +1 -0
  97. package/package.json +91 -0
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.digest = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const converter_runtime_1 = require("@odata2ts/converter-runtime");
6
+ const odata_core_1 = require("@odata2ts/odata-core");
7
+ const DataModelDigestion_1 = require("./DataModelDigestion");
8
+ const DataTypeModel_1 = require("./DataTypeModel");
9
+ /**
10
+ * Digests an EDMX schema to produce a DataModel.
11
+ *
12
+ * @param schema
13
+ * @param options
14
+ * @param namingHelper
15
+ */
16
+ const digest = (schema, options, namingHelper) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
17
+ const converters = yield (0, converter_runtime_1.loadConverters)(odata_core_1.ODataVersions.V2, options.converters);
18
+ const digester = new DigesterV3(schema, options, namingHelper, converters);
19
+ return digester.digest();
20
+ });
21
+ exports.digest = digest;
22
+ class DigesterV3 extends DataModelDigestion_1.Digester {
23
+ constructor(schema, options, namingHelper, converters) {
24
+ super(DataTypeModel_1.ODataVersion.V2, schema, options, namingHelper, converters);
25
+ }
26
+ getNavigationProps(entityType) {
27
+ // return (entityType as EntityTypeV3).NavigationProperty || [];
28
+ const et = entityType;
29
+ if (et.NavigationProperty) {
30
+ return et.NavigationProperty.map((np) => {
31
+ var _a;
32
+ const relationship = this.namingHelper.stripServicePrefix(np.$.Relationship);
33
+ const association = (_a = this.schema.Association) === null || _a === void 0 ? void 0 : _a.find((a) => a.$.Name === relationship);
34
+ const end = association === null || association === void 0 ? void 0 : association.End.find((e) => e.$.Role === np.$.ToRole);
35
+ if (!end) {
36
+ throw new Error(`Association end couldn't be determined for NavigationProperty [${np.$.Name}]`);
37
+ }
38
+ const isRequired = end.$.Multiplicity !== "*" && !end.$.Multiplicity.startsWith("0..");
39
+ const isCollection = end.$.Multiplicity !== "1" && !end.$.Multiplicity.endsWith("..1");
40
+ return {
41
+ $: {
42
+ Name: np.$.Name,
43
+ Type: isCollection ? `Collection(${end.$.Type})` : end.$.Type,
44
+ Nullable: isRequired ? "false" : "true",
45
+ },
46
+ };
47
+ });
48
+ }
49
+ return [];
50
+ }
51
+ digestEntityContainer() {
52
+ var _a, _b;
53
+ if (this.schema.EntityContainer && this.schema.EntityContainer.length) {
54
+ const container = this.schema.EntityContainer[0];
55
+ (_a = container.FunctionImport) === null || _a === void 0 ? void 0 : _a.forEach((funcImport) => {
56
+ var _a, _b, _c, _d;
57
+ const name = this.namingHelper.getFunctionName(funcImport.$.Name);
58
+ const usePost = ((_a = funcImport.$["m:HttpMethod"]) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === "POST";
59
+ const parameters = (_c = (_b = funcImport.Parameter) === null || _b === void 0 ? void 0 : _b.map(this.mapProp)) !== null && _c !== void 0 ? _c : [];
60
+ // TODO: the spec allows for multiple ReturnType elements
61
+ // https://docs.microsoft.com/en-us/openspecs/windows_protocols/mc-csdl/f510f36a-36bf-47f4-ac41-4a0ff921fbfa
62
+ // totally unclear how the response object would look like
63
+ const returnTypeDef = funcImport.$.ReturnType || (((_d = funcImport.ReturnType) === null || _d === void 0 ? void 0 : _d.length) ? funcImport.ReturnType[0].$.Type : undefined);
64
+ const returnType = returnTypeDef
65
+ ? this.mapProp({ $: { Name: "NO_NAME_BECAUSE_RETURN_TYPE", Type: returnTypeDef } })
66
+ : undefined;
67
+ const operation = {
68
+ name,
69
+ odataName: funcImport.$.Name,
70
+ paramsModelName: this.namingHelper.getOperationParamsModelName(funcImport.$.Name),
71
+ qName: this.namingHelper.getQFunctionName(funcImport.$.Name),
72
+ type: "Function" /* Function */,
73
+ parameters,
74
+ returnType,
75
+ usePost,
76
+ };
77
+ this.dataModel.addOperationType("/", operation);
78
+ this.dataModel.addFunction(name, {
79
+ name,
80
+ odataName: funcImport.$.Name,
81
+ // TODO: does this really match V4 model?!
82
+ entitySet: funcImport.$.EntitySet,
83
+ operation: operation,
84
+ });
85
+ });
86
+ (_b = container.EntitySet) === null || _b === void 0 ? void 0 : _b.forEach((entitySet) => {
87
+ const name = entitySet.$.Name;
88
+ this.dataModel.addEntitySet(name, {
89
+ name,
90
+ odataName: entitySet.$.Name,
91
+ entityType: this.dataModel.getModel(this.namingHelper.getModelName(entitySet.$.EntityType)),
92
+ });
93
+ });
94
+ }
95
+ }
96
+ mapODataType(type) {
97
+ switch (type) {
98
+ case odata_core_1.ODataTypesV2.Boolean:
99
+ return {
100
+ outputType: "boolean",
101
+ qPath: "QBooleanPath",
102
+ qCollection: "QBooleanCollection",
103
+ qParam: "QBooleanParam",
104
+ };
105
+ case odata_core_1.ODataTypesV2.Int16:
106
+ case odata_core_1.ODataTypesV2.Int32:
107
+ return {
108
+ outputType: "number",
109
+ qPath: "QNumberV2Path",
110
+ qCollection: "QNumberV2Collection",
111
+ qParam: "QNumberParam",
112
+ };
113
+ case odata_core_1.ODataTypesV2.Byte:
114
+ case odata_core_1.ODataTypesV2.SByte:
115
+ return {
116
+ outputType: "string",
117
+ qPath: "QStringNumberV2Path",
118
+ qCollection: "QStringNumberV2Collection",
119
+ qParam: "QStringNumberV2Param",
120
+ };
121
+ case odata_core_1.ODataTypesV2.Int64:
122
+ return {
123
+ outputType: "string",
124
+ qPath: "QStringNumberV2Path",
125
+ qCollection: "QStringNumberV2Collection",
126
+ qParam: "QInt64V2Param",
127
+ };
128
+ case odata_core_1.ODataTypesV2.Single:
129
+ return {
130
+ outputType: "string",
131
+ qPath: "QStringNumberV2Path",
132
+ qCollection: "QStringNumberV2Collection",
133
+ qParam: "QSingleV2Param",
134
+ };
135
+ case odata_core_1.ODataTypesV2.Double:
136
+ return {
137
+ outputType: "string",
138
+ qPath: "QStringNumberV2Path",
139
+ qCollection: "QStringNumberV2Collection",
140
+ qParam: "QDoubleV2Param",
141
+ };
142
+ case odata_core_1.ODataTypesV2.Decimal:
143
+ return {
144
+ outputType: "string",
145
+ qPath: "QStringNumberV2Path",
146
+ qCollection: "QStringNumberV2Collection",
147
+ qParam: "QDecimalV2Param",
148
+ };
149
+ case odata_core_1.ODataTypesV2.String:
150
+ return {
151
+ outputType: "string",
152
+ qPath: "QStringV2Path",
153
+ qCollection: "QStringV2Collection",
154
+ qParam: "QStringParam",
155
+ };
156
+ case odata_core_1.ODataTypesV2.DateTime:
157
+ return {
158
+ outputType: "string",
159
+ qPath: "QDateTimeV2Path",
160
+ qCollection: "QDateTimeV2Collection",
161
+ qParam: "QDateTimeV2Param",
162
+ };
163
+ case odata_core_1.ODataTypesV2.Time:
164
+ return {
165
+ outputType: "string",
166
+ qPath: "QTimeV2Path",
167
+ qCollection: "QTimeV2Collection",
168
+ qParam: "QTimeV2Param",
169
+ };
170
+ case odata_core_1.ODataTypesV2.DateTimeOffset:
171
+ return {
172
+ outputType: "string",
173
+ qPath: "QDateTimeOffsetV2Path",
174
+ qCollection: "QDateTimeOffsetV2Collection",
175
+ qParam: "QDateTimeOffsetV2Param",
176
+ };
177
+ case odata_core_1.ODataTypesV2.Binary:
178
+ return {
179
+ outputType: "string",
180
+ qPath: "QBinaryPath",
181
+ qCollection: "QBinaryCollection",
182
+ qParam: undefined,
183
+ };
184
+ case odata_core_1.ODataTypesV2.Guid:
185
+ return {
186
+ outputType: "string",
187
+ qPath: "QGuidV2Path",
188
+ qCollection: "QGuidV2Collection",
189
+ qParam: "QGuidV2Param",
190
+ };
191
+ default:
192
+ return {
193
+ outputType: "string",
194
+ qPath: "QStringV2Path",
195
+ qCollection: "QStringV2Collection",
196
+ qParam: undefined,
197
+ };
198
+ }
199
+ }
200
+ }
201
+ //# sourceMappingURL=DataModelDigestionV2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataModelDigestionV2.js","sourceRoot":"","sources":["../../src/data-model/DataModelDigestionV2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { DigesterFunction } from "../FactoryFunctionModel";
2
+ import { SchemaV4 } from "./edmx/ODataEdmxModelV4";
3
+ export declare const digest: DigesterFunction<SchemaV4>;
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.digest = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const converter_runtime_1 = require("@odata2ts/converter-runtime");
6
+ const odata_core_1 = require("@odata2ts/odata-core");
7
+ const DataModelDigestion_1 = require("./DataModelDigestion");
8
+ const DataTypeModel_1 = require("./DataTypeModel");
9
+ const digest = (schema, options, namingHelper) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
10
+ const converters = yield (0, converter_runtime_1.loadConverters)(odata_core_1.ODataVersions.V2, options.converters);
11
+ const digester = new DigesterV4(schema, options, namingHelper, converters);
12
+ return digester.digest();
13
+ });
14
+ exports.digest = digest;
15
+ class DigesterV4 extends DataModelDigestion_1.Digester {
16
+ constructor(schema, options, namingHelper, converters) {
17
+ super(DataTypeModel_1.ODataVersion.V4, schema, options, namingHelper, converters);
18
+ }
19
+ getNavigationProps(entityType) {
20
+ return entityType.NavigationProperty || [];
21
+ }
22
+ digestEntityContainer() {
23
+ var _a, _b, _c, _d;
24
+ // functions & actions
25
+ this.addOperations(this.schema.Function, "Function" /* Function */);
26
+ this.addOperations(this.schema.Action, "Action" /* Action */);
27
+ if (this.schema.EntityContainer && this.schema.EntityContainer.length) {
28
+ const container = this.schema.EntityContainer[0];
29
+ (_a = container.ActionImport) === null || _a === void 0 ? void 0 : _a.forEach((actionImport) => {
30
+ const name = this.namingHelper.getActionName(actionImport.$.Name);
31
+ const operationName = this.namingHelper.getActionName(actionImport.$.Action);
32
+ this.dataModel.addAction(name, {
33
+ name: name,
34
+ odataName: actionImport.$.Name,
35
+ operation: this.getRootOperationType(operationName),
36
+ });
37
+ });
38
+ (_b = container.FunctionImport) === null || _b === void 0 ? void 0 : _b.forEach((funcImport) => {
39
+ const name = this.namingHelper.getFunctionName(funcImport.$.Name);
40
+ const operationName = this.namingHelper.getFunctionName(funcImport.$.Function);
41
+ this.dataModel.addFunction(name, {
42
+ name,
43
+ odataName: funcImport.$.Name,
44
+ operation: this.getRootOperationType(operationName),
45
+ entitySet: funcImport.$.EntitySet,
46
+ });
47
+ });
48
+ (_c = container.Singleton) === null || _c === void 0 ? void 0 : _c.forEach((singleton) => {
49
+ const name = singleton.$.Name;
50
+ const navPropBindings = singleton.NavigationPropertyBinding || [];
51
+ this.dataModel.addSingleton(name, {
52
+ name,
53
+ odataName: singleton.$.Name,
54
+ entityType: this.dataModel.getModel(this.namingHelper.getModelName(singleton.$.Type)),
55
+ navPropBinding: navPropBindings.map((binding) => ({
56
+ path: this.namingHelper.stripServicePrefix(binding.$.Path),
57
+ target: binding.$.Target,
58
+ })),
59
+ });
60
+ });
61
+ (_d = container.EntitySet) === null || _d === void 0 ? void 0 : _d.forEach((entitySet) => {
62
+ const name = entitySet.$.Name;
63
+ const navPropBindings = entitySet.NavigationPropertyBinding || [];
64
+ this.dataModel.addEntitySet(name, {
65
+ name,
66
+ odataName: entitySet.$.Name,
67
+ entityType: this.dataModel.getModel(this.namingHelper.getModelName(entitySet.$.EntityType)),
68
+ navPropBinding: navPropBindings.map((binding) => ({
69
+ path: this.namingHelper.stripServicePrefix(binding.$.Path),
70
+ target: binding.$.Target,
71
+ })),
72
+ });
73
+ });
74
+ }
75
+ }
76
+ mapODataType(type) {
77
+ switch (type) {
78
+ case odata_core_1.ODataTypesV4.Boolean:
79
+ return {
80
+ outputType: "boolean",
81
+ qPath: "QBooleanPath",
82
+ qCollection: "QBooleanCollection",
83
+ qParam: "QBooleanParam",
84
+ };
85
+ case odata_core_1.ODataTypesV4.Byte:
86
+ case odata_core_1.ODataTypesV4.SByte:
87
+ case odata_core_1.ODataTypesV4.Int16:
88
+ case odata_core_1.ODataTypesV4.Int32:
89
+ case odata_core_1.ODataTypesV4.Int64:
90
+ case odata_core_1.ODataTypesV4.Single:
91
+ case odata_core_1.ODataTypesV4.Double:
92
+ case odata_core_1.ODataTypesV4.Decimal:
93
+ return {
94
+ outputType: "number",
95
+ qPath: "QNumberPath",
96
+ qCollection: "QNumberCollection",
97
+ qParam: "QNumberParam",
98
+ };
99
+ case odata_core_1.ODataTypesV4.String:
100
+ return {
101
+ outputType: "string",
102
+ qPath: "QStringPath",
103
+ qCollection: "QStringCollection",
104
+ qParam: "QStringParam",
105
+ };
106
+ case odata_core_1.ODataTypesV4.Date:
107
+ return {
108
+ outputType: "string",
109
+ qPath: "QDatePath",
110
+ qCollection: "QDateCollection",
111
+ qParam: "QDateParam",
112
+ };
113
+ case odata_core_1.ODataTypesV4.TimeOfDay:
114
+ return {
115
+ outputType: "string",
116
+ qPath: "QTimeOfDayPath",
117
+ qCollection: "QTimeOfDayCollection",
118
+ qParam: "QTimeOfDayParam",
119
+ };
120
+ case odata_core_1.ODataTypesV4.DateTimeOffset:
121
+ return {
122
+ outputType: "string",
123
+ qPath: "QDateTimeOffsetPath",
124
+ qCollection: "QDateTimeOffsetCollection",
125
+ qParam: "QDateTimeOffsetParam",
126
+ };
127
+ case odata_core_1.ODataTypesV4.Binary:
128
+ return {
129
+ outputType: "string",
130
+ qPath: "QBinaryPath",
131
+ qCollection: "QBinaryCollection",
132
+ qParam: undefined,
133
+ };
134
+ case odata_core_1.ODataTypesV4.Guid:
135
+ return {
136
+ outputType: "string",
137
+ qPath: "QGuidPath",
138
+ qCollection: "QGuidCollection",
139
+ qParam: "QGuidParam",
140
+ };
141
+ default:
142
+ return {
143
+ outputType: "string",
144
+ qPath: "QStringPath",
145
+ qCollection: "QStringCollection",
146
+ qParam: undefined,
147
+ };
148
+ }
149
+ }
150
+ addOperations(operations, type) {
151
+ if (!operations || !operations.length) {
152
+ return;
153
+ }
154
+ operations.forEach((op) => {
155
+ var _a, _b, _c;
156
+ const params = (_b = (_a = op.Parameter) === null || _a === void 0 ? void 0 : _a.map(this.mapProp)) !== null && _b !== void 0 ? _b : [];
157
+ const returnType = (_c = op.ReturnType) === null || _c === void 0 ? void 0 : _c.map((rt) => {
158
+ return this.mapProp(Object.assign(Object.assign({}, rt), { $: Object.assign({ Name: "NO_NAME_BECAUSE_RETURN_TYPE" }, rt.$) }));
159
+ })[0];
160
+ const isBound = op.$.IsBound === "true";
161
+ if (isBound && !params.length) {
162
+ throw new Error(`IllegalState: Operation '${op.$.Name}' is bound, but has no parameters!`);
163
+ }
164
+ const bindingProp = isBound ? params.shift() : undefined;
165
+ const binding = bindingProp
166
+ ? bindingProp.isCollection
167
+ ? `Collection(${bindingProp.type})`
168
+ : bindingProp.type
169
+ : DigesterV4.ROOT_OPERATION;
170
+ const name = type === "Function" /* Function */
171
+ ? this.namingHelper.getFunctionName(op.$.Name)
172
+ : this.namingHelper.getActionName(op.$.Name);
173
+ const qName = type === "Function" /* Function */
174
+ ? this.namingHelper.getQFunctionName(op.$.Name)
175
+ : this.namingHelper.getQActionName(op.$.Name);
176
+ this.dataModel.addOperationType(binding, {
177
+ odataName: op.$.Name,
178
+ name,
179
+ qName,
180
+ paramsModelName: this.namingHelper.getOperationParamsModelName(op.$.Name),
181
+ type: type,
182
+ parameters: params,
183
+ returnType: returnType,
184
+ });
185
+ });
186
+ }
187
+ getRootOperationType(name) {
188
+ const rootOps = this.dataModel.getOperationTypeByBinding(DigesterV4.ROOT_OPERATION);
189
+ const rootOp = rootOps.find((op) => op.name === name);
190
+ if (!rootOp) {
191
+ throw new Error(`Couldn't find root operation with name [${name}]`);
192
+ }
193
+ return rootOp;
194
+ }
195
+ }
196
+ //# sourceMappingURL=DataModelDigestionV4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataModelDigestionV4.js","sourceRoot":"","sources":["../../src/data-model/DataModelDigestionV4.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ import { ValueConverterImport } from "@odata2ts/converter-runtime";
2
+ export declare enum ODataVersion {
3
+ V2 = "2.0",
4
+ V4 = "4.0"
5
+ }
6
+ export declare const enum DataTypes {
7
+ PrimitiveType = "PrimitiveType",
8
+ EnumType = "EnumType",
9
+ ComplexType = "ComplexType",
10
+ ModelType = "ModelType"
11
+ }
12
+ export declare const enum OperationTypes {
13
+ Function = "Function",
14
+ Action = "Action"
15
+ }
16
+ export interface PropertyModel {
17
+ odataName: string;
18
+ name: string;
19
+ odataType: string;
20
+ type: string;
21
+ typeModule?: string;
22
+ qObject?: string;
23
+ qPath: string;
24
+ qParam?: string;
25
+ required: boolean;
26
+ isCollection: boolean;
27
+ dataType: DataTypes;
28
+ converters?: Array<ValueConverterImport>;
29
+ managed?: boolean;
30
+ }
31
+ export interface ModelType extends ComplexType {
32
+ idModelName: string;
33
+ qIdFunctionName: string;
34
+ generateId: boolean;
35
+ keyNames: Array<string>;
36
+ keys: Array<PropertyModel>;
37
+ getKeyUnion(): string;
38
+ }
39
+ export interface ComplexType {
40
+ odataName: string;
41
+ name: string;
42
+ editableName: string;
43
+ qName: string;
44
+ props: Array<PropertyModel>;
45
+ baseProps: Array<PropertyModel>;
46
+ baseClasses: Array<string>;
47
+ }
48
+ export interface EnumType {
49
+ odataName: string;
50
+ name: string;
51
+ members: Array<string>;
52
+ }
53
+ export interface OperationType {
54
+ odataName: string;
55
+ name: string;
56
+ paramsModelName: string;
57
+ qName: string;
58
+ type: OperationTypes;
59
+ parameters: Array<PropertyModel>;
60
+ returnType?: ReturnTypeModel;
61
+ usePost?: boolean;
62
+ }
63
+ export interface ReturnTypeModel extends PropertyModel {
64
+ }
65
+ export declare type EntityContainerModel = {
66
+ entitySets: {
67
+ [name: string]: EntitySetType;
68
+ };
69
+ singletons: {
70
+ [name: string]: SingletonType;
71
+ };
72
+ functions: {
73
+ [name: string]: FunctionImportType;
74
+ };
75
+ actions: {
76
+ [name: string]: ActionImportType;
77
+ };
78
+ };
79
+ export interface SingletonType {
80
+ odataName: string;
81
+ name: string;
82
+ entityType: ModelType;
83
+ navPropBinding?: Array<NavPropBindingType>;
84
+ }
85
+ export interface EntitySetType {
86
+ odataName: string;
87
+ name: string;
88
+ entityType: ModelType;
89
+ navPropBinding?: Array<NavPropBindingType>;
90
+ }
91
+ export interface NavPropBindingType {
92
+ path: string;
93
+ target: string;
94
+ }
95
+ export interface ActionImportType {
96
+ odataName: string;
97
+ name: string;
98
+ operation: OperationType;
99
+ }
100
+ export interface FunctionImportType extends ActionImportType {
101
+ entitySet: string;
102
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ODataVersion = void 0;
4
+ var ODataVersion;
5
+ (function (ODataVersion) {
6
+ ODataVersion["V2"] = "2.0";
7
+ ODataVersion["V4"] = "4.0";
8
+ })(ODataVersion = exports.ODataVersion || (exports.ODataVersion = {}));
9
+ //# sourceMappingURL=DataTypeModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTypeModel.js","sourceRoot":"","sources":["../../src/data-model/DataTypeModel.ts"],"names":[],"mappings":";;;AAEA,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,0BAAU,CAAA;IACV,0BAAU,CAAA;AACZ,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB"}
@@ -0,0 +1,57 @@
1
+ import { RunOptions } from "../OptionModel";
2
+ export interface NamingHelperSettings extends Pick<RunOptions, "allowRenaming" | "naming"> {
3
+ }
4
+ export declare class NamingHelper {
5
+ private readonly allowModelPropRenaming;
6
+ private readonly serviceName;
7
+ private readonly servicePrefix;
8
+ private readonly options;
9
+ constructor(options: NamingHelperSettings, serviceName: string, overridingServiceName?: string);
10
+ /**
11
+ * The prefix used to reference model or enum types in this schema.
12
+ *
13
+ * @returns service prefix
14
+ */
15
+ getServicePrefix(): string;
16
+ /**
17
+ * The OData service name as it was found and is used in metadata file.
18
+ *
19
+ * @returns
20
+ */
21
+ getODataServiceName(): string;
22
+ getFileNames(): {
23
+ model: string;
24
+ qObject: string;
25
+ service: string;
26
+ };
27
+ private getFileName;
28
+ getFileNameService(name: string): string;
29
+ stripServicePrefix(token: string): string;
30
+ private namingFunction;
31
+ private getName;
32
+ private getModelNamingStrategy;
33
+ private getModelPropNamingStrategy;
34
+ private getQObjectNamingStrategy;
35
+ private getQObjectPropNamingStrategy;
36
+ private getOperationNamingStrategy;
37
+ getModelName(name: string): string;
38
+ getModelPropName(name: string): string;
39
+ getEnumName(name: string): string;
40
+ getEditableModelName(name: string): string;
41
+ getIdModelName(name: string): string;
42
+ getOperationParamsModelName(name: string): string;
43
+ getQName(name: string): string;
44
+ getQPropName(name: string): string;
45
+ getQIdFunctionName(name: string): string;
46
+ getQFunctionName(name: string): string;
47
+ getQActionName(name: string): string;
48
+ getMainServiceName(): string;
49
+ getServiceName: (name: string) => string;
50
+ getCollectionServiceName: (name: string) => string;
51
+ getServiceResolverName: (name: string) => string;
52
+ getFunctionName(name: string): string;
53
+ getActionName(name: string): string;
54
+ getRelatedServiceGetter(name: string): string;
55
+ getPublicPropNameForService(name: string): string;
56
+ getPrivatePropName: (name: string) => string;
57
+ }