1 | "use strict";
|
2 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
3 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
4 | };
|
5 | Object.defineProperty(exports, "__esModule", { value: true });
|
6 | exports.register = exports.mergeTransformers = void 0;
|
7 | const transformer_1 = __importDefault(require("./transformer"));
|
8 |
|
9 |
|
10 |
|
11 | function getProjectTransformerConfig(pcl) {
|
12 | const plugins = pcl.options.plugins;
|
13 | if (!plugins)
|
14 | return;
|
15 | const res = {};
|
16 | for (const plugin of plugins) {
|
17 | if (plugin.transform === "typescript-transform-paths" && !plugin.after)
|
18 | res[plugin.afterDeclarations ? "afterDeclarations" : "before"] = plugin;
|
19 | }
|
20 | return res;
|
21 | }
|
22 | function getTransformers(program, beforeConfig, afterDeclarationsConfig) {
|
23 | return Object.assign(Object.assign({}, (beforeConfig && { before: [(0, transformer_1.default)(program, beforeConfig)] })), (afterDeclarationsConfig && { afterDeclarations: [(0, transformer_1.default)(program, afterDeclarationsConfig)] }));
|
24 | }
|
25 | function mergeTransformers(baseTransformers, transformers) {
|
26 | var _a, _b, _c, _d;
|
27 | const res = Object.assign(Object.assign({}, ((baseTransformers.before || transformers.before) && {
|
28 | before: [...((_a = transformers.before) !== null && _a !== void 0 ? _a : []), ...((_b = baseTransformers.before) !== null && _b !== void 0 ? _b : [])],
|
29 | })), ((baseTransformers.afterDeclarations || transformers.afterDeclarations) && {
|
30 | afterDeclarations: [...((_c = transformers.afterDeclarations) !== null && _c !== void 0 ? _c : []), ...((_d = baseTransformers.afterDeclarations) !== null && _d !== void 0 ? _d : [])],
|
31 | }));
|
32 | const remainingBaseTransformers = Object.assign({}, baseTransformers);
|
33 | delete remainingBaseTransformers.before;
|
34 | delete remainingBaseTransformers.afterDeclarations;
|
35 | return Object.assign(res, remainingBaseTransformers);
|
36 | }
|
37 | exports.mergeTransformers = mergeTransformers;
|
38 |
|
39 |
|
40 |
|
41 |
|
42 | function register() {
|
43 | const { tsNodeInstance, tsNode } = register.initialize();
|
44 | const transformerConfig = getProjectTransformerConfig(tsNodeInstance.config);
|
45 | if (!transformerConfig)
|
46 | return;
|
47 | const { before: beforeConfig, afterDeclarations: afterDeclarationsConfig } = transformerConfig;
|
48 | const registerOptions = Object.assign({}, tsNodeInstance.options);
|
49 | if (registerOptions.transformers) {
|
50 | if (typeof registerOptions.transformers === "function") {
|
51 | let oldTransformersFactory = registerOptions.transformers;
|
52 | registerOptions.transformers = (program) => {
|
53 | const transformers = getTransformers(program, beforeConfig, afterDeclarationsConfig);
|
54 | const baseTransformers = oldTransformersFactory(program);
|
55 | return mergeTransformers(baseTransformers, transformers);
|
56 | };
|
57 | }
|
58 | else {
|
59 | registerOptions.transformers = mergeTransformers(registerOptions.transformers, getTransformers(undefined, beforeConfig, afterDeclarationsConfig));
|
60 | }
|
61 | }
|
62 | else {
|
63 | registerOptions.transformers = getTransformers(undefined, beforeConfig, afterDeclarationsConfig);
|
64 | }
|
65 |
|
66 | tsNode.register(registerOptions);
|
67 | return registerOptions;
|
68 | }
|
69 | exports.register = register;
|
70 | (function (register) {
|
71 | function initialize() {
|
72 | let tsNode;
|
73 | try {
|
74 | tsNode = require("ts-node");
|
75 | }
|
76 | catch (_a) {
|
77 | throw new Error(`Cannot resolve ts-node. Make sure ts-node is installed before using typescript-transform-paths/register`);
|
78 | }
|
79 | const instanceSymbol = tsNode["REGISTER_INSTANCE"];
|
80 | let tsNodeInstance = global.process[instanceSymbol];
|
81 | if (!tsNodeInstance) {
|
82 | tsNode.register();
|
83 | tsNodeInstance = global.process[instanceSymbol];
|
84 | }
|
85 | if (!tsNodeInstance)
|
86 | throw new Error(`Could not register ts-node instance!`);
|
87 | return { tsNode, instanceSymbol, tsNodeInstance };
|
88 | }
|
89 | register.initialize = initialize;
|
90 | })(register = exports.register || (exports.register = {}));
|
91 | exports.default = register;
|
92 |
|
93 |
|
\ | No newline at end of file |