{"version":3,"sources":["jsdelivr-header.js","/npm/@zerollup/ts-helpers@1.7.18/src/Tokenizer.ts","/npm/@zerollup/ts-helpers@1.7.18/src/ImportPathsResolver.ts","/npm/@zerollup/ts-helpers@1.7.18/src/Replacer.ts","/npm/@zerollup/ts-helpers@1.7.18/src/createTraverseVisitor.ts"],"names":[],"mappings":"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","file":"/npm/@zerollup/ts-helpers@1.7.18/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@zerollup/ts-helpers@1.7.18/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","export function regExpEscape(s: string): string {\n    return s.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n}\n\nexport class Tokenizer {\n    mask: RegExp\n    tokens: RegExp[]\n    subs: string[]\n\n    constructor(\n        pathKey: string,\n        subs: string[],\n        tokens: string[] = ['*']\n    ) {\n        this.subs = subs\n        this.tokens = []\n        const tokenMask = new RegExp(`(${tokens.map(regExpEscape).join('|')})`, 'g')\n        const mask = pathKey.replace(tokenMask, token => {\n            this.tokens.push(new RegExp(regExpEscape(token), 'g'))\n            return '><'\n        })\n\n        this.mask = new RegExp('^' + regExpEscape(mask).replace(/\\>\\</g, '(?!\\\\.\\\\/)(.*)') + '$')\n    }\n\n    parse(str: string): string[] | void {\n        const {mask, tokens, subs} = this\n        const match = str.match(mask)\n        if (match) {\n            const parsedSubs: string[] = []\n            for (let sub of subs) {\n                for (let i = 1; i < match.length; i++) {\n                    const token = tokens[i - 1]\n                    const replacement = match[i]\n                    sub = sub.replace(token, replacement)\n                }\n                parsedSubs.push(sub)\n            }\n            return parsedSubs\n        }\n    }\n}\n","import * as path from 'path'\nimport {Tokenizer, regExpEscape} from './Tokenizer'\n\nexport interface TSOptions {\n    paths?: Record<string, string[]>\n    baseUrl?: string\n    exclude?: string[] | undefined\n}\n\nexport const winSepRegex = new RegExp(regExpEscape(path.sep), 'g')\nexport const posixSepRegex = /\\//g\n\nexport class ImportPathsResolver {\n    private tokenizers: Tokenizer[]\n    protected baseUrl: string\n\n    constructor(\n        opts: TSOptions\n    ) {\n        const paths = opts.paths || {}\n        const baseUrl = this.baseUrl = opts.baseUrl ? opts.baseUrl.replace(winSepRegex, '\\/') : ''\n\n        const mapBaseUrl: ((v: string) => string) | undefined = baseUrl\n            ? sub => (sub[0] === '/'\n                ? sub\n                : `${baseUrl}/${sub.substring(0, 2) === './' ? sub.substring(2) : sub}`\n            )\n            : undefined\n\n        this.tokenizers = Object.keys(paths)\n            .filter(key => !opts.exclude || !opts.exclude.includes(key))\n            .map(key => new Tokenizer(\n                key,\n                mapBaseUrl ? paths[key].map(mapBaseUrl) : paths[key]\n            ))\n    }\n\n    getImportSuggestions(oldImport: string, fileName: string): string[] | undefined {\n        if (isRelative(oldImport)) return\n\n        for (let tokenizer of this.tokenizers) {\n            const match = tokenizer.parse(oldImport)\n            if (match) {\n                return match.map(p => {\n                    const newPath = path.relative(\n                        fileName,\n                        p.replace(posixSepRegex, path.sep)\n                    ).replace(winSepRegex, '\\/')\n\n                    return isRelative(newPath) ? newPath : ('./' + newPath)\n                })\n            }\n        }\n\n        const defaultPath = path.relative(fileName, this.baseUrl + '/' + oldImport).replace(winSepRegex, '\\/')\n\n        return [ isRelative(defaultPath) ? defaultPath : ('./' + defaultPath) ]\n    }\n}\n\nfunction isRelative(fileName: string) {\n  return fileName === '.' || fileName.startsWith('./') || fileName.startsWith('../')\n}\n","import * as ts from 'typescript'\n\nexport interface ReplacerItem extends ts.TextSpan {\n    start: number\n    length: number\n    replacement: string\n}\n\nexport class Replacer {\n    private items: ReplacerItem[] = []\n    constructor(private sourceText: string) {}\n\n    push(item: ReplacerItem) {\n        this.items.push(item)\n    }\n\n    getReplaced(): void | string {\n        const {items, sourceText} = this\n        if (items.length === 0) return\n        let result = ''\n        let pos = 0\n        for (let item of items) {\n            result += sourceText.substring(pos, item.start) + item.replacement\n            pos = item.start + item.length\n        }\n        result += sourceText.substring(pos)\n\n        return result\n    }\n}\n","import ts from 'typescript'\n\nexport type TraverseVisitor<VisitorContext> = (\n    node: ts.Node,\n    visitorContext: VisitorContext\n) => ts.VisitResult<ts.Node> | undefined\n\nexport function createTraverseVisitor<VisitorContext>(\n    traverseVisitor: TraverseVisitor<VisitorContext>,\n    visitorContext: VisitorContext,\n    ctx: ts.TransformationContext\n): ts.Visitor {\n    return function visitor(node: ts.Node): ts.VisitResult<ts.Node> {\n        return traverseVisitor(node, visitorContext) || ts.visitEachChild(node, visitor, ctx)\n    }\n}\n"]}