domainkit 0.6.0 → 0.7.0
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/README.md +13 -14
- package/dist/{canonical-json-9x7gHIoS.mjs → canonical-json-CQYKsZw7.mjs} +10 -4
- package/dist/canonical-json-CQYKsZw7.mjs.map +1 -0
- package/dist/{connect-Db830jad.d.mts → connect-10vHuShV.d.mts} +21 -7
- package/dist/{connect-ks3cpqBD.mjs → connect-oI8hcMxc.mjs} +4 -4
- package/dist/connect-oI8hcMxc.mjs.map +1 -0
- package/dist/{connection-DuYDgWir.d.mts → connection-C0xsU41C.d.mts} +2 -2
- package/dist/{connection-api-B__0M3PA.d.mts → connection-api-DW7xUJdj.d.mts} +2 -2
- package/dist/index.d.mts +4 -4
- package/dist/index.mjs +5 -4
- package/dist/index.mjs.map +1 -1
- package/dist/{managed-dns-connections-CaXts84E.mjs → managed-dns-connections-C3A_GBaz.mjs} +2 -2
- package/dist/{managed-dns-connections-CaXts84E.mjs.map → managed-dns-connections-C3A_GBaz.mjs.map} +1 -1
- package/dist/promise.d.mts +69 -10
- package/dist/promise.mjs +11 -6
- package/dist/promise.mjs.map +1 -1
- package/dist/{resolver-DxJPsq6l.mjs → resolver-DPJs8h0a.mjs} +46 -26
- package/dist/resolver-DPJs8h0a.mjs.map +1 -0
- package/dist/{resolver-DUAIlm2I.d.mts → resolver-DRrLm_hB.d.mts} +889 -15
- package/dist/server.d.mts +3 -3
- package/dist/server.mjs +3 -3
- package/dist/testing.d.mts +2 -2
- package/dist/testing.mjs +5 -7
- package/dist/testing.mjs.map +1 -1
- package/dist/{verify-yAy-r9no.d.mts → verify-C3V_GtzL.d.mts} +14 -4
- package/dist/{verify-DAtUAEeg.mjs → verify-DDnK8U7C.mjs} +20 -20
- package/dist/verify-DDnK8U7C.mjs.map +1 -0
- package/package.json +4 -2
- package/dist/canonical-json-9x7gHIoS.mjs.map +0 -1
- package/dist/connect-ks3cpqBD.mjs.map +0 -1
- package/dist/resolver-DxJPsq6l.mjs.map +0 -1
- package/dist/verify-DAtUAEeg.mjs.map +0 -1
package/dist/promise.d.mts
CHANGED
|
@@ -1,24 +1,83 @@
|
|
|
1
|
-
import { $ as Schema$1, At as Schema$3, Ct as Txt, Dt as equals, J as Manifest, K as AsyncOAuthSubjectResolver, M as ProviderConnection, Mt as parse$1, N as ProviderTarget, Ot as parse, Pt as invalid_input_d_exports, St as Srv, Tt as data, W as ProviderAuthorization, X as OAuthClientConfiguration, Y as Method, Z as OAuthMethod, _ as provider_context_d_exports, _t as Ns, at as CreateResult, bt as RequirementMetadata, dt as Aaaa, et as TokenValidation, ft as Caa, gt as Mx, ht as Encoded, it as AsyncInterface, j as DomainAttachment, kt as DomainName, mt as DnsRecord, nt as Value, pt as Cname, rt as secret_d_exports, ut as A, vt as Observed, wt as Type, xt as Schema$2, yt as Opaque } from "./connect-
|
|
2
|
-
import { $ as RestoreInput, A as Options$4, B as manifest$2, C as manifest$3, D as Fetch$1, E as AccountContext, F as OAuthMethodOptions, G as Interface$5, H as tokenMethod$2, I as RefreshCredentialOptions, J as Zone, K as ListZonesInput, L as SubjectResolverOptions, N as CredentialTarget, O as Interface$6, P as OAuthFlowOptions, Q as Resolution, R as TokenConnectionOptions, S as integrationMethod$1, T as Account$1, U as Account, V as oauthMethod$1, W as Fetch, X as Interface$4, Y as Credential, Z as ListTargetsInput, _ as ExchangeCodeOptions, b as IntegrationMethodOptions, c as Policy, f as Options$5, i as Result, j as Zone$1, k as ListZonesInput$1, m as Options$6, n as PublicDns$1, nt as selection_d_exports, o as DefaultOptions, q as Options$3, r as PublicDnsObservation, rt as diagnostic_d_exports, s as Observation, t as ProviderObservation, tt as zones_d_exports, u as Options$7, v as IntegrationCredential, w as tokenMethod$3, x as TokenConnectionOptions$1, y as IntegrationFlowOptions, z as TokenValidatorOptions } from "./verify-
|
|
3
|
-
import { A as renderManualInstructions$1, C as DiscoverCreateInput$1, E as ResolvedCreateResult, F as PlanAuthorization, H as Source$1, I as Receipt, L as Schema$4, M as Authorization, N as DnsPlan, O as Target, P as Operation, R as encode, S as CreateResult$1, V as Candidate, _ as Receipt$1, d as Authorization$1, f as CreateError, g as Plan, h as PartialError, j as ApplyReceipt, m as Operation$1, n as AsyncInterface$1, o as Query, p as Error, r as AsyncResolution, t as Answer, u as ApplyError, w as ExactCreateInput$1, z as encodeReceipt } from "./resolver-
|
|
4
|
-
import { a as managed_dns_connections_d_exports, i as AsyncInterface$2, n as Method$1, r as connection_d_exports, t as InteractiveFlow } from "./connection-
|
|
1
|
+
import { $ as Schema$1, At as Schema$3, Ct as Txt, Dt as equals, J as Manifest, K as AsyncOAuthSubjectResolver, M as ProviderConnection, Mt as parse$1, N as ProviderTarget, Ot as parse, Pt as invalid_input_d_exports, St as Srv, Tt as data, W as ProviderAuthorization, X as OAuthClientConfiguration, Y as Method, Z as OAuthMethod, _ as provider_context_d_exports, _t as Ns, at as CreateResult, bt as RequirementMetadata, dt as Aaaa, et as TokenValidation, ft as Caa, gt as Mx, ht as Encoded, it as AsyncInterface, j as DomainAttachment, kt as DomainName, mt as DnsRecord, nt as Value, pt as Cname, rt as secret_d_exports, ut as A, vt as Observed, wt as Type, xt as Schema$2, yt as Opaque } from "./connect-10vHuShV.mjs";
|
|
2
|
+
import { $ as RestoreInput, A as Options$4, B as manifest$2, C as manifest$3, D as Fetch$1, E as AccountContext, F as OAuthMethodOptions, G as Interface$5, H as tokenMethod$2, I as RefreshCredentialOptions, J as Zone, K as ListZonesInput, L as SubjectResolverOptions, N as CredentialTarget, O as Interface$6, P as OAuthFlowOptions, Q as Resolution$1, R as TokenConnectionOptions, S as integrationMethod$1, T as Account$1, U as Account, V as oauthMethod$1, W as Fetch, X as Interface$4, Y as Credential, Z as ListTargetsInput, _ as ExchangeCodeOptions, b as IntegrationMethodOptions, c as Policy, f as Options$5, i as Result, j as Zone$1, k as ListZonesInput$1, m as Options$6, n as PublicDns$1, nt as selection_d_exports, o as DefaultOptions, q as Options$3, r as PublicDnsObservation, rt as diagnostic_d_exports, s as Observation, t as ProviderObservation, tt as zones_d_exports, u as Options$7, v as IntegrationCredential, w as tokenMethod$3, x as TokenConnectionOptions$1, y as IntegrationFlowOptions, z as TokenValidatorOptions } from "./verify-C3V_GtzL.mjs";
|
|
3
|
+
import { A as renderManualInstructions$1, C as DiscoverCreateInput$1, E as ResolvedCreateResult, F as PlanAuthorization, H as Source$1, I as Receipt, L as Schema$4, M as Authorization, N as DnsPlan, O as Target, P as Operation, R as encode, S as CreateResult$1, V as Candidate, _ as Receipt$1, d as Authorization$1, f as CreateError, g as Plan, h as PartialError, j as ApplyReceipt, m as Operation$1, n as AsyncInterface$1, o as Query, p as Error, r as AsyncResolution, t as Answer, u as ApplyError, w as ExactCreateInput$1, z as encodeReceipt } from "./resolver-DRrLm_hB.mjs";
|
|
4
|
+
import { a as managed_dns_connections_d_exports, i as AsyncInterface$2, n as Method$1, r as connection_d_exports, t as InteractiveFlow } from "./connection-C0xsU41C.mjs";
|
|
5
5
|
import { Data } from "effect";
|
|
6
6
|
declare namespace dns_provider_d_exports {
|
|
7
7
|
export { CreateResult, AsyncInterface as Interface };
|
|
8
8
|
}
|
|
9
9
|
declare namespace provider_session_d_exports {
|
|
10
|
-
export { Interface$3 as Interface, ListTargetsInput, Resolution, fromEffect };
|
|
10
|
+
export { Interface$3 as Interface, ListTargetsInput, Resolution$1 as Resolution, fromEffect };
|
|
11
11
|
}
|
|
12
12
|
interface Interface$3 {
|
|
13
13
|
readonly providerId: string;
|
|
14
14
|
readonly listTargets: (input?: ListTargetsInput) => Promise<ReadonlyArray<ProviderTarget>>;
|
|
15
|
-
readonly resolveTarget: (domain: DomainName) => Promise<Resolution>;
|
|
15
|
+
readonly resolveTarget: (domain: DomainName) => Promise<Resolution$1>;
|
|
16
16
|
readonly forTarget: (target: ProviderTarget) => Promise<AsyncInterface>;
|
|
17
17
|
}
|
|
18
18
|
declare const fromEffect: (session: Interface$4) => Interface$3;
|
|
19
19
|
declare namespace dns_resolver_d_exports {
|
|
20
|
-
export { Answer, AsyncInterface$1 as Interface, Query,
|
|
20
|
+
export { Answer, AsyncInterface$1 as Interface, Query, Resolution };
|
|
21
21
|
}
|
|
22
|
+
declare const Resolution: {
|
|
23
|
+
Schema: import("effect/Schema").TaggedUnion<{
|
|
24
|
+
readonly answer: import("effect/Schema").TaggedStruct<"answer", {
|
|
25
|
+
readonly answers: import("effect/Schema").$Array<import("effect/Schema").Struct<{
|
|
26
|
+
readonly data: import("effect/Schema").String;
|
|
27
|
+
readonly name: import("effect/Schema").decodeTo<import("effect/Schema").brand<import("effect/Schema").String, "DomainName">, import("effect/Schema").String, never, never>;
|
|
28
|
+
readonly ttl: import("effect/Schema").Int;
|
|
29
|
+
readonly type: import("effect/Schema").Literals<readonly ["A", "AAAA", "CNAME", "TXT", "MX", "CAA", "NS", "SRV"]>;
|
|
30
|
+
}>>;
|
|
31
|
+
}>;
|
|
32
|
+
readonly failure: import("effect/Schema").TaggedStruct<"failure", {
|
|
33
|
+
readonly message: import("effect/Schema").String;
|
|
34
|
+
}>;
|
|
35
|
+
readonly nodata: import("effect/Schema").TaggedStruct<"nodata", {}>;
|
|
36
|
+
readonly timeout: import("effect/Schema").TaggedStruct<"timeout", {}>;
|
|
37
|
+
}>;
|
|
38
|
+
answer: (input: Parameters<(input: {
|
|
39
|
+
readonly _tag?: "answer";
|
|
40
|
+
readonly answers: readonly {
|
|
41
|
+
readonly data: string;
|
|
42
|
+
readonly name: string & import("effect/Brand").Brand<"DomainName">;
|
|
43
|
+
readonly ttl: number;
|
|
44
|
+
readonly type: "A" | "AAAA" | "CAA" | "CNAME" | "MX" | "NS" | "SRV" | "TXT";
|
|
45
|
+
}[];
|
|
46
|
+
}, options?: import("effect/Schema").MakeOptions) => {
|
|
47
|
+
readonly _tag: "answer";
|
|
48
|
+
readonly answers: readonly {
|
|
49
|
+
readonly data: string;
|
|
50
|
+
readonly name: string & import("effect/Brand").Brand<"DomainName">;
|
|
51
|
+
readonly ttl: number;
|
|
52
|
+
readonly type: "A" | "AAAA" | "CAA" | "CNAME" | "MX" | "NS" | "SRV" | "TXT";
|
|
53
|
+
}[];
|
|
54
|
+
}>[0]) => {
|
|
55
|
+
readonly _tag: "answer";
|
|
56
|
+
readonly answers: readonly {
|
|
57
|
+
readonly data: string;
|
|
58
|
+
readonly name: string & import("effect/Brand").Brand<"DomainName">;
|
|
59
|
+
readonly ttl: number;
|
|
60
|
+
readonly type: "A" | "AAAA" | "CAA" | "CNAME" | "MX" | "NS" | "SRV" | "TXT";
|
|
61
|
+
}[];
|
|
62
|
+
};
|
|
63
|
+
failure: (input: Parameters<(input: {
|
|
64
|
+
readonly _tag?: "failure";
|
|
65
|
+
readonly message: string;
|
|
66
|
+
}, options?: import("effect/Schema").MakeOptions) => {
|
|
67
|
+
readonly _tag: "failure";
|
|
68
|
+
readonly message: string;
|
|
69
|
+
}>[0]) => {
|
|
70
|
+
readonly _tag: "failure";
|
|
71
|
+
readonly message: string;
|
|
72
|
+
};
|
|
73
|
+
nodata: () => {
|
|
74
|
+
readonly _tag: "nodata";
|
|
75
|
+
};
|
|
76
|
+
timeout: () => {
|
|
77
|
+
readonly _tag: "timeout";
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
type Resolution = AsyncResolution;
|
|
22
81
|
declare namespace provider_auth_d_exports {
|
|
23
82
|
export { Manifest, Method, OAuthClientConfiguration, OAuthMethod, AsyncOAuthSubjectResolver as OAuthSubjectResolver, Schema$1 as Schema, TokenValidation, decode$1 as decode };
|
|
24
83
|
}
|
|
@@ -97,7 +156,7 @@ interface Interface$2 extends AsyncInterface {
|
|
|
97
156
|
readonly listAccounts: () => Promise<ReadonlyArray<Account>>;
|
|
98
157
|
readonly listZones: (input?: ListZonesInput) => Promise<ReadonlyArray<Zone>>;
|
|
99
158
|
readonly listTargets: (input?: ListTargetsInput) => Promise<ReadonlyArray<ProviderTarget>>;
|
|
100
|
-
readonly resolveTarget: (domain: DomainName) => Promise<Resolution>;
|
|
159
|
+
readonly resolveTarget: (domain: DomainName) => Promise<Resolution$1>;
|
|
101
160
|
readonly validateToken: () => Promise<TokenValidation>;
|
|
102
161
|
}
|
|
103
162
|
/** Creates a Promise-compatible facade over the Effect-native Cloudflare client. */
|
|
@@ -127,7 +186,7 @@ interface Interface$1 extends AsyncInterface {
|
|
|
127
186
|
readonly listAccounts: () => Promise<ReadonlyArray<Account$1>>;
|
|
128
187
|
readonly listZones: (input?: ListZonesInput$1) => Promise<ReadonlyArray<Zone$1>>;
|
|
129
188
|
readonly listTargets: (input?: ListTargetsInput) => Promise<ReadonlyArray<ProviderTarget>>;
|
|
130
|
-
readonly resolveTarget: (domain: DomainName) => Promise<Resolution>;
|
|
189
|
+
readonly resolveTarget: (domain: DomainName) => Promise<Resolution$1>;
|
|
131
190
|
readonly validateToken: () => Promise<TokenValidation>;
|
|
132
191
|
}
|
|
133
192
|
/** Creates a Promise-compatible facade over the Effect-native Vercel client. */
|
|
@@ -315,5 +374,5 @@ declare function make(options?: Options): AsyncInterface$1;
|
|
|
315
374
|
/** The current package version from the package manifest. */
|
|
316
375
|
declare const VERSION: string;
|
|
317
376
|
//#endregion
|
|
318
|
-
export { cloudflare_d_exports as Cloudflare, cloudflare_doh_d_exports as CloudflareDnsOverHttps, connection_d_exports as Connection, deletion_d_exports as Deletion, diagnostic_d_exports as Diagnostic, doh_d_exports as DnsOverHttps, dns_plan_d_exports as DnsPlan, type dns_provider_d_exports as DnsProvider, dns_record_d_exports as DnsRecord,
|
|
377
|
+
export { cloudflare_d_exports as Cloudflare, cloudflare_doh_d_exports as CloudflareDnsOverHttps, connection_d_exports as Connection, deletion_d_exports as Deletion, diagnostic_d_exports as Diagnostic, doh_d_exports as DnsOverHttps, dns_plan_d_exports as DnsPlan, type dns_provider_d_exports as DnsProvider, dns_record_d_exports as DnsRecord, dns_resolver_d_exports as DnsResolver, resolver_pool_d_exports as DnsResolverPool, domain_name_d_exports as DomainName, google_doh_d_exports as GoogleDnsOverHttps, invalid_input_d_exports as InvalidInput, managed_dns_connections_d_exports as ManagedDnsConnections, provider_auth_d_exports as ProviderAuth, provider_context_d_exports as ProviderContext, selection_d_exports as ProviderDiscovery, provider_session_d_exports as ProviderSession, provisioning_d_exports as Provisioning, secret_d_exports as Secret, VERSION, vercel_d_exports as Vercel, verification_d_exports as Verification, zone_discovery_d_exports as ZoneDiscovery, zones_d_exports as Zones };
|
|
319
378
|
//# sourceMappingURL=promise.d.mts.map
|
package/dist/promise.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
|
|
2
|
-
import { B as
|
|
3
|
-
import {
|
|
4
|
-
import { a as start$1, i as complete$1, n as Method$2, r as StartResult, t as Error } from "./connect-
|
|
5
|
-
import { $ as
|
|
6
|
-
import { n as managed_dns_connections_exports, t as layerFromAsync$1 } from "./managed-dns-connections-
|
|
2
|
+
import { $ as decode$3, B as tokenConnectionMethod$2, C as integrationFlow$1, D as tokenConnectionMethod$3, E as restore$3, F as oauthFlow$1, G as make$6, H as tokenValidator$1, I as oauthMethod$1, K as authorize$2, L as refreshCredential$1, M as make$7, O as tokenMethod$3, P as manifest$2, Q as Schema$1, R as restore$2, S as exchangeCode$1, T as manifest$3, V as tokenMethod$2, X as secret_exports, Y as selection_exports, Z as Method$1, _ as toAsync$1, a as Result, c as Observation, d as defaultMake$1, f as make$8, h as toAsync$3, i as PublicDnsObservation, k as AccountContext, l as Policy, n as ProviderObservation, nt as version, o as observe$1, r as PublicDns$1, t as Provider$1, tt as diagnostic_exports, u as Service, w as integrationMethod$1, y as toAsync$2, z as subjectResolver$1 } from "./verify-DDnK8U7C.mjs";
|
|
3
|
+
import { C as encode, E as Schema$2, S as decode$4, T as validate, _ as ProviderTarget, f as provider_context_exports, g as ProviderConnection, h as DomainAttachment, i as webCryptoLayer, j as invalid_input_exports, k as parse, m as ConnectionStatus, p as AuthorizationError, v as ProviderTargetEvidence, x as authorizationError } from "./canonical-json-CQYKsZw7.mjs";
|
|
4
|
+
import { a as start$1, i as complete$1, n as Method$2, r as StartResult, t as Error } from "./connect-oI8hcMxc.mjs";
|
|
5
|
+
import { $ as Txt, A as Schema$4, C as authorize$4, D as Authorization, E as renderManualInstructions$1, G as Cname, H as A, I as Error$1, J as Observed, K as Mx, L as Service$1, M as decodeReceipt$1, N as encode$1, O as Operation, P as encodeReceipt, Q as Srv, S as apply$3, U as Aaaa, V as toAsync$4, W as Caa, X as RequirementMetadata, Y as Opaque, Z as Schema$3, at as parse$1, c as Error$2, ct as make$9, d as Plan, dt as zones_exports, et as Type, f as Receipt$1, h as create$2, it as equals, j as decode$5, k as Receipt, l as Operation$1, m as authorize$3, n as Error$3, ot as Candidate, p as apply$2, q as Ns, s as Authorization$1, st as Service$2, t as AsyncResolution, tt as data, u as PartialError, v as CreateResult, w as create$3, x as Target, z as layerFromAsync } from "./resolver-DPJs8h0a.mjs";
|
|
6
|
+
import { n as managed_dns_connections_exports, t as layerFromAsync$1 } from "./managed-dns-connections-C3A_GBaz.mjs";
|
|
7
7
|
import { Data, Effect, Layer } from "effect";
|
|
8
8
|
//#region src/promise/connection.ts
|
|
9
9
|
var connection_exports = /* @__PURE__ */ __exportAll({
|
|
@@ -137,6 +137,10 @@ const fromEffect = (session) => ({
|
|
|
137
137
|
forTarget: (target) => Effect.runPromise(session.forTarget(target)).then(toAsync$4)
|
|
138
138
|
});
|
|
139
139
|
//#endregion
|
|
140
|
+
//#region src/promise/dns-resolver.ts
|
|
141
|
+
var dns_resolver_exports = /* @__PURE__ */ __exportAll({ Resolution: () => Resolution });
|
|
142
|
+
const Resolution = AsyncResolution;
|
|
143
|
+
//#endregion
|
|
140
144
|
//#region src/promise/provider-auth.ts
|
|
141
145
|
var provider_auth_exports = /* @__PURE__ */ __exportAll({
|
|
142
146
|
Method: () => Method$1,
|
|
@@ -392,6 +396,7 @@ function tokenConnectionMethod(options) {
|
|
|
392
396
|
//#endregion
|
|
393
397
|
//#region src/promise/vercel.ts
|
|
394
398
|
var vercel_exports = /* @__PURE__ */ __exportAll({
|
|
399
|
+
AccountContext: () => AccountContext,
|
|
395
400
|
Auth: () => vercel_auth_exports,
|
|
396
401
|
discovery: () => discovery,
|
|
397
402
|
make: () => make$4
|
|
@@ -588,6 +593,6 @@ function asyncResolver(resolver) {
|
|
|
588
593
|
/** The current package version from the package manifest. */
|
|
589
594
|
const VERSION = version;
|
|
590
595
|
//#endregion
|
|
591
|
-
export { cloudflare_exports as Cloudflare, cloudflare_doh_exports as CloudflareDnsOverHttps, connection_exports as Connection, deletion_exports as Deletion, diagnostic_exports as Diagnostic, doh_exports as DnsOverHttps, dns_plan_exports as DnsPlan, dns_record_exports as DnsRecord, resolver_pool_exports as DnsResolverPool, domain_name_exports as DomainName, google_doh_exports as GoogleDnsOverHttps, invalid_input_exports as InvalidInput, managed_dns_connections_exports as ManagedDnsConnections, provider_auth_exports as ProviderAuth, provider_context_exports as ProviderContext, selection_exports as ProviderDiscovery, provider_session_exports as ProviderSession, provisioning_exports as Provisioning, secret_exports as Secret, VERSION, vercel_exports as Vercel, verification_exports as Verification, zone_discovery_exports as ZoneDiscovery, zones_exports as Zones };
|
|
596
|
+
export { cloudflare_exports as Cloudflare, cloudflare_doh_exports as CloudflareDnsOverHttps, connection_exports as Connection, deletion_exports as Deletion, diagnostic_exports as Diagnostic, doh_exports as DnsOverHttps, dns_plan_exports as DnsPlan, dns_record_exports as DnsRecord, dns_resolver_exports as DnsResolver, resolver_pool_exports as DnsResolverPool, domain_name_exports as DomainName, google_doh_exports as GoogleDnsOverHttps, invalid_input_exports as InvalidInput, managed_dns_connections_exports as ManagedDnsConnections, provider_auth_exports as ProviderAuth, provider_context_exports as ProviderContext, selection_exports as ProviderDiscovery, provider_session_exports as ProviderSession, provisioning_exports as Provisioning, secret_exports as Secret, VERSION, vercel_exports as Vercel, verification_exports as Verification, zone_discovery_exports as ZoneDiscovery, zones_exports as Zones };
|
|
592
597
|
|
|
593
598
|
//# sourceMappingURL=promise.mjs.map
|
package/dist/promise.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promise.mjs","names":["decode","Connection.decode","Connect.Error","Connect.start","Lifecycle.layerFromAsync","Connect.complete","EffectDnsProvider.toAsync","decode","ProviderAuth.decode","Discovery.make","Provider.Error","DnsPlan.decode","DnsPlan.decodeReceipt","create","DeletionEffect.create","DnsProvider.layerFromAsync","authorize","DeletionEffect.authorize","apply","DeletionEffect.apply","manifest","EffectAuth.manifest","EffectAuth.oauthMethod","EffectAuth.refreshCredential","restore","EffectAuth.restore","tokenMethod","EffectAuth.tokenMethod","EffectAuth.subjectResolver","Connection.fromEffectFlow","EffectAuth.oauthFlow","tokenConnectionMethod","Connection.fromEffectTokenMethod","EffectAuth.tokenConnectionMethod","EffectAuth.tokenValidator","make","Cloudflare.make","discovery","EffectAuth.integrationMethod","EffectAuth.manifest","EffectAuth.restore","EffectAuth.tokenMethod","EffectAuth.exchangeCode","Connection.fromEffectFlow","EffectAuth.integrationFlow","Connection.fromEffectTokenMethod","EffectAuth.tokenConnectionMethod","make","Vercel.make","ProvisioningEffect.create","ZoneDiscoveryEffect.Service","ZoneDiscoveryEffect.make","ZoneDiscovery.toEffectSource","DnsProvider.layerFromAsync","ProvisioningEffect.authorize","ProvisioningEffect.apply","ConnectionAuthorization.authorize","Lifecycle.layerFromAsync","ProvisioningEffect.renderManualInstructions","VerificationEffect.PublicDns","VerificationEffect.observe","DnsProvider.layerFromAsync","DnsResolverPoolEffect.Service","DnsResolverPoolEffect.make","DnsResolver.Error","make","CloudflareDnsOverHttps.toAsync","make","DnsOverHttps.toAsync","make","GoogleDnsOverHttps.toAsync","Pool.make","Pool.defaultMake","DnsResolver.Error","packageJson.version"],"sources":["../src/promise/connection.ts","../src/promise/provider-session.ts","../src/promise/provider-auth.ts","../src/promise/zone-discovery.ts","../src/promise/dns-record.ts","../src/promise/domain-name.ts","../src/promise/dns-plan.ts","../src/promise/deletion.ts","../src/promise/cloudflare-auth.ts","../src/promise/cloudflare.ts","../src/promise/vercel-auth.ts","../src/promise/vercel.ts","../src/promise/provisioning.ts","../src/promise/verification.ts","../src/promise/cloudflare-doh.ts","../src/promise/doh.ts","../src/promise/google-doh.ts","../src/promise/resolver-pool.ts","../src/promise.ts"],"sourcesContent":["import { Data, Effect, Layer } from \"effect\";\n\nimport * as Connection from \"../auth/connection.ts\";\nimport * as Connect from \"../auth/connect.ts\";\nimport type * as ProviderAuthorization from \"../auth/authorization.ts\";\nimport { webCryptoLayer } from \"../plan/canonical-json.ts\";\nimport * as Lifecycle from \"./managed-dns-connections.ts\";\nimport type * as Secret from \"../auth/secret.ts\";\n\nexport {\n AuthorizationError,\n authorizationError,\n ConnectionStatus,\n DomainAttachment,\n encode,\n ProviderConnection,\n ProviderTarget,\n ProviderTargetEvidence,\n validate,\n} from \"../auth/connection.ts\";\n\nexport function decode(input: unknown): Promise<Connection.ProviderConnection> {\n return Effect.runPromise(Connection.decode(input));\n}\n\nexport type Method = Data.TaggedEnum<{\n Interactive: {\n readonly continuations: ContinuationStore;\n readonly flow: InteractiveFlow;\n readonly ttlMs?: number;\n };\n Token: {\n readonly authenticate: (token: Secret.Value) => Promise<Connect.Authentication>;\n readonly providerId: string;\n readonly requiredCapabilities: ReadonlyArray<ProviderAuthorization.Capability>;\n readonly token: Secret.Value;\n };\n}>;\nexport const Method = Data.taggedEnum<Method>();\n\nexport interface ContinuationStore {\n readonly consume: (id: string, now: Date) => Promise<Connect.Continuation | null>;\n readonly put: (continuation: Connect.Continuation) => Promise<void>;\n}\n\nexport interface InteractiveFlow {\n readonly complete: (payload: Secret.Value, callbackUrl: URL) => Promise<Connect.Authentication>;\n readonly method: \"integration\" | \"oauth2\";\n readonly providerId: string;\n readonly requiredCapabilities: ReadonlyArray<ProviderAuthorization.Capability>;\n readonly start: (continuationId: string) => Promise<Connect.InteractiveStart>;\n}\n\nconst connectionFailure = (operation: string, cause: unknown): Connect.Error =>\n cause instanceof Connect.Error\n ? cause\n : new Connect.Error({\n category: \"provider\",\n message: cause instanceof globalThis.Error ? cause.message : String(cause),\n operation,\n retry: \"unknown\",\n });\n\nconst effectMethod = (method: Method): Connect.Method =>\n method._tag === \"Interactive\"\n ? Connect.Method.Interactive({\n continuations: effectContinuations(method.continuations),\n flow: effectFlow(method.flow),\n ...(method.ttlMs === undefined ? {} : { ttlMs: method.ttlMs }),\n })\n : Connect.Method.Token({\n authenticate: (token) =>\n Effect.tryPromise({\n try: () => method.authenticate(token),\n catch: (cause) => connectionFailure(\"Connection.start\", cause),\n }),\n providerId: method.providerId,\n requiredCapabilities: method.requiredCapabilities,\n token: method.token,\n });\n\nconst effectContinuations = (store: ContinuationStore): Connect.ContinuationStore => ({\n consume: (id, now) =>\n Effect.tryPromise({\n try: () => store.consume(id, now),\n catch: (cause) => connectionFailure(\"ConnectionContinuations.consume\", cause),\n }),\n put: (continuation) =>\n Effect.tryPromise({\n try: () => store.put(continuation),\n catch: (cause) => connectionFailure(\"ConnectionContinuations.put\", cause),\n }),\n});\n\nconst effectFlow = (flow: InteractiveFlow): Connect.InteractiveFlow => ({\n complete: (payload, callbackUrl) =>\n Effect.tryPromise({\n try: () => flow.complete(payload, callbackUrl),\n catch: (cause) => connectionFailure(\"Connection.complete\", cause),\n }),\n method: flow.method,\n providerId: flow.providerId,\n requiredCapabilities: flow.requiredCapabilities,\n start: (continuationId) =>\n Effect.tryPromise({\n try: () => flow.start(continuationId),\n catch: (cause) => connectionFailure(\"Connection.start\", cause),\n }),\n});\n\n/** Adapts an Effect-native provider flow to the Promise facade. */\nexport const fromEffectFlow = (flow: Connect.InteractiveFlow): InteractiveFlow => ({\n complete: (payload, callbackUrl) => Effect.runPromise(flow.complete(payload, callbackUrl)),\n method: flow.method,\n providerId: flow.providerId,\n requiredCapabilities: flow.requiredCapabilities,\n start: (continuationId) =>\n Effect.runPromise(flow.start(continuationId).pipe(Effect.provide(webCryptoLayer))),\n});\n\n/** Adapts an Effect-native token method to the Promise facade. */\nexport function fromEffectTokenMethod(\n method: Extract<Connect.Method, { readonly _tag: \"Token\" }>,\n): Extract<Method, { readonly _tag: \"Token\" }> {\n return Method.Token({\n authenticate: (token) => Effect.runPromise(method.authenticate(token)),\n providerId: method.providerId,\n requiredCapabilities: method.requiredCapabilities,\n token: method.token,\n });\n}\n\nexport async function start(\n input: Connect.BaseInput & {\n readonly method: Method;\n readonly repository: Lifecycle.AsyncInterface;\n },\n): Promise<Connect.StartResult> {\n return Effect.runPromise(\n Connect.start({\n authorizedById: input.authorizedById,\n ...(input.authorizationId === undefined ? {} : { authorizationId: input.authorizationId }),\n method: effectMethod(input.method),\n ownerId: input.ownerId,\n }).pipe(\n Effect.provide(Layer.merge(Lifecycle.layerFromAsync(input.repository), webCryptoLayer)),\n ),\n );\n}\n\nexport async function complete(input: {\n readonly callbackUrl: URL;\n readonly continuationId: string;\n readonly continuations: ContinuationStore;\n readonly flow: InteractiveFlow;\n readonly repository: Lifecycle.AsyncInterface;\n}): Promise<Connection.ProviderConnection> {\n return Effect.runPromise(\n Connect.complete({\n callbackUrl: input.callbackUrl,\n continuationId: input.continuationId,\n continuations: effectContinuations(input.continuations),\n flow: effectFlow(input.flow),\n }).pipe(\n Effect.provide(Layer.merge(Lifecycle.layerFromAsync(input.repository), webCryptoLayer)),\n ),\n );\n}\n\nexport function attach(input: {\n readonly attachment: Connection.DomainAttachment;\n readonly connectionId: string;\n readonly ownerId: string;\n readonly repository: Lifecycle.AsyncInterface;\n}): Promise<Lifecycle.AttachmentResult> {\n return input.repository.attach({\n attachment: input.attachment,\n connectionId: input.connectionId,\n ownerId: input.ownerId,\n });\n}\n\nexport function detach(input: {\n readonly attachmentId: string;\n readonly ownerId: string;\n readonly repository: Lifecycle.AsyncInterface;\n}): Promise<Lifecycle.DetachResult> {\n return input.repository.detach({\n attachmentId: input.attachmentId,\n ownerId: input.ownerId,\n });\n}\n\nexport function disconnect(input: {\n readonly connectionId: string;\n readonly ownerId: string;\n readonly repository: Lifecycle.AsyncInterface;\n readonly revoke: (authorization: ProviderAuthorization.ProviderAuthorization) => Promise<void>;\n}): Promise<Lifecycle.DisconnectResult> {\n return input.repository.disconnect({\n connectionId: input.connectionId,\n ownerId: input.ownerId,\n revoke: input.revoke,\n });\n}\n\nexport { Error, StartResult } from \"../auth/connect.ts\";\nexport type {\n Authentication,\n AuthenticationFailure,\n BaseInput,\n CompleteInput,\n Continuation,\n Failure,\n InteractiveStart,\n} from \"../auth/connect.ts\";\n","import { Effect } from \"effect\";\n\nimport * as EffectSession from \"../provider/session.ts\";\nimport type * as Connection from \"../auth/connection.ts\";\nimport type * as DomainName from \"../domain/domain-name.ts\";\nimport * as EffectDnsProvider from \"../provider/provider.ts\";\nimport * as DnsProvider from \"./dns-provider.ts\";\n\nexport type { ListTargetsInput, Resolution } from \"../provider/session.ts\";\n\nexport interface Interface {\n readonly providerId: string;\n readonly listTargets: (\n input?: EffectSession.ListTargetsInput,\n ) => Promise<ReadonlyArray<Connection.ProviderTarget>>;\n readonly resolveTarget: (domain: DomainName.DomainName) => Promise<EffectSession.Resolution>;\n readonly forTarget: (target: Connection.ProviderTarget) => Promise<DnsProvider.Interface>;\n}\n\nexport const fromEffect = (session: EffectSession.Interface): Interface => ({\n providerId: session.providerId,\n listTargets: (input) => Effect.runPromise(session.listTargets(input)),\n resolveTarget: (domain) => Effect.runPromise(session.resolveTarget(domain)),\n forTarget: (target) =>\n Effect.runPromise(session.forTarget(target)).then(EffectDnsProvider.toAsync),\n});\n","import { Effect } from \"effect\";\n\nimport * as ProviderAuth from \"../auth/manifest.ts\";\n\nexport { Method, Schema } from \"../auth/manifest.ts\";\nexport type {\n AsyncOAuthSubjectResolver as OAuthSubjectResolver,\n Manifest,\n OAuthClientConfiguration,\n OAuthMethod,\n TokenValidation,\n} from \"../auth/manifest.ts\";\n\nexport function decode(input: unknown): Promise<ProviderAuth.Manifest> {\n return Effect.runPromise(ProviderAuth.decode(input));\n}\n","import { Effect } from \"effect\";\n\nimport type * as DomainName from \"../domain/domain-name.ts\";\nimport type * as DnsProvider from \"../provider/provider.ts\";\nimport * as Provider from \"../provider/provider.ts\";\nimport * as Discovery from \"../discovery/zone-discovery.ts\";\n\nexport interface Source {\n readonly listZones: (\n name: DomainName.DomainName,\n ) => Promise<ReadonlyArray<Omit<Discovery.Candidate, \"providerId\">>>;\n readonly provider: DnsProvider.AsyncInterface;\n}\n\nexport type Outcome =\n | { readonly _tag: \"NotFound\"; readonly domain: DomainName.DomainName }\n | { readonly _tag: \"Resolved\"; readonly candidate: Discovery.Candidate }\n | { readonly _tag: \"SelectionRequired\"; readonly candidates: ReadonlyArray<Discovery.Candidate> };\n\nexport function discover(input: {\n readonly domain: DomainName.DomainName;\n readonly sources: ReadonlyArray<Source>;\n}): Promise<Outcome> {\n return Effect.runPromise(\n Discovery.make(input.sources.map(toEffectSource))\n .discover(input.domain)\n .pipe(Effect.map(projectOutcome)),\n );\n}\n\nexport function toEffectSource(source: Source): Discovery.Source {\n return {\n listZones: (name) =>\n Effect.tryPromise({\n try: () => source.listZones(name),\n catch: (cause) =>\n new Provider.Error({\n cause,\n message: cause instanceof globalThis.Error ? cause.message : String(cause),\n operation: \"ZoneDiscovery.listZones\",\n providerId: source.provider.id,\n reason: \"transport\",\n }),\n }),\n provider: Provider.Service.of({\n id: source.provider.id,\n createRecord: (zone, record) =>\n Effect.tryPromise({\n try: () => source.provider.createRecord(zone, record),\n catch: (cause) => providerFailure(source.provider.id, \"createRecord\", cause),\n }),\n deleteRecord: (zone, providerRecordId) =>\n Effect.tryPromise({\n try: () => source.provider.deleteRecord(zone, providerRecordId),\n catch: (cause) => providerFailure(source.provider.id, \"deleteRecord\", cause),\n }),\n getRecord: (zone, providerRecordId) =>\n Effect.tryPromise({\n try: () => source.provider.getRecord(zone, providerRecordId),\n catch: (cause) => providerFailure(source.provider.id, \"getRecord\", cause),\n }),\n listRecords: (zone) =>\n Effect.tryPromise({\n try: () => source.provider.listRecords(zone),\n catch: (cause) => providerFailure(source.provider.id, \"listRecords\", cause),\n }),\n }),\n };\n}\n\nfunction projectOutcome(outcome: Discovery.Outcome): Outcome {\n switch (outcome._tag) {\n case \"NotFound\":\n return outcome;\n case \"Resolved\":\n return { _tag: \"Resolved\", candidate: outcome.candidate };\n case \"SelectionRequired\":\n return outcome;\n }\n}\n\nfunction providerFailure(providerId: string, operation: string, cause: unknown): Provider.Error {\n return cause instanceof Provider.Error\n ? cause\n : new Provider.Error({\n cause,\n message: cause instanceof globalThis.Error ? cause.message : String(cause),\n operation,\n providerId,\n });\n}\n\nexport { Candidate } from \"../discovery/zone-discovery.ts\";\n","export {\n A,\n Aaaa,\n Caa,\n Cname,\n data,\n equals,\n Mx,\n Ns,\n Opaque,\n Observed,\n parse,\n RequirementMetadata,\n Schema,\n Srv,\n Txt,\n Type,\n} from \"../domain/dns-record.ts\";\nexport type { DnsRecord, Encoded } from \"../domain/dns-record.ts\";\n","export { parse, Schema } from \"../domain/domain-name.ts\";\nexport type { DomainName } from \"../domain/domain-name.ts\";\n","import { Effect } from \"effect\";\n\nimport * as DnsPlan from \"../plan/types.ts\";\n\nexport { Authorization, encode, encodeReceipt, Operation, Receipt, Schema } from \"../plan/types.ts\";\nexport type { ApplyReceipt, DnsPlan, PlanAuthorization } from \"../plan/types.ts\";\n\nexport function decode(input: unknown): Promise<DnsPlan.DnsPlan> {\n return Effect.runPromise(DnsPlan.decode(input));\n}\n\nexport function decodeReceipt(input: unknown): Promise<DnsPlan.ApplyReceipt> {\n return Effect.runPromise(DnsPlan.decodeReceipt(input));\n}\n","import { Effect, Layer } from \"effect\";\n\nimport { webCryptoLayer } from \"../plan/canonical-json.ts\";\nimport * as DeletionEffect from \"../plan/deletion.ts\";\nimport type * as DnsPlan from \"../plan/types.ts\";\nimport * as DnsProvider from \"../provider/provider.ts\";\n\nexport function create(input: {\n readonly plan: DnsPlan.DnsPlan;\n readonly provider: DnsProvider.AsyncInterface;\n readonly receipt: DnsPlan.ApplyReceipt;\n readonly ttlMs?: number;\n}): Promise<DeletionEffect.Plan> {\n return Effect.runPromise(\n DeletionEffect.create({\n plan: input.plan,\n receipt: input.receipt,\n ...(input.ttlMs === undefined ? {} : { ttlMs: input.ttlMs }),\n }).pipe(\n Effect.provide(Layer.merge(DnsProvider.layerFromAsync(input.provider), webCryptoLayer)),\n ),\n );\n}\n\nexport function authorize(\n plan: DeletionEffect.Plan,\n operationIds?: ReadonlyArray<string>,\n): Promise<DeletionEffect.Authorization> {\n return Effect.runPromise(\n DeletionEffect.authorize(plan, operationIds).pipe(Effect.provide(webCryptoLayer)),\n );\n}\n\nexport function apply(input: {\n readonly authorization: DeletionEffect.Authorization;\n readonly plan: DeletionEffect.Plan;\n readonly priorReceipt?: DeletionEffect.Receipt;\n readonly provider: DnsProvider.AsyncInterface;\n}): Promise<DeletionEffect.Receipt> {\n return Effect.runPromise(\n DeletionEffect.apply({\n authorization: input.authorization,\n plan: input.plan,\n ...(input.priorReceipt === undefined ? {} : { priorReceipt: input.priorReceipt }),\n }).pipe(\n Effect.provide(Layer.merge(DnsProvider.layerFromAsync(input.provider), webCryptoLayer)),\n ),\n );\n}\n\nexport { Authorization, Error, Operation, PartialError, Plan, Receipt } from \"../plan/deletion.ts\";\nexport type {\n ApplyError,\n Authorization as DeletionAuthorization,\n CreateError,\n Operation as DeletionOperation,\n Plan as DeletionPlan,\n Receipt as DeletionReceipt,\n} from \"../plan/deletion.ts\";\n","import type * as oauth from \"oauth4webapi\";\nimport { Effect } from \"effect\";\n\nimport type * as ProviderAuth from \"../auth/manifest.ts\";\nimport type * as Secret from \"../auth/secret.ts\";\nimport type * as Client from \"../providers/cloudflare/client.ts\";\nimport * as EffectAuth from \"../providers/cloudflare/auth.ts\";\nimport type * as ProviderSession from \"../provider/session.ts\";\nimport * as Connection from \"./connection.ts\";\n\nexport const manifest = EffectAuth.manifest;\nexport const oauthMethod = EffectAuth.oauthMethod;\nexport function refreshCredential(\n options: EffectAuth.RefreshCredentialOptions,\n): Promise<ProviderSession.Credential> {\n return Effect.runPromise(EffectAuth.refreshCredential(options));\n}\nexport function restore(\n options: ProviderSession.RestoreInput & Pick<Client.Options, \"baseUrl\" | \"fetch\">,\n): Promise<Client.Interface> {\n return Effect.runPromise(EffectAuth.restore(options));\n}\nexport const tokenMethod = EffectAuth.tokenMethod;\nexport type {\n CredentialTarget,\n OAuthFlowOptions,\n OAuthMethodOptions,\n RefreshCredentialOptions,\n SubjectResolverOptions,\n TokenValidatorOptions,\n} from \"../providers/cloudflare/auth.ts\";\n\nexport function subjectResolver(\n options: EffectAuth.SubjectResolverOptions,\n): ProviderAuth.AsyncOAuthSubjectResolver {\n const resolve = EffectAuth.subjectResolver(options);\n return (tokens: oauth.TokenEndpointResponse, accessToken: Secret.Value) =>\n Effect.runPromise(resolve(tokens, accessToken));\n}\n\n/** Creates Cloudflare's OAuth implementation for the Promise connection facade. */\nexport function oauthFlow(options: EffectAuth.OAuthFlowOptions): Connection.InteractiveFlow {\n return Connection.fromEffectFlow(EffectAuth.oauthFlow(options));\n}\n\n/** Creates a Cloudflare token method for the Promise connection facade. */\nexport function tokenConnectionMethod(\n options: EffectAuth.TokenConnectionOptions,\n): Extract<Connection.Method, { readonly _tag: \"Token\" }> {\n return Connection.fromEffectTokenMethod(EffectAuth.tokenConnectionMethod(options));\n}\n\nexport function tokenValidator(\n options: EffectAuth.TokenValidatorOptions,\n): (token: Secret.Value) => Promise<ProviderAuth.TokenValidation> {\n const validate = EffectAuth.tokenValidator(options);\n return (token) => Effect.runPromise(validate(token));\n}\n","import { Effect } from \"effect\";\n\nimport type * as Connection from \"../auth/connection.ts\";\nimport type * as ProviderAuth from \"../auth/manifest.ts\";\nimport type * as DomainName from \"../domain/domain-name.ts\";\nimport type * as DnsProvider from \"../provider/provider.ts\";\nimport * as Cloudflare from \"../providers/cloudflare/index.ts\";\nimport type * as ProviderSession from \"../provider/session.ts\";\nimport type * as ZoneDiscovery from \"./zone-discovery.ts\";\n\nexport * as Auth from \"./cloudflare-auth.ts\";\nexport type {\n Account,\n Fetch,\n ListZonesInput,\n Options,\n Zone,\n} from \"../providers/cloudflare/client.ts\";\n\nexport interface Interface extends DnsProvider.AsyncInterface {\n readonly providerId: \"cloudflare\";\n readonly forTarget: (target: Connection.ProviderTarget) => Promise<DnsProvider.AsyncInterface>;\n readonly listAccounts: () => Promise<ReadonlyArray<Cloudflare.Account>>;\n readonly listZones: (\n input?: Cloudflare.Client.ListZonesInput,\n ) => Promise<ReadonlyArray<Cloudflare.Zone>>;\n readonly listTargets: (\n input?: ProviderSession.ListTargetsInput,\n ) => Promise<ReadonlyArray<Connection.ProviderTarget>>;\n readonly resolveTarget: (domain: DomainName.DomainName) => Promise<ProviderSession.Resolution>;\n readonly validateToken: () => Promise<ProviderAuth.TokenValidation>;\n}\n\n/** Creates a Promise-compatible facade over the Effect-native Cloudflare client. */\nexport function make(options: Cloudflare.Client.Options): Interface {\n const client = Cloudflare.make(options);\n return {\n id: client.id,\n providerId: client.providerId,\n createRecord: (zone, record) => Effect.runPromise(client.createRecord(zone, record)),\n deleteRecord: (zone, providerRecordId) =>\n Effect.runPromise(client.deleteRecord(zone, providerRecordId)),\n getRecord: (zone, providerRecordId) =>\n Effect.runPromise(client.getRecord(zone, providerRecordId)),\n listAccounts: () => Effect.runPromise(client.listAccounts()),\n listRecords: (zone) => Effect.runPromise(client.listRecords(zone)),\n listZones: (input) => Effect.runPromise(client.listZones(input)),\n listTargets: (input) => Effect.runPromise(client.listTargets(input)),\n resolveTarget: (domain) => Effect.runPromise(client.resolveTarget(domain)),\n forTarget: (target) =>\n Effect.runPromise(client.forTarget(target)).then((provider) => ({\n id: provider.id,\n createRecord: (zone, record) => Effect.runPromise(provider.createRecord(zone, record)),\n deleteRecord: (zone, providerRecordId) =>\n Effect.runPromise(provider.deleteRecord(zone, providerRecordId)),\n getRecord: (zone, providerRecordId) =>\n Effect.runPromise(provider.getRecord(zone, providerRecordId)),\n listRecords: (zone) => Effect.runPromise(provider.listRecords(zone)),\n })),\n validateToken: () => Effect.runPromise(client.validateToken()),\n };\n}\n\n/** Creates the optional Cloudflare discovery source for Promise consumers. */\nexport function discovery(options: Cloudflare.Client.Options): ZoneDiscovery.Source {\n const client = make(options);\n return {\n listZones: async (name) =>\n (await client.listZones({ name })).map((zone) => ({\n ...zone,\n status: zone.status === \"active\" || zone.status === \"pending\" ? zone.status : \"unknown\",\n })),\n provider: client,\n };\n}\n","import { Effect } from \"effect\";\n\nimport type * as Client from \"../providers/vercel/client.ts\";\nimport * as EffectAuth from \"../providers/vercel/auth.ts\";\nimport type * as ProviderSession from \"../provider/session.ts\";\nimport * as Connection from \"./connection.ts\";\n\nexport const integrationMethod = EffectAuth.integrationMethod;\nexport const manifest = EffectAuth.manifest;\nexport function restore(\n options: ProviderSession.RestoreInput & Pick<Client.Options, \"baseUrl\" | \"fetch\">,\n): Promise<Client.Interface> {\n return Effect.runPromise(EffectAuth.restore(options));\n}\nexport const tokenMethod = EffectAuth.tokenMethod;\nexport type {\n ExchangeCodeOptions,\n IntegrationCredential,\n IntegrationFlowOptions,\n IntegrationMethodOptions,\n} from \"../providers/vercel/auth.ts\";\n\nexport function exchangeCode(\n options: EffectAuth.ExchangeCodeOptions,\n): Promise<EffectAuth.IntegrationCredential> {\n return Effect.runPromise(EffectAuth.exchangeCode(options));\n}\n\n/** Creates Vercel Integration's implementation for the Promise connection facade. */\nexport function integrationFlow(\n options: EffectAuth.IntegrationFlowOptions,\n): Connection.InteractiveFlow {\n return Connection.fromEffectFlow(EffectAuth.integrationFlow(options));\n}\n\n/** Creates a Vercel token method for the Promise connection facade. */\nexport function tokenConnectionMethod(\n options: EffectAuth.TokenConnectionOptions,\n): Extract<Connection.Method, { readonly _tag: \"Token\" }> {\n return Connection.fromEffectTokenMethod(EffectAuth.tokenConnectionMethod(options));\n}\n","import { Effect } from \"effect\";\n\nimport type * as Connection from \"../auth/connection.ts\";\nimport type * as ProviderAuth from \"../auth/manifest.ts\";\nimport type * as DomainName from \"../domain/domain-name.ts\";\nimport type * as DnsProvider from \"../provider/provider.ts\";\nimport * as Vercel from \"../providers/vercel/index.ts\";\nimport type * as ProviderSession from \"../provider/session.ts\";\nimport type * as ZoneDiscovery from \"./zone-discovery.ts\";\n\nexport * as Auth from \"./vercel-auth.ts\";\nexport type {\n Account,\n AccountContext,\n Fetch,\n ListZonesInput,\n Options,\n Zone,\n} from \"../providers/vercel/client.ts\";\n\nexport interface Interface extends DnsProvider.AsyncInterface {\n readonly providerId: \"vercel\";\n readonly forTarget: (target: Connection.ProviderTarget) => Promise<DnsProvider.AsyncInterface>;\n readonly listAccounts: () => Promise<ReadonlyArray<Vercel.Account>>;\n readonly listZones: (input?: Vercel.Client.ListZonesInput) => Promise<ReadonlyArray<Vercel.Zone>>;\n readonly listTargets: (\n input?: ProviderSession.ListTargetsInput,\n ) => Promise<ReadonlyArray<Connection.ProviderTarget>>;\n readonly resolveTarget: (domain: DomainName.DomainName) => Promise<ProviderSession.Resolution>;\n readonly validateToken: () => Promise<ProviderAuth.TokenValidation>;\n}\n\n/** Creates a Promise-compatible facade over the Effect-native Vercel client. */\nexport function make(options: Vercel.Client.Options): Interface {\n const client = Vercel.make(options);\n return {\n id: client.id,\n providerId: client.providerId,\n createRecord: (zone, record) => Effect.runPromise(client.createRecord(zone, record)),\n deleteRecord: (zone, providerRecordId) =>\n Effect.runPromise(client.deleteRecord(zone, providerRecordId)),\n getRecord: (zone, providerRecordId) =>\n Effect.runPromise(client.getRecord(zone, providerRecordId)),\n listAccounts: () => Effect.runPromise(client.listAccounts()),\n listRecords: (zone) => Effect.runPromise(client.listRecords(zone)),\n listZones: (input) => Effect.runPromise(client.listZones(input)),\n listTargets: (input) => Effect.runPromise(client.listTargets(input)),\n resolveTarget: (domain) => Effect.runPromise(client.resolveTarget(domain)),\n forTarget: (target) =>\n Effect.runPromise(client.forTarget(target)).then((provider) => ({\n id: provider.id,\n createRecord: (zone, record) => Effect.runPromise(provider.createRecord(zone, record)),\n deleteRecord: (zone, providerRecordId) =>\n Effect.runPromise(provider.deleteRecord(zone, providerRecordId)),\n getRecord: (zone, providerRecordId) =>\n Effect.runPromise(provider.getRecord(zone, providerRecordId)),\n listRecords: (zone) => Effect.runPromise(provider.listRecords(zone)),\n })),\n validateToken: () => Effect.runPromise(client.validateToken()),\n };\n}\n\n/** Creates the optional Vercel discovery source for Promise consumers. */\nexport function discovery(options: Vercel.Client.Options): ZoneDiscovery.Source {\n const client = make(options);\n return {\n listZones: (name) => client.listZones({ name }),\n provider: client,\n };\n}\n","import { Effect, Layer } from \"effect\";\n\nimport type * as Connection from \"../auth/connection.ts\";\nimport type * as ProviderAuthorization from \"../auth/authorization.ts\";\nimport * as ConnectionAuthorization from \"../plan/connection-authorization.ts\";\nimport * as Lifecycle from \"./managed-dns-connections.ts\";\nimport { webCryptoLayer } from \"../plan/canonical-json.ts\";\nimport * as ProvisioningEffect from \"../plan/plan.ts\";\nimport type * as DnsPlan from \"../plan/types.ts\";\nimport * as DnsProvider from \"../provider/provider.ts\";\nimport * as ZoneDiscoveryEffect from \"../discovery/zone-discovery.ts\";\nimport * as ZoneDiscovery from \"./zone-discovery.ts\";\n\nexport interface ExactCreateInput extends ProvisioningEffect.ExactCreateInput {\n readonly provider: DnsProvider.AsyncInterface;\n}\n\nexport interface DiscoverCreateInput extends ProvisioningEffect.DiscoverCreateInput {\n readonly sources: ReadonlyArray<ZoneDiscovery.Source>;\n}\n\nexport function create(input: ExactCreateInput): Promise<ProvisioningEffect.ResolvedCreateResult>;\nexport function create(input: DiscoverCreateInput): Promise<ProvisioningEffect.CreateResult>;\nexport function create(\n input: ExactCreateInput | DiscoverCreateInput,\n): Promise<ProvisioningEffect.CreateResult> {\n if (\"sources\" in input) {\n const { sources, ...programInput } = input;\n return Effect.runPromise(\n ProvisioningEffect.create(programInput).pipe(\n Effect.provide(\n Layer.merge(\n Layer.succeed(\n ZoneDiscoveryEffect.Service,\n ZoneDiscoveryEffect.make(sources.map(ZoneDiscovery.toEffectSource)),\n ),\n webCryptoLayer,\n ),\n ),\n ),\n );\n }\n const { provider, ...programInput } = input;\n return Effect.runPromise(\n ProvisioningEffect.create(programInput).pipe(\n Effect.provide(Layer.merge(DnsProvider.layerFromAsync(provider), webCryptoLayer)),\n ),\n );\n}\n\nexport function authorize(\n plan: DnsPlan.DnsPlan,\n operationIds?: ReadonlyArray<string>,\n options: { readonly allowPartial?: boolean } = {},\n): Promise<DnsPlan.PlanAuthorization> {\n return Effect.runPromise(\n ProvisioningEffect.authorize(plan, operationIds, options).pipe(Effect.provide(webCryptoLayer)),\n );\n}\n\nexport function apply(input: {\n readonly authorization: DnsPlan.PlanAuthorization;\n readonly plan: DnsPlan.DnsPlan;\n readonly provider: DnsProvider.AsyncInterface;\n}): Promise<DnsPlan.ApplyReceipt> {\n return Effect.runPromise(\n ProvisioningEffect.apply({ authorization: input.authorization, plan: input.plan }).pipe(\n Effect.provide(Layer.merge(DnsProvider.layerFromAsync(input.provider), webCryptoLayer)),\n ),\n );\n}\n\nexport function authorizeForConnection(input: {\n readonly allowPartial?: boolean;\n readonly authorization: ProviderAuthorization.ProviderAuthorization;\n readonly attachment: Connection.DomainAttachment;\n readonly connection: Connection.ProviderConnection;\n readonly domain: string;\n readonly operationIds?: ReadonlyArray<string>;\n readonly plan: DnsPlan.DnsPlan;\n readonly repository: Lifecycle.AsyncInterface;\n}): Promise<DnsPlan.PlanAuthorization> {\n return Effect.runPromise(\n ConnectionAuthorization.authorize({\n attachment: input.attachment,\n authorization: input.authorization,\n connection: input.connection,\n domain: input.domain,\n ...(input.allowPartial === undefined ? {} : { allowPartial: input.allowPartial }),\n ...(input.operationIds === undefined ? {} : { operationIds: input.operationIds }),\n plan: input.plan,\n }).pipe(\n Effect.provide(Layer.merge(Lifecycle.layerFromAsync(input.repository), webCryptoLayer)),\n ),\n );\n}\n\nexport const renderManualInstructions = ProvisioningEffect.renderManualInstructions;\nexport { CreateResult, Target } from \"../plan/plan.ts\";\n","import { Data, Effect, Layer } from \"effect\";\n\nimport type * as DomainName from \"../domain/domain-name.ts\";\nimport type * as DnsRecord from \"../domain/dns-record.ts\";\nimport * as DnsProvider from \"../provider/provider.ts\";\nimport * as DnsResolver from \"../verification/resolver.ts\";\nimport * as DnsResolverPoolEffect from \"../verification/resolver-pool.ts\";\nimport * as VerificationEffect from \"../verification/verify.ts\";\nimport type * as DnsResolverPool from \"./resolver-pool.ts\";\n\nexport type PublicDns = VerificationEffect.PublicDns;\nexport const PublicDns = VerificationEffect.PublicDns;\n\nexport type Provider = Data.TaggedEnum<{\n Disabled: {};\n Enabled: {\n readonly provider: DnsProvider.AsyncInterface;\n readonly zone: DomainName.DomainName;\n };\n}>;\nexport const Provider = Data.taggedEnum<Provider>();\n\nexport interface Config {\n readonly provider?: Provider;\n readonly publicDns?: PublicDns;\n readonly record: DnsRecord.DnsRecord;\n readonly resolvers?: ReadonlyArray<DnsResolverPool.Entry>;\n}\n\nexport { ProviderObservation, PublicDnsObservation, Result } from \"../verification/verify.ts\";\n\nexport function observe(input: Config): Promise<VerificationEffect.Result> {\n const provider = input.provider ?? Provider.Disabled();\n let program =\n provider._tag === \"Enabled\"\n ? VerificationEffect.observe({\n record: input.record,\n ...(input.publicDns === undefined ? {} : { publicDns: input.publicDns }),\n provider: VerificationEffect.Provider.Enabled({ zone: provider.zone }),\n }).pipe(Effect.provide(DnsProvider.layerFromAsync(provider.provider)))\n : VerificationEffect.observe({\n record: input.record,\n ...(input.publicDns === undefined ? {} : { publicDns: input.publicDns }),\n provider: VerificationEffect.Provider.Disabled(),\n });\n if (input.resolvers !== undefined) {\n program = program.pipe(\n Effect.provide(\n Layer.succeed(\n DnsResolverPoolEffect.Service,\n DnsResolverPoolEffect.make(\n input.resolvers.map((entry) => ({\n id: entry.id,\n resolver: fromAsyncResolver(entry.resolver),\n ...(entry.timeoutMs === undefined ? {} : { timeoutMs: entry.timeoutMs }),\n })),\n ),\n ),\n ),\n );\n }\n return Effect.runPromise(program);\n}\n\nfunction fromAsyncResolver(resolver: DnsResolver.AsyncInterface): DnsResolver.Interface {\n return {\n resolve: (query) =>\n Effect.tryPromise({\n try: () => resolver.resolve(query),\n catch: (cause) =>\n new DnsResolver.Error({\n cause,\n message: cause instanceof globalThis.Error ? cause.message : String(cause),\n reason: \"transport\",\n }),\n }).pipe(\n Effect.flatMap((resolution) => {\n switch (resolution._tag) {\n case \"answer\":\n case \"nodata\":\n return Effect.succeed(resolution);\n case \"timeout\":\n return Effect.fail(\n new DnsResolver.Error({ message: \"DNS query timed out\", reason: \"timeout\" }),\n );\n case \"failure\":\n return Effect.fail(\n new DnsResolver.Error({ message: resolution.message, reason: \"transport\" }),\n );\n }\n }),\n ),\n };\n}\n","import * as CloudflareDnsOverHttps from \"../verification/cloudflare-doh.ts\";\nimport type * as DnsResolver from \"../verification/resolver.ts\";\n\nexport type Options = CloudflareDnsOverHttps.Options;\n\nexport function make(options: Options = {}): DnsResolver.AsyncInterface {\n return CloudflareDnsOverHttps.toAsync(options);\n}\n","import * as DnsOverHttps from \"../verification/doh.ts\";\nimport type * as DnsResolver from \"../verification/resolver.ts\";\n\nexport type Options = DnsOverHttps.Options;\n\nexport function make(options: Options): DnsResolver.AsyncInterface {\n return DnsOverHttps.toAsync(options);\n}\n","import * as GoogleDnsOverHttps from \"../verification/google-doh.ts\";\nimport type * as DnsResolver from \"../verification/resolver.ts\";\n\nexport type Options = GoogleDnsOverHttps.Options;\n\nexport function make(options: Options = {}): DnsResolver.AsyncInterface {\n return GoogleDnsOverHttps.toAsync(options);\n}\n","import { Effect } from \"effect\";\n\nimport * as DnsResolver from \"../verification/resolver.ts\";\nimport * as Pool from \"../verification/resolver-pool.ts\";\n\nexport interface Entry {\n readonly id: string;\n readonly resolver: DnsResolver.AsyncInterface;\n readonly timeoutMs?: number;\n}\n\nexport interface Interface {\n readonly observe: (query: DnsResolver.Query) => Promise<ReadonlyArray<Pool.Observation>>;\n}\n\nexport function make(entries: ReadonlyArray<Entry>): Interface {\n return toAsync(\n Pool.make(\n entries.map((entry) => ({\n id: entry.id,\n resolver: asyncResolver(entry.resolver),\n ...(entry.timeoutMs === undefined ? {} : { timeoutMs: entry.timeoutMs }),\n })),\n ),\n );\n}\n\nexport function defaultMake(options: Pool.DefaultOptions = {}): Interface {\n return toAsync(Pool.defaultMake(options));\n}\n\nexport { Observation, Policy } from \"../verification/resolver-pool.ts\";\n\nfunction toAsync(pool: Pool.Interface): Interface {\n return {\n observe: (query) => Effect.runPromise(pool.observe(query)),\n };\n}\n\nfunction asyncResolver(resolver: DnsResolver.AsyncInterface): DnsResolver.Interface {\n return {\n resolve: (query) =>\n Effect.tryPromise({\n try: () => resolver.resolve(query),\n catch: (cause) =>\n new DnsResolver.Error({\n cause,\n message: cause instanceof globalThis.Error ? cause.message : String(cause),\n reason: \"transport\",\n }),\n }).pipe(\n Effect.flatMap((resolution) => {\n switch (resolution._tag) {\n case \"answer\":\n case \"nodata\":\n return Effect.succeed(resolution);\n case \"timeout\":\n return Effect.fail(\n new DnsResolver.Error({ message: \"DNS query timed out\", reason: \"timeout\" }),\n );\n case \"failure\":\n return Effect.fail(\n new DnsResolver.Error({ message: resolution.message, reason: \"transport\" }),\n );\n }\n }),\n ),\n };\n}\n","import packageJson from \"../package.json\" with { type: \"json\" };\n\n/** The current package version from the package manifest. */\nexport const VERSION = packageJson.version;\n\nexport * as Connection from \"./promise/connection.ts\";\nexport * as ManagedDnsConnections from \"./promise/managed-dns-connections.ts\";\nexport * as Diagnostic from \"./auth/diagnostic.ts\";\nexport * as ProviderContext from \"./auth/provider-context.ts\";\nexport * as Secret from \"./auth/secret.ts\";\nexport type * as DnsProvider from \"./promise/dns-provider.ts\";\nexport * as ProviderSession from \"./promise/provider-session.ts\";\nexport type * as DnsResolver from \"./promise/dns-resolver.ts\";\nexport * as ProviderAuth from \"./promise/provider-auth.ts\";\nexport * as ProviderDiscovery from \"./discovery/selection.ts\";\nexport * as ZoneDiscovery from \"./promise/zone-discovery.ts\";\nexport * as Zones from \"./discovery/zones.ts\";\nexport * as DnsRecord from \"./promise/dns-record.ts\";\nexport * as DomainName from \"./promise/domain-name.ts\";\nexport * as InvalidInput from \"./invalid-input.ts\";\nexport * as DnsPlan from \"./promise/dns-plan.ts\";\nexport * as Deletion from \"./promise/deletion.ts\";\nexport * as Cloudflare from \"./promise/cloudflare.ts\";\nexport * as Vercel from \"./promise/vercel.ts\";\nexport * as Provisioning from \"./promise/provisioning.ts\";\nexport * as Verification from \"./promise/verification.ts\";\nexport * as CloudflareDnsOverHttps from \"./promise/cloudflare-doh.ts\";\nexport * as DnsOverHttps from \"./promise/doh.ts\";\nexport * as GoogleDnsOverHttps from \"./promise/google-doh.ts\";\nexport * as DnsResolverPool from \"./promise/resolver-pool.ts\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"promise.mjs","names":["decode","Connection.decode","Connect.Error","Connect.start","Lifecycle.layerFromAsync","Connect.complete","EffectDnsProvider.toAsync","decode","ProviderAuth.decode","Discovery.make","Provider.Error","DnsPlan.decode","DnsPlan.decodeReceipt","create","DeletionEffect.create","DnsProvider.layerFromAsync","authorize","DeletionEffect.authorize","apply","DeletionEffect.apply","manifest","EffectAuth.manifest","EffectAuth.oauthMethod","EffectAuth.refreshCredential","restore","EffectAuth.restore","tokenMethod","EffectAuth.tokenMethod","EffectAuth.subjectResolver","Connection.fromEffectFlow","EffectAuth.oauthFlow","tokenConnectionMethod","Connection.fromEffectTokenMethod","EffectAuth.tokenConnectionMethod","EffectAuth.tokenValidator","make","Cloudflare.make","discovery","EffectAuth.integrationMethod","EffectAuth.manifest","EffectAuth.restore","EffectAuth.tokenMethod","EffectAuth.exchangeCode","Connection.fromEffectFlow","EffectAuth.integrationFlow","Connection.fromEffectTokenMethod","EffectAuth.tokenConnectionMethod","make","Vercel.make","ProvisioningEffect.create","ZoneDiscoveryEffect.Service","ZoneDiscoveryEffect.make","ZoneDiscovery.toEffectSource","DnsProvider.layerFromAsync","ProvisioningEffect.authorize","ProvisioningEffect.apply","ConnectionAuthorization.authorize","Lifecycle.layerFromAsync","ProvisioningEffect.renderManualInstructions","VerificationEffect.PublicDns","VerificationEffect.observe","DnsProvider.layerFromAsync","DnsResolverPoolEffect.Service","DnsResolverPoolEffect.make","DnsResolver.Error","make","CloudflareDnsOverHttps.toAsync","make","DnsOverHttps.toAsync","make","GoogleDnsOverHttps.toAsync","Pool.make","Pool.defaultMake","DnsResolver.Error","packageJson.version"],"sources":["../src/promise/connection.ts","../src/promise/provider-session.ts","../src/promise/dns-resolver.ts","../src/promise/provider-auth.ts","../src/promise/zone-discovery.ts","../src/promise/dns-record.ts","../src/promise/domain-name.ts","../src/promise/dns-plan.ts","../src/promise/deletion.ts","../src/promise/cloudflare-auth.ts","../src/promise/cloudflare.ts","../src/promise/vercel-auth.ts","../src/promise/vercel.ts","../src/promise/provisioning.ts","../src/promise/verification.ts","../src/promise/cloudflare-doh.ts","../src/promise/doh.ts","../src/promise/google-doh.ts","../src/promise/resolver-pool.ts","../src/promise.ts"],"sourcesContent":["import { Data, Effect, Layer } from \"effect\";\n\nimport * as Connection from \"../auth/connection.ts\";\nimport * as Connect from \"../auth/connect.ts\";\nimport type * as ProviderAuthorization from \"../auth/authorization.ts\";\nimport { webCryptoLayer } from \"../plan/canonical-json.ts\";\nimport * as Lifecycle from \"./managed-dns-connections.ts\";\nimport type * as Secret from \"../auth/secret.ts\";\n\nexport {\n AuthorizationError,\n authorizationError,\n ConnectionStatus,\n DomainAttachment,\n encode,\n ProviderConnection,\n ProviderTarget,\n ProviderTargetEvidence,\n validate,\n} from \"../auth/connection.ts\";\n\nexport function decode(input: unknown): Promise<Connection.ProviderConnection> {\n return Effect.runPromise(Connection.decode(input));\n}\n\nexport type Method = Data.TaggedEnum<{\n Interactive: {\n readonly continuations: ContinuationStore;\n readonly flow: InteractiveFlow;\n readonly ttlMs?: number;\n };\n Token: {\n readonly authenticate: (token: Secret.Value) => Promise<Connect.Authentication>;\n readonly providerId: string;\n readonly requiredCapabilities: ReadonlyArray<ProviderAuthorization.Capability>;\n readonly token: Secret.Value;\n };\n}>;\nexport const Method = Data.taggedEnum<Method>();\n\nexport interface ContinuationStore {\n readonly consume: (id: string, now: Date) => Promise<Connect.Continuation | null>;\n readonly put: (continuation: Connect.Continuation) => Promise<void>;\n}\n\nexport interface InteractiveFlow {\n readonly complete: (payload: Secret.Value, callbackUrl: URL) => Promise<Connect.Authentication>;\n readonly method: \"integration\" | \"oauth2\";\n readonly providerId: string;\n readonly requiredCapabilities: ReadonlyArray<ProviderAuthorization.Capability>;\n readonly start: (continuationId: string) => Promise<Connect.InteractiveStart>;\n}\n\nconst connectionFailure = (operation: string, cause: unknown): Connect.Error =>\n cause instanceof Connect.Error\n ? cause\n : new Connect.Error({\n category: \"provider\",\n message: cause instanceof globalThis.Error ? cause.message : String(cause),\n operation,\n retry: \"unknown\",\n });\n\nconst effectMethod = (method: Method): Connect.Method =>\n method._tag === \"Interactive\"\n ? Connect.Method.Interactive({\n continuations: effectContinuations(method.continuations),\n flow: effectFlow(method.flow),\n ...(method.ttlMs === undefined ? {} : { ttlMs: method.ttlMs }),\n })\n : Connect.Method.Token({\n authenticate: (token) =>\n Effect.tryPromise({\n try: () => method.authenticate(token),\n catch: (cause) => connectionFailure(\"Connection.start\", cause),\n }),\n providerId: method.providerId,\n requiredCapabilities: method.requiredCapabilities,\n token: method.token,\n });\n\nconst effectContinuations = (store: ContinuationStore): Connect.ContinuationStore => ({\n consume: (id, now) =>\n Effect.tryPromise({\n try: () => store.consume(id, now),\n catch: (cause) => connectionFailure(\"ConnectionContinuations.consume\", cause),\n }),\n put: (continuation) =>\n Effect.tryPromise({\n try: () => store.put(continuation),\n catch: (cause) => connectionFailure(\"ConnectionContinuations.put\", cause),\n }),\n});\n\nconst effectFlow = (flow: InteractiveFlow): Connect.InteractiveFlow => ({\n complete: (payload, callbackUrl) =>\n Effect.tryPromise({\n try: () => flow.complete(payload, callbackUrl),\n catch: (cause) => connectionFailure(\"Connection.complete\", cause),\n }),\n method: flow.method,\n providerId: flow.providerId,\n requiredCapabilities: flow.requiredCapabilities,\n start: (continuationId) =>\n Effect.tryPromise({\n try: () => flow.start(continuationId),\n catch: (cause) => connectionFailure(\"Connection.start\", cause),\n }),\n});\n\n/** Adapts an Effect-native provider flow to the Promise facade. */\nexport const fromEffectFlow = (flow: Connect.InteractiveFlow): InteractiveFlow => ({\n complete: (payload, callbackUrl) => Effect.runPromise(flow.complete(payload, callbackUrl)),\n method: flow.method,\n providerId: flow.providerId,\n requiredCapabilities: flow.requiredCapabilities,\n start: (continuationId) =>\n Effect.runPromise(flow.start(continuationId).pipe(Effect.provide(webCryptoLayer))),\n});\n\n/** Adapts an Effect-native token method to the Promise facade. */\nexport function fromEffectTokenMethod(\n method: Extract<Connect.Method, { readonly _tag: \"Token\" }>,\n): Extract<Method, { readonly _tag: \"Token\" }> {\n return Method.Token({\n authenticate: (token) => Effect.runPromise(method.authenticate(token)),\n providerId: method.providerId,\n requiredCapabilities: method.requiredCapabilities,\n token: method.token,\n });\n}\n\nexport async function start(\n input: Connect.BaseInput & {\n readonly method: Method;\n readonly repository: Lifecycle.AsyncInterface;\n },\n): Promise<Connect.StartResult> {\n return Effect.runPromise(\n Connect.start({\n authorizedById: input.authorizedById,\n ...(input.authorizationId === undefined ? {} : { authorizationId: input.authorizationId }),\n method: effectMethod(input.method),\n ownerId: input.ownerId,\n }).pipe(\n Effect.provide(Layer.merge(Lifecycle.layerFromAsync(input.repository), webCryptoLayer)),\n ),\n );\n}\n\nexport async function complete(input: {\n readonly callbackUrl: URL;\n readonly continuationId: string;\n readonly continuations: ContinuationStore;\n readonly flow: InteractiveFlow;\n readonly repository: Lifecycle.AsyncInterface;\n}): Promise<Connection.ProviderConnection> {\n return Effect.runPromise(\n Connect.complete({\n callbackUrl: input.callbackUrl,\n continuationId: input.continuationId,\n continuations: effectContinuations(input.continuations),\n flow: effectFlow(input.flow),\n }).pipe(\n Effect.provide(Layer.merge(Lifecycle.layerFromAsync(input.repository), webCryptoLayer)),\n ),\n );\n}\n\nexport function attach(input: {\n readonly attachment: Connection.DomainAttachment;\n readonly connectionId: string;\n readonly ownerId: string;\n readonly repository: Lifecycle.AsyncInterface;\n}): Promise<Lifecycle.AttachmentResult> {\n return input.repository.attach({\n attachment: input.attachment,\n connectionId: input.connectionId,\n ownerId: input.ownerId,\n });\n}\n\nexport function detach(input: {\n readonly attachmentId: string;\n readonly ownerId: string;\n readonly repository: Lifecycle.AsyncInterface;\n}): Promise<Lifecycle.DetachResult> {\n return input.repository.detach({\n attachmentId: input.attachmentId,\n ownerId: input.ownerId,\n });\n}\n\nexport function disconnect(input: {\n readonly connectionId: string;\n readonly ownerId: string;\n readonly repository: Lifecycle.AsyncInterface;\n readonly revoke: (authorization: ProviderAuthorization.ProviderAuthorization) => Promise<void>;\n}): Promise<Lifecycle.DisconnectResult> {\n return input.repository.disconnect({\n connectionId: input.connectionId,\n ownerId: input.ownerId,\n revoke: input.revoke,\n });\n}\n\nexport { Error, StartResult } from \"../auth/connect.ts\";\nexport type {\n Authentication,\n AuthenticationFailure,\n BaseInput,\n CompleteInput,\n Continuation,\n Failure,\n InteractiveStart,\n} from \"../auth/connect.ts\";\n","import { Effect } from \"effect\";\n\nimport * as EffectSession from \"../provider/session.ts\";\nimport type * as Connection from \"../auth/connection.ts\";\nimport type * as DomainName from \"../domain/domain-name.ts\";\nimport * as EffectDnsProvider from \"../provider/provider.ts\";\nimport * as DnsProvider from \"./dns-provider.ts\";\n\nexport type { ListTargetsInput, Resolution } from \"../provider/session.ts\";\n\nexport interface Interface {\n readonly providerId: string;\n readonly listTargets: (\n input?: EffectSession.ListTargetsInput,\n ) => Promise<ReadonlyArray<Connection.ProviderTarget>>;\n readonly resolveTarget: (domain: DomainName.DomainName) => Promise<EffectSession.Resolution>;\n readonly forTarget: (target: Connection.ProviderTarget) => Promise<DnsProvider.Interface>;\n}\n\nexport const fromEffect = (session: EffectSession.Interface): Interface => ({\n providerId: session.providerId,\n listTargets: (input) => Effect.runPromise(session.listTargets(input)),\n resolveTarget: (domain) => Effect.runPromise(session.resolveTarget(domain)),\n forTarget: (target) =>\n Effect.runPromise(session.forTarget(target)).then(EffectDnsProvider.toAsync),\n});\n","import { AsyncResolution } from \"../verification/resolver.ts\";\nimport type { AsyncResolution as AsyncResolutionValue } from \"../verification/resolver.ts\";\n\nexport const Resolution = AsyncResolution;\nexport type Resolution = AsyncResolutionValue;\n\nexport type { Answer, AsyncInterface as Interface, Query } from \"../verification/resolver.ts\";\n","import { Effect } from \"effect\";\n\nimport * as ProviderAuth from \"../auth/manifest.ts\";\n\nexport { Method, Schema } from \"../auth/manifest.ts\";\nexport type {\n AsyncOAuthSubjectResolver as OAuthSubjectResolver,\n Manifest,\n OAuthClientConfiguration,\n OAuthMethod,\n TokenValidation,\n} from \"../auth/manifest.ts\";\n\nexport function decode(input: unknown): Promise<ProviderAuth.Manifest> {\n return Effect.runPromise(ProviderAuth.decode(input));\n}\n","import { Effect } from \"effect\";\n\nimport type * as DomainName from \"../domain/domain-name.ts\";\nimport type * as DnsProvider from \"../provider/provider.ts\";\nimport * as Provider from \"../provider/provider.ts\";\nimport * as Discovery from \"../discovery/zone-discovery.ts\";\n\nexport interface Source {\n readonly listZones: (\n name: DomainName.DomainName,\n ) => Promise<ReadonlyArray<Omit<Discovery.Candidate, \"providerId\">>>;\n readonly provider: DnsProvider.AsyncInterface;\n}\n\nexport type Outcome =\n | { readonly _tag: \"NotFound\"; readonly domain: DomainName.DomainName }\n | { readonly _tag: \"Resolved\"; readonly candidate: Discovery.Candidate }\n | { readonly _tag: \"SelectionRequired\"; readonly candidates: ReadonlyArray<Discovery.Candidate> };\n\nexport function discover(input: {\n readonly domain: DomainName.DomainName;\n readonly sources: ReadonlyArray<Source>;\n}): Promise<Outcome> {\n return Effect.runPromise(\n Discovery.make(input.sources.map(toEffectSource))\n .discover(input.domain)\n .pipe(Effect.map(projectOutcome)),\n );\n}\n\nexport function toEffectSource(source: Source): Discovery.Source {\n return {\n listZones: (name) =>\n Effect.tryPromise({\n try: () => source.listZones(name),\n catch: (cause) =>\n new Provider.Error({\n cause,\n message: cause instanceof globalThis.Error ? cause.message : String(cause),\n operation: \"ZoneDiscovery.listZones\",\n providerId: source.provider.id,\n reason: \"transport\",\n }),\n }),\n provider: Provider.Service.of({\n id: source.provider.id,\n createRecord: (zone, record) =>\n Effect.tryPromise({\n try: () => source.provider.createRecord(zone, record),\n catch: (cause) => providerFailure(source.provider.id, \"createRecord\", cause),\n }),\n deleteRecord: (zone, providerRecordId) =>\n Effect.tryPromise({\n try: () => source.provider.deleteRecord(zone, providerRecordId),\n catch: (cause) => providerFailure(source.provider.id, \"deleteRecord\", cause),\n }),\n getRecord: (zone, providerRecordId) =>\n Effect.tryPromise({\n try: () => source.provider.getRecord(zone, providerRecordId),\n catch: (cause) => providerFailure(source.provider.id, \"getRecord\", cause),\n }),\n listRecords: (zone) =>\n Effect.tryPromise({\n try: () => source.provider.listRecords(zone),\n catch: (cause) => providerFailure(source.provider.id, \"listRecords\", cause),\n }),\n }),\n };\n}\n\nfunction projectOutcome(outcome: Discovery.Outcome): Outcome {\n switch (outcome._tag) {\n case \"NotFound\":\n return outcome;\n case \"Resolved\":\n return { _tag: \"Resolved\", candidate: outcome.candidate };\n case \"SelectionRequired\":\n return outcome;\n }\n}\n\nfunction providerFailure(providerId: string, operation: string, cause: unknown): Provider.Error {\n return cause instanceof Provider.Error\n ? cause\n : new Provider.Error({\n cause,\n message: cause instanceof globalThis.Error ? cause.message : String(cause),\n operation,\n providerId,\n });\n}\n\nexport { Candidate } from \"../discovery/zone-discovery.ts\";\n","export {\n A,\n Aaaa,\n Caa,\n Cname,\n data,\n equals,\n Mx,\n Ns,\n Opaque,\n Observed,\n parse,\n RequirementMetadata,\n Schema,\n Srv,\n Txt,\n Type,\n} from \"../domain/dns-record.ts\";\nexport type { DnsRecord, Encoded } from \"../domain/dns-record.ts\";\n","export { parse, Schema } from \"../domain/domain-name.ts\";\nexport type { DomainName } from \"../domain/domain-name.ts\";\n","import { Effect } from \"effect\";\n\nimport * as DnsPlan from \"../plan/types.ts\";\n\nexport { Authorization, encode, encodeReceipt, Operation, Receipt, Schema } from \"../plan/types.ts\";\nexport type { ApplyReceipt, DnsPlan, PlanAuthorization } from \"../plan/types.ts\";\n\nexport function decode(input: unknown): Promise<DnsPlan.DnsPlan> {\n return Effect.runPromise(DnsPlan.decode(input));\n}\n\nexport function decodeReceipt(input: unknown): Promise<DnsPlan.ApplyReceipt> {\n return Effect.runPromise(DnsPlan.decodeReceipt(input));\n}\n","import { Effect, Layer } from \"effect\";\n\nimport { webCryptoLayer } from \"../plan/canonical-json.ts\";\nimport * as DeletionEffect from \"../plan/deletion.ts\";\nimport type * as DnsPlan from \"../plan/types.ts\";\nimport * as DnsProvider from \"../provider/provider.ts\";\n\nexport function create(input: {\n readonly plan: DnsPlan.DnsPlan;\n readonly provider: DnsProvider.AsyncInterface;\n readonly receipt: DnsPlan.ApplyReceipt;\n readonly ttlMs?: number;\n}): Promise<DeletionEffect.Plan> {\n return Effect.runPromise(\n DeletionEffect.create({\n plan: input.plan,\n receipt: input.receipt,\n ...(input.ttlMs === undefined ? {} : { ttlMs: input.ttlMs }),\n }).pipe(\n Effect.provide(Layer.merge(DnsProvider.layerFromAsync(input.provider), webCryptoLayer)),\n ),\n );\n}\n\nexport function authorize(\n plan: DeletionEffect.Plan,\n operationIds?: ReadonlyArray<string>,\n): Promise<DeletionEffect.Authorization> {\n return Effect.runPromise(\n DeletionEffect.authorize(plan, operationIds).pipe(Effect.provide(webCryptoLayer)),\n );\n}\n\nexport function apply(input: {\n readonly authorization: DeletionEffect.Authorization;\n readonly plan: DeletionEffect.Plan;\n readonly priorReceipt?: DeletionEffect.Receipt;\n readonly provider: DnsProvider.AsyncInterface;\n}): Promise<DeletionEffect.Receipt> {\n return Effect.runPromise(\n DeletionEffect.apply({\n authorization: input.authorization,\n plan: input.plan,\n ...(input.priorReceipt === undefined ? {} : { priorReceipt: input.priorReceipt }),\n }).pipe(\n Effect.provide(Layer.merge(DnsProvider.layerFromAsync(input.provider), webCryptoLayer)),\n ),\n );\n}\n\nexport { Authorization, Error, Operation, PartialError, Plan, Receipt } from \"../plan/deletion.ts\";\nexport type {\n ApplyError,\n Authorization as DeletionAuthorization,\n CreateError,\n Operation as DeletionOperation,\n Plan as DeletionPlan,\n Receipt as DeletionReceipt,\n} from \"../plan/deletion.ts\";\n","import type * as oauth from \"oauth4webapi\";\nimport { Effect } from \"effect\";\n\nimport type * as ProviderAuth from \"../auth/manifest.ts\";\nimport type * as Secret from \"../auth/secret.ts\";\nimport type * as Client from \"../providers/cloudflare/client.ts\";\nimport * as EffectAuth from \"../providers/cloudflare/auth.ts\";\nimport type * as ProviderSession from \"../provider/session.ts\";\nimport * as Connection from \"./connection.ts\";\n\nexport const manifest = EffectAuth.manifest;\nexport const oauthMethod = EffectAuth.oauthMethod;\nexport function refreshCredential(\n options: EffectAuth.RefreshCredentialOptions,\n): Promise<ProviderSession.Credential> {\n return Effect.runPromise(EffectAuth.refreshCredential(options));\n}\nexport function restore(\n options: ProviderSession.RestoreInput & Pick<Client.Options, \"baseUrl\" | \"fetch\">,\n): Promise<Client.Interface> {\n return Effect.runPromise(EffectAuth.restore(options));\n}\nexport const tokenMethod = EffectAuth.tokenMethod;\nexport type {\n CredentialTarget,\n OAuthFlowOptions,\n OAuthMethodOptions,\n RefreshCredentialOptions,\n SubjectResolverOptions,\n TokenValidatorOptions,\n} from \"../providers/cloudflare/auth.ts\";\n\nexport function subjectResolver(\n options: EffectAuth.SubjectResolverOptions,\n): ProviderAuth.AsyncOAuthSubjectResolver {\n const resolve = EffectAuth.subjectResolver(options);\n return (tokens: oauth.TokenEndpointResponse, accessToken: Secret.Value) =>\n Effect.runPromise(resolve(tokens, accessToken));\n}\n\n/** Creates Cloudflare's OAuth implementation for the Promise connection facade. */\nexport function oauthFlow(options: EffectAuth.OAuthFlowOptions): Connection.InteractiveFlow {\n return Connection.fromEffectFlow(EffectAuth.oauthFlow(options));\n}\n\n/** Creates a Cloudflare token method for the Promise connection facade. */\nexport function tokenConnectionMethod(\n options: EffectAuth.TokenConnectionOptions,\n): Extract<Connection.Method, { readonly _tag: \"Token\" }> {\n return Connection.fromEffectTokenMethod(EffectAuth.tokenConnectionMethod(options));\n}\n\nexport function tokenValidator(\n options: EffectAuth.TokenValidatorOptions,\n): (token: Secret.Value) => Promise<ProviderAuth.TokenValidation> {\n const validate = EffectAuth.tokenValidator(options);\n return (token) => Effect.runPromise(validate(token));\n}\n","import { Effect } from \"effect\";\n\nimport type * as Connection from \"../auth/connection.ts\";\nimport type * as ProviderAuth from \"../auth/manifest.ts\";\nimport type * as DomainName from \"../domain/domain-name.ts\";\nimport type * as DnsProvider from \"../provider/provider.ts\";\nimport * as Cloudflare from \"../providers/cloudflare/index.ts\";\nimport type * as ProviderSession from \"../provider/session.ts\";\nimport type * as ZoneDiscovery from \"./zone-discovery.ts\";\n\nexport * as Auth from \"./cloudflare-auth.ts\";\nexport type {\n Account,\n Fetch,\n ListZonesInput,\n Options,\n Zone,\n} from \"../providers/cloudflare/client.ts\";\n\nexport interface Interface extends DnsProvider.AsyncInterface {\n readonly providerId: \"cloudflare\";\n readonly forTarget: (target: Connection.ProviderTarget) => Promise<DnsProvider.AsyncInterface>;\n readonly listAccounts: () => Promise<ReadonlyArray<Cloudflare.Account>>;\n readonly listZones: (\n input?: Cloudflare.Client.ListZonesInput,\n ) => Promise<ReadonlyArray<Cloudflare.Zone>>;\n readonly listTargets: (\n input?: ProviderSession.ListTargetsInput,\n ) => Promise<ReadonlyArray<Connection.ProviderTarget>>;\n readonly resolveTarget: (domain: DomainName.DomainName) => Promise<ProviderSession.Resolution>;\n readonly validateToken: () => Promise<ProviderAuth.TokenValidation>;\n}\n\n/** Creates a Promise-compatible facade over the Effect-native Cloudflare client. */\nexport function make(options: Cloudflare.Client.Options): Interface {\n const client = Cloudflare.make(options);\n return {\n id: client.id,\n providerId: client.providerId,\n createRecord: (zone, record) => Effect.runPromise(client.createRecord(zone, record)),\n deleteRecord: (zone, providerRecordId) =>\n Effect.runPromise(client.deleteRecord(zone, providerRecordId)),\n getRecord: (zone, providerRecordId) =>\n Effect.runPromise(client.getRecord(zone, providerRecordId)),\n listAccounts: () => Effect.runPromise(client.listAccounts()),\n listRecords: (zone) => Effect.runPromise(client.listRecords(zone)),\n listZones: (input) => Effect.runPromise(client.listZones(input)),\n listTargets: (input) => Effect.runPromise(client.listTargets(input)),\n resolveTarget: (domain) => Effect.runPromise(client.resolveTarget(domain)),\n forTarget: (target) =>\n Effect.runPromise(client.forTarget(target)).then((provider) => ({\n id: provider.id,\n createRecord: (zone, record) => Effect.runPromise(provider.createRecord(zone, record)),\n deleteRecord: (zone, providerRecordId) =>\n Effect.runPromise(provider.deleteRecord(zone, providerRecordId)),\n getRecord: (zone, providerRecordId) =>\n Effect.runPromise(provider.getRecord(zone, providerRecordId)),\n listRecords: (zone) => Effect.runPromise(provider.listRecords(zone)),\n })),\n validateToken: () => Effect.runPromise(client.validateToken()),\n };\n}\n\n/** Creates the optional Cloudflare discovery source for Promise consumers. */\nexport function discovery(options: Cloudflare.Client.Options): ZoneDiscovery.Source {\n const client = make(options);\n return {\n listZones: async (name) =>\n (await client.listZones({ name })).map((zone) => ({\n ...zone,\n status: zone.status === \"active\" || zone.status === \"pending\" ? zone.status : \"unknown\",\n })),\n provider: client,\n };\n}\n","import { Effect } from \"effect\";\n\nimport type * as Client from \"../providers/vercel/client.ts\";\nimport * as EffectAuth from \"../providers/vercel/auth.ts\";\nimport type * as ProviderSession from \"../provider/session.ts\";\nimport * as Connection from \"./connection.ts\";\n\nexport const integrationMethod = EffectAuth.integrationMethod;\nexport const manifest = EffectAuth.manifest;\nexport function restore(\n options: ProviderSession.RestoreInput & Pick<Client.Options, \"baseUrl\" | \"fetch\">,\n): Promise<Client.Interface> {\n return Effect.runPromise(EffectAuth.restore(options));\n}\nexport const tokenMethod = EffectAuth.tokenMethod;\nexport type {\n ExchangeCodeOptions,\n IntegrationCredential,\n IntegrationFlowOptions,\n IntegrationMethodOptions,\n} from \"../providers/vercel/auth.ts\";\n\nexport function exchangeCode(\n options: EffectAuth.ExchangeCodeOptions,\n): Promise<EffectAuth.IntegrationCredential> {\n return Effect.runPromise(EffectAuth.exchangeCode(options));\n}\n\n/** Creates Vercel Integration's implementation for the Promise connection facade. */\nexport function integrationFlow(\n options: EffectAuth.IntegrationFlowOptions,\n): Connection.InteractiveFlow {\n return Connection.fromEffectFlow(EffectAuth.integrationFlow(options));\n}\n\n/** Creates a Vercel token method for the Promise connection facade. */\nexport function tokenConnectionMethod(\n options: EffectAuth.TokenConnectionOptions,\n): Extract<Connection.Method, { readonly _tag: \"Token\" }> {\n return Connection.fromEffectTokenMethod(EffectAuth.tokenConnectionMethod(options));\n}\n","import { Effect } from \"effect\";\n\nimport type * as Connection from \"../auth/connection.ts\";\nimport type * as ProviderAuth from \"../auth/manifest.ts\";\nimport type * as DomainName from \"../domain/domain-name.ts\";\nimport type * as DnsProvider from \"../provider/provider.ts\";\nimport * as Vercel from \"../providers/vercel/index.ts\";\nimport type * as ProviderSession from \"../provider/session.ts\";\nimport type * as ZoneDiscovery from \"./zone-discovery.ts\";\n\nexport * as Auth from \"./vercel-auth.ts\";\nexport { AccountContext } from \"../providers/vercel/client.ts\";\nexport type { Account, Fetch, ListZonesInput, Options, Zone } from \"../providers/vercel/client.ts\";\n\nexport interface Interface extends DnsProvider.AsyncInterface {\n readonly providerId: \"vercel\";\n readonly forTarget: (target: Connection.ProviderTarget) => Promise<DnsProvider.AsyncInterface>;\n readonly listAccounts: () => Promise<ReadonlyArray<Vercel.Account>>;\n readonly listZones: (input?: Vercel.Client.ListZonesInput) => Promise<ReadonlyArray<Vercel.Zone>>;\n readonly listTargets: (\n input?: ProviderSession.ListTargetsInput,\n ) => Promise<ReadonlyArray<Connection.ProviderTarget>>;\n readonly resolveTarget: (domain: DomainName.DomainName) => Promise<ProviderSession.Resolution>;\n readonly validateToken: () => Promise<ProviderAuth.TokenValidation>;\n}\n\n/** Creates a Promise-compatible facade over the Effect-native Vercel client. */\nexport function make(options: Vercel.Client.Options): Interface {\n const client = Vercel.make(options);\n return {\n id: client.id,\n providerId: client.providerId,\n createRecord: (zone, record) => Effect.runPromise(client.createRecord(zone, record)),\n deleteRecord: (zone, providerRecordId) =>\n Effect.runPromise(client.deleteRecord(zone, providerRecordId)),\n getRecord: (zone, providerRecordId) =>\n Effect.runPromise(client.getRecord(zone, providerRecordId)),\n listAccounts: () => Effect.runPromise(client.listAccounts()),\n listRecords: (zone) => Effect.runPromise(client.listRecords(zone)),\n listZones: (input) => Effect.runPromise(client.listZones(input)),\n listTargets: (input) => Effect.runPromise(client.listTargets(input)),\n resolveTarget: (domain) => Effect.runPromise(client.resolveTarget(domain)),\n forTarget: (target) =>\n Effect.runPromise(client.forTarget(target)).then((provider) => ({\n id: provider.id,\n createRecord: (zone, record) => Effect.runPromise(provider.createRecord(zone, record)),\n deleteRecord: (zone, providerRecordId) =>\n Effect.runPromise(provider.deleteRecord(zone, providerRecordId)),\n getRecord: (zone, providerRecordId) =>\n Effect.runPromise(provider.getRecord(zone, providerRecordId)),\n listRecords: (zone) => Effect.runPromise(provider.listRecords(zone)),\n })),\n validateToken: () => Effect.runPromise(client.validateToken()),\n };\n}\n\n/** Creates the optional Vercel discovery source for Promise consumers. */\nexport function discovery(options: Vercel.Client.Options): ZoneDiscovery.Source {\n const client = make(options);\n return {\n listZones: (name) => client.listZones({ name }),\n provider: client,\n };\n}\n","import { Effect, Layer } from \"effect\";\n\nimport type * as Connection from \"../auth/connection.ts\";\nimport type * as ProviderAuthorization from \"../auth/authorization.ts\";\nimport * as ConnectionAuthorization from \"../plan/connection-authorization.ts\";\nimport * as Lifecycle from \"./managed-dns-connections.ts\";\nimport { webCryptoLayer } from \"../plan/canonical-json.ts\";\nimport * as ProvisioningEffect from \"../plan/plan.ts\";\nimport type * as DnsPlan from \"../plan/types.ts\";\nimport * as DnsProvider from \"../provider/provider.ts\";\nimport * as ZoneDiscoveryEffect from \"../discovery/zone-discovery.ts\";\nimport * as ZoneDiscovery from \"./zone-discovery.ts\";\n\nexport interface ExactCreateInput extends ProvisioningEffect.ExactCreateInput {\n readonly provider: DnsProvider.AsyncInterface;\n}\n\nexport interface DiscoverCreateInput extends ProvisioningEffect.DiscoverCreateInput {\n readonly sources: ReadonlyArray<ZoneDiscovery.Source>;\n}\n\nexport function create(input: ExactCreateInput): Promise<ProvisioningEffect.ResolvedCreateResult>;\nexport function create(input: DiscoverCreateInput): Promise<ProvisioningEffect.CreateResult>;\nexport function create(\n input: ExactCreateInput | DiscoverCreateInput,\n): Promise<ProvisioningEffect.CreateResult> {\n if (\"sources\" in input) {\n const { sources, ...programInput } = input;\n return Effect.runPromise(\n ProvisioningEffect.create(programInput).pipe(\n Effect.provide(\n Layer.merge(\n Layer.succeed(\n ZoneDiscoveryEffect.Service,\n ZoneDiscoveryEffect.make(sources.map(ZoneDiscovery.toEffectSource)),\n ),\n webCryptoLayer,\n ),\n ),\n ),\n );\n }\n const { provider, ...programInput } = input;\n return Effect.runPromise(\n ProvisioningEffect.create(programInput).pipe(\n Effect.provide(Layer.merge(DnsProvider.layerFromAsync(provider), webCryptoLayer)),\n ),\n );\n}\n\nexport function authorize(\n plan: DnsPlan.DnsPlan,\n operationIds?: ReadonlyArray<string>,\n options: { readonly allowPartial?: boolean } = {},\n): Promise<DnsPlan.PlanAuthorization> {\n return Effect.runPromise(\n ProvisioningEffect.authorize(plan, operationIds, options).pipe(Effect.provide(webCryptoLayer)),\n );\n}\n\nexport function apply(input: {\n readonly authorization: DnsPlan.PlanAuthorization;\n readonly plan: DnsPlan.DnsPlan;\n readonly provider: DnsProvider.AsyncInterface;\n}): Promise<DnsPlan.ApplyReceipt> {\n return Effect.runPromise(\n ProvisioningEffect.apply({ authorization: input.authorization, plan: input.plan }).pipe(\n Effect.provide(Layer.merge(DnsProvider.layerFromAsync(input.provider), webCryptoLayer)),\n ),\n );\n}\n\nexport function authorizeForConnection(input: {\n readonly allowPartial?: boolean;\n readonly authorization: ProviderAuthorization.ProviderAuthorization;\n readonly attachment: Connection.DomainAttachment;\n readonly connection: Connection.ProviderConnection;\n readonly domain: string;\n readonly operationIds?: ReadonlyArray<string>;\n readonly plan: DnsPlan.DnsPlan;\n readonly repository: Lifecycle.AsyncInterface;\n}): Promise<DnsPlan.PlanAuthorization> {\n return Effect.runPromise(\n ConnectionAuthorization.authorize({\n attachment: input.attachment,\n authorization: input.authorization,\n connection: input.connection,\n domain: input.domain,\n ...(input.allowPartial === undefined ? {} : { allowPartial: input.allowPartial }),\n ...(input.operationIds === undefined ? {} : { operationIds: input.operationIds }),\n plan: input.plan,\n }).pipe(\n Effect.provide(Layer.merge(Lifecycle.layerFromAsync(input.repository), webCryptoLayer)),\n ),\n );\n}\n\nexport const renderManualInstructions = ProvisioningEffect.renderManualInstructions;\nexport { CreateResult, Target } from \"../plan/plan.ts\";\n","import { Data, Effect, Layer } from \"effect\";\n\nimport type * as DomainName from \"../domain/domain-name.ts\";\nimport type * as DnsRecord from \"../domain/dns-record.ts\";\nimport * as DnsProvider from \"../provider/provider.ts\";\nimport * as DnsResolver from \"../verification/resolver.ts\";\nimport * as DnsResolverPoolEffect from \"../verification/resolver-pool.ts\";\nimport * as VerificationEffect from \"../verification/verify.ts\";\nimport type * as DnsResolverPool from \"./resolver-pool.ts\";\n\nexport type PublicDns = VerificationEffect.PublicDns;\nexport const PublicDns = VerificationEffect.PublicDns;\n\nexport type Provider = Data.TaggedEnum<{\n Disabled: {};\n Enabled: {\n readonly provider: DnsProvider.AsyncInterface;\n readonly zone: DomainName.DomainName;\n };\n}>;\nexport const Provider = Data.taggedEnum<Provider>();\n\nexport interface Config {\n readonly provider?: Provider;\n readonly publicDns?: PublicDns;\n readonly record: DnsRecord.DnsRecord;\n readonly resolvers?: ReadonlyArray<DnsResolverPool.Entry>;\n}\n\nexport { ProviderObservation, PublicDnsObservation, Result } from \"../verification/verify.ts\";\n\nexport function observe(input: Config): Promise<VerificationEffect.Result> {\n const provider = input.provider ?? Provider.Disabled();\n let program =\n provider._tag === \"Enabled\"\n ? VerificationEffect.observe({\n record: input.record,\n ...(input.publicDns === undefined ? {} : { publicDns: input.publicDns }),\n provider: VerificationEffect.Provider.Enabled({ zone: provider.zone }),\n }).pipe(Effect.provide(DnsProvider.layerFromAsync(provider.provider)))\n : VerificationEffect.observe({\n record: input.record,\n ...(input.publicDns === undefined ? {} : { publicDns: input.publicDns }),\n provider: VerificationEffect.Provider.Disabled(),\n });\n if (input.resolvers !== undefined) {\n program = program.pipe(\n Effect.provide(\n Layer.succeed(\n DnsResolverPoolEffect.Service,\n DnsResolverPoolEffect.make(\n input.resolvers.map((entry) => ({\n id: entry.id,\n resolver: fromAsyncResolver(entry.resolver),\n ...(entry.timeoutMs === undefined ? {} : { timeoutMs: entry.timeoutMs }),\n })),\n ),\n ),\n ),\n );\n }\n return Effect.runPromise(program);\n}\n\nfunction fromAsyncResolver(resolver: DnsResolver.AsyncInterface): DnsResolver.Interface {\n return {\n resolve: (query) =>\n Effect.tryPromise({\n try: () => resolver.resolve(query),\n catch: (cause) =>\n new DnsResolver.Error({\n cause,\n message: cause instanceof globalThis.Error ? cause.message : String(cause),\n reason: \"transport\",\n }),\n }).pipe(\n Effect.flatMap((resolution) => {\n switch (resolution._tag) {\n case \"answer\":\n case \"nodata\":\n return Effect.succeed(resolution);\n case \"timeout\":\n return Effect.fail(\n new DnsResolver.Error({ message: \"DNS query timed out\", reason: \"timeout\" }),\n );\n case \"failure\":\n return Effect.fail(\n new DnsResolver.Error({ message: resolution.message, reason: \"transport\" }),\n );\n }\n }),\n ),\n };\n}\n","import * as CloudflareDnsOverHttps from \"../verification/cloudflare-doh.ts\";\nimport type * as DnsResolver from \"../verification/resolver.ts\";\n\nexport type Options = CloudflareDnsOverHttps.Options;\n\nexport function make(options: Options = {}): DnsResolver.AsyncInterface {\n return CloudflareDnsOverHttps.toAsync(options);\n}\n","import * as DnsOverHttps from \"../verification/doh.ts\";\nimport type * as DnsResolver from \"../verification/resolver.ts\";\n\nexport type Options = DnsOverHttps.Options;\n\nexport function make(options: Options): DnsResolver.AsyncInterface {\n return DnsOverHttps.toAsync(options);\n}\n","import * as GoogleDnsOverHttps from \"../verification/google-doh.ts\";\nimport type * as DnsResolver from \"../verification/resolver.ts\";\n\nexport type Options = GoogleDnsOverHttps.Options;\n\nexport function make(options: Options = {}): DnsResolver.AsyncInterface {\n return GoogleDnsOverHttps.toAsync(options);\n}\n","import { Effect } from \"effect\";\n\nimport * as DnsResolver from \"../verification/resolver.ts\";\nimport * as Pool from \"../verification/resolver-pool.ts\";\n\nexport interface Entry {\n readonly id: string;\n readonly resolver: DnsResolver.AsyncInterface;\n readonly timeoutMs?: number;\n}\n\nexport interface Interface {\n readonly observe: (query: DnsResolver.Query) => Promise<ReadonlyArray<Pool.Observation>>;\n}\n\nexport function make(entries: ReadonlyArray<Entry>): Interface {\n return toAsync(\n Pool.make(\n entries.map((entry) => ({\n id: entry.id,\n resolver: asyncResolver(entry.resolver),\n ...(entry.timeoutMs === undefined ? {} : { timeoutMs: entry.timeoutMs }),\n })),\n ),\n );\n}\n\nexport function defaultMake(options: Pool.DefaultOptions = {}): Interface {\n return toAsync(Pool.defaultMake(options));\n}\n\nexport { Observation, Policy } from \"../verification/resolver-pool.ts\";\n\nfunction toAsync(pool: Pool.Interface): Interface {\n return {\n observe: (query) => Effect.runPromise(pool.observe(query)),\n };\n}\n\nfunction asyncResolver(resolver: DnsResolver.AsyncInterface): DnsResolver.Interface {\n return {\n resolve: (query) =>\n Effect.tryPromise({\n try: () => resolver.resolve(query),\n catch: (cause) =>\n new DnsResolver.Error({\n cause,\n message: cause instanceof globalThis.Error ? cause.message : String(cause),\n reason: \"transport\",\n }),\n }).pipe(\n Effect.flatMap((resolution) => {\n switch (resolution._tag) {\n case \"answer\":\n case \"nodata\":\n return Effect.succeed(resolution);\n case \"timeout\":\n return Effect.fail(\n new DnsResolver.Error({ message: \"DNS query timed out\", reason: \"timeout\" }),\n );\n case \"failure\":\n return Effect.fail(\n new DnsResolver.Error({ message: resolution.message, reason: \"transport\" }),\n );\n }\n }),\n ),\n };\n}\n","import packageJson from \"../package.json\" with { type: \"json\" };\n\n/** The current package version from the package manifest. */\nexport const VERSION = packageJson.version;\n\nexport * as Connection from \"./promise/connection.ts\";\nexport * as ManagedDnsConnections from \"./promise/managed-dns-connections.ts\";\nexport * as Diagnostic from \"./auth/diagnostic.ts\";\nexport * as ProviderContext from \"./auth/provider-context.ts\";\nexport * as Secret from \"./auth/secret.ts\";\nexport type * as DnsProvider from \"./promise/dns-provider.ts\";\nexport * as ProviderSession from \"./promise/provider-session.ts\";\nexport * as DnsResolver from \"./promise/dns-resolver.ts\";\nexport * as ProviderAuth from \"./promise/provider-auth.ts\";\nexport * as ProviderDiscovery from \"./discovery/selection.ts\";\nexport * as ZoneDiscovery from \"./promise/zone-discovery.ts\";\nexport * as Zones from \"./discovery/zones.ts\";\nexport * as DnsRecord from \"./promise/dns-record.ts\";\nexport * as DomainName from \"./promise/domain-name.ts\";\nexport * as InvalidInput from \"./invalid-input.ts\";\nexport * as DnsPlan from \"./promise/dns-plan.ts\";\nexport * as Deletion from \"./promise/deletion.ts\";\nexport * as Cloudflare from \"./promise/cloudflare.ts\";\nexport * as Vercel from \"./promise/vercel.ts\";\nexport * as Provisioning from \"./promise/provisioning.ts\";\nexport * as Verification from \"./promise/verification.ts\";\nexport * as CloudflareDnsOverHttps from \"./promise/cloudflare-doh.ts\";\nexport * as DnsOverHttps from \"./promise/doh.ts\";\nexport * as GoogleDnsOverHttps from \"./promise/google-doh.ts\";\nexport * as DnsResolverPool from \"./promise/resolver-pool.ts\";\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { A as Error$4, D as decode$2, E as Schema$3, k as parse$1, n as sha256Encoded, r as stringify } from "./canonical-json-CQYKsZw7.mjs";
|
|
3
3
|
import { Cause, Clock, Context, Data, Effect, Layer, Schema } from "effect";
|
|
4
4
|
import { getDomain } from "tldts";
|
|
5
5
|
//#region src/discovery/zones.ts
|
|
@@ -184,8 +184,7 @@ const Schema$2 = Schema.TaggedUnion({
|
|
|
184
184
|
});
|
|
185
185
|
const { A, AAAA: Aaaa, CAA: Caa, CNAME: Cname, MX: Mx, NS: Ns, SRV: Srv, TXT: Txt } = Schema$2.cases;
|
|
186
186
|
/** Provider state that DomainKit cannot create but must retain for safe reconciliation. */
|
|
187
|
-
const Opaque = Schema.
|
|
188
|
-
_tag: Schema.Literal("Opaque"),
|
|
187
|
+
const Opaque = Schema.TaggedStruct("Opaque", {
|
|
189
188
|
name: Schema.String.check(Schema.isMinLength(1)),
|
|
190
189
|
providerRecordId: Schema.NullOr(Schema.String),
|
|
191
190
|
providerType: Schema.String.check(Schema.isMinLength(1))
|
|
@@ -317,7 +316,7 @@ var types_exports = /* @__PURE__ */ __exportAll({
|
|
|
317
316
|
encode: () => encode,
|
|
318
317
|
encodeReceipt: () => encodeReceipt
|
|
319
318
|
});
|
|
320
|
-
const
|
|
319
|
+
const OperationSchema = Schema.TaggedUnion({
|
|
321
320
|
create: {
|
|
322
321
|
id: Schema.String,
|
|
323
322
|
requirement: Schema$2
|
|
@@ -334,9 +333,16 @@ const Operation$1 = Schema.TaggedUnion({
|
|
|
334
333
|
requirement: Schema$2
|
|
335
334
|
}
|
|
336
335
|
});
|
|
336
|
+
/** DNS plan operation schema and callable constructors for trusted plan values. */
|
|
337
|
+
const Operation$1 = {
|
|
338
|
+
Schema: OperationSchema,
|
|
339
|
+
conflict: (input) => OperationSchema.cases.conflict.make(input),
|
|
340
|
+
create: (input) => OperationSchema.cases.create.make(input),
|
|
341
|
+
noop: (input) => OperationSchema.cases.noop.make(input)
|
|
342
|
+
};
|
|
337
343
|
const Schema$1 = Schema.Struct({
|
|
338
344
|
digest: Schema.String,
|
|
339
|
-
operations: Schema.Array(Operation$1),
|
|
345
|
+
operations: Schema.Array(Operation$1.Schema),
|
|
340
346
|
providerId: Schema.String,
|
|
341
347
|
version: Schema.Literal("domainkit.dns-plan.v1"),
|
|
342
348
|
zone: Schema$3
|
|
@@ -379,7 +385,7 @@ var plan_exports = /* @__PURE__ */ __exportAll({
|
|
|
379
385
|
validate: () => validate$1
|
|
380
386
|
});
|
|
381
387
|
const UnsignedPlan$1 = Schema.Struct({
|
|
382
|
-
operations: Schema.Array(Operation$1),
|
|
388
|
+
operations: Schema.Array(Operation$1.Schema),
|
|
383
389
|
providerId: Schema.String,
|
|
384
390
|
version: Schema.Literal("domainkit.dns-plan.v1"),
|
|
385
391
|
zone: Schema$3
|
|
@@ -474,7 +480,7 @@ const apply$1 = Effect.fn("Provisioning.apply")(function* (input) {
|
|
|
474
480
|
if (provider.id !== plan.providerId) return yield* new AuthorizationError({ message: "Provider does not match the approved plan" });
|
|
475
481
|
const conflicts = plan.operations.filter((operation) => operation._tag === "conflict");
|
|
476
482
|
if (conflicts.length > 0) return yield* new ConflictError({ operationIds: conflicts.map(({ id }) => id) });
|
|
477
|
-
const creates = plan.operations.filter(
|
|
483
|
+
const creates = plan.operations.filter((operation) => operation._tag === "create");
|
|
478
484
|
const approved = new Set(authorization.operationIds);
|
|
479
485
|
const unknown = authorization.operationIds.filter((id) => !creates.some((operation) => operation.id === id));
|
|
480
486
|
if (unknown.length > 0) return yield* new AuthorizationError({ message: `Authorization contains unknown operations: ${unknown.join(", ")}` });
|
|
@@ -544,31 +550,27 @@ function reconcileRequirement(requirement, allExisting) {
|
|
|
544
550
|
const sameSet = sameName.filter((record) => record._tag !== "Opaque" && record._tag === requirement._tag);
|
|
545
551
|
const exact = sameSet.find((record) => equals(record, requirement));
|
|
546
552
|
const id = yield* sha256Encoded(RequirementDigest, { requirement });
|
|
547
|
-
if (exact !== void 0) return {
|
|
548
|
-
_tag: "noop",
|
|
553
|
+
if (exact !== void 0) return Operation$1.noop({
|
|
549
554
|
id,
|
|
550
555
|
requirement,
|
|
551
556
|
ttlDrift: exact.ttl !== requirement.ttl
|
|
552
|
-
};
|
|
553
|
-
if (sameName.length > 0 && (requirement._tag === "CNAME" || sameName.some((record) => record._tag === "CNAME"))) return {
|
|
554
|
-
_tag: "conflict",
|
|
557
|
+
});
|
|
558
|
+
if (sameName.length > 0 && (requirement._tag === "CNAME" || sameName.some((record) => record._tag === "CNAME"))) return Operation$1.conflict({
|
|
555
559
|
existing: sameName,
|
|
556
560
|
id,
|
|
557
561
|
reason: "CNAME records cannot coexist with other records at the same name",
|
|
558
562
|
requirement
|
|
559
|
-
};
|
|
560
|
-
if (sameSet.length > 0 && (requirement.policy === "exclusive" || sameSet.some(({ policy }) => policy === "exclusive"))) return {
|
|
561
|
-
_tag: "conflict",
|
|
563
|
+
});
|
|
564
|
+
if (sameSet.length > 0 && (requirement.policy === "exclusive" || sameSet.some(({ policy }) => policy === "exclusive"))) return Operation$1.conflict({
|
|
562
565
|
existing: sameSet,
|
|
563
566
|
id,
|
|
564
567
|
reason: "The exclusive record set already contains incompatible data",
|
|
565
568
|
requirement
|
|
566
|
-
};
|
|
567
|
-
return {
|
|
568
|
-
_tag: "create",
|
|
569
|
+
});
|
|
570
|
+
return Operation$1.create({
|
|
569
571
|
id,
|
|
570
572
|
requirement
|
|
571
|
-
};
|
|
573
|
+
});
|
|
572
574
|
});
|
|
573
575
|
}
|
|
574
576
|
function validate$1(plan) {
|
|
@@ -779,6 +781,7 @@ function makeReceipt(plan, operations, status) {
|
|
|
779
781
|
//#region src/verification/resolver.ts
|
|
780
782
|
var resolver_exports = /* @__PURE__ */ __exportAll({
|
|
781
783
|
Answer: () => Answer,
|
|
784
|
+
AsyncResolution: () => AsyncResolution,
|
|
782
785
|
Error: () => Error$1,
|
|
783
786
|
Resolution: () => Resolution,
|
|
784
787
|
Service: () => Service,
|
|
@@ -791,10 +794,16 @@ const Answer = Schema.Struct({
|
|
|
791
794
|
ttl: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),
|
|
792
795
|
type: Type
|
|
793
796
|
});
|
|
794
|
-
const
|
|
797
|
+
const ResolutionSchema = Schema.TaggedUnion({
|
|
795
798
|
answer: { answers: Schema.Array(Answer) },
|
|
796
799
|
nodata: {}
|
|
797
800
|
});
|
|
801
|
+
/** DNS answer schema and callable constructors for trusted resolver values. */
|
|
802
|
+
const Resolution = {
|
|
803
|
+
Schema: ResolutionSchema,
|
|
804
|
+
answer: (input) => ResolutionSchema.cases.answer.make(input),
|
|
805
|
+
nodata: () => ResolutionSchema.cases.nodata.make({})
|
|
806
|
+
};
|
|
798
807
|
var Error$1 = class extends Schema.TaggedError()("ResolverError", {
|
|
799
808
|
cause: Schema.optionalKey(Schema.Unknown),
|
|
800
809
|
message: Schema.String,
|
|
@@ -805,6 +814,20 @@ var Error$1 = class extends Schema.TaggedError()("ResolverError", {
|
|
|
805
814
|
])
|
|
806
815
|
}) {};
|
|
807
816
|
var Service = class extends Context.Service()("@domainkit/DnsResolver") {};
|
|
817
|
+
const AsyncResolutionSchema = Schema.TaggedUnion({
|
|
818
|
+
answer: { answers: Schema.Array(Answer) },
|
|
819
|
+
nodata: {},
|
|
820
|
+
timeout: {},
|
|
821
|
+
failure: { message: Schema.String }
|
|
822
|
+
});
|
|
823
|
+
/** Promise bridge result schema and callable constructors, including typed failures. */
|
|
824
|
+
const AsyncResolution = {
|
|
825
|
+
Schema: AsyncResolutionSchema,
|
|
826
|
+
answer: (input) => AsyncResolutionSchema.cases.answer.make(input),
|
|
827
|
+
failure: (input) => AsyncResolutionSchema.cases.failure.make(input),
|
|
828
|
+
nodata: () => AsyncResolutionSchema.cases.nodata.make({}),
|
|
829
|
+
timeout: () => AsyncResolutionSchema.cases.timeout.make({})
|
|
830
|
+
};
|
|
808
831
|
const layerFromAsync = (resolver) => Layer.succeed(Service, { resolve: Effect.fn("DnsResolver.resolve")((query) => Effect.tryPromise({
|
|
809
832
|
try: () => resolver.resolve(query),
|
|
810
833
|
catch: (cause) => new Error$1({
|
|
@@ -827,13 +850,10 @@ const layerFromAsync = (resolver) => Layer.succeed(Service, { resolve: Effect.fn
|
|
|
827
850
|
}
|
|
828
851
|
}))) });
|
|
829
852
|
const toAsync = (resolver) => ({ resolve: (query) => Effect.runPromise(resolver.resolve(query).pipe(Effect.match({
|
|
830
|
-
onFailure: (failure) => failure.reason === "timeout" ? {
|
|
831
|
-
_tag: "failure",
|
|
832
|
-
message: failure.message
|
|
833
|
-
},
|
|
853
|
+
onFailure: (failure) => failure.reason === "timeout" ? AsyncResolution.timeout() : AsyncResolution.failure({ message: failure.message }),
|
|
834
854
|
onSuccess: (resolution) => resolution
|
|
835
855
|
}))) });
|
|
836
856
|
//#endregion
|
|
837
|
-
export {
|
|
857
|
+
export { Txt as $, Schema$1 as A, provider_exports as B, authorize$1 as C, Authorization$1 as D, renderManualInstructions as E, types_exports as F, Cname as G, A as H, Error$3 as I, Observed as J, Mx as K, Service$1 as L, decodeReceipt as M, encode as N, Operation$1 as O, encodeReceipt as P, Srv as Q, fromAsync as R, apply$1 as S, plan_exports as T, Aaaa as U, toAsync$1 as V, Caa as W, RequirementMetadata as X, Opaque as Y, Schema$2 as Z, ConflictError as _, resolver_exports as a, parse as at, StaleError as b, Error$2 as c, make as ct, Plan as d, zones_exports as dt, Type as et, Receipt as f, deletion_exports as g, create as h, Service as i, equals as it, decode as j, Receipt$1 as k, Operation as l, zone_discovery_exports as lt, authorize as m, Error$1 as n, decode$1 as nt, toAsync as o, Candidate as ot, apply as p, Ns as q, Resolution as r, dns_record_exports as rt, Authorization as s, Service$2 as st, AsyncResolution as t, data as tt, PartialError as u, candidates as ut, CreateResult as v, create$1 as w, Target as x, PartialApplyError as y, layerFromAsync$1 as z };
|
|
838
858
|
|
|
839
|
-
//# sourceMappingURL=resolver-
|
|
859
|
+
//# sourceMappingURL=resolver-DPJs8h0a.mjs.map
|