@odata2ts/odata2ts 0.24.0 → 0.25.1
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/CHANGELOG.md +20 -0
- package/lib/FactoryFunctionModel.d.ts +1 -1
- package/lib/FactoryFunctionModel.js.map +1 -1
- package/lib/app.js +13 -9
- package/lib/app.js.map +1 -1
- package/lib/data-model/DataModel.d.ts +3 -0
- package/lib/data-model/DataModel.js +7 -0
- package/lib/data-model/DataModel.js.map +1 -1
- package/lib/data-model/DataModelDigestion.d.ts +8 -4
- package/lib/data-model/DataModelDigestion.js +62 -37
- package/lib/data-model/DataModelDigestion.js.map +1 -1
- package/lib/data-model/DataModelDigestionV2.js +24 -14
- package/lib/data-model/DataModelDigestionV2.js.map +1 -1
- package/lib/data-model/DataModelDigestionV4.js +15 -13
- package/lib/data-model/DataModelDigestionV4.js.map +1 -1
- package/lib/data-model/NamingHelper.d.ts +11 -9
- package/lib/data-model/NamingHelper.js +41 -24
- package/lib/data-model/NamingHelper.js.map +1 -1
- package/lib/data-model/edmx/ODataEdmxModelBase.d.ts +13 -1
- package/lib/data-model/edmx/ODataEdmxModelBase.js.map +1 -1
- package/lib/project/ProjectManager.js +1 -1
- package/lib/project/ProjectManager.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataModelDigestionV2.js","sourceRoot":"","sources":["../../src/data-model/DataModelDigestionV2.ts"],"names":[],"mappings":"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","sourcesContent":["import { MappedConverterChains, loadConverters } from \"@odata2ts/converter-runtime\";\r\nimport { ODataTypesV2, ODataVersions } from \"@odata2ts/odata-core\";\r\n\r\nimport { DigesterFunction, DigestionOptions } from \"../FactoryFunctionModel\";\r\nimport { Digester, TypeModel } from \"./DataModelDigestion\";\r\nimport { ODataVersion, OperationType, OperationTypes, PropertyModel } from \"./DataTypeModel\";\r\nimport { ComplexType, Property } from \"./edmx/ODataEdmxModelBase\";\r\nimport { ComplexTypeV3, EntityTypeV3, SchemaV3 } from \"./edmx/ODataEdmxModelV3\";\r\nimport { NamingHelper } from \"./NamingHelper\";\r\n\r\n/**\r\n * Digests an EDMX schema to produce a DataModel.\r\n *\r\n * @param schema\r\n * @param options\r\n * @param namingHelper\r\n */\r\nexport const digest: DigesterFunction<SchemaV3> = async (schema, options, namingHelper) => {\r\n const converters = await loadConverters(ODataVersions.V2, options.converters);\r\n\r\n const digester = new DigesterV3(schema, options, namingHelper, converters);\r\n return digester.digest();\r\n};\r\n\r\nclass DigesterV3 extends Digester<SchemaV3, EntityTypeV3, ComplexTypeV3> {\r\n constructor(\r\n schema: SchemaV3,\r\n options: DigestionOptions,\r\n namingHelper: NamingHelper,\r\n converters: MappedConverterChains | undefined\r\n ) {\r\n super(ODataVersion.V2, schema, options, namingHelper, converters);\r\n }\r\n\r\n protected getNavigationProps(entityType: ComplexType | EntityTypeV3): Array<Property> {\r\n // return (entityType as EntityTypeV3).NavigationProperty || [];\r\n const et = entityType as EntityTypeV3;\r\n if (et.NavigationProperty) {\r\n return et.NavigationProperty.map((np) => {\r\n const relationship = this.namingHelper.stripServicePrefix(np.$.Relationship);\r\n const association = this.schema.Association?.find((a) => a.$.Name === relationship);\r\n const end = association?.End.find((e) => e.$.Role === np.$.ToRole);\r\n if (!end) {\r\n throw new Error(`Association end couldn't be determined for NavigationProperty [${np.$.Name}]`);\r\n }\r\n\r\n const isRequired = end.$.Multiplicity !== \"*\" && !end.$.Multiplicity.startsWith(\"0..\");\r\n const isCollection = end.$.Multiplicity !== \"1\" && !end.$.Multiplicity.endsWith(\"..1\");\r\n\r\n return {\r\n $: {\r\n Name: np.$.Name,\r\n Type: isCollection ? `Collection(${end.$.Type})` : end.$.Type,\r\n Nullable: isRequired ? \"false\" : \"true\",\r\n },\r\n };\r\n });\r\n }\r\n\r\n return [];\r\n }\r\n\r\n protected digestEntityContainer() {\r\n if (this.schema.EntityContainer && this.schema.EntityContainer.length) {\r\n const container = this.schema.EntityContainer[0];\r\n\r\n container.FunctionImport?.forEach((funcImport) => {\r\n const name = this.namingHelper.getFunctionName(funcImport.$.Name);\r\n const usePost = funcImport.$[\"m:HttpMethod\"]?.toUpperCase() === \"POST\";\r\n const parameters = funcImport.Parameter?.map(this.mapProp) ?? [];\r\n\r\n // TODO: the spec allows for multiple ReturnType elements\r\n // https://docs.microsoft.com/en-us/openspecs/windows_protocols/mc-csdl/f510f36a-36bf-47f4-ac41-4a0ff921fbfa\r\n // totally unclear how the response object would look like\r\n const returnTypeDef =\r\n funcImport.$.ReturnType || (funcImport.ReturnType?.length ? funcImport.ReturnType[0].$.Type : undefined);\r\n const returnType: PropertyModel | undefined = returnTypeDef\r\n ? this.mapProp({ $: { Name: \"NO_NAME_BECAUSE_RETURN_TYPE\", Type: returnTypeDef } })\r\n : undefined;\r\n\r\n const operation: OperationType = {\r\n name,\r\n odataName: funcImport.$.Name,\r\n paramsModelName: this.namingHelper.getOperationParamsModelName(funcImport.$.Name),\r\n qName: this.namingHelper.getQFunctionName(funcImport.$.Name),\r\n type: OperationTypes.Function,\r\n parameters,\r\n returnType,\r\n usePost,\r\n };\r\n this.dataModel.addOperationType(\"/\", operation);\r\n\r\n this.dataModel.addFunction(name, {\r\n name,\r\n odataName: funcImport.$.Name,\r\n // TODO: does this really match V4 model?!\r\n entitySet: funcImport.$.EntitySet!,\r\n operation: operation,\r\n });\r\n });\r\n\r\n container.EntitySet?.forEach((entitySet) => {\r\n const name = entitySet.$.Name;\r\n\r\n this.dataModel.addEntitySet(name, {\r\n name,\r\n odataName: entitySet.$.Name,\r\n entityType: this.dataModel.getModel(this.namingHelper.getModelName(entitySet.$.EntityType)),\r\n });\r\n });\r\n }\r\n }\r\n\r\n protected mapODataType(type: string): TypeModel {\r\n switch (type) {\r\n case ODataTypesV2.Boolean:\r\n return {\r\n outputType: \"boolean\",\r\n qPath: \"QBooleanPath\",\r\n qCollection: \"QBooleanCollection\",\r\n qParam: \"QBooleanParam\",\r\n };\r\n case ODataTypesV2.Int16:\r\n case ODataTypesV2.Int32:\r\n return {\r\n outputType: \"number\",\r\n qPath: \"QNumberV2Path\",\r\n qCollection: \"QNumberV2Collection\",\r\n qParam: \"QNumberParam\",\r\n };\r\n case ODataTypesV2.Byte:\r\n case ODataTypesV2.SByte:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QStringNumberV2Path\",\r\n qCollection: \"QStringNumberV2Collection\",\r\n qParam: \"QStringNumberV2Param\",\r\n };\r\n case ODataTypesV2.Int64:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QStringNumberV2Path\",\r\n qCollection: \"QStringNumberV2Collection\",\r\n qParam: \"QInt64V2Param\",\r\n };\r\n case ODataTypesV2.Single:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QStringNumberV2Path\",\r\n qCollection: \"QStringNumberV2Collection\",\r\n qParam: \"QSingleV2Param\",\r\n };\r\n case ODataTypesV2.Double:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QStringNumberV2Path\",\r\n qCollection: \"QStringNumberV2Collection\",\r\n qParam: \"QDoubleV2Param\",\r\n };\r\n case ODataTypesV2.Decimal:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QStringNumberV2Path\",\r\n qCollection: \"QStringNumberV2Collection\",\r\n qParam: \"QDecimalV2Param\",\r\n };\r\n case ODataTypesV2.String:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QStringV2Path\",\r\n qCollection: \"QStringV2Collection\",\r\n qParam: \"QStringParam\",\r\n };\r\n case ODataTypesV2.DateTime:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QDateTimeV2Path\",\r\n qCollection: \"QDateTimeV2Collection\",\r\n qParam: \"QDateTimeV2Param\",\r\n };\r\n case ODataTypesV2.Time:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QTimeV2Path\",\r\n qCollection: \"QTimeV2Collection\",\r\n qParam: \"QTimeV2Param\",\r\n };\r\n case ODataTypesV2.DateTimeOffset:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QDateTimeOffsetV2Path\",\r\n qCollection: \"QDateTimeOffsetV2Collection\",\r\n qParam: \"QDateTimeOffsetV2Param\",\r\n };\r\n case ODataTypesV2.Binary:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QBinaryPath\",\r\n qCollection: \"QBinaryCollection\",\r\n qParam: undefined,\r\n };\r\n case ODataTypesV2.Guid:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QGuidV2Path\",\r\n qCollection: \"QGuidV2Collection\",\r\n qParam: \"QGuidV2Param\",\r\n };\r\n default:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QStringV2Path\",\r\n qCollection: \"QStringV2Collection\",\r\n qParam: undefined,\r\n };\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"DataModelDigestionV2.js","sourceRoot":"","sources":["../../src/data-model/DataModelDigestionV2.ts"],"names":[],"mappings":"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","sourcesContent":["import { MappedConverterChains, loadConverters } from \"@odata2ts/converter-runtime\";\r\nimport { ODataTypesV2, ODataVersions } from \"@odata2ts/odata-core\";\r\n\r\nimport { DigesterFunction, DigestionOptions } from \"../FactoryFunctionModel\";\r\nimport { Digester, TypeModel } from \"./DataModelDigestion\";\r\nimport { ODataVersion, OperationType, OperationTypes, PropertyModel } from \"./DataTypeModel\";\r\nimport { ComplexType, Property } from \"./edmx/ODataEdmxModelBase\";\r\nimport { AssociationEnd, ComplexTypeV3, EntityTypeV3, NavigationProperty, SchemaV3 } from \"./edmx/ODataEdmxModelV3\";\r\nimport { NamingHelper } from \"./NamingHelper\";\r\n\r\n/**\r\n * Digests an EDMX schema to produce a DataModel.\r\n *\r\n * @param schema\r\n * @param options\r\n * @param namingHelper\r\n */\r\nexport const digest: DigesterFunction<SchemaV3> = async (schemas, options, namingHelper) => {\r\n const converters = await loadConverters(ODataVersions.V2, options.converters);\r\n\r\n const digester = new DigesterV3(schemas, options, namingHelper, converters);\r\n return digester.digest();\r\n};\r\n\r\nclass DigesterV3 extends Digester<SchemaV3, EntityTypeV3, ComplexTypeV3> {\r\n constructor(\r\n schemas: Array<SchemaV3>,\r\n options: DigestionOptions,\r\n namingHelper: NamingHelper,\r\n converters: MappedConverterChains | undefined\r\n ) {\r\n super(ODataVersion.V2, schemas, options, namingHelper, converters);\r\n }\r\n\r\n private findAssociationEnd(np: NavigationProperty): AssociationEnd {\r\n for (let schema of this.schemas) {\r\n if (schema.Association) {\r\n const relationship = this.namingHelper.stripServicePrefix(np.$.Relationship);\r\n const association = schema.Association?.find((a) => a.$.Name === relationship);\r\n const result = association?.End.find((e) => e.$.Role === np.$.ToRole);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n }\r\n throw new Error(`Association end couldn't be determined for NavigationProperty [${np.$.Name}]`);\r\n }\r\n\r\n protected getNavigationProps(entityType: ComplexType | EntityTypeV3): Array<Property> {\r\n // return (entityType as EntityTypeV3).NavigationProperty || [];\r\n const et = entityType as EntityTypeV3;\r\n if (et.NavigationProperty) {\r\n return et.NavigationProperty.map((np) => {\r\n const end = this.findAssociationEnd(np);\r\n const isRequired = end.$.Multiplicity !== \"*\" && !end.$.Multiplicity.startsWith(\"0..\");\r\n const isCollection = end.$.Multiplicity !== \"1\" && !end.$.Multiplicity.endsWith(\"..1\");\r\n\r\n return {\r\n $: {\r\n Name: np.$.Name,\r\n Type: isCollection ? `Collection(${end.$.Type})` : end.$.Type,\r\n Nullable: isRequired ? \"false\" : \"true\",\r\n },\r\n };\r\n });\r\n }\r\n\r\n return [];\r\n }\r\n\r\n // in V2 all we have & need is the FunctionImport: Function & Action elements are only known in V4.\r\n protected digestOperations(schema: SchemaV3) {}\r\n\r\n protected digestEntityContainer(schema: SchemaV3) {\r\n if (schema.EntityContainer && schema.EntityContainer.length) {\r\n const container = schema.EntityContainer[0];\r\n\r\n container.FunctionImport?.forEach((funcImport) => {\r\n const name = this.namingHelper.getFunctionName(funcImport.$.Name);\r\n const usePost = funcImport.$[\"m:HttpMethod\"]?.toUpperCase() === \"POST\";\r\n const parameters = funcImport.Parameter?.map(this.mapProp) ?? [];\r\n\r\n // TODO: the spec allows for multiple ReturnType elements\r\n // https://docs.microsoft.com/en-us/openspecs/windows_protocols/mc-csdl/f510f36a-36bf-47f4-ac41-4a0ff921fbfa\r\n // totally unclear how the response object would look like\r\n const returnTypeDef =\r\n funcImport.$.ReturnType || (funcImport.ReturnType?.length ? funcImport.ReturnType[0].$.Type : undefined);\r\n const returnType: PropertyModel | undefined = returnTypeDef\r\n ? this.mapProp({ $: { Name: \"NO_NAME_BECAUSE_RETURN_TYPE\", Type: returnTypeDef } })\r\n : undefined;\r\n\r\n const operation: OperationType = {\r\n name,\r\n odataName: funcImport.$.Name,\r\n paramsModelName: this.namingHelper.getOperationParamsModelName(funcImport.$.Name),\r\n qName: this.namingHelper.getQFunctionName(funcImport.$.Name),\r\n type: OperationTypes.Function,\r\n parameters,\r\n returnType,\r\n usePost,\r\n };\r\n this.dataModel.addOperationType(\"/\", operation);\r\n\r\n this.dataModel.addFunction(name, {\r\n name,\r\n odataName: funcImport.$.Name,\r\n // TODO: does this really match V4 model?!\r\n entitySet: funcImport.$.EntitySet!,\r\n operation: operation,\r\n });\r\n });\r\n\r\n container.EntitySet?.forEach((entitySet) => {\r\n const name = entitySet.$.Name;\r\n\r\n this.dataModel.addEntitySet(name, {\r\n name,\r\n odataName: entitySet.$.Name,\r\n entityType: this.dataModel.getModel(this.namingHelper.getModelName(entitySet.$.EntityType)),\r\n });\r\n });\r\n }\r\n }\r\n\r\n protected mapODataType(type: string): TypeModel {\r\n switch (type) {\r\n case ODataTypesV2.Boolean:\r\n return {\r\n outputType: \"boolean\",\r\n qPath: \"QBooleanPath\",\r\n qCollection: \"QBooleanCollection\",\r\n qParam: \"QBooleanParam\",\r\n };\r\n case ODataTypesV2.Int16:\r\n case ODataTypesV2.Int32:\r\n return {\r\n outputType: \"number\",\r\n qPath: \"QNumberV2Path\",\r\n qCollection: \"QNumberV2Collection\",\r\n qParam: \"QNumberParam\",\r\n };\r\n case ODataTypesV2.Byte:\r\n case ODataTypesV2.SByte:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QStringNumberV2Path\",\r\n qCollection: \"QStringNumberV2Collection\",\r\n qParam: \"QStringNumberV2Param\",\r\n };\r\n case ODataTypesV2.Int64:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QStringNumberV2Path\",\r\n qCollection: \"QStringNumberV2Collection\",\r\n qParam: \"QInt64V2Param\",\r\n };\r\n case ODataTypesV2.Single:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QStringNumberV2Path\",\r\n qCollection: \"QStringNumberV2Collection\",\r\n qParam: \"QSingleV2Param\",\r\n };\r\n case ODataTypesV2.Double:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QStringNumberV2Path\",\r\n qCollection: \"QStringNumberV2Collection\",\r\n qParam: \"QDoubleV2Param\",\r\n };\r\n case ODataTypesV2.Decimal:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QStringNumberV2Path\",\r\n qCollection: \"QStringNumberV2Collection\",\r\n qParam: \"QDecimalV2Param\",\r\n };\r\n case ODataTypesV2.String:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QStringV2Path\",\r\n qCollection: \"QStringV2Collection\",\r\n qParam: \"QStringParam\",\r\n };\r\n case ODataTypesV2.DateTime:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QDateTimeV2Path\",\r\n qCollection: \"QDateTimeV2Collection\",\r\n qParam: \"QDateTimeV2Param\",\r\n };\r\n case ODataTypesV2.Time:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QTimeV2Path\",\r\n qCollection: \"QTimeV2Collection\",\r\n qParam: \"QTimeV2Param\",\r\n };\r\n case ODataTypesV2.DateTimeOffset:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QDateTimeOffsetV2Path\",\r\n qCollection: \"QDateTimeOffsetV2Collection\",\r\n qParam: \"QDateTimeOffsetV2Param\",\r\n };\r\n case ODataTypesV2.Binary:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QBinaryPath\",\r\n qCollection: \"QBinaryCollection\",\r\n qParam: undefined,\r\n };\r\n case ODataTypesV2.Guid:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QGuidV2Path\",\r\n qCollection: \"QGuidV2Collection\",\r\n qParam: \"QGuidV2Param\",\r\n };\r\n default:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QStringV2Path\",\r\n qCollection: \"QStringV2Collection\",\r\n qParam: undefined,\r\n };\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -6,26 +6,28 @@ const converter_runtime_1 = require("@odata2ts/converter-runtime");
|
|
|
6
6
|
const odata_core_1 = require("@odata2ts/odata-core");
|
|
7
7
|
const DataModelDigestion_1 = require("./DataModelDigestion");
|
|
8
8
|
const DataTypeModel_1 = require("./DataTypeModel");
|
|
9
|
-
const digest = (
|
|
9
|
+
const digest = (schemas, options, namingHelper) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
10
10
|
const converters = yield (0, converter_runtime_1.loadConverters)(odata_core_1.ODataVersions.V2, options.converters);
|
|
11
|
-
const digester = new DigesterV4(
|
|
11
|
+
const digester = new DigesterV4(schemas, options, namingHelper, converters);
|
|
12
12
|
return digester.digest();
|
|
13
13
|
});
|
|
14
14
|
exports.digest = digest;
|
|
15
15
|
class DigesterV4 extends DataModelDigestion_1.Digester {
|
|
16
|
-
constructor(
|
|
17
|
-
super(DataTypeModel_1.ODataVersion.V4,
|
|
16
|
+
constructor(schemas, options, namingHelper, converters) {
|
|
17
|
+
super(DataTypeModel_1.ODataVersion.V4, schemas, options, namingHelper, converters);
|
|
18
18
|
}
|
|
19
19
|
getNavigationProps(entityType) {
|
|
20
20
|
return entityType.NavigationProperty || [];
|
|
21
21
|
}
|
|
22
|
-
|
|
23
|
-
var _a, _b, _c, _d;
|
|
22
|
+
digestOperations(schema) {
|
|
24
23
|
// functions & actions
|
|
25
|
-
this.addOperations(
|
|
26
|
-
this.addOperations(
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
this.addOperations(schema.Function, "Function" /* OperationTypes.Function */);
|
|
25
|
+
this.addOperations(schema.Action, "Action" /* OperationTypes.Action */);
|
|
26
|
+
}
|
|
27
|
+
digestEntityContainer(schema) {
|
|
28
|
+
var _a, _b, _c, _d;
|
|
29
|
+
if (schema.EntityContainer && schema.EntityContainer.length) {
|
|
30
|
+
const container = schema.EntityContainer[0];
|
|
29
31
|
(_a = container.ActionImport) === null || _a === void 0 ? void 0 : _a.forEach((actionImport) => {
|
|
30
32
|
const name = this.namingHelper.getActionName(actionImport.$.Name);
|
|
31
33
|
const operationName = this.namingHelper.getActionName(actionImport.$.Action);
|
|
@@ -171,13 +173,13 @@ class DigesterV4 extends DataModelDigestion_1.Digester {
|
|
|
171
173
|
? this.namingHelper.getFunctionName(op.$.Name)
|
|
172
174
|
: this.namingHelper.getActionName(op.$.Name);
|
|
173
175
|
const qName = type === "Function" /* OperationTypes.Function */
|
|
174
|
-
? this.namingHelper.getQFunctionName(op.$.Name)
|
|
175
|
-
: this.namingHelper.getQActionName(op.$.Name);
|
|
176
|
+
? this.namingHelper.getQFunctionName(op.$.Name, bindingProp)
|
|
177
|
+
: this.namingHelper.getQActionName(op.$.Name, bindingProp);
|
|
176
178
|
this.dataModel.addOperationType(binding, {
|
|
177
179
|
odataName: op.$.Name,
|
|
178
180
|
name,
|
|
179
181
|
qName,
|
|
180
|
-
paramsModelName: this.namingHelper.getOperationParamsModelName(op.$.Name),
|
|
182
|
+
paramsModelName: this.namingHelper.getOperationParamsModelName(op.$.Name, bindingProp),
|
|
181
183
|
type: type,
|
|
182
184
|
parameters: params,
|
|
183
185
|
returnType: returnType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataModelDigestionV4.js","sourceRoot":"","sources":["../../src/data-model/DataModelDigestionV4.ts"],"names":[],"mappings":"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","sourcesContent":["import { MappedConverterChains, loadConverters } from \"@odata2ts/converter-runtime\";\r\nimport { ODataTypesV4, ODataVersions } from \"@odata2ts/odata-core\";\r\n\r\nimport { DigesterFunction, DigestionOptions } from \"../FactoryFunctionModel\";\r\nimport { Digester, TypeModel } from \"./DataModelDigestion\";\r\nimport { ODataVersion, OperationType, OperationTypes, PropertyModel } from \"./DataTypeModel\";\r\nimport { ComplexType, Property } from \"./edmx/ODataEdmxModelBase\";\r\nimport { ComplexTypeV4, EntityTypeV4, Operation, SchemaV4 } from \"./edmx/ODataEdmxModelV4\";\r\nimport { NamingHelper } from \"./NamingHelper\";\r\n\r\nexport const digest: DigesterFunction<SchemaV4> = async (schema, options, namingHelper) => {\r\n const converters = await loadConverters(ODataVersions.V2, options.converters);\r\n\r\n const digester = new DigesterV4(schema, options, namingHelper, converters);\r\n return digester.digest();\r\n};\r\n\r\nclass DigesterV4 extends Digester<SchemaV4, EntityTypeV4, ComplexTypeV4> {\r\n constructor(\r\n schema: SchemaV4,\r\n options: DigestionOptions,\r\n namingHelper: NamingHelper,\r\n converters?: MappedConverterChains\r\n ) {\r\n super(ODataVersion.V4, schema, options, namingHelper, converters);\r\n }\r\n\r\n protected getNavigationProps(entityType: ComplexType | EntityTypeV4): Array<Property> {\r\n return (entityType as EntityTypeV4).NavigationProperty || [];\r\n }\r\n\r\n protected digestEntityContainer() {\r\n // functions & actions\r\n this.addOperations(this.schema.Function, OperationTypes.Function);\r\n this.addOperations(this.schema.Action, OperationTypes.Action);\r\n\r\n if (this.schema.EntityContainer && this.schema.EntityContainer.length) {\r\n const container = this.schema.EntityContainer[0];\r\n\r\n container.ActionImport?.forEach((actionImport) => {\r\n const name = this.namingHelper.getActionName(actionImport.$.Name);\r\n const operationName = this.namingHelper.getActionName(actionImport.$.Action);\r\n\r\n this.dataModel.addAction(name, {\r\n name: name,\r\n odataName: actionImport.$.Name,\r\n operation: this.getRootOperationType(operationName),\r\n });\r\n });\r\n\r\n container.FunctionImport?.forEach((funcImport) => {\r\n const name = this.namingHelper.getFunctionName(funcImport.$.Name);\r\n const operationName = this.namingHelper.getFunctionName(funcImport.$.Function);\r\n\r\n this.dataModel.addFunction(name, {\r\n name,\r\n odataName: funcImport.$.Name,\r\n operation: this.getRootOperationType(operationName),\r\n entitySet: funcImport.$.EntitySet,\r\n });\r\n });\r\n\r\n container.Singleton?.forEach((singleton) => {\r\n const name = singleton.$.Name;\r\n const navPropBindings = singleton.NavigationPropertyBinding || [];\r\n\r\n this.dataModel.addSingleton(name, {\r\n name,\r\n odataName: singleton.$.Name,\r\n entityType: this.dataModel.getModel(this.namingHelper.getModelName(singleton.$.Type)),\r\n navPropBinding: navPropBindings.map((binding) => ({\r\n path: this.namingHelper.stripServicePrefix(binding.$.Path),\r\n target: binding.$.Target,\r\n })),\r\n });\r\n });\r\n\r\n container.EntitySet?.forEach((entitySet) => {\r\n const name = entitySet.$.Name;\r\n const navPropBindings = entitySet.NavigationPropertyBinding || [];\r\n\r\n this.dataModel.addEntitySet(name, {\r\n name,\r\n odataName: entitySet.$.Name,\r\n entityType: this.dataModel.getModel(this.namingHelper.getModelName(entitySet.$.EntityType)),\r\n navPropBinding: navPropBindings.map((binding) => ({\r\n path: this.namingHelper.stripServicePrefix(binding.$.Path),\r\n target: binding.$.Target,\r\n })),\r\n });\r\n });\r\n }\r\n }\r\n\r\n protected mapODataType(type: string): TypeModel {\r\n switch (type) {\r\n case ODataTypesV4.Boolean:\r\n return {\r\n outputType: \"boolean\",\r\n qPath: \"QBooleanPath\",\r\n qCollection: \"QBooleanCollection\",\r\n qParam: \"QBooleanParam\",\r\n };\r\n case ODataTypesV4.Byte:\r\n case ODataTypesV4.SByte:\r\n case ODataTypesV4.Int16:\r\n case ODataTypesV4.Int32:\r\n case ODataTypesV4.Int64:\r\n case ODataTypesV4.Single:\r\n case ODataTypesV4.Double:\r\n case ODataTypesV4.Decimal:\r\n return {\r\n outputType: \"number\",\r\n qPath: \"QNumberPath\",\r\n qCollection: \"QNumberCollection\",\r\n qParam: \"QNumberParam\",\r\n };\r\n case ODataTypesV4.String:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QStringPath\",\r\n qCollection: \"QStringCollection\",\r\n qParam: \"QStringParam\",\r\n };\r\n case ODataTypesV4.Date:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QDatePath\",\r\n qCollection: \"QDateCollection\",\r\n qParam: \"QDateParam\",\r\n };\r\n case ODataTypesV4.TimeOfDay:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QTimeOfDayPath\",\r\n qCollection: \"QTimeOfDayCollection\",\r\n qParam: \"QTimeOfDayParam\",\r\n };\r\n case ODataTypesV4.DateTimeOffset:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QDateTimeOffsetPath\",\r\n qCollection: \"QDateTimeOffsetCollection\",\r\n qParam: \"QDateTimeOffsetParam\",\r\n };\r\n case ODataTypesV4.Binary:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QBinaryPath\",\r\n qCollection: \"QBinaryCollection\",\r\n qParam: undefined,\r\n };\r\n case ODataTypesV4.Guid:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QGuidPath\",\r\n qCollection: \"QGuidCollection\",\r\n qParam: \"QGuidParam\",\r\n };\r\n default:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QStringPath\",\r\n qCollection: \"QStringCollection\",\r\n qParam: undefined,\r\n };\r\n }\r\n }\r\n\r\n private addOperations(operations: Array<Operation> | undefined, type: OperationTypes) {\r\n if (!operations || !operations.length) {\r\n return;\r\n }\r\n\r\n operations.forEach((op) => {\r\n const params: Array<PropertyModel> = op.Parameter?.map(this.mapProp) ?? [];\r\n const returnType: PropertyModel | undefined = op.ReturnType?.map((rt) => {\r\n return this.mapProp({ ...rt, $: { Name: \"NO_NAME_BECAUSE_RETURN_TYPE\", ...rt.$ } });\r\n })[0];\r\n const isBound = op.$.IsBound === \"true\";\r\n\r\n if (isBound && !params.length) {\r\n throw new Error(`IllegalState: Operation '${op.$.Name}' is bound, but has no parameters!`);\r\n }\r\n\r\n const bindingProp = isBound ? params.shift() : undefined;\r\n const binding = bindingProp\r\n ? bindingProp.isCollection\r\n ? `Collection(${bindingProp.type})`\r\n : bindingProp.type\r\n : DigesterV4.ROOT_OPERATION;\r\n\r\n const name =\r\n type === OperationTypes.Function\r\n ? this.namingHelper.getFunctionName(op.$.Name)\r\n : this.namingHelper.getActionName(op.$.Name);\r\n const qName =\r\n type === OperationTypes.Function\r\n ? this.namingHelper.getQFunctionName(op.$.Name)\r\n : this.namingHelper.getQActionName(op.$.Name);\r\n this.dataModel.addOperationType(binding, {\r\n odataName: op.$.Name,\r\n name,\r\n qName,\r\n paramsModelName: this.namingHelper.getOperationParamsModelName(op.$.Name),\r\n type: type,\r\n parameters: params,\r\n returnType: returnType,\r\n });\r\n });\r\n }\r\n\r\n private getRootOperationType(name: string): OperationType {\r\n const rootOps = this.dataModel.getOperationTypeByBinding(DigesterV4.ROOT_OPERATION);\r\n const rootOp = rootOps.find((op) => op.name === name);\r\n if (!rootOp) {\r\n throw new Error(`Couldn't find root operation with name [${name}]`);\r\n }\r\n return rootOp;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"DataModelDigestionV4.js","sourceRoot":"","sources":["../../src/data-model/DataModelDigestionV4.ts"],"names":[],"mappings":"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","sourcesContent":["import { MappedConverterChains, loadConverters } from \"@odata2ts/converter-runtime\";\r\nimport { ODataTypesV4, ODataVersions } from \"@odata2ts/odata-core\";\r\n\r\nimport { DigesterFunction, DigestionOptions } from \"../FactoryFunctionModel\";\r\nimport { Digester, TypeModel } from \"./DataModelDigestion\";\r\nimport { ODataVersion, OperationType, OperationTypes, PropertyModel } from \"./DataTypeModel\";\r\nimport { ComplexType, Property } from \"./edmx/ODataEdmxModelBase\";\r\nimport { ComplexTypeV4, EntityTypeV4, Operation, SchemaV4 } from \"./edmx/ODataEdmxModelV4\";\r\nimport { NamingHelper } from \"./NamingHelper\";\r\n\r\nexport const digest: DigesterFunction<SchemaV4> = async (schemas, options, namingHelper) => {\r\n const converters = await loadConverters(ODataVersions.V2, options.converters);\r\n\r\n const digester = new DigesterV4(schemas, options, namingHelper, converters);\r\n return digester.digest();\r\n};\r\n\r\nclass DigesterV4 extends Digester<SchemaV4, EntityTypeV4, ComplexTypeV4> {\r\n constructor(\r\n schemas: Array<SchemaV4>,\r\n options: DigestionOptions,\r\n namingHelper: NamingHelper,\r\n converters?: MappedConverterChains\r\n ) {\r\n super(ODataVersion.V4, schemas, options, namingHelper, converters);\r\n }\r\n\r\n protected getNavigationProps(entityType: ComplexType | EntityTypeV4): Array<Property> {\r\n return (entityType as EntityTypeV4).NavigationProperty || [];\r\n }\r\n\r\n protected digestOperations(schema: SchemaV4) {\r\n // functions & actions\r\n this.addOperations(schema.Function, OperationTypes.Function);\r\n this.addOperations(schema.Action, OperationTypes.Action);\r\n }\r\n\r\n protected digestEntityContainer(schema: SchemaV4) {\r\n if (schema.EntityContainer && schema.EntityContainer.length) {\r\n const container = schema.EntityContainer[0];\r\n\r\n container.ActionImport?.forEach((actionImport) => {\r\n const name = this.namingHelper.getActionName(actionImport.$.Name);\r\n const operationName = this.namingHelper.getActionName(actionImport.$.Action);\r\n\r\n this.dataModel.addAction(name, {\r\n name: name,\r\n odataName: actionImport.$.Name,\r\n operation: this.getRootOperationType(operationName),\r\n });\r\n });\r\n\r\n container.FunctionImport?.forEach((funcImport) => {\r\n const name = this.namingHelper.getFunctionName(funcImport.$.Name);\r\n const operationName = this.namingHelper.getFunctionName(funcImport.$.Function);\r\n\r\n this.dataModel.addFunction(name, {\r\n name,\r\n odataName: funcImport.$.Name,\r\n operation: this.getRootOperationType(operationName),\r\n entitySet: funcImport.$.EntitySet,\r\n });\r\n });\r\n\r\n container.Singleton?.forEach((singleton) => {\r\n const name = singleton.$.Name;\r\n const navPropBindings = singleton.NavigationPropertyBinding || [];\r\n\r\n this.dataModel.addSingleton(name, {\r\n name,\r\n odataName: singleton.$.Name,\r\n entityType: this.dataModel.getModel(this.namingHelper.getModelName(singleton.$.Type)),\r\n navPropBinding: navPropBindings.map((binding) => ({\r\n path: this.namingHelper.stripServicePrefix(binding.$.Path),\r\n target: binding.$.Target,\r\n })),\r\n });\r\n });\r\n\r\n container.EntitySet?.forEach((entitySet) => {\r\n const name = entitySet.$.Name;\r\n const navPropBindings = entitySet.NavigationPropertyBinding || [];\r\n\r\n this.dataModel.addEntitySet(name, {\r\n name,\r\n odataName: entitySet.$.Name,\r\n entityType: this.dataModel.getModel(this.namingHelper.getModelName(entitySet.$.EntityType)),\r\n navPropBinding: navPropBindings.map((binding) => ({\r\n path: this.namingHelper.stripServicePrefix(binding.$.Path),\r\n target: binding.$.Target,\r\n })),\r\n });\r\n });\r\n }\r\n }\r\n\r\n protected mapODataType(type: string): TypeModel {\r\n switch (type) {\r\n case ODataTypesV4.Boolean:\r\n return {\r\n outputType: \"boolean\",\r\n qPath: \"QBooleanPath\",\r\n qCollection: \"QBooleanCollection\",\r\n qParam: \"QBooleanParam\",\r\n };\r\n case ODataTypesV4.Byte:\r\n case ODataTypesV4.SByte:\r\n case ODataTypesV4.Int16:\r\n case ODataTypesV4.Int32:\r\n case ODataTypesV4.Int64:\r\n case ODataTypesV4.Single:\r\n case ODataTypesV4.Double:\r\n case ODataTypesV4.Decimal:\r\n return {\r\n outputType: \"number\",\r\n qPath: \"QNumberPath\",\r\n qCollection: \"QNumberCollection\",\r\n qParam: \"QNumberParam\",\r\n };\r\n case ODataTypesV4.String:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QStringPath\",\r\n qCollection: \"QStringCollection\",\r\n qParam: \"QStringParam\",\r\n };\r\n case ODataTypesV4.Date:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QDatePath\",\r\n qCollection: \"QDateCollection\",\r\n qParam: \"QDateParam\",\r\n };\r\n case ODataTypesV4.TimeOfDay:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QTimeOfDayPath\",\r\n qCollection: \"QTimeOfDayCollection\",\r\n qParam: \"QTimeOfDayParam\",\r\n };\r\n case ODataTypesV4.DateTimeOffset:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QDateTimeOffsetPath\",\r\n qCollection: \"QDateTimeOffsetCollection\",\r\n qParam: \"QDateTimeOffsetParam\",\r\n };\r\n case ODataTypesV4.Binary:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QBinaryPath\",\r\n qCollection: \"QBinaryCollection\",\r\n qParam: undefined,\r\n };\r\n case ODataTypesV4.Guid:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QGuidPath\",\r\n qCollection: \"QGuidCollection\",\r\n qParam: \"QGuidParam\",\r\n };\r\n default:\r\n return {\r\n outputType: \"string\",\r\n qPath: \"QStringPath\",\r\n qCollection: \"QStringCollection\",\r\n qParam: undefined,\r\n };\r\n }\r\n }\r\n\r\n private addOperations(operations: Array<Operation> | undefined, type: OperationTypes) {\r\n if (!operations || !operations.length) {\r\n return;\r\n }\r\n\r\n operations.forEach((op) => {\r\n const params: Array<PropertyModel> = op.Parameter?.map(this.mapProp) ?? [];\r\n const returnType: PropertyModel | undefined = op.ReturnType?.map((rt) => {\r\n return this.mapProp({ ...rt, $: { Name: \"NO_NAME_BECAUSE_RETURN_TYPE\", ...rt.$ } });\r\n })[0];\r\n const isBound = op.$.IsBound === \"true\";\r\n\r\n if (isBound && !params.length) {\r\n throw new Error(`IllegalState: Operation '${op.$.Name}' is bound, but has no parameters!`);\r\n }\r\n\r\n const bindingProp = isBound ? params.shift() : undefined;\r\n const binding = bindingProp\r\n ? bindingProp.isCollection\r\n ? `Collection(${bindingProp.type})`\r\n : bindingProp.type\r\n : DigesterV4.ROOT_OPERATION;\r\n\r\n const name =\r\n type === OperationTypes.Function\r\n ? this.namingHelper.getFunctionName(op.$.Name)\r\n : this.namingHelper.getActionName(op.$.Name);\r\n const qName =\r\n type === OperationTypes.Function\r\n ? this.namingHelper.getQFunctionName(op.$.Name, bindingProp)\r\n : this.namingHelper.getQActionName(op.$.Name, bindingProp);\r\n this.dataModel.addOperationType(binding, {\r\n odataName: op.$.Name,\r\n name,\r\n qName,\r\n paramsModelName: this.namingHelper.getOperationParamsModelName(op.$.Name, bindingProp),\r\n type: type,\r\n parameters: params,\r\n returnType: returnType,\r\n });\r\n });\r\n }\r\n\r\n private getRootOperationType(name: string): OperationType {\r\n const rootOps = this.dataModel.getOperationTypeByBinding(DigesterV4.ROOT_OPERATION);\r\n const rootOp = rootOps.find((op) => op.name === name);\r\n if (!rootOp) {\r\n throw new Error(`Couldn't find root operation with name [${name}]`);\r\n }\r\n return rootOp;\r\n }\r\n}\r\n"]}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import { RunOptions } from "../OptionModel";
|
|
2
|
+
import { PropertyModel } from "./DataTypeModel";
|
|
2
3
|
export interface NamingHelperSettings extends Pick<RunOptions, "allowRenaming" | "naming"> {
|
|
3
4
|
}
|
|
4
5
|
export declare class NamingHelper {
|
|
5
6
|
private readonly allowModelPropRenaming;
|
|
6
|
-
private readonly
|
|
7
|
-
private readonly
|
|
7
|
+
private readonly mainServiceName;
|
|
8
|
+
private readonly servicePrefixes;
|
|
8
9
|
private readonly options;
|
|
9
|
-
constructor(options: NamingHelperSettings,
|
|
10
|
+
constructor(options: NamingHelperSettings, mainServiceName: string, serviceNames?: Array<string>);
|
|
10
11
|
/**
|
|
11
12
|
* The prefix used to reference model or enum types in this schema.
|
|
12
13
|
*
|
|
13
14
|
* @returns service prefix
|
|
14
15
|
*/
|
|
15
|
-
|
|
16
|
+
includesServicePrefix(name: string): boolean;
|
|
16
17
|
/**
|
|
17
18
|
* The OData service name as it was found and is used in metadata file.
|
|
18
19
|
*
|
|
@@ -39,17 +40,18 @@ export declare class NamingHelper {
|
|
|
39
40
|
getEnumName(name: string): string;
|
|
40
41
|
getEditableModelName(name: string): string;
|
|
41
42
|
getIdModelName(name: string): string;
|
|
42
|
-
getOperationParamsModelName(
|
|
43
|
+
getOperationParamsModelName(operationName: string, boundEntity?: PropertyModel | undefined): string;
|
|
43
44
|
getQName(name: string): string;
|
|
44
45
|
getQPropName(name: string): string;
|
|
45
46
|
getQIdFunctionName(name: string): string;
|
|
46
|
-
getQFunctionName(
|
|
47
|
-
getQActionName(
|
|
47
|
+
getQFunctionName(operationName: string, boundEntity?: PropertyModel | undefined): string;
|
|
48
|
+
getQActionName(operationName: string, boundEntity?: PropertyModel | undefined): string;
|
|
48
49
|
getMainServiceName(): string;
|
|
49
50
|
getServiceName: (name: string) => string;
|
|
50
51
|
getCollectionServiceName: (name: string) => string;
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
private getPrefixedName;
|
|
53
|
+
getFunctionName(operationName: string): string;
|
|
54
|
+
getActionName(operationName: string): string;
|
|
53
55
|
getRelatedServiceGetter(name: string): string;
|
|
54
56
|
getPrivatePropName: (name: string) => string;
|
|
55
57
|
}
|
|
@@ -24,7 +24,7 @@ const noopNamingFunction = (value, options) => {
|
|
|
24
24
|
return ((options === null || options === void 0 ? void 0 : options.prefix) || "") + value + ((options === null || options === void 0 ? void 0 : options.suffix) || "");
|
|
25
25
|
};
|
|
26
26
|
class NamingHelper {
|
|
27
|
-
constructor(options,
|
|
27
|
+
constructor(options, mainServiceName, serviceNames) {
|
|
28
28
|
var _a;
|
|
29
29
|
this.getServiceName = (name) => {
|
|
30
30
|
const opts = this.options.services;
|
|
@@ -45,21 +45,31 @@ class NamingHelper {
|
|
|
45
45
|
if (!options) {
|
|
46
46
|
throw new Error("NamingHelper: Options must be supplied!");
|
|
47
47
|
}
|
|
48
|
-
if (!(
|
|
49
|
-
throw new Error("NamingHelper:
|
|
48
|
+
if (!(mainServiceName === null || mainServiceName === void 0 ? void 0 : mainServiceName.trim())) {
|
|
49
|
+
throw new Error("NamingHelper: MainServiceName must be supplied!");
|
|
50
|
+
}
|
|
51
|
+
if (!(serviceNames === null || serviceNames === void 0 ? void 0 : serviceNames.length)) {
|
|
52
|
+
serviceNames = [mainServiceName];
|
|
50
53
|
}
|
|
51
54
|
this.allowModelPropRenaming = (_a = options.allowRenaming) !== null && _a !== void 0 ? _a : false;
|
|
52
|
-
this.options = options.naming
|
|
53
|
-
this.
|
|
54
|
-
this.
|
|
55
|
+
this.options = options.naming;
|
|
56
|
+
this.mainServiceName = mainServiceName;
|
|
57
|
+
this.servicePrefixes = serviceNames
|
|
58
|
+
.map((sn) => sn + ".")
|
|
59
|
+
.sort((a, b) => (a.length === b.length ? 0 : a.length > b.length ? -1 : 1));
|
|
55
60
|
}
|
|
56
61
|
/**
|
|
57
62
|
* The prefix used to reference model or enum types in this schema.
|
|
58
63
|
*
|
|
59
64
|
* @returns service prefix
|
|
60
65
|
*/
|
|
61
|
-
|
|
62
|
-
|
|
66
|
+
includesServicePrefix(name) {
|
|
67
|
+
for (let prefix of this.servicePrefixes) {
|
|
68
|
+
if (name.startsWith(prefix)) {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return false;
|
|
63
73
|
}
|
|
64
74
|
/**
|
|
65
75
|
* The OData service name as it was found and is used in metadata file.
|
|
@@ -67,7 +77,7 @@ class NamingHelper {
|
|
|
67
77
|
* @returns
|
|
68
78
|
*/
|
|
69
79
|
getODataServiceName() {
|
|
70
|
-
return this.
|
|
80
|
+
return this.mainServiceName;
|
|
71
81
|
}
|
|
72
82
|
getFileNames() {
|
|
73
83
|
var _a, _b;
|
|
@@ -78,14 +88,15 @@ class NamingHelper {
|
|
|
78
88
|
};
|
|
79
89
|
}
|
|
80
90
|
getFileName(opts) {
|
|
81
|
-
return this.getName(this.
|
|
91
|
+
return this.getName(this.mainServiceName, this.namingFunction(opts === null || opts === void 0 ? void 0 : opts.namingStrategy), opts);
|
|
82
92
|
}
|
|
83
93
|
getFileNameService(name) {
|
|
84
94
|
const opts = this.options.services;
|
|
85
95
|
return this.getName(name, this.namingFunction(opts === null || opts === void 0 ? void 0 : opts.namingStrategy), opts);
|
|
86
96
|
}
|
|
87
97
|
stripServicePrefix(token) {
|
|
88
|
-
|
|
98
|
+
const found = this.servicePrefixes.find((prefix) => token.startsWith(prefix));
|
|
99
|
+
return found ? token.replace(found, "") : token;
|
|
89
100
|
}
|
|
90
101
|
namingFunction(strategy) {
|
|
91
102
|
const strategyFn = getNamingStrategyImpl(strategy);
|
|
@@ -155,13 +166,14 @@ class NamingHelper {
|
|
|
155
166
|
? this.getName(result, this.getModelNamingStrategy(), this.options.models)
|
|
156
167
|
: result;
|
|
157
168
|
}
|
|
158
|
-
getOperationParamsModelName(
|
|
169
|
+
getOperationParamsModelName(operationName, boundEntity) {
|
|
159
170
|
var _a;
|
|
160
171
|
const settings = (_a = this.options.models) === null || _a === void 0 ? void 0 : _a.operationParamModels;
|
|
161
|
-
const result = this.getName(
|
|
162
|
-
|
|
172
|
+
const result = this.getName(operationName, this.getModelNamingStrategy(), settings);
|
|
173
|
+
const name = (settings === null || settings === void 0 ? void 0 : settings.applyModelNaming)
|
|
163
174
|
? this.getName(result, this.getModelNamingStrategy(), this.options.models)
|
|
164
175
|
: result;
|
|
176
|
+
return this.getPrefixedName(name, boundEntity);
|
|
165
177
|
}
|
|
166
178
|
getQName(name) {
|
|
167
179
|
return this.getName(name, this.getQObjectNamingStrategy(), this.options.queryObjects);
|
|
@@ -175,17 +187,19 @@ class NamingHelper {
|
|
|
175
187
|
const result = this.getName(name, this.getQObjectNamingStrategy(), opts);
|
|
176
188
|
return this.getName(result, this.getQObjectNamingStrategy(), this.options.queryObjects);
|
|
177
189
|
}
|
|
178
|
-
getQFunctionName(
|
|
190
|
+
getQFunctionName(operationName, boundEntity) {
|
|
179
191
|
var _a;
|
|
180
192
|
const opts = (_a = this.options.queryObjects) === null || _a === void 0 ? void 0 : _a.operations;
|
|
181
|
-
const result = this.getName(
|
|
182
|
-
|
|
193
|
+
const result = this.getName(operationName, this.getQObjectNamingStrategy(), (opts === null || opts === void 0 ? void 0 : opts.function) || opts);
|
|
194
|
+
const name = this.getName(result, this.getQObjectNamingStrategy(), this.options.queryObjects);
|
|
195
|
+
return this.getPrefixedName(name, boundEntity);
|
|
183
196
|
}
|
|
184
|
-
getQActionName(
|
|
197
|
+
getQActionName(operationName, boundEntity) {
|
|
185
198
|
var _a;
|
|
186
199
|
const opts = (_a = this.options.queryObjects) === null || _a === void 0 ? void 0 : _a.operations;
|
|
187
|
-
const result = this.getName(
|
|
188
|
-
|
|
200
|
+
const result = this.getName(operationName, this.getQObjectNamingStrategy(), (opts === null || opts === void 0 ? void 0 : opts.action) || opts);
|
|
201
|
+
const name = this.getName(result, this.getQObjectNamingStrategy(), this.options.queryObjects);
|
|
202
|
+
return this.getPrefixedName(name, boundEntity);
|
|
189
203
|
}
|
|
190
204
|
getMainServiceName() {
|
|
191
205
|
var _a, _b, _c, _d;
|
|
@@ -195,15 +209,18 @@ class NamingHelper {
|
|
|
195
209
|
const result = this.getName(name, strategy, opts === null || opts === void 0 ? void 0 : opts.main);
|
|
196
210
|
return ((_d = opts === null || opts === void 0 ? void 0 : opts.main) === null || _d === void 0 ? void 0 : _d.applyServiceNaming) ? this.getName(result, strategy, opts) : result;
|
|
197
211
|
}
|
|
198
|
-
|
|
212
|
+
getPrefixedName(name, boundEntity) {
|
|
213
|
+
return (boundEntity === null || boundEntity === void 0 ? void 0 : boundEntity.type) ? boundEntity.type + "_" + name : name;
|
|
214
|
+
}
|
|
215
|
+
getFunctionName(operationName) {
|
|
199
216
|
var _a;
|
|
200
217
|
const opts = (_a = this.options.services) === null || _a === void 0 ? void 0 : _a.operations;
|
|
201
|
-
return this.getName(
|
|
218
|
+
return this.getName(operationName, this.getOperationNamingStrategy(), (opts === null || opts === void 0 ? void 0 : opts.function) || opts);
|
|
202
219
|
}
|
|
203
|
-
getActionName(
|
|
220
|
+
getActionName(operationName) {
|
|
204
221
|
var _a;
|
|
205
222
|
const opts = (_a = this.options.services) === null || _a === void 0 ? void 0 : _a.operations;
|
|
206
|
-
return this.getName(
|
|
223
|
+
return this.getName(operationName, this.getOperationNamingStrategy(), (opts === null || opts === void 0 ? void 0 : opts.action) || opts);
|
|
207
224
|
}
|
|
208
225
|
getRelatedServiceGetter(name) {
|
|
209
226
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NamingHelper.js","sourceRoot":"","sources":["../../src/data-model/NamingHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { camelCase } from \"camel-case\";\r\nimport { constantCase } from \"constant-case\";\r\nimport { pascalCase } from \"pascal-case\";\r\nimport { snakeCase } from \"snake-case\";\r\n\r\nimport { FileNamingStrategyOption, NameSettings, NamingStrategies, StandardNamingOptions } from \"../NamingModel\";\r\nimport { RunOptions } from \"../OptionModel\";\r\n\r\nfunction getNamingStrategyImpl(strategy: NamingStrategies | undefined) {\r\n switch (strategy) {\r\n case NamingStrategies.CAMEL_CASE:\r\n return camelCase;\r\n case NamingStrategies.PASCAL_CASE:\r\n return pascalCase;\r\n case NamingStrategies.CONSTANT_CASE:\r\n return constantCase;\r\n case NamingStrategies.SNAKE_CASE:\r\n return snakeCase;\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\nconst noopNamingFunction = (value: string, options?: StandardNamingOptions) => {\r\n return (options?.prefix || \"\") + value + (options?.suffix || \"\");\r\n};\r\n\r\nexport interface NamingHelperSettings extends Pick<RunOptions, \"allowRenaming\" | \"naming\"> {}\r\n\r\nexport class NamingHelper {\r\n private readonly allowModelPropRenaming: boolean;\r\n private readonly serviceName: string;\r\n private readonly servicePrefix: string;\r\n private readonly options: NameSettings;\r\n\r\n constructor(options: NamingHelperSettings, serviceName: string, overridingServiceName?: string) {\r\n if (!options) {\r\n throw new Error(\"NamingHelper: Options must be supplied!\");\r\n }\r\n if (!serviceName?.trim()) {\r\n throw new Error(\"NamingHelper: ServicePrefix must be supplied!\");\r\n }\r\n\r\n this.allowModelPropRenaming = options.allowRenaming ?? false;\r\n this.options = options.naming || {};\r\n this.servicePrefix = serviceName + \".\";\r\n this.serviceName = overridingServiceName || serviceName;\r\n }\r\n\r\n /**\r\n * The prefix used to reference model or enum types in this schema.\r\n *\r\n * @returns service prefix\r\n */\r\n public getServicePrefix() {\r\n return this.servicePrefix;\r\n }\r\n\r\n /**\r\n * The OData service name as it was found and is used in metadata file.\r\n *\r\n * @returns\r\n */\r\n public getODataServiceName() {\r\n return this.serviceName;\r\n }\r\n\r\n public getFileNames() {\r\n return {\r\n model: this.getFileName(this.options.models?.fileName),\r\n qObject: this.getFileName(this.options.queryObjects?.fileName),\r\n service: this.getMainServiceName(),\r\n };\r\n }\r\n\r\n private getFileName(opts?: FileNamingStrategyOption & StandardNamingOptions) {\r\n return this.getName(this.serviceName, this.namingFunction(opts?.namingStrategy), opts);\r\n }\r\n\r\n public getFileNameService(name: string) {\r\n const opts = this.options.services;\r\n return this.getName(name, this.namingFunction(opts?.namingStrategy), opts);\r\n }\r\n\r\n public stripServicePrefix(token: string) {\r\n return token.replace(this.servicePrefix, \"\");\r\n }\r\n\r\n private namingFunction(strategy: NamingStrategies | undefined) {\r\n const strategyFn = getNamingStrategyImpl(strategy);\r\n if (!strategyFn || !this.allowModelPropRenaming) {\r\n return noopNamingFunction;\r\n }\r\n\r\n return (value: string, options?: StandardNamingOptions) => {\r\n const prefix = options?.prefix;\r\n const suffix = options?.suffix;\r\n const isPrefixSpecialChar = prefix?.startsWith(\"_\");\r\n const isSuffixSpecialChar = suffix?.endsWith(\"_\");\r\n\r\n let result = strategyFn((prefix ? prefix + \"_\" : \"\") + value + (suffix ? \"_\" + suffix : \"\"));\r\n if (isPrefixSpecialChar) {\r\n result = \"_\" + result;\r\n }\r\n if (isSuffixSpecialChar) {\r\n result = result + \"_\";\r\n }\r\n return result;\r\n };\r\n }\r\n\r\n private getName(\r\n name: string,\r\n strategy: (value: string, options?: StandardNamingOptions) => string,\r\n options?: StandardNamingOptions\r\n ) {\r\n return strategy(this.stripServicePrefix(name), options);\r\n }\r\n\r\n private getModelNamingStrategy() {\r\n return this.namingFunction(this.options.models?.namingStrategy);\r\n }\r\n\r\n private getModelPropNamingStrategy() {\r\n return this.namingFunction(this.options.models?.propNamingStrategy);\r\n }\r\n\r\n private getQObjectNamingStrategy() {\r\n return this.namingFunction(this.options.queryObjects?.namingStrategy);\r\n }\r\n\r\n private getQObjectPropNamingStrategy() {\r\n return this.namingFunction(this.options.queryObjects?.propNamingStrategy);\r\n }\r\n\r\n private getOperationNamingStrategy() {\r\n return this.namingFunction(this.options.services?.operations?.namingStrategy);\r\n }\r\n\r\n public getModelName(name: string): string {\r\n return this.getName(name, this.getModelNamingStrategy(), this.options.models);\r\n }\r\n\r\n public getModelPropName(name: string): string {\r\n return this.getName(name, this.getModelPropNamingStrategy());\r\n }\r\n\r\n public getEnumName(name: string) {\r\n return this.getName(name, this.getModelNamingStrategy(), this.options.models);\r\n }\r\n\r\n public getEditableModelName(name: string) {\r\n let options = this.options.models?.editableModels;\r\n const result = this.getName(name, this.getModelNamingStrategy(), options);\r\n return options?.applyModelNaming\r\n ? this.getName(result, this.getModelNamingStrategy(), this.options.models)\r\n : result;\r\n }\r\n\r\n public getIdModelName(name: string) {\r\n let options = this.options.models?.idModels;\r\n const result = this.getName(name, this.getModelNamingStrategy(), options);\r\n return options?.applyModelNaming\r\n ? this.getName(result, this.getModelNamingStrategy(), this.options.models)\r\n : result;\r\n }\r\n\r\n public getOperationParamsModelName(name: string) {\r\n const settings = this.options.models?.operationParamModels;\r\n const result = this.getName(name, this.getModelNamingStrategy(), settings);\r\n return settings?.applyModelNaming\r\n ? this.getName(result, this.getModelNamingStrategy(), this.options.models)\r\n : result;\r\n }\r\n\r\n public getQName(name: string) {\r\n return this.getName(name, this.getQObjectNamingStrategy(), this.options.queryObjects);\r\n }\r\n\r\n public getQPropName(name: string): string {\r\n return this.getName(name, this.getQObjectPropNamingStrategy());\r\n }\r\n\r\n public getQIdFunctionName(name: string) {\r\n const opts = this.options.queryObjects?.idFunctions;\r\n const result = this.getName(name, this.getQObjectNamingStrategy(), opts);\r\n return this.getName(result, this.getQObjectNamingStrategy(), this.options.queryObjects);\r\n }\r\n\r\n public getQFunctionName(name: string) {\r\n const opts = this.options.queryObjects?.operations;\r\n const result = this.getName(name, this.getQObjectNamingStrategy(), opts?.function || opts);\r\n return this.getName(result, this.getQObjectNamingStrategy(), this.options.queryObjects);\r\n }\r\n\r\n public getQActionName(name: string) {\r\n const opts = this.options.queryObjects?.operations;\r\n const result = this.getName(name, this.getQObjectNamingStrategy(), opts?.action || opts);\r\n return this.getName(result, this.getQObjectNamingStrategy(), this.options.queryObjects);\r\n }\r\n\r\n public getMainServiceName() {\r\n const name = this.getODataServiceName();\r\n const opts = this.options.services;\r\n const strategy = this.namingFunction(\r\n opts?.main?.namingStrategy ?? (opts?.main?.applyServiceNaming ? opts.namingStrategy : undefined)\r\n );\r\n const result = this.getName(name, strategy, opts?.main);\r\n return opts?.main?.applyServiceNaming ? this.getName(result, strategy, opts) : result;\r\n }\r\n\r\n public getServiceName = (name: string) => {\r\n const opts = this.options.services;\r\n return this.getName(name, this.namingFunction(opts?.namingStrategy), opts);\r\n };\r\n\r\n public getCollectionServiceName = (name: string) => {\r\n const opts = this.options.services;\r\n const strategy = this.namingFunction(opts?.namingStrategy);\r\n const result = this.getName(name, strategy, opts?.collection);\r\n return opts?.collection?.applyServiceNaming ? this.getName(result, strategy, opts) : result;\r\n };\r\n\r\n public getFunctionName(name: string) {\r\n const opts = this.options.services?.operations;\r\n return this.getName(name, this.getOperationNamingStrategy(), opts?.function || opts);\r\n }\r\n\r\n public getActionName(name: string) {\r\n const opts = this.options.services?.operations;\r\n return this.getName(name, this.getOperationNamingStrategy(), opts?.action || opts);\r\n }\r\n\r\n public getRelatedServiceGetter(name: string) {\r\n const opts = this.options.services?.relatedServiceGetter;\r\n return this.getName(name, this.namingFunction(opts?.namingStrategy), opts);\r\n }\r\n\r\n public getPrivatePropName = (name: string) => {\r\n const opts = this.options.services?.privateProps;\r\n return this.getName(name, this.namingFunction(opts?.namingStrategy), opts);\r\n };\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"NamingHelper.js","sourceRoot":"","sources":["../../src/data-model/NamingHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { camelCase } from \"camel-case\";\r\nimport { constantCase } from \"constant-case\";\r\nimport { pascalCase } from \"pascal-case\";\r\nimport { snakeCase } from \"snake-case\";\r\n\r\nimport { FileNamingStrategyOption, NameSettings, NamingStrategies, StandardNamingOptions } from \"../NamingModel\";\r\nimport { RunOptions } from \"../OptionModel\";\r\nimport { PropertyModel } from \"./DataTypeModel\";\r\n\r\nfunction getNamingStrategyImpl(strategy: NamingStrategies | undefined) {\r\n switch (strategy) {\r\n case NamingStrategies.CAMEL_CASE:\r\n return camelCase;\r\n case NamingStrategies.PASCAL_CASE:\r\n return pascalCase;\r\n case NamingStrategies.CONSTANT_CASE:\r\n return constantCase;\r\n case NamingStrategies.SNAKE_CASE:\r\n return snakeCase;\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\nconst noopNamingFunction = (value: string, options?: StandardNamingOptions) => {\r\n return (options?.prefix || \"\") + value + (options?.suffix || \"\");\r\n};\r\n\r\nexport interface NamingHelperSettings extends Pick<RunOptions, \"allowRenaming\" | \"naming\"> {}\r\n\r\nexport class NamingHelper {\r\n private readonly allowModelPropRenaming: boolean;\r\n private readonly mainServiceName: string;\r\n private readonly servicePrefixes: Array<string>;\r\n private readonly options: NameSettings;\r\n\r\n constructor(options: NamingHelperSettings, mainServiceName: string, serviceNames?: Array<string>) {\r\n if (!options) {\r\n throw new Error(\"NamingHelper: Options must be supplied!\");\r\n }\r\n if (!mainServiceName?.trim()) {\r\n throw new Error(\"NamingHelper: MainServiceName must be supplied!\");\r\n }\r\n\r\n if (!serviceNames?.length) {\r\n serviceNames = [mainServiceName];\r\n }\r\n\r\n this.allowModelPropRenaming = options.allowRenaming ?? false;\r\n this.options = options.naming;\r\n this.mainServiceName = mainServiceName;\r\n this.servicePrefixes = serviceNames\r\n .map((sn) => sn + \".\")\r\n .sort((a, b) => (a.length === b.length ? 0 : a.length > b.length ? -1 : 1));\r\n }\r\n\r\n /**\r\n * The prefix used to reference model or enum types in this schema.\r\n *\r\n * @returns service prefix\r\n */\r\n public includesServicePrefix(name: string) {\r\n for (let prefix of this.servicePrefixes) {\r\n if (name.startsWith(prefix)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * The OData service name as it was found and is used in metadata file.\r\n *\r\n * @returns\r\n */\r\n public getODataServiceName() {\r\n return this.mainServiceName;\r\n }\r\n\r\n public getFileNames() {\r\n return {\r\n model: this.getFileName(this.options.models?.fileName),\r\n qObject: this.getFileName(this.options.queryObjects?.fileName),\r\n service: this.getMainServiceName(),\r\n };\r\n }\r\n\r\n private getFileName(opts?: FileNamingStrategyOption & StandardNamingOptions) {\r\n return this.getName(this.mainServiceName, this.namingFunction(opts?.namingStrategy), opts);\r\n }\r\n\r\n public getFileNameService(name: string) {\r\n const opts = this.options.services;\r\n return this.getName(name, this.namingFunction(opts?.namingStrategy), opts);\r\n }\r\n\r\n public stripServicePrefix(token: string) {\r\n const found = this.servicePrefixes.find((prefix) => token.startsWith(prefix));\r\n return found ? token.replace(found, \"\") : token;\r\n }\r\n\r\n private namingFunction(strategy: NamingStrategies | undefined) {\r\n const strategyFn = getNamingStrategyImpl(strategy);\r\n if (!strategyFn || !this.allowModelPropRenaming) {\r\n return noopNamingFunction;\r\n }\r\n\r\n return (value: string, options?: StandardNamingOptions) => {\r\n const prefix = options?.prefix;\r\n const suffix = options?.suffix;\r\n const isPrefixSpecialChar = prefix?.startsWith(\"_\");\r\n const isSuffixSpecialChar = suffix?.endsWith(\"_\");\r\n\r\n let result = strategyFn((prefix ? prefix + \"_\" : \"\") + value + (suffix ? \"_\" + suffix : \"\"));\r\n if (isPrefixSpecialChar) {\r\n result = \"_\" + result;\r\n }\r\n if (isSuffixSpecialChar) {\r\n result = result + \"_\";\r\n }\r\n return result;\r\n };\r\n }\r\n\r\n private getName(\r\n name: string,\r\n strategy: (value: string, options?: StandardNamingOptions) => string,\r\n options?: StandardNamingOptions\r\n ) {\r\n return strategy(this.stripServicePrefix(name), options);\r\n }\r\n\r\n private getModelNamingStrategy() {\r\n return this.namingFunction(this.options.models?.namingStrategy);\r\n }\r\n\r\n private getModelPropNamingStrategy() {\r\n return this.namingFunction(this.options.models?.propNamingStrategy);\r\n }\r\n\r\n private getQObjectNamingStrategy() {\r\n return this.namingFunction(this.options.queryObjects?.namingStrategy);\r\n }\r\n\r\n private getQObjectPropNamingStrategy() {\r\n return this.namingFunction(this.options.queryObjects?.propNamingStrategy);\r\n }\r\n\r\n private getOperationNamingStrategy() {\r\n return this.namingFunction(this.options.services?.operations?.namingStrategy);\r\n }\r\n\r\n public getModelName(name: string): string {\r\n return this.getName(name, this.getModelNamingStrategy(), this.options.models);\r\n }\r\n\r\n public getModelPropName(name: string): string {\r\n return this.getName(name, this.getModelPropNamingStrategy());\r\n }\r\n\r\n public getEnumName(name: string) {\r\n return this.getName(name, this.getModelNamingStrategy(), this.options.models);\r\n }\r\n\r\n public getEditableModelName(name: string) {\r\n let options = this.options.models?.editableModels;\r\n const result = this.getName(name, this.getModelNamingStrategy(), options);\r\n return options?.applyModelNaming\r\n ? this.getName(result, this.getModelNamingStrategy(), this.options.models)\r\n : result;\r\n }\r\n\r\n public getIdModelName(name: string) {\r\n let options = this.options.models?.idModels;\r\n const result = this.getName(name, this.getModelNamingStrategy(), options);\r\n return options?.applyModelNaming\r\n ? this.getName(result, this.getModelNamingStrategy(), this.options.models)\r\n : result;\r\n }\r\n\r\n public getOperationParamsModelName(operationName: string, boundEntity?: PropertyModel | undefined) {\r\n const settings = this.options.models?.operationParamModels;\r\n const result = this.getName(operationName, this.getModelNamingStrategy(), settings);\r\n const name = settings?.applyModelNaming\r\n ? this.getName(result, this.getModelNamingStrategy(), this.options.models)\r\n : result;\r\n return this.getPrefixedName(name, boundEntity);\r\n }\r\n\r\n public getQName(name: string) {\r\n return this.getName(name, this.getQObjectNamingStrategy(), this.options.queryObjects);\r\n }\r\n\r\n public getQPropName(name: string): string {\r\n return this.getName(name, this.getQObjectPropNamingStrategy());\r\n }\r\n\r\n public getQIdFunctionName(name: string) {\r\n const opts = this.options.queryObjects?.idFunctions;\r\n const result = this.getName(name, this.getQObjectNamingStrategy(), opts);\r\n return this.getName(result, this.getQObjectNamingStrategy(), this.options.queryObjects);\r\n }\r\n\r\n public getQFunctionName(operationName: string, boundEntity?: PropertyModel | undefined) {\r\n const opts = this.options.queryObjects?.operations;\r\n const result = this.getName(operationName, this.getQObjectNamingStrategy(), opts?.function || opts);\r\n const name = this.getName(result, this.getQObjectNamingStrategy(), this.options.queryObjects);\r\n return this.getPrefixedName(name, boundEntity);\r\n }\r\n\r\n public getQActionName(operationName: string, boundEntity?: PropertyModel | undefined) {\r\n const opts = this.options.queryObjects?.operations;\r\n const result = this.getName(operationName, this.getQObjectNamingStrategy(), opts?.action || opts);\r\n const name = this.getName(result, this.getQObjectNamingStrategy(), this.options.queryObjects);\r\n return this.getPrefixedName(name, boundEntity);\r\n }\r\n\r\n public getMainServiceName() {\r\n const name = this.getODataServiceName();\r\n const opts = this.options.services;\r\n const strategy = this.namingFunction(\r\n opts?.main?.namingStrategy ?? (opts?.main?.applyServiceNaming ? opts.namingStrategy : undefined)\r\n );\r\n const result = this.getName(name, strategy, opts?.main);\r\n return opts?.main?.applyServiceNaming ? this.getName(result, strategy, opts) : result;\r\n }\r\n\r\n public getServiceName = (name: string) => {\r\n const opts = this.options.services;\r\n return this.getName(name, this.namingFunction(opts?.namingStrategy), opts);\r\n };\r\n\r\n public getCollectionServiceName = (name: string) => {\r\n const opts = this.options.services;\r\n const strategy = this.namingFunction(opts?.namingStrategy);\r\n const result = this.getName(name, strategy, opts?.collection);\r\n return opts?.collection?.applyServiceNaming ? this.getName(result, strategy, opts) : result;\r\n };\r\n\r\n private getPrefixedName(name: string, boundEntity: PropertyModel | undefined) {\r\n return boundEntity?.type ? boundEntity.type + \"_\" + name : name;\r\n }\r\n\r\n public getFunctionName(operationName: string) {\r\n const opts = this.options.services?.operations;\r\n return this.getName(operationName, this.getOperationNamingStrategy(), opts?.function || opts);\r\n }\r\n\r\n public getActionName(operationName: string) {\r\n const opts = this.options.services?.operations;\r\n return this.getName(operationName, this.getOperationNamingStrategy(), opts?.action || opts);\r\n }\r\n\r\n public getRelatedServiceGetter(name: string) {\r\n const opts = this.options.services?.relatedServiceGetter;\r\n return this.getName(name, this.namingFunction(opts?.namingStrategy), opts);\r\n }\r\n\r\n public getPrivatePropName = (name: string) => {\r\n const opts = this.options.services?.privateProps;\r\n return this.getName(name, this.namingFunction(opts?.namingStrategy), opts);\r\n };\r\n}\r\n"]}
|
|
@@ -14,11 +14,13 @@ export interface Schema<ET extends EntityType, CT extends ComplexType> {
|
|
|
14
14
|
$: {
|
|
15
15
|
Namespace: string;
|
|
16
16
|
xmlns: string;
|
|
17
|
+
Alias?: string;
|
|
17
18
|
};
|
|
18
19
|
EntityType?: Array<ET>;
|
|
19
20
|
ComplexType?: Array<CT>;
|
|
20
21
|
EnumType?: Array<EnumType>;
|
|
21
22
|
EntityContainer?: Array<any>;
|
|
23
|
+
TypeDefinition?: Array<TypeDefinition>;
|
|
22
24
|
}
|
|
23
25
|
export interface EntityContainer<ES = EntitySet> {
|
|
24
26
|
$: {
|
|
@@ -53,9 +55,10 @@ export interface Property {
|
|
|
53
55
|
$: {
|
|
54
56
|
Name: string;
|
|
55
57
|
Type: string;
|
|
56
|
-
MaxLength?: number;
|
|
57
58
|
Nullable?: "true" | "false";
|
|
59
|
+
MaxLength?: number;
|
|
58
60
|
Precision?: number;
|
|
61
|
+
Scale?: number;
|
|
59
62
|
};
|
|
60
63
|
}
|
|
61
64
|
export interface EnumType {
|
|
@@ -78,3 +81,12 @@ export interface ReturnType {
|
|
|
78
81
|
Type: string;
|
|
79
82
|
};
|
|
80
83
|
}
|
|
84
|
+
export interface TypeDefinition {
|
|
85
|
+
$: {
|
|
86
|
+
Name: string;
|
|
87
|
+
UnderlyingType: string;
|
|
88
|
+
MaxLength?: number;
|
|
89
|
+
Precision?: number;
|
|
90
|
+
Scale?: number;
|
|
91
|
+
};
|
|
92
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ODataEdmxModelBase.js","sourceRoot":"","sources":["../../../src/data-model/edmx/ODataEdmxModelBase.ts"],"names":[],"mappings":"","sourcesContent":["export interface ODataEdmxModelBase<VersionedSchema> {\r\n \"edmx:Edmx\": {\r\n $: {\r\n Version: string;\r\n \"xmlns:edmx\": string;\r\n };\r\n // \"edmx:Reference\": Array<any>;\r\n \"edmx:DataServices\": Array<DataService<VersionedSchema>>;\r\n };\r\n}\r\n\r\nexport interface DataService<VersionedSchema> {\r\n Schema: Array<VersionedSchema>;\r\n}\r\n\r\nexport interface Schema<ET extends EntityType, CT extends ComplexType> {\r\n $: {\r\n Namespace: string;\r\n xmlns: string;\r\n };\r\n EntityType?: Array<ET>;\r\n ComplexType?: Array<CT>;\r\n EnumType?: Array<EnumType>;\r\n EntityContainer?: Array<any>;\r\n}\r\n\r\nexport interface EntityContainer<ES = EntitySet> {\r\n $: {\r\n Name: string;\r\n };\r\n EntitySet?: Array<ES>;\r\n}\r\n\r\nexport interface EntitySet {\r\n $: {\r\n Name: string;\r\n EntityType: string;\r\n };\r\n}\r\n\r\nexport interface EntityType {\r\n $: {\r\n Name: string;\r\n BaseType?: string;\r\n };\r\n Key: Array<PropertyRef>;\r\n Property: Array<Property>;\r\n}\r\n\r\nexport interface ComplexType extends Omit<EntityType, \"Key\"> {}\r\n\r\nexport interface PropertyRef {\r\n PropertyRef: Array<{ $: { Name: string } }>;\r\n}\r\n\r\nexport interface Property {\r\n $: {\r\n Name: string;\r\n Type: string;\r\n
|
|
1
|
+
{"version":3,"file":"ODataEdmxModelBase.js","sourceRoot":"","sources":["../../../src/data-model/edmx/ODataEdmxModelBase.ts"],"names":[],"mappings":"","sourcesContent":["export interface ODataEdmxModelBase<VersionedSchema> {\r\n \"edmx:Edmx\": {\r\n $: {\r\n Version: string;\r\n \"xmlns:edmx\": string;\r\n };\r\n // \"edmx:Reference\": Array<any>;\r\n \"edmx:DataServices\": Array<DataService<VersionedSchema>>;\r\n };\r\n}\r\n\r\nexport interface DataService<VersionedSchema> {\r\n Schema: Array<VersionedSchema>;\r\n}\r\n\r\nexport interface Schema<ET extends EntityType, CT extends ComplexType> {\r\n $: {\r\n Namespace: string;\r\n xmlns: string;\r\n Alias?: string;\r\n };\r\n EntityType?: Array<ET>;\r\n ComplexType?: Array<CT>;\r\n EnumType?: Array<EnumType>;\r\n EntityContainer?: Array<any>;\r\n TypeDefinition?: Array<TypeDefinition>;\r\n}\r\n\r\nexport interface EntityContainer<ES = EntitySet> {\r\n $: {\r\n Name: string;\r\n };\r\n EntitySet?: Array<ES>;\r\n}\r\n\r\nexport interface EntitySet {\r\n $: {\r\n Name: string;\r\n EntityType: string;\r\n };\r\n}\r\n\r\nexport interface EntityType {\r\n $: {\r\n Name: string;\r\n BaseType?: string;\r\n };\r\n Key: Array<PropertyRef>;\r\n Property: Array<Property>;\r\n}\r\n\r\nexport interface ComplexType extends Omit<EntityType, \"Key\"> {}\r\n\r\nexport interface PropertyRef {\r\n PropertyRef: Array<{ $: { Name: string } }>;\r\n}\r\n\r\nexport interface Property {\r\n $: {\r\n Name: string;\r\n Type: string;\r\n Nullable?: \"true\" | \"false\";\r\n MaxLength?: number;\r\n Precision?: number;\r\n Scale?: number;\r\n };\r\n}\r\n\r\nexport interface EnumType {\r\n $: {\r\n Name: string;\r\n };\r\n Member: Array<Member>;\r\n}\r\n\r\nexport interface Member {\r\n $: {\r\n Name: string;\r\n Value: number;\r\n };\r\n}\r\n\r\nexport interface Parameter extends Property {\r\n Unicode?: boolean;\r\n}\r\n\r\nexport interface ReturnType {\r\n $: {\r\n Type: string;\r\n };\r\n}\r\n\r\nexport interface TypeDefinition {\r\n $: {\r\n Name: string;\r\n UnderlyingType: string;\r\n MaxLength?: number;\r\n Precision?: number;\r\n Scale?: number;\r\n };\r\n}\r\n"]}
|
|
@@ -21,7 +21,7 @@ function createProjectManager(projectFiles, outputDir, emitMode, usePrettier, ts
|
|
|
21
21
|
importsNotUsedAsValues, // type is missing
|
|
22
22
|
jsx, plugins,
|
|
23
23
|
// mapped props
|
|
24
|
-
moduleResolution, lib, module, newLine, target } = _a, passThrough = tslib_1.__rest(_a, ["noEmit", "importsNotUsedAsValues", "jsx", "plugins", "moduleResolution", "lib", "module", "newLine", "target"]);
|
|
24
|
+
moduleResolution, lib, module, newLine, target, rootDir, rootDirs } = _a, passThrough = tslib_1.__rest(_a, ["noEmit", "importsNotUsedAsValues", "jsx", "plugins", "moduleResolution", "lib", "module", "newLine", "target", "rootDir", "rootDirs"]);
|
|
25
25
|
const compilerOpts = Object.assign(Object.assign({}, passThrough), { outDir: outputDir, declaration: generateDeclarations, moduleResolution: getModuleResolutionKind(moduleResolution), module: getModuleKind(module), target: getTarget(target), lib: lib, newLine: (newLine === null || newLine === void 0 ? void 0 : newLine.toLowerCase()) === "crlf"
|
|
26
26
|
? ts_morph_1.NewLineKind.CarriageReturnLineFeed
|
|
27
27
|
: (newLine === null || newLine === void 0 ? void 0 : newLine.toLowerCase()) === "lf"
|