domainkit 0.1.1 → 0.2.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 +87 -83
- package/dist/{auth-B0owkrpk.mjs → auth-CZ1pZHMZ.mjs} +212 -20
- package/dist/auth-CZ1pZHMZ.mjs.map +1 -0
- package/dist/{client-BnD7QLRF.mjs → auth-CzhZ3Cuc.mjs} +235 -131
- package/dist/auth-CzhZ3Cuc.mjs.map +1 -0
- package/dist/authorization-DOg2Re1D.mjs +247 -0
- package/dist/authorization-DOg2Re1D.mjs.map +1 -0
- package/dist/canonical-json-CpvqGMcr.mjs +57 -0
- package/dist/canonical-json-CpvqGMcr.mjs.map +1 -0
- package/dist/{cloudflare-D0-J2MfP.mjs → cloudflare-BedFw4cX.mjs} +26 -3
- package/dist/cloudflare-BedFw4cX.mjs.map +1 -0
- package/dist/cloudflare-FDl5q7Dm.d.mts +32 -0
- package/dist/cloudflare.d.mts +3 -3
- package/dist/cloudflare.mjs +2 -2
- package/dist/connection-BWrBwqjk.mjs +58 -0
- package/dist/connection-BWrBwqjk.mjs.map +1 -0
- package/dist/connection-CEqadXSm.d.mts +182 -0
- package/dist/connection-CcQokgrd.mjs +186 -0
- package/dist/connection-CcQokgrd.mjs.map +1 -0
- package/dist/connection-api-DftK7eHo.d.mts +7 -0
- package/dist/{dns-record-C_KwGPLf.mjs → dns-record-BLeqo56C.mjs} +23 -3
- package/dist/dns-record-BLeqo56C.mjs.map +1 -0
- package/dist/effect-cloudflare.d.mts +2 -2
- package/dist/effect-cloudflare.mjs +2 -2
- package/dist/effect-vercel.d.mts +2 -2
- package/dist/effect-vercel.mjs +2 -2
- package/dist/effect.d.mts +9 -46
- package/dist/effect.mjs +29 -7
- package/dist/effect.mjs.map +1 -1
- package/dist/{index-D2howbNz.d.mts → index-B1opsgls.d.mts} +53 -6
- package/dist/{index-CEzk2gbZ.d.mts → index-Ewc__bQu.d.mts} +58 -7
- package/dist/index.d.mts +169 -113
- package/dist/index.mjs +201 -139
- package/dist/index.mjs.map +1 -1
- package/dist/{resolver-BHPsADzE.d.mts → resolver-CJOR9mQ8.d.mts} +620 -263
- package/dist/resolver-CxE-VDw4.mjs +598 -0
- package/dist/resolver-CxE-VDw4.mjs.map +1 -0
- package/dist/testing.d.mts +53 -44
- package/dist/testing.mjs +379 -107
- package/dist/testing.mjs.map +1 -1
- package/dist/{vercel-DD89DCqH.mjs → vercel-CWZ33NUS.mjs} +23 -3
- package/dist/vercel-CWZ33NUS.mjs.map +1 -0
- package/dist/vercel-DgJaUX9D.d.mts +31 -0
- package/dist/vercel.d.mts +3 -3
- package/dist/vercel.mjs +2 -2
- package/dist/verify-BzpiA0Es.mjs +642 -0
- package/dist/verify-BzpiA0Es.mjs.map +1 -0
- package/dist/verify-DZWLM91T.d.mts +805 -0
- package/dist/zone-discovery-BA5I24vu.d.mts +1390 -0
- package/dist/zones-DKHTpX9C.mjs +19 -0
- package/dist/zones-DKHTpX9C.mjs.map +1 -0
- package/package.json +1 -1
- package/dist/auth-B0owkrpk.mjs.map +0 -1
- package/dist/client-BnD7QLRF.mjs.map +0 -1
- package/dist/cloudflare-CprjjXfm.d.mts +0 -23
- package/dist/cloudflare-D0-J2MfP.mjs.map +0 -1
- package/dist/dns-record-C_KwGPLf.mjs.map +0 -1
- package/dist/manifest-CP85ePFn.d.mts +0 -583
- package/dist/receipt-CGSnfZQ6.mjs +0 -28
- package/dist/receipt-CGSnfZQ6.mjs.map +0 -1
- package/dist/resolver-tEXpKxmH.mjs +0 -200
- package/dist/resolver-tEXpKxmH.mjs.map +0 -1
- package/dist/vercel-D-E2aqb1.d.mts +0 -22
- package/dist/vercel-DD89DCqH.mjs.map +0 -1
- package/dist/verify-B80xCBh2.d.mts +0 -1407
- package/dist/verify-BXOvXE20.mjs +0 -1388
- package/dist/verify-BXOvXE20.mjs.map +0 -1
package/dist/index.mjs
CHANGED
|
@@ -1,66 +1,97 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { n as
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
decode: () => decode$
|
|
17
|
-
encode: () => encode
|
|
2
|
+
import { A as invalid_input_exports, O as parse$1, S as layerFromAsync, T as Schema$2, _ as equals, a as Mx, b as Service, c as Opaque, d as Srv, f as Txt, i as Cname, l as RequirementMetadata, m as data, n as Aaaa, o as Ns, p as Type, r as Caa, s as Observed, t as A, u as Schema$1, v as parse, y as Error } from "./dns-record-BLeqo56C.mjs";
|
|
3
|
+
import { a as Schema$3, c as encode, d as provider_context_exports, i as EvidenceSchema, m as secret_exports, n as CapabilityEvidence, r as Evidence, s as decode$3, t as Capability } from "./authorization-DOg2Re1D.mjs";
|
|
4
|
+
import { n as zones_exports } from "./zones-DKHTpX9C.mjs";
|
|
5
|
+
import { i as webCryptoLayer } from "./canonical-json-CpvqGMcr.mjs";
|
|
6
|
+
import { i as authorization_lifecycle_exports, t as connection_exports } from "./connection-CcQokgrd.mjs";
|
|
7
|
+
import { t as cloudflare_exports } from "./cloudflare-BedFw4cX.mjs";
|
|
8
|
+
import { C as selection_exports, E as decode$4, O as diagnostic_exports, T as Schema$4, _ as toAsync$1, a as Result, c as Observation, d as defaultMake$1, f as make$4, h as toAsync$3, i as PublicDnsObservation, k as version, l as Policy, n as ProviderObservation, o as observe$1, r as PublicDns$1, t as Provider$1, u as Service$1, w as Method, x as authorize$2, y as toAsync$2 } from "./verify-BzpiA0Es.mjs";
|
|
9
|
+
import { A as decodeReceipt$1, D as Receipt, E as Operation, F as Service$2, I as make$5, M as encodeReceipt, O as Schema$5, P as Candidate, S as create$3, T as Authorization, a as Authorization$1, b as apply$3, c as PartialError, d as apply$2, f as authorize$3, g as CreateResult, j as encode$1, k as decode$5, l as Plan, o as Error$1, p as create$2, s as Operation$1, t as Error$2, u as Receipt$1, w as renderManualInstructions$1, x as authorize$4, y as Target } from "./resolver-CxE-VDw4.mjs";
|
|
10
|
+
import { r as vercel_exports } from "./vercel-CWZ33NUS.mjs";
|
|
11
|
+
import { Data, Effect, Layer } from "effect";
|
|
12
|
+
//#region src/promise/provider-auth.ts
|
|
13
|
+
var provider_auth_exports = /* @__PURE__ */ __exportAll({
|
|
14
|
+
Method: () => Method,
|
|
15
|
+
Schema: () => Schema$4,
|
|
16
|
+
decode: () => decode$2
|
|
18
17
|
});
|
|
19
|
-
function decode$
|
|
18
|
+
function decode$2(input) {
|
|
20
19
|
return Effect.runPromise(decode$4(input));
|
|
21
20
|
}
|
|
22
21
|
//#endregion
|
|
23
|
-
//#region src/promise/connection-lifecycle.ts
|
|
24
|
-
var connection_lifecycle_exports = /* @__PURE__ */ __exportAll({
|
|
25
|
-
Error: () => Error$3,
|
|
26
|
-
detach: () => detach,
|
|
27
|
-
updateGrant: () => updateGrant
|
|
28
|
-
});
|
|
29
|
-
function updateGrant(input) {
|
|
30
|
-
return Effect.runPromise(updateGrant$1({
|
|
31
|
-
connection: input.connection,
|
|
32
|
-
grant: input.grant
|
|
33
|
-
}).pipe(Effect.provide(layerFromAsync$1(input.connectionStore))));
|
|
34
|
-
}
|
|
35
|
-
function detach(input) {
|
|
36
|
-
return Effect.runPromise(detach$1({
|
|
37
|
-
connectionId: input.connectionId,
|
|
38
|
-
revokeAuthorization: (authorization) => Effect.tryPromise({
|
|
39
|
-
try: () => input.revokeAuthorization(authorization),
|
|
40
|
-
catch: (cause) => new Error$3({ message: cause instanceof globalThis.Error ? cause.message : String(cause) })
|
|
41
|
-
})
|
|
42
|
-
}).pipe(Effect.provide(Layer.mergeAll(layerFromAsync$2(input.authorizationStore), layerFromAsync$1(input.connectionStore), layerFromAsync$3(input.credentialStore)))));
|
|
43
|
-
}
|
|
44
|
-
//#endregion
|
|
45
22
|
//#region src/promise/provider-authorization.ts
|
|
46
23
|
var provider_authorization_exports = /* @__PURE__ */ __exportAll({
|
|
47
24
|
Capability: () => Capability,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
25
|
+
CapabilityEvidence: () => CapabilityEvidence,
|
|
26
|
+
Evidence: () => Evidence,
|
|
27
|
+
EvidenceSchema: () => EvidenceSchema,
|
|
28
|
+
Schema: () => Schema$3,
|
|
29
|
+
decode: () => decode$1,
|
|
30
|
+
encode: () => encode
|
|
51
31
|
});
|
|
52
|
-
function decode$
|
|
53
|
-
return Effect.runPromise(decode$
|
|
32
|
+
function decode$1(input) {
|
|
33
|
+
return Effect.runPromise(decode$3(input));
|
|
54
34
|
}
|
|
55
35
|
//#endregion
|
|
56
|
-
//#region src/promise/
|
|
57
|
-
var
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
36
|
+
//#region src/promise/zone-discovery.ts
|
|
37
|
+
var zone_discovery_exports = /* @__PURE__ */ __exportAll({
|
|
38
|
+
Candidate: () => Candidate,
|
|
39
|
+
discover: () => discover,
|
|
40
|
+
toEffectSource: () => toEffectSource
|
|
61
41
|
});
|
|
62
|
-
function
|
|
63
|
-
return Effect.runPromise(
|
|
42
|
+
function discover(input) {
|
|
43
|
+
return Effect.runPromise(make$5(input.sources.map(toEffectSource)).discover(input.domain).pipe(Effect.map(projectOutcome)));
|
|
44
|
+
}
|
|
45
|
+
function toEffectSource(source) {
|
|
46
|
+
return {
|
|
47
|
+
listZones: (name) => Effect.tryPromise({
|
|
48
|
+
try: () => source.listZones(name),
|
|
49
|
+
catch: (cause) => new Error({
|
|
50
|
+
cause,
|
|
51
|
+
message: cause instanceof globalThis.Error ? cause.message : String(cause),
|
|
52
|
+
operation: "ZoneDiscovery.listZones",
|
|
53
|
+
providerId: source.provider.id,
|
|
54
|
+
reason: "transport"
|
|
55
|
+
})
|
|
56
|
+
}),
|
|
57
|
+
provider: Service.of({
|
|
58
|
+
id: source.provider.id,
|
|
59
|
+
createRecord: (zone, record) => Effect.tryPromise({
|
|
60
|
+
try: () => source.provider.createRecord(zone, record),
|
|
61
|
+
catch: (cause) => providerFailure(source.provider.id, "createRecord", cause)
|
|
62
|
+
}),
|
|
63
|
+
deleteRecord: (zone, providerRecordId) => Effect.tryPromise({
|
|
64
|
+
try: () => source.provider.deleteRecord(zone, providerRecordId),
|
|
65
|
+
catch: (cause) => providerFailure(source.provider.id, "deleteRecord", cause)
|
|
66
|
+
}),
|
|
67
|
+
getRecord: (zone, providerRecordId) => Effect.tryPromise({
|
|
68
|
+
try: () => source.provider.getRecord(zone, providerRecordId),
|
|
69
|
+
catch: (cause) => providerFailure(source.provider.id, "getRecord", cause)
|
|
70
|
+
}),
|
|
71
|
+
listRecords: (zone) => Effect.tryPromise({
|
|
72
|
+
try: () => source.provider.listRecords(zone),
|
|
73
|
+
catch: (cause) => providerFailure(source.provider.id, "listRecords", cause)
|
|
74
|
+
})
|
|
75
|
+
})
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function projectOutcome(outcome) {
|
|
79
|
+
switch (outcome._tag) {
|
|
80
|
+
case "NotFound": return outcome;
|
|
81
|
+
case "Resolved": return {
|
|
82
|
+
_tag: "Resolved",
|
|
83
|
+
candidate: outcome.candidate
|
|
84
|
+
};
|
|
85
|
+
case "SelectionRequired": return outcome;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function providerFailure(providerId, operation, cause) {
|
|
89
|
+
return cause instanceof Error ? cause : new Error({
|
|
90
|
+
cause,
|
|
91
|
+
message: cause instanceof globalThis.Error ? cause.message : String(cause),
|
|
92
|
+
operation,
|
|
93
|
+
providerId
|
|
94
|
+
});
|
|
64
95
|
}
|
|
65
96
|
//#endregion
|
|
66
97
|
//#region src/promise/dns-record.ts
|
|
@@ -94,14 +125,14 @@ var dns_plan_exports = /* @__PURE__ */ __exportAll({
|
|
|
94
125
|
Authorization: () => Authorization,
|
|
95
126
|
Operation: () => Operation,
|
|
96
127
|
Receipt: () => Receipt,
|
|
97
|
-
Schema: () => Schema$
|
|
128
|
+
Schema: () => Schema$5,
|
|
98
129
|
decode: () => decode,
|
|
99
130
|
decodeReceipt: () => decodeReceipt,
|
|
100
|
-
encode: () => encode$
|
|
131
|
+
encode: () => encode$1,
|
|
101
132
|
encodeReceipt: () => encodeReceipt
|
|
102
133
|
});
|
|
103
134
|
function decode(input) {
|
|
104
|
-
return Effect.runPromise(decode$
|
|
135
|
+
return Effect.runPromise(decode$5(input));
|
|
105
136
|
}
|
|
106
137
|
function decodeReceipt(input) {
|
|
107
138
|
return Effect.runPromise(decodeReceipt$1(input));
|
|
@@ -110,7 +141,7 @@ function decodeReceipt(input) {
|
|
|
110
141
|
//#region src/promise/deletion.ts
|
|
111
142
|
var deletion_exports = /* @__PURE__ */ __exportAll({
|
|
112
143
|
Authorization: () => Authorization$1,
|
|
113
|
-
Error: () => Error$
|
|
144
|
+
Error: () => Error$1,
|
|
114
145
|
Operation: () => Operation$1,
|
|
115
146
|
PartialError: () => PartialError,
|
|
116
147
|
Plan: () => Plan,
|
|
@@ -127,7 +158,7 @@ function create$1(input) {
|
|
|
127
158
|
}).pipe(Effect.provide(Layer.merge(layerFromAsync(input.provider), webCryptoLayer))));
|
|
128
159
|
}
|
|
129
160
|
function authorize$1(plan, operationIds) {
|
|
130
|
-
return Effect.runPromise(authorize$
|
|
161
|
+
return Effect.runPromise(authorize$3(plan, operationIds).pipe(Effect.provide(webCryptoLayer)));
|
|
131
162
|
}
|
|
132
163
|
function apply$1(input) {
|
|
133
164
|
return Effect.runPromise(apply$2({
|
|
@@ -137,56 +168,10 @@ function apply$1(input) {
|
|
|
137
168
|
}).pipe(Effect.provide(Layer.merge(layerFromAsync(input.provider), webCryptoLayer))));
|
|
138
169
|
}
|
|
139
170
|
//#endregion
|
|
140
|
-
//#region src/promise/oauth.ts
|
|
141
|
-
var oauth_exports = /* @__PURE__ */ __exportAll({
|
|
142
|
-
begin: () => begin,
|
|
143
|
-
complete: () => complete,
|
|
144
|
-
refresh: () => refresh,
|
|
145
|
-
revoke: () => revoke
|
|
146
|
-
});
|
|
147
|
-
function begin(input) {
|
|
148
|
-
const { stateStore, ...programInput } = input;
|
|
149
|
-
return Effect.runPromise(begin$1(programInput).pipe(Effect.provide(Layer.merge(layerFromAsync$4(stateStore), webCryptoLayer))));
|
|
150
|
-
}
|
|
151
|
-
function complete(input) {
|
|
152
|
-
return Effect.runPromise(complete$1({
|
|
153
|
-
callbackUrl: input.callbackUrl,
|
|
154
|
-
client: input.client,
|
|
155
|
-
...input.fetch === void 0 ? {} : { fetch: input.fetch },
|
|
156
|
-
providerId: input.providerId,
|
|
157
|
-
resolveSubject: (tokens, accessToken) => Effect.tryPromise({
|
|
158
|
-
try: () => input.resolveSubject(tokens, accessToken),
|
|
159
|
-
catch: (cause) => providerFailure(input.providerId, "resolveSubject", cause)
|
|
160
|
-
})
|
|
161
|
-
}).pipe(Effect.provide(Layer.mergeAll(layerFromAsync$4(input.stateStore), layerFromAsync$2(input.authorizationStore), layerFromAsync$1(input.connectionStore), layerFromAsync$3(input.credentialStore), webCryptoLayer))));
|
|
162
|
-
}
|
|
163
|
-
function refresh(input) {
|
|
164
|
-
return Effect.runPromise(refresh$1({
|
|
165
|
-
client: input.client,
|
|
166
|
-
authorization: input.authorization,
|
|
167
|
-
...input.fetch === void 0 ? {} : { fetch: input.fetch },
|
|
168
|
-
method: input.method
|
|
169
|
-
}).pipe(Effect.provide(layerFromAsync$3(input.credentialStore))));
|
|
170
|
-
}
|
|
171
|
-
function revoke(input) {
|
|
172
|
-
return Effect.runPromise(revoke$1({
|
|
173
|
-
client: input.client,
|
|
174
|
-
authorization: input.authorization,
|
|
175
|
-
...input.fetch === void 0 ? {} : { fetch: input.fetch },
|
|
176
|
-
method: input.method
|
|
177
|
-
}).pipe(Effect.provide(layerFromAsync$3(input.credentialStore))));
|
|
178
|
-
}
|
|
179
|
-
function providerFailure(providerId, operation, cause) {
|
|
180
|
-
return cause instanceof Error$1 || cause instanceof Error$2 ? cause : new Error$2({
|
|
181
|
-
cause,
|
|
182
|
-
message: cause instanceof Error ? cause.message : "Provider callback failed",
|
|
183
|
-
operation,
|
|
184
|
-
providerId
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
//#endregion
|
|
188
171
|
//#region src/promise/provisioning.ts
|
|
189
172
|
var provisioning_exports = /* @__PURE__ */ __exportAll({
|
|
173
|
+
CreateResult: () => CreateResult,
|
|
174
|
+
Target: () => Target,
|
|
190
175
|
apply: () => apply,
|
|
191
176
|
authorize: () => authorize,
|
|
192
177
|
authorizeForConnection: () => authorizeForConnection,
|
|
@@ -194,11 +179,15 @@ var provisioning_exports = /* @__PURE__ */ __exportAll({
|
|
|
194
179
|
renderManualInstructions: () => renderManualInstructions
|
|
195
180
|
});
|
|
196
181
|
function create(input) {
|
|
182
|
+
if ("sources" in input) {
|
|
183
|
+
const { sources, ...programInput } = input;
|
|
184
|
+
return Effect.runPromise(create$3(programInput).pipe(Effect.provide(Layer.merge(Layer.succeed(Service$2, make$5(sources.map(toEffectSource))), webCryptoLayer))));
|
|
185
|
+
}
|
|
197
186
|
const { provider, ...programInput } = input;
|
|
198
187
|
return Effect.runPromise(create$3(programInput).pipe(Effect.provide(Layer.merge(layerFromAsync(provider), webCryptoLayer))));
|
|
199
188
|
}
|
|
200
189
|
function authorize(plan, operationIds, options = {}) {
|
|
201
|
-
return Effect.runPromise(authorize$
|
|
190
|
+
return Effect.runPromise(authorize$4(plan, operationIds, options).pipe(Effect.provide(webCryptoLayer)));
|
|
202
191
|
}
|
|
203
192
|
function apply(input) {
|
|
204
193
|
return Effect.runPromise(apply$3({
|
|
@@ -207,56 +196,129 @@ function apply(input) {
|
|
|
207
196
|
}).pipe(Effect.provide(Layer.merge(layerFromAsync(input.provider), webCryptoLayer))));
|
|
208
197
|
}
|
|
209
198
|
function authorizeForConnection(input) {
|
|
210
|
-
return Effect.runPromise(authorize$
|
|
199
|
+
return Effect.runPromise(authorize$2(input).pipe(Effect.provide(webCryptoLayer)));
|
|
211
200
|
}
|
|
212
201
|
const renderManualInstructions = renderManualInstructions$1;
|
|
213
202
|
//#endregion
|
|
214
|
-
//#region src/promise/token.ts
|
|
215
|
-
var token_exports = /* @__PURE__ */ __exportAll({ connect: () => connect });
|
|
216
|
-
function connect(input) {
|
|
217
|
-
return Effect.runPromise(connect$1({
|
|
218
|
-
grant: input.grant,
|
|
219
|
-
ownerId: input.ownerId,
|
|
220
|
-
providerId: input.providerId,
|
|
221
|
-
subjectId: input.subjectId,
|
|
222
|
-
token: input.token,
|
|
223
|
-
validate: (token) => Effect.tryPromise({
|
|
224
|
-
try: () => input.validate(token),
|
|
225
|
-
catch: (cause) => cause instanceof Error$1 || cause instanceof Error$2 ? cause : new Error$2({
|
|
226
|
-
cause,
|
|
227
|
-
message: cause instanceof Error ? cause.message : "Token validation failed",
|
|
228
|
-
operation: "validateToken",
|
|
229
|
-
providerId: input.providerId
|
|
230
|
-
})
|
|
231
|
-
})
|
|
232
|
-
}).pipe(Effect.provide(Layer.mergeAll(layerFromAsync$1(input.connectionStore), layerFromAsync$2(input.authorizationStore), layerFromAsync$3(input.credentialStore), webCryptoLayer))));
|
|
233
|
-
}
|
|
234
|
-
//#endregion
|
|
235
203
|
//#region src/promise/verification.ts
|
|
236
|
-
var verification_exports = /* @__PURE__ */ __exportAll({
|
|
237
|
-
|
|
238
|
-
|
|
204
|
+
var verification_exports = /* @__PURE__ */ __exportAll({
|
|
205
|
+
Provider: () => Provider,
|
|
206
|
+
ProviderObservation: () => ProviderObservation,
|
|
207
|
+
PublicDns: () => PublicDns,
|
|
208
|
+
PublicDnsObservation: () => PublicDnsObservation,
|
|
209
|
+
Result: () => Result,
|
|
210
|
+
observe: () => observe
|
|
211
|
+
});
|
|
212
|
+
const PublicDns = PublicDns$1;
|
|
213
|
+
const Provider = Data.taggedEnum();
|
|
214
|
+
function observe(input) {
|
|
215
|
+
const provider = input.provider ?? Provider.Disabled();
|
|
216
|
+
let program = provider._tag === "Enabled" ? observe$1({
|
|
217
|
+
record: input.record,
|
|
218
|
+
...input.publicDns === void 0 ? {} : { publicDns: input.publicDns },
|
|
219
|
+
provider: Provider$1.Enabled({ zone: provider.zone })
|
|
220
|
+
}).pipe(Effect.provide(layerFromAsync(provider.provider))) : observe$1({
|
|
239
221
|
record: input.record,
|
|
240
|
-
|
|
241
|
-
|
|
222
|
+
...input.publicDns === void 0 ? {} : { publicDns: input.publicDns },
|
|
223
|
+
provider: Provider$1.Disabled()
|
|
224
|
+
});
|
|
225
|
+
if (input.resolvers !== void 0) program = program.pipe(Effect.provide(Layer.succeed(Service$1, make$4(input.resolvers.map((entry) => ({
|
|
226
|
+
id: entry.id,
|
|
227
|
+
resolver: fromAsyncResolver(entry.resolver),
|
|
228
|
+
...entry.timeoutMs === void 0 ? {} : { timeoutMs: entry.timeoutMs }
|
|
229
|
+
}))))));
|
|
230
|
+
return Effect.runPromise(program);
|
|
231
|
+
}
|
|
232
|
+
function fromAsyncResolver(resolver) {
|
|
233
|
+
return { resolve: (query) => Effect.tryPromise({
|
|
234
|
+
try: () => resolver.resolve(query),
|
|
235
|
+
catch: (cause) => new Error$2({
|
|
236
|
+
cause,
|
|
237
|
+
message: cause instanceof globalThis.Error ? cause.message : String(cause),
|
|
238
|
+
reason: "transport"
|
|
239
|
+
})
|
|
240
|
+
}).pipe(Effect.flatMap((resolution) => {
|
|
241
|
+
switch (resolution._tag) {
|
|
242
|
+
case "answer":
|
|
243
|
+
case "nodata": return Effect.succeed(resolution);
|
|
244
|
+
case "timeout": return Effect.fail(new Error$2({
|
|
245
|
+
message: "DNS query timed out",
|
|
246
|
+
reason: "timeout"
|
|
247
|
+
}));
|
|
248
|
+
case "failure": return Effect.fail(new Error$2({
|
|
249
|
+
message: resolution.message,
|
|
250
|
+
reason: "transport"
|
|
251
|
+
}));
|
|
252
|
+
}
|
|
253
|
+
})) };
|
|
242
254
|
}
|
|
243
255
|
//#endregion
|
|
244
256
|
//#region src/promise/cloudflare-doh.ts
|
|
245
|
-
var cloudflare_doh_exports = /* @__PURE__ */ __exportAll({ make: () => make$
|
|
246
|
-
function make$
|
|
247
|
-
return toAsync(options);
|
|
257
|
+
var cloudflare_doh_exports = /* @__PURE__ */ __exportAll({ make: () => make$3 });
|
|
258
|
+
function make$3(options = {}) {
|
|
259
|
+
return toAsync$1(options);
|
|
248
260
|
}
|
|
249
261
|
//#endregion
|
|
250
262
|
//#region src/promise/doh.ts
|
|
251
|
-
var doh_exports = /* @__PURE__ */ __exportAll({ make: () => make });
|
|
252
|
-
function make(options) {
|
|
253
|
-
return toAsync$
|
|
263
|
+
var doh_exports = /* @__PURE__ */ __exportAll({ make: () => make$2 });
|
|
264
|
+
function make$2(options) {
|
|
265
|
+
return toAsync$2(options);
|
|
266
|
+
}
|
|
267
|
+
//#endregion
|
|
268
|
+
//#region src/promise/google-doh.ts
|
|
269
|
+
var google_doh_exports = /* @__PURE__ */ __exportAll({ make: () => make$1 });
|
|
270
|
+
function make$1(options = {}) {
|
|
271
|
+
return toAsync$3(options);
|
|
272
|
+
}
|
|
273
|
+
//#endregion
|
|
274
|
+
//#region src/promise/resolver-pool.ts
|
|
275
|
+
var resolver_pool_exports = /* @__PURE__ */ __exportAll({
|
|
276
|
+
Observation: () => Observation,
|
|
277
|
+
Policy: () => Policy,
|
|
278
|
+
defaultMake: () => defaultMake,
|
|
279
|
+
make: () => make
|
|
280
|
+
});
|
|
281
|
+
function make(entries) {
|
|
282
|
+
return toAsync(make$4(entries.map((entry) => ({
|
|
283
|
+
id: entry.id,
|
|
284
|
+
resolver: asyncResolver(entry.resolver),
|
|
285
|
+
...entry.timeoutMs === void 0 ? {} : { timeoutMs: entry.timeoutMs }
|
|
286
|
+
}))));
|
|
287
|
+
}
|
|
288
|
+
function defaultMake(options = {}) {
|
|
289
|
+
return toAsync(defaultMake$1(options));
|
|
290
|
+
}
|
|
291
|
+
function toAsync(pool) {
|
|
292
|
+
return { observe: (query) => Effect.runPromise(pool.observe(query)) };
|
|
293
|
+
}
|
|
294
|
+
function asyncResolver(resolver) {
|
|
295
|
+
return { resolve: (query) => Effect.tryPromise({
|
|
296
|
+
try: () => resolver.resolve(query),
|
|
297
|
+
catch: (cause) => new Error$2({
|
|
298
|
+
cause,
|
|
299
|
+
message: cause instanceof globalThis.Error ? cause.message : String(cause),
|
|
300
|
+
reason: "transport"
|
|
301
|
+
})
|
|
302
|
+
}).pipe(Effect.flatMap((resolution) => {
|
|
303
|
+
switch (resolution._tag) {
|
|
304
|
+
case "answer":
|
|
305
|
+
case "nodata": return Effect.succeed(resolution);
|
|
306
|
+
case "timeout": return Effect.fail(new Error$2({
|
|
307
|
+
message: "DNS query timed out",
|
|
308
|
+
reason: "timeout"
|
|
309
|
+
}));
|
|
310
|
+
case "failure": return Effect.fail(new Error$2({
|
|
311
|
+
message: resolution.message,
|
|
312
|
+
reason: "transport"
|
|
313
|
+
}));
|
|
314
|
+
}
|
|
315
|
+
})) };
|
|
254
316
|
}
|
|
255
317
|
//#endregion
|
|
256
318
|
//#region src/index.ts
|
|
257
319
|
/** The current package version from the package manifest. */
|
|
258
320
|
const VERSION = version;
|
|
259
321
|
//#endregion
|
|
260
|
-
export { cloudflare_exports as Cloudflare, cloudflare_doh_exports as CloudflareDnsOverHttps, connection_exports as Connection,
|
|
322
|
+
export { authorization_lifecycle_exports as AuthorizationLifecycle, 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, provider_auth_exports as ProviderAuth, provider_authorization_exports as ProviderAuthorization, provider_context_exports as ProviderContext, selection_exports as ProviderDiscovery, 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 };
|
|
261
323
|
|
|
262
324
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["decode","Connection.decode","Lifecycle.updateGrant","ConnectionStore.layerFromAsync","Lifecycle.detach","Lifecycle.Error","ProviderAuthorizationStore.layerFromAsync","CredentialStore.layerFromAsync","decode","ProviderAuthorization.decode","decode","ProviderAuth.decode","DnsPlan.decode","DnsPlan.decodeReceipt","create","DeletionEffect.create","DnsProvider.layerFromAsync","authorize","DeletionEffect.authorize","apply","DeletionEffect.apply","OAuthEffect.begin","OAuthStateStore.layerFromAsync","OAuthEffect.complete","ProviderAuthorizationStore.layerFromAsync","ConnectionStore.layerFromAsync","CredentialStore.layerFromAsync","OAuthEffect.refresh","OAuthEffect.revoke","InvalidInputError","DnsProvider.Error","ProvisioningEffect.create","DnsProvider.layerFromAsync","ProvisioningEffect.authorize","ProvisioningEffect.apply","ConnectionAuthorization.authorize","ProvisioningEffect.renderManualInstructions","TokenEffect.connect","InvalidInputError","DnsProvider.Error","ConnectionStore.layerFromAsync","ProviderAuthorizationStore.layerFromAsync","CredentialStore.layerFromAsync","VerificationEffect.record","DnsProvider.layerFromAsync","DnsResolver.layerFromAsync","make","CloudflareDnsOverHttps.toAsync","DnsOverHttps.toAsync","packageJson.version"],"sources":["../src/promise/connection.ts","../src/promise/connection-lifecycle.ts","../src/promise/provider-authorization.ts","../src/promise/provider-auth.ts","../src/promise/dns-record.ts","../src/promise/domain-name.ts","../src/promise/dns-plan.ts","../src/promise/deletion.ts","../src/promise/oauth.ts","../src/promise/provisioning.ts","../src/promise/token.ts","../src/promise/verification.ts","../src/promise/cloudflare-doh.ts","../src/promise/doh.ts","../src/index.ts"],"sourcesContent":["import { Effect } from \"effect\";\n\nimport * as Connection from \"../auth/connection.ts\";\n\nexport { assertGrant, AuthorizationError, encode, Grant, Schema } from \"../auth/connection.ts\";\nexport type { Connection, OAuthContinuation, StoredCredential } from \"../auth/connection.ts\";\n\nexport function decode(input: unknown): Promise<Connection.Connection> {\n return Effect.runPromise(Connection.decode(input));\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 Lifecycle from \"../auth/connection-lifecycle.ts\";\nimport * as ConnectionStore from \"../stores/connection.ts\";\nimport * as CredentialStore from \"../stores/credential.ts\";\nimport * as ProviderAuthorizationStore from \"../stores/authorization.ts\";\n\nexport function updateGrant(input: {\n readonly connection: Parameters<typeof Lifecycle.updateGrant>[0][\"connection\"];\n readonly connectionStore: ConnectionStore.AsyncInterface;\n readonly grant: Parameters<typeof Lifecycle.updateGrant>[0][\"grant\"];\n}): Promise<Connection.Connection> {\n return Effect.runPromise(\n Lifecycle.updateGrant({ connection: input.connection, grant: input.grant }).pipe(\n Effect.provide(ConnectionStore.layerFromAsync(input.connectionStore)),\n ),\n );\n}\n\nexport function detach(input: {\n readonly authorizationStore: ProviderAuthorizationStore.AsyncInterface;\n readonly connectionId: string;\n readonly connectionStore: ConnectionStore.AsyncInterface;\n readonly credentialStore: CredentialStore.AsyncInterface;\n readonly revokeAuthorization: (\n authorization: ProviderAuthorization.ProviderAuthorization,\n ) => Promise<void>;\n}): Promise<Lifecycle.DetachResult> {\n return Effect.runPromise(\n Lifecycle.detach({\n connectionId: input.connectionId,\n revokeAuthorization: (authorization) =>\n Effect.tryPromise({\n try: () => input.revokeAuthorization(authorization),\n catch: (cause) =>\n new Lifecycle.Error({\n message: cause instanceof globalThis.Error ? cause.message : String(cause),\n }),\n }),\n }).pipe(\n Effect.provide(\n Layer.mergeAll(\n ProviderAuthorizationStore.layerFromAsync(input.authorizationStore),\n ConnectionStore.layerFromAsync(input.connectionStore),\n CredentialStore.layerFromAsync(input.credentialStore),\n ),\n ),\n ),\n );\n}\n\nexport { Error } from \"../auth/connection-lifecycle.ts\";\nexport type { DetachResult } from \"../auth/connection-lifecycle.ts\";\n","import { Effect } from \"effect\";\n\nimport * as ProviderAuthorization from \"../auth/authorization.ts\";\n\nexport { Capability, encode, Schema } from \"../auth/authorization.ts\";\nexport type { ProviderAuthorization } from \"../auth/authorization.ts\";\n\nexport function decode(input: unknown): Promise<ProviderAuthorization.ProviderAuthorization> {\n return Effect.runPromise(ProviderAuthorization.decode(input));\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","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 { Effect, Layer } from \"effect\";\n\nimport * as Connection from \"../auth/connection.ts\";\nimport * as ProviderAuthorization from \"../auth/authorization.ts\";\nimport * as OAuthEffect from \"../auth/oauth.ts\";\nimport type * as ProviderAuth from \"../auth/manifest.ts\";\nimport { Error as InvalidInputError } from \"../invalid-input.ts\";\nimport { webCryptoLayer } from \"../plan/canonical-json.ts\";\nimport * as DnsProvider from \"../provider/provider.ts\";\nimport * as ConnectionStore from \"../stores/connection.ts\";\nimport * as CredentialStore from \"../stores/credential.ts\";\nimport * as ProviderAuthorizationStore from \"../stores/authorization.ts\";\nimport * as OAuthStateStore from \"../stores/oauth-state.ts\";\n\nexport interface BeginInput extends OAuthEffect.BeginInput {\n readonly stateStore: OAuthStateStore.AsyncInterface;\n}\n\nexport function begin(input: BeginInput): Promise<{ readonly authorizationUrl: URL }> {\n const { stateStore, ...programInput } = input;\n return Effect.runPromise(\n OAuthEffect.begin(programInput).pipe(\n Effect.provide(Layer.merge(OAuthStateStore.layerFromAsync(stateStore), webCryptoLayer)),\n ),\n );\n}\n\nexport function complete(input: {\n readonly callbackUrl: URL;\n readonly client: ProviderAuth.OAuthClientConfiguration;\n readonly connectionStore: ConnectionStore.AsyncInterface;\n readonly credentialStore: CredentialStore.AsyncInterface;\n readonly authorizationStore: ProviderAuthorizationStore.AsyncInterface;\n readonly fetch?: OAuthEffect.Fetch;\n readonly providerId: string;\n readonly resolveSubject: ProviderAuth.AsyncOAuthSubjectResolver;\n readonly stateStore: OAuthStateStore.AsyncInterface;\n}): Promise<{\n readonly authorization: ProviderAuthorization.ProviderAuthorization;\n readonly connection: Connection.Connection;\n}> {\n return Effect.runPromise(\n OAuthEffect.complete({\n callbackUrl: input.callbackUrl,\n client: input.client,\n ...(input.fetch === undefined ? {} : { fetch: input.fetch }),\n providerId: input.providerId,\n resolveSubject: (tokens, accessToken) =>\n Effect.tryPromise({\n try: () => input.resolveSubject(tokens, accessToken),\n catch: (cause) => providerFailure(input.providerId, \"resolveSubject\", cause),\n }),\n }).pipe(\n Effect.provide(\n Layer.mergeAll(\n OAuthStateStore.layerFromAsync(input.stateStore),\n ProviderAuthorizationStore.layerFromAsync(input.authorizationStore),\n ConnectionStore.layerFromAsync(input.connectionStore),\n CredentialStore.layerFromAsync(input.credentialStore),\n webCryptoLayer,\n ),\n ),\n ),\n );\n}\n\nexport function refresh(input: {\n readonly authorization: ProviderAuthorization.ProviderAuthorization;\n readonly client: ProviderAuth.OAuthClientConfiguration;\n readonly credentialStore: CredentialStore.AsyncInterface;\n readonly fetch?: OAuthEffect.Fetch;\n readonly method: ProviderAuth.OAuthMethod;\n}): Promise<void> {\n return Effect.runPromise(\n OAuthEffect.refresh({\n client: input.client,\n authorization: input.authorization,\n ...(input.fetch === undefined ? {} : { fetch: input.fetch }),\n method: input.method,\n }).pipe(Effect.provide(CredentialStore.layerFromAsync(input.credentialStore))),\n );\n}\n\nexport function revoke(input: {\n readonly authorization: ProviderAuthorization.ProviderAuthorization;\n readonly client: ProviderAuth.OAuthClientConfiguration;\n readonly credentialStore: CredentialStore.AsyncInterface;\n readonly fetch?: OAuthEffect.Fetch;\n readonly method: ProviderAuth.OAuthMethod;\n}): Promise<void> {\n return Effect.runPromise(\n OAuthEffect.revoke({\n client: input.client,\n authorization: input.authorization,\n ...(input.fetch === undefined ? {} : { fetch: input.fetch }),\n method: input.method,\n }).pipe(Effect.provide(CredentialStore.layerFromAsync(input.credentialStore))),\n );\n}\n\nfunction providerFailure(\n providerId: string,\n operation: string,\n cause: unknown,\n): DnsProvider.Error | InvalidInputError {\n return cause instanceof InvalidInputError || cause instanceof DnsProvider.Error\n ? cause\n : new DnsProvider.Error({\n cause,\n message: cause instanceof Error ? cause.message : \"Provider callback failed\",\n operation,\n providerId,\n });\n}\n\nexport type Fetch = OAuthEffect.Fetch;\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 { 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\";\n\nexport interface CreateInput extends ProvisioningEffect.CreateInput {\n readonly provider: DnsProvider.AsyncInterface;\n}\n\nexport function create(input: CreateInput): Promise<DnsPlan.DnsPlan> {\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 connection: Connection.Connection;\n readonly domain: string;\n readonly operationIds?: ReadonlyArray<string>;\n readonly plan: DnsPlan.DnsPlan;\n}): Promise<DnsPlan.PlanAuthorization> {\n return Effect.runPromise(\n ConnectionAuthorization.authorize(input).pipe(Effect.provide(webCryptoLayer)),\n );\n}\n\nexport const renderManualInstructions = ProvisioningEffect.renderManualInstructions;\n","import { Effect, Layer } from \"effect\";\n\nimport * as Connection from \"../auth/connection.ts\";\nimport * as ProviderAuthorization from \"../auth/authorization.ts\";\nimport type * as ProviderAuth from \"../auth/manifest.ts\";\nimport { Value as Secret } from \"../auth/secret.ts\";\nimport * as TokenEffect from \"../auth/token.ts\";\nimport { Error as InvalidInputError } from \"../invalid-input.ts\";\nimport { webCryptoLayer } from \"../plan/canonical-json.ts\";\nimport * as DnsProvider from \"../provider/provider.ts\";\nimport * as ConnectionStore from \"../stores/connection.ts\";\nimport * as CredentialStore from \"../stores/credential.ts\";\nimport * as ProviderAuthorizationStore from \"../stores/authorization.ts\";\n\nexport function connect(input: {\n readonly connectionStore: ConnectionStore.AsyncInterface;\n readonly credentialStore: CredentialStore.AsyncInterface;\n readonly authorizationStore: ProviderAuthorizationStore.AsyncInterface;\n readonly grant: Connection.Grant;\n readonly ownerId: string;\n readonly providerId: string;\n readonly subjectId: string;\n readonly token: Secret;\n readonly validate: (token: Secret) => Promise<ProviderAuth.TokenValidation>;\n}): Promise<{\n readonly authorization: ProviderAuthorization.ProviderAuthorization;\n readonly connection: Connection.Connection;\n}> {\n return Effect.runPromise(\n TokenEffect.connect({\n grant: input.grant,\n ownerId: input.ownerId,\n providerId: input.providerId,\n subjectId: input.subjectId,\n token: input.token,\n validate: (token) =>\n Effect.tryPromise({\n try: () => input.validate(token),\n catch: (cause) =>\n cause instanceof InvalidInputError || cause instanceof DnsProvider.Error\n ? cause\n : new DnsProvider.Error({\n cause,\n message: cause instanceof Error ? cause.message : \"Token validation failed\",\n operation: \"validateToken\",\n providerId: input.providerId,\n }),\n }),\n }).pipe(\n Effect.provide(\n Layer.mergeAll(\n ConnectionStore.layerFromAsync(input.connectionStore),\n ProviderAuthorizationStore.layerFromAsync(input.authorizationStore),\n CredentialStore.layerFromAsync(input.credentialStore),\n webCryptoLayer,\n ),\n ),\n ),\n );\n}\n","import { 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 VerificationEffect from \"../verification/verify.ts\";\n\nexport function record(input: {\n readonly provider: DnsProvider.AsyncInterface;\n readonly record: DnsRecord.DnsRecord;\n readonly resolver: DnsResolver.AsyncInterface;\n readonly zone: DomainName.DomainName;\n}): Promise<VerificationEffect.Result> {\n return Effect.runPromise(\n VerificationEffect.record({ record: input.record, zone: input.zone }).pipe(\n Effect.provide(\n Layer.merge(\n DnsProvider.layerFromAsync(input.provider),\n DnsResolver.layerFromAsync(input.resolver),\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 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 ConnectionLifecycle from \"./promise/connection-lifecycle.ts\";\nexport * as ProviderAuthorization from \"./promise/provider-authorization.ts\";\nexport * as ProviderAuth from \"./promise/provider-auth.ts\";\nexport * as Secret from \"./auth/secret.ts\";\nexport * as ProviderDiscovery from \"./discovery/selection.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 type * as DnsProvider from \"./promise/dns-provider.ts\";\nexport * as Cloudflare from \"./promise/cloudflare.ts\";\nexport * as Vercel from \"./promise/vercel.ts\";\nexport type * as DnsResolver from \"./promise/dns-resolver.ts\";\nexport * as OAuth from \"./promise/oauth.ts\";\nexport * as Provisioning from \"./promise/provisioning.ts\";\nexport type * as Stores from \"./promise/stores.ts\";\nexport * as TokenConnection from \"./promise/token.ts\";\nexport * as Verification from \"./promise/verification.ts\";\nexport * as CloudflareDnsOverHttps from \"./promise/cloudflare-doh.ts\";\nexport * as DnsOverHttps from \"./promise/doh.ts\";\n"],"mappings":";;;;;;;;;;;;;;;;;;AAOA,SAAgBA,SAAO,OAAgD;CACrE,OAAO,OAAO,WAAWC,SAAkB,KAAK,CAAC;AACnD;;;;;;;;ACAA,SAAgB,YAAY,OAIO;CACjC,OAAO,OAAO,WACZC,cAAsB;EAAE,YAAY,MAAM;EAAY,OAAO,MAAM;CAAM,CAAC,CAAC,CAAC,KAC1E,OAAO,QAAQC,iBAA+B,MAAM,eAAe,CAAC,CACtE,CACF;AACF;AAEA,SAAgB,OAAO,OAQa;CAClC,OAAO,OAAO,WACZC,SAAiB;EACf,cAAc,MAAM;EACpB,sBAAsB,kBACpB,OAAO,WAAW;GAChB,WAAW,MAAM,oBAAoB,aAAa;GAClD,QAAQ,UACN,IAAIC,QAAgB,EAClB,SAAS,iBAAiB,WAAW,QAAQ,MAAM,UAAU,OAAO,KAAK,EAC3E,CAAC;EACL,CAAC;CACL,CAAC,CAAC,CAAC,KACD,OAAO,QACL,MAAM,SACJC,iBAA0C,MAAM,kBAAkB,GAClEH,iBAA+B,MAAM,eAAe,GACpDI,iBAA+B,MAAM,eAAe,CACtD,CACF,CACF,CACF;AACF;;;;;;;;;AC5CA,SAAgBC,SAAO,OAAsE;CAC3F,OAAO,OAAO,WAAWC,SAA6B,KAAK,CAAC;AAC9D;;;;;;;;ACIA,SAAgBC,SAAO,OAAgD;CACrE,OAAO,OAAO,WAAWC,SAAoB,KAAK,CAAC;AACrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AGRA,SAAgB,OAAO,OAA0C;CAC/D,OAAO,OAAO,WAAWC,SAAe,KAAK,CAAC;AAChD;AAEA,SAAgB,cAAc,OAA+C;CAC3E,OAAO,OAAO,WAAWC,gBAAsB,KAAK,CAAC;AACvD;;;;;;;;;;;;;;ACNA,SAAgBC,SAAO,OAKU;CAC/B,OAAO,OAAO,WACZC,SAAsB;EACpB,MAAM,MAAM;EACZ,SAAS,MAAM;EACf,GAAI,MAAM,UAAU,KAAA,IAAY,CAAC,IAAI,EAAE,OAAO,MAAM,MAAM;CAC5D,CAAC,CAAC,CAAC,KACD,OAAO,QAAQ,MAAM,MAAMC,eAA2B,MAAM,QAAQ,GAAG,cAAc,CAAC,CACxF,CACF;AACF;AAEA,SAAgBC,YACd,MACA,cACuC;CACvC,OAAO,OAAO,WACZC,YAAyB,MAAM,YAAY,CAAC,CAAC,KAAK,OAAO,QAAQ,cAAc,CAAC,CAClF;AACF;AAEA,SAAgBC,QAAM,OAKc;CAClC,OAAO,OAAO,WACZC,QAAqB;EACnB,eAAe,MAAM;EACrB,MAAM,MAAM;EACZ,GAAI,MAAM,iBAAiB,KAAA,IAAY,CAAC,IAAI,EAAE,cAAc,MAAM,aAAa;CACjF,CAAC,CAAC,CAAC,KACD,OAAO,QAAQ,MAAM,MAAMJ,eAA2B,MAAM,QAAQ,GAAG,cAAc,CAAC,CACxF,CACF;AACF;;;;;;;;;AC9BA,SAAgB,MAAM,OAAgE;CACpF,MAAM,EAAE,YAAY,GAAG,iBAAiB;CACxC,OAAO,OAAO,WACZK,QAAkB,YAAY,CAAC,CAAC,KAC9B,OAAO,QAAQ,MAAM,MAAMC,iBAA+B,UAAU,GAAG,cAAc,CAAC,CACxF,CACF;AACF;AAEA,SAAgB,SAAS,OAatB;CACD,OAAO,OAAO,WACZC,WAAqB;EACnB,aAAa,MAAM;EACnB,QAAQ,MAAM;EACd,GAAI,MAAM,UAAU,KAAA,IAAY,CAAC,IAAI,EAAE,OAAO,MAAM,MAAM;EAC1D,YAAY,MAAM;EAClB,iBAAiB,QAAQ,gBACvB,OAAO,WAAW;GAChB,WAAW,MAAM,eAAe,QAAQ,WAAW;GACnD,QAAQ,UAAU,gBAAgB,MAAM,YAAY,kBAAkB,KAAK;EAC7E,CAAC;CACL,CAAC,CAAC,CAAC,KACD,OAAO,QACL,MAAM,SACJD,iBAA+B,MAAM,UAAU,GAC/CE,iBAA0C,MAAM,kBAAkB,GAClEC,iBAA+B,MAAM,eAAe,GACpDC,iBAA+B,MAAM,eAAe,GACpD,cACF,CACF,CACF,CACF;AACF;AAEA,SAAgB,QAAQ,OAMN;CAChB,OAAO,OAAO,WACZC,UAAoB;EAClB,QAAQ,MAAM;EACd,eAAe,MAAM;EACrB,GAAI,MAAM,UAAU,KAAA,IAAY,CAAC,IAAI,EAAE,OAAO,MAAM,MAAM;EAC1D,QAAQ,MAAM;CAChB,CAAC,CAAC,CAAC,KAAK,OAAO,QAAQD,iBAA+B,MAAM,eAAe,CAAC,CAAC,CAC/E;AACF;AAEA,SAAgB,OAAO,OAML;CAChB,OAAO,OAAO,WACZE,SAAmB;EACjB,QAAQ,MAAM;EACd,eAAe,MAAM;EACrB,GAAI,MAAM,UAAU,KAAA,IAAY,CAAC,IAAI,EAAE,OAAO,MAAM,MAAM;EAC1D,QAAQ,MAAM;CAChB,CAAC,CAAC,CAAC,KAAK,OAAO,QAAQF,iBAA+B,MAAM,eAAe,CAAC,CAAC,CAC/E;AACF;AAEA,SAAS,gBACP,YACA,WACA,OACuC;CACvC,OAAO,iBAAiBG,WAAqB,iBAAiBC,UAC1D,QACA,IAAIA,QAAkB;EACpB;EACA,SAAS,iBAAiB,QAAQ,MAAM,UAAU;EAClD;EACA;CACF,CAAC;AACP;;;;;;;;;;ACnGA,SAAgB,OAAO,OAA8C;CACnE,MAAM,EAAE,UAAU,GAAG,iBAAiB;CACtC,OAAO,OAAO,WACZC,SAA0B,YAAY,CAAC,CAAC,KACtC,OAAO,QAAQ,MAAM,MAAMC,eAA2B,QAAQ,GAAG,cAAc,CAAC,CAClF,CACF;AACF;AAEA,SAAgB,UACd,MACA,cACA,UAA+C,CAAC,GACZ;CACpC,OAAO,OAAO,WACZC,YAA6B,MAAM,cAAc,OAAO,CAAC,CAAC,KAAK,OAAO,QAAQ,cAAc,CAAC,CAC/F;AACF;AAEA,SAAgB,MAAM,OAIY;CAChC,OAAO,OAAO,WACZC,QAAyB;EAAE,eAAe,MAAM;EAAe,MAAM,MAAM;CAAK,CAAC,CAAC,CAAC,KACjF,OAAO,QAAQ,MAAM,MAAMF,eAA2B,MAAM,QAAQ,GAAG,cAAc,CAAC,CACxF,CACF;AACF;AAEA,SAAgB,uBAAuB,OAOA;CACrC,OAAO,OAAO,WACZG,YAAkC,KAAK,CAAC,CAAC,KAAK,OAAO,QAAQ,cAAc,CAAC,CAC9E;AACF;AAEA,MAAa,2BAA2BC;;;;AC5CxC,SAAgB,QAAQ,OAarB;CACD,OAAO,OAAO,WACZC,UAAoB;EAClB,OAAO,MAAM;EACb,SAAS,MAAM;EACf,YAAY,MAAM;EAClB,WAAW,MAAM;EACjB,OAAO,MAAM;EACb,WAAW,UACT,OAAO,WAAW;GAChB,WAAW,MAAM,SAAS,KAAK;GAC/B,QAAQ,UACN,iBAAiBC,WAAqB,iBAAiBC,UACnD,QACA,IAAIA,QAAkB;IACpB;IACA,SAAS,iBAAiB,QAAQ,MAAM,UAAU;IAClD,WAAW;IACX,YAAY,MAAM;GACpB,CAAC;EACT,CAAC;CACL,CAAC,CAAC,CAAC,KACD,OAAO,QACL,MAAM,SACJC,iBAA+B,MAAM,eAAe,GACpDC,iBAA0C,MAAM,kBAAkB,GAClEC,iBAA+B,MAAM,eAAe,GACpD,cACF,CACF,CACF,CACF;AACF;;;;ACnDA,SAAgB,OAAO,OAKgB;CACrC,OAAO,OAAO,WACZC,SAA0B;EAAE,QAAQ,MAAM;EAAQ,MAAM,MAAM;CAAK,CAAC,CAAC,CAAC,KACpE,OAAO,QACL,MAAM,MACJC,eAA2B,MAAM,QAAQ,GACzCC,iBAA2B,MAAM,QAAQ,CAC3C,CACF,CACF,CACF;AACF;;;;ACnBA,SAAgBC,OAAK,UAAmB,CAAC,GAA+B;CACtE,OAAOC,QAA+B,OAAO;AAC/C;;;;ACFA,SAAgB,KAAK,SAA8C;CACjE,OAAOC,UAAqB,OAAO;AACrC;;;;ACJA,MAAa,UAAUC"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["decode","ProviderAuth.decode","decode","ProviderAuthorization.decode","Discovery.make","Provider.Error","DnsPlan.decode","DnsPlan.decodeReceipt","create","DeletionEffect.create","DnsProvider.layerFromAsync","authorize","DeletionEffect.authorize","apply","DeletionEffect.apply","ProvisioningEffect.create","ZoneDiscoveryEffect.Service","ZoneDiscoveryEffect.make","ZoneDiscovery.toEffectSource","DnsProvider.layerFromAsync","ProvisioningEffect.authorize","ProvisioningEffect.apply","ConnectionAuthorization.authorize","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/provider-auth.ts","../src/promise/provider-authorization.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/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/index.ts"],"sourcesContent":["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 * as ProviderAuthorization from \"../auth/authorization.ts\";\n\nexport {\n Capability,\n CapabilityEvidence,\n encode,\n Evidence,\n EvidenceSchema,\n Schema,\n} from \"../auth/authorization.ts\";\nexport type { ProviderAuthorization } from \"../auth/authorization.ts\";\n\nexport function decode(input: unknown): Promise<ProviderAuthorization.ProviderAuthorization> {\n return Effect.runPromise(ProviderAuthorization.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 { 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 { 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 connection: Connection.Connection;\n readonly domain: string;\n readonly operationIds?: ReadonlyArray<string>;\n readonly plan: DnsPlan.DnsPlan;\n}): Promise<DnsPlan.PlanAuthorization> {\n return Effect.runPromise(\n ConnectionAuthorization.authorize(input).pipe(Effect.provide(webCryptoLayer)),\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 AuthorizationLifecycle from \"./promise/authorization-lifecycle.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 type * as DnsResolver from \"./promise/dns-resolver.ts\";\nexport * as ProviderAuth from \"./promise/provider-auth.ts\";\nexport * as ProviderAuthorization from \"./promise/provider-authorization.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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"}
|