@odata2ts/odata2ts 0.33.1 → 0.34.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.
- package/CHANGELOG.md +28 -0
- package/lib/FactoryFunctionModel.d.ts +3 -3
- package/lib/FactoryFunctionModel.js.map +1 -1
- package/lib/OptionModel.d.ts +9 -0
- package/lib/OptionModel.js.map +1 -1
- package/lib/app.js +18 -8
- package/lib/app.js.map +1 -1
- package/lib/data-model/DataModel.d.ts +12 -6
- package/lib/data-model/DataModel.js +10 -0
- package/lib/data-model/DataModel.js.map +1 -1
- package/lib/data-model/DataModelDigestion.js +37 -20
- package/lib/data-model/DataModelDigestion.js.map +1 -1
- package/lib/data-model/DataModelDigestionV2.js +1 -1
- package/lib/data-model/DataModelDigestionV2.js.map +1 -1
- package/lib/data-model/DataModelDigestionV4.js +1 -10
- package/lib/data-model/DataModelDigestionV4.js.map +1 -1
- package/lib/data-model/DataTypeModel.d.ts +17 -7
- package/lib/data-model/DataTypeModel.js.map +1 -1
- package/lib/data-model/NamingHelper.d.ts +1 -0
- package/lib/data-model/NamingHelper.js +4 -1
- package/lib/data-model/NamingHelper.js.map +1 -1
- package/lib/data-model/ServiceConfigHelper.js +2 -2
- package/lib/data-model/ServiceConfigHelper.js.map +1 -1
- package/lib/data-model/validation/NameClashValidator.d.ts +23 -0
- package/lib/data-model/validation/NameClashValidator.js +89 -0
- package/lib/data-model/validation/NameClashValidator.js.map +1 -0
- package/lib/data-model/validation/NameValidator.d.ts +6 -17
- package/lib/data-model/validation/NameValidator.js +0 -77
- package/lib/data-model/validation/NameValidator.js.map +1 -1
- package/lib/data-model/validation/NoopValidator.d.ts +12 -0
- package/lib/data-model/validation/NoopValidator.js +34 -0
- package/lib/data-model/validation/NoopValidator.js.map +1 -0
- package/lib/defaultConfig.js +1 -0
- package/lib/defaultConfig.js.map +1 -1
- package/lib/generator/ImportContainer.d.ts +44 -11
- package/lib/generator/ImportContainer.js +150 -47
- package/lib/generator/ImportContainer.js.map +1 -1
- package/lib/generator/ImportedNameValidator.d.ts +5 -0
- package/lib/generator/ImportedNameValidator.js +26 -0
- package/lib/generator/ImportedNameValidator.js.map +1 -0
- package/lib/generator/ModelGenerator.js +113 -72
- package/lib/generator/ModelGenerator.js.map +1 -1
- package/lib/generator/QueryObjectGenerator.js +134 -107
- package/lib/generator/QueryObjectGenerator.js.map +1 -1
- package/lib/generator/ServiceGenerator.d.ts +1 -1
- package/lib/generator/ServiceGenerator.js +160 -161
- package/lib/generator/ServiceGenerator.js.map +1 -1
- package/lib/generator/import/ImportObjects.d.ts +66 -0
- package/lib/generator/import/ImportObjects.js +83 -0
- package/lib/generator/import/ImportObjects.js.map +1 -0
- package/lib/project/FileHandler.d.ts +28 -0
- package/lib/project/FileHandler.js +66 -0
- package/lib/project/FileHandler.js.map +1 -0
- package/lib/project/ProjectManager.d.ts +44 -18
- package/lib/project/ProjectManager.js +156 -111
- package/lib/project/ProjectManager.js.map +1 -1
- package/lib/project/TsMorphHelper.d.ts +11 -0
- package/lib/project/TsMorphHelper.js +66 -0
- package/lib/project/TsMorphHelper.js.map +1 -0
- package/package.json +10 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceConfigHelper.js","sourceRoot":"","sources":["../../src/data-model/ServiceConfigHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { DigestionOptions } from \"../FactoryFunctionModel\";\nimport {\n ComplexTypeGenerationOptions,\n EntityTypeGenerationOptions,\n GenericTypeGenerationOptions,\n PropertyGenerationOptions,\n TypeBasedGenerationOptions,\n} from \"../OptionModel\";\nimport { TypeModel } from \"../TypeModel\";\nimport { NamespaceWithAlias, withNamespace } from \"./DataModel\";\n\nexport type WithoutName<T> = Omit<T, \"name\">;\n\nexport interface ConfiguredProp extends WithoutName<PropertyGenerationOptions> {}\n\nconst EXCEPTION_NO_NAME = \"No value for required attribute [name] specified!\";\nconst EXCEPTION_WRONG_NAME_TYPE =\n \"Wrong type for attribute [name]! You have to supply either a plain string or a RegExp.\";\n\ninterface MappingType<T> {\n names: Record<string, T>;\n regExps: Array<[RegExp, GenericTypeGenerationOptions]>;\n}\n\nfunction createMapping<T>(): MappingType<T> {\n return {\n names: {},\n regExps: [],\n };\n}\n\nexport class ServiceConfigHelper {\n private propMapping = new Map<string, PropertyGenerationOptions>();\n private propRegExps: Array<[RegExp, PropertyGenerationOptions]> = [];\n private mapping = {\n [TypeModel.Any]: createMapping<GenericTypeGenerationOptions>(),\n [TypeModel.EntityType]: createMapping<EntityTypeGenerationOptions>(),\n [TypeModel.ComplexType]: createMapping<ComplexTypeGenerationOptions>(),\n [TypeModel.EnumType]: createMapping<GenericTypeGenerationOptions>(),\n [TypeModel.OperationType]: createMapping<GenericTypeGenerationOptions>(),\n [TypeModel.OperationImportType]: createMapping<GenericTypeGenerationOptions>(),\n [TypeModel.EntitySet]: createMapping<GenericTypeGenerationOptions>(),\n [TypeModel.Singleton]: createMapping<GenericTypeGenerationOptions>(),\n };\n\n constructor(options: DigestionOptions) {\n this.evaluateProps(options);\n this.evaluateEntities(options);\n }\n\n private evaluateProps(options: DigestionOptions) {\n options.propertiesByName.forEach((prop) => {\n if (!prop.name) {\n throw new Error(EXCEPTION_NO_NAME);\n }\n switch (typeof prop.name) {\n case \"string\":\n // TODO: check for existing prop.name and throw?\n this.propMapping.set(prop.name, prop);\n break;\n case \"object\":\n const { source, ignoreCase } = prop.name as RegExp;\n if (!source) {\n throw new Error(EXCEPTION_WRONG_NAME_TYPE);\n }\n this.propRegExps.push([new RegExp(`^${source}$`, ignoreCase ? \"i\" : \"\"), prop]);\n break;\n default:\n throw new Error(EXCEPTION_WRONG_NAME_TYPE);\n }\n });\n }\n\n private getPropByName(nameToMap: string): ConfiguredProp | undefined {\n const stringProp = this.propMapping.get(nameToMap);\n if (!stringProp) {\n return;\n }\n const { name, ...attrs } = stringProp;\n return { ...attrs };\n }\n\n private getPropByRegExp(nameToMap: string): ConfiguredProp | undefined {\n const resultList = this.propRegExps\n .filter(([regExp]) => regExp.test(nameToMap))\n .map(([regExp, { name, mappedName, ...attrs }]) => ({\n mappedName: mappedName ? nameToMap.replace(regExp, mappedName) : undefined,\n ...attrs,\n }));\n\n return !resultList.length\n ? undefined\n : resultList.reduce<ConfiguredProp>((result, prop) => {\n return { ...result, ...prop };\n }, {});\n }\n\n public findPropConfigByName = (name: string): ConfiguredProp | undefined => {\n const stringProp = this.getPropByName(name);\n const reProp = this.getPropByRegExp(name);\n\n return stringProp && reProp ? { ...reProp, ...stringProp } : stringProp || reProp;\n };\n\n private evaluateEntities(options: DigestionOptions) {\n options.byTypeAndName.forEach((ent) => {\n if (!ent.name) {\n throw new Error(EXCEPTION_NO_NAME);\n }\n\n const mapping = this.mapping[ent.type];\n switch (typeof ent.name) {\n case \"string\":\n // TODO: check for existing prop.name and throw?\n mapping.names[ent.name] = ent;\n break;\n case \"object\":\n const { source, ignoreCase } = ent.name as RegExp;\n if (!source) {\n throw new Error(EXCEPTION_WRONG_NAME_TYPE);\n }\n const regExp = new RegExp(`^${source}$`, ignoreCase ? \"i\" : \"\");\n mapping.regExps.push(\n // @ts-ignore: too generic\n [regExp, ent]\n );\n break;\n default:\n throw new Error(EXCEPTION_WRONG_NAME_TYPE);\n }\n });\n }\n\n // get entity config by name matching: simple name or fully qualified name (alias also supported)\n private getByName<T extends TypeBasedGenerationOptions>(\n mapping: Record<string, TypeBasedGenerationOptions>,\n namespace: NamespaceWithAlias,\n nameToMap: string\n ) {\n const [ns, alias] = namespace;\n const hayStack = { ...this.mapping.Any.names, ...mapping };\n\n const config =\n hayStack[withNamespace(ns, nameToMap)] ||\n (alias ? hayStack[withNamespace(alias, nameToMap)] : undefined) ||\n hayStack[nameToMap];\n if (!config) {\n return;\n }\n const { name, type, ...attrs } = config;\n return { ...attrs };\n }\n\n private getByRegExp(mapping: Array<[RegExp, any]>, [mainNs, alias]: NamespaceWithAlias, nameToMap: string) {\n const fqName = `${mainNs}.${nameToMap}`;\n const hayStack = [...this.mapping.Any.regExps, ...mapping];\n\n const resultList = hayStack\n .filter(([regExp, config]) => regExp.test(fqName))\n .map(([regExp, { name, mappedName, type, ...attrs }]) => ({\n mappedName: mappedName ? fqName.replace(regExp, mappedName) : undefined,\n ...attrs,\n }));\n\n return !resultList.length\n ? undefined\n : resultList.reduce((result, prop) => {\n return { ...result, ...prop };\n }, {});\n }\n\n private findConfig<T extends TypeBasedGenerationOptions>(\n mapping: MappingType<T>,\n namespace: NamespaceWithAlias,\n name: string\n ) {\n const stringEnt = this.getByName(mapping.names, namespace, name);\n const reEnt = this.getByRegExp(mapping.regExps, namespace, name);\n\n return stringEnt && reEnt ? { ...reEnt, ...stringEnt } : stringEnt || reEnt;\n }\n\n public findEntityTypeConfig(\n namespace: NamespaceWithAlias,\n name: string\n ): WithoutName<EntityTypeGenerationOptions> | undefined {\n return this.findConfig<EntityTypeGenerationOptions>(this.mapping.EntityType, namespace, name);\n }\n public findComplexTypeConfig(\n namespace: NamespaceWithAlias,\n name: string\n ): WithoutName<ComplexTypeGenerationOptions> | undefined {\n return this.findConfig(this.mapping.ComplexType, namespace, name);\n }\n public findEnumTypeConfig(\n namespace: NamespaceWithAlias,\n name: string\n ): WithoutName<GenericTypeGenerationOptions> | undefined {\n return this.findConfig(this.mapping.EnumType, namespace, name);\n }\n\n public findOperationTypeConfig(\n namespace: NamespaceWithAlias,\n name: string\n ): WithoutName<GenericTypeGenerationOptions> | undefined {\n return this.findConfig(this.mapping.OperationType, namespace, name);\n }\n\n public findOperationImportConfig(\n namespace: string,\n name: string\n ): WithoutName<GenericTypeGenerationOptions> | undefined {\n return this.findConfig(this.mapping.OperationImportType, [namespace], name);\n }\n\n public findEntitySetConfig(namespace: string, name: string): WithoutName<GenericTypeGenerationOptions> | undefined {\n return this.findConfig(this.mapping.EntitySet, [namespace], name);\n }\n\n public findSingletonConfig(namespace: string, name: string): WithoutName<GenericTypeGenerationOptions> | undefined {\n return this.findConfig(this.mapping.Singleton, [namespace], name);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ServiceConfigHelper.js","sourceRoot":"","sources":["../../src/data-model/ServiceConfigHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { DigestionOptions } from \"../FactoryFunctionModel\";\r\nimport {\r\n ComplexTypeGenerationOptions,\r\n EntityTypeGenerationOptions,\r\n GenericTypeGenerationOptions,\r\n PropertyGenerationOptions,\r\n TypeBasedGenerationOptions,\r\n} from \"../OptionModel\";\r\nimport { TypeModel } from \"../TypeModel\";\r\nimport { NamespaceWithAlias, withNamespace } from \"./DataModel\";\r\n\r\nexport type WithoutName<T> = Omit<T, \"name\">;\r\n\r\nexport interface ConfiguredProp extends WithoutName<PropertyGenerationOptions> {}\r\n\r\nconst EXCEPTION_NO_NAME = \"No value for required attribute [name] specified!\";\r\nconst EXCEPTION_WRONG_NAME_TYPE =\r\n \"Wrong type for attribute [name]! You have to supply either a plain string or a RegExp.\";\r\n\r\ninterface MappingType<T> {\r\n names: Record<string, T>;\r\n regExps: Array<[RegExp, GenericTypeGenerationOptions]>;\r\n}\r\n\r\nfunction createMapping<T>(): MappingType<T> {\r\n return {\r\n names: {},\r\n regExps: [],\r\n };\r\n}\r\n\r\nexport class ServiceConfigHelper {\r\n private propMapping = new Map<string, PropertyGenerationOptions>();\r\n private propRegExps: Array<[RegExp, PropertyGenerationOptions]> = [];\r\n private mapping = {\r\n [TypeModel.Any]: createMapping<GenericTypeGenerationOptions>(),\r\n [TypeModel.EntityType]: createMapping<EntityTypeGenerationOptions>(),\r\n [TypeModel.ComplexType]: createMapping<ComplexTypeGenerationOptions>(),\r\n [TypeModel.EnumType]: createMapping<GenericTypeGenerationOptions>(),\r\n [TypeModel.OperationType]: createMapping<GenericTypeGenerationOptions>(),\r\n [TypeModel.OperationImportType]: createMapping<GenericTypeGenerationOptions>(),\r\n [TypeModel.EntitySet]: createMapping<GenericTypeGenerationOptions>(),\r\n [TypeModel.Singleton]: createMapping<GenericTypeGenerationOptions>(),\r\n };\r\n\r\n constructor(options: DigestionOptions) {\r\n this.evaluateProps(options);\r\n this.evaluateEntities(options);\r\n }\r\n\r\n private evaluateProps(options: DigestionOptions) {\r\n options.propertiesByName.forEach((prop) => {\r\n if (!prop.name) {\r\n throw new Error(EXCEPTION_NO_NAME);\r\n }\r\n switch (typeof prop.name) {\r\n case \"string\":\r\n // TODO: check for existing prop.name and throw?\r\n this.propMapping.set(prop.name, prop);\r\n break;\r\n case \"object\":\r\n const { source, ignoreCase } = prop.name as RegExp;\r\n if (!source) {\r\n throw new Error(EXCEPTION_WRONG_NAME_TYPE);\r\n }\r\n this.propRegExps.push([new RegExp(`^${source}$`, ignoreCase ? \"i\" : \"\"), prop]);\r\n break;\r\n default:\r\n throw new Error(EXCEPTION_WRONG_NAME_TYPE);\r\n }\r\n });\r\n }\r\n\r\n private getPropByName(nameToMap: string): ConfiguredProp | undefined {\r\n const stringProp = this.propMapping.get(nameToMap);\r\n if (!stringProp) {\r\n return undefined;\r\n }\r\n const { name, ...attrs } = stringProp;\r\n return { ...attrs };\r\n }\r\n\r\n private getPropByRegExp(nameToMap: string): ConfiguredProp | undefined {\r\n const resultList = this.propRegExps\r\n .filter(([regExp]) => regExp.test(nameToMap))\r\n .map(([regExp, { name, mappedName, ...attrs }]) => ({\r\n mappedName: mappedName ? nameToMap.replace(regExp, mappedName) : undefined,\r\n ...attrs,\r\n }));\r\n\r\n return !resultList.length\r\n ? undefined\r\n : resultList.reduce<ConfiguredProp>((result, prop) => {\r\n return { ...result, ...prop };\r\n }, {});\r\n }\r\n\r\n public findPropConfigByName = (name: string): ConfiguredProp | undefined => {\r\n const stringProp = this.getPropByName(name);\r\n const reProp = this.getPropByRegExp(name);\r\n\r\n return stringProp && reProp ? { ...reProp, ...stringProp } : stringProp || reProp;\r\n };\r\n\r\n private evaluateEntities(options: DigestionOptions) {\r\n options.byTypeAndName.forEach((ent) => {\r\n if (!ent.name) {\r\n throw new Error(EXCEPTION_NO_NAME);\r\n }\r\n\r\n const mapping = this.mapping[ent.type];\r\n switch (typeof ent.name) {\r\n case \"string\":\r\n // TODO: check for existing prop.name and throw?\r\n mapping.names[ent.name] = ent;\r\n break;\r\n case \"object\":\r\n const { source, ignoreCase } = ent.name as RegExp;\r\n if (!source) {\r\n throw new Error(EXCEPTION_WRONG_NAME_TYPE);\r\n }\r\n const regExp = new RegExp(`^${source}$`, ignoreCase ? \"i\" : \"\");\r\n mapping.regExps.push(\r\n // @ts-ignore: too generic\r\n [regExp, ent]\r\n );\r\n break;\r\n default:\r\n throw new Error(EXCEPTION_WRONG_NAME_TYPE);\r\n }\r\n });\r\n }\r\n\r\n // get entity config by name matching: simple name or fully qualified name (alias also supported)\r\n private getByName<T extends TypeBasedGenerationOptions>(\r\n mapping: Record<string, TypeBasedGenerationOptions>,\r\n namespace: NamespaceWithAlias,\r\n nameToMap: string\r\n ) {\r\n const [ns, alias] = namespace;\r\n const hayStack = { ...this.mapping.Any.names, ...mapping };\r\n\r\n const config =\r\n hayStack[withNamespace(ns, nameToMap)] ||\r\n (alias ? hayStack[withNamespace(alias, nameToMap)] : undefined) ||\r\n hayStack[nameToMap];\r\n if (!config) {\r\n return undefined;\r\n }\r\n const { name, type, ...attrs } = config;\r\n return { ...attrs };\r\n }\r\n\r\n private getByRegExp(mapping: Array<[RegExp, any]>, [mainNs, alias]: NamespaceWithAlias, nameToMap: string) {\r\n const fqName = `${mainNs}.${nameToMap}`;\r\n const hayStack = [...this.mapping.Any.regExps, ...mapping];\r\n\r\n const resultList = hayStack\r\n .filter(([regExp, config]) => regExp.test(fqName))\r\n .map(([regExp, { name, mappedName, type, ...attrs }]) => ({\r\n mappedName: mappedName ? fqName.replace(regExp, mappedName) : undefined,\r\n ...attrs,\r\n }));\r\n\r\n return !resultList.length\r\n ? undefined\r\n : resultList.reduce((result, prop) => {\r\n return { ...result, ...prop };\r\n }, {});\r\n }\r\n\r\n private findConfig<T extends TypeBasedGenerationOptions>(\r\n mapping: MappingType<T>,\r\n namespace: NamespaceWithAlias,\r\n name: string\r\n ) {\r\n const stringEnt = this.getByName(mapping.names, namespace, name);\r\n const reEnt = this.getByRegExp(mapping.regExps, namespace, name);\r\n\r\n return stringEnt && reEnt ? { ...reEnt, ...stringEnt } : stringEnt || reEnt;\r\n }\r\n\r\n public findEntityTypeConfig(\r\n namespace: NamespaceWithAlias,\r\n name: string\r\n ): WithoutName<EntityTypeGenerationOptions> | undefined {\r\n return this.findConfig<EntityTypeGenerationOptions>(this.mapping.EntityType, namespace, name);\r\n }\r\n public findComplexTypeConfig(\r\n namespace: NamespaceWithAlias,\r\n name: string\r\n ): WithoutName<ComplexTypeGenerationOptions> | undefined {\r\n return this.findConfig(this.mapping.ComplexType, namespace, name);\r\n }\r\n public findEnumTypeConfig(\r\n namespace: NamespaceWithAlias,\r\n name: string\r\n ): WithoutName<GenericTypeGenerationOptions> | undefined {\r\n return this.findConfig(this.mapping.EnumType, namespace, name);\r\n }\r\n\r\n public findOperationTypeConfig(\r\n namespace: NamespaceWithAlias,\r\n name: string\r\n ): WithoutName<GenericTypeGenerationOptions> | undefined {\r\n return this.findConfig(this.mapping.OperationType, namespace, name);\r\n }\r\n\r\n public findOperationImportConfig(\r\n namespace: string,\r\n name: string\r\n ): WithoutName<GenericTypeGenerationOptions> | undefined {\r\n return this.findConfig(this.mapping.OperationImportType, [namespace], name);\r\n }\r\n\r\n public findEntitySetConfig(namespace: string, name: string): WithoutName<GenericTypeGenerationOptions> | undefined {\r\n return this.findConfig(this.mapping.EntitySet, [namespace], name);\r\n }\r\n\r\n public findSingletonConfig(namespace: string, name: string): WithoutName<GenericTypeGenerationOptions> | undefined {\r\n return this.findConfig(this.mapping.Singleton, [namespace], name);\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ConfigFileOptions } from "../../OptionModel";
|
|
2
|
+
import { NameValidator, ValidationError } from "./NameValidator";
|
|
3
|
+
export interface NameValidatorOptions extends Pick<ConfigFileOptions, "disableAutomaticNameClashResolution" | "bundledFileGeneration"> {
|
|
4
|
+
}
|
|
5
|
+
export declare class NameClashValidator implements NameValidator {
|
|
6
|
+
private options;
|
|
7
|
+
private entityContainer;
|
|
8
|
+
private store;
|
|
9
|
+
private errors;
|
|
10
|
+
constructor(options?: NameValidatorOptions);
|
|
11
|
+
private addToError;
|
|
12
|
+
private addToTypes;
|
|
13
|
+
private addToEntityContainer;
|
|
14
|
+
addEntityType(fqName: string, name: string): string;
|
|
15
|
+
addComplexType(fqName: string, name: string): string;
|
|
16
|
+
addEnumType(fqName: string, name: string): string;
|
|
17
|
+
addUnboundOperationType(fqName: string, name: string): string;
|
|
18
|
+
addBoundOperationType(bindingName: string, fqName: string, name: string): string;
|
|
19
|
+
addOperationImportType(fqName: string, name: string): string;
|
|
20
|
+
addEntitySet(fqName: string, name: string): string;
|
|
21
|
+
addSingleton(fqName: string, name: string): string;
|
|
22
|
+
validate(): Map<string, ValidationError[]>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NameClashValidator = void 0;
|
|
4
|
+
const TypeModel_1 = require("../../TypeModel");
|
|
5
|
+
class NameClashValidator {
|
|
6
|
+
constructor(options = {}) {
|
|
7
|
+
this.options = options;
|
|
8
|
+
this.entityContainer = new Map();
|
|
9
|
+
this.store = new Map();
|
|
10
|
+
this.errors = new Map();
|
|
11
|
+
}
|
|
12
|
+
addToError(name, hit, validationObject) {
|
|
13
|
+
var _a;
|
|
14
|
+
const existingErrors = this.errors.get(name);
|
|
15
|
+
if (existingErrors) {
|
|
16
|
+
if (!this.options.disableAutomaticNameClashResolution) {
|
|
17
|
+
validationObject.renamedTo = `${name}${existingErrors.length + 1}`;
|
|
18
|
+
}
|
|
19
|
+
existingErrors.push(validationObject);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
if (!this.options.disableAutomaticNameClashResolution) {
|
|
23
|
+
validationObject.renamedTo = `${name}2`;
|
|
24
|
+
}
|
|
25
|
+
this.errors.set(name, [hit, validationObject]);
|
|
26
|
+
}
|
|
27
|
+
return (_a = validationObject.renamedTo) !== null && _a !== void 0 ? _a : name;
|
|
28
|
+
}
|
|
29
|
+
addToTypes(fqName, name, type) {
|
|
30
|
+
const validationObject = { type, fqName };
|
|
31
|
+
const hit = this.store.get(name);
|
|
32
|
+
if (hit) {
|
|
33
|
+
return this.addToError(name, hit, validationObject);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
this.store.set(name, validationObject);
|
|
37
|
+
return name;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
addToEntityContainer(fqName, name, type) {
|
|
41
|
+
const validationObject = { type, fqName };
|
|
42
|
+
const hit = this.entityContainer.get(name);
|
|
43
|
+
if (hit) {
|
|
44
|
+
return this.addToError(name, hit, validationObject);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this.entityContainer.set(name, validationObject);
|
|
48
|
+
return name;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
addEntityType(fqName, name) {
|
|
52
|
+
return this.addToTypes(fqName, name, TypeModel_1.TypeModel.EntityType);
|
|
53
|
+
}
|
|
54
|
+
addComplexType(fqName, name) {
|
|
55
|
+
return this.addToTypes(fqName, name, TypeModel_1.TypeModel.ComplexType);
|
|
56
|
+
}
|
|
57
|
+
addEnumType(fqName, name) {
|
|
58
|
+
return this.addToTypes(fqName, name, TypeModel_1.TypeModel.EnumType);
|
|
59
|
+
}
|
|
60
|
+
addUnboundOperationType(fqName, name) {
|
|
61
|
+
return this.addToTypes(fqName, name, TypeModel_1.TypeModel.OperationType);
|
|
62
|
+
}
|
|
63
|
+
addBoundOperationType(bindingName, fqName, name) {
|
|
64
|
+
const nameWithBinding = `${bindingName}_${name}`;
|
|
65
|
+
const validationObject = { type: TypeModel_1.TypeModel.OperationType, fqName };
|
|
66
|
+
const hit = this.store.get(nameWithBinding);
|
|
67
|
+
if (hit) {
|
|
68
|
+
return this.addToError(name, hit, validationObject);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
this.store.set(nameWithBinding, validationObject);
|
|
72
|
+
return name;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
addOperationImportType(fqName, name) {
|
|
76
|
+
return this.addToEntityContainer(fqName, name, TypeModel_1.TypeModel.OperationImportType);
|
|
77
|
+
}
|
|
78
|
+
addEntitySet(fqName, name) {
|
|
79
|
+
return this.addToEntityContainer(fqName, name, TypeModel_1.TypeModel.EntitySet);
|
|
80
|
+
}
|
|
81
|
+
addSingleton(fqName, name) {
|
|
82
|
+
return this.addToEntityContainer(fqName, name, TypeModel_1.TypeModel.Singleton);
|
|
83
|
+
}
|
|
84
|
+
validate() {
|
|
85
|
+
return this.errors;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.NameClashValidator = NameClashValidator;
|
|
89
|
+
//# sourceMappingURL=NameClashValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NameClashValidator.js","sourceRoot":"","sources":["../../../src/data-model/validation/NameClashValidator.ts"],"names":[],"mappings":"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","sourcesContent":["import { ConfigFileOptions } from \"../../OptionModel\";\r\nimport { TypeModel } from \"../../TypeModel\";\r\nimport { NameValidator, ValidationError } from \"./NameValidator\";\r\n\r\nexport interface NameValidatorOptions\r\n extends Pick<ConfigFileOptions, \"disableAutomaticNameClashResolution\" | \"bundledFileGeneration\"> {}\r\n\r\nexport class NameClashValidator implements NameValidator {\r\n private entityContainer = new Map<string, ValidationError>();\r\n private store = new Map<string, ValidationError>();\r\n private errors = new Map<string, ValidationError[]>();\r\n\r\n constructor(private options: NameValidatorOptions = {}) {}\r\n\r\n private addToError(name: string, hit: ValidationError, validationObject: ValidationError) {\r\n const existingErrors = this.errors.get(name);\r\n if (existingErrors) {\r\n if (!this.options.disableAutomaticNameClashResolution) {\r\n validationObject.renamedTo = `${name}${existingErrors.length + 1}`;\r\n }\r\n existingErrors.push(validationObject);\r\n } else {\r\n if (!this.options.disableAutomaticNameClashResolution) {\r\n validationObject.renamedTo = `${name}2`;\r\n }\r\n this.errors.set(name, [hit, validationObject]);\r\n }\r\n return validationObject.renamedTo ?? name;\r\n }\r\n\r\n private addToTypes(fqName: string, name: string, type: TypeModel): string {\r\n const validationObject: ValidationError = { type, fqName };\r\n const hit = this.store.get(name);\r\n if (hit) {\r\n return this.addToError(name, hit, validationObject);\r\n } else {\r\n this.store.set(name, validationObject);\r\n return name;\r\n }\r\n }\r\n\r\n private addToEntityContainer(fqName: string, name: string, type: TypeModel): string {\r\n const validationObject: ValidationError = { type, fqName };\r\n const hit = this.entityContainer.get(name);\r\n if (hit) {\r\n return this.addToError(name, hit, validationObject);\r\n } else {\r\n this.entityContainer.set(name, validationObject);\r\n return name;\r\n }\r\n }\r\n\r\n addEntityType(fqName: string, name: string) {\r\n return this.addToTypes(fqName, name, TypeModel.EntityType);\r\n }\r\n\r\n addComplexType(fqName: string, name: string) {\r\n return this.addToTypes(fqName, name, TypeModel.ComplexType);\r\n }\r\n\r\n addEnumType(fqName: string, name: string) {\r\n return this.addToTypes(fqName, name, TypeModel.EnumType);\r\n }\r\n\r\n addUnboundOperationType(fqName: string, name: string) {\r\n return this.addToTypes(fqName, name, TypeModel.OperationType);\r\n }\r\n\r\n addBoundOperationType(bindingName: string, fqName: string, name: string) {\r\n const nameWithBinding = `${bindingName}_${name}`;\r\n const validationObject: ValidationError = { type: TypeModel.OperationType, fqName };\r\n const hit = this.store.get(nameWithBinding);\r\n if (hit) {\r\n return this.addToError(name, hit, validationObject);\r\n } else {\r\n this.store.set(nameWithBinding, validationObject);\r\n return name;\r\n }\r\n }\r\n\r\n addOperationImportType(fqName: string, name: string) {\r\n return this.addToEntityContainer(fqName, name, TypeModel.OperationImportType);\r\n }\r\n\r\n addEntitySet(fqName: string, name: string) {\r\n return this.addToEntityContainer(fqName, name, TypeModel.EntitySet);\r\n }\r\n\r\n addSingleton(fqName: string, name: string) {\r\n return this.addToEntityContainer(fqName, name, TypeModel.Singleton);\r\n }\r\n\r\n validate() {\r\n return this.errors;\r\n }\r\n}\r\n"]}
|
|
@@ -1,21 +1,5 @@
|
|
|
1
|
-
import { ConfigFileOptions } from "../../OptionModel";
|
|
2
1
|
import { TypeModel } from "../../TypeModel";
|
|
3
|
-
export interface
|
|
4
|
-
fqName: string;
|
|
5
|
-
type: TypeModel;
|
|
6
|
-
renamedTo?: string;
|
|
7
|
-
}
|
|
8
|
-
export interface NameValidatorOptions extends Pick<ConfigFileOptions, "disableAutomaticNameClashResolution"> {
|
|
9
|
-
}
|
|
10
|
-
export declare class NameValidator {
|
|
11
|
-
private options;
|
|
12
|
-
private entityContainer;
|
|
13
|
-
private store;
|
|
14
|
-
private errors;
|
|
15
|
-
constructor(options?: NameValidatorOptions);
|
|
16
|
-
private addToError;
|
|
17
|
-
private addToTypes;
|
|
18
|
-
private addToEntityContainer;
|
|
2
|
+
export interface NameValidator {
|
|
19
3
|
addEntityType(fqName: string, name: string): string;
|
|
20
4
|
addComplexType(fqName: string, name: string): string;
|
|
21
5
|
addEnumType(fqName: string, name: string): string;
|
|
@@ -26,3 +10,8 @@ export declare class NameValidator {
|
|
|
26
10
|
addSingleton(fqName: string, name: string): string;
|
|
27
11
|
validate(): Map<string, ValidationError[]>;
|
|
28
12
|
}
|
|
13
|
+
export interface ValidationError {
|
|
14
|
+
fqName: string;
|
|
15
|
+
type: TypeModel;
|
|
16
|
+
renamedTo?: string;
|
|
17
|
+
}
|
|
@@ -1,80 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NameValidator = void 0;
|
|
4
|
-
const TypeModel_1 = require("../../TypeModel");
|
|
5
|
-
class NameValidator {
|
|
6
|
-
constructor(options = {}) {
|
|
7
|
-
this.options = options;
|
|
8
|
-
this.entityContainer = new Map();
|
|
9
|
-
this.store = new Map();
|
|
10
|
-
this.errors = new Map();
|
|
11
|
-
}
|
|
12
|
-
addToError(name, hit, validationObject) {
|
|
13
|
-
var _a;
|
|
14
|
-
const existingErrors = this.errors.get(name);
|
|
15
|
-
if (existingErrors) {
|
|
16
|
-
if (!this.options.disableAutomaticNameClashResolution) {
|
|
17
|
-
validationObject.renamedTo = `${name}${existingErrors.length + 1}`;
|
|
18
|
-
}
|
|
19
|
-
existingErrors.push(validationObject);
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
if (!this.options.disableAutomaticNameClashResolution) {
|
|
23
|
-
validationObject.renamedTo = `${name}2`;
|
|
24
|
-
}
|
|
25
|
-
this.errors.set(name, [hit, validationObject]);
|
|
26
|
-
}
|
|
27
|
-
return (_a = validationObject.renamedTo) !== null && _a !== void 0 ? _a : name;
|
|
28
|
-
}
|
|
29
|
-
addToTypes(fqName, name, type) {
|
|
30
|
-
const validationObject = { type, fqName };
|
|
31
|
-
const hit = this.store.get(name);
|
|
32
|
-
if (hit) {
|
|
33
|
-
return this.addToError(name, hit, validationObject);
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
this.store.set(name, validationObject);
|
|
37
|
-
return name;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
addToEntityContainer(fqName, name, type) {
|
|
41
|
-
const validationObject = { type, fqName };
|
|
42
|
-
const hit = this.entityContainer.get(name);
|
|
43
|
-
if (hit) {
|
|
44
|
-
return this.addToError(name, hit, validationObject);
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
this.entityContainer.set(name, validationObject);
|
|
48
|
-
return name;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
addEntityType(fqName, name) {
|
|
52
|
-
return this.addToTypes(fqName, name, TypeModel_1.TypeModel.EntityType);
|
|
53
|
-
}
|
|
54
|
-
addComplexType(fqName, name) {
|
|
55
|
-
return this.addToTypes(fqName, name, TypeModel_1.TypeModel.ComplexType);
|
|
56
|
-
}
|
|
57
|
-
addEnumType(fqName, name) {
|
|
58
|
-
return this.addToTypes(fqName, name, TypeModel_1.TypeModel.EnumType);
|
|
59
|
-
}
|
|
60
|
-
addUnboundOperationType(fqName, name) {
|
|
61
|
-
return this.addToTypes(fqName, name, TypeModel_1.TypeModel.OperationType);
|
|
62
|
-
}
|
|
63
|
-
addBoundOperationType(bindingName, fqName, name) {
|
|
64
|
-
return this.addToTypes(`${bindingName}_${fqName}`, name, TypeModel_1.TypeModel.OperationType);
|
|
65
|
-
}
|
|
66
|
-
addOperationImportType(fqName, name) {
|
|
67
|
-
return this.addToEntityContainer(fqName, name, TypeModel_1.TypeModel.OperationImportType);
|
|
68
|
-
}
|
|
69
|
-
addEntitySet(fqName, name) {
|
|
70
|
-
return this.addToEntityContainer(fqName, name, TypeModel_1.TypeModel.EntitySet);
|
|
71
|
-
}
|
|
72
|
-
addSingleton(fqName, name) {
|
|
73
|
-
return this.addToEntityContainer(fqName, name, TypeModel_1.TypeModel.Singleton);
|
|
74
|
-
}
|
|
75
|
-
validate() {
|
|
76
|
-
return this.errors;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
exports.NameValidator = NameValidator;
|
|
80
3
|
//# sourceMappingURL=NameValidator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NameValidator.js","sourceRoot":"","sources":["../../../src/data-model/validation/NameValidator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NameValidator.js","sourceRoot":"","sources":["../../../src/data-model/validation/NameValidator.ts"],"names":[],"mappings":"","sourcesContent":["import { TypeModel } from \"../../TypeModel\";\n\nexport interface NameValidator {\n addEntityType(fqName: string, name: string): string;\n\n addComplexType(fqName: string, name: string): string;\n\n addEnumType(fqName: string, name: string): string;\n\n addUnboundOperationType(fqName: string, name: string): string;\n\n addBoundOperationType(bindingName: string, fqName: string, name: string): string;\n\n addOperationImportType(fqName: string, name: string): string;\n\n addEntitySet(fqName: string, name: string): string;\n\n addSingleton(fqName: string, name: string): string;\n\n validate(): Map<string, ValidationError[]>;\n}\n\nexport interface ValidationError {\n fqName: string;\n type: TypeModel;\n renamedTo?: string;\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { NameValidator, ValidationError } from "./NameValidator";
|
|
2
|
+
export declare class NoopValidator implements NameValidator {
|
|
3
|
+
addBoundOperationType(bindingName: string, fqName: string, name: string): string;
|
|
4
|
+
addComplexType(fqName: string, name: string): string;
|
|
5
|
+
addEntitySet(fqName: string, name: string): string;
|
|
6
|
+
addEntityType(fqName: string, name: string): string;
|
|
7
|
+
addEnumType(fqName: string, name: string): string;
|
|
8
|
+
addOperationImportType(fqName: string, name: string): string;
|
|
9
|
+
addSingleton(fqName: string, name: string): string;
|
|
10
|
+
addUnboundOperationType(fqName: string, name: string): string;
|
|
11
|
+
validate(): Map<string, ValidationError[]>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NoopValidator = void 0;
|
|
4
|
+
class NoopValidator {
|
|
5
|
+
addBoundOperationType(bindingName, fqName, name) {
|
|
6
|
+
return name;
|
|
7
|
+
}
|
|
8
|
+
addComplexType(fqName, name) {
|
|
9
|
+
return name;
|
|
10
|
+
}
|
|
11
|
+
addEntitySet(fqName, name) {
|
|
12
|
+
return name;
|
|
13
|
+
}
|
|
14
|
+
addEntityType(fqName, name) {
|
|
15
|
+
return name;
|
|
16
|
+
}
|
|
17
|
+
addEnumType(fqName, name) {
|
|
18
|
+
return name;
|
|
19
|
+
}
|
|
20
|
+
addOperationImportType(fqName, name) {
|
|
21
|
+
return name;
|
|
22
|
+
}
|
|
23
|
+
addSingleton(fqName, name) {
|
|
24
|
+
return name;
|
|
25
|
+
}
|
|
26
|
+
addUnboundOperationType(fqName, name) {
|
|
27
|
+
return name;
|
|
28
|
+
}
|
|
29
|
+
validate() {
|
|
30
|
+
return new Map();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.NoopValidator = NoopValidator;
|
|
34
|
+
//# sourceMappingURL=NoopValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NoopValidator.js","sourceRoot":"","sources":["../../../src/data-model/validation/NoopValidator.ts"],"names":[],"mappings":";;;AAGA,MAAa,aAAa;IACxB,qBAAqB,CAAC,WAAmB,EAAE,MAAc,EAAE,IAAY;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,IAAY;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,MAAc,EAAE,IAAY;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,MAAc,EAAE,IAAY;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,MAAc,EAAE,IAAY;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sBAAsB,CAAC,MAAc,EAAE,IAAY;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,MAAc,EAAE,IAAY;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uBAAuB,CAAC,MAAc,EAAE,IAAY;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;CACF;AApCD,sCAoCC","sourcesContent":["import { TypeModel } from \"../../TypeModel\";\nimport { NameValidator, ValidationError } from \"./NameValidator\";\n\nexport class NoopValidator implements NameValidator {\n addBoundOperationType(bindingName: string, fqName: string, name: string): string {\n return name;\n }\n\n addComplexType(fqName: string, name: string): string {\n return name;\n }\n\n addEntitySet(fqName: string, name: string): string {\n return name;\n }\n\n addEntityType(fqName: string, name: string): string {\n return name;\n }\n\n addEnumType(fqName: string, name: string): string {\n return name;\n }\n\n addOperationImportType(fqName: string, name: string): string {\n return name;\n }\n\n addSingleton(fqName: string, name: string): string {\n return name;\n }\n\n addUnboundOperationType(fqName: string, name: string): string {\n return name;\n }\n\n validate(): Map<string, ValidationError[]> {\n return new Map();\n }\n}\n"]}
|
package/lib/defaultConfig.js
CHANGED
|
@@ -27,6 +27,7 @@ const defaultConfig = {
|
|
|
27
27
|
v2ModelsWithExtraResultsWrapping: false,
|
|
28
28
|
v4BigNumberAsString: false,
|
|
29
29
|
disableAutomaticNameClashResolution: false,
|
|
30
|
+
bundledFileGeneration: true,
|
|
30
31
|
naming: {
|
|
31
32
|
models: {
|
|
32
33
|
namingStrategy: NamingModel_1.NamingStrategies.PASCAL_CASE,
|
package/lib/defaultConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultConfig.js","sourceRoot":"","sources":["../src/defaultConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import deepmerge from \"deepmerge\";\r\n\r\nimport { NameSettings, NamingStrategies } from \"./NamingModel\";\r\nimport { EmitModes, Modes, RunOptions } from \"./OptionModel\";\r\n\r\nexport type DefaultConfiguration = Omit<RunOptions, \"sourceUrl\" | \"source\" | \"output\" | \"serviceName\">;\r\n/**\r\n * The default configuration.\r\n */\r\nconst defaultConfig: DefaultConfiguration = {\r\n sourceUrlConfig: {},\r\n refreshFile: false,\r\n mode: Modes.all,\r\n emitMode: EmitModes.js_dts,\r\n debug: false,\r\n prettier: false,\r\n tsconfig: \"tsconfig.json\",\r\n converters: [],\r\n skipEditableModels: false,\r\n skipIdModels: false,\r\n skipOperations: false,\r\n skipComments: false,\r\n enablePrimitivePropertyServices: false,\r\n disableAutoManagedKey: false,\r\n allowRenaming: false,\r\n v2ModelsWithExtraResultsWrapping: false,\r\n v4BigNumberAsString: false,\r\n disableAutomaticNameClashResolution: false,\r\n naming: {\r\n models: {\r\n namingStrategy: NamingStrategies.PASCAL_CASE,\r\n propNamingStrategy: NamingStrategies.CAMEL_CASE,\r\n editableModels: {\r\n prefix: \"Editable\",\r\n suffix: \"\",\r\n applyModelNaming: true,\r\n },\r\n idModels: {\r\n prefix: \"\",\r\n suffix: \"Id\",\r\n applyModelNaming: true,\r\n },\r\n operationParamModels: {\r\n prefix: \"\",\r\n suffix: \"Params\",\r\n applyModelNaming: true,\r\n },\r\n fileName: {\r\n namingStrategy: NamingStrategies.PASCAL_CASE,\r\n prefix: \"\",\r\n suffix: \"Model\",\r\n },\r\n },\r\n queryObjects: {\r\n namingStrategy: NamingStrategies.PASCAL_CASE,\r\n propNamingStrategy: NamingStrategies.CAMEL_CASE,\r\n prefix: \"Q\",\r\n suffix: \"\",\r\n idFunctions: {\r\n prefix: \"\",\r\n suffix: \"Id\",\r\n },\r\n fileName: {\r\n namingStrategy: NamingStrategies.PASCAL_CASE,\r\n prefix: \"Q\",\r\n suffix: \"\",\r\n },\r\n },\r\n services: {\r\n prefix: \"\",\r\n suffix: \"Service\",\r\n namingStrategy: NamingStrategies.PASCAL_CASE,\r\n main: {\r\n applyServiceNaming: true,\r\n },\r\n collection: {\r\n prefix: \"\",\r\n suffix: \"Collection\",\r\n applyServiceNaming: true,\r\n },\r\n operations: {\r\n namingStrategy: NamingStrategies.CAMEL_CASE,\r\n },\r\n relatedServiceGetter: {\r\n namingStrategy: NamingStrategies.CAMEL_CASE,\r\n prefix: \"\",\r\n suffix: \"\",\r\n },\r\n privateProps: {\r\n namingStrategy: NamingStrategies.CAMEL_CASE,\r\n prefix: \"_\",\r\n suffix: \"\",\r\n },\r\n },\r\n },\r\n propertiesByName: [],\r\n byTypeAndName: [],\r\n};\r\n\r\nconst { models, queryObjects, services } = defaultConfig.naming;\r\nconst minimalNamingConfig: NameSettings = {\r\n models: {\r\n fileName: {\r\n prefix: models.fileName.prefix,\r\n suffix: models.fileName.suffix,\r\n },\r\n idModels: {\r\n applyModelNaming: true,\r\n prefix: models.idModels.prefix,\r\n suffix: models.idModels.suffix,\r\n },\r\n editableModels: {\r\n applyModelNaming: true,\r\n prefix: models.editableModels.prefix,\r\n suffix: models.editableModels.suffix,\r\n },\r\n operationParamModels: {\r\n applyModelNaming: true,\r\n prefix: models.operationParamModels.prefix,\r\n suffix: models.operationParamModels.suffix,\r\n },\r\n },\r\n queryObjects: {\r\n prefix: queryObjects.prefix,\r\n suffix: queryObjects.suffix,\r\n fileName: {\r\n prefix: queryObjects.fileName.prefix,\r\n suffix: queryObjects.fileName.suffix,\r\n },\r\n idFunctions: {\r\n prefix: queryObjects.idFunctions.prefix,\r\n suffix: queryObjects.idFunctions.suffix,\r\n },\r\n },\r\n services: {\r\n prefix: services.prefix,\r\n suffix: services.suffix,\r\n main: {\r\n applyServiceNaming: true,\r\n },\r\n collection: {\r\n applyServiceNaming: true,\r\n prefix: services.collection.prefix,\r\n suffix: services.collection.suffix,\r\n },\r\n privateProps: {\r\n prefix: services.privateProps.prefix,\r\n suffix: services.privateProps.suffix,\r\n },\r\n relatedServiceGetter: {\r\n prefix: services.relatedServiceGetter.prefix,\r\n suffix: services.relatedServiceGetter.suffix,\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Creates a defensive copy of the default config.\r\n */\r\nexport function getDefaultConfig(): DefaultConfiguration {\r\n return deepmerge(defaultConfig, {});\r\n}\r\n\r\n/**\r\n * Creates a defensive copy of the minimal config: minimal in respect to naming.\r\n */\r\nexport function getMinimalConfig(): DefaultConfiguration {\r\n const { naming, ...passThrough } = defaultConfig;\r\n return deepmerge(passThrough, { naming: minimalNamingConfig });\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"defaultConfig.js","sourceRoot":"","sources":["../src/defaultConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import deepmerge from \"deepmerge\";\r\n\r\nimport { NameSettings, NamingStrategies } from \"./NamingModel\";\r\nimport { EmitModes, Modes, RunOptions } from \"./OptionModel\";\r\n\r\nexport type DefaultConfiguration = Omit<RunOptions, \"sourceUrl\" | \"source\" | \"output\" | \"serviceName\">;\r\n/**\r\n * The default configuration.\r\n */\r\nconst defaultConfig: DefaultConfiguration = {\r\n sourceUrlConfig: {},\r\n refreshFile: false,\r\n mode: Modes.all,\r\n emitMode: EmitModes.js_dts,\r\n debug: false,\r\n prettier: false,\r\n tsconfig: \"tsconfig.json\",\r\n converters: [],\r\n skipEditableModels: false,\r\n skipIdModels: false,\r\n skipOperations: false,\r\n skipComments: false,\r\n enablePrimitivePropertyServices: false,\r\n disableAutoManagedKey: false,\r\n allowRenaming: false,\r\n v2ModelsWithExtraResultsWrapping: false,\r\n v4BigNumberAsString: false,\r\n disableAutomaticNameClashResolution: false,\r\n bundledFileGeneration: true,\r\n naming: {\r\n models: {\r\n namingStrategy: NamingStrategies.PASCAL_CASE,\r\n propNamingStrategy: NamingStrategies.CAMEL_CASE,\r\n editableModels: {\r\n prefix: \"Editable\",\r\n suffix: \"\",\r\n applyModelNaming: true,\r\n },\r\n idModels: {\r\n prefix: \"\",\r\n suffix: \"Id\",\r\n applyModelNaming: true,\r\n },\r\n operationParamModels: {\r\n prefix: \"\",\r\n suffix: \"Params\",\r\n applyModelNaming: true,\r\n },\r\n fileName: {\r\n namingStrategy: NamingStrategies.PASCAL_CASE,\r\n prefix: \"\",\r\n suffix: \"Model\",\r\n },\r\n },\r\n queryObjects: {\r\n namingStrategy: NamingStrategies.PASCAL_CASE,\r\n propNamingStrategy: NamingStrategies.CAMEL_CASE,\r\n prefix: \"Q\",\r\n suffix: \"\",\r\n idFunctions: {\r\n prefix: \"\",\r\n suffix: \"Id\",\r\n },\r\n fileName: {\r\n namingStrategy: NamingStrategies.PASCAL_CASE,\r\n prefix: \"Q\",\r\n suffix: \"\",\r\n },\r\n },\r\n services: {\r\n prefix: \"\",\r\n suffix: \"Service\",\r\n namingStrategy: NamingStrategies.PASCAL_CASE,\r\n main: {\r\n applyServiceNaming: true,\r\n },\r\n collection: {\r\n prefix: \"\",\r\n suffix: \"Collection\",\r\n applyServiceNaming: true,\r\n },\r\n operations: {\r\n namingStrategy: NamingStrategies.CAMEL_CASE,\r\n },\r\n relatedServiceGetter: {\r\n namingStrategy: NamingStrategies.CAMEL_CASE,\r\n prefix: \"\",\r\n suffix: \"\",\r\n },\r\n privateProps: {\r\n namingStrategy: NamingStrategies.CAMEL_CASE,\r\n prefix: \"_\",\r\n suffix: \"\",\r\n },\r\n },\r\n },\r\n propertiesByName: [],\r\n byTypeAndName: [],\r\n};\r\n\r\nconst { models, queryObjects, services } = defaultConfig.naming;\r\nconst minimalNamingConfig: NameSettings = {\r\n models: {\r\n fileName: {\r\n prefix: models.fileName.prefix,\r\n suffix: models.fileName.suffix,\r\n },\r\n idModels: {\r\n applyModelNaming: true,\r\n prefix: models.idModels.prefix,\r\n suffix: models.idModels.suffix,\r\n },\r\n editableModels: {\r\n applyModelNaming: true,\r\n prefix: models.editableModels.prefix,\r\n suffix: models.editableModels.suffix,\r\n },\r\n operationParamModels: {\r\n applyModelNaming: true,\r\n prefix: models.operationParamModels.prefix,\r\n suffix: models.operationParamModels.suffix,\r\n },\r\n },\r\n queryObjects: {\r\n prefix: queryObjects.prefix,\r\n suffix: queryObjects.suffix,\r\n fileName: {\r\n prefix: queryObjects.fileName.prefix,\r\n suffix: queryObjects.fileName.suffix,\r\n },\r\n idFunctions: {\r\n prefix: queryObjects.idFunctions.prefix,\r\n suffix: queryObjects.idFunctions.suffix,\r\n },\r\n },\r\n services: {\r\n prefix: services.prefix,\r\n suffix: services.suffix,\r\n main: {\r\n applyServiceNaming: true,\r\n },\r\n collection: {\r\n applyServiceNaming: true,\r\n prefix: services.collection.prefix,\r\n suffix: services.collection.suffix,\r\n },\r\n privateProps: {\r\n prefix: services.privateProps.prefix,\r\n suffix: services.privateProps.suffix,\r\n },\r\n relatedServiceGetter: {\r\n prefix: services.relatedServiceGetter.prefix,\r\n suffix: services.relatedServiceGetter.suffix,\r\n },\r\n },\r\n};\r\n\r\n/**\r\n * Creates a defensive copy of the default config.\r\n */\r\nexport function getDefaultConfig(): DefaultConfiguration {\r\n return deepmerge(defaultConfig, {});\r\n}\r\n\r\n/**\r\n * Creates a defensive copy of the minimal config: minimal in respect to naming.\r\n */\r\nexport function getMinimalConfig(): DefaultConfiguration {\r\n const { naming, ...passThrough } = defaultConfig;\r\n return deepmerge(passThrough, { naming: minimalNamingConfig });\r\n}\r\n"]}
|
|
@@ -1,15 +1,48 @@
|
|
|
1
|
+
import { ODataVersions } from "@odata2ts/odata-core";
|
|
1
2
|
import { ImportDeclarationStructure } from "ts-morph";
|
|
2
|
-
import {
|
|
3
|
+
import { DataModel } from "../data-model/DataModel";
|
|
4
|
+
import { ClientApiImports, CoreImports, QueryObjectImports, ServiceImports } from "./import/ImportObjects";
|
|
5
|
+
/**
|
|
6
|
+
* Handles all the import statements for a given file.
|
|
7
|
+
*
|
|
8
|
+
* Features a renaming mechanism, so that when the import name conflicts with an existing import a new
|
|
9
|
+
* name is generated and returned.
|
|
10
|
+
*
|
|
11
|
+
* Map<string,string>
|
|
12
|
+
*/
|
|
3
13
|
export declare class ImportContainer {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
protected path: string;
|
|
15
|
+
protected fileName: string;
|
|
16
|
+
protected dataModel: DataModel;
|
|
17
|
+
protected mainFileNames: {
|
|
18
|
+
model: string;
|
|
19
|
+
qObject: string;
|
|
20
|
+
service: string;
|
|
21
|
+
};
|
|
22
|
+
protected readonly bundledFileGeneration: boolean;
|
|
23
|
+
protected reservedNames: Array<string> | undefined;
|
|
24
|
+
private readonly importedNameValidator;
|
|
25
|
+
private customTypes;
|
|
26
|
+
private internalImports;
|
|
27
|
+
private libs;
|
|
28
|
+
constructor(path: string, fileName: string, dataModel: DataModel, mainFileNames: {
|
|
29
|
+
model: string;
|
|
30
|
+
qObject: string;
|
|
31
|
+
service: string;
|
|
32
|
+
}, bundledFileGeneration: boolean, reservedNames: Array<string> | undefined);
|
|
33
|
+
addCoreLib(odataVersion: ODataVersions, ...coreLibs: Array<CoreImports>): string[];
|
|
34
|
+
addFromQObject(...names: Array<string>): string[];
|
|
35
|
+
addQObject(...qObjects: Array<QueryObjectImports>): string[];
|
|
36
|
+
addClientApi(...clientApis: Array<ClientApiImports>): string[];
|
|
37
|
+
addServiceObject(odataVersion: ODataVersions, ...serviceObjects: Array<ServiceImports>): string[];
|
|
38
|
+
addCustomType(moduleName: string, typeName: string): string;
|
|
39
|
+
private pathAndFile;
|
|
40
|
+
private isDifferentFile;
|
|
41
|
+
private addGeneratedImport;
|
|
42
|
+
addGeneratedModel(fqName: string, name: string): string;
|
|
43
|
+
addGeneratedQObject(fqName: string, name: string): string;
|
|
44
|
+
addGeneratedService(fqName: string, name: string): string;
|
|
14
45
|
getImportDeclarations(fromSubPath?: boolean): Array<ImportDeclarationStructure>;
|
|
46
|
+
private getNamedImports;
|
|
47
|
+
private getModuleSpecifier;
|
|
15
48
|
}
|