@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.
- package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-schema.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-schema.js +2 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-schema.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-schema.d.ts +4 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-schema.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-schema.js +74 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-schema.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-store.d.ts +31 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-store.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-store.js +295 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-store.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-schema.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-schema.js +13 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-schema.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-store.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-store.js +4 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-store.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/stripe-config.d.ts +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/stripe-config.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/stripe-config.js +12 -1
- package/node_modules/@noodle-borg/service/dist/billing/stripe-config.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/stripe-integration-loader.d.ts +7 -0
- package/node_modules/@noodle-borg/service/dist/billing/stripe-integration-loader.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/stripe-integration-loader.js +14 -0
- package/node_modules/@noodle-borg/service/dist/billing/stripe-integration-loader.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/stripe-integration.d.ts +7 -0
- package/node_modules/@noodle-borg/service/dist/billing/stripe-integration.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/stripe-integration.js +38 -0
- package/node_modules/@noodle-borg/service/dist/billing/stripe-integration.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider-validation.d.ts +49 -0
- package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider-validation.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider-validation.js +241 -0
- package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider-validation.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider.d.ts +28 -0
- package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider.js +133 -0
- package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-service.d.ts +23 -0
- package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-service.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-service.js +171 -0
- package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-service.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-store.d.ts +51 -0
- package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-store.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-store.js +2 -0
- package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-store.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/serve.js +14 -1
- package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.d.ts +1 -0
- package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.js +3 -0
- package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.js.map +1 -1
- 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;
|
|
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":"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;
|
|
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
|
package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-schema.d.ts.map
ADDED
|
@@ -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,
|
|
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;
|
|
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":"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"}
|
|
@@ -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,
|
|
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
|
-
|
|
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
|
}
|