UNPKG

scrypt-ts-transpiler

Version:

```bash npm i npx scryptlib download npm t ```

91 lines 4.23 kB
"use strict"; 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