ReadBudget — @gj-kit/expo-workouts
@gj-kit/expo-workouts에서 공개하는 class입니다. package version 0.1.1의 release declaration을 그대로 표시합니다.
검증된 import 예제
섹션 제목: “검증된 import 예제”import { ReadBudget } from '@gj-kit/expo-workouts';시그니처, 매개변수, 반환 타입
섹션 제목: “시그니처, 매개변수, 반환 타입”/** * The client-side read pacer. * * Budgets: 900 / 15 min and 4 500 / 24 h — 10 % under the measured device constants (1000 / 5000), * because those are server-pushed and a Mainline update can move them. * * It NEVER blocks: it refuses an over-budget call BEFORE the platform call with `rateLimited` and a * computed `retryAfterMs`. Sleeping inside a 60-second poll would stall the consumer's whole * single-flight pipeline. * * ⚠ Process-local and blind to another health library in the same app: Health Connect's own limiter * is per-uid, so during a migration off another library our accounting is optimistic. */declare class ReadBudget { private readonly now; private readonly spends; constructor(options?: ReadBudgetOptions); private prune; private countSince; /** * `null` when `count` more reads fit right now; otherwise the milliseconds to wait before the * oldest blocking spend leaves its window. NEVER blocks and NEVER throws. */ retryAfterMs(count?: number): number | null; /** * Charge `count` reads, or refuse with `rateLimited` + `retryAfterMs` BEFORE the platform call. * Nothing is charged when it refuses. */ spend(count?: number): void; /** 진단용 — 두 창의 현재 사용량. */ usage(): { readonly shortWindow: number; readonly longWindow: number; };}이 선언은 매개변수, optionality, 제네릭, 반환값, 공개 union/type 계약의 정본입니다. 호출 전 필요한 환경·권한·오류 경계는 패키지 Golden path와 이 subpath의 import 조건을 함께 확인하세요.
Release context
섹션 제목: “Release context”- 패키지:
@gj-kit/expo-workouts - 버전:
0.1.1 - 공개 entry:
. - 소스: GitHub
구현 주석
섹션 제목: “구현 주석”The client-side read pacer.
Budgets: 900 / 15 min and 4 500 / 24 h — 10 % under the measured device constants (1000 / 5000), because those are server-pushed and a Mainline update can move them.
It NEVER blocks: it refuses an over-budget call BEFORE the platform call with rateLimited and a
computed retryAfterMs. Sleeping inside a 60-second poll would stall the consumer’s whole
single-flight pipeline.
⚠ Process-local and blind to another health library in the same app: Health Connect’s own limiter is per-uid, so during a migration off another library our accounting is optimistic.