UNPKG

sol-merger

Version:

Merges all import files into single file.

375 lines 14.2 kB
"use strict"; var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var _SolidityExportVisitor_inputContent, _SolidityExportVisitor_antlrTree, _SolidityExportVisitor_comments, _ExportVisitor_onVisit; Object.defineProperty(exports, "__esModule", { value: true }); exports.SolidityExportVisitor = void 0; const antlr4ts_1 = require("antlr4ts"); const ParseTreeWalker_1 = require("antlr4ts/tree/ParseTreeWalker"); const types_1 = require("../../types"); const SolidityLexer_1 = require("../generated/SolidityLexer"); const SolidityParser_1 = require("../generated/SolidityParser"); const HIDDEN_CHANNEL = 1; class SolidityExportVisitor { constructor(inputContent) { _SolidityExportVisitor_inputContent.set(this, void 0); _SolidityExportVisitor_antlrTree.set(this, void 0); _SolidityExportVisitor_comments.set(this, []); __classPrivateFieldSet(this, _SolidityExportVisitor_inputContent, inputContent, "f"); const chars = antlr4ts_1.CharStreams.fromString(__classPrivateFieldGet(this, _SolidityExportVisitor_inputContent, "f")); const lexer = new SolidityLexer_1.SolidityLexer(chars); const tokens = new antlr4ts_1.CommonTokenStream(lexer); const parser = new SolidityParser_1.SolidityParser(tokens); __classPrivateFieldSet(this, _SolidityExportVisitor_antlrTree, parser.sourceUnit(), "f"); __classPrivateFieldSet(this, _SolidityExportVisitor_comments, tokens .getRange(0, tokens.size) .filter((t) => t.channel === HIDDEN_CHANNEL), "f"); } visit(onVisit) { const listener = new ExportVisitor((visitResult) => { this.onVisit(visitResult, onVisit); }); ParseTreeWalker_1.ParseTreeWalker.DEFAULT.walk(listener, __classPrivateFieldGet(this, _SolidityExportVisitor_antlrTree, "f")); this.flushComments(onVisit); } onVisit(visitResult, onVisit) { if (!__classPrivateFieldGet(this, _SolidityExportVisitor_comments, "f").length) { return onVisit(visitResult); } this.emitCommentsBefore(visitResult, onVisit); onVisit(visitResult); } emitCommentsBefore(visitResult, onVisit) { while (__classPrivateFieldGet(this, _SolidityExportVisitor_comments, "f").length && __classPrivateFieldGet(this, _SolidityExportVisitor_comments, "f")[0].startIndex < visitResult.start) { const comment = __classPrivateFieldGet(this, _SolidityExportVisitor_comments, "f").shift(); if (!comment) { continue; } onVisit(this.buildComment(comment)); } while (__classPrivateFieldGet(this, _SolidityExportVisitor_comments, "f").length && __classPrivateFieldGet(this, _SolidityExportVisitor_comments, "f")[0].stopIndex < visitResult.end) { __classPrivateFieldGet(this, _SolidityExportVisitor_comments, "f").shift(); } } flushComments(onVisit) { if (!__classPrivateFieldGet(this, _SolidityExportVisitor_comments, "f").length) { return; } __classPrivateFieldGet(this, _SolidityExportVisitor_comments, "f").forEach((comment) => onVisit(this.buildComment(comment))); } buildComment(comment) { return { abstract: false, body: { start: comment.startIndex, end: comment.stopIndex, }, start: comment.startIndex, end: comment.stopIndex, is: null, name: `Comment#${comment.startIndex}`, type: types_1.ExportType.comment, }; } } exports.SolidityExportVisitor = SolidityExportVisitor; _SolidityExportVisitor_inputContent = new WeakMap(), _SolidityExportVisitor_antlrTree = new WeakMap(), _SolidityExportVisitor_comments = new WeakMap(); class ExportVisitor { constructor(onVisit) { _ExportVisitor_onVisit.set(this, void 0); __classPrivateFieldSet(this, _ExportVisitor_onVisit, onVisit, "f"); } enterContractDefinition(ctx) { var _a, _b, _c, _d; if (!ctx.stop) { return; } if (!ctx.children) { return; } const start = ctx.start.startIndex; const end = ctx.stop.stopIndex; const abstract = ctx.Abstract() !== undefined; const name = ctx.identifier(); const inheritance = ctx.getRuleContexts(SolidityParser_1.InheritanceSpecifierListContext); const bodyStart = inheritance.length ? (_a = inheritance[inheritance.length - 1].stop) === null || _a === void 0 ? void 0 : _a.stopIndex : (_b = name.stop) === null || _b === void 0 ? void 0 : _b.stopIndex; const isStart = inheritance.length ? (_c = name.stop) === null || _c === void 0 ? void 0 : _c.stopIndex : null; const isEnd = inheritance.length ? (_d = inheritance[inheritance.length - 1].stop) === null || _d === void 0 ? void 0 : _d.stopIndex : null; const is = isStart && isEnd ? { start: isStart + 1, end: isEnd + 1 } : null; if (!bodyStart) { return; } __classPrivateFieldGet(this, _ExportVisitor_onVisit, "f").call(this, { start, end, abstract, type: types_1.ExportType.contract, body: { start: bodyStart + 1, end, }, is: is, name: name.text, }); } enterStructDefinition(ctx) { if (!(ctx.parent instanceof SolidityParser_1.SourceUnitContext)) { return; } if (!ctx.stop) { return; } if (!ctx.children) { return; } const start = ctx.start.startIndex; const end = ctx.stop.stopIndex; const name = ctx.identifier(); if (!(name === null || name === void 0 ? void 0 : name.stop)) { return; } const bodyStart = name.stop.stopIndex; __classPrivateFieldGet(this, _ExportVisitor_onVisit, "f").call(this, { start, end, abstract: false, type: types_1.ExportType.struct, body: { start: bodyStart + 1, end, }, is: null, name: name.text, }); } enterEnumDefinition(ctx) { if (!(ctx.parent instanceof SolidityParser_1.SourceUnitContext)) { return; } if (!ctx.stop) { return; } if (!ctx.children) { return; } const start = ctx.start.startIndex; const end = ctx.stop.stopIndex; const names = ctx.identifier(); const name = names[0]; if (!(name === null || name === void 0 ? void 0 : name.stop)) { return; } const bodyStart = name.stop.stopIndex; __classPrivateFieldGet(this, _ExportVisitor_onVisit, "f").call(this, { start, end, abstract: false, type: types_1.ExportType.enum, body: { start: bodyStart + 1, end, }, is: null, name: name.text, }); } enterLibraryDefinition(ctx) { var _a; if (!ctx.stop) { return; } if (!ctx.children) { return; } const start = ctx.start.startIndex; const end = ctx.stop.stopIndex; const type = ctx.children[0].text; const name = ctx.identifier(); const bodyStart = (_a = name.stop) === null || _a === void 0 ? void 0 : _a.stopIndex; if (!bodyStart) { return; } __classPrivateFieldGet(this, _ExportVisitor_onVisit, "f").call(this, { start, end, abstract: false, type, body: { start: bodyStart + 1, end, }, is: null, name: name.text, }); } enterInterfaceDefinition(ctx) { var _a, _b, _c, _d; if (!ctx.stop) { return; } if (!ctx.children) { return; } const start = ctx.start.startIndex; const end = ctx.stop.stopIndex; const name = ctx.identifier(); const inheritance = ctx.getRuleContexts(SolidityParser_1.InheritanceSpecifierListContext); const bodyStart = inheritance.length ? (_a = inheritance[inheritance.length - 1].stop) === null || _a === void 0 ? void 0 : _a.stopIndex : (_b = name.stop) === null || _b === void 0 ? void 0 : _b.stopIndex; const isStart = inheritance.length ? (_c = name.stop) === null || _c === void 0 ? void 0 : _c.stopIndex : null; const isEnd = inheritance.length ? (_d = inheritance[inheritance.length - 1].stop) === null || _d === void 0 ? void 0 : _d.stopIndex : null; const is = isStart && isEnd ? { start: isStart + 1, end: isEnd + 1 } : null; if (!bodyStart) { return; } __classPrivateFieldGet(this, _ExportVisitor_onVisit, "f").call(this, { start, end, abstract: false, type: types_1.ExportType.interface, body: { start: bodyStart + 1, end, }, is: is, name: name.text, }); } enterErrorDefinition(ctx) { if (!(ctx.parent instanceof SolidityParser_1.SourceUnitContext)) { return; } if (!ctx.stop) { return; } if (!ctx.children) { return; } const start = ctx.start.startIndex; const end = ctx.stop.stopIndex; const name = ctx.identifier(); if (!(name === null || name === void 0 ? void 0 : name.stop)) { return; } const bodyStart = name.stop.stopIndex; __classPrivateFieldGet(this, _ExportVisitor_onVisit, "f").call(this, { start, end, abstract: false, type: types_1.ExportType.error, body: { start: bodyStart + 1, end, }, is: null, name: name.text, }); } enterConstantVariableDeclaration(ctx) { if (!(ctx.parent instanceof SolidityParser_1.SourceUnitContext)) { return; } if (!ctx.stop) { return; } if (!ctx.children) { return; } const start = ctx.start.startIndex; const end = ctx.stop.stopIndex; const name = ctx.identifier(); const typeName = ctx.typeName(); if (!name.stop) { return; } __classPrivateFieldGet(this, _ExportVisitor_onVisit, "f").call(this, { type: types_1.ExportType.constant, body: { start: name.stop.stopIndex + 1, end: ctx.stop.stopIndex, }, start, end, name: name.text, typeName: typeName.text, }); } enterFunctionDefinition(ctx) { if (!(ctx.parent instanceof SolidityParser_1.SourceUnitContext)) { return; } if (!ctx.stop) { return; } const start = ctx.start.startIndex; const end = ctx.stop.stopIndex; const name = ctx.identifier(); if (!(name === null || name === void 0 ? void 0 : name.stop)) { return; } __classPrivateFieldGet(this, _ExportVisitor_onVisit, "f").call(this, { type: types_1.ExportType.function, start, end, name: name.text, }); } enterUserDefinedValueTypeDefinition(ctx) { if (!(ctx.parent instanceof SolidityParser_1.SourceUnitContext)) { return; } if (!ctx.stop) { return; } const start = ctx.start.startIndex; const end = ctx.stop.stopIndex; const name = ctx.identifier(); if (!(name === null || name === void 0 ? void 0 : name.stop)) { return; } __classPrivateFieldGet(this, _ExportVisitor_onVisit, "f").call(this, { type: types_1.ExportType.userDefinedValueType, start, end, name: name.text, }); } enterUsingDirective(ctx) { if (!(ctx.parent instanceof SolidityParser_1.SourceUnitContext)) { return; } if (!ctx.stop) { return; } const start = ctx.start.startIndex; const end = ctx.stop.stopIndex; const names = ctx.identifierPath(); const name = names.map((n) => n.text).join(',') + `$${types_1.ExportType.usingDirective}`; __classPrivateFieldGet(this, _ExportVisitor_onVisit, "f").call(this, { type: types_1.ExportType.usingDirective, start, end, name, }); } } _ExportVisitor_onVisit = new WeakMap(); //# sourceMappingURL=exportVisitor.js.map