@dual-os/sdk 0.0.0-stage → 0.8.0-next.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/LICENSE +4 -0
- package/README.md +19 -2
- package/dist/Action.d.ts +201 -0
- package/dist/Action.d.ts.map +1 -0
- package/dist/Action.js +172 -0
- package/dist/Action.js.map +1 -0
- package/dist/AgentChannel.d.ts +1717 -0
- package/dist/AgentChannel.d.ts.map +1 -0
- package/dist/AgentChannel.js +708 -0
- package/dist/AgentChannel.js.map +1 -0
- package/dist/AgentChannelConformance.d.ts +1543 -0
- package/dist/AgentChannelConformance.d.ts.map +1 -0
- package/dist/AgentChannelConformance.js +163 -0
- package/dist/AgentChannelConformance.js.map +1 -0
- package/dist/AgentChannelRuntime.d.ts +78 -0
- package/dist/AgentChannelRuntime.d.ts.map +1 -0
- package/dist/AgentChannelRuntime.js +270 -0
- package/dist/AgentChannelRuntime.js.map +1 -0
- package/dist/AiProvider.d.ts +132 -0
- package/dist/AiProvider.d.ts.map +1 -0
- package/dist/AiProvider.js +100 -0
- package/dist/AiProvider.js.map +1 -0
- package/dist/AuthMethod.d.ts +381 -0
- package/dist/AuthMethod.d.ts.map +1 -0
- package/dist/AuthMethod.js +225 -0
- package/dist/AuthMethod.js.map +1 -0
- package/dist/AuthMethodBinding.d.ts +77 -0
- package/dist/AuthMethodBinding.d.ts.map +1 -0
- package/dist/AuthMethodBinding.js +31 -0
- package/dist/AuthMethodBinding.js.map +1 -0
- package/dist/AuthMethodExecution.d.ts +223 -0
- package/dist/AuthMethodExecution.d.ts.map +1 -0
- package/dist/AuthMethodExecution.js +277 -0
- package/dist/AuthMethodExecution.js.map +1 -0
- package/dist/ConnectionResolver.d.ts +219 -0
- package/dist/ConnectionResolver.d.ts.map +1 -0
- package/dist/ConnectionResolver.js +153 -0
- package/dist/ConnectionResolver.js.map +1 -0
- package/dist/DefinitionError.d.ts +67 -0
- package/dist/DefinitionError.d.ts.map +1 -0
- package/dist/DefinitionError.js +82 -0
- package/dist/DefinitionError.js.map +1 -0
- package/dist/DualRegistry.d.ts +71 -0
- package/dist/DualRegistry.d.ts.map +1 -0
- package/dist/DualRegistry.js +96 -0
- package/dist/DualRegistry.js.map +1 -0
- package/dist/DualRuntime.d.ts +279 -0
- package/dist/DualRuntime.d.ts.map +1 -0
- package/dist/DualRuntime.js +311 -0
- package/dist/DualRuntime.js.map +1 -0
- package/dist/Files.d.ts +80 -0
- package/dist/Files.d.ts.map +1 -0
- package/dist/Files.js +66 -0
- package/dist/Files.js.map +1 -0
- package/dist/Group.d.ts +106 -0
- package/dist/Group.d.ts.map +1 -0
- package/dist/Group.js +86 -0
- package/dist/Group.js.map +1 -0
- package/dist/Http.d.ts +342 -0
- package/dist/Http.d.ts.map +1 -0
- package/dist/Http.js +677 -0
- package/dist/Http.js.map +1 -0
- package/dist/Mcp.d.ts +109 -0
- package/dist/Mcp.d.ts.map +1 -0
- package/dist/Mcp.js +176 -0
- package/dist/Mcp.js.map +1 -0
- package/dist/OAuth2TokenRefresher.d.ts +18 -0
- package/dist/OAuth2TokenRefresher.d.ts.map +1 -0
- package/dist/OAuth2TokenRefresher.js +19 -0
- package/dist/OAuth2TokenRefresher.js.map +1 -0
- package/dist/OAuthFlow.d.ts +71 -0
- package/dist/OAuthFlow.d.ts.map +1 -0
- package/dist/OAuthFlow.js +488 -0
- package/dist/OAuthFlow.js.map +1 -0
- package/dist/Plugin.d.ts +383 -0
- package/dist/Plugin.d.ts.map +1 -0
- package/dist/Plugin.js +249 -0
- package/dist/Plugin.js.map +1 -0
- package/dist/PluginRuntime.d.ts +3186 -0
- package/dist/PluginRuntime.d.ts.map +1 -0
- package/dist/PluginRuntime.js +331 -0
- package/dist/PluginRuntime.js.map +1 -0
- package/dist/Runner.d.ts +1 -0
- package/dist/Runner.js +124 -0
- package/dist/Runner.js.map +1 -0
- package/dist/ToolFile.d.ts +23 -0
- package/dist/ToolFile.d.ts.map +1 -0
- package/dist/ToolFile.js +33 -0
- package/dist/ToolFile.js.map +1 -0
- package/dist/Trigger.d.ts +358 -0
- package/dist/Trigger.d.ts.map +1 -0
- package/dist/Trigger.js +287 -0
- package/dist/Trigger.js.map +1 -0
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.js +24 -0
- package/dist/internal/auth-context.d.ts +23 -0
- package/dist/internal/auth-context.d.ts.map +1 -0
- package/dist/internal/auth-context.js +1 -0
- package/dist/internal/auth-execution.d.ts +27 -0
- package/dist/internal/auth-execution.d.ts.map +1 -0
- package/dist/internal/auth-execution.js +66 -0
- package/dist/internal/auth-execution.js.map +1 -0
- package/dist/internal/auth-runtime.d.ts +5 -0
- package/dist/internal/auth-runtime.d.ts.map +1 -0
- package/dist/internal/auth-runtime.js +16 -0
- package/dist/internal/auth-runtime.js.map +1 -0
- package/dist/internal/capabilities.d.ts +24 -0
- package/dist/internal/capabilities.d.ts.map +1 -0
- package/dist/internal/capabilities.js +22 -0
- package/dist/internal/capabilities.js.map +1 -0
- package/dist/internal/children.d.ts +34 -0
- package/dist/internal/children.d.ts.map +1 -0
- package/dist/internal/children.js +53 -0
- package/dist/internal/children.js.map +1 -0
- package/dist/internal/collection-utils.d.ts +4 -0
- package/dist/internal/collection-utils.d.ts.map +1 -0
- package/dist/internal/collection-utils.js +6 -0
- package/dist/internal/collection-utils.js.map +1 -0
- package/dist/internal/dual/actions.d.ts +33 -0
- package/dist/internal/dual/actions.d.ts.map +1 -0
- package/dist/internal/dual/actions.js +26 -0
- package/dist/internal/dual/actions.js.map +1 -0
- package/dist/internal/dual/invoke.d.ts +63 -0
- package/dist/internal/dual/invoke.d.ts.map +1 -0
- package/dist/internal/dual/invoke.js +75 -0
- package/dist/internal/dual/invoke.js.map +1 -0
- package/dist/internal/dual/registry.d.ts +125 -0
- package/dist/internal/dual/registry.d.ts.map +1 -0
- package/dist/internal/dual/registry.js +172 -0
- package/dist/internal/dual/registry.js.map +1 -0
- package/dist/internal/dual/triggers.d.ts +29 -0
- package/dist/internal/dual/triggers.d.ts.map +1 -0
- package/dist/internal/dual/triggers.js +26 -0
- package/dist/internal/dual/triggers.js.map +1 -0
- package/dist/internal/handler-context.d.ts +9 -0
- package/dist/internal/handler-context.d.ts.map +1 -0
- package/dist/internal/handler-context.js +31 -0
- package/dist/internal/handler-context.js.map +1 -0
- package/dist/internal/identifier.d.ts +6 -0
- package/dist/internal/identifier.d.ts.map +1 -0
- package/dist/internal/identifier.js +28 -0
- package/dist/internal/identifier.js.map +1 -0
- package/dist/internal/plugin-handlers.d.ts +38 -0
- package/dist/internal/plugin-handlers.d.ts.map +1 -0
- package/dist/internal/plugin-handlers.js +52 -0
- package/dist/internal/plugin-handlers.js.map +1 -0
- package/dist/internal/proto.d.ts +7 -0
- package/dist/internal/proto.d.ts.map +1 -0
- package/dist/internal/proto.js +10 -0
- package/dist/internal/proto.js.map +1 -0
- package/dist/internal/schema-runtime.d.ts +6 -0
- package/dist/internal/schema-runtime.d.ts.map +1 -0
- package/dist/internal/schema-runtime.js +10 -0
- package/dist/internal/schema-runtime.js.map +1 -0
- package/dist/internal/trigger-runtime-shared.d.ts +41 -0
- package/dist/internal/trigger-runtime-shared.d.ts.map +1 -0
- package/dist/internal/trigger-runtime-shared.js +132 -0
- package/dist/internal/trigger-runtime-shared.js.map +1 -0
- package/dist/internal/trigger-runtime.d.ts +12 -0
- package/dist/internal/trigger-runtime.d.ts.map +1 -0
- package/dist/internal/trigger-runtime.js +95 -0
- package/dist/internal/trigger-runtime.js.map +1 -0
- package/dist/internal/types.d.ts +7 -0
- package/dist/internal/types.d.ts.map +1 -0
- package/dist/internal/types.js +1 -0
- package/dist/remote-runtime.d.ts +585 -0
- package/dist/remote-runtime.d.ts.map +1 -0
- package/dist/remote-runtime.js +367 -0
- package/dist/remote-runtime.js.map +1 -0
- package/package.json +55 -4
- package/src/Action.ts +370 -0
- package/src/AgentChannel.ts +860 -0
- package/src/AgentChannelConformance.ts +124 -0
- package/src/AgentChannelRuntime.ts +616 -0
- package/src/AiProvider.ts +255 -0
- package/src/AuthMethod.ts +954 -0
- package/src/AuthMethodBinding.ts +112 -0
- package/src/AuthMethodExecution.ts +542 -0
- package/src/ConnectionResolver.ts +265 -0
- package/src/DefinitionError.ts +115 -0
- package/src/DualRegistry.ts +152 -0
- package/src/DualRuntime.ts +1081 -0
- package/src/Files.ts +89 -0
- package/src/Group.ts +292 -0
- package/src/Http.ts +1205 -0
- package/src/Mcp.ts +299 -0
- package/src/OAuth2TokenRefresher.ts +22 -0
- package/src/OAuthFlow.ts +874 -0
- package/src/Plugin.ts +912 -0
- package/src/PluginRuntime.ts +414 -0
- package/src/Runner.ts +248 -0
- package/src/ToolFile.ts +28 -0
- package/src/Trigger.ts +722 -0
- package/src/index.ts +158 -0
- package/src/internal/auth-context.ts +27 -0
- package/src/internal/auth-execution.ts +241 -0
- package/src/internal/auth-runtime.ts +20 -0
- package/src/internal/capabilities.ts +55 -0
- package/src/internal/children.ts +126 -0
- package/src/internal/collection-utils.ts +8 -0
- package/src/internal/dual/actions.ts +116 -0
- package/src/internal/dual/invoke.ts +307 -0
- package/src/internal/dual/registry.ts +340 -0
- package/src/internal/dual/triggers.ts +128 -0
- package/src/internal/handler-context.ts +57 -0
- package/src/internal/identifier.ts +27 -0
- package/src/internal/plugin-handlers.ts +146 -0
- package/src/internal/proto.ts +8 -0
- package/src/internal/schema-runtime.ts +15 -0
- package/src/internal/trigger-runtime-shared.ts +449 -0
- package/src/internal/trigger-runtime.ts +223 -0
- package/src/internal/types.ts +12 -0
- package/src/remote-runtime.ts +469 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthMethod.d.ts","names":["OAuth2TokenRefresher.Service"],"sources":["../src/AuthMethod.ts"],"mappings":"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"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { __exportAll } from "./_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { validateIdentifier } from "./internal/identifier.js";
|
|
3
|
+
import { PipeableProto } from "./internal/proto.js";
|
|
4
|
+
import { isBindingForMethod, makeBinding } from "./AuthMethodBinding.js";
|
|
5
|
+
import { OAuth2TokenRefresher_exports, Service } from "./OAuth2TokenRefresher.js";
|
|
6
|
+
import { decodeInput, decodeMaterial, decodeSetup, decodeValue, display, prepare, prepareDecoded, prepareOAuth2Tokens, prepareUnknown, refreshDecoded, refreshUnknown, resolve, resolveDecoded, resolveUnknown, test } from "./AuthMethodExecution.js";
|
|
7
|
+
import { Function, Predicate, Schema } from "effect";
|
|
8
|
+
//#region src/AuthMethod.ts
|
|
9
|
+
/**
|
|
10
|
+
* Canonical auth-method definition builders and types for the Dual SDK.
|
|
11
|
+
*
|
|
12
|
+
* Providers own auth methods shared by all actions and triggers under them.
|
|
13
|
+
*
|
|
14
|
+
* @since 0.0.0
|
|
15
|
+
*/
|
|
16
|
+
var AuthMethod_exports = /* @__PURE__ */ __exportAll({
|
|
17
|
+
AuthMethodHookError: () => AuthMethodHookError,
|
|
18
|
+
AuthMethodHookOperation: () => AuthMethodHookOperation,
|
|
19
|
+
ExpectedOAuth2MethodError: () => ExpectedOAuth2MethodError,
|
|
20
|
+
OAuth2ProviderTokenResponse: () => OAuth2ProviderTokenResponse,
|
|
21
|
+
OAuth2RefreshTokenUnavailableError: () => OAuth2RefreshTokenUnavailableError,
|
|
22
|
+
OAuth2TokenMaterial: () => OAuth2TokenMaterial,
|
|
23
|
+
OAuth2TokenRefresher: () => OAuth2TokenRefresher_exports,
|
|
24
|
+
OAuth2TokenResponse: () => OAuth2TokenResponse,
|
|
25
|
+
Service: () => Service,
|
|
26
|
+
TypeId: () => TypeId,
|
|
27
|
+
auth: () => auth,
|
|
28
|
+
decodeInput: () => decodeInput,
|
|
29
|
+
decodeMaterial: () => decodeMaterial,
|
|
30
|
+
decodeSetup: () => decodeSetup,
|
|
31
|
+
decodeValue: () => decodeValue,
|
|
32
|
+
display: () => display,
|
|
33
|
+
form: () => form,
|
|
34
|
+
isAuthMethod: () => isAuthMethod,
|
|
35
|
+
isBindingForMethod: () => isBindingForMethod,
|
|
36
|
+
make: () => make,
|
|
37
|
+
makeBinding: () => makeBinding,
|
|
38
|
+
oauth2: () => oauth2,
|
|
39
|
+
prepare: () => prepare,
|
|
40
|
+
prepareDecoded: () => prepareDecoded,
|
|
41
|
+
prepareOAuth2Tokens: () => prepareOAuth2Tokens,
|
|
42
|
+
prepareUnknown: () => prepareUnknown,
|
|
43
|
+
refreshDecoded: () => refreshDecoded,
|
|
44
|
+
refreshUnknown: () => refreshUnknown,
|
|
45
|
+
resolve: () => resolve,
|
|
46
|
+
resolveDecoded: () => resolveDecoded,
|
|
47
|
+
resolveUnknown: () => resolveUnknown,
|
|
48
|
+
test: () => test
|
|
49
|
+
});
|
|
50
|
+
/**
|
|
51
|
+
* @since 0.0.0
|
|
52
|
+
* @category type ids
|
|
53
|
+
*/
|
|
54
|
+
const TypeId = "@dual-os/sdk/AuthMethod";
|
|
55
|
+
/** @since 0.0.0 @category errors */
|
|
56
|
+
var ExpectedOAuth2MethodError = class extends Schema.TaggedError()("ExpectedOAuth2MethodError", { methodIdentifier: Schema.String }) {};
|
|
57
|
+
/** @since 0.0.0 @category schemas */
|
|
58
|
+
const OAuth2ProviderTokenResponse = Schema.Struct({
|
|
59
|
+
access_token: Schema.optional(Schema.String),
|
|
60
|
+
expires_at: Schema.optional(Schema.String),
|
|
61
|
+
expires_in: Schema.optional(Schema.Union([Schema.Number, Schema.String])),
|
|
62
|
+
refresh_token: Schema.optional(Schema.String),
|
|
63
|
+
scope: Schema.optional(Schema.String),
|
|
64
|
+
token_type: Schema.optional(Schema.String)
|
|
65
|
+
});
|
|
66
|
+
/** @since 0.0.0 @category schemas */
|
|
67
|
+
const OAuth2TokenResponse = Schema.Struct({
|
|
68
|
+
accessToken: Schema.String,
|
|
69
|
+
expiresAt: Schema.optional(Schema.Number),
|
|
70
|
+
expiresIn: Schema.optional(Schema.Number),
|
|
71
|
+
raw: Schema.Record(Schema.String, Schema.Unknown),
|
|
72
|
+
refreshToken: Schema.optional(Schema.String),
|
|
73
|
+
scope: Schema.optional(Schema.String),
|
|
74
|
+
tokenType: Schema.optional(Schema.String)
|
|
75
|
+
});
|
|
76
|
+
/** @since 0.0.0 @category errors */
|
|
77
|
+
var OAuth2RefreshTokenUnavailableError = class extends Schema.TaggedError()("OAuth2RefreshTokenUnavailableError", { methodIdentifier: Schema.String }) {};
|
|
78
|
+
/** @since 0.0.0 @category errors */
|
|
79
|
+
const AuthMethodHookOperation = Schema.Literals([
|
|
80
|
+
"prepare",
|
|
81
|
+
"refresh",
|
|
82
|
+
"prepareOAuth2Tokens",
|
|
83
|
+
"resolve",
|
|
84
|
+
"display",
|
|
85
|
+
"test",
|
|
86
|
+
"oauth2TokenRefresh"
|
|
87
|
+
]);
|
|
88
|
+
/** @since 0.0.0 @category errors */
|
|
89
|
+
var AuthMethodHookError = class extends Schema.TaggedError()("AuthMethodHookError", {
|
|
90
|
+
cause: Schema.Defect(),
|
|
91
|
+
methodIdentifier: Schema.String,
|
|
92
|
+
operation: AuthMethodHookOperation
|
|
93
|
+
}) {};
|
|
94
|
+
/** @since 0.0.0 @category schemas */
|
|
95
|
+
const OAuth2TokenMaterial = Schema.Struct({
|
|
96
|
+
accessToken: Schema.String,
|
|
97
|
+
expiresAt: Schema.optional(Schema.Number),
|
|
98
|
+
expiresIn: Schema.optional(Schema.Number),
|
|
99
|
+
raw: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)),
|
|
100
|
+
refreshToken: Schema.optional(Schema.String),
|
|
101
|
+
scope: Schema.optional(Schema.String),
|
|
102
|
+
tokenType: Schema.optional(Schema.String)
|
|
103
|
+
});
|
|
104
|
+
const Proto = {
|
|
105
|
+
...PipeableProto,
|
|
106
|
+
[TypeId]: { _Requirements: Function.identity }
|
|
107
|
+
};
|
|
108
|
+
const makeAuthMethod = (identifier, options) => {
|
|
109
|
+
validateIdentifier("auth-method", identifier);
|
|
110
|
+
return Object.assign(Object.create(Proto), {
|
|
111
|
+
description: options.description,
|
|
112
|
+
display: options.display,
|
|
113
|
+
identifier,
|
|
114
|
+
input: options.input,
|
|
115
|
+
kind: options.kind,
|
|
116
|
+
material: options.material,
|
|
117
|
+
name: options.name,
|
|
118
|
+
oauth2: options.oauth2,
|
|
119
|
+
prepare: options.prepare,
|
|
120
|
+
refresh: options.refresh,
|
|
121
|
+
resolve: options.resolve,
|
|
122
|
+
schema: options.value,
|
|
123
|
+
setup: options.setup,
|
|
124
|
+
test: options.test,
|
|
125
|
+
value: options.value
|
|
126
|
+
});
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
* Create an {@link AuthMethod} definition.
|
|
130
|
+
*
|
|
131
|
+
* @since 0.0.0
|
|
132
|
+
* @category constructors
|
|
133
|
+
*/
|
|
134
|
+
const make = (identifier, options) => form(identifier, options);
|
|
135
|
+
/**
|
|
136
|
+
* Create a simple form auth method where input, stored material, and runtime value share one schema.
|
|
137
|
+
*
|
|
138
|
+
* @since 0.0.0
|
|
139
|
+
* @category constructors
|
|
140
|
+
*/
|
|
141
|
+
const form = (identifier, options) => makeAuthMethod(identifier, {
|
|
142
|
+
description: options.description,
|
|
143
|
+
display: void 0,
|
|
144
|
+
input: options.schema,
|
|
145
|
+
kind: "form",
|
|
146
|
+
material: options.schema,
|
|
147
|
+
name: options.name,
|
|
148
|
+
oauth2: void 0,
|
|
149
|
+
prepare: void 0,
|
|
150
|
+
refresh: void 0,
|
|
151
|
+
resolve: void 0,
|
|
152
|
+
setup: options.setup,
|
|
153
|
+
test: void 0,
|
|
154
|
+
value: options.schema
|
|
155
|
+
});
|
|
156
|
+
function auth(identifier, options) {
|
|
157
|
+
const material = options.material ?? options.input;
|
|
158
|
+
if (material === void 0) throw new Error(`auth method "${identifier}" requires material when input is omitted`);
|
|
159
|
+
return makeAuthMethod(identifier, {
|
|
160
|
+
description: options.description,
|
|
161
|
+
display: options.display,
|
|
162
|
+
input: options.input,
|
|
163
|
+
kind: "custom",
|
|
164
|
+
material,
|
|
165
|
+
name: options.name,
|
|
166
|
+
oauth2: void 0,
|
|
167
|
+
prepare: options.prepare,
|
|
168
|
+
refresh: options.refresh,
|
|
169
|
+
resolve: options.resolve,
|
|
170
|
+
setup: options.setup,
|
|
171
|
+
test: options.test,
|
|
172
|
+
value: options.value ?? material
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Create an OAuth2 auth method over the same setup primitive.
|
|
177
|
+
*
|
|
178
|
+
* OAuth2 has no submitted form input; the platform owns the browser redirect,
|
|
179
|
+
* callback, state/PKCE, and token exchange before storing mapped material.
|
|
180
|
+
*
|
|
181
|
+
* @since 0.0.0
|
|
182
|
+
* @category constructors
|
|
183
|
+
*/
|
|
184
|
+
const oauth2 = (identifier, options) => {
|
|
185
|
+
const oauth2Setup = {
|
|
186
|
+
client: options.client,
|
|
187
|
+
scopes: options.scopes,
|
|
188
|
+
...options.discoveryUrl === void 0 ? {} : { discoveryUrl: options.discoveryUrl },
|
|
189
|
+
...options.authorizationUrl === void 0 ? {} : { authorizationUrl: options.authorizationUrl },
|
|
190
|
+
...options.tokenUrl === void 0 ? {} : { tokenUrl: options.tokenUrl },
|
|
191
|
+
...options.pkce === void 0 ? {} : { pkce: options.pkce },
|
|
192
|
+
...options.authorizationParams === void 0 ? {} : { authorizationParams: options.authorizationParams },
|
|
193
|
+
...options.tokenParams === void 0 ? {} : { tokenParams: options.tokenParams },
|
|
194
|
+
...options.tokenHeaders === void 0 ? {} : { tokenHeaders: options.tokenHeaders },
|
|
195
|
+
...options.tokenRequestEncoding === void 0 ? {} : { tokenRequestEncoding: options.tokenRequestEncoding },
|
|
196
|
+
...options.tokenResponse === void 0 ? {} : { tokenResponse: options.tokenResponse },
|
|
197
|
+
...options.fromTokens === void 0 ? {} : { fromTokens: options.fromTokens }
|
|
198
|
+
};
|
|
199
|
+
return makeAuthMethod(identifier, {
|
|
200
|
+
description: options.description,
|
|
201
|
+
display: options.display,
|
|
202
|
+
input: void 0,
|
|
203
|
+
kind: "oauth2",
|
|
204
|
+
material: options.material,
|
|
205
|
+
name: options.name,
|
|
206
|
+
oauth2: oauth2Setup,
|
|
207
|
+
prepare: void 0,
|
|
208
|
+
refresh: void 0,
|
|
209
|
+
resolve: options.resolve,
|
|
210
|
+
setup: options.setup,
|
|
211
|
+
test: options.test,
|
|
212
|
+
value: options.value ?? options.material
|
|
213
|
+
});
|
|
214
|
+
};
|
|
215
|
+
/**
|
|
216
|
+
* Check if a value is an {@link AuthMethod}.
|
|
217
|
+
*
|
|
218
|
+
* @since 0.0.0
|
|
219
|
+
* @category guards
|
|
220
|
+
*/
|
|
221
|
+
const isAuthMethod = (u) => Predicate.hasProperty(u, TypeId);
|
|
222
|
+
//#endregion
|
|
223
|
+
export { AuthMethodHookError, AuthMethodHookOperation, AuthMethod_exports, ExpectedOAuth2MethodError, OAuth2ProviderTokenResponse, OAuth2RefreshTokenUnavailableError, OAuth2TokenMaterial, OAuth2TokenRefresher_exports as OAuth2TokenRefresher, OAuth2TokenResponse, Service, TypeId, auth, decodeInput, decodeMaterial, decodeSetup, decodeValue, display, form, isAuthMethod, isBindingForMethod, make, makeBinding, oauth2, prepare, prepareDecoded, prepareOAuth2Tokens, prepareUnknown, refreshDecoded, refreshUnknown, resolve, resolveDecoded, resolveUnknown, test };
|
|
224
|
+
|
|
225
|
+
//# sourceMappingURL=AuthMethod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthMethod.js","names":["Func"],"sources":["../src/AuthMethod.ts"],"sourcesContent":["/**\n * Canonical auth-method definition builders and types for the Dual SDK.\n *\n * Providers own auth methods shared by all actions and triggers under them.\n *\n * @since 0.0.0\n */\nimport { Function as Func, Predicate, Schema } from \"effect\";\nimport type { Config, Effect, Pipeable } from \"effect\";\n\nimport type * as Types from \"effect/Types\";\n\nimport { validateIdentifier } from \"./internal/identifier.ts\";\nimport { PipeableProto } from \"./internal/proto.ts\";\nimport type * as OAuth2TokenRefresher from \"./OAuth2TokenRefresher.ts\";\n\n/**\n * @since 0.0.0\n * @category type ids\n */\nexport const TypeId = \"@dual-os/sdk/AuthMethod\" as const;\n\n/**\n * @since 0.0.0\n * @category type ids\n */\nexport type TypeId = typeof TypeId;\n\n/**\n * Phantom inference slot for the hook requirements union.\n *\n * Unlike the schema parameters, hook requirements only occur inside optional\n * hook signatures, which TypeScript cannot reliably infer through; this slot\n * gives the {@link Requirements} extractor a stable inference site.\n *\n * One union instead of per-hook parameters on purpose: in practice a method's\n * dependencies are provided once at the plugin/app definition (for example a\n * Gmail client layer), not separately per hook, and every consumption path\n * (invoke, trigger phases, credential lifecycle, `DualRuntime.toLayer`) must demand\n * the same set so none of them can silently under-require.\n *\n * @since 0.0.0\n * @category models\n */\nexport interface RequirementsVariance<out Requirements> {\n readonly _Requirements: Types.Covariant<Requirements>;\n}\n\n/**\n * Constraint type for working with any {@link AuthMethod}.\n *\n * @since 0.0.0\n * @category type-level\n */\nexport interface Any extends Pipeable.Pipeable {\n readonly [TypeId]: RequirementsVariance<any>;\n readonly identifier: string;\n readonly name: string | undefined;\n readonly description: string | undefined;\n readonly kind: AuthMethodKind;\n readonly setup: Schema.Top | undefined;\n readonly input: Schema.Top | undefined;\n readonly material: Schema.Top;\n readonly value: Schema.Top;\n readonly schema: Schema.Top;\n readonly prepare: unknown;\n readonly refresh: unknown;\n readonly resolve: unknown;\n readonly display: unknown;\n readonly test: unknown;\n readonly oauth2: OAuth2Setup<Schema.Top, any, any> | undefined;\n}\n\n/** @since 0.0.0 @category models */\nexport type AuthMethodKind = \"form\" | \"oauth2\" | \"custom\";\n\n/** @since 0.0.0 @category type-level */\nexport type SchemaType<SchemaDef extends Schema.Top | undefined> = SchemaDef extends Schema.Top\n ? Schema.Schema.Type<SchemaDef>\n : undefined;\n\n/** @since 0.0.0 @category hooks */\nexport interface HookContext<Setup = undefined> {\n readonly setup: Setup;\n}\n\n/** @since 0.0.0 @category hooks */\nexport type MaybeEffect<Value, Error = never, Requirements = never> =\n | Value\n | Effect.Effect<Value, Error, Requirements>;\n\n/** @since 0.0.0 @category hooks */\nexport type PrepareHook<Input, Material, Error = never, Requirements = never, Setup = undefined> = (\n input: Input,\n context: HookContext<Setup>,\n) => MaybeEffect<Material, Error, Requirements>;\n\n/** @since 0.0.0 @category hooks */\nexport type RefreshReason = \"before-use\" | \"forced\";\n\n/** @since 0.0.0 @category hooks */\nexport interface RefreshContext<Setup = undefined> extends HookContext<Setup> {\n readonly now: number;\n readonly minValidityMs: number;\n readonly reason: RefreshReason;\n}\n\n/** @since 0.0.0 @category hooks */\nexport type RefreshHook<Material, Error = never, Requirements = never, Setup = undefined> = (\n material: Material,\n context: RefreshContext<Setup>,\n) => MaybeEffect<Material | undefined, Error, Requirements>;\n\n/** @since 0.0.0 @category hooks */\nexport type ResolveHook<Material, Value, Error = never, Requirements = never, Setup = undefined> = (\n material: Material,\n context: HookContext<Setup>,\n) => MaybeEffect<Value, Error, Requirements>;\n\n/** @since 0.0.0 @category models */\nexport interface Display {\n readonly label?: string;\n readonly description?: string;\n readonly metadata?: Record<string, unknown>;\n}\n\n/** @since 0.0.0 @category hooks */\nexport type DisplayHook<Material, Error = never, Requirements = never, Setup = undefined> = (\n material: Material,\n context: HookContext<Setup>,\n) => MaybeEffect<Display, Error, Requirements>;\n\n/** @since 0.0.0 @category models */\nexport interface TestResult {\n readonly ok: boolean;\n readonly message?: string;\n}\n\n/** @since 0.0.0 @category errors */\nexport class ExpectedOAuth2MethodError extends Schema.TaggedError<ExpectedOAuth2MethodError>()(\n \"ExpectedOAuth2MethodError\",\n { methodIdentifier: Schema.String },\n) {}\n\n/** @since 0.0.0 @category hooks */\nexport type TestHook<Material, Error = never, Requirements = never, Setup = undefined> = (\n material: Material,\n context: HookContext<Setup>,\n) => MaybeEffect<TestResult, Error, Requirements>;\n\n/**\n * Options used to create an {@link AuthMethod}.\n *\n * @since 0.0.0\n * @category models\n */\nexport interface AuthMethodOptions<ValueSchema extends Schema.Top> {\n readonly name?: string;\n readonly description?: string;\n readonly schema: ValueSchema;\n}\n\n/** @since 0.0.0 @category models */\nexport interface FormOptions<\n ValueSchema extends Schema.Top,\n SetupSchema extends Schema.Top | undefined = undefined,\n> extends AuthMethodOptions<ValueSchema> {\n readonly setup?: SetupSchema;\n}\n\n/** @since 0.0.0 @category models */\nexport interface AuthOptionsWithoutMaterial<\n InputSchema extends Schema.Top,\n ValueSchema extends Schema.Top = InputSchema,\n SetupSchema extends Schema.Top | undefined = undefined,\n PrepareRequirements = never,\n RefreshRequirements = never,\n ResolveRequirements = never,\n DisplayRequirements = never,\n TestRequirements = never,\n> {\n readonly name?: string;\n readonly description?: string;\n readonly setup?: SetupSchema;\n readonly input: InputSchema;\n readonly material?: undefined;\n readonly value?: ValueSchema;\n readonly prepare?: PrepareHook<\n SchemaType<InputSchema>,\n SchemaType<InputSchema>,\n any,\n PrepareRequirements,\n SchemaType<SetupSchema>\n >;\n readonly refresh?: RefreshHook<\n SchemaType<InputSchema>,\n any,\n RefreshRequirements,\n SchemaType<SetupSchema>\n >;\n readonly resolve?: ResolveHook<\n SchemaType<InputSchema>,\n Schema.Schema.Type<ValueSchema>,\n any,\n ResolveRequirements,\n SchemaType<SetupSchema>\n >;\n readonly display?: DisplayHook<\n SchemaType<InputSchema>,\n any,\n DisplayRequirements,\n SchemaType<SetupSchema>\n >;\n readonly test?: TestHook<SchemaType<InputSchema>, any, TestRequirements, SchemaType<SetupSchema>>;\n}\n\n/** @since 0.0.0 @category models */\nexport interface AuthOptionsWithMaterial<\n InputSchema extends Schema.Top | undefined,\n MaterialSchema extends Schema.Top,\n ValueSchema extends Schema.Top = MaterialSchema,\n SetupSchema extends Schema.Top | undefined = undefined,\n PrepareRequirements = never,\n RefreshRequirements = never,\n ResolveRequirements = never,\n DisplayRequirements = never,\n TestRequirements = never,\n> {\n readonly name?: string;\n readonly description?: string;\n readonly setup?: SetupSchema;\n readonly input: InputSchema;\n readonly material: MaterialSchema;\n readonly value?: ValueSchema;\n readonly prepare?: PrepareHook<\n SchemaType<InputSchema>,\n Schema.Schema.Type<MaterialSchema>,\n any,\n PrepareRequirements,\n SchemaType<SetupSchema>\n >;\n readonly refresh?: RefreshHook<\n Schema.Schema.Type<MaterialSchema>,\n any,\n RefreshRequirements,\n SchemaType<SetupSchema>\n >;\n readonly resolve?: ResolveHook<\n Schema.Schema.Type<MaterialSchema>,\n Schema.Schema.Type<ValueSchema>,\n any,\n ResolveRequirements,\n SchemaType<SetupSchema>\n >;\n readonly display?: DisplayHook<\n Schema.Schema.Type<MaterialSchema>,\n any,\n DisplayRequirements,\n SchemaType<SetupSchema>\n >;\n readonly test?: TestHook<\n Schema.Schema.Type<MaterialSchema>,\n any,\n TestRequirements,\n SchemaType<SetupSchema>\n >;\n}\n\n/** @since 0.0.0 @category models */\nexport interface OAuth2ClientConfig {\n readonly clientId: string | Config.Config<string>;\n readonly clientSecret?: string | Config.Config<string>;\n readonly authentication?: \"basic\" | \"post\" | \"none\";\n}\n\n/** @since 0.0.0 @category hooks */\nexport type OAuth2ClientHook<Setup> = (context: HookContext<Setup>) => OAuth2ClientConfig;\n\n/** @since 0.0.0 @category models */\nexport type OAuth2Client<Setup = undefined> = OAuth2ClientConfig | OAuth2ClientHook<Setup>;\n\n/** @since 0.0.0 @category hooks */\nexport type OAuth2EndpointHook<Setup> = (context: HookContext<Setup>) => string;\n\n/**\n * An OAuth2 endpoint, fixed or derived from the setup.\n *\n * Providers that host one instance per customer — a Microsoft tenant, a\n * self-hosted GitLab — cannot name their endpoints until the connection's setup\n * says which instance it is.\n *\n * @since 0.0.0\n * @category models\n */\nexport type OAuth2Endpoint<Setup = undefined> = string | OAuth2EndpointHook<Setup>;\n\n/** @since 0.0.0 @category models */\nexport type OAuth2ParamsHook<Setup> = (\n context: HookContext<Setup>,\n) => Readonly<Record<string, string>>;\n\n/**\n * Query parameters added to the authorization or token request, fixed or\n * derived from the setup — the same freedom the endpoints have. A provider\n * that knows which account a connection is for can say so in the request\n * instead of leaving the choice to whatever session the browser carries.\n *\n * @since 0.0.0 @category models\n */\nexport type OAuth2Params<Setup = undefined> =\n | Readonly<Record<string, string>>\n | OAuth2ParamsHook<Setup>;\n\n/** @since 0.0.0 @category hooks */\nexport type OAuth2HeadersHook<SetupValue> = (\n context: HookContext<SetupValue>,\n) => Readonly<Record<string, string>>;\n\n/**\n * Provider headers for token exchange and refresh, fixed or derived from setup.\n * Hosts must reject invalid headers and case-insensitive overrides of client\n * authentication and transport headers. Keep values out of authorization URLs,\n * public metadata, logs, and errors.\n *\n * @since 0.0.0 @category models\n */\nexport type OAuth2Headers<SetupValue = HookContext[\"setup\"]> =\n | Readonly<Record<string, string>>\n | OAuth2HeadersHook<SetupValue>;\n\n/** @since 0.0.0 @category schemas */\nexport const OAuth2ProviderTokenResponse = Schema.Struct({\n access_token: Schema.optional(Schema.String),\n expires_at: Schema.optional(Schema.String),\n expires_in: Schema.optional(Schema.Union([Schema.Number, Schema.String])),\n refresh_token: Schema.optional(Schema.String),\n scope: Schema.optional(Schema.String),\n token_type: Schema.optional(Schema.String),\n});\n\n/** @since 0.0.0 @category models */\nexport type OAuth2ProviderTokenResponse = typeof OAuth2ProviderTokenResponse.Type;\n\n/** @since 0.0.0 @category schemas */\nexport const OAuth2TokenResponse = Schema.Struct({\n accessToken: Schema.String,\n expiresAt: Schema.optional(Schema.Number),\n expiresIn: Schema.optional(Schema.Number),\n raw: Schema.Record(Schema.String, Schema.Unknown),\n refreshToken: Schema.optional(Schema.String),\n scope: Schema.optional(Schema.String),\n tokenType: Schema.optional(Schema.String),\n});\n\n/** @since 0.0.0 @category models */\nexport type OAuth2TokenResponse = typeof OAuth2TokenResponse.Type;\n\n/** @since 0.0.0 @category errors */\nexport class OAuth2RefreshTokenUnavailableError extends Schema.TaggedError<OAuth2RefreshTokenUnavailableError>()(\n \"OAuth2RefreshTokenUnavailableError\",\n { methodIdentifier: Schema.String },\n) {}\n\n/** @since 0.0.0 @category errors */\nexport const AuthMethodHookOperation = Schema.Literals([\n \"prepare\",\n \"refresh\",\n \"prepareOAuth2Tokens\",\n \"resolve\",\n \"display\",\n \"test\",\n \"oauth2TokenRefresh\",\n]);\n\n/** @since 0.0.0 @category errors */\nexport type AuthMethodHookOperation = typeof AuthMethodHookOperation.Type;\n\n/** @since 0.0.0 @category errors */\nexport class AuthMethodHookError extends Schema.TaggedError<AuthMethodHookError>()(\n \"AuthMethodHookError\",\n { cause: Schema.Defect(), methodIdentifier: Schema.String, operation: AuthMethodHookOperation },\n) {}\n\n/** @since 0.0.0 @category schemas */\nexport const OAuth2TokenMaterial = Schema.Struct({\n accessToken: Schema.String,\n expiresAt: Schema.optional(Schema.Number),\n expiresIn: Schema.optional(Schema.Number),\n raw: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)),\n refreshToken: Schema.optional(Schema.String),\n scope: Schema.optional(Schema.String),\n tokenType: Schema.optional(Schema.String),\n});\n\n/** @since 0.0.0 @category models */\nexport interface OAuth2Setup<\n MaterialSchema extends Schema.Top,\n Setup = undefined,\n TokenRequirements = never,\n> {\n readonly scopes: readonly string[];\n readonly client: OAuth2Client<Setup>;\n readonly discoveryUrl?: OAuth2Endpoint<Setup>;\n readonly authorizationUrl?: OAuth2Endpoint<Setup>;\n readonly tokenUrl?: OAuth2Endpoint<Setup>;\n readonly pkce?: boolean;\n readonly authorizationParams?: OAuth2Params<Setup>;\n readonly tokenParams?: OAuth2Params<Setup>;\n readonly tokenHeaders?: OAuth2Headers<Setup>;\n /** Token request body encoding. Standard OAuth2 methods use form encoding. */\n readonly tokenRequestEncoding?: \"form\" | \"json\";\n /** Decode a provider response into the standard token fields before host normalization. */\n readonly tokenResponse?: Schema.Decoder<OAuth2ProviderTokenResponse>;\n readonly fromTokens?: PrepareHook<\n OAuth2TokenResponse,\n Schema.Schema.Type<MaterialSchema>,\n any,\n TokenRequirements,\n Setup\n >;\n}\n\n/** @since 0.0.0 @category models */\nexport interface OAuth2Options<\n MaterialSchema extends Schema.Top,\n ValueSchema extends Schema.Top = MaterialSchema,\n SetupSchema extends Schema.Top | undefined = undefined,\n TokenRequirements = never,\n ResolveRequirements = never,\n DisplayRequirements = never,\n TestRequirements = never,\n> extends OAuth2Setup<MaterialSchema, SchemaType<SetupSchema>, TokenRequirements> {\n readonly name?: string;\n readonly description?: string;\n readonly setup?: SetupSchema;\n readonly material: MaterialSchema;\n readonly value?: ValueSchema;\n readonly fromTokens?: PrepareHook<\n OAuth2TokenResponse,\n Schema.Schema.Type<MaterialSchema>,\n any,\n TokenRequirements,\n SchemaType<SetupSchema>\n >;\n readonly resolve?: ResolveHook<\n Schema.Schema.Type<MaterialSchema>,\n Schema.Schema.Type<ValueSchema>,\n any,\n ResolveRequirements,\n SchemaType<SetupSchema>\n >;\n readonly display?: DisplayHook<\n Schema.Schema.Type<MaterialSchema>,\n any,\n DisplayRequirements,\n SchemaType<SetupSchema>\n >;\n readonly test?: TestHook<\n Schema.Schema.Type<MaterialSchema>,\n any,\n TestRequirements,\n SchemaType<SetupSchema>\n >;\n}\n\n/**\n * A typed provider-owned auth method definition.\n *\n * @since 0.0.0\n * @category models\n */\nexport interface AuthMethod<\n out Identifier extends string = string,\n out SetupSchema extends Schema.Top | undefined = Schema.Top | undefined,\n out InputSchema extends Schema.Top | undefined = Schema.Top | undefined,\n out MaterialSchema extends Schema.Top = Schema.Top,\n out ValueSchema extends Schema.Top = Schema.Top,\n out Requirements = never,\n>\n extends Pipeable.Pipeable {\n readonly [TypeId]: RequirementsVariance<Requirements>;\n readonly identifier: Identifier;\n readonly name: string | undefined;\n readonly description: string | undefined;\n readonly kind: AuthMethodKind;\n readonly setup: SetupSchema;\n readonly input: InputSchema;\n readonly material: MaterialSchema;\n readonly value: ValueSchema;\n /** Runtime value schema retained for concise action/trigger typing. */\n readonly schema: ValueSchema;\n readonly prepare:\n | PrepareHook<\n SchemaType<InputSchema>,\n Schema.Schema.Type<MaterialSchema>,\n any,\n Requirements,\n SchemaType<SetupSchema>\n >\n | undefined;\n readonly refresh:\n | RefreshHook<Schema.Schema.Type<MaterialSchema>, any, Requirements, SchemaType<SetupSchema>>\n | undefined;\n readonly resolve:\n | ResolveHook<\n Schema.Schema.Type<MaterialSchema>,\n Schema.Schema.Type<ValueSchema>,\n any,\n Requirements,\n SchemaType<SetupSchema>\n >\n | undefined;\n readonly display:\n | DisplayHook<Schema.Schema.Type<MaterialSchema>, any, Requirements, SchemaType<SetupSchema>>\n | undefined;\n readonly test:\n | TestHook<Schema.Schema.Type<MaterialSchema>, any, Requirements, SchemaType<SetupSchema>>\n | undefined;\n readonly oauth2: OAuth2Setup<MaterialSchema, SchemaType<SetupSchema>, Requirements> | undefined;\n}\n\nconst Proto = { ...PipeableProto, [TypeId]: { _Requirements: Func.identity } };\n\nconst makeAuthMethod = <\n const Identifier extends string,\n SetupSchema extends Schema.Top | undefined,\n InputSchema extends Schema.Top | undefined,\n MaterialSchema extends Schema.Top,\n ValueSchema extends Schema.Top,\n TokenRequirements = never,\n RefreshRequirements = never,\n PrepareRequirements = never,\n ResolveRequirements = never,\n DisplayRequirements = never,\n TestRequirements = never,\n>(\n identifier: Identifier,\n options: {\n readonly name: string | undefined;\n readonly description: string | undefined;\n readonly kind: AuthMethodKind;\n readonly setup: SetupSchema;\n readonly input: InputSchema;\n readonly material: MaterialSchema;\n readonly value: ValueSchema;\n readonly prepare:\n | PrepareHook<\n SchemaType<InputSchema>,\n Schema.Schema.Type<MaterialSchema>,\n any,\n PrepareRequirements,\n SchemaType<SetupSchema>\n >\n | undefined;\n readonly refresh:\n | RefreshHook<\n Schema.Schema.Type<MaterialSchema>,\n any,\n RefreshRequirements,\n SchemaType<SetupSchema>\n >\n | undefined;\n readonly resolve:\n | ResolveHook<\n Schema.Schema.Type<MaterialSchema>,\n Schema.Schema.Type<ValueSchema>,\n any,\n ResolveRequirements,\n SchemaType<SetupSchema>\n >\n | undefined;\n readonly display:\n | DisplayHook<\n Schema.Schema.Type<MaterialSchema>,\n any,\n DisplayRequirements,\n SchemaType<SetupSchema>\n >\n | undefined;\n readonly test:\n | TestHook<Schema.Schema.Type<MaterialSchema>, any, TestRequirements, SchemaType<SetupSchema>>\n | undefined;\n readonly oauth2:\n | OAuth2Setup<MaterialSchema, SchemaType<SetupSchema>, TokenRequirements>\n | undefined;\n },\n): AuthMethod<\n Identifier,\n SetupSchema,\n InputSchema,\n MaterialSchema,\n ValueSchema,\n | TokenRequirements\n | RefreshRequirements\n | PrepareRequirements\n | ResolveRequirements\n | DisplayRequirements\n | TestRequirements\n> => {\n validateIdentifier(\"auth-method\", identifier);\n\n return Object.assign(Object.create(Proto), {\n description: options.description,\n display: options.display,\n identifier,\n input: options.input,\n kind: options.kind,\n material: options.material,\n name: options.name,\n oauth2: options.oauth2,\n prepare: options.prepare,\n refresh: options.refresh,\n resolve: options.resolve,\n schema: options.value,\n setup: options.setup,\n test: options.test,\n value: options.value,\n });\n};\n\n/**\n * Create an {@link AuthMethod} definition.\n *\n * @since 0.0.0\n * @category constructors\n */\nexport const make = <\n const Identifier extends string,\n ValueSchema extends Schema.Top,\n SetupSchema extends Schema.Top | undefined = undefined,\n>(\n identifier: Identifier,\n options: FormOptions<ValueSchema, SetupSchema>,\n): AuthMethod<Identifier, SetupSchema, ValueSchema, ValueSchema, ValueSchema> =>\n form(identifier, options);\n\n/**\n * Create a simple form auth method where input, stored material, and runtime value share one schema.\n *\n * @since 0.0.0\n * @category constructors\n */\nexport const form = <\n const Identifier extends string,\n ValueSchema extends Schema.Top,\n SetupSchema extends Schema.Top | undefined = undefined,\n>(\n identifier: Identifier,\n options: FormOptions<ValueSchema, SetupSchema>,\n): AuthMethod<Identifier, SetupSchema, ValueSchema, ValueSchema, ValueSchema> =>\n makeAuthMethod(identifier, {\n description: options.description,\n display: undefined,\n input: options.schema,\n kind: \"form\",\n material: options.schema,\n name: options.name,\n oauth2: undefined,\n prepare: undefined,\n refresh: undefined,\n resolve: undefined,\n setup: options.setup as SetupSchema,\n test: undefined,\n value: options.schema,\n });\n\n/**\n * Create a custom auth setup method.\n *\n * @since 0.0.0\n * @category constructors\n */\nexport function auth<\n const Identifier extends string,\n InputSchema extends Schema.Top,\n ValueSchema extends Schema.Top = InputSchema,\n SetupSchema extends Schema.Top | undefined = undefined,\n PrepareRequirements = never,\n RefreshRequirements = never,\n ResolveRequirements = never,\n DisplayRequirements = never,\n TestRequirements = never,\n>(\n identifier: Identifier,\n options: AuthOptionsWithoutMaterial<\n InputSchema,\n ValueSchema,\n SetupSchema,\n PrepareRequirements,\n RefreshRequirements,\n ResolveRequirements,\n DisplayRequirements,\n TestRequirements\n >,\n): AuthMethod<\n Identifier,\n SetupSchema,\n InputSchema,\n InputSchema,\n ValueSchema,\n | PrepareRequirements\n | RefreshRequirements\n | ResolveRequirements\n | DisplayRequirements\n | TestRequirements\n>;\nexport function auth<\n const Identifier extends string,\n InputSchema extends Schema.Top | undefined,\n MaterialSchema extends Schema.Top,\n ValueSchema extends Schema.Top = MaterialSchema,\n SetupSchema extends Schema.Top | undefined = undefined,\n PrepareRequirements = never,\n RefreshRequirements = never,\n ResolveRequirements = never,\n DisplayRequirements = never,\n TestRequirements = never,\n>(\n identifier: Identifier,\n options: AuthOptionsWithMaterial<\n InputSchema,\n MaterialSchema,\n ValueSchema,\n SetupSchema,\n PrepareRequirements,\n RefreshRequirements,\n ResolveRequirements,\n DisplayRequirements,\n TestRequirements\n >,\n): AuthMethod<\n Identifier,\n SetupSchema,\n InputSchema,\n MaterialSchema,\n ValueSchema,\n | PrepareRequirements\n | RefreshRequirements\n | ResolveRequirements\n | DisplayRequirements\n | TestRequirements\n>;\nexport function auth(\n identifier: string,\n options:\n | AuthOptionsWithoutMaterial<Schema.Top, Schema.Top, any, any, any, any, any, any>\n | AuthOptionsWithMaterial<\n Schema.Top | undefined,\n Schema.Top,\n Schema.Top,\n any,\n any,\n any,\n any,\n any,\n any\n >,\n): Any {\n const material = options.material ?? options.input;\n if (material === undefined) {\n throw new Error(`auth method \"${identifier}\" requires material when input is omitted`);\n }\n\n return makeAuthMethod(identifier, {\n description: options.description,\n display: options.display,\n input: options.input,\n kind: \"custom\",\n material,\n name: options.name,\n oauth2: undefined,\n prepare: options.prepare,\n refresh: options.refresh,\n resolve: options.resolve,\n setup: options.setup,\n test: options.test,\n value: options.value ?? material,\n });\n}\n\n/**\n * Create an OAuth2 auth method over the same setup primitive.\n *\n * OAuth2 has no submitted form input; the platform owns the browser redirect,\n * callback, state/PKCE, and token exchange before storing mapped material.\n *\n * @since 0.0.0\n * @category constructors\n */\nexport const oauth2 = <\n const Identifier extends string,\n MaterialSchema extends Schema.Top,\n ValueSchema extends Schema.Top = MaterialSchema,\n SetupSchema extends Schema.Top | undefined = undefined,\n TokenRequirements = never,\n ResolveRequirements = never,\n DisplayRequirements = never,\n TestRequirements = never,\n>(\n identifier: Identifier,\n options: OAuth2Options<\n MaterialSchema,\n ValueSchema,\n SetupSchema,\n TokenRequirements,\n ResolveRequirements,\n DisplayRequirements,\n TestRequirements\n >,\n): AuthMethod<\n Identifier,\n SetupSchema,\n undefined,\n MaterialSchema,\n ValueSchema,\n // The built-in oauth2 refresh path needs the token refresher service and\n // re-decodes refreshed material, so those join the user hook requirements.\n | OAuth2TokenRefresher.Service\n | Schema.Codec.DecodingServices<MaterialSchema>\n | TokenRequirements\n | ResolveRequirements\n | DisplayRequirements\n | TestRequirements\n> => {\n const oauth2Setup: OAuth2Setup<MaterialSchema, SchemaType<SetupSchema>, TokenRequirements> = {\n client: options.client,\n scopes: options.scopes,\n ...(options.discoveryUrl === undefined ? {} : { discoveryUrl: options.discoveryUrl }),\n ...(options.authorizationUrl === undefined\n ? {}\n : { authorizationUrl: options.authorizationUrl }),\n ...(options.tokenUrl === undefined ? {} : { tokenUrl: options.tokenUrl }),\n ...(options.pkce === undefined ? {} : { pkce: options.pkce }),\n ...(options.authorizationParams === undefined\n ? {}\n : { authorizationParams: options.authorizationParams }),\n ...(options.tokenParams === undefined ? {} : { tokenParams: options.tokenParams }),\n ...(options.tokenHeaders === undefined ? {} : { tokenHeaders: options.tokenHeaders }),\n ...(options.tokenRequestEncoding === undefined\n ? {}\n : { tokenRequestEncoding: options.tokenRequestEncoding }),\n ...(options.tokenResponse === undefined ? {} : { tokenResponse: options.tokenResponse }),\n ...(options.fromTokens === undefined ? {} : { fromTokens: options.fromTokens }),\n };\n\n return makeAuthMethod(identifier, {\n description: options.description,\n display: options.display,\n input: undefined,\n kind: \"oauth2\",\n material: options.material,\n name: options.name,\n oauth2: oauth2Setup,\n prepare: undefined,\n refresh: undefined,\n resolve: options.resolve,\n setup: options.setup as SetupSchema,\n test: options.test,\n value: (options.value ?? options.material) as ValueSchema,\n });\n};\n\n/**\n * Check if a value is an {@link AuthMethod}.\n *\n * @since 0.0.0\n * @category guards\n */\nexport const isAuthMethod = (u: unknown): u is Any => Predicate.hasProperty(u, TypeId);\n\n/**\n * Resolved value type carried by a {@link AuthMethod}.\n *\n * @since 0.0.0\n * @category type-level\n */\nexport type Value<Method extends Any> = Schema.Schema.Type<ValueSchema<Method>>;\n\n/** @since 0.0.0 @category type-level */\nexport type Setup<Method extends Any> = SchemaType<SetupSchema<Method>>;\n\n/**\n * Submitted setup input type carried by an {@link AuthMethod}.\n *\n * @since 0.0.0\n * @category type-level\n */\nexport type Input<Method extends Any> = SchemaType<InputSchema<Method>>;\n\n/**\n * Encrypted stored material type carried by an {@link AuthMethod}.\n *\n * @since 0.0.0\n * @category type-level\n */\nexport type Material<Method extends Any> = Schema.Schema.Type<MaterialSchema<Method>>;\n\n/**\n * Schema type carried by a {@link AuthMethod}.\n *\n * @since 0.0.0\n * @category type-level\n */\nexport type ValueSchema<Method extends Any> = Method[\"value\"];\n\n/** @since 0.0.0 @category type-level */\nexport type SetupSchema<Method extends Any> = Method[\"setup\"];\n\n/** @since 0.0.0 @category type-level */\nexport type InputSchema<Method extends Any> = Method[\"input\"];\n\n/** @since 0.0.0 @category type-level */\nexport type MaterialSchema<Method extends Any> = Method[\"material\"];\n\n/**\n * Services required by the method's hooks, as one union.\n *\n * @since 0.0.0\n * @category type-level\n */\nexport type Requirements<Method extends Any> = Types.Covariant.Type<\n Method[TypeId][\"_Requirements\"]\n>;\n\n// Compatibility exports keep the original AuthMethod namespace intact while\n// focused callers can import each runtime module directly.\nexport {\n type Binding,\n type BindingFor,\n type BindingForMethod,\n type MatchCases,\n type Context,\n makeBinding,\n isBindingForMethod,\n} from \"./AuthMethodBinding.ts\";\nexport {\n decodeValue,\n decodeSetup,\n decodeInput,\n decodeMaterial,\n prepareDecoded,\n prepareUnknown,\n prepare,\n refreshDecoded,\n refreshUnknown,\n prepareOAuth2Tokens,\n resolveDecoded,\n resolve,\n resolveUnknown,\n display,\n test,\n} from \"./AuthMethodExecution.ts\";\nexport { Service } from \"./OAuth2TokenRefresher.ts\";\nexport * as OAuth2TokenRefresher from \"./OAuth2TokenRefresher.ts\";\n"],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import "./AuthMethodBinding.js";
|
|
2
|
+
import { Any, Value } from "./AuthMethod.js";
|
|
3
|
+
declare namespace AuthMethodBinding_d_exports {
|
|
4
|
+
export { AuthMethodBinding_d_exports as AuthMethodBinding, Binding, BindingFor, BindingForMethod, Context, MatchCases, isBindingForMethod, makeBinding };
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* A resolved connection binding selected for one invocation.
|
|
8
|
+
*
|
|
9
|
+
* The selected connection is backed by one provider-owned auth method.
|
|
10
|
+
*
|
|
11
|
+
* @since 0.0.0
|
|
12
|
+
* @category models
|
|
13
|
+
*/
|
|
14
|
+
export type Binding<out Method extends Any = Any> = {
|
|
15
|
+
readonly providerId: string;
|
|
16
|
+
readonly connectionId: string | undefined;
|
|
17
|
+
readonly method: Method;
|
|
18
|
+
readonly methodId: Method["identifier"];
|
|
19
|
+
readonly value: Value<Method>;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Create a resolved connection binding.
|
|
23
|
+
*
|
|
24
|
+
* @since 0.0.0
|
|
25
|
+
* @category constructors
|
|
26
|
+
*/
|
|
27
|
+
export declare const makeBinding: <Method extends Any>(options: {
|
|
28
|
+
readonly providerId: string;
|
|
29
|
+
readonly connectionId: string | undefined;
|
|
30
|
+
readonly method: Method;
|
|
31
|
+
readonly value: Value<Method>;
|
|
32
|
+
}) => Binding<Method>;
|
|
33
|
+
/**
|
|
34
|
+
* Union of resolved connection bindings for the provided method list.
|
|
35
|
+
*
|
|
36
|
+
* @since 0.0.0
|
|
37
|
+
* @category type-level
|
|
38
|
+
*/
|
|
39
|
+
export type BindingFor<Methods extends readonly Any[]> = Methods[number] extends (infer Method) ? Method extends Any ? Binding<Method> : never : never;
|
|
40
|
+
/**
|
|
41
|
+
* Resolved connection binding narrowed to one method from a provider-owned method list.
|
|
42
|
+
*
|
|
43
|
+
* @since 0.0.0
|
|
44
|
+
* @category type-level
|
|
45
|
+
*/
|
|
46
|
+
export type BindingForMethod<Methods extends readonly Any[], Method extends Methods[number]> = BindingFor<Methods> & Binding<Method>;
|
|
47
|
+
/**
|
|
48
|
+
* Exhaustive handlers for the currently selected connection binding.
|
|
49
|
+
*
|
|
50
|
+
* @since 0.0.0
|
|
51
|
+
* @category models
|
|
52
|
+
*/
|
|
53
|
+
export type MatchCases<Methods extends readonly Any[], Result> = { readonly [Method in Methods[number] as Method["identifier"]]: (binding: BindingForMethod<Methods, Method>) => Result; };
|
|
54
|
+
/**
|
|
55
|
+
* Runtime auth helper context exposed to action handlers.
|
|
56
|
+
*
|
|
57
|
+
* @since 0.0.0
|
|
58
|
+
* @category models
|
|
59
|
+
*/
|
|
60
|
+
export interface Context<Methods extends readonly Any[]> {
|
|
61
|
+
readonly current: BindingFor<Methods>;
|
|
62
|
+
is<Method extends Methods[number]>(method: Method): this is Context<Methods> & {
|
|
63
|
+
readonly current: BindingForMethod<Methods, Method>;
|
|
64
|
+
};
|
|
65
|
+
is<Method extends Methods[number]>(binding: BindingFor<Methods>, method: Method): binding is BindingForMethod<Methods, Method>;
|
|
66
|
+
match<Result>(cases: MatchCases<Methods, Result>): Result;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Runtime type guard for matching a resolved binding against a provider-owned method.
|
|
70
|
+
*
|
|
71
|
+
* @since 0.0.0
|
|
72
|
+
* @category guards
|
|
73
|
+
*/
|
|
74
|
+
export declare const isBindingForMethod: <Methods extends readonly Any[], Method extends Methods[number]>(binding: BindingFor<Methods>, method: Method) => binding is BindingForMethod<Methods, Method>;
|
|
75
|
+
//#endregion
|
|
76
|
+
export { AuthMethodBinding_d_exports as AuthMethodBinding, AuthMethodBinding_d_exports };
|
|
77
|
+
//# sourceMappingURL=AuthMethodBinding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthMethodBinding.d.ts","names":["AuthMethod.Any","AuthMethod.Value"],"sources":["../src/AuthMethodBinding.ts"],"mappings":";;;;;;;;;;;;;YAeY,YAAY,eAAeA,MAAiBA;WAC7C;WACA;WACA,QAAQ;WACR,UAAU;WACV,OAAOC,MAAiB;;;;;;;;qBAStB,cAAe,eAAeD,KAAc;WAC9C;WACA;WACA,QAAQ;WACR,OAAOC,MAAiB;MAC/B,QAAQ;;;;;;;YAcA,WAAW,yBAAyBD,SAC9C,+BAA8B,UAC1B,eAAeA,MACb,QAAQ;;;;;;;YAUJ,iBACV,yBAAyBA,OACzB,eAAe,mBACb,WAAW,WAAW,QAAQ;;;;;;;YAQtB,WAAW,yBAAyBA,OAAkB,sBACtD,UAAU,mBAAmB,wBACrC,SAAS,iBAAiB,SAAS,YAChC;;;;;;;iBASU,QAAQ,yBAAyBA;WACvC,SAAS,WAAW;EAE7B,GAAG,eAAe,iBAChB,QAAQ,iBACC,QAAQ;aAAsB,SAAS,iBAAiB,SAAS;;EAC5E,GAAG,eAAe,iBAChB,SAAS,WAAW,UACpB,QAAQ,SACP,WAAW,iBAAiB,SAAS;EACxC,MAAM,QAAQ,OAAO,WAAW,SAAS,UAAU;;;;;;;;qBASxC,qBACX,yBAAyBA,OACzB,eAAe,iBAAe,SAErB,WAAW,UAAQ,QACpB,WACP,WAAW,iBAAiB,SAAS"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { __exportAll } from "./_virtual/_rolldown/runtime.js";
|
|
2
|
+
//#region src/AuthMethodBinding.ts
|
|
3
|
+
var AuthMethodBinding_exports = /* @__PURE__ */ __exportAll({
|
|
4
|
+
AuthMethodBinding: () => AuthMethodBinding_exports,
|
|
5
|
+
isBindingForMethod: () => isBindingForMethod,
|
|
6
|
+
makeBinding: () => makeBinding
|
|
7
|
+
});
|
|
8
|
+
/**
|
|
9
|
+
* Create a resolved connection binding.
|
|
10
|
+
*
|
|
11
|
+
* @since 0.0.0
|
|
12
|
+
* @category constructors
|
|
13
|
+
*/
|
|
14
|
+
const makeBinding = (options) => ({
|
|
15
|
+
connectionId: options.connectionId,
|
|
16
|
+
method: options.method,
|
|
17
|
+
methodId: options.method.identifier,
|
|
18
|
+
providerId: options.providerId,
|
|
19
|
+
value: options.value
|
|
20
|
+
});
|
|
21
|
+
/**
|
|
22
|
+
* Runtime type guard for matching a resolved binding against a provider-owned method.
|
|
23
|
+
*
|
|
24
|
+
* @since 0.0.0
|
|
25
|
+
* @category guards
|
|
26
|
+
*/
|
|
27
|
+
const isBindingForMethod = (binding, method) => binding.method === method;
|
|
28
|
+
//#endregion
|
|
29
|
+
export { AuthMethodBinding_exports as AuthMethodBinding, AuthMethodBinding_exports, isBindingForMethod, makeBinding };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=AuthMethodBinding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthMethodBinding.js","names":[],"sources":["../src/AuthMethodBinding.ts"],"sourcesContent":["/**\n * Resolved auth method bindings exposed to action and trigger handlers.\n *\n * @since 0.0.0\n */\nimport type * as AuthMethod from \"./AuthMethod.ts\";\n\n/**\n * A resolved connection binding selected for one invocation.\n *\n * The selected connection is backed by one provider-owned auth method.\n *\n * @since 0.0.0\n * @category models\n */\nexport type Binding<out Method extends AuthMethod.Any = AuthMethod.Any> = {\n readonly providerId: string;\n readonly connectionId: string | undefined;\n readonly method: Method;\n readonly methodId: Method[\"identifier\"];\n readonly value: AuthMethod.Value<Method>;\n};\n\n/**\n * Create a resolved connection binding.\n *\n * @since 0.0.0\n * @category constructors\n */\nexport const makeBinding = <Method extends AuthMethod.Any>(options: {\n readonly providerId: string;\n readonly connectionId: string | undefined;\n readonly method: Method;\n readonly value: AuthMethod.Value<Method>;\n}): Binding<Method> => ({\n connectionId: options.connectionId,\n method: options.method,\n methodId: options.method.identifier,\n providerId: options.providerId,\n value: options.value,\n});\n\n/**\n * Union of resolved connection bindings for the provided method list.\n *\n * @since 0.0.0\n * @category type-level\n */\nexport type BindingFor<Methods extends readonly AuthMethod.Any[]> =\n Methods[number] extends infer Method\n ? Method extends AuthMethod.Any\n ? Binding<Method>\n : never\n : never;\n\n/**\n * Resolved connection binding narrowed to one method from a provider-owned method list.\n *\n * @since 0.0.0\n * @category type-level\n */\nexport type BindingForMethod<\n Methods extends readonly AuthMethod.Any[],\n Method extends Methods[number],\n> = BindingFor<Methods> & Binding<Method>;\n\n/**\n * Exhaustive handlers for the currently selected connection binding.\n *\n * @since 0.0.0\n * @category models\n */\nexport type MatchCases<Methods extends readonly AuthMethod.Any[], Result> = {\n readonly [Method in Methods[number] as Method[\"identifier\"]]: (\n binding: BindingForMethod<Methods, Method>,\n ) => Result;\n};\n\n/**\n * Runtime auth helper context exposed to action handlers.\n *\n * @since 0.0.0\n * @category models\n */\nexport interface Context<Methods extends readonly AuthMethod.Any[]> {\n readonly current: BindingFor<Methods>;\n // tsrs accepts this `this` predicate only on an interface or class member.\n is<Method extends Methods[number]>(\n method: Method,\n ): this is Context<Methods> & { readonly current: BindingForMethod<Methods, Method> };\n is<Method extends Methods[number]>(\n binding: BindingFor<Methods>,\n method: Method,\n ): binding is BindingForMethod<Methods, Method>;\n match<Result>(cases: MatchCases<Methods, Result>): Result;\n}\n\n/**\n * Runtime type guard for matching a resolved binding against a provider-owned method.\n *\n * @since 0.0.0\n * @category guards\n */\nexport const isBindingForMethod = <\n Methods extends readonly AuthMethod.Any[],\n Method extends Methods[number],\n>(\n binding: BindingFor<Methods>,\n method: Method,\n): binding is BindingForMethod<Methods, Method> => (binding as Binding).method === method;\n\nexport * as AuthMethodBinding from \"./AuthMethodBinding.ts\";\n"],"mappings":";;;;;;;;;;;;;AA6BA,MAAa,eAA8C,aAKnC;CACtB,cAAc,QAAQ;CACtB,QAAQ,QAAQ;CAChB,UAAU,QAAQ,OAAO;CACzB,YAAY,QAAQ;CACpB,OAAO,QAAQ;AACjB;;;;;;;AA+DA,MAAa,sBAIX,SACA,WACkD,QAAoB,WAAW"}
|