@noodleseed/one 0.53.0 → 0.54.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/active-commercial-entitlement.d.ts +25 -0
- package/node_modules/@noodle-borg/service/dist/billing/active-commercial-entitlement.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/active-commercial-entitlement.js +94 -0
- package/node_modules/@noodle-borg/service/dist/billing/active-commercial-entitlement.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/integration.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/integration.js +0 -3
- package/node_modules/@noodle-borg/service/dist/billing/integration.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/paid-plan-catalog.d.ts +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/paid-plan-catalog.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/paid-plan-catalog.js +7 -0
- package/node_modules/@noodle-borg/service/dist/billing/paid-plan-catalog.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-authoritative-authority.d.ts +4 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-authoritative-authority.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-authoritative-authority.js +21 -7
- package/node_modules/@noodle-borg/service/dist/billing/postgres-authoritative-authority.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-counters.js +4 -5
- package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-counters.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-projection.d.ts +0 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-projection.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-projection.js +92 -27
- package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-projection.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission.d.ts +0 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission.js +72 -27
- package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-production-app-admission.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-production-app-admission.js +56 -26
- package/node_modules/@noodle-borg/service/dist/billing/postgres-production-app-admission.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-authority.d.ts +5 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-authority.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-authority.js +97 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-authority.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-persistence.d.ts +50 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-persistence.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-persistence.js +221 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-persistence.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-support.d.ts +8 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-support.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-support.js +42 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-support.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation.d.ts +15 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation.js +123 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-schema.js +100 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-schema.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/subscription-model.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/subscription-model.js +9 -1
- package/node_modules/@noodle-borg/service/dist/billing/subscription-model.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/subscription-reconciliation.d.ts +45 -0
- package/node_modules/@noodle-borg/service/dist/billing/subscription-reconciliation.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/subscription-reconciliation.js +165 -0
- package/node_modules/@noodle-borg/service/dist/billing/subscription-reconciliation.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing-public.d.ts +2 -0
- package/node_modules/@noodle-borg/service/dist/billing-public.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing-public.js +2 -0
- package/node_modules/@noodle-borg/service/dist/billing-public.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { BillingSubscriptionReconciliationConflictError } from './subscription-reconciliation.js';
|
|
2
|
+
export function translateTransactionError(error) {
|
|
3
|
+
if (error instanceof BillingSubscriptionReconciliationConflictError)
|
|
4
|
+
return error;
|
|
5
|
+
const code = postgresErrorCode(error);
|
|
6
|
+
if (code === '40001' || code === '40P01' || code === '55P03' || code === '57014') {
|
|
7
|
+
return conflict('serialization_conflict', 'billing subscription state changed concurrently; retry the exact request');
|
|
8
|
+
}
|
|
9
|
+
if (code === '23505' || code === '23503') {
|
|
10
|
+
return conflict('base_subscription_conflict', 'billing subscription history conflicts with the current account state');
|
|
11
|
+
}
|
|
12
|
+
return error;
|
|
13
|
+
}
|
|
14
|
+
function postgresErrorCode(error) {
|
|
15
|
+
return typeof error === 'object' && error !== null && 'code' in error
|
|
16
|
+
? String(error.code)
|
|
17
|
+
: undefined;
|
|
18
|
+
}
|
|
19
|
+
export function conflict(code, message) {
|
|
20
|
+
return new BillingSubscriptionReconciliationConflictError(code, message);
|
|
21
|
+
}
|
|
22
|
+
export function keyGeneration(value) {
|
|
23
|
+
if (!/^[0-9a-f]{64}$/.test(value)) {
|
|
24
|
+
throw new Error('authoritative billing key generation must be lowercase SHA-256');
|
|
25
|
+
}
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
export function timeout(name, value) {
|
|
29
|
+
if (!Number.isSafeInteger(value) || value < 1 || value > 60_000) {
|
|
30
|
+
throw new Error(`${name} must be 1..60000ms`);
|
|
31
|
+
}
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
export async function rollbackQuietly(client) {
|
|
35
|
+
try {
|
|
36
|
+
await client.query('ROLLBACK');
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
// Preserve the original transaction failure.
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=postgres-subscription-reconciliation-support.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-subscription-reconciliation-support.js","sourceRoot":"","sources":["../../src/billing/postgres-subscription-reconciliation-support.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8CAA8C,EAAE,MAAM,kCAAkC,CAAC;AAElG,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,IAAI,KAAK,YAAY,8CAA8C;QAAE,OAAO,KAAK,CAAC;IAClF,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACjF,OAAO,QAAQ,CACb,wBAAwB,EACxB,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACzC,OAAO,QAAQ,CACb,4BAA4B,EAC5B,uEAAuE,CACxE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK;QACnE,CAAC,CAAC,MAAM,CAAE,KAAoC,CAAC,IAAI,CAAC;QACpD,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,IAAqF,EACrF,OAAe;IAEf,OAAO,IAAI,8CAA8C,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,KAAa;IACjD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,MAAM,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,qBAAqB,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAkB;IACtD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,6CAA6C;IAC/C,CAAC;AACH,CAAC"}
|
package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Pool } from 'pg';
|
|
2
|
+
import { type BillingSubscriptionReconciliationRequest, type BillingSubscriptionReconciliationResult, type BillingSubscriptionReconciliationStore } from './subscription-reconciliation.js';
|
|
3
|
+
export interface PostgresBillingSubscriptionReconciliationStoreOptions {
|
|
4
|
+
readonly authoritativeKeyGeneration: string;
|
|
5
|
+
readonly lockTimeoutMs?: number;
|
|
6
|
+
readonly statementTimeoutMs?: number;
|
|
7
|
+
readonly id?: () => string;
|
|
8
|
+
}
|
|
9
|
+
/** Atomic provider-neutral paid history and entitlement-pointer reconciliation. */
|
|
10
|
+
export declare class PostgresBillingSubscriptionReconciliationStore implements BillingSubscriptionReconciliationStore {
|
|
11
|
+
#private;
|
|
12
|
+
constructor(pool: Pool, options: PostgresBillingSubscriptionReconciliationStoreOptions);
|
|
13
|
+
reconcilePaidSubscription(rawRequest: BillingSubscriptionReconciliationRequest): Promise<BillingSubscriptionReconciliationResult>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=postgres-subscription-reconciliation.d.ts.map
|
package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-subscription-reconciliation.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-subscription-reconciliation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,IAAI,CAAC;AA6B3C,OAAO,EACL,KAAK,wCAAwC,EAC7C,KAAK,uCAAuC,EAC5C,KAAK,sCAAsC,EAM5C,MAAM,kCAAkC,CAAC;AAK1C,MAAM,WAAW,qDAAqD;IACpE,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;IAC5C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,MAAM,CAAC;CAC5B;AAED,mFAAmF;AACnF,qBAAa,8CACX,YAAW,sCAAsC;;gBAQrC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,qDAAqD;IAchF,yBAAyB,CAC7B,UAAU,EAAE,wCAAwC,GACnD,OAAO,CAAC,uCAAuC,CAAC;CAiHpD"}
|
package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation.js
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
+
import { insertAuditEvent } from '@noodle-borg/module-audit';
|
|
3
|
+
import { readBillingMeterTransactionTime } from './postgres-meter-clock.js';
|
|
4
|
+
import { BILLING_METER_EPOCH_LIFECYCLE_LOCK_KEY } from './postgres-meter-epochs.js';
|
|
5
|
+
import { requireActiveBillingAccount, requireEnforcedBillingAccount, requirePaidAuthority, } from './postgres-subscription-reconciliation-authority.js';
|
|
6
|
+
import { compareAndSwapPointers, findOperation, insertOperation, insertPaidSnapshot, insertRevision, readActiveSnapshotForUpdate, readCurrentSubscriptionForUpdate, replayOperation, requireNoLaterSnapshot, validateCurrentSubscription, validateSubscriptionHistory, } from './postgres-subscription-reconciliation-persistence.js';
|
|
7
|
+
import { conflict, keyGeneration, rollbackQuietly, timeout, translateTransactionError, } from './postgres-subscription-reconciliation-support.js';
|
|
8
|
+
import { createPaidEntitlementSnapshot } from './subscription-model.js';
|
|
9
|
+
import { billingSubscriptionReconciliationContractError, billingSubscriptionReconciliationRequestFingerprint, billingSubscriptionReconciliationSuccessAudit, normalizeBillingSubscriptionReconciliationRequest, requireCurrentlyEffectivePaidSubscription, } from './subscription-reconciliation.js';
|
|
10
|
+
const DEFAULT_LOCK_TIMEOUT_MS = 5_000;
|
|
11
|
+
const DEFAULT_STATEMENT_TIMEOUT_MS = 10_000;
|
|
12
|
+
/** Atomic provider-neutral paid history and entitlement-pointer reconciliation. */
|
|
13
|
+
export class PostgresBillingSubscriptionReconciliationStore {
|
|
14
|
+
#pool;
|
|
15
|
+
#keyGeneration;
|
|
16
|
+
#lockTimeoutMs;
|
|
17
|
+
#statementTimeoutMs;
|
|
18
|
+
#id;
|
|
19
|
+
constructor(pool, options) {
|
|
20
|
+
this.#pool = pool;
|
|
21
|
+
this.#keyGeneration = keyGeneration(options.authoritativeKeyGeneration);
|
|
22
|
+
this.#lockTimeoutMs = timeout('billing subscription reconciliation lock timeout', options.lockTimeoutMs ?? DEFAULT_LOCK_TIMEOUT_MS);
|
|
23
|
+
this.#statementTimeoutMs = timeout('billing subscription reconciliation statement timeout', options.statementTimeoutMs ?? DEFAULT_STATEMENT_TIMEOUT_MS);
|
|
24
|
+
this.#id = options.id ?? randomUUID;
|
|
25
|
+
}
|
|
26
|
+
async reconcilePaidSubscription(rawRequest) {
|
|
27
|
+
const request = normalizeRequest(rawRequest);
|
|
28
|
+
const fingerprint = billingSubscriptionReconciliationRequestFingerprint(request);
|
|
29
|
+
const idempotencyHash = createHash('sha256').update(request.idempotencyKey).digest('hex');
|
|
30
|
+
const client = await this.#pool.connect();
|
|
31
|
+
let transactionOpen = false;
|
|
32
|
+
try {
|
|
33
|
+
await client.query('BEGIN ISOLATION LEVEL READ COMMITTED');
|
|
34
|
+
transactionOpen = true;
|
|
35
|
+
await client.query(`SELECT set_config('lock_timeout', $1, true),
|
|
36
|
+
set_config('statement_timeout', $2, true)`, [`${this.#lockTimeoutMs}ms`, `${this.#statementTimeoutMs}ms`]);
|
|
37
|
+
await client.query('SELECT pg_advisory_xact_lock_shared(hashtextextended($1, 0))', [
|
|
38
|
+
BILLING_METER_EPOCH_LIFECYCLE_LOCK_KEY,
|
|
39
|
+
]);
|
|
40
|
+
await advisoryLock(client, `billing-subscription-reconciliation-key:${idempotencyHash}`);
|
|
41
|
+
const operation = await findOperation(client, idempotencyHash);
|
|
42
|
+
if (operation !== undefined) {
|
|
43
|
+
const replay = replayOperation(operation, fingerprint);
|
|
44
|
+
await client.query('COMMIT');
|
|
45
|
+
transactionOpen = false;
|
|
46
|
+
return replay;
|
|
47
|
+
}
|
|
48
|
+
await advisoryLock(client, `billing-subscription-reconciliation-account:${request.billingAccountId}`);
|
|
49
|
+
await advisoryLock(client, `billing-subscription-reconciliation-subscription:${request.revision.subscriptionId}`);
|
|
50
|
+
await requirePaidAuthority(client, this.#keyGeneration);
|
|
51
|
+
await requireActiveBillingAccount(client, request.billingAccountId);
|
|
52
|
+
await requireEnforcedBillingAccount(client, request.billingAccountId);
|
|
53
|
+
const previousSnapshot = await readActiveSnapshotForUpdate(client, request.billingAccountId);
|
|
54
|
+
if (previousSnapshot === undefined ||
|
|
55
|
+
previousSnapshot.version !== request.expectedActiveSnapshotVersion) {
|
|
56
|
+
throw conflict('active_snapshot_conflict', 'the active entitlement snapshot changed; retry from the current billing account state');
|
|
57
|
+
}
|
|
58
|
+
await requireNoLaterSnapshot(client, request.billingAccountId, previousSnapshot.version);
|
|
59
|
+
const currentSubscription = await readCurrentSubscriptionForUpdate(client, request.billingAccountId);
|
|
60
|
+
validateCurrentSubscription(currentSubscription, request.expectedCurrentBaseSubscription, previousSnapshot);
|
|
61
|
+
await validateSubscriptionHistory(client, request, currentSubscription);
|
|
62
|
+
const reconciledAt = await readBillingMeterTransactionTime(client);
|
|
63
|
+
requireCurrentlyEffectivePaidSubscription(request.revision, reconciledAt);
|
|
64
|
+
const paidSnapshot = createPaidEntitlementSnapshot({
|
|
65
|
+
id: request.snapshotId,
|
|
66
|
+
version: previousSnapshot.version + 1,
|
|
67
|
+
sourceSubscription: request.revision,
|
|
68
|
+
previousSnapshot,
|
|
69
|
+
});
|
|
70
|
+
if (currentSubscription === undefined) {
|
|
71
|
+
await client.query(`INSERT INTO billing_base_subscriptions (id, billing_account_id, created_at)
|
|
72
|
+
VALUES ($1, $2, $3)`, [request.revision.subscriptionId, request.billingAccountId, request.revision.createdAt]);
|
|
73
|
+
}
|
|
74
|
+
await insertRevision(client, request.revision);
|
|
75
|
+
await insertPaidSnapshot(client, paidSnapshot);
|
|
76
|
+
await compareAndSwapPointers(client, request, previousSnapshot.id, currentSubscription);
|
|
77
|
+
const result = {
|
|
78
|
+
schemaVersion: 1,
|
|
79
|
+
billingAccountId: request.billingAccountId,
|
|
80
|
+
subscriptionId: request.revision.subscriptionId,
|
|
81
|
+
subscriptionRevisionVersion: request.revision.version,
|
|
82
|
+
snapshotId: paidSnapshot.id,
|
|
83
|
+
snapshotVersion: paidSnapshot.version,
|
|
84
|
+
planVersionId: paidSnapshot.planVersionId,
|
|
85
|
+
reconciledAt,
|
|
86
|
+
replayed: false,
|
|
87
|
+
};
|
|
88
|
+
await insertOperation(client, {
|
|
89
|
+
operationId: `bsro_${this.#id()}`,
|
|
90
|
+
idempotencyHash,
|
|
91
|
+
fingerprint,
|
|
92
|
+
result,
|
|
93
|
+
createdAt: reconciledAt,
|
|
94
|
+
});
|
|
95
|
+
await insertAuditEvent(client, billingSubscriptionReconciliationSuccessAudit(result), {
|
|
96
|
+
now: () => new Date(reconciledAt),
|
|
97
|
+
});
|
|
98
|
+
await client.query('COMMIT');
|
|
99
|
+
transactionOpen = false;
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
if (transactionOpen)
|
|
104
|
+
await rollbackQuietly(client);
|
|
105
|
+
throw translateTransactionError(error);
|
|
106
|
+
}
|
|
107
|
+
finally {
|
|
108
|
+
client.release();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function normalizeRequest(rawRequest) {
|
|
113
|
+
try {
|
|
114
|
+
return normalizeBillingSubscriptionReconciliationRequest(rawRequest);
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
throw billingSubscriptionReconciliationContractError();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
async function advisoryLock(client, identity) {
|
|
121
|
+
await client.query('SELECT pg_advisory_xact_lock(hashtextextended($1, 0))', [identity]);
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=postgres-subscription-reconciliation.js.map
|
package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-subscription-reconciliation.js","sourceRoot":"","sources":["../../src/billing/postgres-subscription-reconciliation.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,12 @@ async function ensureBillingSubscriptionSchemaTx(client) {
|
|
|
42
42
|
currency text NOT NULL CHECK (currency = 'usd'),
|
|
43
43
|
base_amount_minor bigint NOT NULL
|
|
44
44
|
CHECK (base_amount_minor >= 0 AND base_amount_minor <= 9007199254740991),
|
|
45
|
+
CONSTRAINT billing_base_subscription_revisions_price_check CHECK (
|
|
46
|
+
(plan_version_id = 'pro@1' AND billing_interval = 'month' AND base_amount_minor = 3000) OR
|
|
47
|
+
(plan_version_id = 'pro@1' AND billing_interval = 'year' AND base_amount_minor = 30000) OR
|
|
48
|
+
(plan_version_id = 'scale@1' AND billing_interval = 'month' AND base_amount_minor = 30000) OR
|
|
49
|
+
(plan_version_id = 'scale@1' AND billing_interval = 'year' AND base_amount_minor = 300000)
|
|
50
|
+
),
|
|
45
51
|
current_period_start timestamptz NOT NULL,
|
|
46
52
|
current_period_end timestamptz NOT NULL CHECK (current_period_end > current_period_start),
|
|
47
53
|
effective_from timestamptz NOT NULL,
|
|
@@ -76,6 +82,25 @@ async function ensureBillingSubscriptionSchemaTx(client) {
|
|
|
76
82
|
),
|
|
77
83
|
CHECK (state <> 'ended' OR (NOT renews AND verified_at >= effective_until))
|
|
78
84
|
)
|
|
85
|
+
`);
|
|
86
|
+
await client.query(`
|
|
87
|
+
DO $billing_subscription_price_constraint$
|
|
88
|
+
BEGIN
|
|
89
|
+
IF NOT EXISTS (
|
|
90
|
+
SELECT 1 FROM pg_constraint
|
|
91
|
+
WHERE conname = 'billing_base_subscription_revisions_price_check'
|
|
92
|
+
AND conrelid = 'billing_base_subscription_revisions'::regclass
|
|
93
|
+
) THEN
|
|
94
|
+
ALTER TABLE billing_base_subscription_revisions
|
|
95
|
+
ADD CONSTRAINT billing_base_subscription_revisions_price_check CHECK (
|
|
96
|
+
(plan_version_id = 'pro@1' AND billing_interval = 'month' AND base_amount_minor = 3000) OR
|
|
97
|
+
(plan_version_id = 'pro@1' AND billing_interval = 'year' AND base_amount_minor = 30000) OR
|
|
98
|
+
(plan_version_id = 'scale@1' AND billing_interval = 'month' AND base_amount_minor = 30000) OR
|
|
99
|
+
(plan_version_id = 'scale@1' AND billing_interval = 'year' AND base_amount_minor = 300000)
|
|
100
|
+
);
|
|
101
|
+
END IF;
|
|
102
|
+
END
|
|
103
|
+
$billing_subscription_price_constraint$
|
|
79
104
|
`);
|
|
80
105
|
await client.query(`
|
|
81
106
|
CREATE TABLE IF NOT EXISTS billing_account_current_base_subscriptions (
|
|
@@ -87,6 +112,28 @@ async function ensureBillingSubscriptionSchemaTx(client) {
|
|
|
87
112
|
(billing_account_id, subscription_id, version)
|
|
88
113
|
ON DELETE RESTRICT
|
|
89
114
|
)
|
|
115
|
+
`);
|
|
116
|
+
await client.query(`
|
|
117
|
+
CREATE TABLE IF NOT EXISTS billing_subscription_reconciliation_operations (
|
|
118
|
+
operation_id text PRIMARY KEY,
|
|
119
|
+
schema_version integer NOT NULL CHECK (schema_version = 1),
|
|
120
|
+
action text NOT NULL CHECK (action = 'paid_reconcile'),
|
|
121
|
+
billing_account_id text NOT NULL REFERENCES billing_accounts(id) ON DELETE RESTRICT,
|
|
122
|
+
idempotency_key_hash text NOT NULL UNIQUE
|
|
123
|
+
CHECK (idempotency_key_hash ~ '^[0-9a-f]{64}$'),
|
|
124
|
+
request_fingerprint text NOT NULL
|
|
125
|
+
CHECK (request_fingerprint ~ '^[0-9a-f]{64}$'),
|
|
126
|
+
subscription_id text NOT NULL,
|
|
127
|
+
revision_version integer NOT NULL CHECK (revision_version > 0),
|
|
128
|
+
snapshot_id text NOT NULL,
|
|
129
|
+
result jsonb NOT NULL,
|
|
130
|
+
created_at timestamptz NOT NULL,
|
|
131
|
+
UNIQUE (billing_account_id, subscription_id, revision_version),
|
|
132
|
+
UNIQUE (billing_account_id, snapshot_id),
|
|
133
|
+
FOREIGN KEY (billing_account_id, snapshot_id)
|
|
134
|
+
REFERENCES billing_entitlement_snapshots(billing_account_id, id)
|
|
135
|
+
ON DELETE RESTRICT
|
|
136
|
+
)
|
|
90
137
|
`);
|
|
91
138
|
await client.query(`
|
|
92
139
|
ALTER TABLE billing_entitlement_snapshots
|
|
@@ -94,6 +141,45 @@ async function ensureBillingSubscriptionSchemaTx(client) {
|
|
|
94
141
|
ADD COLUMN IF NOT EXISTS effective_until timestamptz,
|
|
95
142
|
ADD COLUMN IF NOT EXISTS source_subscription_id text,
|
|
96
143
|
ADD COLUMN IF NOT EXISTS source_subscription_version integer
|
|
144
|
+
`);
|
|
145
|
+
await client.query(`
|
|
146
|
+
DO $billing_reconciliation_snapshot_binding$
|
|
147
|
+
BEGIN
|
|
148
|
+
IF NOT EXISTS (
|
|
149
|
+
SELECT 1 FROM pg_constraint
|
|
150
|
+
WHERE conname = 'billing_entitlement_snapshots_reconciliation_source_key'
|
|
151
|
+
AND conrelid = 'billing_entitlement_snapshots'::regclass
|
|
152
|
+
) THEN
|
|
153
|
+
ALTER TABLE billing_entitlement_snapshots
|
|
154
|
+
ADD CONSTRAINT billing_entitlement_snapshots_reconciliation_source_key
|
|
155
|
+
UNIQUE (
|
|
156
|
+
billing_account_id,
|
|
157
|
+
id,
|
|
158
|
+
source_subscription_id,
|
|
159
|
+
source_subscription_version
|
|
160
|
+
);
|
|
161
|
+
END IF;
|
|
162
|
+
IF NOT EXISTS (
|
|
163
|
+
SELECT 1 FROM pg_constraint
|
|
164
|
+
WHERE conname = 'billing_reconciliation_operation_snapshot_source_fk'
|
|
165
|
+
AND conrelid = 'billing_subscription_reconciliation_operations'::regclass
|
|
166
|
+
) THEN
|
|
167
|
+
ALTER TABLE billing_subscription_reconciliation_operations
|
|
168
|
+
ADD CONSTRAINT billing_reconciliation_operation_snapshot_source_fk
|
|
169
|
+
FOREIGN KEY (
|
|
170
|
+
billing_account_id,
|
|
171
|
+
snapshot_id,
|
|
172
|
+
subscription_id,
|
|
173
|
+
revision_version
|
|
174
|
+
) REFERENCES billing_entitlement_snapshots (
|
|
175
|
+
billing_account_id,
|
|
176
|
+
id,
|
|
177
|
+
source_subscription_id,
|
|
178
|
+
source_subscription_version
|
|
179
|
+
) ON DELETE RESTRICT;
|
|
180
|
+
END IF;
|
|
181
|
+
END
|
|
182
|
+
$billing_reconciliation_snapshot_binding$
|
|
97
183
|
`);
|
|
98
184
|
await client.query(`
|
|
99
185
|
DO $billing_snapshot_anchor_consistency$
|
|
@@ -312,6 +398,20 @@ async function ensureBillingSubscriptionSchemaTx(client) {
|
|
|
312
398
|
NULL;
|
|
313
399
|
END;
|
|
314
400
|
END IF;
|
|
401
|
+
IF NOT EXISTS (
|
|
402
|
+
SELECT 1 FROM pg_trigger
|
|
403
|
+
WHERE tgname = 'billing_subscription_reconciliation_operations_append_only'
|
|
404
|
+
AND tgrelid = 'billing_subscription_reconciliation_operations'::regclass
|
|
405
|
+
AND NOT tgisinternal
|
|
406
|
+
) THEN
|
|
407
|
+
BEGIN
|
|
408
|
+
CREATE TRIGGER billing_subscription_reconciliation_operations_append_only
|
|
409
|
+
BEFORE UPDATE OR DELETE ON billing_subscription_reconciliation_operations
|
|
410
|
+
FOR EACH ROW EXECUTE FUNCTION billing_reject_subscription_history_mutation();
|
|
411
|
+
EXCEPTION WHEN duplicate_object THEN
|
|
412
|
+
NULL;
|
|
413
|
+
END;
|
|
414
|
+
END IF;
|
|
315
415
|
END
|
|
316
416
|
$billing_subscription_history_triggers$
|
|
317
417
|
`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-subscription-schema.js","sourceRoot":"","sources":["../../src/billing/postgres-subscription-schema.ts"],"names":[],"mappings":"AAEA,kGAAkG;AAClG,MAAM,CAAC,KAAK,UAAU,+BAA+B,CAAC,IAAU;IAC9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC;YACH,4FAA4F;YAC5F,yEAAyE;YACzE,MAAM,MAAM,CAAC,KAAK,CAChB,iFAAiF,CAClF,CAAC;YACF,MAAM,iCAAiC,CAAC,MAAM,CAAC,CAAC;YAChD,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC/B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iCAAiC,CAAC,MAAkB;IACjE,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;GAOlB,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,KAAK,CAAC
|
|
1
|
+
{"version":3,"file":"postgres-subscription-schema.js","sourceRoot":"","sources":["../../src/billing/postgres-subscription-schema.ts"],"names":[],"mappings":"AAEA,kGAAkG;AAClG,MAAM,CAAC,KAAK,UAAU,+BAA+B,CAAC,IAAU;IAC9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC;YACH,4FAA4F;YAC5F,yEAAyE;YACzE,MAAM,MAAM,CAAC,KAAK,CAChB,iFAAiF,CAClF,CAAC;YACF,MAAM,iCAAiC,CAAC,MAAM,CAAC,CAAC;YAChD,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC/B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iCAAiC,CAAC,MAAkB;IACjE,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;GAOlB,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDlB,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;GAkBlB,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;GAUlB,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;GAqBlB,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;GAMlB,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsClB,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;GAalB,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgClB,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;GAmBlB,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDlB,CAAC,CAAC;IAEH,iGAAiG;IACjG,sFAAsF;IACtF,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyClB,CAAC,CAAC;IAEH,mGAAmG;IACnG,iGAAiG;IACjG,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;GAKlB,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;;;GASlB,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+ClB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription-model.d.ts","sourceRoot":"","sources":["../../src/billing/subscription-model.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,yBAAyB,EAC9B,KAAK,6BAA6B,EAEnC,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"subscription-model.d.ts","sourceRoot":"","sources":["../../src/billing/subscription-model.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,yBAAyB,EAC9B,KAAK,6BAA6B,EAEnC,MAAM,YAAY,CAAC;AAMpB,MAAM,MAAM,4BAA4B,GAAG,QAAQ,GAAG,eAAe,GAAG,OAAO,CAAC;AAChF,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,CAAC;AAI/C,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,qCAAqC;IACpD,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,4BAA4B,CAAC;IAC7C,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,oCAAoC,GAAG,IAAI,CACrD,qCAAqC,EACrC,eAAe,GAAG,iBAAiB,CACpC,CAAC;AAOF,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,oCAAoC,GAC1C,qCAAqC,CAMvC;AAED,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,OAAO,GACb,qCAAqC,CAyBvC;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,kBAAkB,EAAE,qCAAqC,CAAC;IACnE,QAAQ,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;CACtD;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,kCAAkC,GACxC,6BAA6B,CAsC/B;AAmDD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,6BAA6B,CAmC1F;AA6LD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGnE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { parseBillingCommercialV2Entitlements } from './commercial-entitlements.js';
|
|
2
2
|
import { billingContentChecksum, validateBillingAccountId, } from './model.js';
|
|
3
|
-
import { getBillingPublicPlanVersion } from './paid-plan-catalog.js';
|
|
3
|
+
import { getBillingPaidPlanBaseAmountMinor, getBillingPublicPlanVersion, } from './paid-plan-catalog.js';
|
|
4
4
|
const BILLING_PAYMENT_GRACE_DURATION_MS = 7 * 24 * 60 * 60 * 1_000;
|
|
5
5
|
export function createBillingBaseSubscriptionRevision(input) {
|
|
6
6
|
const content = normalizeSubscriptionRevisionContent(input);
|
|
@@ -182,6 +182,10 @@ function normalizeSubscriptionRevisionContent(input) {
|
|
|
182
182
|
if (!Number.isSafeInteger(input.baseAmountMinor) || input.baseAmountMinor < 0) {
|
|
183
183
|
throw new Error('base amount minor must be a non-negative safe integer');
|
|
184
184
|
}
|
|
185
|
+
if (input.baseAmountMinor !==
|
|
186
|
+
getBillingPaidPlanBaseAmountMinor(input.planVersionId, input.billingInterval)) {
|
|
187
|
+
throw new Error('subscription base amount does not match the public plan');
|
|
188
|
+
}
|
|
185
189
|
if (state === 'ended' && input.renews)
|
|
186
190
|
throw new Error('ended subscriptions cannot renew');
|
|
187
191
|
const currentPeriodStart = canonicalInstant('subscription period start', input.currentPeriodStart);
|
|
@@ -205,6 +209,10 @@ function normalizeSubscriptionRevisionContent(input) {
|
|
|
205
209
|
if (state === 'active' && effectiveUntil !== currentPeriodEnd) {
|
|
206
210
|
throw new Error('active subscription access must end with its current paid period');
|
|
207
211
|
}
|
|
212
|
+
if (state === 'active' &&
|
|
213
|
+
(effectiveFrom < currentPeriodStart || effectiveFrom >= currentPeriodEnd)) {
|
|
214
|
+
throw new Error('active subscription access must fall within its current paid period');
|
|
215
|
+
}
|
|
208
216
|
if (state === 'payment_grace') {
|
|
209
217
|
const expectedGraceEnd = new Date(new Date(currentPeriodEnd).getTime() + BILLING_PAYMENT_GRACE_DURATION_MS).toISOString();
|
|
210
218
|
if (effectiveUntil !== expectedGraceEnd) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription-model.js","sourceRoot":"","sources":["../../src/billing/subscription-model.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"subscription-model.js","sourceRoot":"","sources":["../../src/billing/subscription-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { AuditEventInput } from '@noodle-borg/module';
|
|
2
|
+
import { type BillingBaseSubscriptionRevisionInput, type BillingBaseSubscriptionRevisionRecord } from './subscription-model.js';
|
|
3
|
+
export declare const BILLING_PAID_ADMISSION_CONTRACT_VERSION: 2;
|
|
4
|
+
export interface BillingCurrentBaseSubscriptionExpectation {
|
|
5
|
+
readonly subscriptionId: string;
|
|
6
|
+
readonly revisionVersion: number;
|
|
7
|
+
}
|
|
8
|
+
export interface BillingSubscriptionReconciliationRequest {
|
|
9
|
+
readonly schemaVersion: 1;
|
|
10
|
+
readonly billingAccountId: string;
|
|
11
|
+
readonly idempotencyKey: string;
|
|
12
|
+
readonly expectedActiveSnapshotVersion: number;
|
|
13
|
+
readonly expectedCurrentBaseSubscription: BillingCurrentBaseSubscriptionExpectation | null;
|
|
14
|
+
readonly snapshotId: string;
|
|
15
|
+
readonly revision: BillingBaseSubscriptionRevisionInput;
|
|
16
|
+
}
|
|
17
|
+
export interface NormalizedBillingSubscriptionReconciliationRequest extends Omit<BillingSubscriptionReconciliationRequest, 'revision'> {
|
|
18
|
+
readonly revision: BillingBaseSubscriptionRevisionRecord;
|
|
19
|
+
}
|
|
20
|
+
export interface BillingSubscriptionReconciliationResult {
|
|
21
|
+
readonly schemaVersion: 1;
|
|
22
|
+
readonly billingAccountId: string;
|
|
23
|
+
readonly subscriptionId: string;
|
|
24
|
+
readonly subscriptionRevisionVersion: number;
|
|
25
|
+
readonly snapshotId: string;
|
|
26
|
+
readonly snapshotVersion: number;
|
|
27
|
+
readonly planVersionId: string;
|
|
28
|
+
readonly reconciledAt: string;
|
|
29
|
+
readonly replayed: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface BillingSubscriptionReconciliationStore {
|
|
32
|
+
reconcilePaidSubscription(request: BillingSubscriptionReconciliationRequest): Promise<BillingSubscriptionReconciliationResult>;
|
|
33
|
+
}
|
|
34
|
+
export type BillingSubscriptionReconciliationConflictCode = 'idempotency_key_conflict' | 'paid_admission_contract_unavailable' | 'billing_account_conflict' | 'billing_account_not_enforced' | 'billing_account_enforcement_unavailable' | 'paid_subscription_contract_invalid' | 'idempotency_evidence_invalid' | 'active_snapshot_conflict' | 'base_subscription_conflict' | 'serialization_conflict';
|
|
35
|
+
export declare class BillingSubscriptionReconciliationConflictError extends Error {
|
|
36
|
+
readonly code: BillingSubscriptionReconciliationConflictCode;
|
|
37
|
+
constructor(code: BillingSubscriptionReconciliationConflictCode, message: string);
|
|
38
|
+
}
|
|
39
|
+
export declare function billingSubscriptionReconciliationContractError(message?: string): BillingSubscriptionReconciliationConflictError;
|
|
40
|
+
export declare function requireCurrentlyEffectivePaidSubscription(revision: BillingBaseSubscriptionRevisionRecord, databaseTime: string): void;
|
|
41
|
+
export declare function normalizeBillingSubscriptionReconciliationRequest(input: BillingSubscriptionReconciliationRequest): NormalizedBillingSubscriptionReconciliationRequest;
|
|
42
|
+
export declare function billingSubscriptionReconciliationRequestFingerprint(request: NormalizedBillingSubscriptionReconciliationRequest): string;
|
|
43
|
+
export declare function parseBillingSubscriptionReconciliationResult(value: unknown): BillingSubscriptionReconciliationResult;
|
|
44
|
+
export declare function billingSubscriptionReconciliationSuccessAudit(result: BillingSubscriptionReconciliationResult): AuditEventInput;
|
|
45
|
+
//# sourceMappingURL=subscription-reconciliation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription-reconciliation.d.ts","sourceRoot":"","sources":["../../src/billing/subscription-reconciliation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D,OAAO,EACL,KAAK,oCAAoC,EACzC,KAAK,qCAAqC,EAG3C,MAAM,yBAAyB,CAAC;AAEjC,eAAO,MAAM,uCAAuC,EAAG,CAAU,CAAC;AAElE,MAAM,WAAW,yCAAyC;IACxD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,wCAAwC;IACvD,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAC;IAC/C,QAAQ,CAAC,+BAA+B,EAAE,yCAAyC,GAAG,IAAI,CAAC;IAC3F,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,oCAAoC,CAAC;CACzD;AAED,MAAM,WAAW,kDACf,SAAQ,IAAI,CAAC,wCAAwC,EAAE,UAAU,CAAC;IAClE,QAAQ,CAAC,QAAQ,EAAE,qCAAqC,CAAC;CAC1D;AAED,MAAM,WAAW,uCAAuC;IACtD,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,sCAAsC;IACrD,yBAAyB,CACvB,OAAO,EAAE,wCAAwC,GAChD,OAAO,CAAC,uCAAuC,CAAC,CAAC;CACrD;AAED,MAAM,MAAM,6CAA6C,GACrD,0BAA0B,GAC1B,qCAAqC,GACrC,0BAA0B,GAC1B,8BAA8B,GAC9B,yCAAyC,GACzC,oCAAoC,GACpC,8BAA8B,GAC9B,0BAA0B,GAC1B,4BAA4B,GAC5B,wBAAwB,CAAC;AAE7B,qBAAa,8CAA+C,SAAQ,KAAK;IACvE,QAAQ,CAAC,IAAI,EAAE,6CAA6C,CAAC;gBAEjD,IAAI,EAAE,6CAA6C,EAAE,OAAO,EAAE,MAAM;CAKjF;AAED,wBAAgB,8CAA8C,CAC5D,OAAO,SAA6E,GACnF,8CAA8C,CAKhD;AAED,wBAAgB,yCAAyC,CACvD,QAAQ,EAAE,qCAAqC,EAC/C,YAAY,EAAE,MAAM,GACnB,IAAI,CAgBN;AAED,wBAAgB,iDAAiD,CAC/D,KAAK,EAAE,wCAAwC,GAC9C,kDAAkD,CAsCpD;AAED,wBAAgB,mDAAmD,CACjE,OAAO,EAAE,kDAAkD,GAC1D,MAAM,CASR;AAED,wBAAgB,4CAA4C,CAC1D,KAAK,EAAE,OAAO,GACb,uCAAuC,CAyBzC;AAED,wBAAgB,6CAA6C,CAC3D,MAAM,EAAE,uCAAuC,GAC9C,eAAe,CAcjB"}
|