@effect-auth/core 0.1.0-alpha.18 → 0.1.0-alpha.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -5
- package/dist/DevEmail.d.ts +44 -0
- package/dist/DevEmail.d.ts.map +1 -0
- package/dist/DevEmail.js +115 -0
- package/dist/DevEmail.js.map +1 -0
- package/dist/DevelopmentSeed.d.ts +47 -0
- package/dist/DevelopmentSeed.d.ts.map +1 -0
- package/dist/DevelopmentSeed.js +337 -0
- package/dist/DevelopmentSeed.js.map +1 -0
- package/dist/DrizzleBunSqliteStorage.d.ts +1 -1
- package/dist/DrizzleBunSqliteStorage.d.ts.map +1 -1
- package/dist/DrizzleD1SqliteStorage.d.ts +1 -1
- package/dist/DrizzleD1SqliteStorage.d.ts.map +1 -1
- package/dist/DrizzleEffectSqliteStorage.d.ts +1 -1
- package/dist/DrizzleEffectSqliteStorage.d.ts.map +1 -1
- package/dist/DrizzleNodeSqliteStorage.d.ts +1 -1
- package/dist/DrizzleNodeSqliteStorage.d.ts.map +1 -1
- package/dist/DrizzlePostgresStorage.d.ts +26 -0
- package/dist/DrizzlePostgresStorage.d.ts.map +1 -0
- package/dist/DrizzlePostgresStorage.js +14 -0
- package/dist/DrizzlePostgresStorage.js.map +1 -0
- package/dist/EffectQbPostgresStorage.d.ts +8 -1
- package/dist/EffectQbPostgresStorage.d.ts.map +1 -1
- package/dist/EffectQbPostgresStorage.js +359 -2
- package/dist/EffectQbPostgresStorage.js.map +1 -1
- package/dist/EffectQbSqliteStorage.d.ts +42 -2
- package/dist/EffectQbSqliteStorage.d.ts.map +1 -1
- package/dist/EffectQbSqliteStorage.js +337 -1
- package/dist/EffectQbSqliteStorage.js.map +1 -1
- package/dist/HttpApi/Api.d.ts +151 -98
- package/dist/HttpApi/Api.d.ts.map +1 -1
- package/dist/HttpApi/Api.js +122 -72
- package/dist/HttpApi/Api.js.map +1 -1
- package/dist/HttpApi/ClientApi.d.ts +136 -136
- package/dist/HttpApi/Endpoints.d.ts +33 -1
- package/dist/HttpApi/Endpoints.d.ts.map +1 -1
- package/dist/HttpApi/Endpoints.js +31 -2
- package/dist/HttpApi/Endpoints.js.map +1 -1
- package/dist/HttpApi/Errors.d.ts +11 -3
- package/dist/HttpApi/Errors.d.ts.map +1 -1
- package/dist/HttpApi/Errors.js +16 -0
- package/dist/HttpApi/Errors.js.map +1 -1
- package/dist/HttpApi/Middleware.d.ts +12 -0
- package/dist/HttpApi/Middleware.d.ts.map +1 -1
- package/dist/HttpApi/Middleware.js +8 -0
- package/dist/HttpApi/Middleware.js.map +1 -1
- package/dist/HttpApi/OAuthDeviceAuthorization.d.ts +106 -0
- package/dist/HttpApi/OAuthDeviceAuthorization.d.ts.map +1 -0
- package/dist/HttpApi/OAuthDeviceAuthorization.js +415 -0
- package/dist/HttpApi/OAuthDeviceAuthorization.js.map +1 -0
- package/dist/HttpApi/OAuthToken.d.ts +1 -1
- package/dist/HttpApi/OAuthToken.d.ts.map +1 -1
- package/dist/HttpApi/OAuthToken.js +1 -1
- package/dist/HttpApi/OAuthToken.js.map +1 -1
- package/dist/HttpApi/Operations/OAuthDeviceAuthorization.d.ts +23 -0
- package/dist/HttpApi/Operations/OAuthDeviceAuthorization.d.ts.map +1 -0
- package/dist/HttpApi/Operations/OAuthDeviceAuthorization.js +7 -0
- package/dist/HttpApi/Operations/OAuthDeviceAuthorization.js.map +1 -0
- package/dist/HttpApi/Operations/OAuthToken.d.ts +10 -0
- package/dist/HttpApi/Operations/OAuthToken.d.ts.map +1 -1
- package/dist/HttpApi/Operations/OAuthToken.js +4 -0
- package/dist/HttpApi/Operations/OAuthToken.js.map +1 -1
- package/dist/HttpApi/Operations/index.d.ts +1 -0
- package/dist/HttpApi/Operations/index.d.ts.map +1 -1
- package/dist/HttpApi/Operations/index.js +1 -0
- package/dist/HttpApi/Operations/index.js.map +1 -1
- package/dist/HttpApi/PasswordContract.d.ts +9 -9
- package/dist/HttpApi/Schemas.d.ts +38 -0
- package/dist/HttpApi/Schemas.d.ts.map +1 -1
- package/dist/HttpApi/Schemas.js +36 -1
- package/dist/HttpApi/Schemas.js.map +1 -1
- package/dist/HttpApi/index.d.ts +3 -1
- package/dist/HttpApi/index.d.ts.map +1 -1
- package/dist/HttpApi/index.js +3 -1
- package/dist/HttpApi/index.js.map +1 -1
- package/dist/OAuth.d.ts +46 -1
- package/dist/OAuth.d.ts.map +1 -1
- package/dist/OAuth.js +118 -4
- package/dist/OAuth.js.map +1 -1
- package/dist/OAuthDeviceAuthorization.d.ts +378 -0
- package/dist/OAuthDeviceAuthorization.d.ts.map +1 -0
- package/dist/OAuthDeviceAuthorization.js +860 -0
- package/dist/OAuthDeviceAuthorization.js.map +1 -0
- package/dist/OAuthDeviceClient.d.ts +76 -0
- package/dist/OAuthDeviceClient.d.ts.map +1 -0
- package/dist/OAuthDeviceClient.js +362 -0
- package/dist/OAuthDeviceClient.js.map +1 -0
- package/dist/PostgresStorageMigrations.d.ts +2 -1
- package/dist/PostgresStorageMigrations.d.ts.map +1 -1
- package/dist/PostgresStorageMigrations.js +54 -0
- package/dist/PostgresStorageMigrations.js.map +1 -1
- package/dist/Retention.d.ts +6 -1
- package/dist/Retention.d.ts.map +1 -1
- package/dist/Retention.js +49 -12
- package/dist/Retention.js.map +1 -1
- package/dist/SqliteStorageSchemaData.d.ts +2 -0
- package/dist/SqliteStorageSchemaData.d.ts.map +1 -0
- package/dist/SqliteStorageSchemaData.js +508 -0
- package/dist/SqliteStorageSchemaData.js.map +1 -0
- package/dist/StorageMigrations.d.ts +2 -1
- package/dist/StorageMigrations.d.ts.map +1 -1
- package/dist/StorageMigrations.js +32 -0
- package/dist/StorageMigrations.js.map +1 -1
- package/dist/StorageSchemaGenerator.d.ts +70 -12
- package/dist/StorageSchemaGenerator.d.ts.map +1 -1
- package/dist/StorageSchemaGenerator.js +478 -82
- package/dist/StorageSchemaGenerator.js.map +1 -1
- package/migrations/0029_auth_oauth_device_authorization.sql +28 -0
- package/migrations/postgres/0010_auth_oauth_device_authorization.sql +50 -0
- package/package.json +24 -16
- package/dist/DrizzleDurableObjectSqliteStorage.d.ts +0 -19
- package/dist/DrizzleDurableObjectSqliteStorage.d.ts.map +0 -1
- package/dist/DrizzleDurableObjectSqliteStorage.js +0 -14
- package/dist/DrizzleDurableObjectSqliteStorage.js.map +0 -1
- package/dist/DrizzleWasmSqliteStorage.d.ts +0 -23
- package/dist/DrizzleWasmSqliteStorage.d.ts.map +0 -1
- package/dist/DrizzleWasmSqliteStorage.js +0 -15
- package/dist/DrizzleWasmSqliteStorage.js.map +0 -1
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
import { Brand, Context, Duration, Effect, Layer, Redacted } from "effect";
|
|
2
|
+
import type * as OptionTypes from "effect/Option";
|
|
3
|
+
import { Crypto } from "./Crypto.js";
|
|
4
|
+
import type { CryptoKey } from "./Crypto.js";
|
|
5
|
+
import { OAuthClientId, UnixMillis } from "./Identifiers.js";
|
|
6
|
+
import { OAuthClientRegistry } from "./OAuth.js";
|
|
7
|
+
import type { OAuthClientLookupInput, OAuthClientRecord, OAuthClientRegistryError, OAuthProviderModeTokenRecord, OAuthTokenResponse } from "./OAuth.js";
|
|
8
|
+
export declare const oauthDeviceCodeGrantType: "urn:ietf:params:oauth:grant-type:device_code";
|
|
9
|
+
export type OAuthDeviceCode = Brand.Branded<string, "auth/OAuthDeviceCode">;
|
|
10
|
+
export declare const OAuthDeviceCode: Brand.Constructor<OAuthDeviceCode>;
|
|
11
|
+
export type OAuthDeviceUserCode = Brand.Branded<string, "auth/OAuthDeviceUserCode">;
|
|
12
|
+
export declare const OAuthDeviceUserCode: Brand.Constructor<OAuthDeviceUserCode>;
|
|
13
|
+
export type OAuthDeviceAuthorizationId = Brand.Branded<string, "auth/OAuthDeviceAuthorizationId">;
|
|
14
|
+
export declare const OAuthDeviceAuthorizationId: Brand.Constructor<OAuthDeviceAuthorizationId>;
|
|
15
|
+
export declare const oauthDeviceUserCodeAlphabet = "BCDFGHJKLMNPQRSTVWXZ";
|
|
16
|
+
export declare const defaultOAuthDeviceCodeBytes = 32;
|
|
17
|
+
export declare const defaultOAuthDeviceAuthorizationIdBytes = 16;
|
|
18
|
+
export declare const defaultOAuthDeviceAuthorizationTtl: Duration.Duration;
|
|
19
|
+
export declare const defaultOAuthDeviceAuthorizationPollInterval: Duration.Duration;
|
|
20
|
+
export declare const defaultOAuthDeviceAuthorizationCollisionAttempts = 8;
|
|
21
|
+
export declare const oauthDeviceAuthorizationSlowDownSeconds = 5;
|
|
22
|
+
export interface OAuthDeviceAuthorizationClientRegistryService {
|
|
23
|
+
readonly find: (input: OAuthClientLookupInput) => Effect.Effect<OptionTypes.Option<OAuthClientRecord>, OAuthClientRegistryError>;
|
|
24
|
+
}
|
|
25
|
+
interface OAuthDeviceAuthorizationRecordBase {
|
|
26
|
+
readonly id: OAuthDeviceAuthorizationId;
|
|
27
|
+
readonly deviceCodeHash: string;
|
|
28
|
+
readonly userCodeHash: string;
|
|
29
|
+
readonly clientId: OAuthClientId;
|
|
30
|
+
readonly requestedScopes: readonly string[];
|
|
31
|
+
readonly issuedAt: UnixMillis;
|
|
32
|
+
readonly expiresAt: UnixMillis;
|
|
33
|
+
readonly pollIntervalSeconds: number;
|
|
34
|
+
readonly nextPollAt: UnixMillis;
|
|
35
|
+
readonly lastPolledAt?: UnixMillis;
|
|
36
|
+
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
37
|
+
}
|
|
38
|
+
export interface OAuthDeviceAuthorizationPendingRecord extends OAuthDeviceAuthorizationRecordBase {
|
|
39
|
+
readonly status: "pending";
|
|
40
|
+
}
|
|
41
|
+
export interface OAuthDeviceAuthorizationApprovedRecord extends OAuthDeviceAuthorizationRecordBase {
|
|
42
|
+
readonly status: "approved";
|
|
43
|
+
readonly subject: string;
|
|
44
|
+
readonly grantedScopes: readonly string[];
|
|
45
|
+
readonly approvedAt: UnixMillis;
|
|
46
|
+
readonly consumedAt?: UnixMillis;
|
|
47
|
+
}
|
|
48
|
+
export interface OAuthDeviceAuthorizationDeniedRecord extends OAuthDeviceAuthorizationRecordBase {
|
|
49
|
+
readonly status: "denied";
|
|
50
|
+
readonly deniedAt: UnixMillis;
|
|
51
|
+
}
|
|
52
|
+
export type OAuthDeviceAuthorizationRecord = OAuthDeviceAuthorizationPendingRecord | OAuthDeviceAuthorizationApprovedRecord | OAuthDeviceAuthorizationDeniedRecord;
|
|
53
|
+
export interface OAuthDeviceAuthorizationStoreDeviceCodeHashInput {
|
|
54
|
+
readonly deviceCodeHash: string;
|
|
55
|
+
}
|
|
56
|
+
export interface OAuthDeviceAuthorizationStoreUserCodeHashInput {
|
|
57
|
+
readonly userCodeHash: string;
|
|
58
|
+
}
|
|
59
|
+
export interface OAuthDeviceAuthorizationStoreDecisionApproveInput {
|
|
60
|
+
readonly id: OAuthDeviceAuthorizationId;
|
|
61
|
+
readonly decision: "approve";
|
|
62
|
+
readonly subject: string;
|
|
63
|
+
readonly grantedScopes: readonly string[];
|
|
64
|
+
readonly decidedAt: UnixMillis;
|
|
65
|
+
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
66
|
+
}
|
|
67
|
+
export interface OAuthDeviceAuthorizationStoreDecisionDenyInput {
|
|
68
|
+
readonly id: OAuthDeviceAuthorizationId;
|
|
69
|
+
readonly decision: "deny";
|
|
70
|
+
readonly decidedAt: UnixMillis;
|
|
71
|
+
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
72
|
+
}
|
|
73
|
+
export type OAuthDeviceAuthorizationStoreDecisionInput = OAuthDeviceAuthorizationStoreDecisionApproveInput | OAuthDeviceAuthorizationStoreDecisionDenyInput;
|
|
74
|
+
export type OAuthDeviceAuthorizationStoreDecisionResult = {
|
|
75
|
+
readonly status: "approved";
|
|
76
|
+
readonly record: OAuthDeviceAuthorizationApprovedRecord;
|
|
77
|
+
} | {
|
|
78
|
+
readonly status: "denied";
|
|
79
|
+
readonly record: OAuthDeviceAuthorizationDeniedRecord;
|
|
80
|
+
} | {
|
|
81
|
+
readonly status: "missing";
|
|
82
|
+
} | {
|
|
83
|
+
readonly status: "expired";
|
|
84
|
+
readonly record: OAuthDeviceAuthorizationRecord;
|
|
85
|
+
} | {
|
|
86
|
+
readonly status: "already_decided";
|
|
87
|
+
readonly record: OAuthDeviceAuthorizationApprovedRecord | OAuthDeviceAuthorizationDeniedRecord;
|
|
88
|
+
};
|
|
89
|
+
export interface OAuthDeviceAuthorizationStorePollInput {
|
|
90
|
+
readonly deviceCodeHash: string;
|
|
91
|
+
readonly clientId: OAuthClientId;
|
|
92
|
+
readonly now: UnixMillis;
|
|
93
|
+
}
|
|
94
|
+
export interface OAuthDeviceAuthorizationStoreDeleteExpiredInput {
|
|
95
|
+
readonly beforeExpiresAt: UnixMillis;
|
|
96
|
+
}
|
|
97
|
+
export type OAuthDeviceAuthorizationConsumedRecord = OAuthDeviceAuthorizationApprovedRecord & {
|
|
98
|
+
readonly consumedAt: UnixMillis;
|
|
99
|
+
};
|
|
100
|
+
export type OAuthDeviceAuthorizationUnconsumedApprovedRecord = Omit<OAuthDeviceAuthorizationApprovedRecord, "consumedAt"> & {
|
|
101
|
+
readonly consumedAt?: never;
|
|
102
|
+
};
|
|
103
|
+
export type OAuthDeviceAuthorizationStorePollResult = {
|
|
104
|
+
readonly status: "pending";
|
|
105
|
+
readonly record: OAuthDeviceAuthorizationPendingRecord;
|
|
106
|
+
} | {
|
|
107
|
+
readonly status: "slow_down";
|
|
108
|
+
readonly record: OAuthDeviceAuthorizationRecord;
|
|
109
|
+
readonly interval: number;
|
|
110
|
+
} | {
|
|
111
|
+
readonly status: "approved";
|
|
112
|
+
readonly record: OAuthDeviceAuthorizationUnconsumedApprovedRecord;
|
|
113
|
+
} | {
|
|
114
|
+
readonly status: "denied";
|
|
115
|
+
readonly record: OAuthDeviceAuthorizationDeniedRecord;
|
|
116
|
+
} | {
|
|
117
|
+
readonly status: "expired";
|
|
118
|
+
readonly record: OAuthDeviceAuthorizationRecord;
|
|
119
|
+
} | {
|
|
120
|
+
readonly status: "missing";
|
|
121
|
+
} | {
|
|
122
|
+
readonly status: "already_consumed";
|
|
123
|
+
readonly record: OAuthDeviceAuthorizationConsumedRecord;
|
|
124
|
+
};
|
|
125
|
+
export type OAuthDeviceAuthorizationStoreOperation = "insert" | "find-by-device-code-hash" | "find-by-user-code-hash" | "find-by-id" | "decide" | "poll" | "delete-expired";
|
|
126
|
+
declare const OAuthDeviceAuthorizationStoreError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
127
|
+
readonly _tag: "OAuthDeviceAuthorizationStoreError";
|
|
128
|
+
} & Readonly<A>;
|
|
129
|
+
export declare class OAuthDeviceAuthorizationStoreError extends OAuthDeviceAuthorizationStoreError_base<{
|
|
130
|
+
readonly operation: OAuthDeviceAuthorizationStoreOperation;
|
|
131
|
+
readonly message: string;
|
|
132
|
+
readonly cause?: unknown;
|
|
133
|
+
}> {
|
|
134
|
+
}
|
|
135
|
+
export interface OAuthDeviceAuthorizationStoreService {
|
|
136
|
+
readonly insert: (record: OAuthDeviceAuthorizationPendingRecord) => Effect.Effect<boolean, OAuthDeviceAuthorizationStoreError>;
|
|
137
|
+
readonly findByDeviceCodeHash: (input: OAuthDeviceAuthorizationStoreDeviceCodeHashInput) => Effect.Effect<OptionTypes.Option<OAuthDeviceAuthorizationRecord>, OAuthDeviceAuthorizationStoreError>;
|
|
138
|
+
readonly findByUserCodeHash: (input: OAuthDeviceAuthorizationStoreUserCodeHashInput) => Effect.Effect<OptionTypes.Option<OAuthDeviceAuthorizationRecord>, OAuthDeviceAuthorizationStoreError>;
|
|
139
|
+
readonly findById: (id: OAuthDeviceAuthorizationId) => Effect.Effect<OptionTypes.Option<OAuthDeviceAuthorizationRecord>, OAuthDeviceAuthorizationStoreError>;
|
|
140
|
+
readonly decide: (input: OAuthDeviceAuthorizationStoreDecisionInput) => Effect.Effect<OAuthDeviceAuthorizationStoreDecisionResult, OAuthDeviceAuthorizationStoreError>;
|
|
141
|
+
readonly poll: (input: OAuthDeviceAuthorizationStorePollInput) => Effect.Effect<OAuthDeviceAuthorizationStorePollResult, OAuthDeviceAuthorizationStoreError>;
|
|
142
|
+
readonly deleteExpired?: (input: OAuthDeviceAuthorizationStoreDeleteExpiredInput) => Effect.Effect<number, OAuthDeviceAuthorizationStoreError>;
|
|
143
|
+
}
|
|
144
|
+
declare const OAuthDeviceAuthorizationStore_base: Context.ServiceClass<OAuthDeviceAuthorizationStore, "auth/OAuthDeviceAuthorizationStore", OAuthDeviceAuthorizationStoreService>;
|
|
145
|
+
export declare class OAuthDeviceAuthorizationStore extends OAuthDeviceAuthorizationStore_base {
|
|
146
|
+
}
|
|
147
|
+
export interface OAuthDeviceAuthorizationDetails {
|
|
148
|
+
readonly id: OAuthDeviceAuthorizationId;
|
|
149
|
+
readonly clientId: OAuthClientId;
|
|
150
|
+
readonly requestedScopes: readonly string[];
|
|
151
|
+
readonly grantedScopes?: readonly string[];
|
|
152
|
+
readonly status: "pending" | "approved" | "denied";
|
|
153
|
+
readonly subject?: string;
|
|
154
|
+
readonly issuedAt: UnixMillis;
|
|
155
|
+
readonly expiresAt: UnixMillis;
|
|
156
|
+
readonly pollIntervalSeconds: number;
|
|
157
|
+
readonly nextPollAt: UnixMillis;
|
|
158
|
+
readonly lastPolledAt?: UnixMillis;
|
|
159
|
+
readonly approvedAt?: UnixMillis;
|
|
160
|
+
readonly deniedAt?: UnixMillis;
|
|
161
|
+
readonly consumedAt?: UnixMillis;
|
|
162
|
+
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
163
|
+
}
|
|
164
|
+
export interface OAuthDeviceAuthorizationStartInput {
|
|
165
|
+
readonly clientId?: OAuthClientId | string;
|
|
166
|
+
readonly scopes?: readonly string[] | string;
|
|
167
|
+
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
168
|
+
}
|
|
169
|
+
export type OAuthDeviceAuthorizationStartFailureReason = "invalid_request" | "invalid_client" | "unauthorized_client" | "invalid_scope";
|
|
170
|
+
export type OAuthDeviceAuthorizationStartResult = {
|
|
171
|
+
readonly valid: true;
|
|
172
|
+
readonly authorization: OAuthDeviceAuthorizationDetails;
|
|
173
|
+
readonly client: OAuthClientRecord;
|
|
174
|
+
readonly deviceCode: Redacted.Redacted<OAuthDeviceCode>;
|
|
175
|
+
readonly userCode: OAuthDeviceUserCode;
|
|
176
|
+
readonly expiresIn: number;
|
|
177
|
+
readonly interval: number;
|
|
178
|
+
} | {
|
|
179
|
+
readonly valid: false;
|
|
180
|
+
readonly reason: OAuthDeviceAuthorizationStartFailureReason;
|
|
181
|
+
};
|
|
182
|
+
export interface OAuthDeviceAuthorizationInspectInput {
|
|
183
|
+
readonly userCode: OAuthDeviceUserCode | string;
|
|
184
|
+
}
|
|
185
|
+
export type OAuthDeviceAuthorizationInspectFailureReason = "invalid_user_code" | "expired_token";
|
|
186
|
+
export type OAuthDeviceAuthorizationInspectResult = {
|
|
187
|
+
readonly valid: true;
|
|
188
|
+
readonly authorization: OAuthDeviceAuthorizationDetails;
|
|
189
|
+
} | {
|
|
190
|
+
readonly valid: false;
|
|
191
|
+
readonly reason: OAuthDeviceAuthorizationInspectFailureReason;
|
|
192
|
+
};
|
|
193
|
+
export interface OAuthDeviceAuthorizationApproveInput {
|
|
194
|
+
readonly authorizationId: OAuthDeviceAuthorizationId;
|
|
195
|
+
readonly subject: string;
|
|
196
|
+
readonly scopes?: readonly string[] | string;
|
|
197
|
+
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
198
|
+
}
|
|
199
|
+
export interface OAuthDeviceAuthorizationDenyInput {
|
|
200
|
+
readonly authorizationId: OAuthDeviceAuthorizationId;
|
|
201
|
+
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
202
|
+
}
|
|
203
|
+
export type OAuthDeviceAuthorizationDecisionFailureReason = "invalid_request" | "invalid_scope" | "expired_token" | "already_decided";
|
|
204
|
+
export type OAuthDeviceAuthorizationDecisionResult = {
|
|
205
|
+
readonly valid: true;
|
|
206
|
+
readonly authorization: OAuthDeviceAuthorizationDetails;
|
|
207
|
+
} | {
|
|
208
|
+
readonly valid: false;
|
|
209
|
+
readonly reason: OAuthDeviceAuthorizationDecisionFailureReason;
|
|
210
|
+
};
|
|
211
|
+
export type OAuthDeviceAuthorizationOperation = "start" | "inspect" | "approve" | "deny";
|
|
212
|
+
declare const OAuthDeviceAuthorizationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
213
|
+
readonly _tag: "OAuthDeviceAuthorizationError";
|
|
214
|
+
} & Readonly<A>;
|
|
215
|
+
export declare class OAuthDeviceAuthorizationError extends OAuthDeviceAuthorizationError_base<{
|
|
216
|
+
readonly operation: OAuthDeviceAuthorizationOperation;
|
|
217
|
+
readonly message: string;
|
|
218
|
+
readonly cause?: unknown;
|
|
219
|
+
}> {
|
|
220
|
+
}
|
|
221
|
+
export interface OAuthDeviceAuthorizationService {
|
|
222
|
+
readonly start: (input: OAuthDeviceAuthorizationStartInput) => Effect.Effect<OAuthDeviceAuthorizationStartResult, OAuthDeviceAuthorizationError>;
|
|
223
|
+
readonly inspect: (input: OAuthDeviceAuthorizationInspectInput) => Effect.Effect<OAuthDeviceAuthorizationInspectResult, OAuthDeviceAuthorizationError>;
|
|
224
|
+
readonly approve: (input: OAuthDeviceAuthorizationApproveInput) => Effect.Effect<OAuthDeviceAuthorizationDecisionResult, OAuthDeviceAuthorizationError>;
|
|
225
|
+
readonly deny: (input: OAuthDeviceAuthorizationDenyInput) => Effect.Effect<OAuthDeviceAuthorizationDecisionResult, OAuthDeviceAuthorizationError>;
|
|
226
|
+
}
|
|
227
|
+
declare const OAuthDeviceAuthorization_base: Context.ServiceClass<OAuthDeviceAuthorization, "auth/OAuthDeviceAuthorization", OAuthDeviceAuthorizationService> & {
|
|
228
|
+
readonly make: (options: OAuthDeviceAuthorizationLiveOptions) => Effect.Effect<OAuthDeviceAuthorizationService, OAuthDeviceAuthorizationError, Crypto | OAuthClientRegistry | OAuthDeviceAuthorizationStore>;
|
|
229
|
+
};
|
|
230
|
+
export declare class OAuthDeviceAuthorization extends OAuthDeviceAuthorization_base {
|
|
231
|
+
}
|
|
232
|
+
export interface OAuthDeviceAuthorizationOptions {
|
|
233
|
+
readonly deviceCodeBytes?: number;
|
|
234
|
+
readonly authorizationIdBytes?: number;
|
|
235
|
+
readonly ttl?: Duration.Duration;
|
|
236
|
+
readonly pollInterval?: Duration.Duration;
|
|
237
|
+
readonly collisionAttempts?: number;
|
|
238
|
+
}
|
|
239
|
+
export interface OAuthDeviceAuthorizationLiveOptions extends OAuthDeviceAuthorizationOptions {
|
|
240
|
+
readonly userCodeSecret: CryptoKey;
|
|
241
|
+
}
|
|
242
|
+
export interface OAuthDeviceCodeTokenPrepareAuthorization {
|
|
243
|
+
readonly id: OAuthDeviceAuthorizationId;
|
|
244
|
+
readonly clientId: OAuthClientId;
|
|
245
|
+
readonly requestedScopes: readonly string[];
|
|
246
|
+
readonly issuedAt: UnixMillis;
|
|
247
|
+
readonly expiresAt: UnixMillis;
|
|
248
|
+
readonly approvedAt: UnixMillis;
|
|
249
|
+
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
250
|
+
}
|
|
251
|
+
export interface OAuthDeviceCodeTokenIssueAuthorization extends OAuthDeviceCodeTokenPrepareAuthorization {
|
|
252
|
+
readonly consumedAt: UnixMillis;
|
|
253
|
+
}
|
|
254
|
+
export interface OAuthDeviceCodeTokenPrepareInput {
|
|
255
|
+
readonly client: OAuthClientRecord;
|
|
256
|
+
readonly authorization: OAuthDeviceCodeTokenPrepareAuthorization;
|
|
257
|
+
readonly subject: string;
|
|
258
|
+
readonly scopes: readonly string[];
|
|
259
|
+
readonly now: UnixMillis;
|
|
260
|
+
}
|
|
261
|
+
export interface OAuthDeviceCodeTokenPreparation {
|
|
262
|
+
readonly tokens: OAuthTokenResponse;
|
|
263
|
+
readonly tokenRecords: readonly OAuthProviderModeTokenRecord[];
|
|
264
|
+
}
|
|
265
|
+
export type OAuthDeviceCodeTokenIssuerOperation = "prepare";
|
|
266
|
+
declare const OAuthDeviceCodeTokenIssuerError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
267
|
+
readonly _tag: "OAuthDeviceCodeTokenIssuerError";
|
|
268
|
+
} & Readonly<A>;
|
|
269
|
+
export declare class OAuthDeviceCodeTokenIssuerError extends OAuthDeviceCodeTokenIssuerError_base<{
|
|
270
|
+
readonly operation: OAuthDeviceCodeTokenIssuerOperation;
|
|
271
|
+
readonly message: string;
|
|
272
|
+
readonly cause?: unknown;
|
|
273
|
+
}> {
|
|
274
|
+
}
|
|
275
|
+
export interface OAuthDeviceCodeTokenIssuerService {
|
|
276
|
+
/** Prepares plaintext response tokens and hash-only records without persisting. */
|
|
277
|
+
readonly prepare: (input: OAuthDeviceCodeTokenPrepareInput) => Effect.Effect<OAuthDeviceCodeTokenPreparation, OAuthDeviceCodeTokenIssuerError>;
|
|
278
|
+
}
|
|
279
|
+
declare const OAuthDeviceCodeTokenIssuer_base: Context.ServiceClass<OAuthDeviceCodeTokenIssuer, "auth/OAuthDeviceCodeTokenIssuer", OAuthDeviceCodeTokenIssuerService>;
|
|
280
|
+
export declare class OAuthDeviceCodeTokenIssuer extends OAuthDeviceCodeTokenIssuer_base {
|
|
281
|
+
}
|
|
282
|
+
export interface OAuthDeviceCodeTokenCommitInput {
|
|
283
|
+
readonly authorization: OAuthDeviceAuthorizationUnconsumedApprovedRecord;
|
|
284
|
+
readonly consumedAt: UnixMillis;
|
|
285
|
+
readonly tokenRecords: readonly OAuthProviderModeTokenRecord[];
|
|
286
|
+
}
|
|
287
|
+
export type OAuthDeviceCodeTokenCommitResult = {
|
|
288
|
+
readonly status: "committed";
|
|
289
|
+
readonly record: OAuthDeviceAuthorizationConsumedRecord;
|
|
290
|
+
} | {
|
|
291
|
+
readonly status: "already_consumed";
|
|
292
|
+
readonly record: OAuthDeviceAuthorizationConsumedRecord;
|
|
293
|
+
} | {
|
|
294
|
+
readonly status: "expired";
|
|
295
|
+
readonly record: OAuthDeviceAuthorizationApprovedRecord;
|
|
296
|
+
} | {
|
|
297
|
+
readonly status: "missing";
|
|
298
|
+
};
|
|
299
|
+
declare const OAuthDeviceCodeTokenCommitStoreError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
300
|
+
readonly _tag: "OAuthDeviceCodeTokenCommitStoreError";
|
|
301
|
+
} & Readonly<A>;
|
|
302
|
+
export declare class OAuthDeviceCodeTokenCommitStoreError extends OAuthDeviceCodeTokenCommitStoreError_base<{
|
|
303
|
+
readonly operation: "commit";
|
|
304
|
+
readonly message: string;
|
|
305
|
+
readonly cause?: unknown;
|
|
306
|
+
}> {
|
|
307
|
+
}
|
|
308
|
+
export interface OAuthDeviceCodeTokenCommitStoreService {
|
|
309
|
+
/** Atomically compare-and-consume the authorization and persist every token record. */
|
|
310
|
+
readonly commit: (input: OAuthDeviceCodeTokenCommitInput) => Effect.Effect<OAuthDeviceCodeTokenCommitResult, OAuthDeviceCodeTokenCommitStoreError>;
|
|
311
|
+
}
|
|
312
|
+
declare const OAuthDeviceCodeTokenCommitStore_base: Context.ServiceClass<OAuthDeviceCodeTokenCommitStore, "auth/OAuthDeviceCodeTokenCommitStore", OAuthDeviceCodeTokenCommitStoreService>;
|
|
313
|
+
export declare class OAuthDeviceCodeTokenCommitStore extends OAuthDeviceCodeTokenCommitStore_base {
|
|
314
|
+
}
|
|
315
|
+
export interface OAuthDeviceCodeTokenGrantInput {
|
|
316
|
+
readonly grantType: string;
|
|
317
|
+
readonly deviceCode?: Redacted.Redacted<OAuthDeviceCode | string>;
|
|
318
|
+
readonly clientId?: OAuthClientId | string;
|
|
319
|
+
readonly clientAuthenticated?: boolean;
|
|
320
|
+
}
|
|
321
|
+
export type OAuthDeviceCodeTokenGrantFailureReason = "invalid_request" | "invalid_client" | "invalid_grant" | "unauthorized_client" | "unsupported_grant_type" | "authorization_pending" | "slow_down" | "access_denied" | "expired_token";
|
|
322
|
+
export type OAuthDeviceCodeTokenGrantResult = {
|
|
323
|
+
readonly valid: true;
|
|
324
|
+
readonly client: OAuthClientRecord;
|
|
325
|
+
readonly authorization: OAuthDeviceCodeTokenIssueAuthorization;
|
|
326
|
+
readonly subject: string;
|
|
327
|
+
readonly scopes: readonly string[];
|
|
328
|
+
readonly tokens: OAuthTokenResponse;
|
|
329
|
+
} | {
|
|
330
|
+
readonly valid: false;
|
|
331
|
+
readonly reason: OAuthDeviceCodeTokenGrantFailureReason;
|
|
332
|
+
};
|
|
333
|
+
export type OAuthDeviceCodeTokenGrantOperation = "exchange";
|
|
334
|
+
declare const OAuthDeviceCodeTokenGrantError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
335
|
+
readonly _tag: "OAuthDeviceCodeTokenGrantError";
|
|
336
|
+
} & Readonly<A>;
|
|
337
|
+
export declare class OAuthDeviceCodeTokenGrantError extends OAuthDeviceCodeTokenGrantError_base<{
|
|
338
|
+
readonly operation: OAuthDeviceCodeTokenGrantOperation;
|
|
339
|
+
readonly message: string;
|
|
340
|
+
readonly cause?: unknown;
|
|
341
|
+
}> {
|
|
342
|
+
}
|
|
343
|
+
export interface OAuthDeviceCodeTokenGrantService {
|
|
344
|
+
readonly exchange: (input: OAuthDeviceCodeTokenGrantInput) => Effect.Effect<OAuthDeviceCodeTokenGrantResult, OAuthDeviceCodeTokenGrantError>;
|
|
345
|
+
}
|
|
346
|
+
declare const OAuthDeviceCodeTokenGrant_base: Context.ServiceClass<OAuthDeviceCodeTokenGrant, "auth/OAuthDeviceCodeTokenGrant", OAuthDeviceCodeTokenGrantService> & {
|
|
347
|
+
readonly make: () => Effect.Effect<OAuthDeviceCodeTokenGrantService, never, Crypto | OAuthClientRegistry | OAuthDeviceAuthorizationStore | OAuthDeviceCodeTokenCommitStore | OAuthDeviceCodeTokenIssuer>;
|
|
348
|
+
};
|
|
349
|
+
export declare class OAuthDeviceCodeTokenGrant extends OAuthDeviceCodeTokenGrant_base {
|
|
350
|
+
}
|
|
351
|
+
export interface OAuthDeviceProviderModeOpaqueTokenIssuerOptions {
|
|
352
|
+
readonly accessTokenBytes?: number;
|
|
353
|
+
readonly refreshTokenBytes?: number;
|
|
354
|
+
readonly accessTokenTtl?: Duration.Duration;
|
|
355
|
+
/** Absolute lifetime retained across refresh-token rotation. */
|
|
356
|
+
readonly refreshTokenTtl?: Duration.Duration;
|
|
357
|
+
readonly issuer?: string;
|
|
358
|
+
readonly audience?: string | readonly string[];
|
|
359
|
+
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
360
|
+
}
|
|
361
|
+
export declare const normalizeOAuthDeviceUserCode: (value: OAuthDeviceUserCode | string) => OAuthDeviceUserCode | undefined;
|
|
362
|
+
export declare namespace OAuthDeviceProviderModeOpaqueTokenIssuer {
|
|
363
|
+
const make: (options?: OAuthDeviceProviderModeOpaqueTokenIssuerOptions) => Effect.Effect<OAuthDeviceCodeTokenIssuerService, OAuthDeviceCodeTokenIssuerError, Crypto>;
|
|
364
|
+
}
|
|
365
|
+
export declare namespace OAuthDeviceAuthorizationStoreMemory {
|
|
366
|
+
const make: (records?: readonly OAuthDeviceAuthorizationRecord[]) => Effect.Effect<OAuthDeviceAuthorizationStoreService, never, never>;
|
|
367
|
+
}
|
|
368
|
+
export declare const OAuthDeviceAuthorizationStoreMemoryLive: (records?: readonly OAuthDeviceAuthorizationRecord[]) => Layer.Layer<OAuthDeviceAuthorizationStore, never, never>;
|
|
369
|
+
export declare const OAuthDeviceAuthorizationLive: (options: OAuthDeviceAuthorizationLiveOptions) => Layer.Layer<OAuthDeviceAuthorization, OAuthDeviceAuthorizationError, Crypto | OAuthClientRegistry | OAuthDeviceAuthorizationStore>;
|
|
370
|
+
export declare const OAuthDeviceCodeTokenGrantLive: Layer.Layer<OAuthDeviceCodeTokenGrant, never, Crypto | OAuthClientRegistry | OAuthDeviceAuthorizationStore | OAuthDeviceCodeTokenCommitStore | OAuthDeviceCodeTokenIssuer>;
|
|
371
|
+
export declare const OAuthDeviceProviderModeOpaqueTokenIssuerLive: (options?: OAuthDeviceProviderModeOpaqueTokenIssuerOptions) => Layer.Layer<OAuthDeviceCodeTokenIssuer, OAuthDeviceCodeTokenIssuerError, Crypto>;
|
|
372
|
+
export declare const startOAuthDeviceAuthorization: (input: OAuthDeviceAuthorizationStartInput) => Effect.Effect<OAuthDeviceAuthorizationStartResult, OAuthDeviceAuthorizationError, OAuthDeviceAuthorization>;
|
|
373
|
+
export declare const inspectOAuthDeviceAuthorization: (input: OAuthDeviceAuthorizationInspectInput) => Effect.Effect<OAuthDeviceAuthorizationInspectResult, OAuthDeviceAuthorizationError, OAuthDeviceAuthorization>;
|
|
374
|
+
export declare const approveOAuthDeviceAuthorization: (input: OAuthDeviceAuthorizationApproveInput) => Effect.Effect<OAuthDeviceAuthorizationDecisionResult, OAuthDeviceAuthorizationError, OAuthDeviceAuthorization>;
|
|
375
|
+
export declare const denyOAuthDeviceAuthorization: (input: OAuthDeviceAuthorizationDenyInput) => Effect.Effect<OAuthDeviceAuthorizationDecisionResult, OAuthDeviceAuthorizationError, OAuthDeviceAuthorization>;
|
|
376
|
+
export declare const exchangeOAuthDeviceCode: (input: OAuthDeviceCodeTokenGrantInput) => Effect.Effect<OAuthDeviceCodeTokenGrantResult, OAuthDeviceCodeTokenGrantError, OAuthDeviceCodeTokenGrant>;
|
|
377
|
+
export {};
|
|
378
|
+
//# sourceMappingURL=OAuthDeviceAuthorization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OAuthDeviceAuthorization.d.ts","sourceRoot":"","sources":["../src/OAuthDeviceAuthorization.ts"],"names":[],"mappings":"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"}
|