{"version":3,"sources":["../../src/build/production-node-env.ts"],"sourcesContent":["const productionNodeEnvStateKey = Symbol.for(\"@farm.js/core/production-node-env-state\");\n\ninterface ProductionNodeEnvState {\n  depth: number;\n  original: string | undefined;\n}\n\nfunction getProductionNodeEnvState(): ProductionNodeEnvState | undefined {\n  return Reflect.get(globalThis, productionNodeEnvStateKey) as ProductionNodeEnvState | undefined;\n}\n\n/**\n * Keep overlapping production operations on the production condition.\n *\n * The state lives on `globalThis` so independently loaded CJS/ESM copies of\n * Farm share one refcount. The first entrant captures the caller's value and\n * only the last operation to settle restores it.\n *\n * @internal\n */\nexport async function withProductionNodeEnv<T>(operation: () => T | PromiseLike<T>): Promise<T> {\n  let state = getProductionNodeEnvState();\n\n  if (state) {\n    state.depth += 1;\n  } else {\n    state = {\n      depth: 1,\n      original: process.env.NODE_ENV,\n    };\n    Reflect.set(globalThis, productionNodeEnvStateKey, state);\n  }\n\n  process.env.NODE_ENV = \"production\";\n\n  try {\n    return await operation();\n  } finally {\n    state.depth -= 1;\n\n    if (state.depth > 0) {\n      // A nested operation may have changed NODE_ENV. Keep the remaining\n      // production scopes pinned until the final scope settles.\n      process.env.NODE_ENV = \"production\";\n    } else {\n      Reflect.deleteProperty(globalThis, productionNodeEnvStateKey);\n      if (state.original === undefined) {\n        delete process.env.NODE_ENV;\n      } else {\n        process.env.NODE_ENV = state.original;\n      }\n    }\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAM,4BAA4B,uBAAO,IAAI,yCAAyC;AAOtF,SAAS,4BAAgE;AACvE,SAAO,QAAQ,IAAI,YAAY,yBAAyB;AAC1D;AAFS;AAaT,eAAsB,sBAAyB,WAAiD;AAC9F,MAAI,QAAQ,0BAA0B;AAEtC,MAAI,OAAO;AACT,UAAM,SAAS;AAAA,EACjB,OAAO;AACL,YAAQ;AAAA,MACN,OAAO;AAAA,MACP,UAAU,QAAQ,IAAI;AAAA,IACxB;AACA,YAAQ,IAAI,YAAY,2BAA2B,KAAK;AAAA,EAC1D;AAEA,UAAQ,IAAI,WAAW;AAEvB,MAAI;AACF,WAAO,MAAM,UAAU;AAAA,EACzB,UAAE;AACA,UAAM,SAAS;AAEf,QAAI,MAAM,QAAQ,GAAG;AAGnB,cAAQ,IAAI,WAAW;AAAA,IACzB,OAAO;AACL,cAAQ,eAAe,YAAY,yBAAyB;AAC5D,UAAI,MAAM,aAAa,QAAW;AAChC,eAAO,QAAQ,IAAI;AAAA,MACrB,OAAO;AACL,gBAAQ,IAAI,WAAW,MAAM;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AACF;AAjCsB;","names":[]}