@odata2ts/odata2ts 0.36.3 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/lib/FactoryFunctionModel.d.ts +7 -7
  3. package/lib/FactoryFunctionModel.js +1 -2
  4. package/lib/FactoryFunctionModel.js.map +1 -1
  5. package/lib/NamingModel.js +2 -5
  6. package/lib/NamingModel.js.map +1 -1
  7. package/lib/OptionModel.d.ts +7 -2
  8. package/lib/OptionModel.js +4 -7
  9. package/lib/OptionModel.js.map +1 -1
  10. package/lib/TypeModel.js +2 -5
  11. package/lib/TypeModel.js.map +1 -1
  12. package/lib/app.d.ts +2 -2
  13. package/lib/app.js +23 -27
  14. package/lib/app.js.map +1 -1
  15. package/lib/cli/cli.d.ts +1 -0
  16. package/lib/cli/cli.js +27 -0
  17. package/lib/cli/cli.js.map +1 -0
  18. package/lib/cli/index.d.ts +4 -0
  19. package/lib/cli/index.js +5 -0
  20. package/lib/cli/index.js.map +1 -0
  21. package/lib/cli/processCliArgs.d.ts +2 -0
  22. package/lib/cli/processCliArgs.js +57 -0
  23. package/lib/cli/processCliArgs.js.map +1 -0
  24. package/lib/cli/processConfigFile.d.ts +2 -0
  25. package/lib/cli/processConfigFile.js +24 -0
  26. package/lib/cli/processConfigFile.js.map +1 -0
  27. package/lib/cli/serviceGenerationRun.d.ts +2 -0
  28. package/lib/cli/serviceGenerationRun.js +77 -0
  29. package/lib/cli/serviceGenerationRun.js.map +1 -0
  30. package/lib/data-model/DataModel.d.ts +2 -2
  31. package/lib/data-model/DataModel.js +5 -10
  32. package/lib/data-model/DataModel.js.map +1 -1
  33. package/lib/data-model/DataModelDigestion.d.ts +10 -10
  34. package/lib/data-model/DataModelDigestion.js +27 -27
  35. package/lib/data-model/DataModelDigestion.js.map +1 -1
  36. package/lib/data-model/DataModelDigestionV2.d.ts +2 -2
  37. package/lib/data-model/DataModelDigestionV2.js +27 -31
  38. package/lib/data-model/DataModelDigestionV2.js.map +1 -1
  39. package/lib/data-model/DataModelDigestionV4.d.ts +2 -2
  40. package/lib/data-model/DataModelDigestionV4.js +33 -37
  41. package/lib/data-model/DataModelDigestionV4.js.map +1 -1
  42. package/lib/data-model/DataTypeModel.d.ts +5 -2
  43. package/lib/data-model/DataTypeModel.js +2 -5
  44. package/lib/data-model/DataTypeModel.js.map +1 -1
  45. package/lib/data-model/NamingHelper.d.ts +2 -2
  46. package/lib/data-model/NamingHelper.js +12 -19
  47. package/lib/data-model/NamingHelper.js.map +1 -1
  48. package/lib/data-model/ServiceConfigHelper.d.ts +3 -3
  49. package/lib/data-model/ServiceConfigHelper.js +18 -22
  50. package/lib/data-model/ServiceConfigHelper.js.map +1 -1
  51. package/lib/data-model/edmx/ODataEdmxModelBase.js +1 -2
  52. package/lib/data-model/edmx/ODataEdmxModelV3.d.ts +1 -1
  53. package/lib/data-model/edmx/ODataEdmxModelV3.js +1 -2
  54. package/lib/data-model/edmx/ODataEdmxModelV3.js.map +1 -1
  55. package/lib/data-model/edmx/ODataEdmxModelV4.d.ts +1 -1
  56. package/lib/data-model/edmx/ODataEdmxModelV4.js +1 -2
  57. package/lib/data-model/edmx/ODataEdmxModelV4.js.map +1 -1
  58. package/lib/data-model/validation/NameClashValidator.d.ts +5 -4
  59. package/lib/data-model/validation/NameClashValidator.js +16 -18
  60. package/lib/data-model/validation/NameClashValidator.js.map +1 -1
  61. package/lib/data-model/validation/NameValidator.d.ts +3 -2
  62. package/lib/data-model/validation/NameValidator.js +1 -2
  63. package/lib/data-model/validation/NameValidator.js.map +1 -1
  64. package/lib/data-model/validation/NoopValidator.d.ts +4 -3
  65. package/lib/data-model/validation/NoopValidator.js +5 -9
  66. package/lib/data-model/validation/NoopValidator.js.map +1 -1
  67. package/lib/defaultConfig.d.ts +1 -1
  68. package/lib/defaultConfig.js +22 -26
  69. package/lib/defaultConfig.js.map +1 -1
  70. package/lib/download/downloadMetadata.d.ts +1 -1
  71. package/lib/download/downloadMetadata.js +6 -10
  72. package/lib/download/downloadMetadata.js.map +1 -1
  73. package/lib/download/index.d.ts +2 -2
  74. package/lib/download/index.js +2 -7
  75. package/lib/download/index.js.map +1 -1
  76. package/lib/download/storeMetadata.js +15 -17
  77. package/lib/download/storeMetadata.js.map +1 -1
  78. package/lib/evaluateConfig.d.ts +1 -1
  79. package/lib/evaluateConfig.js +14 -18
  80. package/lib/evaluateConfig.js.map +1 -1
  81. package/lib/generator/ImportContainer.d.ts +3 -3
  82. package/lib/generator/ImportContainer.js +40 -27
  83. package/lib/generator/ImportContainer.js.map +1 -1
  84. package/lib/generator/ImportedNameValidator.js +1 -5
  85. package/lib/generator/ImportedNameValidator.js.map +1 -1
  86. package/lib/generator/ModelGenerator.d.ts +1 -1
  87. package/lib/generator/ModelGenerator.js +13 -13
  88. package/lib/generator/ModelGenerator.js.map +1 -1
  89. package/lib/generator/QueryObjectGenerator.d.ts +1 -1
  90. package/lib/generator/QueryObjectGenerator.js +41 -31
  91. package/lib/generator/QueryObjectGenerator.js.map +1 -1
  92. package/lib/generator/ServiceGenerator.d.ts +5 -5
  93. package/lib/generator/ServiceGenerator.js +62 -65
  94. package/lib/generator/ServiceGenerator.js.map +1 -1
  95. package/lib/generator/import/ImportObjects.d.ts +3 -1
  96. package/lib/generator/import/ImportObjects.js +14 -15
  97. package/lib/generator/import/ImportObjects.js.map +1 -1
  98. package/lib/generator/index.d.ts +3 -3
  99. package/lib/generator/index.js +3 -9
  100. package/lib/generator/index.js.map +1 -1
  101. package/lib/index.d.ts +4 -4
  102. package/lib/index.js +4 -7
  103. package/lib/index.js.map +1 -1
  104. package/lib/project/FileHandler.d.ts +3 -3
  105. package/lib/project/FileHandler.js +12 -16
  106. package/lib/project/FileHandler.js.map +1 -1
  107. package/lib/project/ProjectManager.d.ts +5 -5
  108. package/lib/project/ProjectManager.js +25 -32
  109. package/lib/project/ProjectManager.js.map +1 -1
  110. package/lib/project/TsMorphHelper.d.ts +1 -1
  111. package/lib/project/TsMorphHelper.js +21 -22
  112. package/lib/project/TsMorphHelper.js.map +1 -1
  113. package/lib/project/formatter/BaseFormatter.d.ts +1 -1
  114. package/lib/project/formatter/BaseFormatter.js +1 -5
  115. package/lib/project/formatter/BaseFormatter.js.map +1 -1
  116. package/lib/project/formatter/FileFormatter.js +1 -2
  117. package/lib/project/formatter/NoopFormatter.d.ts +1 -1
  118. package/lib/project/formatter/NoopFormatter.js +5 -9
  119. package/lib/project/formatter/NoopFormatter.js.map +1 -1
  120. package/lib/project/formatter/PrettierFormatter.d.ts +1 -1
  121. package/lib/project/formatter/PrettierFormatter.js +20 -25
  122. package/lib/project/formatter/PrettierFormatter.js.map +1 -1
  123. package/lib/project/formatter/index.d.ts +1 -1
  124. package/lib/project/formatter/index.js +6 -10
  125. package/lib/project/formatter/index.js.map +1 -1
  126. package/lib/project/logger/logFilePath.js +4 -9
  127. package/lib/project/logger/logFilePath.js.map +1 -1
  128. package/lib/run-cli.js +2 -4
  129. package/lib/run-cli.js.map +1 -1
  130. package/package.json +55 -64
  131. package/lib/cli.d.ts +0 -3
  132. package/lib/cli.js +0 -176
  133. package/lib/cli.js.map +0 -1
@@ -1,28 +1,24 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ProjectManager = exports.createProjectManager = void 0;
4
- const tslib_1 = require("tslib");
5
- const path = tslib_1.__importStar(require("path"));
6
- const fs_extra_1 = require("fs-extra");
7
- const ts_morph_1 = require("ts-morph");
8
- const processors_1 = require("xml2js/lib/processors");
9
- const ImportContainer_1 = require("../generator/ImportContainer");
10
- const FileHandler_1 = require("./FileHandler");
11
- const formatter_1 = require("./formatter");
12
- const TsMorphHelper_1 = require("./TsMorphHelper");
13
- function createProjectManager(outputDir, emitMode, namingHelper, dataModel, options) {
14
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
1
+ import { __awaiter } from "tslib";
2
+ import * as path from "path";
3
+ import { mkdirp } from "mkdirp";
4
+ import { Project } from "ts-morph";
5
+ import { firstCharLowerCase } from "xml2js/lib/processors.js";
6
+ import { ImportContainer } from "../generator/ImportContainer.js";
7
+ import { FileHandler } from "./FileHandler.js";
8
+ import { createFormatter } from "./formatter/index.js";
9
+ import { loadTsMorphCompilerOptions } from "./TsMorphHelper.js";
10
+ export function createProjectManager(outputDir, emitMode, namingHelper, dataModel, options) {
11
+ return __awaiter(this, void 0, void 0, function* () {
15
12
  const { usePrettier = false, tsConfigPath = "tsconfig.json" } = options;
16
- const formatter = usePrettier ? yield (0, formatter_1.createFormatter)(outputDir, usePrettier) : undefined;
17
- const compilerOpts = yield (0, TsMorphHelper_1.loadTsMorphCompilerOptions)(tsConfigPath, emitMode, outputDir);
13
+ const formatter = usePrettier ? yield createFormatter(outputDir, usePrettier) : undefined;
14
+ const compilerOpts = yield loadTsMorphCompilerOptions(tsConfigPath, emitMode, outputDir);
18
15
  const pm = new ProjectManager(outputDir, emitMode, namingHelper, dataModel, formatter, compilerOpts, Object.assign({ usePrettier,
19
16
  tsConfigPath }, options));
20
17
  yield pm.init();
21
18
  return pm;
22
19
  });
23
20
  }
24
- exports.createProjectManager = createProjectManager;
25
- class ProjectManager {
21
+ export class ProjectManager {
26
22
  constructor(outputDir, emitMode, namingHelper, dataModel, formatter, compilerOptions, options) {
27
23
  this.outputDir = outputDir;
28
24
  this.emitMode = emitMode;
@@ -31,7 +27,7 @@ class ProjectManager {
31
27
  this.formatter = formatter;
32
28
  this.options = options;
33
29
  // Create ts-morph project
34
- this.project = new ts_morph_1.Project({
30
+ this.project = new Project({
35
31
  // manipulationSettings: this.formatter.getSettings(),
36
32
  skipAddingFilesFromTsConfig: true,
37
33
  compilerOptions,
@@ -50,7 +46,7 @@ class ProjectManager {
50
46
  return this.cachedFiles;
51
47
  }
52
48
  writeFile(fileHandler) {
53
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
49
+ return __awaiter(this, void 0, void 0, function* () {
54
50
  if (this.options.noOutput) {
55
51
  yield fileHandler.write(this.emitMode, true);
56
52
  this.cachedFiles.set(fileHandler.getFullFilePath(), fileHandler.getFile());
@@ -61,17 +57,15 @@ class ProjectManager {
61
57
  }
62
58
  createFile(name, reservedNames, additionalPath = "", forceTypeChecking = false) {
63
59
  const fileName = path.join(this.outputDir, additionalPath, `${name}.ts`);
64
- const imports = new ImportContainer_1.ImportContainer(additionalPath, name, this.dataModel, this.namingHelper.getFileNames(), !!this.options.bundledFileGeneration, reservedNames);
65
- return new FileHandler_1.FileHandler(additionalPath, name, this.project.createSourceFile(fileName), imports, this.formatter, forceTypeChecking || !!this.options.allowTypeChecking);
60
+ const imports = new ImportContainer(additionalPath, name, this.dataModel, this.namingHelper.getFileNames(), !!this.options.bundledFileGeneration, reservedNames);
61
+ return new FileHandler(additionalPath, name, this.project.createSourceFile(fileName), imports, this.formatter, forceTypeChecking || !!this.options.allowTypeChecking);
66
62
  }
67
63
  init() {
68
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
64
+ return __awaiter(this, void 0, void 0, function* () {
69
65
  if (!this.options.bundledFileGeneration) {
70
66
  // ensure folder for each model: we do this at this point for performance reasons
71
- yield Promise.all(this.dataModel.getModelTypes().map((mt) => (0, fs_extra_1.ensureDir)(path.join(this.outputDir, mt.folderPath))));
67
+ yield Promise.all(this.dataModel.getModelTypes().map((mt) => mkdirp(path.join(this.outputDir, mt.folderPath))));
72
68
  }
73
- const typePart = this.emitMode.toUpperCase().replace("_", " & ");
74
- console.log(`Prepared to emit ${typePart} files.`);
75
69
  });
76
70
  }
77
71
  initModels() {
@@ -103,7 +97,7 @@ class ProjectManager {
103
97
  }
104
98
  }
105
99
  finalizeModels() {
106
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
100
+ return __awaiter(this, void 0, void 0, function* () {
107
101
  if (this.mainModelFile &&
108
102
  (this.options.bundledFileGeneration || this.mainModelFile.getFile().getFullText().length)) {
109
103
  yield this.writeFile(this.mainModelFile);
@@ -117,7 +111,7 @@ class ProjectManager {
117
111
  var _a;
118
112
  const asEntityType = model;
119
113
  if (asEntityType.qName) {
120
- collector.push(asEntityType.qName, (0, processors_1.firstCharLowerCase)(asEntityType.qName));
114
+ collector.push(asEntityType.qName, firstCharLowerCase(asEntityType.qName));
121
115
  }
122
116
  if ((_a = asEntityType.id) === null || _a === void 0 ? void 0 : _a.qName) {
123
117
  collector.push(asEntityType.id.qName);
@@ -134,7 +128,7 @@ class ProjectManager {
134
128
  }
135
129
  }
136
130
  finalizeQObjects() {
137
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
131
+ return __awaiter(this, void 0, void 0, function* () {
138
132
  if (this.mainQFile && (this.options.bundledFileGeneration || this.mainQFile.getFile().getFullText().length)) {
139
133
  yield this.writeFile(this.mainQFile);
140
134
  }
@@ -152,7 +146,7 @@ class ProjectManager {
152
146
  this.mainServiceFile = this.createFile(mainServiceName, reservedNames);
153
147
  }
154
148
  finalizeServices() {
155
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
149
+ return __awaiter(this, void 0, void 0, function* () {
156
150
  if (this.mainServiceFile) {
157
151
  yield this.writeFile(this.mainServiceFile);
158
152
  }
@@ -193,7 +187,7 @@ class ProjectManager {
193
187
  return this.createFile(name, reservedNames, folderPath);
194
188
  }
195
189
  finalizeFile(file) {
196
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
190
+ return __awaiter(this, void 0, void 0, function* () {
197
191
  // write individual files in unbundled mode & if this is not one of the main files on root level
198
192
  if (!this.options.bundledFileGeneration &&
199
193
  file.path !== "" &&
@@ -203,5 +197,4 @@ class ProjectManager {
203
197
  });
204
198
  }
205
199
  }
206
- exports.ProjectManager = ProjectManager;
207
200
  //# sourceMappingURL=ProjectManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectManager.js","sourceRoot":"","sources":["../../src/project/ProjectManager.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from \"path\";\r\n\r\nimport { ensureDir } from \"fs-extra\";\r\nimport { CompilerOptions, Project, SourceFile } from \"ts-morph\";\r\nimport { firstCharLowerCase } from \"xml2js/lib/processors\";\r\n\r\nimport { DataModel } from \"../data-model/DataModel\";\r\nimport { EntityType } from \"../data-model/DataTypeModel\";\r\nimport { NamingHelper } from \"../data-model/NamingHelper\";\r\nimport { ImportContainer } from \"../generator/ImportContainer\";\r\nimport { EmitModes } from \"../OptionModel\";\r\nimport { FileHandler } from \"./FileHandler\";\r\nimport { createFormatter } from \"./formatter\";\r\nimport { FileFormatter } from \"./formatter/FileFormatter\";\r\nimport { loadTsMorphCompilerOptions } from \"./TsMorphHelper\";\r\n\r\nexport interface ProjectManagerOptions {\r\n usePrettier?: boolean;\r\n tsConfigPath?: string;\r\n bundledFileGeneration?: boolean;\r\n /**\r\n * for testing purposes, turn this on and retrieve all generated files via getCachedFiles\r\n */\r\n noOutput?: boolean;\r\n allowTypeChecking?: boolean;\r\n}\r\n\r\nexport async function createProjectManager(\r\n outputDir: string,\r\n emitMode: EmitModes,\r\n namingHelper: NamingHelper,\r\n dataModel: DataModel,\r\n options: ProjectManagerOptions\r\n): Promise<ProjectManager> {\r\n const { usePrettier = false, tsConfigPath = \"tsconfig.json\" } = options;\r\n const formatter = usePrettier ? await createFormatter(outputDir, usePrettier) : undefined;\r\n\r\n const compilerOpts: CompilerOptions = await loadTsMorphCompilerOptions(tsConfigPath, emitMode, outputDir);\r\n\r\n const pm = new ProjectManager(outputDir, emitMode, namingHelper, dataModel, formatter, compilerOpts, {\r\n usePrettier,\r\n tsConfigPath,\r\n ...options,\r\n });\r\n\r\n await pm.init();\r\n\r\n return pm;\r\n}\r\n\r\nexport class ProjectManager {\r\n private project!: Project;\r\n\r\n private mainServiceFile: FileHandler | undefined;\r\n private mainModelFile: FileHandler | undefined;\r\n private mainQFile: FileHandler | undefined;\r\n\r\n private readonly cachedFiles: Map<string, SourceFile> | undefined;\r\n\r\n constructor(\r\n protected outputDir: string,\r\n protected emitMode: EmitModes,\r\n protected namingHelper: NamingHelper,\r\n protected dataModel: DataModel,\r\n protected formatter: FileFormatter | undefined,\r\n compilerOptions: CompilerOptions | undefined,\r\n protected options: ProjectManagerOptions\r\n ) {\r\n // Create ts-morph project\r\n this.project = new Project({\r\n // manipulationSettings: this.formatter.getSettings(),\r\n skipAddingFilesFromTsConfig: true,\r\n compilerOptions,\r\n });\r\n\r\n if (options.noOutput) {\r\n this.cachedFiles = new Map();\r\n }\r\n }\r\n\r\n public getDataModel() {\r\n return this.dataModel;\r\n }\r\n\r\n /**\r\n * Only filled when noOutput=true\r\n */\r\n public getCachedFiles() {\r\n return this.cachedFiles!;\r\n }\r\n\r\n private async writeFile(fileHandler: FileHandler) {\r\n if (this.options.noOutput) {\r\n await fileHandler.write(this.emitMode, true);\r\n this.cachedFiles!.set(fileHandler.getFullFilePath(), fileHandler.getFile());\r\n\r\n return;\r\n }\r\n\r\n return fileHandler.write(this.emitMode);\r\n }\r\n\r\n private createFile(\r\n name: string,\r\n reservedNames?: Array<string> | undefined,\r\n additionalPath: string = \"\",\r\n forceTypeChecking = false\r\n ): FileHandler {\r\n const fileName = path.join(this.outputDir, additionalPath, `${name}.ts`);\r\n const imports = new ImportContainer(\r\n additionalPath,\r\n name,\r\n this.dataModel,\r\n this.namingHelper.getFileNames(),\r\n !!this.options.bundledFileGeneration,\r\n reservedNames\r\n );\r\n\r\n return new FileHandler(\r\n additionalPath,\r\n name,\r\n this.project.createSourceFile(fileName),\r\n imports,\r\n this.formatter,\r\n forceTypeChecking || !!this.options.allowTypeChecking\r\n );\r\n }\r\n\r\n public async init() {\r\n if (!this.options.bundledFileGeneration) {\r\n // ensure folder for each model: we do this at this point for performance reasons\r\n await Promise.all(\r\n this.dataModel.getModelTypes().map((mt) => ensureDir(path.join(this.outputDir, mt.folderPath)))\r\n );\r\n }\r\n\r\n const typePart = this.emitMode.toUpperCase().replace(\"_\", \" & \");\r\n console.log(`Prepared to emit ${typePart} files.`);\r\n }\r\n\r\n public initModels() {\r\n if (this.options.bundledFileGeneration) {\r\n // collect reserved names, that is names of classes we're going to create => imports must take them into account\r\n const reservedWords = this.dataModel.getModelTypes().reduce<Array<string>>((collector, model) => {\r\n const asEntityType = model as EntityType;\r\n collector.push(model.modelName);\r\n if (asEntityType.editableName) {\r\n collector.push(asEntityType.editableName);\r\n }\r\n if (asEntityType.id?.modelName) {\r\n collector.push(asEntityType.id.modelName);\r\n }\r\n this.dataModel.getAllEntityOperations(model.fqName).forEach((op) => {\r\n if (op.parameters.length) {\r\n collector.push(op.paramsModelName);\r\n }\r\n });\r\n\r\n return collector;\r\n }, []);\r\n this.dataModel.getUnboundOperationTypes().forEach((op) => {\r\n if (op.parameters.length) {\r\n reservedWords.push(op.paramsModelName);\r\n }\r\n });\r\n\r\n this.mainModelFile = this.createFile(this.namingHelper.getFileNames().model, reservedWords);\r\n }\r\n }\r\n\r\n public async finalizeModels() {\r\n if (\r\n this.mainModelFile &&\r\n (this.options.bundledFileGeneration || this.mainModelFile.getFile().getFullText().length)\r\n ) {\r\n await this.writeFile(this.mainModelFile);\r\n }\r\n }\r\n\r\n public initQObjects() {\r\n if (this.options.bundledFileGeneration) {\r\n // collect reserved names, that is names of classes we're going to create => imports must take them into account\r\n const reservedWords = this.dataModel.getModelTypes().reduce<Array<string>>((collector, model) => {\r\n const asEntityType = model as EntityType;\r\n if (asEntityType.qName) {\r\n collector.push(asEntityType.qName, firstCharLowerCase(asEntityType.qName));\r\n }\r\n if (asEntityType.id?.qName) {\r\n collector.push(asEntityType.id.qName);\r\n }\r\n this.dataModel.getAllEntityOperations(model.fqName).forEach((op) => {\r\n collector.push(op.qName);\r\n });\r\n\r\n return collector;\r\n }, []);\r\n this.dataModel.getUnboundOperationTypes().forEach((op) => {\r\n reservedWords.push(op.qName);\r\n });\r\n\r\n this.mainQFile = this.createFile(this.namingHelper.getFileNames().qObject, reservedWords);\r\n }\r\n }\r\n\r\n public async finalizeQObjects() {\r\n if (this.mainQFile && (this.options.bundledFileGeneration || this.mainQFile.getFile().getFullText().length)) {\r\n await this.writeFile(this.mainQFile);\r\n }\r\n }\r\n\r\n public initServices() {\r\n const mainServiceName = this.namingHelper.getMainServiceName();\r\n const reservedNames = [mainServiceName];\r\n\r\n if (this.options.bundledFileGeneration) {\r\n [...this.dataModel.getEntityTypes(), ...this.dataModel.getComplexTypes()].reduce((collector, model) => {\r\n collector.push(model.serviceName, model.serviceCollectionName);\r\n return collector;\r\n }, reservedNames);\r\n }\r\n\r\n this.mainServiceFile = this.createFile(mainServiceName, reservedNames);\r\n }\r\n\r\n public async finalizeServices() {\r\n if (this.mainServiceFile) {\r\n await this.writeFile(this.mainServiceFile);\r\n }\r\n }\r\n\r\n public getMainServiceFile() {\r\n return this.mainServiceFile!;\r\n }\r\n\r\n public createOrGetMainModelFile(reservedNames?: Array<string>) {\r\n if (!this.mainModelFile) {\r\n this.mainModelFile = this.createFile(this.namingHelper.getFileNames().model, reservedNames, \"\", true);\r\n }\r\n return this.mainModelFile;\r\n }\r\n\r\n public createOrGetMainQObjectFile(reservedNames?: Array<string>) {\r\n if (!this.mainQFile) {\r\n this.mainQFile = this.createFile(this.namingHelper.getFileNames().qObject, reservedNames);\r\n }\r\n return this.mainQFile;\r\n }\r\n\r\n public createOrGetModelFile(folderPath: string, name: string, reservedNames?: Array<string> | undefined) {\r\n if (this.mainModelFile) {\r\n return this.mainModelFile;\r\n }\r\n\r\n // model files always allow for type checking\r\n return this.createFile(name, reservedNames, folderPath, true);\r\n }\r\n public createOrGetQObjectFile(folderPath: string, name: string, reservedNames?: Array<string> | undefined) {\r\n if (this.mainQFile) {\r\n return this.mainQFile;\r\n }\r\n\r\n return this.createFile(name, reservedNames, folderPath);\r\n }\r\n public createOrGetServiceFile(folderPath: string, name: string, reservedNames?: Array<string> | undefined) {\r\n if (this.options.bundledFileGeneration) {\r\n return this.mainServiceFile!;\r\n }\r\n\r\n return this.createFile(name, reservedNames, folderPath);\r\n }\r\n\r\n public async finalizeFile(file: FileHandler) {\r\n // write individual files in unbundled mode & if this is not one of the main files on root level\r\n if (\r\n !this.options.bundledFileGeneration &&\r\n file.path !== \"\" &&\r\n !Object.values(this.namingHelper.getFileNames()).includes(file.fileName)\r\n ) {\r\n await this.writeFile(file);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ProjectManager.js","sourceRoot":"","sources":["../../src/project/ProjectManager.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from \"path\";\r\nimport { mkdirp } from \"mkdirp\";\r\nimport { CompilerOptions, Project, SourceFile } from \"ts-morph\";\r\nimport { firstCharLowerCase } from \"xml2js/lib/processors.js\";\r\nimport { DataModel } from \"../data-model/DataModel.js\";\r\nimport { EntityType } from \"../data-model/DataTypeModel.js\";\r\nimport { NamingHelper } from \"../data-model/NamingHelper.js\";\r\nimport { ImportContainer } from \"../generator/ImportContainer.js\";\r\nimport { EmitModes } from \"../OptionModel.js\";\r\nimport { FileHandler } from \"./FileHandler.js\";\r\nimport { FileFormatter } from \"./formatter/FileFormatter.js\";\r\nimport { createFormatter } from \"./formatter/index.js\";\r\nimport { loadTsMorphCompilerOptions } from \"./TsMorphHelper.js\";\r\n\r\nexport interface ProjectManagerOptions {\r\n usePrettier?: boolean;\r\n tsConfigPath?: string;\r\n bundledFileGeneration?: boolean;\r\n /**\r\n * for testing purposes, turn this on and retrieve all generated files via getCachedFiles\r\n */\r\n noOutput?: boolean;\r\n allowTypeChecking?: boolean;\r\n}\r\n\r\nexport async function createProjectManager(\r\n outputDir: string,\r\n emitMode: EmitModes,\r\n namingHelper: NamingHelper,\r\n dataModel: DataModel,\r\n options: ProjectManagerOptions,\r\n): Promise<ProjectManager> {\r\n const { usePrettier = false, tsConfigPath = \"tsconfig.json\" } = options;\r\n const formatter = usePrettier ? await createFormatter(outputDir, usePrettier) : undefined;\r\n\r\n const compilerOpts: CompilerOptions = await loadTsMorphCompilerOptions(tsConfigPath, emitMode, outputDir);\r\n\r\n const pm = new ProjectManager(outputDir, emitMode, namingHelper, dataModel, formatter, compilerOpts, {\r\n usePrettier,\r\n tsConfigPath,\r\n ...options,\r\n });\r\n\r\n await pm.init();\r\n\r\n return pm;\r\n}\r\n\r\nexport class ProjectManager {\r\n private project!: Project;\r\n\r\n private mainServiceFile: FileHandler | undefined;\r\n private mainModelFile: FileHandler | undefined;\r\n private mainQFile: FileHandler | undefined;\r\n\r\n private readonly cachedFiles: Map<string, SourceFile> | undefined;\r\n\r\n constructor(\r\n protected outputDir: string,\r\n protected emitMode: EmitModes,\r\n protected namingHelper: NamingHelper,\r\n protected dataModel: DataModel,\r\n protected formatter: FileFormatter | undefined,\r\n compilerOptions: CompilerOptions | undefined,\r\n protected options: ProjectManagerOptions,\r\n ) {\r\n // Create ts-morph project\r\n this.project = new Project({\r\n // manipulationSettings: this.formatter.getSettings(),\r\n skipAddingFilesFromTsConfig: true,\r\n compilerOptions,\r\n });\r\n\r\n if (options.noOutput) {\r\n this.cachedFiles = new Map();\r\n }\r\n }\r\n\r\n public getDataModel() {\r\n return this.dataModel;\r\n }\r\n\r\n /**\r\n * Only filled when noOutput=true\r\n */\r\n public getCachedFiles() {\r\n return this.cachedFiles!;\r\n }\r\n\r\n private async writeFile(fileHandler: FileHandler) {\r\n if (this.options.noOutput) {\r\n await fileHandler.write(this.emitMode, true);\r\n this.cachedFiles!.set(fileHandler.getFullFilePath(), fileHandler.getFile());\r\n\r\n return;\r\n }\r\n\r\n return fileHandler.write(this.emitMode);\r\n }\r\n\r\n private createFile(\r\n name: string,\r\n reservedNames?: Array<string> | undefined,\r\n additionalPath: string = \"\",\r\n forceTypeChecking = false,\r\n ): FileHandler {\r\n const fileName = path.join(this.outputDir, additionalPath, `${name}.ts`);\r\n const imports = new ImportContainer(\r\n additionalPath,\r\n name,\r\n this.dataModel,\r\n this.namingHelper.getFileNames(),\r\n !!this.options.bundledFileGeneration,\r\n reservedNames,\r\n );\r\n\r\n return new FileHandler(\r\n additionalPath,\r\n name,\r\n this.project.createSourceFile(fileName),\r\n imports,\r\n this.formatter,\r\n forceTypeChecking || !!this.options.allowTypeChecking,\r\n );\r\n }\r\n\r\n public async init() {\r\n if (!this.options.bundledFileGeneration) {\r\n // ensure folder for each model: we do this at this point for performance reasons\r\n await Promise.all(this.dataModel.getModelTypes().map((mt) => mkdirp(path.join(this.outputDir, mt.folderPath))));\r\n }\r\n }\r\n\r\n public initModels() {\r\n if (this.options.bundledFileGeneration) {\r\n // collect reserved names, that is names of classes we're going to create => imports must take them into account\r\n const reservedWords = this.dataModel.getModelTypes().reduce<Array<string>>((collector, model) => {\r\n const asEntityType = model as EntityType;\r\n collector.push(model.modelName);\r\n if (asEntityType.editableName) {\r\n collector.push(asEntityType.editableName);\r\n }\r\n if (asEntityType.id?.modelName) {\r\n collector.push(asEntityType.id.modelName);\r\n }\r\n this.dataModel.getAllEntityOperations(model.fqName).forEach((op) => {\r\n if (op.parameters.length) {\r\n collector.push(op.paramsModelName);\r\n }\r\n });\r\n\r\n return collector;\r\n }, []);\r\n this.dataModel.getUnboundOperationTypes().forEach((op) => {\r\n if (op.parameters.length) {\r\n reservedWords.push(op.paramsModelName);\r\n }\r\n });\r\n\r\n this.mainModelFile = this.createFile(this.namingHelper.getFileNames().model, reservedWords);\r\n }\r\n }\r\n\r\n public async finalizeModels() {\r\n if (\r\n this.mainModelFile &&\r\n (this.options.bundledFileGeneration || this.mainModelFile.getFile().getFullText().length)\r\n ) {\r\n await this.writeFile(this.mainModelFile);\r\n }\r\n }\r\n\r\n public initQObjects() {\r\n if (this.options.bundledFileGeneration) {\r\n // collect reserved names, that is names of classes we're going to create => imports must take them into account\r\n const reservedWords = this.dataModel.getModelTypes().reduce<Array<string>>((collector, model) => {\r\n const asEntityType = model as EntityType;\r\n if (asEntityType.qName) {\r\n collector.push(asEntityType.qName, firstCharLowerCase(asEntityType.qName));\r\n }\r\n if (asEntityType.id?.qName) {\r\n collector.push(asEntityType.id.qName);\r\n }\r\n this.dataModel.getAllEntityOperations(model.fqName).forEach((op) => {\r\n collector.push(op.qName);\r\n });\r\n\r\n return collector;\r\n }, []);\r\n this.dataModel.getUnboundOperationTypes().forEach((op) => {\r\n reservedWords.push(op.qName);\r\n });\r\n\r\n this.mainQFile = this.createFile(this.namingHelper.getFileNames().qObject, reservedWords);\r\n }\r\n }\r\n\r\n public async finalizeQObjects() {\r\n if (this.mainQFile && (this.options.bundledFileGeneration || this.mainQFile.getFile().getFullText().length)) {\r\n await this.writeFile(this.mainQFile);\r\n }\r\n }\r\n\r\n public initServices() {\r\n const mainServiceName = this.namingHelper.getMainServiceName();\r\n const reservedNames = [mainServiceName];\r\n\r\n if (this.options.bundledFileGeneration) {\r\n [...this.dataModel.getEntityTypes(), ...this.dataModel.getComplexTypes()].reduce((collector, model) => {\r\n collector.push(model.serviceName, model.serviceCollectionName);\r\n return collector;\r\n }, reservedNames);\r\n }\r\n\r\n this.mainServiceFile = this.createFile(mainServiceName, reservedNames);\r\n }\r\n\r\n public async finalizeServices() {\r\n if (this.mainServiceFile) {\r\n await this.writeFile(this.mainServiceFile);\r\n }\r\n }\r\n\r\n public getMainServiceFile() {\r\n return this.mainServiceFile!;\r\n }\r\n\r\n public createOrGetMainModelFile(reservedNames?: Array<string>) {\r\n if (!this.mainModelFile) {\r\n this.mainModelFile = this.createFile(this.namingHelper.getFileNames().model, reservedNames, \"\", true);\r\n }\r\n return this.mainModelFile;\r\n }\r\n\r\n public createOrGetMainQObjectFile(reservedNames?: Array<string>) {\r\n if (!this.mainQFile) {\r\n this.mainQFile = this.createFile(this.namingHelper.getFileNames().qObject, reservedNames);\r\n }\r\n return this.mainQFile;\r\n }\r\n\r\n public createOrGetModelFile(folderPath: string, name: string, reservedNames?: Array<string> | undefined) {\r\n if (this.mainModelFile) {\r\n return this.mainModelFile;\r\n }\r\n\r\n // model files always allow for type checking\r\n return this.createFile(name, reservedNames, folderPath, true);\r\n }\r\n public createOrGetQObjectFile(folderPath: string, name: string, reservedNames?: Array<string> | undefined) {\r\n if (this.mainQFile) {\r\n return this.mainQFile;\r\n }\r\n\r\n return this.createFile(name, reservedNames, folderPath);\r\n }\r\n public createOrGetServiceFile(folderPath: string, name: string, reservedNames?: Array<string> | undefined) {\r\n if (this.options.bundledFileGeneration) {\r\n return this.mainServiceFile!;\r\n }\r\n\r\n return this.createFile(name, reservedNames, folderPath);\r\n }\r\n\r\n public async finalizeFile(file: FileHandler) {\r\n // write individual files in unbundled mode & if this is not one of the main files on root level\r\n if (\r\n !this.options.bundledFileGeneration &&\r\n file.path !== \"\" &&\r\n !Object.values(this.namingHelper.getFileNames()).includes(file.fileName)\r\n ) {\r\n await this.writeFile(file);\r\n }\r\n }\r\n}\r\n"]}
@@ -1,5 +1,5 @@
1
1
  import { CompilerOptions } from "ts-morph";
2
- import { EmitModes } from "../OptionModel";
2
+ import { EmitModes } from "../OptionModel.js";
3
3
  /**
4
4
  * Loads the TS configuration from the specified path.
5
5
  * Then maps the appropriate options to ts-morph compiler options.
@@ -1,11 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loadTsMorphCompilerOptions = void 0;
4
- const tslib_1 = require("tslib");
5
- const common_1 = require("@ts-morph/common");
6
- const tsconfig_loader_1 = tslib_1.__importDefault(require("tsconfig-loader"));
7
- const typescript_1 = tslib_1.__importDefault(require("typescript"));
8
- const OptionModel_1 = require("../OptionModel");
1
+ import { __awaiter, __rest } from "tslib";
2
+ import { NewLineKind } from "@ts-morph/common";
3
+ import load from "tsconfig-loader";
4
+ import ts from "typescript";
5
+ import { EmitModes } from "../OptionModel.js";
9
6
  /**
10
7
  * Loads the TS configuration from the specified path.
11
8
  * Then maps the appropriate options to ts-morph compiler options.
@@ -14,30 +11,32 @@ const OptionModel_1 = require("../OptionModel");
14
11
  * @param emitMode the used emit mode
15
12
  * @param outputDir the used output dir
16
13
  */
17
- function loadTsMorphCompilerOptions(tsConfigPath, emitMode, outputDir) {
18
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
19
- const generateDeclarations = OptionModel_1.EmitModes.js_dts === emitMode || OptionModel_1.EmitModes.dts === emitMode;
14
+ export function loadTsMorphCompilerOptions(tsConfigPath, emitMode, outputDir) {
15
+ var _a;
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ const generateDeclarations = EmitModes.js_dts === emitMode || EmitModes.dts === emitMode;
20
18
  // load config file
21
19
  // NOTE: not async...
22
- const conf = (0, tsconfig_loader_1.default)({ filename: tsConfigPath });
23
- const _a = (conf === null || conf === void 0 ? void 0 : conf.tsConfig.compilerOptions) || {}, {
20
+ // @ts-ignore
21
+ const doLoad = (_a = load === null || load === void 0 ? void 0 : load.default) !== null && _a !== void 0 ? _a : load;
22
+ const conf = doLoad({ filename: tsConfigPath });
23
+ const _b = (conf === null || conf === void 0 ? void 0 : conf.tsConfig.compilerOptions) || {}, {
24
24
  // ignored props
25
25
  noEmit, // we always want to emit
26
26
  importsNotUsedAsValues, // type is missing
27
27
  jsx, plugins,
28
28
  // mapped props
29
- moduleResolution, lib, module, newLine, target, rootDir, rootDirs } = _a, passThrough = tslib_1.__rest(_a, ["noEmit", "importsNotUsedAsValues", "jsx", "plugins", "moduleResolution", "lib", "module", "newLine", "target", "rootDir", "rootDirs"]);
29
+ moduleResolution, lib, module, newLine, target, rootDir, rootDirs } = _b, passThrough = __rest(_b, ["noEmit", "importsNotUsedAsValues", "jsx", "plugins", "moduleResolution", "lib", "module", "newLine", "target", "rootDir", "rootDirs"]);
30
30
  const compilerOpts = Object.assign(Object.assign({}, passThrough), { outDir: outputDir, declaration: generateDeclarations, moduleResolution: getModuleResolutionKind(moduleResolution), module: getModuleKind(module), target: getTarget(target) });
31
31
  if (lib) {
32
32
  compilerOpts.lib = lib;
33
33
  }
34
34
  if (newLine) {
35
- compilerOpts.newLine = (newLine === null || newLine === void 0 ? void 0 : newLine.toLowerCase()) === "lf" ? common_1.NewLineKind.LineFeed : common_1.NewLineKind.CarriageReturnLineFeed;
35
+ compilerOpts.newLine = (newLine === null || newLine === void 0 ? void 0 : newLine.toLowerCase()) === "lf" ? NewLineKind.LineFeed : NewLineKind.CarriageReturnLineFeed;
36
36
  }
37
37
  return compilerOpts;
38
38
  });
39
39
  }
40
- exports.loadTsMorphCompilerOptions = loadTsMorphCompilerOptions;
41
40
  /**
42
41
  * Maps to lower case.
43
42
  * Also translates "node" to "nodejs".
@@ -50,17 +49,17 @@ function getModuleResolutionKind(moduleResolution) {
50
49
  ? "nodejs"
51
50
  : moduleResolution.toLowerCase()
52
51
  : undefined;
53
- const matchedKey = Object.keys(typescript_1.default.ModuleResolutionKind).find((mk) => mk.toLowerCase() === modRes);
54
- return matchedKey ? typescript_1.default.ModuleResolutionKind[matchedKey] : undefined;
52
+ const matchedKey = Object.keys(ts.ModuleResolutionKind).find((mk) => mk.toLowerCase() === modRes);
53
+ return matchedKey ? ts.ModuleResolutionKind[matchedKey] : undefined;
55
54
  }
56
55
  function getModuleKind(module) {
57
56
  const mod = typeof module === "string" ? module.toLowerCase() : undefined;
58
- const matchedKey = Object.keys(typescript_1.default.ModuleKind).find((mk) => mk.toLowerCase() === mod);
59
- return matchedKey ? typescript_1.default.ModuleKind[matchedKey] : undefined;
57
+ const matchedKey = Object.keys(ts.ModuleKind).find((mk) => mk.toLowerCase() === mod);
58
+ return matchedKey ? ts.ModuleKind[matchedKey] : undefined;
60
59
  }
61
60
  function getTarget(target) {
62
61
  const t = typeof target === "string" ? target.toLowerCase() : undefined;
63
- const matchedKey = Object.keys(typescript_1.default.ScriptTarget).find((st) => st.toLowerCase() === t);
64
- return matchedKey ? typescript_1.default.ScriptTarget[matchedKey] : undefined;
62
+ const matchedKey = Object.keys(ts.ScriptTarget).find((st) => st.toLowerCase() === t);
63
+ return matchedKey ? ts.ScriptTarget[matchedKey] : undefined;
65
64
  }
66
65
  //# sourceMappingURL=TsMorphHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TsMorphHelper.js","sourceRoot":"","sources":["../../src/project/TsMorphHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { NewLineKind } from \"@ts-morph/common\";\r\nimport { CompilerOptions, ModuleKind, ModuleResolutionKind, ScriptTarget } from \"ts-morph\";\r\nimport load from \"tsconfig-loader\";\r\nimport ts from \"typescript\";\r\n\r\nimport { EmitModes } from \"../OptionModel\";\r\n\r\n/**\r\n * Loads the TS configuration from the specified path.\r\n * Then maps the appropriate options to ts-morph compiler options.\r\n *\r\n * @param tsConfigPath path to tsconfig.json\r\n * @param emitMode the used emit mode\r\n * @param outputDir the used output dir\r\n */\r\nexport async function loadTsMorphCompilerOptions(tsConfigPath: string, emitMode: EmitModes, outputDir: string) {\r\n const generateDeclarations = EmitModes.js_dts === emitMode || EmitModes.dts === emitMode;\r\n\r\n // load config file\r\n // NOTE: not async...\r\n const conf = load({ filename: tsConfigPath });\r\n\r\n const {\r\n // ignored props\r\n noEmit, // we always want to emit\r\n importsNotUsedAsValues, // type is missing\r\n jsx,\r\n plugins,\r\n // mapped props\r\n moduleResolution,\r\n lib,\r\n module,\r\n newLine,\r\n target,\r\n rootDir,\r\n rootDirs,\r\n ...passThrough\r\n } = conf?.tsConfig.compilerOptions || {};\r\n\r\n const compilerOpts: CompilerOptions = {\r\n ...passThrough,\r\n outDir: outputDir,\r\n declaration: generateDeclarations,\r\n moduleResolution: getModuleResolutionKind(moduleResolution),\r\n module: getModuleKind(module),\r\n target: getTarget(target),\r\n };\r\n if (lib) {\r\n compilerOpts.lib = lib as string[];\r\n }\r\n if (newLine) {\r\n compilerOpts.newLine = newLine?.toLowerCase() === \"lf\" ? NewLineKind.LineFeed : NewLineKind.CarriageReturnLineFeed;\r\n }\r\n\r\n return compilerOpts;\r\n}\r\n\r\n/**\r\n * Maps to lower case.\r\n * Also translates \"node\" to \"nodejs\".\r\n *\r\n * @param moduleResolution\r\n */\r\nfunction getModuleResolutionKind(\r\n moduleResolution: string | undefined | Record<string, any>\r\n): ModuleResolutionKind | undefined {\r\n const modRes =\r\n typeof moduleResolution === \"string\"\r\n ? moduleResolution.toLowerCase() === \"node\"\r\n ? \"nodejs\"\r\n : moduleResolution.toLowerCase()\r\n : undefined;\r\n const matchedKey = Object.keys(ts.ModuleResolutionKind).find(\r\n (mk): mk is keyof typeof ModuleResolutionKind => mk.toLowerCase() === modRes\r\n );\r\n return matchedKey ? (ts.ModuleResolutionKind[matchedKey] as ModuleResolutionKind) : undefined;\r\n}\r\n\r\nfunction getModuleKind(module: string | undefined | Record<string, any>): ModuleKind | undefined {\r\n const mod = typeof module === \"string\" ? module.toLowerCase() : undefined;\r\n const matchedKey = Object.keys(ts.ModuleKind).find((mk): mk is keyof typeof ModuleKind => mk.toLowerCase() === mod);\r\n return matchedKey ? (ts.ModuleKind[matchedKey] as ModuleKind) : undefined;\r\n}\r\n\r\nfunction getTarget(target: string | undefined | Record<string, any>): ScriptTarget | undefined {\r\n const t = typeof target === \"string\" ? target.toLowerCase() : undefined;\r\n const matchedKey = Object.keys(ts.ScriptTarget).find((st): st is keyof typeof ScriptTarget => st.toLowerCase() === t);\r\n return matchedKey ? (ts.ScriptTarget[matchedKey] as ScriptTarget) : undefined;\r\n}\r\n"]}
1
+ {"version":3,"file":"TsMorphHelper.js","sourceRoot":"","sources":["../../src/project/TsMorphHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { NewLineKind } from \"@ts-morph/common\";\r\nimport { CompilerOptions, ModuleKind, ModuleResolutionKind, ScriptTarget } from \"ts-morph\";\r\nimport load, { TsConfigLoaderParams, TsConfigLoaderResult } from \"tsconfig-loader\";\r\nimport ts from \"typescript\";\r\nimport { EmitModes } from \"../OptionModel.js\";\r\n\r\n/**\r\n * Loads the TS configuration from the specified path.\r\n * Then maps the appropriate options to ts-morph compiler options.\r\n *\r\n * @param tsConfigPath path to tsconfig.json\r\n * @param emitMode the used emit mode\r\n * @param outputDir the used output dir\r\n */\r\nexport async function loadTsMorphCompilerOptions(tsConfigPath: string, emitMode: EmitModes, outputDir: string) {\r\n const generateDeclarations = EmitModes.js_dts === emitMode || EmitModes.dts === emitMode;\r\n\r\n // load config file\r\n // NOTE: not async...\r\n // @ts-ignore\r\n const doLoad: ({ filename, cwd }?: TsConfigLoaderParams) => TsConfigLoaderResult | undefined = load?.default ?? load;\r\n const conf = doLoad({ filename: tsConfigPath });\r\n\r\n const {\r\n // ignored props\r\n noEmit, // we always want to emit\r\n importsNotUsedAsValues, // type is missing\r\n jsx,\r\n plugins,\r\n // mapped props\r\n moduleResolution,\r\n lib,\r\n module,\r\n newLine,\r\n target,\r\n rootDir,\r\n rootDirs,\r\n ...passThrough\r\n } = conf?.tsConfig.compilerOptions || {};\r\n\r\n const compilerOpts: CompilerOptions = {\r\n ...passThrough,\r\n outDir: outputDir,\r\n declaration: generateDeclarations,\r\n moduleResolution: getModuleResolutionKind(moduleResolution),\r\n module: getModuleKind(module),\r\n target: getTarget(target),\r\n };\r\n if (lib) {\r\n compilerOpts.lib = lib as string[];\r\n }\r\n if (newLine) {\r\n compilerOpts.newLine = newLine?.toLowerCase() === \"lf\" ? NewLineKind.LineFeed : NewLineKind.CarriageReturnLineFeed;\r\n }\r\n\r\n return compilerOpts;\r\n}\r\n\r\n/**\r\n * Maps to lower case.\r\n * Also translates \"node\" to \"nodejs\".\r\n *\r\n * @param moduleResolution\r\n */\r\nfunction getModuleResolutionKind(\r\n moduleResolution: string | undefined | Record<string, any>,\r\n): ModuleResolutionKind | undefined {\r\n const modRes =\r\n typeof moduleResolution === \"string\"\r\n ? moduleResolution.toLowerCase() === \"node\"\r\n ? \"nodejs\"\r\n : moduleResolution.toLowerCase()\r\n : undefined;\r\n const matchedKey = Object.keys(ts.ModuleResolutionKind).find(\r\n (mk): mk is keyof typeof ModuleResolutionKind => mk.toLowerCase() === modRes,\r\n );\r\n return matchedKey ? (ts.ModuleResolutionKind[matchedKey] as ModuleResolutionKind) : undefined;\r\n}\r\n\r\nfunction getModuleKind(module: string | undefined | Record<string, any>): ModuleKind | undefined {\r\n const mod = typeof module === \"string\" ? module.toLowerCase() : undefined;\r\n const matchedKey = Object.keys(ts.ModuleKind).find((mk): mk is keyof typeof ModuleKind => mk.toLowerCase() === mod);\r\n return matchedKey ? (ts.ModuleKind[matchedKey] as ModuleKind) : undefined;\r\n}\r\n\r\nfunction getTarget(target: string | undefined | Record<string, any>): ScriptTarget | undefined {\r\n const t = typeof target === \"string\" ? target.toLowerCase() : undefined;\r\n const matchedKey = Object.keys(ts.ScriptTarget).find((st): st is keyof typeof ScriptTarget => st.toLowerCase() === t);\r\n return matchedKey ? (ts.ScriptTarget[matchedKey] as ScriptTarget) : undefined;\r\n}\r\n"]}
@@ -1,5 +1,5 @@
1
1
  import { ManipulationSettings } from "ts-morph";
2
- import { FileFormatter } from "./FileFormatter";
2
+ import { FileFormatter } from "./FileFormatter.js";
3
3
  /**
4
4
  * Abstract formatter.
5
5
  *
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseFormatter = void 0;
4
1
  /**
5
2
  * Abstract formatter.
6
3
  *
@@ -8,7 +5,7 @@ exports.BaseFormatter = void 0;
8
5
  * @abstract
9
6
  * @class Formatter
10
7
  */
11
- class BaseFormatter {
8
+ export class BaseFormatter {
12
9
  /**
13
10
  * Default constructor
14
11
  * @param {string} output Path of the output file
@@ -27,5 +24,4 @@ class BaseFormatter {
27
24
  return this.settings;
28
25
  }
29
26
  }
30
- exports.BaseFormatter = BaseFormatter;
31
27
  //# sourceMappingURL=BaseFormatter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseFormatter.js","sourceRoot":"","sources":["../../../src/project/formatter/BaseFormatter.ts"],"names":[],"mappings":";;;AAGA;;;;;;GAMG;AACH,MAAsB,aAAa;IAmBjC;;;;OAIG;IACH,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAWD;;;;;OAKG;IACI,WAAW;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CAGF;AAhDD,sCAgDC","sourcesContent":["import { ManipulationSettings } from \"ts-morph\";\r\nimport { FileFormatter } from \"./FileFormatter\";\r\n\r\n/**\r\n * Abstract formatter.\r\n *\r\n * @export\r\n * @abstract\r\n * @class Formatter\r\n */\r\nexport abstract class BaseFormatter implements FileFormatter {\r\n /**\r\n * Path of the output file.\r\n *\r\n * @protected\r\n * @type {string}\r\n * @memberof Formatter\r\n */\r\n protected output: string;\r\n\r\n /**\r\n * Initialized ts-morph manipulation settings for project creation.\r\n *\r\n * @protected\r\n * @type {Partial<ManipulationSettings>}\r\n * @memberof Formatter\r\n */\r\n protected settings!: Partial<ManipulationSettings>;\r\n\r\n /**\r\n * Default constructor\r\n * @param {string} output Path of the output file\r\n * @memberof Formatter\r\n */\r\n constructor(output: string) {\r\n this.output = output;\r\n }\r\n\r\n /**\r\n * Initializes the formatter.\r\n *\r\n * @abstract\r\n * @returns {Promise<BaseFormatter>} Initialized formatter\r\n * @memberof Formatter\r\n */\r\n public abstract init(): Promise<BaseFormatter>;\r\n\r\n /**\r\n * Returns initialized ts-morph manipuation settings.\r\n *\r\n * @returns {Promise<Partial<ManipulationSettings>>} ts-morph manipulation settings\r\n * @memberof Formatter\r\n */\r\n public getSettings(): Partial<ManipulationSettings> {\r\n return this.settings;\r\n }\r\n\r\n public abstract format(source: string): Promise<string>;\r\n}\r\n"]}
1
+ {"version":3,"file":"BaseFormatter.js","sourceRoot":"","sources":["../../../src/project/formatter/BaseFormatter.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,MAAM,OAAgB,aAAa;IAmBjC;;;;OAIG;IACH,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAWD;;;;;OAKG;IACI,WAAW;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CAGF","sourcesContent":["import { ManipulationSettings } from \"ts-morph\";\r\n\r\nimport { FileFormatter } from \"./FileFormatter.js\";\r\n\r\n/**\r\n * Abstract formatter.\r\n *\r\n * @export\r\n * @abstract\r\n * @class Formatter\r\n */\r\nexport abstract class BaseFormatter implements FileFormatter {\r\n /**\r\n * Path of the output file.\r\n *\r\n * @protected\r\n * @type {string}\r\n * @memberof Formatter\r\n */\r\n protected output: string;\r\n\r\n /**\r\n * Initialized ts-morph manipulation settings for project creation.\r\n *\r\n * @protected\r\n * @type {Partial<ManipulationSettings>}\r\n * @memberof Formatter\r\n */\r\n protected settings!: Partial<ManipulationSettings>;\r\n\r\n /**\r\n * Default constructor\r\n * @param {string} output Path of the output file\r\n * @memberof Formatter\r\n */\r\n constructor(output: string) {\r\n this.output = output;\r\n }\r\n\r\n /**\r\n * Initializes the formatter.\r\n *\r\n * @abstract\r\n * @returns {Promise<BaseFormatter>} Initialized formatter\r\n * @memberof Formatter\r\n */\r\n public abstract init(): Promise<BaseFormatter>;\r\n\r\n /**\r\n * Returns initialized ts-morph manipuation settings.\r\n *\r\n * @returns {Promise<Partial<ManipulationSettings>>} ts-morph manipulation settings\r\n * @memberof Formatter\r\n */\r\n public getSettings(): Partial<ManipulationSettings> {\r\n return this.settings;\r\n }\r\n\r\n public abstract format(source: string): Promise<string>;\r\n}\r\n"]}
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=FileFormatter.js.map
@@ -1,4 +1,4 @@
1
- import { BaseFormatter } from "./BaseFormatter";
1
+ import { BaseFormatter } from "./BaseFormatter.js";
2
2
  /**
3
3
  * Prettier formatter.
4
4
  *
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NoopFormatter = void 0;
4
- const tslib_1 = require("tslib");
5
- const BaseFormatter_1 = require("./BaseFormatter");
1
+ import { __awaiter } from "tslib";
2
+ import { BaseFormatter } from "./BaseFormatter.js";
6
3
  /**
7
4
  * Prettier formatter.
8
5
  *
@@ -12,7 +9,7 @@ const BaseFormatter_1 = require("./BaseFormatter");
12
9
  * @class NoopFormatter
13
10
  * @extends {Formatter}
14
11
  */
15
- class NoopFormatter extends BaseFormatter_1.BaseFormatter {
12
+ export class NoopFormatter extends BaseFormatter {
16
13
  /**
17
14
  * Initializes the formatter.
18
15
  *
@@ -21,7 +18,7 @@ class NoopFormatter extends BaseFormatter_1.BaseFormatter {
21
18
  * @memberof Formatter
22
19
  */
23
20
  init() {
24
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
21
+ return __awaiter(this, void 0, void 0, function* () {
25
22
  return this;
26
23
  });
27
24
  }
@@ -34,10 +31,9 @@ class NoopFormatter extends BaseFormatter_1.BaseFormatter {
34
31
  * @memberof Formatter
35
32
  */
36
33
  format(source) {
37
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
34
+ return __awaiter(this, void 0, void 0, function* () {
38
35
  return source;
39
36
  });
40
37
  }
41
38
  }
42
- exports.NoopFormatter = NoopFormatter;
43
39
  //# sourceMappingURL=NoopFormatter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NoopFormatter.js","sourceRoot":"","sources":["../../../src/project/formatter/NoopFormatter.ts"],"names":[],"mappings":";;;;AAAA,mDAAgD;AAEhD;;;;;;;;GAQG;AACH,MAAa,aAAc,SAAQ,6BAAa;IAC9C;;;;;;OAMG;IACU,IAAI;;YACf,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAED;;;;;;;OAOG;IACU,MAAM,CAAC,MAAc;;YAChC,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;CACF;AAvBD,sCAuBC","sourcesContent":["import { BaseFormatter } from \"./BaseFormatter\";\r\n\r\n/**\r\n * Prettier formatter.\r\n *\r\n * NOTE: Should be created like this => const formatter = await new NoopFormatter(\"./test.ts\").init();\r\n *\r\n * @export\r\n * @class NoopFormatter\r\n * @extends {Formatter}\r\n */\r\nexport class NoopFormatter extends BaseFormatter {\r\n /**\r\n * Initializes the formatter.\r\n *\r\n * @abstract\r\n * @returns {Promise<Formatter>} Initialized formatter\r\n * @memberof Formatter\r\n */\r\n public async init(): Promise<BaseFormatter> {\r\n return this;\r\n }\r\n\r\n /**\r\n * Formats a given source code.\r\n *\r\n * @abstract\r\n * @param {string} source Source code to format\r\n * @returns {string} Formatted source code\r\n * @memberof Formatter\r\n */\r\n public async format(source: string): Promise<string> {\r\n return source;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"NoopFormatter.js","sourceRoot":"","sources":["../../../src/project/formatter/NoopFormatter.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;;;;GAQG;AACH,MAAM,OAAO,aAAc,SAAQ,aAAa;IAC9C;;;;;;OAMG;IACU,IAAI;;YACf,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAED;;;;;;;OAOG;IACU,MAAM,CAAC,MAAc;;YAChC,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;CACF","sourcesContent":["import { BaseFormatter } from \"./BaseFormatter.js\";\r\n\r\n/**\r\n * Prettier formatter.\r\n *\r\n * NOTE: Should be created like this => const formatter = await new NoopFormatter(\"./test.ts\").init();\r\n *\r\n * @export\r\n * @class NoopFormatter\r\n * @extends {Formatter}\r\n */\r\nexport class NoopFormatter extends BaseFormatter {\r\n /**\r\n * Initializes the formatter.\r\n *\r\n * @abstract\r\n * @returns {Promise<Formatter>} Initialized formatter\r\n * @memberof Formatter\r\n */\r\n public async init(): Promise<BaseFormatter> {\r\n return this;\r\n }\r\n\r\n /**\r\n * Formats a given source code.\r\n *\r\n * @abstract\r\n * @param {string} source Source code to format\r\n * @returns {string} Formatted source code\r\n * @memberof Formatter\r\n */\r\n public async format(source: string): Promise<string> {\r\n return source;\r\n }\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
- import { BaseFormatter } from "./BaseFormatter";
1
+ import { BaseFormatter } from "./BaseFormatter.js";
2
2
  export declare class PrettierFormatter extends BaseFormatter {
3
3
  /**
4
4
  * Prettier options found in the project.
@@ -1,11 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PrettierFormatter = void 0;
4
- const tslib_1 = require("tslib");
5
- const prettier_1 = tslib_1.__importDefault(require("prettier"));
6
- const ts_morph_1 = require("ts-morph");
7
- const BaseFormatter_1 = require("./BaseFormatter");
8
- class PrettierFormatter extends BaseFormatter_1.BaseFormatter {
1
+ import { __awaiter } from "tslib";
2
+ import prettier from "prettier";
3
+ import { IndentationText, NewLineKind, QuoteKind } from "ts-morph";
4
+ import { BaseFormatter } from "./BaseFormatter.js";
5
+ export class PrettierFormatter extends BaseFormatter {
9
6
  /**
10
7
  * Initializes the formatter.
11
8
  *
@@ -13,22 +10,21 @@ class PrettierFormatter extends BaseFormatter_1.BaseFormatter {
13
10
  * @memberof PrettierFormatter
14
11
  */
15
12
  init() {
16
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
17
- const options = yield prettier_1.default.resolveConfig(this.output);
13
+ return __awaiter(this, void 0, void 0, function* () {
14
+ const options = yield prettier.resolveConfig(this.output);
18
15
  if (options) {
19
16
  this.options = options;
20
17
  this.settings = {
21
18
  indentationText: this.convertIndentation(this.options.useTabs, this.options.tabWidth),
22
19
  insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: this.options.bracketSpacing !== undefined ? this.options.bracketSpacing : true,
23
20
  newLineKind: this.convertNewline(this.options.endOfLine),
24
- quoteKind: this.options.singleQuote ? ts_morph_1.QuoteKind.Single : ts_morph_1.QuoteKind.Double,
21
+ quoteKind: this.options.singleQuote ? QuoteKind.Single : QuoteKind.Double,
25
22
  useTrailingCommas: this.options.trailingComma === "none" ? false : true,
26
23
  };
27
24
  }
28
25
  else {
29
26
  this.settings = {};
30
27
  }
31
- ;
32
28
  return this;
33
29
  });
34
30
  }
@@ -41,8 +37,8 @@ class PrettierFormatter extends BaseFormatter_1.BaseFormatter {
41
37
  * @memberof Formatter
42
38
  */
43
39
  format(source) {
44
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
45
- return prettier_1.default.format(source, Object.assign({ parser: "typescript" }, this.options));
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ return prettier.format(source, Object.assign({ parser: "typescript" }, this.options));
46
42
  });
47
43
  }
48
44
  /**
@@ -56,16 +52,16 @@ class PrettierFormatter extends BaseFormatter_1.BaseFormatter {
56
52
  */
57
53
  convertIndentation(useTabs, tabWidth) {
58
54
  if (useTabs)
59
- return ts_morph_1.IndentationText.Tab;
55
+ return IndentationText.Tab;
60
56
  switch (tabWidth) {
61
57
  case 2:
62
- return ts_morph_1.IndentationText.TwoSpaces;
58
+ return IndentationText.TwoSpaces;
63
59
  case 4:
64
- return ts_morph_1.IndentationText.FourSpaces;
60
+ return IndentationText.FourSpaces;
65
61
  case 8:
66
- return ts_morph_1.IndentationText.EightSpaces;
62
+ return IndentationText.EightSpaces;
67
63
  default:
68
- return ts_morph_1.IndentationText.TwoSpaces;
64
+ return IndentationText.TwoSpaces;
69
65
  }
70
66
  }
71
67
  /**
@@ -79,17 +75,16 @@ class PrettierFormatter extends BaseFormatter_1.BaseFormatter {
79
75
  convertNewline(eol) {
80
76
  switch (eol) {
81
77
  case "lf":
82
- return ts_morph_1.NewLineKind.LineFeed;
78
+ return NewLineKind.LineFeed;
83
79
  case "crlf":
84
- return ts_morph_1.NewLineKind.CarriageReturnLineFeed;
80
+ return NewLineKind.CarriageReturnLineFeed;
85
81
  case "cr":
86
- return ts_morph_1.NewLineKind.CarriageReturnLineFeed;
82
+ return NewLineKind.CarriageReturnLineFeed;
87
83
  case "auto":
88
- return ts_morph_1.NewLineKind.LineFeed;
84
+ return NewLineKind.LineFeed;
89
85
  default:
90
- return ts_morph_1.NewLineKind.LineFeed;
86
+ return NewLineKind.LineFeed;
91
87
  }
92
88
  }
93
89
  }
94
- exports.PrettierFormatter = PrettierFormatter;
95
90
  //# sourceMappingURL=PrettierFormatter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PrettierFormatter.js","sourceRoot":"","sources":["../../../src/project/formatter/PrettierFormatter.ts"],"names":[],"mappings":";;;;AAAA,gEAAgC;AAChC,uCAAmE;AAEnE,mDAAgD;AAEhD,MAAa,iBAAkB,SAAQ,6BAAa;IAUlD;;;;;OAKG;IACU,IAAI;;YACf,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE1D,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;gBACvB,IAAI,CAAC,QAAQ,GAAG;oBACd,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACrF,qDAAqD,EACnD,IAAI,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI;oBAChF,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;oBACxD,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,oBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAS,CAAC,MAAM;oBACzE,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;iBACxE,CAAC;aACH;iBAAM;gBACL,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;aACpB;YAAA,CAAC;YAEF,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAED;;;;;;;OAOG;IACU,MAAM,CAAC,MAAc;;YAChC,OAAO,kBAAQ,CAAC,MAAM,CAAC,MAAM,kBAC3B,MAAM,EAAE,YAAY,IACjB,IAAI,CAAC,OAAO,EACf,CAAC;QACL,CAAC;KAAA;IAED;;;;;;;;OAQG;IACK,kBAAkB,CAAC,OAA4B,EAAE,QAA4B;QACnF,IAAI,OAAO;YAAE,OAAO,0BAAe,CAAC,GAAG,CAAC;QAExC,QAAQ,QAAQ,EAAE;YAChB,KAAK,CAAC;gBACJ,OAAO,0BAAe,CAAC,SAAS,CAAC;YACnC,KAAK,CAAC;gBACJ,OAAO,0BAAe,CAAC,UAAU,CAAC;YACpC,KAAK,CAAC;gBACJ,OAAO,0BAAe,CAAC,WAAW,CAAC;YACrC;gBACE,OAAO,0BAAe,CAAC,SAAS,CAAC;SACpC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,cAAc,CAAC,GAAuB;QAC5C,QAAQ,GAAG,EAAE;YACX,KAAK,IAAI;gBACP,OAAO,sBAAW,CAAC,QAAQ,CAAC;YAC9B,KAAK,MAAM;gBACT,OAAO,sBAAW,CAAC,sBAAsB,CAAC;YAC5C,KAAK,IAAI;gBACP,OAAO,sBAAW,CAAC,sBAAsB,CAAC;YAC5C,KAAK,MAAM;gBACT,OAAO,sBAAW,CAAC,QAAQ,CAAC;YAC9B;gBACE,OAAO,sBAAW,CAAC,QAAQ,CAAC;SAC/B;IACH,CAAC;CACF;AAjGD,8CAiGC","sourcesContent":["import prettier from \"prettier\";\r\nimport { IndentationText, NewLineKind, QuoteKind } from \"ts-morph\";\r\n\r\nimport { BaseFormatter } from \"./BaseFormatter\";\r\n\r\nexport class PrettierFormatter extends BaseFormatter {\r\n /**\r\n * Prettier options found in the project.\r\n *\r\n * @private\r\n * @type {prettier.Options}\r\n * @memberof PrettierFormatter\r\n */\r\n private options!: prettier.Options;\r\n\r\n /**\r\n * Initializes the formatter.\r\n *\r\n * @returns {Promise<PrettierFormatter>} Initialized formatter\r\n * @memberof PrettierFormatter\r\n */\r\n public async init(): Promise<PrettierFormatter> {\r\n const options = await prettier.resolveConfig(this.output);\r\n\r\n if (options) {\r\n this.options = options;\r\n this.settings = {\r\n indentationText: this.convertIndentation(this.options.useTabs, this.options.tabWidth),\r\n insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces:\r\n this.options.bracketSpacing !== undefined ? this.options.bracketSpacing : true,\r\n newLineKind: this.convertNewline(this.options.endOfLine),\r\n quoteKind: this.options.singleQuote ? QuoteKind.Single : QuoteKind.Double,\r\n useTrailingCommas: this.options.trailingComma === \"none\" ? false : true,\r\n };\r\n } else {\r\n this.settings = {};\r\n };\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Formats a given source code.\r\n *\r\n * @abstract\r\n * @param {string} source Source code to format\r\n * @returns {string} Formatted source code\r\n * @memberof Formatter\r\n */\r\n public async format(source: string): Promise<string> {\r\n return prettier.format(source, {\r\n parser: \"typescript\",\r\n ...this.options,\r\n });\r\n }\r\n\r\n /**\r\n * Converts prettier indentation config to ts-morph settings.\r\n *\r\n * @private\r\n * @param {boolean | undefined} useTabs Flag, whether to use tabs or not\r\n * @param {number | undefined} tabWidth Width of a simulated tab, each number represents a space\r\n * @returns {IndentationText} Converted indentation text\r\n * @memberof PrettierFormatter\r\n */\r\n private convertIndentation(useTabs: boolean | undefined, tabWidth: number | undefined): IndentationText {\r\n if (useTabs) return IndentationText.Tab;\r\n\r\n switch (tabWidth) {\r\n case 2:\r\n return IndentationText.TwoSpaces;\r\n case 4:\r\n return IndentationText.FourSpaces;\r\n case 8:\r\n return IndentationText.EightSpaces;\r\n default:\r\n return IndentationText.TwoSpaces;\r\n }\r\n }\r\n\r\n /**\r\n * Converts prettier newline config to ts-morph settings.\r\n *\r\n * @private\r\n * @param {string | undefined} eol prettier end-of-line config\r\n * @returns {NewLineKind | undefined} Converted new line kind\r\n * @memberof PrettierFormatter\r\n */\r\n private convertNewline(eol: string | undefined): NewLineKind | undefined {\r\n switch (eol) {\r\n case \"lf\":\r\n return NewLineKind.LineFeed;\r\n case \"crlf\":\r\n return NewLineKind.CarriageReturnLineFeed;\r\n case \"cr\":\r\n return NewLineKind.CarriageReturnLineFeed;\r\n case \"auto\":\r\n return NewLineKind.LineFeed;\r\n default:\r\n return NewLineKind.LineFeed;\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"PrettierFormatter.js","sourceRoot":"","sources":["../../../src/project/formatter/PrettierFormatter.ts"],"names":[],"mappings":";AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,OAAO,iBAAkB,SAAQ,aAAa;IAUlD;;;;;OAKG;IACU,IAAI;;YACf,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE1D,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;gBACvB,IAAI,CAAC,QAAQ,GAAG;oBACd,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACrF,qDAAqD,EACnD,IAAI,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI;oBAChF,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;oBACxD,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM;oBACzE,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;iBACxE,CAAC;aACH;iBAAM;gBACL,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;aACpB;YAED,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAED;;;;;;;OAOG;IACU,MAAM,CAAC,MAAc;;YAChC,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,kBAC3B,MAAM,EAAE,YAAY,IACjB,IAAI,CAAC,OAAO,EACf,CAAC;QACL,CAAC;KAAA;IAED;;;;;;;;OAQG;IACK,kBAAkB,CAAC,OAA4B,EAAE,QAA4B;QACnF,IAAI,OAAO;YAAE,OAAO,eAAe,CAAC,GAAG,CAAC;QAExC,QAAQ,QAAQ,EAAE;YAChB,KAAK,CAAC;gBACJ,OAAO,eAAe,CAAC,SAAS,CAAC;YACnC,KAAK,CAAC;gBACJ,OAAO,eAAe,CAAC,UAAU,CAAC;YACpC,KAAK,CAAC;gBACJ,OAAO,eAAe,CAAC,WAAW,CAAC;YACrC;gBACE,OAAO,eAAe,CAAC,SAAS,CAAC;SACpC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,cAAc,CAAC,GAAuB;QAC5C,QAAQ,GAAG,EAAE;YACX,KAAK,IAAI;gBACP,OAAO,WAAW,CAAC,QAAQ,CAAC;YAC9B,KAAK,MAAM;gBACT,OAAO,WAAW,CAAC,sBAAsB,CAAC;YAC5C,KAAK,IAAI;gBACP,OAAO,WAAW,CAAC,sBAAsB,CAAC;YAC5C,KAAK,MAAM;gBACT,OAAO,WAAW,CAAC,QAAQ,CAAC;YAC9B;gBACE,OAAO,WAAW,CAAC,QAAQ,CAAC;SAC/B;IACH,CAAC;CACF","sourcesContent":["import prettier from \"prettier\";\r\nimport { IndentationText, NewLineKind, QuoteKind } from \"ts-morph\";\r\n\r\nimport { BaseFormatter } from \"./BaseFormatter.js\";\r\n\r\nexport class PrettierFormatter extends BaseFormatter {\r\n /**\r\n * Prettier options found in the project.\r\n *\r\n * @private\r\n * @type {prettier.Options}\r\n * @memberof PrettierFormatter\r\n */\r\n private options!: prettier.Options;\r\n\r\n /**\r\n * Initializes the formatter.\r\n *\r\n * @returns {Promise<PrettierFormatter>} Initialized formatter\r\n * @memberof PrettierFormatter\r\n */\r\n public async init(): Promise<PrettierFormatter> {\r\n const options = await prettier.resolveConfig(this.output);\r\n\r\n if (options) {\r\n this.options = options;\r\n this.settings = {\r\n indentationText: this.convertIndentation(this.options.useTabs, this.options.tabWidth),\r\n insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces:\r\n this.options.bracketSpacing !== undefined ? this.options.bracketSpacing : true,\r\n newLineKind: this.convertNewline(this.options.endOfLine),\r\n quoteKind: this.options.singleQuote ? QuoteKind.Single : QuoteKind.Double,\r\n useTrailingCommas: this.options.trailingComma === \"none\" ? false : true,\r\n };\r\n } else {\r\n this.settings = {};\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Formats a given source code.\r\n *\r\n * @abstract\r\n * @param {string} source Source code to format\r\n * @returns {string} Formatted source code\r\n * @memberof Formatter\r\n */\r\n public async format(source: string): Promise<string> {\r\n return prettier.format(source, {\r\n parser: \"typescript\",\r\n ...this.options,\r\n });\r\n }\r\n\r\n /**\r\n * Converts prettier indentation config to ts-morph settings.\r\n *\r\n * @private\r\n * @param {boolean | undefined} useTabs Flag, whether to use tabs or not\r\n * @param {number | undefined} tabWidth Width of a simulated tab, each number represents a space\r\n * @returns {IndentationText} Converted indentation text\r\n * @memberof PrettierFormatter\r\n */\r\n private convertIndentation(useTabs: boolean | undefined, tabWidth: number | undefined): IndentationText {\r\n if (useTabs) return IndentationText.Tab;\r\n\r\n switch (tabWidth) {\r\n case 2:\r\n return IndentationText.TwoSpaces;\r\n case 4:\r\n return IndentationText.FourSpaces;\r\n case 8:\r\n return IndentationText.EightSpaces;\r\n default:\r\n return IndentationText.TwoSpaces;\r\n }\r\n }\r\n\r\n /**\r\n * Converts prettier newline config to ts-morph settings.\r\n *\r\n * @private\r\n * @param {string | undefined} eol prettier end-of-line config\r\n * @returns {NewLineKind | undefined} Converted new line kind\r\n * @memberof PrettierFormatter\r\n */\r\n private convertNewline(eol: string | undefined): NewLineKind | undefined {\r\n switch (eol) {\r\n case \"lf\":\r\n return NewLineKind.LineFeed;\r\n case \"crlf\":\r\n return NewLineKind.CarriageReturnLineFeed;\r\n case \"cr\":\r\n return NewLineKind.CarriageReturnLineFeed;\r\n case \"auto\":\r\n return NewLineKind.LineFeed;\r\n default:\r\n return NewLineKind.LineFeed;\r\n }\r\n }\r\n}\r\n"]}
@@ -1,2 +1,2 @@
1
- import type { FileFormatter } from "./FileFormatter";
1
+ import type { FileFormatter } from "./FileFormatter.js";
2
2
  export declare function createFormatter(outputDir: string, usePrettier: boolean): Promise<FileFormatter>;
@@ -1,15 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createFormatter = void 0;
4
- const tslib_1 = require("tslib");
5
- const PrettierFormatter_1 = require("./PrettierFormatter");
6
- const NoopFormatter_1 = require("./NoopFormatter");
7
- function createFormatter(outputDir, usePrettier) {
8
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
9
- const formatter = usePrettier ? new PrettierFormatter_1.PrettierFormatter(outputDir) : new NoopFormatter_1.NoopFormatter(outputDir);
1
+ import { __awaiter } from "tslib";
2
+ import { NoopFormatter } from "./NoopFormatter.js";
3
+ import { PrettierFormatter } from "./PrettierFormatter.js";
4
+ export function createFormatter(outputDir, usePrettier) {
5
+ return __awaiter(this, void 0, void 0, function* () {
6
+ const formatter = usePrettier ? new PrettierFormatter(outputDir) : new NoopFormatter(outputDir);
10
7
  yield formatter.init();
11
8
  return formatter;
12
9
  });
13
10
  }
14
- exports.createFormatter = createFormatter;
15
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/project/formatter/index.ts"],"names":[],"mappings":";;;;AACA,2DAAwD;AACxD,mDAAgD;AAEhD,SAAsB,eAAe,CAAC,SAAiB,EAAE,WAAoB;;QAC3E,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,qCAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,6BAAa,CAAC,SAAS,CAAC,CAAC;QAChG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QAEvB,OAAO,SAAS,CAAC;IACnB,CAAC;CAAA;AALD,0CAKC","sourcesContent":["import type { FileFormatter } from \"./FileFormatter\";\r\nimport { PrettierFormatter } from \"./PrettierFormatter\";\r\nimport { NoopFormatter } from \"./NoopFormatter\";\r\n\r\nexport async function createFormatter(outputDir: string, usePrettier: boolean): Promise<FileFormatter> {\r\n const formatter = usePrettier ? new PrettierFormatter(outputDir) : new NoopFormatter(outputDir);\r\n await formatter.init();\r\n\r\n return formatter;\r\n}\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/project/formatter/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,UAAgB,eAAe,CAAC,SAAiB,EAAE,WAAoB;;QAC3E,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;QAChG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QAEvB,OAAO,SAAS,CAAC;IACnB,CAAC;CAAA","sourcesContent":["import type { FileFormatter } from \"./FileFormatter.js\";\r\nimport { NoopFormatter } from \"./NoopFormatter.js\";\r\nimport { PrettierFormatter } from \"./PrettierFormatter.js\";\r\n\r\nexport async function createFormatter(outputDir: string, usePrettier: boolean): Promise<FileFormatter> {\r\n const formatter = usePrettier ? new PrettierFormatter(outputDir) : new NoopFormatter(outputDir);\r\n await formatter.init();\r\n\r\n return formatter;\r\n}\r\n"]}