@odata2ts/odata2ts 0.23.1 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +74 -74
  3. package/lib/FactoryFunctionModel.d.ts +13 -13
  4. package/lib/FactoryFunctionModel.js +2 -2
  5. package/lib/FactoryFunctionModel.js.map +1 -1
  6. package/lib/NamingModel.d.ts +182 -182
  7. package/lib/NamingModel.js +11 -11
  8. package/lib/NamingModel.js.map +1 -1
  9. package/lib/OptionModel.d.ts +228 -223
  10. package/lib/OptionModel.js +23 -23
  11. package/lib/OptionModel.js.map +1 -1
  12. package/lib/app.d.ts +8 -8
  13. package/lib/app.js +63 -63
  14. package/lib/app.js.map +1 -1
  15. package/lib/cli.d.ts +3 -3
  16. package/lib/cli.js +153 -153
  17. package/lib/data-model/DataModel.d.ts +85 -85
  18. package/lib/data-model/DataModel.js +134 -134
  19. package/lib/data-model/DataModelDigestion.d.ts +44 -44
  20. package/lib/data-model/DataModelDigestion.js +274 -274
  21. package/lib/data-model/DataModelDigestion.js.map +1 -1
  22. package/lib/data-model/DataModelDigestionV2.d.ts +10 -10
  23. package/lib/data-model/DataModelDigestionV2.js +200 -200
  24. package/lib/data-model/DataModelDigestionV4.d.ts +3 -3
  25. package/lib/data-model/DataModelDigestionV4.js +195 -195
  26. package/lib/data-model/DataTypeModel.d.ts +102 -102
  27. package/lib/data-model/DataTypeModel.js +8 -8
  28. package/lib/data-model/DataTypeModel.js.map +1 -1
  29. package/lib/data-model/NamingHelper.d.ts +55 -55
  30. package/lib/data-model/NamingHelper.js +214 -214
  31. package/lib/data-model/ServiceConfigHelper.d.ts +21 -21
  32. package/lib/data-model/ServiceConfigHelper.js +113 -113
  33. package/lib/data-model/edmx/ODataEdmxModelBase.d.ts +80 -80
  34. package/lib/data-model/edmx/ODataEdmxModelBase.js +2 -2
  35. package/lib/data-model/edmx/ODataEdmxModelBase.js.map +1 -1
  36. package/lib/data-model/edmx/ODataEdmxModelV3.d.ts +63 -63
  37. package/lib/data-model/edmx/ODataEdmxModelV3.js +2 -2
  38. package/lib/data-model/edmx/ODataEdmxModelV4.d.ts +67 -67
  39. package/lib/data-model/edmx/ODataEdmxModelV4.js +2 -2
  40. package/lib/defaultConfig.d.ts +9 -9
  41. package/lib/defaultConfig.js +165 -164
  42. package/lib/defaultConfig.js.map +1 -1
  43. package/lib/evaluateConfig.d.ts +25 -25
  44. package/lib/evaluateConfig.js +82 -82
  45. package/lib/generator/ImportContainer.d.ts +16 -16
  46. package/lib/generator/ImportContainer.js +91 -91
  47. package/lib/generator/ImportContainer.js.map +1 -1
  48. package/lib/generator/ModelGenerator.d.ts +2 -2
  49. package/lib/generator/ModelGenerator.js +211 -183
  50. package/lib/generator/ModelGenerator.js.map +1 -1
  51. package/lib/generator/QueryObjectGenerator.d.ts +2 -2
  52. package/lib/generator/QueryObjectGenerator.js +239 -239
  53. package/lib/generator/ServiceGenerator.d.ts +8 -8
  54. package/lib/generator/ServiceGenerator.js +422 -422
  55. package/lib/generator/ServiceGenerator.js.map +1 -1
  56. package/lib/generator/index.d.ts +3 -3
  57. package/lib/generator/index.js +9 -9
  58. package/lib/index.d.ts +3 -3
  59. package/lib/index.js +6 -6
  60. package/lib/project/ProjectManager.d.ts +30 -30
  61. package/lib/project/ProjectManager.js +177 -175
  62. package/lib/project/ProjectManager.js.map +1 -1
  63. package/lib/project/formatter/BaseFormatter.d.ts +49 -49
  64. package/lib/project/formatter/BaseFormatter.js +30 -30
  65. package/lib/project/formatter/FileFormatter.d.ts +16 -16
  66. package/lib/project/formatter/FileFormatter.js +2 -2
  67. package/lib/project/formatter/NoopFormatter.d.ts +29 -29
  68. package/lib/project/formatter/NoopFormatter.js +42 -42
  69. package/lib/project/formatter/PrettierFormatter.d.ts +46 -46
  70. package/lib/project/formatter/PrettierFormatter.js +92 -92
  71. package/lib/project/formatter/index.d.ts +2 -2
  72. package/lib/project/formatter/index.js +14 -14
  73. package/lib/project/logger/logFilePath.d.ts +1 -1
  74. package/lib/project/logger/logFilePath.js +12 -12
  75. package/lib/run-cli.d.ts +2 -2
  76. package/lib/run-cli.js +6 -6
  77. package/package.json +27 -28
@@ -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\";\nimport deepmerge from \"deepmerge\";\nimport {\n ClassDeclarationStructure,\n MethodDeclarationStructure,\n OptionalKind,\n PropertyDeclarationStructure,\n Scope,\n SourceFile,\n} from \"ts-morph\";\nimport { upperCaseFirst } from \"upper-case-first\";\nimport { firstCharLowerCase } from \"xml2js/lib/processors\";\n\nimport { DataModel } from \"../data-model/DataModel\";\nimport {\n ActionImportType,\n ComplexType,\n DataTypes,\n EntityContainerModel,\n EntitySetType,\n FunctionImportType,\n ModelType,\n OperationType,\n OperationTypes,\n PropertyModel,\n SingletonType,\n} from \"../data-model/DataTypeModel\";\nimport { EntityType } from \"../data-model/edmx/ODataEdmxModelBase\";\nimport { NamingHelper } from \"../data-model/NamingHelper\";\nimport { ProjectManager } from \"../project/ProjectManager\";\nimport { ImportContainer } from \"./ImportContainer\";\n\nconst ROOT_SERVICE = \"ODataService\";\n\nconst RESPONSE_TYPES = {\n collection: \"ODataCollectionResponse\",\n model: \"ODataModelResponse\",\n value: \"ODataValueResponse\",\n};\n\nexport interface PropsAndOps extends Required<Pick<ClassDeclarationStructure, \"properties\" | \"methods\">> {}\n\nexport async function generateServices(\n dataModel: DataModel,\n project: ProjectManager,\n version: ODataVersions,\n namingHelper: NamingHelper\n) {\n const generator = new ServiceGenerator(dataModel, project, version, namingHelper);\n return generator.generate();\n}\n\nclass ServiceGenerator {\n constructor(\n private dataModel: DataModel,\n private project: ProjectManager,\n private version: ODataVersions,\n private namingHelper: NamingHelper\n ) {}\n\n public async generate(): Promise<void> {\n const sourceFile = await this.project.createMainServiceFile();\n const serviceName = this.namingHelper.getMainServiceName();\n const container = this.dataModel.getEntityContainer();\n const unboundOperations = [...Object.values(container.functions), ...Object.values(container.actions)];\n\n await this.generateModelServices();\n\n const importContainer = new ImportContainer(this.namingHelper.getFileNames());\n importContainer.addFromClientApi(\"ODataHttpClient\");\n importContainer.addFromService(ROOT_SERVICE);\n\n const { properties, methods }: PropsAndOps = deepmerge(\n this.generateMainServiceProperties(container, importContainer),\n this.generateMainServiceOperations(unboundOperations, importContainer)\n );\n\n sourceFile.addClass({\n isExported: true,\n name: serviceName,\n typeParameters: [\"ClientType extends ODataHttpClient\"],\n extends: `${ROOT_SERVICE}<ClientType>`,\n properties /*: [\n {\n scope: Scope.Private,\n name: this.namingHelper.getPrivatePropName(\"name\"),\n type: \"string\",\n initializer: `\"${this.namingHelper.getODataServiceName()}\"`,\n },\n ]*/,\n methods,\n });\n\n sourceFile.addImportDeclarations(importContainer.getImportDeclarations(false));\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, entityType }) => {\n result.methods.push(this.generateRelatedServiceGetter(name, entityType, importContainer));\n });\n\n Object.values(container.singletons).forEach((singleton) => {\n result.properties.push(this.generateSingletonProp(singleton, importContainer));\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 result.properties.push(this.generateQOperationProp(operation));\n result.methods.push(this.generateMethod(name, operation, importContainer));\n });\n\n return result;\n }\n\n private generateRelatedServiceGetter(\n propName: string,\n entityType: ModelType,\n importContainer: ImportContainer,\n currentServiceName?: string\n ): OptionalKind<MethodDeclarationStructure> {\n const idName = entityType.idModelName;\n const idFunctionName = entityType.qIdFunctionName;\n const serviceName = this.namingHelper.getServiceName(entityType.name);\n const collectionName = this.namingHelper.getCollectionServiceName(entityType.name);\n\n importContainer.addFromClientApi(\"ODataHttpClient\");\n importContainer.addGeneratedModel(idName);\n importContainer.addGeneratedQObject(idFunctionName);\n // make sure to not falsely import self-referential stuff\n if (!currentServiceName || currentServiceName !== serviceName) {\n importContainer.addGeneratedService(serviceName, collectionName, serviceName);\n }\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 = \"${propName}\";`,\n 'return typeof id === \"undefined\" || id === null',\n `? new ${collectionName}(this.client, this.getPath(), fieldName)`,\n `: new ${serviceName}(this.client, this.getPath(), new ${idFunctionName}(fieldName).buildUrl(id));`,\n ],\n };\n }\n\n private generateSingletonProp(\n singleton: SingletonType,\n importContainer: ImportContainer\n ): OptionalKind<PropertyDeclarationStructure> {\n const { name, entityType } = singleton;\n const type = this.namingHelper.getServiceName(entityType.name);\n\n importContainer.addGeneratedService(this.namingHelper.getServiceName(entityType.name), type);\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 = this.namingHelper.getServiceName(entityType.name);\n\n return {\n scope: Scope.Public,\n name: this.namingHelper.getRelatedServiceGetter(name),\n statements: [\n `if(!${propName}) {`,\n // prettier-ignore\n ` ${propName} = new ${serviceType}(this.client, this.getPath(), \"${odataName}\")`,\n \"}\",\n `return ${propName}`,\n ],\n };\n }\n\n private getVersionSuffix() {\n return this.version === ODataVersions.V2 ? \"V2\" : \"V4\";\n }\n\n private async generateEntityTypeService(\n model: ComplexType,\n serviceName: string,\n serviceFile: SourceFile,\n importContainer: ImportContainer\n ) {\n const entityServiceType = \"EntityTypeService\" + this.getVersionSuffix();\n\n const editableModelName = model.editableName;\n const qObjectName = firstCharLowerCase(model.qName);\n const operations = this.dataModel.getOperationTypeByBinding(model.name);\n const props = [...model.baseProps, ...model.props];\n\n importContainer.addFromService(entityServiceType);\n importContainer.addFromClientApi(\"ODataHttpClient\");\n importContainer.addGeneratedModel(model.name, editableModelName);\n importContainer.addGeneratedQObject(model.qName, qObjectName);\n\n const { properties, methods }: PropsAndOps = deepmerge(\n this.generateServiceProperties(serviceName, props, importContainer),\n this.generateServiceOperations(operations, importContainer)\n );\n\n // generate EntityTypeService\n serviceFile.addClass({\n isExported: true,\n name: serviceName,\n typeParameters: [\"ClientType extends ODataHttpClient\"],\n extends: entityServiceType + `<ClientType, ${model.name}, ${editableModelName}, ${model.qName}>`,\n ctors: [\n {\n parameters: [\n { name: \"client\", type: \"ClientType\" },\n { name: \"basePath\", type: \"string\" },\n { name: \"name\", type: \"string\" },\n ],\n statements: [`super(client, basePath, name, ${qObjectName});`],\n },\n ],\n properties,\n methods,\n });\n }\n\n private generateServiceProperties(\n serviceName: string,\n props: Array<PropertyModel>,\n importContainer: ImportContainer\n ): PropsAndOps {\n const collectionServiceType = \"CollectionService\" + this.getVersionSuffix();\n const result: PropsAndOps = { properties: [], methods: [] };\n\n props.forEach((prop) => {\n if ((prop.dataType === DataTypes.ModelType && !prop.isCollection) || prop.dataType === DataTypes.ComplexType) {\n result.properties.push(this.generateModelProp(prop, collectionServiceType, serviceName, importContainer));\n result.methods.push(this.generateModelPropGetter(prop, collectionServiceType));\n } else if (prop.isCollection) {\n // collection of entity types\n if (prop.dataType === DataTypes.ModelType) {\n const entityType = this.dataModel.getModel(prop.type);\n result.methods.push(this.generateRelatedServiceGetter(prop.name, entityType, importContainer, serviceName));\n }\n // collection of primitive or complex types\n else {\n result.properties.push(this.generatePrimitiveCollectionProp(prop, collectionServiceType, importContainer));\n result.methods.push(this.generatePrimitiveCollectionGetter(prop, collectionServiceType));\n }\n }\n });\n\n return result;\n }\n\n private generateServiceOperations(operations: Array<OperationType>, importContainer: ImportContainer): 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));\n });\n\n return result;\n }\n\n private generateModelProp(\n prop: PropertyModel,\n collectionServiceType: string,\n serviceName: string,\n importContainer: ImportContainer\n ): PropertyDeclarationStructure {\n const complexType = this.dataModel.getComplexType(prop.type);\n const key = this.namingHelper.getServiceName(prop.type);\n let propModelType = prop.isCollection ? this.namingHelper.getCollectionServiceName(prop.type) : key;\n\n if (prop.isCollection && complexType) {\n const editableName = complexType.editableName;\n importContainer.addFromService(collectionServiceType);\n importContainer.addGeneratedModel(complexType.name, editableName);\n importContainer.addGeneratedQObject(complexType.qName, firstCharLowerCase(complexType.qName));\n propModelType = `${collectionServiceType}<ClientType, ${complexType.name}, ${complexType.qName}, ${editableName}>`;\n } else {\n // don't include imports for this type\n if (serviceName !== key) {\n importContainer.addGeneratedService(key, propModelType);\n }\n\n propModelType = `${propModelType}<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 prop: PropertyModel,\n collectionServiceType: string,\n importContainer: ImportContainer\n ): OptionalKind<PropertyDeclarationStructure> {\n const isEnum = prop.dataType === DataTypes.EnumType;\n const type = isEnum ? `EnumCollection<${prop.type}>` : `${upperCaseFirst(prop.type)}Collection`;\n const qType = isEnum ? \"QEnumCollection\" : `Q${type}`;\n const collectionType = `${collectionServiceType}<ClientType, ${type}, ${qType}>`;\n\n if (!prop.qObject) {\n throw new Error(\"Illegal State: [qObject] must be provided for Collection types!\");\n }\n\n importContainer.addFromService(collectionServiceType);\n importContainer.addFromQObject(prop.qObject, firstCharLowerCase(prop.qObject));\n if (isEnum) {\n importContainer.addGeneratedModel(prop.type);\n importContainer.addFromQObject(\"EnumCollection\");\n } else {\n importContainer.addFromQObject(type);\n }\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 generateModelPropGetter(\n prop: PropertyModel,\n collectionServiceType: string\n ): OptionalKind<MethodDeclarationStructure> {\n const complexType = this.dataModel.getComplexType(prop.type);\n const isComplexCollection = prop.isCollection && complexType;\n const type = isComplexCollection\n ? collectionServiceType\n : prop.isCollection\n ? this.namingHelper.getCollectionServiceName(prop.type)\n : this.namingHelper.getServiceName(prop.type);\n const typeWithGenerics = isComplexCollection\n ? `${collectionServiceType}<ClientType, ${complexType.name}, ${complexType.qName}, ${complexType.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 // prettier-ignore\n ` ${privateSrvProp} = new ${type}(this.client, this.getPath(), \"${prop.odataName}\"${isComplexCollection ? `, ${firstCharLowerCase(complexType.qName)}`: \"\"})`,\n \"}\",\n `return ${privateSrvProp}`,\n ],\n };\n }\n\n private generatePrimitiveCollectionGetter(\n prop: PropertyModel,\n collectionServiceType: string\n ): OptionalKind<MethodDeclarationStructure> {\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 // prettier-ignore\n ` ${propName} = new ${collectionServiceType}(this.client, this.getPath(), \"${prop.odataName}\", ${firstCharLowerCase(prop.qObject!)})`,\n \"}\",\n `return ${propName}`,\n ],\n };\n }\n\n private async generateEntityCollectionService(\n model: ModelType,\n serviceFile: SourceFile,\n importContainer: ImportContainer\n ) {\n const entitySetServiceType = \"EntitySetService\" + this.getVersionSuffix();\n const editableModelName = model.editableName;\n const qObjectName = firstCharLowerCase(model.qName);\n\n importContainer.addFromService(entitySetServiceType);\n importContainer.addGeneratedModel(model.idModelName);\n importContainer.addGeneratedQObject(model.qIdFunctionName);\n\n const collectionOperations = this.dataModel.getOperationTypeByBinding(`Collection(${model.name})`);\n\n const { properties, methods } = this.generateServiceOperations(collectionOperations, importContainer);\n\n serviceFile.addClass({\n isExported: true,\n name: this.namingHelper.getCollectionServiceName(model.name),\n typeParameters: [\"ClientType extends ODataHttpClient\"],\n extends:\n entitySetServiceType +\n `<ClientType, ${model.name}, ${editableModelName}, ${model.qName}, ${model.idModelName}>`,\n ctors: [\n {\n parameters: [\n { name: \"client\", type: \"ClientType\" },\n { name: \"basePath\", type: \"string\" },\n { name: \"name\", type: \"string\" },\n ],\n statements: [`super(client, basePath, name, ${qObjectName}, new ${model.qIdFunctionName}(name));`],\n },\n ],\n properties,\n methods,\n });\n }\n\n private async generateModelServices() {\n // build service file for each entity, consisting of EntityTypeService & EntityCollectionService\n for (const model of this.dataModel.getModels()) {\n const serviceName = this.namingHelper.getServiceName(model.name);\n const serviceFile = await this.project.createServiceFile(serviceName);\n const importContainer = new ImportContainer(this.namingHelper.getFileNames());\n\n // entity type service\n await this.generateEntityTypeService(model, serviceName, serviceFile, importContainer);\n\n // entity collection service\n await this.generateEntityCollectionService(model, serviceFile, importContainer);\n\n serviceFile.addImportDeclarations(importContainer.getImportDeclarations(true));\n }\n\n // build service file for complex types\n for (const model of this.dataModel.getComplexTypes()) {\n const serviceName = this.namingHelper.getServiceName(model.name);\n const serviceFile = await this.project.createServiceFile(serviceName);\n const importContainer = new ImportContainer(this.namingHelper.getFileNames());\n\n // entity type service\n await this.generateEntityTypeService(model, serviceName, serviceFile, importContainer);\n serviceFile.addImportDeclarations(importContainer.getImportDeclarations(true));\n }\n }\n\n private generateMethod(\n name: string,\n operation: OperationType,\n importContainer: ImportContainer\n ): OptionalKind<MethodDeclarationStructure> {\n const isFunc = operation.type === OperationTypes.Function;\n const odataType = operation.returnType?.isCollection\n ? RESPONSE_TYPES.collection + this.getVersionSuffix()\n : operation.returnType?.dataType === DataTypes.PrimitiveType\n ? RESPONSE_TYPES.value + this.getVersionSuffix()\n : RESPONSE_TYPES.model + this.getVersionSuffix();\n const returnType = operation.returnType;\n const requestConfigParam = {\n name: \"requestConfig\",\n hasQuestionToken: true,\n type: \"ODataHttpClientConfig<ClientType>\",\n };\n const hasParams = operation.parameters.length > 0;\n\n // importing dependencies\n importContainer.addFromClientApi(\"ODataHttpClientConfig\", \"ODataResponse\");\n importContainer.addFromCore(odataType);\n if (returnType?.type) {\n if ([DataTypes.EnumType, DataTypes.ModelType, DataTypes.ComplexType].includes(returnType.dataType)) {\n importContainer.addGeneratedModel(returnType.type);\n }\n }\n importContainer.addGeneratedQObject(operation.qName);\n if (hasParams) {\n importContainer.addGeneratedModel(operation.paramsModelName);\n }\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: operation.paramsModelName }, requestConfigParam]\n : [requestConfigParam],\n returnType: `ODataResponse<${odataType}<${returnType?.type || \"void\"}>>`,\n statements: [\n `if(!${qOpProp}) {`,\n ` ${qOpProp} = new ${operation.qName}()`,\n \"}\",\n\n `const url = this.addFullPath(${qOpProp}.buildUrl(${isFunc && hasParams ? \"params\" : \"\"}));`,\n `${returnType ? \"const response = await \" : \"return\"} this.client.${\n !isFunc\n ? // actions: since V4\n `post(url, ${hasParams ? `${qOpProp}.convertUserParams(params)` : \"{}\"}, ${requestConfigParam.name})`\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})`\n : // functions: since V2\n `get(url, ${requestConfigParam.name})`\n };`,\n returnType ? `return ${qOpProp}.convertResponse(response);` : \"\",\n ],\n };\n }\n}\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\";\r\nimport deepmerge from \"deepmerge\";\r\nimport {\r\n ClassDeclarationStructure,\r\n MethodDeclarationStructure,\r\n OptionalKind,\r\n PropertyDeclarationStructure,\r\n Scope,\r\n SourceFile,\r\n} from \"ts-morph\";\r\nimport { upperCaseFirst } from \"upper-case-first\";\r\nimport { firstCharLowerCase } from \"xml2js/lib/processors\";\r\n\r\nimport { DataModel } from \"../data-model/DataModel\";\r\nimport {\r\n ActionImportType,\r\n ComplexType,\r\n DataTypes,\r\n EntityContainerModel,\r\n EntitySetType,\r\n FunctionImportType,\r\n ModelType,\r\n OperationType,\r\n OperationTypes,\r\n PropertyModel,\r\n SingletonType,\r\n} from \"../data-model/DataTypeModel\";\r\nimport { EntityType } from \"../data-model/edmx/ODataEdmxModelBase\";\r\nimport { NamingHelper } from \"../data-model/NamingHelper\";\r\nimport { ProjectManager } from \"../project/ProjectManager\";\r\nimport { ImportContainer } from \"./ImportContainer\";\r\n\r\nconst ROOT_SERVICE = \"ODataService\";\r\n\r\nconst RESPONSE_TYPES = {\r\n collection: \"ODataCollectionResponse\",\r\n model: \"ODataModelResponse\",\r\n value: \"ODataValueResponse\",\r\n};\r\n\r\nexport interface PropsAndOps extends Required<Pick<ClassDeclarationStructure, \"properties\" | \"methods\">> {}\r\n\r\nexport async function generateServices(\r\n dataModel: DataModel,\r\n project: ProjectManager,\r\n version: ODataVersions,\r\n namingHelper: NamingHelper\r\n) {\r\n const generator = new ServiceGenerator(dataModel, project, version, namingHelper);\r\n return generator.generate();\r\n}\r\n\r\nclass ServiceGenerator {\r\n constructor(\r\n private dataModel: DataModel,\r\n private project: ProjectManager,\r\n private version: ODataVersions,\r\n private namingHelper: NamingHelper\r\n ) {}\r\n\r\n public async generate(): Promise<void> {\r\n const sourceFile = await this.project.createMainServiceFile();\r\n const serviceName = this.namingHelper.getMainServiceName();\r\n const container = this.dataModel.getEntityContainer();\r\n const unboundOperations = [...Object.values(container.functions), ...Object.values(container.actions)];\r\n\r\n await this.generateModelServices();\r\n\r\n const importContainer = new ImportContainer(this.namingHelper.getFileNames());\r\n importContainer.addFromClientApi(\"ODataHttpClient\");\r\n importContainer.addFromService(ROOT_SERVICE);\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 sourceFile.addClass({\r\n isExported: true,\r\n name: serviceName,\r\n typeParameters: [\"ClientType extends ODataHttpClient\"],\r\n extends: `${ROOT_SERVICE}<ClientType>`,\r\n properties /*: [\r\n {\r\n scope: Scope.Private,\r\n name: this.namingHelper.getPrivatePropName(\"name\"),\r\n type: \"string\",\r\n initializer: `\"${this.namingHelper.getODataServiceName()}\"`,\r\n },\r\n ]*/,\r\n methods,\r\n });\r\n\r\n sourceFile.addImportDeclarations(importContainer.getImportDeclarations(false));\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, entityType }) => {\r\n result.methods.push(this.generateRelatedServiceGetter(name, entityType, importContainer));\r\n });\r\n\r\n Object.values(container.singletons).forEach((singleton) => {\r\n result.properties.push(this.generateSingletonProp(singleton, importContainer));\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 result.properties.push(this.generateQOperationProp(operation));\r\n result.methods.push(this.generateMethod(name, operation, importContainer));\r\n });\r\n\r\n return result;\r\n }\r\n\r\n private generateRelatedServiceGetter(\r\n propName: string,\r\n entityType: ModelType,\r\n importContainer: ImportContainer,\r\n currentServiceName?: string\r\n ): OptionalKind<MethodDeclarationStructure> {\r\n const idName = entityType.idModelName;\r\n const idFunctionName = entityType.qIdFunctionName;\r\n const serviceName = this.namingHelper.getServiceName(entityType.name);\r\n const collectionName = this.namingHelper.getCollectionServiceName(entityType.name);\r\n\r\n importContainer.addFromClientApi(\"ODataHttpClient\");\r\n importContainer.addGeneratedModel(idName);\r\n importContainer.addGeneratedQObject(idFunctionName);\r\n // make sure to not falsely import self-referential stuff\r\n if (!currentServiceName || currentServiceName !== serviceName) {\r\n importContainer.addGeneratedService(serviceName, collectionName, serviceName);\r\n }\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 = \"${propName}\";`,\r\n 'return typeof id === \"undefined\" || id === null',\r\n `? new ${collectionName}(this.client, this.getPath(), fieldName)`,\r\n `: new ${serviceName}(this.client, this.getPath(), new ${idFunctionName}(fieldName).buildUrl(id));`,\r\n ],\r\n };\r\n }\r\n\r\n private generateSingletonProp(\r\n singleton: SingletonType,\r\n importContainer: ImportContainer\r\n ): OptionalKind<PropertyDeclarationStructure> {\r\n const { name, entityType } = singleton;\r\n const type = this.namingHelper.getServiceName(entityType.name);\r\n\r\n importContainer.addGeneratedService(this.namingHelper.getServiceName(entityType.name), type);\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 = this.namingHelper.getServiceName(entityType.name);\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 // prettier-ignore\r\n ` ${propName} = new ${serviceType}(this.client, this.getPath(), \"${odataName}\")`,\r\n \"}\",\r\n `return ${propName}`,\r\n ],\r\n };\r\n }\r\n\r\n private getVersionSuffix() {\r\n return this.version === ODataVersions.V2 ? \"V2\" : \"V4\";\r\n }\r\n\r\n private async generateEntityTypeService(\r\n model: ComplexType,\r\n serviceName: string,\r\n serviceFile: SourceFile,\r\n importContainer: ImportContainer\r\n ) {\r\n const entityServiceType = \"EntityTypeService\" + this.getVersionSuffix();\r\n\r\n const editableModelName = model.editableName;\r\n const qObjectName = firstCharLowerCase(model.qName);\r\n const operations = this.dataModel.getOperationTypeByBinding(model.name);\r\n const props = [...model.baseProps, ...model.props];\r\n\r\n importContainer.addFromService(entityServiceType);\r\n importContainer.addFromClientApi(\"ODataHttpClient\");\r\n importContainer.addGeneratedModel(model.name, editableModelName);\r\n importContainer.addGeneratedQObject(model.qName, qObjectName);\r\n\r\n const { properties, methods }: PropsAndOps = deepmerge(\r\n this.generateServiceProperties(serviceName, props, importContainer),\r\n this.generateServiceOperations(operations, importContainer)\r\n );\r\n\r\n // generate EntityTypeService\r\n serviceFile.addClass({\r\n isExported: true,\r\n name: serviceName,\r\n typeParameters: [\"ClientType extends ODataHttpClient\"],\r\n extends: entityServiceType + `<ClientType, ${model.name}, ${editableModelName}, ${model.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 ],\r\n statements: [`super(client, basePath, name, ${qObjectName});`],\r\n },\r\n ],\r\n properties,\r\n methods,\r\n });\r\n }\r\n\r\n private generateServiceProperties(\r\n serviceName: string,\r\n props: Array<PropertyModel>,\r\n importContainer: ImportContainer\r\n ): PropsAndOps {\r\n const collectionServiceType = \"CollectionService\" + this.getVersionSuffix();\r\n const result: PropsAndOps = { properties: [], methods: [] };\r\n\r\n props.forEach((prop) => {\r\n if ((prop.dataType === DataTypes.ModelType && !prop.isCollection) || prop.dataType === DataTypes.ComplexType) {\r\n result.properties.push(this.generateModelProp(prop, collectionServiceType, serviceName, importContainer));\r\n result.methods.push(this.generateModelPropGetter(prop, collectionServiceType));\r\n } else if (prop.isCollection) {\r\n // collection of entity types\r\n if (prop.dataType === DataTypes.ModelType) {\r\n const entityType = this.dataModel.getModel(prop.type);\r\n result.methods.push(this.generateRelatedServiceGetter(prop.name, entityType, importContainer, serviceName));\r\n }\r\n // collection of primitive or complex types\r\n else {\r\n result.properties.push(this.generatePrimitiveCollectionProp(prop, collectionServiceType, importContainer));\r\n result.methods.push(this.generatePrimitiveCollectionGetter(prop, collectionServiceType));\r\n }\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n private generateServiceOperations(operations: Array<OperationType>, importContainer: ImportContainer): 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));\r\n });\r\n\r\n return result;\r\n }\r\n\r\n private generateModelProp(\r\n prop: PropertyModel,\r\n collectionServiceType: string,\r\n serviceName: string,\r\n importContainer: ImportContainer\r\n ): PropertyDeclarationStructure {\r\n const complexType = this.dataModel.getComplexType(prop.type);\r\n const key = this.namingHelper.getServiceName(prop.type);\r\n let propModelType = prop.isCollection ? this.namingHelper.getCollectionServiceName(prop.type) : key;\r\n\r\n if (prop.isCollection && complexType) {\r\n const editableName = complexType.editableName;\r\n importContainer.addFromService(collectionServiceType);\r\n importContainer.addGeneratedModel(complexType.name, editableName);\r\n importContainer.addGeneratedQObject(complexType.qName, firstCharLowerCase(complexType.qName));\r\n propModelType = `${collectionServiceType}<ClientType, ${complexType.name}, ${complexType.qName}, ${editableName}>`;\r\n } else {\r\n // don't include imports for this type\r\n if (serviceName !== key) {\r\n importContainer.addGeneratedService(key, propModelType);\r\n }\r\n\r\n propModelType = `${propModelType}<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 prop: PropertyModel,\r\n collectionServiceType: string,\r\n importContainer: ImportContainer\r\n ): OptionalKind<PropertyDeclarationStructure> {\r\n const isEnum = prop.dataType === DataTypes.EnumType;\r\n const type = isEnum ? `EnumCollection<${prop.type}>` : `${upperCaseFirst(prop.type)}Collection`;\r\n const qType = isEnum ? \"QEnumCollection\" : `Q${type}`;\r\n const collectionType = `${collectionServiceType}<ClientType, ${type}, ${qType}>`;\r\n\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 importContainer.addFromService(collectionServiceType);\r\n importContainer.addFromQObject(prop.qObject, firstCharLowerCase(prop.qObject));\r\n if (isEnum) {\r\n importContainer.addGeneratedModel(prop.type);\r\n importContainer.addFromQObject(\"EnumCollection\");\r\n } else {\r\n importContainer.addFromQObject(type);\r\n }\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 generateModelPropGetter(\r\n prop: PropertyModel,\r\n collectionServiceType: string\r\n ): OptionalKind<MethodDeclarationStructure> {\r\n const complexType = this.dataModel.getComplexType(prop.type);\r\n const isComplexCollection = prop.isCollection && complexType;\r\n const type = isComplexCollection\r\n ? collectionServiceType\r\n : prop.isCollection\r\n ? this.namingHelper.getCollectionServiceName(prop.type)\r\n : this.namingHelper.getServiceName(prop.type);\r\n const typeWithGenerics = isComplexCollection\r\n ? `${collectionServiceType}<ClientType, ${complexType.name}, ${complexType.qName}, ${complexType.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 // prettier-ignore\r\n ` ${privateSrvProp} = new ${type}(this.client, this.getPath(), \"${prop.odataName}\"${isComplexCollection ? `, ${firstCharLowerCase(complexType.qName)}`: \"\"})`,\r\n \"}\",\r\n `return ${privateSrvProp}`,\r\n ],\r\n };\r\n }\r\n\r\n private generatePrimitiveCollectionGetter(\r\n prop: PropertyModel,\r\n collectionServiceType: string\r\n ): OptionalKind<MethodDeclarationStructure> {\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 // prettier-ignore\r\n ` ${propName} = new ${collectionServiceType}(this.client, this.getPath(), \"${prop.odataName}\", ${firstCharLowerCase(prop.qObject!)})`,\r\n \"}\",\r\n `return ${propName}`,\r\n ],\r\n };\r\n }\r\n\r\n private async generateEntityCollectionService(\r\n model: ModelType,\r\n serviceFile: SourceFile,\r\n importContainer: ImportContainer\r\n ) {\r\n const entitySetServiceType = \"EntitySetService\" + this.getVersionSuffix();\r\n const editableModelName = model.editableName;\r\n const qObjectName = firstCharLowerCase(model.qName);\r\n\r\n importContainer.addFromService(entitySetServiceType);\r\n importContainer.addGeneratedModel(model.idModelName);\r\n importContainer.addGeneratedQObject(model.qIdFunctionName);\r\n\r\n const collectionOperations = this.dataModel.getOperationTypeByBinding(`Collection(${model.name})`);\r\n\r\n const { properties, methods } = this.generateServiceOperations(collectionOperations, importContainer);\r\n\r\n serviceFile.addClass({\r\n isExported: true,\r\n name: this.namingHelper.getCollectionServiceName(model.name),\r\n typeParameters: [\"ClientType extends ODataHttpClient\"],\r\n extends:\r\n entitySetServiceType +\r\n `<ClientType, ${model.name}, ${editableModelName}, ${model.qName}, ${model.idModelName}>`,\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 ],\r\n statements: [`super(client, basePath, name, ${qObjectName}, new ${model.qIdFunctionName}(name));`],\r\n },\r\n ],\r\n properties,\r\n methods,\r\n });\r\n }\r\n\r\n private async generateModelServices() {\r\n // build service file for each entity, consisting of EntityTypeService & EntityCollectionService\r\n for (const model of this.dataModel.getModels()) {\r\n const serviceName = this.namingHelper.getServiceName(model.name);\r\n const serviceFile = await this.project.createServiceFile(serviceName);\r\n const importContainer = new ImportContainer(this.namingHelper.getFileNames());\r\n\r\n // entity type service\r\n await this.generateEntityTypeService(model, serviceName, serviceFile, importContainer);\r\n\r\n // entity collection service\r\n await this.generateEntityCollectionService(model, serviceFile, importContainer);\r\n\r\n serviceFile.addImportDeclarations(importContainer.getImportDeclarations(true));\r\n }\r\n\r\n // build service file for complex types\r\n for (const model of this.dataModel.getComplexTypes()) {\r\n const serviceName = this.namingHelper.getServiceName(model.name);\r\n const serviceFile = await this.project.createServiceFile(serviceName);\r\n const importContainer = new ImportContainer(this.namingHelper.getFileNames());\r\n\r\n // entity type service\r\n await this.generateEntityTypeService(model, serviceName, serviceFile, importContainer);\r\n serviceFile.addImportDeclarations(importContainer.getImportDeclarations(true));\r\n }\r\n }\r\n\r\n private generateMethod(\r\n name: string,\r\n operation: OperationType,\r\n importContainer: ImportContainer\r\n ): OptionalKind<MethodDeclarationStructure> {\r\n const isFunc = operation.type === OperationTypes.Function;\r\n const odataType = operation.returnType?.isCollection\r\n ? RESPONSE_TYPES.collection + this.getVersionSuffix()\r\n : operation.returnType?.dataType === DataTypes.PrimitiveType\r\n ? RESPONSE_TYPES.value + this.getVersionSuffix()\r\n : RESPONSE_TYPES.model + this.getVersionSuffix();\r\n const returnType = operation.returnType;\r\n const requestConfigParam = {\r\n name: \"requestConfig\",\r\n hasQuestionToken: true,\r\n type: \"ODataHttpClientConfig<ClientType>\",\r\n };\r\n const hasParams = operation.parameters.length > 0;\r\n\r\n // importing dependencies\r\n importContainer.addFromClientApi(\"ODataHttpClientConfig\", \"ODataResponse\");\r\n importContainer.addFromCore(odataType);\r\n if (returnType?.type) {\r\n if ([DataTypes.EnumType, DataTypes.ModelType, DataTypes.ComplexType].includes(returnType.dataType)) {\r\n importContainer.addGeneratedModel(returnType.type);\r\n }\r\n }\r\n importContainer.addGeneratedQObject(operation.qName);\r\n if (hasParams) {\r\n importContainer.addGeneratedModel(operation.paramsModelName);\r\n }\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: operation.paramsModelName }, requestConfigParam]\r\n : [requestConfigParam],\r\n returnType: `ODataResponse<${odataType}<${returnType?.type || \"void\"}>>`,\r\n statements: [\r\n `if(!${qOpProp}) {`,\r\n ` ${qOpProp} = new ${operation.qName}()`,\r\n \"}\",\r\n\r\n `const url = this.addFullPath(${qOpProp}.buildUrl(${isFunc && hasParams ? \"params\" : \"\"}));`,\r\n `${returnType ? \"const response = await \" : \"return\"} this.client.${\r\n !isFunc\r\n ? // actions: since V4\r\n `post(url, ${hasParams ? `${qOpProp}.convertUserParams(params)` : \"{}\"}, ${requestConfigParam.name})`\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})`\r\n : // functions: since V2\r\n `get(url, ${requestConfigParam.name})`\r\n };`,\r\n returnType ? `return ${qOpProp}.convertResponse(response);` : \"\",\r\n ],\r\n };\r\n }\r\n}\r\n"]}
@@ -1,3 +1,3 @@
1
- export { generateModels } from "./ModelGenerator";
2
- export { generateQueryObjects } from "./QueryObjectGenerator";
3
- export { generateServices } from "./ServiceGenerator";
1
+ export { generateModels } from "./ModelGenerator";
2
+ export { generateQueryObjects } from "./QueryObjectGenerator";
3
+ export { generateServices } from "./ServiceGenerator";
@@ -1,10 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateServices = exports.generateQueryObjects = exports.generateModels = void 0;
4
- var ModelGenerator_1 = require("./ModelGenerator");
5
- Object.defineProperty(exports, "generateModels", { enumerable: true, get: function () { return ModelGenerator_1.generateModels; } });
6
- var QueryObjectGenerator_1 = require("./QueryObjectGenerator");
7
- Object.defineProperty(exports, "generateQueryObjects", { enumerable: true, get: function () { return QueryObjectGenerator_1.generateQueryObjects; } });
8
- var ServiceGenerator_1 = require("./ServiceGenerator");
9
- Object.defineProperty(exports, "generateServices", { enumerable: true, get: function () { return ServiceGenerator_1.generateServices; } });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateServices = exports.generateQueryObjects = exports.generateModels = void 0;
4
+ var ModelGenerator_1 = require("./ModelGenerator");
5
+ Object.defineProperty(exports, "generateModels", { enumerable: true, get: function () { return ModelGenerator_1.generateModels; } });
6
+ var QueryObjectGenerator_1 = require("./QueryObjectGenerator");
7
+ Object.defineProperty(exports, "generateQueryObjects", { enumerable: true, get: function () { return QueryObjectGenerator_1.generateQueryObjects; } });
8
+ var ServiceGenerator_1 = require("./ServiceGenerator");
9
+ Object.defineProperty(exports, "generateServices", { enumerable: true, get: function () { return ServiceGenerator_1.generateServices; } });
10
10
  //# sourceMappingURL=index.js.map
package/lib/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export * from "./OptionModel";
2
- export * from "./NamingModel";
3
- export * from "./defaultConfig";
1
+ export * from "./OptionModel";
2
+ export * from "./NamingModel";
3
+ export * from "./defaultConfig";
package/lib/index.js CHANGED
@@ -1,7 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./OptionModel"), exports);
5
- tslib_1.__exportStar(require("./NamingModel"), exports);
6
- tslib_1.__exportStar(require("./defaultConfig"), exports);
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./OptionModel"), exports);
5
+ tslib_1.__exportStar(require("./NamingModel"), exports);
6
+ tslib_1.__exportStar(require("./defaultConfig"), exports);
7
7
  //# sourceMappingURL=index.js.map
@@ -1,30 +1,30 @@
1
- import { CompilerOptions, SourceFile } from "ts-morph";
2
- import { ProjectFiles } from "../data-model/DataModel";
3
- import { EmitModes } from "../OptionModel";
4
- import { FileFormatter } from "./formatter/FileFormatter";
5
- export declare function createProjectManager(projectFiles: ProjectFiles, outputDir: string, emitMode: EmitModes, usePrettier: boolean, tsConfigPath?: string): Promise<ProjectManager>;
6
- export declare class ProjectManager {
7
- private projectFiles;
8
- private outputDir;
9
- private emitMode;
10
- private formatter;
11
- private project;
12
- private files;
13
- private serviceFiles;
14
- constructor(projectFiles: ProjectFiles, outputDir: string, emitMode: EmitModes, formatter: FileFormatter, compilerOptions: CompilerOptions | undefined);
15
- private createFile;
16
- createModelFile(): Promise<SourceFile>;
17
- getModelFile(): SourceFile;
18
- createQObjectFile(): Promise<SourceFile>;
19
- getQObjectFile(): SourceFile;
20
- createMainServiceFile(): Promise<SourceFile>;
21
- getMainServiceFile(): SourceFile;
22
- getServiceDir(): string;
23
- cleanServiceDir(): Promise<void>;
24
- createServiceFile(name: string): Promise<SourceFile>;
25
- getServiceFiles(): SourceFile[];
26
- writeFiles(): Promise<void>;
27
- private emitJsFiles;
28
- private emitTsFiles;
29
- private formatAndWriteFile;
30
- }
1
+ import { CompilerOptions, SourceFile } from "ts-morph";
2
+ import { ProjectFiles } from "../data-model/DataModel";
3
+ import { EmitModes } from "../OptionModel";
4
+ import { FileFormatter } from "./formatter/FileFormatter";
5
+ export declare function createProjectManager(projectFiles: ProjectFiles, outputDir: string, emitMode: EmitModes, usePrettier: boolean, tsConfigPath?: string): Promise<ProjectManager>;
6
+ export declare class ProjectManager {
7
+ private projectFiles;
8
+ private outputDir;
9
+ private emitMode;
10
+ private formatter;
11
+ private project;
12
+ private files;
13
+ private serviceFiles;
14
+ constructor(projectFiles: ProjectFiles, outputDir: string, emitMode: EmitModes, formatter: FileFormatter, compilerOptions: CompilerOptions | undefined);
15
+ private createFile;
16
+ createModelFile(): Promise<SourceFile>;
17
+ getModelFile(): SourceFile;
18
+ createQObjectFile(): Promise<SourceFile>;
19
+ getQObjectFile(): SourceFile;
20
+ createMainServiceFile(): Promise<SourceFile>;
21
+ getMainServiceFile(): SourceFile;
22
+ getServiceDir(): string;
23
+ cleanServiceDir(): Promise<void>;
24
+ createServiceFile(name: string): Promise<SourceFile>;
25
+ getServiceFiles(): SourceFile[];
26
+ writeFiles(): Promise<void>;
27
+ private emitJsFiles;
28
+ private emitTsFiles;
29
+ private formatAndWriteFile;
30
+ }