@smoothbricks/cli 0.10.6 → 0.10.8

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 (82) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +24 -1
  3. package/dist/github-ci/index.d.ts +44 -3
  4. package/dist/github-ci/index.d.ts.map +1 -1
  5. package/dist/github-ci/index.js +242 -36
  6. package/dist/lib/json.d.ts +1 -1
  7. package/dist/lib/json.d.ts.map +1 -1
  8. package/dist/lib/json.js +3 -18
  9. package/dist/lib/workspace.d.ts.map +1 -1
  10. package/dist/lib/workspace.js +1 -0
  11. package/dist/monorepo/ci-workflow.js +16 -6
  12. package/dist/monorepo/managed-files.d.ts +6 -22
  13. package/dist/monorepo/managed-files.d.ts.map +1 -1
  14. package/dist/monorepo/managed-files.js +31 -48
  15. package/dist/monorepo/package-policy.js +2 -2
  16. package/dist/monorepo/packs/index.d.ts.map +1 -1
  17. package/dist/monorepo/packs/index.js +2 -0
  18. package/dist/monorepo/pr-preview-cleanup-workflow.d.ts +5 -0
  19. package/dist/monorepo/pr-preview-cleanup-workflow.d.ts.map +1 -0
  20. package/dist/monorepo/pr-preview-cleanup-workflow.js +38 -0
  21. package/dist/monorepo/publish-workflow.js +3 -3
  22. package/dist/monorepo/runtime.d.ts +2 -2
  23. package/dist/monorepo/runtime.d.ts.map +1 -1
  24. package/dist/monorepo/runtime.js +11 -16
  25. package/dist/monorepo/tool-validation.d.ts.map +1 -1
  26. package/dist/monorepo/tool-validation.js +105 -28
  27. package/dist/nx/index.d.ts +7 -4
  28. package/dist/nx/index.d.ts.map +1 -1
  29. package/dist/nx/index.js +117 -56
  30. package/dist/playwright/index.d.ts +22 -0
  31. package/dist/playwright/index.d.ts.map +1 -0
  32. package/dist/playwright/index.js +44 -0
  33. package/dist/release/bootstrap-npm-packages.d.ts +3 -0
  34. package/dist/release/bootstrap-npm-packages.d.ts.map +1 -1
  35. package/dist/release/bootstrap-npm-packages.js +21 -0
  36. package/dist/release/index.d.ts.map +1 -1
  37. package/dist/release/index.js +17 -0
  38. package/dist/wrangler/cloudflare.d.ts +85 -0
  39. package/dist/wrangler/cloudflare.d.ts.map +1 -0
  40. package/dist/wrangler/cloudflare.js +235 -0
  41. package/dist/wrangler/deploy-environment.d.ts +48 -0
  42. package/dist/wrangler/deploy-environment.d.ts.map +1 -0
  43. package/dist/wrangler/deploy-environment.js +383 -0
  44. package/dist/wrangler/environment.d.ts +58 -0
  45. package/dist/wrangler/environment.d.ts.map +1 -0
  46. package/dist/wrangler/environment.js +297 -0
  47. package/managed/raw/tooling/devenv +71 -0
  48. package/managed/raw/tooling/direnv/github-actions-bootstrap.sh +3 -4
  49. package/package.json +11 -4
  50. package/src/cli.ts +33 -3
  51. package/src/github-ci/index.test.ts +221 -1
  52. package/src/github-ci/index.ts +303 -32
  53. package/src/lib/json.ts +1 -1
  54. package/src/lib/workspace.ts +1 -0
  55. package/src/monorepo/__tests__/ci-workflow.test.ts +10 -4
  56. package/src/monorepo/__tests__/pr-preview-cleanup-workflow.test.ts +23 -0
  57. package/src/monorepo/__tests__/publish-workflow.test.ts +12 -4
  58. package/src/monorepo/ci-workflow.ts +16 -6
  59. package/src/monorepo/managed-files.test.ts +87 -23
  60. package/src/monorepo/managed-files.ts +35 -69
  61. package/src/monorepo/package-policy.test.ts +31 -0
  62. package/src/monorepo/package-policy.ts +2 -2
  63. package/src/monorepo/packs/index.ts +2 -0
  64. package/src/monorepo/pr-preview-cleanup-workflow.ts +44 -0
  65. package/src/monorepo/publish-workflow.ts +7 -2
  66. package/src/monorepo/runtime.test.ts +23 -17
  67. package/src/monorepo/runtime.ts +12 -17
  68. package/src/monorepo/tool-validation.test.ts +100 -8
  69. package/src/monorepo/tool-validation.ts +115 -31
  70. package/src/nx/index.test.ts +45 -14
  71. package/src/nx/index.ts +133 -64
  72. package/src/playwright/index.test.ts +90 -0
  73. package/src/playwright/index.ts +73 -0
  74. package/src/release/__tests__/bootstrap-npm-packages.test.ts +63 -2
  75. package/src/release/bootstrap-npm-packages.ts +34 -0
  76. package/src/release/index.ts +18 -0
  77. package/src/wrangler/cloudflare.ts +289 -0
  78. package/src/wrangler/deploy-environment.test.ts +354 -0
  79. package/src/wrangler/deploy-environment.ts +445 -0
  80. package/src/wrangler/environment.test.ts +173 -0
  81. package/src/wrangler/environment.ts +366 -0
  82. package/managed/raw/patches/ttsc@0.19.3.patch +0 -67
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/release/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/release/index.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { tmpdir } from 'node:os';
4
4
  import { join, resolve } from 'node:path';
5
5
  import { createInterface } from 'node:readline/promises';
6
6
  import { Writable } from 'node:stream';
7
+ import { setTimeout as delay } from 'node:timers/promises';
7
8
  import { $ } from 'bun';
8
9
  import typia from 'typia';
9
10
  import { githubCiApplyOutputs, githubCiNxRunMany } from '../github-ci/index.js';
@@ -125,9 +126,11 @@ export async function releaseTrustPublisher(root, options) {
125
126
  bootstrapNpmPackages: (bootstrapOptions) => bootstrapNpmPackages({
126
127
  listReleasePackages: () => listReleasePackages(root),
127
128
  packageExists: (name) => npmPackageExists(root, name),
129
+ packageVersionExists: (name, version) => npmPublishedVersionExists(root, name, version),
128
130
  login: () => runLatestNpm(root, ['login', '--auth-type=web']),
129
131
  publishPlaceholder: (pkg, env) => publishPlaceholderPackage(root, pkg, env),
130
132
  promptOtp: (packageName) => promptForNpmOtp(packageName),
133
+ wait: delay,
131
134
  log: (message) => console.log(message),
132
135
  }, bootstrapOptions),
133
136
  trustPublisher: (pkg, dryRun, env) => runLatestNpmTrust(root, npmTrustGithubArgs(pkg.name, repository, workflow, dryRun), env),
@@ -254,9 +257,11 @@ export async function releaseBootstrapNpmPackages(root, options) {
254
257
  await bootstrapNpmPackages({
255
258
  listReleasePackages: () => listReleasePackages(root),
256
259
  packageExists: (name) => npmPackageExists(root, name),
260
+ packageVersionExists: (name, version) => npmPublishedVersionExists(root, name, version),
257
261
  login: () => runLatestNpm(root, ['login', '--auth-type=web']),
258
262
  publishPlaceholder: (pkg, env) => publishPlaceholderPackage(root, pkg, env),
259
263
  promptOtp: (packageName) => promptForNpmOtp(packageName),
264
+ wait: delay,
260
265
  log: (message) => console.log(message),
261
266
  }, {
262
267
  dryRun: options.dryRun === true,
@@ -1126,6 +1131,18 @@ async function npmPackageExists(root, name) {
1126
1131
  const result = await $ `bun pm view ${name} name`.cwd(root).quiet().nothrow();
1127
1132
  return result.exitCode === 0;
1128
1133
  }
1134
+ async function npmPublishedVersionExists(root, name, version) {
1135
+ const spec = `${name}@${version}`;
1136
+ const args = ['view', spec, 'version', '--json'];
1137
+ const result = await runResult('nix', ['shell', 'nixpkgs#nodejs_latest', '-c', 'npm', ...args], root);
1138
+ if (result.exitCode === 0) {
1139
+ return true;
1140
+ }
1141
+ if (/\bE404\b|404 Not Found/i.test(`${result.stdout}\n${result.stderr}`)) {
1142
+ return false;
1143
+ }
1144
+ throw new Error(npmCommandFailedMessage(args, result.exitCode, result.stdout, result.stderr));
1145
+ }
1129
1146
  async function assertCleanGitTree(root) {
1130
1147
  const result = await $ `git status --porcelain --untracked-files=no`.cwd(root).quiet().nothrow();
1131
1148
  if (result.exitCode !== 0) {
@@ -0,0 +1,85 @@
1
+ import type { LiveKvNamespace } from './environment.js';
2
+ export interface R2Bucket {
3
+ name: string;
4
+ }
5
+ export interface WorkerScript {
6
+ id: string;
7
+ }
8
+ export interface WorkerRoute {
9
+ id: string;
10
+ pattern: string;
11
+ script?: string;
12
+ }
13
+ export interface WorkerDomain {
14
+ id: string;
15
+ hostname: string;
16
+ service?: string;
17
+ }
18
+ export interface CloudflareZone {
19
+ id: string;
20
+ name: string;
21
+ }
22
+ export interface DnsRecord {
23
+ id: string;
24
+ name: string;
25
+ type: string;
26
+ content: string;
27
+ proxied?: boolean;
28
+ }
29
+ export interface CloudflareClient {
30
+ listKvNamespaces(): Promise<LiveKvNamespace[]>;
31
+ createKvNamespace(title: string): Promise<LiveKvNamespace>;
32
+ deleteKvNamespace(id: string): Promise<void>;
33
+ listR2Buckets(): Promise<R2Bucket[]>;
34
+ createR2Bucket(name: string): Promise<void>;
35
+ listR2Objects(bucket: string): Promise<string[]>;
36
+ deleteR2Object(bucket: string, key: string): Promise<void>;
37
+ deleteR2Bucket(name: string): Promise<void>;
38
+ listWorkerScripts(): Promise<WorkerScript[]>;
39
+ deleteWorkerScript(name: string): Promise<void>;
40
+ listWorkerDomains(): Promise<WorkerDomain[]>;
41
+ createWorkerDomain(hostname: string, workerName: string, zoneId: string): Promise<void>;
42
+ deleteWorkerDomain(id: string): Promise<void>;
43
+ listZones(): Promise<CloudflareZone[]>;
44
+ listWorkerRoutes(zoneId: string): Promise<WorkerRoute[]>;
45
+ createWorkerRoute(zoneId: string, pattern: string, workerName: string): Promise<void>;
46
+ deleteWorkerRoute(zoneId: string, routeId: string): Promise<void>;
47
+ listDnsRecords(zoneId: string): Promise<DnsRecord[]>;
48
+ createDnsRecord(zoneId: string, name: string, content: string): Promise<void>;
49
+ deleteDnsRecord(zoneId: string, recordId: string): Promise<void>;
50
+ }
51
+ export declare class CloudflareApiError extends Error {
52
+ readonly status: number;
53
+ readonly codes: number[];
54
+ constructor(message: string, status: number, codes: number[]);
55
+ }
56
+ export declare class CloudflareRestClient implements CloudflareClient {
57
+ private readonly apiToken;
58
+ private readonly fetcher;
59
+ private readonly accountPath;
60
+ constructor(accountId: string, apiToken: string, fetcher?: typeof fetch);
61
+ listKvNamespaces(): Promise<LiveKvNamespace[]>;
62
+ createKvNamespace(title: string): Promise<LiveKvNamespace>;
63
+ deleteKvNamespace(id: string): Promise<void>;
64
+ listR2Buckets(): Promise<R2Bucket[]>;
65
+ createR2Bucket(name: string): Promise<void>;
66
+ listR2Objects(bucket: string): Promise<string[]>;
67
+ deleteR2Object(bucket: string, key: string): Promise<void>;
68
+ deleteR2Bucket(name: string): Promise<void>;
69
+ listWorkerScripts(): Promise<WorkerScript[]>;
70
+ deleteWorkerScript(name: string): Promise<void>;
71
+ listWorkerDomains(): Promise<WorkerDomain[]>;
72
+ createWorkerDomain(hostname: string, workerName: string, zoneId: string): Promise<void>;
73
+ deleteWorkerDomain(id: string): Promise<void>;
74
+ listZones(): Promise<CloudflareZone[]>;
75
+ listWorkerRoutes(zoneId: string): Promise<WorkerRoute[]>;
76
+ createWorkerRoute(zoneId: string, pattern: string, workerName: string): Promise<void>;
77
+ deleteWorkerRoute(zoneId: string, routeId: string): Promise<void>;
78
+ listDnsRecords(zoneId: string): Promise<DnsRecord[]>;
79
+ createDnsRecord(zoneId: string, name: string, content: string): Promise<void>;
80
+ deleteDnsRecord(zoneId: string, recordId: string): Promise<void>;
81
+ private listPageItems;
82
+ private result;
83
+ private request;
84
+ }
85
+ //# sourceMappingURL=cloudflare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/wrangler/cloudflare.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,235 @@
1
+ import typia from 'typia';
2
+ const isCloudflareEnvelope = (() => {
3
+ const _io0 = input => "boolean" === typeof input.success && true && (undefined === input.errors || Array.isArray(input.errors) && input.errors.every(elem => "object" === typeof elem && null !== elem && false === Array.isArray(elem) && _io1(elem))) && (undefined === input.result_info || "object" === typeof input.result_info && null !== input.result_info && false === Array.isArray(input.result_info) && _io2(input.result_info));
4
+ const _io1 = input => (undefined === input.code || "number" === typeof input.code) && (undefined === input.message || "string" === typeof input.message);
5
+ const _io2 = input => (undefined === input.page || "number" === typeof input.page) && (undefined === input.total_pages || "number" === typeof input.total_pages) && (undefined === input.cursor || "string" === typeof input.cursor) && (undefined === input.is_truncated || "boolean" === typeof input.is_truncated);
6
+ return input => "object" === typeof input && null !== input && _io0(input);
7
+ })();
8
+ const isKvNamespaces = (() => {
9
+ const _io0 = input => "string" === typeof input.id && "string" === typeof input.title;
10
+ return input => Array.isArray(input) && input.every(elem => "object" === typeof elem && null !== elem && _io0(elem));
11
+ })();
12
+ const isR2Buckets = (() => {
13
+ const _io0 = input => "string" === typeof input.name;
14
+ return input => Array.isArray(input) && input.every(elem => "object" === typeof elem && null !== elem && _io0(elem));
15
+ })();
16
+ const isWorkerScripts = (() => {
17
+ const _io0 = input => "string" === typeof input.id;
18
+ return input => Array.isArray(input) && input.every(elem => "object" === typeof elem && null !== elem && _io0(elem));
19
+ })();
20
+ const isWorkerDomains = (() => {
21
+ const _io0 = input => "string" === typeof input.id && "string" === typeof input.hostname && (undefined === input.service || "string" === typeof input.service);
22
+ return input => Array.isArray(input) && input.every(elem => "object" === typeof elem && null !== elem && _io0(elem));
23
+ })();
24
+ const isCloudflareZones = (() => {
25
+ const _io0 = input => "string" === typeof input.id && "string" === typeof input.name;
26
+ return input => Array.isArray(input) && input.every(elem => "object" === typeof elem && null !== elem && _io0(elem));
27
+ })();
28
+ const isWorkerRoutes = (() => {
29
+ const _io0 = input => "string" === typeof input.id && "string" === typeof input.pattern && (undefined === input.script || "string" === typeof input.script);
30
+ return input => Array.isArray(input) && input.every(elem => "object" === typeof elem && null !== elem && _io0(elem));
31
+ })();
32
+ const isDnsRecords = (() => {
33
+ const _io0 = input => "string" === typeof input.id && "string" === typeof input.name && "string" === typeof input.type && "string" === typeof input.content && (undefined === input.proxied || "boolean" === typeof input.proxied);
34
+ return input => Array.isArray(input) && input.every(elem => "object" === typeof elem && null !== elem && _io0(elem));
35
+ })();
36
+ const isR2Objects = (() => {
37
+ const _io0 = input => "string" === typeof input.key;
38
+ return input => Array.isArray(input) && input.every(elem => "object" === typeof elem && null !== elem && _io0(elem));
39
+ })();
40
+ const isR2BucketPage = (() => {
41
+ const _io0 = input => Array.isArray(input.buckets) && input.buckets.every(elem => "object" === typeof elem && null !== elem && _io1(elem));
42
+ const _io1 = input => "string" === typeof input.name;
43
+ return input => "object" === typeof input && null !== input && _io0(input);
44
+ })();
45
+ const isR2ObjectPage = (() => {
46
+ const _io0 = input => Array.isArray(input.objects) && input.objects.every(elem => "object" === typeof elem && null !== elem && _io1(elem));
47
+ const _io1 = input => "string" === typeof input.key;
48
+ return input => "object" === typeof input && null !== input && _io0(input);
49
+ })();
50
+ const isCreatedKvNamespace = (() => {
51
+ const _io0 = input => "string" === typeof input.id && "string" === typeof input.title;
52
+ return input => "object" === typeof input && null !== input && _io0(input);
53
+ })();
54
+ export class CloudflareApiError extends Error {
55
+ status;
56
+ codes;
57
+ constructor(message, status, codes) {
58
+ super(message);
59
+ this.status = status;
60
+ this.codes = codes;
61
+ }
62
+ }
63
+ export class CloudflareRestClient {
64
+ apiToken;
65
+ fetcher;
66
+ accountPath;
67
+ constructor(accountId, apiToken, fetcher = fetch) {
68
+ this.apiToken = apiToken;
69
+ this.fetcher = fetcher;
70
+ if (!accountId || !apiToken) {
71
+ throw new Error('CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_API_TOKEN are required.');
72
+ }
73
+ this.accountPath = `/accounts/${encodeURIComponent(accountId)}`;
74
+ }
75
+ listKvNamespaces() {
76
+ return this.listPageItems(`${this.accountPath}/storage/kv/namespaces`, isKvNamespaces);
77
+ }
78
+ async createKvNamespace(title) {
79
+ const result = await this.result(`${this.accountPath}/storage/kv/namespaces`, {
80
+ method: 'POST',
81
+ body: JSON.stringify({ title }),
82
+ });
83
+ if (!isCreatedKvNamespace(result)) {
84
+ throw new Error(`Cloudflare returned an invalid KV namespace after creating ${title}.`);
85
+ }
86
+ return result;
87
+ }
88
+ async deleteKvNamespace(id) {
89
+ await this.result(`${this.accountPath}/storage/kv/namespaces/${encodeURIComponent(id)}`, { method: 'DELETE' });
90
+ }
91
+ async listR2Buckets() {
92
+ const buckets = [];
93
+ let page = 1;
94
+ for (;;) {
95
+ const envelope = await this.request(`${this.accountPath}/r2/buckets?per_page=1000&page=${page}`);
96
+ let rows;
97
+ if (isR2Buckets(envelope.result))
98
+ rows = envelope.result;
99
+ else if (isR2BucketPage(envelope.result))
100
+ rows = envelope.result.buckets;
101
+ else
102
+ throw new Error('Cloudflare returned an invalid R2 bucket listing.');
103
+ buckets.push(...rows);
104
+ const totalPages = envelope.result_info?.total_pages ?? page;
105
+ if (page >= totalPages)
106
+ break;
107
+ page += 1;
108
+ }
109
+ return buckets;
110
+ }
111
+ async createR2Bucket(name) {
112
+ await this.result(`${this.accountPath}/r2/buckets`, { method: 'POST', body: JSON.stringify({ name }) });
113
+ }
114
+ async listR2Objects(bucket) {
115
+ const keys = [];
116
+ let cursor;
117
+ do {
118
+ const query = new URLSearchParams({ per_page: '1000' });
119
+ if (cursor)
120
+ query.set('cursor', cursor);
121
+ const envelope = await this.request(`${this.accountPath}/r2/buckets/${encodeURIComponent(bucket)}/objects?${query.toString()}`);
122
+ let rows;
123
+ if (isR2Objects(envelope.result))
124
+ rows = envelope.result;
125
+ else if (isR2ObjectPage(envelope.result))
126
+ rows = envelope.result.objects;
127
+ else
128
+ throw new Error(`Cloudflare returned an invalid object listing for R2 bucket ${bucket}.`);
129
+ keys.push(...rows.map((row) => row.key));
130
+ cursor = envelope.result_info?.is_truncated === true ? envelope.result_info.cursor : undefined;
131
+ } while (cursor);
132
+ return keys;
133
+ }
134
+ async deleteR2Object(bucket, key) {
135
+ const objectPath = key.split('/').map(encodeURIComponent).join('/');
136
+ await this.result(`${this.accountPath}/r2/buckets/${encodeURIComponent(bucket)}/objects/${objectPath}`, {
137
+ method: 'DELETE',
138
+ });
139
+ }
140
+ async deleteR2Bucket(name) {
141
+ await this.result(`${this.accountPath}/r2/buckets/${encodeURIComponent(name)}`, { method: 'DELETE' });
142
+ }
143
+ listWorkerScripts() {
144
+ return this.listPageItems(`${this.accountPath}/workers/scripts`, isWorkerScripts);
145
+ }
146
+ async deleteWorkerScript(name) {
147
+ await this.result(`${this.accountPath}/workers/scripts/${encodeURIComponent(name)}`, { method: 'DELETE' });
148
+ }
149
+ listWorkerDomains() {
150
+ return this.listPageItems(`${this.accountPath}/workers/domains`, isWorkerDomains);
151
+ }
152
+ async createWorkerDomain(hostname, workerName, zoneId) {
153
+ await this.result(`${this.accountPath}/workers/domains`, {
154
+ method: 'PUT',
155
+ body: JSON.stringify({ hostname, service: workerName, zone_id: zoneId }),
156
+ });
157
+ }
158
+ async deleteWorkerDomain(id) {
159
+ await this.result(`${this.accountPath}/workers/domains/${encodeURIComponent(id)}`, { method: 'DELETE' });
160
+ }
161
+ listZones() {
162
+ return this.listPageItems('/zones', isCloudflareZones);
163
+ }
164
+ listWorkerRoutes(zoneId) {
165
+ return this.listPageItems(`/zones/${encodeURIComponent(zoneId)}/workers/routes`, isWorkerRoutes);
166
+ }
167
+ async createWorkerRoute(zoneId, pattern, workerName) {
168
+ await this.result(`/zones/${encodeURIComponent(zoneId)}/workers/routes`, {
169
+ method: 'POST',
170
+ body: JSON.stringify({ pattern, script: workerName }),
171
+ });
172
+ }
173
+ async deleteWorkerRoute(zoneId, routeId) {
174
+ await this.result(`/zones/${encodeURIComponent(zoneId)}/workers/routes/${encodeURIComponent(routeId)}`, {
175
+ method: 'DELETE',
176
+ });
177
+ }
178
+ listDnsRecords(zoneId) {
179
+ return this.listPageItems(`/zones/${encodeURIComponent(zoneId)}/dns_records`, isDnsRecords);
180
+ }
181
+ async createDnsRecord(zoneId, name, content) {
182
+ await this.result(`/zones/${encodeURIComponent(zoneId)}/dns_records`, {
183
+ method: 'POST',
184
+ body: JSON.stringify({ type: 'CNAME', name, content, proxied: true }),
185
+ });
186
+ }
187
+ async deleteDnsRecord(zoneId, recordId) {
188
+ await this.result(`/zones/${encodeURIComponent(zoneId)}/dns_records/${encodeURIComponent(recordId)}`, {
189
+ method: 'DELETE',
190
+ });
191
+ }
192
+ async listPageItems(path, isItems) {
193
+ const items = [];
194
+ let page = 1;
195
+ for (;;) {
196
+ const separator = path.includes('?') ? '&' : '?';
197
+ const envelope = await this.request(`${path}${separator}per_page=1000&page=${page}`);
198
+ if (!isItems(envelope.result)) {
199
+ throw new Error(`Cloudflare returned an invalid paginated result for ${path}.`);
200
+ }
201
+ items.push(...envelope.result);
202
+ const totalPages = envelope.result_info?.total_pages ?? page;
203
+ if (page >= totalPages)
204
+ break;
205
+ page += 1;
206
+ }
207
+ return items;
208
+ }
209
+ async result(path, init) {
210
+ return (await this.request(path, init)).result;
211
+ }
212
+ async request(path, init = {}) {
213
+ const response = await this.fetcher(`https://api.cloudflare.com/client/v4${path}`, {
214
+ ...init,
215
+ headers: {
216
+ Authorization: `Bearer ${this.apiToken}`,
217
+ 'Content-Type': 'application/json',
218
+ ...init.headers,
219
+ },
220
+ });
221
+ const body = await response.json();
222
+ if (!isCloudflareEnvelope(body)) {
223
+ throw new CloudflareApiError(`Cloudflare returned a malformed response for ${path}.`, response.status, []);
224
+ }
225
+ if (!response.ok || !body.success) {
226
+ const errors = body.errors ?? [];
227
+ const message = errors
228
+ .map((error) => error.message)
229
+ .filter(Boolean)
230
+ .join('; ') || `HTTP ${response.status}`;
231
+ throw new CloudflareApiError(`Cloudflare API ${path} failed: ${message}`, response.status, errors.flatMap((error) => error.code ?? []));
232
+ }
233
+ return body;
234
+ }
235
+ }
@@ -0,0 +1,48 @@
1
+ import { type CloudflareClient } from './cloudflare.js';
2
+ import { type EnvironmentToken } from './environment.js';
3
+ export interface ProcessResult {
4
+ exitCode: number;
5
+ stdout: string;
6
+ stderr: string;
7
+ }
8
+ export interface ProcessRunner {
9
+ run(command: string, args: string[], options: {
10
+ cwd: string;
11
+ env?: Record<string, string>;
12
+ }): Promise<ProcessResult>;
13
+ }
14
+ export declare class BunProcessRunner implements ProcessRunner {
15
+ run(command: string, args: string[], options: {
16
+ cwd: string;
17
+ env?: Record<string, string>;
18
+ }): Promise<ProcessResult>;
19
+ }
20
+ export interface WranglerCommandDependencies {
21
+ runner?: ProcessRunner;
22
+ cloudflare?: CloudflareClient;
23
+ processEnv?: NodeJS.ProcessEnv;
24
+ }
25
+ export interface DeployEnvironmentResult {
26
+ environment: EnvironmentToken;
27
+ workerName: string;
28
+ action: 'deployed' | 'activated' | 'remote-cache-hit';
29
+ versionTag?: string;
30
+ }
31
+ export declare function deployEnvironment(cwd: string, environmentValue: string, dependencies?: WranglerCommandDependencies): Promise<DeployEnvironmentResult>;
32
+ export interface CleanupResult {
33
+ environment: `pr${number}`;
34
+ deleted: {
35
+ workers: number;
36
+ routes: number;
37
+ domains: number;
38
+ kvNamespaces: number;
39
+ r2Buckets: number;
40
+ r2Objects: number;
41
+ dnsRecords: number;
42
+ };
43
+ }
44
+ export declare function cleanupPullRequest(cwd: string, prNumber: number, dependencies?: WranglerCommandDependencies): Promise<CleanupResult>;
45
+ export declare function nxTaskVersionTag(environment: NodeJS.ProcessEnv): string | undefined;
46
+ export declare function findVersionIdByTag(value: unknown, tag: string): string | null;
47
+ export declare function isFullCurrentDeployment(value: unknown, versionId: string): boolean;
48
+ //# sourceMappingURL=deploy-environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-environment.d.ts","sourceRoot":"","sources":["../../src/wrangler/deploy-environment.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,gBAAgB,EAAwB,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAGL,KAAK,gBAAgB,EAQtB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACtH;AAED,qBAAa,gBAAiB,YAAW,aAAa;IAC9C,GAAG,CACP,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GACrD,OAAO,CAAC,aAAa,CAAC,CAcxB;CACF;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAChC;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,kBAAkB,CAAC;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,MAAM,EACxB,YAAY,GAAE,2BAAgC,GAC7C,OAAO,CAAC,uBAAuB,CAAC,CA2HlC;AACD,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,YAAY,GAAE,2BAAgC,GAC7C,OAAO,CAAC,aAAa,CAAC,CA2DxB;AAwFD,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,SAAS,CAgBnF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAuB7E;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAelF"}