@noodleseed/one 0.61.0 → 0.62.0

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 (53) hide show
  1. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-schema.d.ts.map +1 -1
  2. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-schema.js +2 -0
  3. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-schema.js.map +1 -1
  4. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-schema.d.ts +4 -0
  5. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-schema.d.ts.map +1 -0
  6. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-schema.js +74 -0
  7. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-schema.js.map +1 -0
  8. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-store.d.ts +31 -0
  9. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-store.d.ts.map +1 -0
  10. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-store.js +295 -0
  11. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-store.js.map +1 -0
  12. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-schema.d.ts.map +1 -1
  13. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-schema.js +13 -0
  14. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-schema.js.map +1 -1
  15. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-store.d.ts.map +1 -1
  16. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-store.js +4 -0
  17. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-store.js.map +1 -1
  18. package/node_modules/@noodle-borg/service/dist/billing/stripe-config.d.ts +1 -0
  19. package/node_modules/@noodle-borg/service/dist/billing/stripe-config.d.ts.map +1 -1
  20. package/node_modules/@noodle-borg/service/dist/billing/stripe-config.js +12 -1
  21. package/node_modules/@noodle-borg/service/dist/billing/stripe-config.js.map +1 -1
  22. package/node_modules/@noodle-borg/service/dist/billing/stripe-integration-loader.d.ts +7 -0
  23. package/node_modules/@noodle-borg/service/dist/billing/stripe-integration-loader.d.ts.map +1 -1
  24. package/node_modules/@noodle-borg/service/dist/billing/stripe-integration-loader.js +14 -0
  25. package/node_modules/@noodle-borg/service/dist/billing/stripe-integration-loader.js.map +1 -1
  26. package/node_modules/@noodle-borg/service/dist/billing/stripe-integration.d.ts +7 -0
  27. package/node_modules/@noodle-borg/service/dist/billing/stripe-integration.d.ts.map +1 -1
  28. package/node_modules/@noodle-borg/service/dist/billing/stripe-integration.js +38 -0
  29. package/node_modules/@noodle-borg/service/dist/billing/stripe-integration.js.map +1 -1
  30. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider-validation.d.ts +49 -0
  31. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider-validation.d.ts.map +1 -0
  32. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider-validation.js +241 -0
  33. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider-validation.js.map +1 -0
  34. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider.d.ts +28 -0
  35. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider.d.ts.map +1 -0
  36. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider.js +133 -0
  37. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider.js.map +1 -0
  38. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-service.d.ts +23 -0
  39. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-service.d.ts.map +1 -0
  40. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-service.js +171 -0
  41. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-service.js.map +1 -0
  42. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-store.d.ts +51 -0
  43. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-store.d.ts.map +1 -0
  44. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-store.js +2 -0
  45. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-store.js.map +1 -0
  46. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  47. package/node_modules/@noodle-borg/service/dist/serve.js +14 -1
  48. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  49. package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.d.ts +1 -0
  50. package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.d.ts.map +1 -1
  51. package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.js +3 -0
  52. package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.js.map +1 -1
  53. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-meter-schema.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-meter-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAe3C,uGAAuG;AACvG,wBAAsB,8BAA8B,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAoa9E;AAED,wBAAsB,kCAAkC,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAY/F;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAK7D"}
1
+ {"version":3,"file":"postgres-meter-schema.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-meter-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAgB3C,uGAAuG;AACvG,wBAAsB,8BAA8B,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAqa9E;AAED,wBAAsB,kCAAkC,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAY/F;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAK7D"}
@@ -2,6 +2,7 @@ import { BILLING_METER_AGGREGATE_RETENTION_MONTHS, BILLING_METER_EXACT_KEY_TOMBS
2
2
  import { readBillingMeterTransactionTime } from './postgres-meter-clock.js';
3
3
  import { ensureBillingMeterReceiptIntegritySchema, ensureBillingMeterWindowRegistrySchema, } from './postgres-meter-window-schema.js';
4
4
  import { ensureBillingOverageEvidenceSchema } from './postgres-overage-evidence-schema.js';
5
+ import { ensureBillingStripeOverageSchema } from './postgres-stripe-overage-schema.js';
5
6
  /** Additive, inactive storage for validation and readiness evidence. Never activates a meter epoch. */
6
7
  export async function ensureAuthoritativeMeterSchema(pool) {
7
8
  await pool.query(`
@@ -419,6 +420,7 @@ export async function ensureAuthoritativeMeterSchema(pool) {
419
420
  )
420
421
  `);
421
422
  await ensureBillingOverageEvidenceSchema(pool);
423
+ await ensureBillingStripeOverageSchema(pool);
422
424
  await ensureAuthoritativeMeterPartitions(pool);
423
425
  }
424
426
  export async function ensureAuthoritativeMeterPartitions(pool) {
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-meter-schema.js","sourceRoot":"","sources":["../../src/billing/postgres-meter-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgres-meter-schema.js","sourceRoot":"","sources":["../../src/billing/postgres-meter-schema.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wCAAwC,EACxC,gDAAgD,EAChD,sCAAsC,EACtC,sCAAsC,EACtC,oCAAoC,GACrC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EACL,wCAAwC,EACxC,sCAAsC,GACvC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,kCAAkC,EAAE,MAAM,uCAAuC,CAAC;AAC3F,OAAO,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAC;AAEvF,uGAAuG;AACvG,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,IAAU;IAC7D,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;GAQhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CACd;;;;wCAIoC,EACpC;QACE,sCAAsC;QACtC,oCAAoC;QACpC,gDAAgD;QAChD,wCAAwC;KACzC,CACF,CAAC;IACF,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;GAuBhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;GAQhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,sCAAsC,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;GAkBhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;wDA0BqC,oCAAoC;;;;;;;GAOzF,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;GAiBhB,CAAC,CAAC;IACH,MAAM,wCAAwC,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;GAEhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;GAGhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;GAGhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;mCAagB,gDAAgD;;;GAGhF,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;GAGhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;mCAkBgB,wCAAwC;;;GAGxE,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;GAGhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;mCAmBgB,wCAAwC;;;GAGxE,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;GAGhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;GAkBhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;GAGhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;GAGhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;GAKhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;GAKhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;GAahB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;GAMhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;GAchB,CAAC,CAAC;IACH,MAAM,kCAAkC,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,gCAAgC,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,kCAAkC,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kCAAkC,CAAC,IAAuB;IAC9E,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,+BAA+B,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,sCAAsC,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;QACnF,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,EAAE,CAAC,WAAW,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QACpF,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,EAAE,CAAC,WAAW,EAAE,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACtF,MAAM,SAAS,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,IAAI,CAAC,KAAK,CACd,8BAA8B,SAAS;;6BAEhB,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,WAAW,EAAE,IAAI,CAC3E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAW;IACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAClG,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtE,OAAO,+BAA+B,IAAI,IAAI,OAAO,EAAE,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Pool } from 'pg';
2
+ /** Additive, mode-bound Stripe settlement state. Closure evidence remains immutable and provider-neutral. */
3
+ export declare function ensureBillingStripeOverageSchema(pool: Pool): Promise<void>;
4
+ //# sourceMappingURL=postgres-stripe-overage-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-stripe-overage-schema.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-stripe-overage-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE/B,6GAA6G;AAC7G,wBAAsB,gCAAgC,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAuEhF"}
@@ -0,0 +1,74 @@
1
+ /** Additive, mode-bound Stripe settlement state. Closure evidence remains immutable and provider-neutral. */
2
+ export async function ensureBillingStripeOverageSchema(pool) {
3
+ await pool.query(`
4
+ CREATE TABLE IF NOT EXISTS billing_stripe_overage_settlements (
5
+ closure_id text PRIMARY KEY
6
+ REFERENCES billing_overage_window_closures(closure_id) ON DELETE RESTRICT,
7
+ mode text NOT NULL CHECK (mode IN ('sandbox', 'live')),
8
+ billing_account_id text NOT NULL REFERENCES billing_accounts(id) ON DELETE RESTRICT,
9
+ customer_id text NOT NULL,
10
+ overage_product_id text NOT NULL CHECK (overage_product_id LIKE 'prod\\_%' ESCAPE '\\'),
11
+ overage_price_id text NOT NULL CHECK (overage_price_id LIKE 'price\\_%' ESCAPE '\\'),
12
+ stage text NOT NULL CHECK (
13
+ stage IN ('invoice_pending', 'invoice_created', 'item_created', 'finalized',
14
+ 'review_required')
15
+ ),
16
+ attempt_count integer NOT NULL CHECK (attempt_count > 0),
17
+ lease_expires_at timestamptz,
18
+ retry_after timestamptz NOT NULL,
19
+ invoice_id text,
20
+ invoice_item_id text,
21
+ provider_status text CHECK (
22
+ provider_status IS NULL OR
23
+ provider_status IN ('draft', 'open', 'paid', 'void', 'uncollectible')
24
+ ),
25
+ amount_due_minor bigint CHECK (amount_due_minor IS NULL OR amount_due_minor >= 0),
26
+ amount_paid_minor bigint CHECK (amount_paid_minor IS NULL OR amount_paid_minor >= 0),
27
+ last_error_code text,
28
+ first_claimed_at timestamptz NOT NULL,
29
+ updated_at timestamptz NOT NULL CHECK (updated_at >= first_claimed_at),
30
+ FOREIGN KEY (billing_account_id, mode)
31
+ REFERENCES billing_stripe_customers(billing_account_id, mode) ON DELETE RESTRICT,
32
+ FOREIGN KEY (mode, customer_id)
33
+ REFERENCES billing_stripe_customers(mode, customer_id) ON DELETE RESTRICT,
34
+ CHECK (invoice_id IS NULL OR invoice_id LIKE 'in\\_%' ESCAPE '\\'),
35
+ CHECK (invoice_item_id IS NULL OR invoice_item_id LIKE 'ii\\_%' ESCAPE '\\'),
36
+ CHECK (last_error_code IS NULL OR (
37
+ length(last_error_code) BETWEEN 1 AND 80 AND
38
+ last_error_code ~ '^[a-z0-9_]+$'
39
+ )),
40
+ CHECK (
41
+ (stage = 'invoice_pending' AND invoice_id IS NULL AND invoice_item_id IS NULL) OR
42
+ (stage = 'invoice_created' AND invoice_id IS NOT NULL AND invoice_item_id IS NULL) OR
43
+ (stage = 'item_created' AND invoice_id IS NOT NULL AND invoice_item_id IS NOT NULL) OR
44
+ (stage = 'finalized' AND invoice_id IS NOT NULL AND invoice_item_id IS NOT NULL AND
45
+ provider_status IS NOT NULL AND provider_status <> 'draft' AND
46
+ amount_due_minor IS NOT NULL AND amount_paid_minor IS NOT NULL) OR
47
+ stage = 'review_required'
48
+ ),
49
+ CHECK (stage <> 'finalized' OR lease_expires_at IS NULL),
50
+ CHECK (stage <> 'review_required' OR lease_expires_at IS NULL)
51
+ )
52
+ `);
53
+ await pool.query(`
54
+ CREATE UNIQUE INDEX IF NOT EXISTS billing_stripe_overage_settlements_invoice_key
55
+ ON billing_stripe_overage_settlements(mode, invoice_id)
56
+ WHERE invoice_id IS NOT NULL
57
+ `);
58
+ await pool.query(`
59
+ CREATE UNIQUE INDEX IF NOT EXISTS billing_stripe_overage_settlements_item_key
60
+ ON billing_stripe_overage_settlements(mode, invoice_item_id)
61
+ WHERE invoice_item_id IS NOT NULL
62
+ `);
63
+ await pool.query(`
64
+ CREATE UNIQUE INDEX IF NOT EXISTS billing_stripe_overage_settlements_account_unfinished_key
65
+ ON billing_stripe_overage_settlements(mode, billing_account_id)
66
+ WHERE stage <> 'finalized'
67
+ `);
68
+ await pool.query(`
69
+ CREATE INDEX IF NOT EXISTS billing_stripe_overage_settlements_retry_key
70
+ ON billing_stripe_overage_settlements(mode, retry_after, updated_at)
71
+ WHERE stage NOT IN ('finalized', 'review_required')
72
+ `);
73
+ }
74
+ //# sourceMappingURL=postgres-stripe-overage-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-stripe-overage-schema.js","sourceRoot":"","sources":["../../src/billing/postgres-stripe-overage-schema.ts"],"names":[],"mappings":"AAEA,6GAA6G;AAC7G,MAAM,CAAC,KAAK,UAAU,gCAAgC,CAAC,IAAU;IAC/D,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { Pool } from 'pg';
2
+ import type { BillingStripeOverageProviderStatus, BillingStripeOverageSettlementClaim, BillingStripeOverageStore } from './stripe-overage-store.js';
3
+ export declare class PostgresBillingStripeOverageStore implements BillingStripeOverageStore {
4
+ #private;
5
+ constructor(pool: Pool);
6
+ claimNext(input: Parameters<BillingStripeOverageStore['claimNext']>[0]): Promise<BillingStripeOverageSettlementClaim | undefined>;
7
+ recordInvoice(claim: BillingStripeOverageSettlementClaim, input: {
8
+ readonly invoiceId: string;
9
+ readonly recordedAt: string;
10
+ }): Promise<BillingStripeOverageSettlementClaim>;
11
+ recordItem(claim: BillingStripeOverageSettlementClaim, input: {
12
+ readonly invoiceItemId: string;
13
+ readonly recordedAt: string;
14
+ }): Promise<BillingStripeOverageSettlementClaim>;
15
+ complete(claim: BillingStripeOverageSettlementClaim, input: {
16
+ readonly providerStatus: Exclude<BillingStripeOverageProviderStatus, 'draft'>;
17
+ readonly amountDueMinor: number;
18
+ readonly amountPaidMinor: number;
19
+ readonly completedAt: string;
20
+ }): Promise<BillingStripeOverageSettlementClaim>;
21
+ fail(claim: BillingStripeOverageSettlementClaim, input: {
22
+ readonly errorCode: string;
23
+ readonly failedAt: string;
24
+ readonly retryAt: string;
25
+ }): Promise<void>;
26
+ requireReview(claim: BillingStripeOverageSettlementClaim, input: {
27
+ readonly errorCode: string;
28
+ readonly reviewedAt: string;
29
+ }): Promise<void>;
30
+ }
31
+ //# sourceMappingURL=postgres-stripe-overage-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-stripe-overage-store.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-stripe-overage-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAA2C,MAAM,IAAI,CAAC;AAMxE,OAAO,KAAK,EACV,kCAAkC,EAClC,mCAAmC,EAEnC,yBAAyB,EAC1B,MAAM,2BAA2B,CAAC;AA4CnC,qBAAa,iCAAkC,YAAW,yBAAyB;;gBAGrE,IAAI,EAAE,IAAI;IAIhB,SAAS,CACb,KAAK,EAAE,UAAU,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAC3D,OAAO,CAAC,mCAAmC,GAAG,SAAS,CAAC;IAgHrD,aAAa,CACjB,KAAK,EAAE,mCAAmC,EAC1C,KAAK,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GACjE,OAAO,CAAC,mCAAmC,CAAC;IAUzC,UAAU,CACd,KAAK,EAAE,mCAAmC,EAC1C,KAAK,EAAE;QAAE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GACrE,OAAO,CAAC,mCAAmC,CAAC;IAUzC,QAAQ,CACZ,KAAK,EAAE,mCAAmC,EAC1C,KAAK,EAAE;QACL,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,kCAAkC,EAAE,OAAO,CAAC,CAAC;QAC9E,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,GACA,OAAO,CAAC,mCAAmC,CAAC;IAuBzC,IAAI,CACR,KAAK,EAAE,mCAAmC,EAC1C,KAAK,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GACzF,OAAO,CAAC,IAAI,CAAC;IAoBV,aAAa,CACjB,KAAK,EAAE,mCAAmC,EAC1C,KAAK,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GACjE,OAAO,CAAC,IAAI,CAAC;CAkDjB"}
@@ -0,0 +1,295 @@
1
+ import { parseBillingOverageWindowClosure, } from './overage-window-closure.js';
2
+ const CLAIM_LEASE_MS = 5 * 60 * 1_000;
3
+ export class PostgresBillingStripeOverageStore {
4
+ #pool;
5
+ constructor(pool) {
6
+ this.#pool = pool;
7
+ }
8
+ async claimNext(input) {
9
+ const client = await this.#pool.connect();
10
+ try {
11
+ await client.query('BEGIN');
12
+ const candidate = await client.query(`SELECT closure.closure_id, closure.billing_account_id, customer.customer_id
13
+ FROM billing_overage_window_closures AS closure
14
+ JOIN billing_stripe_customers AS customer
15
+ ON customer.billing_account_id = closure.billing_account_id
16
+ AND customer.mode = $1
17
+ LEFT JOIN billing_stripe_overage_settlements AS settlement
18
+ ON settlement.closure_id = closure.closure_id
19
+ WHERE closure.closed_at <= $2
20
+ AND (
21
+ settlement.closure_id IS NULL OR
22
+ (
23
+ settlement.mode = $1 AND
24
+ settlement.stage NOT IN ('finalized', 'review_required') AND
25
+ settlement.retry_after <= $2 AND
26
+ (settlement.lease_expires_at IS NULL OR settlement.lease_expires_at <= $2)
27
+ )
28
+ )
29
+ AND NOT EXISTS (
30
+ SELECT 1
31
+ FROM billing_stripe_overage_settlements AS unfinished
32
+ WHERE unfinished.mode = $1
33
+ AND unfinished.billing_account_id = closure.billing_account_id
34
+ AND unfinished.closure_id <> closure.closure_id
35
+ AND unfinished.stage <> 'finalized'
36
+ )
37
+ AND NOT EXISTS (
38
+ SELECT 1
39
+ FROM jsonb_array_elements(closure.sources) AS source
40
+ WHERE NOT EXISTS (
41
+ SELECT 1
42
+ FROM billing_stripe_subscription_bindings AS binding
43
+ WHERE binding.mode = $1
44
+ AND binding.billing_account_id = closure.billing_account_id
45
+ AND binding.customer_id = customer.customer_id
46
+ AND binding.internal_subscription_id = source->>'subscriptionId'
47
+ )
48
+ )
49
+ AND NOT EXISTS (
50
+ SELECT 1
51
+ FROM jsonb_array_elements(closure.sources) AS source
52
+ JOIN billing_stripe_subscription_bindings AS binding
53
+ ON binding.mode = $1
54
+ AND binding.billing_account_id = closure.billing_account_id
55
+ AND binding.internal_subscription_id = source->>'subscriptionId'
56
+ WHERE binding.customer_id <> customer.customer_id
57
+ )
58
+ ORDER BY closure.closed_at, closure.closure_id
59
+ LIMIT 1
60
+ FOR UPDATE OF closure SKIP LOCKED`, [input.mode, input.claimedAt]);
61
+ const selected = candidate.rows[0];
62
+ if (selected === undefined) {
63
+ await client.query('COMMIT');
64
+ return undefined;
65
+ }
66
+ const leaseExpiresAt = plusMilliseconds(input.claimedAt, CLAIM_LEASE_MS);
67
+ const inserted = await client.query(`INSERT INTO billing_stripe_overage_settlements
68
+ (closure_id, mode, billing_account_id, customer_id, overage_product_id,
69
+ overage_price_id, stage, attempt_count, lease_expires_at, retry_after,
70
+ first_claimed_at, updated_at)
71
+ VALUES ($1, $2, $3, $4, $5, $6, 'invoice_pending', 1, $7, $8, $8, $8)
72
+ ON CONFLICT DO NOTHING`, [
73
+ selected.closure_id,
74
+ input.mode,
75
+ selected.billing_account_id,
76
+ selected.customer_id,
77
+ input.overageProductId,
78
+ input.overagePriceId,
79
+ leaseExpiresAt,
80
+ input.claimedAt,
81
+ ]);
82
+ if (inserted.rowCount === 0) {
83
+ const updated = await client.query(`UPDATE billing_stripe_overage_settlements
84
+ SET attempt_count = attempt_count + 1,
85
+ lease_expires_at = $3,
86
+ updated_at = $2
87
+ WHERE closure_id = $1 AND mode = $4
88
+ AND stage NOT IN ('finalized', 'review_required')
89
+ AND retry_after <= $2
90
+ AND (lease_expires_at IS NULL OR lease_expires_at <= $2)`, [selected.closure_id, input.claimedAt, leaseExpiresAt, input.mode]);
91
+ if (updated.rowCount !== 1) {
92
+ await client.query('COMMIT');
93
+ return undefined;
94
+ }
95
+ }
96
+ const claim = await readClaim(client, selected.closure_id, input.mode);
97
+ await client.query('COMMIT');
98
+ return claim;
99
+ }
100
+ catch (error) {
101
+ await rollback(client);
102
+ throw error;
103
+ }
104
+ finally {
105
+ client.release();
106
+ }
107
+ }
108
+ async recordInvoice(claim, input) {
109
+ return this.#advance(claim, {
110
+ expectedStage: 'invoice_pending',
111
+ nextStage: 'invoice_created',
112
+ timestamp: input.recordedAt,
113
+ assignment: "invoice_id = $4, provider_status = 'draft'",
114
+ value: input.invoiceId,
115
+ });
116
+ }
117
+ async recordItem(claim, input) {
118
+ return this.#advance(claim, {
119
+ expectedStage: 'invoice_created',
120
+ nextStage: 'item_created',
121
+ timestamp: input.recordedAt,
122
+ assignment: 'invoice_item_id = $4',
123
+ value: input.invoiceItemId,
124
+ });
125
+ }
126
+ async complete(claim, input) {
127
+ const result = await this.#pool.query(`UPDATE billing_stripe_overage_settlements
128
+ SET stage = 'finalized', provider_status = $4,
129
+ amount_due_minor = $5, amount_paid_minor = $6,
130
+ lease_expires_at = NULL, retry_after = $3,
131
+ last_error_code = NULL, updated_at = $3
132
+ WHERE closure_id = $1 AND mode = $2 AND attempt_count = $7
133
+ AND stage = 'item_created' AND lease_expires_at IS NOT NULL`, [
134
+ claim.closure.closureId,
135
+ claim.mode,
136
+ input.completedAt,
137
+ input.providerStatus,
138
+ input.amountDueMinor,
139
+ input.amountPaidMinor,
140
+ claim.attempt,
141
+ ]);
142
+ requireChanged(result.rowCount);
143
+ return readClaim(this.#pool, claim.closure.closureId, claim.mode);
144
+ }
145
+ async fail(claim, input) {
146
+ const result = await this.#pool.query(`UPDATE billing_stripe_overage_settlements
147
+ SET lease_expires_at = NULL, retry_after = $4,
148
+ last_error_code = $3, updated_at = $5
149
+ WHERE closure_id = $1 AND mode = $2 AND attempt_count = $6
150
+ AND stage NOT IN ('finalized', 'review_required')
151
+ AND lease_expires_at IS NOT NULL`, [
152
+ claim.closure.closureId,
153
+ claim.mode,
154
+ errorCode(input.errorCode),
155
+ input.retryAt,
156
+ input.failedAt,
157
+ claim.attempt,
158
+ ]);
159
+ requireChanged(result.rowCount);
160
+ }
161
+ async requireReview(claim, input) {
162
+ const result = await this.#pool.query(`UPDATE billing_stripe_overage_settlements
163
+ SET stage = 'review_required', lease_expires_at = NULL, retry_after = $3,
164
+ last_error_code = $4, updated_at = $3
165
+ WHERE closure_id = $1 AND mode = $2 AND attempt_count = $5
166
+ AND stage NOT IN ('finalized', 'review_required')
167
+ AND lease_expires_at IS NOT NULL`, [
168
+ claim.closure.closureId,
169
+ claim.mode,
170
+ input.reviewedAt,
171
+ errorCode(input.errorCode),
172
+ claim.attempt,
173
+ ]);
174
+ requireChanged(result.rowCount);
175
+ }
176
+ async #advance(claim, input) {
177
+ const leaseExpiresAt = plusMilliseconds(input.timestamp, CLAIM_LEASE_MS);
178
+ const result = await this.#pool.query(`UPDATE billing_stripe_overage_settlements
179
+ SET stage = $3, ${input.assignment}, lease_expires_at = $5,
180
+ retry_after = $6, last_error_code = NULL, updated_at = $6
181
+ WHERE closure_id = $1 AND mode = $2 AND attempt_count = $7
182
+ AND stage = $8 AND lease_expires_at IS NOT NULL`, [
183
+ claim.closure.closureId,
184
+ claim.mode,
185
+ input.nextStage,
186
+ input.value,
187
+ leaseExpiresAt,
188
+ input.timestamp,
189
+ claim.attempt,
190
+ input.expectedStage,
191
+ ]);
192
+ requireChanged(result.rowCount);
193
+ return readClaim(this.#pool, claim.closure.closureId, claim.mode);
194
+ }
195
+ }
196
+ async function readClaim(queryable, closureId, mode) {
197
+ const result = await queryable.query(`SELECT settlement.mode, settlement.overage_product_id, settlement.overage_price_id,
198
+ settlement.stage, settlement.attempt_count, settlement.first_claimed_at,
199
+ settlement.invoice_id, settlement.invoice_item_id, settlement.provider_status,
200
+ settlement.customer_id,
201
+ ARRAY(
202
+ SELECT provenance.provider_subscription_id
203
+ FROM (
204
+ SELECT binding.provider_subscription_id,
205
+ max((source->>'subscriptionVersion')::integer) AS subscription_version
206
+ FROM jsonb_array_elements(closure.sources) AS source
207
+ JOIN billing_stripe_subscription_bindings AS binding
208
+ ON binding.mode = settlement.mode
209
+ AND binding.billing_account_id = closure.billing_account_id
210
+ AND binding.customer_id = settlement.customer_id
211
+ AND binding.internal_subscription_id = source->>'subscriptionId'
212
+ GROUP BY binding.provider_subscription_id
213
+ ) AS provenance
214
+ ORDER BY provenance.subscription_version, provenance.provider_subscription_id
215
+ ) AS provider_subscription_ids,
216
+ closure.schema_version, closure.closure_id, closure.epoch_id,
217
+ closure.billing_account_id, closure.window_start, closure.window_end,
218
+ closure.reconciliation_run_id, closure.policy_kind, closure.overage_calls::text,
219
+ closure.block_calls, closure.block_amount_minor, closure.currency, closure.rounding,
220
+ closure.billable_blocks::text, closure.amount_minor::text, closure.sources,
221
+ closure.source_checksum, closure.closed_at, closure.content_checksum
222
+ FROM billing_stripe_overage_settlements AS settlement
223
+ JOIN billing_overage_window_closures AS closure ON closure.closure_id = settlement.closure_id
224
+ WHERE settlement.closure_id = $1 AND settlement.mode = $2`, [closureId, mode]);
225
+ const row = result.rows[0];
226
+ if (row === undefined)
227
+ throw new Error('Stripe overage settlement claim is unavailable');
228
+ return Object.freeze({
229
+ mode: row.mode,
230
+ closure: parseClosure(row),
231
+ customerId: row.customer_id,
232
+ overageProductId: row.overage_product_id,
233
+ overagePriceId: row.overage_price_id,
234
+ providerSubscriptionIds: Object.freeze([...row.provider_subscription_ids]),
235
+ stage: row.stage,
236
+ attempt: row.attempt_count,
237
+ firstClaimedAt: timestamp(row.first_claimed_at),
238
+ invoiceId: row.invoice_id,
239
+ invoiceItemId: row.invoice_item_id,
240
+ providerStatus: row.provider_status,
241
+ });
242
+ }
243
+ function parseClosure(row) {
244
+ return parseBillingOverageWindowClosure({
245
+ schemaVersion: row.schema_version,
246
+ closureId: row.closure_id,
247
+ epochId: row.epoch_id,
248
+ billingAccountId: row.billing_account_id,
249
+ windowStart: timestamp(row.window_start),
250
+ windowEnd: timestamp(row.window_end),
251
+ reconciliationRunId: row.reconciliation_run_id,
252
+ policyKind: row.policy_kind,
253
+ overageCalls: row.overage_calls,
254
+ blockCalls: row.block_calls,
255
+ blockAmountMinor: row.block_amount_minor,
256
+ currency: row.currency,
257
+ rounding: row.rounding,
258
+ billableBlocks: row.billable_blocks,
259
+ amountMinor: row.amount_minor,
260
+ sources: row.sources,
261
+ sourceChecksum: row.source_checksum,
262
+ closedAt: timestamp(row.closed_at),
263
+ contentChecksum: row.content_checksum,
264
+ });
265
+ }
266
+ function plusMilliseconds(value, milliseconds) {
267
+ const time = new Date(value).getTime();
268
+ if (!Number.isFinite(time))
269
+ throw new Error('Stripe overage settlement timestamp is invalid');
270
+ return new Date(time + milliseconds).toISOString();
271
+ }
272
+ function timestamp(value) {
273
+ const instant = value instanceof Date ? value : new Date(value);
274
+ if (Number.isNaN(instant.getTime()))
275
+ throw new Error('Stripe overage settlement timestamp is invalid');
276
+ return instant.toISOString();
277
+ }
278
+ function errorCode(value) {
279
+ if (!/^[a-z0-9_]{1,80}$/.test(value))
280
+ throw new Error('Stripe overage error code is invalid');
281
+ return value;
282
+ }
283
+ function requireChanged(rowCount) {
284
+ if (rowCount !== 1)
285
+ throw new Error('Stripe overage settlement claim changed concurrently');
286
+ }
287
+ async function rollback(client) {
288
+ try {
289
+ await client.query('ROLLBACK');
290
+ }
291
+ catch {
292
+ // Preserve the original transaction error.
293
+ }
294
+ }
295
+ //# sourceMappingURL=postgres-stripe-overage-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-stripe-overage-store.js","sourceRoot":"","sources":["../../src/billing/postgres-stripe-overage-store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-stripe-schema.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-stripe-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE/B,+FAA+F;AAC/F,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA6GzE"}
1
+ {"version":3,"file":"postgres-stripe-schema.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-stripe-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE/B,+FAA+F;AAC/F,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA0HzE"}
@@ -75,6 +75,19 @@ export async function ensureBillingStripeSchema(pool) {
75
75
  CREATE UNIQUE INDEX IF NOT EXISTS billing_stripe_subscription_bindings_active_account_key
76
76
  ON billing_stripe_subscription_bindings(mode, billing_account_id)
77
77
  WHERE active
78
+ `);
79
+ await pool.query(`
80
+ UPDATE billing_stripe_checkout_operations AS checkout
81
+ SET active = false
82
+ WHERE checkout.active
83
+ AND EXISTS (
84
+ SELECT 1
85
+ FROM billing_stripe_subscription_bindings AS binding
86
+ WHERE binding.mode = checkout.mode
87
+ AND binding.billing_account_id = checkout.billing_account_id
88
+ AND binding.customer_id = checkout.customer_id
89
+ AND binding.created_at >= checkout.created_at
90
+ )
78
91
  `);
79
92
  await pool.query(`
80
93
  CREATE TABLE IF NOT EXISTS billing_stripe_events (
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-stripe-schema.js","sourceRoot":"","sources":["../../src/billing/postgres-stripe-schema.ts"],"names":[],"mappings":"AAEA,+FAA+F;AAC/F,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAAU;IACxD,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;GAUhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;GAmBhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;GAahB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;GAoBhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"postgres-stripe-schema.js","sourceRoot":"","sources":["../../src/billing/postgres-stripe-schema.ts"],"names":[],"mappings":"AAEA,+FAA+F;AAC/F,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAAU;IACxD,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;GAUhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;GAmBhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;GAahB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;GAoBhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;GAYhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-stripe-store.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-stripe-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,IAAI,CAAC;AAoB3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EACV,2BAA2B,EAC3B,uBAAuB,EACvB,4BAA4B,EAC5B,gCAAgC,EAChC,kBAAkB,EAClB,gCAAgC,EACjC,MAAM,mBAAmB,CAAC;AAG3B,qBAAa,0BAA2B,YAAW,kBAAkB;;gBAIvD,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;QAAE,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAA;KAAE;IAQ1E,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB;IAQ7D,WAAW,CAAC,MAAM,EAAE,2BAA2B;IAe/C,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAI3E,gBAAgB,CACpB,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAChE,MAAM,EAAE,UAAU,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAKzD,oBAAoB,CACxB,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,GACnE,OAAO,CAAC,IAAI,CAAC;IAIV,UAAU,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAIjF,aAAa,CACjB,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAIV,SAAS,CACb,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAIV,2BAA2B,CAC/B,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,GACtE,OAAO,CAAC,gCAAgC,CAAC;IAgEtC,4BAA4B,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB;IAW9E,8BAA8B,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM;IAgBrE,8BAA8B,CAClC,OAAO,EAAE,gCAAgC,EACzC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IAgBV,sBAAsB,CAC1B,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,gCAAgC,CAAC;IAgFtC,yBAAyB,CAC7B,OAAO,EAAE,gCAAgC,EACzC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;CAgBjB"}
1
+ {"version":3,"file":"postgres-stripe-store.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-stripe-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,IAAI,CAAC;AAoB3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EACV,2BAA2B,EAC3B,uBAAuB,EACvB,4BAA4B,EAC5B,gCAAgC,EAChC,kBAAkB,EAClB,gCAAgC,EACjC,MAAM,mBAAmB,CAAC;AAG3B,qBAAa,0BAA2B,YAAW,kBAAkB;;gBAIvD,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;QAAE,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAA;KAAE;IAQ1E,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB;IAQ7D,WAAW,CAAC,MAAM,EAAE,2BAA2B;IAe/C,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAI3E,gBAAgB,CACpB,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAChE,MAAM,EAAE,UAAU,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAKzD,oBAAoB,CACxB,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,GACnE,OAAO,CAAC,IAAI,CAAC;IAIV,UAAU,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAIjF,aAAa,CACjB,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAIV,SAAS,CACb,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAIV,2BAA2B,CAC/B,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,GACtE,OAAO,CAAC,gCAAgC,CAAC;IAuEtC,4BAA4B,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB;IAW9E,8BAA8B,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM;IAgBrE,8BAA8B,CAClC,OAAO,EAAE,gCAAgC,EACzC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IAgBV,sBAAsB,CAC1B,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,gCAAgC,CAAC;IAgFtC,yBAAyB,CAC7B,OAAO,EAAE,gCAAgC,EACzC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;CAgBjB"}
@@ -87,6 +87,10 @@ export class PostgresBillingStripeStore {
87
87
  internalSubscriptionId,
88
88
  input.activatedAt,
89
89
  ]);
90
+ await client.query(`UPDATE billing_stripe_checkout_operations
91
+ SET active = false
92
+ WHERE mode = $1 AND billing_account_id = $2 AND customer_id = $3
93
+ AND active AND created_at <= $4`, [input.mode, input.billingAccountId, input.customerId, input.activatedAt]);
90
94
  const binding = await readBinding(client, input.mode, input.providerSubscriptionId);
91
95
  if (binding === undefined)
92
96
  throw new Error('Stripe subscription binding was not persisted');
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-stripe-store.js","sourceRoot":"","sources":["../../src/billing/postgres-stripe-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgres-stripe-store.js","sourceRoot":"","sources":["../../src/billing/postgres-stripe-store.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kCAAkC,EAClC,qCAAqC,EACrC,wBAAwB,EACxB,yCAAyC,GAC1C,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAGL,qBAAqB,EACrB,+BAA+B,EAC/B,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AAUtC,OAAO,EAAE,oCAAoC,EAAE,MAAM,yBAAyB,CAAC;AAE/E,MAAM,OAAO,0BAA0B;IAC5B,KAAK,CAAO;IACZ,cAAc,CAAS;IAEhC,YAAY,IAAU,EAAE,OAAwD;QAC9E,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,gBAAwB,EAAE,IAAuB;QACjE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CACrC,oFAAoF,EACpF,CAAC,gBAAgB,EAAE,IAAI,CAAC,CACzB,CAAC;QACF,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAmC;QACnD,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CACpB;;;yDAGmD,EACnD,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAC1F,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/E,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC;YAC1E,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAA6D;QAC/E,OAAO,kCAAkC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IACxF,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,SAAgE,EAChE,MAA6D;QAE7D,OAAO,qCAAqC,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,SAAoE;QAEpE,OAAO,yCAAyC,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAmC;QAClD,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,IAAuB,EACvB,OAAe,EACf,WAAmB,EACnB,WAAmB;QAEnB,OAAO,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACzF,CAAC;IAED,KAAK,CAAC,SAAS,CACb,IAAuB,EACvB,OAAe,EACf,SAAiB,EACjB,QAAgB;QAEhB,OAAO,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,CAAC,2BAA2B,CAC/B,KAAuE;QAEvE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACrF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC7B,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACzF,IAAI,QAAQ,EAAE,WAAW,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;YACtF,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,MAAM,EAAE,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5F,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAC5C;;;;;;wCAMgC,EAChC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CACzB,CAAC;YACF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAC5E,CAAC;YACD,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,KAAK,QAAQ,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;YACpF,CAAC;YACD,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAC9C;kDAC0C,EAC1C,CAAC,KAAK,CAAC,gBAAgB,CAAC,CACzB,CAAC;YACF,MAAM,sBAAsB,GAC1B,WAAW,CAAC,CAAC,CAAC,EAAE,eAAe,IAAI,KAAK,CAAC,yBAAyB,CAAC;YACrE,MAAM,MAAM,CAAC,KAAK,CAChB;;;mDAG2C,EAC3C;gBACE,KAAK,CAAC,IAAI;gBACV,KAAK,CAAC,sBAAsB;gBAC5B,KAAK,CAAC,gBAAgB;gBACtB,KAAK,CAAC,UAAU;gBAChB,sBAAsB;gBACtB,KAAK,CAAC,WAAW;aAClB,CACF,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAChB;;;2CAGmC,EACnC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,CAC1E,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACpF,IAAI,OAAO,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YAC5F,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7B,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;YACvB,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,4BAA4B,CAAC,gBAAwB,EAAE,IAAuB;QAClF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CACrC;;;8DAGwD,EACxD,CAAC,gBAAgB,EAAE,IAAI,CAAC,CACzB,CAAC;QACF,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,8BAA8B,CAAC,IAAuB,EAAE,KAAa;QACzE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CACrC;;;;;gBAKU,EACV,CAAC,IAAI,EAAE,KAAK,CAAC,CACd,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,8BAA8B,CAClC,OAAyC,EACzC,SAAiB;QAEjB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CACpB;;;kFAG4E,EAC5E;YACE,OAAO,CAAC,IAAI;YACZ,OAAO,CAAC,sBAAsB;YAC9B,OAAO,CAAC,gBAAgB;YACxB,OAAO,CAAC,sBAAsB;YAC9B,SAAS;SACV,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC1B,OAAyC;QAEzC,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC9F,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAmBrC;;;;;;;;;;;;;;;;;4CAiBsC,EACtC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAC3B,CAAC;QACF,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,SAAS;YACnB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,MAAM,mBAAmB,GACvB,GAAG,CAAC,eAAe,KAAK,IAAI;YAC1B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,oCAAoC,CAAC;gBACnC,aAAa,EAAE,GAAG,CAAC,cAAc;gBACjC,cAAc,EAAE,GAAG,CAAC,eAAe;gBACnC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,OAAO,EAAE,GAAG,CAAC,gBAAgB;gBAC7B,aAAa,EAAE,GAAG,CAAC,eAAe;gBAClC,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,eAAe,EAAE,GAAG,CAAC,gBAAgB;gBACrC,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,eAAe,EAAE,qBAAqB,CAAC,GAAG,CAAC,iBAAiB,CAAC;gBAC7D,kBAAkB,EAAE,+BAA+B,CAAC,GAAG,CAAC,oBAAoB,CAAC;gBAC7E,gBAAgB,EAAE,+BAA+B,CAAC,GAAG,CAAC,kBAAkB,CAAC;gBACzE,aAAa,EAAE,+BAA+B,CAAC,GAAG,CAAC,cAAc,CAAC;gBAClE,cAAc,EAAE,+BAA+B,CAAC,GAAG,CAAC,eAAe,CAAC;gBACpE,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,eAAe,EAAE,GAAG,CAAC,gBAAgB;gBACrC,UAAU,EAAE,+BAA+B,CAAC,GAAG,CAAC,WAAW,CAAC;gBAC5D,SAAS,EAAE,+BAA+B,CAAC,GAAG,CAAC,UAAU,CAAC;aAC3D,CAAC,CAAC;QACT,IACE,mBAAmB,KAAK,IAAI;YAC5B,mBAAmB,CAAC,cAAc,KAAK,OAAO,CAAC,sBAAsB,EACrE,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACxF,CAAC;QACD,OAAO;YACL,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,qBAAqB,EAAE,GAAG,CAAC,gBAAgB;YAC3C,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;YACtD,mBAAmB;SACpB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,yBAAyB,CAC7B,OAAyC,EACzC,SAAiB;QAEjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CACnC;;;kFAG4E,EAC5E;YACE,OAAO,CAAC,IAAI;YACZ,OAAO,CAAC,sBAAsB;YAC9B,OAAO,CAAC,gBAAgB;YACxB,OAAO,CAAC,sBAAsB;YAC9B,SAAS;SACV,CACF,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACjG,CAAC;CACF;AAED,KAAK,UAAU,qBAAqB,CAClC,MAAkB,EAClB,gBAAwB,EACxB,IAAuB;IAEvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CACjC;4DACwD,EACxD,CAAC,gBAAgB,EAAE,IAAI,CAAC,CACzB,CAAC;IACF,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,MAAkB,EAClB,IAAuB,EACvB,sBAA8B;IAE9B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CACjC;;;uDAGmD,EACnD,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAC/B,CAAC;IACF,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,MAAkB,EAClB,gBAAwB,EACxB,IAAuB;IAEvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CACjC;;;uEAGmE,EACnE,CAAC,gBAAgB,EAAE,IAAI,CAAC,CACzB,CAAC;IACF,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,MAAkB;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;IAC7C,CAAC;AACH,CAAC"}
@@ -7,6 +7,7 @@ export interface BillingStripeConfig {
7
7
  readonly webhookSecret: string;
8
8
  readonly portalConfigurationId: string;
9
9
  readonly automaticTaxEnabled: false;
10
+ readonly overageSettlementEnabled: boolean;
10
11
  readonly consoleBaseUrl: string;
11
12
  readonly products: Readonly<{
12
13
  pro: string;
@@ -1 +1 @@
1
- {"version":3,"file":"stripe-config.d.ts","sourceRoot":"","sources":["../../src/billing/stripe-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,MAAM,CAAC;AACnD,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,OAAO,CAAC;AAEhD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC1B,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED,KAAK,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAiBhE,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,WAAW,GAAG,mBAAmB,GAAG,SAAS,CAoD5F;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,eAAe,GACxB,MAAM,CAER"}
1
+ {"version":3,"file":"stripe-config.d.ts","sourceRoot":"","sources":["../../src/billing/stripe-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,MAAM,CAAC;AACnD,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,OAAO,CAAC;AAEhD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC;IACpC,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;IAC3C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC1B,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED,KAAK,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAiBhE,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,WAAW,GAAG,mBAAmB,GAAG,SAAS,CA2D5F;AAQD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,eAAe,GACxB,MAAM,CAER"}
@@ -13,8 +13,11 @@ const STRIPE_ENVIRONMENT_KEYS = [
13
13
  'NOODLE_STRIPE_OVERAGE_BLOCK_PRICE_ID',
14
14
  ];
15
15
  export function resolveBillingStripeConfig(env) {
16
- if (!STRIPE_ENVIRONMENT_KEYS.some((key) => env[key] !== undefined))
16
+ const settlementFlag = env.NOODLE_STRIPE_OVERAGE_SETTLEMENT_ENABLED;
17
+ if (settlementFlag === undefined &&
18
+ !STRIPE_ENVIRONMENT_KEYS.some((key) => env[key] !== undefined)) {
17
19
  return undefined;
20
+ }
18
21
  const values = Object.fromEntries(STRIPE_ENVIRONMENT_KEYS.map((key) => [key, required(env, key)]));
19
22
  const mode = billingStripeMode(values.NOODLE_STRIPE_MODE);
20
23
  const secretKey = stripeSecretKey(mode, values.NOODLE_STRIPE_SECRET_KEY);
@@ -48,12 +51,20 @@ export function resolveBillingStripeConfig(env) {
48
51
  webhookSecret: stripeId('webhook secret', 'whsec_', values.NOODLE_STRIPE_WEBHOOK_SECRET),
49
52
  portalConfigurationId: stripeId('portal configuration', 'bpc_', values.NOODLE_STRIPE_PORTAL_CONFIGURATION_ID),
50
53
  automaticTaxEnabled: false,
54
+ overageSettlementEnabled: explicitBoolean('Stripe overage settlement flag', settlementFlag),
51
55
  consoleBaseUrl: consoleBaseUrl(env.NOODLE_CONSOLE_URL),
52
56
  products,
53
57
  prices,
54
58
  overageBlockPriceId,
55
59
  });
56
60
  }
61
+ function explicitBoolean(name, value) {
62
+ if (value === undefined || value === 'false')
63
+ return false;
64
+ if (value === 'true')
65
+ return true;
66
+ throw new Error(`${name} must be true or false`);
67
+ }
57
68
  export function billingStripePriceId(config, plan, interval) {
58
69
  return config.prices[plan][interval];
59
70
  }