@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.
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +24 -1
- package/dist/github-ci/index.d.ts +44 -3
- package/dist/github-ci/index.d.ts.map +1 -1
- package/dist/github-ci/index.js +242 -36
- package/dist/lib/json.d.ts +1 -1
- package/dist/lib/json.d.ts.map +1 -1
- package/dist/lib/json.js +3 -18
- package/dist/lib/workspace.d.ts.map +1 -1
- package/dist/lib/workspace.js +1 -0
- package/dist/monorepo/ci-workflow.js +16 -6
- package/dist/monorepo/managed-files.d.ts +6 -22
- package/dist/monorepo/managed-files.d.ts.map +1 -1
- package/dist/monorepo/managed-files.js +31 -48
- package/dist/monorepo/package-policy.js +2 -2
- package/dist/monorepo/packs/index.d.ts.map +1 -1
- package/dist/monorepo/packs/index.js +2 -0
- package/dist/monorepo/pr-preview-cleanup-workflow.d.ts +5 -0
- package/dist/monorepo/pr-preview-cleanup-workflow.d.ts.map +1 -0
- package/dist/monorepo/pr-preview-cleanup-workflow.js +38 -0
- package/dist/monorepo/publish-workflow.js +3 -3
- package/dist/monorepo/runtime.d.ts +2 -2
- package/dist/monorepo/runtime.d.ts.map +1 -1
- package/dist/monorepo/runtime.js +11 -16
- package/dist/monorepo/tool-validation.d.ts.map +1 -1
- package/dist/monorepo/tool-validation.js +105 -28
- package/dist/nx/index.d.ts +7 -4
- package/dist/nx/index.d.ts.map +1 -1
- package/dist/nx/index.js +117 -56
- package/dist/playwright/index.d.ts +22 -0
- package/dist/playwright/index.d.ts.map +1 -0
- package/dist/playwright/index.js +44 -0
- package/dist/release/bootstrap-npm-packages.d.ts +3 -0
- package/dist/release/bootstrap-npm-packages.d.ts.map +1 -1
- package/dist/release/bootstrap-npm-packages.js +21 -0
- package/dist/release/index.d.ts.map +1 -1
- package/dist/release/index.js +17 -0
- package/dist/wrangler/cloudflare.d.ts +85 -0
- package/dist/wrangler/cloudflare.d.ts.map +1 -0
- package/dist/wrangler/cloudflare.js +235 -0
- package/dist/wrangler/deploy-environment.d.ts +48 -0
- package/dist/wrangler/deploy-environment.d.ts.map +1 -0
- package/dist/wrangler/deploy-environment.js +383 -0
- package/dist/wrangler/environment.d.ts +58 -0
- package/dist/wrangler/environment.d.ts.map +1 -0
- package/dist/wrangler/environment.js +297 -0
- package/managed/raw/tooling/devenv +71 -0
- package/managed/raw/tooling/direnv/github-actions-bootstrap.sh +3 -4
- package/package.json +11 -4
- package/src/cli.ts +33 -3
- package/src/github-ci/index.test.ts +221 -1
- package/src/github-ci/index.ts +303 -32
- package/src/lib/json.ts +1 -1
- package/src/lib/workspace.ts +1 -0
- package/src/monorepo/__tests__/ci-workflow.test.ts +10 -4
- package/src/monorepo/__tests__/pr-preview-cleanup-workflow.test.ts +23 -0
- package/src/monorepo/__tests__/publish-workflow.test.ts +12 -4
- package/src/monorepo/ci-workflow.ts +16 -6
- package/src/monorepo/managed-files.test.ts +87 -23
- package/src/monorepo/managed-files.ts +35 -69
- package/src/monorepo/package-policy.test.ts +31 -0
- package/src/monorepo/package-policy.ts +2 -2
- package/src/monorepo/packs/index.ts +2 -0
- package/src/monorepo/pr-preview-cleanup-workflow.ts +44 -0
- package/src/monorepo/publish-workflow.ts +7 -2
- package/src/monorepo/runtime.test.ts +23 -17
- package/src/monorepo/runtime.ts +12 -17
- package/src/monorepo/tool-validation.test.ts +100 -8
- package/src/monorepo/tool-validation.ts +115 -31
- package/src/nx/index.test.ts +45 -14
- package/src/nx/index.ts +133 -64
- package/src/playwright/index.test.ts +90 -0
- package/src/playwright/index.ts +73 -0
- package/src/release/__tests__/bootstrap-npm-packages.test.ts +63 -2
- package/src/release/bootstrap-npm-packages.ts +34 -0
- package/src/release/index.ts +18 -0
- package/src/wrangler/cloudflare.ts +289 -0
- package/src/wrangler/deploy-environment.test.ts +354 -0
- package/src/wrangler/deploy-environment.ts +445 -0
- package/src/wrangler/environment.test.ts +173 -0
- package/src/wrangler/environment.ts +366 -0
- 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":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/release/index.ts"],"names":[],"mappings":"AAyBA,OAAO,EACL,KAAK,2BAA2B,EAIjC,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAML,KAAK,kBAAkB,EAGxB,MAAM,WAAW,CAAC;AAsBnB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,kCAAkC;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBhG;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDhG;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAc5G;AAED,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC9G;AAED,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd,MAAM,EAAE,CAMV;AAED,MAAM,WAAW,mBAAmB,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB;IAC1F,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,IAAI,OAAO,EAAE,CAAC;IACjC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/E,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC3G,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACjE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,oBAAoB,CAAC;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,EAAE,GAAG,oBAAoB,CAAC;AAE/E,wBAAsB,0BAA0B,CAAC,OAAO,SAAS,kBAAkB,EACjF,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,EACnC,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,IAAI,CAAC,CAuEf;AAkED,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,kCAAkC,GAC1C,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC,CAelH;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnE;AA+oCD,oEAAoE;AACpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAShF;AA8CD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAkB9F"}
|
package/dist/release/index.js
CHANGED
|
@@ -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"}
|