@odata2ts/odata2ts 0.39.1 → 0.39.2
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/LICENSE +21 -21
- package/README.md +81 -81
- package/lib/FactoryFunctionModel.js.map +1 -1
- package/lib/NamingModel.js.map +1 -1
- package/lib/OptionModel.js.map +1 -1
- package/lib/TypeModel.js.map +1 -1
- package/lib/app.js.map +1 -1
- package/lib/cli/cli.js.map +1 -1
- package/lib/cli/index.js.map +1 -1
- package/lib/cli/processCliArgs.js.map +1 -1
- package/lib/cli/processConfigFile.js.map +1 -1
- package/lib/cli/serviceGenerationRun.js.map +1 -1
- package/lib/data-model/DataModel.js.map +1 -1
- package/lib/data-model/DataModelDigestion.js.map +1 -1
- package/lib/data-model/DataModelDigestionV2.js.map +1 -1
- package/lib/data-model/DataModelDigestionV4.js.map +1 -1
- package/lib/data-model/DataTypeModel.js.map +1 -1
- package/lib/data-model/NamingHelper.js.map +1 -1
- package/lib/data-model/ServiceConfigHelper.js.map +1 -1
- package/lib/data-model/edmx/ODataEdmxModelBase.js.map +1 -1
- package/lib/data-model/edmx/ODataEdmxModelV3.js.map +1 -1
- package/lib/data-model/edmx/ODataEdmxModelV4.js.map +1 -1
- package/lib/data-model/validation/NameClashValidator.js.map +1 -1
- package/lib/data-model/validation/NameValidator.js.map +1 -1
- package/lib/data-model/validation/NoopValidator.js.map +1 -1
- package/lib/defaultConfig.js.map +1 -1
- package/lib/download/downloadMetadata.js.map +1 -1
- package/lib/download/index.js.map +1 -1
- package/lib/download/storeMetadata.js.map +1 -1
- package/lib/evaluateConfig.js.map +1 -1
- package/lib/generator/ImportContainer.js.map +1 -1
- package/lib/generator/ImportedNameValidator.js.map +1 -1
- package/lib/generator/ModelGenerator.js.map +1 -1
- package/lib/generator/QueryObjectGenerator.js +8 -4
- package/lib/generator/QueryObjectGenerator.js.map +1 -1
- package/lib/generator/ServiceGenerator.js +8 -4
- package/lib/generator/ServiceGenerator.js.map +1 -1
- package/lib/generator/import/ImportObjects.d.ts +6 -3
- package/lib/generator/import/ImportObjects.js +6 -6
- package/lib/generator/import/ImportObjects.js.map +1 -1
- package/lib/generator/index.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/project/FileHandler.js.map +1 -1
- package/lib/project/ProjectManager.js.map +1 -1
- package/lib/project/TsMorphHelper.js.map +1 -1
- package/lib/project/formatter/BaseFormatter.js.map +1 -1
- package/lib/project/formatter/FileFormatter.js.map +1 -1
- package/lib/project/formatter/NoopFormatter.js.map +1 -1
- package/lib/project/formatter/PrettierFormatter.js.map +1 -1
- package/lib/project/formatter/index.js.map +1 -1
- package/lib/project/logger/logFilePath.js.map +1 -1
- package/lib/run-cli.js +0 -0
- package/lib/run-cli.js.map +1 -1
- package/package.json +10 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceConfigHelper.js","sourceRoot":"","sources":["../../src/data-model/ServiceConfigHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { DigestionOptions } from \"../FactoryFunctionModel.js\";\r\nimport {\r\n ComplexTypeGenerationOptions,\r\n EntityTypeGenerationOptions,\r\n GenericTypeGenerationOptions,\r\n PropertyGenerationOptions,\r\n TypeBasedGenerationOptions,\r\n} from \"../OptionModel.js\";\r\nimport { TypeModel } from \"../TypeModel.js\";\r\nimport { NamespaceWithAlias, withNamespace } from \"./DataModel.js\";\r\n\r\nexport type WithoutName<T> = Omit<T, \"name\">;\r\n\r\nexport interface ConfiguredProp extends WithoutName<PropertyGenerationOptions> {}\r\n\r\nconst EXCEPTION_NO_NAME = \"No value for required attribute [name] specified!\";\r\nconst EXCEPTION_WRONG_NAME_TYPE =\r\n \"Wrong type for attribute [name]! You have to supply either a plain string or a RegExp.\";\r\n\r\ninterface MappingType<T> {\r\n names: Record<string, T>;\r\n regExps: Array<[RegExp, GenericTypeGenerationOptions]>;\r\n}\r\n\r\nfunction createMapping<T>(): MappingType<T> {\r\n return {\r\n names: {},\r\n regExps: [],\r\n };\r\n}\r\n\r\nexport class ServiceConfigHelper {\r\n private propMapping = new Map<string, PropertyGenerationOptions>();\r\n private propRegExps: Array<[RegExp, PropertyGenerationOptions]> = [];\r\n private mapping = {\r\n [TypeModel.Any]: createMapping<GenericTypeGenerationOptions>(),\r\n [TypeModel.EntityType]: createMapping<EntityTypeGenerationOptions>(),\r\n [TypeModel.ComplexType]: createMapping<ComplexTypeGenerationOptions>(),\r\n [TypeModel.EnumType]: createMapping<GenericTypeGenerationOptions>(),\r\n [TypeModel.OperationType]: createMapping<GenericTypeGenerationOptions>(),\r\n [TypeModel.OperationImportType]: createMapping<GenericTypeGenerationOptions>(),\r\n [TypeModel.EntitySet]: createMapping<GenericTypeGenerationOptions>(),\r\n [TypeModel.Singleton]: createMapping<GenericTypeGenerationOptions>(),\r\n };\r\n\r\n constructor(options: DigestionOptions) {\r\n this.evaluateProps(options);\r\n this.evaluateEntities(options);\r\n }\r\n\r\n private evaluateProps(options: DigestionOptions) {\r\n options.propertiesByName.forEach((prop) => {\r\n if (!prop.name) {\r\n throw new Error(EXCEPTION_NO_NAME);\r\n }\r\n switch (typeof prop.name) {\r\n case \"string\":\r\n // TODO: check for existing prop.name and throw?\r\n this.propMapping.set(prop.name, prop);\r\n break;\r\n case \"object\":\r\n const { source, ignoreCase } = prop.name as RegExp;\r\n if (!source) {\r\n throw new Error(EXCEPTION_WRONG_NAME_TYPE);\r\n }\r\n this.propRegExps.push([new RegExp(`^${source}$`, ignoreCase ? \"i\" : \"\"), prop]);\r\n break;\r\n default:\r\n throw new Error(EXCEPTION_WRONG_NAME_TYPE);\r\n }\r\n });\r\n }\r\n\r\n private getPropByName(nameToMap: string): ConfiguredProp | undefined {\r\n const stringProp = this.propMapping.get(nameToMap);\r\n if (!stringProp) {\r\n return undefined;\r\n }\r\n const { name, ...attrs } = stringProp;\r\n return { ...attrs };\r\n }\r\n\r\n private getPropByRegExp(nameToMap: string): ConfiguredProp | undefined {\r\n const resultList = this.propRegExps\r\n .filter(([regExp]) => regExp.test(nameToMap))\r\n .map(([regExp, { name, mappedName, ...attrs }]) => ({\r\n mappedName: mappedName ? nameToMap.replace(regExp, mappedName) : undefined,\r\n ...attrs,\r\n }));\r\n\r\n return !resultList.length\r\n ? undefined\r\n : resultList.reduce<ConfiguredProp>((result, prop) => {\r\n return { ...result, ...prop };\r\n }, {});\r\n }\r\n\r\n public findPropConfigByName = (name: string): ConfiguredProp | undefined => {\r\n const stringProp = this.getPropByName(name);\r\n const reProp = this.getPropByRegExp(name);\r\n\r\n return stringProp && reProp ? { ...reProp, ...stringProp } : stringProp || reProp;\r\n };\r\n\r\n private evaluateEntities(options: DigestionOptions) {\r\n options.byTypeAndName.forEach((ent) => {\r\n if (!ent.name) {\r\n throw new Error(EXCEPTION_NO_NAME);\r\n }\r\n\r\n const mapping = this.mapping[ent.type];\r\n switch (typeof ent.name) {\r\n case \"string\":\r\n // TODO: check for existing prop.name and throw?\r\n mapping.names[ent.name] = ent;\r\n break;\r\n case \"object\":\r\n const { source, ignoreCase } = ent.name as RegExp;\r\n if (!source) {\r\n throw new Error(EXCEPTION_WRONG_NAME_TYPE);\r\n }\r\n const regExp = new RegExp(`^${source}$`, ignoreCase ? \"i\" : \"\");\r\n mapping.regExps.push(\r\n // @ts-ignore: too generic\r\n [regExp, ent]\r\n );\r\n break;\r\n default:\r\n throw new Error(EXCEPTION_WRONG_NAME_TYPE);\r\n }\r\n });\r\n }\r\n\r\n // get entity config by name matching: simple name or fully qualified name (alias also supported)\r\n private getByName<T extends TypeBasedGenerationOptions>(\r\n mapping: Record<string, TypeBasedGenerationOptions>,\r\n namespace: NamespaceWithAlias,\r\n nameToMap: string\r\n ) {\r\n const [ns, alias] = namespace;\r\n const hayStack = { ...this.mapping.Any.names, ...mapping };\r\n\r\n const config =\r\n hayStack[withNamespace(ns, nameToMap)] ||\r\n (alias ? hayStack[withNamespace(alias, nameToMap)] : undefined) ||\r\n hayStack[nameToMap];\r\n if (!config) {\r\n return undefined;\r\n }\r\n const { name, type, ...attrs } = config;\r\n return { ...attrs };\r\n }\r\n\r\n private getByRegExp(mapping: Array<[RegExp, any]>, [mainNs, alias]: NamespaceWithAlias, nameToMap: string) {\r\n const fqName = `${mainNs}.${nameToMap}`;\r\n const hayStack = [...this.mapping.Any.regExps, ...mapping];\r\n\r\n const resultList = hayStack\r\n .filter(([regExp, config]) => regExp.test(fqName))\r\n .map(([regExp, { name, mappedName, type, ...attrs }]) => ({\r\n mappedName: mappedName ? fqName.replace(regExp, mappedName) : undefined,\r\n ...attrs,\r\n }));\r\n\r\n return !resultList.length\r\n ? undefined\r\n : resultList.reduce((result, prop) => {\r\n return { ...result, ...prop };\r\n }, {});\r\n }\r\n\r\n private findConfig<T extends TypeBasedGenerationOptions>(\r\n mapping: MappingType<T>,\r\n namespace: NamespaceWithAlias,\r\n name: string\r\n ) {\r\n const stringEnt = this.getByName(mapping.names, namespace, name);\r\n const reEnt = this.getByRegExp(mapping.regExps, namespace, name);\r\n\r\n return stringEnt && reEnt ? { ...reEnt, ...stringEnt } : stringEnt || reEnt;\r\n }\r\n\r\n public findEntityTypeConfig(\r\n namespace: NamespaceWithAlias,\r\n name: string\r\n ): WithoutName<EntityTypeGenerationOptions> | undefined {\r\n return this.findConfig<EntityTypeGenerationOptions>(this.mapping.EntityType, namespace, name);\r\n }\r\n public findComplexTypeConfig(\r\n namespace: NamespaceWithAlias,\r\n name: string\r\n ): WithoutName<ComplexTypeGenerationOptions> | undefined {\r\n return this.findConfig(this.mapping.ComplexType, namespace, name);\r\n }\r\n public findEnumTypeConfig(\r\n namespace: NamespaceWithAlias,\r\n name: string\r\n ): WithoutName<GenericTypeGenerationOptions> | undefined {\r\n return this.findConfig(this.mapping.EnumType, namespace, name);\r\n }\r\n\r\n public findOperationTypeConfig(\r\n namespace: NamespaceWithAlias,\r\n name: string\r\n ): WithoutName<GenericTypeGenerationOptions> | undefined {\r\n return this.findConfig(this.mapping.OperationType, namespace, name);\r\n }\r\n\r\n public findOperationImportConfig(\r\n namespace: string,\r\n name: string\r\n ): WithoutName<GenericTypeGenerationOptions> | undefined {\r\n return this.findConfig(this.mapping.OperationImportType, [namespace], name);\r\n }\r\n\r\n public findEntitySetConfig(namespace: string, name: string): WithoutName<GenericTypeGenerationOptions> | undefined {\r\n return this.findConfig(this.mapping.EntitySet, [namespace], name);\r\n }\r\n\r\n public findSingletonConfig(namespace: string, name: string): WithoutName<GenericTypeGenerationOptions> | undefined {\r\n return this.findConfig(this.mapping.Singleton, [namespace], name);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ServiceConfigHelper.js","sourceRoot":"","sources":["../../src/data-model/ServiceConfigHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { DigestionOptions } from \"../FactoryFunctionModel.js\";\nimport {\n ComplexTypeGenerationOptions,\n EntityTypeGenerationOptions,\n GenericTypeGenerationOptions,\n PropertyGenerationOptions,\n TypeBasedGenerationOptions,\n} from \"../OptionModel.js\";\nimport { TypeModel } from \"../TypeModel.js\";\nimport { NamespaceWithAlias, withNamespace } from \"./DataModel.js\";\n\nexport type WithoutName<T> = Omit<T, \"name\">;\n\nexport interface ConfiguredProp extends WithoutName<PropertyGenerationOptions> {}\n\nconst EXCEPTION_NO_NAME = \"No value for required attribute [name] specified!\";\nconst EXCEPTION_WRONG_NAME_TYPE =\n \"Wrong type for attribute [name]! You have to supply either a plain string or a RegExp.\";\n\ninterface MappingType<T> {\n names: Record<string, T>;\n regExps: Array<[RegExp, GenericTypeGenerationOptions]>;\n}\n\nfunction createMapping<T>(): MappingType<T> {\n return {\n names: {},\n regExps: [],\n };\n}\n\nexport class ServiceConfigHelper {\n private propMapping = new Map<string, PropertyGenerationOptions>();\n private propRegExps: Array<[RegExp, PropertyGenerationOptions]> = [];\n private mapping = {\n [TypeModel.Any]: createMapping<GenericTypeGenerationOptions>(),\n [TypeModel.EntityType]: createMapping<EntityTypeGenerationOptions>(),\n [TypeModel.ComplexType]: createMapping<ComplexTypeGenerationOptions>(),\n [TypeModel.EnumType]: createMapping<GenericTypeGenerationOptions>(),\n [TypeModel.OperationType]: createMapping<GenericTypeGenerationOptions>(),\n [TypeModel.OperationImportType]: createMapping<GenericTypeGenerationOptions>(),\n [TypeModel.EntitySet]: createMapping<GenericTypeGenerationOptions>(),\n [TypeModel.Singleton]: createMapping<GenericTypeGenerationOptions>(),\n };\n\n constructor(options: DigestionOptions) {\n this.evaluateProps(options);\n this.evaluateEntities(options);\n }\n\n private evaluateProps(options: DigestionOptions) {\n options.propertiesByName.forEach((prop) => {\n if (!prop.name) {\n throw new Error(EXCEPTION_NO_NAME);\n }\n switch (typeof prop.name) {\n case \"string\":\n // TODO: check for existing prop.name and throw?\n this.propMapping.set(prop.name, prop);\n break;\n case \"object\":\n const { source, ignoreCase } = prop.name as RegExp;\n if (!source) {\n throw new Error(EXCEPTION_WRONG_NAME_TYPE);\n }\n this.propRegExps.push([new RegExp(`^${source}$`, ignoreCase ? \"i\" : \"\"), prop]);\n break;\n default:\n throw new Error(EXCEPTION_WRONG_NAME_TYPE);\n }\n });\n }\n\n private getPropByName(nameToMap: string): ConfiguredProp | undefined {\n const stringProp = this.propMapping.get(nameToMap);\n if (!stringProp) {\n return undefined;\n }\n const { name, ...attrs } = stringProp;\n return { ...attrs };\n }\n\n private getPropByRegExp(nameToMap: string): ConfiguredProp | undefined {\n const resultList = this.propRegExps\n .filter(([regExp]) => regExp.test(nameToMap))\n .map(([regExp, { name, mappedName, ...attrs }]) => ({\n mappedName: mappedName ? nameToMap.replace(regExp, mappedName) : undefined,\n ...attrs,\n }));\n\n return !resultList.length\n ? undefined\n : resultList.reduce<ConfiguredProp>((result, prop) => {\n return { ...result, ...prop };\n }, {});\n }\n\n public findPropConfigByName = (name: string): ConfiguredProp | undefined => {\n const stringProp = this.getPropByName(name);\n const reProp = this.getPropByRegExp(name);\n\n return stringProp && reProp ? { ...reProp, ...stringProp } : stringProp || reProp;\n };\n\n private evaluateEntities(options: DigestionOptions) {\n options.byTypeAndName.forEach((ent) => {\n if (!ent.name) {\n throw new Error(EXCEPTION_NO_NAME);\n }\n\n const mapping = this.mapping[ent.type];\n switch (typeof ent.name) {\n case \"string\":\n // TODO: check for existing prop.name and throw?\n mapping.names[ent.name] = ent;\n break;\n case \"object\":\n const { source, ignoreCase } = ent.name as RegExp;\n if (!source) {\n throw new Error(EXCEPTION_WRONG_NAME_TYPE);\n }\n const regExp = new RegExp(`^${source}$`, ignoreCase ? \"i\" : \"\");\n mapping.regExps.push(\n // @ts-ignore: too generic\n [regExp, ent]\n );\n break;\n default:\n throw new Error(EXCEPTION_WRONG_NAME_TYPE);\n }\n });\n }\n\n // get entity config by name matching: simple name or fully qualified name (alias also supported)\n private getByName<T extends TypeBasedGenerationOptions>(\n mapping: Record<string, TypeBasedGenerationOptions>,\n namespace: NamespaceWithAlias,\n nameToMap: string\n ) {\n const [ns, alias] = namespace;\n const hayStack = { ...this.mapping.Any.names, ...mapping };\n\n const config =\n hayStack[withNamespace(ns, nameToMap)] ||\n (alias ? hayStack[withNamespace(alias, nameToMap)] : undefined) ||\n hayStack[nameToMap];\n if (!config) {\n return undefined;\n }\n const { name, type, ...attrs } = config;\n return { ...attrs };\n }\n\n private getByRegExp(mapping: Array<[RegExp, any]>, [mainNs, alias]: NamespaceWithAlias, nameToMap: string) {\n const fqName = `${mainNs}.${nameToMap}`;\n const hayStack = [...this.mapping.Any.regExps, ...mapping];\n\n const resultList = hayStack\n .filter(([regExp, config]) => regExp.test(fqName))\n .map(([regExp, { name, mappedName, type, ...attrs }]) => ({\n mappedName: mappedName ? fqName.replace(regExp, mappedName) : undefined,\n ...attrs,\n }));\n\n return !resultList.length\n ? undefined\n : resultList.reduce((result, prop) => {\n return { ...result, ...prop };\n }, {});\n }\n\n private findConfig<T extends TypeBasedGenerationOptions>(\n mapping: MappingType<T>,\n namespace: NamespaceWithAlias,\n name: string\n ) {\n const stringEnt = this.getByName(mapping.names, namespace, name);\n const reEnt = this.getByRegExp(mapping.regExps, namespace, name);\n\n return stringEnt && reEnt ? { ...reEnt, ...stringEnt } : stringEnt || reEnt;\n }\n\n public findEntityTypeConfig(\n namespace: NamespaceWithAlias,\n name: string\n ): WithoutName<EntityTypeGenerationOptions> | undefined {\n return this.findConfig<EntityTypeGenerationOptions>(this.mapping.EntityType, namespace, name);\n }\n public findComplexTypeConfig(\n namespace: NamespaceWithAlias,\n name: string\n ): WithoutName<ComplexTypeGenerationOptions> | undefined {\n return this.findConfig(this.mapping.ComplexType, namespace, name);\n }\n public findEnumTypeConfig(\n namespace: NamespaceWithAlias,\n name: string\n ): WithoutName<GenericTypeGenerationOptions> | undefined {\n return this.findConfig(this.mapping.EnumType, namespace, name);\n }\n\n public findOperationTypeConfig(\n namespace: NamespaceWithAlias,\n name: string\n ): WithoutName<GenericTypeGenerationOptions> | undefined {\n return this.findConfig(this.mapping.OperationType, namespace, name);\n }\n\n public findOperationImportConfig(\n namespace: string,\n name: string\n ): WithoutName<GenericTypeGenerationOptions> | undefined {\n return this.findConfig(this.mapping.OperationImportType, [namespace], name);\n }\n\n public findEntitySetConfig(namespace: string, name: string): WithoutName<GenericTypeGenerationOptions> | undefined {\n return this.findConfig(this.mapping.EntitySet, [namespace], name);\n }\n\n public findSingletonConfig(namespace: string, name: string): WithoutName<GenericTypeGenerationOptions> | undefined {\n return this.findConfig(this.mapping.Singleton, [namespace], name);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ODataEdmxModelBase.js","sourceRoot":"","sources":["../../../src/data-model/edmx/ODataEdmxModelBase.ts"],"names":[],"mappings":"","sourcesContent":["export interface ODataEdmxModelBase<VersionedSchema> {\
|
|
1
|
+
{"version":3,"file":"ODataEdmxModelBase.js","sourceRoot":"","sources":["../../../src/data-model/edmx/ODataEdmxModelBase.ts"],"names":[],"mappings":"","sourcesContent":["export interface ODataEdmxModelBase<VersionedSchema> {\n \"edmx:Edmx\": {\n $: {\n Version: string;\n \"xmlns:edmx\": string;\n };\n // \"edmx:Reference\": Array<any>;\n \"edmx:DataServices\": Array<DataService<VersionedSchema>>;\n };\n}\n\nexport interface DataService<VersionedSchema> {\n Schema: Array<VersionedSchema>;\n}\n\nexport interface Schema<ET extends EntityType, CT extends ComplexType> {\n $: {\n Namespace: string;\n xmlns: string;\n Alias?: string;\n };\n EntityType?: Array<ET>;\n ComplexType?: Array<CT>;\n EnumType?: Array<EnumType>;\n EntityContainer?: Array<any>;\n TypeDefinition?: Array<TypeDefinition>;\n}\n\nexport interface EntityContainer<ES = EntitySet> {\n $: {\n Name: string;\n };\n EntitySet?: Array<ES>;\n}\n\nexport interface EntitySet {\n $: {\n Name: string;\n EntityType: string;\n };\n}\n\nexport interface EntityType {\n $: {\n Name: string;\n BaseType?: string;\n Abstract?: \"true\" | \"false\";\n OpenType?: \"true\" | \"false\";\n };\n Key: Array<PropertyRef>;\n Property: Array<Property>;\n}\n\nexport interface ComplexType extends Omit<EntityType, \"Key\"> {}\n\nexport interface PropertyRef {\n PropertyRef: Array<{ $: { Name: string } }>;\n}\n\nexport interface Property {\n $: {\n Name: string;\n Type: string;\n Nullable?: \"true\" | \"false\";\n MaxLength?: number;\n Precision?: number;\n Scale?: number;\n };\n}\n\nexport interface EnumType {\n $: {\n Name: string;\n };\n Member?: Array<Member>;\n}\n\nexport interface Member {\n $: {\n Name: string;\n Value: number;\n };\n}\n\nexport interface Parameter extends Property {\n Unicode?: boolean;\n}\n\nexport interface ReturnType {\n $: {\n Type: string;\n };\n}\n\nexport interface TypeDefinition {\n $: {\n Name: string;\n UnderlyingType: string;\n MaxLength?: number;\n Precision?: number;\n Scale?: number;\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ODataEdmxModelV3.js","sourceRoot":"","sources":["../../../src/data-model/edmx/ODataEdmxModelV3.ts"],"names":[],"mappings":"","sourcesContent":["import type {\
|
|
1
|
+
{"version":3,"file":"ODataEdmxModelV3.js","sourceRoot":"","sources":["../../../src/data-model/edmx/ODataEdmxModelV3.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n ComplexType,\n EntityContainer,\n EntityType,\n ODataEdmxModelBase,\n Property,\n ReturnType,\n Schema,\n} from \"./ODataEdmxModelBase.js\";\n\nexport interface ODataEdmxModelV3 extends ODataEdmxModelBase<SchemaV3> {}\n\nexport interface SchemaV3 extends Schema<EntityTypeV3, ComplexTypeV3> {\n EntityContainer?: Array<EntityContainerV3>;\n Association?: Array<Association>;\n}\n\nexport interface EntityTypeV3 extends EntityType {\n NavigationProperty?: Array<NavigationProperty>;\n}\n\nexport interface ComplexTypeV3 extends ComplexType {}\n\nexport interface NavigationProperty {\n $: {\n Name: string;\n Relationship: string;\n FromRole: string;\n ToRole: string;\n };\n}\n\nexport interface EntityContainerV3 extends EntityContainer {\n AssociationSet?: Array<AssociationSet>;\n FunctionImport?: Array<FunctionImport>;\n}\n\nexport interface AssociationSet {\n $: {\n Name: string;\n Association: string;\n };\n End: Array<AssociationSetEnd>;\n}\n\nexport interface AssociationSetEnd {\n $: {\n Role: string;\n EntitySet: string;\n };\n}\n\nexport interface FunctionImport {\n $: {\n Name: string;\n EntitySet?: string;\n ReturnType?: string;\n \"m:HttpMethod\"?: \"POST\" | \"GET\";\n };\n ReturnType?: Array<ReturnType>;\n Parameter?: Array<Parameter>;\n}\n\nexport interface Parameter extends Property {\n Mode?: \"In\" | \"Out\" | \"InOut\";\n}\n\nexport interface Association {\n $: {\n Name: string;\n };\n End: Array<AssociationEnd>;\n}\n\nexport interface AssociationEnd {\n $: {\n Type: string;\n Multiplicity: string;\n Role?: string;\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ODataEdmxModelV4.js","sourceRoot":"","sources":["../../../src/data-model/edmx/ODataEdmxModelV4.ts"],"names":[],"mappings":"","sourcesContent":["import type {\
|
|
1
|
+
{"version":3,"file":"ODataEdmxModelV4.js","sourceRoot":"","sources":["../../../src/data-model/edmx/ODataEdmxModelV4.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n ComplexType,\n EntityContainer,\n EntitySet,\n EntityType,\n ODataEdmxModelBase,\n Property,\n ReturnType,\n Schema,\n} from \"./ODataEdmxModelBase.js\";\n\nexport interface ODataEdmxModelV4 extends ODataEdmxModelBase<SchemaV4> {}\n\nexport interface SchemaV4 extends Schema<EntityTypeV4, ComplexTypeV4> {\n EntityContainer?: Array<EntityContainerV4>;\n Function?: Array<Operation>;\n Action?: Array<Operation>;\n}\n\nexport interface EntityTypeV4 extends EntityType {\n NavigationProperty?: Array<NavigationProperty>;\n}\n\nexport interface ComplexTypeV4 extends ComplexType {\n NavigationProperty?: Array<NavigationProperty>;\n}\n\nexport interface NavigationProperty {\n $: {\n Name: string;\n Type: string;\n Nullable?: \"true\" | \"false\";\n Partner?: string;\n };\n // TODO: OnDelete, ReferentialConstraint, etc.\n}\n\nexport interface EntityContainerV4 extends EntityContainer<EntitySetV4> {\n Singleton?: Array<Singleton>;\n FunctionImport?: Array<FunctionImport>;\n ActionImport?: Array<ActionImport>;\n}\n\nexport interface EntitySetV4 extends EntitySet {\n NavigationPropertyBinding?: Array<NavigationPropertyBinding>;\n}\n\nexport interface Singleton {\n $: {\n Name: string;\n Type: string;\n };\n NavigationPropertyBinding?: Array<NavigationPropertyBinding>;\n}\n\nexport interface FunctionImport {\n $: {\n Name: string;\n Function: string;\n EntitySet: string;\n };\n}\n\nexport interface ActionImport {\n $: {\n Name: string;\n Action: string;\n };\n}\n\nexport interface NavigationPropertyBinding {\n $: {\n Path: string;\n Target: string;\n };\n}\n\nexport interface Operation {\n $: {\n Name: string;\n IsBound?: \"true\" | \"false\";\n };\n Parameter?: Array<Parameter>;\n ReturnType?: Array<ReturnType>;\n}\n\nexport interface Parameter extends Property {\n Unicode?: boolean;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NameClashValidator.js","sourceRoot":"","sources":["../../../src/data-model/validation/NameClashValidator.ts"],"names":[],"mappings":"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","sourcesContent":["import { ConfigFileOptions } from \"../../OptionModel.js\";\
|
|
1
|
+
{"version":3,"file":"NameClashValidator.js","sourceRoot":"","sources":["../../../src/data-model/validation/NameClashValidator.ts"],"names":[],"mappings":"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","sourcesContent":["import { ConfigFileOptions } from \"../../OptionModel.js\";\nimport { TypeModel } from \"../../TypeModel.js\";\nimport { OperationTypes } from \"../DataTypeModel.js\";\nimport { NameValidator, ValidationError } from \"./NameValidator.js\";\n\nexport interface NameValidatorOptions\n extends Pick<ConfigFileOptions, \"disableAutomaticNameClashResolution\" | \"bundledFileGeneration\"> {}\n\nexport class NameClashValidator implements NameValidator {\n private entityContainer = new Map<string, ValidationError>();\n private store = new Map<string, ValidationError>();\n private errors = new Map<string, ValidationError[]>();\n\n constructor(private options: NameValidatorOptions = {}) {}\n\n private addToError(name: string, hit: ValidationError, validationObject: ValidationError) {\n const existingErrors = this.errors.get(name);\n if (existingErrors) {\n if (!this.options.disableAutomaticNameClashResolution) {\n validationObject.renamedTo = `${name}${existingErrors.length + 1}`;\n }\n existingErrors.push(validationObject);\n } else {\n if (!this.options.disableAutomaticNameClashResolution) {\n validationObject.renamedTo = `${name}2`;\n }\n this.errors.set(name, [hit, validationObject]);\n }\n return validationObject.renamedTo ?? name;\n }\n\n private addToTypes(fqName: string, name: string, type: TypeModel): string {\n const validationObject: ValidationError = { type, fqName };\n const hit = this.store.get(name);\n if (hit) {\n return this.addToError(name, hit, validationObject);\n } else {\n this.store.set(name, validationObject);\n return name;\n }\n }\n\n private addToEntityContainer(fqName: string, name: string, type: TypeModel): string {\n const validationObject: ValidationError = { type, fqName };\n const hit = this.entityContainer.get(name);\n if (hit) {\n return this.addToError(name, hit, validationObject);\n } else {\n this.entityContainer.set(name, validationObject);\n return name;\n }\n }\n\n addEntityType(fqName: string, name: string) {\n return this.addToTypes(fqName, name, TypeModel.EntityType);\n }\n\n addComplexType(fqName: string, name: string) {\n return this.addToTypes(fqName, name, TypeModel.ComplexType);\n }\n\n addEnumType(fqName: string, name: string) {\n return this.addToTypes(fqName, name, TypeModel.EnumType);\n }\n\n addUnboundOperationType(fqName: string, name: string, operationType: OperationTypes) {\n const validationObject: ValidationError = { type: TypeModel.OperationType, fqName };\n const isAction = operationType === OperationTypes.Action;\n\n const hit = this.store.get(name);\n // to support function overloads: allow multiple operation definitions with same fully qualified name\n if (hit && (isAction || hit.fqName !== fqName)) {\n return this.addToError(name, hit, validationObject);\n } else {\n this.store.set(name, validationObject);\n return name;\n }\n }\n\n addBoundOperationType(bindingName: string, fqName: string, name: string, operationType: OperationTypes) {\n const nameWithBinding = `${bindingName}_${name}`;\n const validationObject: ValidationError = { type: TypeModel.OperationType, fqName };\n const isAction = operationType === OperationTypes.Action;\n\n const hit = this.store.get(nameWithBinding);\n // to support function overloads: allow multiple operation definitions with same fully qualified name\n if (hit && (isAction || hit.fqName !== fqName)) {\n return this.addToError(name, hit, validationObject);\n } else {\n this.store.set(nameWithBinding, validationObject);\n return name;\n }\n }\n\n addOperationImportType(fqName: string, name: string) {\n return this.addToEntityContainer(fqName, name, TypeModel.OperationImportType);\n }\n\n addEntitySet(fqName: string, name: string) {\n return this.addToEntityContainer(fqName, name, TypeModel.EntitySet);\n }\n\n addSingleton(fqName: string, name: string) {\n return this.addToEntityContainer(fqName, name, TypeModel.Singleton);\n }\n\n validate() {\n return this.errors;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NameValidator.js","sourceRoot":"","sources":["../../../src/data-model/validation/NameValidator.ts"],"names":[],"mappings":"","sourcesContent":["import { TypeModel } from \"../../TypeModel\";\
|
|
1
|
+
{"version":3,"file":"NameValidator.js","sourceRoot":"","sources":["../../../src/data-model/validation/NameValidator.ts"],"names":[],"mappings":"","sourcesContent":["import { TypeModel } from \"../../TypeModel\";\nimport { OperationTypes } from \"../DataTypeModel\";\n\nexport interface NameValidator {\n addEntityType(fqName: string, name: string): string;\n\n addComplexType(fqName: string, name: string): string;\n\n addEnumType(fqName: string, name: string): string;\n\n addUnboundOperationType(fqName: string, name: string, operationType: OperationTypes): string;\n\n addBoundOperationType(bindingName: string, fqName: string, name: string, operationType: OperationTypes): string;\n\n addOperationImportType(fqName: string, name: string): string;\n\n addEntitySet(fqName: string, name: string): string;\n\n addSingleton(fqName: string, name: string): string;\n\n validate(): Map<string, ValidationError[]>;\n}\n\nexport interface ValidationError {\n fqName: string;\n type: TypeModel;\n renamedTo?: string;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NoopValidator.js","sourceRoot":"","sources":["../../../src/data-model/validation/NoopValidator.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,aAAa;IACxB,cAAc,CAAC,MAAc,EAAE,IAAY;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,MAAc,EAAE,IAAY;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,MAAc,EAAE,IAAY;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,MAAc,EAAE,IAAY;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sBAAsB,CAAC,MAAc,EAAE,IAAY;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,MAAc,EAAE,IAAY;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qBAAqB,CAAC,WAAmB,EAAE,MAAc,EAAE,IAAY,EAAE,aAA6B;QACpG,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uBAAuB,CAAC,MAAc,EAAE,IAAY,EAAE,aAA6B;QACjF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;CACF","sourcesContent":["import { OperationTypes } from \"../DataTypeModel\";\
|
|
1
|
+
{"version":3,"file":"NoopValidator.js","sourceRoot":"","sources":["../../../src/data-model/validation/NoopValidator.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,aAAa;IACxB,cAAc,CAAC,MAAc,EAAE,IAAY;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,MAAc,EAAE,IAAY;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,MAAc,EAAE,IAAY;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,MAAc,EAAE,IAAY;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sBAAsB,CAAC,MAAc,EAAE,IAAY;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,MAAc,EAAE,IAAY;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qBAAqB,CAAC,WAAmB,EAAE,MAAc,EAAE,IAAY,EAAE,aAA6B;QACpG,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uBAAuB,CAAC,MAAc,EAAE,IAAY,EAAE,aAA6B;QACjF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;CACF","sourcesContent":["import { OperationTypes } from \"../DataTypeModel\";\nimport { NameValidator, ValidationError } from \"./NameValidator.js\";\n\nexport class NoopValidator implements NameValidator {\n addComplexType(fqName: string, name: string): string {\n return name;\n }\n\n addEntitySet(fqName: string, name: string): string {\n return name;\n }\n\n addEntityType(fqName: string, name: string): string {\n return name;\n }\n\n addEnumType(fqName: string, name: string): string {\n return name;\n }\n\n addOperationImportType(fqName: string, name: string): string {\n return name;\n }\n\n addSingleton(fqName: string, name: string): string {\n return name;\n }\n\n addBoundOperationType(bindingName: string, fqName: string, name: string, operationType: OperationTypes): string {\n return name;\n }\n\n addUnboundOperationType(fqName: string, name: string, operationType: OperationTypes): string {\n return name;\n }\n\n validate(): Map<string, ValidationError[]> {\n return new Map();\n }\n}\n"]}
|
package/lib/defaultConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultConfig.js","sourceRoot":"","sources":["../src/defaultConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import deepmerge from \"deepmerge\";\
|
|
1
|
+
{"version":3,"file":"defaultConfig.js","sourceRoot":"","sources":["../src/defaultConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import deepmerge from \"deepmerge\";\nimport { NameSettings, NamingStrategies } from \"./NamingModel.js\";\nimport { EmitModes, Modes, RunOptions } from \"./OptionModel.js\";\n\nexport type DefaultConfiguration = Omit<RunOptions, \"sourceUrl\" | \"source\" | \"output\" | \"serviceName\">;\n/**\n * The default configuration.\n */\nconst defaultConfig: DefaultConfiguration = {\n sourceUrlConfig: {},\n refreshFile: false,\n mode: Modes.all,\n emitMode: EmitModes.js_dts,\n debug: false,\n prettier: false,\n tsconfig: \"tsconfig.json\",\n converters: [],\n skipEditableModels: false,\n skipIdModels: false,\n skipOperations: false,\n skipComments: false,\n enablePrimitivePropertyServices: false,\n disableAutoManagedKey: false,\n allowRenaming: false,\n v2ModelsWithExtraResultsWrapping: false,\n v4BigNumberAsString: false,\n disableAutomaticNameClashResolution: false,\n bundledFileGeneration: true,\n numericEnums: false,\n naming: {\n models: {\n namingStrategy: NamingStrategies.PASCAL_CASE,\n propNamingStrategy: NamingStrategies.CAMEL_CASE,\n editableModels: {\n prefix: \"Editable\",\n suffix: \"\",\n applyModelNaming: true,\n },\n idModels: {\n prefix: \"\",\n suffix: \"Id\",\n applyModelNaming: true,\n },\n operationParamModels: {\n prefix: \"\",\n suffix: \"Params\",\n applyModelNaming: true,\n },\n fileName: {\n namingStrategy: NamingStrategies.PASCAL_CASE,\n prefix: \"\",\n suffix: \"Model\",\n },\n },\n queryObjects: {\n namingStrategy: NamingStrategies.PASCAL_CASE,\n propNamingStrategy: NamingStrategies.CAMEL_CASE,\n prefix: \"Q\",\n suffix: \"\",\n idFunctions: {\n prefix: \"\",\n suffix: \"Id\",\n },\n fileName: {\n namingStrategy: NamingStrategies.PASCAL_CASE,\n prefix: \"Q\",\n suffix: \"\",\n },\n baseType: {\n applyQNaming: true,\n prefix: \"\",\n suffix: \"BaseType\",\n },\n },\n services: {\n prefix: \"\",\n suffix: \"Service\",\n namingStrategy: NamingStrategies.PASCAL_CASE,\n main: {\n applyServiceNaming: true,\n },\n collection: {\n prefix: \"\",\n suffix: \"Collection\",\n applyServiceNaming: true,\n },\n operations: {\n namingStrategy: NamingStrategies.CAMEL_CASE,\n },\n relatedServiceGetter: {\n namingStrategy: NamingStrategies.CAMEL_CASE,\n prefix: \"\",\n suffix: \"\",\n },\n privateProps: {\n namingStrategy: NamingStrategies.CAMEL_CASE,\n prefix: \"_\",\n suffix: \"\",\n },\n },\n },\n propertiesByName: [],\n byTypeAndName: [],\n};\n\nconst { models, queryObjects, services } = defaultConfig.naming;\nconst minimalNamingConfig: NameSettings = {\n models: {\n fileName: {\n prefix: models.fileName.prefix,\n suffix: models.fileName.suffix,\n },\n idModels: {\n applyModelNaming: true,\n prefix: models.idModels.prefix,\n suffix: models.idModels.suffix,\n },\n editableModels: {\n applyModelNaming: true,\n prefix: models.editableModels.prefix,\n suffix: models.editableModels.suffix,\n },\n operationParamModels: {\n applyModelNaming: true,\n prefix: models.operationParamModels.prefix,\n suffix: models.operationParamModels.suffix,\n },\n },\n queryObjects: {\n prefix: queryObjects.prefix,\n suffix: queryObjects.suffix,\n fileName: {\n prefix: queryObjects.fileName.prefix,\n suffix: queryObjects.fileName.suffix,\n },\n idFunctions: {\n prefix: queryObjects.idFunctions.prefix,\n suffix: queryObjects.idFunctions.suffix,\n },\n baseType: {\n prefix: queryObjects.baseType.prefix,\n suffix: queryObjects.baseType.suffix,\n },\n },\n services: {\n prefix: services.prefix,\n suffix: services.suffix,\n main: {\n applyServiceNaming: true,\n },\n collection: {\n applyServiceNaming: true,\n prefix: services.collection.prefix,\n suffix: services.collection.suffix,\n },\n privateProps: {\n prefix: services.privateProps.prefix,\n suffix: services.privateProps.suffix,\n },\n relatedServiceGetter: {\n prefix: services.relatedServiceGetter.prefix,\n suffix: services.relatedServiceGetter.suffix,\n },\n },\n};\n\n/**\n * Creates a defensive copy of the default config.\n */\nexport function getDefaultConfig(): DefaultConfiguration {\n return deepmerge(defaultConfig, {});\n}\n\n/**\n * Creates a defensive copy of the minimal config: minimal in respect to naming.\n */\nexport function getMinimalConfig(): DefaultConfiguration {\n const { naming, ...passThrough } = defaultConfig;\n return deepmerge(passThrough, { naming: minimalNamingConfig });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"downloadMetadata.js","sourceRoot":"","sources":["../../src/download/downloadMetadata.ts"],"names":[],"mappings":";AAAA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAClD,OAAO,SAAS,MAAM,WAAW,CAAC;AAGlC,MAAM,aAAa,GAAG,WAAW,CAAC;AAClC,MAAM,cAAc,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC;AAEtD,SAAS,qBAAqB,CAAC,GAAW,EAAE,MAA8B;IACxE,MAAM,gBAAgB,GAAuB;QAC3C,GAAG,EAAE,GAAG;QACR,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,8DAA8D;YAC9D,wEAAwE;YACxE,MAAM,EAAE,iBAAiB;SAC1B;KACF,CAAC;IACF,MAAM,SAAS,GAAuB,MAAM,CAAC,MAAM;QACjD,CAAC,CAAC,MAAM,CAAC,MAAM;QACf,CAAC,CAAC,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAA,KAAK,QAAQ;YAC3E,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE;YACpE,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,SAAS,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAgB,gBAAgB,CACpC,SAAiB,EACjB,eAAuC,EAAE,EACzC,QAAiB,KAAK;;QAEtB,2BAA2B;QAC3B,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC3C,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,SAAS,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;QAE/C,6CAA6C;QAC7C,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAExD,6CAA6C;QAC7C,IAAI,KAAK,EAAE;YACT,MAAM,EAAE,IAAI,KAAkB,MAAM,EAAnB,QAAQ,UAAK,MAAM,EAA9B,QAAqB,CAAS,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,iCAAM,QAAQ,KAAE,IAAI,kCAAO,IAAI,GAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;YAClH,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,UAAU,CAAC,CAAC;SACnD;QAED,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;CAAA","sourcesContent":["import axios, { AxiosRequestConfig } from \"axios\";\
|
|
1
|
+
{"version":3,"file":"downloadMetadata.js","sourceRoot":"","sources":["../../src/download/downloadMetadata.ts"],"names":[],"mappings":";AAAA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAClD,OAAO,SAAS,MAAM,WAAW,CAAC;AAGlC,MAAM,aAAa,GAAG,WAAW,CAAC;AAClC,MAAM,cAAc,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC;AAEtD,SAAS,qBAAqB,CAAC,GAAW,EAAE,MAA8B;IACxE,MAAM,gBAAgB,GAAuB;QAC3C,GAAG,EAAE,GAAG;QACR,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,8DAA8D;YAC9D,wEAAwE;YACxE,MAAM,EAAE,iBAAiB;SAC1B;KACF,CAAC;IACF,MAAM,SAAS,GAAuB,MAAM,CAAC,MAAM;QACjD,CAAC,CAAC,MAAM,CAAC,MAAM;QACf,CAAC,CAAC,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAA,KAAK,QAAQ;YAC3E,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE;YACpE,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,SAAS,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAgB,gBAAgB,CACpC,SAAiB,EACjB,eAAuC,EAAE,EACzC,QAAiB,KAAK;;QAEtB,2BAA2B;QAC3B,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC3C,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,SAAS,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;QAE/C,6CAA6C;QAC7C,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAExD,6CAA6C;QAC7C,IAAI,KAAK,EAAE;YACT,MAAM,EAAE,IAAI,KAAkB,MAAM,EAAnB,QAAQ,UAAK,MAAM,EAA9B,QAAqB,CAAS,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,iCAAM,QAAQ,KAAE,IAAI,kCAAO,IAAI,GAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;YAClH,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,UAAU,CAAC,CAAC;SACnD;QAED,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;CAAA","sourcesContent":["import axios, { AxiosRequestConfig } from \"axios\";\nimport deepmerge from \"deepmerge\";\nimport { UrlSourceConfiguration } from \"../OptionModel.js\";\n\nconst METADATA_PATH = \"$metadata\";\nconst PWD_BLIND_TEXT = { password: \"xxx hidden xxx\" };\n\nfunction evaluateRequestConfig(url: string, config: UrlSourceConfiguration): AxiosRequestConfig {\n const defaultReqConfig: AxiosRequestConfig = {\n url: url,\n method: \"GET\",\n headers: {\n // Added Accept: \"application/xml\" to ensure OData API servers\n // return metadata in XML format, as axios defaults to application/json.\n Accept: \"application/xml\",\n },\n };\n const reqConfig: AxiosRequestConfig = config.custom\n ? config.custom\n : typeof config.username === \"string\" && typeof config?.password === \"string\"\n ? { auth: { username: config.username, password: config.password } }\n : {};\n return deepmerge(defaultReqConfig, reqConfig);\n}\n\n/**\n * Retrieves the metadata from the given URL using the given configuration.\n *\n * Failure handling must be implemented by consumer.\n * Exception is thrown for failed requests (400, 401, ...).\n *\n * @param sourceUrl\n * @param sourceConfig\n * @param debug\n */\nexport async function downloadMetadata(\n sourceUrl: string,\n sourceConfig: UrlSourceConfiguration = {},\n debug: boolean = false,\n): Promise<string> {\n // add the $metadata suffix\n const url = sourceUrl.endsWith(METADATA_PATH)\n ? sourceUrl\n : sourceUrl + (sourceUrl.endsWith(\"/\") ? \"\" : \"/\") + METADATA_PATH;\n console.log(`Reading metadata from URL:`, url);\n\n // evaluate configured request config options\n const config = evaluateRequestConfig(url, sourceConfig);\n\n // log request configuration without password\n if (debug) {\n const { auth, ...loggable } = config;\n const safeConfig = auth ? { ...loggable, auth: { ...auth, ...(auth.password ? PWD_BLIND_TEXT : {}) } } : loggable;\n console.log(`Request configuration:`, safeConfig);\n }\n\n // execute the request & return response data\n const response = await axios.request(config);\n return response.data;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/download/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC","sourcesContent":["export { downloadMetadata } from \"./downloadMetadata.js\";\
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/download/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC","sourcesContent":["export { downloadMetadata } from \"./downloadMetadata.js\";\nexport { storeMetadata } from \"./storeMetadata.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storeMetadata.js","sourceRoot":"","sources":["../../src/download/storeMetadata.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,UAAgB,aAAa,CAAC,QAAgB,EAAE,WAAmB,EAAE,QAAiB;;QAC1F,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEtC,IAAI,UAAU,GAAG,WAAW,CAAC;QAC7B,IAAI,QAAQ,EAAE;YACZ,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;YACnD,UAAU,GAAG,MAAM,MAAM,CACvB,WAAW,kCAEN,cAAc,KAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,sBAAsB,CAAC,IACtE,CAAC;SACH;QAED,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QACrB,MAAM,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEtC,OAAO,UAAU,CAAC;IACpB,CAAC;CAAA","sourcesContent":["import { writeFile } from \"node:fs/promises\";\
|
|
1
|
+
{"version":3,"file":"storeMetadata.js","sourceRoot":"","sources":["../../src/download/storeMetadata.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,UAAgB,aAAa,CAAC,QAAgB,EAAE,WAAmB,EAAE,QAAiB;;QAC1F,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEtC,IAAI,UAAU,GAAG,WAAW,CAAC;QAC7B,IAAI,QAAQ,EAAE;YACZ,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;YACnD,UAAU,GAAG,MAAM,MAAM,CACvB,WAAW,kCAEN,cAAc,KAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,sBAAsB,CAAC,IACtE,CAAC;SACH;QAED,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QACrB,MAAM,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEtC,OAAO,UAAU,CAAC;IACpB,CAAC;CAAA","sourcesContent":["import { writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { mkdirp } from \"mkdirp\";\nimport { format, resolveConfig } from \"prettier\";\n\n/**\n * Write (prettified) data to disk.\n *\n * @param filePath\n * @param metadataXml\n * @param prettify\n */\nexport async function storeMetadata(filePath: string, metadataXml: string, prettify: boolean) {\n const outDir = path.dirname(filePath);\n\n let prettified = metadataXml;\n if (prettify) {\n const prettierConfig = await resolveConfig(outDir);\n prettified = await format(\n metadataXml,\n // @ts-ignore: xmlWhitespaceSensitivity is an option of the plugin\n { ...prettierConfig, parser: \"xml\", plugins: [\"@prettier/plugin-xml\"] },\n );\n }\n\n await mkdirp(outDir);\n await writeFile(filePath, prettified);\n\n return prettified;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluateConfig.js","sourceRoot":"","sources":["../src/evaluateConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import deepmerge from \"deepmerge\";\
|
|
1
|
+
{"version":3,"file":"evaluateConfig.js","sourceRoot":"","sources":["../src/evaluateConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import deepmerge from \"deepmerge\";\n\nimport { getDefaultConfig, getMinimalConfig } from \"./defaultConfig.js\";\nimport { CliOptions, ConfigFileOptions, Modes, RunOptions } from \"./OptionModel.js\";\n\n/**\n * Provides default values and evaluates the various config file and CLI options.\n * This function always returns a list of RunOptions,\n * whereby each item represents one generation run / one service.\n *\n * Configurations are merged in the following order (last one wins):\n * - default values\n * - config file: base settings\n * - config file: service specific settings\n * - CLI options\n *\n * If the CLI options specify source and output, then the service config is completely ignored and only the\n * base settings are applied from the config file.\n *\n * If the CLI options do not specify source and output, but do specify services, then these services must\n * exist in the config file and each service must supply values for source and output as a minimum.\n *\n * If the CLI options neither entail source nor services, then at least one service must be configured in the\n * config file. All configured services are returned.\n *\n * @param cliOpts CLI passed options\n * @param configOpts config file options\n */\nexport function evaluateConfigOptions(\n cliOpts: CliOptions,\n configOpts: ConfigFileOptions | undefined\n): Array<RunOptions> {\n const defaultConfig = configOpts?.naming?.minimalDefaults ? getMinimalConfig() : getDefaultConfig();\n // No config file\n if (!configOpts) {\n if (!cliOpts.source || !cliOpts.output) {\n throw new Error(\"Without any configuration file options --source and --output must be specified!\");\n }\n return [deepmerge(defaultConfig, cliOpts)];\n }\n\n const { services: cliServices, source, output, ...cliBaseOpts } = cliOpts;\n const { services: confServices, ...confBaseOpts } = configOpts;\n\n // No configurations of services in config file\n // or CLI opts specify source and output => ignore service config\n if ((source && output) || !confServices) {\n if (!source || !output) {\n throw new Error(\n \"No services were configured in config file, so options --source and --output must be specified!\"\n );\n }\n const merged = deepmerge.all([defaultConfig, confBaseOpts, cliOpts]) as RunOptions;\n return [safeGuardOptions(merged)];\n }\n\n // Either services are specified or we use all configured services\n const servicesToUse = cliServices?.length ? cliServices : Object.keys(confServices);\n return servicesToUse.map((s) => {\n const service = confServices[s];\n if (!service) {\n throw new Error(`Specified service \"${s}\" doesn't exist in configuration!`);\n }\n const serviceDefault =\n service.naming?.minimalDefaults && !configOpts.naming?.minimalDefaults ? getMinimalConfig() : defaultConfig;\n const merged = deepmerge.all([serviceDefault, confBaseOpts, service, cliBaseOpts]) as RunOptions;\n return safeGuardOptions(merged);\n });\n}\n\n/**\n * Make sure that some options are only active if in correct mode.\n * @param options\n */\nfunction safeGuardOptions(options: RunOptions): RunOptions {\n // skip options are not valid for service generation\n if (options.mode === Modes.service || options.mode === Modes.all) {\n options.skipEditableModels = false;\n options.skipIdModels = false;\n options.skipOperations = false;\n }\n // special option which is only valid for model generation\n if (options.mode !== Modes.models) {\n options.v2ModelsWithExtraResultsWrapping = false;\n }\n\n return options;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImportContainer.js","sourceRoot":"","sources":["../../src/generator/ImportContainer.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"path\";\r\nimport { ODataVersions } from \"@odata2ts/odata-core\";\r\nimport { ImportDeclarationStructure, OptionalKind } from \"ts-morph\";\r\nimport { DataModel } from \"../data-model/DataModel.js\";\r\nimport { ComplexType } from \"../data-model/DataTypeModel.js\";\r\nimport {\r\n ClientApiImports,\r\n CoreImports,\r\n LIB_MODULES,\r\n QueryObjectImports,\r\n ServiceImports,\r\n VERSIONED_CORE_IMPORTS,\r\n VERSIONED_SERVICE_IMPORTS,\r\n} from \"./import/ImportObjects.js\";\r\nimport { ImportedNameValidator } from \"./ImportedNameValidator.js\";\r\n\r\ntype ImportContainerType = Record<\r\n keyof typeof LIB_MODULES,\r\n { regular: Map<string, string>; typeOnly: Map<string, string> }\r\n>;\r\n\r\n/**\r\n * Handles all the import statements for a given file.\r\n *\r\n * Features a renaming mechanism, so that when the import name conflicts with an existing import a new\r\n * name is generated and returned.\r\n *\r\n * Map<string,string>\r\n */\r\nexport class ImportContainer {\r\n private readonly importedNameValidator: ImportedNameValidator;\r\n // mapping of a custom defined type to a primitive type\r\n private customTypes = {\r\n regular: new Map<string, Map<string, string>>(),\r\n typeOnly: new Map<string, Map<string, string>>(),\r\n };\r\n // imports to generated artefacts\r\n private internalImports = {\r\n regular: new Map<string, Map<string, string>>(),\r\n typeOnly: new Map<string, Map<string, string>>(),\r\n };\r\n\r\n private libs: ImportContainerType = {\r\n core: { regular: new Map(), typeOnly: new Map() },\r\n qObject: { regular: new Map(), typeOnly: new Map() },\r\n clientApi: { regular: new Map(), typeOnly: new Map() },\r\n service: { regular: new Map(), typeOnly: new Map() },\r\n };\r\n\r\n constructor(\r\n protected path: string,\r\n protected fileName: string,\r\n protected dataModel: DataModel,\r\n protected mainFileNames: { model: string; qObject: string; service: string },\r\n protected readonly bundledFileGeneration: boolean,\r\n protected reservedNames: Array<string> | undefined,\r\n ) {\r\n this.importedNameValidator = new ImportedNameValidator(reservedNames);\r\n }\r\n\r\n public addCoreLib(odataVersion: ODataVersions, coreLib: CoreImports) {\r\n const isVersioned = VERSIONED_CORE_IMPORTS.includes(coreLib);\r\n const name = CoreImports[coreLib] + (isVersioned ? ODataVersions[odataVersion] : \"\");\r\n const importName = this.importedNameValidator.validateName(LIB_MODULES.core, name);\r\n\r\n // TODO: currently only types are imported, however enums could potentially be imported too\r\n this.libs.core.typeOnly.set(name, importName);\r\n\r\n return importName;\r\n }\r\n\r\n private addFromQObject(name: string, typeOnlyImport = false) {\r\n const importName = this.importedNameValidator.validateName(LIB_MODULES.qObject, name);\r\n\r\n const imports = this.libs.qObject;\r\n if (typeOnlyImport) {\r\n if (!imports.regular.has(name)) {\r\n imports.typeOnly.set(name, importName);\r\n }\r\n } else {\r\n if (imports.typeOnly.has(name)) {\r\n imports.typeOnly.delete(name);\r\n }\r\n imports.regular.set(name, importName);\r\n }\r\n\r\n return importName;\r\n }\r\n\r\n public addQObject(qObject: QueryObjectImports | string) {\r\n return this.addFromQObject(qObject);\r\n }\r\n\r\n public addQObjectType(qObject: string) {\r\n return this.addFromQObject(qObject, true);\r\n }\r\n\r\n public addClientApi(clientApi: ClientApiImports) {\r\n const name = ClientApiImports[clientApi];\r\n const importName = this.importedNameValidator.validateName(LIB_MODULES.clientApi, name);\r\n\r\n // complete client api consists only of types\r\n this.libs.clientApi.typeOnly.set(name, importName);\r\n return importName;\r\n }\r\n\r\n public addServiceObject(odataVersion: ODataVersions, serviceObject: ServiceImports) {\r\n const isVersioned = VERSIONED_SERVICE_IMPORTS.includes(serviceObject);\r\n const name = ServiceImports[serviceObject] + (isVersioned ? ODataVersions[odataVersion] : \"\");\r\n const importName = this.importedNameValidator.validateName(LIB_MODULES.service, name);\r\n\r\n // only regular imports for the service package\r\n this.libs.service.regular.set(name, importName);\r\n return importName;\r\n }\r\n\r\n // TODO: make sure that regular imports win over additional typeOnly imports\r\n public addCustomType(moduleName: string, typeName: string, isTypeOnly: boolean = false) {\r\n const importName = this.importedNameValidator.validateName(moduleName, typeName);\r\n const imports = isTypeOnly ? this.customTypes.typeOnly : this.customTypes.regular;\r\n let importList = imports.get(moduleName);\r\n if (!importList) {\r\n importList = new Map();\r\n imports.set(moduleName, importList);\r\n }\r\n\r\n importList.set(typeName, importName);\r\n return importName;\r\n }\r\n\r\n private pathAndFile(filePath: string, fileName: string) {\r\n return filePath ? `${filePath}/${fileName}` : fileName;\r\n }\r\n\r\n private isDifferentFile(filePath: string, fileName: string) {\r\n return this.pathAndFile(this.path, this.fileName) !== this.pathAndFile(filePath, fileName);\r\n }\r\n\r\n private addGeneratedImport(folderPath: string, fileName: string, name: string, isTypeOnly = false): string {\r\n // imports are only relevant for different files\r\n if (!this.isDifferentFile(folderPath, fileName)) {\r\n return name;\r\n }\r\n\r\n const moduleName = this.pathAndFile(folderPath, fileName);\r\n const importName = this.importedNameValidator.validateName(moduleName, name);\r\n const imports = isTypeOnly ? this.internalImports.typeOnly : this.internalImports.regular;\r\n\r\n if (isTypeOnly && this.internalImports.regular.get(moduleName)?.has(name)) {\r\n return importName;\r\n }\r\n if (!isTypeOnly && this.internalImports.typeOnly.get(moduleName)?.has(name)) {\r\n this.internalImports.typeOnly.get(moduleName)?.delete(name);\r\n }\r\n\r\n const importList = imports.get(moduleName) || new Map<string, string>();\r\n importList.set(name, importName);\r\n imports.set(moduleName, importList);\r\n\r\n return importName;\r\n }\r\n\r\n public addGeneratedModel(fqName: string, name: string, isTypeOnly = true): string {\r\n if (this.bundledFileGeneration) {\r\n return this.addGeneratedImport(\"\", this.mainFileNames.model, name, isTypeOnly);\r\n } else {\r\n const model = this.dataModel.getModel(fqName) as ComplexType | undefined;\r\n if (!model && fqName !== \"\") {\r\n throw new Error(`Cannot find model by its fully qualified name: ${fqName}!`);\r\n }\r\n\r\n const folderPath = model ? model.folderPath : \"\";\r\n const modelName = model ? model.modelName : this.mainFileNames.model;\r\n return this.addGeneratedImport(folderPath, modelName, name, isTypeOnly);\r\n }\r\n }\r\n\r\n public addGeneratedQObject(fqName: string, name: string, isTypeOnly = false) {\r\n if (this.bundledFileGeneration) {\r\n return this.addGeneratedImport(\"\", this.mainFileNames.qObject, name, isTypeOnly);\r\n } else {\r\n const model = this.dataModel.getModel(fqName) as ComplexType | undefined;\r\n if (!model && fqName !== \"\") {\r\n throw new Error(`Cannot find q-object by its fully qualified name: ${fqName}!`);\r\n }\r\n\r\n const folderPath = model ? model.folderPath : \"\";\r\n const qName = model ? model.qName : this.mainFileNames!.qObject;\r\n return this.addGeneratedImport(folderPath, qName, name, isTypeOnly);\r\n }\r\n }\r\n\r\n public addGeneratedService(fqName: string, name: string) {\r\n if (this.bundledFileGeneration) {\r\n return this.addGeneratedImport(\"\", this.mainFileNames.service, name);\r\n } else {\r\n const model = this.dataModel.getModel(fqName) as ComplexType;\r\n return this.addGeneratedImport(model.folderPath, model.serviceName, name);\r\n }\r\n }\r\n\r\n private createImportDecl(\r\n module: string,\r\n toImport: Map<string, string>,\r\n isTypeOnly = false,\r\n ): OptionalKind<ImportDeclarationStructure> {\r\n return {\r\n namedImports: this.getNamedImports(toImport),\r\n moduleSpecifier: module,\r\n isTypeOnly,\r\n };\r\n }\r\n\r\n public getImportDeclarations(): Array<OptionalKind<ImportDeclarationStructure>> {\r\n return [\r\n ...Object.entries(this.libs).reduce<Array<OptionalKind<ImportDeclarationStructure>>>(\r\n (result, [moduleName, toImport]) => {\r\n const module = LIB_MODULES[moduleName as keyof typeof LIB_MODULES];\r\n if (toImport.typeOnly.size) {\r\n result.push(this.createImportDecl(module, toImport.typeOnly, true));\r\n }\r\n if (toImport.regular.size) {\r\n result.push(this.createImportDecl(module, toImport.regular));\r\n }\r\n return result;\r\n },\r\n [],\r\n ),\r\n ...[...this.customTypes.typeOnly]\r\n .filter(([moduleName, toImport]) => toImport.size > 0)\r\n .map(([moduleName, toImport]) => {\r\n return this.createImportDecl(moduleName, toImport, true);\r\n }),\r\n ...[...this.customTypes.regular]\r\n .filter(([moduleName, toImport]) => toImport.size > 0)\r\n .map(([moduleName, toImport]) => {\r\n return this.createImportDecl(moduleName, toImport);\r\n }),\r\n ...[...this.internalImports.typeOnly]\r\n .filter(([_, toImport]) => toImport.size > 0)\r\n .map(([key, toImport]) => {\r\n const module = this.getModuleSpecifier(key);\r\n return this.createImportDecl(module, toImport, true);\r\n }),\r\n ...[...this.internalImports.regular]\r\n .filter(([_, toImport]) => toImport.size > 0)\r\n .map(([key, toImport]) => {\r\n const module = this.getModuleSpecifier(key);\r\n return this.createImportDecl(module, toImport);\r\n }),\r\n ];\r\n }\r\n\r\n private getNamedImports(toImport: Map<string, string>): Array<{ name: string; alias: string | undefined }> {\r\n return [...toImport.entries()].map(([name, alias]) => ({\r\n name,\r\n alias: alias !== name ? alias : undefined,\r\n }));\r\n }\r\n\r\n private getModuleSpecifier(filePath: string): string {\r\n const relativePath = path.relative(this.path, filePath).replaceAll(path.sep, \"/\");\r\n return !relativePath.startsWith(\".\") ? \"./\" + relativePath : relativePath;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ImportContainer.js","sourceRoot":"","sources":["../../src/generator/ImportContainer.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"path\";\nimport { ODataVersions } from \"@odata2ts/odata-core\";\nimport { ImportDeclarationStructure, OptionalKind } from \"ts-morph\";\nimport { DataModel } from \"../data-model/DataModel.js\";\nimport { ComplexType } from \"../data-model/DataTypeModel.js\";\nimport {\n ClientApiImports,\n CoreImports,\n LIB_MODULES,\n QueryObjectImports,\n ServiceImports,\n VERSIONED_CORE_IMPORTS,\n VERSIONED_SERVICE_IMPORTS,\n} from \"./import/ImportObjects.js\";\nimport { ImportedNameValidator } from \"./ImportedNameValidator.js\";\n\ntype ImportContainerType = Record<\n keyof typeof LIB_MODULES,\n { regular: Map<string, string>; typeOnly: Map<string, string> }\n>;\n\n/**\n * Handles all the import statements for a given file.\n *\n * Features a renaming mechanism, so that when the import name conflicts with an existing import a new\n * name is generated and returned.\n *\n * Map<string,string>\n */\nexport class ImportContainer {\n private readonly importedNameValidator: ImportedNameValidator;\n // mapping of a custom defined type to a primitive type\n private customTypes = {\n regular: new Map<string, Map<string, string>>(),\n typeOnly: new Map<string, Map<string, string>>(),\n };\n // imports to generated artefacts\n private internalImports = {\n regular: new Map<string, Map<string, string>>(),\n typeOnly: new Map<string, Map<string, string>>(),\n };\n\n private libs: ImportContainerType = {\n core: { regular: new Map(), typeOnly: new Map() },\n qObject: { regular: new Map(), typeOnly: new Map() },\n clientApi: { regular: new Map(), typeOnly: new Map() },\n service: { regular: new Map(), typeOnly: new Map() },\n };\n\n constructor(\n protected path: string,\n protected fileName: string,\n protected dataModel: DataModel,\n protected mainFileNames: { model: string; qObject: string; service: string },\n protected readonly bundledFileGeneration: boolean,\n protected reservedNames: Array<string> | undefined,\n ) {\n this.importedNameValidator = new ImportedNameValidator(reservedNames);\n }\n\n public addCoreLib(odataVersion: ODataVersions, coreLib: CoreImports) {\n const isVersioned = VERSIONED_CORE_IMPORTS.includes(coreLib);\n const name = CoreImports[coreLib] + (isVersioned ? ODataVersions[odataVersion] : \"\");\n const importName = this.importedNameValidator.validateName(LIB_MODULES.core, name);\n\n // TODO: currently only types are imported, however enums could potentially be imported too\n this.libs.core.typeOnly.set(name, importName);\n\n return importName;\n }\n\n private addFromQObject(name: string, typeOnlyImport = false) {\n const importName = this.importedNameValidator.validateName(LIB_MODULES.qObject, name);\n\n const imports = this.libs.qObject;\n if (typeOnlyImport) {\n if (!imports.regular.has(name)) {\n imports.typeOnly.set(name, importName);\n }\n } else {\n if (imports.typeOnly.has(name)) {\n imports.typeOnly.delete(name);\n }\n imports.regular.set(name, importName);\n }\n\n return importName;\n }\n\n public addQObject(qObject: QueryObjectImports | string) {\n return this.addFromQObject(qObject);\n }\n\n public addQObjectType(qObject: string) {\n return this.addFromQObject(qObject, true);\n }\n\n public addClientApi(clientApi: ClientApiImports) {\n const name = ClientApiImports[clientApi];\n const importName = this.importedNameValidator.validateName(LIB_MODULES.clientApi, name);\n\n // complete client api consists only of types\n this.libs.clientApi.typeOnly.set(name, importName);\n return importName;\n }\n\n public addServiceObject(odataVersion: ODataVersions, serviceObject: ServiceImports) {\n const isVersioned = VERSIONED_SERVICE_IMPORTS.includes(serviceObject);\n const name = ServiceImports[serviceObject] + (isVersioned ? ODataVersions[odataVersion] : \"\");\n const importName = this.importedNameValidator.validateName(LIB_MODULES.service, name);\n\n // only regular imports for the service package\n this.libs.service.regular.set(name, importName);\n return importName;\n }\n\n // TODO: make sure that regular imports win over additional typeOnly imports\n public addCustomType(moduleName: string, typeName: string, isTypeOnly: boolean = false) {\n const importName = this.importedNameValidator.validateName(moduleName, typeName);\n const imports = isTypeOnly ? this.customTypes.typeOnly : this.customTypes.regular;\n let importList = imports.get(moduleName);\n if (!importList) {\n importList = new Map();\n imports.set(moduleName, importList);\n }\n\n importList.set(typeName, importName);\n return importName;\n }\n\n private pathAndFile(filePath: string, fileName: string) {\n return filePath ? `${filePath}/${fileName}` : fileName;\n }\n\n private isDifferentFile(filePath: string, fileName: string) {\n return this.pathAndFile(this.path, this.fileName) !== this.pathAndFile(filePath, fileName);\n }\n\n private addGeneratedImport(folderPath: string, fileName: string, name: string, isTypeOnly = false): string {\n // imports are only relevant for different files\n if (!this.isDifferentFile(folderPath, fileName)) {\n return name;\n }\n\n const moduleName = this.pathAndFile(folderPath, fileName);\n const importName = this.importedNameValidator.validateName(moduleName, name);\n const imports = isTypeOnly ? this.internalImports.typeOnly : this.internalImports.regular;\n\n if (isTypeOnly && this.internalImports.regular.get(moduleName)?.has(name)) {\n return importName;\n }\n if (!isTypeOnly && this.internalImports.typeOnly.get(moduleName)?.has(name)) {\n this.internalImports.typeOnly.get(moduleName)?.delete(name);\n }\n\n const importList = imports.get(moduleName) || new Map<string, string>();\n importList.set(name, importName);\n imports.set(moduleName, importList);\n\n return importName;\n }\n\n public addGeneratedModel(fqName: string, name: string, isTypeOnly = true): string {\n if (this.bundledFileGeneration) {\n return this.addGeneratedImport(\"\", this.mainFileNames.model, name, isTypeOnly);\n } else {\n const model = this.dataModel.getModel(fqName) as ComplexType | undefined;\n if (!model && fqName !== \"\") {\n throw new Error(`Cannot find model by its fully qualified name: ${fqName}!`);\n }\n\n const folderPath = model ? model.folderPath : \"\";\n const modelName = model ? model.modelName : this.mainFileNames.model;\n return this.addGeneratedImport(folderPath, modelName, name, isTypeOnly);\n }\n }\n\n public addGeneratedQObject(fqName: string, name: string, isTypeOnly = false) {\n if (this.bundledFileGeneration) {\n return this.addGeneratedImport(\"\", this.mainFileNames.qObject, name, isTypeOnly);\n } else {\n const model = this.dataModel.getModel(fqName) as ComplexType | undefined;\n if (!model && fqName !== \"\") {\n throw new Error(`Cannot find q-object by its fully qualified name: ${fqName}!`);\n }\n\n const folderPath = model ? model.folderPath : \"\";\n const qName = model ? model.qName : this.mainFileNames!.qObject;\n return this.addGeneratedImport(folderPath, qName, name, isTypeOnly);\n }\n }\n\n public addGeneratedService(fqName: string, name: string) {\n if (this.bundledFileGeneration) {\n return this.addGeneratedImport(\"\", this.mainFileNames.service, name);\n } else {\n const model = this.dataModel.getModel(fqName) as ComplexType;\n return this.addGeneratedImport(model.folderPath, model.serviceName, name);\n }\n }\n\n private createImportDecl(\n module: string,\n toImport: Map<string, string>,\n isTypeOnly = false,\n ): OptionalKind<ImportDeclarationStructure> {\n return {\n namedImports: this.getNamedImports(toImport),\n moduleSpecifier: module,\n isTypeOnly,\n };\n }\n\n public getImportDeclarations(): Array<OptionalKind<ImportDeclarationStructure>> {\n return [\n ...Object.entries(this.libs).reduce<Array<OptionalKind<ImportDeclarationStructure>>>(\n (result, [moduleName, toImport]) => {\n const module = LIB_MODULES[moduleName as keyof typeof LIB_MODULES];\n if (toImport.typeOnly.size) {\n result.push(this.createImportDecl(module, toImport.typeOnly, true));\n }\n if (toImport.regular.size) {\n result.push(this.createImportDecl(module, toImport.regular));\n }\n return result;\n },\n [],\n ),\n ...[...this.customTypes.typeOnly]\n .filter(([moduleName, toImport]) => toImport.size > 0)\n .map(([moduleName, toImport]) => {\n return this.createImportDecl(moduleName, toImport, true);\n }),\n ...[...this.customTypes.regular]\n .filter(([moduleName, toImport]) => toImport.size > 0)\n .map(([moduleName, toImport]) => {\n return this.createImportDecl(moduleName, toImport);\n }),\n ...[...this.internalImports.typeOnly]\n .filter(([_, toImport]) => toImport.size > 0)\n .map(([key, toImport]) => {\n const module = this.getModuleSpecifier(key);\n return this.createImportDecl(module, toImport, true);\n }),\n ...[...this.internalImports.regular]\n .filter(([_, toImport]) => toImport.size > 0)\n .map(([key, toImport]) => {\n const module = this.getModuleSpecifier(key);\n return this.createImportDecl(module, toImport);\n }),\n ];\n }\n\n private getNamedImports(toImport: Map<string, string>): Array<{ name: string; alias: string | undefined }> {\n return [...toImport.entries()].map(([name, alias]) => ({\n name,\n alias: alias !== name ? alias : undefined,\n }));\n }\n\n private getModuleSpecifier(filePath: string): string {\n const relativePath = path.relative(this.path, filePath).replaceAll(path.sep, \"/\");\n return !relativePath.startsWith(\".\") ? \"./\" + relativePath : relativePath;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImportedNameValidator.js","sourceRoot":"","sources":["../../src/generator/ImportedNameValidator.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,qBAAqB;IAGhC,YAAmB,aAAyC;QAFpD,kBAAa,GAAG,IAAI,GAAG,EAAkC,CAAC;QAGhE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAC5B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,YAAY,CAAC,SAAiB,EAAE,IAAY;;QACjD,MAAM,UAAU,GAAG,MAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QAEtC,IAAI,OAAO,EAAE;YACX,OAAO,OAAO,CAAC;SAChB;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;QACtD,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAEnE,UAAU,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAEzC,OAAO,MAAM,CAAC;IAChB,CAAC;CACF","sourcesContent":["export class ImportedNameValidator {\
|
|
1
|
+
{"version":3,"file":"ImportedNameValidator.js","sourceRoot":"","sources":["../../src/generator/ImportedNameValidator.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,qBAAqB;IAGhC,YAAmB,aAAyC;QAFpD,kBAAa,GAAG,IAAI,GAAG,EAAkC,CAAC;QAGhE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAC5B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,YAAY,CAAC,SAAiB,EAAE,IAAY;;QACjD,MAAM,UAAU,GAAG,MAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QAEtC,IAAI,OAAO,EAAE;YACX,OAAO,OAAO,CAAC;SAChB;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;QACtD,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAEnE,UAAU,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAEzC,OAAO,MAAM,CAAC;IAChB,CAAC;CACF","sourcesContent":["export class ImportedNameValidator {\n private importedNames = new Map<string, Record<string, string>>();\n\n public constructor(reservedNames?: Array<string> | undefined) {\n reservedNames?.forEach((rn) => {\n this.importedNames.set(rn, { [\"_\"]: rn });\n });\n }\n\n public validateName(qualifier: string, name: string): string {\n const qualifiers = this.importedNames.get(name) ?? {};\n const hitName = qualifiers[qualifier];\n\n if (hitName) {\n return hitName;\n }\n\n const qualifiersSize = Object.keys(qualifiers).length;\n const result = qualifiersSize ? `${name}_${qualifiersSize}` : name;\n\n qualifiers[qualifier] = result;\n this.importedNames.set(name, qualifiers);\n\n return result;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelGenerator.js","sourceRoot":"","sources":["../../src/generator/ModelGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["import { ODataVersions } from \"@odata2ts/odata-core\";\r\nimport { JSDocStructure, OptionalKind, StructureKind } from \"ts-morph\";\r\nimport { DataModel } from \"../data-model/DataModel.js\";\r\nimport { ComplexType, DataTypes, EntityType, OperationType, PropertyModel } from \"../data-model/DataTypeModel.js\";\r\nimport { NamingHelper } from \"../data-model/NamingHelper.js\";\r\nimport { EntityBasedGeneratorFunction, GeneratorFunctionOptions } from \"../FactoryFunctionModel.js\";\r\nimport { FileHandler } from \"../project/FileHandler.js\";\r\nimport { ProjectManager } from \"../project/ProjectManager.js\";\r\nimport { CoreImports } from \"./import/ImportObjects.js\";\r\nimport { ImportContainer } from \"./ImportContainer.js\";\r\n\r\nexport const generateModels: EntityBasedGeneratorFunction = (\r\n project: ProjectManager,\r\n dataModel,\r\n version,\r\n options,\r\n namingHelper,\r\n) => {\r\n const generator = new ModelGenerator(project, dataModel, version, options, namingHelper);\r\n return generator.generate();\r\n};\r\n\r\nclass ModelGenerator {\r\n constructor(\r\n private project: ProjectManager,\r\n private dataModel: DataModel,\r\n private version: ODataVersions,\r\n private options: GeneratorFunctionOptions,\r\n private namingHelper: NamingHelper,\r\n ) {}\r\n\r\n public async generate(): Promise<void> {\r\n this.project.initModels();\r\n\r\n const promises: Array<Promise<void>> = [\r\n ...this.generateEnums(),\r\n ...this.generateEntityTypeModels(),\r\n ...this.generateComplexTypeModels(),\r\n ];\r\n\r\n if (!this.options.skipOperations) {\r\n promises.push(this.generateUnboundOperationParams());\r\n }\r\n\r\n await Promise.all(promises);\r\n\r\n return this.project.finalizeModels();\r\n }\r\n\r\n private generateEnums() {\r\n return this.dataModel.getEnums().map((et) => {\r\n const file = this.project.createOrGetModelFile(et.folderPath, et.modelName);\r\n\r\n const isNumeric = this.options.numericEnums;\r\n file.getFile().addEnum({\r\n name: et.modelName,\r\n isExported: true,\r\n members: et.members.map((mem) => ({\r\n name: mem.name,\r\n initializer: isNumeric ? String(mem.value) : `\"${mem.name}\"`,\r\n })),\r\n });\r\n\r\n return this.project.finalizeFile(file);\r\n });\r\n }\r\n\r\n private generateEntityTypeModels() {\r\n return this.dataModel.getEntityTypes().map((model) => {\r\n const file = this.project.createOrGetModelFile(model.folderPath, model.modelName, [\r\n model.modelName,\r\n model.id.modelName,\r\n model.editableName,\r\n ]);\r\n\r\n // query model\r\n this.generateModel(file, model);\r\n\r\n // key model\r\n if (!this.options.skipIdModels && model.generateId) {\r\n this.generateIdModel(file, model);\r\n }\r\n\r\n // editable model\r\n if (!this.options.skipEditableModels) {\r\n this.generateEditableModel(file, model);\r\n }\r\n\r\n // param models for bound operations\r\n if (!this.options.skipOperations) {\r\n [\r\n ...this.dataModel.getEntityTypeOperations(model.fqName),\r\n ...this.dataModel.getEntitySetOperations(model.fqName),\r\n ].forEach((operation) => {\r\n this.generateOperationParams(file, operation);\r\n });\r\n }\r\n\r\n return this.project.finalizeFile(file);\r\n });\r\n }\r\n\r\n private generateComplexTypeModels() {\r\n return this.dataModel.getComplexTypes().map((model) => {\r\n const file = this.project.createOrGetModelFile(model.folderPath, model.modelName, [\r\n model.modelName,\r\n model.editableName,\r\n ]);\r\n\r\n // query model\r\n this.generateModel(file, model);\r\n\r\n // editable model\r\n if (!this.options.skipEditableModels) {\r\n this.generateEditableModel(file, model);\r\n }\r\n\r\n return this.project.finalizeFile(file);\r\n });\r\n }\r\n\r\n private generateModel(file: FileHandler, model: ComplexType | EntityType) {\r\n const imports = file.getImports();\r\n let extendsClause = undefined;\r\n if (model.finalBaseClass) {\r\n const modelName = imports.addGeneratedModel(\r\n model.baseClasses[0],\r\n this.namingHelper.getModelName(model.finalBaseClass),\r\n );\r\n extendsClause = [modelName];\r\n }\r\n\r\n file.getFile().addInterface({\r\n name: model.modelName,\r\n isExported: true,\r\n properties: model.props.map((p) => {\r\n const isEntity = p.dataType == DataTypes.ModelType;\r\n return {\r\n name: p.name,\r\n type: this.getPropType(file.getImports(), p),\r\n // props for entities or entity collections are not added in V4 if not explicitly expanded\r\n hasQuestionToken: this.dataModel.isV4() && isEntity,\r\n docs: this.options.skipComments ? undefined : [this.generatePropDoc(p, model)],\r\n };\r\n }),\r\n extends: extendsClause,\r\n });\r\n }\r\n\r\n private generatePropDoc(prop: PropertyModel, model: ComplexType | EntityType): OptionalKind<JSDocStructure> {\r\n const isKeyProp = (model as EntityType).keyNames?.includes(prop.odataName);\r\n const baseAttribs: Array<string> = [];\r\n if (isKeyProp) {\r\n baseAttribs.push(\"**Key Property**: This is a key property used to identify the entity.\");\r\n }\r\n if (prop.managed) {\r\n baseAttribs.push(\"**Managed**: This property is managed on the server side and cannot be edited.\");\r\n }\r\n if (prop.converters?.length) {\r\n baseAttribs.push(`**Applied Converters**: ${prop.converters.map((c) => c.converterId).join(\",\")}.`);\r\n }\r\n\r\n const attributeTable: Array<[string, string]> = [\r\n [\"Name\", prop.odataName],\r\n [\"Type\", prop.odataType],\r\n ];\r\n if (prop.required) {\r\n attributeTable.push([\"Nullable\", \"false\"]);\r\n }\r\n\r\n const description =\r\n (baseAttribs ? baseAttribs.join(\"<br/>\") + \"\\n\\n\" : \"\") +\r\n \"OData Attributes:\\n\" +\r\n \"|Attribute Name | Attribute Value |\\n| --- | ---|\\n\" +\r\n attributeTable.map((row) => `| ${row[0]} | \\`${row[1]}\\` |`).join(\"\\n\");\r\n\r\n return { kind: StructureKind.JSDoc, description };\r\n }\r\n\r\n private getPropType(imports: ImportContainer, prop: PropertyModel): string {\r\n // V2 entity special: deferred content\r\n let suffix = \"\";\r\n if (this.dataModel.isV2() && prop.dataType == DataTypes.ModelType) {\r\n const defContent = imports.addCoreLib(this.version, CoreImports.DeferredContent);\r\n suffix = ` | ${defContent}`;\r\n }\r\n\r\n let typeName: string;\r\n if (prop.dataType === DataTypes.PrimitiveType) {\r\n // custom types which require type imports => possible via converters\r\n typeName = prop.typeModule ? imports.addCustomType(prop.typeModule, prop.type, true) : prop.type;\r\n } else {\r\n typeName = imports.addGeneratedModel(prop.fqType, prop.type);\r\n }\r\n\r\n // Collections\r\n if (prop.isCollection) {\r\n const type = `Array<${typeName}>`;\r\n if (this.dataModel.isV2() && this.options.v2ModelsWithExtraResultsWrapping) {\r\n return `{ results: ${type} }` + suffix;\r\n } else {\r\n return type + suffix;\r\n }\r\n }\r\n\r\n // primitive, enum & complex types\r\n return typeName + (prop.required ? \"\" : \" | null\") + suffix;\r\n }\r\n\r\n private generateIdModel(file: FileHandler, model: EntityType) {\r\n const singleType = model.keys.length === 1 ? `${model.keys[0].type} | ` : \"\";\r\n const keyTypes = model.keys\r\n .map((keyProp) => `${keyProp.name}: ${this.getPropType(file.getImports(), keyProp)}`)\r\n .join(\",\");\r\n const type = `${singleType}{${keyTypes}}`;\r\n\r\n file.getFile().addTypeAlias({\r\n name: model.id.modelName,\r\n isExported: true,\r\n type,\r\n });\r\n }\r\n\r\n private generateEditableModel(file: FileHandler, model: ComplexType) {\r\n const entityTypes = [DataTypes.ModelType, DataTypes.ComplexType];\r\n const allProps = [...model.baseProps, ...model.props].filter((p) => !p.managed);\r\n\r\n const requiredProps = allProps\r\n .filter((p) => p.required && !entityTypes.includes(p.dataType))\r\n .map((p) => `\"${p.name}\"`)\r\n .join(\" | \");\r\n const optionalProps = allProps\r\n .filter((p) => !p.required && !entityTypes.includes(p.dataType))\r\n .map((p) => `\"${p.name}\"`)\r\n .join(\" | \");\r\n const complexProps = allProps.filter((p) => p.dataType === DataTypes.ComplexType);\r\n\r\n const extendsClause = [\r\n requiredProps ? `Pick<${model.modelName}, ${requiredProps}>` : null,\r\n optionalProps ? `Partial<Pick<${model.modelName}, ${optionalProps}>>` : null,\r\n ].filter((e): e is string => !!e);\r\n\r\n file.getFile().addInterface({\r\n name: model.editableName,\r\n isExported: true,\r\n extends: extendsClause,\r\n properties: !complexProps\r\n ? undefined\r\n : complexProps.map((p) => {\r\n return {\r\n name: p.name,\r\n type: this.getEditablePropType(file.getImports(), p),\r\n // optional props don't need to be specified in editable model\r\n // also, entities would require deep insert func => we make it optional for now\r\n hasQuestionToken: !p.required || p.dataType === DataTypes.ModelType,\r\n };\r\n }),\r\n });\r\n }\r\n\r\n private getEditablePropType(imports: ImportContainer, prop: PropertyModel): string {\r\n const isModelType = [DataTypes.ModelType, DataTypes.ComplexType].includes(prop.dataType);\r\n\r\n let editableType = prop.type;\r\n if (isModelType) {\r\n const editName = this.dataModel.getComplexType(prop.fqType)!.editableName;\r\n editableType = imports.addGeneratedModel(prop.fqType, editName);\r\n }\r\n\r\n // Collections\r\n if (prop.isCollection) {\r\n return `Array<${editableType}>`;\r\n }\r\n\r\n // primitive, enum & complex types\r\n return editableType + (prop.required ? \"\" : \" | null\");\r\n }\r\n\r\n private async generateUnboundOperationParams() {\r\n const unboundOps = this.dataModel.getUnboundOperationTypes();\r\n const reservedNames = unboundOps.map((op) => op.paramsModelName);\r\n const file = this.project.createOrGetMainModelFile(reservedNames);\r\n\r\n unboundOps.forEach((operation) => {\r\n this.generateOperationParams(file, operation);\r\n });\r\n }\r\n\r\n private generateOperationParams(file: FileHandler, operation: OperationType) {\r\n const paramSets = [operation.parameters, ...(operation.overrides ?? [])].filter((pSet) => !!pSet.length);\r\n\r\n // standard: one interface for parameters\r\n if (paramSets.length === 1) {\r\n file.getFile().addInterface({\r\n name: operation.paramsModelName,\r\n isExported: true,\r\n properties: paramSets[0].map((p) => {\r\n return {\r\n name: p.name,\r\n type: this.getPropType(file.getImports(), p),\r\n hasQuestionToken: !p.required,\r\n };\r\n }),\r\n });\r\n }\r\n // function overload: one type with intersections of different param models\r\n else if (paramSets.length > 1) {\r\n file.getFile().addTypeAlias({\r\n name: operation.paramsModelName,\r\n isExported: true,\r\n type: (writer) => {\r\n paramSets.forEach((pSet, index) => {\r\n writer.block(() => {\r\n pSet.forEach((param, index) => {\r\n const paramType = this.getPropType(file.getImports(), param);\r\n writer.write(`${param.name}${param.required ? \"\" : \"?\"}: ${paramType}`);\r\n if (index < pSet.length - 1) {\r\n writer.write(\",\");\r\n }\r\n });\r\n });\r\n if (index < paramSets.length - 1) {\r\n writer.write(\" | \");\r\n }\r\n });\r\n },\r\n });\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ModelGenerator.js","sourceRoot":"","sources":["../../src/generator/ModelGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["import { ODataVersions } from \"@odata2ts/odata-core\";\nimport { JSDocStructure, OptionalKind, StructureKind } from \"ts-morph\";\nimport { DataModel } from \"../data-model/DataModel.js\";\nimport { ComplexType, DataTypes, EntityType, OperationType, PropertyModel } from \"../data-model/DataTypeModel.js\";\nimport { NamingHelper } from \"../data-model/NamingHelper.js\";\nimport { EntityBasedGeneratorFunction, GeneratorFunctionOptions } from \"../FactoryFunctionModel.js\";\nimport { FileHandler } from \"../project/FileHandler.js\";\nimport { ProjectManager } from \"../project/ProjectManager.js\";\nimport { CoreImports } from \"./import/ImportObjects.js\";\nimport { ImportContainer } from \"./ImportContainer.js\";\n\nexport const generateModels: EntityBasedGeneratorFunction = (\n project: ProjectManager,\n dataModel,\n version,\n options,\n namingHelper,\n) => {\n const generator = new ModelGenerator(project, dataModel, version, options, namingHelper);\n return generator.generate();\n};\n\nclass ModelGenerator {\n constructor(\n private project: ProjectManager,\n private dataModel: DataModel,\n private version: ODataVersions,\n private options: GeneratorFunctionOptions,\n private namingHelper: NamingHelper,\n ) {}\n\n public async generate(): Promise<void> {\n this.project.initModels();\n\n const promises: Array<Promise<void>> = [\n ...this.generateEnums(),\n ...this.generateEntityTypeModels(),\n ...this.generateComplexTypeModels(),\n ];\n\n if (!this.options.skipOperations) {\n promises.push(this.generateUnboundOperationParams());\n }\n\n await Promise.all(promises);\n\n return this.project.finalizeModels();\n }\n\n private generateEnums() {\n return this.dataModel.getEnums().map((et) => {\n const file = this.project.createOrGetModelFile(et.folderPath, et.modelName);\n\n const isNumeric = this.options.numericEnums;\n file.getFile().addEnum({\n name: et.modelName,\n isExported: true,\n members: et.members.map((mem) => ({\n name: mem.name,\n initializer: isNumeric ? String(mem.value) : `\"${mem.name}\"`,\n })),\n });\n\n return this.project.finalizeFile(file);\n });\n }\n\n private generateEntityTypeModels() {\n return this.dataModel.getEntityTypes().map((model) => {\n const file = this.project.createOrGetModelFile(model.folderPath, model.modelName, [\n model.modelName,\n model.id.modelName,\n model.editableName,\n ]);\n\n // query model\n this.generateModel(file, model);\n\n // key model\n if (!this.options.skipIdModels && model.generateId) {\n this.generateIdModel(file, model);\n }\n\n // editable model\n if (!this.options.skipEditableModels) {\n this.generateEditableModel(file, model);\n }\n\n // param models for bound operations\n if (!this.options.skipOperations) {\n [\n ...this.dataModel.getEntityTypeOperations(model.fqName),\n ...this.dataModel.getEntitySetOperations(model.fqName),\n ].forEach((operation) => {\n this.generateOperationParams(file, operation);\n });\n }\n\n return this.project.finalizeFile(file);\n });\n }\n\n private generateComplexTypeModels() {\n return this.dataModel.getComplexTypes().map((model) => {\n const file = this.project.createOrGetModelFile(model.folderPath, model.modelName, [\n model.modelName,\n model.editableName,\n ]);\n\n // query model\n this.generateModel(file, model);\n\n // editable model\n if (!this.options.skipEditableModels) {\n this.generateEditableModel(file, model);\n }\n\n return this.project.finalizeFile(file);\n });\n }\n\n private generateModel(file: FileHandler, model: ComplexType | EntityType) {\n const imports = file.getImports();\n let extendsClause = undefined;\n if (model.finalBaseClass) {\n const modelName = imports.addGeneratedModel(\n model.baseClasses[0],\n this.namingHelper.getModelName(model.finalBaseClass),\n );\n extendsClause = [modelName];\n }\n\n file.getFile().addInterface({\n name: model.modelName,\n isExported: true,\n properties: model.props.map((p) => {\n const isEntity = p.dataType == DataTypes.ModelType;\n return {\n name: p.name,\n type: this.getPropType(file.getImports(), p),\n // props for entities or entity collections are not added in V4 if not explicitly expanded\n hasQuestionToken: this.dataModel.isV4() && isEntity,\n docs: this.options.skipComments ? undefined : [this.generatePropDoc(p, model)],\n };\n }),\n extends: extendsClause,\n });\n }\n\n private generatePropDoc(prop: PropertyModel, model: ComplexType | EntityType): OptionalKind<JSDocStructure> {\n const isKeyProp = (model as EntityType).keyNames?.includes(prop.odataName);\n const baseAttribs: Array<string> = [];\n if (isKeyProp) {\n baseAttribs.push(\"**Key Property**: This is a key property used to identify the entity.\");\n }\n if (prop.managed) {\n baseAttribs.push(\"**Managed**: This property is managed on the server side and cannot be edited.\");\n }\n if (prop.converters?.length) {\n baseAttribs.push(`**Applied Converters**: ${prop.converters.map((c) => c.converterId).join(\",\")}.`);\n }\n\n const attributeTable: Array<[string, string]> = [\n [\"Name\", prop.odataName],\n [\"Type\", prop.odataType],\n ];\n if (prop.required) {\n attributeTable.push([\"Nullable\", \"false\"]);\n }\n\n const description =\n (baseAttribs ? baseAttribs.join(\"<br/>\") + \"\\n\\n\" : \"\") +\n \"OData Attributes:\\n\" +\n \"|Attribute Name | Attribute Value |\\n| --- | ---|\\n\" +\n attributeTable.map((row) => `| ${row[0]} | \\`${row[1]}\\` |`).join(\"\\n\");\n\n return { kind: StructureKind.JSDoc, description };\n }\n\n private getPropType(imports: ImportContainer, prop: PropertyModel): string {\n // V2 entity special: deferred content\n let suffix = \"\";\n if (this.dataModel.isV2() && prop.dataType == DataTypes.ModelType) {\n const defContent = imports.addCoreLib(this.version, CoreImports.DeferredContent);\n suffix = ` | ${defContent}`;\n }\n\n let typeName: string;\n if (prop.dataType === DataTypes.PrimitiveType) {\n // custom types which require type imports => possible via converters\n typeName = prop.typeModule ? imports.addCustomType(prop.typeModule, prop.type, true) : prop.type;\n } else {\n typeName = imports.addGeneratedModel(prop.fqType, prop.type);\n }\n\n // Collections\n if (prop.isCollection) {\n const type = `Array<${typeName}>`;\n if (this.dataModel.isV2() && this.options.v2ModelsWithExtraResultsWrapping) {\n return `{ results: ${type} }` + suffix;\n } else {\n return type + suffix;\n }\n }\n\n // primitive, enum & complex types\n return typeName + (prop.required ? \"\" : \" | null\") + suffix;\n }\n\n private generateIdModel(file: FileHandler, model: EntityType) {\n const singleType = model.keys.length === 1 ? `${model.keys[0].type} | ` : \"\";\n const keyTypes = model.keys\n .map((keyProp) => `${keyProp.name}: ${this.getPropType(file.getImports(), keyProp)}`)\n .join(\",\");\n const type = `${singleType}{${keyTypes}}`;\n\n file.getFile().addTypeAlias({\n name: model.id.modelName,\n isExported: true,\n type,\n });\n }\n\n private generateEditableModel(file: FileHandler, model: ComplexType) {\n const entityTypes = [DataTypes.ModelType, DataTypes.ComplexType];\n const allProps = [...model.baseProps, ...model.props].filter((p) => !p.managed);\n\n const requiredProps = allProps\n .filter((p) => p.required && !entityTypes.includes(p.dataType))\n .map((p) => `\"${p.name}\"`)\n .join(\" | \");\n const optionalProps = allProps\n .filter((p) => !p.required && !entityTypes.includes(p.dataType))\n .map((p) => `\"${p.name}\"`)\n .join(\" | \");\n const complexProps = allProps.filter((p) => p.dataType === DataTypes.ComplexType);\n\n const extendsClause = [\n requiredProps ? `Pick<${model.modelName}, ${requiredProps}>` : null,\n optionalProps ? `Partial<Pick<${model.modelName}, ${optionalProps}>>` : null,\n ].filter((e): e is string => !!e);\n\n file.getFile().addInterface({\n name: model.editableName,\n isExported: true,\n extends: extendsClause,\n properties: !complexProps\n ? undefined\n : complexProps.map((p) => {\n return {\n name: p.name,\n type: this.getEditablePropType(file.getImports(), p),\n // optional props don't need to be specified in editable model\n // also, entities would require deep insert func => we make it optional for now\n hasQuestionToken: !p.required || p.dataType === DataTypes.ModelType,\n };\n }),\n });\n }\n\n private getEditablePropType(imports: ImportContainer, prop: PropertyModel): string {\n const isModelType = [DataTypes.ModelType, DataTypes.ComplexType].includes(prop.dataType);\n\n let editableType = prop.type;\n if (isModelType) {\n const editName = this.dataModel.getComplexType(prop.fqType)!.editableName;\n editableType = imports.addGeneratedModel(prop.fqType, editName);\n }\n\n // Collections\n if (prop.isCollection) {\n return `Array<${editableType}>`;\n }\n\n // primitive, enum & complex types\n return editableType + (prop.required ? \"\" : \" | null\");\n }\n\n private async generateUnboundOperationParams() {\n const unboundOps = this.dataModel.getUnboundOperationTypes();\n const reservedNames = unboundOps.map((op) => op.paramsModelName);\n const file = this.project.createOrGetMainModelFile(reservedNames);\n\n unboundOps.forEach((operation) => {\n this.generateOperationParams(file, operation);\n });\n }\n\n private generateOperationParams(file: FileHandler, operation: OperationType) {\n const paramSets = [operation.parameters, ...(operation.overrides ?? [])].filter((pSet) => !!pSet.length);\n\n // standard: one interface for parameters\n if (paramSets.length === 1) {\n file.getFile().addInterface({\n name: operation.paramsModelName,\n isExported: true,\n properties: paramSets[0].map((p) => {\n return {\n name: p.name,\n type: this.getPropType(file.getImports(), p),\n hasQuestionToken: !p.required,\n };\n }),\n });\n }\n // function overload: one type with intersections of different param models\n else if (paramSets.length > 1) {\n file.getFile().addTypeAlias({\n name: operation.paramsModelName,\n isExported: true,\n type: (writer) => {\n paramSets.forEach((pSet, index) => {\n writer.block(() => {\n pSet.forEach((param, index) => {\n const paramType = this.getPropType(file.getImports(), param);\n writer.write(`${param.name}${param.required ? \"\" : \"?\"}: ${paramType}`);\n if (index < pSet.length - 1) {\n writer.write(\",\");\n }\n });\n });\n if (index < paramSets.length - 1) {\n writer.write(\" | \");\n }\n });\n },\n });\n }\n }\n}\n"]}
|
|
@@ -282,23 +282,27 @@ class QueryObjectGenerator {
|
|
|
282
282
|
const paramModelName = hasParams ? imports.addGeneratedModel(baseFqName, operation.paramsModelName) : undefined;
|
|
283
283
|
let returnTypeOpStmt = "";
|
|
284
284
|
if (returnType) {
|
|
285
|
-
const collectionSuffix = returnType.isCollection ? "_COLLECTION" : "";
|
|
286
285
|
if (returnType.dataType === "ComplexType" /* DataTypes.ComplexType */ || returnType.dataType === "ModelType" /* DataTypes.ModelType */) {
|
|
287
286
|
if (returnType.qObject) {
|
|
288
287
|
const opRt = imports.addQObject(QueryObjectImports.OperationReturnType);
|
|
289
288
|
const rts = imports.addQObject(QueryObjectImports.ReturnTypes);
|
|
289
|
+
const rType = returnType.isCollection
|
|
290
|
+
? "COLLECTION"
|
|
291
|
+
: returnType.dataType === "ComplexType" /* DataTypes.ComplexType */
|
|
292
|
+
? "COMPLEX"
|
|
293
|
+
: "ENTITY";
|
|
290
294
|
const qComplexParam = imports.addQObject(QueryObjectImports.QComplexParam);
|
|
291
295
|
const returnQName = imports.addGeneratedQObject(returnType.fqType, returnType.qObject);
|
|
292
|
-
returnTypeOpStmt = `new ${opRt}(${rts}
|
|
296
|
+
returnTypeOpStmt = `new ${opRt}(${rts}.${rType}, new ${qComplexParam}("NONE", new ${returnQName}))`;
|
|
293
297
|
}
|
|
294
298
|
}
|
|
295
299
|
// currently, it only makes sense to add the OperationReturnType if a converter is present
|
|
296
300
|
else if (returnType.converters && returnType.qParam) {
|
|
297
301
|
const rtClass = imports.addQObject(QueryObjectImports.OperationReturnType);
|
|
298
302
|
const rtTypes = imports.addQObject(QueryObjectImports.ReturnTypes);
|
|
303
|
+
const rType = returnType.isCollection ? "COLLECTION" : "VALUE";
|
|
299
304
|
const qParam = imports.addQObject(returnType.qParam);
|
|
300
|
-
|
|
301
|
-
const rtKind = `${rtTypes}.VALUE${collectionSuffix}`;
|
|
305
|
+
const rtKind = `${rtTypes}.${rType}`;
|
|
302
306
|
const converterParam = returnType.converters
|
|
303
307
|
? ", " + this.generateConverterStmt(imports, returnType.converters)
|
|
304
308
|
: "";
|