"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.name=exports.version=void 0,exports.factory=factory;const typescript_1=__importDefault(require("typescript"));exports.version="1.1",exports.name="ts-jest-mock-import-meta";const defaultMetaObjectReplacement={url:({fileName:e})=>`file://${e}`};function factory(e,r){const a=n=>typescript_1.default.isMetaProperty(n)&&n.keywordToken===typescript_1.default.SyntaxKind.ImportKeyword&&n.name.text==="meta";return n=>o=>{const c=f=>a(f)?typescript_1.default.factory.createObjectLiteralExpression(createImportMetaReplacement(r?.metaObjectReplacement??defaultMetaObjectReplacement,{fileName:o.fileName})):typescript_1.default.visitEachChild(f,c,n);return typescript_1.default.visitNode(o,c)}}const createPropertyAssignmentValue=(e,r,a)=>{let t=typeof r=="function"?r(a):r;switch(typeof t){case"number":return typescript_1.default.factory.createNumericLiteral(t);case"string":return e==="resolve"?metaResolve(t):typescript_1.default.factory.createStringLiteral(t);case"boolean":return t?typescript_1.default.factory.createTrue():typescript_1.default.factory.createFalse();case"object":return typescript_1.default.factory.createObjectLiteralExpression(createImportMetaReplacement(t,a));default:throw new Error(`Property '${e}': value '${t}' type '${typeof t}' is not supported.`)}};function metaResolve(e){const r=[typescript_1.default.factory.createParameterDeclaration(void 0,void 0,typescript_1.default.factory.createIdentifier("moduleName"),void 0,typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.StringKeyword),void 0)],a=typescript_1.default.factory.createReturnStatement(typescript_1.default.factory.createStringLiteral(e)),t=typescript_1.default.factory.createBlock([a],!0);return typescript_1.default.factory.createArrowFunction(void 0,void 0,r,typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.StringKeyword),typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken),t)}function createImportMetaReplacement(e,r){let a=typeof e=="object"?e:e(r);return Object.entries(a).reduce((t,[n,o])=>(t.push(typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier(n),createPropertyAssignmentValue(n,o,r))),t),[])}
