scrypt-ts-transpiler
Version:
```bash npm i npx scryptlib download npm t ```
91 lines • 4.23 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.IndexerWriter = exports.IndexerReader = void 0;
const path = __importStar(require("path"));
const indexerWriter_1 = require("./indexerWriter");
const transpiler_1 = require("./transpiler");
/***
* @ignore
*/
const allMissImportedLocalSymbols = new Map();
/***
* @ignore
*/
const allContractsAST = new Map();
/***
* @ignore
*/
function transformProgram(program, host, pluginOptions, { ts: tsInstance }) {
var _a, _b;
const compilerOptions = program.getCompilerOptions();
let tsconfigDir = process.env['TS_NODE_PROJECT'] ? path.dirname(process.env['TS_NODE_PROJECT']) : '.';
tsconfigDir = path.isAbsolute(tsconfigDir) ? tsconfigDir : path.join(program.getCurrentDirectory(), tsconfigDir);
let tsRootDir = (_a = program.getCompilerOptions().rootDir) !== null && _a !== void 0 ? _a : tsconfigDir;
let jsOutDir = (_b = program.getCompilerOptions().outDir) !== null && _b !== void 0 ? _b : tsconfigDir;
let scryptOutDir = pluginOptions.outDir
? path.join(tsconfigDir, pluginOptions.outDir)
: jsOutDir;
if (pluginOptions.debug) {
console.log('activate scrypt-ts transformer plugin');
console.log('transformer loaded with options:', pluginOptions, '\n');
console.log(Array(20).fill('*').join(''), 'path context', Array(20).fill('*').join(''));
console.log(`tsRootDir: ${tsRootDir}\ntsconfigDir: ${tsconfigDir}\njsOutDir: ${jsOutDir}\nscryptOutDir: ${scryptOutDir}`);
console.log(Array(50).fill('*').join(''), '\n');
}
let indexer = new indexerWriter_1.IndexerWriter({ tsconfigDir, scryptOutDir });
let checker = program.getTypeChecker();
/* Apply the transformation */
tsInstance.transform(program.getSourceFiles(), [
transformFile.bind(tsInstance, host, checker, tsRootDir, scryptOutDir, indexer)
], compilerOptions);
return program;
}
exports.default = transformProgram;
function transformFile(host, checker, tsRootDir, scryptOutDir, indexer, ctx) {
return (sourceFile) => {
// skip declaration files of *.d.ts
if (sourceFile.fileName.endsWith('.d.ts')) {
return sourceFile;
}
const compilerOptions = ctx.getCompilerOptions();
let transpiler = new transpiler_1.Transpiler(sourceFile, host, checker, tsRootDir, scryptOutDir, indexer, compilerOptions);
if (!transpiler.isTransformable()) {
return sourceFile;
}
transpiler.transform(allMissImportedLocalSymbols);
const scComponents = transpiler.getSCComponents();
// TODO: process duplicated names.
scComponents.forEach(cls => {
allContractsAST.set(cls.name.getText(), cls);
});
return sourceFile;
};
}
var indexerReader_1 = require("./indexerReader");
Object.defineProperty(exports, "IndexerReader", { enumerable: true, get: function () { return indexerReader_1.IndexerReader; } });
var indexerWriter_2 = require("./indexerWriter");
Object.defineProperty(exports, "IndexerWriter", { enumerable: true, get: function () { return indexerWriter_2.IndexerWriter; } });
//# sourceMappingURL=index.js.map