{
  "version": 3,
  "sources": ["../../../src/compiler/babel.ts", "../../../src/compiler/utils.ts", "../../../src/index.ts"],
  "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { PRPCPluginOptions } from '.'\nimport * as babel from '@babel/core'\nimport {\n  addRequestIfNeeded,\n  appendSession,\n  cleanOutParams,\n  getFunctionArgs,\n  getNodeInfo,\n  handleMw,\n  importIfNotThere,\n  onProgramExit,\n  shiftMiddleware,\n} from './utils'\n\nexport const packageSource = `@solid-mediakit/prpc`\n\nexport function createTransform$(opts?: PRPCPluginOptions<any>) {\n  return function transform$({\n    types: t,\n    template: temp,\n  }: {\n    types: typeof babel.types\n    template: typeof babel.template\n  }): babel.PluginObj {\n    return {\n      visitor: {\n        Program: {\n          exit(path) {\n            onProgramExit(t, path)\n          },\n        },\n        CallExpression(path, state) {\n          const currentFileName = state.file.opts.filename\n          const nodeInfo = getNodeInfo(\n            path,\n            t,\n            currentFileName!,\n            opts?.advanced,\n          )\n          if (nodeInfo.isMiddleware) {\n            handleMw(t, path)\n          } else if (nodeInfo.isGet) {\n            importIfNotThere(path, t, 'getRequestEvent', 'solid-js/web')\n            importIfNotThere(path, t, nodeInfo.isGet)\n\n            const args = getFunctionArgs(path, t, nodeInfo)!\n\n            const payload = t.objectProperty(\n              t.identifier('input$'),\n              t.identifier('_$$payload'),\n            )\n\n            const usingMw = shiftMiddleware(\n              temp,\n              t,\n              path,\n              args.serverFunction,\n              nodeInfo.originalName,\n              nodeInfo._shouldUseMw,\n            )\n            appendSession(\n              path,\n              t,\n              temp,\n              args.serverFunction,\n              args.protected.value,\n              opts,\n            )\n            addRequestIfNeeded(args.serverFunction, t, path, usingMw)\n            cleanOutParams('input$', path, '_$$payload', t)\n            if (args.serverFunction?.params) {\n              args.serverFunction.params[0] = t.objectPattern([payload])\n            }\n\n            if (\n              args.zodSchema &&\n              !t.isIdentifier(args.zodSchema, { name: 'undefined' })\n            ) {\n              importIfNotThere(path, t, 'validateSchema')\n              const asyncParse = temp(\n                `const _$$validated = await validateSchema(_$$payload, %%zodSchema%%);`,\n              )({ zodSchema: args.zodSchema })\n              const ifStatement = t.ifStatement(\n                t.binaryExpression(\n                  'instanceof',\n                  t.identifier('_$$validated'),\n                  t.identifier('Response'),\n                ),\n                t.returnStatement(t.identifier('_$$validated')),\n              )\n              args.serverFunction.body.body.unshift(asyncParse, ifStatement)\n              if (path.node.arguments.length > 0) {\n                path.node.arguments.splice(0, 1)\n              }\n\n              path.traverse({\n                Identifier(innerPath: any) {\n                  if (\n                    innerPath.node?.name === '_$$payload' &&\n                    innerPath.scope?.path?.listKey !== 'params'\n                  ) {\n                    if (\n                      innerPath.parentPath.node.type !== 'CallExpression' ||\n                      innerPath.parentPath.node.callee?.name !==\n                        'validateSchema'\n                    ) {\n                      innerPath.node.name = '_$$validated'\n                    }\n                  }\n                },\n              })\n            }\n\n            const destructuring = args.serverFunction?.params?.[0]\n            if (destructuring && t.isObjectPattern(destructuring)) {\n              destructuring.properties = destructuring.properties.filter(\n                (p: any) => p.key?.name !== 'event$' && p.key?.name !== 'ctx$',\n              )\n            }\n            const originFn = t.arrowFunctionExpression(\n              args._method === 'GET'\n                ? [t.identifier('_$$payload')]\n                : args.serverFunction.params,\n              args.serverFunction.body,\n              true,\n            )\n\n            const expr = t.expressionStatement(t.stringLiteral('use server'))\n            if (Array.isArray((originFn.body as any)?.body)) {\n              ;(originFn.body as any).body.unshift(expr)\n            } else {\n              ;(originFn.body as any) = t.blockStatement([\n                expr,\n                t.returnStatement(originFn.body as any),\n              ])\n            }\n\n            if (args._method === 'GET') {\n              importIfNotThere(\n                path,\n                t,\n                args._cache ? 'query' : 'GET',\n                args._cache ? '@solidjs/router' : '@solidjs/start',\n              )\n            }\n\n            const wrappedArg =\n              args._method === 'GET'\n                ? t.callExpression(\n                    t.identifier(args._cache ? 'query' : 'GET'),\n                    [originFn],\n                  )\n                : originFn\n\n            const props = t.objectExpression([\n              t.objectProperty(t.identifier('protected'), args.protected),\n              t.objectProperty(t.identifier('key'), args.key),\n              t.objectProperty(\n                t.identifier('method'),\n                t.stringLiteral(args._method),\n              ),\n              t.objectProperty(\n                t.identifier('type'),\n                t.stringLiteral(args._fnType),\n              ),\n            ])\n            if (nodeInfo.isWrapped) {\n              path.node.callee = t.identifier(nodeInfo.isGet)\n            }\n            path.node.arguments = [wrappedArg, props]\n          }\n        },\n      },\n    }\n  }\n}\n\nexport async function compilePRPC(\n  code: string,\n  id: string,\n  opts?: PRPCPluginOptions<any>,\n) {\n  const plugins: babel.ParserOptions['plugins'] = ['typescript', 'jsx']\n  const transform$ = createTransform$(opts)\n  const transformed = await babel.transformAsync(code, {\n    presets: [['@babel/preset-typescript'], ...(opts?.babel?.presets ?? [])],\n    parserOpts: {\n      plugins,\n    },\n    plugins: [[transform$], ...(opts?.babel?.plugins ?? [])],\n    filename: id,\n  })\n  if (transformed) {\n    if (opts?.log) {\n      console.log(id, transformed.code)\n    }\n    return {\n      code: transformed.code ?? '',\n      map: transformed.map,\n    }\n  }\n  return null\n}\n", "import * as babel from '@babel/core'\nimport { packageSource } from './babel'\nimport { resolve, dirname } from 'path'\nimport { readFileSync } from 'fs'\nimport { PRPCPluginOptions } from '.'\n\nexport const addRequestIfNeeded = (\n  serverFunction: any,\n  t: typeof babel.types,\n  path: babel.NodePath<babel.types.CallExpression>,\n  usingMw: boolean,\n) => {\n  const isEventReferenced = (\n    functionPath: babel.NodePath<\n      babel.types.Function | babel.types.CallExpression\n    >,\n  ) => {\n    let isReferenced = false\n    functionPath.traverse({\n      Identifier(innerPath: any) {\n        if (\n          innerPath.node.name === 'event$' ||\n          innerPath.node.name === 'session$'\n        ) {\n          isReferenced = true\n        }\n      },\n      MemberExpression(innerPath: any) {\n        if (\n          t.isIdentifier(innerPath.node.property) &&\n          (innerPath.node.property.name === 'event$' ||\n            innerPath.node.property.name === 'session$')\n        ) {\n          isReferenced = true\n        }\n      },\n    })\n    return isReferenced\n  }\n\n  const shouldAddRequest =\n    serverFunction?.params?.[0]?.properties?.some(\n      (p: any) => p.key.name === 'event$',\n    ) ||\n    usingMw ||\n    isEventReferenced(path)\n  if (shouldAddRequest) {\n    serverFunction.body.body.unshift(\n      t.variableDeclaration('const', [\n        t.variableDeclarator(\n          t.identifier('_$$event'),\n          t.callExpression(t.identifier('getRequestEvent'), []),\n        ),\n      ]),\n    )\n    path.traverse({\n      Identifier(innerPath: any) {\n        if (\n          innerPath.node.name === 'event$' &&\n          innerPath.scope?.path?.listKey !== 'params'\n        ) {\n          innerPath.node.name = '_$$event'\n        }\n      },\n      MemberExpression(innerPath: any) {\n        if (\n          t.isIdentifier(innerPath.node.property) &&\n          innerPath.node.property.name === 'event$'\n        ) {\n          innerPath.node.property.name = '_$$event'\n        }\n      },\n    })\n  }\n}\n\nconst allowedMethod = ['createCaller', 'createAction'] as const\n\nconst isMw = (\n  t: typeof babel.types,\n  path: babel.NodePath<babel.types.CallExpression>,\n) => {\n  const { callee } = path.node\n  let isMiddleware = false\n  let currentCallee = callee\n\n  while (t.isMemberExpression(currentCallee)) {\n    const object = currentCallee.object\n    const property = currentCallee.property\n\n    if (isGetId(t, object) && t.isIdentifier(property, { name: 'use' })) {\n      isMiddleware = true\n    } else if (t.isIdentifier(property, { name: 'use' })) {\n      isMiddleware = true\n    } else {\n      isMiddleware = false\n      break\n    }\n\n    currentCallee = object\n  }\n\n  return isMiddleware\n}\nexport const getNodeInfo = (\n  path: babel.NodePath<babel.types.CallExpression>,\n  t: typeof babel.types,\n  currentFileName: string,\n  advanced?: boolean,\n) => {\n  const { callee } = path.node\n\n  let isGet = isGetId(t, callee)\n  let originalName: string | null = null\n  let isWrapped = false\n  let _shouldUseMw: boolean | undefined = false\n  const p = (path.findParent((p) => p.isProgram())!.node as any).body\n\n  const isMiddleware = isMw(t, path)\n\n  if (!isGet && !isMiddleware) {\n    if (t.isIdentifier(callee)) {\n      const scope = path.scope.bindings\n      const checkForEle = (\n        name: string,\n        prev: string[],\n      ): null | (typeof allowedMethod)[number] => {\n        const temp = scope?.[name]\n        if (!temp || !temp.path) return null\n        if (\n          t.isImportSpecifier(temp.path.node) &&\n          t.isIdentifier(temp.path.node.imported)\n        ) {\n          const tempResults = readValue(\n            t,\n            temp,\n            p,\n            currentFileName,\n            name,\n            advanced,\n          )\n          if (tempResults.isWrapped) {\n            isWrapped = true\n            if (tempResults.originalName) {\n              _shouldUseMw = tempResults._shouldUseMw\n              originalName = tempResults.originalName\n            }\n            return tempResults.method\n          }\n        }\n        if (t.isVariableDeclarator(temp.path.node)) {\n          const current = temp.path.node\n          const curr = isGetId(t, current.init)\n          if (curr) {\n            isWrapped = true\n            originalName = name\n            return curr\n          } else {\n            const currentName = name\n            const t = checkForEle((current.init as any).name, [...prev, name])\n            if (t) {\n              originalName = currentName\n              isWrapped = true\n              return t\n            }\n          }\n          return checkForEle((current.init as any).name, [...prev, name])\n        }\n        return null\n      }\n      isGet = checkForEle(callee.name, [])\n    }\n  }\n\n  return {\n    isMiddleware,\n    isGet,\n    callee,\n    obName: isWrapped || isMiddleware || isGet ? getBuilderName(path) : null,\n    originalName,\n    isWrapped,\n    currentFileName,\n    _shouldUseMw,\n  }\n}\n\nexport const isGetId = (\n  t: typeof babel.types,\n  path: any,\n): null | (typeof allowedMethod)[number] => {\n  if (t.isIdentifier(path)) {\n    const includes = allowedMethod.includes(path.name as any)\n    if (includes) {\n      return path.name as any\n    }\n  }\n  return null\n}\n\nexport const getFunctionArgs = (\n  path: babel.NodePath<babel.types.CallExpression>,\n  t: typeof babel.types,\n  nodeInfo: Awaited<ReturnType<typeof getNodeInfo>>,\n) => {\n  const pArgs = path.node.arguments\n\n  const serverFunction: any =\n    // method(schema,fn,opts)\n    pArgs.length === 3\n      ? pArgs[1]\n      : // method(fn)\n        // method(fn, opts)\n        pArgs.length === 1 || t.isObjectExpression(pArgs[1])\n        ? pArgs[0]\n        : // method(schema, fn)\n          pArgs[1]\n\n  let _key: null = null\n  let _protected: null = null\n  let _method: 'GET' | 'POST' = undefined!\n  let _fnType: 'action' | 'query' = undefined!\n  let _cache = true\n\n  const _opts = // method(schema,fn,opts)\n    pArgs.length === 3\n      ? pArgs[2]\n      : // method(fn, opts)\n        pArgs[1]\n        ? pArgs[1]\n        : null\n\n  const validOpts = _opts && t.isObjectExpression(_opts)\n\n  const zodSchema =\n    // method(schema,fn,opts)\n    pArgs.length === 3\n      ? pArgs[0]\n      : // method(schema, fn)\n        pArgs.length === 2 && !validOpts\n        ? pArgs[0]\n        : // method(fn, opts)\n          undefined\n\n  if (validOpts) {\n    const getProp = (name: string) => {\n      const base = (\n        _opts.properties.find((prop: any) => prop.key.name === name) as any\n      )?.value\n      if (typeof base === 'object') {\n        return base.value\n      }\n      return base\n    }\n\n    _key = getProp('key')\n    _protected = getProp('protected')\n    _fnType = getProp('type')\n    _method = getProp('method')\n    _cache = getProp('cache') === false ? false : true\n  }\n\n  _fnType =\n    nodeInfo.isGet === 'createAction' ? 'action' : !_fnType ? 'query' : _fnType\n  if (!_method) {\n    _method = _fnType === 'action' ? 'POST' : 'GET'\n  }\n\n  const key = t.isStringLiteral(_key)\n    ? _key\n    : typeof _key === 'string'\n      ? t.stringLiteral(_key)\n      : t.stringLiteral(nodeInfo.obName!)\n\n  const isProtected =\n    _protected && t.isBooleanLiteral(_protected)\n      ? _protected\n      : typeof _protected === 'boolean'\n        ? t.booleanLiteral(_protected)\n        : t.booleanLiteral(false)\n\n  return {\n    serverFunction,\n    key,\n    protected: isProtected,\n    zodSchema,\n    _fnType,\n    _method,\n    _cache,\n  }\n}\n\nexport const cleanOutParams = (\n  name: string,\n  path: babel.NodePath<babel.types.CallExpression>,\n  id: string | ReturnType<(typeof babel.types)['identifier']>,\n  t: typeof babel.types,\n) => {\n  path.traverse({\n    MemberExpression(innerPath: babel.NodePath<babel.types.MemberExpression>) {\n      const property = innerPath.node.property\n      const object = innerPath.node.object\n      if (t.isIdentifier(property, { name })) {\n        innerPath\n          .get('property')\n          .replaceWith(typeof id === 'string' ? t.identifier(id) : id)\n        if (t.isIdentifier(object)) {\n          innerPath.replaceWith(innerPath.node.property)\n        }\n      }\n    },\n    Identifier(innerPath: babel.NodePath<babel.types.Identifier>) {\n      if (\n        innerPath.node.name === name &&\n        innerPath.scope?.path?.listKey !== 'params'\n      ) {\n        innerPath.node.name = typeof id === 'string' ? id : id.name\n      }\n    },\n  })\n}\n\nconst shouldUseMw = (\n  path: babel.NodePath<\n    babel.types.CallExpression | babel.types.VariableDeclarator\n  >,\n  name: string,\n  isWrapped: boolean,\n  originalName?: string,\n) => {\n  const scope = path.scope.bindings\n  const keys = Object.keys(scope)\n  const mwKeys = keys.filter(\n    (key) => key.startsWith('_$$') && key.endsWith('_mws'),\n  )\n\n  const v = `_$$${isWrapped ? originalName : name}_mws`\n  return !!mwKeys.find((e) => e === v)\n}\n\nexport const shiftMiddleware = (\n  temp: typeof babel.template,\n  t: typeof babel.types,\n  path: babel.NodePath<babel.types.CallExpression>,\n  serverFunction: any,\n  originalName?: string | null,\n  _shouldUse?: boolean,\n) => {\n  const req = '_$$event'\n  const parentPath = path.findParent((p) => p.isVariableDeclarator())\n\n  let name: string = originalName ?? null!\n  if (!originalName) {\n    if (parentPath && parentPath.isVariableDeclarator()) {\n      const variableDeclarator = parentPath.node\n      if (t.isIdentifier(variableDeclarator.id)) {\n        name = variableDeclarator.id.name\n      }\n    } else {\n      throw new Error(\n        'No variable assigned to the result of this CallExpression.',\n      )\n    }\n  }\n\n  if (\n    _shouldUse ||\n    shouldUseMw(path, name, typeof originalName === 'string', originalName!)\n  ) {\n    importIfNotThere(path, t, 'callMiddleware$')\n    const v = `_$$${name}_mws`\n    const p = (path.findParent((p) => p.isProgram())!.node as any).body\n    const importedFrom = p.find((node: any) => {\n      return (\n        node.type === 'ImportDeclaration' &&\n        node.specifiers?.some((s: any) => {\n          if (t.isImportSpecifier(s)) {\n            return (s.imported as any).name === name\n          }\n          return false\n        })\n      )\n    })\n    if (importedFrom && t.isImportDeclaration(importedFrom)) {\n      if (\n        !importedFrom.specifiers.some(\n          (s: any) => t.isImportSpecifier(s) && (s.imported as any).name === v,\n        )\n      )\n        importedFrom.specifiers.push(\n          t.importSpecifier(t.identifier(v), t.identifier(v)),\n        )\n    }\n    const callMiddleware = temp(\n      `const ctx$ = await callMiddleware$(${req}, %%middlewares%%)`,\n    )({\n      middlewares: v,\n    })\n\n    const ifStatement = t.ifStatement(\n      t.binaryExpression(\n        'instanceof',\n        t.identifier('ctx$'),\n        t.identifier('Response'),\n      ),\n      t.returnStatement(t.identifier('ctx$')),\n    )\n    serverFunction.body.body.unshift(callMiddleware, ifStatement)\n    return true\n  }\n  return false\n}\n\nexport const afterImports = (\n  path: babel.NodePath<babel.types.CallExpression>,\n  value: any,\n) => {\n  const p = (path.findParent((p) => p.isProgram())!.node as any).body\n  const lastImport = p.findLast((n: any) => n.type === 'ImportDeclaration')\n  if (lastImport) {\n    p.splice(p.indexOf(lastImport) + 1, 0, value)\n  } else {\n    p.unshift(value)\n  }\n}\n\nexport const getBuilderName = (\n  path: babel.NodePath<babel.types.CallExpression>,\n) => {\n  let name: string | undefined = undefined\n  path.findParent((p) => {\n    if (p.isVariableDeclarator()) {\n      name = (p.node.id as any).name\n      return true\n    }\n    return false\n  })\n  if (!name) {\n    throw new Error(`Expected name to be defined`)\n  }\n  return name\n}\n\nexport const handleBuilderMw = (\n  path: babel.NodePath<babel.types.CallExpression>,\n  t: typeof babel.types,\n  sharedName: string | null,\n) => {\n  const prevMwNames = sharedName ? `_$$${sharedName}_mws` : null\n\n  const name = getBuilderName(path)\n  const fn = path.node.arguments[0]\n\n  const mwName = `_$$${name}_mws`\n  const currentMws = path.scope.getBinding(mwName)\n  if (currentMws) {\n    const mwsArray = (currentMws as any)?.path?.node?.init\n    if (t.isArrayExpression(mwsArray)) {\n      mwsArray.elements.unshift(fn as any)\n      path.replaceWith((path.node.callee as any).object)\n    } else {\n      throw new Error(`Expected ${mwName} to be an array`)\n    }\n  } else {\n    const mws = t.identifier(mwName)\n    if (prevMwNames) {\n      const p = (path.findParent((p) => p.isProgram())!.node as any).body\n      const importedFrom = p.find((node: any) => {\n        return (\n          node.type === 'ImportDeclaration' &&\n          node.specifiers?.some((s: any) => {\n            if (t.isImportSpecifier(s)) {\n              return (s.imported as any).name === sharedName\n            }\n            return false\n          })\n        )\n      })\n      if (importedFrom && t.isImportDeclaration(importedFrom)) {\n        if (\n          !importedFrom.specifiers.some(\n            (s: any) =>\n              t.isImportSpecifier(s) &&\n              (s.imported as any).name === prevMwNames,\n          )\n        )\n          importedFrom.specifiers.push(\n            t.importSpecifier(\n              t.identifier(prevMwNames),\n              t.identifier(prevMwNames),\n            ),\n          )\n      }\n    }\n    const mwsArray = prevMwNames\n      ? t.arrayExpression([\n          t.spreadElement(t.identifier(prevMwNames)),\n          fn as any,\n        ])\n      : t.arrayExpression([fn as any])\n\n    path.replaceWith((path.node.callee as any).object)\n    path.scope.push({\n      id: mws,\n      init: mwsArray,\n      kind: 'const',\n      _blockHoist: -1,\n    })\n  }\n}\nexport const exportBuilderMw = (\n  mwKeys: string[],\n  path: babel.NodePath<babel.types.Program>,\n  t: typeof babel.types,\n) => {\n  for (const name of mwKeys) {\n    const currentMws = path.scope.getBinding(name)\n    if (currentMws) {\n      const mwsArray = (currentMws as any)?.path?.node?.init\n      if (mwsArray) {\n        const exportMw = t.exportNamedDeclaration(\n          t.variableDeclaration('const', [\n            t.variableDeclarator(t.identifier(name), mwsArray as any),\n          ]),\n        )\n        currentMws.path.remove()\n        path.node.body.push(exportMw)\n      }\n    }\n  }\n}\n\nexport const importIfNotThere = (\n  path: babel.NodePath<babel.types.CallExpression>,\n  t: typeof babel.types,\n  name: string,\n  loc?: string,\n) => {\n  const actualLoc = loc ?? packageSource\n  const p = (path.findParent((p) => p.isProgram())!.node as any).body\n  const nameIsimported = p.some(\n    (n: babel.types.ImportDeclaration) =>\n      n.type === 'ImportDeclaration' &&\n      n.source.value === actualLoc &&\n      n.specifiers.some((s: any) => s.imported?.name === name),\n  )\n\n  if (!nameIsimported) {\n    const isSourceImported = p.find(\n      (n: babel.types.ImportDeclaration) =>\n        n.type === 'ImportDeclaration' && n.source.value === actualLoc,\n    ) as babel.types.ImportDeclaration\n    if (isSourceImported) {\n      isSourceImported.specifiers.push(\n        t.importSpecifier(t.identifier(name), t.identifier(name)),\n      )\n    } else {\n      const importDeclaration = t.importDeclaration(\n        [t.importSpecifier(t.identifier(name), t.identifier(name))],\n        t.stringLiteral(loc ?? packageSource),\n      )\n      p.unshift(importDeclaration)\n    }\n  }\n}\n\nexport const appendSession = (\n  path: babel.NodePath<babel.types.CallExpression>,\n  t: typeof babel.types,\n  temp: typeof babel.template,\n  serverFunction: any,\n  isProtected: boolean,\n  _opts?: PRPCPluginOptions<any>,\n) => {\n  let isReferenced = false\n  path.traverse({\n    Identifier(innerPath: any) {\n      if (innerPath.node.name === 'session$') {\n        isReferenced = true\n      }\n    },\n    MemberExpression(innerPath: any) {\n      if (\n        t.isIdentifier(innerPath.node.property) &&\n        innerPath.node.property.name === 'session$'\n      ) {\n        isReferenced = true\n      }\n    },\n  })\n\n  const authCfg = (_opts as any)\n    ?.authCfg as PRPCPluginOptions<'authjs'>['authCfg']\n\n  if (isReferenced && !_opts?.auth) {\n    throw new Error(\n      'Attempted to use session$ but no auth provider was mentioned',\n    )\n  }\n\n  if (isReferenced) {\n    let sessionCall: ReturnType<ReturnType<typeof temp>> = null!\n    if (_opts?.auth === 'authjs') {\n      const opts = authCfg?.configName ?? 'authOpts'\n      const source = authCfg?.source ?? '~/server/auth'\n      importIfNotThere(path, t, 'getSession', '@solid-mediakit/auth')\n      importIfNotThere(path, t, opts, source)\n      sessionCall = temp(\n        `const session$ = await getSession(_$$event.request, ${opts});`,\n      )()\n    } else {\n      importIfNotThere(path, t, 'auth', 'clerk-solidjs/server')\n      sessionCall = temp(`const session$ = auth();`)()\n    }\n    if (isProtected) {\n      importIfNotThere(path, t, 'error$')\n\n      const ifStatement = t.ifStatement(\n        t.unaryExpression(\n          '!',\n          _opts?.auth === 'clerk'\n            ? t.optionalMemberExpression(\n                t.identifier('session$'),\n                t.identifier('userId'),\n                false,\n                true,\n              )\n            : t.identifier('session$'),\n        ),\n        t.blockStatement([\n          t.returnStatement(\n            t.callExpression(t.identifier('error$'), [\n              t.stringLiteral(\n                authCfg?.protectedMessage ?? 'This is a protected route',\n              ),\n            ]),\n          ),\n        ]),\n      )\n      serverFunction.body.body.unshift(sessionCall, ifStatement)\n    } else {\n      serverFunction.body.body.unshift(sessionCall)\n    }\n  }\n}\n\nfunction findBaseCallee(t: typeof babel.types, node: any) {\n  // If this is a call expression, we need to inspect its callee\n  if (t.isCallExpression(node)) {\n    return findBaseCallee(t, node.callee)\n  }\n\n  // If it's a member expression, continue inspecting its object\n  if (t.isMemberExpression(node)) {\n    return findBaseCallee(t, node.object)\n  }\n\n  // If we've hit an identifier, this is the base callee\n  if (t.isIdentifier(node)) {\n    return node.name\n  }\n\n  return null\n}\n\nconst isPackageImport = (source: string): boolean => {\n  return (\n    /^[a-zA-Z0-9@]+/.test(source) || // Checks for alphanumeric and `@` (for scoped packages)\n    (!source.startsWith('.') && // Not a relative import\n      !source.startsWith('/')) // Not an absolute import\n  )\n}\n\nexport const handleMw = (\n  t: typeof babel.types,\n  path: babel.NodePath<babel.types.CallExpression>,\n) => {\n  const { callee } = path.node\n  const isShared =\n    t.isMemberExpression(callee) && t.isIdentifier(callee.object)\n      ? isGetId(t, callee.object)\n        ? null\n        : callee.object.name\n      : null\n\n  handleBuilderMw(path, t, isShared)\n}\n\nexport const onProgramExit = (\n  t: typeof babel.types,\n  path: babel.NodePath<babel.types.Program>,\n) => {\n  const scope = path.scope.bindings\n  const keys = Object.keys(scope)\n  const mwKeys = keys.filter(\n    (key) => key.startsWith('_$$') && key.endsWith('_mws'),\n  )\n  if (mwKeys.length) {\n    exportBuilderMw(mwKeys, path, t)\n  }\n}\nexport const readValue = (\n  t: typeof babel.types,\n  temp: any,\n  parentPath: any,\n  _currentFileName: string,\n  name: string,\n  advanced?: boolean,\n) => {\n  let isWrapped = false\n  let originalName: string = null!\n  let method: (typeof allowedMethod)[number] = null!\n  let _shouldUseMw = false\n  if (\n    t.isImportSpecifier(temp.path.node) &&\n    t.isIdentifier(temp.path.node.imported)\n  ) {\n    const importedName = temp.path.node?.imported?.name\n\n    const nameIsimported = parentPath.find(\n      (n: any) =>\n        n.type === 'ImportDeclaration' &&\n        n.specifiers.some((s: any) => s.imported?.name === importedName),\n    ) as babel.types.ImportDeclaration\n    if (isPackageImport(nameIsimported.source.value)) {\n      return { isWrapped, originalName, method }\n    }\n\n    const trvarse = (resolvedPath: string, possibleNames: string[]) => {\n      const actualSource = `${resolvedPath}.ts`\n      const fileContent = readFileSync(actualSource, 'utf-8')\n      const ast = babel.parse(fileContent, {\n        sourceType: 'module',\n        parserOpts: {\n          plugins: ['typescript'],\n        },\n      })!\n      babel.traverse(ast, {\n        Program: {\n          exit(path) {\n            if (advanced) {\n              onProgramExit(t, path)\n            }\n          },\n        },\n        CallExpression(path) {\n          if (isMw(t, path)) {\n            _shouldUseMw = true\n            if (advanced) {\n              handleMw(t, path)\n            }\n          }\n        },\n        VariableDeclarator(path) {\n          if (\n            t.isIdentifier(path.node.id) &&\n            possibleNames.includes(path.node.id.name)\n          ) {\n            const initNode = path.node.init\n            const baseCallee = findBaseCallee(t, initNode)\n            if (allowedMethod.includes(baseCallee as any)) {\n              isWrapped = true\n              originalName = path.node?.id.name\n              method = baseCallee as any\n            }\n          }\n        },\n        ImportDeclaration(path) {\n          if (isPackageImport(path.node.source.value)) return\n          const newSrc = resolve(dirname(resolvedPath), path.node.source.value)\n          const possibleNames = path.node.specifiers.map(\n            (e) => (e as any).imported.name,\n          )\n          trvarse(newSrc, possibleNames)\n        },\n      })\n    }\n    const resolvedPath = resolve(\n      dirname(_currentFileName),\n      nameIsimported.source.value,\n    )\n    trvarse(resolvedPath, [name])\n  }\n  return {\n    isWrapped,\n    originalName,\n    method,\n    _shouldUseMw,\n  }\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Plugin } from 'vite'\nimport { compilePRPC, type PRPCPluginOptions, AllowedAuth } from './compiler'\nimport { repushPlugin, babel as babelUtils } from '@solid-mediakit/shared'\nimport {\n  type SolidStartInlineConfig,\n  defineConfig,\n} from '@solidjs/start/config'\nimport type { createApp } from 'vinxi/dist/types/lib/app'\n\nexport function prpcPlugin<K extends AllowedAuth | undefined>(\n  opts?: PRPCPluginOptions<K>,\n): Plugin {\n  const filter = babelUtils.getFilter(opts?.filter)\n  const plugin: Plugin = {\n    enforce: 'pre',\n    name: 'prpc',\n    async transform(code, id) {\n      if (!filter(id)) {\n        return code\n      }\n      if (id.endsWith('.ts') || id.endsWith('.tsx')) {\n        return await compilePRPC(code, id, opts)\n      }\n      return undefined\n    },\n    configResolved(config) {\n      repushPlugin(config.plugins as Plugin[], plugin, [\n        'vite-server-references',\n        'solid',\n        'vinxi:routes',\n      ])\n    },\n  }\n  return plugin\n}\n\nexport { compilePRPC }\n\nexport function withPRPC<K extends AllowedAuth | undefined>(\n  config: SolidStartInlineConfig,\n  opts?: PRPCPluginOptions<K>,\n): ReturnType<typeof createApp> & {\n  auth: K\n} {\n  if (!config.vite) {\n    config.vite = {}\n  }\n  if (!(config.vite as any).plugins) {\n    ;(config.vite as any).plugins = []\n  }\n  if (!(config.vite as any).ssr) {\n    ;(config.vite as any).ssr = {}\n  }\n  if (!(config.vite as any).ssr.noExternal) {\n    ;(config.vite as any).ssr.noExternal = []\n  }\n  ;(config.vite as any).ssr.noExternal.push(`@solid-mediakit/prpc`)\n  ;(config.vite as any).plugins = [\n    prpcPlugin(opts),\n    ...(config.vite as any).plugins,\n  ]\n  if (opts?.auth === 'clerk') {\n    config.middleware = (opts as PRPCPluginOptions<'clerk'>).authCfg.middleware\n  }\n  return defineConfig(config) as any\n}\n\n//\n"],
  "mappings": "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",
  "names": ["babel", "_a", "_b", "p", "t", "p", "_a", "resolvedPath", "possibleNames", "_a", "_b", "_c", "_d"]
}
