Skip to content

Commit 2a6a0e6

Browse files
authored
Merge pull request #102 from monk-io/add-custom-domains
[feature] add cloudflare entity, custom domains for vercel and netlify entities
2 parents 7bfc3c7 + ad668e9 commit 2a6a0e6

22 files changed

+406
-41
lines changed

dist/cloudflare/MANIFEST

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
REPO cloudflare
2-
VERSION_HASH e0206fa9d712
3-
LOAD cloudflare-dns-record.yaml cloudflare-base.yaml cloudflare-dns-zone.yaml
2+
VERSION_HASH 1f3d61bb7e51
3+
LOAD cloudflare-base.yaml cloudflare-dns-record.yaml cloudflare-dns-zone.yaml
44
RESOURCES cloudflare-base.js cloudflare-dns-record-sync.js cloudflare-dns-zone-sync.js

dist/cloudflare/cloudflare-base.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ namespace: cloudflare
33
cloudflare-base:
44
defines: module
55
metadata:
6-
version-hash: e0206fa9d712
6+
version-hash: 1f3d61bb7e51
77
source: <<< cloudflare-base.js

dist/cloudflare/cloudflare-dns-record-sync.js

Lines changed: 69 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ var _CloudflareDNSRecord = class _CloudflareDNSRecord extends (_a = CloudflareEn
7272
this.state.record_id = existing.id;
7373
this.state.zone_id = zoneId;
7474
this.state.existing = true;
75+
this.state.applied_zone_name = this.definition.zone_name;
7576
return;
7677
}
7778
const payload = {
@@ -89,24 +90,22 @@ var _CloudflareDNSRecord = class _CloudflareDNSRecord extends (_a = CloudflareEn
8990
this.state.record_id = createdId;
9091
this.state.zone_id = zoneId;
9192
this.state.existing = false;
93+
this.state.applied_zone_name = this.definition.zone_name;
9294
} else {
9395
const newRec = this.findRecord(zoneId, this.definition.record_type, this.definition.name);
9496
if (newRec) {
9597
this.state.record_id = newRec.id;
9698
this.state.zone_id = zoneId;
9799
this.state.existing = false;
100+
this.state.applied_zone_name = this.definition.zone_name;
98101
}
99102
}
100103
return;
101104
}
102105
update() {
103-
const zoneId = this.resolveZoneId();
104-
if (!zoneId) return;
105-
if (!this.state.record_id) {
106-
const existing = this.findRecord(zoneId, this.definition.record_type, this.definition.name);
107-
if (!existing) return void this.create();
108-
this.state.record_id = existing.id;
109-
}
106+
const currentZoneId = this.state.zone_id;
107+
const desiredZoneId = this.definition.zone_id ?? (this.definition.zone_name ? this.findZoneByName(this.definition.zone_name)?.id : currentZoneId);
108+
if (!desiredZoneId) return;
110109
const payload = {
111110
type: this.definition.record_type,
112111
name: this.definition.name
@@ -116,7 +115,69 @@ var _CloudflareDNSRecord = class _CloudflareDNSRecord extends (_a = CloudflareEn
116115
if (typeof this.definition.proxied === "boolean") payload.proxied = this.definition.proxied;
117116
if (typeof this.definition.priority === "number") payload.priority = this.definition.priority;
118117
if (this.definition.data) payload.data = this.definition.data;
119-
this.request("PUT", `/zones/${zoneId}/dns_records/${this.state.record_id}`, payload);
118+
const nameChanged = this.definition.zone_name !== void 0 && this.state.applied_zone_name !== void 0 && this.definition.zone_name !== this.state.applied_zone_name;
119+
const idChanged = Boolean(currentZoneId && currentZoneId !== desiredZoneId);
120+
if (nameChanged || idChanged) {
121+
const old = { zone: currentZoneId, id: this.state.record_id, owned: this.state.existing === false };
122+
const existing = this.findRecord(desiredZoneId, this.definition.record_type, this.definition.name);
123+
if (existing) {
124+
this.state.record_id = existing.id;
125+
this.state.zone_id = desiredZoneId;
126+
this.state.existing = true;
127+
} else {
128+
const created = this.request("POST", `/zones/${desiredZoneId}/dns_records`, payload);
129+
const newId = created?.result?.id;
130+
if (newId) {
131+
this.state.record_id = newId;
132+
this.state.zone_id = desiredZoneId;
133+
this.state.existing = false;
134+
} else {
135+
const newRec = this.findRecord(desiredZoneId, this.definition.record_type, this.definition.name);
136+
if (newRec) {
137+
this.state.record_id = newRec.id;
138+
this.state.zone_id = desiredZoneId;
139+
this.state.existing = true;
140+
}
141+
}
142+
}
143+
if (old.zone && old.id && old.owned) {
144+
this.request("DELETE", `/zones/${old.zone}/dns_records/${old.id}`);
145+
}
146+
if (this.definition.zone_name !== void 0) {
147+
this.state.applied_zone_name = this.definition.zone_name;
148+
}
149+
return;
150+
}
151+
if (!this.state.record_id) {
152+
const existing = this.findRecord(desiredZoneId, this.definition.record_type, this.definition.name);
153+
if (!existing) {
154+
const created = this.request("POST", `/zones/${desiredZoneId}/dns_records`, payload);
155+
const newId = created?.result?.id;
156+
if (newId) {
157+
this.state.record_id = newId;
158+
this.state.zone_id = desiredZoneId;
159+
this.state.existing = false;
160+
if (this.definition.zone_name !== void 0) this.state.applied_zone_name = this.definition.zone_name;
161+
} else {
162+
const newRec = this.findRecord(desiredZoneId, this.definition.record_type, this.definition.name);
163+
if (newRec) {
164+
this.state.record_id = newRec.id;
165+
this.state.zone_id = desiredZoneId;
166+
this.state.existing = true;
167+
if (this.definition.zone_name !== void 0) this.state.applied_zone_name = this.definition.zone_name;
168+
}
169+
}
170+
return;
171+
}
172+
this.state.record_id = existing.id;
173+
this.state.zone_id = desiredZoneId;
174+
this.state.existing = true;
175+
}
176+
this.request("PUT", `/zones/${desiredZoneId}/dns_records/${this.state.record_id}`, payload);
177+
this.state.zone_id = desiredZoneId;
178+
if (this.definition.zone_name !== void 0) {
179+
this.state.applied_zone_name = this.definition.zone_name;
180+
}
120181
}
121182
delete() {
122183
if (!this.state.zone_id || !this.state.record_id) {

dist/cloudflare/cloudflare-dns-record.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ cloudflare-dns-record:
33
defines: entity
44
metadata:
55
name: CloudflareDNSRecord
6-
version-hash: e0206fa9d712
6+
version-hash: 1f3d61bb7e51
77
schema:
88
secret_ref:
99
type: string
@@ -47,6 +47,9 @@ cloudflare-dns-record:
4747
zone_id:
4848
type: string
4949
description: Zone id resolved for this record
50+
applied_zone_name:
51+
type: string
52+
description: Zone name applied on last successful operation (for change detection)
5053
lifecycle:
5154
sync: <<< cloudflare-dns-record-sync.js
5255
get-info: ''

dist/cloudflare/cloudflare-dns-zone.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ cloudflare-dns-zone:
33
defines: entity
44
metadata:
55
name: CloudflareDNSZone
6-
version-hash: e0206fa9d712
6+
version-hash: 1f3d61bb7e51
77
schema:
88
secret_ref:
99
type: string

dist/netlify/MANIFEST

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
REPO netlify
2-
VERSION_HASH c5366b9218cb
3-
LOAD account.yaml netlify-base.yaml form.yaml common.yaml site.yaml
4-
RESOURCES common.js account-sync.js form-sync.js netlify-base.js site-sync.js
2+
VERSION_HASH 7f6f1883a79e
3+
LOAD account.yaml common.yaml form.yaml netlify-base.yaml site.yaml
4+
RESOURCES account-sync.js form-sync.js netlify-base.js common.js site-sync.js

dist/netlify/account.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ account:
33
defines: entity
44
metadata:
55
name: Account
6-
version-hash: c5366b9218cb
6+
version-hash: 7f6f1883a79e
77
schema:
88
secret_ref:
99
type: string

dist/netlify/common.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ namespace: netlify
33
common:
44
defines: module
55
metadata:
6-
version-hash: c5366b9218cb
6+
version-hash: 7f6f1883a79e
77
source: <<< common.js

dist/netlify/form.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ form:
33
defines: entity
44
metadata:
55
name: Form
6-
version-hash: c5366b9218cb
6+
version-hash: 7f6f1883a79e
77
schema:
88
secret_ref:
99
type: string

dist/netlify/netlify-base.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ namespace: netlify
33
netlify-base:
44
defines: module
55
metadata:
6-
version-hash: c5366b9218cb
6+
version-hash: 7f6f1883a79e
77
source: <<< netlify-base.js

0 commit comments

Comments
 (0)