@cortexkit/opencode-openai-auth 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -60
- package/dist/bin.js +13 -0
- package/dist/index-2hch7e8n.js +8 -0
- package/dist/{index-766sfrh5.js → index-45qgkb0m.js} +1 -1
- package/dist/index-5dg931q0.js +65 -0
- package/dist/index-99esnzg0.js +157 -0
- package/dist/index-9reyazwh.js +2 -0
- package/dist/index-bgq9d21h.js +2 -0
- package/dist/index-dryydk6b.js +2 -0
- package/dist/index-egrty6tz.js +12 -0
- package/dist/index-envpbt0k.js +3 -0
- package/dist/index-jye6vccc.js +2 -0
- package/dist/index-k4eacw7x.js +2 -0
- package/dist/{index-hy9030jh.js → index-yeyp8t0k.js} +1 -1
- package/dist/index-yf6arn5w.js +2 -0
- package/dist/index.d.ts +2 -56
- package/dist/index.js +1 -1
- package/dist/map-CCbSZIhT.d.ts +56 -0
- package/dist/{pool-lifecycle-DbDmgabd.d.ts → pool-lifecycle-DqKq8Eej.d.ts} +104 -790
- package/dist/{port-file-Do3lQIEk.d.ts → port-file-CZ9MIdy2.d.ts} +1 -1
- package/dist/{protocol-BOBdkqqm.d.ts → protocol-CSIDDBDf.d.ts} +1 -1
- package/dist/rpc/port-file.d.ts +1 -1
- package/dist/rpc/port-file.js +1 -1
- package/dist/rpc/protocol.d.ts +1 -1
- package/dist/rpc/protocol.js +1 -1
- package/dist/rpc/rpc-client.d.ts +3 -3
- package/dist/rpc/rpc-client.js +1 -1
- package/dist/rpc/rpc-dir.js +1 -1
- package/dist/{sidebar-state-D6cUKgkm.d.ts → sidebar-state-BCxFpH68.d.ts} +5 -3
- package/dist/sidebar-state.d.ts +1 -1
- package/dist/sidebar-state.js +1 -1
- package/dist/token-util-gmn5yaqc.js +1 -0
- package/dist/{token-ypk61xj0.js → token-vykm9bxh.js} +1 -1
- package/dist/tui-preferences.d.ts +2 -1
- package/dist/tui-preferences.js +3 -3
- package/dist/tui.d.ts +2 -2
- package/dist/v2/server.d.ts +1 -1
- package/dist/v2/server.js +3 -4
- package/package.json +13 -8
- package/src/tui-compiled/raw/logger.js +10 -2
- package/src/tui-compiled/raw/shared/053cc17b5419261e-codec.js +2 -1
- package/src/tui-compiled/raw/shared/0766d78c6f481f18-watcher.js +26 -10
- package/src/tui-compiled/raw/shared/375d9cca2def037d-private-files.js +302 -0
- package/src/tui-compiled/raw/shared/39c3cb05738fcf6d-projection.js +3 -1
- package/src/tui-compiled/raw/shared/43fc9e6b994519c7-refresh-lock.js +5 -0
- package/src/tui-compiled/raw/shared/458b934e92490331-mutate.js +2 -2
- package/src/tui-compiled/raw/shared/4825e03209d6ae3e-with-lock.js +4 -0
- package/src/tui-compiled/raw/shared/4f36d333d081d040-merge.js +21 -5
- package/src/tui-compiled/raw/shared/7211cfec06a298bc-atomic-write.js +21 -0
- package/src/tui-compiled/raw/shared/905bffc0220f43d0-map.js +36 -1
- package/src/tui-compiled/raw/shared/a09b6a533c11858f-tui-preferences.js +6 -4
- package/src/tui-compiled/raw/shared/c14988621dc60a75-port-file.js +30 -8
- package/src/tui-compiled/raw/shared/c64d7afbc14ca125-sidebar-file.js +17 -8
- package/src/tui-compiled/raw/shared/c852a15cfe489d12-pool.js +3 -0
- package/src/tui-compiled/raw/shared/cd94316a888b0a8e-schema.js +3 -2
- package/src/tui-compiled/raw/shared/d5a8f1061ee2f114-index.js +1 -1
- package/src/tui-compiled/raw/shared/d7dcba96fea1685c-engine.js +126 -11
- package/src/tui-compiled/raw/shared/e8cd4929507508d8-refresh-file-lock.js +254 -37
- package/src/tui-compiled/raw/shared/ec971142548df90e-index.js +1 -0
- package/src/tui-compiled/raw/shared/fbcdcd0f925e74c0-rpc-client.js +15 -1
- package/src/tui-compiled/raw/sidebar-state.js +3 -3
- package/src/tui-compiled/runtime/logger.js +10 -2
- package/src/tui-compiled/runtime/shared/053cc17b5419261e-codec.js +2 -1
- package/src/tui-compiled/runtime/shared/0766d78c6f481f18-watcher.js +26 -10
- package/src/tui-compiled/runtime/shared/375d9cca2def037d-private-files.js +302 -0
- package/src/tui-compiled/runtime/shared/39c3cb05738fcf6d-projection.js +3 -1
- package/src/tui-compiled/runtime/shared/43fc9e6b994519c7-refresh-lock.js +5 -0
- package/src/tui-compiled/runtime/shared/458b934e92490331-mutate.js +2 -2
- package/src/tui-compiled/runtime/shared/4825e03209d6ae3e-with-lock.js +4 -0
- package/src/tui-compiled/runtime/shared/4f36d333d081d040-merge.js +21 -5
- package/src/tui-compiled/runtime/shared/7211cfec06a298bc-atomic-write.js +21 -0
- package/src/tui-compiled/runtime/shared/905bffc0220f43d0-map.js +36 -1
- package/src/tui-compiled/runtime/shared/a09b6a533c11858f-tui-preferences.js +6 -4
- package/src/tui-compiled/runtime/shared/c14988621dc60a75-port-file.js +30 -8
- package/src/tui-compiled/runtime/shared/c64d7afbc14ca125-sidebar-file.js +17 -8
- package/src/tui-compiled/runtime/shared/c852a15cfe489d12-pool.js +3 -0
- package/src/tui-compiled/runtime/shared/cd94316a888b0a8e-schema.js +3 -2
- package/src/tui-compiled/runtime/shared/d5a8f1061ee2f114-index.js +1 -1
- package/src/tui-compiled/runtime/shared/d7dcba96fea1685c-engine.js +126 -11
- package/src/tui-compiled/runtime/shared/e8cd4929507508d8-refresh-file-lock.js +254 -37
- package/src/tui-compiled/runtime/shared/ec971142548df90e-index.js +1 -0
- package/src/tui-compiled/runtime/shared/fbcdcd0f925e74c0-rpc-client.js +15 -1
- package/src/tui-compiled/runtime/sidebar-state.js +3 -3
- package/dist/index-8kj7sa1p.js +0 -12
- package/dist/index-b3q3j39x.js +0 -2
- package/dist/index-bmd7x5aq.js +0 -2
- package/dist/index-eqh53k8v.js +0 -2
- package/dist/index-jyr8y8k4.js +0 -7
- package/dist/index-m9d2bfkn.js +0 -222
- package/dist/index-rv08jmd4.js +0 -2
- package/dist/token-util-wdza526f.js +0 -1
package/dist/index-eqh53k8v.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{Lb as n,Pb as i,Qb as t,Rb as p,Sb as b}from"./index-jyr8y8k4.js";import{fc as ZZ,gc as $Z,ic as xZ}from"./index-bmd7x5aq.js";var L="all",tZ=Object.freeze(["primary"]);function LZ(Z){return Z.kind==="retired"?Z.retiredAt:Z.checkedAt}function q(Z,$){return JSON.stringify([Z,$])}function l(Z){return typeof Z==="object"&&Z!==null&&!Array.isArray(Z)}function N(Z){return typeof Z==="number"&&Number.isFinite(Z)}function HZ(Z){return typeof Z==="string"&&Z.length>0}function T(Z,$,J){return Z[$]===void 0||J(Z[$])}function eZ(Z){return N(Z)&&Z>0}function u(Z){return typeof Z==="string"}function Z1(Z){if(!l(Z)||!HZ(Z.scope)||!HZ(Z.label))return!1;switch(Z.kind){case"reading":return N(Z.checkedAt)&&N(Z.usedPercent)&&T(Z,"resetsAt",u)&&T(Z,"windowMinutes",eZ);case"retired":return N(Z.retiredAt);case"absent":return N(Z.checkedAt);default:return!1}}function $1(Z){if(!l(Z)||!N(Z.checkedAt))return!1;if(Z.kind==="cleared")return!0;return Z.kind==="reading"&&typeof Z.reached==="boolean"&&T(Z,"remainingPercent",N)&&T(Z,"usedPercent",N)&&T(Z,"resetsAt",u)&&T(Z,"limit",N)&&T(Z,"used",N)&&T(Z,"remaining",N)&&T(Z,"unit",u)}function I(Z){if(!l(Z)||!Array.isArray(Z.limits))return!1;let $=new Set;for(let J of Z.limits){if(!Z1(J))return!1;let X=q(J.scope,J.label);if($.has(X))return!1;$.add(X)}return T(Z,"budget",$1)}class w extends TypeError{constructor(Z){super(Z);this.name="QuotaCodecError"}}function v(Z){return typeof Z==="object"&&Z!==null&&!Array.isArray(Z)}function y(Z){return typeof Z==="number"&&Number.isFinite(Z)}function NZ(Z){return Z===void 0||typeof Z==="string"&&Z!==""}function RZ(Z){return typeof Z==="string"&&Z!==""}function S(Z,$){return Z[$]===void 0||y(Z[$])}function r(Z,$){return Z[$]===void 0||typeof Z[$]==="string"}function J1(Z){return v(Z)&&NZ(Z.scope)&&RZ(Z.label)&&y(Z.usedPercent)&&r(Z,"resetsAt")&&(Z.windowMinutes===void 0||y(Z.windowMinutes)&&Z.windowMinutes>0)}function X1(Z){return v(Z)&&NZ(Z.scope)&&RZ(Z.label)}function V1(Z){if(!v(Z))return!1;if(Z.kind==="cleared")return!0;return Z.kind==="reading"&&typeof Z.reached==="boolean"&&S(Z,"remainingPercent")&&S(Z,"usedPercent")&&r(Z,"resetsAt")&&S(Z,"limit")&&S(Z,"used")&&S(Z,"remaining")&&r(Z,"unit")}function TZ(Z){if(!v(Z)||!y(Z.checkedAt))return!1;let $=Z.readings??[],J=Z.coverage??[];if(!Array.isArray($)||!Array.isArray(J))return!1;let X=new Set;for(let V of $){if(!J1(V))return!1;let Y=q(V.scope??L,V.label);if(X.has(Y))return!1;X.add(Y)}if(!J.every(X1))return!1;return Z.budget===void 0||V1(Z.budget)}function Y1(Z,$){if(Z.scope!==$.scope)return Z.scope<$.scope?-1:1;if(Z.label!==$.label)return Z.label<$.label?-1:1;return 0}function z1(Z,$,J){if($===void 0)return Z;if(Z!==void 0&&J<Z.checkedAt)return Z;return{...$,checkedAt:J}}function o(Z,$){if(Z!==void 0&&!I(Z))throw new w("stored quota map is malformed");if(!TZ($))throw new w("quota observation is malformed");let J=Z??{limits:[]},X=$.checkedAt,V=new Map;for(let K of J.limits)V.set(q(K.scope,K.label),K);let Y=(K)=>{let Q=V.get(K);return Q===void 0||X>=LZ(Q)},G=new Set;for(let K of $.readings??[]){let Q=K.scope??L,U=q(Q,K.label);if(G.add(U),!Y(U))continue;V.set(U,{scope:Q,label:K.label,kind:"reading",checkedAt:X,usedPercent:K.usedPercent,...K.resetsAt===void 0?{}:{resetsAt:K.resetsAt},...K.windowMinutes===void 0?{}:{windowMinutes:K.windowMinutes}})}for(let K of $.coverage??[]){let Q=K.scope??L,U=q(Q,K.label);if(G.has(U)||!Y(U))continue;let P=V.get(U);V.set(U,P===void 0||P.kind==="absent"?{scope:Q,label:K.label,kind:"absent",checkedAt:X}:{scope:Q,label:K.label,kind:"retired",retiredAt:X})}let{limits:z,budget:j,...B}=J,D=z1(J.budget,$.budget,X);return{...B,limits:[...V.values()].sort(Y1),...D===void 0?{}:{budget:D}}}var G1=Object.freeze({validate:I,merge:o});var MZ=900000,CZ="no quota reading yet",FZ="no limits reported";function EZ(Z){let $=Math.max(1,Math.round(Z/60000));if($<60)return`${$}m`;let J=Math.round($/60);if(J<24)return`${J}h`;return`${Math.max(1,Math.round($/1440))}d`}function j1(Z){if(Z%1440===0)return`${Z/1440}d`;if(Z%60===0)return`${Z/60}h`;return`${Z}m`}function h(Z){if(Z.scope!==L||Z.windowMinutes===void 0)return Z.label;return j1(Z.windowMinutes)}function OZ(Z){return`${Math.round(Math.min(100,Math.max(0,Z)))}% left`}function _Z(Z,$){if(Z===void 0)return"";let J=Date.parse(Z);if(!Number.isFinite(J)||J<=$)return"";return`, resets ${EZ(J-$)}`}function U1(Z,$){let J=Z.windowMinutes,X=$.windowMinutes;if(J!==void 0&&X!==void 0&&J!==X)return J-X;if(J===void 0!==(X===void 0))return J===void 0?1:-1;if(Z.scope!==$.scope){if(Z.scope===L)return-1;if($.scope===L)return 1;return Z.scope<$.scope?-1:1}return Z.label<$.label?-1:Z.label>$.label?1:0}function qZ(Z,$){if(!Z)return[];let{now:J}=$,X=($.form??"full")==="full",V=[],Y=[],G=Z.limits.filter((j)=>j.kind==="reading"&&j.remainingPercent!==void 0).sort(U1);for(let j of G)Y.push(j.checkedAt),V.push(`${h(j)} ${OZ(j.remainingPercent??0)}${X?_Z(j.resetsAt,J):""}`);let z=Z.budget;if(z){Y.push(z.checkedAt);let j=z.reached?"credits spent":z.remainingPercent!==void 0?`credits ${OZ(z.remainingPercent)}`:"credits available";V.push(`${j}${X?_Z(z.resetsAt,J):""}`)}if(Y.length>0){let j=J-Math.min(...Y);if(j>($.staleAfterMs??MZ))V.push(`checked ${EZ(j)} ago`)}return V}function a(Z,$){let J=qZ(Z,$);if(J.length>0)return J.join(" · ");return Z&&Z.limits.length>0?FZ:CZ}function B1(Z){if(Z.kind==="retired")return{scope:Z.scope,label:Z.label,kind:"retired",checkedAt:Z.retiredAt};if(Z.kind==="absent")return{scope:Z.scope,label:Z.label,kind:"absent",checkedAt:Z.checkedAt};return{scope:Z.scope,label:Z.label,kind:"reading",checkedAt:Z.checkedAt,usedPercent:Z.usedPercent,remainingPercent:100-Z.usedPercent,...Z.windowMinutes===void 0?{}:{windowMinutes:Z.windowMinutes},...Z.resetsAt===void 0?{}:{resetsAt:Z.resetsAt}}}function Q1(Z,$){let J=Z.windowMinutes!==void 0,X=$.windowMinutes!==void 0;if(J!==X)return J?-1:1;if(J&&X&&Z.windowMinutes!==$.windowMinutes)return($.windowMinutes??0)-(Z.windowMinutes??0);if(Z.label!==$.label)return Z.label<$.label?-1:1;return 0}function K1(Z){return{checkedAt:Z.checkedAt,reached:Z.reached,...Z.remainingPercent===void 0?{}:{remainingPercent:Z.remainingPercent},...Z.resetsAt===void 0?{}:{resetsAt:Z.resetsAt}}}function s(Z,$=L){let J=new Map;for(let j of Z?.limits??[]){if(j.scope!==$&&j.scope!==L)continue;let B=J.get(j.label);if(B===void 0){J.set(j.label,j);continue}let D=j.scope===L?B:j,K=j.scope===L?j:B;J.set(j.label,D.kind==="reading"?D:K)}let X=[...J.values()].map(B1).sort(Q1),V=X.filter((j)=>j.kind==="reading"),Y=V.length>0?V:X,G=Y.length>0?Math.min(...Y.map((j)=>j.checkedAt)):void 0,z=Z?.budget?.kind==="reading"?K1(Z.budget):void 0;return{scope:$,limits:X,...G===void 0?{}:{checkedAt:G},...z===void 0?{}:{budget:z}}}function D1(Z,$){let J=Z?.budget;if(J?.reached!==!0||typeof J.resetsAt!=="string")return;let X=Date.parse(J.resetsAt);if(!Number.isFinite(X)||X<=$)return;return{resetsAt:J.resetsAt,resetAtMs:X}}function P1(Z){return Z.kind==="reading"&&typeof Z.usedPercent==="number"&&Number.isFinite(Z.usedPercent)&&Z.usedPercent>=100}function W1(Z,$){if(typeof Z.resetsAt!=="string")return;let J=Date.parse(Z.resetsAt);return Number.isFinite(J)&&J>$?J:void 0}import{createHash as q1}from"node:crypto";import{constants as x1,copyFileSync as I1,mkdirSync as S1,statSync as b1}from"node:fs";import{readFile as f1}from"node:fs/promises";import{homedir as A1,tmpdir as k1}from"node:os";import{dirname as w1,join as XZ}from"node:path";import{chmod as H1,mkdir as L1,readFile as N1}from"node:fs/promises";import{dirname as R1}from"node:path";function e(Z){let{path:$,defaultValue:J,normalize:X}=Z,V=Promise.resolve(),Y=(U)=>{if(U==="")return J;try{return X(JSON.parse(U))}catch{return J}},G=async()=>{try{return await N1($,"utf8")}catch(U){if(U.code==="ENOENT")return"";throw U}},z=async()=>{try{return Y(await G())}catch{return J}},j=(U,P)=>{let W=V.then(U).then((H)=>P?.onResult?.(H));return V=W.catch(()=>{}),W},B={...b.sidebar,name:Z.lockName??b.sidebar.name,timeoutMs:Z.timeoutMs??b.sidebar.timeoutMs},D=async(U,P,W)=>{await n($,P,{serialize:JSON.stringify,beforeRename:async()=>{await W?.beforeCommit?.(),await U.assertOwned()}}),await W?.afterRename?.();try{return await U.assertOwned(),!0}catch(H){if(H instanceof t)return!1;throw H}},K=async(U,P,W)=>{Z.logger?.warn("sidebar lock lost after rename; repairing write",{path:$});try{let H=await p($,B,async(O)=>{let R=U(await z(),P);if(R===void 0)return"skipped";return await D(O,R,W)?"written":"lost-again"});if(H==="lost-again")Z.logger?.warn("sidebar repair lost its lock after rename",{path:$});return{status:"lost-after-rename",repair:H}}catch(H){if(!(H instanceof i))throw H;return Z.logger?.warn("sidebar repair lock unavailable; repair skipped",{path:$}),{status:"lost-after-rename",repair:"lock-unavailable"}}},Q=async(U,P)=>{let W=P,H=R1($),O=Z.secureDir??!0;if(await L1(H,{recursive:!0,mode:448}),O)await H1(H,448).catch((x)=>{Z.logger?.warn("sidebar directory permission remediation failed",{error:x instanceof Error?x.message:String(x)})});let R=await p($,B,async(x)=>{let KZ=async(E)=>({value:E,held:await D(x,E,W)});for(let E=0;E<3;E+=1){let PZ=await G(),WZ=U(Y(PZ));if(WZ===void 0)return;if(E===0)await W?.beforeRecheck?.();if(await G()!==PZ)continue;return await KZ(WZ)}let DZ=U(await z());return DZ===void 0?void 0:await KZ(DZ)});if(R===void 0)return{status:"skipped"};if(R.held)return{status:"written"};let QZ=P?.repair??Z.repair;if(!QZ)return Z.logger?.warn("sidebar lock lost after rename; write not repaired",{path:$}),{status:"lost-after-rename",repair:"none"};return await K(QZ,R.value,W)};return{read:z,write:(U,P)=>j(()=>Q(()=>U,P),P),update:(U,P)=>j(()=>Q(U,P),P)}}import{tmpdir as T1}from"node:os";import{join as O1}from"node:path";var _1=["error","warn","info","debug","trace"];function M1(){return process.env.OPENCODE_OPENAI_AUTH_LOG_FILE??O1(T1(),"opencode-openai-auth.log")}function C1(){let Z=process.env.OPENCODE_OPENAI_AUTH_LOG_LEVEL;return Z&&_1.includes(Z)?Z:void 0}xZ({file:M1,level:C1});process.on("exit",ZZ);var zZ=["primary","secondary"],F1={primary:300,secondary:10080};function E1(Z,$){return h({scope:"all",label:$,windowMinutes:Z})}function c3(Z){if(!Z)return[];let $=[];for(let J of zZ){let X=Z[J];if(!X)continue;let V=X.windowMinutes,Y=V!==void 0&&Number.isFinite(V)&&V>0?V:F1[J];$.push({key:J,label:E1(V,J),window:X,windowMs:Y*60000})}return $}var f=$Z("sidebar"),y1="OPENCODE_OPENAI_AUTH_SIDEBAR_STATE_FILE";function vZ(){let Z=process.env.XDG_STATE_HOME||XZ(A1(),".local","state");return XZ(Z,"cortexkit","openai-auth","sidebar-state.json")}var hZ=XZ(k1(),"opencode-openai-auth","sidebar-state.json");function i3(Z){hZ=Z,VZ.clear()}var v1=/^[a-f0-9]{64}$/,GZ=604800000,pZ=256,mZ=3600000;function C(Z){return q1("sha256").update(Z).digest("hex")}function h1(Z){return typeof Z==="number"&&Number.isFinite(Z)&&Z>=0?Z:void 0}function gZ(Z){let $=h1(Z);return $!==void 0?{resetCredits:$}:{}}function p1(Z){if(Z===null||typeof Z!=="object"||Array.isArray(Z))return;let $={};for(let[J,X]of Object.entries(Z)){if(X===null||typeof X!=="object"||Array.isArray(X))continue;let V=X;if(typeof V.activeId!=="string"||typeof V.route!=="string"||typeof V.updatedAt!=="number"||!Number.isFinite(V.updatedAt))continue;$[J]={activeId:V.activeId,route:V.route,updatedAt:V.updatedAt}}return Object.keys($).length>0?$:void 0}function m1(Z){if(Z===null||typeof Z!=="object"||Array.isArray(Z))return;let $={};for(let[J,X]of Object.entries(Z)){if(!v1.test(J)||X===null||typeof X!=="object"||Array.isArray(X))continue;let V=X;if(typeof V.accountId!=="string"||V.accountId.length===0||typeof V.assignedAt!=="number"||!Number.isFinite(V.assignedAt)||V.assignedAt<0||typeof V.lastSeenAt!=="number"||!Number.isFinite(V.lastSeenAt)||V.lastSeenAt<0||typeof V.inputBytes!=="number"||!Number.isFinite(V.inputBytes)||V.inputBytes<0)continue;let Y=V.quotaCheckedAt;if(Y!==void 0&&(typeof Y!=="number"||!Number.isFinite(Y)||Y<0))continue;let G=V.wireAccountId;$[J]={accountId:V.accountId,assignedAt:V.assignedAt,lastSeenAt:V.lastSeenAt,inputBytes:V.inputBytes,...Y===void 0?{}:{quotaCheckedAt:Y},...typeof G==="string"?{wireAccountId:G}:{}}}return Object.keys($).length>0?$:void 0}function _(){let Z=process.env[y1];if(Z)return Z;let $=vZ();if(!VZ.has($))VZ.add($),g1($,hZ);return $}var VZ=new Set;function g1(Z,$){try{S1(w1(Z),{recursive:!0,mode:448}),I1($,Z,x1.COPYFILE_EXCL)}catch{}}var A={main:{quota:null,killed:!1},fallbacks:[],activeId:void 0,route:"main",lastUpdated:0};function c(Z){if(Z===null||typeof Z!=="object"||Array.isArray(Z))return A;let $=Z,J=$.main,X;if(J!==null&&typeof J==="object"&&!Array.isArray(J)){let U=J;X={quota:"quota"in U?U.quota:null,killed:typeof U.killed==="boolean"?U.killed:!1,...typeof U.mainAccountId==="string"?{mainAccountId:U.mainAccountId}:{},...typeof U.quotaBackedOff==="boolean"?{quotaBackedOff:U.quotaBackedOff}:{},...typeof U.quotaBackoffUntil==="number"?{quotaBackoffUntil:U.quotaBackoffUntil}:{},...typeof U.refreshBackedOff==="boolean"?{refreshBackedOff:U.refreshBackedOff}:{},...typeof U.refreshBackoffUntil==="number"?{refreshBackoffUntil:U.refreshBackoffUntil}:{},...gZ(U.resetCredits)}}else X={quota:null,killed:!1};let V=IZ($.fallbacks),Y=Array.isArray($.vaultAccounts)?IZ($.vaultAccounts):void 0,G=typeof $.activeId==="string"?$.activeId:void 0,z=typeof $.route==="string"?$.route:A.route,j=typeof $.lastUpdated==="number"?$.lastUpdated:0,B=typeof $.planType==="string"?$.planType:void 0,D=typeof $.credits==="number"?$.credits:void 0,K=p1($.activeRouting),Q=m1($.stickyAssignments);return{main:X,fallbacks:V,activeId:G,route:z,lastUpdated:j,...K!==void 0?{activeRouting:K}:{},...Q!==void 0?{stickyAssignments:Q}:{},...B!==void 0?{planType:B}:{},...D!==void 0?{credits:D}:{},...$.accountPool===!0?{accountPool:!0}:{},...Y!==void 0?{vaultAccounts:Y}:{}}}function IZ(Z){if(!Array.isArray(Z))return[];return Z.filter(($)=>$!==null&&typeof $==="object"&&!Array.isArray($)&&typeof $.id==="string").map(($)=>({id:$.id,label:typeof $.label==="string"?$.label:void 0,...typeof $.accountId==="string"?{accountId:$.accountId}:{},quota:"quota"in $?$.quota:null,killed:typeof $.killed==="boolean"?$.killed:!1,enabled:typeof $.enabled==="boolean"?$.enabled:!0,...gZ($.resetCredits)}))}function jZ(Z){return[...Z.fallbacks,...Z.vaultAccounts??[]]}async function d1(Z=_()){try{let $=await f1(Z,"utf8");return c(JSON.parse($))}catch{return A}}var c1=3600000,SZ=128;function dZ(Z,$,J=Date.now()){if(!(Z.updatedAt>=J-c1&&Z.updatedAt<=J))return!1;if($===void 0)return!0;return Z.activeId==="main"||$.some((V)=>V.enabled!==!1&&V.killed!==!0&&V.id===Z.activeId)}function u1(Z,$=Date.now()){let J=Z?.spendControl;if(J?.reached!==!0||typeof J.resetsAt!=="string")return;let X=Date.parse(J.resetsAt);if(!Number.isFinite(X)||X<=$)return;return{resetsAt:J.resetsAt,resetAtMs:X}}function l1(Z,$=Date.now()){let J;for(let V of zZ){let Y=Z?.[V];if(typeof Y?.resetsAt!=="string"||!Number.isFinite(Y.usedPercent)||Y.usedPercent<100)continue;let G=Date.parse(Y.resetsAt);if(!Number.isFinite(G)||G<=$)continue;if(!J||G<J.resetAtMs)J={resetsAt:Y.resetsAt,resetAtMs:G}}let X=u1(Z,$);if(X&&(!J||X.resetAtMs<J.resetAtMs))J=X;return J}function m(Z,$=Date.now()){return l1(Z,$)!==void 0}function r1(Z,$,J=Date.now()){if(!$||Z.route!=="sticky-balanced")return;let X=Z.stickyAssignments?.[C($)];if(!X||X.lastSeenAt<J-GZ)return;if(X.accountId==="main")return Z.main?.killed||m(Z.main?.quota,J)?void 0:"main";let V=jZ(Z).find((Y)=>Y.id===X.accountId);if(!V||V.enabled===!1||V.killed===!0||m(V.quota,J))return;return V.id}function t3(Z,$,J=Date.now()){if(!$)return{activeId:Z.activeId??"main",route:Z.route};let X=$?Z.activeRouting?.[$]:void 0,V=jZ(Z),Y=X?.activeId==="main"?Z.main.quota:V.find((D)=>D.id===X?.activeId)?.quota;if(X&&dZ(X,V,J)&&!m(Y,J))return{activeId:X.activeId,route:X.route};let G=r1(Z,$,J);if(G)return{activeId:G,route:Z.route};let z=Z.vaultAccounts!==void 0,j=(z?Z.vaultAccounts??[]:Z.fallbacks).filter((D)=>D.enabled&&!D.killed),B=j.find((D)=>!m(D.quota,J))??j[0];return{activeId:(z||Z.route==="fallback-first")&&B?B.id:"main",route:Z.route}}function cZ(Z,$,J=Date.now(),X){if(!Z)return;let V=Object.entries(Z).filter(([G,z])=>G!==X&&dZ(z,$,J)),Y=V.length<=SZ?V:V.sort((G,z)=>z[1].updatedAt-G[1].updatedAt).slice(0,SZ);return Y.length>0?Object.fromEntries(Y):void 0}function k(Z,$,J=Date.now(),X){if(!Z)return;let V=0,Y=0,G=0,z=[];for(let[B,D]of Object.entries(Z)){if(B===X){G+=1;continue}if(D.lastSeenAt<J-GZ){Y+=1;continue}if($!==void 0&&!$.has(D.accountId)){V+=1;continue}z.push([B,D])}let j=V+Y+G;if(j>0)f.debug("pruned sticky assignments",{pid:process.pid,removed:j,reasons:{"account-not-in-roster":V,expired:Y,"explicit-removal":G}});return z.length>0?Object.fromEntries(z):void 0}function uZ(Z,$){let J=Object.keys(Z).length-pZ;if(J<=0)return Z;let X=new Set(Object.entries(Z).filter(([V])=>V!==$).sort(([V,Y],[G,z])=>Y.lastSeenAt-z.lastSeenAt||V.localeCompare(G)).slice(0,J).map(([V])=>V));return Object.fromEntries(Object.entries(Z).filter(([V])=>!X.has(V)))}function lZ(Z,$){if(Z===$)return!0;if(!Z||!$)return!1;let J=Object.entries(Z);if(J.length!==Object.keys($).length)return!1;return J.every(([X,V])=>Object.is($[X],V))}function rZ(Z,$,J,X){return Z!==void 0&&$.has(Z.accountId)&&!J.has(Z.accountId)&&Z.lastSeenAt>=X-GZ}function oZ(Z,$,J,X){return $>Z.inputBytes||J-Z.lastSeenAt>=mZ||Z.wireAccountId===void 0&&X!==void 0}function aZ(Z,$){return typeof Z.wireAccountId==="string"&&typeof $==="string"&&Z.wireAccountId!==$}function o1(Z){let $=new Map(Z),J={get size(){return $.size},has:(X)=>$.has(X),get:(X)=>$.get(X),entries:()=>$.entries(),keys:()=>$.keys(),values:()=>$.values(),forEach:(X,V)=>{$.forEach((Y,G)=>{X.call(V,Y,G,J)})},[Symbol.iterator]:()=>$[Symbol.iterator]()};return Object.freeze(J)}function a1(Z,$,J){let X=new Map;for(let[V,Y]of Object.entries(Z??{})){if(V===J)continue;if(Y.quotaCheckedAt!==$[Y.accountId])continue;X.set(Y.accountId,(X.get(Y.accountId)??0)+Y.inputBytes)}return o1(X)}function UZ(Z){if(Z===void 0)return;return new Set(["main",...Z.filter(($)=>$.enabled!==!1&&$.killed!==!0).map(($)=>$.id)])}var YZ=Promise.resolve();function M(Z){let $=YZ.then(Z);return YZ=$.catch(()=>{}),$}var bZ=new Map;function BZ(Z){let $=bZ.get(Z);if(!$)$=e({path:Z,defaultValue:A,normalize:c,secureDir:Z===vZ(),logger:f}),bZ.set(Z,$);return $}var JZ=new Set;async function sZ(Z,$){try{await $}catch(J){let X={pid:process.pid,error:J instanceof Error?J.message:String(J)};if(JZ.has(Z))f.debug("sidebar write failed again",X);else JZ.add(Z),f.warn("sidebar write failed",X);throw J}if(JZ.delete(Z))f.info("sidebar write recovered",{pid:process.pid})}function e3(Z,$=_()){return M(()=>sZ($,BZ($).write(c(Z))))}function s1(Z){return BZ(Z).read()}function F(Z,$,J){let X=Symbol("sidebar authority changed");return sZ(Z,BZ(Z).update((V)=>{if(J?.canWrite&&!J.canWrite())return;let Y=$(V);return Y===void 0?void 0:c(Y)},{beforeRecheck:async(...V)=>{if(await J?.beforeRecheck?.(...V),J?.canWrite&&!J.canWrite())throw X}}).catch((V)=>{if(V!==X)throw V}))}function g(Z){let $;for(let J of[Z?.primary?.checkedAt,Z?.secondary?.checkedAt,Z?.checkedAt])if(typeof J==="number"&&Number.isFinite(J))$=$===void 0?J:Math.max($,J);return $}function fZ(Z,$){let J=g(Z),X=g($);if(X!==void 0&&(J===void 0||X>J))return $;return Z}function AZ(Z,$){return Z!==void 0&&$!==void 0&&Z===$}function d(Z,$){let J=Z?.checkedAt;if(typeof J==="number"&&Number.isFinite(J))return J;if(typeof $==="number"&&Number.isFinite($))return $;return}function kZ(Z,$,J,X,V){if(Z&&$){let Y=d(Z,X),G=d($,V);if(G!==void 0&&(Y===void 0||G>Y))return $;return Z}return J?$:Z}function wZ(Z,$){if(Z.spendControl!==void 0)return Z.spendControl;if(Z.spendControlCleared===!0)return;return $.spendControl}function yZ(Z,$){if(!Z)return $;if(!$)return Z;let J=g(Z),X=g($),V=X!==void 0&&(J===void 0||X>J),Y=kZ(Z.primary,$.primary,V,Z.checkedAt,$.checkedAt),G=kZ(Z.secondary,$.secondary,V,Z.checkedAt,$.checkedAt),z=V?wZ($,Z):wZ(Z,$),j=z===void 0&&(Z.spendControlCleared===!0||$.spendControlCleared===!0),B;for(let U of[d(Y),d(G)])if(U!==void 0)B=B===void 0?U:Math.max(B,U);let{spendControl:D,spendControlCleared:K,...Q}=Z;return{...Q,primary:Y,secondary:G,...z!==void 0?{spendControl:z}:{},...j?{spendControlCleared:!0}:{},checkedAt:B??Z.checkedAt}}function Z4(Z,$=_(),J){return M(async()=>{await F($,(X)=>{let V=new Map(X.fallbacks.map((B)=>[B.id,B])),Y=AZ(Z.main.mainAccountId,X.main.mainAccountId),G=Y?yZ(Z.main.quota,X.main.quota):fZ(Z.main.quota,X.main.quota),z=Date.now(),j=k(X.stickyAssignments,UZ(jZ(Z)),z);return{...X,...Z,main:{...Z.main,quota:G,mainAccountId:Y?Z.main.mainAccountId:G===X.main.quota&&G!==Z.main.quota?X.main.mainAccountId:Z.main.mainAccountId},fallbacks:Z.fallbacks.map((B)=>{let D=V.get(B.id),K=AZ(B.accountId,D?.accountId),Q=K?yZ(B.quota,D?.quota??null):fZ(B.quota,D?.quota??null);return{...B,quota:Q,accountId:K?B.accountId:Q===D?.quota&&Q!==B.quota?D?.accountId:B.accountId}}),activeId:X.activeId,activeRouting:X.activeRouting,stickyAssignments:j,lastUpdated:Math.max(z,X.lastUpdated+1),accountPool:Z.accountPool===!0?!0:void 0,vaultAccounts:Z.vaultAccounts}},J)})}function $4(Z,$,J=_(),X){return M(async()=>{await F(J,(V)=>{let Y=cZ({...V.activeRouting,[Z.sessionId]:{activeId:Z.activeId,route:Z.route,updatedAt:Z.updatedAt}},$,Date.now()),G=k(V.stickyAssignments,UZ($),Date.now());return{...V,activeId:Z.activeId,route:Z.route,activeRouting:Y,stickyAssignments:G,lastUpdated:Math.max(Date.now(),V.lastUpdated+1)}},X)})}function J4(Z,$=_(),J){return M(async()=>{await F($,(X)=>({...X,activeId:Z.activeId,route:Z.route,lastUpdated:Math.max(Date.now(),X.lastUpdated+1)}),J)})}function X4(Z,$,J=_(),X){return M(async()=>{await F(J,(V)=>{let Y=Date.now(),G=cZ(V.activeRouting,$,Y,Z),z=k(V.stickyAssignments,UZ($),Y,C(Z));return{...V,activeRouting:G,stickyAssignments:z,lastUpdated:Math.max(Date.now(),V.lastUpdated+1)}},X)})}function nZ(Z,$){return rZ(Z,new Set($.validPinnedAccountIds),new Set($.excludeAccountIds),$.now)&&!aZ(Z,$.wireAccountIdByAccount?.[Z.accountId])&&!oZ(Z,$.requestBytes,$.now,$.wireAccountIdByAccount?.[Z.accountId])}function iZ(Z,$){let J=C($.sessionId),X=new Set($.validPinnedAccountIds),V=new Set($.excludeAccountIds),Y=k(Z.stickyAssignments,X,$.now),G=!lZ(Z.stickyAssignments,Y),z=Y?.[J],j=z!==void 0&&aZ(z,$.wireAccountIdByAccount?.[z.accountId]);if(rZ(z,X,V,$.now)&&!j){let K=oZ(z,$.requestBytes,$.now,$.wireAccountIdByAccount?.[z.accountId]),Q=K?{...z,inputBytes:Math.max(z.inputBytes,$.requestBytes),...z.wireAccountId===void 0&&$.wireAccountIdByAccount?.[z.accountId]!==void 0?{wireAccountId:$.wireAccountIdByAccount?.[z.accountId]}:{},...$.now-z.lastSeenAt>=mZ?{lastSeenAt:$.now}:{}}:z;if(!G&&!K)return{assignment:Q,next:void 0};return{assignment:Q,next:{...Z,stickyAssignments:{...Y,[J]:Q},lastUpdated:Math.max($.now,Z.lastUpdated+1)}}}let B=$.choose(a1(Y,$.quotaCheckedAtByAccount,j?J:void 0));if(!B){if(!G)return{assignment:void 0,next:void 0};return{assignment:void 0,next:{...Z,stickyAssignments:Y,lastUpdated:Math.max($.now,Z.lastUpdated+1)}}}let D={accountId:B.accountId,assignedAt:$.now,lastSeenAt:$.now,inputBytes:$.requestBytes,...B.quotaCheckedAt===void 0?{}:{quotaCheckedAt:B.quotaCheckedAt},...$.wireAccountIdByAccount?.[B.accountId]===void 0?{}:{wireAccountId:$.wireAccountIdByAccount?.[B.accountId]}};return{assignment:D,next:{...Z,stickyAssignments:uZ({...Y,[J]:D},J),lastUpdated:Math.max($.now,Z.lastUpdated+1)}}}async function V4(Z,$=_(),J){let X=C(Z.sessionId),V=(await s1($)).stickyAssignments?.[X];if(nZ(V,Z))return V;let Y;return await M(async()=>{await F($,(G)=>{let z=iZ(G,Z);return Y=z.assignment,z.next},J)}),Y}function Y4(Z,$){let J=Z.stickyAssignments?.[C($.sessionId)];if(nZ(J,$))return{assignment:J,next:void 0};return iZ(Z,$)}function z4(Z,$=_()){let J=C(Z.sessionId),X=new Set(Z.validPinnedAccountIds);return M(async()=>{await F($,(V)=>{let Y=Date.now(),G=k(V.stickyAssignments,X,Y),z=G?.[J];if(z&&z.assignedAt>Z.assignment.assignedAt){if(lZ(V.stickyAssignments,G))return;return{...V,stickyAssignments:G,lastUpdated:Math.max(Y,V.lastUpdated+1)}}let B=z!==void 0&&z.accountId===Z.assignment.accountId&&z.assignedAt===Z.assignment.assignedAt?{...Z.assignment,inputBytes:Math.max(z.inputBytes,Z.assignment.inputBytes),lastSeenAt:Math.max(z.lastSeenAt,Z.assignment.lastSeenAt)}:Z.assignment;return{...V,stickyAssignments:uZ({...G,[J]:B},J),lastUpdated:Math.max(Y,V.lastUpdated+1)}})})}async function G4(Z,$=_()){let J=C(Z),X=!1;return await M(async()=>{await F($,(V)=>{let Y=V.stickyAssignments;if(Y?.[J]===void 0){X=!1;return}X=!0;let{[J]:G,...z}=Y;return{...V,...Object.keys(z).length>0?{stickyAssignments:z}:{stickyAssignments:void 0},lastUpdated:Math.max(Date.now(),V.lastUpdated+1)}})}),X}function j4(){return YZ}var n1=500;function i1(Z,$,J){return new Promise((X,V)=>{let Y=setTimeout(()=>X(J()),$);Y.unref?.(),Z.then((G)=>{clearTimeout(Y),X(G)},(G)=>{clearTimeout(Y),V(G)})})}function U4(Z,$={}){let J=$.readBudgetMs??n1,X,V,Y=()=>{try{let z=b1(Z);return`${z.ino}:${z.size}:${z.mtimeMs}`}catch{return}},G=(z)=>{if(V&&V.key===z)return V.promise;let j=Date.now(),B=d1(Z).then((Q)=>{if(!X||X.readAt<=j)X={state:Q,readAt:j,key:z};return{state:Q,readAt:j}}),D={key:z,promise:B};V=D;let K=()=>{if(V===D)V=void 0};return B.then(K,K),B};return{get(){let z=Y();if(X&&X.key===z)return Promise.resolve({state:X.state,readAt:X.readAt});return i1(G(z),J,()=>X?{state:X.state,readAt:X.readAt}:{state:A,readAt:0})},read(){return G(Y())},refreshInBackground(){let z=Y();if(X?.key===z)return;G(z)}}}function B4(Z,$,J){let X={assignment:J};Z.delete($),Z.set($,X);while(Z.size>pZ){let V=Z.keys().next().value;if(V===void 0)break;Z.delete(V)}return X}function Q4(Z,$){if($.size===0)return Z.state;let J={...Z.state.stickyAssignments},X=!1;for(let[V,Y]of $){if(Y.persistedAt!==void 0&&Z.readAt>Y.persistedAt){$.delete(V);continue}J[V]=Y.assignment,X=!0}if(!X)return Z.state;return{...Z.state,stickyAssignments:J}}function K4(Z){let $=Z.retryDelayMs??500,J=Z.maxRetryDelayMs??30000,X=new Map,V=new Map,Y=new Set,G=0,z=$,j,B=!1,D=()=>{if(j||B||V.size===0)return;j=setTimeout(()=>{j=void 0;let Q=[...V];V.clear(),z=Math.min(z*2,J);for(let[U,P]of Q){let W=X.get(U);if(W!==void 0)K(U,P.label,P.write,W)}},z),j.unref?.()},K=(Q,U,P,W)=>{let H;try{H=P()}catch(O){H=Promise.reject(O)}H.then(()=>{if(X.get(Q)!==W)return;if(X.delete(Q),Y.delete(Q))Z.logger.info("sidebar bookkeeping write recovered",{pid:process.pid,write:U});if(Y.size===0)z=$;Z.onWritten?.()},(O)=>{if(X.get(Q)!==W)return;let R={pid:process.pid,write:U,error:O instanceof Error?O.message:String(O)};if(B){X.delete(Q),Z.logger.debug("sidebar bookkeeping write dropped",R);return}if(Y.has(Q))Z.logger.debug("sidebar bookkeeping write failed again",R);else Y.add(Q),Z.logger.warn("sidebar bookkeeping write failed; retrying in the background",R);V.set(Q,{label:U,write:P}),D()})};return{enqueue(Q,U,P){G+=1,X.set(Q,G),V.delete(Q),K(Q,U,P,G)},cancel(Q){X.delete(Q),V.delete(Q),Y.delete(Q)},stop(){if(B=!0,j)clearTimeout(j);j=void 0,V.clear()}}}function D4(Z){let $=Z.activeId;if(Z.vaultAccounts!==void 0){let J=Z.vaultAccounts.filter((V)=>V.enabled),X=J.find((V)=>V.id===$)??J[0];return X?{id:X.id,name:X.label??X.id,quota:X.quota,killed:X.killed}:{id:"vault",name:"vault",quota:null,killed:!1}}if($&&$!=="main"){let J=Z.fallbacks.find((X)=>X.enabled&&X.id===$);if(J)return{id:J.id,name:J.label??J.id,quota:J.quota,killed:J.killed}}return{id:"main",name:"main",quota:Z.main.quota,killed:Z.main.killed}}function t1(Z,$=Date.now()){if(!Z)return;return s({limits:zZ.flatMap((J)=>{let X=Z[J];return X?[{kind:"reading",scope:"all",label:J,usedPercent:X.usedPercent,checkedAt:X.checkedAt??Z.checkedAt??$,windowMinutes:X.windowMinutes,resetsAt:X.resetsAt}]:[]}),...Z.spendControl?{budget:{...Z.spendControl,kind:"reading",checkedAt:Z.checkedAt??$}}:{}})}function P4(Z,$=Date.now()){let J=Z?.primary?.usedPercent??null,X=Z?.secondary?.usedPercent??null,V=t1(Z,$);return{primaryUsedPercent:J,secondaryUsedPercent:X,text:!V||V.limits.length===0&&!V.budget?null:a(V,{now:$,form:"compact"})}}var e1=300000,Z3=0.01,$3=1;function W4(Z,$,J){if(!Z.resetsAt)return null;let X=new Date(Z.resetsAt).getTime();if(!Number.isFinite(X))return null;let V=X-$,Y=J-V;if(Y<e1)return null;if(Y<$*Z3)return null;if(Y>=$)return null;let G=Z.usedPercent,z=Math.min(Math.max(Y/$*100,0),100),j=G-z,B=Math.abs(j)<$3?"on-pace":j>0?"deficit":"reserve",D=null;if(G>0){let K=Y*100/G,Q=V+K;if(Q<X)D=new Date(Q).toISOString()}return{pacePercent:z,deltaPercent:j,state:B,runsOutAt:D}}
|
|
2
|
-
export{L as La,tZ as Ma,I as Na,o as Oa,G1 as Pa,h as Qa,qZ as Ra,a as Sa,s as Ta,D1 as Ua,P1 as Va,W1 as Wa,E1 as Xa,c3 as Ya,i3 as Za,GZ as _a,pZ as $a,C as ab,_ as bb,A as cb,c as db,d1 as eb,c1 as fb,SZ as gb,dZ as hb,u1 as ib,l1 as jb,m as kb,r1 as lb,t3 as mb,cZ as nb,k as ob,e3 as pb,Z4 as qb,$4 as rb,J4 as sb,X4 as tb,iZ as ub,V4 as vb,Y4 as wb,z4 as xb,G4 as yb,j4 as zb,n1 as Ab,i1 as Bb,U4 as Cb,B4 as Db,Q4 as Eb,K4 as Fb,D4 as Gb,t1 as Hb,P4 as Ib,W4 as Jb};
|
package/dist/index-jyr8y8k4.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import{randomUUID as O}from"node:crypto";import{mkdir as a,open as x0,readFile as L,rename as i,rm as f,stat as s,writeFile as M}from"node:fs/promises";import{dirname as $0,join as t}from"node:path";function d(x,K){return`${x}.${K}.lock`}class p extends Error{details;constructor(x){super(`Timed out acquiring ${x.name} lock for ${x.target}`);this.name="LockContentionError",this.details=x}}class R extends Error{details;constructor(x){super(`Lost ${x.name} lock for ${x.target}`);this.name="LockOwnershipError",this.details=x}}async function Q0(x,K,H){let B=performance.now();for(;;){let W=await l({path:x,name:K.name,ttlMs:K.ttlMs,renew:K.renew??!1});if(W)try{return await H(W)}finally{await W.release()}let j=K.timeoutMs-(performance.now()-B);if(j<=0)throw new p({target:x,name:K.name,timeoutMs:K.timeoutMs});await new Promise((C)=>setTimeout(C,Math.min(25,Math.ceil(j))))}}var z0=globalThis.setTimeout.bind(globalThis),K0=globalThis.clearTimeout.bind(globalThis);function N0(x){let K=x?.code;return K==="ENOENT"||K==="EINVAL"||K==="ENOTDIR"}async function l(x){let K=d(x.path,x.name),H=t(K,"owner.json"),B=O(),W=x.now??Date.now,j=null,C=!1,G,X,n=new Promise(($)=>{X=$});function T($){try{let z=x.onRenewalTimer?.($);if(z&&(typeof z==="object"||typeof z==="function")&&"then"in z&&typeof z.then==="function")Promise.resolve(z).catch(()=>{})}catch{}}function I(){if(!j)return;K0(j),j=null,T("cancelled")}function Z($,z){if(G||C)return;G=Object.freeze({reason:$,expectedOwnerId:B,...typeof z?.ownerId==="string"?{observedOwnerId:z.ownerId}:{},...typeof z?.expiresAt==="number"?{observedExpiresAt:z.expiresAt}:{}}),I(),X(G)}let g=null,V=`${K}.evicting`,E=t(V,"owner.json"),P=O(),r=5000,U=8;async function _(){try{return JSON.parse(await L(K,"utf8"))}catch($){if($.code!=="EISDIR")throw $;return JSON.parse(await L(H,"utf8"))}}async function e(){let $=`${K}.${O()}.tmp`,z,N=!1;try{z=await x0($,"wx",384),N=!0,await z.writeFile(`${JSON.stringify({ownerId:B,expiresAt:W()+x.ttlMs})}
|
|
2
|
-
`,"utf8"),await z.chmod(384),await z.close(),z=void 0,await i($,K),N=!1}finally{if(await z?.close().catch(()=>{}),N)await f($,{force:!0}).catch(()=>{})}}async function q(){try{return await M(K,`${JSON.stringify({ownerId:B,expiresAt:W()+x.ttlMs})}
|
|
3
|
-
`,{encoding:"utf8",mode:384,flag:"wx"}),!0}catch($){let z=$.code;if(z==="EEXIST"||z==="EISDIR")return!1;if(z==="ENOENT"){await a($0(K),{recursive:!0});try{return await M(K,`${JSON.stringify({ownerId:B,expiresAt:W()+x.ttlMs})}
|
|
4
|
-
`,{encoding:"utf8",mode:384,flag:"wx"}),!0}catch(N){let Y=N.code;if(Y==="EEXIST"||Y==="EISDIR")return!1;throw N}}throw $}}async function D(){await new Promise(($)=>setTimeout($,Math.floor(Math.random()*4)))}async function m(){try{let $=await _();return Number($?.expiresAt)>W()}catch{try{return(await s(K)).mtimeMs+x.ttlMs>W()}catch{return!1}}}async function Q(){try{return JSON.parse(await L(E,"utf8"))?.ownerId===P}catch{return!1}}async function S(){if(await Q())await f(V,{recursive:!0,force:!0}).catch(()=>{})}async function u(){await a(V);try{await M(E,`${JSON.stringify({ownerId:P,createdAt:W()})}
|
|
5
|
-
`,{encoding:"utf8",mode:384,flag:"wx"})}catch($){if(N0($))return!1;throw await S(),$}if(x.onStep)await x.onStep("eviction-marker-acquired");return!0}async function k(){let $;try{$=await s(V)}catch(N){if(N.code==="ENOENT")return"missing";throw N}if($.mtimeMs+r>W())return"fresh";if(x.onStep)await x.onStep("stale-marker-stat");let z=`${V}.${O()}`;try{await i(V,z)}catch(N){if(N.code==="ENOENT")return"missing";throw N}if(x.onStep)await x.onStep("stale-marker-claimed");return await f(z,{recursive:!0,force:!0}).catch(()=>{}),"recovered"}async function v($){try{if(!await u())return!1}catch(z){if(z.code==="EEXIST")return!1;throw z}try{await $()}finally{await S()}return!0}async function h(){for(let $=0;$<U;$++){if(x.onStep)await x.onStep("relinquish-read");let z;try{z=await _()}catch{return}if(z?.ownerId!==B)return;try{await f(K,{recursive:!0,force:!0});return}catch{await D()}}}function w(){if(!x.renew||C||G)return;let $=x.renewIntervalMs??Math.max(1000,Math.floor(x.ttlMs/3));if(j=z0(()=>{j=null;let z=(async()=>{let N=!C;try{if(!await v(async()=>{let b=await _(),o=W();if(C||G){N=!1;return}if(b?.ownerId!==B){Z("taken-over",b),N=!1;return}if(!(Number(b?.expiresAt)>o)){Z("expired",b),N=!1;return}if(x.onStep)await x.onStep("renewal-owner-confirmed");if(C||G){N=!1;return}if(!await Q())return;if(x.onStep)await x.onStep("renewal-write-fenced");if(C||G){N=!1;return}if(!await Q())return;if(x.onStep)await x.onStep("renewal-write-ready");if(C||G){N=!1;return}if(await e(),!await Q()){Z("marker-lost"),N=!1,await h();return}})&&x.onStep)await x.onStep("renewal-marker-unavailable")}catch{try{let Y=await _();if(Y?.ownerId!==B)Z("taken-over",Y);else if(!(Number(Y?.expiresAt)>W()))Z("expired",Y)}catch{Z("renewal-failed")}}finally{if(x.onStep)try{await x.onStep("renewal-finished")}catch{}if(N&&!C&&!G)w()}})();g=z,z.finally(()=>{if(g===z)g=null})},$),"unref"in j)j.unref();T("scheduled")}function c(){try{let $=x.onContended?.();if($&&(typeof $==="object"||typeof $==="function")&&"then"in $&&typeof $.then==="function")Promise.resolve($).catch(()=>{})}catch{}return null}let J=await q();if(!J)for(let $=0;$<U;$++){if(J=await q(),J)break;if(await m())return c();if(x.onStep)await x.onStep("stale-lock-observed");try{if(!await u()){await D();continue}}catch(z){if(z.code!=="EEXIST")throw z;if(await k()==="fresh")return null;await D();continue}try{if(await m())return c();if(!await Q())return null;if(x.onStep)await x.onStep("stale-lock-confirmed");if(!await Q())return null;if(await f(K,{recursive:!0,force:!0}).catch(()=>{}),!await Q())return null;if(x.onStep)await x.onStep("stale-lock-removed");if(J=await q(),!J)return null;if(x.onStep)await x.onStep("stale-lock-recreated");if(!await Q())return await h(),J=!1,null;break}finally{await S()}}if(!J)return null;return w(),{ownerId:B,whenLost:()=>n,hasLost:()=>G!==void 0,assertOwned:async()=>{let $;try{let z=await _();if($=z,!C&&!G&&z?.ownerId===B&&Number(z?.expiresAt)>W())return;Z(z?.ownerId!==B?"taken-over":"expired",z)}catch{Z("unreadable")}throw new R({target:x.path,name:x.name,expectedOwnerId:B,...typeof $?.ownerId==="string"?{observedOwnerId:$.ownerId}:{},...typeof $?.expiresAt==="number"?{observedExpiresAt:$.expiresAt}:{}})},release:async()=>{C=!0,I(),await g;for(let $=0;$<U;$++){try{if(await v(async()=>{if((await _())?.ownerId!==B)return;if(x.onStep)await x.onStep("release-owner-confirmed");if(!await Q())return;await f(K,{recursive:!0,force:!0}).catch(()=>{})}))return;await k()}catch{return}await D()}}}}import{randomUUID as W0}from"node:crypto";import{mkdir as j0,open as F,rename as B0,rm as C0}from"node:fs/promises";import{dirname as A}from"node:path";class y extends Error{constructor(x){super("file or directory sync failed",{cause:x});this.name="AtomicSyncError"}}async function b0(x,K,H={}){await G0(x,K,H)}async function G0(x,K,H,B){await j0(A(x),{recursive:!0});let W=`${x}.${(H.stageName??W0)()}.tmp`,j,C=!1;try{if(j=await F(W,"wx",384),C=!0,await j.writeFile(H.serialize?H.serialize(K):`${JSON.stringify(K,null,2)}
|
|
6
|
-
`,"utf8"),await j.chmod(384),H.durable)try{await j.sync()}catch(G){throw new y(G)}if(await j.close(),j=void 0,await H.beforeRename?.(),await B0(W,x),C=!1,B?.(),H.durable){let G=await F(A(x),"r");try{await G.sync()}catch(X){throw new y(X)}finally{await G.close()}}}finally{if(await j?.close().catch(()=>{}),C)await C0(W,{force:!0}).catch(()=>{})}}async function O0(x){let K=await F(x,"r");try{await K.sync()}finally{await K.close()}let H=await F(A(x),"r");try{await H.sync()}finally{await H.close()}}var U0=Object.freeze({sidebar:Object.freeze({name:"sidebar-write",ttlMs:1e4,timeoutMs:15000,renew:!0}),preferences:Object.freeze({name:"preferences",ttlMs:1e4,timeoutMs:2000,renew:!0})});
|
|
7
|
-
export{y as Kb,b0 as Lb,G0 as Mb,O0 as Nb,l as Ob,p as Pb,R as Qb,Q0 as Rb,U0 as Sb};
|