@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":"QueryObjectGenerator.js","sourceRoot":"","sources":["../../src/generator/QueryObjectGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["import { ValueConverterImport } from \"@odata2ts/converter-runtime\";\nimport { ODataVersions } from \"@odata2ts/odata-core\";\nimport {\n GetAccessorDeclarationStructure,\n MethodDeclarationStructure,\n OptionalKind,\n PropertyDeclarationStructure,\n Scope,\n VariableDeclarationKind,\n} from \"ts-morph\";\nimport { firstCharLowerCase } from \"xml2js/lib/processors.js\";\nimport { DataModel } from \"../data-model/DataModel.js\";\nimport {\n ComplexType,\n DataTypes,\n EntityType,\n OperationType,\n OperationTypes,\n PropertyModel,\n} 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 { QueryObjectImports } from \"./import/ImportObjects.js\";\nimport { ImportContainer } from \"./ImportContainer.js\";\n\nexport const generateQueryObjects: EntityBasedGeneratorFunction = (\n project,\n dataModel,\n version,\n options,\n namingHelper,\n) => {\n const generator = new QueryObjectGenerator(project, dataModel, version, options, namingHelper);\n return generator.generate();\n};\n\nclass QueryObjectGenerator {\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.initQObjects();\n\n // process EntityType & ComplexType\n const promises: Array<Promise<void>> = [...this.generateEntityTypes(), ...this.generateComplexTypes()];\n if (!this.options.skipOperations) {\n // process unbound operations\n promises.push(this.generateUnboundOperations());\n }\n\n await Promise.all(promises);\n\n return this.project.finalizeQObjects();\n }\n\n private generateEntityTypes() {\n return this.dataModel.getEntityTypes().map((model) => {\n const file = this.project.createOrGetQObjectFile(model.folderPath, model.qName, [\n model.qName,\n firstCharLowerCase(model.qName),\n model.id.qName,\n ]);\n\n // q object\n this.generateModel(file, model);\n\n // qId function\n if (!this.options.skipIdModels && model.generateId) {\n this.generateIdFunction(file, model);\n }\n\n // bound q operations\n if (!this.options.skipOperations) {\n [\n ...this.dataModel.getEntityTypeOperations(model.fqName),\n ...this.dataModel.getEntitySetOperations(model.fqName),\n ].forEach((operation) => {\n this.generateOperation(file, operation, model.fqName);\n });\n }\n\n return this.project.finalizeFile(file);\n });\n }\n\n private generateComplexTypes() {\n return this.dataModel.getComplexTypes().map((model) => {\n const file = this.project.createOrGetQObjectFile(model.folderPath, model.qName, [\n model.qName,\n firstCharLowerCase(model.qName),\n ]);\n\n this.generateModel(file, model);\n\n return this.project.finalizeFile(file);\n });\n }\n\n private generateModel(file: FileHandler, model: ComplexType) {\n const imports = file.getImports();\n const properties = this.generateQueryObjectProps(file.getImports(), model.props);\n\n let extendsClause: string;\n if (model.baseClasses.length) {\n const baseClass = model.baseClasses[0];\n const baseModel = this.dataModel.getModel(baseClass) as ComplexType;\n if (!baseModel) {\n throw new Error(`Entity or complex type \"${baseClass}\" from baseClass attribute not found!`);\n }\n extendsClause = imports.addGeneratedQObject(baseClass, baseModel.qBaseName!);\n } else {\n extendsClause = imports.addQObject(QueryObjectImports.QueryObject);\n }\n\n if (model.qBaseName) {\n // base class which used for extension\n file.getFile().addClass({\n name: model.qBaseName,\n isExported: true,\n extends: extendsClause,\n properties,\n });\n\n const [props, getAccessors, methods, statements] = Array.from(model.subtypes).reduce<\n [\n Array<string>,\n OptionalKind<GetAccessorDeclarationStructure>[],\n OptionalKind<MethodDeclarationStructure>[],\n Array<string>,\n ]\n >(\n (collector, subtype) => {\n const subClass = this.dataModel.getModel(subtype) as ComplexType;\n const methodName = `__as${subClass.qName}`;\n const enumerablePropDef = imports.addQObject(QueryObjectImports.ENUMERABLE_PROP_DEFINITION);\n\n collector[0].push(`\"${subClass.fqName}\": \"${subClass.qName}\"`);\n\n subClass.props.forEach((prop) => {\n const propName = this.namingHelper.getQPropName(prop.name);\n const fqPropName = `${subClass.qName}_${propName}`;\n collector[1].push({\n name: fqPropName,\n scope: Scope.Public,\n statements: `return this.${methodName}().${propName};`,\n });\n collector[3].push(`${fqPropName}: ${enumerablePropDef}`);\n });\n\n collector[2].push({\n name: methodName,\n scope: Scope.Private,\n statements: `return new ${subClass.qName}(this.withPrefix(\"${subClass.fqName}\"))`,\n });\n\n return collector;\n },\n [[], [], [], []],\n );\n\n file.getFile().addClass({\n name: model.qName,\n isExported: true,\n extends: model.qBaseName,\n properties: [\n {\n name: \"__subtypeMapping\",\n scope: Scope.Protected,\n isReadonly: true,\n initializer: `{ ${props.join(\",\")} }`,\n },\n ],\n getAccessors,\n methods,\n });\n\n file.getFile().addStatements(`Object.defineProperties(${model.qName}.prototype, { ${statements.join(\",\")} });`);\n } else {\n file.getFile().addClass({\n name: model.qName,\n isExported: true,\n extends: extendsClause,\n properties: properties,\n });\n }\n\n file.getFile().addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: firstCharLowerCase(model.qName),\n initializer: `new ${model.qName}()`,\n },\n ],\n });\n }\n\n private generateQueryObjectProps(\n importContainer: ImportContainer,\n props: Array<PropertyModel>,\n ): Array<OptionalKind<PropertyDeclarationStructure>> {\n return props.map((prop) => {\n const { odataName } = prop;\n const name = this.namingHelper.getQPropName(prop.name);\n const isModelType = prop.dataType === DataTypes.ModelType || prop.dataType === DataTypes.ComplexType;\n const isEnumType = prop.dataType === DataTypes.EnumType;\n const isNumericEnum = this.options.numericEnums;\n\n let qPathInit: string;\n\n // factor in collections\n if (prop.isCollection) {\n const qPath = importContainer.addQObject(\n isModelType\n ? QueryObjectImports.QEntityCollectionPath\n : isEnumType\n ? isNumericEnum\n ? QueryObjectImports.QNumericEnumCollectionPath\n : QueryObjectImports.QEnumCollectionPath\n : QueryObjectImports.QCollectionPath,\n );\n const qObject = isModelType\n ? importContainer.addGeneratedQObject(prop.fqType, prop.qObject!)\n : isEnumType\n ? importContainer.addGeneratedModel(prop.fqType, prop.type, false)\n : importContainer.addQObject(prop.qObject!);\n\n qPathInit = `new ${qPath}(this.withPrefix(\"${odataName}\"), ${isEnumType ? qObject : `() => ${qObject}`})`;\n } else {\n // add import for data type\n const qPath = importContainer.addQObject(prop.qPath);\n if (isModelType) {\n const qObject = importContainer.addGeneratedQObject(prop.fqType, prop.qObject!);\n qPathInit = `new ${qPath}(this.withPrefix(\"${odataName}\"), () => ${qObject})`;\n } else if (isEnumType) {\n const qObject = importContainer.addGeneratedModel(prop.fqType, prop.type, false);\n qPathInit = `new ${qPath}(this.withPrefix(\"${odataName}\"), ${qObject})`;\n } else {\n let converterStmt = this.generateConverterStmt(importContainer, prop.converters);\n qPathInit = `new ${qPath}(this.withPrefix(\"${odataName}\")${converterStmt ? `, ${converterStmt}` : \"\"})`;\n }\n }\n\n return {\n name,\n scope: Scope.Public,\n isReadonly: true,\n initializer: qPathInit,\n } as OptionalKind<PropertyDeclarationStructure>;\n });\n }\n\n private generateConverterStmt(importContainer: ImportContainer, converters: Array<ValueConverterImport> | undefined) {\n if (!converters?.length) {\n return undefined;\n }\n const converterIds = converters.map((converter) => {\n return importContainer.addCustomType(converter.package, converter.converterId);\n });\n\n if (converterIds.length === 1) {\n return converterIds[0];\n } else {\n const createChain = importContainer.addCustomType(\"@odata2ts/converter-runtime\", \"createChain\");\n\n const [first, second, ...moreConverters] = converterIds;\n return moreConverters.reduce((stmt, convId) => `${stmt}.chain(${convId})`, `${createChain}(${first}, ${second})`);\n }\n }\n\n private generateIdFunction(file: FileHandler, model: EntityType) {\n const importContainer = file.getImports();\n const qFunc = importContainer.addQObject(QueryObjectImports.QId);\n const idModelName = importContainer.addGeneratedModel(model.fqName, model.id.modelName);\n\n file.getFile().addClass({\n name: model.id.qName,\n isExported: true,\n extends: `${qFunc}<${idModelName}>`,\n properties: [\n {\n name: \"params\",\n scope: Scope.Private,\n isReadonly: true,\n initializer: this.getParamInitString(importContainer, model.keys),\n },\n ],\n methods: [\n {\n name: \"getParams\",\n statements: [\"return this.params\"],\n },\n ],\n });\n }\n\n private getParamInitString(\n importContainer: ImportContainer,\n props: Array<PropertyModel>,\n overloads?: Array<Array<PropertyModel>>,\n ) {\n const allParams = [props, ...(overloads ?? [])].map((paramSet) => {\n const pString = paramSet\n .map((prop) => {\n let complexQParam = \"\";\n if (prop.dataType === DataTypes.ModelType || prop.dataType === DataTypes.ComplexType) {\n const importedQObject = importContainer.addGeneratedQObject(prop.fqType, prop.qObject!);\n complexQParam = `, new ${importedQObject}()`;\n }\n\n const qParam = importContainer.addQObject(prop.qParam!);\n const isMappedNameNecessary = prop.odataName !== prop.name;\n const mappedName = isMappedNameNecessary\n ? `\"${prop.name}\"`\n : prop.converters?.length\n ? \"undefined\"\n : undefined;\n const converterStmt = this.generateConverterStmt(importContainer, prop.converters);\n const mappedNameParam = mappedName ? `, ${mappedName}` : \"\";\n const converterParam = converterStmt ? `, ${converterStmt}` : \"\";\n return `new ${qParam}(\"${prop.odataName}\"${complexQParam}${mappedNameParam}${converterParam})`;\n })\n .join(\",\");\n return `[${pString}]`;\n });\n\n return allParams.length === 1 ? allParams[0] : `[${allParams.join(\",\")}]`;\n }\n\n private async generateUnboundOperations() {\n const unboundOps = this.dataModel.getUnboundOperationTypes();\n const reservedNames = unboundOps.map((op) => op.qName);\n const file = this.project.createOrGetMainQObjectFile(reservedNames);\n\n unboundOps.forEach((operation) => {\n this.generateOperation(file, operation, \"\");\n });\n }\n\n private generateOperation(file: FileHandler, operation: OperationType, baseFqName: string) {\n const imports = file.getImports();\n const isV2 = this.version === ODataVersions.V2;\n const returnType = operation.returnType;\n const hasParams = operation.parameters.length > 0 || operation.overrides?.length;\n const isParamsOptional = !![operation.parameters, ...(operation.overrides ?? [])].find((pSet) => pSet.length === 0);\n\n // imports\n const qOp = operation.type === OperationTypes.Action ? QueryObjectImports.QAction : QueryObjectImports.QFunction;\n const qOperation = imports.addQObject(qOp);\n const paramModelName = hasParams ? imports.addGeneratedModel(baseFqName, operation.paramsModelName) : undefined;\n\n let returnTypeOpStmt: string = \"\";\n if (returnType) {\n const collectionSuffix = returnType.isCollection ? \"_COLLECTION\" : \"\";\n if (returnType.dataType === DataTypes.ComplexType || returnType.dataType === DataTypes.ModelType) {\n if (returnType.qObject) {\n const opRt = imports.addQObject(QueryObjectImports.OperationReturnType);\n const rts = imports.addQObject(QueryObjectImports.ReturnTypes);\n const qComplexParam = imports.addQObject(QueryObjectImports.QComplexParam);\n const returnQName = imports.addGeneratedQObject(returnType.fqType, returnType.qObject);\n\n returnTypeOpStmt = `new ${opRt}(${rts}.COMPLEX${collectionSuffix}, new ${qComplexParam}(\"NONE\", new ${returnQName}))`;\n }\n }\n // currently, it only makes sense to add the OperationReturnType if a converter is present\n else if (returnType.converters && returnType.qParam) {\n const rtClass = imports.addQObject(QueryObjectImports.OperationReturnType);\n const rtTypes = imports.addQObject(QueryObjectImports.ReturnTypes);\n const qParam = imports.addQObject(returnType.qParam);\n\n // TODO: some constants with string concat\n const rtKind = `${rtTypes}.VALUE${collectionSuffix}`;\n\n const converterParam = returnType.converters\n ? \", \" + this.generateConverterStmt(imports, returnType.converters)\n : \"\";\n returnTypeOpStmt = `new ${rtClass}(${rtKind}, new ${qParam}(\"NONE\", undefined${converterParam}))`;\n }\n }\n\n file.getFile().addClass({\n name: operation.qName,\n isExported: true,\n extends: qOperation + (hasParams ? `<${paramModelName}>` : \"\"),\n properties: [\n {\n name: \"params\",\n scope: Scope.Private,\n isReadonly: true,\n type: hasParams ? undefined : \"[]\",\n initializer: this.getParamInitString(imports, operation.parameters, operation.overrides),\n },\n ],\n ctors: [\n {\n statements: [\n `super(\"${operation.odataName}\"${returnTypeOpStmt ? \", \" + returnTypeOpStmt : isV2 ? \", undefined\" : \"\"}${\n isV2 ? \", { v2Mode: true }\" : \"\"\n })`,\n ],\n },\n ],\n methods: [\n {\n name: \"getParams\",\n statements: [\"return this.params\"],\n },\n // functions without params: add an overriding buildUrl() to not force users to have to pass undefined as param\n ...(operation.type === OperationTypes.Function && !hasParams\n ? [\n {\n name: \"buildUrl\",\n parameters: [\n {\n name: \"notEncoded\",\n initializer: \"false\",\n },\n ],\n statements: [\"return super.buildUrl(undefined, notEncoded)\"],\n } as OptionalKind<MethodDeclarationStructure>,\n ]\n : []),\n ],\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"QueryObjectGenerator.js","sourceRoot":"","sources":["../../src/generator/QueryObjectGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["import { ValueConverterImport } from \"@odata2ts/converter-runtime\";\nimport { ODataVersions } from \"@odata2ts/odata-core\";\nimport {\n GetAccessorDeclarationStructure,\n MethodDeclarationStructure,\n OptionalKind,\n PropertyDeclarationStructure,\n Scope,\n VariableDeclarationKind,\n} from \"ts-morph\";\nimport { firstCharLowerCase } from \"xml2js/lib/processors.js\";\nimport { DataModel } from \"../data-model/DataModel.js\";\nimport {\n ComplexType,\n DataTypes,\n EntityType,\n OperationType,\n OperationTypes,\n PropertyModel,\n} 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 { QueryObjectImports } from \"./import/ImportObjects.js\";\nimport { ImportContainer } from \"./ImportContainer.js\";\n\nexport const generateQueryObjects: EntityBasedGeneratorFunction = (\n project,\n dataModel,\n version,\n options,\n namingHelper,\n) => {\n const generator = new QueryObjectGenerator(project, dataModel, version, options, namingHelper);\n return generator.generate();\n};\n\nclass QueryObjectGenerator {\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.initQObjects();\n\n // process EntityType & ComplexType\n const promises: Array<Promise<void>> = [...this.generateEntityTypes(), ...this.generateComplexTypes()];\n if (!this.options.skipOperations) {\n // process unbound operations\n promises.push(this.generateUnboundOperations());\n }\n\n await Promise.all(promises);\n\n return this.project.finalizeQObjects();\n }\n\n private generateEntityTypes() {\n return this.dataModel.getEntityTypes().map((model) => {\n const file = this.project.createOrGetQObjectFile(model.folderPath, model.qName, [\n model.qName,\n firstCharLowerCase(model.qName),\n model.id.qName,\n ]);\n\n // q object\n this.generateModel(file, model);\n\n // qId function\n if (!this.options.skipIdModels && model.generateId) {\n this.generateIdFunction(file, model);\n }\n\n // bound q operations\n if (!this.options.skipOperations) {\n [\n ...this.dataModel.getEntityTypeOperations(model.fqName),\n ...this.dataModel.getEntitySetOperations(model.fqName),\n ].forEach((operation) => {\n this.generateOperation(file, operation, model.fqName);\n });\n }\n\n return this.project.finalizeFile(file);\n });\n }\n\n private generateComplexTypes() {\n return this.dataModel.getComplexTypes().map((model) => {\n const file = this.project.createOrGetQObjectFile(model.folderPath, model.qName, [\n model.qName,\n firstCharLowerCase(model.qName),\n ]);\n\n this.generateModel(file, model);\n\n return this.project.finalizeFile(file);\n });\n }\n\n private generateModel(file: FileHandler, model: ComplexType) {\n const imports = file.getImports();\n const properties = this.generateQueryObjectProps(file.getImports(), model.props);\n\n let extendsClause: string;\n if (model.baseClasses.length) {\n const baseClass = model.baseClasses[0];\n const baseModel = this.dataModel.getModel(baseClass) as ComplexType;\n if (!baseModel) {\n throw new Error(`Entity or complex type \"${baseClass}\" from baseClass attribute not found!`);\n }\n extendsClause = imports.addGeneratedQObject(baseClass, baseModel.qBaseName!);\n } else {\n extendsClause = imports.addQObject(QueryObjectImports.QueryObject);\n }\n\n if (model.qBaseName) {\n // base class which used for extension\n file.getFile().addClass({\n name: model.qBaseName,\n isExported: true,\n extends: extendsClause,\n properties,\n });\n\n const [props, getAccessors, methods, statements] = Array.from(model.subtypes).reduce<\n [\n Array<string>,\n OptionalKind<GetAccessorDeclarationStructure>[],\n OptionalKind<MethodDeclarationStructure>[],\n Array<string>,\n ]\n >(\n (collector, subtype) => {\n const subClass = this.dataModel.getModel(subtype) as ComplexType;\n const methodName = `__as${subClass.qName}`;\n const enumerablePropDef = imports.addQObject(QueryObjectImports.ENUMERABLE_PROP_DEFINITION);\n\n collector[0].push(`\"${subClass.fqName}\": \"${subClass.qName}\"`);\n\n subClass.props.forEach((prop) => {\n const propName = this.namingHelper.getQPropName(prop.name);\n const fqPropName = `${subClass.qName}_${propName}`;\n collector[1].push({\n name: fqPropName,\n scope: Scope.Public,\n statements: `return this.${methodName}().${propName};`,\n });\n collector[3].push(`${fqPropName}: ${enumerablePropDef}`);\n });\n\n collector[2].push({\n name: methodName,\n scope: Scope.Private,\n statements: `return new ${subClass.qName}(this.withPrefix(\"${subClass.fqName}\"))`,\n });\n\n return collector;\n },\n [[], [], [], []],\n );\n\n file.getFile().addClass({\n name: model.qName,\n isExported: true,\n extends: model.qBaseName,\n properties: [\n {\n name: \"__subtypeMapping\",\n scope: Scope.Protected,\n isReadonly: true,\n initializer: `{ ${props.join(\",\")} }`,\n },\n ],\n getAccessors,\n methods,\n });\n\n file.getFile().addStatements(`Object.defineProperties(${model.qName}.prototype, { ${statements.join(\",\")} });`);\n } else {\n file.getFile().addClass({\n name: model.qName,\n isExported: true,\n extends: extendsClause,\n properties: properties,\n });\n }\n\n file.getFile().addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: firstCharLowerCase(model.qName),\n initializer: `new ${model.qName}()`,\n },\n ],\n });\n }\n\n private generateQueryObjectProps(\n importContainer: ImportContainer,\n props: Array<PropertyModel>,\n ): Array<OptionalKind<PropertyDeclarationStructure>> {\n return props.map((prop) => {\n const { odataName } = prop;\n const name = this.namingHelper.getQPropName(prop.name);\n const isModelType = prop.dataType === DataTypes.ModelType || prop.dataType === DataTypes.ComplexType;\n const isEnumType = prop.dataType === DataTypes.EnumType;\n const isNumericEnum = this.options.numericEnums;\n\n let qPathInit: string;\n\n // factor in collections\n if (prop.isCollection) {\n const qPath = importContainer.addQObject(\n isModelType\n ? QueryObjectImports.QEntityCollectionPath\n : isEnumType\n ? isNumericEnum\n ? QueryObjectImports.QNumericEnumCollectionPath\n : QueryObjectImports.QEnumCollectionPath\n : QueryObjectImports.QCollectionPath,\n );\n const qObject = isModelType\n ? importContainer.addGeneratedQObject(prop.fqType, prop.qObject!)\n : isEnumType\n ? importContainer.addGeneratedModel(prop.fqType, prop.type, false)\n : importContainer.addQObject(prop.qObject!);\n\n qPathInit = `new ${qPath}(this.withPrefix(\"${odataName}\"), ${isEnumType ? qObject : `() => ${qObject}`})`;\n } else {\n // add import for data type\n const qPath = importContainer.addQObject(prop.qPath);\n if (isModelType) {\n const qObject = importContainer.addGeneratedQObject(prop.fqType, prop.qObject!);\n qPathInit = `new ${qPath}(this.withPrefix(\"${odataName}\"), () => ${qObject})`;\n } else if (isEnumType) {\n const qObject = importContainer.addGeneratedModel(prop.fqType, prop.type, false);\n qPathInit = `new ${qPath}(this.withPrefix(\"${odataName}\"), ${qObject})`;\n } else {\n let converterStmt = this.generateConverterStmt(importContainer, prop.converters);\n qPathInit = `new ${qPath}(this.withPrefix(\"${odataName}\")${converterStmt ? `, ${converterStmt}` : \"\"})`;\n }\n }\n\n return {\n name,\n scope: Scope.Public,\n isReadonly: true,\n initializer: qPathInit,\n } as OptionalKind<PropertyDeclarationStructure>;\n });\n }\n\n private generateConverterStmt(importContainer: ImportContainer, converters: Array<ValueConverterImport> | undefined) {\n if (!converters?.length) {\n return undefined;\n }\n const converterIds = converters.map((converter) => {\n return importContainer.addCustomType(converter.package, converter.converterId);\n });\n\n if (converterIds.length === 1) {\n return converterIds[0];\n } else {\n const createChain = importContainer.addCustomType(\"@odata2ts/converter-runtime\", \"createChain\");\n\n const [first, second, ...moreConverters] = converterIds;\n return moreConverters.reduce((stmt, convId) => `${stmt}.chain(${convId})`, `${createChain}(${first}, ${second})`);\n }\n }\n\n private generateIdFunction(file: FileHandler, model: EntityType) {\n const importContainer = file.getImports();\n const qFunc = importContainer.addQObject(QueryObjectImports.QId);\n const idModelName = importContainer.addGeneratedModel(model.fqName, model.id.modelName);\n\n file.getFile().addClass({\n name: model.id.qName,\n isExported: true,\n extends: `${qFunc}<${idModelName}>`,\n properties: [\n {\n name: \"params\",\n scope: Scope.Private,\n isReadonly: true,\n initializer: this.getParamInitString(importContainer, model.keys),\n },\n ],\n methods: [\n {\n name: \"getParams\",\n statements: [\"return this.params\"],\n },\n ],\n });\n }\n\n private getParamInitString(\n importContainer: ImportContainer,\n props: Array<PropertyModel>,\n overloads?: Array<Array<PropertyModel>>,\n ) {\n const allParams = [props, ...(overloads ?? [])].map((paramSet) => {\n const pString = paramSet\n .map((prop) => {\n let complexQParam = \"\";\n if (prop.dataType === DataTypes.ModelType || prop.dataType === DataTypes.ComplexType) {\n const importedQObject = importContainer.addGeneratedQObject(prop.fqType, prop.qObject!);\n complexQParam = `, new ${importedQObject}()`;\n }\n\n const qParam = importContainer.addQObject(prop.qParam!);\n const isMappedNameNecessary = prop.odataName !== prop.name;\n const mappedName = isMappedNameNecessary\n ? `\"${prop.name}\"`\n : prop.converters?.length\n ? \"undefined\"\n : undefined;\n const converterStmt = this.generateConverterStmt(importContainer, prop.converters);\n const mappedNameParam = mappedName ? `, ${mappedName}` : \"\";\n const converterParam = converterStmt ? `, ${converterStmt}` : \"\";\n return `new ${qParam}(\"${prop.odataName}\"${complexQParam}${mappedNameParam}${converterParam})`;\n })\n .join(\",\");\n return `[${pString}]`;\n });\n\n return allParams.length === 1 ? allParams[0] : `[${allParams.join(\",\")}]`;\n }\n\n private async generateUnboundOperations() {\n const unboundOps = this.dataModel.getUnboundOperationTypes();\n const reservedNames = unboundOps.map((op) => op.qName);\n const file = this.project.createOrGetMainQObjectFile(reservedNames);\n\n unboundOps.forEach((operation) => {\n this.generateOperation(file, operation, \"\");\n });\n }\n\n private generateOperation(file: FileHandler, operation: OperationType, baseFqName: string) {\n const imports = file.getImports();\n const isV2 = this.version === ODataVersions.V2;\n const returnType = operation.returnType;\n const hasParams = operation.parameters.length > 0 || operation.overrides?.length;\n const isParamsOptional = !![operation.parameters, ...(operation.overrides ?? [])].find((pSet) => pSet.length === 0);\n\n // imports\n const qOp = operation.type === OperationTypes.Action ? QueryObjectImports.QAction : QueryObjectImports.QFunction;\n const qOperation = imports.addQObject(qOp);\n const paramModelName = hasParams ? imports.addGeneratedModel(baseFqName, operation.paramsModelName) : undefined;\n\n let returnTypeOpStmt: string = \"\";\n if (returnType) {\n if (returnType.dataType === DataTypes.ComplexType || returnType.dataType === DataTypes.ModelType) {\n if (returnType.qObject) {\n const opRt = imports.addQObject(QueryObjectImports.OperationReturnType);\n const rts = imports.addQObject(QueryObjectImports.ReturnTypes);\n const rType = returnType.isCollection\n ? \"COLLECTION\"\n : returnType.dataType === DataTypes.ComplexType\n ? \"COMPLEX\"\n : \"ENTITY\";\n const qComplexParam = imports.addQObject(QueryObjectImports.QComplexParam);\n const returnQName = imports.addGeneratedQObject(returnType.fqType, returnType.qObject);\n\n returnTypeOpStmt = `new ${opRt}(${rts}.${rType}, new ${qComplexParam}(\"NONE\", new ${returnQName}))`;\n }\n }\n // currently, it only makes sense to add the OperationReturnType if a converter is present\n else if (returnType.converters && returnType.qParam) {\n const rtClass = imports.addQObject(QueryObjectImports.OperationReturnType);\n const rtTypes = imports.addQObject(QueryObjectImports.ReturnTypes);\n const rType = returnType.isCollection ? \"COLLECTION\" : \"VALUE\";\n const qParam = imports.addQObject(returnType.qParam);\n\n const rtKind = `${rtTypes}.${rType}`;\n\n const converterParam = returnType.converters\n ? \", \" + this.generateConverterStmt(imports, returnType.converters)\n : \"\";\n returnTypeOpStmt = `new ${rtClass}(${rtKind}, new ${qParam}(\"NONE\", undefined${converterParam}))`;\n }\n }\n\n file.getFile().addClass({\n name: operation.qName,\n isExported: true,\n extends: qOperation + (hasParams ? `<${paramModelName}>` : \"\"),\n properties: [\n {\n name: \"params\",\n scope: Scope.Private,\n isReadonly: true,\n type: hasParams ? undefined : \"[]\",\n initializer: this.getParamInitString(imports, operation.parameters, operation.overrides),\n },\n ],\n ctors: [\n {\n statements: [\n `super(\"${operation.odataName}\"${returnTypeOpStmt ? \", \" + returnTypeOpStmt : isV2 ? \", undefined\" : \"\"}${\n isV2 ? \", { v2Mode: true }\" : \"\"\n })`,\n ],\n },\n ],\n methods: [\n {\n name: \"getParams\",\n statements: [\"return this.params\"],\n },\n // functions without params: add an overriding buildUrl() to not force users to have to pass undefined as param\n ...(operation.type === OperationTypes.Function && !hasParams\n ? [\n {\n name: \"buildUrl\",\n parameters: [\n {\n name: \"notEncoded\",\n initializer: \"false\",\n },\n ],\n statements: [\"return super.buildUrl(undefined, notEncoded)\"],\n } as OptionalKind<MethodDeclarationStructure>,\n ]\n : []),\n ],\n });\n }\n}\n"]}
|
|
@@ -167,11 +167,13 @@ class ServiceGenerator {
|
|
|
167
167
|
],
|
|
168
168
|
};
|
|
169
169
|
}
|
|
170
|
-
generateEntityTypeService(file, model) {
|
|
170
|
+
generateEntityTypeService(file, model, isComplexType = false) {
|
|
171
171
|
const importContainer = file.getImports();
|
|
172
172
|
const operations = this.dataModel.getEntityTypeOperations(model.fqName);
|
|
173
173
|
const props = [...model.baseProps, ...model.props];
|
|
174
|
-
const entityServiceType = importContainer.addServiceObject(this.version,
|
|
174
|
+
const entityServiceType = importContainer.addServiceObject(this.version, this.version === ODataVersions.V2 && isComplexType
|
|
175
|
+
? ServiceImports.ComplexTypeService
|
|
176
|
+
: ServiceImports.EntityTypeService);
|
|
175
177
|
const httpClient = importContainer.addClientApi(ClientApiImports.ODataHttpClient);
|
|
176
178
|
// note: predictable first imports => no need to take renaming into account
|
|
177
179
|
const modelName = importContainer.addGeneratedModel(model.fqName, model.modelName);
|
|
@@ -422,7 +424,7 @@ class ServiceGenerator {
|
|
|
422
424
|
.map((model) => {
|
|
423
425
|
const file = this.project.createOrGetServiceFile(model.folderPath, model.serviceName, [model.serviceName]);
|
|
424
426
|
// entity type service
|
|
425
|
-
this.generateEntityTypeService(file, model);
|
|
427
|
+
this.generateEntityTypeService(file, model, true);
|
|
426
428
|
return this.project.finalizeFile(file);
|
|
427
429
|
});
|
|
428
430
|
}
|
|
@@ -480,7 +482,9 @@ class ServiceGenerator {
|
|
|
480
482
|
? CoreImports.ODataCollectionResponse
|
|
481
483
|
: (returnType === null || returnType === void 0 ? void 0 : returnType.dataType) === "PrimitiveType" /* DataTypes.PrimitiveType */
|
|
482
484
|
? CoreImports.ODataValueResponse
|
|
483
|
-
:
|
|
485
|
+
: this.version === ODataVersions.V4
|
|
486
|
+
? CoreImports.ODataModelResponseV4
|
|
487
|
+
: CoreImports.ODataEntityModelResponseV2;
|
|
484
488
|
return imports.addCoreLib(this.version, typeToImport);
|
|
485
489
|
}
|
|
486
490
|
generateCastOperations(importContainer, model, isCollection) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceGenerator.js","sourceRoot":"","sources":["../../src/generator/ServiceGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["import { ODataVersions } from \"@odata2ts/odata-core\";\r\nimport deepmerge from \"deepmerge\";\r\nimport {\r\n ClassDeclarationStructure,\r\n MethodDeclarationStructure,\r\n OptionalKind,\r\n PropertyDeclarationStructure,\r\n Scope,\r\n} from \"ts-morph\";\r\nimport { upperCaseFirst } from \"upper-case-first\";\r\nimport { firstCharLowerCase } from \"xml2js/lib/processors.js\";\r\nimport { DataModel } from \"../data-model/DataModel.js\";\r\nimport {\r\n ActionImportType,\r\n ComplexType,\r\n DataTypes,\r\n EntityContainerModel,\r\n EntityType,\r\n FunctionImportType,\r\n OperationType,\r\n OperationTypes,\r\n PropertyModel,\r\n ReturnTypeModel,\r\n SingletonType,\r\n} from \"../data-model/DataTypeModel.js\";\r\nimport { NamingHelper } from \"../data-model/NamingHelper.js\";\r\nimport { ConfigFileOptions, Modes } from \"../OptionModel.js\";\r\nimport { FileHandler } from \"../project/FileHandler.js\";\r\nimport { ProjectManager } from \"../project/ProjectManager.js\";\r\nimport { ClientApiImports, CoreImports, QueryObjectImports, ServiceImports } from \"./import/ImportObjects.js\";\r\nimport { ImportContainer } from \"./ImportContainer.js\";\r\n\r\nexport interface PropsAndOps extends Required<Pick<ClassDeclarationStructure, \"properties\" | \"methods\">> {}\r\n\r\nexport interface ServiceGeneratorOptions\r\n extends Pick<ConfigFileOptions, \"enablePrimitivePropertyServices\" | \"v4BigNumberAsString\" | \"numericEnums\"> {}\r\n\r\nexport async function generateServices(\r\n project: ProjectManager,\r\n dataModel: DataModel,\r\n version: ODataVersions,\r\n namingHelper: NamingHelper,\r\n options?: ServiceGeneratorOptions,\r\n) {\r\n const generator = new ServiceGenerator(project, dataModel, version, namingHelper, options);\r\n return generator.generate();\r\n}\r\n\r\nclass ServiceGenerator {\r\n constructor(\r\n private project: ProjectManager,\r\n private dataModel: DataModel,\r\n private version: ODataVersions,\r\n private namingHelper: NamingHelper,\r\n private options: ServiceGeneratorOptions = {},\r\n ) {}\r\n\r\n private isV4BigNumber() {\r\n return this.options.v4BigNumberAsString && this.version === ODataVersions.V4;\r\n }\r\n\r\n public async generate(): Promise<void> {\r\n const mainServiceName = this.namingHelper.getMainServiceName();\r\n this.project.initServices();\r\n\r\n await Promise.all([\r\n this.generateMainService(mainServiceName),\r\n ...this.generateEntityTypeServices(),\r\n ...this.generateComplexTypeServices(),\r\n ]);\r\n\r\n return this.project.finalizeServices();\r\n }\r\n\r\n private async generateMainService(mainServiceName: string) {\r\n const mainServiceFile = this.project.getMainServiceFile();\r\n const importContainer = mainServiceFile.getImports();\r\n const container = this.dataModel.getEntityContainer();\r\n const unboundOperations = [...Object.values(container.functions), ...Object.values(container.actions)];\r\n\r\n const httpClient = importContainer.addClientApi(ClientApiImports.ODataHttpClient);\r\n const rootService = importContainer.addServiceObject(this.version, ServiceImports.ODataService);\r\n\r\n const { properties, methods }: PropsAndOps = deepmerge(\r\n this.generateMainServiceProperties(container, importContainer),\r\n this.generateMainServiceOperations(unboundOperations, importContainer),\r\n );\r\n\r\n mainServiceFile.getFile().addClass({\r\n isExported: true,\r\n name: mainServiceName,\r\n typeParameters: [`in out ClientType extends ${httpClient}`],\r\n extends: `${rootService}<ClientType>`,\r\n ctors: this.isV4BigNumber()\r\n ? [\r\n {\r\n parameters: [\r\n { name: \"client\", type: \"ClientType\" },\r\n { name: \"basePath\", type: \"string\" },\r\n {\r\n name: \"options\",\r\n type: importContainer.addServiceObject(this.version, ServiceImports.ODataServiceOptions),\r\n hasQuestionToken: true,\r\n },\r\n ],\r\n statements: [`super(client, basePath, options);`, \"this.__base.options.bigNumbersAsString = true;\"],\r\n },\r\n ]\r\n : [],\r\n properties,\r\n methods,\r\n });\r\n }\r\n\r\n private generateMainServiceProperties(\r\n container: EntityContainerModel,\r\n importContainer: ImportContainer,\r\n ): PropsAndOps {\r\n const result: PropsAndOps = { properties: [], methods: [] };\r\n\r\n Object.values(container.entitySets).forEach(({ name, odataName, entityType }) => {\r\n result.methods.push(this.generateRelatedServiceGetter(name, odataName, entityType, importContainer));\r\n });\r\n\r\n Object.values(container.singletons).forEach((singleton) => {\r\n result.properties.push(this.generateSingletonProp(importContainer, singleton));\r\n result.methods.push(this.generateSingletonGetter(singleton));\r\n });\r\n\r\n return result;\r\n }\r\n\r\n private generateMainServiceOperations(\r\n ops: Array<FunctionImportType | ActionImportType>,\r\n importContainer: ImportContainer,\r\n ): PropsAndOps {\r\n const result: PropsAndOps = { properties: [], methods: [] };\r\n\r\n ops.forEach(({ operation, name }) => {\r\n const op = this.dataModel.getUnboundOperationType(operation);\r\n if (!op) {\r\n throw new Error(`Operation \"${operation}\" not found!`);\r\n }\r\n\r\n result.properties.push(this.generateQOperationProp(op));\r\n result.methods.push(this.generateMethod(name, op, importContainer, \"\"));\r\n });\r\n\r\n return result;\r\n }\r\n\r\n private generateRelatedServiceGetter(\r\n propName: string,\r\n odataPropName: string,\r\n entityType: EntityType,\r\n imports: ImportContainer,\r\n ): OptionalKind<MethodDeclarationStructure> {\r\n const idName = imports.addGeneratedModel(entityType.id.fqName, entityType.id.modelName);\r\n const idFunctionName = imports.addGeneratedQObject(entityType.id.fqName, entityType.id.qName);\r\n const serviceName = imports.addGeneratedService(entityType.fqName, entityType.serviceName);\r\n const collectionName = imports.addGeneratedService(entityType.fqName, entityType.serviceCollectionName);\r\n\r\n return {\r\n scope: Scope.Public,\r\n name: this.namingHelper.getRelatedServiceGetter(propName),\r\n parameters: [\r\n {\r\n name: \"id\",\r\n type: `${idName} | undefined`,\r\n hasQuestionToken: true,\r\n },\r\n ],\r\n overloads: [\r\n {\r\n parameters: [],\r\n returnType: `${collectionName}<ClientType>`,\r\n },\r\n {\r\n parameters: [\r\n {\r\n name: \"id\",\r\n type: idName,\r\n },\r\n ],\r\n returnType: `${serviceName}<ClientType>`,\r\n },\r\n ],\r\n statements: [\r\n `const fieldName = \"${odataPropName}\";`,\r\n `const { client, path, options, isUrlNotEncoded } = this.__base;`,\r\n 'return typeof id === \"undefined\" || id === null',\r\n `? new ${collectionName}(client, path, fieldName, options)`,\r\n `: new ${serviceName}(client, path, new ${idFunctionName}(fieldName).buildUrl(id, isUrlNotEncoded()), options);`,\r\n ],\r\n };\r\n }\r\n\r\n private generateSingletonProp(\r\n importContainer: ImportContainer,\r\n singleton: SingletonType,\r\n ): OptionalKind<PropertyDeclarationStructure> {\r\n const { name, entityType } = singleton;\r\n const type = entityType.serviceName;\r\n\r\n return {\r\n scope: Scope.Private,\r\n name: this.namingHelper.getPrivatePropName(name),\r\n type: `${type}<ClientType>`,\r\n hasQuestionToken: true,\r\n };\r\n }\r\n\r\n private generateQOperationProp = (operation: OperationType) => {\r\n return {\r\n scope: Scope.Private,\r\n name: this.namingHelper.getPrivatePropName(operation.qName),\r\n type: operation.qName,\r\n hasQuestionToken: true,\r\n };\r\n };\r\n\r\n private generateSingletonGetter(singleton: SingletonType): OptionalKind<MethodDeclarationStructure> {\r\n const { name, odataName, entityType } = singleton;\r\n const propName = \"this.\" + this.namingHelper.getPrivatePropName(name);\r\n const serviceType = entityType.serviceName;\r\n\r\n return {\r\n scope: Scope.Public,\r\n name: this.namingHelper.getRelatedServiceGetter(name),\r\n statements: [\r\n `if(!${propName}) {`,\r\n ` const { client, path, options } = this.__base;`,\r\n // prettier-ignore\r\n ` ${propName} = new ${serviceType}(client, path, \"${odataName}\", options)`,\r\n \"}\",\r\n `return ${propName}`,\r\n ],\r\n };\r\n }\r\n\r\n private generateEntityTypeService(file: FileHandler, model: ComplexType) {\r\n const importContainer = file.getImports();\r\n\r\n const operations = this.dataModel.getEntityTypeOperations(model.fqName);\r\n const props = [...model.baseProps, ...model.props];\r\n\r\n const entityServiceType = importContainer.addServiceObject(this.version, ServiceImports.EntityTypeService);\r\n const httpClient = importContainer.addClientApi(ClientApiImports.ODataHttpClient);\r\n\r\n // note: predictable first imports => no need to take renaming into account\r\n const modelName = importContainer.addGeneratedModel(model.fqName, model.modelName);\r\n const editableModelName = importContainer.addGeneratedModel(model.fqName, model.editableName);\r\n const qName = importContainer.addGeneratedQObject(model.fqName, model.qName, true);\r\n const qObjectName = importContainer.addGeneratedQObject(model.fqName, firstCharLowerCase(model.qName));\r\n const serviceOptions = importContainer.addServiceObject(\r\n this.version,\r\n this.version === ODataVersions.V4\r\n ? ServiceImports.ODataServiceOptionsInternal\r\n : ServiceImports.ODataServiceOptions,\r\n );\r\n\r\n const { properties, methods }: PropsAndOps = deepmerge(\r\n deepmerge(\r\n this.generateServiceProperties(importContainer, model.serviceName, props),\r\n this.generateServiceOperations(importContainer, model, operations),\r\n ),\r\n this.generateCastOperations(importContainer, model, false),\r\n );\r\n\r\n // generate EntityTypeService\r\n file.getFile().addClass({\r\n isExported: true,\r\n name: model.serviceName,\r\n typeParameters: [`in out ClientType extends ${httpClient}`],\r\n extends: entityServiceType + `<ClientType, ${modelName}, ${editableModelName}, ${qName}>`,\r\n ctors: [\r\n {\r\n parameters: [\r\n { name: \"client\", type: \"ClientType\" },\r\n { name: \"basePath\", type: \"string\" },\r\n { name: \"name\", type: \"string\" },\r\n { name: \"options\", type: serviceOptions, hasQuestionToken: true },\r\n ],\r\n statements: [`super(client, basePath, name, ${qObjectName}, options);`],\r\n },\r\n ],\r\n properties,\r\n methods,\r\n });\r\n }\r\n\r\n private generateServiceProperties(\r\n importContainer: ImportContainer,\r\n serviceName: string,\r\n props: Array<PropertyModel>,\r\n ): PropsAndOps {\r\n const result: PropsAndOps = { properties: [], methods: [] };\r\n\r\n props.forEach((prop) => {\r\n // collection of ComplexTypes, ComplexTypes, or EntityTypes\r\n if ((prop.dataType === DataTypes.ModelType && !prop.isCollection) || prop.dataType === DataTypes.ComplexType) {\r\n result.properties.push(this.generateModelProp(importContainer, prop));\r\n result.methods.push(this.generateModelPropGetter(importContainer, prop));\r\n } else if (prop.isCollection) {\r\n // collection of EntityTypes\r\n if (prop.dataType === DataTypes.ModelType) {\r\n const entityType = this.dataModel.getEntityType(prop.fqType);\r\n if (!entityType) {\r\n throw new Error(`Entity type \"${prop.fqType}\" specified by property not found!`);\r\n }\r\n\r\n result.methods.push(\r\n this.generateRelatedServiceGetter(prop.name, prop.odataName, entityType, importContainer),\r\n );\r\n }\r\n // collection of primitive or enum types\r\n else {\r\n result.properties.push(this.generatePrimitiveCollectionProp(importContainer, prop));\r\n result.methods.push(this.generatePrimitiveCollectionGetter(importContainer, prop));\r\n }\r\n }\r\n // generation of services for each primitive property: turned off by default\r\n else if (this.options.enablePrimitivePropertyServices && prop.dataType === DataTypes.PrimitiveType) {\r\n result.properties.push(this.generatePrimitiveTypeProp(importContainer, prop));\r\n result.methods.push(this.generatePrimitiveTypeGetter(importContainer, prop));\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n private generateServiceOperations(\r\n importContainer: ImportContainer,\r\n model: ComplexType,\r\n operations: Array<OperationType>,\r\n ): PropsAndOps {\r\n const result: PropsAndOps = { properties: [], methods: [] };\r\n\r\n operations.forEach((operation) => {\r\n result.properties.push(this.generateQOperationProp(operation));\r\n result.methods.push(this.generateMethod(operation.name, operation, importContainer, model.fqName));\r\n });\r\n\r\n return result;\r\n }\r\n\r\n private generateModelProp(imports: ImportContainer, prop: PropertyModel): PropertyDeclarationStructure {\r\n const propModel = this.dataModel.getModel(prop.fqType) as ComplexType;\r\n let propModelType: string;\r\n\r\n if (prop.isCollection) {\r\n const modelName = imports.addGeneratedModel(propModel.fqName, propModel.modelName);\r\n const editableModelName = imports.addGeneratedModel(propModel.fqName, propModel.editableName);\r\n const qModelName = imports.addGeneratedQObject(propModel.fqName, propModel.qName, true);\r\n const collectionServiceType = imports.addServiceObject(this.version, ServiceImports.CollectionService);\r\n\r\n propModelType = `${collectionServiceType}<ClientType, ${modelName}, ${qModelName}, ${editableModelName}>`;\r\n } else {\r\n const serviceName = imports.addGeneratedService(propModel.fqName, propModel.serviceName);\r\n propModelType = `${serviceName}<ClientType>`;\r\n }\r\n\r\n return {\r\n scope: Scope.Private,\r\n name: this.namingHelper.getPrivatePropName(prop.name),\r\n type: propModelType,\r\n hasQuestionToken: true,\r\n } as PropertyDeclarationStructure;\r\n }\r\n\r\n private generatePrimitiveCollectionProp(\r\n imports: ImportContainer,\r\n prop: PropertyModel,\r\n ): OptionalKind<PropertyDeclarationStructure> {\r\n if (!prop.qObject) {\r\n throw new Error(\"Illegal State: [qObject] must be provided for Collection types!\");\r\n }\r\n\r\n const collectionServiceType = imports.addServiceObject(this.version, ServiceImports.CollectionService);\r\n const isEnum = prop.dataType === DataTypes.EnumType;\r\n const isNumericEnum = this.options.numericEnums;\r\n let qType: string;\r\n let type: string;\r\n\r\n if (isEnum) {\r\n const propEnum = this.dataModel.getModel(prop.fqType)!;\r\n const propTypeModel = imports.addGeneratedModel(propEnum.fqName, propEnum.modelName, false);\r\n type = `${imports.addQObjectType(QueryObjectImports.EnumCollection)}<typeof ${propTypeModel}>`;\r\n qType = `${imports.addQObjectType(\r\n isNumericEnum ? QueryObjectImports.QNumericEnumCollection : QueryObjectImports.QEnumCollection,\r\n )}<typeof ${propTypeModel}>`;\r\n } else {\r\n // TODO refactor string concat\r\n type = imports.addQObjectType(`${upperCaseFirst(prop.type)}Collection`);\r\n qType = imports.addQObjectType(prop.qObject);\r\n }\r\n const collectionType = `${collectionServiceType}<ClientType, ${type}, ${qType}>`;\r\n\r\n return {\r\n scope: Scope.Private,\r\n name: this.namingHelper.getPrivatePropName(prop.name),\r\n type: `${collectionType}`,\r\n hasQuestionToken: true,\r\n };\r\n }\r\n\r\n private generatePrimitiveTypeProp(\r\n imports: ImportContainer,\r\n prop: PropertyModel,\r\n ): OptionalKind<PropertyDeclarationStructure> {\r\n const serviceType = imports.addServiceObject(this.version, ServiceImports.PrimitiveTypeService);\r\n const type = prop.typeModule ? imports.addCustomType(prop.typeModule, prop.type, true) : prop.type;\r\n\r\n return {\r\n scope: Scope.Private,\r\n name: this.namingHelper.getPrivatePropName(prop.name),\r\n type: `${serviceType}<ClientType, ${type}>`,\r\n hasQuestionToken: true,\r\n };\r\n }\r\n\r\n private generateModelPropGetter(\r\n imports: ImportContainer,\r\n prop: PropertyModel,\r\n ): OptionalKind<MethodDeclarationStructure> {\r\n const model = this.dataModel.getModel(prop.fqType) as ComplexType;\r\n const isComplexCollection = prop.isCollection && model.dataType === DataTypes.ComplexType;\r\n\r\n const type = isComplexCollection\r\n ? imports.addServiceObject(this.version, ServiceImports.CollectionService)\r\n : prop.isCollection\r\n ? model.serviceCollectionName\r\n : model.serviceName;\r\n const typeWithGenerics = isComplexCollection\r\n ? `${type}<ClientType, ${imports.addGeneratedModel(model.fqName, model.modelName)}, ${imports.addGeneratedQObject(\r\n model.fqName,\r\n model.qName,\r\n true,\r\n )}, ${imports.addGeneratedModel(model.fqName, model.editableName)}>`\r\n : `${type}<ClientType>`;\r\n\r\n const privateSrvProp = \"this.\" + this.namingHelper.getPrivatePropName(prop.name);\r\n\r\n return {\r\n scope: Scope.Public,\r\n name: this.namingHelper.getRelatedServiceGetter(prop.name),\r\n returnType: typeWithGenerics,\r\n statements: [\r\n `if(!${privateSrvProp}) {`,\r\n ` const { client, path, options } = this.__base;`,\r\n // prettier-ignore\r\n ` ${privateSrvProp} = new ${type}(client, path, \"${prop.odataName}\"${isComplexCollection ? `, ${imports.addGeneratedQObject(model.fqName, firstCharLowerCase(model.qName))}`: \"\"}, options)`,\r\n \"}\",\r\n `return ${privateSrvProp}`,\r\n ],\r\n };\r\n }\r\n\r\n private generatePrimitiveCollectionGetter(\r\n imports: ImportContainer,\r\n prop: PropertyModel,\r\n ): OptionalKind<MethodDeclarationStructure> {\r\n const collectionServiceType = imports.addServiceObject(this.version, ServiceImports.CollectionService);\r\n const qCollectionName = imports.addQObject(prop.qObject!);\r\n const enumName =\r\n prop.dataType === DataTypes.EnumType ? imports.addGeneratedModel(prop.fqType, prop.type) : undefined;\r\n\r\n const propName = \"this.\" + this.namingHelper.getPrivatePropName(prop.name);\r\n return {\r\n scope: Scope.Public,\r\n name: this.namingHelper.getRelatedServiceGetter(prop.name),\r\n statements: [\r\n `if(!${propName}) {`,\r\n ` const { client, path, options } = this.__base;`,\r\n // prettier-ignore\r\n ` ${propName} = new ${collectionServiceType}(client, path, \"${prop.odataName}\", new ${qCollectionName}(${enumName ?? \"\"}), options)`,\r\n \"}\",\r\n `return ${propName}`,\r\n ],\r\n };\r\n }\r\n\r\n private generatePrimitiveTypeGetter(\r\n imports: ImportContainer,\r\n prop: PropertyModel,\r\n ): OptionalKind<MethodDeclarationStructure> {\r\n const serviceType = imports.addServiceObject(this.version, ServiceImports.PrimitiveTypeService);\r\n const propName = \"this.\" + this.namingHelper.getPrivatePropName(prop.name);\r\n // for V2: mapped name must be specified\r\n const v2MappedName =\r\n this.version === ODataVersions.V4 ? \"\" : prop.name !== prop.odataName ? `, \"${prop.name}\"` : \", undefined\";\r\n\r\n return {\r\n scope: Scope.Public,\r\n name: this.namingHelper.getRelatedServiceGetter(prop.name),\r\n statements: [\r\n `if(!${propName}) {`,\r\n ` const { client, path, qModel, options } = this.__base;`,\r\n ` ${propName} = new ${serviceType}(client, path, \"${prop.odataName}\", qModel.${prop.name}.converter${v2MappedName}, options)`,\r\n \"}\",\r\n `return ${propName}`,\r\n ],\r\n };\r\n }\r\n\r\n private generateEntityCollectionService(file: FileHandler, model: EntityType) {\r\n const importContainer = file.getImports();\r\n const editableModelName = model.editableName;\r\n const qObjectName = firstCharLowerCase(model.qName);\r\n\r\n const entitySetServiceType = importContainer.addServiceObject(this.version, ServiceImports.EntitySetService);\r\n const paramsModelName = importContainer.addGeneratedModel(model.id.fqName, model.id.modelName);\r\n const qIdFunctionName = importContainer.addGeneratedQObject(model.id.fqName, model.id.qName);\r\n const serviceOptions = importContainer.addServiceObject(\r\n this.version,\r\n this.version === ODataVersions.V4\r\n ? ServiceImports.ODataServiceOptionsInternal\r\n : ServiceImports.ODataServiceOptions,\r\n );\r\n\r\n const collectionOperations = this.dataModel.getEntitySetOperations(model.fqName);\r\n\r\n const { properties, methods } = deepmerge(\r\n this.generateServiceOperations(importContainer, model, collectionOperations),\r\n this.generateCastOperations(importContainer, model, true),\r\n );\r\n\r\n file.getFile().addClass({\r\n isExported: true,\r\n name: model.serviceCollectionName,\r\n typeParameters: [\"in out ClientType extends ODataHttpClient\"],\r\n extends:\r\n entitySetServiceType +\r\n `<ClientType, ${model.modelName}, ${editableModelName}, ${model.qName}, ${paramsModelName}>`,\r\n ctors: [\r\n {\r\n parameters: [\r\n { name: \"client\", type: \"ClientType\" },\r\n { name: \"basePath\", type: \"string\" },\r\n { name: \"name\", type: \"string\" },\r\n { name: \"options\", type: serviceOptions, hasQuestionToken: true },\r\n ],\r\n statements: [`super(client, basePath, name, ${qObjectName}, new ${qIdFunctionName}(name), options);`],\r\n },\r\n ],\r\n properties,\r\n methods,\r\n });\r\n }\r\n\r\n private generateEntityTypeServices(): Array<Promise<void>> {\r\n // build service file for each entity, consisting of EntityTypeService & EntityCollectionService\r\n return this.dataModel\r\n .getEntityTypes()\r\n .filter((model) => model.genMode === Modes.service || model.genMode === Modes.all)\r\n .map((model) => {\r\n const file = this.project.createOrGetServiceFile(model.folderPath, model.serviceName, [\r\n model.serviceName,\r\n model.serviceCollectionName,\r\n ]);\r\n\r\n // entity type service\r\n this.generateEntityTypeService(file, model);\r\n // entity collection service if this entity specified keys at all\r\n if (model.keyNames.length) {\r\n this.generateEntityCollectionService(file, model);\r\n }\r\n\r\n return this.project.finalizeFile(file);\r\n });\r\n }\r\n\r\n private generateComplexTypeServices(): Array<Promise<void>> {\r\n // build service file for complex types\r\n return this.dataModel\r\n .getComplexTypes()\r\n .filter((model) => model.genMode === Modes.service || model.genMode === Modes.all)\r\n .map((model) => {\r\n const file = this.project.createOrGetServiceFile(model.folderPath, model.serviceName, [model.serviceName]);\r\n\r\n // entity type service\r\n this.generateEntityTypeService(file, model);\r\n\r\n return this.project.finalizeFile(file);\r\n });\r\n }\r\n\r\n private generateMethod(\r\n name: string,\r\n operation: OperationType,\r\n importContainer: ImportContainer,\r\n baseFqName: string,\r\n ): OptionalKind<MethodDeclarationStructure> {\r\n const isFunc = operation.type === OperationTypes.Function;\r\n const returnType = operation.returnType;\r\n const hasParams = operation.parameters.length > 0 || operation.overrides?.length;\r\n const isParamsOptional = !![operation.parameters, ...(operation.overrides ?? [])].find((pSet) => pSet.length === 0);\r\n\r\n // importing dependencies\r\n const httpClientConfigModel = importContainer.addClientApi(ClientApiImports.ODataHttpClientConfig);\r\n const odataResponse = importContainer.addClientApi(ClientApiImports.HttpResponseModel);\r\n const responseStructure = this.importReturnType(importContainer, returnType);\r\n const qOperationName = importContainer.addGeneratedQObject(baseFqName, operation.qName);\r\n const rtType =\r\n returnType?.type && returnType.dataType !== DataTypes.PrimitiveType\r\n ? importContainer.addGeneratedModel(returnType.fqType, returnType.type)\r\n : returnType?.type;\r\n const paramsModelName = hasParams\r\n ? importContainer.addGeneratedModel(baseFqName, operation.paramsModelName)\r\n : undefined;\r\n\r\n const requestConfigParam = {\r\n name: \"requestConfig\",\r\n hasQuestionToken: true,\r\n type: `${httpClientConfigModel}<ClientType>`,\r\n };\r\n const qOpProp = \"this.\" + this.namingHelper.getPrivatePropName(operation.qName);\r\n\r\n return {\r\n scope: Scope.Public,\r\n isAsync: true,\r\n name,\r\n parameters: hasParams\r\n ? [{ name: \"params\", type: paramsModelName, hasQuestionToken: isParamsOptional }, requestConfigParam]\r\n : [requestConfigParam],\r\n returnType: `Promise<${odataResponse}<${responseStructure}<${rtType || \"void\"}>>>`,\r\n statements: [\r\n `if(!${qOpProp}) {`,\r\n ` ${qOpProp} = new ${qOperationName}()`,\r\n \"}\",\r\n\r\n `const { addFullPath, client, getDefaultHeaders, isUrlNotEncoded } = this.__base;`,\r\n `const url = addFullPath(${qOpProp}.buildUrl(${isFunc && hasParams ? \"params, \" : \"\"}${isFunc ? \"isUrlNotEncoded()\" : \"\"}));`,\r\n `${returnType ? \"const response = await \" : \"return\"} client.${\r\n !isFunc\r\n ? // actions: since V4\r\n `post(url, ${hasParams ? `${qOpProp}.convertUserParams(params)` : \"{}\"}, ${\r\n requestConfigParam.name\r\n }, getDefaultHeaders())`\r\n : operation.usePost\r\n ? // V2 POST => BUT values are still query params, they are not part of the request body\r\n `post(url, undefined, ${requestConfigParam.name}, getDefaultHeaders())`\r\n : // functions: since V2\r\n `get(url, ${requestConfigParam.name}, getDefaultHeaders())`\r\n };`,\r\n returnType ? `return ${qOpProp}.convertResponse(response);` : \"\",\r\n ],\r\n };\r\n }\r\n\r\n private importReturnType(imports: ImportContainer, returnType: ReturnTypeModel | undefined): string {\r\n const typeToImport: CoreImports = returnType?.isCollection\r\n ? CoreImports.ODataCollectionResponse\r\n : returnType?.dataType === DataTypes.PrimitiveType\r\n ? CoreImports.ODataValueResponse\r\n : CoreImports.ODataModelResponse;\r\n\r\n return imports.addCoreLib(this.version, typeToImport);\r\n }\r\n\r\n private generateCastOperations(\r\n importContainer: ImportContainer,\r\n model: ComplexType,\r\n isCollection: boolean,\r\n ): PropsAndOps {\r\n const result: PropsAndOps = { properties: [], methods: [] };\r\n\r\n if (this.version === ODataVersions.V4) {\r\n model.subtypes.forEach((subtype) => {\r\n const subClass = this.dataModel.getModel(subtype) as ComplexType;\r\n const serviceName = isCollection ? subClass.serviceCollectionName : subClass.serviceName;\r\n const serviceType = importContainer.addGeneratedService(subClass.fqName, serviceName);\r\n result.methods.push({\r\n name: `as${upperCaseFirst(serviceName)}`,\r\n scope: Scope.Public,\r\n statements: [\r\n \"const { client, path, options } = this.__base;\",\r\n `return new ${serviceType}(client, path, \"${subClass.fqName}\", { ...options, subtype: true });`,\r\n ],\r\n });\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ServiceGenerator.js","sourceRoot":"","sources":["../../src/generator/ServiceGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["import { ODataVersions } from \"@odata2ts/odata-core\";\nimport deepmerge from \"deepmerge\";\nimport {\n ClassDeclarationStructure,\n MethodDeclarationStructure,\n OptionalKind,\n PropertyDeclarationStructure,\n Scope,\n} from \"ts-morph\";\nimport { upperCaseFirst } from \"upper-case-first\";\nimport { firstCharLowerCase } from \"xml2js/lib/processors.js\";\nimport { DataModel } from \"../data-model/DataModel.js\";\nimport {\n ActionImportType,\n ComplexType,\n DataTypes,\n EntityContainerModel,\n EntityType,\n FunctionImportType,\n OperationType,\n OperationTypes,\n PropertyModel,\n ReturnTypeModel,\n SingletonType,\n} from \"../data-model/DataTypeModel.js\";\nimport { NamingHelper } from \"../data-model/NamingHelper.js\";\nimport { ConfigFileOptions, Modes } from \"../OptionModel.js\";\nimport { FileHandler } from \"../project/FileHandler.js\";\nimport { ProjectManager } from \"../project/ProjectManager.js\";\nimport { ClientApiImports, CoreImports, QueryObjectImports, ServiceImports } from \"./import/ImportObjects.js\";\nimport { ImportContainer } from \"./ImportContainer.js\";\n\nexport interface PropsAndOps extends Required<Pick<ClassDeclarationStructure, \"properties\" | \"methods\">> {}\n\nexport interface ServiceGeneratorOptions\n extends Pick<ConfigFileOptions, \"enablePrimitivePropertyServices\" | \"v4BigNumberAsString\" | \"numericEnums\"> {}\n\nexport async function generateServices(\n project: ProjectManager,\n dataModel: DataModel,\n version: ODataVersions,\n namingHelper: NamingHelper,\n options?: ServiceGeneratorOptions,\n) {\n const generator = new ServiceGenerator(project, dataModel, version, namingHelper, options);\n return generator.generate();\n}\n\nclass ServiceGenerator {\n constructor(\n private project: ProjectManager,\n private dataModel: DataModel,\n private version: ODataVersions,\n private namingHelper: NamingHelper,\n private options: ServiceGeneratorOptions = {},\n ) {}\n\n private isV4BigNumber() {\n return this.options.v4BigNumberAsString && this.version === ODataVersions.V4;\n }\n\n public async generate(): Promise<void> {\n const mainServiceName = this.namingHelper.getMainServiceName();\n this.project.initServices();\n\n await Promise.all([\n this.generateMainService(mainServiceName),\n ...this.generateEntityTypeServices(),\n ...this.generateComplexTypeServices(),\n ]);\n\n return this.project.finalizeServices();\n }\n\n private async generateMainService(mainServiceName: string) {\n const mainServiceFile = this.project.getMainServiceFile();\n const importContainer = mainServiceFile.getImports();\n const container = this.dataModel.getEntityContainer();\n const unboundOperations = [...Object.values(container.functions), ...Object.values(container.actions)];\n\n const httpClient = importContainer.addClientApi(ClientApiImports.ODataHttpClient);\n const rootService = importContainer.addServiceObject(this.version, ServiceImports.ODataService);\n\n const { properties, methods }: PropsAndOps = deepmerge(\n this.generateMainServiceProperties(container, importContainer),\n this.generateMainServiceOperations(unboundOperations, importContainer),\n );\n\n mainServiceFile.getFile().addClass({\n isExported: true,\n name: mainServiceName,\n typeParameters: [`in out ClientType extends ${httpClient}`],\n extends: `${rootService}<ClientType>`,\n ctors: this.isV4BigNumber()\n ? [\n {\n parameters: [\n { name: \"client\", type: \"ClientType\" },\n { name: \"basePath\", type: \"string\" },\n {\n name: \"options\",\n type: importContainer.addServiceObject(this.version, ServiceImports.ODataServiceOptions),\n hasQuestionToken: true,\n },\n ],\n statements: [`super(client, basePath, options);`, \"this.__base.options.bigNumbersAsString = true;\"],\n },\n ]\n : [],\n properties,\n methods,\n });\n }\n\n private generateMainServiceProperties(\n container: EntityContainerModel,\n importContainer: ImportContainer,\n ): PropsAndOps {\n const result: PropsAndOps = { properties: [], methods: [] };\n\n Object.values(container.entitySets).forEach(({ name, odataName, entityType }) => {\n result.methods.push(this.generateRelatedServiceGetter(name, odataName, entityType, importContainer));\n });\n\n Object.values(container.singletons).forEach((singleton) => {\n result.properties.push(this.generateSingletonProp(importContainer, singleton));\n result.methods.push(this.generateSingletonGetter(singleton));\n });\n\n return result;\n }\n\n private generateMainServiceOperations(\n ops: Array<FunctionImportType | ActionImportType>,\n importContainer: ImportContainer,\n ): PropsAndOps {\n const result: PropsAndOps = { properties: [], methods: [] };\n\n ops.forEach(({ operation, name }) => {\n const op = this.dataModel.getUnboundOperationType(operation);\n if (!op) {\n throw new Error(`Operation \"${operation}\" not found!`);\n }\n\n result.properties.push(this.generateQOperationProp(op));\n result.methods.push(this.generateMethod(name, op, importContainer, \"\"));\n });\n\n return result;\n }\n\n private generateRelatedServiceGetter(\n propName: string,\n odataPropName: string,\n entityType: EntityType,\n imports: ImportContainer,\n ): OptionalKind<MethodDeclarationStructure> {\n const idName = imports.addGeneratedModel(entityType.id.fqName, entityType.id.modelName);\n const idFunctionName = imports.addGeneratedQObject(entityType.id.fqName, entityType.id.qName);\n const serviceName = imports.addGeneratedService(entityType.fqName, entityType.serviceName);\n const collectionName = imports.addGeneratedService(entityType.fqName, entityType.serviceCollectionName);\n\n return {\n scope: Scope.Public,\n name: this.namingHelper.getRelatedServiceGetter(propName),\n parameters: [\n {\n name: \"id\",\n type: `${idName} | undefined`,\n hasQuestionToken: true,\n },\n ],\n overloads: [\n {\n parameters: [],\n returnType: `${collectionName}<ClientType>`,\n },\n {\n parameters: [\n {\n name: \"id\",\n type: idName,\n },\n ],\n returnType: `${serviceName}<ClientType>`,\n },\n ],\n statements: [\n `const fieldName = \"${odataPropName}\";`,\n `const { client, path, options, isUrlNotEncoded } = this.__base;`,\n 'return typeof id === \"undefined\" || id === null',\n `? new ${collectionName}(client, path, fieldName, options)`,\n `: new ${serviceName}(client, path, new ${idFunctionName}(fieldName).buildUrl(id, isUrlNotEncoded()), options);`,\n ],\n };\n }\n\n private generateSingletonProp(\n importContainer: ImportContainer,\n singleton: SingletonType,\n ): OptionalKind<PropertyDeclarationStructure> {\n const { name, entityType } = singleton;\n const type = entityType.serviceName;\n\n return {\n scope: Scope.Private,\n name: this.namingHelper.getPrivatePropName(name),\n type: `${type}<ClientType>`,\n hasQuestionToken: true,\n };\n }\n\n private generateQOperationProp = (operation: OperationType) => {\n return {\n scope: Scope.Private,\n name: this.namingHelper.getPrivatePropName(operation.qName),\n type: operation.qName,\n hasQuestionToken: true,\n };\n };\n\n private generateSingletonGetter(singleton: SingletonType): OptionalKind<MethodDeclarationStructure> {\n const { name, odataName, entityType } = singleton;\n const propName = \"this.\" + this.namingHelper.getPrivatePropName(name);\n const serviceType = entityType.serviceName;\n\n return {\n scope: Scope.Public,\n name: this.namingHelper.getRelatedServiceGetter(name),\n statements: [\n `if(!${propName}) {`,\n ` const { client, path, options } = this.__base;`,\n // prettier-ignore\n ` ${propName} = new ${serviceType}(client, path, \"${odataName}\", options)`,\n \"}\",\n `return ${propName}`,\n ],\n };\n }\n\n private generateEntityTypeService(file: FileHandler, model: ComplexType, isComplexType = false) {\n const importContainer = file.getImports();\n\n const operations = this.dataModel.getEntityTypeOperations(model.fqName);\n const props = [...model.baseProps, ...model.props];\n\n const entityServiceType = importContainer.addServiceObject(\n this.version,\n this.version === ODataVersions.V2 && isComplexType\n ? ServiceImports.ComplexTypeService\n : ServiceImports.EntityTypeService,\n );\n const httpClient = importContainer.addClientApi(ClientApiImports.ODataHttpClient);\n\n // note: predictable first imports => no need to take renaming into account\n const modelName = importContainer.addGeneratedModel(model.fqName, model.modelName);\n const editableModelName = importContainer.addGeneratedModel(model.fqName, model.editableName);\n const qName = importContainer.addGeneratedQObject(model.fqName, model.qName, true);\n const qObjectName = importContainer.addGeneratedQObject(model.fqName, firstCharLowerCase(model.qName));\n const serviceOptions = importContainer.addServiceObject(\n this.version,\n this.version === ODataVersions.V4\n ? ServiceImports.ODataServiceOptionsInternal\n : ServiceImports.ODataServiceOptions,\n );\n\n const { properties, methods }: PropsAndOps = deepmerge(\n deepmerge(\n this.generateServiceProperties(importContainer, model.serviceName, props),\n this.generateServiceOperations(importContainer, model, operations),\n ),\n this.generateCastOperations(importContainer, model, false),\n );\n\n // generate EntityTypeService\n file.getFile().addClass({\n isExported: true,\n name: model.serviceName,\n typeParameters: [`in out ClientType extends ${httpClient}`],\n extends: entityServiceType + `<ClientType, ${modelName}, ${editableModelName}, ${qName}>`,\n ctors: [\n {\n parameters: [\n { name: \"client\", type: \"ClientType\" },\n { name: \"basePath\", type: \"string\" },\n { name: \"name\", type: \"string\" },\n { name: \"options\", type: serviceOptions, hasQuestionToken: true },\n ],\n statements: [`super(client, basePath, name, ${qObjectName}, options);`],\n },\n ],\n properties,\n methods,\n });\n }\n\n private generateServiceProperties(\n importContainer: ImportContainer,\n serviceName: string,\n props: Array<PropertyModel>,\n ): PropsAndOps {\n const result: PropsAndOps = { properties: [], methods: [] };\n\n props.forEach((prop) => {\n // collection of ComplexTypes, ComplexTypes, or EntityTypes\n if ((prop.dataType === DataTypes.ModelType && !prop.isCollection) || prop.dataType === DataTypes.ComplexType) {\n result.properties.push(this.generateModelProp(importContainer, prop));\n result.methods.push(this.generateModelPropGetter(importContainer, prop));\n } else if (prop.isCollection) {\n // collection of EntityTypes\n if (prop.dataType === DataTypes.ModelType) {\n const entityType = this.dataModel.getEntityType(prop.fqType);\n if (!entityType) {\n throw new Error(`Entity type \"${prop.fqType}\" specified by property not found!`);\n }\n\n result.methods.push(\n this.generateRelatedServiceGetter(prop.name, prop.odataName, entityType, importContainer),\n );\n }\n // collection of primitive or enum types\n else {\n result.properties.push(this.generatePrimitiveCollectionProp(importContainer, prop));\n result.methods.push(this.generatePrimitiveCollectionGetter(importContainer, prop));\n }\n }\n // generation of services for each primitive property: turned off by default\n else if (this.options.enablePrimitivePropertyServices && prop.dataType === DataTypes.PrimitiveType) {\n result.properties.push(this.generatePrimitiveTypeProp(importContainer, prop));\n result.methods.push(this.generatePrimitiveTypeGetter(importContainer, prop));\n }\n });\n\n return result;\n }\n\n private generateServiceOperations(\n importContainer: ImportContainer,\n model: ComplexType,\n operations: Array<OperationType>,\n ): PropsAndOps {\n const result: PropsAndOps = { properties: [], methods: [] };\n\n operations.forEach((operation) => {\n result.properties.push(this.generateQOperationProp(operation));\n result.methods.push(this.generateMethod(operation.name, operation, importContainer, model.fqName));\n });\n\n return result;\n }\n\n private generateModelProp(imports: ImportContainer, prop: PropertyModel): PropertyDeclarationStructure {\n const propModel = this.dataModel.getModel(prop.fqType) as ComplexType;\n let propModelType: string;\n\n if (prop.isCollection) {\n const modelName = imports.addGeneratedModel(propModel.fqName, propModel.modelName);\n const editableModelName = imports.addGeneratedModel(propModel.fqName, propModel.editableName);\n const qModelName = imports.addGeneratedQObject(propModel.fqName, propModel.qName, true);\n const collectionServiceType = imports.addServiceObject(this.version, ServiceImports.CollectionService);\n\n propModelType = `${collectionServiceType}<ClientType, ${modelName}, ${qModelName}, ${editableModelName}>`;\n } else {\n const serviceName = imports.addGeneratedService(propModel.fqName, propModel.serviceName);\n propModelType = `${serviceName}<ClientType>`;\n }\n\n return {\n scope: Scope.Private,\n name: this.namingHelper.getPrivatePropName(prop.name),\n type: propModelType,\n hasQuestionToken: true,\n } as PropertyDeclarationStructure;\n }\n\n private generatePrimitiveCollectionProp(\n imports: ImportContainer,\n prop: PropertyModel,\n ): OptionalKind<PropertyDeclarationStructure> {\n if (!prop.qObject) {\n throw new Error(\"Illegal State: [qObject] must be provided for Collection types!\");\n }\n\n const collectionServiceType = imports.addServiceObject(this.version, ServiceImports.CollectionService);\n const isEnum = prop.dataType === DataTypes.EnumType;\n const isNumericEnum = this.options.numericEnums;\n let qType: string;\n let type: string;\n\n if (isEnum) {\n const propEnum = this.dataModel.getModel(prop.fqType)!;\n const propTypeModel = imports.addGeneratedModel(propEnum.fqName, propEnum.modelName, false);\n type = `${imports.addQObjectType(QueryObjectImports.EnumCollection)}<typeof ${propTypeModel}>`;\n qType = `${imports.addQObjectType(\n isNumericEnum ? QueryObjectImports.QNumericEnumCollection : QueryObjectImports.QEnumCollection,\n )}<typeof ${propTypeModel}>`;\n } else {\n // TODO refactor string concat\n type = imports.addQObjectType(`${upperCaseFirst(prop.type)}Collection`);\n qType = imports.addQObjectType(prop.qObject);\n }\n const collectionType = `${collectionServiceType}<ClientType, ${type}, ${qType}>`;\n\n return {\n scope: Scope.Private,\n name: this.namingHelper.getPrivatePropName(prop.name),\n type: `${collectionType}`,\n hasQuestionToken: true,\n };\n }\n\n private generatePrimitiveTypeProp(\n imports: ImportContainer,\n prop: PropertyModel,\n ): OptionalKind<PropertyDeclarationStructure> {\n const serviceType = imports.addServiceObject(this.version, ServiceImports.PrimitiveTypeService);\n const type = prop.typeModule ? imports.addCustomType(prop.typeModule, prop.type, true) : prop.type;\n\n return {\n scope: Scope.Private,\n name: this.namingHelper.getPrivatePropName(prop.name),\n type: `${serviceType}<ClientType, ${type}>`,\n hasQuestionToken: true,\n };\n }\n\n private generateModelPropGetter(\n imports: ImportContainer,\n prop: PropertyModel,\n ): OptionalKind<MethodDeclarationStructure> {\n const model = this.dataModel.getModel(prop.fqType) as ComplexType;\n const isComplexCollection = prop.isCollection && model.dataType === DataTypes.ComplexType;\n\n const type = isComplexCollection\n ? imports.addServiceObject(this.version, ServiceImports.CollectionService)\n : prop.isCollection\n ? model.serviceCollectionName\n : model.serviceName;\n const typeWithGenerics = isComplexCollection\n ? `${type}<ClientType, ${imports.addGeneratedModel(model.fqName, model.modelName)}, ${imports.addGeneratedQObject(\n model.fqName,\n model.qName,\n true,\n )}, ${imports.addGeneratedModel(model.fqName, model.editableName)}>`\n : `${type}<ClientType>`;\n\n const privateSrvProp = \"this.\" + this.namingHelper.getPrivatePropName(prop.name);\n\n return {\n scope: Scope.Public,\n name: this.namingHelper.getRelatedServiceGetter(prop.name),\n returnType: typeWithGenerics,\n statements: [\n `if(!${privateSrvProp}) {`,\n ` const { client, path, options } = this.__base;`,\n // prettier-ignore\n ` ${privateSrvProp} = new ${type}(client, path, \"${prop.odataName}\"${isComplexCollection ? `, ${imports.addGeneratedQObject(model.fqName, firstCharLowerCase(model.qName))}`: \"\"}, options)`,\n \"}\",\n `return ${privateSrvProp}`,\n ],\n };\n }\n\n private generatePrimitiveCollectionGetter(\n imports: ImportContainer,\n prop: PropertyModel,\n ): OptionalKind<MethodDeclarationStructure> {\n const collectionServiceType = imports.addServiceObject(this.version, ServiceImports.CollectionService);\n const qCollectionName = imports.addQObject(prop.qObject!);\n const enumName =\n prop.dataType === DataTypes.EnumType ? imports.addGeneratedModel(prop.fqType, prop.type) : undefined;\n\n const propName = \"this.\" + this.namingHelper.getPrivatePropName(prop.name);\n return {\n scope: Scope.Public,\n name: this.namingHelper.getRelatedServiceGetter(prop.name),\n statements: [\n `if(!${propName}) {`,\n ` const { client, path, options } = this.__base;`,\n // prettier-ignore\n ` ${propName} = new ${collectionServiceType}(client, path, \"${prop.odataName}\", new ${qCollectionName}(${enumName ?? \"\"}), options)`,\n \"}\",\n `return ${propName}`,\n ],\n };\n }\n\n private generatePrimitiveTypeGetter(\n imports: ImportContainer,\n prop: PropertyModel,\n ): OptionalKind<MethodDeclarationStructure> {\n const serviceType = imports.addServiceObject(this.version, ServiceImports.PrimitiveTypeService);\n const propName = \"this.\" + this.namingHelper.getPrivatePropName(prop.name);\n // for V2: mapped name must be specified\n const v2MappedName =\n this.version === ODataVersions.V4 ? \"\" : prop.name !== prop.odataName ? `, \"${prop.name}\"` : \", undefined\";\n\n return {\n scope: Scope.Public,\n name: this.namingHelper.getRelatedServiceGetter(prop.name),\n statements: [\n `if(!${propName}) {`,\n ` const { client, path, qModel, options } = this.__base;`,\n ` ${propName} = new ${serviceType}(client, path, \"${prop.odataName}\", qModel.${prop.name}.converter${v2MappedName}, options)`,\n \"}\",\n `return ${propName}`,\n ],\n };\n }\n\n private generateEntityCollectionService(file: FileHandler, model: EntityType) {\n const importContainer = file.getImports();\n const editableModelName = model.editableName;\n const qObjectName = firstCharLowerCase(model.qName);\n\n const entitySetServiceType = importContainer.addServiceObject(this.version, ServiceImports.EntitySetService);\n const paramsModelName = importContainer.addGeneratedModel(model.id.fqName, model.id.modelName);\n const qIdFunctionName = importContainer.addGeneratedQObject(model.id.fqName, model.id.qName);\n const serviceOptions = importContainer.addServiceObject(\n this.version,\n this.version === ODataVersions.V4\n ? ServiceImports.ODataServiceOptionsInternal\n : ServiceImports.ODataServiceOptions,\n );\n\n const collectionOperations = this.dataModel.getEntitySetOperations(model.fqName);\n\n const { properties, methods } = deepmerge(\n this.generateServiceOperations(importContainer, model, collectionOperations),\n this.generateCastOperations(importContainer, model, true),\n );\n\n file.getFile().addClass({\n isExported: true,\n name: model.serviceCollectionName,\n typeParameters: [\"in out ClientType extends ODataHttpClient\"],\n extends:\n entitySetServiceType +\n `<ClientType, ${model.modelName}, ${editableModelName}, ${model.qName}, ${paramsModelName}>`,\n ctors: [\n {\n parameters: [\n { name: \"client\", type: \"ClientType\" },\n { name: \"basePath\", type: \"string\" },\n { name: \"name\", type: \"string\" },\n { name: \"options\", type: serviceOptions, hasQuestionToken: true },\n ],\n statements: [`super(client, basePath, name, ${qObjectName}, new ${qIdFunctionName}(name), options);`],\n },\n ],\n properties,\n methods,\n });\n }\n\n private generateEntityTypeServices(): Array<Promise<void>> {\n // build service file for each entity, consisting of EntityTypeService & EntityCollectionService\n return this.dataModel\n .getEntityTypes()\n .filter((model) => model.genMode === Modes.service || model.genMode === Modes.all)\n .map((model) => {\n const file = this.project.createOrGetServiceFile(model.folderPath, model.serviceName, [\n model.serviceName,\n model.serviceCollectionName,\n ]);\n\n // entity type service\n this.generateEntityTypeService(file, model);\n // entity collection service if this entity specified keys at all\n if (model.keyNames.length) {\n this.generateEntityCollectionService(file, model);\n }\n\n return this.project.finalizeFile(file);\n });\n }\n\n private generateComplexTypeServices(): Array<Promise<void>> {\n // build service file for complex types\n return this.dataModel\n .getComplexTypes()\n .filter((model) => model.genMode === Modes.service || model.genMode === Modes.all)\n .map((model) => {\n const file = this.project.createOrGetServiceFile(model.folderPath, model.serviceName, [model.serviceName]);\n\n // entity type service\n this.generateEntityTypeService(file, model, true);\n\n return this.project.finalizeFile(file);\n });\n }\n\n private generateMethod(\n name: string,\n operation: OperationType,\n importContainer: ImportContainer,\n baseFqName: string,\n ): OptionalKind<MethodDeclarationStructure> {\n const isFunc = operation.type === OperationTypes.Function;\n const returnType = operation.returnType;\n const hasParams = operation.parameters.length > 0 || operation.overrides?.length;\n const isParamsOptional = !![operation.parameters, ...(operation.overrides ?? [])].find((pSet) => pSet.length === 0);\n\n // importing dependencies\n const httpClientConfigModel = importContainer.addClientApi(ClientApiImports.ODataHttpClientConfig);\n const odataResponse = importContainer.addClientApi(ClientApiImports.HttpResponseModel);\n const responseStructure = this.importReturnType(importContainer, returnType);\n const qOperationName = importContainer.addGeneratedQObject(baseFqName, operation.qName);\n const rtType =\n returnType?.type && returnType.dataType !== DataTypes.PrimitiveType\n ? importContainer.addGeneratedModel(returnType.fqType, returnType.type)\n : returnType?.type;\n const paramsModelName = hasParams\n ? importContainer.addGeneratedModel(baseFqName, operation.paramsModelName)\n : undefined;\n\n const requestConfigParam = {\n name: \"requestConfig\",\n hasQuestionToken: true,\n type: `${httpClientConfigModel}<ClientType>`,\n };\n const qOpProp = \"this.\" + this.namingHelper.getPrivatePropName(operation.qName);\n\n return {\n scope: Scope.Public,\n isAsync: true,\n name,\n parameters: hasParams\n ? [{ name: \"params\", type: paramsModelName, hasQuestionToken: isParamsOptional }, requestConfigParam]\n : [requestConfigParam],\n returnType: `Promise<${odataResponse}<${responseStructure}<${rtType || \"void\"}>>>`,\n statements: [\n `if(!${qOpProp}) {`,\n ` ${qOpProp} = new ${qOperationName}()`,\n \"}\",\n\n `const { addFullPath, client, getDefaultHeaders, isUrlNotEncoded } = this.__base;`,\n `const url = addFullPath(${qOpProp}.buildUrl(${isFunc && hasParams ? \"params, \" : \"\"}${isFunc ? \"isUrlNotEncoded()\" : \"\"}));`,\n `${returnType ? \"const response = await \" : \"return\"} client.${\n !isFunc\n ? // actions: since V4\n `post(url, ${hasParams ? `${qOpProp}.convertUserParams(params)` : \"{}\"}, ${\n requestConfigParam.name\n }, getDefaultHeaders())`\n : operation.usePost\n ? // V2 POST => BUT values are still query params, they are not part of the request body\n `post(url, undefined, ${requestConfigParam.name}, getDefaultHeaders())`\n : // functions: since V2\n `get(url, ${requestConfigParam.name}, getDefaultHeaders())`\n };`,\n returnType ? `return ${qOpProp}.convertResponse(response);` : \"\",\n ],\n };\n }\n\n private importReturnType(imports: ImportContainer, returnType: ReturnTypeModel | undefined): string {\n const typeToImport: CoreImports = returnType?.isCollection\n ? CoreImports.ODataCollectionResponse\n : returnType?.dataType === DataTypes.PrimitiveType\n ? CoreImports.ODataValueResponse\n : this.version === ODataVersions.V4\n ? CoreImports.ODataModelResponseV4\n : CoreImports.ODataEntityModelResponseV2;\n\n return imports.addCoreLib(this.version, typeToImport);\n }\n\n private generateCastOperations(\n importContainer: ImportContainer,\n model: ComplexType,\n isCollection: boolean,\n ): PropsAndOps {\n const result: PropsAndOps = { properties: [], methods: [] };\n\n if (this.version === ODataVersions.V4) {\n model.subtypes.forEach((subtype) => {\n const subClass = this.dataModel.getModel(subtype) as ComplexType;\n const serviceName = isCollection ? subClass.serviceCollectionName : subClass.serviceName;\n const serviceType = importContainer.addGeneratedService(subClass.fqName, serviceName);\n result.methods.push({\n name: `as${upperCaseFirst(serviceName)}`,\n scope: Scope.Public,\n statements: [\n \"const { client, path, options } = this.__base;\",\n `return new ${serviceType}(client, path, \"${subClass.fqName}\", { ...options, subtype: true });`,\n ],\n });\n });\n }\n\n return result;\n }\n}\n"]}
|
|
@@ -14,8 +14,10 @@ export declare const LIB_MODULES: {
|
|
|
14
14
|
export declare enum CoreImports {
|
|
15
15
|
DeferredContent = 0,
|
|
16
16
|
ODataCollectionResponse = 1,
|
|
17
|
-
|
|
18
|
-
ODataValueResponse = 3
|
|
17
|
+
ODataModelResponseV4 = 2,
|
|
18
|
+
ODataValueResponse = 3,
|
|
19
|
+
ODataEntityModelResponseV2 = 4,
|
|
20
|
+
ODataComplexModelResponseV2 = 5
|
|
19
21
|
}
|
|
20
22
|
/**
|
|
21
23
|
* For all core imports that are versioned two files exist, one for V2, one for V4.
|
|
@@ -62,7 +64,8 @@ export declare enum ServiceImports {
|
|
|
62
64
|
EntityTypeService = 3,
|
|
63
65
|
PrimitiveTypeService = 4,
|
|
64
66
|
CollectionService = 5,
|
|
65
|
-
EntitySetService = 6
|
|
67
|
+
EntitySetService = 6,
|
|
68
|
+
ComplexTypeService = 7
|
|
66
69
|
}
|
|
67
70
|
/**
|
|
68
71
|
* For all versioned imports two files exist, one for V2, one for V4.
|
|
@@ -15,19 +15,17 @@ export var CoreImports;
|
|
|
15
15
|
(function (CoreImports) {
|
|
16
16
|
CoreImports[CoreImports["DeferredContent"] = 0] = "DeferredContent";
|
|
17
17
|
CoreImports[CoreImports["ODataCollectionResponse"] = 1] = "ODataCollectionResponse";
|
|
18
|
-
CoreImports[CoreImports["
|
|
18
|
+
CoreImports[CoreImports["ODataModelResponseV4"] = 2] = "ODataModelResponseV4";
|
|
19
19
|
CoreImports[CoreImports["ODataValueResponse"] = 3] = "ODataValueResponse";
|
|
20
|
+
CoreImports[CoreImports["ODataEntityModelResponseV2"] = 4] = "ODataEntityModelResponseV2";
|
|
21
|
+
CoreImports[CoreImports["ODataComplexModelResponseV2"] = 5] = "ODataComplexModelResponseV2";
|
|
20
22
|
})(CoreImports || (CoreImports = {}));
|
|
21
23
|
/**
|
|
22
24
|
* For all core imports that are versioned two files exist, one for V2, one for V4.
|
|
23
25
|
* ODataCollectionResponse = ODataCollectionResponseV2 + ODataCollectionResponseV4
|
|
24
26
|
*
|
|
25
27
|
*/
|
|
26
|
-
export const VERSIONED_CORE_IMPORTS = [
|
|
27
|
-
CoreImports.ODataCollectionResponse,
|
|
28
|
-
CoreImports.ODataValueResponse,
|
|
29
|
-
CoreImports.ODataModelResponse,
|
|
30
|
-
];
|
|
28
|
+
export const VERSIONED_CORE_IMPORTS = [CoreImports.ODataCollectionResponse, CoreImports.ODataValueResponse];
|
|
31
29
|
/**
|
|
32
30
|
* Most relevant, but not all imports from query objects library
|
|
33
31
|
*/
|
|
@@ -71,6 +69,7 @@ export var ServiceImports;
|
|
|
71
69
|
ServiceImports[ServiceImports["PrimitiveTypeService"] = 4] = "PrimitiveTypeService";
|
|
72
70
|
ServiceImports[ServiceImports["CollectionService"] = 5] = "CollectionService";
|
|
73
71
|
ServiceImports[ServiceImports["EntitySetService"] = 6] = "EntitySetService";
|
|
72
|
+
ServiceImports[ServiceImports["ComplexTypeService"] = 7] = "ComplexTypeService";
|
|
74
73
|
})(ServiceImports || (ServiceImports = {}));
|
|
75
74
|
/**
|
|
76
75
|
* For all versioned imports two files exist, one for V2, one for V4.
|
|
@@ -81,5 +80,6 @@ export const VERSIONED_SERVICE_IMPORTS = [
|
|
|
81
80
|
ServiceImports.PrimitiveTypeService,
|
|
82
81
|
ServiceImports.CollectionService,
|
|
83
82
|
ServiceImports.EntitySetService,
|
|
83
|
+
ServiceImports.ComplexTypeService,
|
|
84
84
|
];
|
|
85
85
|
//# sourceMappingURL=ImportObjects.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImportObjects.js","sourceRoot":"","sources":["../../../src/generator/import/ImportObjects.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ImportObjects.js","sourceRoot":"","sources":["../../../src/generator/import/ImportObjects.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,sBAAsB;IAC5B,OAAO,EAAE,+BAA+B;IACxC,SAAS,EAAE,2BAA2B;IACtC,OAAO,EAAE,yBAAyB;CACnC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAN,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,mEAAe,CAAA;IACf,mFAAuB,CAAA;IACvB,6EAAoB,CAAA;IACpB,yEAAkB,CAAA;IAClB,yFAA0B,CAAA;IAC1B,2FAA2B,CAAA;AAC7B,CAAC,EAPW,WAAW,KAAX,WAAW,QAOtB;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,WAAW,CAAC,uBAAuB,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC;AAE5G;;GAEG;AACH,MAAM,CAAN,IAAY,kBAgBX;AAhBD,WAAY,kBAAkB;IAC5B,iDAA2B,CAAA;IAC3B,+EAAyD,CAAA;IACzD,iCAAW,CAAA;IACX,6CAAuB,CAAA;IACvB,yCAAmB,CAAA;IACnB,uDAAiC,CAAA;IACjC,yDAAmC,CAAA;IACnC,uEAAiD,CAAA;IACjD,iEAA2C,CAAA;IAC3C,+EAAyD,CAAA;IACzD,yDAAmC,CAAA;IACnC,qEAA+C,CAAA;IAC/C,iEAA2C,CAAA;IAC3C,iDAA2B,CAAA;IAC3B,qDAA+B,CAAA;AACjC,CAAC,EAhBW,kBAAkB,KAAlB,kBAAkB,QAgB7B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,6EAAe,CAAA;IACf,yFAAqB,CAAA;IACrB,iFAAiB,CAAA;AACnB,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,cASX;AATD,WAAY,cAAc;IACxB,mEAAY,CAAA;IACZ,iFAAmB,CAAA;IACnB,iGAA2B,CAAA;IAC3B,6EAAiB,CAAA;IACjB,mFAAoB,CAAA;IACpB,6EAAiB,CAAA;IACjB,2EAAgB,CAAA;IAChB,+EAAkB,CAAA;AACpB,CAAC,EATW,cAAc,KAAd,cAAc,QASzB;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,cAAc,CAAC,iBAAiB;IAChC,cAAc,CAAC,oBAAoB;IACnC,cAAc,CAAC,iBAAiB;IAChC,cAAc,CAAC,gBAAgB;IAC/B,cAAc,CAAC,kBAAkB;CAClC,CAAC","sourcesContent":["import { ODataComplexModelResponseV2, ODataEntityModelResponseV2 } from \"@odata2ts/odata-core\";\n\n/**\n * All module names of the main dependencies.\n */\nexport const LIB_MODULES = {\n core: \"@odata2ts/odata-core\",\n qObject: \"@odata2ts/odata-query-objects\",\n clientApi: \"@odata2ts/http-client-api\",\n service: \"@odata2ts/odata-service\",\n};\n\n/**\n * All imported entity names from the core API.\n * Includes versioned file names, i.e. according to OData version.\n */\nexport enum CoreImports {\n DeferredContent,\n ODataCollectionResponse, // versioned\n ODataModelResponseV4,\n ODataValueResponse, // versioned\n ODataEntityModelResponseV2,\n ODataComplexModelResponseV2,\n}\n\n/**\n * For all core imports that are versioned two files exist, one for V2, one for V4.\n * ODataCollectionResponse = ODataCollectionResponseV2 + ODataCollectionResponseV4\n *\n */\nexport const VERSIONED_CORE_IMPORTS = [CoreImports.ODataCollectionResponse, CoreImports.ODataValueResponse];\n\n/**\n * Most relevant, but not all imports from query objects library\n */\nexport enum QueryObjectImports {\n QueryObject = \"QueryObject\",\n ENUMERABLE_PROP_DEFINITION = \"ENUMERABLE_PROP_DEFINITION\",\n QId = \"QId\",\n QFunction = \"QFunction\",\n QAction = \"QAction\",\n EnumCollection = \"EnumCollection\",\n QEnumCollection = \"QEnumCollection\",\n QNumericEnumCollection = \"QNumericEnumCollection\",\n QEnumCollectionPath = \"QEnumCollectionPath\",\n QNumericEnumCollectionPath = \"QNumericEnumCollectionPath\",\n QCollectionPath = \"QCollectionPath\",\n QEntityCollectionPath = \"QEntityCollectionPath\",\n OperationReturnType = \"OperationReturnType\",\n ReturnTypes = \"ReturnTypes\",\n QComplexParam = \"QComplexParam\",\n}\n\n/**\n * All imports from HTTP client API.\n */\nexport enum ClientApiImports {\n ODataHttpClient,\n ODataHttpClientConfig,\n HttpResponseModel,\n}\n\n/**\n * All imports from service library.\n * Includes versioned file names, i.e. according to OData version.\n */\nexport enum ServiceImports {\n ODataService,\n ODataServiceOptions,\n ODataServiceOptionsInternal,\n EntityTypeService,\n PrimitiveTypeService,\n CollectionService,\n EntitySetService,\n ComplexTypeService,\n}\n\n/**\n * For all versioned imports two files exist, one for V2, one for V4.\n * EntityTypeService = EntityTypeServiceV2 + EntityTypeServiceV4\n */\nexport const VERSIONED_SERVICE_IMPORTS = [\n ServiceImports.EntityTypeService,\n ServiceImports.PrimitiveTypeService,\n ServiceImports.CollectionService,\n ServiceImports.EntitySetService,\n ServiceImports.ComplexTypeService,\n];\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC","sourcesContent":["export { generateModels } from \"./ModelGenerator.js\";\
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC","sourcesContent":["export { generateModels } from \"./ModelGenerator.js\";\nexport { generateQueryObjects } from \"./QueryObjectGenerator.js\";\nexport { generateServices } from \"./ServiceGenerator.js\";\n"]}
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC","sourcesContent":["export * from \"./OptionModel.js\";\
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC","sourcesContent":["export * from \"./OptionModel.js\";\nexport * from \"./NamingModel.js\";\nexport * from \"./defaultConfig.js\";\nexport * from \"./TypeModel.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileHandler.js","sourceRoot":"","sources":["../../src/project/FileHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import { writeFile } from \"fs/promises\";\
|
|
1
|
+
{"version":3,"file":"FileHandler.js","sourceRoot":"","sources":["../../src/project/FileHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import { writeFile } from \"fs/promises\";\n\nimport { SourceFile } from \"ts-morph\";\n\nimport { ImportContainer } from \"../generator/ImportContainer.js\";\nimport { EmitModes } from \"../OptionModel.js\";\nimport { FileFormatter } from \"./formatter/FileFormatter.js\";\n\nexport class FileHandler {\n constructor(\n public readonly path: string,\n public readonly fileName: string,\n protected readonly file: SourceFile,\n protected readonly importContainer: ImportContainer,\n protected formatter: FileFormatter | undefined,\n public readonly allowTypeChecking: boolean\n ) {}\n\n public getFullFilePath() {\n return this.path ? `${this.path}/${this.fileName}` : this.fileName;\n }\n\n public getFile() {\n return this.file;\n }\n\n public getImports() {\n return this.importContainer;\n }\n\n public async write(emitMode: EmitModes, noOutput = false) {\n this.file.addImportDeclarations(this.importContainer.getImportDeclarations());\n // add ts-nocheck to beginning of each file\n if (!this.allowTypeChecking) {\n const stmts = this.file.addStatements((writer) => {\n writer.writeLine(\"// @ts-nocheck\");\n });\n stmts[0].setOrder(0);\n }\n\n if (noOutput) {\n return;\n }\n\n switch (emitMode) {\n case EmitModes.js:\n case EmitModes.js_dts:\n return this.file.emit();\n case EmitModes.dts:\n return this.file.emit({ emitOnlyDtsFiles: true });\n case EmitModes.ts:\n return this.formatAndWriteFile();\n default:\n throw new Error(`Emit mode \"${emitMode}\" is invalid!`);\n }\n }\n\n private async formatAndWriteFile() {\n const fileName = this.file.getFilePath();\n const content = this.file.getFullText();\n\n try {\n const formatted = this.formatter ? await this.formatter.format(content) : content;\n\n try {\n return writeFile(fileName, formatted);\n } catch (writeError) {\n console.error(`Failed to write file [/${fileName}]`, writeError);\n process.exit(3);\n }\n } catch (formattingError) {\n console.error(\"Formatting failed\", formattingError);\n await writeFile(\"error.log\", formattingError?.toString() || \"no error message!\");\n process.exit(99);\n }\n }\n}\n"]}
|