{"version":3,"file":"handleEnvOnly.js","sources":["../../../src/start-compiler-plugin/handleEnvOnly.ts"],"sourcesContent":["import * as t from '@babel/types'\nimport type { CompilationContext, RewriteCandidate } from './types'\nimport type { LookupKind } from './compiler'\n\nfunction capitalize(str: string) {\n  if (!str) return ''\n  return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()\n}\n\n/**\n * Handles serverOnly/clientOnly function transformations for a batch of candidates.\n *\n * @param candidates - All EnvOnly candidates to process (all same kind)\n * @param context - The compilation context\n * @param kind - The specific kind (ServerOnlyFn or ClientOnlyFn)\n */\nexport function handleEnvOnlyFn(\n  candidates: Array<RewriteCandidate>,\n  context: CompilationContext,\n  kind: LookupKind,\n): void {\n  const targetEnv = kind === 'ClientOnlyFn' ? 'client' : 'server'\n\n  for (const candidate of candidates) {\n    const { path } = candidate\n\n    if (context.env === targetEnv) {\n      // Matching environment - extract the inner function\n      const innerFn = path.node.arguments[0]\n\n      if (!t.isExpression(innerFn)) {\n        throw new Error(\n          `create${capitalize(targetEnv)}OnlyFn() must be called with a function!`,\n        )\n      }\n\n      path.replaceWith(innerFn)\n    } else {\n      // Wrong environment - replace with a function that throws an error\n      path.replaceWith(\n        t.arrowFunctionExpression(\n          [],\n          t.blockStatement([\n            t.throwStatement(\n              t.newExpression(t.identifier('Error'), [\n                t.stringLiteral(\n                  `create${capitalize(targetEnv)}OnlyFn() functions can only be called on the ${targetEnv}!`,\n                ),\n              ]),\n            ),\n          ]),\n        ),\n      )\n    }\n  }\n}\n"],"names":[],"mappings":";AAIA,SAAS,WAAW,KAAa;AAE/B,SAAO,IAAI,OAAO,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC,EAAE,YAAA;AACpD;AASO,SAAS,gBACd,YACA,SACA,MACM;AACN,QAAM,YAAY,SAAS,iBAAiB,WAAW;AAEvD,aAAW,aAAa,YAAY;AAClC,UAAM,EAAE,SAAS;AAEjB,QAAI,QAAQ,QAAQ,WAAW;AAE7B,YAAM,UAAU,KAAK,KAAK,UAAU,CAAC;AAErC,UAAI,CAAC,EAAE,aAAa,OAAO,GAAG;AAC5B,cAAM,IAAI;AAAA,UACR,SAAS,WAAW,SAAS,CAAC;AAAA,QAAA;AAAA,MAElC;AAEA,WAAK,YAAY,OAAO;AAAA,IAC1B,OAAO;AAEL,WAAK;AAAA,QACH,EAAE;AAAA,UACA,CAAA;AAAA,UACA,EAAE,eAAe;AAAA,YACf,EAAE;AAAA,cACA,EAAE,cAAc,EAAE,WAAW,OAAO,GAAG;AAAA,gBACrC,EAAE;AAAA,kBACA,SAAS,WAAW,SAAS,CAAC,gDAAgD,SAAS;AAAA,gBAAA;AAAA,cACzF,CACD;AAAA,YAAA;AAAA,UACH,CACD;AAAA,QAAA;AAAA,MACH;AAAA,IAEJ;AAAA,EACF;AACF;"}