domainkit 0.8.0 → 0.9.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 +213 -41
- package/dist/Approval.mjs +34 -0
- package/dist/Approval.mjs.map +1 -0
- package/dist/Cleanup.mjs +97 -0
- package/dist/Cleanup.mjs.map +1 -0
- package/dist/Cloudflare.mjs +225 -0
- package/dist/Cloudflare.mjs.map +1 -0
- package/dist/Connect.mjs +463 -0
- package/dist/Connect.mjs.map +1 -0
- package/dist/Custody.mjs +64 -0
- package/dist/Custody.mjs.map +1 -0
- package/dist/DnsRecord.mjs +213 -0
- package/dist/DnsRecord.mjs.map +1 -0
- package/dist/DomainKit.mjs +34 -0
- package/dist/DomainKit.mjs.map +1 -0
- package/dist/DomainName.mjs +100 -0
- package/dist/DomainName.mjs.map +1 -0
- package/dist/Plan.mjs +102 -0
- package/dist/Plan.mjs.map +1 -0
- package/dist/Principal.mjs +23 -0
- package/dist/Principal.mjs.map +1 -0
- package/dist/Provider.mjs +130 -0
- package/dist/Provider.mjs.map +1 -0
- package/dist/Providers.mjs +40 -0
- package/dist/Providers.mjs.map +1 -0
- package/dist/Provision.mjs +93 -0
- package/dist/Provision.mjs.map +1 -0
- package/dist/Reason.mjs +162 -0
- package/dist/Reason.mjs.map +1 -0
- package/dist/Receipt.mjs +71 -0
- package/dist/Receipt.mjs.map +1 -0
- package/dist/Resolver.mjs +75 -0
- package/dist/Resolver.mjs.map +1 -0
- package/dist/Server.mjs +516 -0
- package/dist/Server.mjs.map +1 -0
- package/dist/Storage.mjs +236 -0
- package/dist/Storage.mjs.map +1 -0
- package/dist/Testing.mjs +226 -0
- package/dist/Testing.mjs.map +1 -0
- package/dist/Transport.mjs +187 -0
- package/dist/Transport.mjs.map +1 -0
- package/dist/Vercel.mjs +116 -0
- package/dist/Vercel.mjs.map +1 -0
- package/dist/Verify.mjs +292 -0
- package/dist/Verify.mjs.map +1 -0
- package/dist/{rolldown-runtime-D7D4PA-g.mjs → _virtual/_rolldown/runtime.mjs} +1 -1
- package/dist/entry/client.mjs +2 -0
- package/dist/entry/server.mjs +2 -0
- package/dist/entry/testing.mjs +3 -0
- package/dist/index.mjs +33 -462
- package/dist/index.mjs.map +1 -1
- package/dist/internal/aes.mjs +61 -0
- package/dist/internal/aes.mjs.map +1 -0
- package/dist/internal/attempts.mjs +284 -0
- package/dist/internal/attempts.mjs.map +1 -0
- package/dist/internal/cloudflare/client.mjs +100 -0
- package/dist/internal/cloudflare/client.mjs.map +1 -0
- package/dist/internal/cloudflare/protocol.mjs +59 -0
- package/dist/internal/cloudflare/protocol.mjs.map +1 -0
- package/dist/internal/cloudflare/records.mjs +156 -0
- package/dist/internal/cloudflare/records.mjs.map +1 -0
- package/dist/internal/config.mjs +13 -0
- package/dist/internal/config.mjs.map +1 -0
- package/dist/internal/conformance/provider.mjs +207 -0
- package/dist/internal/conformance/provider.mjs.map +1 -0
- package/dist/internal/conformance/storage.mjs +428 -0
- package/dist/internal/conformance/storage.mjs.map +1 -0
- package/dist/internal/digest.mjs +25 -0
- package/dist/internal/digest.mjs.map +1 -0
- package/dist/internal/doh.mjs +152 -0
- package/dist/internal/doh.mjs.map +1 -0
- package/dist/internal/error.mjs +69 -0
- package/dist/internal/error.mjs.map +1 -0
- package/dist/internal/http.mjs +89 -0
- package/dist/internal/http.mjs.map +1 -0
- package/dist/internal/ids.mjs +8 -0
- package/dist/internal/ids.mjs.map +1 -0
- package/dist/internal/oauth.mjs +113 -0
- package/dist/internal/oauth.mjs.map +1 -0
- package/dist/internal/planner.mjs +88 -0
- package/dist/internal/planner.mjs.map +1 -0
- package/dist/internal/provider-async.mjs +83 -0
- package/dist/internal/provider-async.mjs.map +1 -0
- package/dist/internal/storage-memory.mjs +302 -0
- package/dist/internal/storage-memory.mjs.map +1 -0
- package/dist/internal/vercel/client.mjs +122 -0
- package/dist/internal/vercel/client.mjs.map +1 -0
- package/dist/internal/vercel/protocol.mjs +80 -0
- package/dist/internal/vercel/protocol.mjs.map +1 -0
- package/dist/internal/vercel/records.mjs +151 -0
- package/dist/internal/vercel/records.mjs.map +1 -0
- package/dist/package.mjs +6 -0
- package/dist/package.mjs.map +1 -0
- package/dist/types/Approval.d.ts +26 -0
- package/dist/types/Cleanup.d.ts +41 -0
- package/dist/types/Cloudflare.d.ts +36 -0
- package/dist/types/Connect.d.ts +506 -0
- package/dist/types/Custody.d.ts +38 -0
- package/dist/types/DnsRecord.d.ts +158 -0
- package/dist/types/DomainKit.d.ts +31 -0
- package/dist/types/DomainName.d.ts +27 -0
- package/dist/types/Plan.d.ts +76 -0
- package/dist/types/Principal.d.ts +18 -0
- package/dist/types/Provider.d.ts +248 -0
- package/dist/types/Providers.d.ts +16 -0
- package/dist/types/Provision.d.ts +75 -0
- package/dist/types/Reason.d.ts +118 -0
- package/dist/types/Receipt.d.ts +55 -0
- package/dist/types/Resolver.d.ts +135 -0
- package/dist/types/Server.d.ts +6523 -0
- package/dist/types/Storage.d.ts +314 -0
- package/dist/types/Testing.d.ts +84 -0
- package/dist/types/Transport.d.ts +124 -0
- package/dist/types/Vercel.d.ts +25 -0
- package/dist/types/Verify.d.ts +109 -0
- package/dist/types/entry/client.d.ts +2 -0
- package/dist/types/entry/server.d.ts +2 -0
- package/dist/types/entry/testing.d.ts +3 -0
- package/dist/types/index.d.ts +21 -0
- package/dist/types/internal/aes.d.ts +8 -0
- package/dist/types/internal/attempts.d.ts +40 -0
- package/dist/types/internal/cloudflare/client.d.ts +23 -0
- package/dist/types/internal/cloudflare/protocol.d.ts +71 -0
- package/dist/types/internal/cloudflare/records.d.ts +8 -0
- package/dist/types/internal/config.d.ts +4 -0
- package/dist/types/internal/conformance/provider.d.ts +12 -0
- package/dist/types/internal/conformance/storage.d.ts +14 -0
- package/dist/types/internal/digest.d.ts +10 -0
- package/dist/types/internal/doh.d.ts +19 -0
- package/dist/types/internal/error.d.ts +24 -0
- package/dist/types/internal/http.d.ts +27 -0
- package/dist/types/internal/ids.d.ts +3 -0
- package/dist/types/internal/oauth.d.ts +58 -0
- package/dist/types/internal/planner.d.ts +22 -0
- package/dist/types/internal/provider-async.d.ts +78 -0
- package/dist/types/internal/storage-memory.d.ts +2 -0
- package/dist/types/internal/vercel/client.d.ts +29 -0
- package/dist/types/internal/vercel/protocol.d.ts +124 -0
- package/dist/types/internal/vercel/records.d.ts +7 -0
- package/package.json +88 -12
- package/dist/canonical-json-CQYKsZw7.mjs +0 -310
- package/dist/canonical-json-CQYKsZw7.mjs.map +0 -1
- package/dist/connect-D-X8T9W8.d.mts +0 -1597
- package/dist/connect-oI8hcMxc.mjs +0 -185
- package/dist/connect-oI8hcMxc.mjs.map +0 -1
- package/dist/connection-Dp6ZdSo8.d.mts +0 -186
- package/dist/connection-api-lqG1nBtD.d.mts +0 -26
- package/dist/index.d.mts +0 -1551
- package/dist/managed-dns-connections-C3A_GBaz.mjs +0 -99
- package/dist/managed-dns-connections-C3A_GBaz.mjs.map +0 -1
- package/dist/promise.d.mts +0 -378
- package/dist/promise.mjs +0 -598
- package/dist/promise.mjs.map +0 -1
- package/dist/resolver-BeGz1ukw.mjs +0 -921
- package/dist/resolver-BeGz1ukw.mjs.map +0 -1
- package/dist/resolver-xoSwyXDJ.d.mts +0 -3734
- package/dist/server.d.mts +0 -128
- package/dist/server.mjs +0 -319
- package/dist/server.mjs.map +0 -1
- package/dist/testing.d.mts +0 -62
- package/dist/testing.mjs +0 -507
- package/dist/testing.mjs.map +0 -1
- package/dist/verify-DvGPb5C9.mjs +0 -2402
- package/dist/verify-DvGPb5C9.mjs.map +0 -1
- package/dist/verify-FpunAcM7.d.mts +0 -1335
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Why an operation failed. Every `DomainKit.Error` carries exactly one of these as `reason`; hosts
|
|
3
|
+
* match on `reason._tag` and add a reason here rather than a new error class.
|
|
4
|
+
*/
|
|
5
|
+
import { Schema } from "effect";
|
|
6
|
+
import * as Plan from "./Plan.ts";
|
|
7
|
+
declare const InvalidInput_base: Schema.Class<InvalidInput, Schema.TaggedStruct<"InvalidInput", {
|
|
8
|
+
readonly message: Schema.String;
|
|
9
|
+
readonly field: Schema.optionalKey<Schema.String>;
|
|
10
|
+
}>, import("effect/Cause").YieldableError>;
|
|
11
|
+
export declare class InvalidInput extends InvalidInput_base {
|
|
12
|
+
}
|
|
13
|
+
declare const Unauthenticated_base: Schema.Class<Unauthenticated, Schema.TaggedStruct<"Unauthenticated", {
|
|
14
|
+
readonly message: Schema.String;
|
|
15
|
+
}>, import("effect/Cause").YieldableError>;
|
|
16
|
+
export declare class Unauthenticated extends Unauthenticated_base {
|
|
17
|
+
}
|
|
18
|
+
declare const Forbidden_base: Schema.Class<Forbidden, Schema.TaggedStruct<"Forbidden", {
|
|
19
|
+
readonly message: Schema.String;
|
|
20
|
+
}>, import("effect/Cause").YieldableError>;
|
|
21
|
+
export declare class Forbidden extends Forbidden_base {
|
|
22
|
+
}
|
|
23
|
+
declare const NotFound_base: Schema.Class<NotFound, Schema.TaggedStruct<"NotFound", {
|
|
24
|
+
readonly entity: Schema.Literals<readonly ["connection", "attachment", "plan", "approval", "receipt", "continuation", "provider", "zone", "authorization", "record"]>;
|
|
25
|
+
readonly id: Schema.String;
|
|
26
|
+
}>, import("effect/Cause").YieldableError>;
|
|
27
|
+
export declare class NotFound extends NotFound_base {
|
|
28
|
+
get message(): string;
|
|
29
|
+
}
|
|
30
|
+
declare const Conflict_base: Schema.Class<Conflict, Schema.TaggedStruct<"Conflict", {
|
|
31
|
+
readonly planId: Schema.suspend<Schema.brand<Schema.String, "@domainkit/PlanId">>;
|
|
32
|
+
readonly operations: Schema.suspend<Schema.$Array<typeof Plan.Conflict>>;
|
|
33
|
+
}>, import("effect/Cause").YieldableError>;
|
|
34
|
+
/** The plan contains conflicts and cannot be applied. */
|
|
35
|
+
export declare class Conflict extends Conflict_base {
|
|
36
|
+
get message(): string;
|
|
37
|
+
}
|
|
38
|
+
declare const Stale_base: Schema.Class<Stale, Schema.TaggedStruct<"Stale", {
|
|
39
|
+
readonly planId: Schema.suspend<Schema.brand<Schema.String, "@domainkit/PlanId">>;
|
|
40
|
+
readonly digest: Schema.suspend<Schema.brand<Schema.String, "@domainkit/Digest">>;
|
|
41
|
+
}>, import("effect/Cause").YieldableError>;
|
|
42
|
+
/** Provider state moved since the plan was built; build a new plan. */
|
|
43
|
+
export declare class Stale extends Stale_base {
|
|
44
|
+
get message(): string;
|
|
45
|
+
}
|
|
46
|
+
declare const Expired_base: Schema.Class<Expired, Schema.TaggedStruct<"Expired", {
|
|
47
|
+
readonly entity: Schema.Literals<readonly ["plan", "approval", "continuation", "credential"]>;
|
|
48
|
+
readonly id: Schema.String;
|
|
49
|
+
}>, import("effect/Cause").YieldableError>;
|
|
50
|
+
export declare class Expired extends Expired_base {
|
|
51
|
+
get message(): string;
|
|
52
|
+
}
|
|
53
|
+
declare const Busy_base: Schema.Class<Busy, Schema.TaggedStruct<"Busy", {
|
|
54
|
+
readonly key: Schema.String;
|
|
55
|
+
}>, import("effect/Cause").YieldableError>;
|
|
56
|
+
/** Another operation holds the lock (e.g. concurrent apply or refresh). Retrying is safe. */
|
|
57
|
+
export declare class Busy extends Busy_base {
|
|
58
|
+
get message(): string;
|
|
59
|
+
}
|
|
60
|
+
declare const ProviderRejected_base: Schema.Class<ProviderRejected, Schema.TaggedStruct<"ProviderRejected", {
|
|
61
|
+
readonly provider: Schema.String;
|
|
62
|
+
readonly code: Schema.optionalKey<Schema.String>;
|
|
63
|
+
readonly message: Schema.String;
|
|
64
|
+
}>, import("effect/Cause").YieldableError>;
|
|
65
|
+
export declare class ProviderRejected extends ProviderRejected_base {
|
|
66
|
+
}
|
|
67
|
+
declare const ProviderUnavailable_base: Schema.Class<ProviderUnavailable, Schema.TaggedStruct<"ProviderUnavailable", {
|
|
68
|
+
readonly provider: Schema.String;
|
|
69
|
+
readonly retryAfterMs: Schema.optionalKey<Schema.Number>;
|
|
70
|
+
readonly message: Schema.String;
|
|
71
|
+
}>, import("effect/Cause").YieldableError>;
|
|
72
|
+
export declare class ProviderUnavailable extends ProviderUnavailable_base {
|
|
73
|
+
}
|
|
74
|
+
declare const Reconnect_base: Schema.Class<Reconnect, Schema.TaggedStruct<"Reconnect", {
|
|
75
|
+
readonly provider: Schema.String;
|
|
76
|
+
readonly connectionId: Schema.String;
|
|
77
|
+
}>, import("effect/Cause").YieldableError>;
|
|
78
|
+
/** The provider credential no longer works; the customer must reconnect. */
|
|
79
|
+
export declare class Reconnect extends Reconnect_base {
|
|
80
|
+
get message(): string;
|
|
81
|
+
}
|
|
82
|
+
declare const StorageFailed_base: Schema.Class<StorageFailed, Schema.TaggedStruct<"StorageFailed", {
|
|
83
|
+
readonly operation: Schema.String;
|
|
84
|
+
readonly message: Schema.String;
|
|
85
|
+
}>, import("effect/Cause").YieldableError>;
|
|
86
|
+
export declare class StorageFailed extends StorageFailed_base {
|
|
87
|
+
}
|
|
88
|
+
declare const CryptoFailed_base: Schema.Class<CryptoFailed, Schema.TaggedStruct<"CryptoFailed", {
|
|
89
|
+
readonly operation: Schema.Literals<readonly ["digest", "seal", "open"]>;
|
|
90
|
+
}>, import("effect/Cause").YieldableError>;
|
|
91
|
+
export declare class CryptoFailed extends CryptoFailed_base {
|
|
92
|
+
get message(): string;
|
|
93
|
+
}
|
|
94
|
+
declare const ResolverFailed_base: Schema.Class<ResolverFailed, Schema.TaggedStruct<"ResolverFailed", {
|
|
95
|
+
readonly resolver: Schema.String;
|
|
96
|
+
readonly message: Schema.String;
|
|
97
|
+
}>, import("effect/Cause").YieldableError>;
|
|
98
|
+
export declare class ResolverFailed extends ResolverFailed_base {
|
|
99
|
+
}
|
|
100
|
+
declare const ProviderConflict_base: Schema.Class<ProviderConflict, Schema.TaggedStruct<"ProviderConflict", {
|
|
101
|
+
readonly provider: Schema.String;
|
|
102
|
+
readonly code: Schema.optionalKey<Schema.String>;
|
|
103
|
+
readonly message: Schema.String;
|
|
104
|
+
}>, import("effect/Cause").YieldableError>;
|
|
105
|
+
/** The provider refused the write because a conflicting record already exists there. */
|
|
106
|
+
export declare class ProviderConflict extends ProviderConflict_base {
|
|
107
|
+
}
|
|
108
|
+
declare const Unsupported_base: Schema.Class<Unsupported, Schema.TaggedStruct<"Unsupported", {
|
|
109
|
+
readonly provider: Schema.String;
|
|
110
|
+
readonly operation: Schema.String;
|
|
111
|
+
readonly message: Schema.String;
|
|
112
|
+
}>, import("effect/Cause").YieldableError>;
|
|
113
|
+
/** The provider, or this target within it, cannot do the requested operation. */
|
|
114
|
+
export declare class Unsupported extends Unsupported_base {
|
|
115
|
+
}
|
|
116
|
+
export declare const Model: Schema.Union<readonly [typeof InvalidInput, typeof Unauthenticated, typeof Forbidden, typeof NotFound, typeof Conflict, typeof Stale, typeof Expired, typeof Busy, typeof ProviderRejected, typeof ProviderUnavailable, typeof ProviderConflict, typeof Unsupported, typeof Reconnect, typeof StorageFailed, typeof CryptoFailed, typeof ResolverFailed]>;
|
|
117
|
+
export type Model = typeof Model.Type;
|
|
118
|
+
export {};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What actually happened when an approval was applied. Partial application is a normal outcome
|
|
3
|
+
* carried here as `status: "partial"`, never an error. Cleanup plans are built only from receipts.
|
|
4
|
+
*/
|
|
5
|
+
import { Effect, Schema } from "effect";
|
|
6
|
+
import * as Errors from "./internal/error.ts";
|
|
7
|
+
export declare const ReceiptId: Schema.brand<Schema.String, "@domainkit/ReceiptId">;
|
|
8
|
+
export type ReceiptId = typeof ReceiptId.Type;
|
|
9
|
+
declare const Applied_base: Schema.Class<Applied, Schema.TaggedStruct<"Applied", {
|
|
10
|
+
readonly operationId: Schema.brand<Schema.String, "@domainkit/OperationId">;
|
|
11
|
+
/** The record created (provisioning) or deleted (cleanup). */
|
|
12
|
+
readonly providerRecordId: Schema.String;
|
|
13
|
+
}>, {}>;
|
|
14
|
+
export declare class Applied extends Applied_base {
|
|
15
|
+
}
|
|
16
|
+
declare const Skipped_base: Schema.Class<Skipped, Schema.TaggedStruct<"Skipped", {
|
|
17
|
+
readonly operationId: Schema.brand<Schema.String, "@domainkit/OperationId">;
|
|
18
|
+
readonly reason: Schema.Literals<readonly ["noop", "not-approved", "not-attempted"]>;
|
|
19
|
+
}>, {}>;
|
|
20
|
+
/**
|
|
21
|
+
* `noop`: the record already existed. `not-approved`: the approval excluded the operation.
|
|
22
|
+
* `not-attempted`: an earlier operation failed and apply stopped before reaching this one.
|
|
23
|
+
*/
|
|
24
|
+
export declare class Skipped extends Skipped_base {
|
|
25
|
+
}
|
|
26
|
+
declare const Failed_base: Schema.Class<Failed, Schema.TaggedStruct<"Failed", {
|
|
27
|
+
readonly operationId: Schema.brand<Schema.String, "@domainkit/OperationId">;
|
|
28
|
+
readonly message: Schema.String;
|
|
29
|
+
}>, {}>;
|
|
30
|
+
export declare class Failed extends Failed_base {
|
|
31
|
+
}
|
|
32
|
+
export declare const Outcome: Schema.Union<readonly [typeof Applied, typeof Skipped, typeof Failed]>;
|
|
33
|
+
export type Outcome = typeof Outcome.Type;
|
|
34
|
+
declare const Model_base: Schema.Class<Model, Schema.Struct<{
|
|
35
|
+
readonly id: Schema.brand<Schema.String, "@domainkit/ReceiptId">;
|
|
36
|
+
readonly version: Schema.Literal<"domainkit.receipt.v2">;
|
|
37
|
+
readonly kind: Schema.Literals<readonly ["provisioning", "cleanup"]>;
|
|
38
|
+
readonly planId: Schema.brand<Schema.String, "@domainkit/PlanId">;
|
|
39
|
+
readonly approvalId: Schema.brand<Schema.String, "@domainkit/ApprovalId">;
|
|
40
|
+
readonly digest: Schema.brand<Schema.String, "@domainkit/Digest">;
|
|
41
|
+
readonly provider: Schema.String;
|
|
42
|
+
readonly zone: Schema.String;
|
|
43
|
+
readonly status: Schema.Literals<readonly ["complete", "partial"]>;
|
|
44
|
+
readonly outcomes: Schema.$Array<Schema.Union<readonly [typeof Applied, typeof Skipped, typeof Failed]>>;
|
|
45
|
+
readonly appliedAt: Schema.DateTimeUtcFromString;
|
|
46
|
+
}>, {}>;
|
|
47
|
+
export declare class Model extends Model_base {
|
|
48
|
+
}
|
|
49
|
+
export type Encoded = typeof Model.Encoded;
|
|
50
|
+
export declare const decode: (input: unknown) => Effect.Effect<Model, Errors.DomainKitError>;
|
|
51
|
+
export declare const encode: (receipt: Model) => Encoded;
|
|
52
|
+
export declare const isComplete: (receipt: Model) => boolean;
|
|
53
|
+
/** Operations the receipt proves were written, with the provider record ids needed to undo them. */
|
|
54
|
+
export declare const applied: (receipt: Model) => ReadonlyArray<Applied>;
|
|
55
|
+
export {};
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public DNS observation. The default layer fans out to Cloudflare and Google DNS-over-HTTPS and
|
|
3
|
+
* keeps every answer, so verification can show "found at Cloudflare, missing at Google".
|
|
4
|
+
*/
|
|
5
|
+
import { Context, Data, Effect, Layer } from "effect";
|
|
6
|
+
import type * as DnsRecord from "./DnsRecord.ts";
|
|
7
|
+
import * as Errors from "./internal/error.ts";
|
|
8
|
+
import type { Fetch } from "./internal/http.ts";
|
|
9
|
+
export interface Answer {
|
|
10
|
+
readonly resolver: string;
|
|
11
|
+
readonly records: ReadonlyArray<DnsRecord.Observed>;
|
|
12
|
+
readonly negative: boolean;
|
|
13
|
+
readonly ttl: number | null;
|
|
14
|
+
}
|
|
15
|
+
export type Outcome = Data.TaggedEnum<{
|
|
16
|
+
Answered: {
|
|
17
|
+
readonly answer: Answer;
|
|
18
|
+
};
|
|
19
|
+
Failed: {
|
|
20
|
+
readonly resolver: string;
|
|
21
|
+
readonly message: string;
|
|
22
|
+
};
|
|
23
|
+
TimedOut: {
|
|
24
|
+
readonly resolver: string;
|
|
25
|
+
};
|
|
26
|
+
}>;
|
|
27
|
+
export declare const Outcome: {
|
|
28
|
+
readonly $is: <Tag extends "Answered" | "Failed" | "TimedOut">(tag: Tag) => (u: unknown) => u is Extract<{
|
|
29
|
+
readonly _tag: "Answered";
|
|
30
|
+
readonly answer: Answer;
|
|
31
|
+
}, {
|
|
32
|
+
readonly _tag: Tag;
|
|
33
|
+
}> | Extract<{
|
|
34
|
+
readonly _tag: "Failed";
|
|
35
|
+
readonly resolver: string;
|
|
36
|
+
readonly message: string;
|
|
37
|
+
}, {
|
|
38
|
+
readonly _tag: Tag;
|
|
39
|
+
}> | Extract<{
|
|
40
|
+
readonly _tag: "TimedOut";
|
|
41
|
+
readonly resolver: string;
|
|
42
|
+
}, {
|
|
43
|
+
readonly _tag: Tag;
|
|
44
|
+
}>;
|
|
45
|
+
readonly $match: {
|
|
46
|
+
<Cases extends { readonly [Tag in "Answered" | "Failed" | "TimedOut"]: (args: Extract<{
|
|
47
|
+
readonly _tag: "Answered";
|
|
48
|
+
readonly answer: Answer;
|
|
49
|
+
} | {
|
|
50
|
+
readonly _tag: "Failed";
|
|
51
|
+
readonly resolver: string;
|
|
52
|
+
readonly message: string;
|
|
53
|
+
} | {
|
|
54
|
+
readonly _tag: "TimedOut";
|
|
55
|
+
readonly resolver: string;
|
|
56
|
+
}, {
|
|
57
|
+
readonly _tag: Tag;
|
|
58
|
+
}>) => any; }>(cases: Cases): (value: {
|
|
59
|
+
readonly _tag: "Answered";
|
|
60
|
+
readonly answer: Answer;
|
|
61
|
+
} | {
|
|
62
|
+
readonly _tag: "Failed";
|
|
63
|
+
readonly resolver: string;
|
|
64
|
+
readonly message: string;
|
|
65
|
+
} | {
|
|
66
|
+
readonly _tag: "TimedOut";
|
|
67
|
+
readonly resolver: string;
|
|
68
|
+
}) => import("effect/Unify").Unify<ReturnType<Cases["Answered" | "Failed" | "TimedOut"]>>;
|
|
69
|
+
<Cases extends { readonly [Tag in "Answered" | "Failed" | "TimedOut"]: (args: Extract<{
|
|
70
|
+
readonly _tag: "Answered";
|
|
71
|
+
readonly answer: Answer;
|
|
72
|
+
} | {
|
|
73
|
+
readonly _tag: "Failed";
|
|
74
|
+
readonly resolver: string;
|
|
75
|
+
readonly message: string;
|
|
76
|
+
} | {
|
|
77
|
+
readonly _tag: "TimedOut";
|
|
78
|
+
readonly resolver: string;
|
|
79
|
+
}, {
|
|
80
|
+
readonly _tag: Tag;
|
|
81
|
+
}>) => any; }>(value: {
|
|
82
|
+
readonly _tag: "Answered";
|
|
83
|
+
readonly answer: Answer;
|
|
84
|
+
} | {
|
|
85
|
+
readonly _tag: "Failed";
|
|
86
|
+
readonly resolver: string;
|
|
87
|
+
readonly message: string;
|
|
88
|
+
} | {
|
|
89
|
+
readonly _tag: "TimedOut";
|
|
90
|
+
readonly resolver: string;
|
|
91
|
+
}, cases: Cases): import("effect/Unify").Unify<ReturnType<Cases["Answered" | "Failed" | "TimedOut"]>>;
|
|
92
|
+
};
|
|
93
|
+
readonly Answered: Data.TaggedEnum.ConstructorFrom<{
|
|
94
|
+
readonly _tag: "Answered";
|
|
95
|
+
readonly answer: Answer;
|
|
96
|
+
}, "_tag">;
|
|
97
|
+
readonly Failed: Data.TaggedEnum.ConstructorFrom<{
|
|
98
|
+
readonly _tag: "Failed";
|
|
99
|
+
readonly resolver: string;
|
|
100
|
+
readonly message: string;
|
|
101
|
+
}, "_tag">;
|
|
102
|
+
readonly TimedOut: Data.TaggedEnum.ConstructorFrom<{
|
|
103
|
+
readonly _tag: "TimedOut";
|
|
104
|
+
readonly resolver: string;
|
|
105
|
+
}, "_tag">;
|
|
106
|
+
};
|
|
107
|
+
export interface Interface {
|
|
108
|
+
/** Never fails: each resolver's outcome is preserved. */
|
|
109
|
+
readonly resolve: (name: string, type: DnsRecord.Type, options?: {
|
|
110
|
+
readonly signal?: AbortSignal | undefined;
|
|
111
|
+
}) => Effect.Effect<ReadonlyArray<Outcome>>;
|
|
112
|
+
}
|
|
113
|
+
declare const Service_base: Context.ServiceClass<Service, "@domainkit/Resolver", Interface>;
|
|
114
|
+
export declare class Service extends Service_base {
|
|
115
|
+
}
|
|
116
|
+
export interface Endpoint {
|
|
117
|
+
readonly name: string;
|
|
118
|
+
readonly url: string;
|
|
119
|
+
}
|
|
120
|
+
export interface Options {
|
|
121
|
+
readonly endpoints?: ReadonlyArray<Endpoint>;
|
|
122
|
+
readonly timeoutMs?: number;
|
|
123
|
+
readonly fetch?: Fetch;
|
|
124
|
+
}
|
|
125
|
+
export declare const cloudflare: Endpoint;
|
|
126
|
+
export declare const google: Endpoint;
|
|
127
|
+
export declare const defaults: {
|
|
128
|
+
readonly endpoints: readonly [Endpoint, Endpoint];
|
|
129
|
+
readonly timeoutMs: 3000;
|
|
130
|
+
};
|
|
131
|
+
export declare const make: (options?: Options) => Effect.Effect<Interface, Errors.DomainKitError>;
|
|
132
|
+
/** Cloudflare + Google DoH, 3s timeout. */
|
|
133
|
+
export declare const layer: Layer.Layer<Service>;
|
|
134
|
+
export declare const layerWith: (options: Options) => Layer.Layer<Service, Errors.DomainKitError>;
|
|
135
|
+
export {};
|