@noodleseed/one 0.61.0 → 0.63.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 (188) hide show
  1. package/dist/bin.js +8 -2
  2. package/dist/bin.js.map +1 -1
  3. package/dist/browser.d.ts +10 -0
  4. package/dist/browser.d.ts.map +1 -0
  5. package/dist/browser.js +18 -0
  6. package/dist/browser.js.map +1 -0
  7. package/dist/cli.d.ts.map +1 -1
  8. package/dist/cli.js +4 -0
  9. package/dist/cli.js.map +1 -1
  10. package/dist/commands/apps-ops.js +1 -1
  11. package/dist/commands/apps-ops.js.map +1 -1
  12. package/dist/commands/deploy-ops.d.ts +2 -3
  13. package/dist/commands/deploy-ops.d.ts.map +1 -1
  14. package/dist/commands/deploy-ops.js +5 -17
  15. package/dist/commands/deploy-ops.js.map +1 -1
  16. package/dist/commands/github-ops.d.ts +3 -2
  17. package/dist/commands/github-ops.d.ts.map +1 -1
  18. package/dist/commands/github-ops.js +7 -4
  19. package/dist/commands/github-ops.js.map +1 -1
  20. package/dist/control-plane.d.ts +2 -1
  21. package/dist/control-plane.d.ts.map +1 -1
  22. package/dist/control-plane.js +31 -10
  23. package/dist/control-plane.js.map +1 -1
  24. package/dist/device-login.d.ts +30 -0
  25. package/dist/device-login.d.ts.map +1 -0
  26. package/dist/device-login.js +162 -0
  27. package/dist/device-login.js.map +1 -0
  28. package/dist/doctor.d.ts.map +1 -1
  29. package/dist/doctor.js +11 -0
  30. package/dist/doctor.js.map +1 -1
  31. package/dist/platform-support.d.ts +22 -0
  32. package/dist/platform-support.d.ts.map +1 -0
  33. package/dist/platform-support.js +118 -0
  34. package/dist/platform-support.js.map +1 -0
  35. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-schema.d.ts.map +1 -1
  36. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-schema.js +2 -0
  37. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-schema.js.map +1 -1
  38. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-schema.d.ts +4 -0
  39. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-schema.d.ts.map +1 -0
  40. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-schema.js +74 -0
  41. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-schema.js.map +1 -0
  42. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-store.d.ts +31 -0
  43. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-store.d.ts.map +1 -0
  44. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-store.js +295 -0
  45. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-overage-store.js.map +1 -0
  46. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-schema.d.ts.map +1 -1
  47. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-schema.js +13 -0
  48. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-schema.js.map +1 -1
  49. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-store.d.ts.map +1 -1
  50. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-store.js +4 -0
  51. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-store.js.map +1 -1
  52. package/node_modules/@noodle-borg/service/dist/billing/stripe-config.d.ts +1 -0
  53. package/node_modules/@noodle-borg/service/dist/billing/stripe-config.d.ts.map +1 -1
  54. package/node_modules/@noodle-borg/service/dist/billing/stripe-config.js +12 -1
  55. package/node_modules/@noodle-borg/service/dist/billing/stripe-config.js.map +1 -1
  56. package/node_modules/@noodle-borg/service/dist/billing/stripe-integration-loader.d.ts +7 -0
  57. package/node_modules/@noodle-borg/service/dist/billing/stripe-integration-loader.d.ts.map +1 -1
  58. package/node_modules/@noodle-borg/service/dist/billing/stripe-integration-loader.js +14 -0
  59. package/node_modules/@noodle-borg/service/dist/billing/stripe-integration-loader.js.map +1 -1
  60. package/node_modules/@noodle-borg/service/dist/billing/stripe-integration.d.ts +7 -0
  61. package/node_modules/@noodle-borg/service/dist/billing/stripe-integration.d.ts.map +1 -1
  62. package/node_modules/@noodle-borg/service/dist/billing/stripe-integration.js +38 -0
  63. package/node_modules/@noodle-borg/service/dist/billing/stripe-integration.js.map +1 -1
  64. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider-validation.d.ts +49 -0
  65. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider-validation.d.ts.map +1 -0
  66. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider-validation.js +241 -0
  67. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider-validation.js.map +1 -0
  68. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider.d.ts +28 -0
  69. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider.d.ts.map +1 -0
  70. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider.js +133 -0
  71. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-provider.js.map +1 -0
  72. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-service.d.ts +23 -0
  73. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-service.d.ts.map +1 -0
  74. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-service.js +171 -0
  75. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-service.js.map +1 -0
  76. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-store.d.ts +51 -0
  77. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-store.d.ts.map +1 -0
  78. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-store.js +2 -0
  79. package/node_modules/@noodle-borg/service/dist/billing/stripe-overage-store.js.map +1 -0
  80. package/node_modules/@noodle-borg/service/dist/oauth/app.d.ts.map +1 -1
  81. package/node_modules/@noodle-borg/service/dist/oauth/app.js +65 -0
  82. package/node_modules/@noodle-borg/service/dist/oauth/app.js.map +1 -1
  83. package/node_modules/@noodle-borg/service/dist/oauth/device-flow.d.ts +20 -0
  84. package/node_modules/@noodle-borg/service/dist/oauth/device-flow.d.ts.map +1 -0
  85. package/node_modules/@noodle-borg/service/dist/oauth/device-flow.js +239 -0
  86. package/node_modules/@noodle-borg/service/dist/oauth/device-flow.js.map +1 -0
  87. package/node_modules/@noodle-borg/service/dist/oauth/device-provider.d.ts +15 -0
  88. package/node_modules/@noodle-borg/service/dist/oauth/device-provider.d.ts.map +1 -0
  89. package/node_modules/@noodle-borg/service/dist/oauth/device-provider.js +45 -0
  90. package/node_modules/@noodle-borg/service/dist/oauth/device-provider.js.map +1 -0
  91. package/node_modules/@noodle-borg/service/dist/oauth/device-store-postgres-schema.d.ts +3 -0
  92. package/node_modules/@noodle-borg/service/dist/oauth/device-store-postgres-schema.d.ts.map +1 -0
  93. package/node_modules/@noodle-borg/service/dist/oauth/device-store-postgres-schema.js +33 -0
  94. package/node_modules/@noodle-borg/service/dist/oauth/device-store-postgres-schema.js.map +1 -0
  95. package/node_modules/@noodle-borg/service/dist/oauth/device-store-postgres-types.d.ts +30 -0
  96. package/node_modules/@noodle-borg/service/dist/oauth/device-store-postgres-types.d.ts.map +1 -0
  97. package/node_modules/@noodle-borg/service/dist/oauth/device-store-postgres-types.js +31 -0
  98. package/node_modules/@noodle-borg/service/dist/oauth/device-store-postgres-types.js.map +1 -0
  99. package/node_modules/@noodle-borg/service/dist/oauth/device-store.d.ts +66 -0
  100. package/node_modules/@noodle-borg/service/dist/oauth/device-store.d.ts.map +1 -0
  101. package/node_modules/@noodle-borg/service/dist/oauth/device-store.js +2 -0
  102. package/node_modules/@noodle-borg/service/dist/oauth/device-store.js.map +1 -0
  103. package/node_modules/@noodle-borg/service/dist/oauth/paths.d.ts.map +1 -1
  104. package/node_modules/@noodle-borg/service/dist/oauth/paths.js +3 -0
  105. package/node_modules/@noodle-borg/service/dist/oauth/paths.js.map +1 -1
  106. package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts +7 -0
  107. package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts.map +1 -1
  108. package/node_modules/@noodle-borg/service/dist/oauth/provider.js +36 -1
  109. package/node_modules/@noodle-borg/service/dist/oauth/provider.js.map +1 -1
  110. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.d.ts +14 -0
  111. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.d.ts.map +1 -1
  112. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.js +122 -0
  113. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.js.map +1 -1
  114. package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts +15 -1
  115. package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts.map +1 -1
  116. package/node_modules/@noodle-borg/service/dist/oauth/store.js +83 -0
  117. package/node_modules/@noodle-borg/service/dist/oauth/store.js.map +1 -1
  118. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  119. package/node_modules/@noodle-borg/service/dist/serve.js +14 -1
  120. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  121. package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.d.ts +1 -0
  122. package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.d.ts.map +1 -1
  123. package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.js +3 -0
  124. package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.js.map +1 -1
  125. package/node_modules/bundle-name/index.js +5 -0
  126. package/node_modules/bundle-name/license +9 -0
  127. package/node_modules/bundle-name/package.json +45 -0
  128. package/node_modules/bundle-name/readme.md +23 -0
  129. package/node_modules/default-browser/index.d.ts +29 -0
  130. package/node_modules/default-browser/index.js +34 -0
  131. package/node_modules/default-browser/license +9 -0
  132. package/node_modules/default-browser/package.json +54 -0
  133. package/node_modules/default-browser/readme.md +24 -0
  134. package/node_modules/default-browser/windows.js +57 -0
  135. package/node_modules/default-browser-id/index.js +25 -0
  136. package/node_modules/default-browser-id/license +9 -0
  137. package/node_modules/default-browser-id/package.json +41 -0
  138. package/node_modules/default-browser-id/readme.md +19 -0
  139. package/node_modules/define-lazy-prop/index.d.ts +31 -0
  140. package/node_modules/define-lazy-prop/index.js +18 -0
  141. package/node_modules/define-lazy-prop/license +9 -0
  142. package/node_modules/define-lazy-prop/package.json +51 -0
  143. package/node_modules/define-lazy-prop/readme.md +55 -0
  144. package/node_modules/is-docker/cli.js +5 -0
  145. package/node_modules/is-docker/index.d.ts +13 -0
  146. package/node_modules/is-docker/index.js +29 -0
  147. package/node_modules/is-docker/license +9 -0
  148. package/node_modules/is-docker/package.json +44 -0
  149. package/node_modules/is-docker/readme.md +27 -0
  150. package/node_modules/is-in-ssh/index.d.ts +15 -0
  151. package/node_modules/is-in-ssh/index.js +7 -0
  152. package/node_modules/is-in-ssh/license +9 -0
  153. package/node_modules/is-in-ssh/package.json +43 -0
  154. package/node_modules/is-in-ssh/readme.md +43 -0
  155. package/node_modules/is-inside-container/cli.js +5 -0
  156. package/node_modules/is-inside-container/index.d.ts +13 -0
  157. package/node_modules/is-inside-container/index.js +23 -0
  158. package/node_modules/is-inside-container/license +9 -0
  159. package/node_modules/is-inside-container/package.json +51 -0
  160. package/node_modules/is-inside-container/readme.md +36 -0
  161. package/node_modules/is-wsl/index.d.ts +15 -0
  162. package/node_modules/is-wsl/index.js +36 -0
  163. package/node_modules/is-wsl/license +9 -0
  164. package/node_modules/is-wsl/package.json +58 -0
  165. package/node_modules/is-wsl/readme.md +21 -0
  166. package/node_modules/open/index.d.ts +158 -0
  167. package/node_modules/open/index.js +417 -0
  168. package/node_modules/open/license +9 -0
  169. package/node_modules/open/package.json +70 -0
  170. package/node_modules/open/readme.md +197 -0
  171. package/node_modules/open/xdg-open +1267 -0
  172. package/node_modules/powershell-utils/index.d.ts +122 -0
  173. package/node_modules/powershell-utils/index.js +58 -0
  174. package/node_modules/powershell-utils/license +9 -0
  175. package/node_modules/powershell-utils/package.json +47 -0
  176. package/node_modules/powershell-utils/readme.md +153 -0
  177. package/node_modules/run-applescript/index.d.ts +66 -0
  178. package/node_modules/run-applescript/index.js +37 -0
  179. package/node_modules/run-applescript/license +9 -0
  180. package/node_modules/run-applescript/package.json +42 -0
  181. package/node_modules/run-applescript/readme.md +78 -0
  182. package/node_modules/wsl-utils/index.d.ts +81 -0
  183. package/node_modules/wsl-utils/index.js +98 -0
  184. package/node_modules/wsl-utils/license +9 -0
  185. package/node_modules/wsl-utils/package.json +48 -0
  186. package/node_modules/wsl-utils/readme.md +111 -0
  187. package/node_modules/wsl-utils/utilities.js +19 -0
  188. package/package.json +14 -1
@@ -0,0 +1,118 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { delimiter, join } from 'node:path';
3
+ import { EXIT, printJsonFailure } from './commands/output.js';
4
+ const DISCOVERY_COMMANDS = new Set(['--help', '-h', 'help', '--version', '-v', 'version']);
5
+ const MOUNTED_WINDOWS_PATH = /^\/mnt\/[a-z](?:\/|$)/i;
6
+ export function platformSupportFailure(argv, platform) {
7
+ if (platform !== 'win32' || DISCOVERY_COMMANDS.has(argv[0] ?? ''))
8
+ return undefined;
9
+ return {
10
+ code: 'unsupported_platform',
11
+ message: 'Noodle CLI commands run on macOS or Windows through WSL2.',
12
+ cause: 'Native Windows shells are not supported in this first slice.',
13
+ fix: 'Install WSL2 with Ubuntu and run Noodle from its Linux terminal.',
14
+ next: 'wsl --install -d Ubuntu',
15
+ };
16
+ }
17
+ export function enforcePlatformSupport(argv, platform) {
18
+ const failure = platformSupportFailure(argv, platform);
19
+ if (failure === undefined)
20
+ return undefined;
21
+ if (argv.includes('--json'))
22
+ return printJsonFailure(failure, EXIT.USAGE);
23
+ console.error([
24
+ `${failure.code}: ${failure.message}`,
25
+ `Cause: ${failure.cause}`,
26
+ `Fix: ${failure.fix}`,
27
+ `Next: ${failure.next}`,
28
+ ].join('\n'));
29
+ return EXIT.USAGE;
30
+ }
31
+ export function wslPlatformChecks(input) {
32
+ if (!isWsl(input.platform, input.env, input.kernelRelease))
33
+ return [];
34
+ const distro = input.env.WSL_DISTRO_NAME;
35
+ const isWsl2 = /wsl2/i.test(input.kernelRelease);
36
+ const isUbuntu = distro !== undefined && /^ubuntu(?:-|$)/i.test(distro);
37
+ const checks = [
38
+ !isWsl2
39
+ ? {
40
+ level: 'WARN',
41
+ name: 'Platform',
42
+ message: `WSL version 2 not detected${distro ? ` (${distro})` : ''}`,
43
+ cause: 'The supported Windows environment is WSL2 with Ubuntu.',
44
+ fix: 'Upgrade this distro to WSL2 from PowerShell.',
45
+ next: distro !== undefined
46
+ ? `wsl.exe --set-version ${distro} 2`
47
+ : 'wsl.exe --set-default-version 2',
48
+ }
49
+ : distro === undefined
50
+ ? {
51
+ level: 'WARN',
52
+ name: 'Platform',
53
+ message: 'WSL2 distro could not be identified',
54
+ cause: 'The supported Windows environment is WSL2 with Ubuntu.',
55
+ fix: 'Run Noodle from an Ubuntu WSL2 terminal.',
56
+ next: 'wsl.exe --list --verbose',
57
+ }
58
+ : !isUbuntu
59
+ ? {
60
+ level: 'WARN',
61
+ name: 'Platform',
62
+ message: `WSL2 distro is not Ubuntu (${distro})`,
63
+ cause: 'The supported Windows environment is WSL2 with Ubuntu.',
64
+ fix: 'Install the supported Ubuntu distro for Noodle CLI work.',
65
+ next: 'wsl.exe --install -d Ubuntu',
66
+ }
67
+ : {
68
+ level: 'PASS',
69
+ name: 'Platform',
70
+ message: `WSL2 (${distro})`,
71
+ },
72
+ ];
73
+ if (isMountedWindowsPath(input.cwd)) {
74
+ checks.push({
75
+ level: 'WARN',
76
+ name: 'WSL workspace',
77
+ message: input.cwd,
78
+ cause: 'The project is on a mounted Windows drive, which makes Node file watching and installs slower and less reliable.',
79
+ fix: 'Move the repository into the WSL Linux filesystem, such as ~/src.',
80
+ next: 'mkdir -p ~/src',
81
+ });
82
+ }
83
+ if (isMountedWindowsPath(input.nodePath) || isMountedWindowsPath(input.npmPath)) {
84
+ checks.push({
85
+ level: 'WARN',
86
+ name: 'WSL runtime',
87
+ message: 'mounted Windows Node/npm detected',
88
+ cause: 'Node or npm resolves from /mnt, so the CLI is mixing Windows tools with the WSL environment.',
89
+ fix: 'Install Node 24 and npm inside WSL, then ensure the Linux binaries appear first on PATH.',
90
+ next: 'command -v node && command -v npm',
91
+ });
92
+ }
93
+ return checks;
94
+ }
95
+ export function findExecutableOnPath(name, pathValue) {
96
+ if (!pathValue)
97
+ return undefined;
98
+ for (const directory of pathValue.split(delimiter)) {
99
+ if (!directory)
100
+ continue;
101
+ for (const candidateName of [name, `${name}.cmd`, `${name}.exe`]) {
102
+ const candidate = join(directory, candidateName);
103
+ if (existsSync(candidate))
104
+ return candidate;
105
+ }
106
+ }
107
+ return undefined;
108
+ }
109
+ function isWsl(platform, env, kernelRelease) {
110
+ return (platform === 'linux' &&
111
+ (env.WSL_DISTRO_NAME !== undefined ||
112
+ env.WSL_INTEROP !== undefined ||
113
+ /microsoft|wsl/i.test(kernelRelease)));
114
+ }
115
+ function isMountedWindowsPath(path) {
116
+ return path !== undefined && MOUNTED_WINDOWS_PATH.test(path);
117
+ }
118
+ //# sourceMappingURL=platform-support.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-support.js","sourceRoot":"","sources":["../src/platform-support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAC3F,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAoBtD,MAAM,UAAU,sBAAsB,CACpC,IAAuB,EACvB,QAAyB;IAEzB,IAAI,QAAQ,KAAK,OAAO,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAAE,OAAO,SAAS,CAAC;IACpF,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,2DAA2D;QACpE,KAAK,EAAE,8DAA8D;QACrE,GAAG,EAAE,kEAAkE;QACvE,IAAI,EAAE,yBAAyB;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,IAAuB,EACvB,QAAyB;IAEzB,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACvD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1E,OAAO,CAAC,KAAK,CACX;QACE,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE;QACrC,UAAU,OAAO,CAAC,KAAK,EAAE;QACzB,QAAQ,OAAO,CAAC,GAAG,EAAE;QACrB,SAAS,OAAO,CAAC,IAAI,EAAE;KACxB,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACF,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAuB;IACvD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtE,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,KAAK,SAAS,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxE,MAAM,MAAM,GAA0B;QACpC,CAAC,MAAM;YACL,CAAC,CAAC;gBACE,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,6BAA6B,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACpE,KAAK,EAAE,wDAAwD;gBAC/D,GAAG,EAAE,8CAA8C;gBACnD,IAAI,EACF,MAAM,KAAK,SAAS;oBAClB,CAAC,CAAC,yBAAyB,MAAM,IAAI;oBACrC,CAAC,CAAC,iCAAiC;aACxC;YACH,CAAC,CAAC,MAAM,KAAK,SAAS;gBACpB,CAAC,CAAC;oBACE,KAAK,EAAE,MAAM;oBACb,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,qCAAqC;oBAC9C,KAAK,EAAE,wDAAwD;oBAC/D,GAAG,EAAE,0CAA0C;oBAC/C,IAAI,EAAE,0BAA0B;iBACjC;gBACH,CAAC,CAAC,CAAC,QAAQ;oBACT,CAAC,CAAC;wBACE,KAAK,EAAE,MAAM;wBACb,IAAI,EAAE,UAAU;wBAChB,OAAO,EAAE,8BAA8B,MAAM,GAAG;wBAChD,KAAK,EAAE,wDAAwD;wBAC/D,GAAG,EAAE,0DAA0D;wBAC/D,IAAI,EAAE,6BAA6B;qBACpC;oBACH,CAAC,CAAC;wBACE,KAAK,EAAE,MAAM;wBACb,IAAI,EAAE,UAAU;wBAChB,OAAO,EAAE,SAAS,MAAM,GAAG;qBAC5B;KACV,CAAC;IAEF,IAAI,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,KAAK,CAAC,GAAG;YAClB,KAAK,EACH,kHAAkH;YACpH,GAAG,EAAE,mEAAmE;YACxE,IAAI,EAAE,gBAAgB;SACvB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAChF,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,mCAAmC;YAC5C,KAAK,EACH,8FAA8F;YAChG,GAAG,EAAE,0FAA0F;YAC/F,IAAI,EAAE,mCAAmC;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,IAAY,EACZ,SAA6B;IAE7B,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,KAAK,MAAM,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC,SAAS;YAAE,SAAS;QACzB,KAAK,MAAM,aAAa,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC;YACjE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YACjD,IAAI,UAAU,CAAC,SAAS,CAAC;gBAAE,OAAO,SAAS,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,KAAK,CAAC,QAAyB,EAAE,GAAsB,EAAE,aAAqB;IACrF,OAAO,CACL,QAAQ,KAAK,OAAO;QACpB,CAAC,GAAG,CAAC,eAAe,KAAK,SAAS;YAChC,GAAG,CAAC,WAAW,KAAK,SAAS;YAC7B,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CACxC,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAwB;IACpD,OAAO,IAAI,KAAK,SAAS,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-meter-schema.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-meter-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAe3C,uGAAuG;AACvG,wBAAsB,8BAA8B,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAoa9E;AAED,wBAAsB,kCAAkC,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAY/F;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAK7D"}
1
+ {"version":3,"file":"postgres-meter-schema.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-meter-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAgB3C,uGAAuG;AACvG,wBAAsB,8BAA8B,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAqa9E;AAED,wBAAsB,kCAAkC,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAY/F;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAK7D"}
@@ -2,6 +2,7 @@ import { BILLING_METER_AGGREGATE_RETENTION_MONTHS, BILLING_METER_EXACT_KEY_TOMBS
2
2
  import { readBillingMeterTransactionTime } from './postgres-meter-clock.js';
3
3
  import { ensureBillingMeterReceiptIntegritySchema, ensureBillingMeterWindowRegistrySchema, } from './postgres-meter-window-schema.js';
4
4
  import { ensureBillingOverageEvidenceSchema } from './postgres-overage-evidence-schema.js';
5
+ import { ensureBillingStripeOverageSchema } from './postgres-stripe-overage-schema.js';
5
6
  /** Additive, inactive storage for validation and readiness evidence. Never activates a meter epoch. */
6
7
  export async function ensureAuthoritativeMeterSchema(pool) {
7
8
  await pool.query(`
@@ -419,6 +420,7 @@ export async function ensureAuthoritativeMeterSchema(pool) {
419
420
  )
420
421
  `);
421
422
  await ensureBillingOverageEvidenceSchema(pool);
423
+ await ensureBillingStripeOverageSchema(pool);
422
424
  await ensureAuthoritativeMeterPartitions(pool);
423
425
  }
424
426
  export async function ensureAuthoritativeMeterPartitions(pool) {
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-meter-schema.js","sourceRoot":"","sources":["../../src/billing/postgres-meter-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgres-meter-schema.js","sourceRoot":"","sources":["../../src/billing/postgres-meter-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Pool } from 'pg';
2
+ /** Additive, mode-bound Stripe settlement state. Closure evidence remains immutable and provider-neutral. */
3
+ export declare function ensureBillingStripeOverageSchema(pool: Pool): Promise<void>;
4
+ //# sourceMappingURL=postgres-stripe-overage-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-stripe-overage-schema.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-stripe-overage-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE/B,6GAA6G;AAC7G,wBAAsB,gCAAgC,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAuEhF"}
@@ -0,0 +1,74 @@
1
+ /** Additive, mode-bound Stripe settlement state. Closure evidence remains immutable and provider-neutral. */
2
+ export async function ensureBillingStripeOverageSchema(pool) {
3
+ await pool.query(`
4
+ CREATE TABLE IF NOT EXISTS billing_stripe_overage_settlements (
5
+ closure_id text PRIMARY KEY
6
+ REFERENCES billing_overage_window_closures(closure_id) ON DELETE RESTRICT,
7
+ mode text NOT NULL CHECK (mode IN ('sandbox', 'live')),
8
+ billing_account_id text NOT NULL REFERENCES billing_accounts(id) ON DELETE RESTRICT,
9
+ customer_id text NOT NULL,
10
+ overage_product_id text NOT NULL CHECK (overage_product_id LIKE 'prod\\_%' ESCAPE '\\'),
11
+ overage_price_id text NOT NULL CHECK (overage_price_id LIKE 'price\\_%' ESCAPE '\\'),
12
+ stage text NOT NULL CHECK (
13
+ stage IN ('invoice_pending', 'invoice_created', 'item_created', 'finalized',
14
+ 'review_required')
15
+ ),
16
+ attempt_count integer NOT NULL CHECK (attempt_count > 0),
17
+ lease_expires_at timestamptz,
18
+ retry_after timestamptz NOT NULL,
19
+ invoice_id text,
20
+ invoice_item_id text,
21
+ provider_status text CHECK (
22
+ provider_status IS NULL OR
23
+ provider_status IN ('draft', 'open', 'paid', 'void', 'uncollectible')
24
+ ),
25
+ amount_due_minor bigint CHECK (amount_due_minor IS NULL OR amount_due_minor >= 0),
26
+ amount_paid_minor bigint CHECK (amount_paid_minor IS NULL OR amount_paid_minor >= 0),
27
+ last_error_code text,
28
+ first_claimed_at timestamptz NOT NULL,
29
+ updated_at timestamptz NOT NULL CHECK (updated_at >= first_claimed_at),
30
+ FOREIGN KEY (billing_account_id, mode)
31
+ REFERENCES billing_stripe_customers(billing_account_id, mode) ON DELETE RESTRICT,
32
+ FOREIGN KEY (mode, customer_id)
33
+ REFERENCES billing_stripe_customers(mode, customer_id) ON DELETE RESTRICT,
34
+ CHECK (invoice_id IS NULL OR invoice_id LIKE 'in\\_%' ESCAPE '\\'),
35
+ CHECK (invoice_item_id IS NULL OR invoice_item_id LIKE 'ii\\_%' ESCAPE '\\'),
36
+ CHECK (last_error_code IS NULL OR (
37
+ length(last_error_code) BETWEEN 1 AND 80 AND
38
+ last_error_code ~ '^[a-z0-9_]+$'
39
+ )),
40
+ CHECK (
41
+ (stage = 'invoice_pending' AND invoice_id IS NULL AND invoice_item_id IS NULL) OR
42
+ (stage = 'invoice_created' AND invoice_id IS NOT NULL AND invoice_item_id IS NULL) OR
43
+ (stage = 'item_created' AND invoice_id IS NOT NULL AND invoice_item_id IS NOT NULL) OR
44
+ (stage = 'finalized' AND invoice_id IS NOT NULL AND invoice_item_id IS NOT NULL AND
45
+ provider_status IS NOT NULL AND provider_status <> 'draft' AND
46
+ amount_due_minor IS NOT NULL AND amount_paid_minor IS NOT NULL) OR
47
+ stage = 'review_required'
48
+ ),
49
+ CHECK (stage <> 'finalized' OR lease_expires_at IS NULL),
50
+ CHECK (stage <> 'review_required' OR lease_expires_at IS NULL)
51
+ )
52
+ `);
53
+ await pool.query(`
54
+ CREATE UNIQUE INDEX IF NOT EXISTS billing_stripe_overage_settlements_invoice_key
55
+ ON billing_stripe_overage_settlements(mode, invoice_id)
56
+ WHERE invoice_id IS NOT NULL
57
+ `);
58
+ await pool.query(`
59
+ CREATE UNIQUE INDEX IF NOT EXISTS billing_stripe_overage_settlements_item_key
60
+ ON billing_stripe_overage_settlements(mode, invoice_item_id)
61
+ WHERE invoice_item_id IS NOT NULL
62
+ `);
63
+ await pool.query(`
64
+ CREATE UNIQUE INDEX IF NOT EXISTS billing_stripe_overage_settlements_account_unfinished_key
65
+ ON billing_stripe_overage_settlements(mode, billing_account_id)
66
+ WHERE stage <> 'finalized'
67
+ `);
68
+ await pool.query(`
69
+ CREATE INDEX IF NOT EXISTS billing_stripe_overage_settlements_retry_key
70
+ ON billing_stripe_overage_settlements(mode, retry_after, updated_at)
71
+ WHERE stage NOT IN ('finalized', 'review_required')
72
+ `);
73
+ }
74
+ //# sourceMappingURL=postgres-stripe-overage-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-stripe-overage-schema.js","sourceRoot":"","sources":["../../src/billing/postgres-stripe-overage-schema.ts"],"names":[],"mappings":"AAEA,6GAA6G;AAC7G,MAAM,CAAC,KAAK,UAAU,gCAAgC,CAAC,IAAU;IAC/D,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { Pool } from 'pg';
2
+ import type { BillingStripeOverageProviderStatus, BillingStripeOverageSettlementClaim, BillingStripeOverageStore } from './stripe-overage-store.js';
3
+ export declare class PostgresBillingStripeOverageStore implements BillingStripeOverageStore {
4
+ #private;
5
+ constructor(pool: Pool);
6
+ claimNext(input: Parameters<BillingStripeOverageStore['claimNext']>[0]): Promise<BillingStripeOverageSettlementClaim | undefined>;
7
+ recordInvoice(claim: BillingStripeOverageSettlementClaim, input: {
8
+ readonly invoiceId: string;
9
+ readonly recordedAt: string;
10
+ }): Promise<BillingStripeOverageSettlementClaim>;
11
+ recordItem(claim: BillingStripeOverageSettlementClaim, input: {
12
+ readonly invoiceItemId: string;
13
+ readonly recordedAt: string;
14
+ }): Promise<BillingStripeOverageSettlementClaim>;
15
+ complete(claim: BillingStripeOverageSettlementClaim, input: {
16
+ readonly providerStatus: Exclude<BillingStripeOverageProviderStatus, 'draft'>;
17
+ readonly amountDueMinor: number;
18
+ readonly amountPaidMinor: number;
19
+ readonly completedAt: string;
20
+ }): Promise<BillingStripeOverageSettlementClaim>;
21
+ fail(claim: BillingStripeOverageSettlementClaim, input: {
22
+ readonly errorCode: string;
23
+ readonly failedAt: string;
24
+ readonly retryAt: string;
25
+ }): Promise<void>;
26
+ requireReview(claim: BillingStripeOverageSettlementClaim, input: {
27
+ readonly errorCode: string;
28
+ readonly reviewedAt: string;
29
+ }): Promise<void>;
30
+ }
31
+ //# sourceMappingURL=postgres-stripe-overage-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-stripe-overage-store.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-stripe-overage-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAA2C,MAAM,IAAI,CAAC;AAMxE,OAAO,KAAK,EACV,kCAAkC,EAClC,mCAAmC,EAEnC,yBAAyB,EAC1B,MAAM,2BAA2B,CAAC;AA4CnC,qBAAa,iCAAkC,YAAW,yBAAyB;;gBAGrE,IAAI,EAAE,IAAI;IAIhB,SAAS,CACb,KAAK,EAAE,UAAU,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAC3D,OAAO,CAAC,mCAAmC,GAAG,SAAS,CAAC;IAgHrD,aAAa,CACjB,KAAK,EAAE,mCAAmC,EAC1C,KAAK,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GACjE,OAAO,CAAC,mCAAmC,CAAC;IAUzC,UAAU,CACd,KAAK,EAAE,mCAAmC,EAC1C,KAAK,EAAE;QAAE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GACrE,OAAO,CAAC,mCAAmC,CAAC;IAUzC,QAAQ,CACZ,KAAK,EAAE,mCAAmC,EAC1C,KAAK,EAAE;QACL,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,kCAAkC,EAAE,OAAO,CAAC,CAAC;QAC9E,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,GACA,OAAO,CAAC,mCAAmC,CAAC;IAuBzC,IAAI,CACR,KAAK,EAAE,mCAAmC,EAC1C,KAAK,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GACzF,OAAO,CAAC,IAAI,CAAC;IAoBV,aAAa,CACjB,KAAK,EAAE,mCAAmC,EAC1C,KAAK,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GACjE,OAAO,CAAC,IAAI,CAAC;CAkDjB"}
@@ -0,0 +1,295 @@
1
+ import { parseBillingOverageWindowClosure, } from './overage-window-closure.js';
2
+ const CLAIM_LEASE_MS = 5 * 60 * 1_000;
3
+ export class PostgresBillingStripeOverageStore {
4
+ #pool;
5
+ constructor(pool) {
6
+ this.#pool = pool;
7
+ }
8
+ async claimNext(input) {
9
+ const client = await this.#pool.connect();
10
+ try {
11
+ await client.query('BEGIN');
12
+ const candidate = await client.query(`SELECT closure.closure_id, closure.billing_account_id, customer.customer_id
13
+ FROM billing_overage_window_closures AS closure
14
+ JOIN billing_stripe_customers AS customer
15
+ ON customer.billing_account_id = closure.billing_account_id
16
+ AND customer.mode = $1
17
+ LEFT JOIN billing_stripe_overage_settlements AS settlement
18
+ ON settlement.closure_id = closure.closure_id
19
+ WHERE closure.closed_at <= $2
20
+ AND (
21
+ settlement.closure_id IS NULL OR
22
+ (
23
+ settlement.mode = $1 AND
24
+ settlement.stage NOT IN ('finalized', 'review_required') AND
25
+ settlement.retry_after <= $2 AND
26
+ (settlement.lease_expires_at IS NULL OR settlement.lease_expires_at <= $2)
27
+ )
28
+ )
29
+ AND NOT EXISTS (
30
+ SELECT 1
31
+ FROM billing_stripe_overage_settlements AS unfinished
32
+ WHERE unfinished.mode = $1
33
+ AND unfinished.billing_account_id = closure.billing_account_id
34
+ AND unfinished.closure_id <> closure.closure_id
35
+ AND unfinished.stage <> 'finalized'
36
+ )
37
+ AND NOT EXISTS (
38
+ SELECT 1
39
+ FROM jsonb_array_elements(closure.sources) AS source
40
+ WHERE NOT EXISTS (
41
+ SELECT 1
42
+ FROM billing_stripe_subscription_bindings AS binding
43
+ WHERE binding.mode = $1
44
+ AND binding.billing_account_id = closure.billing_account_id
45
+ AND binding.customer_id = customer.customer_id
46
+ AND binding.internal_subscription_id = source->>'subscriptionId'
47
+ )
48
+ )
49
+ AND NOT EXISTS (
50
+ SELECT 1
51
+ FROM jsonb_array_elements(closure.sources) AS source
52
+ JOIN billing_stripe_subscription_bindings AS binding
53
+ ON binding.mode = $1
54
+ AND binding.billing_account_id = closure.billing_account_id
55
+ AND binding.internal_subscription_id = source->>'subscriptionId'
56
+ WHERE binding.customer_id <> customer.customer_id
57
+ )
58
+ ORDER BY closure.closed_at, closure.closure_id
59
+ LIMIT 1
60
+ FOR UPDATE OF closure SKIP LOCKED`, [input.mode, input.claimedAt]);
61
+ const selected = candidate.rows[0];
62
+ if (selected === undefined) {
63
+ await client.query('COMMIT');
64
+ return undefined;
65
+ }
66
+ const leaseExpiresAt = plusMilliseconds(input.claimedAt, CLAIM_LEASE_MS);
67
+ const inserted = await client.query(`INSERT INTO billing_stripe_overage_settlements
68
+ (closure_id, mode, billing_account_id, customer_id, overage_product_id,
69
+ overage_price_id, stage, attempt_count, lease_expires_at, retry_after,
70
+ first_claimed_at, updated_at)
71
+ VALUES ($1, $2, $3, $4, $5, $6, 'invoice_pending', 1, $7, $8, $8, $8)
72
+ ON CONFLICT DO NOTHING`, [
73
+ selected.closure_id,
74
+ input.mode,
75
+ selected.billing_account_id,
76
+ selected.customer_id,
77
+ input.overageProductId,
78
+ input.overagePriceId,
79
+ leaseExpiresAt,
80
+ input.claimedAt,
81
+ ]);
82
+ if (inserted.rowCount === 0) {
83
+ const updated = await client.query(`UPDATE billing_stripe_overage_settlements
84
+ SET attempt_count = attempt_count + 1,
85
+ lease_expires_at = $3,
86
+ updated_at = $2
87
+ WHERE closure_id = $1 AND mode = $4
88
+ AND stage NOT IN ('finalized', 'review_required')
89
+ AND retry_after <= $2
90
+ AND (lease_expires_at IS NULL OR lease_expires_at <= $2)`, [selected.closure_id, input.claimedAt, leaseExpiresAt, input.mode]);
91
+ if (updated.rowCount !== 1) {
92
+ await client.query('COMMIT');
93
+ return undefined;
94
+ }
95
+ }
96
+ const claim = await readClaim(client, selected.closure_id, input.mode);
97
+ await client.query('COMMIT');
98
+ return claim;
99
+ }
100
+ catch (error) {
101
+ await rollback(client);
102
+ throw error;
103
+ }
104
+ finally {
105
+ client.release();
106
+ }
107
+ }
108
+ async recordInvoice(claim, input) {
109
+ return this.#advance(claim, {
110
+ expectedStage: 'invoice_pending',
111
+ nextStage: 'invoice_created',
112
+ timestamp: input.recordedAt,
113
+ assignment: "invoice_id = $4, provider_status = 'draft'",
114
+ value: input.invoiceId,
115
+ });
116
+ }
117
+ async recordItem(claim, input) {
118
+ return this.#advance(claim, {
119
+ expectedStage: 'invoice_created',
120
+ nextStage: 'item_created',
121
+ timestamp: input.recordedAt,
122
+ assignment: 'invoice_item_id = $4',
123
+ value: input.invoiceItemId,
124
+ });
125
+ }
126
+ async complete(claim, input) {
127
+ const result = await this.#pool.query(`UPDATE billing_stripe_overage_settlements
128
+ SET stage = 'finalized', provider_status = $4,
129
+ amount_due_minor = $5, amount_paid_minor = $6,
130
+ lease_expires_at = NULL, retry_after = $3,
131
+ last_error_code = NULL, updated_at = $3
132
+ WHERE closure_id = $1 AND mode = $2 AND attempt_count = $7
133
+ AND stage = 'item_created' AND lease_expires_at IS NOT NULL`, [
134
+ claim.closure.closureId,
135
+ claim.mode,
136
+ input.completedAt,
137
+ input.providerStatus,
138
+ input.amountDueMinor,
139
+ input.amountPaidMinor,
140
+ claim.attempt,
141
+ ]);
142
+ requireChanged(result.rowCount);
143
+ return readClaim(this.#pool, claim.closure.closureId, claim.mode);
144
+ }
145
+ async fail(claim, input) {
146
+ const result = await this.#pool.query(`UPDATE billing_stripe_overage_settlements
147
+ SET lease_expires_at = NULL, retry_after = $4,
148
+ last_error_code = $3, updated_at = $5
149
+ WHERE closure_id = $1 AND mode = $2 AND attempt_count = $6
150
+ AND stage NOT IN ('finalized', 'review_required')
151
+ AND lease_expires_at IS NOT NULL`, [
152
+ claim.closure.closureId,
153
+ claim.mode,
154
+ errorCode(input.errorCode),
155
+ input.retryAt,
156
+ input.failedAt,
157
+ claim.attempt,
158
+ ]);
159
+ requireChanged(result.rowCount);
160
+ }
161
+ async requireReview(claim, input) {
162
+ const result = await this.#pool.query(`UPDATE billing_stripe_overage_settlements
163
+ SET stage = 'review_required', lease_expires_at = NULL, retry_after = $3,
164
+ last_error_code = $4, updated_at = $3
165
+ WHERE closure_id = $1 AND mode = $2 AND attempt_count = $5
166
+ AND stage NOT IN ('finalized', 'review_required')
167
+ AND lease_expires_at IS NOT NULL`, [
168
+ claim.closure.closureId,
169
+ claim.mode,
170
+ input.reviewedAt,
171
+ errorCode(input.errorCode),
172
+ claim.attempt,
173
+ ]);
174
+ requireChanged(result.rowCount);
175
+ }
176
+ async #advance(claim, input) {
177
+ const leaseExpiresAt = plusMilliseconds(input.timestamp, CLAIM_LEASE_MS);
178
+ const result = await this.#pool.query(`UPDATE billing_stripe_overage_settlements
179
+ SET stage = $3, ${input.assignment}, lease_expires_at = $5,
180
+ retry_after = $6, last_error_code = NULL, updated_at = $6
181
+ WHERE closure_id = $1 AND mode = $2 AND attempt_count = $7
182
+ AND stage = $8 AND lease_expires_at IS NOT NULL`, [
183
+ claim.closure.closureId,
184
+ claim.mode,
185
+ input.nextStage,
186
+ input.value,
187
+ leaseExpiresAt,
188
+ input.timestamp,
189
+ claim.attempt,
190
+ input.expectedStage,
191
+ ]);
192
+ requireChanged(result.rowCount);
193
+ return readClaim(this.#pool, claim.closure.closureId, claim.mode);
194
+ }
195
+ }
196
+ async function readClaim(queryable, closureId, mode) {
197
+ const result = await queryable.query(`SELECT settlement.mode, settlement.overage_product_id, settlement.overage_price_id,
198
+ settlement.stage, settlement.attempt_count, settlement.first_claimed_at,
199
+ settlement.invoice_id, settlement.invoice_item_id, settlement.provider_status,
200
+ settlement.customer_id,
201
+ ARRAY(
202
+ SELECT provenance.provider_subscription_id
203
+ FROM (
204
+ SELECT binding.provider_subscription_id,
205
+ max((source->>'subscriptionVersion')::integer) AS subscription_version
206
+ FROM jsonb_array_elements(closure.sources) AS source
207
+ JOIN billing_stripe_subscription_bindings AS binding
208
+ ON binding.mode = settlement.mode
209
+ AND binding.billing_account_id = closure.billing_account_id
210
+ AND binding.customer_id = settlement.customer_id
211
+ AND binding.internal_subscription_id = source->>'subscriptionId'
212
+ GROUP BY binding.provider_subscription_id
213
+ ) AS provenance
214
+ ORDER BY provenance.subscription_version, provenance.provider_subscription_id
215
+ ) AS provider_subscription_ids,
216
+ closure.schema_version, closure.closure_id, closure.epoch_id,
217
+ closure.billing_account_id, closure.window_start, closure.window_end,
218
+ closure.reconciliation_run_id, closure.policy_kind, closure.overage_calls::text,
219
+ closure.block_calls, closure.block_amount_minor, closure.currency, closure.rounding,
220
+ closure.billable_blocks::text, closure.amount_minor::text, closure.sources,
221
+ closure.source_checksum, closure.closed_at, closure.content_checksum
222
+ FROM billing_stripe_overage_settlements AS settlement
223
+ JOIN billing_overage_window_closures AS closure ON closure.closure_id = settlement.closure_id
224
+ WHERE settlement.closure_id = $1 AND settlement.mode = $2`, [closureId, mode]);
225
+ const row = result.rows[0];
226
+ if (row === undefined)
227
+ throw new Error('Stripe overage settlement claim is unavailable');
228
+ return Object.freeze({
229
+ mode: row.mode,
230
+ closure: parseClosure(row),
231
+ customerId: row.customer_id,
232
+ overageProductId: row.overage_product_id,
233
+ overagePriceId: row.overage_price_id,
234
+ providerSubscriptionIds: Object.freeze([...row.provider_subscription_ids]),
235
+ stage: row.stage,
236
+ attempt: row.attempt_count,
237
+ firstClaimedAt: timestamp(row.first_claimed_at),
238
+ invoiceId: row.invoice_id,
239
+ invoiceItemId: row.invoice_item_id,
240
+ providerStatus: row.provider_status,
241
+ });
242
+ }
243
+ function parseClosure(row) {
244
+ return parseBillingOverageWindowClosure({
245
+ schemaVersion: row.schema_version,
246
+ closureId: row.closure_id,
247
+ epochId: row.epoch_id,
248
+ billingAccountId: row.billing_account_id,
249
+ windowStart: timestamp(row.window_start),
250
+ windowEnd: timestamp(row.window_end),
251
+ reconciliationRunId: row.reconciliation_run_id,
252
+ policyKind: row.policy_kind,
253
+ overageCalls: row.overage_calls,
254
+ blockCalls: row.block_calls,
255
+ blockAmountMinor: row.block_amount_minor,
256
+ currency: row.currency,
257
+ rounding: row.rounding,
258
+ billableBlocks: row.billable_blocks,
259
+ amountMinor: row.amount_minor,
260
+ sources: row.sources,
261
+ sourceChecksum: row.source_checksum,
262
+ closedAt: timestamp(row.closed_at),
263
+ contentChecksum: row.content_checksum,
264
+ });
265
+ }
266
+ function plusMilliseconds(value, milliseconds) {
267
+ const time = new Date(value).getTime();
268
+ if (!Number.isFinite(time))
269
+ throw new Error('Stripe overage settlement timestamp is invalid');
270
+ return new Date(time + milliseconds).toISOString();
271
+ }
272
+ function timestamp(value) {
273
+ const instant = value instanceof Date ? value : new Date(value);
274
+ if (Number.isNaN(instant.getTime()))
275
+ throw new Error('Stripe overage settlement timestamp is invalid');
276
+ return instant.toISOString();
277
+ }
278
+ function errorCode(value) {
279
+ if (!/^[a-z0-9_]{1,80}$/.test(value))
280
+ throw new Error('Stripe overage error code is invalid');
281
+ return value;
282
+ }
283
+ function requireChanged(rowCount) {
284
+ if (rowCount !== 1)
285
+ throw new Error('Stripe overage settlement claim changed concurrently');
286
+ }
287
+ async function rollback(client) {
288
+ try {
289
+ await client.query('ROLLBACK');
290
+ }
291
+ catch {
292
+ // Preserve the original transaction error.
293
+ }
294
+ }
295
+ //# sourceMappingURL=postgres-stripe-overage-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-stripe-overage-store.js","sourceRoot":"","sources":["../../src/billing/postgres-stripe-overage-store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-stripe-schema.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-stripe-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE/B,+FAA+F;AAC/F,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA6GzE"}
1
+ {"version":3,"file":"postgres-stripe-schema.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-stripe-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE/B,+FAA+F;AAC/F,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA0HzE"}
@@ -75,6 +75,19 @@ export async function ensureBillingStripeSchema(pool) {
75
75
  CREATE UNIQUE INDEX IF NOT EXISTS billing_stripe_subscription_bindings_active_account_key
76
76
  ON billing_stripe_subscription_bindings(mode, billing_account_id)
77
77
  WHERE active
78
+ `);
79
+ await pool.query(`
80
+ UPDATE billing_stripe_checkout_operations AS checkout
81
+ SET active = false
82
+ WHERE checkout.active
83
+ AND EXISTS (
84
+ SELECT 1
85
+ FROM billing_stripe_subscription_bindings AS binding
86
+ WHERE binding.mode = checkout.mode
87
+ AND binding.billing_account_id = checkout.billing_account_id
88
+ AND binding.customer_id = checkout.customer_id
89
+ AND binding.created_at >= checkout.created_at
90
+ )
78
91
  `);
79
92
  await pool.query(`
80
93
  CREATE TABLE IF NOT EXISTS billing_stripe_events (
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-stripe-schema.js","sourceRoot":"","sources":["../../src/billing/postgres-stripe-schema.ts"],"names":[],"mappings":"AAEA,+FAA+F;AAC/F,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAAU;IACxD,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;GAUhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;GAmBhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;GAahB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;GAoBhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"postgres-stripe-schema.js","sourceRoot":"","sources":["../../src/billing/postgres-stripe-schema.ts"],"names":[],"mappings":"AAEA,+FAA+F;AAC/F,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAAU;IACxD,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;GAUhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;GAmBhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;GAahB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;GAoBhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;GAYhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BhB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,KAAK,CAAC;;;;GAIhB,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-stripe-store.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-stripe-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,IAAI,CAAC;AAoB3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EACV,2BAA2B,EAC3B,uBAAuB,EACvB,4BAA4B,EAC5B,gCAAgC,EAChC,kBAAkB,EAClB,gCAAgC,EACjC,MAAM,mBAAmB,CAAC;AAG3B,qBAAa,0BAA2B,YAAW,kBAAkB;;gBAIvD,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;QAAE,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAA;KAAE;IAQ1E,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB;IAQ7D,WAAW,CAAC,MAAM,EAAE,2BAA2B;IAe/C,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAI3E,gBAAgB,CACpB,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAChE,MAAM,EAAE,UAAU,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAKzD,oBAAoB,CACxB,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,GACnE,OAAO,CAAC,IAAI,CAAC;IAIV,UAAU,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAIjF,aAAa,CACjB,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAIV,SAAS,CACb,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAIV,2BAA2B,CAC/B,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,GACtE,OAAO,CAAC,gCAAgC,CAAC;IAgEtC,4BAA4B,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB;IAW9E,8BAA8B,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM;IAgBrE,8BAA8B,CAClC,OAAO,EAAE,gCAAgC,EACzC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IAgBV,sBAAsB,CAC1B,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,gCAAgC,CAAC;IAgFtC,yBAAyB,CAC7B,OAAO,EAAE,gCAAgC,EACzC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;CAgBjB"}
1
+ {"version":3,"file":"postgres-stripe-store.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-stripe-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,IAAI,CAAC;AAoB3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EACV,2BAA2B,EAC3B,uBAAuB,EACvB,4BAA4B,EAC5B,gCAAgC,EAChC,kBAAkB,EAClB,gCAAgC,EACjC,MAAM,mBAAmB,CAAC;AAG3B,qBAAa,0BAA2B,YAAW,kBAAkB;;gBAIvD,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;QAAE,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAA;KAAE;IAQ1E,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB;IAQ7D,WAAW,CAAC,MAAM,EAAE,2BAA2B;IAe/C,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAI3E,gBAAgB,CACpB,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAChE,MAAM,EAAE,UAAU,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAKzD,oBAAoB,CACxB,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,GACnE,OAAO,CAAC,IAAI,CAAC;IAIV,UAAU,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAIjF,aAAa,CACjB,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAIV,SAAS,CACb,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAIV,2BAA2B,CAC/B,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,GACtE,OAAO,CAAC,gCAAgC,CAAC;IAuEtC,4BAA4B,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB;IAW9E,8BAA8B,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM;IAgBrE,8BAA8B,CAClC,OAAO,EAAE,gCAAgC,EACzC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IAgBV,sBAAsB,CAC1B,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,gCAAgC,CAAC;IAgFtC,yBAAyB,CAC7B,OAAO,EAAE,gCAAgC,EACzC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;CAgBjB"}