@dotdo/do 0.1.2 → 0.1.4
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/do/index.d.ts +1 -0
- package/dist/do/index.d.ts.map +1 -1
- package/dist/do/index.js +2 -0
- package/dist/do/index.js.map +1 -1
- package/dist/do/oauth.d.ts +73 -0
- package/dist/do/oauth.d.ts.map +1 -0
- package/dist/do/oauth.js +334 -0
- package/dist/do/oauth.js.map +1 -0
- package/package.json +26 -16
package/dist/do/index.d.ts
CHANGED
|
@@ -16,4 +16,5 @@ export type { DigitalObjectIdentity, DigitalObjectRef, DOType, WellKnownType, DO
|
|
|
16
16
|
export { resolveTypeUrl } from '../types/identity';
|
|
17
17
|
export * from './domains';
|
|
18
18
|
export * from './colo';
|
|
19
|
+
export { DOAuthStorage } from './oauth';
|
|
19
20
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/do/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../do/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EACL,aAAa,EACb,OAAO,EACP,KAAK,KAAK,EACV,KAAK,oBAAoB,EACzB,KAAK,WAAW,GACjB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACL,aAAa,EACb,KAAK,OAAO,EACZ,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,WAAW,IAAI,gBAAgB,EACpC,KAAK,UAAU,IAAI,eAAe,GACnC,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,WAAW,GACjB,MAAM,eAAe,CAAA;AAGtB,YAAY,EACV,qBAAqB,EACrB,gBAAgB,EAChB,MAAM,EACN,aAAa,EACb,UAAU,EACV,WAAW,GACZ,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGlD,cAAc,WAAW,CAAA;AAGzB,cAAc,QAAQ,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../do/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EACL,aAAa,EACb,OAAO,EACP,KAAK,KAAK,EACV,KAAK,oBAAoB,EACzB,KAAK,WAAW,GACjB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACL,aAAa,EACb,KAAK,OAAO,EACZ,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,WAAW,IAAI,gBAAgB,EACpC,KAAK,UAAU,IAAI,eAAe,GACnC,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,WAAW,GACjB,MAAM,eAAe,CAAA;AAGtB,YAAY,EACV,qBAAqB,EACrB,gBAAgB,EAChB,MAAM,EACN,aAAa,EACb,UAAU,EACV,WAAW,GACZ,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGlD,cAAc,WAAW,CAAA;AAGzB,cAAc,QAAQ,CAAA;AAGtB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA"}
|
package/dist/do/index.js
CHANGED
|
@@ -20,4 +20,6 @@ export { resolveTypeUrl } from '../types/identity';
|
|
|
20
20
|
export * from './domains';
|
|
21
21
|
// Colo awareness (geo-distribution, replication)
|
|
22
22
|
export * from './colo';
|
|
23
|
+
// OAuth storage (implements @dotdo/oauth OAuthStorage interface)
|
|
24
|
+
export { DOAuthStorage } from './oauth';
|
|
23
25
|
//# sourceMappingURL=index.js.map
|
package/dist/do/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../do/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,2BAA2B;AAC3B,OAAO,EACL,aAAa,EACb,OAAO,GAIR,MAAM,iBAAiB,CAAA;AAExB,mBAAmB;AACnB,OAAO,EACL,aAAa,GAOd,MAAM,SAAS,CAAA;AAEhB,sBAAsB;AACtB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,GAIzB,MAAM,eAAe,CAAA;AAYtB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,oBAAoB;AACpB,cAAc,WAAW,CAAA;AAEzB,iDAAiD;AACjD,cAAc,QAAQ,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../do/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,2BAA2B;AAC3B,OAAO,EACL,aAAa,EACb,OAAO,GAIR,MAAM,iBAAiB,CAAA;AAExB,mBAAmB;AACnB,OAAO,EACL,aAAa,GAOd,MAAM,SAAS,CAAA;AAEhB,sBAAsB;AACtB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,GAIzB,MAAM,eAAe,CAAA;AAYtB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,oBAAoB;AACpB,cAAc,WAAW,CAAA;AAEzB,iDAAiD;AACjD,cAAc,QAAQ,CAAA;AAEtB,iEAAiE;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOAuthStorage - OAuth 2.1 storage implementation using Durable Object SQLite
|
|
3
|
+
*
|
|
4
|
+
* Implements the OAuthStorage interface from @dotdo/oauth, providing
|
|
5
|
+
* persistent storage for OAuth users, organizations, clients, grants,
|
|
6
|
+
* and tokens using the DigitalObject state system.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { DigitalObject } from '@dotdo/do'
|
|
11
|
+
* import { createOAuth21Server } from '@dotdo/oauth'
|
|
12
|
+
* import { DOAuthStorage } from '@dotdo/do/oauth'
|
|
13
|
+
*
|
|
14
|
+
* class AuthDO extends DigitalObject {
|
|
15
|
+
* async fetch(request: Request) {
|
|
16
|
+
* const storage = new DOAuthStorage(this.state)
|
|
17
|
+
* const server = createOAuth21Server({
|
|
18
|
+
* issuer: 'https://mcp.do',
|
|
19
|
+
* storage,
|
|
20
|
+
* upstream: { provider: 'workos', ... }
|
|
21
|
+
* })
|
|
22
|
+
* return server.fetch(request)
|
|
23
|
+
* }
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @module do/oauth
|
|
28
|
+
*/
|
|
29
|
+
import type { OAuthStorage, OAuthUser, OAuthOrganization, OAuthClient, OAuthAuthorizationCode, OAuthAccessToken, OAuthRefreshToken, OAuthGrant, ListOptions } from '@dotdo/oauth';
|
|
30
|
+
import type { DOState } from './state';
|
|
31
|
+
/**
|
|
32
|
+
* DOAuthStorage - OAuth storage backed by Durable Object SQLite
|
|
33
|
+
*
|
|
34
|
+
* Uses the DigitalObject state system for persistent storage.
|
|
35
|
+
* All data is stored with appropriate prefixes to enable efficient
|
|
36
|
+
* listing and lookup operations.
|
|
37
|
+
*/
|
|
38
|
+
export declare class DOAuthStorage implements OAuthStorage {
|
|
39
|
+
private state;
|
|
40
|
+
constructor(state: DOState);
|
|
41
|
+
getUser(id: string): Promise<OAuthUser | null>;
|
|
42
|
+
getUserByEmail(email: string): Promise<OAuthUser | null>;
|
|
43
|
+
getUserByProvider(provider: string, providerId: string): Promise<OAuthUser | null>;
|
|
44
|
+
saveUser(user: OAuthUser): Promise<void>;
|
|
45
|
+
deleteUser(id: string): Promise<void>;
|
|
46
|
+
listUsers(options?: ListOptions): Promise<OAuthUser[]>;
|
|
47
|
+
getOrganization(id: string): Promise<OAuthOrganization | null>;
|
|
48
|
+
getOrganizationBySlug(slug: string): Promise<OAuthOrganization | null>;
|
|
49
|
+
getOrganizationByDomain(domain: string): Promise<OAuthOrganization | null>;
|
|
50
|
+
saveOrganization(org: OAuthOrganization): Promise<void>;
|
|
51
|
+
deleteOrganization(id: string): Promise<void>;
|
|
52
|
+
listOrganizations(options?: ListOptions): Promise<OAuthOrganization[]>;
|
|
53
|
+
getClient(clientId: string): Promise<OAuthClient | null>;
|
|
54
|
+
saveClient(client: OAuthClient): Promise<void>;
|
|
55
|
+
deleteClient(clientId: string): Promise<void>;
|
|
56
|
+
listClients(options?: ListOptions): Promise<OAuthClient[]>;
|
|
57
|
+
saveAuthorizationCode(authCode: OAuthAuthorizationCode): Promise<void>;
|
|
58
|
+
consumeAuthorizationCode(code: string): Promise<OAuthAuthorizationCode | null>;
|
|
59
|
+
saveAccessToken(accessToken: OAuthAccessToken): Promise<void>;
|
|
60
|
+
getAccessToken(token: string): Promise<OAuthAccessToken | null>;
|
|
61
|
+
revokeAccessToken(token: string): Promise<void>;
|
|
62
|
+
saveRefreshToken(refreshToken: OAuthRefreshToken): Promise<void>;
|
|
63
|
+
getRefreshToken(token: string): Promise<OAuthRefreshToken | null>;
|
|
64
|
+
revokeRefreshToken(token: string): Promise<void>;
|
|
65
|
+
revokeAllUserTokens(userId: string): Promise<void>;
|
|
66
|
+
revokeAllClientTokens(clientId: string): Promise<void>;
|
|
67
|
+
getGrant(userId: string, clientId: string): Promise<OAuthGrant | null>;
|
|
68
|
+
saveGrant(grant: OAuthGrant): Promise<void>;
|
|
69
|
+
revokeGrant(userId: string, clientId: string): Promise<void>;
|
|
70
|
+
listUserGrants(userId: string): Promise<OAuthGrant[]>;
|
|
71
|
+
}
|
|
72
|
+
export default DOAuthStorage;
|
|
73
|
+
//# sourceMappingURL=oauth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../do/oauth.ts"],"names":[],"mappings":"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"}
|
package/dist/do/oauth.js
ADDED
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOAuthStorage - OAuth 2.1 storage implementation using Durable Object SQLite
|
|
3
|
+
*
|
|
4
|
+
* Implements the OAuthStorage interface from @dotdo/oauth, providing
|
|
5
|
+
* persistent storage for OAuth users, organizations, clients, grants,
|
|
6
|
+
* and tokens using the DigitalObject state system.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { DigitalObject } from '@dotdo/do'
|
|
11
|
+
* import { createOAuth21Server } from '@dotdo/oauth'
|
|
12
|
+
* import { DOAuthStorage } from '@dotdo/do/oauth'
|
|
13
|
+
*
|
|
14
|
+
* class AuthDO extends DigitalObject {
|
|
15
|
+
* async fetch(request: Request) {
|
|
16
|
+
* const storage = new DOAuthStorage(this.state)
|
|
17
|
+
* const server = createOAuth21Server({
|
|
18
|
+
* issuer: 'https://mcp.do',
|
|
19
|
+
* storage,
|
|
20
|
+
* upstream: { provider: 'workos', ... }
|
|
21
|
+
* })
|
|
22
|
+
* return server.fetch(request)
|
|
23
|
+
* }
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @module do/oauth
|
|
28
|
+
*/
|
|
29
|
+
/**
|
|
30
|
+
* Key prefixes for different OAuth entities
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
const PREFIXES = {
|
|
34
|
+
user: 'oauth:user',
|
|
35
|
+
userByEmail: 'oauth:user:email',
|
|
36
|
+
userByProvider: 'oauth:user:provider',
|
|
37
|
+
org: 'oauth:org',
|
|
38
|
+
orgBySlug: 'oauth:org:slug',
|
|
39
|
+
orgByDomain: 'oauth:org:domain',
|
|
40
|
+
client: 'oauth:client',
|
|
41
|
+
code: 'oauth:code',
|
|
42
|
+
accessToken: 'oauth:access',
|
|
43
|
+
refreshToken: 'oauth:refresh',
|
|
44
|
+
grant: 'oauth:grant',
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* DOAuthStorage - OAuth storage backed by Durable Object SQLite
|
|
48
|
+
*
|
|
49
|
+
* Uses the DigitalObject state system for persistent storage.
|
|
50
|
+
* All data is stored with appropriate prefixes to enable efficient
|
|
51
|
+
* listing and lookup operations.
|
|
52
|
+
*/
|
|
53
|
+
export class DOAuthStorage {
|
|
54
|
+
state;
|
|
55
|
+
constructor(state) {
|
|
56
|
+
this.state = state;
|
|
57
|
+
}
|
|
58
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
59
|
+
// User Operations
|
|
60
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
61
|
+
async getUser(id) {
|
|
62
|
+
return this.state.get(`${PREFIXES.user}:${id}`);
|
|
63
|
+
}
|
|
64
|
+
async getUserByEmail(email) {
|
|
65
|
+
const userId = await this.state.get(`${PREFIXES.userByEmail}:${email.toLowerCase()}`);
|
|
66
|
+
if (!userId)
|
|
67
|
+
return null;
|
|
68
|
+
return this.getUser(userId);
|
|
69
|
+
}
|
|
70
|
+
async getUserByProvider(provider, providerId) {
|
|
71
|
+
const userId = await this.state.get(`${PREFIXES.userByProvider}:${provider}:${providerId}`);
|
|
72
|
+
if (!userId)
|
|
73
|
+
return null;
|
|
74
|
+
return this.getUser(userId);
|
|
75
|
+
}
|
|
76
|
+
async saveUser(user) {
|
|
77
|
+
// Save the user
|
|
78
|
+
await this.state.set(`${PREFIXES.user}:${user.id}`, user);
|
|
79
|
+
// Create email index
|
|
80
|
+
if (user.email) {
|
|
81
|
+
await this.state.set(`${PREFIXES.userByEmail}:${user.email.toLowerCase()}`, user.id);
|
|
82
|
+
}
|
|
83
|
+
// Create provider index
|
|
84
|
+
if (user.provider && user.providerId) {
|
|
85
|
+
await this.state.set(`${PREFIXES.userByProvider}:${user.provider}:${user.providerId}`, user.id);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
async deleteUser(id) {
|
|
89
|
+
const user = await this.getUser(id);
|
|
90
|
+
if (!user)
|
|
91
|
+
return;
|
|
92
|
+
// Delete indexes
|
|
93
|
+
if (user.email) {
|
|
94
|
+
await this.state.delete(`${PREFIXES.userByEmail}:${user.email.toLowerCase()}`);
|
|
95
|
+
}
|
|
96
|
+
if (user.provider && user.providerId) {
|
|
97
|
+
await this.state.delete(`${PREFIXES.userByProvider}:${user.provider}:${user.providerId}`);
|
|
98
|
+
}
|
|
99
|
+
// Delete the user
|
|
100
|
+
await this.state.delete(`${PREFIXES.user}:${id}`);
|
|
101
|
+
}
|
|
102
|
+
async listUsers(options) {
|
|
103
|
+
const result = await this.state.list({ prefix: `${PREFIXES.user}:` });
|
|
104
|
+
const users = [];
|
|
105
|
+
for (const key of result.keys) {
|
|
106
|
+
const user = await this.state.get(key);
|
|
107
|
+
if (user) {
|
|
108
|
+
if (options?.organizationId && user.organizationId !== options.organizationId) {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
users.push(user);
|
|
112
|
+
if (options?.limit && users.length >= options.limit) {
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return users;
|
|
118
|
+
}
|
|
119
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
120
|
+
// Organization Operations
|
|
121
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
122
|
+
async getOrganization(id) {
|
|
123
|
+
return this.state.get(`${PREFIXES.org}:${id}`);
|
|
124
|
+
}
|
|
125
|
+
async getOrganizationBySlug(slug) {
|
|
126
|
+
const orgId = await this.state.get(`${PREFIXES.orgBySlug}:${slug.toLowerCase()}`);
|
|
127
|
+
if (!orgId)
|
|
128
|
+
return null;
|
|
129
|
+
return this.getOrganization(orgId);
|
|
130
|
+
}
|
|
131
|
+
async getOrganizationByDomain(domain) {
|
|
132
|
+
const orgId = await this.state.get(`${PREFIXES.orgByDomain}:${domain.toLowerCase()}`);
|
|
133
|
+
if (!orgId)
|
|
134
|
+
return null;
|
|
135
|
+
return this.getOrganization(orgId);
|
|
136
|
+
}
|
|
137
|
+
async saveOrganization(org) {
|
|
138
|
+
// Save the organization
|
|
139
|
+
await this.state.set(`${PREFIXES.org}:${org.id}`, org);
|
|
140
|
+
// Create slug index
|
|
141
|
+
if (org.slug) {
|
|
142
|
+
await this.state.set(`${PREFIXES.orgBySlug}:${org.slug.toLowerCase()}`, org.id);
|
|
143
|
+
}
|
|
144
|
+
// Create domain indexes
|
|
145
|
+
if (org.domains) {
|
|
146
|
+
for (const domain of org.domains) {
|
|
147
|
+
await this.state.set(`${PREFIXES.orgByDomain}:${domain.toLowerCase()}`, org.id);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
async deleteOrganization(id) {
|
|
152
|
+
const org = await this.getOrganization(id);
|
|
153
|
+
if (!org)
|
|
154
|
+
return;
|
|
155
|
+
// Delete slug index
|
|
156
|
+
if (org.slug) {
|
|
157
|
+
await this.state.delete(`${PREFIXES.orgBySlug}:${org.slug.toLowerCase()}`);
|
|
158
|
+
}
|
|
159
|
+
// Delete domain indexes
|
|
160
|
+
if (org.domains) {
|
|
161
|
+
for (const domain of org.domains) {
|
|
162
|
+
await this.state.delete(`${PREFIXES.orgByDomain}:${domain.toLowerCase()}`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// Delete the organization
|
|
166
|
+
await this.state.delete(`${PREFIXES.org}:${id}`);
|
|
167
|
+
}
|
|
168
|
+
async listOrganizations(options) {
|
|
169
|
+
const result = await this.state.list({ prefix: `${PREFIXES.org}:` });
|
|
170
|
+
const orgs = [];
|
|
171
|
+
for (const key of result.keys) {
|
|
172
|
+
const org = await this.state.get(key);
|
|
173
|
+
if (org) {
|
|
174
|
+
orgs.push(org);
|
|
175
|
+
if (options?.limit && orgs.length >= options.limit) {
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return orgs;
|
|
181
|
+
}
|
|
182
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
183
|
+
// Client Operations
|
|
184
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
185
|
+
async getClient(clientId) {
|
|
186
|
+
return this.state.get(`${PREFIXES.client}:${clientId}`);
|
|
187
|
+
}
|
|
188
|
+
async saveClient(client) {
|
|
189
|
+
await this.state.set(`${PREFIXES.client}:${client.clientId}`, client);
|
|
190
|
+
}
|
|
191
|
+
async deleteClient(clientId) {
|
|
192
|
+
await this.state.delete(`${PREFIXES.client}:${clientId}`);
|
|
193
|
+
}
|
|
194
|
+
async listClients(options) {
|
|
195
|
+
const result = await this.state.list({ prefix: `${PREFIXES.client}:` });
|
|
196
|
+
const clients = [];
|
|
197
|
+
for (const key of result.keys) {
|
|
198
|
+
const client = await this.state.get(key);
|
|
199
|
+
if (client) {
|
|
200
|
+
clients.push(client);
|
|
201
|
+
if (options?.limit && clients.length >= options.limit) {
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return clients;
|
|
207
|
+
}
|
|
208
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
209
|
+
// Authorization Code Operations
|
|
210
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
211
|
+
async saveAuthorizationCode(authCode) {
|
|
212
|
+
// Calculate TTL - auth codes should expire (default 10 minutes)
|
|
213
|
+
const ttl = authCode.expiresAt - Date.now();
|
|
214
|
+
await this.state.set(`${PREFIXES.code}:${authCode.code}`, authCode, {
|
|
215
|
+
ttl: ttl > 0 ? ttl : undefined,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
async consumeAuthorizationCode(code) {
|
|
219
|
+
const authCode = await this.state.get(`${PREFIXES.code}:${code}`);
|
|
220
|
+
if (!authCode)
|
|
221
|
+
return null;
|
|
222
|
+
await this.state.delete(`${PREFIXES.code}:${code}`);
|
|
223
|
+
return authCode;
|
|
224
|
+
}
|
|
225
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
226
|
+
// Access Token Operations
|
|
227
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
228
|
+
async saveAccessToken(accessToken) {
|
|
229
|
+
// Calculate TTL - access tokens should expire
|
|
230
|
+
const ttl = accessToken.expiresAt - Date.now();
|
|
231
|
+
await this.state.set(`${PREFIXES.accessToken}:${accessToken.token}`, accessToken, {
|
|
232
|
+
ttl: ttl > 0 ? ttl : undefined,
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
async getAccessToken(token) {
|
|
236
|
+
return this.state.get(`${PREFIXES.accessToken}:${token}`);
|
|
237
|
+
}
|
|
238
|
+
async revokeAccessToken(token) {
|
|
239
|
+
await this.state.delete(`${PREFIXES.accessToken}:${token}`);
|
|
240
|
+
}
|
|
241
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
242
|
+
// Refresh Token Operations
|
|
243
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
244
|
+
async saveRefreshToken(refreshToken) {
|
|
245
|
+
// Calculate TTL if there's an expiration
|
|
246
|
+
const ttl = refreshToken.expiresAt ? refreshToken.expiresAt - Date.now() : undefined;
|
|
247
|
+
await this.state.set(`${PREFIXES.refreshToken}:${refreshToken.token}`, refreshToken, {
|
|
248
|
+
ttl: ttl && ttl > 0 ? ttl : undefined,
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
async getRefreshToken(token) {
|
|
252
|
+
return this.state.get(`${PREFIXES.refreshToken}:${token}`);
|
|
253
|
+
}
|
|
254
|
+
async revokeRefreshToken(token) {
|
|
255
|
+
await this.state.delete(`${PREFIXES.refreshToken}:${token}`);
|
|
256
|
+
}
|
|
257
|
+
async revokeAllUserTokens(userId) {
|
|
258
|
+
// Revoke access tokens
|
|
259
|
+
const accessResult = await this.state.list({ prefix: `${PREFIXES.accessToken}:` });
|
|
260
|
+
for (const key of accessResult.keys) {
|
|
261
|
+
const token = await this.state.get(key);
|
|
262
|
+
if (token && token.userId === userId) {
|
|
263
|
+
await this.state.delete(key);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// Revoke refresh tokens
|
|
267
|
+
const refreshResult = await this.state.list({ prefix: `${PREFIXES.refreshToken}:` });
|
|
268
|
+
for (const key of refreshResult.keys) {
|
|
269
|
+
const token = await this.state.get(key);
|
|
270
|
+
if (token && token.userId === userId) {
|
|
271
|
+
await this.state.delete(key);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
async revokeAllClientTokens(clientId) {
|
|
276
|
+
// Revoke access tokens
|
|
277
|
+
const accessResult = await this.state.list({ prefix: `${PREFIXES.accessToken}:` });
|
|
278
|
+
for (const key of accessResult.keys) {
|
|
279
|
+
const token = await this.state.get(key);
|
|
280
|
+
if (token && token.clientId === clientId) {
|
|
281
|
+
await this.state.delete(key);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
// Revoke refresh tokens
|
|
285
|
+
const refreshResult = await this.state.list({ prefix: `${PREFIXES.refreshToken}:` });
|
|
286
|
+
for (const key of refreshResult.keys) {
|
|
287
|
+
const token = await this.state.get(key);
|
|
288
|
+
if (token && token.clientId === clientId) {
|
|
289
|
+
await this.state.delete(key);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
294
|
+
// Grant Operations
|
|
295
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
296
|
+
async getGrant(userId, clientId) {
|
|
297
|
+
return this.state.get(`${PREFIXES.grant}:${userId}:${clientId}`);
|
|
298
|
+
}
|
|
299
|
+
async saveGrant(grant) {
|
|
300
|
+
await this.state.set(`${PREFIXES.grant}:${grant.userId}:${grant.clientId}`, grant);
|
|
301
|
+
}
|
|
302
|
+
async revokeGrant(userId, clientId) {
|
|
303
|
+
// Delete the grant
|
|
304
|
+
await this.state.delete(`${PREFIXES.grant}:${userId}:${clientId}`);
|
|
305
|
+
// Revoke associated tokens
|
|
306
|
+
const accessResult = await this.state.list({ prefix: `${PREFIXES.accessToken}:` });
|
|
307
|
+
for (const key of accessResult.keys) {
|
|
308
|
+
const token = await this.state.get(key);
|
|
309
|
+
if (token && token.userId === userId && token.clientId === clientId) {
|
|
310
|
+
await this.state.delete(key);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
const refreshResult = await this.state.list({ prefix: `${PREFIXES.refreshToken}:` });
|
|
314
|
+
for (const key of refreshResult.keys) {
|
|
315
|
+
const token = await this.state.get(key);
|
|
316
|
+
if (token && token.userId === userId && token.clientId === clientId) {
|
|
317
|
+
await this.state.delete(key);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
async listUserGrants(userId) {
|
|
322
|
+
const result = await this.state.list({ prefix: `${PREFIXES.grant}:${userId}:` });
|
|
323
|
+
const grants = [];
|
|
324
|
+
for (const key of result.keys) {
|
|
325
|
+
const grant = await this.state.get(key);
|
|
326
|
+
if (grant) {
|
|
327
|
+
grants.push(grant);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return grants;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
export default DOAuthStorage;
|
|
334
|
+
//# sourceMappingURL=oauth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../do/oauth.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dotdo/do",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Digital Object - Every business entity IS a Durable Object. Unified edge-native platform with CRUD APIs, SDK, AI, payments, and more.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -66,8 +66,26 @@
|
|
|
66
66
|
"./ai": {
|
|
67
67
|
"types": "./dist/ai/index.d.ts",
|
|
68
68
|
"import": "./dist/ai/index.js"
|
|
69
|
+
},
|
|
70
|
+
"./oauth": {
|
|
71
|
+
"types": "./dist/do/oauth.d.ts",
|
|
72
|
+
"import": "./dist/do/oauth.js"
|
|
69
73
|
}
|
|
70
74
|
},
|
|
75
|
+
"scripts": {
|
|
76
|
+
"build": "tsc -p tsconfig.build.json",
|
|
77
|
+
"check": "tsc --noEmit",
|
|
78
|
+
"clean": "rm -rf dist",
|
|
79
|
+
"prepublishOnly": "pnpm run clean && pnpm run build",
|
|
80
|
+
"test": "vitest",
|
|
81
|
+
"test:run": "vitest run",
|
|
82
|
+
"test:coverage": "vitest run --coverage",
|
|
83
|
+
"test:workers": "vitest run --config vitest.workers.config.ts",
|
|
84
|
+
"test:e2e": "vitest run --config vitest.e2e.config.ts",
|
|
85
|
+
"dev": "wrangler dev --config proxy/wrangler.jsonc",
|
|
86
|
+
"deploy": "wrangler deploy --config proxy/wrangler.jsonc",
|
|
87
|
+
"deploy:dry-run": "wrangler deploy --config proxy/wrangler.jsonc --dry-run"
|
|
88
|
+
},
|
|
71
89
|
"keywords": [
|
|
72
90
|
"durable-objects",
|
|
73
91
|
"cloudflare",
|
|
@@ -104,6 +122,8 @@
|
|
|
104
122
|
],
|
|
105
123
|
"sideEffects": false,
|
|
106
124
|
"dependencies": {
|
|
125
|
+
"@dotdo/apis": "^0.1.0",
|
|
126
|
+
"@dotdo/oauth": "^0.1.1",
|
|
107
127
|
"ai-database": "^2.1.3",
|
|
108
128
|
"ai-evaluate": "^2.1.5",
|
|
109
129
|
"ai-functions": "^2.1.3",
|
|
@@ -115,10 +135,12 @@
|
|
|
115
135
|
"hono": "^4.7.0",
|
|
116
136
|
"language-models": "^2.1.3",
|
|
117
137
|
"mdxui": "^2.1.1",
|
|
118
|
-
"oauth.do": "^0.2.0",
|
|
119
138
|
"rpc.do": "^0.2.0",
|
|
120
139
|
"zod": "^4.3.6"
|
|
121
140
|
},
|
|
141
|
+
"optionalDependencies": {
|
|
142
|
+
"oauth.do": "^0.2.0"
|
|
143
|
+
},
|
|
122
144
|
"devDependencies": {
|
|
123
145
|
"@cloudflare/vitest-pool-workers": "^0.12.6",
|
|
124
146
|
"@cloudflare/workers-types": "^4.20241230.0",
|
|
@@ -130,24 +152,12 @@
|
|
|
130
152
|
"peerDependencies": {
|
|
131
153
|
"@cloudflare/workers-types": "^4.0.0"
|
|
132
154
|
},
|
|
155
|
+
"packageManager": "pnpm@9.15.4",
|
|
133
156
|
"prettier": {
|
|
134
157
|
"semi": false,
|
|
135
158
|
"singleQuote": true,
|
|
136
159
|
"jsxSingleQuote": true,
|
|
137
160
|
"tabWidth": 2,
|
|
138
161
|
"printWidth": 160
|
|
139
|
-
},
|
|
140
|
-
"scripts": {
|
|
141
|
-
"build": "tsc -p tsconfig.build.json",
|
|
142
|
-
"check": "tsc --noEmit",
|
|
143
|
-
"clean": "rm -rf dist",
|
|
144
|
-
"test": "vitest",
|
|
145
|
-
"test:run": "vitest run",
|
|
146
|
-
"test:coverage": "vitest run --coverage",
|
|
147
|
-
"test:workers": "vitest run --config vitest.workers.config.ts",
|
|
148
|
-
"test:e2e": "vitest run --config vitest.e2e.config.ts",
|
|
149
|
-
"dev": "wrangler dev --config proxy/wrangler.jsonc",
|
|
150
|
-
"deploy": "wrangler deploy --config proxy/wrangler.jsonc",
|
|
151
|
-
"deploy:dry-run": "wrangler deploy --config proxy/wrangler.jsonc --dry-run"
|
|
152
162
|
}
|
|
153
|
-
}
|
|
163
|
+
}
|