@iamken/cloudtunnel 0.11.1 → 0.11.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.
@@ -42,7 +42,12 @@ async function listCargoCnames(token, zoneId) {
42
42
  return all.filter((r) => r.content.endsWith(".cfargotunnel.com"));
43
43
  }
44
44
  async function deleteDnsRecord(token, zoneId, recordId) {
45
- await cfRequest(token, "DELETE", `/zones/${zoneId}/dns_records/${recordId}`);
45
+ try {
46
+ await cfRequest(token, "DELETE", `/zones/${zoneId}/dns_records/${recordId}`);
47
+ } catch (err) {
48
+ if (err instanceof CliError && err.status === 404) return;
49
+ throw err;
50
+ }
46
51
  }
47
52
 
48
53
  export {
@@ -54,4 +59,4 @@ export {
54
59
  listCargoCnames,
55
60
  deleteDnsRecord
56
61
  };
57
- //# sourceMappingURL=chunk-ABLZ7XRZ.js.map
62
+ //# sourceMappingURL=chunk-BIGZFMQ6.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cloudflare/dns.ts"],"sourcesContent":["import { cfPaginate, cfRequest } from \"./client.js\";\nimport type { DnsRecord } from \"./types.js\";\nimport { CliError } from \"../ui/errors.js\";\n\n/** DNS records created by cloudtunnel carry this comment (ownership marker). */\nexport const MANAGED_DNS_COMMENT = \"managed-by:cloudtunnel\";\n\nexport function cargoTarget(tunnelId: string): string {\n return `${tunnelId}.cfargotunnel.com`;\n}\n\nexport function isManagedDns(record: DnsRecord): boolean {\n return record.comment === MANAGED_DNS_COMMENT;\n}\n\n/** Create the proxied CNAME that routes a subdomain to the tunnel. Asserts the\n * record came back orange-clouded (grey-cloud would silently break routing). */\nexport async function createCname(\n token: string,\n zoneId: string,\n name: string,\n tunnelId: string,\n): Promise<DnsRecord> {\n const env = await cfRequest<DnsRecord>(token, \"POST\", `/zones/${zoneId}/dns_records`, {\n type: \"CNAME\",\n name,\n content: cargoTarget(tunnelId),\n proxied: true,\n ttl: 1,\n comment: MANAGED_DNS_COMMENT,\n });\n if (env.result.proxied !== true) {\n throw new CliError(`DNS record for ${name} was created grey-clouded (not proxied).`, {\n hint: \"cfargotunnel routing requires a proxied (orange-cloud) record\",\n });\n }\n return env.result;\n}\n\nexport async function findCname(\n token: string,\n zoneId: string,\n fqdn: string,\n): Promise<DnsRecord | undefined> {\n const env = await cfRequest<DnsRecord[]>(\n token,\n \"GET\",\n `/zones/${zoneId}/dns_records?type=CNAME&name=${encodeURIComponent(fqdn)}`,\n );\n return env.result?.[0];\n}\n\n/** CNAMEs in the zone that point at a cfargotunnel target (any tool's). */\nexport async function listCargoCnames(token: string, zoneId: string): Promise<DnsRecord[]> {\n const all = await cfPaginate<DnsRecord>(token, `/zones/${zoneId}/dns_records?type=CNAME`);\n return all.filter((r) => r.content.endsWith(\".cfargotunnel.com\"));\n}\n\nexport async function deleteDnsRecord(token: string, zoneId: string, recordId: string): Promise<void> {\n await cfRequest<unknown>(token, \"DELETE\", `/zones/${zoneId}/dns_records/${recordId}`);\n}\n"],"mappings":";;;;;;;;AAKO,IAAM,sBAAsB;AAE5B,SAAS,YAAY,UAA0B;AACpD,SAAO,GAAG,QAAQ;AACpB;AAEO,SAAS,aAAa,QAA4B;AACvD,SAAO,OAAO,YAAY;AAC5B;AAIA,eAAsB,YACpB,OACA,QACA,MACA,UACoB;AACpB,QAAM,MAAM,MAAM,UAAqB,OAAO,QAAQ,UAAU,MAAM,gBAAgB;AAAA,IACpF,MAAM;AAAA,IACN;AAAA,IACA,SAAS,YAAY,QAAQ;AAAA,IAC7B,SAAS;AAAA,IACT,KAAK;AAAA,IACL,SAAS;AAAA,EACX,CAAC;AACD,MAAI,IAAI,OAAO,YAAY,MAAM;AAC/B,UAAM,IAAI,SAAS,kBAAkB,IAAI,4CAA4C;AAAA,MACnF,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AACA,SAAO,IAAI;AACb;AAEA,eAAsB,UACpB,OACA,QACA,MACgC;AAChC,QAAM,MAAM,MAAM;AAAA,IAChB;AAAA,IACA;AAAA,IACA,UAAU,MAAM,gCAAgC,mBAAmB,IAAI,CAAC;AAAA,EAC1E;AACA,SAAO,IAAI,SAAS,CAAC;AACvB;AAGA,eAAsB,gBAAgB,OAAe,QAAsC;AACzF,QAAM,MAAM,MAAM,WAAsB,OAAO,UAAU,MAAM,yBAAyB;AACxF,SAAO,IAAI,OAAO,CAAC,MAAM,EAAE,QAAQ,SAAS,mBAAmB,CAAC;AAClE;AAEA,eAAsB,gBAAgB,OAAe,QAAgB,UAAiC;AACpG,QAAM,UAAmB,OAAO,UAAU,UAAU,MAAM,gBAAgB,QAAQ,EAAE;AACtF;","names":[]}
1
+ {"version":3,"sources":["../src/cloudflare/dns.ts"],"sourcesContent":["import { cfPaginate, cfRequest } from \"./client.js\";\nimport type { DnsRecord } from \"./types.js\";\nimport { CliError } from \"../ui/errors.js\";\n\n/** DNS records created by cloudtunnel carry this comment (ownership marker). */\nexport const MANAGED_DNS_COMMENT = \"managed-by:cloudtunnel\";\n\nexport function cargoTarget(tunnelId: string): string {\n return `${tunnelId}.cfargotunnel.com`;\n}\n\nexport function isManagedDns(record: DnsRecord): boolean {\n return record.comment === MANAGED_DNS_COMMENT;\n}\n\n/** Create the proxied CNAME that routes a subdomain to the tunnel. Asserts the\n * record came back orange-clouded (grey-cloud would silently break routing). */\nexport async function createCname(\n token: string,\n zoneId: string,\n name: string,\n tunnelId: string,\n): Promise<DnsRecord> {\n const env = await cfRequest<DnsRecord>(token, \"POST\", `/zones/${zoneId}/dns_records`, {\n type: \"CNAME\",\n name,\n content: cargoTarget(tunnelId),\n proxied: true,\n ttl: 1,\n comment: MANAGED_DNS_COMMENT,\n });\n if (env.result.proxied !== true) {\n throw new CliError(`DNS record for ${name} was created grey-clouded (not proxied).`, {\n hint: \"cfargotunnel routing requires a proxied (orange-cloud) record\",\n });\n }\n return env.result;\n}\n\nexport async function findCname(\n token: string,\n zoneId: string,\n fqdn: string,\n): Promise<DnsRecord | undefined> {\n const env = await cfRequest<DnsRecord[]>(\n token,\n \"GET\",\n `/zones/${zoneId}/dns_records?type=CNAME&name=${encodeURIComponent(fqdn)}`,\n );\n return env.result?.[0];\n}\n\n/** CNAMEs in the zone that point at a cfargotunnel target (any tool's). */\nexport async function listCargoCnames(token: string, zoneId: string): Promise<DnsRecord[]> {\n const all = await cfPaginate<DnsRecord>(token, `/zones/${zoneId}/dns_records?type=CNAME`);\n return all.filter((r) => r.content.endsWith(\".cfargotunnel.com\"));\n}\n\nexport async function deleteDnsRecord(token: string, zoneId: string, recordId: string): Promise<void> {\n try {\n await cfRequest<unknown>(token, \"DELETE\", `/zones/${zoneId}/dns_records/${recordId}`);\n } catch (err) {\n if (err instanceof CliError && err.status === 404) return;\n throw err;\n }\n}\n"],"mappings":";;;;;;;;AAKO,IAAM,sBAAsB;AAE5B,SAAS,YAAY,UAA0B;AACpD,SAAO,GAAG,QAAQ;AACpB;AAEO,SAAS,aAAa,QAA4B;AACvD,SAAO,OAAO,YAAY;AAC5B;AAIA,eAAsB,YACpB,OACA,QACA,MACA,UACoB;AACpB,QAAM,MAAM,MAAM,UAAqB,OAAO,QAAQ,UAAU,MAAM,gBAAgB;AAAA,IACpF,MAAM;AAAA,IACN;AAAA,IACA,SAAS,YAAY,QAAQ;AAAA,IAC7B,SAAS;AAAA,IACT,KAAK;AAAA,IACL,SAAS;AAAA,EACX,CAAC;AACD,MAAI,IAAI,OAAO,YAAY,MAAM;AAC/B,UAAM,IAAI,SAAS,kBAAkB,IAAI,4CAA4C;AAAA,MACnF,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AACA,SAAO,IAAI;AACb;AAEA,eAAsB,UACpB,OACA,QACA,MACgC;AAChC,QAAM,MAAM,MAAM;AAAA,IAChB;AAAA,IACA;AAAA,IACA,UAAU,MAAM,gCAAgC,mBAAmB,IAAI,CAAC;AAAA,EAC1E;AACA,SAAO,IAAI,SAAS,CAAC;AACvB;AAGA,eAAsB,gBAAgB,OAAe,QAAsC;AACzF,QAAM,MAAM,MAAM,WAAsB,OAAO,UAAU,MAAM,yBAAyB;AACxF,SAAO,IAAI,OAAO,CAAC,MAAM,EAAE,QAAQ,SAAS,mBAAmB,CAAC;AAClE;AAEA,eAAsB,gBAAgB,OAAe,QAAgB,UAAiC;AACpG,MAAI;AACF,UAAM,UAAmB,OAAO,UAAU,UAAU,MAAM,gBAAgB,QAAQ,EAAE;AAAA,EACtF,SAAS,KAAK;AACZ,QAAI,eAAe,YAAY,IAAI,WAAW,IAAK;AACnD,UAAM;AAAA,EACR;AACF;","names":[]}
@@ -7,7 +7,7 @@ import {
7
7
  findCname,
8
8
  isManagedDns,
9
9
  listCargoCnames
10
- } from "./chunk-ABLZ7XRZ.js";
10
+ } from "./chunk-BIGZFMQ6.js";
11
11
  import "./chunk-7XACBYL7.js";
12
12
  export {
13
13
  MANAGED_DNS_COMMENT,
@@ -18,4 +18,4 @@ export {
18
18
  isManagedDns,
19
19
  listCargoCnames
20
20
  };
21
- //# sourceMappingURL=dns-DKPXBRCH.js.map
21
+ //# sourceMappingURL=dns-3WHXRL6V.js.map
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@ import {
8
8
  deleteDnsRecord,
9
9
  findCname,
10
10
  isManagedDns
11
- } from "./chunk-ABLZ7XRZ.js";
11
+ } from "./chunk-BIGZFMQ6.js";
12
12
  import {
13
13
  CliError,
14
14
  DEFAULT_API_BASE,
@@ -1466,7 +1466,7 @@ async function resolveRemoteTarget(cf, target) {
1466
1466
  }
1467
1467
  const tunnel = matches[0];
1468
1468
  if (!tunnel) return null;
1469
- const { listCargoCnames } = await import("./dns-DKPXBRCH.js");
1469
+ const { listCargoCnames } = await import("./dns-3WHXRL6V.js");
1470
1470
  const { listZones: listZones3 } = await import("./zones-XNCXYCB4.js");
1471
1471
  for (const zone of await listZones3(cf.token)) {
1472
1472
  const rec = (await listCargoCnames(cf.token, zone.id)).find((r) => tunnelIdFromCname2(r.content) === tunnel.id);
@@ -1505,7 +1505,7 @@ async function listAll(cf, opts = {}) {
1505
1505
  };
1506
1506
  }));
1507
1507
  if (opts.all) {
1508
- const { listCargoCnames } = await import("./dns-DKPXBRCH.js");
1508
+ const { listCargoCnames } = await import("./dns-3WHXRL6V.js");
1509
1509
  const { listZones: listZones3 } = await import("./zones-XNCXYCB4.js");
1510
1510
  const tracked = new Set(entries.map(entryFqdn));
1511
1511
  const unmanaged = [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iamken/cloudtunnel",
3
- "version": "0.11.1",
3
+ "version": "0.11.2",
4
4
  "description": "Manage Cloudflare Tunnels and subdomains account-wide from the CLI — instant HTTPS sharing on your own domains.",
5
5
  "type": "module",
6
6
  "bin": {