Edit: /tmp/tsx-0/17887-cd13a56984ce1ddcbc6e5480a76507d5d3776c01 (7560B)
{"code":"__filename=\"/opt/canhelp/apps/api/src/lib/apple-client-secret.ts\";(()=>{\n\"use strict\";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __name=(target,value)=>__defProp(target,\"name\",{value,configurable:true});var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:true})};var __copyProps=(to,from,except,desc)=>{if(from&&typeof from===\"object\"||typeof from===\"function\"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __toCommonJS=mod=>__copyProps(__defProp({},\"__esModule\",{value:true}),mod);var apple_client_secret_exports={};__export(apple_client_secret_exports,{getAppleClientSecret:()=>getAppleClientSecret,getAppleClientSecretExpDebugInfo:()=>getAppleClientSecretExpDebugInfo,isAppleAuthConfigured:()=>isAppleAuthConfigured});module.exports=__toCommonJS(apple_client_secret_exports);var import_node_crypto=require(\"node:crypto\");var import_node_fs=require(\"node:fs\");const APPLE_AUD=\"https://appleid.apple.com\";const DEFAULT_TTL_SECONDS=60*60*24*170;const REFRESH_WINDOW_SECONDS=60*60*24*7;function b64url(input){const buff=Buffer.isBuffer(input)?input:Buffer.from(input);return buff.toString(\"base64\").replace(/=/g,\"\").replace(/\\+/g,\"-\").replace(/\\//g,\"_\")}__name(b64url,\"b64url\");function parseJwtExp(token){const parts=token.split(\".\");if(parts.length<2)return null;try{const payload=JSON.parse(Buffer.from(parts[1].replace(/-/g,\"+\").replace(/_/g,\"/\"),\"base64\").toString(\"utf8\"));return typeof payload?.exp===\"number\"?payload.exp:null}catch{return null}}__name(parseJwtExp,\"parseJwtExp\");function shouldRefresh(token){const exp=parseJwtExp(token);if(!exp)return true;const now=Math.floor(Date.now()/1e3);return exp-now<=REFRESH_WINDOW_SECONDS}__name(shouldRefresh,\"shouldRefresh\");function resolveApplePrivateKey(){const inline=process.env.APPLE_PRIVATE_KEY?.trim();if(inline){return inline.includes(\"\\\\n\")?inline.replace(/\\\\n/g,\"\\n\"):inline}const keyPath=process.env.APPLE_PRIVATE_KEY_PATH?.trim();if(!keyPath)return null;try{return(0,import_node_fs.readFileSync)(keyPath,\"utf8\")}catch{return null}}__name(resolveApplePrivateKey,\"resolveApplePrivateKey\");function createAppleClientSecret(params){const now=Math.floor(Date.now()/1e3);const header={alg:\"ES256\",kid:params.keyId,typ:\"JWT\"};const payload={iss:params.teamId,iat:now,exp:now+DEFAULT_TTL_SECONDS,aud:APPLE_AUD,sub:params.clientId};const encodedHeader=b64url(JSON.stringify(header));const encodedPayload=b64url(JSON.stringify(payload));const signingInput=`${encodedHeader}.${encodedPayload}`;const signer=(0,import_node_crypto.createSign)(\"SHA256\");signer.update(signingInput);signer.end();const signature=signer.sign({key:params.privateKey,dsaEncoding:\"ieee-p1363\"});return`${signingInput}.${b64url(signature)}`}__name(createAppleClientSecret,\"createAppleClientSecret\");let cachedSecret=null;function getAppleClientSecret(){const clientId=process.env.APPLE_CLIENT_ID?.trim();if(!clientId)return null;if(cachedSecret&&!shouldRefresh(cachedSecret)){return cachedSecret}const teamId=process.env.APPLE_TEAM_ID?.trim();const keyId=process.env.APPLE_KEY_ID?.trim();const privateKey=resolveApplePrivateKey();if(!teamId||!keyId||!privateKey){return null}try{const generated=createAppleClientSecret({clientId,teamId,keyId,privateKey});cachedSecret=generated;return generated}catch(err){console.error(\"[Auth] Apple client secret generation failed:\",err);return null}}__name(getAppleClientSecret,\"getAppleClientSecret\");function isAppleAuthConfigured(){return Boolean(process.env.APPLE_CLIENT_ID?.trim()&&getAppleClientSecret())}__name(isAppleAuthConfigured,\"isAppleAuthConfigured\");function getAppleClientSecretExpDebugInfo(){const token=getAppleClientSecret();if(!token){return{configured:false,expUnix:null,expIso:null,expiresInSeconds:null,expiresInDays:null,refreshWindowSeconds:REFRESH_WINDOW_SECONDS}}const expUnix=parseJwtExp(token);if(!expUnix){return{configured:true,expUnix:null,expIso:null,expiresInSeconds:null,expiresInDays:null,refreshWindowSeconds:REFRESH_WINDOW_SECONDS}}const now=Math.floor(Date.now()/1e3);const expiresInSeconds=Math.max(0,expUnix-now);return{configured:true,expUnix,expIso:new Date(expUnix*1e3).toISOString(),expiresInSeconds,expiresInDays:Number((expiresInSeconds/86400).toFixed(2)),refreshWindowSeconds:REFRESH_WINDOW_SECONDS}}__name(getAppleClientSecretExpDebugInfo,\"getAppleClientSecretExpDebugInfo\");0&&(module.exports={getAppleClientSecret,getAppleClientSecretExpDebugInfo,isAppleAuthConfigured});\n})()\n","warnings":[],"map":{"version":3,"mappings":"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","names":[],"ignoreList":[],"sources":["/opt/canhelp/apps/api/src/lib/apple-client-secret.ts"],"sourcesContent":[null]}}