ts-morph-extensions 2.24.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -0
- package/dist/dto/decorator.d.ts +8 -0
- package/dist/dto/decorator.d.ts.map +1 -0
- package/dist/dto/decorator.js +36 -0
- package/dist/dto/decorator.js.map +1 -0
- package/dist/dto/graph.d.ts +20 -0
- package/dist/dto/graph.d.ts.map +1 -0
- package/dist/dto/graph.js +66 -0
- package/dist/dto/graph.js.map +1 -0
- package/dist/dto/identifier.d.ts +9 -0
- package/dist/dto/identifier.d.ts.map +1 -0
- package/dist/dto/identifier.js +23 -0
- package/dist/dto/identifier.js.map +1 -0
- package/dist/dto/parameter.d.ts +10 -0
- package/dist/dto/parameter.d.ts.map +1 -0
- package/dist/dto/parameter.js +19 -0
- package/dist/dto/parameter.js.map +1 -0
- package/dist/dto/provider.d.ts +28 -0
- package/dist/dto/provider.d.ts.map +1 -0
- package/dist/dto/provider.js +62 -0
- package/dist/dto/provider.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +15 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +28 -0
- package/dist/logger.js.map +1 -0
- package/dist/project/projectRegistry.d.ts +26 -0
- package/dist/project/projectRegistry.d.ts.map +1 -0
- package/dist/project/projectRegistry.js +130 -0
- package/dist/project/projectRegistry.js.map +1 -0
- package/dist/tsConfig/relativeToAbsolutePathConverter.d.ts +7 -0
- package/dist/tsConfig/relativeToAbsolutePathConverter.d.ts.map +1 -0
- package/dist/tsConfig/relativeToAbsolutePathConverter.js +72 -0
- package/dist/tsConfig/relativeToAbsolutePathConverter.js.map +1 -0
- package/dist/tsConfig/tsconfigParser.d.ts +35 -0
- package/dist/tsConfig/tsconfigParser.d.ts.map +1 -0
- package/dist/tsConfig/tsconfigParser.js +156 -0
- package/dist/tsConfig/tsconfigParser.js.map +1 -0
- package/dist/utils/dedupeSet.d.ts +5 -0
- package/dist/utils/dedupeSet.d.ts.map +1 -0
- package/dist/utils/dedupeSet.js +17 -0
- package/dist/utils/dedupeSet.js.map +1 -0
- package/dist/utils/fileSystem.d.ts +12 -0
- package/dist/utils/fileSystem.d.ts.map +1 -0
- package/dist/utils/fileSystem.js +73 -0
- package/dist/utils/fileSystem.js.map +1 -0
- package/dist/utils/objects.d.ts +2 -0
- package/dist/utils/objects.d.ts.map +1 -0
- package/dist/utils/objects.js +7 -0
- package/dist/utils/objects.js.map +1 -0
- package/dist/utils/ts/assertions.d.ts +3 -0
- package/dist/utils/ts/assertions.d.ts.map +1 -0
- package/dist/utils/ts/assertions.js +9 -0
- package/dist/utils/ts/assertions.js.map +1 -0
- package/dist/utils/ts/decorators.d.ts +8 -0
- package/dist/utils/ts/decorators.d.ts.map +1 -0
- package/dist/utils/ts/decorators.js +42 -0
- package/dist/utils/ts/decorators.js.map +1 -0
- package/dist/utils/ts/identifier.d.ts +3 -0
- package/dist/utils/ts/identifier.d.ts.map +1 -0
- package/dist/utils/ts/identifier.js +14 -0
- package/dist/utils/ts/identifier.js.map +1 -0
- package/dist/utils/ts/providers.d.ts +6 -0
- package/dist/utils/ts/providers.d.ts.map +1 -0
- package/dist/utils/ts/providers.js +29 -0
- package/dist/utils/ts/providers.js.map +1 -0
- package/package.json +25 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ProjectRegistry = void 0;
|
|
37
|
+
const ts_morph_1 = require("ts-morph");
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const fs = __importStar(require("fs"));
|
|
40
|
+
const logger_1 = require("../logger");
|
|
41
|
+
const tsconfigParser_1 = require("../tsConfig/tsconfigParser");
|
|
42
|
+
const os = __importStar(require("os"));
|
|
43
|
+
const fileSystem_1 = require("../utils/fileSystem");
|
|
44
|
+
class ProjectRegistry {
|
|
45
|
+
constructor(logger = new logger_1.NoOpLogger(), tsconfigParser = new tsconfigParser_1.TsConfigParser(), options) {
|
|
46
|
+
this.logger = logger;
|
|
47
|
+
this.tsconfigParser = tsconfigParser;
|
|
48
|
+
this.options = options;
|
|
49
|
+
this.projects = new Map();
|
|
50
|
+
this.tempFiles = new Set();
|
|
51
|
+
}
|
|
52
|
+
get(filePathOrUri) {
|
|
53
|
+
const filePath = this.normalizeFilePath(filePathOrUri);
|
|
54
|
+
const tsConfigPath = this.resolveTsConfigPath(filePath);
|
|
55
|
+
this.ensureProject(tsConfigPath);
|
|
56
|
+
return this.projects.get(tsConfigPath);
|
|
57
|
+
}
|
|
58
|
+
getSourceFile(filePathOrUri) {
|
|
59
|
+
const filePath = this.normalizeFilePath(filePathOrUri);
|
|
60
|
+
const project = this.get(filePathOrUri);
|
|
61
|
+
return project.getSourceFile(filePath);
|
|
62
|
+
}
|
|
63
|
+
getSourceFileOrThrow(filePathOrUri) {
|
|
64
|
+
const filePath = this.normalizeFilePath(filePathOrUri);
|
|
65
|
+
const project = this.get(filePathOrUri);
|
|
66
|
+
return project.getSourceFileOrThrow(filePath);
|
|
67
|
+
}
|
|
68
|
+
normalizeFilePath(filePathOrUri) {
|
|
69
|
+
return filePathOrUri.startsWith('file://') ? filePathOrUri.slice(7) : filePathOrUri;
|
|
70
|
+
}
|
|
71
|
+
ensureProject(tsConfigPath) {
|
|
72
|
+
if (!this.projects.has(tsConfigPath)) {
|
|
73
|
+
const tsConfig = this.tsconfigParser.parse(tsConfigPath);
|
|
74
|
+
this.logger.debug(`Parsed tsconfig: ${tsConfigPath}`);
|
|
75
|
+
const tempTsConfigPath = this.saveConfigToTempFile(tsConfig);
|
|
76
|
+
const project = new ts_morph_1.Project({ tsConfigFilePath: tempTsConfigPath });
|
|
77
|
+
this.projects.set(tsConfigPath, project);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
saveConfigToTempFile(tsConfig) {
|
|
81
|
+
const tempDir = path.join(os.tmpdir(), 'obsidian-language-server');
|
|
82
|
+
const tempTsConfigPath = path.join(tempDir, `tsconfig-${Date.now()}.json`);
|
|
83
|
+
try {
|
|
84
|
+
(0, fileSystem_1.ensureDir)(tempDir);
|
|
85
|
+
(0, fileSystem_1.writeFile)(tempTsConfigPath, tsConfig);
|
|
86
|
+
this.tempFiles.add(tempTsConfigPath);
|
|
87
|
+
return tempTsConfigPath;
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
this.logger.error(`Error writing tsconfig to temp file: ${error}`);
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
resolveTsConfigPath(filePath) {
|
|
95
|
+
if (this.options?.overrideTsConfigPath)
|
|
96
|
+
return this.options.overrideTsConfigPath;
|
|
97
|
+
return this.findClosestTsConfig(filePath);
|
|
98
|
+
}
|
|
99
|
+
findClosestTsConfig(filePath) {
|
|
100
|
+
let dir = path.dirname(filePath);
|
|
101
|
+
while (dir !== path.parse(dir).root) {
|
|
102
|
+
const maybeTsConfigPath = path.join(dir, 'tsconfig.json');
|
|
103
|
+
if (fs.existsSync(maybeTsConfigPath)) {
|
|
104
|
+
return path.resolve(dir, maybeTsConfigPath);
|
|
105
|
+
}
|
|
106
|
+
dir = path.dirname(dir);
|
|
107
|
+
}
|
|
108
|
+
throw new Error(`Could not find tsconfig.json for file: ${filePath}`);
|
|
109
|
+
}
|
|
110
|
+
dispose() {
|
|
111
|
+
for (const tempFile of this.tempFiles) {
|
|
112
|
+
this.clearTempTsConfigFiles(tempFile);
|
|
113
|
+
}
|
|
114
|
+
this.tempFiles.clear();
|
|
115
|
+
this.projects.clear();
|
|
116
|
+
}
|
|
117
|
+
clearTempTsConfigFiles(tempFile) {
|
|
118
|
+
try {
|
|
119
|
+
if (fs.existsSync(tempFile)) {
|
|
120
|
+
fs.unlinkSync(tempFile);
|
|
121
|
+
this.logger.debug(`Cleaned up temporary tsconfig: ${tempFile}`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
this.logger.error(`Error cleaning up temporary tsconfig ${tempFile}: ${error}`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
exports.ProjectRegistry = ProjectRegistry;
|
|
130
|
+
//# sourceMappingURL=projectRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectRegistry.js","sourceRoot":"","sources":["../../src/project/projectRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { TsConfig } from "./tsconfigParser";
|
|
2
|
+
export declare class RelativeToAbsoluteConverter {
|
|
3
|
+
convert(config: TsConfig, baseDir: string): void;
|
|
4
|
+
private convertCompilerOptions;
|
|
5
|
+
private convertArrayProperties;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=relativeToAbsolutePathConverter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relativeToAbsolutePathConverter.d.ts","sourceRoot":"","sources":["../../src/tsConfig/relativeToAbsolutePathConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,qBAAa,2BAA2B;IAC/B,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM;IAKhD,OAAO,CAAC,sBAAsB;IAsB9B,OAAO,CAAC,sBAAsB;CAO/B"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.RelativeToAbsoluteConverter = void 0;
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
class RelativeToAbsoluteConverter {
|
|
39
|
+
convert(config, baseDir) {
|
|
40
|
+
this.convertArrayProperties(config, baseDir);
|
|
41
|
+
this.convertCompilerOptions(config, baseDir);
|
|
42
|
+
}
|
|
43
|
+
convertCompilerOptions(config, baseDir) {
|
|
44
|
+
const compilerOptions = config.compilerOptions;
|
|
45
|
+
if (compilerOptions) {
|
|
46
|
+
const pathOptions = ['baseUrl', 'outDir', 'rootDir'];
|
|
47
|
+
pathOptions.forEach(opt => {
|
|
48
|
+
if (typeof compilerOptions[opt] === 'string') {
|
|
49
|
+
compilerOptions[opt] = path.resolve(baseDir, compilerOptions[opt]);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
// Handle paths mapping in compilerOptions
|
|
53
|
+
if (compilerOptions.paths) {
|
|
54
|
+
const paths = compilerOptions.paths;
|
|
55
|
+
for (const key in paths) {
|
|
56
|
+
if (Array.isArray(paths[key])) {
|
|
57
|
+
paths[key] = paths[key].map((p) => path.resolve(baseDir, p));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
convertArrayProperties(config, baseDir) {
|
|
64
|
+
['include', 'exclude', 'files'].forEach(key => {
|
|
65
|
+
if (Array.isArray(config[key])) {
|
|
66
|
+
config[key] = config[key].map(p => path.resolve(baseDir, p));
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.RelativeToAbsoluteConverter = RelativeToAbsoluteConverter;
|
|
72
|
+
//# sourceMappingURL=relativeToAbsolutePathConverter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relativeToAbsolutePathConverter.js","sourceRoot":"","sources":["../../src/tsConfig/relativeToAbsolutePathConverter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,2CAA6B;AAE7B,MAAa,2BAA2B;IAC/B,OAAO,CAAC,MAAgB,EAAE,OAAe;QAC9C,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAEO,sBAAsB,CAAC,MAAgB,EAAE,OAAe;QAC9D,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAC/C,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YACrD,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACxB,IAAI,OAAO,eAAe,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAC7C,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,0CAA0C;YAC1C,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;gBACpC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;oBACxB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;wBAC9B,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;oBACvE,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,MAAgB,EAAE,OAAe;QAC9D,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAnCD,kEAmCC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { RelativeToAbsoluteConverter } from './relativeToAbsolutePathConverter';
|
|
2
|
+
export type TsConfig = {
|
|
3
|
+
compilerOptions?: Record<string, any>;
|
|
4
|
+
include?: string[];
|
|
5
|
+
exclude?: string[];
|
|
6
|
+
files?: string[];
|
|
7
|
+
references?: {
|
|
8
|
+
path: string;
|
|
9
|
+
}[];
|
|
10
|
+
extends?: string;
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Parses a tsconfig file and returns a normalized tsconfig object.
|
|
15
|
+
*
|
|
16
|
+
* This class is responsible for:
|
|
17
|
+
* - Reading a tsconfig file
|
|
18
|
+
* - Converting relative paths to absolute paths
|
|
19
|
+
* - Merging composite tsconfig files (motivation: https://github.com/dsherret/ts-morph/issues/876)
|
|
20
|
+
* - Returning a normalized tsconfig object
|
|
21
|
+
*/
|
|
22
|
+
export declare class TsConfigParser {
|
|
23
|
+
private readonly relativeToAbsoluteConverter;
|
|
24
|
+
constructor(relativeToAbsoluteConverter?: RelativeToAbsoluteConverter);
|
|
25
|
+
parse(configPath: string): TsConfig;
|
|
26
|
+
private handleConfigExtends;
|
|
27
|
+
private parseCompositeConfigFile;
|
|
28
|
+
private createEmptyConfig;
|
|
29
|
+
private isCompositeConfigFile;
|
|
30
|
+
private readJsonFile;
|
|
31
|
+
private mergeConfig;
|
|
32
|
+
private mergeArrayProperties;
|
|
33
|
+
private mergeConfigs;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=tsconfigParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsconfigParser.d.ts","sourceRoot":"","sources":["../../src/tsConfig/tsconfigParser.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAEhF,MAAM,MAAM,QAAQ,GAAG;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;KAAE,EAAE,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAMF;;;;;;;;GAQG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,2BAA2B;gBAA3B,2BAA2B,GAAE,2BAA+D;IAGxG,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ;IAa1C,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,YAAY;CA0CrB"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.TsConfigParser = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const jsonc = __importStar(require("jsonc-parser"));
|
|
40
|
+
const relativeToAbsolutePathConverter_1 = require("./relativeToAbsolutePathConverter");
|
|
41
|
+
/**
|
|
42
|
+
* Parses a tsconfig file and returns a normalized tsconfig object.
|
|
43
|
+
*
|
|
44
|
+
* This class is responsible for:
|
|
45
|
+
* - Reading a tsconfig file
|
|
46
|
+
* - Converting relative paths to absolute paths
|
|
47
|
+
* - Merging composite tsconfig files (motivation: https://github.com/dsherret/ts-morph/issues/876)
|
|
48
|
+
* - Returning a normalized tsconfig object
|
|
49
|
+
*/
|
|
50
|
+
class TsConfigParser {
|
|
51
|
+
constructor(relativeToAbsoluteConverter = new relativeToAbsolutePathConverter_1.RelativeToAbsoluteConverter()) {
|
|
52
|
+
this.relativeToAbsoluteConverter = relativeToAbsoluteConverter;
|
|
53
|
+
}
|
|
54
|
+
parse(configPath) {
|
|
55
|
+
const rootConfig = this.readJsonFile(configPath);
|
|
56
|
+
const baseDir = path.dirname(configPath);
|
|
57
|
+
const configWithoutExtends = this.handleConfigExtends(rootConfig, baseDir);
|
|
58
|
+
const tsConfig = this.isCompositeConfigFile(configWithoutExtends)
|
|
59
|
+
? this.parseCompositeConfigFile(configWithoutExtends, baseDir)
|
|
60
|
+
: configWithoutExtends;
|
|
61
|
+
this.relativeToAbsoluteConverter.convert(tsConfig, baseDir);
|
|
62
|
+
return tsConfig;
|
|
63
|
+
}
|
|
64
|
+
handleConfigExtends(config, baseDir) {
|
|
65
|
+
if (!config.extends) {
|
|
66
|
+
return config;
|
|
67
|
+
}
|
|
68
|
+
const baseConfigPath = path.resolve(baseDir, config.extends);
|
|
69
|
+
const baseConfigDir = path.dirname(baseConfigPath);
|
|
70
|
+
const baseConfig = this.readJsonFile(baseConfigPath);
|
|
71
|
+
// Recursively handle extends in the base config
|
|
72
|
+
const resolvedBaseConfig = this.handleConfigExtends(baseConfig, baseConfigDir);
|
|
73
|
+
// Remove the extends property to prevent infinite loops
|
|
74
|
+
const { extends: _, ...configWithoutExtends } = config;
|
|
75
|
+
return this.mergeConfigs(resolvedBaseConfig, configWithoutExtends);
|
|
76
|
+
}
|
|
77
|
+
parseCompositeConfigFile(rootConfig, baseDir) {
|
|
78
|
+
let mergedConfig = this.createEmptyConfig();
|
|
79
|
+
for (const reference of rootConfig.references) {
|
|
80
|
+
const referencePath = path.resolve(baseDir, reference.path);
|
|
81
|
+
const referenceConfig = this.readJsonFile(referencePath);
|
|
82
|
+
this.mergeConfig(mergedConfig, referenceConfig);
|
|
83
|
+
}
|
|
84
|
+
return mergedConfig;
|
|
85
|
+
}
|
|
86
|
+
createEmptyConfig() {
|
|
87
|
+
return {
|
|
88
|
+
compilerOptions: {},
|
|
89
|
+
include: [],
|
|
90
|
+
exclude: [],
|
|
91
|
+
files: [],
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
isCompositeConfigFile(rootConfig) {
|
|
95
|
+
return Boolean(rootConfig.references && Array.isArray(rootConfig.references));
|
|
96
|
+
}
|
|
97
|
+
readJsonFile(filePath) {
|
|
98
|
+
const raw = fs.readFileSync(filePath, 'utf-8');
|
|
99
|
+
return jsonc.parse(raw);
|
|
100
|
+
}
|
|
101
|
+
mergeConfig(target, source) {
|
|
102
|
+
target.compilerOptions = {
|
|
103
|
+
...target.compilerOptions,
|
|
104
|
+
...source.compilerOptions,
|
|
105
|
+
};
|
|
106
|
+
this.mergeArrayProperties(target, source);
|
|
107
|
+
}
|
|
108
|
+
mergeArrayProperties(target, source) {
|
|
109
|
+
for (const key of ['include', 'exclude', 'files']) {
|
|
110
|
+
if (Array.isArray(source[key])) {
|
|
111
|
+
target[key] = Array.isArray(target[key])
|
|
112
|
+
? [...new Set([...target[key], ...source[key]])]
|
|
113
|
+
: [...source[key]];
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
mergeConfigs(baseConfig, extendingConfig) {
|
|
118
|
+
// Create a new config object
|
|
119
|
+
const mergedConfig = { ...this.createEmptyConfig() };
|
|
120
|
+
// Merge compiler options
|
|
121
|
+
mergedConfig.compilerOptions = {
|
|
122
|
+
...baseConfig.compilerOptions,
|
|
123
|
+
...extendingConfig.compilerOptions,
|
|
124
|
+
};
|
|
125
|
+
// Merge array properties
|
|
126
|
+
for (const key of ['include', 'exclude', 'files']) {
|
|
127
|
+
mergedConfig[key] = [];
|
|
128
|
+
if (Array.isArray(baseConfig[key])) {
|
|
129
|
+
mergedConfig[key].push(...baseConfig[key]);
|
|
130
|
+
}
|
|
131
|
+
if (Array.isArray(extendingConfig[key])) {
|
|
132
|
+
mergedConfig[key].push(...extendingConfig[key]);
|
|
133
|
+
}
|
|
134
|
+
// Remove duplicates
|
|
135
|
+
if (mergedConfig[key].length > 0) {
|
|
136
|
+
mergedConfig[key] = [...new Set(mergedConfig[key])];
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Merge references
|
|
140
|
+
if (baseConfig.references || extendingConfig.references) {
|
|
141
|
+
mergedConfig.references = [
|
|
142
|
+
...(baseConfig.references || []),
|
|
143
|
+
...(extendingConfig.references || []),
|
|
144
|
+
];
|
|
145
|
+
}
|
|
146
|
+
// Copy any other properties from the extending config
|
|
147
|
+
for (const key in extendingConfig) {
|
|
148
|
+
if (!['compilerOptions', 'include', 'exclude', 'files', 'references'].includes(key)) {
|
|
149
|
+
mergedConfig[key] = extendingConfig[key];
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return mergedConfig;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
exports.TsConfigParser = TsConfigParser;
|
|
156
|
+
//# sourceMappingURL=tsconfigParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsconfigParser.js","sourceRoot":"","sources":["../../src/tsConfig/tsconfigParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dedupeSet.d.ts","sourceRoot":"","sources":["../../src/utils/dedupeSet.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAS,CAAC,CAAC,GAAG,MAAM;IAC/B,OAAO,CAAC,GAAG,CAAgB;IAEpB,MAAM,GAAI,MAAM,CAAC,aAMtB;CACH"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DedupeSet = void 0;
|
|
4
|
+
class DedupeSet {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.set = new Set();
|
|
7
|
+
this.dedupe = (item) => {
|
|
8
|
+
if (this.set.has(item)) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
this.set.add(item);
|
|
12
|
+
return true;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.DedupeSet = DedupeSet;
|
|
17
|
+
//# sourceMappingURL=dedupeSet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dedupeSet.js","sourceRoot":"","sources":["../../src/utils/dedupeSet.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAS;IAAtB;QACU,QAAG,GAAG,IAAI,GAAG,EAAK,CAAC;QAEpB,WAAM,GAAG,CAAC,IAAO,EAAE,EAAE;YAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;IACJ,CAAC;CAAA;AAVD,8BAUC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const EXTENSIONS: string[];
|
|
2
|
+
export declare function ensureDir(dir: string): void;
|
|
3
|
+
export declare function writeFile(filePath: string, content: any): void;
|
|
4
|
+
/**
|
|
5
|
+
* Resolves a file path by checking if it exists with any of the common TypeScript/JavaScript extensions.
|
|
6
|
+
* If no file is found with any extension, returns the path with .ts extension as fallback.
|
|
7
|
+
* If the path already ends with a valid extension, returns it as is.
|
|
8
|
+
* @param basePath The path to resolve
|
|
9
|
+
* @returns The resolved path with the correct extension
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveFileExtension(basePath: string): string;
|
|
12
|
+
//# sourceMappingURL=fileSystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileSystem.d.ts","sourceRoot":"","sources":["../../src/utils/fileSystem.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,UAAiD,CAAC;AAEzE,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,QAIpC;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAGvD;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgB7D"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.EXTENSIONS = void 0;
|
|
37
|
+
exports.ensureDir = ensureDir;
|
|
38
|
+
exports.writeFile = writeFile;
|
|
39
|
+
exports.resolveFileExtension = resolveFileExtension;
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
exports.EXTENSIONS = ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs'];
|
|
42
|
+
function ensureDir(dir) {
|
|
43
|
+
if (!fs.existsSync(dir)) {
|
|
44
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function writeFile(filePath, content) {
|
|
48
|
+
const stringContent = typeof content === 'string' ? content : JSON.stringify(content);
|
|
49
|
+
fs.writeFileSync(filePath, stringContent);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Resolves a file path by checking if it exists with any of the common TypeScript/JavaScript extensions.
|
|
53
|
+
* If no file is found with any extension, returns the path with .ts extension as fallback.
|
|
54
|
+
* If the path already ends with a valid extension, returns it as is.
|
|
55
|
+
* @param basePath The path to resolve
|
|
56
|
+
* @returns The resolved path with the correct extension
|
|
57
|
+
*/
|
|
58
|
+
function resolveFileExtension(basePath) {
|
|
59
|
+
// Check if the path already ends with a valid extension
|
|
60
|
+
if (exports.EXTENSIONS.some(ext => basePath.endsWith(ext))) {
|
|
61
|
+
return basePath;
|
|
62
|
+
}
|
|
63
|
+
// Try to find the file with any of the extensions
|
|
64
|
+
for (const ext of exports.EXTENSIONS) {
|
|
65
|
+
const fullPath = `${basePath}${ext}`;
|
|
66
|
+
if (fs.existsSync(fullPath)) {
|
|
67
|
+
return fullPath;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// If no file found with any extension, return with .ts as fallback
|
|
71
|
+
return `${basePath}.ts`;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=fileSystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileSystem.js","sourceRoot":"","sources":["../../src/utils/fileSystem.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,8BAIC;AAED,8BAGC;AASD,oDAgBC;AAtCD,uCAAyB;AAEZ,QAAA,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEzE,SAAgB,SAAS,CAAC,GAAW;IACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,SAAgB,SAAS,CAAC,QAAgB,EAAE,OAAY;IACtD,MAAM,aAAa,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACtF,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAAC,QAAgB;IACnD,wDAAwD;IACxD,IAAI,kBAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACnD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,kDAAkD;IAClD,KAAK,MAAM,GAAG,IAAI,kBAAU,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,GAAG,QAAQ,GAAG,GAAG,EAAE,CAAC;QACrC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,OAAO,GAAG,QAAQ,KAAK,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objects.d.ts","sourceRoot":"","sources":["../../src/utils/objects.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAE9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objects.js","sourceRoot":"","sources":["../../src/utils/objects.ts"],"names":[],"mappings":";;AAAA,8BAEC;AAFD,SAAgB,SAAS,CAAI,KAAQ;IACnC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertions.d.ts","sourceRoot":"","sources":["../../../src/utils/ts/assertions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAE5C,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAEvE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assertIdentifier = assertIdentifier;
|
|
4
|
+
const ts_morph_1 = require("ts-morph");
|
|
5
|
+
function assertIdentifier(node) {
|
|
6
|
+
if (!ts_morph_1.Node.isIdentifier(node))
|
|
7
|
+
throw new Error(`Expected identifier, got ${node.getKindName()} (${node.getText()})`);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=assertions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertions.js","sourceRoot":"","sources":["../../../src/utils/ts/assertions.ts"],"names":[],"mappings":";;AAEA,4CAEC;AAJD,uCAA4C;AAE5C,SAAgB,gBAAgB,CAAC,IAAU;IACzC,IAAI,CAAC,eAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACtH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Decorator } from '../../dto/decorator';
|
|
2
|
+
import { Node, MethodDeclaration, ClassDeclaration } from 'ts-morph';
|
|
3
|
+
export declare function hasDecorator(node: MethodDeclaration | undefined, decoratorNames: string[]): boolean;
|
|
4
|
+
export declare function getDecorator(node: MethodDeclaration | ClassDeclaration | undefined, decoratorNames: string[]): Decorator | undefined;
|
|
5
|
+
export declare function hasParentWithDecorator(node: Node | undefined, decoratorNames: string[]): boolean;
|
|
6
|
+
export declare function hasGraphDecorator(node: Node | undefined): boolean;
|
|
7
|
+
export declare function getDecoratedMethods(node: Node, decoratorNames: string[]): MethodDeclaration[];
|
|
8
|
+
//# sourceMappingURL=decorators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../../src/utils/ts/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAc,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjF,wBAAgB,YAAY,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAEnG;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,iBAAiB,GAAG,gBAAgB,GAAG,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,SAAS,CAQpI;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAKhG;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CAGjE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAK7F"}
|