@odata2ts/odata2ts 0.33.0 → 0.33.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/lib/FactoryFunctionModel.d.ts +3 -3
  3. package/lib/FactoryFunctionModel.js.map +1 -1
  4. package/lib/OptionModel.d.ts +9 -0
  5. package/lib/OptionModel.js.map +1 -1
  6. package/lib/app.js +18 -8
  7. package/lib/app.js.map +1 -1
  8. package/lib/data-model/DataModel.d.ts +12 -6
  9. package/lib/data-model/DataModel.js +10 -0
  10. package/lib/data-model/DataModel.js.map +1 -1
  11. package/lib/data-model/DataModelDigestion.js +37 -20
  12. package/lib/data-model/DataModelDigestion.js.map +1 -1
  13. package/lib/data-model/DataModelDigestionV4.js +0 -9
  14. package/lib/data-model/DataModelDigestionV4.js.map +1 -1
  15. package/lib/data-model/DataTypeModel.d.ts +17 -7
  16. package/lib/data-model/DataTypeModel.js.map +1 -1
  17. package/lib/data-model/NamingHelper.d.ts +1 -0
  18. package/lib/data-model/NamingHelper.js +4 -1
  19. package/lib/data-model/NamingHelper.js.map +1 -1
  20. package/lib/data-model/ServiceConfigHelper.js +2 -2
  21. package/lib/data-model/ServiceConfigHelper.js.map +1 -1
  22. package/lib/data-model/validation/NameClashValidator.d.ts +23 -0
  23. package/lib/data-model/validation/NameClashValidator.js +89 -0
  24. package/lib/data-model/validation/NameClashValidator.js.map +1 -0
  25. package/lib/data-model/validation/NameValidator.d.ts +6 -17
  26. package/lib/data-model/validation/NameValidator.js +0 -77
  27. package/lib/data-model/validation/NameValidator.js.map +1 -1
  28. package/lib/data-model/validation/NoopValidator.d.ts +12 -0
  29. package/lib/data-model/validation/NoopValidator.js +34 -0
  30. package/lib/data-model/validation/NoopValidator.js.map +1 -0
  31. package/lib/defaultConfig.js +1 -0
  32. package/lib/defaultConfig.js.map +1 -1
  33. package/lib/generator/ImportContainer.d.ts +44 -11
  34. package/lib/generator/ImportContainer.js +150 -47
  35. package/lib/generator/ImportContainer.js.map +1 -1
  36. package/lib/generator/ImportedNameValidator.d.ts +5 -0
  37. package/lib/generator/ImportedNameValidator.js +26 -0
  38. package/lib/generator/ImportedNameValidator.js.map +1 -0
  39. package/lib/generator/ModelGenerator.js +113 -72
  40. package/lib/generator/ModelGenerator.js.map +1 -1
  41. package/lib/generator/QueryObjectGenerator.js +134 -107
  42. package/lib/generator/QueryObjectGenerator.js.map +1 -1
  43. package/lib/generator/ServiceGenerator.d.ts +1 -1
  44. package/lib/generator/ServiceGenerator.js +160 -161
  45. package/lib/generator/ServiceGenerator.js.map +1 -1
  46. package/lib/generator/import/ImportObjects.d.ts +66 -0
  47. package/lib/generator/import/ImportObjects.js +83 -0
  48. package/lib/generator/import/ImportObjects.js.map +1 -0
  49. package/lib/project/FileHandler.d.ts +28 -0
  50. package/lib/project/FileHandler.js +66 -0
  51. package/lib/project/FileHandler.js.map +1 -0
  52. package/lib/project/ProjectManager.d.ts +44 -18
  53. package/lib/project/ProjectManager.js +155 -111
  54. package/lib/project/ProjectManager.js.map +1 -1
  55. package/lib/project/TsMorphHelper.d.ts +11 -0
  56. package/lib/project/TsMorphHelper.js +66 -0
  57. package/lib/project/TsMorphHelper.js.map +1 -0
  58. package/package.json +10 -8
@@ -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 ValidationError {
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":"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","sourcesContent":["import { ConfigFileOptions } from \"../../OptionModel\";\nimport { TypeModel } from \"../../TypeModel\";\n\nexport interface ValidationError {\n fqName: string;\n type: TypeModel;\n renamedTo?: string;\n}\n\nexport interface NameValidatorOptions extends Pick<ConfigFileOptions, \"disableAutomaticNameClashResolution\"> {}\n\nexport class NameValidator {\n private entityContainer = new Map<string, ValidationError>();\n private store = new Map<string, ValidationError>();\n private errors = new Map<string, ValidationError[]>();\n\n constructor(private options: NameValidatorOptions = {}) {}\n\n private addToError(name: string, hit: ValidationError, validationObject: ValidationError) {\n const existingErrors = this.errors.get(name);\n if (existingErrors) {\n if (!this.options.disableAutomaticNameClashResolution) {\n validationObject.renamedTo = `${name}${existingErrors.length + 1}`;\n }\n existingErrors.push(validationObject);\n } else {\n if (!this.options.disableAutomaticNameClashResolution) {\n validationObject.renamedTo = `${name}2`;\n }\n this.errors.set(name, [hit, validationObject]);\n }\n return validationObject.renamedTo ?? name;\n }\n\n private addToTypes(fqName: string, name: string, type: TypeModel): string {\n const validationObject: ValidationError = { type, fqName };\n const hit = this.store.get(name);\n if (hit) {\n return this.addToError(name, hit, validationObject);\n } else {\n this.store.set(name, validationObject);\n return name;\n }\n }\n\n private addToEntityContainer(fqName: string, name: string, type: TypeModel): string {\n const validationObject: ValidationError = { type, fqName };\n const hit = this.entityContainer.get(name);\n if (hit) {\n return this.addToError(name, hit, validationObject);\n } else {\n this.entityContainer.set(name, validationObject);\n return name;\n }\n }\n\n public addEntityType(fqName: string, name: string) {\n return this.addToTypes(fqName, name, TypeModel.EntityType);\n }\n public addComplexType(fqName: string, name: string) {\n return this.addToTypes(fqName, name, TypeModel.ComplexType);\n }\n public addEnumType(fqName: string, name: string) {\n return this.addToTypes(fqName, name, TypeModel.EnumType);\n }\n public addUnboundOperationType(fqName: string, name: string) {\n return this.addToTypes(fqName, name, TypeModel.OperationType);\n }\n public addBoundOperationType(bindingName: string, fqName: string, name: string) {\n return this.addToTypes(`${bindingName}_${fqName}`, name, TypeModel.OperationType);\n }\n public addOperationImportType(fqName: string, name: string) {\n return this.addToEntityContainer(fqName, name, TypeModel.OperationImportType);\n }\n public addEntitySet(fqName: string, name: string) {\n return this.addToEntityContainer(fqName, name, TypeModel.EntitySet);\n }\n public addSingleton(fqName: string, name: string) {\n return this.addToEntityContainer(fqName, name, TypeModel.Singleton);\n }\n\n public validate() {\n return this.errors;\n }\n}\n"]}
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"]}
@@ -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,
@@ -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 { ProjectFiles } from "../data-model/DataModel";
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
- private mapping;
5
- private container;
6
- constructor(fileNames: ProjectFiles);
7
- addFromCore(...names: Array<string>): void;
8
- addFromQObject(...names: Array<string>): void;
9
- addFromClientApi(...names: Array<string>): void;
10
- addFromService(...names: Array<string>): void;
11
- addGeneratedModel(...names: Array<string>): void;
12
- addGeneratedQObject(...names: Array<string>): void;
13
- addCustomType(moduleName: string, typeName: string): void;
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
  }
@@ -2,76 +2,179 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ImportContainer = void 0;
4
4
  const tslib_1 = require("tslib");
5
+ const path_1 = tslib_1.__importDefault(require("path"));
6
+ const odata_core_1 = require("@odata2ts/odata-core");
7
+ const ImportObjects_1 = require("./import/ImportObjects");
8
+ const ImportedNameValidator_1 = require("./ImportedNameValidator");
9
+ /**
10
+ * Handles all the import statements for a given file.
11
+ *
12
+ * Features a renaming mechanism, so that when the import name conflicts with an existing import a new
13
+ * name is generated and returned.
14
+ *
15
+ * Map<string,string>
16
+ */
5
17
  class ImportContainer {
6
- constructor(fileNames) {
7
- this.mapping = {
8
- core: { moduleName: "@odata2ts/odata-core", isRelative: false },
9
- qobjects: { moduleName: "@odata2ts/odata-query-objects", isRelative: false },
10
- clientApi: { moduleName: "@odata2ts/http-client-api", isRelative: false },
11
- service: { moduleName: "@odata2ts/odata-service", isRelative: false },
12
- genModel: { moduleName: "", isRelative: true },
13
- genQObjects: { moduleName: "", isRelative: true },
18
+ constructor(path, fileName, dataModel, mainFileNames, bundledFileGeneration, reservedNames) {
19
+ this.path = path;
20
+ this.fileName = fileName;
21
+ this.dataModel = dataModel;
22
+ this.mainFileNames = mainFileNames;
23
+ this.bundledFileGeneration = bundledFileGeneration;
24
+ this.reservedNames = reservedNames;
25
+ // mapping of a custom defined type to a primitive type
26
+ this.customTypes = new Map();
27
+ // imports to generated artefacts
28
+ this.internalImports = new Map();
29
+ this.libs = {
30
+ core: new Map(),
31
+ qObject: new Map(),
32
+ clientApi: new Map(),
33
+ service: new Map(),
14
34
  };
15
- this.container = {
16
- core: new Set(),
17
- qobjects: new Set(),
18
- clientApi: new Set(),
19
- service: new Set(),
20
- genModel: new Set(),
21
- genQObjects: new Set(),
22
- customTypes: new Map(),
23
- };
24
- this.mapping.genModel.moduleName = fileNames.model;
25
- this.mapping.genQObjects.moduleName = fileNames.qObject;
35
+ this.importedNameValidator = new ImportedNameValidator_1.ImportedNameValidator(reservedNames);
26
36
  }
27
- addFromCore(...names) {
28
- names.forEach((n) => this.container.core.add(n));
37
+ addCoreLib(odataVersion, ...coreLibs) {
38
+ return coreLibs.map((coreLib) => {
39
+ const name = ImportObjects_1.CoreImports[coreLib] + (ImportObjects_1.VERSIONED_CORE_IMPORTS.includes(coreLib) ? odata_core_1.ODataVersions[odataVersion] : "");
40
+ const importName = this.importedNameValidator.validateName(ImportObjects_1.LIB_MODULES.core, name);
41
+ this.libs.core.set(name, importName);
42
+ return importName;
43
+ });
29
44
  }
30
45
  addFromQObject(...names) {
31
- names.forEach((n) => this.container.qobjects.add(n));
32
- }
33
- addFromClientApi(...names) {
34
- names.forEach((n) => this.container.clientApi.add(n));
46
+ return names.map((n) => {
47
+ const importName = this.importedNameValidator.validateName(ImportObjects_1.LIB_MODULES.qObject, n);
48
+ this.libs.qObject.set(n, importName);
49
+ return importName;
50
+ });
35
51
  }
36
- addFromService(...names) {
37
- names.forEach((n) => this.container.service.add(n));
52
+ addQObject(...qObjects) {
53
+ return this.addFromQObject(...qObjects.map((qObject) => ImportObjects_1.QueryObjectImports[qObject]));
38
54
  }
39
- addGeneratedModel(...names) {
40
- names.forEach((n) => this.container.genModel.add(n));
55
+ addClientApi(...clientApis) {
56
+ return clientApis.map((clientApi) => {
57
+ const name = ImportObjects_1.ClientApiImports[clientApi];
58
+ const importName = this.importedNameValidator.validateName(ImportObjects_1.LIB_MODULES.clientApi, name);
59
+ this.libs.clientApi.set(name, importName);
60
+ return importName;
61
+ });
41
62
  }
42
- addGeneratedQObject(...names) {
43
- names.forEach((n) => this.container.genQObjects.add(n));
63
+ addServiceObject(odataVersion, ...serviceObjects) {
64
+ return serviceObjects
65
+ .map((so) => {
66
+ return ImportObjects_1.ServiceImports[so] + (ImportObjects_1.VERSIONED_SERVICE_IMPORTS.includes(so) ? odata_core_1.ODataVersions[odataVersion] : "");
67
+ })
68
+ .map((so) => {
69
+ const importName = this.importedNameValidator.validateName(ImportObjects_1.LIB_MODULES.service, so);
70
+ this.libs.service.set(so, importName);
71
+ return importName;
72
+ });
44
73
  }
45
74
  addCustomType(moduleName, typeName) {
46
- let importList = this.container.customTypes.get(moduleName);
75
+ let importList = this.customTypes.get(moduleName);
47
76
  if (!importList) {
48
- importList = new Set();
49
- this.container.customTypes.set(moduleName, importList);
77
+ importList = new Map();
78
+ this.customTypes.set(moduleName, importList);
79
+ }
80
+ const importName = this.importedNameValidator.validateName(moduleName, typeName);
81
+ importList.set(typeName, importName);
82
+ return importName;
83
+ }
84
+ pathAndFile(filePath, fileName) {
85
+ return filePath ? `${filePath}/${fileName}` : fileName;
86
+ }
87
+ isDifferentFile(filePath, fileName) {
88
+ return this.pathAndFile(this.path, this.fileName) !== this.pathAndFile(filePath, fileName);
89
+ }
90
+ addGeneratedImport(folderPath, fileName, name) {
91
+ // imports are only relevant for different files
92
+ if (!this.isDifferentFile(folderPath, fileName)) {
93
+ return name;
94
+ }
95
+ const moduleName = this.pathAndFile(folderPath, fileName);
96
+ const importName = this.importedNameValidator.validateName(moduleName, name);
97
+ const imports = this.internalImports.get(moduleName) || new Map();
98
+ imports.set(name, importName);
99
+ this.internalImports.set(moduleName, imports);
100
+ return importName;
101
+ }
102
+ addGeneratedModel(fqName, name) {
103
+ if (this.bundledFileGeneration) {
104
+ return this.addGeneratedImport("", this.mainFileNames.model, name);
105
+ }
106
+ else {
107
+ const model = this.dataModel.getModel(fqName);
108
+ if (!model && fqName !== "") {
109
+ throw new Error(`Cannot find model by its fully qualified name: ${fqName}!`);
110
+ }
111
+ const folderPath = model ? model.folderPath : "";
112
+ const modelName = model ? model.modelName : this.mainFileNames.model;
113
+ return this.addGeneratedImport(folderPath, modelName, name);
114
+ }
115
+ }
116
+ addGeneratedQObject(fqName, name) {
117
+ if (this.bundledFileGeneration) {
118
+ return this.addGeneratedImport("", this.mainFileNames.qObject, name);
119
+ }
120
+ else {
121
+ const model = this.dataModel.getModel(fqName);
122
+ if (!model && fqName !== "") {
123
+ throw new Error(`Cannot find q-object by its fully qualified name: ${fqName}!`);
124
+ }
125
+ const folderPath = model ? model.folderPath : "";
126
+ const qName = model ? model.qName : this.mainFileNames.qObject;
127
+ return this.addGeneratedImport(folderPath, qName, name);
128
+ }
129
+ }
130
+ addGeneratedService(fqName, name) {
131
+ if (this.bundledFileGeneration) {
132
+ return this.addGeneratedImport("", this.mainFileNames.service, name);
133
+ }
134
+ else {
135
+ const model = this.dataModel.getModel(fqName);
136
+ return this.addGeneratedImport(model.folderPath, model.serviceName, name);
50
137
  }
51
- importList.add(typeName);
52
138
  }
53
139
  getImportDeclarations(fromSubPath = false) {
54
- const _a = this.container, { customTypes } = _a, standardImports = tslib_1.__rest(_a, ["customTypes"]);
55
140
  return [
56
- ...[...customTypes.keys()]
57
- .filter((key) => { var _a; return !!((_a = customTypes.get(key)) === null || _a === void 0 ? void 0 : _a.size); })
58
- .map((key) => {
141
+ ...Object.entries(this.libs)
142
+ .filter(([_, values]) => !!values.size)
143
+ .map(([moduleName, toImport]) => {
59
144
  return {
60
- namedImports: [...customTypes.get(key)],
61
- moduleSpecifier: key,
145
+ namedImports: this.getNamedImports(toImport),
146
+ moduleSpecifier: ImportObjects_1.LIB_MODULES[moduleName],
62
147
  };
63
148
  }),
64
- ...Object.entries(standardImports)
65
- .filter(([_, values]) => !!values.size)
66
- .map(([key, values]) => {
67
- const mapping = this.mapping[key];
149
+ ...[...this.customTypes.keys()]
150
+ .filter((moduleName) => { var _a; return !!((_a = this.customTypes.get(moduleName)) === null || _a === void 0 ? void 0 : _a.size); })
151
+ .map((moduleName) => {
152
+ const toImport = this.customTypes.get(moduleName);
68
153
  return {
69
- namedImports: [...values],
70
- moduleSpecifier: `${mapping.isRelative ? `${fromSubPath ? ".." : "."}/` : ""}${mapping.moduleName}`,
154
+ namedImports: this.getNamedImports(toImport),
155
+ moduleSpecifier: moduleName,
156
+ };
157
+ }),
158
+ ...[...this.internalImports.entries()]
159
+ .filter(([_, toImport]) => toImport.size > 0)
160
+ .map(([key, toImport]) => {
161
+ return {
162
+ namedImports: this.getNamedImports(toImport),
163
+ moduleSpecifier: this.getModuleSpecifier(key),
71
164
  };
72
165
  }),
73
166
  ];
74
167
  }
168
+ getNamedImports(toImport) {
169
+ return [...toImport.entries()].map(([name, alias]) => ({
170
+ name,
171
+ alias: alias !== name ? alias : undefined,
172
+ }));
173
+ }
174
+ getModuleSpecifier(filePath) {
175
+ const relativePath = path_1.default.relative(this.path, filePath).replaceAll(path_1.default.sep, "/");
176
+ return !relativePath.startsWith(".") ? "./" + relativePath : relativePath;
177
+ }
75
178
  }
76
179
  exports.ImportContainer = ImportContainer;
77
180
  //# sourceMappingURL=ImportContainer.js.map