@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.
Files changed (35) hide show
  1. package/README.md +7 -4
  2. package/dist/controllers/api/account.d.ts +1 -1
  3. package/dist/controllers/api/account.d.ts.map +1 -1
  4. package/dist/controllers/api/account.js +58 -7
  5. package/dist/controllers/api/account.js.map +1 -1
  6. package/dist/database/cache/store.d.ts +7 -0
  7. package/dist/database/cache/store.d.ts.map +1 -1
  8. package/dist/database/cache/store.js +6 -0
  9. package/dist/database/cache/store.js.map +1 -1
  10. package/dist/database/entities/faucet-request.entity.d.ts +11 -1
  11. package/dist/database/entities/faucet-request.entity.d.ts.map +1 -1
  12. package/dist/database/entities/faucet-request.entity.js +26 -2
  13. package/dist/database/entities/faucet-request.entity.js.map +1 -1
  14. package/dist/database/migrations/1791500000001-studio-migrations.d.ts +7 -0
  15. package/dist/database/migrations/1791500000001-studio-migrations.d.ts.map +1 -0
  16. package/dist/database/migrations/1791500000001-studio-migrations.js +16 -0
  17. package/dist/database/migrations/1791500000001-studio-migrations.js.map +1 -0
  18. package/dist/database/types/types.d.ts.map +1 -1
  19. package/dist/database/types/types.js +3 -0
  20. package/dist/database/types/types.js.map +1 -1
  21. package/dist/helpers/faucet-quota.d.ts +26 -2
  22. package/dist/helpers/faucet-quota.d.ts.map +1 -1
  23. package/dist/helpers/faucet-quota.js +41 -4
  24. package/dist/helpers/faucet-quota.js.map +1 -1
  25. package/dist/services/api/faucet-request.d.ts +23 -6
  26. package/dist/services/api/faucet-request.d.ts.map +1 -1
  27. package/dist/services/api/faucet-request.js +64 -10
  28. package/dist/services/api/faucet-request.js.map +1 -1
  29. package/dist/static/swagger-api.json +1 -1
  30. package/dist/types/constants.d.ts +5 -0
  31. package/dist/types/constants.d.ts.map +1 -1
  32. package/dist/types/constants.js +20 -0
  33. package/dist/types/constants.js.map +1 -1
  34. package/example.env +6 -0
  35. 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. `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)
115
- 8. `FAUCET_API_KEY`: API key for faucet service authentication
116
- 9. `FAUCET_ACCESS_CLIENT_ID`: Cloudflare Access client ID for accessing the Testnet Faucet API
117
- 10. `FAUCET_ACCESS_CLIENT_SECRET`: Cloudflare Access client secret for accessing the Testnet Faucet API
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: The customer's monthly faucet quota is exhausted. The Retry-After header gives the seconds until it resets, and the body includes the quota details.
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;AAsDxD,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;IA8JrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACU,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;IA0C9D;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACU,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;CAuF9D"}
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: The customer's monthly faucet quota is exhausted. The Retry-After header gives the seconds until it resets, and the body includes the quota details.
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 stripeSubscription = await stripe.subscriptions.retrieve(subscription.subscriptionId);
564
- if (!['active', 'trialing'].includes(stripeSubscription.status)) {
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
- const productId = getStripeObjectKey(stripeSubscription.items.data[0].plan.product);
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;AAM7E,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;CAEjE"}
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;AAEhB,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"}
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
- * One row per successful (or in-flight) testnet faucet request made through `POST /account/faucet`.
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,qBAEa,mBAAmB;IAE/B,eAAe,EAAG,MAAM,CAAC;IAIzB,QAAQ,EAAG,cAAc,CAAC;IAM1B,OAAO,EAAG,MAAM,CAAC;IAOjB,WAAW,EAAG,MAAM,CAAC;IAMrB,SAAS,EAAG,IAAI,CAAC;IAGjB,YAAY;gBAIA,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAM1E"}
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
- * One row per successful (or in-flight) testnet faucet request made through `POST /account/faucet`.
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;AAE7G,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB;;;GAGG;AAGI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAE/B,eAAe,CAAU;IAIzB,QAAQ,CAAkB;IAM1B,OAAO,CAAU;IAEjB,wEAAwE;IAKxE,WAAW,CAAU;IAMrB,SAAS,CAAQ;IAGjB,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;IAC5C,CAAC;CACD,CAAA;AApCA;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;AAMrB;IAJC,MAAM,CAAC;QACP,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,KAAK;KACf,CAAC;sDACe;AAGjB;IADC,YAAY,EAAE;uDAGd;AA9BW,mBAAmB;IAF/B,MAAM,CAAC,eAAe,CAAC;IACvB,KAAK,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;GACpB,mBAAmB,CAsC/B"}
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;AA+DrC,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;CAqGnB"}
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, limitNcheq: bigint): Promise<FaucetReservation>;
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 kept (over-counting is safer than refunding quota for tokens that were credited).
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;AAErE,gGAAgG;AAChG,MAAM,WAAW,iBAAiB;IACjC,OAAO,CACN,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B,OAAO,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAED,MAAM,MAAM,kBAAkB,GAC3B;IAAE,OAAO,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAE3E;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;;;;;;GAMG;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;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC5F,OAAO,CAAC,kBAAkB,CAAC,CAgB7B"}
1
+ {"version":3,"file":"faucet-quota.d.ts","sourceRoot":"","sources":["../../src/helpers/faucet-quota.ts"],"names":[],"mappings":"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"}
@@ -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 kept (over-counting is safer than refunding quota for tokens that were credited).
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, params.limitNcheq);
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 { outcome: 'quota_exceeded', usedNcheq: reservation.usedNcheq, window: reservation.window };
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":"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"}
1
+ {"version":3,"file":"faucet-quota.js","sourceRoot":"","sources":["../../src/helpers/faucet-quota.ts"],"names":[],"mappings":"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"}
@@ -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
- /** Total ncheq requested by the customer since `since`, using the given manager (and so its transaction). */
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
- * Call `release` if the upstream faucet call then definitely failed.
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: bigint, now?: Date): Promise<FaucetReservation>;
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;AAEvF,OAAO,EAGN,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,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,6GAA6G;mBACxF,iBAAiB;IAUtC,yEAAyE;IAC5D,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAK5F;;;;OAIG;IACU,OAAO,CACnB,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,IAAiB,GACpB,OAAO,CAAC,iBAAiB,CAAC;IAmB7B,yGAAyG;IAC5F,OAAO,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG5D"}
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 { fitsInQuota, getFaucetQuotaWindow, } from '../../helpers/faucet-quota.js';
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
- /** Total ncheq requested by the customer since `since`, using the given manager (and so its transaction). */
12
- static async sumRequestedNcheq(manager, customerId, since) {
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
- * Call `release` if the upstream faucet call then definitely failed.
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
- const usedNcheq = await FaucetRequestService.sumRequestedNcheq(manager, customer.customerId, window.start);
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,GAGpB,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;IAED,6GAA6G;IACrG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAsB,EAAE,UAAkB,EAAE,KAAW;QAC7F,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,SAAS,EAAqB,CAAC;QACjC,OAAO,MAAM,CAAC,GAAG,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,yEAAyE;IAClE,KAAK,CAAC,YAAY,CAAC,QAAwB,EAAE,MAAY,IAAI,IAAI,EAAE;QACzE,MAAM,EAAE,KAAK,EAAE,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC5C,OAAO,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACjH,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,OAAO,CACnB,QAAwB,EACxB,OAAe,EACf,WAAmB,EACnB,UAAkB,EAClB,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,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3G,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC;gBACtD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAW,CAAC;YACxD,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"}
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": "The customer's monthly faucet quota is exhausted. The Retry-After header gives the seconds until it resets, and the body includes the quota details."
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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"}
@@ -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":"AACA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,mBAAmB;AACnB,MAAM,CAAC,MAAM,OAAO,GAAG;IACtB,IAAI,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;IAC5C,IAAI,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE;CACtC,CAAC;AAEF,wBAAwB;AACxB,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,uBAAuB,CAAC;AAChG,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,oBAAoB,CAAC;AAC7F,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC;AACrC,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACrC,wDAAwD;AACxD,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC;AAEzD,iBAAiB;AACjB,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE9F,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,+BAA+B,CAAC;AAExG,MAAM,CAAC,MAAM,kBAAkB,GAAG;IACjC,QAAQ,EACP,cAAc;QACd,CAAC;YACA,IAAI,qBAAqB,KAAK,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACvF,OAAO,EAAE,CAAC;QACX,CAAC,CAAC,EAAE;IACL,KAAK,EACJ,YAAY;QACZ,CAAC;YACA,IAAI,qBAAqB,KAAK,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACrF,OAAO,EAAE,CAAC;QACX,CAAC,CAAC,EAAE;IACL,SAAS,EACR,gBAAgB;QAChB,CAAC;YACA,IAAI,qBAAqB,KAAK,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACzF,OAAO,EAAE,CAAC;QACX,CAAC,CAAC,EAAE;IACL,OAAO,EACN,oBAAoB;QACpB,CAAC;YACA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACxD,CAAC,CAAC,EAAE;IACL,cAAc,EAAE,KAAK;IACrB,aAAa,EAAE,IAAI;CACnB,CAAC;AAEF,mBAAmB;AACnB;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAyB,EAAE,QAAgB,EAAE,IAAI,GAAG,sBAAsB,EAAU,EAAE;IACpH,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACpC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IACzD,OAAO,CAAC,IAAI,CAAC,oBAAoB,IAAI,KAAK,KAAK,qDAAqD,QAAQ,GAAG,CAAC,CAAC;IACjH,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC;AAEF,+FAA+F;AAC/F,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACrC,KAAyB,EACzB,QAAgB,EAChB,IAAI,GAAG,sBAAsB,EACpB,EAAE;IACX,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACpC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IAC3D,OAAO,CAAC,IAAI,CACX,oBAAoB,IAAI,KAAK,KAAK,6DAA6D,QAAQ,GAAG,CAC1G,CAAC;IACF,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC;AACrC,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,yCAAyC,CAAC;AAC9F,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,iBAAiB,CAAC;AAC9E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACxC,MAAM,CAAC,MAAM,uBAAuB,GAAG,cAAc,CACpD,OAAO,CAAC,GAAG,CAAC,uBAAuB,EACnC,KAAK,EACL,yBAAyB,CACzB,CAAC;AACF,mHAAmH;AACnH,0FAA0F;AAC1F,MAAM,CAAC,MAAM,0BAA0B,GAAG,cAAc,CACvD,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,EACnF,uBAAuB,EACvB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,+BAA+B,CACvG,CAAC;AACF,yFAAyF;AACzF,MAAM,CAAC,MAAM,yBAAyB,GAAG,cAAc,CACtD,OAAO,CAAC,GAAG,CAAC,yBAAyB,EACrC,MAAM,EACN,2BAA2B,CAC3B,CAAC;AACF,+FAA+F;AAC/F,uFAAuF;AACvF,MAAM,CAAC,MAAM,uBAAuB,GAAG,cAAc,CACpD,OAAO,CAAC,GAAG,CAAC,uBAAuB,EACnC,yBAAyB,EACzB,yBAAyB,CACzB,CAAC;AACF,gHAAgH;AAChH,mEAAmE;AACnE,MAAM,CAAC,MAAM,iCAAiC,GAAG,sBAAsB,CACtE,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAC7C,EAAE,EACF,mCAAmC,CACnC,CAAC;AACF,iHAAiH;AACjH,0GAA0G;AAC1G,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAAsB,CAChE,OAAO,CAAC,GAAG,CAAC,2BAA2B,EACvC,EAAE,EACF,6BAA6B,CAC7B,CAAC;AACF,gHAAgH;AAChH,+GAA+G;AAC/G,oHAAoH;AACpH,MAAM,CAAC,MAAM,8BAA8B,GAAG,sBAAsB,CACnE,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAC1C,GAAG,EACH,gCAAgC,CAChC,CAAC;AACF,iHAAiH;AACjH,iGAAiG;AACjG,MAAM,CAAC,MAAM,8BAA8B,GAAG,cAAc,CAC3D,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAC1C,EAAE,EACF,gCAAgC,CAChC,CAAC;AACF,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;AACzG,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC;AACjF,MAAM,CAAC,MAAM,2BAA2B,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,EAAE,CAAC;AAEzF,yFAAyF;AACzF,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,kCAAkC,CAAC;AACrG,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,eAAe,CAAC;AACpF,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;AACrE,MAAM,CAAC,MAAM,uBAAuB,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU;AAE3G,kCAAkC;AAClC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,wCAAwC,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,OAAO,GAAG,sBAAsB,CAAC;AAC9C,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AACrC,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAC9C,MAAM,CAAC,MAAM,cAAc,GAAG,gFAAgF,CAAC;AAE/G,SAAS;AACT,MAAM,CAAC,MAAM,eAAe,GAAsE;IACjG,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,yBAAyB;IACzE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,qCAAqC;CACrF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,wBAAwB,CAAC;AACxD,iEAAiE;AACjE,MAAM,CAAC,MAAM,+BAA+B,GAAG,qEAAqE,CAAC;AAErH,MAAM,CAAN,IAAY,yBASX;AATD,WAAY,yBAAyB;IACpC,wCAAW,CAAA;IACX,kDAAqB,CAAA;IACrB,oEAAuC,CAAA;IACvC,sDAAyB,CAAA;IACzB,0DAA6B,CAAA;IAC7B,wCAAW,CAAA;IACX,0DAA6B,CAAA;IAC7B,gDAAmB,CAAA;AACpB,CAAC,EATW,yBAAyB,KAAzB,yBAAyB,QASpC;AAED,MAAM,CAAN,IAAY,uBAOX;AAPD,WAAY,uBAAuB;IAClC,2FAAwB,CAAA;IACxB,2FAAwB,CAAA;IACxB,mGAA4B,CAAA;IAC5B,iHAAmC,CAAA;IACnC,8GAAiC,CAAA;IACjC,gHAAkC,CAAA;AACnC,CAAC,EAPW,uBAAuB,KAAvB,uBAAuB,QAOlC;AAED,MAAM,CAAN,IAAY,iBAuDX;AAvDD,WAAY,iBAAiB;IAC5B,iBAAiB;IACjB,8CAAyB,CAAA;IACzB,8CAAyB,CAAA;IACzB,sDAAiC,CAAA;IACjC,8CAAyB,CAAA;IACzB,8CAAyB,CAAA;IACzB,0CAAqB,CAAA;IACrB,8CAAyB,CAAA;IACzB,sBAAsB;IACtB,wDAAmC,CAAA;IACnC,wDAAmC,CAAA;IAEnC,4BAA4B;IAC5B,kGAA6E,CAAA;IAC7E,8FAAyE,CAAA;IACzE,kGAA6E,CAAA;IAC7E,8FAAyE,CAAA;IACzE,wEAAmD,CAAA;IACnD,0EAAqD,CAAA;IACrD,sEAAiD,CAAA;IACjD,gGAA2E,CAAA;IAE3E,wBAAwB;IACxB,0DAAqC,CAAA;IACrC,4DAAuC,CAAA;IACvC,4DAAuC,CAAA;IACvC,8DAAyC,CAAA;IACzC,kEAA6C,CAAA;IAC7C,UAAU;IACV,sDAAiC,CAAA;IACjC,gDAA2B,CAAA;IAC3B,kEAA6C,CAAA;IAC7C,iBAAiB;IACjB,8CAAyB,CAAA;IACzB,8CAAyB,CAAA;IACzB,0CAAqB,CAAA;IACrB,0BAA0B;IAC1B,gEAA2C,CAAA;IAC3C,gEAA2C,CAAA;IAC3C,eAAe;IACf,gEAA2C,CAAA;IAC3C,gEAA2C,CAAA;IAC3C,gEAA2C,CAAA;IAC3C,gFAA2D,CAAA;IAE3D,qBAAqB;IACrB,sDAAiC,CAAA;IACjC,sDAAiC,CAAA;IACjC,sDAAiC,CAAA;IACjC,gDAA2B,CAAA;IAC3B,kDAA6B,CAAA;IAE7B,oBAAoB;IACpB,oEAA+C,CAAA;AAChD,CAAC,EAvDW,iBAAiB,KAAjB,iBAAiB,QAuD5B;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC;AAC7C,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AACzD,MAAM,CAAC,MAAM,wBAAwB,GAAG,0BAA0B,CAAC;AACnE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,sBAAsB,CAAC,CAAC;AAC3G,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAChD,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAkB,CAAC;AACxD,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC"}
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"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cheqd/studio",
3
- "version": "3.18.0-develop.1",
3
+ "version": "3.18.0-develop.2",
4
4
  "description": "cheqd Studio Backend",
5
5
  "source": "src/index.ts",
6
6
  "main": "dist/index.js",