{"version":3,"sources":["../../lib/core/jwt.ts"],"sourcesContent":["import jsonwebtoken from \"jsonwebtoken\"\n\nconst API_TOKEN_TTL_SECONDS = 3 * 60\nconst CACHE_TTL_SECONDS = API_TOKEN_TTL_SECONDS - 30\nconst tokenCache: {\n    [key: string]: {\n        token: string,\n        createAt: number\n    }\n} = {}\n\nexport const generateToken = (apiSecretKey: string, cache: boolean = true): string => {\n    try {\n        if (tokenCache[apiSecretKey] && Date.now() - tokenCache[apiSecretKey].createAt < (CACHE_TTL_SECONDS * 1000)) {\n            return tokenCache[apiSecretKey].token\n        }\n\n        const [apiKey, secret] = apiSecretKey.split(\".\")\n        const payload = {\n            \"api_key\": apiKey,\n            \"exp\": Math.round(Date.now() * 1000) + API_TOKEN_TTL_SECONDS * 1000,\n            \"timestamp\": Math.round(Date.now() * 1000),\n        }\n        // algorithm = \"HS256\", headers = { \"alg\": \"HS256\", \"sign_type\": \"SIGN\" }\n        //@ts-ignore 不用管\n        const ret = jsonwebtoken.sign(payload, secret, {\n            algorithm: \"HS256\",\n            header: { alg: \"HS256\", sign_type: \"SIGN\" }\n        })\n        if (cache) {\n            tokenCache[apiSecretKey] = {\n                token: ret,\n                createAt: Date.now()\n            }\n        }\n        return ret\n    } catch (e) {\n        throw \"invalid api_key\"\n    }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAyB;AAEzB,IAAM,wBAAwB,IAAI;AAClC,IAAM,oBAAoB,wBAAwB;AAClD,IAAM,aAKF,CAAC;AAEE,IAAM,gBAAgB,CAAC,cAAsB,QAAiB,SAAiB;AAClF,MAAI;AACA,QAAI,WAAW,YAAY,KAAK,KAAK,IAAI,IAAI,WAAW,YAAY,EAAE,WAAY,oBAAoB,KAAO;AACzG,aAAO,WAAW,YAAY,EAAE;AAAA,IACpC;AAEA,UAAM,CAAC,QAAQ,MAAM,IAAI,aAAa,MAAM,GAAG;AAC/C,UAAM,UAAU;AAAA,MACZ,WAAW;AAAA,MACX,OAAO,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,IAAI,wBAAwB;AAAA,MAC/D,aAAa,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI;AAAA,IAC7C;AAGA,UAAM,MAAM,oBAAAA,QAAa,KAAK,SAAS,QAAQ;AAAA,MAC3C,WAAW;AAAA,MACX,QAAQ,EAAE,KAAK,SAAS,WAAW,OAAO;AAAA,IAC9C,CAAC;AACD,QAAI,OAAO;AACP,iBAAW,YAAY,IAAI;AAAA,QACvB,OAAO;AAAA,QACP,UAAU,KAAK,IAAI;AAAA,MACvB;AAAA,IACJ;AACA,WAAO;AAAA,EACX,SAAS,GAAG;AACR,UAAM;AAAA,EACV;AACJ;","names":["jsonwebtoken"]}