@cheqd/studio 3.18.0-develop.1 → 3.18.0-develop.2
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 +7 -4
- package/dist/controllers/api/account.d.ts +1 -1
- package/dist/controllers/api/account.d.ts.map +1 -1
- package/dist/controllers/api/account.js +58 -7
- package/dist/controllers/api/account.js.map +1 -1
- package/dist/database/cache/store.d.ts +7 -0
- package/dist/database/cache/store.d.ts.map +1 -1
- package/dist/database/cache/store.js +6 -0
- package/dist/database/cache/store.js.map +1 -1
- package/dist/database/entities/faucet-request.entity.d.ts +11 -1
- package/dist/database/entities/faucet-request.entity.d.ts.map +1 -1
- package/dist/database/entities/faucet-request.entity.js +26 -2
- package/dist/database/entities/faucet-request.entity.js.map +1 -1
- package/dist/database/migrations/1791500000001-studio-migrations.d.ts +7 -0
- package/dist/database/migrations/1791500000001-studio-migrations.d.ts.map +1 -0
- package/dist/database/migrations/1791500000001-studio-migrations.js +16 -0
- package/dist/database/migrations/1791500000001-studio-migrations.js.map +1 -0
- package/dist/database/types/types.d.ts.map +1 -1
- package/dist/database/types/types.js +3 -0
- package/dist/database/types/types.js.map +1 -1
- package/dist/helpers/faucet-quota.d.ts +26 -2
- package/dist/helpers/faucet-quota.d.ts.map +1 -1
- package/dist/helpers/faucet-quota.js +41 -4
- package/dist/helpers/faucet-quota.js.map +1 -1
- package/dist/services/api/faucet-request.d.ts +23 -6
- package/dist/services/api/faucet-request.d.ts.map +1 -1
- package/dist/services/api/faucet-request.js +64 -10
- package/dist/services/api/faucet-request.js.map +1 -1
- package/dist/static/swagger-api.json +1 -1
- package/dist/types/constants.d.ts +5 -0
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/constants.js +20 -0
- package/dist/types/constants.js.map +1 -1
- package/example.env +6 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -111,10 +111,13 @@ some tokens on the testnet for making the process simpler.
|
|
|
111
111
|
4. `TESTNET_MINIMUM_BALANCE`: Backward-compatible fallback for the initial top-up amount if neither `TESTNET_INITIAL_TOPUP_CHEQ` nor `TESTNET_FAUCET_UPPER_CAP_CHEQ` is set. (Default: 10,000 CHEQ testnet tokens)
|
|
112
112
|
5. `FAUCET_MONTHLY_LIMIT_CHEQ`: The most `CHEQ` a customer can request through `POST /account/faucet` across all their addresses per calendar month (UTC). Usable with a Studio session or an API key. Requests that would exceed it return `429` with a `Retry-After` header. The initial top-up at account creation counts towards it. (Default: 100,000 CHEQ)
|
|
113
113
|
6. `FAUCET_ADDRESS_CAP_CHEQ`: The most `CHEQ` a single testnet address can hold before `POST /account/faucet` stops topping it up. (Default: `FAUCET_MONTHLY_LIMIT_CHEQ`, so there is one figure unless this is set)
|
|
114
|
-
7. `
|
|
115
|
-
8. `
|
|
116
|
-
9. `
|
|
117
|
-
10. `
|
|
114
|
+
7. `FAUCET_SUBSCRIPTION_CACHE_SECONDS`: How long `POST /account/faucet` caches a customer's Stripe subscription status and plan, so API-key use does not call Stripe on every request. The stored subscription status is still checked on every request, so a cancellation takes effect immediately; a plan change can take this long to be seen. `0` disables the cache. (Default: 60)
|
|
115
|
+
8. `FAUCET_MIN_INTERVAL_SECONDS`: Minimum gap between two `POST /account/faucet` requests from the same customer, so a script cannot hammer the endpoint in a tight loop. A request made too soon returns `429` with a `Retry-After` header and does not reach Stripe, the RPC node or the faucet. `0` disables it. Does not apply to the automatic top-up at account creation. (Default: 10)
|
|
116
|
+
9. `FAUCET_PENDING_TIMEOUT_SECONDS`: How long a faucet quota reservation that has not been confirmed counts towards the quota before it is treated as abandoned (for example because the process died before calling the faucet). Keep it longer than the longest faucet call. A reservation whose faucet call threw (outcome unknown, so tokens may have been sent) always keeps counting. (Default: 600)
|
|
117
|
+
10. `FAUCET_REQUEST_TIMEOUT_SECONDS`: How long to wait for the faucet service to answer before giving up. A `POST /account/faucet` that times out returns `504`; the faucet may still have credited the account, so the quota used is kept. (Default: 30)
|
|
118
|
+
11. `FAUCET_API_KEY`: API key for faucet service authentication
|
|
119
|
+
12. `FAUCET_ACCESS_CLIENT_ID`: Cloudflare Access client ID for accessing the Testnet Faucet API
|
|
120
|
+
13. `FAUCET_ACCESS_CLIENT_SECRET`: Cloudflare Access client secret for accessing the Testnet Faucet API
|
|
118
121
|
|
|
119
122
|
Studio exposes `POST /account/faucet` for authenticated Studio users on Basic-or-higher subscriptions. The endpoint accepts optional `address` and `amount` fields; `amount` is expressed in CHEQ. If `address` is omitted, Studio uses the customer's testnet payment account. If `amount` is omitted, Studio tops the address up to `FAUCET_ADDRESS_CAP_CHEQ`, or by whatever monthly quota is left if that is lower. Requests that exceed the address cap return a `requestMore.mailtoHref` for contacting `product@cheqd.io`.
|
|
120
123
|
|
|
@@ -118,7 +118,7 @@ export declare class AccountController {
|
|
|
118
118
|
* 404:
|
|
119
119
|
* description: No Studio testnet payment account was found for this customer.
|
|
120
120
|
* 429:
|
|
121
|
-
* description:
|
|
121
|
+
* description: Too many requests. Either the customer's monthly faucet quota is exhausted (the body includes the quota details), or a request was made too soon after the previous one (FAUCET_MIN_INTERVAL_SECONDS). The Retry-After header gives the seconds to wait.
|
|
122
122
|
* 502:
|
|
123
123
|
* description: Upstream faucet request failed.
|
|
124
124
|
* 504:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/controllers/api/account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;AAU9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAgB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/controllers/api/account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;AAU9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAgB,MAAM,YAAY,CAAC;AAwDxD,qBAAa,iBAAiB;IAC7B,OAAc,eAAe,gDAS3B;IAEF,OAAc,eAAe,gDAG3B;IACF;;;;;;;;;;;;;;;;;;;;;OAqBG;IACU,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;IAoCtD;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACU,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;IAiC/C,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;WA2N9C,wBAAwB,CACpC,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,oBAAoB,EAAE,EAChC,cAAc,EAAE,cAAc,GAC5B,OAAO,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;IA2DjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IAEU,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;IAyGxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyCG;IAEU,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;IAoLrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACU,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;IA0C9D;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACU,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;CAuF9D"}
|
|
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { CheqdNetwork, checkBalance } from '@cheqd/sdk';
|
|
8
|
-
import { FAUCET_ADDRESS_CAP_CHEQ, FAUCET_MONTHLY_LIMIT_CHEQ, MINIMAL_DENOM, OperationNameEnum, TESTNET_INITIAL_TOPUP_CHEQ, } from '../../types/constants.js';
|
|
8
|
+
import { FAUCET_ADDRESS_CAP_CHEQ, FAUCET_MIN_INTERVAL_SECONDS, FAUCET_MONTHLY_LIMIT_CHEQ, FAUCET_SUBSCRIPTION_CACHE_SECONDS, MINIMAL_DENOM, OperationNameEnum, TESTNET_INITIAL_TOPUP_CHEQ, } from '../../types/constants.js';
|
|
9
9
|
import { CustomerService } from '../../services/api/customer.js';
|
|
10
10
|
import { LogToHelper } from '../../middleware/auth/logto-helper.js';
|
|
11
11
|
import { FaucetHelper, isFaucetTimeout } from '../../helpers/faucet.js';
|
|
@@ -528,7 +528,7 @@ export class AccountController {
|
|
|
528
528
|
* 404:
|
|
529
529
|
* description: No Studio testnet payment account was found for this customer.
|
|
530
530
|
* 429:
|
|
531
|
-
* description:
|
|
531
|
+
* description: Too many requests. Either the customer's monthly faucet quota is exhausted (the body includes the quota details), or a request was made too soon after the previous one (FAUCET_MIN_INTERVAL_SECONDS). The Retry-After header gives the seconds to wait.
|
|
532
532
|
* 502:
|
|
533
533
|
* description: Upstream faucet request failed.
|
|
534
534
|
* 504:
|
|
@@ -554,20 +554,24 @@ export class AccountController {
|
|
|
554
554
|
const requestedAddress = request.body.address;
|
|
555
555
|
const requestedAmountCheq = request.body.amount !== undefined ? Number(request.body.amount) : undefined;
|
|
556
556
|
try {
|
|
557
|
+
// Cheap check first, so a tight loop of requests does not reach Stripe, the RPC node or the faucet
|
|
558
|
+
const waitSeconds = await FaucetRequestService.instance.getSecondsUntilNextAllowed(customer, FAUCET_MIN_INTERVAL_SECONDS);
|
|
559
|
+
if (waitSeconds > 0) {
|
|
560
|
+
return tooManyFaucetRequests(response, waitSeconds);
|
|
561
|
+
}
|
|
557
562
|
const subscription = await SubscriptionService.instance.findCurrent(customer);
|
|
558
563
|
if (!subscription) {
|
|
559
564
|
return response.status(StatusCodes.FORBIDDEN).json({
|
|
560
565
|
error: 'An active Basic or higher subscription is required to request testnet CHEQ tokens.',
|
|
561
566
|
});
|
|
562
567
|
}
|
|
563
|
-
const
|
|
564
|
-
if (!['active', 'trialing'].includes(
|
|
568
|
+
const plan = await getSubscriptionPlan(stripe, subscription.subscriptionId);
|
|
569
|
+
if (!['active', 'trialing'].includes(plan.status)) {
|
|
565
570
|
return response.status(StatusCodes.FORBIDDEN).json({
|
|
566
571
|
error: 'An active Basic or higher subscription is required to request testnet CHEQ tokens.',
|
|
567
572
|
});
|
|
568
573
|
}
|
|
569
|
-
|
|
570
|
-
if (!productHasCapability(productId, StudioPlanCapability.Faucet)) {
|
|
574
|
+
if (!productHasCapability(plan.productId, StudioPlanCapability.Faucet)) {
|
|
571
575
|
return response.status(StatusCodes.FORBIDDEN).json({
|
|
572
576
|
error: 'The current subscription does not include testnet faucet access.',
|
|
573
577
|
});
|
|
@@ -582,9 +586,21 @@ export class AccountController {
|
|
|
582
586
|
}
|
|
583
587
|
const addressCapNcheq = cheqToNcheq(FAUCET_ADDRESS_CAP_CHEQ);
|
|
584
588
|
const quotaLimitNcheq = cheqToNcheq(FAUCET_MONTHLY_LIMIT_CHEQ);
|
|
589
|
+
// Nothing can be requested once the quota is used up, so answer before the (slow) balance query
|
|
590
|
+
const usedNcheq = await FaucetRequestService.instance.getUsedNcheq(customer);
|
|
591
|
+
const quotaRemainingNcheq = remainingQuota(usedNcheq, quotaLimitNcheq);
|
|
592
|
+
if (quotaRemainingNcheq <= 0n) {
|
|
593
|
+
const window = getFaucetQuotaWindow();
|
|
594
|
+
return response
|
|
595
|
+
.status(StatusCodes.TOO_MANY_REQUESTS)
|
|
596
|
+
.set('Retry-After', String(secondsUntilReset(window)))
|
|
597
|
+
.json({
|
|
598
|
+
error: 'Monthly testnet faucet quota exceeded for this account.',
|
|
599
|
+
quota: buildFaucetQuotaSummary(usedNcheq, quotaLimitNcheq, window),
|
|
600
|
+
});
|
|
601
|
+
}
|
|
585
602
|
const currentBalanceNcheq = await getTestnetBalanceNcheq(testnetAccount.address);
|
|
586
603
|
const roomUnderCapNcheq = addressCapNcheq - currentBalanceNcheq;
|
|
587
|
-
const quotaRemainingNcheq = remainingQuota(await FaucetRequestService.instance.getUsedNcheq(customer), quotaLimitNcheq);
|
|
588
604
|
// What can be requested right now: limited by both the room under the address cap and the monthly quota
|
|
589
605
|
const maxRequestable = maxRequestableNcheq(roomUnderCapNcheq, quotaRemainingNcheq);
|
|
590
606
|
const balance = buildFaucetBalanceResponse(currentBalanceNcheq, addressCapNcheq, maxRequestable);
|
|
@@ -623,7 +639,11 @@ export class AccountController {
|
|
|
623
639
|
address: testnetAccount.address,
|
|
624
640
|
amountNcheq: amountToRequestNcheq,
|
|
625
641
|
limitNcheq: quotaLimitNcheq,
|
|
642
|
+
minIntervalSeconds: FAUCET_MIN_INTERVAL_SECONDS,
|
|
626
643
|
});
|
|
644
|
+
if (credit.outcome === 'too_frequent') {
|
|
645
|
+
return tooManyFaucetRequests(response, credit.retryAfterSeconds);
|
|
646
|
+
}
|
|
627
647
|
if (credit.outcome === 'quota_exceeded') {
|
|
628
648
|
return response
|
|
629
649
|
.status(StatusCodes.TOO_MANY_REQUESTS)
|
|
@@ -983,6 +1003,34 @@ async function updateCustomData(logToId, customer, mainnetResp, testnetResp, log
|
|
|
983
1003
|
console.warn('Logto Custom Data Update failed:', err);
|
|
984
1004
|
}
|
|
985
1005
|
}
|
|
1006
|
+
function tooManyFaucetRequests(response, retryAfterSeconds) {
|
|
1007
|
+
return response
|
|
1008
|
+
.status(StatusCodes.TOO_MANY_REQUESTS)
|
|
1009
|
+
.set('Retry-After', String(retryAfterSeconds))
|
|
1010
|
+
.json({
|
|
1011
|
+
error: `Too many faucet requests. Please wait ${retryAfterSeconds} seconds before trying again.`,
|
|
1012
|
+
});
|
|
1013
|
+
}
|
|
1014
|
+
/**
|
|
1015
|
+
* Status and plan of a Stripe subscription, cached briefly so repeated (e.g. API-key) faucet requests do not
|
|
1016
|
+
* call Stripe every time. Only active/trialing results are cached, and the stored subscription status is still
|
|
1017
|
+
* checked in the database on every request, so a cancellation takes effect immediately; a plan change can take
|
|
1018
|
+
* up to FAUCET_SUBSCRIPTION_CACHE_SECONDS to be seen.
|
|
1019
|
+
*/
|
|
1020
|
+
async function getSubscriptionPlan(stripe, subscriptionId) {
|
|
1021
|
+
const cached = LocalStore.instance.getSubscriptionPlan(subscriptionId);
|
|
1022
|
+
if (cached)
|
|
1023
|
+
return cached;
|
|
1024
|
+
const subscription = await stripe.subscriptions.retrieve(subscriptionId);
|
|
1025
|
+
const plan = {
|
|
1026
|
+
status: subscription.status,
|
|
1027
|
+
productId: getStripeObjectKey(subscription.items.data[0].plan.product),
|
|
1028
|
+
};
|
|
1029
|
+
if (FAUCET_SUBSCRIPTION_CACHE_SECONDS > 0 && ['active', 'trialing'].includes(plan.status)) {
|
|
1030
|
+
LocalStore.instance.setSubscriptionPlan(subscriptionId, plan, FAUCET_SUBSCRIPTION_CACHE_SECONDS);
|
|
1031
|
+
}
|
|
1032
|
+
return plan;
|
|
1033
|
+
}
|
|
986
1034
|
/**
|
|
987
1035
|
* Credits an address from the faucet and debits the amount from the customer's monthly faucet quota.
|
|
988
1036
|
* See `creditWithinQuota` for how the reservation is settled.
|
|
@@ -999,6 +1047,9 @@ async function delegateWithinQuota(customer, address, firstName, lastName, amoun
|
|
|
999
1047
|
error: 'Monthly testnet faucet quota exceeded for this account.',
|
|
1000
1048
|
quotaExceeded: true,
|
|
1001
1049
|
};
|
|
1050
|
+
case 'too_frequent':
|
|
1051
|
+
// not requested here: the bootstrap top-up does not apply a minimum interval
|
|
1052
|
+
return { status: StatusCodes.TOO_MANY_REQUESTS, error: 'Too many faucet requests.' };
|
|
1002
1053
|
case 'faucet_failed':
|
|
1003
1054
|
return { status: credit.status, error: credit.error };
|
|
1004
1055
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/controllers/api/account.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/controllers/api/account.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { PaymentAccountEntity } from '../entities/payment.account.entity.js';
|
|
2
|
+
/** The parts of a Stripe subscription that the faucet endpoint needs, as last read from Stripe. */
|
|
3
|
+
export interface SubscriptionPlanSnapshot {
|
|
4
|
+
status: string;
|
|
5
|
+
productId: string;
|
|
6
|
+
}
|
|
2
7
|
export declare class LocalStore {
|
|
3
8
|
private cache;
|
|
4
9
|
static instance: LocalStore;
|
|
5
10
|
constructor();
|
|
6
11
|
setCustomerAccounts(key: string, data: PaymentAccountEntity[]): void;
|
|
7
12
|
getCustomerAccounts(key: string): PaymentAccountEntity[] | undefined;
|
|
13
|
+
setSubscriptionPlan(subscriptionId: string, plan: SubscriptionPlanSnapshot, ttlSeconds: number): void;
|
|
14
|
+
getSubscriptionPlan(subscriptionId: string): SubscriptionPlanSnapshot | undefined;
|
|
8
15
|
}
|
|
9
16
|
//# sourceMappingURL=store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/database/cache/store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/database/cache/store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAI7E,mGAAmG;AACnG,MAAM,WAAW,wBAAwB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CAClB;AAID,qBAAa,UAAU;IACtB,OAAO,CAAC,KAAK,CAAY;IAEzB,OAAc,QAAQ,aAAoB;;IAM1C,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE;IAI7D,mBAAmB,CAAC,GAAG,EAAE,MAAM,GACA,oBAAoB,EAAE,GAAG,SAAS;IAGjE,mBAAmB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM;IAI9F,mBAAmB,CAAC,cAAc,EAAE,MAAM,GACuB,wBAAwB,GAAG,SAAS;CAErG"}
|
|
@@ -14,5 +14,11 @@ export class LocalStore {
|
|
|
14
14
|
getCustomerAccounts(key) {
|
|
15
15
|
return this.cache.get(key);
|
|
16
16
|
}
|
|
17
|
+
setSubscriptionPlan(subscriptionId, plan, ttlSeconds) {
|
|
18
|
+
this.cache.set(`subscription-plan:${subscriptionId}`, plan, ttlSeconds);
|
|
19
|
+
}
|
|
20
|
+
getSubscriptionPlan(subscriptionId) {
|
|
21
|
+
return this.cache.get(`subscription-plan:${subscriptionId}`);
|
|
22
|
+
}
|
|
17
23
|
}
|
|
18
24
|
//# sourceMappingURL=store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/database/cache/store.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAIjC,MAAM,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/database/cache/store.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAIjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAQhB,IAAI,EAAE,eAAe,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE5C,MAAM,OAAO,UAAU;IACd,KAAK,CAAY;IAElB,MAAM,CAAC,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAC;IAE1C;QACC,IAAI,CAAC,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;IAC9B,CAAC;IAED,mBAAmB,CAAC,GAAW,EAAE,IAA4B;QAC5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC;IAED,mBAAmB,CAAC,GAAW;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAuC,CAAC;IAClE,CAAC;IAED,mBAAmB,CAAC,cAAsB,EAAE,IAA8B,EAAE,UAAkB;QAC7F,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IACzE,CAAC;IAED,mBAAmB,CAAC,cAAsB;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,cAAc,EAAE,CAAyC,CAAC;IACtG,CAAC"}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { CustomerEntity } from './customer.entity.js';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* - pending: reserved, faucet call in flight. Counts towards the quota until it times out.
|
|
4
|
+
* - completed: the faucet confirmed the credit.
|
|
5
|
+
* - unknown: the faucet call threw (e.g. a timeout), so tokens may have been sent. Always counts.
|
|
6
|
+
* - abandoned: stayed pending past the timeout (e.g. the process died). No longer counts.
|
|
7
|
+
*/
|
|
8
|
+
export declare const FAUCET_REQUEST_STATUSES: readonly ["pending", "completed", "unknown", "abandoned"];
|
|
9
|
+
export type FaucetRequestStatus = (typeof FAUCET_REQUEST_STATUSES)[number];
|
|
10
|
+
/**
|
|
11
|
+
* One row per testnet faucet request made through `POST /account/faucet` or the account bootstrap top-up.
|
|
4
12
|
* Summed per customer to enforce the monthly faucet quota.
|
|
5
13
|
*/
|
|
6
14
|
export declare class FaucetRequestEntity {
|
|
@@ -8,7 +16,9 @@ export declare class FaucetRequestEntity {
|
|
|
8
16
|
customer: CustomerEntity;
|
|
9
17
|
address: string;
|
|
10
18
|
amountNcheq: string;
|
|
19
|
+
status: FaucetRequestStatus;
|
|
11
20
|
createdAt: Date;
|
|
21
|
+
completedAt?: Date;
|
|
12
22
|
setCreatedAt(): void;
|
|
13
23
|
constructor(customer: CustomerEntity, address: string, amountNcheq: bigint);
|
|
14
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faucet-request.entity.d.ts","sourceRoot":"","sources":["../../../src/database/entities/faucet-request.entity.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"faucet-request.entity.d.ts","sourceRoot":"","sources":["../../../src/database/entities/faucet-request.entity.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,2DAA4D,CAAC;AACjG,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3E;;;GAGG;AACH,qBAGa,mBAAmB;IAE/B,eAAe,EAAG,MAAM,CAAC;IAIzB,QAAQ,EAAG,cAAc,CAAC;IAM1B,OAAO,EAAG,MAAM,CAAC;IAOjB,WAAW,EAAG,MAAM,CAAC;IAOrB,MAAM,EAAG,mBAAmB,CAAC;IAM7B,SAAS,EAAG,IAAI,CAAC;IAMjB,WAAW,CAAC,EAAE,IAAI,CAAC;IAGnB,YAAY;gBAIA,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAO1E"}
|
|
@@ -4,12 +4,19 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import { BeforeInsert, Column, Entity, Index, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
|
|
7
|
+
import { BeforeInsert, Check, Column, Entity, Index, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
|
|
8
8
|
import * as dotenv from 'dotenv';
|
|
9
9
|
import { CustomerEntity } from './customer.entity.js';
|
|
10
10
|
dotenv.config();
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
12
|
+
* - pending: reserved, faucet call in flight. Counts towards the quota until it times out.
|
|
13
|
+
* - completed: the faucet confirmed the credit.
|
|
14
|
+
* - unknown: the faucet call threw (e.g. a timeout), so tokens may have been sent. Always counts.
|
|
15
|
+
* - abandoned: stayed pending past the timeout (e.g. the process died). No longer counts.
|
|
16
|
+
*/
|
|
17
|
+
export const FAUCET_REQUEST_STATUSES = ['pending', 'completed', 'unknown', 'abandoned'];
|
|
18
|
+
/**
|
|
19
|
+
* One row per testnet faucet request made through `POST /account/faucet` or the account bootstrap top-up.
|
|
13
20
|
* Summed per customer to enforce the monthly faucet quota.
|
|
14
21
|
*/
|
|
15
22
|
let FaucetRequestEntity = class FaucetRequestEntity {
|
|
@@ -18,7 +25,9 @@ let FaucetRequestEntity = class FaucetRequestEntity {
|
|
|
18
25
|
address;
|
|
19
26
|
// ncheq amount, stored as bigint and surfaced as a string by the driver
|
|
20
27
|
amountNcheq;
|
|
28
|
+
status;
|
|
21
29
|
createdAt;
|
|
30
|
+
completedAt;
|
|
22
31
|
setCreatedAt() {
|
|
23
32
|
this.createdAt = new Date();
|
|
24
33
|
}
|
|
@@ -27,6 +36,7 @@ let FaucetRequestEntity = class FaucetRequestEntity {
|
|
|
27
36
|
this.address = address;
|
|
28
37
|
// TypeORM instantiates entities without arguments when building metadata
|
|
29
38
|
this.amountNcheq = amountNcheq?.toString();
|
|
39
|
+
this.status = 'pending';
|
|
30
40
|
}
|
|
31
41
|
};
|
|
32
42
|
__decorate([
|
|
@@ -48,17 +58,31 @@ __decorate([
|
|
|
48
58
|
nullable: false,
|
|
49
59
|
})
|
|
50
60
|
], FaucetRequestEntity.prototype, "amountNcheq", void 0);
|
|
61
|
+
__decorate([
|
|
62
|
+
Column({
|
|
63
|
+
type: 'text',
|
|
64
|
+
nullable: false,
|
|
65
|
+
default: 'completed',
|
|
66
|
+
})
|
|
67
|
+
], FaucetRequestEntity.prototype, "status", void 0);
|
|
51
68
|
__decorate([
|
|
52
69
|
Column({
|
|
53
70
|
type: 'timestamptz',
|
|
54
71
|
nullable: false,
|
|
55
72
|
})
|
|
56
73
|
], FaucetRequestEntity.prototype, "createdAt", void 0);
|
|
74
|
+
__decorate([
|
|
75
|
+
Column({
|
|
76
|
+
type: 'timestamptz',
|
|
77
|
+
nullable: true,
|
|
78
|
+
})
|
|
79
|
+
], FaucetRequestEntity.prototype, "completedAt", void 0);
|
|
57
80
|
__decorate([
|
|
58
81
|
BeforeInsert()
|
|
59
82
|
], FaucetRequestEntity.prototype, "setCreatedAt", null);
|
|
60
83
|
FaucetRequestEntity = __decorate([
|
|
61
84
|
Entity('faucetRequest'),
|
|
85
|
+
Check('CHK_faucetRequest_status', `"status" IN (${FAUCET_REQUEST_STATUSES.map((status) => `'${status}'`).join(', ')})`),
|
|
62
86
|
Index(['customer', 'createdAt'])
|
|
63
87
|
], FaucetRequestEntity);
|
|
64
88
|
export { FaucetRequestEntity };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faucet-request.entity.js","sourceRoot":"","sources":["../../../src/database/entities/faucet-request.entity.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"faucet-request.entity.js","sourceRoot":"","sources":["../../../src/database/entities/faucet-request.entity.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEpH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,CAAU,CAAC;AAGjG;;;GAGG;AAII,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAE/B,eAAe,CAAU;IAIzB,QAAQ,CAAkB;IAM1B,OAAO,CAAU;IAEjB,wEAAwE;IAKxE,WAAW,CAAU;IAOrB,MAAM,CAAuB;IAM7B,SAAS,CAAQ;IAMjB,WAAW,CAAQ;IAGnB,YAAY;QACX,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,YAAY,QAAwB,EAAE,OAAe,EAAE,WAAmB;QACzE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,yEAAyE;QACzE,IAAI,CAAC,WAAW,GAAG,WAAW,EAAE,QAAQ,EAAE,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IACzB,CAAC;CACD,CAAA;AAlDA;IADC,sBAAsB,CAAC,MAAM,CAAC;4DACN;AAIzB;IAFC,SAAS,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC5G,UAAU,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;qDACT;AAM1B;IAJC,MAAM,CAAC;QACP,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,KAAK;KACf,CAAC;oDACe;AAOjB;IAJC,MAAM,CAAC;QACP,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,KAAK;KACf,CAAC;wDACmB;AAOrB;IALC,MAAM,CAAC;QACP,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,WAAW;KACpB,CAAC;mDAC2B;AAM7B;IAJC,MAAM,CAAC;QACP,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,KAAK;KACf,CAAC;sDACe;AAMjB;IAJC,MAAM,CAAC;QACP,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,IAAI;KACd,CAAC;wDACiB;AAGnB;IADC,YAAY,EAAE;uDAGd;AA3CW,mBAAmB;IAH/B,MAAM,CAAC,eAAe,CAAC;IACvB,KAAK,CAAC,0BAA0B,EAAE,gBAAgB,uBAAuB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACvH,KAAK,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;GACpB,mBAAmB,CAoD/B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
2
|
+
export declare class StudioMigrations1791500000001 implements MigrationInterface {
|
|
3
|
+
name: string;
|
|
4
|
+
up(queryRunner: QueryRunner): Promise<void>;
|
|
5
|
+
down(queryRunner: QueryRunner): Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=1791500000001-studio-migrations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1791500000001-studio-migrations.d.ts","sourceRoot":"","sources":["../../../src/database/migrations/1791500000001-studio-migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE1D,qBAAa,6BAA8B,YAAW,kBAAkB;IACvE,IAAI,SAAmC;IAE1B,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAK1D"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export class StudioMigrations1791500000001 {
|
|
2
|
+
name = 'StudioMigrations1791500000001';
|
|
3
|
+
async up(queryRunner) {
|
|
4
|
+
await queryRunner.query(`ALTER TABLE "faucetRequest" ADD "status" text NOT NULL DEFAULT 'completed'`);
|
|
5
|
+
await queryRunner.query(`ALTER TABLE "faucetRequest" ADD CONSTRAINT "CHK_faucetRequest_status" CHECK ("status" IN ('pending', 'completed', 'unknown', 'abandoned'))`);
|
|
6
|
+
await queryRunner.query(`ALTER TABLE "faucetRequest" ADD "completedAt" TIMESTAMP WITH TIME ZONE`);
|
|
7
|
+
// Rows that already exist were recorded after the faucet call, so they are completed
|
|
8
|
+
await queryRunner.query(`UPDATE "faucetRequest" SET "completedAt" = "createdAt" WHERE "completedAt" IS NULL`);
|
|
9
|
+
}
|
|
10
|
+
async down(queryRunner) {
|
|
11
|
+
await queryRunner.query(`ALTER TABLE "faucetRequest" DROP COLUMN "completedAt"`);
|
|
12
|
+
await queryRunner.query(`ALTER TABLE "faucetRequest" DROP CONSTRAINT "CHK_faucetRequest_status"`);
|
|
13
|
+
await queryRunner.query(`ALTER TABLE "faucetRequest" DROP COLUMN "status"`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=1791500000001-studio-migrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1791500000001-studio-migrations.js","sourceRoot":"","sources":["../../../src/database/migrations/1791500000001-studio-migrations.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,6BAA6B;IACzC,IAAI,GAAG,+BAA+B,CAAC;IAEhC,KAAK,CAAC,EAAE,CAAC,WAAwB;QACvC,MAAM,WAAW,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;QACtG,MAAM,WAAW,CAAC,KAAK,CACtB,4IAA4I,CAC5I,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC;QAClG,qFAAqF;QACrF,MAAM,WAAW,CAAC,KAAK,CAAC,oFAAoF,CAAC,CAAC;IAC/G,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACzC,MAAM,WAAW,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACjF,MAAM,WAAW,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC;QAClG,MAAM,WAAW,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAC7E,CAAC;CACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/database/types/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/database/types/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAgErC,MAAM,WAAW,gBAAgB;IAChC,KAAK,IAAI,UAAU,CAAC;CACpB;AAED,qBAAa,MAAO,YAAW,gBAAgB;IAC9C,KAAK,IAAI,UAAU;CAWnB;AAED,qBAAa,QAAS,YAAW,gBAAgB;IAChD,KAAK,IAAI,UAAU;CAuGnB"}
|
|
@@ -55,6 +55,7 @@ import { MigrationsStatusLists1762775396083 } from '../migrations/1762775396083-
|
|
|
55
55
|
import { UpdateWriteCursors1762775500000 } from '../migrations/1762775500000-UpdateWriteCursors.js';
|
|
56
56
|
import { StudioMigrations1766408271347 } from '../migrations/1766408271347-studio-migrations.js';
|
|
57
57
|
import { StudioMigrations1791500000000 } from '../migrations/1791500000000-studio-migrations.js';
|
|
58
|
+
import { StudioMigrations1791500000001 } from '../migrations/1791500000001-studio-migrations.js';
|
|
58
59
|
dotenv.config();
|
|
59
60
|
const { EXTERNAL_DB_CONNECTION_URL, EXTERNAL_DB_CERT } = process.env;
|
|
60
61
|
export class Memory {
|
|
@@ -147,6 +148,8 @@ export class Postgres {
|
|
|
147
148
|
StudioMigrations1766408271347,
|
|
148
149
|
// Add faucetRequest table for the monthly faucet quota
|
|
149
150
|
StudioMigrations1791500000000,
|
|
151
|
+
// Track whether each faucet request completed, so abandoned reservations can stop counting
|
|
152
|
+
StudioMigrations1791500000001,
|
|
150
153
|
],
|
|
151
154
|
entities: [
|
|
152
155
|
...Entities,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/database/types/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/database/types/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,13 @@ export declare function maxRequestableNcheq(roomUnderCapNcheq: bigint, quotaRema
|
|
|
19
19
|
/** Remaining quota, never negative. */
|
|
20
20
|
export declare function remainingQuota(usedNcheq: bigint, limitNcheq: bigint): bigint;
|
|
21
21
|
export declare function buildFaucetQuotaSummary(usedNcheq: bigint, limitNcheq: bigint, window: FaucetQuotaWindow): FaucetQuotaSummary;
|
|
22
|
+
/** Seconds the customer still has to wait before their next faucet request; 0 if one is allowed now. */
|
|
23
|
+
export declare function secondsUntilNextRequest(lastRequestAt: Date | null, minIntervalSeconds: number, now?: Date): number;
|
|
24
|
+
export interface FaucetReserveOptions {
|
|
25
|
+
limitNcheq: bigint;
|
|
26
|
+
pendingTimeoutSeconds?: number;
|
|
27
|
+
minIntervalSeconds?: number;
|
|
28
|
+
}
|
|
22
29
|
export type FaucetReservation = {
|
|
23
30
|
reserved: true;
|
|
24
31
|
faucetRequestId: string;
|
|
@@ -26,18 +33,32 @@ export type FaucetReservation = {
|
|
|
26
33
|
window: FaucetQuotaWindow;
|
|
27
34
|
} | {
|
|
28
35
|
reserved: false;
|
|
36
|
+
reason: 'quota_exceeded';
|
|
29
37
|
usedNcheq: bigint;
|
|
30
38
|
window: FaucetQuotaWindow;
|
|
39
|
+
} | {
|
|
40
|
+
reserved: false;
|
|
41
|
+
reason: 'too_frequent';
|
|
42
|
+
retryAfterSeconds: number;
|
|
43
|
+
window: FaucetQuotaWindow;
|
|
31
44
|
};
|
|
32
45
|
/** Storage for quota reservations; implemented by `FaucetRequestService` and faked in tests. */
|
|
33
46
|
export interface FaucetQuotaLedger {
|
|
34
|
-
reserve(customer: CustomerEntity, address: string, amountNcheq: bigint,
|
|
47
|
+
reserve(customer: CustomerEntity, address: string, amountNcheq: bigint, options: FaucetReserveOptions): Promise<FaucetReservation>;
|
|
35
48
|
release(faucetRequestId: string): Promise<void>;
|
|
49
|
+
/** The faucet confirmed the credit. */
|
|
50
|
+
complete(faucetRequestId: string): Promise<void>;
|
|
51
|
+
/** The faucet call threw, so tokens may have been sent: keep counting this reservation permanently. */
|
|
52
|
+
markUnknown(faucetRequestId: string): Promise<void>;
|
|
36
53
|
}
|
|
37
54
|
export type FaucetCreditResult = {
|
|
38
55
|
outcome: 'quota_exceeded';
|
|
39
56
|
usedNcheq: bigint;
|
|
40
57
|
window: FaucetQuotaWindow;
|
|
58
|
+
} | {
|
|
59
|
+
outcome: 'too_frequent';
|
|
60
|
+
retryAfterSeconds: number;
|
|
61
|
+
window: FaucetQuotaWindow;
|
|
41
62
|
} | {
|
|
42
63
|
outcome: 'credited';
|
|
43
64
|
usedNcheq: bigint;
|
|
@@ -52,7 +73,9 @@ export type FaucetCreditResult = {
|
|
|
52
73
|
* - Quota does not fit: the faucet is not called.
|
|
53
74
|
* - Faucet answers with an error status: it definitely did not credit the account, so the quota is released.
|
|
54
75
|
* - Faucet call throws (e.g. a timeout): the outcome is unknown and tokens may have been sent, so the
|
|
55
|
-
* reservation is
|
|
76
|
+
* reservation is marked unknown and keeps counting for good (over-counting is safer than refunding quota
|
|
77
|
+
* for tokens that were credited).
|
|
78
|
+
* - Faucet confirms: the reservation is marked completed.
|
|
56
79
|
*/
|
|
57
80
|
export declare function creditWithinQuota(ledger: FaucetQuotaLedger, delegate: () => Promise<{
|
|
58
81
|
status: number;
|
|
@@ -62,5 +85,6 @@ export declare function creditWithinQuota(ledger: FaucetQuotaLedger, delegate: (
|
|
|
62
85
|
address: string;
|
|
63
86
|
amountNcheq: bigint;
|
|
64
87
|
limitNcheq: bigint;
|
|
88
|
+
minIntervalSeconds?: number;
|
|
65
89
|
}): Promise<FaucetCreditResult>;
|
|
66
90
|
//# sourceMappingURL=faucet-quota.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faucet-quota.d.ts","sourceRoot":"","sources":["../../src/helpers/faucet-quota.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAuB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGnF;;;GAGG;AAEH,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,IAAI,CAAC;IACZ,QAAQ,EAAE,IAAI,CAAC;CACf;AAED,oDAAoD;AACpD,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,IAAiB,GAAG,iBAAiB,CAO9E;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CAE3F;AAED,uFAAuF;AACvF,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAElG;AAED,sHAAsH;AACtH,wBAAgB,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,MAAM,CAGlG;AAED,uCAAuC;AACvC,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,wBAAgB,uBAAuB,CACtC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,iBAAiB,GACvB,kBAAkB,CAUpB;AAED,MAAM,MAAM,iBAAiB,GAC1B;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GACzF;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"faucet-quota.d.ts","sourceRoot":"","sources":["../../src/helpers/faucet-quota.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAuB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGnF;;;GAGG;AAEH,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,IAAI,CAAC;IACZ,QAAQ,EAAE,IAAI,CAAC;CACf;AAED,oDAAoD;AACpD,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,IAAiB,GAAG,iBAAiB,CAO9E;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CAE3F;AAED,uFAAuF;AACvF,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAElG;AAED,sHAAsH;AACtH,wBAAgB,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,MAAM,CAGlG;AAED,uCAAuC;AACvC,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,wBAAgB,uBAAuB,CACtC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,iBAAiB,GACvB,kBAAkB,CAUpB;AAED,wGAAwG;AACxG,wBAAgB,uBAAuB,CACtC,aAAa,EAAE,IAAI,GAAG,IAAI,EAC1B,kBAAkB,EAAE,MAAM,EAC1B,GAAG,GAAE,IAAiB,GACpB,MAAM,CAIR;AAED,MAAM,WAAW,oBAAoB;IAEpC,UAAU,EAAE,MAAM,CAAC;IAEnB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,iBAAiB,GAC1B;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GACzF;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAC3F;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,cAAc,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAErG,gGAAgG;AAChG,MAAM,WAAW,iBAAiB;IACjC,OAAO,CACN,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,oBAAoB,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B,OAAO,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,uCAAuC;IACvC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,uGAAuG;IACvG,WAAW,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAUD,MAAM,MAAM,kBAAkB,GAC3B;IAAE,OAAO,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAC3E;IAAE,OAAO,EAAE,cAAc,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAEjF;IAAE,OAAO,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GACrE;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/D;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACtC,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,MAAM,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAC1D,MAAM,EAAE;IACP,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B,GACC,OAAO,CAAC,kBAAkB,CAAC,CAkC7B"}
|
|
@@ -36,23 +36,60 @@ export function buildFaucetQuotaSummary(usedNcheq, limitNcheq, window) {
|
|
|
36
36
|
resetsAt: window.resetsAt.toISOString(),
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
|
+
/** Seconds the customer still has to wait before their next faucet request; 0 if one is allowed now. */
|
|
40
|
+
export function secondsUntilNextRequest(lastRequestAt, minIntervalSeconds, now = new Date()) {
|
|
41
|
+
if (!lastRequestAt || minIntervalSeconds <= 0)
|
|
42
|
+
return 0;
|
|
43
|
+
const remainingMs = minIntervalSeconds * 1000 - (now.getTime() - lastRequestAt.getTime());
|
|
44
|
+
return remainingMs > 0 ? Math.ceil(remainingMs / 1000) : 0;
|
|
45
|
+
}
|
|
46
|
+
async function markUnknownBestEffort(ledger, faucetRequestId) {
|
|
47
|
+
try {
|
|
48
|
+
await ledger.markUnknown(faucetRequestId);
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
console.error(`Failed to mark faucet request ${faucetRequestId} as unknown:`, error);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
39
54
|
/**
|
|
40
55
|
* Reserves quota, calls the faucet, and settles the reservation.
|
|
41
56
|
* - Quota does not fit: the faucet is not called.
|
|
42
57
|
* - Faucet answers with an error status: it definitely did not credit the account, so the quota is released.
|
|
43
58
|
* - Faucet call throws (e.g. a timeout): the outcome is unknown and tokens may have been sent, so the
|
|
44
|
-
* reservation is
|
|
59
|
+
* reservation is marked unknown and keeps counting for good (over-counting is safer than refunding quota
|
|
60
|
+
* for tokens that were credited).
|
|
61
|
+
* - Faucet confirms: the reservation is marked completed.
|
|
45
62
|
*/
|
|
46
63
|
export async function creditWithinQuota(ledger, delegate, params) {
|
|
47
|
-
const reservation = await ledger.reserve(params.customer, params.address, params.amountNcheq,
|
|
64
|
+
const reservation = await ledger.reserve(params.customer, params.address, params.amountNcheq, {
|
|
65
|
+
limitNcheq: params.limitNcheq,
|
|
66
|
+
minIntervalSeconds: params.minIntervalSeconds,
|
|
67
|
+
});
|
|
48
68
|
if (!reservation.reserved) {
|
|
49
|
-
return
|
|
69
|
+
return reservation.reason === 'too_frequent'
|
|
70
|
+
? { outcome: 'too_frequent', retryAfterSeconds: reservation.retryAfterSeconds, window: reservation.window }
|
|
71
|
+
: { outcome: 'quota_exceeded', usedNcheq: reservation.usedNcheq, window: reservation.window };
|
|
72
|
+
}
|
|
73
|
+
let faucet;
|
|
74
|
+
try {
|
|
75
|
+
faucet = await delegate();
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
await markUnknownBestEffort(ledger, reservation.faucetRequestId);
|
|
79
|
+
throw error;
|
|
50
80
|
}
|
|
51
|
-
const faucet = await delegate();
|
|
52
81
|
if (faucet.status !== 200) {
|
|
53
82
|
await ledger.release(reservation.faucetRequestId);
|
|
54
83
|
return { outcome: 'faucet_failed', status: faucet.status, error: faucet.error };
|
|
55
84
|
}
|
|
85
|
+
try {
|
|
86
|
+
await ledger.complete(reservation.faucetRequestId);
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
// The tokens were sent, so do not fail the request. The reservation stays pending and keeps counting
|
|
90
|
+
// until it times out.
|
|
91
|
+
console.error(`Failed to mark faucet request ${reservation.faucetRequestId} as completed:`, error);
|
|
92
|
+
}
|
|
56
93
|
return {
|
|
57
94
|
outcome: 'credited',
|
|
58
95
|
usedNcheq: reservation.usedNcheq + params.amountNcheq,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faucet-quota.js","sourceRoot":"","sources":["../../src/helpers/faucet-quota.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAYzC,oDAAoD;AACpD,MAAM,UAAU,oBAAoB,CAAC,MAAY,IAAI,IAAI,EAAE;IAC1D,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAChC,OAAO;QACN,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACzC,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;KAChD,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,iBAAiB,CAAC,MAAyB,EAAE,MAAY,IAAI,IAAI,EAAE;IAClF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,WAAW,CAAC,SAAiB,EAAE,cAAsB,EAAE,UAAkB;IACxF,OAAO,SAAS,GAAG,cAAc,IAAI,UAAU,CAAC;AACjD,CAAC;AAED,sHAAsH;AACtH,MAAM,UAAU,mBAAmB,CAAC,iBAAyB,EAAE,mBAA2B;IACzF,MAAM,MAAM,GAAG,iBAAiB,GAAG,mBAAmB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,mBAAmB,CAAC;IACjG,OAAO,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,UAAkB;IACnE,OAAO,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,SAAS,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,uBAAuB,CACtC,SAAiB,EACjB,UAAkB,EAClB,MAAyB;IAEzB,MAAM,cAAc,GAAG,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,CAAC,KAAa,EAAuB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC/G,OAAO;QACN,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC;QACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE;KACvC,CAAC;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"faucet-quota.js","sourceRoot":"","sources":["../../src/helpers/faucet-quota.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAYzC,oDAAoD;AACpD,MAAM,UAAU,oBAAoB,CAAC,MAAY,IAAI,IAAI,EAAE;IAC1D,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAChC,OAAO;QACN,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACzC,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;KAChD,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,iBAAiB,CAAC,MAAyB,EAAE,MAAY,IAAI,IAAI,EAAE;IAClF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,WAAW,CAAC,SAAiB,EAAE,cAAsB,EAAE,UAAkB;IACxF,OAAO,SAAS,GAAG,cAAc,IAAI,UAAU,CAAC;AACjD,CAAC;AAED,sHAAsH;AACtH,MAAM,UAAU,mBAAmB,CAAC,iBAAyB,EAAE,mBAA2B;IACzF,MAAM,MAAM,GAAG,iBAAiB,GAAG,mBAAmB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,mBAAmB,CAAC;IACjG,OAAO,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,UAAkB;IACnE,OAAO,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,SAAS,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,uBAAuB,CACtC,SAAiB,EACjB,UAAkB,EAClB,MAAyB;IAEzB,MAAM,cAAc,GAAG,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,CAAC,KAAa,EAAuB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC/G,OAAO;QACN,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC;QACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE;KACvC,CAAC;AACH,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,uBAAuB,CACtC,aAA0B,EAC1B,kBAA0B,EAC1B,MAAY,IAAI,IAAI,EAAE;IAEtB,IAAI,CAAC,aAAa,IAAI,kBAAkB,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,kBAAkB,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1F,OAAO,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AA+BD,KAAK,UAAU,qBAAqB,CAAC,MAAyB,EAAE,eAAuB;IACtF,IAAI,CAAC;QACJ,MAAM,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,iCAAiC,eAAe,cAAc,EAAE,KAAK,CAAC,CAAC;IACtF,CAAC;AACF,CAAC;AASD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACtC,MAAyB,EACzB,QAA0D,EAC1D,MAMC;IAED,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE;QAC7F,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;KAC7C,CAAC,CAAC;IACH,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC3B,OAAO,WAAW,CAAC,MAAM,KAAK,cAAc;YAC3C,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,WAAW,CAAC,iBAAiB,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE;YAC3G,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;IAChG,CAAC;IAED,IAAI,MAAyC,CAAC;IAC9C,IAAI,CAAC;QACJ,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;QACjE,MAAM,KAAK,CAAC;IACb,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC3B,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAClD,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IACjF,CAAC;IACD,IAAI,CAAC;QACJ,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,qGAAqG;QACrG,sBAAsB;QACtB,OAAO,CAAC,KAAK,CAAC,iCAAiC,WAAW,CAAC,eAAe,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACpG,CAAC;IACD,OAAO;QACN,OAAO,EAAE,UAAU;QACnB,SAAS,EAAE,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW;QACrD,MAAM,EAAE,WAAW,CAAC,MAAM;KAC1B,CAAC;AACH,CAAC"}
|
|
@@ -1,22 +1,39 @@
|
|
|
1
1
|
import type { Repository } from 'typeorm';
|
|
2
2
|
import type { CustomerEntity } from '../../database/entities/customer.entity.js';
|
|
3
3
|
import { FaucetRequestEntity } from '../../database/entities/faucet-request.entity.js';
|
|
4
|
-
import { type FaucetQuotaLedger, type FaucetReservation } from '../../helpers/faucet-quota.js';
|
|
4
|
+
import { type FaucetQuotaLedger, type FaucetReservation, type FaucetReserveOptions } from '../../helpers/faucet-quota.js';
|
|
5
5
|
export declare class FaucetRequestService implements FaucetQuotaLedger {
|
|
6
6
|
faucetRequestRepository: Repository<FaucetRequestEntity>;
|
|
7
7
|
static instance: FaucetRequestService;
|
|
8
8
|
constructor(repository?: Repository<FaucetRequestEntity>);
|
|
9
|
-
|
|
9
|
+
private static pendingCutoff;
|
|
10
|
+
/**
|
|
11
|
+
* Total ncheq requested by the customer since `since`, using the given manager (and so its transaction).
|
|
12
|
+
* Completed and unknown requests always count; a pending one counts only until it is older than
|
|
13
|
+
* `pendingCutoff`, after which it is treated as abandoned.
|
|
14
|
+
*/
|
|
10
15
|
private static sumRequestedNcheq;
|
|
16
|
+
/** When the customer last made a faucet request, or null if never. */
|
|
17
|
+
private static lastRequestAt;
|
|
18
|
+
/**
|
|
19
|
+
* Seconds the customer must still wait before their next request (0 if allowed). This is a cheap read taken
|
|
20
|
+
* before any expensive work; `reserve` repeats the check under the lock so concurrent requests cannot slip through.
|
|
21
|
+
*/
|
|
22
|
+
getSecondsUntilNextAllowed(customer: CustomerEntity, minIntervalSeconds: number, now?: Date): Promise<number>;
|
|
11
23
|
/** Total ncheq requested by the customer in the current quota window. */
|
|
12
|
-
getUsedNcheq(customer: CustomerEntity, now?: Date): Promise<bigint>;
|
|
24
|
+
getUsedNcheq(customer: CustomerEntity, now?: Date, pendingTimeoutSeconds?: number): Promise<bigint>;
|
|
13
25
|
/**
|
|
14
|
-
* Atomically checks the customer's monthly quota and, if the amount fits, records it.
|
|
26
|
+
* Atomically checks the customer's monthly quota and, if the amount fits, records it as pending.
|
|
15
27
|
* A per-customer advisory lock serialises concurrent requests so they cannot overshoot the limit.
|
|
16
|
-
*
|
|
28
|
+
* Afterwards call `complete` when the faucet confirms, `release` if it definitely failed, or `markUnknown`
|
|
29
|
+
* if the call threw.
|
|
17
30
|
*/
|
|
18
|
-
reserve(customer: CustomerEntity, address: string, amountNcheq: bigint, limitNcheq:
|
|
31
|
+
reserve(customer: CustomerEntity, address: string, amountNcheq: bigint, { limitNcheq, minIntervalSeconds, pendingTimeoutSeconds, }: FaucetReserveOptions, now?: Date): Promise<FaucetReservation>;
|
|
19
32
|
/** Releases a reservation, e.g. when the upstream faucet reported that it did not credit the account. */
|
|
20
33
|
release(faucetRequestId: string): Promise<void>;
|
|
34
|
+
/** The faucet confirmed the credit. Also applies to a reservation that was already marked abandoned. */
|
|
35
|
+
complete(faucetRequestId: string): Promise<void>;
|
|
36
|
+
/** The faucet call threw, so tokens may have been sent: keep counting this reservation permanently. */
|
|
37
|
+
markUnknown(faucetRequestId: string): Promise<void>;
|
|
21
38
|
}
|
|
22
39
|
//# sourceMappingURL=faucet-request.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faucet-request.d.ts","sourceRoot":"","sources":["../../../src/services/api/faucet-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,UAAU,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;
|
|
1
|
+
{"version":3,"file":"faucet-request.d.ts","sourceRoot":"","sources":["../../../src/services/api/faucet-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,UAAU,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AAGvF,OAAO,EAIN,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,MAAM,+BAA+B,CAAC;AAEvC,qBAAa,oBAAqB,YAAW,iBAAiB;IACtD,uBAAuB,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAEhE,OAAc,QAAQ,uBAA8B;gBAExC,UAAU,CAAC,EAAE,UAAU,CAAC,mBAAmB,CAAC;IAKxD,OAAO,CAAC,MAAM,CAAC,aAAa;IAI5B;;;;OAIG;mBACkB,iBAAiB;IAmBtC,sEAAsE;mBACjD,aAAa;IAUlC;;;OAGG;IACU,0BAA0B,CACtC,QAAQ,EAAE,cAAc,EACxB,kBAAkB,EAAE,MAAM,EAC1B,GAAG,GAAE,IAAiB,GACpB,OAAO,CAAC,MAAM,CAAC;IASlB,yEAAyE;IAC5D,YAAY,CACxB,QAAQ,EAAE,cAAc,EACxB,GAAG,GAAE,IAAiB,EACtB,qBAAqB,GAAE,MAAuC,GAC5D,OAAO,CAAC,MAAM,CAAC;IAUlB;;;;;OAKG;IACU,OAAO,CACnB,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,EACC,UAAU,EACV,kBAAsB,EACtB,qBAAsD,GACtD,EAAE,oBAAoB,EACvB,GAAG,GAAE,IAAiB,GACpB,OAAO,CAAC,iBAAiB,CAAC;IA8C7B,yGAAyG;IAC5F,OAAO,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5D,wGAAwG;IAC3F,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7D,uGAAuG;IAC1F,WAAW,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGhE"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FaucetRequestEntity } from '../../database/entities/faucet-request.entity.js';
|
|
2
2
|
import { Connection } from '../../database/connection/connection.js';
|
|
3
|
-
import {
|
|
3
|
+
import { FAUCET_PENDING_TIMEOUT_SECONDS } from '../../types/constants.js';
|
|
4
|
+
import { fitsInQuota, getFaucetQuotaWindow, secondsUntilNextRequest, } from '../../helpers/faucet-quota.js';
|
|
4
5
|
export class FaucetRequestService {
|
|
5
6
|
faucetRequestRepository;
|
|
6
7
|
static instance = new FaucetRequestService();
|
|
@@ -8,27 +9,56 @@ export class FaucetRequestService {
|
|
|
8
9
|
this.faucetRequestRepository =
|
|
9
10
|
repository ?? Connection.instance.dbConnection.getRepository(FaucetRequestEntity);
|
|
10
11
|
}
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
static pendingCutoff(now, pendingTimeoutSeconds) {
|
|
13
|
+
return new Date(now.getTime() - pendingTimeoutSeconds * 1000);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Total ncheq requested by the customer since `since`, using the given manager (and so its transaction).
|
|
17
|
+
* Completed and unknown requests always count; a pending one counts only until it is older than
|
|
18
|
+
* `pendingCutoff`, after which it is treated as abandoned.
|
|
19
|
+
*/
|
|
20
|
+
static async sumRequestedNcheq(manager, customerId, since, pendingCutoff) {
|
|
13
21
|
const row = await manager
|
|
14
22
|
.createQueryBuilder(FaucetRequestEntity, 'request')
|
|
15
23
|
.select('COALESCE(SUM(request.amountNcheq), 0)', 'total')
|
|
16
24
|
.where('request.customerId = :customerId', { customerId })
|
|
17
25
|
.andWhere('request.createdAt >= :since', { since })
|
|
26
|
+
.andWhere(`(request.status IN ('completed', 'unknown') OR (request.status = 'pending' AND request.createdAt >= :pendingCutoff))`, { pendingCutoff })
|
|
18
27
|
.getRawOne();
|
|
19
28
|
return BigInt(row?.total ?? '0');
|
|
20
29
|
}
|
|
30
|
+
/** When the customer last made a faucet request, or null if never. */
|
|
31
|
+
static async lastRequestAt(manager, customerId) {
|
|
32
|
+
const row = await manager
|
|
33
|
+
.createQueryBuilder(FaucetRequestEntity, 'request')
|
|
34
|
+
.select('MAX(request.createdAt)', 'last')
|
|
35
|
+
.where('request.customerId = :customerId', { customerId })
|
|
36
|
+
.andWhere(`request.status <> 'abandoned'`)
|
|
37
|
+
.getRawOne();
|
|
38
|
+
return row?.last ? new Date(row.last) : null;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Seconds the customer must still wait before their next request (0 if allowed). This is a cheap read taken
|
|
42
|
+
* before any expensive work; `reserve` repeats the check under the lock so concurrent requests cannot slip through.
|
|
43
|
+
*/
|
|
44
|
+
async getSecondsUntilNextAllowed(customer, minIntervalSeconds, now = new Date()) {
|
|
45
|
+
if (minIntervalSeconds <= 0)
|
|
46
|
+
return 0;
|
|
47
|
+
const last = await FaucetRequestService.lastRequestAt(this.faucetRequestRepository.manager, customer.customerId);
|
|
48
|
+
return secondsUntilNextRequest(last, minIntervalSeconds, now);
|
|
49
|
+
}
|
|
21
50
|
/** Total ncheq requested by the customer in the current quota window. */
|
|
22
|
-
async getUsedNcheq(customer, now = new Date()) {
|
|
51
|
+
async getUsedNcheq(customer, now = new Date(), pendingTimeoutSeconds = FAUCET_PENDING_TIMEOUT_SECONDS) {
|
|
23
52
|
const { start } = getFaucetQuotaWindow(now);
|
|
24
|
-
return FaucetRequestService.sumRequestedNcheq(this.faucetRequestRepository.manager, customer.customerId, start);
|
|
53
|
+
return FaucetRequestService.sumRequestedNcheq(this.faucetRequestRepository.manager, customer.customerId, start, FaucetRequestService.pendingCutoff(now, pendingTimeoutSeconds));
|
|
25
54
|
}
|
|
26
55
|
/**
|
|
27
|
-
* Atomically checks the customer's monthly quota and, if the amount fits, records it.
|
|
56
|
+
* Atomically checks the customer's monthly quota and, if the amount fits, records it as pending.
|
|
28
57
|
* A per-customer advisory lock serialises concurrent requests so they cannot overshoot the limit.
|
|
29
|
-
*
|
|
58
|
+
* Afterwards call `complete` when the faucet confirms, `release` if it definitely failed, or `markUnknown`
|
|
59
|
+
* if the call threw.
|
|
30
60
|
*/
|
|
31
|
-
async reserve(customer, address, amountNcheq, limitNcheq, now = new Date()) {
|
|
61
|
+
async reserve(customer, address, amountNcheq, { limitNcheq, minIntervalSeconds = 0, pendingTimeoutSeconds = FAUCET_PENDING_TIMEOUT_SECONDS, }, now = new Date()) {
|
|
32
62
|
const window = getFaucetQuotaWindow(now);
|
|
33
63
|
return this.faucetRequestRepository.manager.transaction(async (manager) => {
|
|
34
64
|
if (manager.connection.options.type === 'postgres') {
|
|
@@ -36,9 +66,25 @@ export class FaucetRequestService {
|
|
|
36
66
|
`faucet-quota:${customer.customerId}`,
|
|
37
67
|
]);
|
|
38
68
|
}
|
|
39
|
-
|
|
69
|
+
if (minIntervalSeconds > 0) {
|
|
70
|
+
const retryAfterSeconds = secondsUntilNextRequest(await FaucetRequestService.lastRequestAt(manager, customer.customerId), minIntervalSeconds, now);
|
|
71
|
+
if (retryAfterSeconds > 0) {
|
|
72
|
+
return { reserved: false, reason: 'too_frequent', retryAfterSeconds, window };
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Reservations that were never confirmed stop counting; mark them so the history shows why
|
|
76
|
+
const pendingCutoff = FaucetRequestService.pendingCutoff(now, pendingTimeoutSeconds);
|
|
77
|
+
await manager
|
|
78
|
+
.createQueryBuilder()
|
|
79
|
+
.update(FaucetRequestEntity)
|
|
80
|
+
.set({ status: 'abandoned' })
|
|
81
|
+
.where('customerId = :customerId', { customerId: customer.customerId })
|
|
82
|
+
.andWhere(`status = 'pending'`)
|
|
83
|
+
.andWhere('createdAt < :pendingCutoff', { pendingCutoff })
|
|
84
|
+
.execute();
|
|
85
|
+
const usedNcheq = await FaucetRequestService.sumRequestedNcheq(manager, customer.customerId, window.start, pendingCutoff);
|
|
40
86
|
if (!fitsInQuota(usedNcheq, amountNcheq, limitNcheq)) {
|
|
41
|
-
return { reserved: false, usedNcheq, window };
|
|
87
|
+
return { reserved: false, reason: 'quota_exceeded', usedNcheq, window };
|
|
42
88
|
}
|
|
43
89
|
const entity = await manager.save(new FaucetRequestEntity(customer, address, amountNcheq));
|
|
44
90
|
return { reserved: true, faucetRequestId: entity.faucetRequestId, usedNcheq, window };
|
|
@@ -48,5 +94,13 @@ export class FaucetRequestService {
|
|
|
48
94
|
async release(faucetRequestId) {
|
|
49
95
|
await this.faucetRequestRepository.delete({ faucetRequestId });
|
|
50
96
|
}
|
|
97
|
+
/** The faucet confirmed the credit. Also applies to a reservation that was already marked abandoned. */
|
|
98
|
+
async complete(faucetRequestId) {
|
|
99
|
+
await this.faucetRequestRepository.update({ faucetRequestId }, { status: 'completed', completedAt: new Date() });
|
|
100
|
+
}
|
|
101
|
+
/** The faucet call threw, so tokens may have been sent: keep counting this reservation permanently. */
|
|
102
|
+
async markUnknown(faucetRequestId) {
|
|
103
|
+
await this.faucetRequestRepository.update({ faucetRequestId }, { status: 'unknown' });
|
|
104
|
+
}
|
|
51
105
|
}
|
|
52
106
|
//# sourceMappingURL=faucet-request.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faucet-request.js","sourceRoot":"","sources":["../../../src/services/api/faucet-request.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AACrE,OAAO,EACN,WAAW,EACX,oBAAoB,
|
|
1
|
+
{"version":3,"file":"faucet-request.js","sourceRoot":"","sources":["../../../src/services/api/faucet-request.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EACN,WAAW,EACX,oBAAoB,EACpB,uBAAuB,GAIvB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,OAAO,oBAAoB;IACzB,uBAAuB,CAAkC;IAEzD,MAAM,CAAC,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAEpD,YAAY,UAA4C;QACvD,IAAI,CAAC,uBAAuB;YAC3B,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;IACpF,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,GAAS,EAAE,qBAA6B;QACpE,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,qBAAqB,GAAG,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,KAAK,CAAC,iBAAiB,CACrC,OAAsB,EACtB,UAAkB,EAClB,KAAW,EACX,aAAmB;QAEnB,MAAM,GAAG,GAAG,MAAM,OAAO;aACvB,kBAAkB,CAAC,mBAAmB,EAAE,SAAS,CAAC;aAClD,MAAM,CAAC,uCAAuC,EAAE,OAAO,CAAC;aACxD,KAAK,CAAC,kCAAkC,EAAE,EAAE,UAAU,EAAE,CAAC;aACzD,QAAQ,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,CAAC;aAClD,QAAQ,CACR,sHAAsH,EACtH,EAAE,aAAa,EAAE,CACjB;aACA,SAAS,EAAqB,CAAC;QACjC,OAAO,MAAM,CAAC,GAAG,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,sEAAsE;IAC9D,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAsB,EAAE,UAAkB;QAC5E,MAAM,GAAG,GAAG,MAAM,OAAO;aACvB,kBAAkB,CAAC,mBAAmB,EAAE,SAAS,CAAC;aAClD,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAAC;aACxC,KAAK,CAAC,kCAAkC,EAAE,EAAE,UAAU,EAAE,CAAC;aACzD,QAAQ,CAAC,+BAA+B,CAAC;aACzC,SAAS,EAAkC,CAAC;QAC9C,OAAO,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,0BAA0B,CACtC,QAAwB,EACxB,kBAA0B,EAC1B,MAAY,IAAI,IAAI,EAAE;QAEtB,IAAI,kBAAkB,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,aAAa,CACpD,IAAI,CAAC,uBAAuB,CAAC,OAAO,EACpC,QAAQ,CAAC,UAAU,CACnB,CAAC;QACF,OAAO,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAC/D,CAAC;IAED,yEAAyE;IAClE,KAAK,CAAC,YAAY,CACxB,QAAwB,EACxB,MAAY,IAAI,IAAI,EAAE,EACtB,wBAAgC,8BAA8B;QAE9D,MAAM,EAAE,KAAK,EAAE,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC5C,OAAO,oBAAoB,CAAC,iBAAiB,CAC5C,IAAI,CAAC,uBAAuB,CAAC,OAAO,EACpC,QAAQ,CAAC,UAAU,EACnB,KAAK,EACL,oBAAoB,CAAC,aAAa,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAC9D,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,OAAO,CACnB,QAAwB,EACxB,OAAe,EACf,WAAmB,EACnB,EACC,UAAU,EACV,kBAAkB,GAAG,CAAC,EACtB,qBAAqB,GAAG,8BAA8B,GAChC,EACvB,MAAY,IAAI,IAAI,EAAE;QAEtB,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACzE,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACpD,MAAM,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE;oBACjE,gBAAgB,QAAQ,CAAC,UAAU,EAAE;iBACrC,CAAC,CAAC;YACJ,CAAC;YAED,IAAI,kBAAkB,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,iBAAiB,GAAG,uBAAuB,CAChD,MAAM,oBAAoB,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,EACtE,kBAAkB,EAClB,GAAG,CACH,CAAC;gBACF,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;oBAC3B,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,EAAW,CAAC;gBACxF,CAAC;YACF,CAAC;YAED,2FAA2F;YAC3F,MAAM,aAAa,GAAG,oBAAoB,CAAC,aAAa,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;YACrF,MAAM,OAAO;iBACX,kBAAkB,EAAE;iBACpB,MAAM,CAAC,mBAAmB,CAAC;iBAC3B,GAAG,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;iBAC5B,KAAK,CAAC,0BAA0B,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC;iBACtE,QAAQ,CAAC,oBAAoB,CAAC;iBAC9B,QAAQ,CAAC,4BAA4B,EAAE,EAAE,aAAa,EAAE,CAAC;iBACzD,OAAO,EAAE,CAAC;YAEZ,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,iBAAiB,CAC7D,OAAO,EACP,QAAQ,CAAC,UAAU,EACnB,MAAM,CAAC,KAAK,EACZ,aAAa,CACb,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC;gBACtD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAW,CAAC;YAClF,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;YAC3F,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,SAAS,EAAE,MAAM,EAAW,CAAC;QAChG,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,yGAAyG;IAClG,KAAK,CAAC,OAAO,CAAC,eAAuB;QAC3C,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,wGAAwG;IACjG,KAAK,CAAC,QAAQ,CAAC,eAAuB;QAC5C,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CACxC,EAAE,eAAe,EAAE,EACnB,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,EAAE,CAChD,CAAC;IACH,CAAC;IAED,uGAAuG;IAChG,KAAK,CAAC,WAAW,CAAC,eAAuB;QAC/C,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACvF,CAAC"}
|
|
@@ -3526,7 +3526,7 @@
|
|
|
3526
3526
|
"description": "No Studio testnet payment account was found for this customer."
|
|
3527
3527
|
},
|
|
3528
3528
|
"429": {
|
|
3529
|
-
"description": "
|
|
3529
|
+
"description": "Too many requests. Either the customer's monthly faucet quota is exhausted (the body includes the quota details), or a request was made too soon after the previous one (FAUCET_MIN_INTERVAL_SECONDS). The Retry-After header gives the seconds to wait."
|
|
3530
3530
|
},
|
|
3531
3531
|
"500": {
|
|
3532
3532
|
"$ref": "#/components/schemas/InternalError"
|
|
@@ -27,6 +27,8 @@ export declare const configLogToExpress: {
|
|
|
27
27
|
* is set but invalid also uses the fallback but says so loudly, so a typo in a limit is not mistaken for the default.
|
|
28
28
|
*/
|
|
29
29
|
export declare const parseNumberEnv: (value: string | undefined, fallback: number, name?: string) => number;
|
|
30
|
+
/** Like `parseNumberEnv`, but for whole numbers where 0 is meaningful (usually "disabled"). */
|
|
31
|
+
export declare const parseNonNegativeIntEnv: (value: string | undefined, fallback: number, name?: string) => number;
|
|
30
32
|
export declare const MINIMAL_DENOM = "ncheq";
|
|
31
33
|
export declare const FAUCET_URI: string;
|
|
32
34
|
export declare const FAUCET_API_KEY: string;
|
|
@@ -35,6 +37,9 @@ export declare const TESTNET_MINIMUM_BALANCE: number;
|
|
|
35
37
|
export declare const TESTNET_INITIAL_TOPUP_CHEQ: number;
|
|
36
38
|
export declare const FAUCET_MONTHLY_LIMIT_CHEQ: number;
|
|
37
39
|
export declare const FAUCET_ADDRESS_CAP_CHEQ: number;
|
|
40
|
+
export declare const FAUCET_SUBSCRIPTION_CACHE_SECONDS: number;
|
|
41
|
+
export declare const FAUCET_MIN_INTERVAL_SECONDS: number;
|
|
42
|
+
export declare const FAUCET_PENDING_TIMEOUT_SECONDS: number;
|
|
38
43
|
export declare const FAUCET_REQUEST_TIMEOUT_SECONDS: number;
|
|
39
44
|
export declare const FAUCET_AMOUNT: number;
|
|
40
45
|
export declare const FAUCET_ACCESS_CLIENT_ID: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/types/constants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/types/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/types/constants.js
CHANGED
|
@@ -56,6 +56,16 @@ export const parseNumberEnv = (value, fallback, name = 'environment variable') =
|
|
|
56
56
|
console.warn(`Ignoring invalid ${name}="${value}": expected a positive number. Using the default, ${fallback}.`);
|
|
57
57
|
return fallback;
|
|
58
58
|
};
|
|
59
|
+
/** Like `parseNumberEnv`, but for whole numbers where 0 is meaningful (usually "disabled"). */
|
|
60
|
+
export const parseNonNegativeIntEnv = (value, fallback, name = 'environment variable') => {
|
|
61
|
+
if (!value?.trim())
|
|
62
|
+
return fallback;
|
|
63
|
+
const parsed = Number(value);
|
|
64
|
+
if (Number.isInteger(parsed) && parsed >= 0)
|
|
65
|
+
return parsed;
|
|
66
|
+
console.warn(`Ignoring invalid ${name}="${value}": expected a whole number, 0 or more. Using the default, ${fallback}.`);
|
|
67
|
+
return fallback;
|
|
68
|
+
};
|
|
59
69
|
export const MINIMAL_DENOM = 'ncheq';
|
|
60
70
|
export const FAUCET_URI = process.env.FAUCET_URI || 'https://faucet-api.cheqd.network/credit';
|
|
61
71
|
export const FAUCET_API_KEY = process.env.FAUCET_API_KEY || 'default-api-key';
|
|
@@ -69,6 +79,16 @@ export const FAUCET_MONTHLY_LIMIT_CHEQ = parseNumberEnv(process.env.FAUCET_MONTH
|
|
|
69
79
|
// Most CHEQ a single testnet address can hold before POST /account/faucet stops topping it up.
|
|
70
80
|
// Defaults to the monthly limit, so there is one figure unless this is set explicitly.
|
|
71
81
|
export const FAUCET_ADDRESS_CAP_CHEQ = parseNumberEnv(process.env.FAUCET_ADDRESS_CAP_CHEQ, FAUCET_MONTHLY_LIMIT_CHEQ, 'FAUCET_ADDRESS_CAP_CHEQ');
|
|
82
|
+
// How long, in seconds, the faucet endpoint caches a customer's Stripe subscription status and plan, so API-key
|
|
83
|
+
// use does not call Stripe on every request. 0 disables the cache.
|
|
84
|
+
export const FAUCET_SUBSCRIPTION_CACHE_SECONDS = parseNonNegativeIntEnv(process.env.FAUCET_SUBSCRIPTION_CACHE_SECONDS, 60, 'FAUCET_SUBSCRIPTION_CACHE_SECONDS');
|
|
85
|
+
// Minimum gap, in seconds, between two faucet requests from the same customer (0 disables), so a script using an
|
|
86
|
+
// API key cannot hammer the endpoint (and Stripe, the RPC node and the faucet behind it) in a tight loop.
|
|
87
|
+
export const FAUCET_MIN_INTERVAL_SECONDS = parseNonNegativeIntEnv(process.env.FAUCET_MIN_INTERVAL_SECONDS, 10, 'FAUCET_MIN_INTERVAL_SECONDS');
|
|
88
|
+
// How long, in seconds, a faucet quota reservation that has not been confirmed keeps counting towards the quota
|
|
89
|
+
// before it is treated as abandoned (e.g. the process died before calling the faucet). Must be longer than the
|
|
90
|
+
// longest time a faucet call can take. Reservations whose faucet call threw (outcome unknown) always keep counting.
|
|
91
|
+
export const FAUCET_PENDING_TIMEOUT_SECONDS = parseNonNegativeIntEnv(process.env.FAUCET_PENDING_TIMEOUT_SECONDS, 600, 'FAUCET_PENDING_TIMEOUT_SECONDS');
|
|
72
92
|
// How long, in seconds, to wait for the faucet service to answer before giving up. Without a limit a hung faucet
|
|
73
93
|
// holds the caller (and a quota reservation) for as long as Node's own default, several minutes.
|
|
74
94
|
export const FAUCET_REQUEST_TIMEOUT_SECONDS = parseNumberEnv(process.env.FAUCET_REQUEST_TIMEOUT_SECONDS, 30, 'FAUCET_REQUEST_TIMEOUT_SECONDS');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/types/constants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/types/constants.ts"],"names":[],"mappings":"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"}
|
package/example.env
CHANGED
|
@@ -42,6 +42,12 @@ TESTNET_INITIAL_TOPUP_CHEQ="10000"
|
|
|
42
42
|
# FAUCET_MONTHLY_LIMIT_CHEQ="100000"
|
|
43
43
|
# Max CHEQ a single testnet address can hold before the faucet stops topping it up (defaults to the monthly limit)
|
|
44
44
|
# FAUCET_ADDRESS_CAP_CHEQ="100000"
|
|
45
|
+
# Seconds POST /account/faucet caches a customer's Stripe subscription status and plan (0 disables)
|
|
46
|
+
# FAUCET_SUBSCRIPTION_CACHE_SECONDS="60"
|
|
47
|
+
# Minimum seconds between two POST /account/faucet requests from one customer (0 disables)
|
|
48
|
+
# FAUCET_MIN_INTERVAL_SECONDS="10"
|
|
49
|
+
# Seconds an unconfirmed faucet quota reservation keeps counting before it is treated as abandoned
|
|
50
|
+
# FAUCET_PENDING_TIMEOUT_SECONDS="600"
|
|
45
51
|
# Seconds to wait for the faucet service to answer before giving up
|
|
46
52
|
# FAUCET_REQUEST_TIMEOUT_SECONDS="30"
|
|
47
53
|
# FAUCET_URI="https://faucet-api.cheqd.network/credit"
|