@package-broker/cli 0.19.8 → 2.0.0-rc.2

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 (193) hide show
  1. package/LICENSE +661 -0
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/bin.d.ts +3 -0
  4. package/dist/bin.d.ts.map +1 -0
  5. package/dist/bin.js +12 -0
  6. package/dist/bin.js.map +1 -0
  7. package/dist/build-artifacts.d.ts +27 -0
  8. package/dist/build-artifacts.d.ts.map +1 -0
  9. package/dist/build-artifacts.js +169 -0
  10. package/dist/build-artifacts.js.map +1 -0
  11. package/dist/build-assets.d.ts +36 -0
  12. package/dist/build-assets.d.ts.map +1 -0
  13. package/dist/build-assets.js +224 -0
  14. package/dist/build-assets.js.map +1 -0
  15. package/dist/build.d.ts +31 -0
  16. package/dist/build.d.ts.map +1 -0
  17. package/dist/build.js +277 -0
  18. package/dist/build.js.map +1 -0
  19. package/dist/cli.d.ts +2 -0
  20. package/dist/cli.d.ts.map +1 -0
  21. package/dist/cli.js +828 -0
  22. package/dist/cli.js.map +1 -0
  23. package/dist/cloudflare/d1-http-executor.d.ts +30 -0
  24. package/dist/cloudflare/d1-http-executor.d.ts.map +1 -0
  25. package/dist/cloudflare/d1-http-executor.js +230 -0
  26. package/dist/cloudflare/d1-http-executor.js.map +1 -0
  27. package/dist/cloudflare/d1-http-response.d.ts +4 -0
  28. package/dist/cloudflare/d1-http-response.d.ts.map +1 -0
  29. package/dist/cloudflare/d1-http-response.js +113 -0
  30. package/dist/cloudflare/d1-http-response.js.map +1 -0
  31. package/dist/commands/admin.d.ts +47 -0
  32. package/dist/commands/admin.d.ts.map +1 -0
  33. package/dist/commands/admin.js +447 -0
  34. package/dist/commands/admin.js.map +1 -0
  35. package/dist/commands/built-manifest.d.ts +13 -0
  36. package/dist/commands/built-manifest.d.ts.map +1 -0
  37. package/dist/commands/built-manifest.js +197 -0
  38. package/dist/commands/built-manifest.js.map +1 -0
  39. package/dist/commands/cloudflare/api.d.ts +132 -0
  40. package/dist/commands/cloudflare/api.d.ts.map +1 -0
  41. package/dist/commands/cloudflare/api.js +502 -0
  42. package/dist/commands/cloudflare/api.js.map +1 -0
  43. package/dist/commands/cloudflare/deploy.d.ts +111 -0
  44. package/dist/commands/cloudflare/deploy.d.ts.map +1 -0
  45. package/dist/commands/cloudflare/deploy.js +2170 -0
  46. package/dist/commands/cloudflare/deploy.js.map +1 -0
  47. package/dist/commands/cloudflare/inventory.d.ts +257 -0
  48. package/dist/commands/cloudflare/inventory.d.ts.map +1 -0
  49. package/dist/commands/cloudflare/inventory.js +842 -0
  50. package/dist/commands/cloudflare/inventory.js.map +1 -0
  51. package/dist/commands/cloudflare/janitor.d.ts +10 -0
  52. package/dist/commands/cloudflare/janitor.d.ts.map +1 -0
  53. package/dist/commands/cloudflare/janitor.js +84 -0
  54. package/dist/commands/cloudflare/janitor.js.map +1 -0
  55. package/dist/commands/cloudflare/migrations-check.d.ts +5 -0
  56. package/dist/commands/cloudflare/migrations-check.d.ts.map +1 -0
  57. package/dist/commands/cloudflare/migrations-check.js +10 -0
  58. package/dist/commands/cloudflare/migrations-check.js.map +1 -0
  59. package/dist/commands/cloudflare/providers-file.d.ts +17 -0
  60. package/dist/commands/cloudflare/providers-file.d.ts.map +1 -0
  61. package/dist/commands/cloudflare/providers-file.js +155 -0
  62. package/dist/commands/cloudflare/providers-file.js.map +1 -0
  63. package/dist/commands/cloudflare/provision.d.ts +79 -0
  64. package/dist/commands/cloudflare/provision.d.ts.map +1 -0
  65. package/dist/commands/cloudflare/provision.js +961 -0
  66. package/dist/commands/cloudflare/provision.js.map +1 -0
  67. package/dist/commands/cloudflare/queue-consumer.d.ts +4 -0
  68. package/dist/commands/cloudflare/queue-consumer.d.ts.map +1 -0
  69. package/dist/commands/cloudflare/queue-consumer.js +57 -0
  70. package/dist/commands/cloudflare/queue-consumer.js.map +1 -0
  71. package/dist/commands/cloudflare/routes.d.ts +3 -0
  72. package/dist/commands/cloudflare/routes.d.ts.map +1 -0
  73. package/dist/commands/cloudflare/routes.js +26 -0
  74. package/dist/commands/cloudflare/routes.js.map +1 -0
  75. package/dist/commands/cloudflare/setup.d.ts +50 -0
  76. package/dist/commands/cloudflare/setup.d.ts.map +1 -0
  77. package/dist/commands/cloudflare/setup.js +836 -0
  78. package/dist/commands/cloudflare/setup.js.map +1 -0
  79. package/dist/commands/cloudflare/smoke.d.ts +29 -0
  80. package/dist/commands/cloudflare/smoke.d.ts.map +1 -0
  81. package/dist/commands/cloudflare/smoke.js +701 -0
  82. package/dist/commands/cloudflare/smoke.js.map +1 -0
  83. package/dist/commands/cloudflare/teardown.d.ts +65 -0
  84. package/dist/commands/cloudflare/teardown.d.ts.map +1 -0
  85. package/dist/commands/cloudflare/teardown.js +984 -0
  86. package/dist/commands/cloudflare/teardown.js.map +1 -0
  87. package/dist/commands/cloudflare/worker-settings.d.ts +4 -0
  88. package/dist/commands/cloudflare/worker-settings.d.ts.map +1 -0
  89. package/dist/commands/cloudflare/worker-settings.js +93 -0
  90. package/dist/commands/cloudflare/worker-settings.js.map +1 -0
  91. package/dist/commands/cloudflare/zone.d.ts +3 -0
  92. package/dist/commands/cloudflare/zone.d.ts.map +1 -0
  93. package/dist/commands/cloudflare/zone.js +73 -0
  94. package/dist/commands/cloudflare/zone.js.map +1 -0
  95. package/dist/commands/cloudflare.d.ts +55 -0
  96. package/dist/commands/cloudflare.d.ts.map +1 -0
  97. package/dist/commands/cloudflare.js +393 -0
  98. package/dist/commands/cloudflare.js.map +1 -0
  99. package/dist/commands/import-cutover.d.ts +5 -0
  100. package/dist/commands/import-cutover.d.ts.map +1 -0
  101. package/dist/commands/import-cutover.js +25 -0
  102. package/dist/commands/import-cutover.js.map +1 -0
  103. package/dist/commands/import-private-packagist.d.ts +38 -0
  104. package/dist/commands/import-private-packagist.d.ts.map +1 -0
  105. package/dist/commands/import-private-packagist.js +232 -0
  106. package/dist/commands/import-private-packagist.js.map +1 -0
  107. package/dist/commands/import-satis.d.ts +11 -0
  108. package/dist/commands/import-satis.d.ts.map +1 -0
  109. package/dist/commands/import-satis.js +112 -0
  110. package/dist/commands/import-satis.js.map +1 -0
  111. package/dist/commands/import.d.ts +22 -0
  112. package/dist/commands/import.d.ts.map +1 -0
  113. package/dist/commands/import.js +343 -0
  114. package/dist/commands/import.js.map +1 -0
  115. package/dist/commands/openapi-specs.d.ts +4 -0
  116. package/dist/commands/openapi-specs.d.ts.map +1 -0
  117. package/dist/commands/openapi-specs.js +94 -0
  118. package/dist/commands/openapi-specs.js.map +1 -0
  119. package/dist/commands/openapi.d.ts +12 -0
  120. package/dist/commands/openapi.d.ts.map +1 -0
  121. package/dist/commands/openapi.js +44 -0
  122. package/dist/commands/openapi.js.map +1 -0
  123. package/dist/commands/source.d.ts +8 -0
  124. package/dist/commands/source.d.ts.map +1 -0
  125. package/dist/commands/source.js +61 -0
  126. package/dist/commands/source.js.map +1 -0
  127. package/dist/commands/sqlite.d.ts +11 -0
  128. package/dist/commands/sqlite.d.ts.map +1 -0
  129. package/dist/commands/sqlite.js +76 -0
  130. package/dist/commands/sqlite.js.map +1 -0
  131. package/dist/import/client.d.ts +71 -0
  132. package/dist/import/client.d.ts.map +1 -0
  133. package/dist/import/client.js +348 -0
  134. package/dist/import/client.js.map +1 -0
  135. package/dist/import/credential-refs.d.ts +2 -0
  136. package/dist/import/credential-refs.d.ts.map +1 -0
  137. package/dist/import/credential-refs.js +22 -0
  138. package/dist/import/credential-refs.js.map +1 -0
  139. package/dist/import/cutover.d.ts +64 -0
  140. package/dist/import/cutover.d.ts.map +1 -0
  141. package/dist/import/cutover.js +544 -0
  142. package/dist/import/cutover.js.map +1 -0
  143. package/dist/import/private-packagist/api.d.ts +57 -0
  144. package/dist/import/private-packagist/api.d.ts.map +1 -0
  145. package/dist/import/private-packagist/api.js +246 -0
  146. package/dist/import/private-packagist/api.js.map +1 -0
  147. package/dist/import/private-packagist/dates.d.ts +30 -0
  148. package/dist/import/private-packagist/dates.d.ts.map +1 -0
  149. package/dist/import/private-packagist/dates.js +189 -0
  150. package/dist/import/private-packagist/dates.js.map +1 -0
  151. package/dist/import/private-packagist/map.d.ts +48 -0
  152. package/dist/import/private-packagist/map.d.ts.map +1 -0
  153. package/dist/import/private-packagist/map.js +162 -0
  154. package/dist/import/private-packagist/map.js.map +1 -0
  155. package/dist/import/private-packagist/plan.d.ts +61 -0
  156. package/dist/import/private-packagist/plan.d.ts.map +1 -0
  157. package/dist/import/private-packagist/plan.js +936 -0
  158. package/dist/import/private-packagist/plan.js.map +1 -0
  159. package/dist/import/private-packagist/snapshot.d.ts +31 -0
  160. package/dist/import/private-packagist/snapshot.d.ts.map +1 -0
  161. package/dist/import/private-packagist/snapshot.js +406 -0
  162. package/dist/import/private-packagist/snapshot.js.map +1 -0
  163. package/dist/import/satis.d.ts +93 -0
  164. package/dist/import/satis.d.ts.map +1 -0
  165. package/dist/import/satis.js +873 -0
  166. package/dist/import/satis.js.map +1 -0
  167. package/dist/index.d.ts +3 -2
  168. package/dist/index.d.ts.map +1 -1
  169. package/dist/index.js +3 -96
  170. package/dist/index.js.map +1 -1
  171. package/dist/manifest.d.ts +56 -0
  172. package/dist/manifest.d.ts.map +1 -0
  173. package/dist/manifest.js +137 -0
  174. package/dist/manifest.js.map +1 -0
  175. package/dist/migrations-collect.d.ts +6 -0
  176. package/dist/migrations-collect.d.ts.map +1 -0
  177. package/dist/migrations-collect.js +39 -0
  178. package/dist/migrations-collect.js.map +1 -0
  179. package/dist/prebuilt-expected.json +7 -0
  180. package/dist/prebuilt.d.ts +27 -0
  181. package/dist/prebuilt.d.ts.map +1 -0
  182. package/dist/prebuilt.js +391 -0
  183. package/dist/prebuilt.js.map +1 -0
  184. package/package.json +22 -25
  185. package/README.md +0 -29
  186. package/dist/__tests__/migrate.test.d.ts +0 -2
  187. package/dist/__tests__/migrate.test.d.ts.map +0 -1
  188. package/dist/__tests__/migrate.test.js +0 -116
  189. package/dist/__tests__/migrate.test.js.map +0 -1
  190. package/dist/migrate.d.ts +0 -40
  191. package/dist/migrate.d.ts.map +0 -1
  192. package/dist/migrate.js +0 -335
  193. package/dist/migrate.js.map +0 -1
@@ -0,0 +1,197 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { resolve, sep } from 'node:path';
3
+ import { diagnoseRoutes } from '../manifest.js';
4
+ import { planMigrations } from '@package-broker/db-sqlite/migrations/plan';
5
+ import { loadMigrationSource, } from '@package-broker/db-sqlite/migrations/source';
6
+ export class BuiltManifestError extends Error {
7
+ constructor(message) {
8
+ super(message);
9
+ this.name = 'BuiltManifestError';
10
+ }
11
+ }
12
+ export class LegacyRouteTableError extends BuiltManifestError {
13
+ constructor() {
14
+ super('manifest route table predates route boundaries; run pb build again');
15
+ this.name = 'LegacyRouteTableError';
16
+ }
17
+ }
18
+ const ID = /^([a-z0-9-]+):(\d{4}_[a-z0-9_]+)$/;
19
+ const NAME = /^\d{4}_[a-z0-9_]+\.sql$/;
20
+ const CHECKSUM = /^[0-9a-f]{64}$/;
21
+ function describeEntry(raw, index) {
22
+ const id = typeof raw === 'object' && raw !== null ? raw.id : undefined;
23
+ return typeof id === 'string' ? `entry ${index} (${JSON.stringify(id)})` : `entry ${index}`;
24
+ }
25
+ function parseEntry(raw, index) {
26
+ const label = describeEntry(raw, index);
27
+ if (typeof raw !== 'object' || raw === null || Array.isArray(raw)) {
28
+ throw new BuiltManifestError(`${label}: must be an object`);
29
+ }
30
+ const { id, name, checksum, phase } = raw;
31
+ if (typeof id !== 'string')
32
+ throw new BuiltManifestError(`${label}: id must be a string`);
33
+ if (typeof name !== 'string')
34
+ throw new BuiltManifestError(`${label}: name must be a string`);
35
+ if (typeof checksum !== 'string') {
36
+ throw new BuiltManifestError(`${label}: checksum must be a string`);
37
+ }
38
+ if (phase !== 'expand' && phase !== 'contract') {
39
+ throw new BuiltManifestError(`${label}: phase must be "expand" or "contract"`);
40
+ }
41
+ const idMatch = ID.exec(id);
42
+ if (idMatch === null)
43
+ throw new BuiltManifestError(`${label}: invalid id`);
44
+ if (!NAME.test(name))
45
+ throw new BuiltManifestError(`${label}: invalid name`);
46
+ if (!CHECKSUM.test(checksum)) {
47
+ throw new BuiltManifestError(`${label}: checksum must be 64 lowercase hex characters`);
48
+ }
49
+ const owner = idMatch[1];
50
+ if (id !== `${owner}:${name.slice(0, -'.sql'.length)}`) {
51
+ throw new BuiltManifestError(`${label}: id does not match name`);
52
+ }
53
+ return { id, name, checksum, phase, owner };
54
+ }
55
+ async function readManifest(outDir) {
56
+ const path = resolve(outDir, 'generated', 'manifest.json');
57
+ let parsed;
58
+ try {
59
+ parsed = JSON.parse(await readFile(path, 'utf8'));
60
+ }
61
+ catch (error) {
62
+ throw new BuiltManifestError(`cannot read manifest ${path}: ${error instanceof Error ? error.message : String(error)}`);
63
+ }
64
+ if (typeof parsed !== 'object' || parsed === null) {
65
+ throw new BuiltManifestError('manifest must be an object');
66
+ }
67
+ const { schemaVersion, migrations } = parsed;
68
+ if (schemaVersion !== 1)
69
+ throw new BuiltManifestError('manifest schemaVersion must be 1');
70
+ if (!Array.isArray(migrations))
71
+ throw new BuiltManifestError('manifest migrations must be an array');
72
+ return migrations;
73
+ }
74
+ async function loadEntry(root, entry, label) {
75
+ const path = resolve(root, entry.owner, entry.name);
76
+ if (!path.startsWith(root + sep)) {
77
+ throw new BuiltManifestError(`${label}: path escapes the migrations directory`);
78
+ }
79
+ let source;
80
+ try {
81
+ source = await loadMigrationSource(entry.owner, entry.name, await readFile(path, 'utf8'));
82
+ }
83
+ catch (error) {
84
+ throw new BuiltManifestError(`${label}: ${error instanceof Error ? error.message : String(error)}`);
85
+ }
86
+ if (source.checksum !== entry.checksum) {
87
+ throw new BuiltManifestError(`${label}: checksum does not match the file`);
88
+ }
89
+ if (source.phase !== entry.phase) {
90
+ throw new BuiltManifestError(`${label}: phase does not match the file`);
91
+ }
92
+ return source;
93
+ }
94
+ export async function loadBuiltMigrations(outDir) {
95
+ const rawEntries = await readManifest(outDir);
96
+ const root = resolve(outDir, 'migrations');
97
+ const seen = new Set();
98
+ const owners = [];
99
+ const sources = [];
100
+ for (const [index, raw] of rawEntries.entries()) {
101
+ const entry = parseEntry(raw, index);
102
+ const label = describeEntry(raw, index);
103
+ if (seen.has(entry.id))
104
+ throw new BuiltManifestError(`${label}: duplicate id`);
105
+ seen.add(entry.id);
106
+ if (!owners.includes(entry.owner))
107
+ owners.push(entry.owner);
108
+ sources.push(await loadEntry(root, entry, label));
109
+ }
110
+ try {
111
+ return await planMigrations(sources, owners);
112
+ }
113
+ catch (error) {
114
+ throw new BuiltManifestError(error instanceof Error ? error.message : String(error));
115
+ }
116
+ }
117
+ const PACKAGE_PLACEHOLDER = { ecosystem: 'composer', name: () => null };
118
+ function parseRoute(raw, index) {
119
+ const label = `route ${index}`;
120
+ if (typeof raw !== 'object' || raw === null || Array.isArray(raw)) {
121
+ throw new BuiltManifestError(`${label}: must be an object`);
122
+ }
123
+ const { method, path, plugin, permission, boundary, needsOrg } = raw;
124
+ const flag = raw.package;
125
+ if (typeof method !== 'string')
126
+ throw new BuiltManifestError(`${label}: method must be a string`);
127
+ if (typeof path !== 'string')
128
+ throw new BuiltManifestError(`${label}: path must be a string`);
129
+ if (typeof plugin !== 'string')
130
+ throw new BuiltManifestError(`${label}: plugin must be a string`);
131
+ if (permission !== null && typeof permission !== 'string') {
132
+ throw new BuiltManifestError(`${label}: permission must be a string or null`);
133
+ }
134
+ if (boundary !== undefined && boundary !== null && typeof boundary !== 'string') {
135
+ throw new BuiltManifestError(`${label}: boundary must be a string`);
136
+ }
137
+ if (needsOrg !== undefined && typeof needsOrg !== 'boolean') {
138
+ throw new BuiltManifestError(`${label}: needsOrg must be a boolean`);
139
+ }
140
+ if (flag !== undefined && flag !== true) {
141
+ throw new BuiltManifestError(`${label}: package must be true when present`);
142
+ }
143
+ return {
144
+ method: method,
145
+ path,
146
+ plugin,
147
+ permission,
148
+ handler: () => new Response(null),
149
+ ...(boundary === undefined || boundary === null ? {} : { boundary: boundary }),
150
+ ...(needsOrg === undefined ? {} : { needsOrg }),
151
+ ...(flag === true ? { package: PACKAGE_PLACEHOLDER } : {}),
152
+ };
153
+ }
154
+ export async function loadBuiltRoutes(outDir) {
155
+ const path = resolve(outDir, 'generated', 'manifest.json');
156
+ let parsed;
157
+ try {
158
+ parsed = JSON.parse(await readFile(path, 'utf8'));
159
+ }
160
+ catch (error) {
161
+ throw new BuiltManifestError(`cannot read manifest ${path}: ${error instanceof Error ? error.message : String(error)}`);
162
+ }
163
+ const routes = parsed?.routes;
164
+ if (routes === undefined)
165
+ return null;
166
+ if (!Array.isArray(routes))
167
+ throw new BuiltManifestError('manifest routes must be an array');
168
+ const entries = routes.map((raw, index) => parseRoute(raw, index));
169
+ if (entries.some((route) => route.permission !== null && route.boundary === undefined)) {
170
+ throw new LegacyRouteTableError();
171
+ }
172
+ return entries;
173
+ }
174
+ export async function builtRouteProblems(outDir) {
175
+ const routes = await loadBuiltRoutes(outDir);
176
+ return routes === null ? null : diagnoseRoutes(routes);
177
+ }
178
+ export async function routesAreValid(outDir) {
179
+ let problems;
180
+ try {
181
+ problems = await builtRouteProblems(outDir);
182
+ }
183
+ catch (error) {
184
+ if (!(error instanceof LegacyRouteTableError))
185
+ throw error;
186
+ console.error(`error: ${error.message}`);
187
+ return false;
188
+ }
189
+ if (problems === null) {
190
+ console.error('warning: manifest has no route table; route permissions were not checked');
191
+ return true;
192
+ }
193
+ for (const problem of problems)
194
+ console.error(`error: ${problem}`.replace(/[\r\n]+/g, ' '));
195
+ return problems.length === 0;
196
+ }
197
+ //# sourceMappingURL=built-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"built-manifest.js","sourceRoot":"","sources":["../../src/commands/built-manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ import type { BuildInfo } from '../../build-artifacts.js';
2
+ export type ErrorCode = 'prebuilt_invalid' | 'prebuilt_dirty' | 'prebuilt_git_sha_mismatch' | 'prebuilt_lockfile_mismatch' | 'prebuilt_dependencies_refused' | 'prebuilt_io_failure' | 'prebuilt_unavailable' | 'prebuilt_version_mismatch' | 'prebuilt_unverifiable' | 'checksum_mismatch' | 'migrations_pending' | 'invalid_input' | 'unsafe_path' | 'invalid_inventory' | 'state_io_failure' | 'install_locked' | 'confirmation_required' | 'confirmation_declined' | 'plan_changed' | 'deadline_exceeded' | 'ownership_conflict' | 'jurisdiction_conflict' | 'configuration_conflict' | 'outcome_unknown' | 'provider_failure' | 'permission_denied' | 'capacity_exceeded' | 'capability_unknown' | 'domain_zone_not_found' | 'domain_zone_ambiguous' | 'domain_zone_not_supported' | 'queues_unavailable' | 'workers_paid_required' | 'workers_dev_subdomain_missing' | 'r2_unavailable' | 'analytics_engine_unavailable' | 'migration_failed' | 'smoke_failed' | 'rollback_blocked_contract' | 'rollback_unavailable_first_deploy' | 'rollback_failed' | 'organization_slug_mismatch' | 'organization_not_found' | 'key_recovery_required' | 'token_refresh_required' | 'provider_anchor_changed';
3
+ export declare class CloudflareError extends Error {
4
+ readonly code: ErrorCode;
5
+ readonly exitCode: number;
6
+ readonly retryable: boolean;
7
+ readonly stage: string;
8
+ readonly status: number | null;
9
+ readonly check: 'queues' | 'r2' | 'analytics_engine' | 'provider_contract' | null;
10
+ readonly providerCode: number | null;
11
+ readonly source: string | null;
12
+ readonly fields: readonly string[];
13
+ constructor(code: ErrorCode, exitCode?: number, retryable?: boolean, stage?: string, status?: number | null, check?: 'queues' | 'r2' | 'analytics_engine' | 'provider_contract' | null, providerCode?: number | null, source?: string | null, fields?: readonly string[]);
14
+ }
15
+ export declare class GitWorktreeRequiredError extends CloudflareError {
16
+ constructor();
17
+ }
18
+ export interface PlanEntry {
19
+ stage: string;
20
+ action: string;
21
+ kind?: string;
22
+ name?: string;
23
+ jurisdiction?: 'eu' | 'default';
24
+ }
25
+ export declare function commandEnvelope(command: string, dryRun?: boolean): {
26
+ schema_version: 1;
27
+ command: string;
28
+ status: "ok" | "planned" | "error";
29
+ dry_run: boolean;
30
+ worker_url: string | null;
31
+ version_id: string | null;
32
+ previous_version_id: string | null;
33
+ database_id: string | null;
34
+ kv_namespace_id: null;
35
+ r2_bucket: string | null;
36
+ queue_names: string[];
37
+ migrations_applied: string[];
38
+ build_info: BuildInfo | null;
39
+ artifact_sha256: string | null;
40
+ pending_migrations: string[];
41
+ remote_state: "absent" | "present" | null;
42
+ plan: PlanEntry[];
43
+ checks: CommandCheck[];
44
+ rollback: {
45
+ status: string;
46
+ target_version_id: string | null;
47
+ };
48
+ bootstrap_url: string | null;
49
+ error: {
50
+ code: ErrorCode;
51
+ message: string;
52
+ retryable: boolean;
53
+ stage: string;
54
+ } | null;
55
+ } & {
56
+ prebuilt?: {
57
+ package: string;
58
+ version: string;
59
+ gitSha: string;
60
+ artifact_sha256: string;
61
+ };
62
+ };
63
+ export type CommandEnvelope = ReturnType<typeof commandEnvelope>;
64
+ export interface CommandCheck {
65
+ name: string;
66
+ status: string;
67
+ enabled?: boolean;
68
+ previews_enabled?: boolean;
69
+ attempt?: number;
70
+ elapsed_ms?: number;
71
+ source?: string;
72
+ }
73
+ export interface CommandResult {
74
+ exitCode: number;
75
+ output: CommandEnvelope;
76
+ }
77
+ export declare function failCommand(output: CommandEnvelope, error: unknown): CommandResult;
78
+ export interface ApiOptions {
79
+ accountId: string;
80
+ apiToken: string;
81
+ fetch?: typeof fetch;
82
+ now?: () => number;
83
+ sleep?: (ms: number) => Promise<void>;
84
+ jitter?: () => number;
85
+ deadline?: number;
86
+ /** A caller-owned absolute recovery bound, independent of an exhausted probe budget. */
87
+ recoveryDeadline?: () => number;
88
+ /** Recovery mutations can use the remaining bounded budget after durable intent is saved. */
89
+ minimumMutationBudgetMs?: number;
90
+ }
91
+ export type ApiMethod = 'GET' | 'POST' | 'PUT' | 'PATCH';
92
+ export interface ApiResponse {
93
+ result: unknown;
94
+ result_info?: Record<string, unknown>;
95
+ }
96
+ export declare function object(value: unknown): Record<string, unknown>;
97
+ export declare function cloudflareCredentials(env: Readonly<Record<string, string | undefined>>): {
98
+ accountId: string;
99
+ apiToken: string;
100
+ };
101
+ export declare const CREATE_SETTLE_MS: number;
102
+ /** True only when the client refused a mutation locally, before any byte reached the transport. */
103
+ export declare function wasNotSent(error: unknown): boolean;
104
+ export declare class CloudflareApi {
105
+ private readonly options;
106
+ readonly now: () => number;
107
+ readonly sleep: (ms: number) => Promise<void>;
108
+ private budgetEnd;
109
+ private readonly fixedDeadline;
110
+ private readonly scheduler;
111
+ constructor(options: ApiOptions);
112
+ get deadline(): number;
113
+ get accountId(): string;
114
+ restartDeadline(budgetMs?: number): void;
115
+ /** Each recovery mutation keeps its full settle reserve plus its own read-back allowance. */
116
+ reserveRecovery(mutations: number): void;
117
+ assertCreateBudget(): void;
118
+ pause(ms: number): Promise<void>;
119
+ request(path: string, method?: ApiMethod, body?: unknown, headers?: Record<string, string>): Promise<ApiResponse>;
120
+ analyticsEngineTables(): Promise<void>;
121
+ requestZone(zone: string, path: string, method?: ApiMethod, body?: unknown): Promise<ApiResponse>;
122
+ listZones(name: string): Promise<Record<string, unknown>[]>;
123
+ uploadAssets(body: FormData, sessionToken: string): Promise<ApiResponse>;
124
+ private enqueue;
125
+ private send;
126
+ /** A collection whose documented response is one array without pagination metadata. */
127
+ snapshot(path: string): Promise<Record<string, unknown>[]>;
128
+ snapshotZone(zone: string, path: string): Promise<Record<string, unknown>[]>;
129
+ list(path: string, field?: string, headers?: Record<string, string>): Promise<Record<string, unknown>[]>;
130
+ }
131
+ export declare function paginatedList(path: string, read: (path: string) => Promise<ApiResponse>, field?: string, unknown?: () => never, malformed?: () => never, perPage?: number): Promise<Record<string, unknown>[]>;
132
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/commands/cloudflare/api.ts"],"names":[],"mappings":"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"}