hatchkit 0.2.2 → 0.2.4
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/adopt.js +1 -1
- package/dist/adopt.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +132 -19
- package/dist/config.js.map +1 -1
- package/dist/deploy/terraform.d.ts +18 -0
- package/dist/deploy/terraform.d.ts.map +1 -1
- package/dist/deploy/terraform.js +52 -5
- package/dist/deploy/terraform.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +4 -3
- package/dist/doctor.js.map +1 -1
- package/dist/index.js +115 -33
- package/dist/index.js.map +1 -1
- package/dist/provision/index.d.ts +9 -0
- package/dist/provision/index.d.ts.map +1 -1
- package/dist/provision/index.js +313 -53
- package/dist/provision/index.js.map +1 -1
- package/dist/provision/openpanel.d.ts.map +1 -1
- package/dist/provision/openpanel.js +6 -4
- package/dist/provision/openpanel.js.map +1 -1
- package/dist/provision/plausible.d.ts +9 -0
- package/dist/provision/plausible.d.ts.map +1 -1
- package/dist/provision/plausible.js +74 -18
- package/dist/provision/plausible.js.map +1 -1
- package/dist/provision/search-console.d.ts +12 -9
- package/dist/provision/search-console.d.ts.map +1 -1
- package/dist/provision/search-console.js +36 -20
- package/dist/provision/search-console.js.map +1 -1
- package/dist/utils/cloudflare-api.d.ts.map +1 -1
- package/dist/utils/cloudflare-api.js +32 -17
- package/dist/utils/cloudflare-api.js.map +1 -1
- package/package.json +2 -2
|
@@ -21,13 +21,15 @@ import { SECRET_KEYS, deleteSecret, getSecret, setSecret } from "../utils/secret
|
|
|
21
21
|
* — separate from the client id slot so we can target the right row. */
|
|
22
22
|
const projectIdKey = (clientName) => SECRET_KEYS.openpanelClientSecret(`${clientName}:project-id`);
|
|
23
23
|
const clientIdKey = (clientName) => SECRET_KEYS.openpanelClientSecret(`${clientName}:id`);
|
|
24
|
-
function buildHeaders(rootClientId, rootClientSecret) {
|
|
25
|
-
|
|
24
|
+
function buildHeaders(rootClientId, rootClientSecret, options = {}) {
|
|
25
|
+
const headers = {
|
|
26
26
|
"openpanel-client-id": rootClientId,
|
|
27
27
|
"openpanel-client-secret": rootClientSecret,
|
|
28
|
-
"Content-Type": "application/json",
|
|
29
28
|
Accept: "application/json",
|
|
30
29
|
};
|
|
30
|
+
if (options.jsonBody)
|
|
31
|
+
headers["Content-Type"] = "application/json";
|
|
32
|
+
return headers;
|
|
31
33
|
}
|
|
32
34
|
function resolveManageBase(url, apiUrl) {
|
|
33
35
|
return `${(apiUrl ?? url).replace(/\/$/, "")}/manage`;
|
|
@@ -68,7 +70,7 @@ export async function provisionOpenpanelClient(clientName) {
|
|
|
68
70
|
apiUrl: manageBase,
|
|
69
71
|
};
|
|
70
72
|
}
|
|
71
|
-
const headers = buildHeaders(rootClientId, rootClientSecret);
|
|
73
|
+
const headers = buildHeaders(rootClientId, rootClientSecret, { jsonBody: true });
|
|
72
74
|
// Step 1: create the project. The API authenticates the organization
|
|
73
75
|
// from the root client's auth — don't send organizationSlug.
|
|
74
76
|
const projectRes = await fetch(`${manageBase}/projects`, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openpanel.js","sourceRoot":"","sources":["../../src/provision/openpanel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAStF;yEACyE;AACzE,MAAM,YAAY,GAAG,CAAC,UAAkB,EAAE,EAAE,CAC1C,WAAW,CAAC,qBAAqB,CAAC,GAAG,UAAU,aAAa,CAAC,CAAC;AAChE,MAAM,WAAW,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC,WAAW,CAAC,qBAAqB,CAAC,GAAG,UAAU,KAAK,CAAC,CAAC;AAElG,SAAS,YAAY,
|
|
1
|
+
{"version":3,"file":"openpanel.js","sourceRoot":"","sources":["../../src/provision/openpanel.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,17 @@ export interface PlausibleSite {
|
|
|
3
3
|
domain: string;
|
|
4
4
|
baseUrl: string;
|
|
5
5
|
scriptUrl: string;
|
|
6
|
+
/** True only when this run created a remote Plausible site through the Sites API. */
|
|
7
|
+
created: boolean;
|
|
8
|
+
/** True when the Sites API is unavailable and Hatchkit can only write browser env. */
|
|
9
|
+
manual: boolean;
|
|
6
10
|
}
|
|
7
11
|
export type DeleteResult = "deleted" | "not-found";
|
|
12
|
+
export declare class PlausibleSitesApiUnavailableError extends Error {
|
|
13
|
+
readonly baseUrl: string;
|
|
14
|
+
readonly status: number;
|
|
15
|
+
constructor(baseUrl: string, status: number, detail?: string);
|
|
16
|
+
}
|
|
8
17
|
export declare function plausibleSiteExists(domain: string): Promise<boolean>;
|
|
9
18
|
export declare function provisionPlausibleSite(projectName: string, domain: string): Promise<PlausibleSite>;
|
|
10
19
|
export declare function deletePlausibleSite(projectName: string): Promise<DeleteResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plausible.d.ts","sourceRoot":"","sources":["../../src/provision/plausible.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"plausible.d.ts","sourceRoot":"","sources":["../../src/provision/plausible.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,qFAAqF;IACrF,OAAO,EAAE,OAAO,CAAC;IACjB,sFAAsF;IACtF,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,WAAW,CAAC;AAEnD,qBAAa,iCAAkC,SAAQ,KAAK;IAExD,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM;gBADd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACvB,MAAM,CAAC,EAAE,MAAM;CAWlB;AA6DD,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAS1E;AAED,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,CAAC,CAwExB;AAED,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAkBpF"}
|
|
@@ -8,6 +8,20 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { ensurePlausible } from "../config.js";
|
|
10
10
|
import { SECRET_KEYS, deleteSecret, getSecret, setSecret } from "../utils/secrets.js";
|
|
11
|
+
export class PlausibleSitesApiUnavailableError extends Error {
|
|
12
|
+
baseUrl;
|
|
13
|
+
status;
|
|
14
|
+
constructor(baseUrl, status, detail) {
|
|
15
|
+
super(`Plausible Sites API is not available at ${baseUrl}. ` +
|
|
16
|
+
"Plausible Community Edition/self-hosted does not include the Sites API, " +
|
|
17
|
+
"and Plausible Cloud requires Sites API access. " +
|
|
18
|
+
"Create/confirm the site manually in Plausible, or configure Hatchkit with a Sites API-capable Plausible account." +
|
|
19
|
+
(detail ? ` Response: ${detail}` : ""));
|
|
20
|
+
this.baseUrl = baseUrl;
|
|
21
|
+
this.status = status;
|
|
22
|
+
this.name = "PlausibleSitesApiUnavailableError";
|
|
23
|
+
}
|
|
24
|
+
}
|
|
11
25
|
function siteDomainKey(projectName) {
|
|
12
26
|
return SECRET_KEYS.plausibleSiteDomain(projectName);
|
|
13
27
|
}
|
|
@@ -21,12 +35,34 @@ function authHeaders(apiKey) {
|
|
|
21
35
|
function siteUrl(baseUrl, domain) {
|
|
22
36
|
return `${baseUrl.replace(/\/$/, "")}/api/v1/sites/${encodeURIComponent(domain)}`;
|
|
23
37
|
}
|
|
38
|
+
async function responseText(res) {
|
|
39
|
+
return res.text().catch(() => "");
|
|
40
|
+
}
|
|
41
|
+
function isSitesApiUnavailableStatus(status) {
|
|
42
|
+
return status === 406;
|
|
43
|
+
}
|
|
44
|
+
function isCreateSitesApiUnavailableStatus(status) {
|
|
45
|
+
return status === 404 || isSitesApiUnavailableStatus(status);
|
|
46
|
+
}
|
|
47
|
+
function makeSite(projectName, domain, baseUrl, opts) {
|
|
48
|
+
return {
|
|
49
|
+
projectName,
|
|
50
|
+
domain,
|
|
51
|
+
baseUrl,
|
|
52
|
+
scriptUrl: `${baseUrl}/js/script.js`,
|
|
53
|
+
created: opts.created,
|
|
54
|
+
manual: opts.manual ?? false,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
24
57
|
async function getSite(baseUrl, apiKey, domain) {
|
|
25
58
|
const res = await fetch(siteUrl(baseUrl, domain), { headers: authHeaders(apiKey) });
|
|
26
59
|
if (res.status === 404)
|
|
27
60
|
return false;
|
|
28
61
|
if (!res.ok) {
|
|
29
|
-
const text = await res
|
|
62
|
+
const text = await responseText(res);
|
|
63
|
+
if (isSitesApiUnavailableStatus(res.status)) {
|
|
64
|
+
throw new PlausibleSitesApiUnavailableError(baseUrl, res.status, text);
|
|
65
|
+
}
|
|
30
66
|
throw new Error(`Plausible get site failed: ${res.status} ${res.statusText}${text ? ` — ${text}` : ""}`);
|
|
31
67
|
}
|
|
32
68
|
return true;
|
|
@@ -34,7 +70,14 @@ async function getSite(baseUrl, apiKey, domain) {
|
|
|
34
70
|
export async function plausibleSiteExists(domain) {
|
|
35
71
|
const cfg = await ensurePlausible();
|
|
36
72
|
const baseUrl = cfg.url.replace(/\/$/, "");
|
|
37
|
-
|
|
73
|
+
try {
|
|
74
|
+
return await getSite(baseUrl, cfg.apiKey, domain.trim().toLowerCase());
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
if (err instanceof PlausibleSitesApiUnavailableError)
|
|
78
|
+
return false;
|
|
79
|
+
throw err;
|
|
80
|
+
}
|
|
38
81
|
}
|
|
39
82
|
export async function provisionPlausibleSite(projectName, domain) {
|
|
40
83
|
const cfg = await ensurePlausible();
|
|
@@ -42,14 +85,18 @@ export async function provisionPlausibleSite(projectName, domain) {
|
|
|
42
85
|
const normalizedDomain = domain.trim().toLowerCase();
|
|
43
86
|
const cachedDomain = await getSecret(siteDomainKey(projectName));
|
|
44
87
|
if (cachedDomain) {
|
|
45
|
-
|
|
88
|
+
let exists = false;
|
|
89
|
+
try {
|
|
90
|
+
exists = await getSite(baseUrl, cfg.apiKey, cachedDomain);
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
if (err instanceof PlausibleSitesApiUnavailableError) {
|
|
94
|
+
return makeSite(projectName, cachedDomain, baseUrl, { created: false, manual: true });
|
|
95
|
+
}
|
|
96
|
+
throw err;
|
|
97
|
+
}
|
|
46
98
|
if (exists) {
|
|
47
|
-
return {
|
|
48
|
-
projectName,
|
|
49
|
-
domain: cachedDomain,
|
|
50
|
-
baseUrl,
|
|
51
|
-
scriptUrl: `${baseUrl}/js/script.js`,
|
|
52
|
-
};
|
|
99
|
+
return makeSite(projectName, cachedDomain, baseUrl, { created: false });
|
|
53
100
|
}
|
|
54
101
|
}
|
|
55
102
|
const body = {
|
|
@@ -69,25 +116,34 @@ export async function provisionPlausibleSite(projectName, domain) {
|
|
|
69
116
|
body: JSON.stringify(body),
|
|
70
117
|
});
|
|
71
118
|
if (!res.ok) {
|
|
72
|
-
const text = await res
|
|
119
|
+
const text = await responseText(res);
|
|
120
|
+
if (isCreateSitesApiUnavailableStatus(res.status)) {
|
|
121
|
+
await setSecret(siteDomainKey(projectName), normalizedDomain);
|
|
122
|
+
return makeSite(projectName, normalizedDomain, baseUrl, { created: false, manual: true });
|
|
123
|
+
}
|
|
73
124
|
const alreadyExists = res.status === 409 ||
|
|
74
125
|
(res.status === 422 && /already|taken|exists/i.test(text)) ||
|
|
75
126
|
(res.status === 400 && /already|taken|exists/i.test(text));
|
|
76
127
|
if (!alreadyExists) {
|
|
77
128
|
throw new Error(`Plausible create site failed: ${res.status} ${res.statusText}${text ? ` — ${text}` : ""}`);
|
|
78
129
|
}
|
|
79
|
-
|
|
130
|
+
let exists = false;
|
|
131
|
+
try {
|
|
132
|
+
exists = await getSite(baseUrl, cfg.apiKey, normalizedDomain);
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
if (err instanceof PlausibleSitesApiUnavailableError) {
|
|
136
|
+
await setSecret(siteDomainKey(projectName), normalizedDomain);
|
|
137
|
+
return makeSite(projectName, normalizedDomain, baseUrl, { created: false, manual: true });
|
|
138
|
+
}
|
|
139
|
+
throw err;
|
|
140
|
+
}
|
|
80
141
|
if (!exists) {
|
|
81
142
|
throw new Error(`Plausible reports ${normalizedDomain} already exists, but it is not readable.`);
|
|
82
143
|
}
|
|
83
144
|
}
|
|
84
145
|
await setSecret(siteDomainKey(projectName), normalizedDomain);
|
|
85
|
-
return {
|
|
86
|
-
projectName,
|
|
87
|
-
domain: normalizedDomain,
|
|
88
|
-
baseUrl,
|
|
89
|
-
scriptUrl: `${baseUrl}/js/script.js`,
|
|
90
|
-
};
|
|
146
|
+
return makeSite(projectName, normalizedDomain, baseUrl, { created: res.ok });
|
|
91
147
|
}
|
|
92
148
|
export async function deletePlausibleSite(projectName) {
|
|
93
149
|
const cfg = await ensurePlausible();
|
|
@@ -97,7 +153,7 @@ export async function deletePlausibleSite(projectName) {
|
|
|
97
153
|
headers: authHeaders(cfg.apiKey),
|
|
98
154
|
});
|
|
99
155
|
await deleteSecret(siteDomainKey(projectName));
|
|
100
|
-
if (res.status === 404)
|
|
156
|
+
if (res.status === 404 || isSitesApiUnavailableStatus(res.status))
|
|
101
157
|
return "not-found";
|
|
102
158
|
if (!res.ok) {
|
|
103
159
|
const text = await res.text().catch(() => "");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plausible.js","sourceRoot":"","sources":["../../src/provision/plausible.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"plausible.js","sourceRoot":"","sources":["../../src/provision/plausible.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
+
export interface SearchConsoleDnsRecord {
|
|
2
|
+
id: string;
|
|
3
|
+
zoneId: string;
|
|
4
|
+
name: string;
|
|
5
|
+
type: "TXT";
|
|
6
|
+
created: boolean;
|
|
7
|
+
updated: boolean;
|
|
8
|
+
}
|
|
1
9
|
export interface SearchConsoleProvisionResult {
|
|
2
10
|
domain: string;
|
|
3
11
|
siteUrl: string;
|
|
4
12
|
webResourceId?: string;
|
|
5
|
-
dnsRecord?:
|
|
6
|
-
id: string;
|
|
7
|
-
zoneId: string;
|
|
8
|
-
name: string;
|
|
9
|
-
type: "TXT";
|
|
10
|
-
created: boolean;
|
|
11
|
-
updated: boolean;
|
|
12
|
-
};
|
|
13
|
+
dnsRecord?: SearchConsoleDnsRecord;
|
|
13
14
|
}
|
|
14
15
|
export declare function normalizeSearchConsoleDomain(input: string): string;
|
|
15
|
-
export declare function provisionSearchConsoleForDomain(domainInput: string
|
|
16
|
+
export declare function provisionSearchConsoleForDomain(domainInput: string, opts?: {
|
|
17
|
+
onDnsRecord?: (record: SearchConsoleDnsRecord) => void;
|
|
18
|
+
}): Promise<SearchConsoleProvisionResult>;
|
|
16
19
|
export declare function unprovisionSearchConsoleForDomain(domainInput: string): Promise<"deleted" | "not-found">;
|
|
17
20
|
//# sourceMappingURL=search-console.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-console.d.ts","sourceRoot":"","sources":["../../src/provision/search-console.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"search-console.d.ts","sourceRoot":"","sources":["../../src/provision/search-console.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,sBAAsB,CAAC;CACpC;AAQD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOlE;AAyGD,wBAAsB,+BAA+B,CACnD,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAA;CAAO,GACpE,OAAO,CAAC,4BAA4B,CAAC,CAkEvC;AAED,wBAAsB,iCAAiC,CACrD,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC,CAUlC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import { ensureDns, ensureGoogleSearchConsole, refreshGoogleSearchConsoleAccessToken, } from "../config.js";
|
|
3
3
|
import { CloudflareApi } from "../utils/cloudflare-api.js";
|
|
4
|
+
const GOOGLE_API_TIMEOUT_MS = 30_000;
|
|
4
5
|
function sleep(ms) {
|
|
5
6
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
6
7
|
}
|
|
@@ -18,19 +19,32 @@ function searchConsoleSiteUrl(domain) {
|
|
|
18
19
|
return `sc-domain:${domain}`;
|
|
19
20
|
}
|
|
20
21
|
async function googleJson(method, url, accessToken, body) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
let res;
|
|
23
|
+
try {
|
|
24
|
+
res = await fetch(url, {
|
|
25
|
+
method,
|
|
26
|
+
headers: {
|
|
27
|
+
Authorization: `Bearer ${accessToken}`,
|
|
28
|
+
Accept: "application/json",
|
|
29
|
+
...(body ? { "Content-Type": "application/json" } : {}),
|
|
30
|
+
},
|
|
31
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
32
|
+
signal: AbortSignal.timeout(GOOGLE_API_TIMEOUT_MS),
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
throw new Error(`Google API ${method} ${url} failed: ${err.message}`);
|
|
37
|
+
}
|
|
30
38
|
if (res.status === 204)
|
|
31
39
|
return undefined;
|
|
32
40
|
const text = await res.text();
|
|
33
|
-
|
|
41
|
+
let json;
|
|
42
|
+
try {
|
|
43
|
+
json = text ? JSON.parse(text) : undefined;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
throw new Error(`Google API HTTP ${res.status}: response was not JSON (${text.slice(0, 120)})`);
|
|
47
|
+
}
|
|
34
48
|
if (!res.ok) {
|
|
35
49
|
const msg = json?.error?.message ??
|
|
36
50
|
text ??
|
|
@@ -72,7 +86,7 @@ async function findCloudflareZone(cf, domain) {
|
|
|
72
86
|
}
|
|
73
87
|
return { id: zone.id, name: zone.name };
|
|
74
88
|
}
|
|
75
|
-
export async function provisionSearchConsoleForDomain(domainInput) {
|
|
89
|
+
export async function provisionSearchConsoleForDomain(domainInput, opts = {}) {
|
|
76
90
|
const domain = normalizeSearchConsoleDomain(domainInput);
|
|
77
91
|
const siteUrl = searchConsoleSiteUrl(domain);
|
|
78
92
|
const googleCfg = await ensureGoogleSearchConsole();
|
|
@@ -87,12 +101,21 @@ export async function provisionSearchConsoleForDomain(domainInput) {
|
|
|
87
101
|
}
|
|
88
102
|
const cf = new CloudflareApi({ token: dnsCfg.apiToken, accountId: dnsCfg.accountId });
|
|
89
103
|
const zone = await findCloudflareZone(cf, domain);
|
|
90
|
-
const
|
|
104
|
+
const upserted = await cf.upsertRecord(zone.id, {
|
|
91
105
|
type: "TXT",
|
|
92
106
|
name: domain,
|
|
93
107
|
content: token.token,
|
|
94
108
|
ttl: 1,
|
|
95
109
|
});
|
|
110
|
+
const dnsRecord = {
|
|
111
|
+
id: upserted.id,
|
|
112
|
+
zoneId: zone.id,
|
|
113
|
+
name: domain,
|
|
114
|
+
type: "TXT",
|
|
115
|
+
created: upserted.created,
|
|
116
|
+
updated: upserted.updated,
|
|
117
|
+
};
|
|
118
|
+
opts.onDnsRecord?.(dnsRecord);
|
|
96
119
|
let verified = null;
|
|
97
120
|
let lastError = null;
|
|
98
121
|
for (let attempt = 1; attempt <= 6; attempt++) {
|
|
@@ -118,14 +141,7 @@ export async function provisionSearchConsoleForDomain(domainInput) {
|
|
|
118
141
|
domain,
|
|
119
142
|
siteUrl,
|
|
120
143
|
webResourceId: verified?.id,
|
|
121
|
-
dnsRecord
|
|
122
|
-
id: dnsRecord.id,
|
|
123
|
-
zoneId: zone.id,
|
|
124
|
-
name: domain,
|
|
125
|
-
type: "TXT",
|
|
126
|
-
created: dnsRecord.created,
|
|
127
|
-
updated: dnsRecord.updated,
|
|
128
|
-
},
|
|
144
|
+
dnsRecord,
|
|
129
145
|
};
|
|
130
146
|
}
|
|
131
147
|
export async function unprovisionSearchConsoleForDomain(domainInput) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-console.js","sourceRoot":"","sources":["../../src/provision/search-console.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,yBAAyB,EACzB,qCAAqC,GACtC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"search-console.js","sourceRoot":"","sources":["../../src/provision/search-console.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare-api.d.ts","sourceRoot":"","sources":["../../src/utils/cloudflare-api.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzC;AAED;;sEAEsE;AACtE,MAAM,MAAM,eAAe,GAAG,GAAG,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC;AAEpE,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;mCAEmC;AACnC,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,IAAI,GAAG,KAAK,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,SAAS,GAAG,KAAK,CAAC;IACxB,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IAClC,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACjC;AAED;;;oEAGoE;AACpE,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"cloudflare-api.d.ts","sourceRoot":"","sources":["../../src/utils/cloudflare-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
// go through Terraform (modules/cloudflare-dns) — this client is for
|
|
13
13
|
// command-line paths that don't run a full Terraform stack.
|
|
14
14
|
const API_BASE = "https://api.cloudflare.com/client/v4";
|
|
15
|
+
const CF_API_TIMEOUT_MS = 30_000;
|
|
15
16
|
/** Cloudflare REST API client. */
|
|
16
17
|
export class CloudflareApi {
|
|
17
18
|
token;
|
|
@@ -21,15 +22,22 @@ export class CloudflareApi {
|
|
|
21
22
|
this.accountId = options.accountId;
|
|
22
23
|
}
|
|
23
24
|
async request(method, path, body) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
let res;
|
|
26
|
+
try {
|
|
27
|
+
res = await fetch(`${API_BASE}${path}`, {
|
|
28
|
+
method,
|
|
29
|
+
headers: {
|
|
30
|
+
Authorization: `Bearer ${this.token}`,
|
|
31
|
+
"Content-Type": "application/json",
|
|
32
|
+
Accept: "application/json",
|
|
33
|
+
},
|
|
34
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
35
|
+
signal: AbortSignal.timeout(CF_API_TIMEOUT_MS),
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
throw new Error(`Cloudflare ${method} ${path} failed: ${err.message}`);
|
|
40
|
+
}
|
|
33
41
|
const json = (await res.json().catch(() => null));
|
|
34
42
|
if (!res.ok || !json || !json.success) {
|
|
35
43
|
const errMsg = json?.errors?.map((e) => `${e.code}: ${e.message}`).join("; ") ?? res.statusText;
|
|
@@ -56,14 +64,21 @@ export class CloudflareApi {
|
|
|
56
64
|
if (this.accountId)
|
|
57
65
|
query.set("account.id", this.accountId);
|
|
58
66
|
const path = `/zones?${query.toString()}`;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
+
let res;
|
|
68
|
+
try {
|
|
69
|
+
res = await fetch(`${API_BASE}${path}`, {
|
|
70
|
+
headers: {
|
|
71
|
+
Authorization: `Bearer ${this.token}`,
|
|
72
|
+
Accept: "application/json",
|
|
73
|
+
},
|
|
74
|
+
signal: AbortSignal.timeout(CF_API_TIMEOUT_MS),
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
throw new Error(`Cloudflare GET /zones failed: ${err.message}`);
|
|
79
|
+
}
|
|
80
|
+
const json = (await res.json().catch(() => null));
|
|
81
|
+
if (!res.ok || !json || !json.success) {
|
|
67
82
|
const errMsg = json?.errors?.map((e) => `${e.code}: ${e.message}`).join("; ") ?? res.statusText;
|
|
68
83
|
throw new Error(`Cloudflare GET /zones failed: ${errMsg}`);
|
|
69
84
|
}
|