fix: expose client fetch and signed adjustments
This commit is contained in:
@@ -90,6 +90,10 @@ export function defineMeter(options: MeterOptions) {
|
||||
Number.isSafeInteger(units) && units > 0
|
||||
? null
|
||||
: { ok: false, reason: `${label} must be a positive whole number` };
|
||||
const validSigned = (units: number): MeterResult | null =>
|
||||
Number.isSafeInteger(units) && units !== 0
|
||||
? null
|
||||
: { ok: false, reason: `${label} adjustment must be a non-zero whole number` };
|
||||
const fault = (error: unknown, operation: string): MeterResult => {
|
||||
options.onFault?.(error, operation);
|
||||
return {
|
||||
@@ -138,7 +142,15 @@ export function defineMeter(options: MeterOptions) {
|
||||
add("purchase", subjectId, units, reason, reference),
|
||||
refund: (subjectId: string, units: number, reason: string, reference = "") =>
|
||||
add("refund", subjectId, units, reason, reference),
|
||||
adjust: (subjectId: string, units: number, reason: string, reference = "") =>
|
||||
add("adjust", subjectId, units, reason, reference),
|
||||
async adjust(subjectId: string, units: number, reason: string, reference = "") {
|
||||
const invalid = validSigned(units);
|
||||
if (invalid) return invalid;
|
||||
try {
|
||||
await options.store.write(subjectId, units, "adjust", reason, reference);
|
||||
return { ok: true } as const;
|
||||
} catch (error) {
|
||||
return fault(error, "adjust");
|
||||
}
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user