{"version":3,"sources":["/Users/wessberg/Developer/libraries/DI-compiler/dist/index.cjs","../src/transformer/after/visitor/visit-root-block.ts","../src/transformer/after/visitor/visit-root-block-source-file.ts","../src/transformer/after/visitor/visit-root-block-block.ts","../src/transformer/after/visitor/visit-define-array-literal-expression.ts","../src/transformer/after/visitor/visit-node.ts","../src/transformer/after/after-transformer.ts","../src/transformer/di.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACA;ACNO,SAAS,cAAA,CAAe,OAAA,EAAyD;AACvF,EAAA,MAAM,EAAC,IAAA,EAAM,UAAA,EAAY,QAAO,EAAA,EAAI,OAAA;AACpC,EAAA,MAAM,EAAC,WAAU,EAAA,EAAI,OAAA;AAErB,EAAA,MAAM,uBAAA,EAAyC,CAAC,CAAA;AAEhD,EAAA,IAAA,CAAA,MAAW,eAAA,oBAAkB,OAAA,CAAQ,qCAAA,CAAsC,GAAA,CAAI,UAAA,CAAW,QAAQ,CAAA,0BAAK,IAAI,GAAA,CAAI,GAAA,EAAG;AACjH,IAAA,GAAA,CAAI,wDAAA,cAAyB,EAAgB,IAAA,EAAM,OAAO,CAAA,EAAG,QAAA;AAE7D,IAAA,MAAM,uBAAA,EAAyB,iFAAA,cAAkD,EAAgB,OAAO,CAAA;AAExG,IAAA,GAAA,CAAI,uBAAA,GAA0B,IAAA,EAAM;AACnC,MAAA,sBAAA,CAAuB,IAAA,CAAK,sBAAsB,CAAA;AAAA,IACnD;AAAA,EACD;AAEA,EAAA,MAAM,eAAA,EAAiB,6DAAA,IAA8B,EAAM,UAAU,CAAA;AAErE,EAAA,OAAO,CAAC,GAAG,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,CAAA,EAAG,cAAc,CAAA,EAAG,GAAG,sBAAA,EAAwB,GAAG,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,cAAc,CAAC,CAAA;AACzH;ADEA;AACA;AEvBO,SAAS,wBAAA,CAAyB,OAAA,EAAsE;AAC9G,EAAA,MAAM,EAAC,IAAA,EAAM,QAAO,EAAA,EAAI,OAAA;AACxB,EAAA,MAAM,EAAC,QAAO,EAAA,EAAI,OAAA;AAElB,EAAA,OAAO,OAAA,CAAQ,gBAAA;AAAA,IACd,IAAA;AAAA,IACA,cAAA,CAAe,OAAO,CAAA;AAAA,IACtB,IAAA,CAAK,iBAAA;AAAA,IACL,IAAA,CAAK,eAAA;AAAA,IACL,IAAA,CAAK,uBAAA;AAAA,IACL,IAAA,CAAK,eAAA;AAAA,IACL,IAAA,CAAK;AAAA,EACN,CAAA;AACD;AFwBA;AACA;AGtCO,SAAS,mBAAA,CAAoB,OAAA,EAAiE;AACpG,EAAA,MAAM,EAAC,IAAA,EAAM,QAAO,EAAA,EAAI,OAAA;AACxB,EAAA,MAAM,EAAC,QAAO,EAAA,EAAI,OAAA;AAElB,EAAA,OAAO,OAAA,CAAQ,WAAA,CAAY,IAAA,EAAM,cAAA,CAAe,OAAO,CAAC,CAAA;AACzD;AHuCA;AACA;AI9CO,SAAS,iCAAA,CAAkC,OAAA,EAAoF;AACrI,EAAA,MAAM,EAAC,IAAA,EAAM,UAAA,EAAY,QAAO,EAAA,EAAI,OAAA;AACpC,EAAA,MAAM,EAAC,UAAA,EAAY,QAAO,EAAA,EAAI,OAAA;AAE9B,EAAA,MAAM,yBAAA,EAA4C,CAAC,CAAA;AAEnD,EAAA,IAAA,CAAA,MAAW,eAAA,oBAAkB,OAAA,CAAQ,qCAAA,CAAsC,GAAA,CAAI,UAAA,CAAW,QAAQ,CAAA,0BAAK,IAAI,GAAA,CAAI,GAAA,EAAG;AAEjH,IAAA,GAAA,CAAI,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,CAAA,OAAA,EAAA,GAAW,UAAA,CAAW,mBAAA,CAAoB,OAAO,EAAA,GAAK,OAAA,CAAQ,KAAA,IAAS,cAAA,CAAe,eAAe,CAAA,EAAG;AAC9H,MAAA,QAAA;AAAA,IACD;AAEA,IAAA,wBAAA,CAAyB,IAAA,CAAK,OAAA,CAAQ,mBAAA,CAAoB,cAAA,CAAe,eAAe,CAAC,CAAA;AAAA,EAC1F;AAEA,EAAA,GAAA,CAAI,OAAA,CAAQ,8BAAA,CAA+B,GAAA,CAAI,UAAA,CAAW,QAAQ,EAAA,IAAM,IAAA,EAAM;AAC7E,IAAA,wBAAA,CAAyB,IAAA,CAAK,OAAA,CAAQ,mBAAA,CAAoB,OAAO,CAAC,CAAA;AAAA,EACnE;AAEA,EAAA,GAAA,CAAI,wBAAA,CAAyB,OAAA,EAAS,CAAA,EAAG;AACxC,IAAA,OAAO,IAAA;AAAA,EACR;AAEA,EAAA,OAAO,OAAA,CAAQ,4BAAA,CAA6B,IAAA,EAAM,CAAC,GAAG,IAAA,CAAK,QAAA,EAAU,GAAG,wBAAwB,CAAC,CAAA;AAClG;AJyCA;AACA;AK/DO,SAAS,SAAA,CAA6B,OAAA,EAA0D;AACtG,EAAA,MAAM;AAAA,IACL,IAAA;AAAA,IACA,iBAAA;AAAA,IACA,4BAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA,EAAS,EAAC,WAAU;AAAA,EACrB,EAAA,EAAI,OAAA;AACJ,EAAA,GAAA,CAAI,UAAA,CAAW,YAAA,CAAa,IAAI,EAAA,GAAK,UAAA,IAAc,IAAA,EAAM;AACxD,IAAA,OAAO,wBAAA,CAAyB,EAAC,GAAG,OAAA,EAAS,KAAI,CAAC,CAAA;AAAA,EACnD,EAAA,KAAA,GAAA,CAAW,UAAA,CAAW,OAAA,CAAQ,IAAI,EAAA,GAAK,UAAA,IAAc,IAAA,EAAM;AAC1D,IAAA,OAAO,mBAAA,CAAoB,EAAC,GAAG,OAAA,EAAS,KAAI,CAAC,CAAA;AAAA,EAC9C,EAAA,KAAA,GAAA,CAAW,UAAA,CAAW,wBAAA,CAAyB,IAAI,EAAA,GAAK,6BAAA,IAAiC,IAAA,EAAM;AAC9F,IAAA,OAAO,iCAAA,CAAkC;AAAA,MACxC,GAAG,OAAA;AAAA,MACH;AAAA,IACD,CAAC,CAAA;AAAA,EACF;AAEA,EAAA,OAAO,iBAAA,CAAkB,OAAA,CAAQ,IAAI,CAAA;AACtC;ALgEA;AACA;AMtFA,8CAAgC;AAQzB,SAAS,gBAAA,CAAiB,OAAA,EAAmE;AACnG,EAAA,OAAO,CAAA,qBAAA,EAAA,GAAyB;AAC/B,IAAA,MAAM,QAAA,EAAU,8CAAA,iBAAmB,qBAAA,CAAqD,OAAA,UAAW,OAAA,CAAQ,YAAU,CAAA;AAErH,IAAA,OAAO,CAAA,UAAA,EAAA,GACN,mBAAA,CAAoB,UAAA,EAAY;AAAA,MAC/B,GAAG,OAAA;AAAA,MACH,qBAAA;AAAA,MACA;AAAA,IACD,CAAC,CAAA;AAAA,EACH,CAAA;AACD;AAEA,SAAS,mBAAA,CAAoB,UAAA,EAAqC,OAAA,EAAwC;AAIzG,EAAA,GAAA,iBAAI,UAAA,mBAAW,QAAA,6BAAU,UAAA,GAAW,IAAA,EAAM;AACzC,IAAA,MAAM,UAAA,kBAAY,IAAI,GAAA,CAAI,CAAA;AAC1B,IAAA,MAAM,SAAA,EAAW,UAAA,CAAW,QAAA,CAAS,OAAA,CAAQ,MAAA,CAAO,CAAA,MAAA,EAAA,GAAU;AAC7D,MAAA,GAAA,CAAI,SAAA,CAAU,GAAA,CAAI,MAAA,CAAO,IAAI,CAAA,EAAG,OAAO,KAAA;AACvC,MAAA,SAAA,CAAU,GAAA,CAAI,MAAA,CAAO,IAAI,CAAA;AACzB,MAAA,OAAO,IAAA;AAAA,IACR,CAAC,CAAA;AAGD,IAAA,GAAA,CAAI,QAAA,CAAS,OAAA,IAAW,UAAA,CAAW,QAAA,CAAS,OAAA,CAAQ,MAAA,EAAQ;AAC3D,MAAA,UAAA,CAAW,QAAA,CAAS,QAAA,EAAU,QAAA;AAAA,IAC/B;AAAA,EACD;AAEA,EAAA,MAAM,eAAA,EAA4E;AAAA,IACjF,OAAA;AAAA,IACA,4BAAA,EAA8B,+DAAA,UAAgC,EAAY,OAAO,CAAA;AAAA,IACjF,SAAA,EAAW,4CAAA,UAAa,EAAY,OAAO,CAAA;AAAA,IAE3C,YAAA,EAAc,CAAA,IAAA,EAAA,GACb,SAAA,CAAU;AAAA,MACT,GAAG,cAAA;AAAA,MACH,UAAA;AAAA,MACA;AAAA,IACD,CAAC,CAAA;AAAA,IACF,iBAAA,EAAmB,CAAA,IAAA,EAAA,GAClB,OAAA,CAAQ,UAAA,CAAW,cAAA;AAAA,MAClB,IAAA;AAAA,MACA,CAAA,MAAA,EAAA,GACC,SAAA,CAAU;AAAA,QACT,GAAG,cAAA;AAAA,QACH,UAAA;AAAA,QACA,IAAA,EAAM;AAAA,MACP,CAAC,CAAA;AAAA,MACF,OAAA,CAAQ;AAAA,IACT;AAAA,EACF,CAAA;AAEA,EAAA,OAAO,cAAA,CAAe,YAAA,CAAa,UAAU,CAAA;AAC9C;ANmEA;AACA;AOhIO,SAAS,EAAA,CAAG,OAAA,EAA2C;AAC7D,EAAA,MAAM,mBAAA,EAAqB,qDAAA,OAA6B,CAAA;AAExD,EAAA,OAAO;AAAA,IACN,MAAA,EAAQ,CAAC,iDAAA,kBAAoC,CAAC,CAAA;AAAA,IAC9C,KAAA,EAAO,kBAAA,CAAmB,6BAAA,EAA+B,CAAC,gBAAA,CAAiB,kBAAkB,CAAC,EAAA,EAAI,CAAC;AAAA,EACpG,CAAA;AACD;APiIA;AACE;AACA;AACF,iEAAC","file":"/Users/wessberg/Developer/libraries/DI-compiler/dist/index.cjs","sourcesContent":[null,"import type {TS} from \"../../../type/type.js\";\nimport type {AfterVisitorOptions} from \"../after-visitor-options.js\";\nimport {generateImportStatementForImportedSymbolInContext, getRootBlockInsertionPosition, isImportedSymbolImported} from \"../../../util/ts-util.js\";\nimport type {RootBlock} from \"../../../type/root-block.js\";\n\nexport function visitRootBlock(options: AfterVisitorOptions<RootBlock>): TS.Statement[] {\n\tconst {node, sourceFile, context} = options;\n\tconst {typescript} = context;\n\n\tconst leadingExtraStatements: TS.Statement[] = [];\n\n\tfor (const importedSymbol of context.sourceFileToRequiredImportedSymbolSet.get(sourceFile.fileName) ?? new Set()) {\n\t\tif (isImportedSymbolImported(importedSymbol, node, context)) continue;\n\n\t\tconst missingImportStatement = generateImportStatementForImportedSymbolInContext(importedSymbol, context);\n\n\t\tif (missingImportStatement != null) {\n\t\t\tleadingExtraStatements.push(missingImportStatement);\n\t\t}\n\t}\n\n\tconst insertPosition = getRootBlockInsertionPosition(node, typescript);\n\n\treturn [...node.statements.slice(0, insertPosition), ...leadingExtraStatements, ...node.statements.slice(insertPosition)];\n}\n","import type {TS} from \"../../../type/type.js\";\nimport type {AfterVisitorOptions} from \"../after-visitor-options.js\";\nimport {visitRootBlock} from \"./visit-root-block.js\";\n\nexport function visitRootBlockSourceFile(options: AfterVisitorOptions<TS.SourceFile>): TS.VisitResult<TS.Node> {\n\tconst {node, context} = options;\n\tconst {factory} = context;\n\n\treturn factory.updateSourceFile(\n\t\tnode,\n\t\tvisitRootBlock(options),\n\t\tnode.isDeclarationFile,\n\t\tnode.referencedFiles,\n\t\tnode.typeReferenceDirectives,\n\t\tnode.hasNoDefaultLib,\n\t\tnode.libReferenceDirectives\n\t);\n}\n","import type {TS} from \"../../../type/type.js\";\nimport type {AfterVisitorOptions} from \"../after-visitor-options.js\";\nimport {visitRootBlock} from \"./visit-root-block.js\";\n\nexport function visitRootBlockBlock(options: AfterVisitorOptions<TS.Block>): TS.VisitResult<TS.Node> {\n\tconst {node, context} = options;\n\tconst {factory} = context;\n\n\treturn factory.updateBlock(node, visitRootBlock(options));\n}\n","import type {TS} from \"../../../type/type.js\";\nimport type {AfterVisitorOptions} from \"../after-visitor-options.js\";\n\nexport function visitDefineArrayLiteralExpression(options: AfterVisitorOptions<TS.ArrayLiteralExpression>): TS.ArrayLiteralExpression {\n\tconst {node, sourceFile, context} = options;\n\tconst {typescript, factory} = context;\n\n\tconst trailingExtraExpressions: TS.Expression[] = [];\n\n\tfor (const importedSymbol of context.sourceFileToRequiredImportedSymbolSet.get(sourceFile.fileName) ?? new Set()) {\n\t\t// Skip the node if it is already declared as a dependency\n\t\tif (node.elements.some(element => typescript.isStringLiteralLike(element) && element.text === importedSymbol.moduleSpecifier)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\ttrailingExtraExpressions.push(factory.createStringLiteral(importedSymbol.moduleSpecifier));\n\t}\n\n\tif (context.sourceFileToAddTslibDefinition.get(sourceFile.fileName) === true) {\n\t\ttrailingExtraExpressions.push(factory.createStringLiteral(\"tslib\"));\n\t}\n\n\tif (trailingExtraExpressions.length < 1) {\n\t\treturn node;\n\t}\n\n\treturn factory.updateArrayLiteralExpression(node, [...node.elements, ...trailingExtraExpressions]);\n}\n","import type {TS} from \"../../../type/type.js\";\nimport {visitRootBlockSourceFile} from \"./visit-root-block-source-file.js\";\nimport type {AfterVisitorOptions} from \"../after-visitor-options.js\";\nimport {visitRootBlockBlock} from \"./visit-root-block-block.js\";\nimport {visitDefineArrayLiteralExpression} from \"./visit-define-array-literal-expression.js\";\n\nexport function visitNode<T extends TS.Node>(options: AfterVisitorOptions<T>): TS.VisitResult<TS.Node> {\n\tconst {\n\t\tnode,\n\t\tchildContinuation,\n\t\tdefineArrayLiteralExpression,\n\t\trootBlock,\n\t\tcontext: {typescript}\n\t} = options;\n\tif (typescript.isSourceFile(node) && rootBlock === node) {\n\t\treturn visitRootBlockSourceFile({...options, node});\n\t} else if (typescript.isBlock(node) && rootBlock === node) {\n\t\treturn visitRootBlockBlock({...options, node});\n\t} else if (typescript.isArrayLiteralExpression(node) && defineArrayLiteralExpression === node) {\n\t\treturn visitDefineArrayLiteralExpression({\n\t\t\t...options,\n\t\t\tnode\n\t\t});\n\t}\n\n\treturn childContinuation(options.node);\n}\n","import type {BaseVisitorContext, VisitorContext} from \"../visitor-context.js\";\nimport type {TS} from \"../../type/type.js\";\nimport type {AfterVisitorOptions} from \"./after-visitor-options.js\";\nimport {visitNode} from \"./visitor/visit-node.js\";\nimport {getDefineArrayLiteralExpression, getRootBlock} from \"../../util/ts-util.js\";\nimport {ensureNodeFactory} from \"compatfactory\";\n\ntype SourceFileWithEmitNodes = TS.SourceFile & {\n\temitNode?: {\n\t\thelpers?: TS.EmitHelper[];\n\t};\n};\n\nexport function afterTransformer(context: BaseVisitorContext): TS.TransformerFactory<TS.SourceFile> {\n\treturn transformationContext => {\n\t\tconst factory = ensureNodeFactory((transformationContext as {factory?: TS.NodeFactory}).factory ?? context.typescript);\n\n\t\treturn sourceFile =>\n\t\t\ttransformSourceFile(sourceFile, {\n\t\t\t\t...context,\n\t\t\t\ttransformationContext,\n\t\t\t\tfactory\n\t\t\t});\n\t};\n}\n\nfunction transformSourceFile(sourceFile: SourceFileWithEmitNodes, context: VisitorContext): TS.SourceFile {\n\t// For TypeScript versions below 3.5, there may be instances\n\t// where EmitHelpers such as __importDefault or __importStar is duplicated.\n\t// For these TypeScript versions, well have to guard against this behavior\n\tif (sourceFile.emitNode?.helpers != null) {\n\t\tconst seenNames = new Set();\n\t\tconst filtered = sourceFile.emitNode.helpers.filter(helper => {\n\t\t\tif (seenNames.has(helper.name)) return false;\n\t\t\tseenNames.add(helper.name);\n\t\t\treturn true;\n\t\t});\n\n\t\t// Reassign the emitNodes if they changed\n\t\tif (filtered.length !== sourceFile.emitNode.helpers.length) {\n\t\t\tsourceFile.emitNode.helpers = filtered;\n\t\t}\n\t}\n\n\tconst visitorOptions: Omit<AfterVisitorOptions<TS.Node>, \"node\" | \"sourceFile\"> = {\n\t\tcontext,\n\t\tdefineArrayLiteralExpression: getDefineArrayLiteralExpression(sourceFile, context),\n\t\trootBlock: getRootBlock(sourceFile, context),\n\n\t\tcontinuation: node =>\n\t\t\tvisitNode({\n\t\t\t\t...visitorOptions,\n\t\t\t\tsourceFile,\n\t\t\t\tnode\n\t\t\t}),\n\t\tchildContinuation: node =>\n\t\t\tcontext.typescript.visitEachChild(\n\t\t\t\tnode,\n\t\t\t\tcbNode =>\n\t\t\t\t\tvisitNode({\n\t\t\t\t\t\t...visitorOptions,\n\t\t\t\t\t\tsourceFile,\n\t\t\t\t\t\tnode: cbNode\n\t\t\t\t\t}),\n\t\t\t\tcontext.transformationContext\n\t\t\t)\n\t};\n\n\treturn visitorOptions.continuation(sourceFile) as TS.SourceFile;\n}\n","import type {TS} from \"../type/type.js\";\nimport type {DiOptions} from \"./di-options.js\";\nimport {beforeTransformer} from \"./before/before-transformer.js\";\nimport {afterTransformer} from \"./after/after-transformer.js\";\nimport {getBaseVisitorContext} from \"./get-base-visitor-context.js\";\n\n/**\n * CustomTransformer that associates constructor arguments with any given class declaration\n */\nexport function di(options: DiOptions): TS.CustomTransformers {\n\tconst baseVisitorContext = getBaseVisitorContext(options);\n\n\treturn {\n\t\tbefore: [beforeTransformer(baseVisitorContext)],\n\t\tafter: baseVisitorContext.needsImportPreservationLogic ? [afterTransformer(baseVisitorContext)] : []\n\t};\n}\n"]}