domainkit 0.4.0 → 0.6.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/dist/index.mjs CHANGED
@@ -1,30 +1,61 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
- import { $ as RemoveDomainResult$1, A as make$1, B as discovery, G as secret_exports, O as client_exports$1, Q as Method$1, Tt as version, U as connection_authorization_exports, V as make, W as selection_exports, X as diagnostic_exports, Y as manifest_exports, Z as Error, at as AuthorizationError, b as dns_data_exports, ct as assertGrant, dt as decode, et as StartResult, ft as encode, g as cloudflare_doh_exports, ht as validate, it as start, j as auth_exports, k as discovery$1, lt as authorizationError, m as google_doh_exports, mt as removeDomain$1, nt as extend, ot as Grant, p as resolver_pool_exports, pt as includeDomains, rt as removeDomain, s as verify_exports, st as Schema$1, tt as complete, ut as coversDomain, v as doh_exports, wt as provider_context_exports, x as auth_exports$1, xt as authorization_exports, z as client_exports } from "./verify-BUB4N5zs.mjs";
3
- import { B as provider_exports, C as plan_exports, N as types_exports, P as canonical_json_exports, _t as domain_name_exports, bt as invalid_input_exports, dt as zones_exports, lt as zone_discovery_exports, m as deletion_exports, mt as lifecycle_repository_exports, r as resolver_exports, rt as dns_record_exports } from "./resolver-CvK7JoJM.mjs";
2
+ import { $ as manifest_exports, A as discovery$1, H as client_exports, J as selection_exports, K as connection_authorization_exports, M as auth_exports, U as discovery, W as make, Y as secret_exports, b as dns_data_exports, et as diagnostic_exports, g as cloudflare_doh_exports, j as make$1, k as client_exports$1, m as google_doh_exports, p as resolver_pool_exports, q as session_exports, s as verify_exports, tt as version, v as doh_exports, x as auth_exports$1 } from "./verify-DAtUAEeg.mjs";
3
+ import { A as invalid_input_exports, C as project, D as domain_name_exports, S as encode, _ as ProviderTargetEvidence, a as AggregateSchema, b as authorizationError, d as provider_context_exports, f as AuthorizationError, g as ProviderTarget, h as ProviderConnection, l as authorization_exports, m as DomainAttachment, o as Error, p as ConnectionStatus, s as Service$1, t as canonical_json_exports, v as StoredConnection, w as validate, x as decode } from "./canonical-json-9x7gHIoS.mjs";
4
+ import { a as start, i as complete, n as Method$1, r as StartResult, t as Error$1 } from "./connect-ks3cpqBD.mjs";
5
+ import { C as plan_exports, N as types_exports, R as provider_exports, lt as zones_exports, m as deletion_exports, r as resolver_exports, st as zone_discovery_exports, tt as dns_record_exports } from "./resolver-DxJPsq6l.mjs";
4
6
  import { Context, Data, Effect, Layer, Schema } from "effect";
7
+ //#region src/auth/connection-lifecycle.ts
8
+ /** Attach one exact provider target to one organization domain. */
9
+ const attach = Effect.fn("ManagedDnsConnections.attach")(function* (input) {
10
+ return yield* (yield* Service$1).attach(input);
11
+ });
12
+ /** Remove one domain attachment while retaining the organization connection. */
13
+ const detach = Effect.fn("ManagedDnsConnections.detach")(function* (input) {
14
+ return yield* (yield* Service$1).detach(input);
15
+ });
16
+ /** Disconnect one organization connection, revoking the shared authorization only when final. */
17
+ function disconnect(input) {
18
+ return Effect.gen(function* () {
19
+ return yield* (yield* Service$1).disconnect({
20
+ connectionId: input.connectionId,
21
+ ownerId: input.ownerId,
22
+ revoke: input.revokeAuthorization
23
+ });
24
+ });
25
+ }
26
+ //#endregion
5
27
  //#region src/auth/connection-api.ts
6
28
  var connection_api_exports = /* @__PURE__ */ __exportAll({
7
29
  AuthorizationError: () => AuthorizationError,
8
- Error: () => Error,
9
- Grant: () => Grant,
30
+ ConnectionStatus: () => ConnectionStatus,
31
+ DomainAttachment: () => DomainAttachment,
32
+ Error: () => Error$1,
10
33
  Method: () => Method$1,
11
- RemoveDomainResult: () => RemoveDomainResult$1,
12
- Schema: () => Schema$1,
34
+ ProviderConnection: () => ProviderConnection,
35
+ ProviderTarget: () => ProviderTarget,
36
+ ProviderTargetEvidence: () => ProviderTargetEvidence,
13
37
  StartResult: () => StartResult,
14
- assertGrant: () => assertGrant,
38
+ attach: () => attach,
15
39
  authorizationError: () => authorizationError,
16
40
  complete: () => complete,
17
- coversDomain: () => coversDomain,
18
41
  decode: () => decode,
42
+ detach: () => detach,
43
+ disconnect: () => disconnect,
19
44
  encode: () => encode,
20
- extend: () => extend,
21
- includeDomains: () => includeDomains,
22
- removeDomain: () => removeDomain,
23
- removeDomainFromGrant: () => removeDomain$1,
45
+ project: () => project,
24
46
  start: () => start,
25
47
  validate: () => validate
26
48
  });
27
49
  //#endregion
50
+ //#region src/auth/lifecycle-api.ts
51
+ var lifecycle_api_exports = /* @__PURE__ */ __exportAll({
52
+ AggregateSchema: () => AggregateSchema,
53
+ Authorization: () => authorization_exports,
54
+ Error: () => Error,
55
+ Service: () => Service$1,
56
+ StoredConnection: () => StoredConnection
57
+ });
58
+ //#endregion
28
59
  //#region src/providers/cloudflare/index.ts
29
60
  var cloudflare_exports = /* @__PURE__ */ __exportAll({
30
61
  Auth: () => auth_exports,
@@ -52,8 +83,10 @@ var transport_exports = /* @__PURE__ */ __exportAll({
52
83
  Connected: () => Connected,
53
84
  ConnectionResult: () => ConnectionResult,
54
85
  ConnectionSnapshot: () => ConnectionSnapshot,
86
+ DetachResult: () => DetachResult,
55
87
  Disconnected: () => Disconnected,
56
88
  DnsRecord: () => DnsRecord,
89
+ DomainAttachment: () => DomainAttachment,
57
90
  Failure: () => Failure,
58
91
  Method: () => Method,
59
92
  Observation: () => Observation,
@@ -61,9 +94,11 @@ var transport_exports = /* @__PURE__ */ __exportAll({
61
94
  OperationResult: () => OperationResult,
62
95
  PlanOperation: () => PlanOperation,
63
96
  Provider: () => Provider,
97
+ ProviderConnection: () => ProviderConnection,
98
+ ProviderTarget: () => ProviderTarget,
99
+ ProviderTargetEvidence: () => ProviderTargetEvidence,
64
100
  ProvisioningPlan: () => ProvisioningPlan,
65
101
  Redirect: () => Redirect,
66
- RemoveDomainResult: () => RemoveDomainResult,
67
102
  ReusableConnection: () => ReusableConnection,
68
103
  Service: () => Service,
69
104
  Unsupported: () => Unsupported,
@@ -91,6 +126,7 @@ const AuthenticationParameter = Schema.Struct({
91
126
  required: Schema.optionalKey(Schema.Boolean)
92
127
  });
93
128
  const AuthenticationMethod = Schema.TaggedUnion({
129
+ Integration: { label: Schema.String },
94
130
  OAuth: { label: Schema.String },
95
131
  Token: {
96
132
  label: Schema.String,
@@ -105,18 +141,18 @@ const Provider = Schema.Struct({
105
141
  name: Schema.String
106
142
  });
107
143
  const Connected = Schema.TaggedStruct("Connected", {
108
- connectionId: Schema.String,
109
- domain: Schema.String,
144
+ attachment: DomainAttachment,
145
+ connection: ProviderConnection,
110
146
  provider: Provider
111
147
  });
112
148
  const ReusableConnection = Schema.Struct({
113
- connectionId: Schema.String,
114
- label: Schema.String
149
+ connection: ProviderConnection,
150
+ targets: Schema.Array(ProviderTarget)
115
151
  });
116
152
  const Disconnected = Schema.TaggedStruct("Disconnected", {
117
153
  domain: Schema.String,
118
154
  provider: Provider,
119
- reusableConnection: Schema.optionalKey(ReusableConnection)
155
+ reusableConnections: Schema.Array(ReusableConnection)
120
156
  });
121
157
  const Unsupported = Schema.TaggedStruct("Unsupported", { domain: Schema.String });
122
158
  const ConnectionSnapshot = Schema.Union([
@@ -126,10 +162,10 @@ const ConnectionSnapshot = Schema.Union([
126
162
  ]).pipe(Schema.toTaggedUnion("_tag"));
127
163
  const Redirect = Schema.TaggedStruct("Redirect", { authorizationUrl: Schema.String });
128
164
  const ConnectionResult = Schema.Union([Connected, Redirect]).pipe(Schema.toTaggedUnion("_tag"));
129
- const RemoveDomainResult = Schema.TaggedStruct("Removed", {
130
- connectionId: Schema.String,
131
- domain: Schema.String,
132
- remainingDomainCount: Schema.Int
165
+ const DetachResult = Schema.TaggedStruct("Detached", {
166
+ attachment: DomainAttachment,
167
+ connection: ProviderConnection,
168
+ remainingAttachments: Schema.Int
133
169
  });
134
170
  /** A presentation projection of a DNS requirement. */
135
171
  const DnsRecord = Schema.Struct({
@@ -284,10 +320,10 @@ const fromAsync = (transport, options = {}) => {
284
320
  plan: (input) => attempt("cleanup.plan", () => transport.cleanup.plan(input))
285
321
  },
286
322
  connection: {
323
+ attach: (input) => attempt("connection.attach", () => transport.connection.attach(input)),
287
324
  connect: (input) => attempt("connection.connect", () => transport.connection.connect(input)),
288
325
  inspect: (input) => attempt("connection.inspect", () => transport.connection.inspect(input)),
289
- removeDomain: (input) => attempt("connection.removeDomain", () => transport.connection.removeDomain(input)),
290
- reuse: (input) => attempt("connection.reuse", () => transport.connection.reuse(input))
326
+ detach: (input) => attempt("connection.detach", () => transport.connection.detach(input))
291
327
  },
292
328
  provisioning: {
293
329
  apply: (input) => attempt("provisioning.apply", () => transport.provisioning.apply(input)),
@@ -304,10 +340,10 @@ const toAsync = (transport) => ({
304
340
  plan: (input) => Effect.runPromise(transport.cleanup.plan(input))
305
341
  },
306
342
  connection: {
343
+ attach: (input) => Effect.runPromise(transport.connection.attach(input)),
307
344
  connect: (input) => Effect.runPromise(transport.connection.connect(input)),
308
345
  inspect: (input) => Effect.runPromise(transport.connection.inspect(input)),
309
- removeDomain: (input) => Effect.runPromise(transport.connection.removeDomain(input)),
310
- reuse: (input) => Effect.runPromise(transport.connection.reuse(input))
346
+ detach: (input) => Effect.runPromise(transport.connection.detach(input))
311
347
  },
312
348
  provisioning: {
313
349
  apply: (input) => Effect.runPromise(transport.provisioning.apply(input)),
@@ -320,6 +356,6 @@ const toAsync = (transport) => ({
320
356
  /** The current package version from the package manifest. */
321
357
  const VERSION = version;
322
358
  //#endregion
323
- export { lifecycle_repository_exports as AuthorizationLifecycle, cloudflare_exports as Cloudflare, cloudflare_doh_exports as CloudflareDnsOverHttps, connection_api_exports as Connection, connection_authorization_exports as ConnectionAuthorization, deletion_exports as Deletion, diagnostic_exports as Diagnostic, canonical_json_exports as Digest, dns_data_exports as DnsData, doh_exports as DnsOverHttps, types_exports as DnsPlan, provider_exports as DnsProvider, dns_record_exports as DnsRecord, resolver_exports as DnsResolver, resolver_pool_exports as DnsResolverPool, domain_name_exports as DomainName, google_doh_exports as GoogleDnsOverHttps, invalid_input_exports as InvalidInput, manifest_exports as ProviderAuth, authorization_exports as ProviderAuthorization, provider_context_exports as ProviderContext, selection_exports as ProviderDiscovery, plan_exports as Provisioning, secret_exports as Secret, transport_exports as Transport, VERSION, vercel_exports as Vercel, verify_exports as Verification, zone_discovery_exports as ZoneDiscovery, zones_exports as Zones };
359
+ export { cloudflare_exports as Cloudflare, cloudflare_doh_exports as CloudflareDnsOverHttps, connection_api_exports as Connection, connection_authorization_exports as ConnectionAuthorization, deletion_exports as Deletion, diagnostic_exports as Diagnostic, canonical_json_exports as Digest, dns_data_exports as DnsData, doh_exports as DnsOverHttps, types_exports as DnsPlan, provider_exports as DnsProvider, dns_record_exports as DnsRecord, resolver_exports as DnsResolver, resolver_pool_exports as DnsResolverPool, domain_name_exports as DomainName, google_doh_exports as GoogleDnsOverHttps, invalid_input_exports as InvalidInput, lifecycle_api_exports as ManagedDnsConnections, manifest_exports as ProviderAuth, provider_context_exports as ProviderContext, selection_exports as ProviderDiscovery, session_exports as ProviderSession, plan_exports as Provisioning, secret_exports as Secret, transport_exports as Transport, VERSION, vercel_exports as Vercel, verify_exports as Verification, zone_discovery_exports as ZoneDiscovery, zones_exports as Zones };
324
360
 
325
361
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["packageJson.version"],"sources":["../src/auth/connection-api.ts","../src/providers/cloudflare/index.ts","../src/providers/vercel/index.ts","../src/transport.ts","../src/index.ts"],"sourcesContent":["export {\n assertGrant,\n authorizationError,\n AuthorizationError,\n decode,\n encode,\n coversDomain,\n Grant,\n includeDomains,\n removeDomain as removeDomainFromGrant,\n Schema,\n validate,\n} from \"./connection.ts\";\nexport type { Connection, StoredCredential } from \"./connection.ts\";\nexport {\n complete,\n Error,\n extend,\n Method,\n removeDomain,\n RemoveDomainResult,\n start,\n StartResult,\n} from \"./connect.ts\";\nexport type {\n Authentication,\n AuthenticationFailure,\n BaseInput,\n CompleteInput,\n Continuation,\n ContinuationStore,\n Failure,\n InteractiveFlow,\n InteractiveStart,\n ExtendInput,\n Method as ConnectionMethod,\n Requirements,\n RemoveDomainInput,\n RemoveDomainResult as ConnectionRemoveDomainResult,\n StartResult as ConnectionStartResult,\n} from \"./connect.ts\";\n","export * as Auth from \"./auth.ts\";\nexport * as Client from \"./client.ts\";\n\nexport { discovery, make } from \"./client.ts\";\nexport type { Account, Fetch, Interface, ListZonesInput, Options, Zone } from \"./client.ts\";\n","export * as Auth from \"./auth.ts\";\nexport * as Client from \"./client.ts\";\n\nexport { discovery, make } from \"./client.ts\";\nexport type {\n Account,\n AccountContext,\n Fetch,\n Interface,\n ListZonesInput,\n Options,\n Zone,\n} from \"./client.ts\";\n","import { Context, Data, Effect, Layer, Schema } from \"effect\";\n\nimport type * as DomainDnsRecord from \"./domain/dns-record.ts\";\n\n/** A user-presentable failure at the application transport boundary. */\nexport class Failure extends Schema.TaggedError<Failure>()(\"Failure\", {\n message: Schema.String,\n operation: Schema.String,\n retry: Schema.Literals([\"never\", \"after-user-action\", \"safe\", \"unknown\"]),\n}) {}\n\nexport const AuthenticationParameter = Schema.Struct({\n description: Schema.optionalKey(Schema.String),\n key: Schema.String,\n label: Schema.String,\n placeholder: Schema.optionalKey(Schema.String),\n required: Schema.optionalKey(Schema.Boolean),\n});\nexport type AuthenticationParameter = typeof AuthenticationParameter.Type;\n\nexport const AuthenticationMethod = Schema.TaggedUnion({\n OAuth: { label: Schema.String },\n Token: {\n label: Schema.String,\n parameters: Schema.optionalKey(Schema.Array(AuthenticationParameter)),\n placeholder: Schema.optionalKey(Schema.String),\n },\n});\nexport type AuthenticationMethod = typeof AuthenticationMethod.Type;\n\n/** The authentication choice supplied to a connection request. */\nexport type Method = Data.TaggedEnum<{\n OAuth: {};\n Token: {\n readonly parameters?: Readonly<Record<string, string>>;\n readonly token: string;\n };\n}>;\nexport const Method = Data.taggedEnum<Method>();\n\nexport const Provider = Schema.Struct({\n authentication: Schema.Array(AuthenticationMethod),\n id: Schema.String,\n name: Schema.String,\n});\nexport type Provider = typeof Provider.Type;\n\nexport const Connected = Schema.TaggedStruct(\"Connected\", {\n connectionId: Schema.String,\n domain: Schema.String,\n provider: Provider,\n});\nexport type Connected = typeof Connected.Type;\n\nexport const ReusableConnection = Schema.Struct({\n connectionId: Schema.String,\n label: Schema.String,\n});\nexport type ReusableConnection = typeof ReusableConnection.Type;\n\nexport const Disconnected = Schema.TaggedStruct(\"Disconnected\", {\n domain: Schema.String,\n provider: Provider,\n reusableConnection: Schema.optionalKey(ReusableConnection),\n});\nexport type Disconnected = typeof Disconnected.Type;\n\nexport const Unsupported = Schema.TaggedStruct(\"Unsupported\", { domain: Schema.String });\nexport type Unsupported = typeof Unsupported.Type;\n\nexport const ConnectionSnapshot = Schema.Union([Connected, Disconnected, Unsupported]).pipe(\n Schema.toTaggedUnion(\"_tag\"),\n);\nexport type ConnectionSnapshot = typeof ConnectionSnapshot.Type;\n\nexport const Redirect = Schema.TaggedStruct(\"Redirect\", { authorizationUrl: Schema.String });\nexport type Redirect = typeof Redirect.Type;\n\nexport const ConnectionResult = Schema.Union([Connected, Redirect]).pipe(\n Schema.toTaggedUnion(\"_tag\"),\n);\nexport type ConnectionResult = typeof ConnectionResult.Type;\n\nexport const RemoveDomainResult = Schema.TaggedStruct(\"Removed\", {\n connectionId: Schema.String,\n domain: Schema.String,\n remainingDomainCount: Schema.Int,\n});\nexport type RemoveDomainResult = typeof RemoveDomainResult.Type;\n\n/** A presentation projection of a DNS requirement. */\nexport const DnsRecord = Schema.Struct({\n id: Schema.String,\n name: Schema.String,\n priority: Schema.optionalKey(Schema.Int),\n type: Schema.String,\n value: Schema.String,\n});\nexport type DnsRecord = typeof DnsRecord.Type;\n\n/** Projects DomainKit's operational record into its application transport representation. */\nexport const fromDnsRecord = (id: string, record: DomainDnsRecord.DnsRecord): DnsRecord => {\n switch (record._tag) {\n case \"A\":\n case \"AAAA\":\n return { id, name: record.name, type: record._tag, value: record.address };\n case \"CNAME\":\n case \"NS\":\n return { id, name: record.name, type: record._tag, value: record.target };\n case \"TXT\":\n return { id, name: record.name, type: record._tag, value: record.value };\n case \"MX\":\n return {\n id,\n name: record.name,\n priority: record.priority,\n type: record._tag,\n value: record.exchange,\n };\n case \"CAA\":\n return {\n id,\n name: record.name,\n type: record._tag,\n value: `${record.flags} ${record.tag} ${record.value}`,\n };\n case \"SRV\":\n return {\n id,\n name: record.name,\n priority: record.priority,\n type: record._tag,\n value: `${record.weight} ${record.port} ${record.target}`,\n };\n }\n};\n\nexport const PlanOperation = Schema.TaggedUnion({\n Conflict: { id: Schema.String, reason: Schema.String, record: DnsRecord },\n Create: { id: Schema.String, record: DnsRecord },\n Noop: { id: Schema.String, record: DnsRecord },\n});\nexport type PlanOperation = typeof PlanOperation.Type;\n\nexport const ProvisioningPlan = Schema.TaggedStruct(\"Plan\", {\n digest: Schema.String,\n expiresAt: Schema.String,\n operations: Schema.Array(PlanOperation),\n});\nexport type ProvisioningPlan = typeof ProvisioningPlan.Type;\n\nexport const OperationResult = Schema.TaggedUnion({\n Applied: { operationId: Schema.String },\n Failed: { message: Schema.String, operationId: Schema.String },\n Unchanged: { operationId: Schema.String },\n});\nexport type OperationResult = typeof OperationResult.Type;\n\nconst ApplyOutcomeFields = {\n operationId: Schema.String,\n receiptId: Schema.String,\n results: Schema.Array(OperationResult),\n};\nexport const ApplyResult = Schema.TaggedUnion({\n Applied: ApplyOutcomeFields,\n Partial: ApplyOutcomeFields,\n Stale: { message: Schema.String },\n});\nexport type ApplyResult = typeof ApplyResult.Type;\n\nexport const ObservationEvidence = Schema.TaggedUnion({\n Found: { recordId: Schema.String },\n Mismatch: { message: Schema.String, recordId: Schema.String },\n Missing: { recordId: Schema.String },\n Unavailable: { message: Schema.String, recordId: Schema.String },\n});\nexport type ObservationEvidence = typeof ObservationEvidence.Type;\n\nexport const Observation = Schema.TaggedStruct(\"Observation\", {\n provider: Schema.Array(ObservationEvidence),\n publicDns: Schema.Array(ObservationEvidence),\n});\nexport type Observation = typeof Observation.Type;\n\nexport const CleanupOperation = Schema.TaggedUnion({\n AlreadyAbsent: { id: Schema.String, record: DnsRecord },\n Blocked: { id: Schema.String, reason: Schema.String, record: DnsRecord },\n Delete: { id: Schema.String, record: DnsRecord },\n});\nexport type CleanupOperation = typeof CleanupOperation.Type;\n\nexport const CleanupPlan = Schema.TaggedStruct(\"CleanupPlan\", {\n digest: Schema.String,\n expiresAt: Schema.String,\n operations: Schema.Array(CleanupOperation),\n});\nexport type CleanupPlan = typeof CleanupPlan.Type;\n\nconst CleanupOutcomeFields = {\n operationId: Schema.String,\n results: Schema.Array(OperationResult),\n};\nexport const CleanupResult = Schema.TaggedUnion({\n Cleaned: CleanupOutcomeFields,\n Partial: CleanupOutcomeFields,\n Stale: { message: Schema.String },\n});\nexport type CleanupResult = typeof CleanupResult.Type;\n\nexport interface ConnectInput {\n readonly domain: string;\n readonly method: Method;\n readonly providerId: string;\n}\n\nexport interface InspectInput {\n readonly domain: string;\n}\n\nexport interface ReuseInput {\n readonly connectionId: string;\n readonly domain: string;\n}\n\nexport interface RemoveDomainInput extends ReuseInput {\n readonly preserveDns: true;\n}\n\nexport interface ProvisioningPlanInput extends ReuseInput {\n readonly records: ReadonlyArray<DnsRecord>;\n}\n\nexport interface ProvisioningApplyInput extends ReuseInput {\n readonly planDigest: string;\n}\n\nexport interface ObserveInput {\n readonly connectionId?: string;\n readonly domain: string;\n readonly records: ReadonlyArray<DnsRecord>;\n readonly sources: {\n readonly provider: boolean;\n readonly publicDns: boolean;\n };\n}\n\nexport interface CleanupPlanInput extends ReuseInput {\n readonly receiptId: string;\n}\n\nexport interface CleanupApplyInput extends CleanupPlanInput {\n readonly planDigest: string;\n}\n\n/** Application-facing DNS connection and provisioning capability. */\nexport interface Interface {\n readonly cleanup: {\n readonly apply: (input: CleanupApplyInput) => Effect.Effect<CleanupResult, Failure>;\n readonly plan: (input: CleanupPlanInput) => Effect.Effect<CleanupPlan, Failure>;\n };\n readonly connection: {\n readonly connect: (input: ConnectInput) => Effect.Effect<ConnectionResult, Failure>;\n readonly inspect: (input: InspectInput) => Effect.Effect<ConnectionSnapshot, Failure>;\n readonly removeDomain: (input: RemoveDomainInput) => Effect.Effect<RemoveDomainResult, Failure>;\n readonly reuse: (input: ReuseInput) => Effect.Effect<Connected, Failure>;\n };\n readonly provisioning: {\n readonly apply: (input: ProvisioningApplyInput) => Effect.Effect<ApplyResult, Failure>;\n readonly plan: (input: ProvisioningPlanInput) => Effect.Effect<ProvisioningPlan, Failure>;\n };\n readonly verification: {\n readonly observe: (input: ObserveInput) => Effect.Effect<Observation, Failure>;\n };\n}\n\nexport class Service extends Context.Service<Service, Interface>()(\"@domainkit/Transport\") {}\n\n/** Promise-shaped host seam for foreign runtimes and framework actions. */\nexport interface AsyncInterface {\n readonly cleanup: {\n readonly apply: (input: CleanupApplyInput) => Promise<CleanupResult>;\n readonly plan: (input: CleanupPlanInput) => Promise<CleanupPlan>;\n };\n readonly connection: {\n readonly connect: (input: ConnectInput) => Promise<ConnectionResult>;\n readonly inspect: (input: InspectInput) => Promise<ConnectionSnapshot>;\n readonly removeDomain: (input: RemoveDomainInput) => Promise<RemoveDomainResult>;\n readonly reuse: (input: ReuseInput) => Promise<Connected>;\n };\n readonly provisioning: {\n readonly apply: (input: ProvisioningApplyInput) => Promise<ApplyResult>;\n readonly plan: (input: ProvisioningPlanInput) => Promise<ProvisioningPlan>;\n };\n readonly verification: {\n readonly observe: (input: ObserveInput) => Promise<Observation>;\n };\n}\n\nexport interface AsyncOptions {\n readonly onError?: (operation: string, cause: unknown) => Failure;\n}\n\n/** Converts a Promise-shaped host implementation into the canonical Effect service. */\nexport const fromAsync = (transport: AsyncInterface, options: AsyncOptions = {}): Interface => {\n const attempt = <A>(operation: string, evaluate: () => Promise<A>) =>\n Effect.tryPromise({\n try: evaluate,\n catch: (cause) =>\n options.onError?.(operation, cause) ??\n (cause instanceof Failure\n ? cause\n : new Failure({\n message: cause instanceof globalThis.Error ? cause.message : String(cause),\n operation,\n retry: \"unknown\",\n })),\n });\n return Service.of({\n cleanup: {\n apply: (input) => attempt(\"cleanup.apply\", () => transport.cleanup.apply(input)),\n plan: (input) => attempt(\"cleanup.plan\", () => transport.cleanup.plan(input)),\n },\n connection: {\n connect: (input) => attempt(\"connection.connect\", () => transport.connection.connect(input)),\n inspect: (input) => attempt(\"connection.inspect\", () => transport.connection.inspect(input)),\n removeDomain: (input) =>\n attempt(\"connection.removeDomain\", () => transport.connection.removeDomain(input)),\n reuse: (input) => attempt(\"connection.reuse\", () => transport.connection.reuse(input)),\n },\n provisioning: {\n apply: (input) => attempt(\"provisioning.apply\", () => transport.provisioning.apply(input)),\n plan: (input) => attempt(\"provisioning.plan\", () => transport.provisioning.plan(input)),\n },\n verification: {\n observe: (input) =>\n attempt(\"verification.observe\", () => transport.verification.observe(input)),\n },\n });\n};\n\nexport const layerFromAsync = (\n transport: AsyncInterface,\n options?: AsyncOptions,\n): Layer.Layer<Service> => Layer.succeed(Service, fromAsync(transport, options));\n\n/** Converts an environment-free Effect service into its Promise-shaped host seam. */\nexport const toAsync = (transport: Interface): AsyncInterface => ({\n cleanup: {\n apply: (input) => Effect.runPromise(transport.cleanup.apply(input)),\n plan: (input) => Effect.runPromise(transport.cleanup.plan(input)),\n },\n connection: {\n connect: (input) => Effect.runPromise(transport.connection.connect(input)),\n inspect: (input) => Effect.runPromise(transport.connection.inspect(input)),\n removeDomain: (input) => Effect.runPromise(transport.connection.removeDomain(input)),\n reuse: (input) => Effect.runPromise(transport.connection.reuse(input)),\n },\n provisioning: {\n apply: (input) => Effect.runPromise(transport.provisioning.apply(input)),\n plan: (input) => Effect.runPromise(transport.provisioning.plan(input)),\n },\n verification: {\n observe: (input) => Effect.runPromise(transport.verification.observe(input)),\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 \"./auth/connection-api.ts\";\nexport * as AuthorizationLifecycle from \"./auth/lifecycle-repository.ts\";\nexport * as Diagnostic from \"./auth/diagnostic.ts\";\nexport * as ProviderAuth from \"./auth/manifest.ts\";\nexport * as ProviderAuthorization from \"./auth/authorization.ts\";\nexport * as ProviderContext from \"./auth/provider-context.ts\";\nexport * as Secret from \"./auth/secret.ts\";\nexport * as ProviderDiscovery from \"./discovery/selection.ts\";\nexport * as ZoneDiscovery from \"./discovery/zone-discovery.ts\";\nexport * as Zones from \"./discovery/zones.ts\";\nexport * as DnsRecord from \"./domain/dns-record.ts\";\nexport * as DomainName from \"./domain/domain-name.ts\";\nexport * as InvalidInput from \"./invalid-input.ts\";\nexport * as DnsProvider from \"./provider/provider.ts\";\nexport * as ConnectionAuthorization from \"./plan/connection-authorization.ts\";\nexport * as Digest from \"./plan/canonical-json.ts\";\nexport * as Deletion from \"./plan/deletion.ts\";\nexport * as Provisioning from \"./plan/plan.ts\";\nexport * as DnsPlan from \"./plan/types.ts\";\nexport * as Cloudflare from \"./providers/cloudflare/index.ts\";\nexport * as Vercel from \"./providers/vercel/index.ts\";\nexport * as Transport from \"./transport.ts\";\nexport * as CloudflareDnsOverHttps from \"./verification/cloudflare-doh.ts\";\nexport * as DnsData from \"./verification/dns-data.ts\";\nexport * as DnsOverHttps from \"./verification/doh.ts\";\nexport * as GoogleDnsOverHttps from \"./verification/google-doh.ts\";\nexport * as DnsResolverPool from \"./verification/resolver-pool.ts\";\nexport * as DnsResolver from \"./verification/resolver.ts\";\nexport * as Verification from \"./verification/verify.ts\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["Lifecycle.Service","Connection.DomainAttachment","Connection.ProviderConnection","Connection.ProviderTarget","packageJson.version"],"sources":["../src/auth/connection-lifecycle.ts","../src/auth/connection-api.ts","../src/auth/lifecycle-api.ts","../src/providers/cloudflare/index.ts","../src/providers/vercel/index.ts","../src/transport.ts","../src/index.ts"],"sourcesContent":["import { Effect } from \"effect\";\n\nimport * as Connection from \"./connection.ts\";\nimport * as Lifecycle from \"./lifecycle-repository.ts\";\nimport * as ProviderAuthorization from \"./authorization.ts\";\n\n/** Attach one exact provider target to one organization domain. */\nexport const attach = Effect.fn(\"ManagedDnsConnections.attach\")(function* (input: {\n readonly attachment: Connection.DomainAttachment;\n readonly connectionId: string;\n readonly ownerId: string;\n}) {\n const service = yield* Lifecycle.Service;\n return yield* service.attach(input);\n});\n\n/** Remove one domain attachment while retaining the organization connection. */\nexport const detach = Effect.fn(\"ManagedDnsConnections.detach\")(function* (input: {\n readonly attachmentId: string;\n readonly ownerId: string;\n}) {\n const service = yield* Lifecycle.Service;\n return yield* service.detach(input);\n});\n\n/** Disconnect one organization connection, revoking the shared authorization only when final. */\nexport function disconnect<E>(input: {\n readonly connectionId: string;\n readonly ownerId: string;\n readonly revokeAuthorization: (\n authorization: ProviderAuthorization.ProviderAuthorization,\n ) => Effect.Effect<void, E>;\n}): Effect.Effect<Lifecycle.DisconnectResult, Lifecycle.Error | E, Lifecycle.Service> {\n return Effect.gen(function* () {\n const service = yield* Lifecycle.Service;\n return yield* service.disconnect({\n connectionId: input.connectionId,\n ownerId: input.ownerId,\n revoke: input.revokeAuthorization,\n });\n });\n}\n","export {\n AuthorizationError,\n authorizationError,\n ConnectionStatus,\n decode,\n DomainAttachment,\n encode,\n ProviderConnection,\n ProviderTarget,\n ProviderTargetEvidence,\n project,\n validate,\n} from \"./connection.ts\";\nexport { attach, detach, disconnect } from \"./connection-lifecycle.ts\";\nexport type { AttachmentResult, DetachResult, DisconnectResult } from \"./lifecycle-repository.ts\";\nexport { complete, Error, Method, start, StartResult } from \"./connect.ts\";\nexport type {\n Authentication,\n AuthenticationFailure,\n BaseInput,\n CompleteInput,\n Continuation,\n ContinuationStore,\n Failure,\n InteractiveFlow,\n InteractiveStart,\n Method as ConnectionMethod,\n StartResult as ConnectionStartResult,\n} from \"./connect.ts\";\n","/** Public surface for the cohesive managed-DNS persistence capability. */\nexport { AggregateSchema, Error, Service } from \"./lifecycle-repository.ts\";\nexport * as Authorization from \"./authorization.ts\";\nexport { StoredConnection } from \"./connection.ts\";\nexport type { StoredCredential } from \"./connection.ts\";\nexport type {\n Aggregate,\n AttachmentResult,\n ConnectInput,\n DetachResult,\n DisconnectResult,\n Interface,\n} from \"./lifecycle-repository.ts\";\n","export * as Auth from \"./auth.ts\";\nexport * as Client from \"./client.ts\";\n\nexport { discovery, make } from \"./client.ts\";\nexport type { Account, Fetch, Interface, ListZonesInput, Options, Zone } from \"./client.ts\";\n","export * as Auth from \"./auth.ts\";\nexport * as Client from \"./client.ts\";\n\nexport { discovery, make } from \"./client.ts\";\nexport type {\n Account,\n AccountContext,\n Fetch,\n Interface,\n ListZonesInput,\n Options,\n Zone,\n} from \"./client.ts\";\n","import { Context, Data, Effect, Layer, Schema } from \"effect\";\n\nimport * as Connection from \"./auth/connection.ts\";\nimport type * as DomainDnsRecord from \"./domain/dns-record.ts\";\n\nexport {\n DomainAttachment,\n ProviderConnection,\n ProviderTarget,\n ProviderTargetEvidence,\n} from \"./auth/connection.ts\";\n\n/** A user-presentable failure at the application transport boundary. */\nexport class Failure extends Schema.TaggedError<Failure>()(\"Failure\", {\n message: Schema.String,\n operation: Schema.String,\n retry: Schema.Literals([\"never\", \"after-user-action\", \"safe\", \"unknown\"]),\n}) {}\n\nexport const AuthenticationParameter = Schema.Struct({\n description: Schema.optionalKey(Schema.String),\n key: Schema.String,\n label: Schema.String,\n placeholder: Schema.optionalKey(Schema.String),\n required: Schema.optionalKey(Schema.Boolean),\n});\nexport type AuthenticationParameter = typeof AuthenticationParameter.Type;\n\nexport const AuthenticationMethod = Schema.TaggedUnion({\n Integration: { label: Schema.String },\n OAuth: { label: Schema.String },\n Token: {\n label: Schema.String,\n parameters: Schema.optionalKey(Schema.Array(AuthenticationParameter)),\n placeholder: Schema.optionalKey(Schema.String),\n },\n});\nexport type AuthenticationMethod = typeof AuthenticationMethod.Type;\n\n/** The authentication choice supplied to a connection request. */\nexport type Method = Data.TaggedEnum<{\n Integration: {};\n OAuth: {};\n Token: {\n readonly parameters?: Readonly<Record<string, string>>;\n readonly token: string;\n };\n}>;\nexport const Method = Data.taggedEnum<Method>();\n\nexport const Provider = Schema.Struct({\n authentication: Schema.Array(AuthenticationMethod),\n id: Schema.String,\n name: Schema.String,\n});\nexport type Provider = typeof Provider.Type;\n\nexport const Connected = Schema.TaggedStruct(\"Connected\", {\n attachment: Connection.DomainAttachment,\n connection: Connection.ProviderConnection,\n provider: Provider,\n});\nexport type Connected = typeof Connected.Type;\n\nexport const ReusableConnection = Schema.Struct({\n connection: Connection.ProviderConnection,\n targets: Schema.Array(Connection.ProviderTarget),\n});\nexport type ReusableConnection = typeof ReusableConnection.Type;\n\nexport const Disconnected = Schema.TaggedStruct(\"Disconnected\", {\n domain: Schema.String,\n provider: Provider,\n reusableConnections: Schema.Array(ReusableConnection),\n});\nexport type Disconnected = typeof Disconnected.Type;\n\nexport const Unsupported = Schema.TaggedStruct(\"Unsupported\", { domain: Schema.String });\nexport type Unsupported = typeof Unsupported.Type;\n\nexport const ConnectionSnapshot = Schema.Union([Connected, Disconnected, Unsupported]).pipe(\n Schema.toTaggedUnion(\"_tag\"),\n);\nexport type ConnectionSnapshot = typeof ConnectionSnapshot.Type;\n\nexport const Redirect = Schema.TaggedStruct(\"Redirect\", { authorizationUrl: Schema.String });\nexport type Redirect = typeof Redirect.Type;\n\nexport const ConnectionResult = Schema.Union([Connected, Redirect]).pipe(\n Schema.toTaggedUnion(\"_tag\"),\n);\nexport type ConnectionResult = typeof ConnectionResult.Type;\n\nexport const DetachResult = Schema.TaggedStruct(\"Detached\", {\n attachment: Connection.DomainAttachment,\n connection: Connection.ProviderConnection,\n remainingAttachments: Schema.Int,\n});\nexport type DetachResult = typeof DetachResult.Type;\n\n/** A presentation projection of a DNS requirement. */\nexport const DnsRecord = Schema.Struct({\n id: Schema.String,\n name: Schema.String,\n priority: Schema.optionalKey(Schema.Int),\n type: Schema.String,\n value: Schema.String,\n});\nexport type DnsRecord = typeof DnsRecord.Type;\n\n/** Projects DomainKit's operational record into its application transport representation. */\nexport const fromDnsRecord = (id: string, record: DomainDnsRecord.DnsRecord): DnsRecord => {\n switch (record._tag) {\n case \"A\":\n case \"AAAA\":\n return { id, name: record.name, type: record._tag, value: record.address };\n case \"CNAME\":\n case \"NS\":\n return { id, name: record.name, type: record._tag, value: record.target };\n case \"TXT\":\n return { id, name: record.name, type: record._tag, value: record.value };\n case \"MX\":\n return {\n id,\n name: record.name,\n priority: record.priority,\n type: record._tag,\n value: record.exchange,\n };\n case \"CAA\":\n return {\n id,\n name: record.name,\n type: record._tag,\n value: `${record.flags} ${record.tag} ${record.value}`,\n };\n case \"SRV\":\n return {\n id,\n name: record.name,\n priority: record.priority,\n type: record._tag,\n value: `${record.weight} ${record.port} ${record.target}`,\n };\n }\n};\n\nexport const PlanOperation = Schema.TaggedUnion({\n Conflict: { id: Schema.String, reason: Schema.String, record: DnsRecord },\n Create: { id: Schema.String, record: DnsRecord },\n Noop: { id: Schema.String, record: DnsRecord },\n});\nexport type PlanOperation = typeof PlanOperation.Type;\n\nexport const ProvisioningPlan = Schema.TaggedStruct(\"Plan\", {\n digest: Schema.String,\n expiresAt: Schema.String,\n operations: Schema.Array(PlanOperation),\n});\nexport type ProvisioningPlan = typeof ProvisioningPlan.Type;\n\nexport const OperationResult = Schema.TaggedUnion({\n Applied: { operationId: Schema.String },\n Failed: { message: Schema.String, operationId: Schema.String },\n Unchanged: { operationId: Schema.String },\n});\nexport type OperationResult = typeof OperationResult.Type;\n\nconst ApplyOutcomeFields = {\n operationId: Schema.String,\n receiptId: Schema.String,\n results: Schema.Array(OperationResult),\n};\nexport const ApplyResult = Schema.TaggedUnion({\n Applied: ApplyOutcomeFields,\n Partial: ApplyOutcomeFields,\n Stale: { message: Schema.String },\n});\nexport type ApplyResult = typeof ApplyResult.Type;\n\nexport const ObservationEvidence = Schema.TaggedUnion({\n Found: { recordId: Schema.String },\n Mismatch: { message: Schema.String, recordId: Schema.String },\n Missing: { recordId: Schema.String },\n Unavailable: { message: Schema.String, recordId: Schema.String },\n});\nexport type ObservationEvidence = typeof ObservationEvidence.Type;\n\nexport const Observation = Schema.TaggedStruct(\"Observation\", {\n provider: Schema.Array(ObservationEvidence),\n publicDns: Schema.Array(ObservationEvidence),\n});\nexport type Observation = typeof Observation.Type;\n\nexport const CleanupOperation = Schema.TaggedUnion({\n AlreadyAbsent: { id: Schema.String, record: DnsRecord },\n Blocked: { id: Schema.String, reason: Schema.String, record: DnsRecord },\n Delete: { id: Schema.String, record: DnsRecord },\n});\nexport type CleanupOperation = typeof CleanupOperation.Type;\n\nexport const CleanupPlan = Schema.TaggedStruct(\"CleanupPlan\", {\n digest: Schema.String,\n expiresAt: Schema.String,\n operations: Schema.Array(CleanupOperation),\n});\nexport type CleanupPlan = typeof CleanupPlan.Type;\n\nconst CleanupOutcomeFields = {\n operationId: Schema.String,\n results: Schema.Array(OperationResult),\n};\nexport const CleanupResult = Schema.TaggedUnion({\n Cleaned: CleanupOutcomeFields,\n Partial: CleanupOutcomeFields,\n Stale: { message: Schema.String },\n});\nexport type CleanupResult = typeof CleanupResult.Type;\n\nexport interface ConnectInput {\n readonly domain: string;\n readonly method: Method;\n readonly providerId: string;\n}\n\nexport interface InspectInput {\n readonly domain: string;\n}\n\nexport interface AttachInput {\n readonly connectionId: string;\n readonly domain: string;\n readonly target: Connection.ProviderTarget;\n}\n\nexport interface DetachInput {\n readonly attachmentId: string;\n readonly preserveDns: true;\n}\n\nexport interface ProvisioningPlanInput {\n readonly attachmentId: string;\n readonly domain: string;\n readonly records: ReadonlyArray<DnsRecord>;\n}\n\nexport interface ProvisioningApplyInput {\n readonly attachmentId: string;\n readonly domain: string;\n readonly planDigest: string;\n}\n\nexport interface ObserveInput {\n readonly attachmentId?: string;\n readonly domain: string;\n readonly records: ReadonlyArray<DnsRecord>;\n readonly sources: {\n readonly provider: boolean;\n readonly publicDns: boolean;\n };\n}\n\nexport interface CleanupPlanInput {\n readonly attachmentId: string;\n readonly domain: string;\n readonly receiptId: string;\n}\n\nexport interface CleanupApplyInput extends CleanupPlanInput {\n readonly planDigest: string;\n}\n\n/** Application-facing DNS connection and provisioning capability. */\nexport interface Interface {\n readonly cleanup: {\n readonly apply: (input: CleanupApplyInput) => Effect.Effect<CleanupResult, Failure>;\n readonly plan: (input: CleanupPlanInput) => Effect.Effect<CleanupPlan, Failure>;\n };\n readonly connection: {\n readonly attach: (input: AttachInput) => Effect.Effect<Connected, Failure>;\n readonly connect: (input: ConnectInput) => Effect.Effect<ConnectionResult, Failure>;\n readonly inspect: (input: InspectInput) => Effect.Effect<ConnectionSnapshot, Failure>;\n readonly detach: (input: DetachInput) => Effect.Effect<DetachResult, Failure>;\n };\n readonly provisioning: {\n readonly apply: (input: ProvisioningApplyInput) => Effect.Effect<ApplyResult, Failure>;\n readonly plan: (input: ProvisioningPlanInput) => Effect.Effect<ProvisioningPlan, Failure>;\n };\n readonly verification: {\n readonly observe: (input: ObserveInput) => Effect.Effect<Observation, Failure>;\n };\n}\n\nexport class Service extends Context.Service<Service, Interface>()(\"@domainkit/Transport\") {}\n\n/** Promise-shaped host seam for foreign runtimes and framework actions. */\nexport interface AsyncInterface {\n readonly cleanup: {\n readonly apply: (input: CleanupApplyInput) => Promise<CleanupResult>;\n readonly plan: (input: CleanupPlanInput) => Promise<CleanupPlan>;\n };\n readonly connection: {\n readonly attach: (input: AttachInput) => Promise<Connected>;\n readonly connect: (input: ConnectInput) => Promise<ConnectionResult>;\n readonly inspect: (input: InspectInput) => Promise<ConnectionSnapshot>;\n readonly detach: (input: DetachInput) => Promise<DetachResult>;\n };\n readonly provisioning: {\n readonly apply: (input: ProvisioningApplyInput) => Promise<ApplyResult>;\n readonly plan: (input: ProvisioningPlanInput) => Promise<ProvisioningPlan>;\n };\n readonly verification: {\n readonly observe: (input: ObserveInput) => Promise<Observation>;\n };\n}\n\nexport interface AsyncOptions {\n readonly onError?: (operation: string, cause: unknown) => Failure;\n}\n\n/** Converts a Promise-shaped host implementation into the canonical Effect service. */\nexport const fromAsync = (transport: AsyncInterface, options: AsyncOptions = {}): Interface => {\n const attempt = <A>(operation: string, evaluate: () => Promise<A>) =>\n Effect.tryPromise({\n try: evaluate,\n catch: (cause) =>\n options.onError?.(operation, cause) ??\n (cause instanceof Failure\n ? cause\n : new Failure({\n message: cause instanceof globalThis.Error ? cause.message : String(cause),\n operation,\n retry: \"unknown\",\n })),\n });\n return Service.of({\n cleanup: {\n apply: (input) => attempt(\"cleanup.apply\", () => transport.cleanup.apply(input)),\n plan: (input) => attempt(\"cleanup.plan\", () => transport.cleanup.plan(input)),\n },\n connection: {\n attach: (input) => attempt(\"connection.attach\", () => transport.connection.attach(input)),\n connect: (input) => attempt(\"connection.connect\", () => transport.connection.connect(input)),\n inspect: (input) => attempt(\"connection.inspect\", () => transport.connection.inspect(input)),\n detach: (input) => attempt(\"connection.detach\", () => transport.connection.detach(input)),\n },\n provisioning: {\n apply: (input) => attempt(\"provisioning.apply\", () => transport.provisioning.apply(input)),\n plan: (input) => attempt(\"provisioning.plan\", () => transport.provisioning.plan(input)),\n },\n verification: {\n observe: (input) =>\n attempt(\"verification.observe\", () => transport.verification.observe(input)),\n },\n });\n};\n\nexport const layerFromAsync = (\n transport: AsyncInterface,\n options?: AsyncOptions,\n): Layer.Layer<Service> => Layer.succeed(Service, fromAsync(transport, options));\n\n/** Converts an environment-free Effect service into its Promise-shaped host seam. */\nexport const toAsync = (transport: Interface): AsyncInterface => ({\n cleanup: {\n apply: (input) => Effect.runPromise(transport.cleanup.apply(input)),\n plan: (input) => Effect.runPromise(transport.cleanup.plan(input)),\n },\n connection: {\n attach: (input) => Effect.runPromise(transport.connection.attach(input)),\n connect: (input) => Effect.runPromise(transport.connection.connect(input)),\n inspect: (input) => Effect.runPromise(transport.connection.inspect(input)),\n detach: (input) => Effect.runPromise(transport.connection.detach(input)),\n },\n provisioning: {\n apply: (input) => Effect.runPromise(transport.provisioning.apply(input)),\n plan: (input) => Effect.runPromise(transport.provisioning.plan(input)),\n },\n verification: {\n observe: (input) => Effect.runPromise(transport.verification.observe(input)),\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 \"./auth/connection-api.ts\";\nexport * as ManagedDnsConnections from \"./auth/lifecycle-api.ts\";\nexport * as Diagnostic from \"./auth/diagnostic.ts\";\nexport * as ProviderAuth from \"./auth/manifest.ts\";\nexport * as ProviderContext from \"./auth/provider-context.ts\";\nexport * as Secret from \"./auth/secret.ts\";\nexport * as ProviderDiscovery from \"./discovery/selection.ts\";\nexport * as ZoneDiscovery from \"./discovery/zone-discovery.ts\";\nexport * as Zones from \"./discovery/zones.ts\";\nexport * as DnsRecord from \"./domain/dns-record.ts\";\nexport * as DomainName from \"./domain/domain-name.ts\";\nexport * as InvalidInput from \"./invalid-input.ts\";\nexport * as DnsProvider from \"./provider/provider.ts\";\nexport * as ProviderSession from \"./provider/session.ts\";\nexport * as ConnectionAuthorization from \"./plan/connection-authorization.ts\";\nexport * as Digest from \"./plan/canonical-json.ts\";\nexport * as Deletion from \"./plan/deletion.ts\";\nexport * as Provisioning from \"./plan/plan.ts\";\nexport * as DnsPlan from \"./plan/types.ts\";\nexport * as Cloudflare from \"./providers/cloudflare/index.ts\";\nexport * as Vercel from \"./providers/vercel/index.ts\";\nexport * as Transport from \"./transport.ts\";\nexport * as CloudflareDnsOverHttps from \"./verification/cloudflare-doh.ts\";\nexport * as DnsData from \"./verification/dns-data.ts\";\nexport * as DnsOverHttps from \"./verification/doh.ts\";\nexport * as GoogleDnsOverHttps from \"./verification/google-doh.ts\";\nexport * as DnsResolverPool from \"./verification/resolver-pool.ts\";\nexport * as DnsResolver from \"./verification/resolver.ts\";\nexport * as Verification from \"./verification/verify.ts\";\n"],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
+ import { o as Error, s as Service } from "./canonical-json-9x7gHIoS.mjs";
3
+ import { Effect, Layer } from "effect";
4
+ //#region src/promise/managed-dns-connections.ts
5
+ var managed_dns_connections_exports = /* @__PURE__ */ __exportAll({
6
+ Error: () => Error,
7
+ from: () => from,
8
+ layerFromAsync: () => layerFromAsync,
9
+ toAsync: () => toAsync
10
+ });
11
+ const failure = (operation, cause) => cause instanceof Error ? cause : new Error({
12
+ category: "storage",
13
+ message: cause instanceof globalThis.Error ? cause.message : String(cause),
14
+ operation,
15
+ retry: "safe"
16
+ });
17
+ const layerFromAsync = (repository) => Layer.succeed(Service, {
18
+ attach: (input) => Effect.tryPromise({
19
+ try: () => repository.attach(input),
20
+ catch: (cause) => failure("ManagedDnsConnections.attach", cause)
21
+ }),
22
+ connect: (input) => Effect.tryPromise({
23
+ try: () => repository.connect(input),
24
+ catch: (cause) => failure("ManagedDnsConnections.connect", cause)
25
+ }),
26
+ detach: (input) => Effect.tryPromise({
27
+ try: () => repository.detach(input),
28
+ catch: (cause) => failure("ManagedDnsConnections.detach", cause)
29
+ }),
30
+ disconnect: ({ connectionId, ownerId, revoke }) => Effect.tryPromise({
31
+ try: () => repository.disconnect({
32
+ connectionId,
33
+ ownerId,
34
+ revoke: (authorization) => Effect.runPromise(revoke(authorization))
35
+ }),
36
+ catch: (cause) => failure("ManagedDnsConnections.disconnect", cause)
37
+ }),
38
+ findConnection: (ownerId, authorizationId) => Effect.tryPromise({
39
+ try: () => repository.findConnection(ownerId, authorizationId),
40
+ catch: (cause) => failure("ManagedDnsConnections.findConnection", cause)
41
+ }),
42
+ get: (authorizationId) => Effect.tryPromise({
43
+ try: () => repository.get(authorizationId),
44
+ catch: (cause) => failure("ManagedDnsConnections.get", cause)
45
+ }),
46
+ getAttachment: (attachmentId) => Effect.tryPromise({
47
+ try: () => repository.getAttachment(attachmentId),
48
+ catch: (cause) => failure("ManagedDnsConnections.getAttachment", cause)
49
+ }),
50
+ getByConnectionId: (connectionId) => Effect.tryPromise({
51
+ try: () => repository.getByConnectionId(connectionId),
52
+ catch: (cause) => failure("ManagedDnsConnections.getByConnectionId", cause)
53
+ }),
54
+ listAttachments: (connectionId, ownerId) => Effect.tryPromise({
55
+ try: () => repository.listAttachments(connectionId, ownerId),
56
+ catch: (cause) => failure("ManagedDnsConnections.listAttachments", cause)
57
+ }),
58
+ promoteEvidence: (authorizationId, evidence) => Effect.tryPromise({
59
+ try: () => repository.promoteEvidence(authorizationId, evidence),
60
+ catch: (cause) => failure("ManagedDnsConnections.promoteEvidence", cause)
61
+ }),
62
+ recover: ({ authorizationId, revoke }) => Effect.tryPromise({
63
+ try: () => repository.recover({
64
+ authorizationId,
65
+ revoke: (authorization) => Effect.runPromise(revoke(authorization))
66
+ }),
67
+ catch: (cause) => failure("ManagedDnsConnections.recover", cause)
68
+ }),
69
+ rotate: (authorizationId, credential) => Effect.tryPromise({
70
+ try: () => repository.rotate(authorizationId, credential),
71
+ catch: (cause) => failure("ManagedDnsConnections.rotate", cause)
72
+ })
73
+ });
74
+ const toAsync = (service) => ({
75
+ attach: (input) => Effect.runPromise(service.attach(input)),
76
+ connect: (input) => Effect.runPromise(service.connect(input)),
77
+ detach: (input) => Effect.runPromise(service.detach(input)),
78
+ disconnect: ({ connectionId, ownerId, revoke }) => Effect.runPromise(service.disconnect({
79
+ connectionId,
80
+ ownerId,
81
+ revoke: (authorization) => Effect.promise(() => revoke(authorization))
82
+ })),
83
+ findConnection: (ownerId, authorizationId) => Effect.runPromise(service.findConnection(ownerId, authorizationId)),
84
+ get: (authorizationId) => Effect.runPromise(service.get(authorizationId)),
85
+ getAttachment: (attachmentId) => Effect.runPromise(service.getAttachment(attachmentId)),
86
+ getByConnectionId: (connectionId) => Effect.runPromise(service.getByConnectionId(connectionId)),
87
+ listAttachments: (connectionId, ownerId) => Effect.runPromise(service.listAttachments(connectionId, ownerId)),
88
+ promoteEvidence: (authorizationId, evidence) => Effect.runPromise(service.promoteEvidence(authorizationId, evidence)),
89
+ recover: ({ authorizationId, revoke }) => Effect.runPromise(service.recover({
90
+ authorizationId,
91
+ revoke: (authorization) => Effect.promise(() => revoke(authorization))
92
+ })),
93
+ rotate: (authorizationId, credential) => Effect.runPromise(service.rotate(authorizationId, credential))
94
+ });
95
+ const from = (repository) => repository;
96
+ //#endregion
97
+ export { managed_dns_connections_exports as n, layerFromAsync as t };
98
+
99
+ //# sourceMappingURL=managed-dns-connections-CaXts84E.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-dns-connections-CaXts84E.mjs","names":["Lifecycle.Error","Lifecycle.Service"],"sources":["../src/promise/managed-dns-connections.ts"],"sourcesContent":["import { Effect, Layer } from \"effect\";\n\nimport type * as ProviderAuthorization from \"../auth/authorization.ts\";\nimport type * as Connection from \"../auth/connection.ts\";\nimport * as Lifecycle from \"../auth/lifecycle-repository.ts\";\n\nexport interface AsyncInterface {\n readonly attach: (input: {\n readonly attachment: Connection.DomainAttachment;\n readonly connectionId: string;\n readonly ownerId: string;\n }) => Promise<Lifecycle.AttachmentResult>;\n readonly connect: (input: Lifecycle.ConnectInput) => Promise<Lifecycle.Aggregate>;\n readonly detach: (input: {\n readonly attachmentId: string;\n readonly ownerId: string;\n }) => Promise<Lifecycle.DetachResult>;\n readonly disconnect: (input: {\n readonly connectionId: string;\n readonly ownerId: string;\n readonly revoke: (authorization: ProviderAuthorization.ProviderAuthorization) => Promise<void>;\n }) => Promise<Lifecycle.DisconnectResult>;\n readonly findConnection: (\n ownerId: string,\n authorizationId: string,\n ) => Promise<Connection.StoredConnection | null>;\n readonly get: (authorizationId: string) => Promise<Lifecycle.Aggregate | null>;\n readonly getAttachment: (attachmentId: string) => Promise<Connection.DomainAttachment | null>;\n readonly getByConnectionId: (connectionId: string) => Promise<Lifecycle.Aggregate | null>;\n readonly listAttachments: (\n connectionId: string,\n ownerId: string,\n ) => Promise<ReadonlyArray<Connection.DomainAttachment>>;\n readonly promoteEvidence: (\n authorizationId: string,\n evidence: ReadonlyArray<ProviderAuthorization.CapabilityEvidence>,\n ) => Promise<Lifecycle.Aggregate>;\n readonly recover: (input: {\n readonly authorizationId: string;\n readonly revoke: (authorization: ProviderAuthorization.ProviderAuthorization) => Promise<void>;\n }) => Promise<Lifecycle.DisconnectResult>;\n readonly rotate: (\n authorizationId: string,\n credential: Connection.StoredCredential,\n ) => Promise<Lifecycle.Aggregate>;\n}\n\nconst failure = (operation: string, cause: unknown): Lifecycle.Error =>\n cause instanceof Lifecycle.Error\n ? cause\n : new Lifecycle.Error({\n category: \"storage\",\n message: cause instanceof globalThis.Error ? cause.message : String(cause),\n operation,\n retry: \"safe\",\n });\n\nexport const layerFromAsync = (repository: AsyncInterface): Layer.Layer<Lifecycle.Service> =>\n Layer.succeed(Lifecycle.Service, {\n attach: (input) =>\n Effect.tryPromise({\n try: () => repository.attach(input),\n catch: (cause) => failure(\"ManagedDnsConnections.attach\", cause),\n }),\n connect: (input) =>\n Effect.tryPromise({\n try: () => repository.connect(input),\n catch: (cause) => failure(\"ManagedDnsConnections.connect\", cause),\n }),\n detach: (input) =>\n Effect.tryPromise({\n try: () => repository.detach(input),\n catch: (cause) => failure(\"ManagedDnsConnections.detach\", cause),\n }),\n disconnect: ({ connectionId, ownerId, revoke }) =>\n Effect.tryPromise({\n try: () =>\n repository.disconnect({\n connectionId,\n ownerId,\n revoke: (authorization) => Effect.runPromise(revoke(authorization)),\n }),\n catch: (cause) => failure(\"ManagedDnsConnections.disconnect\", cause),\n }),\n findConnection: (ownerId, authorizationId) =>\n Effect.tryPromise({\n try: () => repository.findConnection(ownerId, authorizationId),\n catch: (cause) => failure(\"ManagedDnsConnections.findConnection\", cause),\n }),\n get: (authorizationId) =>\n Effect.tryPromise({\n try: () => repository.get(authorizationId),\n catch: (cause) => failure(\"ManagedDnsConnections.get\", cause),\n }),\n getAttachment: (attachmentId) =>\n Effect.tryPromise({\n try: () => repository.getAttachment(attachmentId),\n catch: (cause) => failure(\"ManagedDnsConnections.getAttachment\", cause),\n }),\n getByConnectionId: (connectionId) =>\n Effect.tryPromise({\n try: () => repository.getByConnectionId(connectionId),\n catch: (cause) => failure(\"ManagedDnsConnections.getByConnectionId\", cause),\n }),\n listAttachments: (connectionId, ownerId) =>\n Effect.tryPromise({\n try: () => repository.listAttachments(connectionId, ownerId),\n catch: (cause) => failure(\"ManagedDnsConnections.listAttachments\", cause),\n }),\n promoteEvidence: (authorizationId, evidence) =>\n Effect.tryPromise({\n try: () => repository.promoteEvidence(authorizationId, evidence),\n catch: (cause) => failure(\"ManagedDnsConnections.promoteEvidence\", cause),\n }),\n recover: ({ authorizationId, revoke }) =>\n Effect.tryPromise({\n try: () =>\n repository.recover({\n authorizationId,\n revoke: (authorization) => Effect.runPromise(revoke(authorization)),\n }),\n catch: (cause) => failure(\"ManagedDnsConnections.recover\", cause),\n }),\n rotate: (authorizationId, credential) =>\n Effect.tryPromise({\n try: () => repository.rotate(authorizationId, credential),\n catch: (cause) => failure(\"ManagedDnsConnections.rotate\", cause),\n }),\n });\n\nexport const toAsync = (service: Lifecycle.Interface): AsyncInterface => ({\n attach: (input) => Effect.runPromise(service.attach(input)),\n connect: (input) => Effect.runPromise(service.connect(input)),\n detach: (input) => Effect.runPromise(service.detach(input)),\n disconnect: ({ connectionId, ownerId, revoke }) =>\n Effect.runPromise(\n service.disconnect({\n connectionId,\n ownerId,\n revoke: (authorization) => Effect.promise(() => revoke(authorization)),\n }),\n ),\n findConnection: (ownerId, authorizationId) =>\n Effect.runPromise(service.findConnection(ownerId, authorizationId)),\n get: (authorizationId) => Effect.runPromise(service.get(authorizationId)),\n getAttachment: (attachmentId) => Effect.runPromise(service.getAttachment(attachmentId)),\n getByConnectionId: (connectionId) => Effect.runPromise(service.getByConnectionId(connectionId)),\n listAttachments: (connectionId, ownerId) =>\n Effect.runPromise(service.listAttachments(connectionId, ownerId)),\n promoteEvidence: (authorizationId, evidence) =>\n Effect.runPromise(service.promoteEvidence(authorizationId, evidence)),\n recover: ({ authorizationId, revoke }) =>\n Effect.runPromise(\n service.recover({\n authorizationId,\n revoke: (authorization) => Effect.promise(() => revoke(authorization)),\n }),\n ),\n rotate: (authorizationId, credential) =>\n Effect.runPromise(service.rotate(authorizationId, credential)),\n});\n\nexport const from = (repository: AsyncInterface): AsyncInterface => repository;\n\nexport { Error } from \"../auth/lifecycle-repository.ts\";\nexport type {\n AttachmentResult,\n DetachResult,\n DisconnectResult,\n} from \"../auth/lifecycle-repository.ts\";\n"],"mappings":"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"}