{"version":3,"file":"default-transform-plugin.cjs","sources":["../../../src/transform/default-transform-plugin.ts"],"sourcesContent":["import { types } from 'recast'\nimport { ensureStringArgument } from './utils'\nimport type { TransformImportsConfig, TransformPlugin } from './types'\n\nconst b = types.builders\n\nexport const defaultTransformPlugin: TransformPlugin = {\n  name: 'default-transform',\n  exportName: 'Route',\n  imports: (ctx) => {\n    const imports: TransformImportsConfig = {}\n    const targetModule = `@tanstack/${ctx.target}-router`\n    if (ctx.verboseFileRoutes === false) {\n      imports.banned = [\n        {\n          source: targetModule,\n          specifiers: [\n            { imported: 'createLazyFileRoute' },\n            { imported: 'createFileRoute' },\n          ],\n        },\n      ]\n    } else {\n      if (ctx.lazy) {\n        imports.required = [\n          {\n            source: targetModule,\n            specifiers: [{ imported: 'createLazyFileRoute' }],\n          },\n        ]\n        imports.banned = [\n          {\n            source: targetModule,\n            specifiers: [{ imported: 'createFileRoute' }],\n          },\n        ]\n      } else {\n        imports.required = [\n          {\n            source: targetModule,\n            specifiers: [{ imported: 'createFileRoute' }],\n          },\n        ]\n        imports.banned = [\n          {\n            source: targetModule,\n            specifiers: [{ imported: 'createLazyFileRoute' }],\n          },\n        ]\n      }\n    }\n    return imports\n  },\n  onExportFound: ({ decl, ctx }) => {\n    let appliedChanges = false\n    if (decl.init?.type === 'CallExpression') {\n      const callExpression = decl.init\n      let identifier: types.namedTypes.Identifier | undefined\n      // `const Route = createFileRoute({ ... })`\n      if (callExpression.callee.type === 'Identifier') {\n        identifier = callExpression.callee\n        if (ctx.verboseFileRoutes) {\n          // we need to add the string literal via another CallExpression\n          callExpression.callee = b.callExpression(identifier, [\n            b.stringLiteral(ctx.routeId),\n          ])\n          appliedChanges = true\n        }\n      }\n      // `const Route = createFileRoute('/path')({ ... })`\n      else if (\n        callExpression.callee.type === 'CallExpression' &&\n        callExpression.callee.callee.type === 'Identifier'\n      ) {\n        identifier = callExpression.callee.callee\n        if (!ctx.verboseFileRoutes) {\n          // we need to remove the route id\n          callExpression.callee = identifier\n          appliedChanges = true\n        } else {\n          // check if the route id is correct\n          appliedChanges = ensureStringArgument(\n            callExpression.callee,\n            ctx.routeId,\n            ctx.preferredQuote,\n          )\n        }\n      }\n      if (identifier === undefined) {\n        throw new Error(`expected identifier to be present`)\n      }\n      if (identifier.name === 'createFileRoute' && ctx.lazy) {\n        identifier.name = 'createLazyFileRoute'\n        appliedChanges = true\n      } else if (identifier.name === 'createLazyFileRoute' && !ctx.lazy) {\n        identifier.name = 'createFileRoute'\n        appliedChanges = true\n      }\n    }\n\n    return appliedChanges\n  },\n}\n"],"names":["types","ensureStringArgument"],"mappings":";;;;AAIA,MAAM,IAAIA,OAAM,MAAA;AAET,MAAM,yBAA0C;AAAA,EACrD,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,SAAS,CAAC,QAAQ;AAChB,UAAM,UAAkC,CAAC;AACnC,UAAA,eAAe,aAAa,IAAI,MAAM;AACxC,QAAA,IAAI,sBAAsB,OAAO;AACnC,cAAQ,SAAS;AAAA,QACf;AAAA,UACE,QAAQ;AAAA,UACR,YAAY;AAAA,YACV,EAAE,UAAU,sBAAsB;AAAA,YAClC,EAAE,UAAU,kBAAkB;AAAA,UAAA;AAAA,QAChC;AAAA,MAEJ;AAAA,IAAA,OACK;AACL,UAAI,IAAI,MAAM;AACZ,gBAAQ,WAAW;AAAA,UACjB;AAAA,YACE,QAAQ;AAAA,YACR,YAAY,CAAC,EAAE,UAAU,sBAAuB,CAAA;AAAA,UAAA;AAAA,QAEpD;AACA,gBAAQ,SAAS;AAAA,UACf;AAAA,YACE,QAAQ;AAAA,YACR,YAAY,CAAC,EAAE,UAAU,kBAAmB,CAAA;AAAA,UAAA;AAAA,QAEhD;AAAA,MAAA,OACK;AACL,gBAAQ,WAAW;AAAA,UACjB;AAAA,YACE,QAAQ;AAAA,YACR,YAAY,CAAC,EAAE,UAAU,kBAAmB,CAAA;AAAA,UAAA;AAAA,QAEhD;AACA,gBAAQ,SAAS;AAAA,UACf;AAAA,YACE,QAAQ;AAAA,YACR,YAAY,CAAC,EAAE,UAAU,sBAAuB,CAAA;AAAA,UAAA;AAAA,QAEpD;AAAA,MAAA;AAAA,IACF;AAEK,WAAA;AAAA,EACT;AAAA,EACA,eAAe,CAAC,EAAE,MAAM,UAAU;;AAChC,QAAI,iBAAiB;AACjB,UAAA,UAAK,SAAL,mBAAW,UAAS,kBAAkB;AACxC,YAAM,iBAAiB,KAAK;AACxB,UAAA;AAEA,UAAA,eAAe,OAAO,SAAS,cAAc;AAC/C,qBAAa,eAAe;AAC5B,YAAI,IAAI,mBAAmB;AAEV,yBAAA,SAAS,EAAE,eAAe,YAAY;AAAA,YACnD,EAAE,cAAc,IAAI,OAAO;AAAA,UAAA,CAC5B;AACgB,2BAAA;AAAA,QAAA;AAAA,MACnB,WAIA,eAAe,OAAO,SAAS,oBAC/B,eAAe,OAAO,OAAO,SAAS,cACtC;AACA,qBAAa,eAAe,OAAO;AAC/B,YAAA,CAAC,IAAI,mBAAmB;AAE1B,yBAAe,SAAS;AACP,2BAAA;AAAA,QAAA,OACZ;AAEY,2BAAAC,MAAA;AAAA,YACf,eAAe;AAAA,YACf,IAAI;AAAA,YACJ,IAAI;AAAA,UACN;AAAA,QAAA;AAAA,MACF;AAEF,UAAI,eAAe,QAAW;AACtB,cAAA,IAAI,MAAM,mCAAmC;AAAA,MAAA;AAErD,UAAI,WAAW,SAAS,qBAAqB,IAAI,MAAM;AACrD,mBAAW,OAAO;AACD,yBAAA;AAAA,MAAA,WACR,WAAW,SAAS,yBAAyB,CAAC,IAAI,MAAM;AACjE,mBAAW,OAAO;AACD,yBAAA;AAAA,MAAA;AAAA,IACnB;AAGK,WAAA;AAAA,EAAA;AAEX;;"}