@noodleseed/one 0.38.1 → 0.40.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 (152) hide show
  1. package/dist/commands/billing-apply-ops.d.ts +2 -0
  2. package/dist/commands/billing-apply-ops.d.ts.map +1 -0
  3. package/dist/commands/billing-apply-ops.js +224 -0
  4. package/dist/commands/billing-apply-ops.js.map +1 -0
  5. package/dist/commands/billing-migration-files.d.ts +13 -0
  6. package/dist/commands/billing-migration-files.d.ts.map +1 -0
  7. package/dist/commands/billing-migration-files.js +84 -0
  8. package/dist/commands/billing-migration-files.js.map +1 -0
  9. package/dist/commands/billing-ops.d.ts +1 -1
  10. package/dist/commands/billing-ops.d.ts.map +1 -1
  11. package/dist/commands/billing-ops.js +13 -31
  12. package/dist/commands/billing-ops.js.map +1 -1
  13. package/dist/commands/billing-read-ops.d.ts +3 -0
  14. package/dist/commands/billing-read-ops.d.ts.map +1 -0
  15. package/dist/commands/billing-read-ops.js +289 -0
  16. package/dist/commands/billing-read-ops.js.map +1 -0
  17. package/dist/commands/catalog-data-resources.d.ts.map +1 -1
  18. package/dist/commands/catalog-data-resources.js +25 -2
  19. package/dist/commands/catalog-data-resources.js.map +1 -1
  20. package/dist/commands/catalog.d.ts.map +1 -1
  21. package/dist/commands/catalog.js +1 -0
  22. package/dist/commands/catalog.js.map +1 -1
  23. package/dist/index.d.ts +1 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/widget-scaffold-template.d.ts.map +1 -1
  27. package/dist/widget-scaffold-template.js +9 -0
  28. package/dist/widget-scaffold-template.js.map +1 -1
  29. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +3 -3
  30. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
  31. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.d.ts.map +1 -1
  32. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +28 -0
  33. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js.map +1 -1
  34. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  35. package/node_modules/@noodle-borg/authoring/dist/assistant.d.ts +44 -0
  36. package/node_modules/@noodle-borg/authoring/dist/assistant.d.ts.map +1 -1
  37. package/node_modules/@noodle-borg/authoring/dist/assistant.js.map +1 -1
  38. package/node_modules/@noodle-borg/authoring/dist/index.d.ts +1 -1
  39. package/node_modules/@noodle-borg/authoring/dist/index.d.ts.map +1 -1
  40. package/node_modules/@noodle-borg/authoring/dist/index.js.map +1 -1
  41. package/node_modules/@noodle-borg/authoring/dist/server.js +6 -1
  42. package/node_modules/@noodle-borg/authoring/dist/server.js.map +1 -1
  43. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +83 -0
  44. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts.map +1 -1
  45. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +82 -14
  46. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js.map +1 -1
  47. package/node_modules/@noodle-borg/module-audit/dist/index.d.ts +2 -1
  48. package/node_modules/@noodle-borg/module-audit/dist/index.d.ts.map +1 -1
  49. package/node_modules/@noodle-borg/module-audit/dist/index.js +1 -1
  50. package/node_modules/@noodle-borg/module-audit/dist/index.js.map +1 -1
  51. package/node_modules/@noodle-borg/module-audit/dist/postgres-audit.d.ts +12 -3
  52. package/node_modules/@noodle-borg/module-audit/dist/postgres-audit.d.ts.map +1 -1
  53. package/node_modules/@noodle-borg/module-audit/dist/postgres-audit.js +30 -20
  54. package/node_modules/@noodle-borg/module-audit/dist/postgres-audit.js.map +1 -1
  55. package/node_modules/@noodle-borg/service/dist/billing/in-memory.d.ts +4 -1
  56. package/node_modules/@noodle-borg/service/dist/billing/in-memory.d.ts.map +1 -1
  57. package/node_modules/@noodle-borg/service/dist/billing/in-memory.js +18 -0
  58. package/node_modules/@noodle-borg/service/dist/billing/in-memory.js.map +1 -1
  59. package/node_modules/@noodle-borg/service/dist/billing/migration-apply.d.ts +98 -0
  60. package/node_modules/@noodle-borg/service/dist/billing/migration-apply.d.ts.map +1 -0
  61. package/node_modules/@noodle-borg/service/dist/billing/migration-apply.js +194 -0
  62. package/node_modules/@noodle-borg/service/dist/billing/migration-apply.js.map +1 -0
  63. package/node_modules/@noodle-borg/service/dist/billing/migration-contract.d.ts +79 -0
  64. package/node_modules/@noodle-borg/service/dist/billing/migration-contract.d.ts.map +1 -0
  65. package/node_modules/@noodle-borg/service/dist/billing/migration-contract.js +86 -0
  66. package/node_modules/@noodle-borg/service/dist/billing/migration-contract.js.map +1 -0
  67. package/node_modules/@noodle-borg/service/dist/billing/migration.d.ts +4 -75
  68. package/node_modules/@noodle-borg/service/dist/billing/migration.d.ts.map +1 -1
  69. package/node_modules/@noodle-borg/service/dist/billing/migration.js +19 -74
  70. package/node_modules/@noodle-borg/service/dist/billing/migration.js.map +1 -1
  71. package/node_modules/@noodle-borg/service/dist/billing/postgres-migration-support.d.ts +36 -0
  72. package/node_modules/@noodle-borg/service/dist/billing/postgres-migration-support.d.ts.map +1 -0
  73. package/node_modules/@noodle-borg/service/dist/billing/postgres-migration-support.js +122 -0
  74. package/node_modules/@noodle-borg/service/dist/billing/postgres-migration-support.js.map +1 -0
  75. package/node_modules/@noodle-borg/service/dist/billing/postgres-migration.d.ts +9 -0
  76. package/node_modules/@noodle-borg/service/dist/billing/postgres-migration.d.ts.map +1 -0
  77. package/node_modules/@noodle-borg/service/dist/billing/postgres-migration.js +265 -0
  78. package/node_modules/@noodle-borg/service/dist/billing/postgres-migration.js.map +1 -0
  79. package/node_modules/@noodle-borg/service/dist/billing/postgres-read.d.ts +7 -0
  80. package/node_modules/@noodle-borg/service/dist/billing/postgres-read.d.ts.map +1 -0
  81. package/node_modules/@noodle-borg/service/dist/billing/postgres-read.js +55 -0
  82. package/node_modules/@noodle-borg/service/dist/billing/postgres-read.js.map +1 -0
  83. package/node_modules/@noodle-borg/service/dist/billing/postgres-schema.d.ts.map +1 -1
  84. package/node_modules/@noodle-borg/service/dist/billing/postgres-schema.js +71 -0
  85. package/node_modules/@noodle-borg/service/dist/billing/postgres-schema.js.map +1 -1
  86. package/node_modules/@noodle-borg/service/dist/billing/postgres.d.ts +7 -0
  87. package/node_modules/@noodle-borg/service/dist/billing/postgres.d.ts.map +1 -1
  88. package/node_modules/@noodle-borg/service/dist/billing/postgres.js +21 -9
  89. package/node_modules/@noodle-borg/service/dist/billing/postgres.js.map +1 -1
  90. package/node_modules/@noodle-borg/service/dist/billing/read-contract.d.ts +268 -0
  91. package/node_modules/@noodle-borg/service/dist/billing/read-contract.d.ts.map +1 -0
  92. package/node_modules/@noodle-borg/service/dist/billing/read-contract.js +138 -0
  93. package/node_modules/@noodle-borg/service/dist/billing/read-contract.js.map +1 -0
  94. package/node_modules/@noodle-borg/service/dist/billing/store.d.ts +12 -0
  95. package/node_modules/@noodle-borg/service/dist/billing/store.d.ts.map +1 -1
  96. package/node_modules/@noodle-borg/service/dist/index.d.ts +4 -2
  97. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
  98. package/node_modules/@noodle-borg/service/dist/index.js +3 -1
  99. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
  100. package/node_modules/@noodle-borg/service/dist/modules/host.js +3 -0
  101. package/node_modules/@noodle-borg/service/dist/modules/host.js.map +1 -1
  102. package/node_modules/@noodle-borg/service/dist/options.d.ts +13 -4
  103. package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
  104. package/node_modules/@noodle-borg/service/dist/routes/billing-read.d.ts +12 -0
  105. package/node_modules/@noodle-borg/service/dist/routes/billing-read.d.ts.map +1 -0
  106. package/node_modules/@noodle-borg/service/dist/routes/billing-read.js +202 -0
  107. package/node_modules/@noodle-borg/service/dist/routes/billing-read.js.map +1 -0
  108. package/node_modules/@noodle-borg/service/dist/routes/billing.d.ts +10 -1
  109. package/node_modules/@noodle-borg/service/dist/routes/billing.d.ts.map +1 -1
  110. package/node_modules/@noodle-borg/service/dist/routes/billing.js +89 -0
  111. package/node_modules/@noodle-borg/service/dist/routes/billing.js.map +1 -1
  112. package/node_modules/@noodle-borg/service/dist/routes/commercial-dispatch.d.ts +4 -1
  113. package/node_modules/@noodle-borg/service/dist/routes/commercial-dispatch.d.ts.map +1 -1
  114. package/node_modules/@noodle-borg/service/dist/routes/commercial-dispatch.js +54 -2
  115. package/node_modules/@noodle-borg/service/dist/routes/commercial-dispatch.js.map +1 -1
  116. package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts +8 -0
  117. package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts.map +1 -1
  118. package/node_modules/@noodle-borg/service/dist/routes/paths.js +25 -0
  119. package/node_modules/@noodle-borg/service/dist/routes/paths.js.map +1 -1
  120. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  121. package/node_modules/@noodle-borg/service/dist/serve.js +20 -6
  122. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  123. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  124. package/node_modules/@noodle-borg/service/dist/service.js +7 -4
  125. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  126. package/node_modules/@noodle-borg/service/dist/store/audit.d.ts +8 -0
  127. package/node_modules/@noodle-borg/service/dist/store/audit.d.ts.map +1 -1
  128. package/node_modules/@noodle-borg/service/dist/store/audit.js +15 -0
  129. package/node_modules/@noodle-borg/service/dist/store/audit.js.map +1 -1
  130. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.d.ts +4 -2
  131. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.d.ts.map +1 -1
  132. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.js.map +1 -1
  133. package/node_modules/@noodle-borg/service/dist/store/postgres-billing.d.ts +11 -0
  134. package/node_modules/@noodle-borg/service/dist/store/postgres-billing.d.ts.map +1 -0
  135. package/node_modules/@noodle-borg/service/dist/store/postgres-billing.js +17 -0
  136. package/node_modules/@noodle-borg/service/dist/store/postgres-billing.js.map +1 -0
  137. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
  138. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +2 -0
  139. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
  140. package/node_modules/@noodle-borg/service/dist/store/postgres-signup.d.ts +4 -1
  141. package/node_modules/@noodle-borg/service/dist/store/postgres-signup.d.ts.map +1 -1
  142. package/node_modules/@noodle-borg/service/dist/store/postgres-signup.js +10 -0
  143. package/node_modules/@noodle-borg/service/dist/store/postgres-signup.js.map +1 -1
  144. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts +2 -2
  145. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts.map +1 -1
  146. package/node_modules/@noodle-borg/service/dist/store/postgres.js +2 -2
  147. package/node_modules/@noodle-borg/service/dist/store/postgres.js.map +1 -1
  148. package/node_modules/@noodle-borg/wire-contracts/dist/assistant.d.ts +3 -2
  149. package/node_modules/@noodle-borg/wire-contracts/dist/assistant.d.ts.map +1 -1
  150. package/node_modules/@noodle-borg/wire-contracts/dist/assistant.js +3 -2
  151. package/node_modules/@noodle-borg/wire-contracts/dist/assistant.js.map +1 -1
  152. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/billing/migration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/billing/migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { PoolClient } from 'pg';
2
+ import type { OrgMemberRecord, OrgRecord } from '../store.js';
3
+ import type { previewLegacyBillingMigration } from './migration.js';
4
+ import type { LegacyBillingMigrationApplyResult } from './migration-apply.js';
5
+ export declare const LEGACY_BILLING_MIGRATION_KIND = "hosted-default-free-v1";
6
+ export declare function transactionalLegacyMigrationControlPlane(client: PoolClient): {
7
+ listOrgs: () => Promise<readonly OrgRecord[]>;
8
+ listOrgMembers: (org: string) => Promise<readonly OrgMemberRecord[]>;
9
+ getOrgBillingLink: (org: string) => Promise<import("./model.js").OrgBillingLinkRecord | undefined>;
10
+ getDefaultBillingAccount: (identity: {
11
+ readonly identityIssuer: string;
12
+ readonly subject: string;
13
+ }) => Promise<import("./model.js").BillingAccountRecord | undefined>;
14
+ };
15
+ export declare function transactionalLegacyMigrationInventory(client: PoolClient): {
16
+ getAppIdentity: (org: string, app: string) => Promise<{
17
+ archivedAt?: string;
18
+ createdAt: string;
19
+ active: boolean;
20
+ } | undefined>;
21
+ };
22
+ export declare function previewOrganizationSlugs(preview: Awaited<ReturnType<typeof previewLegacyBillingMigration>>): readonly string[];
23
+ export declare function findPreparationByIdempotencyKey(client: PoolClient, key: string): Promise<PreparationRow | undefined>;
24
+ export declare function findPreparationByKind(client: PoolClient): Promise<PreparationRow | undefined>;
25
+ export declare function findPreparationById(client: PoolClient, id: string): Promise<PreparationRow | undefined>;
26
+ export declare function preparationResult(client: PoolClient, row: PreparationRow, replayed: boolean): Promise<LegacyBillingMigrationApplyResult>;
27
+ interface PreparationRow {
28
+ readonly id: string;
29
+ readonly request_fingerprint: string;
30
+ readonly mapping_checksum: string;
31
+ readonly preview_checksum: string;
32
+ readonly plan_evidence_checksum: string;
33
+ readonly prepared_at: Date | string;
34
+ }
35
+ export {};
36
+ //# sourceMappingURL=postgres-migration-support.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-migration-support.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-migration-support.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAGrC,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,sBAAsB,CAAC;AAG9E,eAAO,MAAM,6BAA6B,2BAA2B,CAAC;AAEtE,wBAAgB,wCAAwC,CAAC,MAAM,EAAE,UAAU;oBAEnD,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC;0BAQrB,MAAM,KAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;6BAa/C,MAAM;yCACM;QACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B;EAEJ;AAED,wBAAgB,qCAAqC,CAAC,MAAM,EAAE,UAAU;0BAExC,MAAM,OAAO,MAAM;;;;;EAWlD;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC,GACjE,SAAS,MAAM,EAAE,CAKnB;AAED,wBAAsB,+BAA+B,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,uCAMpF;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,UAAU,uCAM7D;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,uCAMvE;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,iCAAiC,CAAC,CAuD5C;AAgCD,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,IAAI,GAAG,MAAM,CAAC;CACrC"}
@@ -0,0 +1,122 @@
1
+ import { getAppRow } from '../store/postgres-apps.js';
2
+ import { validateOrgRole } from '../store/validate.js';
3
+ import { getDefaultBillingAccountQuery, getOrgBillingLinkQuery } from './postgres.js';
4
+ export const LEGACY_BILLING_MIGRATION_KIND = 'hosted-default-free-v1';
5
+ export function transactionalLegacyMigrationControlPlane(client) {
6
+ return {
7
+ listOrgs: async () => {
8
+ const { rows } = await client.query('SELECT * FROM orgs ORDER BY slug');
9
+ return rows.map((row) => ({
10
+ slug: row.slug,
11
+ ...(row.display_name !== null ? { displayName: row.display_name } : {}),
12
+ createdAt: toIso(row.created_at),
13
+ }));
14
+ },
15
+ listOrgMembers: async (org) => {
16
+ const { rows } = await client.query('SELECT * FROM org_members WHERE org_slug = $1 ORDER BY email', [org]);
17
+ return rows.map((row) => ({
18
+ orgSlug: row.org_slug,
19
+ subject: row.subject,
20
+ email: row.email,
21
+ role: validateOrgRole(row.role),
22
+ createdAt: toIso(row.created_at),
23
+ }));
24
+ },
25
+ getOrgBillingLink: (org) => getOrgBillingLinkQuery(client, org),
26
+ getDefaultBillingAccount: (identity) => getDefaultBillingAccountQuery(client, identity),
27
+ };
28
+ }
29
+ export function transactionalLegacyMigrationInventory(client) {
30
+ return {
31
+ getAppIdentity: async (org, app) => {
32
+ const current = await getAppRow(client, org, app);
33
+ return current === undefined
34
+ ? undefined
35
+ : {
36
+ createdAt: current.createdAt,
37
+ active: current.active,
38
+ ...(current.archivedAt !== undefined ? { archivedAt: current.archivedAt } : {}),
39
+ };
40
+ },
41
+ };
42
+ }
43
+ export function previewOrganizationSlugs(preview) {
44
+ return [
45
+ ...preview.organizations.map((org) => org.org),
46
+ ...preview.linkedOrganizations.map((org) => org.org),
47
+ ];
48
+ }
49
+ export async function findPreparationByIdempotencyKey(client, key) {
50
+ const { rows } = await client.query('SELECT * FROM billing_legacy_migration_preparations WHERE idempotency_key = $1', [key]);
51
+ return rows[0];
52
+ }
53
+ export async function findPreparationByKind(client) {
54
+ const { rows } = await client.query('SELECT * FROM billing_legacy_migration_preparations WHERE migration_kind = $1', [LEGACY_BILLING_MIGRATION_KIND]);
55
+ return rows[0];
56
+ }
57
+ export async function findPreparationById(client, id) {
58
+ const { rows } = await client.query('SELECT * FROM billing_legacy_migration_preparations WHERE id = $1', [id]);
59
+ return rows[0];
60
+ }
61
+ export async function preparationResult(client, row, replayed) {
62
+ const { rows: accountRows } = await client.query(`SELECT * FROM billing_legacy_migration_accounts
63
+ WHERE migration_id = $1 ORDER BY billing_account_id`, [row.id]);
64
+ const { rows: linkRows } = await client.query(`SELECT * FROM billing_legacy_migration_organizations
65
+ WHERE migration_id = $1 ORDER BY org_slug`, [row.id]);
66
+ return {
67
+ schemaVersion: 1,
68
+ migrationId: row.id,
69
+ mode: 'shadow',
70
+ state: 'prepared',
71
+ replayed,
72
+ preparedAt: toIso(row.prepared_at),
73
+ enforcementMode: 'legacy_unchanged',
74
+ meteringMode: 'not_started',
75
+ grantMode: 'pending_activation',
76
+ mappingChecksum: row.mapping_checksum,
77
+ previewChecksum: row.preview_checksum,
78
+ planEvidenceChecksum: row.plan_evidence_checksum,
79
+ counts: {
80
+ organizations: linkRows.length,
81
+ accountsCreated: accountRows.filter((account) => account.account_disposition === 'created')
82
+ .length,
83
+ accountsReused: accountRows.filter((account) => account.account_disposition === 'existing')
84
+ .length,
85
+ linksCreated: linkRows.filter((link) => link.link_disposition === 'created').length,
86
+ linksPreserved: linkRows.filter((link) => link.link_disposition === 'preserved').length,
87
+ productionApps: accountRows.reduce((total, account) => total + account.production_app_count, 0),
88
+ grantCandidateFundingSets: accountRows.filter((account) => account.grant_candidate_at_preparation).length,
89
+ },
90
+ fundingSets: accountRows.map((account) => ({
91
+ billingAccountId: account.billing_account_id,
92
+ accountDisposition: accountDisposition(account.account_disposition),
93
+ snapshotId: account.snapshot_id,
94
+ organizations: account.organization_count,
95
+ productionApps: account.production_app_count,
96
+ grantCandidate: account.grant_candidate_at_preparation,
97
+ })),
98
+ links: linkRows.map((link) => ({
99
+ org: link.org_slug,
100
+ billingAccountId: link.billing_account_id,
101
+ version: link.link_version,
102
+ disposition: linkDisposition(link.link_disposition),
103
+ })),
104
+ };
105
+ }
106
+ function accountDisposition(value) {
107
+ if (value !== 'created' && value !== 'existing')
108
+ throw new Error('invalid account disposition');
109
+ return value;
110
+ }
111
+ function linkDisposition(value) {
112
+ if (value !== 'created' && value !== 'preserved')
113
+ throw new Error('invalid link disposition');
114
+ return value;
115
+ }
116
+ function toIso(value) {
117
+ const date = value instanceof Date ? value : new Date(value);
118
+ if (!Number.isFinite(date.getTime()))
119
+ throw new Error('invalid migration timestamp');
120
+ return date.toISOString();
121
+ }
122
+ //# sourceMappingURL=postgres-migration-support.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-migration-support.js","sourceRoot":"","sources":["../../src/billing/postgres-migration-support.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Pool } from 'pg';
2
+ import type { ControlPlaneIdentity } from '../auth/deploy-gate.js';
3
+ import { type LegacyBillingMigrationApplyRequest, type LegacyBillingMigrationApplyResult } from './migration-apply.js';
4
+ export declare function prepareLegacyBillingMigrationRow(pool: Pool, input: {
5
+ readonly request: LegacyBillingMigrationApplyRequest;
6
+ readonly actor: ControlPlaneIdentity;
7
+ readonly service: string;
8
+ }, now: () => Date): Promise<LegacyBillingMigrationApplyResult>;
9
+ //# sourceMappingURL=postgres-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-migration.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-migration.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,IAAI,CAAC;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAMnE,OAAO,EACL,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,EAOvC,MAAM,sBAAsB,CAAC;AA+C9B,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,IAAI,EACV,KAAK,EAAE;IACL,QAAQ,CAAC,OAAO,EAAE,kCAAkC,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,EACD,GAAG,EAAE,MAAM,IAAI,GACd,OAAO,CAAC,iCAAiC,CAAC,CAgQ5C"}
@@ -0,0 +1,265 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { insertAuditEvent } from '@noodle-borg/module-audit';
3
+ import { commercialPlanPolicyId } from '../commercial-plans.js';
4
+ import { legacyBillingMigrationMappingChecksum, previewLegacyBillingMigration, } from './migration.js';
5
+ import { LegacyBillingMigrationConflictError, legacyBillingMigrationPlanEvidenceChecksum, legacyBillingMigrationRequestFingerprint, legacyBillingMigrationSuccessAudit, normalizeBillingMigrationServiceUrl, parseLegacyBillingMigrationApplyRequest, } from './migration-apply.js';
6
+ import { GOOGLE_CONTROL_PLANE_ISSUER, normalizeBillingEmail, normalizeBillingIdentity, } from './model.js';
7
+ import { ensureDefaultBillingAccountForLegacyMigrationTx, ensureOrgBillingLinkTx, getActiveEntitlementSnapshotQuery, getBillingAccountQuery, getDefaultBillingAccountQuery, getOrgBillingLinkQuery, } from './postgres.js';
8
+ import { findPreparationById, findPreparationByIdempotencyKey, findPreparationByKind, LEGACY_BILLING_MIGRATION_KIND, preparationResult, previewOrganizationSlugs, transactionalLegacyMigrationControlPlane, transactionalLegacyMigrationInventory, } from './postgres-migration-support.js';
9
+ const TABLE_LOCKS = [
10
+ 'orgs',
11
+ 'org_members',
12
+ 'apps',
13
+ 'environments',
14
+ 'deploy_records',
15
+ 'policy_assignments',
16
+ 'billing_plan_versions',
17
+ 'billing_accounts',
18
+ 'billing_account_defaults',
19
+ 'billing_account_members',
20
+ 'billing_entitlement_snapshots',
21
+ 'billing_account_active_snapshots',
22
+ 'org_billing_home_accounts',
23
+ 'org_billing_links',
24
+ 'billing_legacy_migration_preparations',
25
+ 'billing_legacy_migration_accounts',
26
+ 'billing_legacy_migration_organizations',
27
+ 'billing_legacy_migration_apps',
28
+ 'billing_legacy_migration_plan_evidence',
29
+ ].join(', ');
30
+ export async function prepareLegacyBillingMigrationRow(pool, input, now) {
31
+ const request = parseLegacyBillingMigrationApplyRequest(input.request);
32
+ const service = normalizeBillingMigrationServiceUrl(input.service);
33
+ if (request.legacyPlanEvidence.service !== service) {
34
+ throw new LegacyBillingMigrationConflictError('legacy_plan_evidence_drift', 'legacy plan evidence targets a different service');
35
+ }
36
+ const actorIdentity = normalizeBillingIdentity({
37
+ identityIssuer: GOOGLE_CONTROL_PLANE_ISSUER,
38
+ subject: input.actor.subject,
39
+ });
40
+ const actor = {
41
+ subject: actorIdentity.subject,
42
+ email: normalizeBillingEmail(input.actor.email),
43
+ };
44
+ const mappingChecksum = legacyBillingMigrationMappingChecksum(request.mappings);
45
+ const planEvidenceChecksum = legacyBillingMigrationPlanEvidenceChecksum(request.legacyPlanEvidence);
46
+ const requestFingerprint = legacyBillingMigrationRequestFingerprint(request, actor, service);
47
+ const client = await pool.connect();
48
+ try {
49
+ // READ COMMITTED lets a waiter observe the predecessor's committed replay row after the
50
+ // transaction-scoped migration lock releases. EXCLUSIVE table locks freeze every source table
51
+ // before preview revalidation and wait behind in-flight SELECT ... FOR UPDATE writers. Migration
52
+ // intentionally takes no default-owner advisory locks: signup writes org tables before acquiring
53
+ // those locks, so mixing both lock orders here would create an inversion.
54
+ await client.query('BEGIN ISOLATION LEVEL READ COMMITTED');
55
+ await client.query('SELECT pg_advisory_xact_lock(hashtextextended($1, 0))', [
56
+ 'billing-legacy-shadow-prepare:v1',
57
+ ]);
58
+ const keyed = await findPreparationByIdempotencyKey(client, request.idempotencyKey);
59
+ if (keyed !== undefined) {
60
+ if (keyed.request_fingerprint !== requestFingerprint) {
61
+ throw new LegacyBillingMigrationConflictError('idempotency_key_conflict', 'idempotency key was already used by a different request or actor');
62
+ }
63
+ const replay = await preparationResult(client, keyed, true);
64
+ await insertAuditEvent(client, legacyBillingMigrationSuccessAudit(replay, actor), { now });
65
+ await client.query('COMMIT');
66
+ return replay;
67
+ }
68
+ const existing = await findPreparationByKind(client);
69
+ if (existing !== undefined) {
70
+ throw new LegacyBillingMigrationConflictError('migration_already_prepared', 'legacy billing migration was already prepared under a different idempotency key');
71
+ }
72
+ await client.query(`LOCK TABLE ${TABLE_LOCKS} IN EXCLUSIVE MODE`);
73
+ const preview = await previewLegacyBillingMigration(transactionalLegacyMigrationControlPlane(client), { schemaVersion: 1, mappings: request.mappings }, transactionalLegacyMigrationInventory(client));
74
+ if (!preview.ready) {
75
+ throw new LegacyBillingMigrationConflictError('preview_not_ready', 'legacy billing migration preview is no longer ready');
76
+ }
77
+ if (preview.previewChecksum !== request.expectedPreviewChecksum) {
78
+ throw new LegacyBillingMigrationConflictError('preview_checksum_mismatch', 'approved preview no longer matches current state');
79
+ }
80
+ await validateDefaultFreePlanEvidence(client, request, previewOrganizationSlugs(preview));
81
+ const preparedAt = now();
82
+ const migrationId = `bm_${randomUUID()}`;
83
+ await client.query(`INSERT INTO billing_legacy_migration_preparations
84
+ (id, migration_kind, schema_version, mode, state, idempotency_key,
85
+ request_fingerprint, mapping_checksum, preview_checksum, plan_evidence_checksum,
86
+ prepared_at, prepared_by_subject, prepared_by_email, reason)
87
+ VALUES ($1, $2, 1, 'shadow', 'prepared', $3, $4, $5, $6, $7, $8, $9, $10, $11)`, [
88
+ migrationId,
89
+ LEGACY_BILLING_MIGRATION_KIND,
90
+ request.idempotencyKey,
91
+ requestFingerprint,
92
+ mappingChecksum,
93
+ preview.previewChecksum,
94
+ planEvidenceChecksum,
95
+ preparedAt,
96
+ actor.subject,
97
+ actor.email,
98
+ request.reason,
99
+ ]);
100
+ const mappingByOrg = new Map(request.mappings.map((mapping) => [mapping.org, mapping]));
101
+ const unlinkedByOrg = new Map(preview.organizations.map((org) => [org.org, org]));
102
+ for (const fundingSet of preview.fundingSets) {
103
+ let billingAccountId;
104
+ let accountDisposition;
105
+ if (fundingSet.destination.kind === 'existing') {
106
+ billingAccountId = fundingSet.destination.billingAccountId;
107
+ accountDisposition = 'existing';
108
+ }
109
+ else {
110
+ const destination = fundingSet.destination;
111
+ const owner = preview.organizations.find((org) => org.mappedOwnerSubject === destination.subject);
112
+ const email = owner?.ownerCandidates.find((candidate) => candidate.subject === destination.subject)?.email;
113
+ if (email === undefined) {
114
+ throw new LegacyBillingMigrationConflictError('preview_not_ready', 'prepared funding destination no longer has a selected owner email');
115
+ }
116
+ const account = await ensureDefaultBillingAccountForLegacyMigrationTx(client, {
117
+ identityIssuer: destination.identityIssuer,
118
+ subject: destination.subject,
119
+ email,
120
+ }, preparedAt);
121
+ billingAccountId = account.id;
122
+ accountDisposition = 'created';
123
+ }
124
+ for (const org of fundingSet.organizations) {
125
+ const mapping = mappingByOrg.get(org);
126
+ if (mapping === undefined) {
127
+ throw new LegacyBillingMigrationConflictError('preview_not_ready', 'ready preview contains an organization without a mapping');
128
+ }
129
+ let link;
130
+ let disposition;
131
+ if (mapping.linkState === 'linked') {
132
+ link = await getOrgBillingLinkQuery(client, org);
133
+ disposition = 'preserved';
134
+ }
135
+ else {
136
+ const previewOrg = unlinkedByOrg.get(org);
137
+ const selected = previewOrg?.ownerCandidates.find((owner) => owner.subject === mapping.defaultBillingOwnerSubject);
138
+ if (selected === undefined) {
139
+ throw new LegacyBillingMigrationConflictError('preview_not_ready', 'mapped organization owner is no longer available');
140
+ }
141
+ link = await ensureOrgBillingLinkTx(client, {
142
+ org,
143
+ billingAccountId,
144
+ homeFreeBillingAccountId: billingAccountId,
145
+ homeOwner: {
146
+ identityIssuer: GOOGLE_CONTROL_PLANE_ISSUER,
147
+ subject: selected.subject,
148
+ },
149
+ linkedBy: actorIdentity,
150
+ reason: request.reason,
151
+ }, preparedAt);
152
+ disposition = 'created';
153
+ }
154
+ if (link === undefined || link.billingAccountId !== billingAccountId) {
155
+ throw new LegacyBillingMigrationConflictError('incomplete_billing_destination', 'organization billing link does not match its prepared funding destination');
156
+ }
157
+ await validateLinkedDefaultFreeTuple(client, link);
158
+ await client.query(`INSERT INTO billing_legacy_migration_organizations
159
+ (migration_id, org_slug, billing_account_id, link_disposition, link_version,
160
+ home_owner_identity_issuer, home_owner_subject)
161
+ VALUES ($1, $2, $3, $4, $5, $6, $7)`, [
162
+ migrationId,
163
+ org,
164
+ billingAccountId,
165
+ disposition,
166
+ link.version,
167
+ link.homeOwner.identityIssuer,
168
+ link.homeOwner.subject,
169
+ ]);
170
+ }
171
+ const snapshot = await completeDefaultFreeSnapshot(client, billingAccountId);
172
+ const capacity = productionCapacity(snapshot.entitlements['apps.production.max']);
173
+ const grantCandidate = fundingSet.productionApps.length > capacity;
174
+ await client.query(`INSERT INTO billing_legacy_migration_accounts
175
+ (migration_id, billing_account_id, account_disposition, snapshot_id,
176
+ organization_count, production_app_count, production_capacity,
177
+ grant_candidate_at_preparation)
178
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8)`, [
179
+ migrationId,
180
+ billingAccountId,
181
+ accountDisposition,
182
+ snapshot.id,
183
+ fundingSet.organizations.length,
184
+ fundingSet.productionApps.length,
185
+ capacity,
186
+ grantCandidate,
187
+ ]);
188
+ for (const app of fundingSet.productionApps) {
189
+ await client.query(`INSERT INTO billing_legacy_migration_apps
190
+ (migration_id, billing_account_id, org_slug, app_slug, app_created_at)
191
+ VALUES ($1, $2, $3, $4, $5)`, [migrationId, billingAccountId, app.org, app.app, app.createdAt]);
192
+ }
193
+ }
194
+ for (const projection of request.legacyPlanEvidence.projections) {
195
+ await client.query(`INSERT INTO billing_legacy_migration_plan_evidence
196
+ (migration_id, org_slug, source, plan_code, plan_state)
197
+ VALUES ($1, $2, 'default', 'free', 'active')`, [migrationId, projection.org]);
198
+ }
199
+ const stored = await findPreparationById(client, migrationId);
200
+ if (stored === undefined)
201
+ throw new Error('prepared billing migration record was not persisted');
202
+ const result = await preparationResult(client, stored, false);
203
+ await insertAuditEvent(client, legacyBillingMigrationSuccessAudit(result, actor), { now });
204
+ await client.query('COMMIT');
205
+ return result;
206
+ }
207
+ catch (error) {
208
+ await client.query('ROLLBACK').catch(() => undefined);
209
+ const code = postgresErrorCode(error);
210
+ if (code === '40001' || code === '40P01') {
211
+ throw new LegacyBillingMigrationConflictError('serialization_conflict', 'billing migration state changed concurrently; retry the exact request');
212
+ }
213
+ throw error;
214
+ }
215
+ finally {
216
+ client.release();
217
+ }
218
+ }
219
+ async function validateDefaultFreePlanEvidence(client, request, authoritativeOrganizations) {
220
+ const evidenceOrganizations = request.legacyPlanEvidence.projections
221
+ .map((projection) => projection.org)
222
+ .sort();
223
+ if (JSON.stringify(evidenceOrganizations) !== JSON.stringify([...authoritativeOrganizations].sort())) {
224
+ throw new LegacyBillingMigrationConflictError('legacy_plan_evidence_drift', 'legacy plan evidence does not cover every authoritative organization exactly once');
225
+ }
226
+ const policyIds = evidenceOrganizations.map(commercialPlanPolicyId);
227
+ const { rows } = await client.query('SELECT id FROM policy_assignments WHERE active = true AND id = ANY($1::text[]) LIMIT 1', [policyIds]);
228
+ if (rows[0] !== undefined) {
229
+ throw new LegacyBillingMigrationConflictError('legacy_plan_evidence_drift', 'a legacy plan projection is no longer default Free and active');
230
+ }
231
+ }
232
+ async function validateLinkedDefaultFreeTuple(client, link) {
233
+ if (link === undefined ||
234
+ link.billingAccountId !== link.homeFreeBillingAccountId ||
235
+ link.fallbackBillingAccountId !== link.homeFreeBillingAccountId) {
236
+ throw new LegacyBillingMigrationConflictError('incomplete_billing_destination', 'default-Free migration requires the active, home, and fallback accounts to match');
237
+ }
238
+ const ownerDefault = await getDefaultBillingAccountQuery(client, link.homeOwner, true);
239
+ const { rows } = await client.query(`SELECT role FROM billing_account_members
240
+ WHERE billing_account_id = $1 AND identity_issuer = $2 AND subject = $3`, [link.billingAccountId, link.homeOwner.identityIssuer, link.homeOwner.subject]);
241
+ if (ownerDefault?.id !== link.billingAccountId || rows[0]?.role !== 'owner') {
242
+ throw new LegacyBillingMigrationConflictError('incomplete_billing_destination', 'billing destination does not have a complete default owner tuple');
243
+ }
244
+ }
245
+ async function completeDefaultFreeSnapshot(client, billingAccountId) {
246
+ const account = await getBillingAccountQuery(client, billingAccountId);
247
+ const snapshot = await getActiveEntitlementSnapshotQuery(client, billingAccountId);
248
+ if (account?.state !== 'active' || snapshot?.planCode !== 'free') {
249
+ throw new LegacyBillingMigrationConflictError('incomplete_billing_destination', 'billing destination must have an active verified Free snapshot');
250
+ }
251
+ productionCapacity(snapshot.entitlements['apps.production.max']);
252
+ return snapshot;
253
+ }
254
+ function productionCapacity(value) {
255
+ if (!Number.isSafeInteger(value) || value < 0) {
256
+ throw new LegacyBillingMigrationConflictError('incomplete_billing_destination', 'billing destination has an invalid apps.production.max entitlement');
257
+ }
258
+ return value;
259
+ }
260
+ function postgresErrorCode(error) {
261
+ return typeof error === 'object' && error !== null && 'code' in error
262
+ ? String(error.code)
263
+ : undefined;
264
+ }
265
+ //# sourceMappingURL=postgres-migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-migration.js","sourceRoot":"","sources":["../../src/billing/postgres-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EACL,qCAAqC,EACrC,6BAA6B,GAC9B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAGL,mCAAmC,EACnC,0CAA0C,EAC1C,wCAAwC,EACxC,kCAAkC,EAClC,mCAAmC,EACnC,uCAAuC,GACxC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,+CAA+C,EAC/C,sBAAsB,EACtB,iCAAiC,EACjC,sBAAsB,EACtB,6BAA6B,EAC7B,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,qBAAqB,EACrB,6BAA6B,EAC7B,iBAAiB,EACjB,wBAAwB,EACxB,wCAAwC,EACxC,qCAAqC,GACtC,MAAM,iCAAiC,CAAC;AAEzC,MAAM,WAAW,GAAG;IAClB,MAAM;IACN,aAAa;IACb,MAAM;IACN,cAAc;IACd,gBAAgB;IAChB,oBAAoB;IACpB,uBAAuB;IACvB,kBAAkB;IAClB,0BAA0B;IAC1B,yBAAyB;IACzB,+BAA+B;IAC/B,kCAAkC;IAClC,2BAA2B;IAC3B,mBAAmB;IACnB,uCAAuC;IACvC,mCAAmC;IACnC,wCAAwC;IACxC,+BAA+B;IAC/B,wCAAwC;CACzC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,IAAU,EACV,KAIC,EACD,GAAe;IAEf,MAAM,OAAO,GAAG,uCAAuC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,mCAAmC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnE,IAAI,OAAO,CAAC,kBAAkB,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QACnD,MAAM,IAAI,mCAAmC,CAC3C,4BAA4B,EAC5B,kDAAkD,CACnD,CAAC;IACJ,CAAC;IACD,MAAM,aAAa,GAAG,wBAAwB,CAAC;QAC7C,cAAc,EAAE,2BAA2B;QAC3C,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO;KAC7B,CAAC,CAAC;IACH,MAAM,KAAK,GAAG;QACZ,OAAO,EAAE,aAAa,CAAC,OAAO;QAC9B,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;KAChD,CAAC;IACF,MAAM,eAAe,GAAG,qCAAqC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChF,MAAM,oBAAoB,GAAG,0CAA0C,CACrE,OAAO,CAAC,kBAAkB,CAC3B,CAAC;IACF,MAAM,kBAAkB,GAAG,wCAAwC,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,wFAAwF;QACxF,8FAA8F;QAC9F,iGAAiG;QACjG,iGAAiG;QACjG,0EAA0E;QAC1E,MAAM,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC3D,MAAM,MAAM,CAAC,KAAK,CAAC,uDAAuD,EAAE;YAC1E,kCAAkC;SACnC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,+BAA+B,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QACpF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,KAAK,CAAC,mBAAmB,KAAK,kBAAkB,EAAE,CAAC;gBACrD,MAAM,IAAI,mCAAmC,CAC3C,0BAA0B,EAC1B,kEAAkE,CACnE,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC5D,MAAM,gBAAgB,CAAC,MAAM,EAAE,kCAAkC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YAC3F,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,mCAAmC,CAC3C,4BAA4B,EAC5B,iFAAiF,CAClF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,CAAC,KAAK,CAAC,cAAc,WAAW,oBAAoB,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,MAAM,6BAA6B,CACjD,wCAAwC,CAAC,MAAM,CAAC,EAChD,EAAE,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAChD,qCAAqC,CAAC,MAAM,CAAC,CAC9C,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,mCAAmC,CAC3C,mBAAmB,EACnB,qDAAqD,CACtD,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,eAAe,KAAK,OAAO,CAAC,uBAAuB,EAAE,CAAC;YAChE,MAAM,IAAI,mCAAmC,CAC3C,2BAA2B,EAC3B,kDAAkD,CACnD,CAAC;QACJ,CAAC;QACD,MAAM,+BAA+B,CAAC,MAAM,EAAE,OAAO,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC;QAE1F,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,MAAM,UAAU,EAAE,EAAE,CAAC;QACzC,MAAM,MAAM,CAAC,KAAK,CAChB;;;;sFAIgF,EAChF;YACE,WAAW;YACX,6BAA6B;YAC7B,OAAO,CAAC,cAAc;YACtB,kBAAkB;YAClB,eAAe;YACf,OAAO,CAAC,eAAe;YACvB,oBAAoB;YACpB,UAAU;YACV,KAAK,CAAC,OAAO;YACb,KAAK,CAAC,KAAK;YACX,OAAO,CAAC,MAAM;SACf,CACF,CAAC;QAEF,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAClF,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YAC7C,IAAI,gBAAwB,CAAC;YAC7B,IAAI,kBAA0C,CAAC;YAC/C,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC/C,gBAAgB,GAAG,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC;gBAC3D,kBAAkB,GAAG,UAAU,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;gBAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CACtC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,kBAAkB,KAAK,WAAW,CAAC,OAAO,CACxD,CAAC;gBACF,MAAM,KAAK,GAAG,KAAK,EAAE,eAAe,CAAC,IAAI,CACvC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,KAAK,WAAW,CAAC,OAAO,CACzD,EAAE,KAAK,CAAC;gBACT,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,MAAM,IAAI,mCAAmC,CAC3C,mBAAmB,EACnB,mEAAmE,CACpE,CAAC;gBACJ,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,+CAA+C,CACnE,MAAM,EACN;oBACE,cAAc,EAAE,WAAW,CAAC,cAAc;oBAC1C,OAAO,EAAE,WAAW,CAAC,OAAO;oBAC5B,KAAK;iBACN,EACD,UAAU,CACX,CAAC;gBACF,gBAAgB,GAAG,OAAO,CAAC,EAAE,CAAC;gBAC9B,kBAAkB,GAAG,SAAS,CAAC;YACjC,CAAC;YAED,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;gBAC3C,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACtC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC1B,MAAM,IAAI,mCAAmC,CAC3C,mBAAmB,EACnB,0DAA0D,CAC3D,CAAC;gBACJ,CAAC;gBACD,IAAI,IAAwD,CAAC;gBAC7D,IAAI,WAAoC,CAAC;gBACzC,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;oBACnC,IAAI,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBACjD,WAAW,GAAG,WAAW,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAC1C,MAAM,QAAQ,GAAG,UAAU,EAAE,eAAe,CAAC,IAAI,CAC/C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,0BAA0B,CAChE,CAAC;oBACF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;wBAC3B,MAAM,IAAI,mCAAmC,CAC3C,mBAAmB,EACnB,kDAAkD,CACnD,CAAC;oBACJ,CAAC;oBACD,IAAI,GAAG,MAAM,sBAAsB,CACjC,MAAM,EACN;wBACE,GAAG;wBACH,gBAAgB;wBAChB,wBAAwB,EAAE,gBAAgB;wBAC1C,SAAS,EAAE;4BACT,cAAc,EAAE,2BAA2B;4BAC3C,OAAO,EAAE,QAAQ,CAAC,OAAO;yBAC1B;wBACD,QAAQ,EAAE,aAAa;wBACvB,MAAM,EAAE,OAAO,CAAC,MAAM;qBACvB,EACD,UAAU,CACX,CAAC;oBACF,WAAW,GAAG,SAAS,CAAC;gBAC1B,CAAC;gBACD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,EAAE,CAAC;oBACrE,MAAM,IAAI,mCAAmC,CAC3C,gCAAgC,EAChC,2EAA2E,CAC5E,CAAC;gBACJ,CAAC;gBACD,MAAM,8BAA8B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACnD,MAAM,MAAM,CAAC,KAAK,CAChB;;;+CAGqC,EACrC;oBACE,WAAW;oBACX,GAAG;oBACH,gBAAgB;oBAChB,WAAW;oBACX,IAAI,CAAC,OAAO;oBACZ,IAAI,CAAC,SAAS,CAAC,cAAc;oBAC7B,IAAI,CAAC,SAAS,CAAC,OAAO;iBACvB,CACF,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YAC7E,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAClF,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,GAAG,QAAQ,CAAC;YACnE,MAAM,MAAM,CAAC,KAAK,CAChB;;;;iDAIyC,EACzC;gBACE,WAAW;gBACX,gBAAgB;gBAChB,kBAAkB;gBAClB,QAAQ,CAAC,EAAE;gBACX,UAAU,CAAC,aAAa,CAAC,MAAM;gBAC/B,UAAU,CAAC,cAAc,CAAC,MAAM;gBAChC,QAAQ;gBACR,cAAc;aACf,CACF,CAAC;YACF,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,cAAc,EAAE,CAAC;gBAC5C,MAAM,MAAM,CAAC,KAAK,CAChB;;uCAE6B,EAC7B,CAAC,WAAW,EAAE,gBAAgB,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CACjE,CAAC;YACJ,CAAC;QACH,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;YAChE,MAAM,MAAM,CAAC,KAAK,CAChB;;sDAE8C,EAC9C,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,CAC9B,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC9D,IAAI,MAAM,KAAK,SAAS;YACtB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9D,MAAM,gBAAgB,CAAC,MAAM,EAAE,kCAAkC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3F,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACzC,MAAM,IAAI,mCAAmC,CAC3C,wBAAwB,EACxB,uEAAuE,CACxE,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,+BAA+B,CAC5C,MAAkB,EAClB,OAA2C,EAC3C,0BAA6C;IAE7C,MAAM,qBAAqB,GAAG,OAAO,CAAC,kBAAkB,CAAC,WAAW;SACjE,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;SACnC,IAAI,EAAE,CAAC;IACV,IACE,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,0BAA0B,CAAC,CAAC,IAAI,EAAE,CAAC,EAChG,CAAC;QACD,MAAM,IAAI,mCAAmC,CAC3C,4BAA4B,EAC5B,mFAAmF,CACpF,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACpE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CACjC,wFAAwF,EACxF,CAAC,SAAS,CAAC,CACZ,CAAC;IACF,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,mCAAmC,CAC3C,4BAA4B,EAC5B,+DAA+D,CAChE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,8BAA8B,CAC3C,MAAkB,EAClB,IAAwD;IAExD,IACE,IAAI,KAAK,SAAS;QAClB,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,wBAAwB;QACvD,IAAI,CAAC,wBAAwB,KAAK,IAAI,CAAC,wBAAwB,EAC/D,CAAC;QACD,MAAM,IAAI,mCAAmC,CAC3C,gCAAgC,EAChC,kFAAkF,CACnF,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,MAAM,6BAA6B,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACvF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CACjC;6EACyE,EACzE,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAC/E,CAAC;IACF,IAAI,YAAY,EAAE,EAAE,KAAK,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5E,MAAM,IAAI,mCAAmC,CAC3C,gCAAgC,EAChC,kEAAkE,CACnE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,2BAA2B,CAAC,MAAkB,EAAE,gBAAwB;IACrF,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,MAAM,iCAAiC,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACnF,IAAI,OAAO,EAAE,KAAK,KAAK,QAAQ,IAAI,QAAQ,EAAE,QAAQ,KAAK,MAAM,EAAE,CAAC;QACjE,MAAM,IAAI,mCAAmC,CAC3C,gCAAgC,EAChC,gEAAgE,CACjE,CAAC;IACJ,CAAC;IACD,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACjE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAK,KAAgB,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,mCAAmC,CAC3C,gCAAgC,EAChC,oEAAoE,CACrE,CAAC;IACJ,CAAC;IACD,OAAO,KAAe,CAAC;AACzB,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"}
@@ -0,0 +1,7 @@
1
+ import type { Pool } from 'pg';
2
+ import { type BillingAccountMemberRecord, type BillingIdentityRef, type OrgBillingLinkRecord } from './model.js';
3
+ import type { LegacyBillingAccountPreparationRecord } from './store.js';
4
+ export declare function listBillingAccountMembershipRows(pool: Pool, identity: BillingIdentityRef): Promise<readonly BillingAccountMemberRecord[]>;
5
+ export declare function listOrgBillingLinkRowsForAccount(pool: Pool, id: string): Promise<readonly OrgBillingLinkRecord[]>;
6
+ export declare function getLegacyBillingMigrationPreparationForAccountRow(pool: Pool, id: string): Promise<LegacyBillingAccountPreparationRecord | undefined>;
7
+ //# sourceMappingURL=postgres-read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-read.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EAEvB,KAAK,oBAAoB,EAE1B,MAAM,YAAY,CAAC;AAOpB,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,YAAY,CAAC;AAExE,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC,SAAS,0BAA0B,EAAE,CAAC,CAShD;AAED,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC,CAY1C;AAED,wBAAsB,iDAAiD,CACrE,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,qCAAqC,GAAG,SAAS,CAAC,CAiC5D"}
@@ -0,0 +1,55 @@
1
+ import { normalizeBillingIdentity, validateBillingAccountId, } from './model.js';
2
+ import { memberRowToRecord, orgBillingLinkRowToRecord, } from './postgres-records.js';
3
+ export async function listBillingAccountMembershipRows(pool, identity) {
4
+ const normalized = normalizeBillingIdentity(identity);
5
+ const { rows } = await pool.query(`SELECT * FROM billing_account_members
6
+ WHERE identity_issuer = $1 AND subject = $2
7
+ ORDER BY created_at, billing_account_id`, [normalized.identityIssuer, normalized.subject]);
8
+ return rows.map(memberRowToRecord);
9
+ }
10
+ export async function listOrgBillingLinkRowsForAccount(pool, id) {
11
+ const { rows } = await pool.query(`SELECT links.*,
12
+ home.home_owner_identity_issuer,
13
+ home.home_owner_subject
14
+ FROM org_billing_links AS links
15
+ JOIN org_billing_home_accounts AS home ON home.org_slug = links.org_slug
16
+ WHERE links.billing_account_id = $1
17
+ ORDER BY links.org_slug`, [validateBillingAccountId(id)]);
18
+ return rows.map(orgBillingLinkRowToRecord);
19
+ }
20
+ export async function getLegacyBillingMigrationPreparationForAccountRow(pool, id) {
21
+ const { rows } = await pool.query(`SELECT migrated.billing_account_id,
22
+ preparation.prepared_at,
23
+ migrated.organization_count,
24
+ migrated.production_app_count,
25
+ migrated.production_capacity,
26
+ migrated.grant_candidate_at_preparation
27
+ FROM billing_legacy_migration_accounts AS migrated
28
+ JOIN billing_legacy_migration_preparations AS preparation
29
+ ON preparation.id = migrated.migration_id
30
+ WHERE migrated.billing_account_id = $1`, [validateBillingAccountId(id)]);
31
+ const row = rows[0];
32
+ if (row === undefined)
33
+ return undefined;
34
+ return {
35
+ billingAccountId: validateBillingAccountId(row.billing_account_id),
36
+ preparedAt: persistedTimestamp('legacy billing preparation', row.prepared_at),
37
+ organizationCount: persistedNonNegativeInteger('legacy billing organization count', row.organization_count),
38
+ productionAppCount: persistedNonNegativeInteger('legacy billing production app count', row.production_app_count),
39
+ productionCapacity: persistedNonNegativeInteger('legacy billing production capacity', row.production_capacity),
40
+ grantCandidateAtPreparation: row.grant_candidate_at_preparation,
41
+ };
42
+ }
43
+ function persistedTimestamp(name, value) {
44
+ const date = value instanceof Date ? value : new Date(value);
45
+ if (!Number.isFinite(date.getTime()))
46
+ throw new Error(`persisted ${name} timestamp is invalid`);
47
+ return date.toISOString();
48
+ }
49
+ function persistedNonNegativeInteger(name, value) {
50
+ if (!Number.isSafeInteger(value) || value < 0) {
51
+ throw new Error(`persisted ${name} must be a non-negative integer`);
52
+ }
53
+ return value;
54
+ }
55
+ //# sourceMappingURL=postgres-read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-read.js","sourceRoot":"","sources":["../../src/billing/postgres-read.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,wBAAwB,EAExB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,iBAAiB,EAEjB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAG/B,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,IAAU,EACV,QAA4B;IAE5B,MAAM,UAAU,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAC/B;;6CAEyC,EACzC,CAAC,UAAU,CAAC,cAAc,EAAE,UAAU,CAAC,OAAO,CAAC,CAChD,CAAC;IACF,OAAO,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,IAAU,EACV,EAAU;IAEV,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAC/B;;;;;;6BAMyB,EACzB,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC,CAC/B,CAAC;IACF,OAAO,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iDAAiD,CACrE,IAAU,EACV,EAAU;IAEV,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAC/B;;;;;;;;;4CASwC,EACxC,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC,CAC/B,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxC,OAAO;QACL,gBAAgB,EAAE,wBAAwB,CAAC,GAAG,CAAC,kBAAkB,CAAC;QAClE,UAAU,EAAE,kBAAkB,CAAC,4BAA4B,EAAE,GAAG,CAAC,WAAW,CAAC;QAC7E,iBAAiB,EAAE,2BAA2B,CAC5C,mCAAmC,EACnC,GAAG,CAAC,kBAAkB,CACvB;QACD,kBAAkB,EAAE,2BAA2B,CAC7C,qCAAqC,EACrC,GAAG,CAAC,oBAAoB,CACzB;QACD,kBAAkB,EAAE,2BAA2B,CAC7C,oCAAoC,EACpC,GAAG,CAAC,mBAAmB,CACxB;QACD,2BAA2B,EAAE,GAAG,CAAC,8BAA8B;KAChE,CAAC;AACJ,CAAC;AAWD,SAAS,kBAAkB,CAAC,IAAY,EAAE,KAAoB;IAC5D,MAAM,IAAI,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,uBAAuB,CAAC,CAAC;IAChG,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,2BAA2B,CAAC,IAAY,EAAE,KAAa;IAC9D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,iCAAiC,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-schema.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAI/B,2FAA2F;AAC3F,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAwJnE"}
1
+ {"version":3,"file":"postgres-schema.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAI/B,2FAA2F;AAC3F,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA+NnE"}