UNPKG

loadable-transformer-ts5

Version:
89 lines (88 loc) 3.83 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.emitGlobalFunction = exports.removeMatchingLeadingComments = exports.getLeadingComments = exports.createObjectMethod = exports.getImportArg = void 0; var typescript_1 = __importDefault(require("typescript")); function getImportArg(callNode) { return callNode.arguments[0]; } exports.getImportArg = getImportArg; function createObjectMethod(name, args, block) { return typescript_1.default.factory.createMethodDeclaration([], undefined, name, undefined, [], args.map(function (name) { return typescript_1.default.factory.createParameterDeclaration(undefined, undefined, name); }), undefined, block); } exports.createObjectMethod = createObjectMethod; function visitEachLeadingComments(node, cb) { var src = node.getSourceFile(); // const text = src.getFullText(); var text = node.getFullText(); var ranges = typescript_1.default.getLeadingCommentRanges(text, 0); if (!ranges) return []; var ret = []; for (var _i = 0, ranges_1 = ranges; _i < ranges_1.length; _i++) { var range = ranges_1[_i]; var comment = __assign(__assign({}, range), { text: text.slice(range.pos, range.end) }); if (cb(comment) === false) break; } return node; } function getLeadingComments(node) { var ret = []; visitEachLeadingComments(node, function (comment) { if (comment.kind === typescript_1.default.SyntaxKind.SingleLineCommentTrivia) { ret.push(comment.text.slice(2)); } else if (comment.kind == typescript_1.default.SyntaxKind.MultiLineCommentTrivia) { ret.push(comment.text.slice(2, comment.text.length - 2)); } }); return ret; } exports.getLeadingComments = getLeadingComments; function removeMatchingLeadingComments(node, ctx, condition) { return visitEachLeadingComments(node, function (comment) { if (condition.test(comment.text)) { var w = node.getLeadingTriviaWidth(); var removeComment_1 = function (x) { if (x.getFullStart() === node.getFullStart()) { typescript_1.default.setTextRange(x, { pos: x.getStart(), end: x.getEnd() }); } return typescript_1.default.visitEachChild(x, removeComment_1, ctx); }; typescript_1.default.visitEachChild(node, removeComment_1, ctx); var head = node.getSourceFile().text.slice(0, node.getFullStart()); var tail = node.getSourceFile().text.slice(node.getStart()); node.getSourceFile().text = head + ''.padStart(w) + tail; typescript_1.default.setTextRange(node, { pos: node.getStart(), end: node.getEnd() }); return false; } }); } exports.removeMatchingLeadingComments = removeMatchingLeadingComments; function emitGlobalFunction(ctx, helperKey, text) { var helpers = ctx.readEmitHelpers(); if (helpers) { helpers.filter(function (helper) { return helper.name !== helperKey; }).forEach(function (helper) { return ctx.requestEmitHelper(helper); }); } ctx.requestEmitHelper({ name: helperKey, priority: 0, scoped: false, text: text, }); } exports.emitGlobalFunction = emitGlobalFunction;