@atproto/pds 0.4.171 → 0.4.173
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/CHANGELOG.md +27 -0
- package/dist/account-manager/db/migrations/006-oauth-permission-sets.d.ts +4 -0
- package/dist/account-manager/db/migrations/006-oauth-permission-sets.d.ts.map +1 -0
- package/dist/account-manager/db/migrations/006-oauth-permission-sets.js +21 -0
- package/dist/account-manager/db/migrations/006-oauth-permission-sets.js.map +1 -0
- package/dist/account-manager/db/migrations/index.d.ts +2 -0
- package/dist/account-manager/db/migrations/index.d.ts.map +1 -1
- package/dist/account-manager/db/migrations/index.js +2 -0
- package/dist/account-manager/db/migrations/index.js.map +1 -1
- package/dist/account-manager/db/schema/index.d.ts +3 -1
- package/dist/account-manager/db/schema/index.d.ts.map +1 -1
- package/dist/account-manager/db/schema/lexicon.d.ts +15 -0
- package/dist/account-manager/db/schema/lexicon.d.ts.map +1 -0
- package/dist/account-manager/db/schema/lexicon.js +5 -0
- package/dist/account-manager/db/schema/lexicon.js.map +1 -0
- package/dist/account-manager/db/schema/token.d.ts +1 -0
- package/dist/account-manager/db/schema/token.d.ts.map +1 -1
- package/dist/account-manager/db/schema/token.js.map +1 -1
- package/dist/account-manager/helpers/account-device.d.ts +13 -0
- package/dist/account-manager/helpers/account-device.d.ts.map +1 -1
- package/dist/account-manager/helpers/account.d.ts +1 -0
- package/dist/account-manager/helpers/account.d.ts.map +1 -1
- package/dist/account-manager/helpers/lexicon.d.ts +6 -0
- package/dist/account-manager/helpers/lexicon.d.ts.map +1 -0
- package/dist/account-manager/helpers/lexicon.js +43 -0
- package/dist/account-manager/helpers/lexicon.js.map +1 -0
- package/dist/account-manager/helpers/token.d.ts +97 -32
- package/dist/account-manager/helpers/token.d.ts.map +1 -1
- package/dist/account-manager/helpers/token.js +20 -14
- package/dist/account-manager/helpers/token.js.map +1 -1
- package/dist/account-manager/oauth-store.d.ts +5 -2
- package/dist/account-manager/oauth-store.d.ts.map +1 -1
- package/dist/account-manager/oauth-store.js +11 -0
- package/dist/account-manager/oauth-store.js.map +1 -1
- package/dist/auth-output.d.ts +2 -2
- package/dist/auth-output.d.ts.map +1 -1
- package/dist/auth-verifier.d.ts +2 -2
- package/dist/auth-verifier.d.ts.map +1 -1
- package/dist/auth-verifier.js +1 -1
- package/dist/auth-verifier.js.map +1 -1
- package/dist/config/config.d.ts +4 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +4 -0
- package/dist/config/config.js.map +1 -1
- package/dist/config/env.d.ts +2 -0
- package/dist/config/env.d.ts.map +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +66 -16
- package/dist/context.js.map +1 -1
- package/dist/lexicon/index.d.ts +2 -0
- package/dist/lexicon/index.d.ts.map +1 -1
- package/dist/lexicon/index.js +4 -0
- package/dist/lexicon/index.js.map +1 -1
- package/dist/lexicon/lexicons.d.ts +46 -0
- package/dist/lexicon/lexicons.d.ts.map +1 -1
- package/dist/lexicon/lexicons.js +24 -0
- package/dist/lexicon/lexicons.js.map +1 -1
- package/dist/lexicon/types/com/atproto/temp/revokeAccountCredentials.d.ts +14 -0
- package/dist/lexicon/types/com/atproto/temp/revokeAccountCredentials.d.ts.map +1 -0
- package/dist/lexicon/types/com/atproto/temp/revokeAccountCredentials.js +7 -0
- package/dist/lexicon/types/com/atproto/temp/revokeAccountCredentials.js.map +1 -0
- package/dist/logger.d.ts +1 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +2 -1
- package/dist/logger.js.map +1 -1
- package/dist/pipethrough.js.map +1 -1
- package/package.json +16 -15
- package/src/account-manager/db/migrations/006-oauth-permission-sets.ts +20 -0
- package/src/account-manager/db/migrations/index.ts +2 -0
- package/src/account-manager/db/schema/index.ts +3 -0
- package/src/account-manager/db/schema/lexicon.ts +15 -0
- package/src/account-manager/db/schema/token.ts +1 -0
- package/src/account-manager/helpers/lexicon.ts +49 -0
- package/src/account-manager/helpers/token.ts +7 -2
- package/src/account-manager/oauth-store.ts +18 -1
- package/src/auth-output.ts +2 -2
- package/src/auth-verifier.ts +6 -3
- package/src/config/config.ts +10 -0
- package/src/config/env.ts +4 -0
- package/src/context.ts +79 -18
- package/src/lexicon/index.ts +13 -0
- package/src/lexicon/lexicons.ts +26 -0
- package/src/lexicon/types/com/atproto/temp/revokeAccountCredentials.ts +33 -0
- package/src/logger.ts +1 -0
- package/src/pipethrough.ts +2 -2
- package/tests/oauth.test.ts +5 -0
- package/tests/proxied/__snapshots__/views.test.ts.snap +34 -2
- package/tsconfig.build.tsbuildinfo +1 -1
- package/bin/migration-create.ts +0 -38
@@ -0,0 +1,14 @@
|
|
1
|
+
export type QueryParams = {};
|
2
|
+
export interface InputSchema {
|
3
|
+
account: string;
|
4
|
+
}
|
5
|
+
export interface HandlerInput {
|
6
|
+
encoding: 'application/json';
|
7
|
+
body: InputSchema;
|
8
|
+
}
|
9
|
+
export interface HandlerError {
|
10
|
+
status: number;
|
11
|
+
message?: string;
|
12
|
+
}
|
13
|
+
export type HandlerOutput = HandlerError | void;
|
14
|
+
//# sourceMappingURL=revokeAccountCredentials.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"revokeAccountCredentials.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/temp/revokeAccountCredentials.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,WAAW,GAAG,EAAE,CAAA;AAE5B,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,IAAI,CAAA"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const lexicons_1 = require("../../../../lexicons");
|
4
|
+
const util_1 = require("../../../../util");
|
5
|
+
const is$typed = util_1.is$typed, validate = lexicons_1.validate;
|
6
|
+
const id = 'com.atproto.temp.revokeAccountCredentials';
|
7
|
+
//# sourceMappingURL=revokeAccountCredentials.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"revokeAccountCredentials.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/temp/revokeAccountCredentials.ts"],"names":[],"mappings":";;AAKA,mDAA4D;AAC5D,2CAIyB;AAEzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,2CAA2C,CAAA"}
|
package/dist/logger.d.ts
CHANGED
@@ -10,6 +10,7 @@ export declare const crawlerLogger: import("pino").default.Logger<never>;
|
|
10
10
|
export declare const httpLogger: import("pino").default.Logger<never>;
|
11
11
|
export declare const fetchLogger: import("pino").default.Logger<never>;
|
12
12
|
export declare const oauthLogger: import("pino").default.Logger<never>;
|
13
|
+
export declare const lexiconResolverLogger: import("pino").default.Logger<never>;
|
13
14
|
export declare const loggerMiddleware: import("pino-http").HttpLogger<IncomingMessage, import("http").ServerResponse<IncomingMessage>, never>;
|
14
15
|
export declare function reqSerializer(req: IncomingMessage): {
|
15
16
|
headers: Record<string, string>;
|
package/dist/logger.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAA;AAKhD,eAAO,MAAM,QAAQ,sCAA4B,CAAA;AACjD,eAAO,MAAM,cAAc,sCAAmC,CAAA;AAC9D,eAAO,MAAM,gBAAgB,sCAAqC,CAAA;AAClE,eAAO,MAAM,WAAW,sCAA+B,CAAA;AACvD,eAAO,MAAM,SAAS,sCAAmC,CAAA;AACzD,eAAO,MAAM,YAAY,sCAAgC,CAAA;AACzD,eAAO,MAAM,aAAa,sCAAiC,CAAA;AAC3D,eAAO,MAAM,aAAa,sCAAiC,CAAA;AAC3D,eAAO,MAAM,UAAU,sCAAyB,CAAA;AAChD,eAAO,MAAM,WAAW,sCAA+B,CAAA;AACvD,eAAO,MAAM,WAAW,sCAA+B,CAAA;
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAA;AAKhD,eAAO,MAAM,QAAQ,sCAA4B,CAAA;AACjD,eAAO,MAAM,cAAc,sCAAmC,CAAA;AAC9D,eAAO,MAAM,gBAAgB,sCAAqC,CAAA;AAClE,eAAO,MAAM,WAAW,sCAA+B,CAAA;AACvD,eAAO,MAAM,SAAS,sCAAmC,CAAA;AACzD,eAAO,MAAM,YAAY,sCAAgC,CAAA;AACzD,eAAO,MAAM,aAAa,sCAAiC,CAAA;AAC3D,eAAO,MAAM,aAAa,sCAAiC,CAAA;AAC3D,eAAO,MAAM,UAAU,sCAAyB,CAAA;AAChD,eAAO,MAAM,WAAW,sCAA+B,CAAA;AACvD,eAAO,MAAM,WAAW,sCAA+B,CAAA;AACvD,eAAO,MAAM,qBAAqB,sCAA0C,CAAA;AAE5E,eAAO,MAAM,gBAAgB,wGAS3B,CAAA;AAEF,wBAAgB,aAAa,CAAC,GAAG,EAAE,eAAe;;;;;;;;;;EAIjD"}
|
package/dist/logger.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.loggerMiddleware = exports.oauthLogger = exports.fetchLogger = exports.httpLogger = exports.crawlerLogger = exports.labelerLogger = exports.mailerLogger = exports.seqLogger = exports.redisLogger = exports.readStickyLogger = exports.didCacheLogger = exports.dbLogger = void 0;
|
3
|
+
exports.loggerMiddleware = exports.lexiconResolverLogger = exports.oauthLogger = exports.fetchLogger = exports.httpLogger = exports.crawlerLogger = exports.labelerLogger = exports.mailerLogger = exports.seqLogger = exports.redisLogger = exports.readStickyLogger = exports.didCacheLogger = exports.dbLogger = void 0;
|
4
4
|
exports.reqSerializer = reqSerializer;
|
5
5
|
const pino_1 = require("pino");
|
6
6
|
const pino_http_1 = require("pino-http");
|
@@ -16,6 +16,7 @@ exports.crawlerLogger = (0, common_1.subsystemLogger)('pds:crawler');
|
|
16
16
|
exports.httpLogger = (0, common_1.subsystemLogger)('pds');
|
17
17
|
exports.fetchLogger = (0, common_1.subsystemLogger)('pds:fetch');
|
18
18
|
exports.oauthLogger = (0, common_1.subsystemLogger)('pds:oauth');
|
19
|
+
exports.lexiconResolverLogger = (0, common_1.subsystemLogger)('pds:lexicon-resolver');
|
19
20
|
exports.loggerMiddleware = (0, pino_http_1.pinoHttp)({
|
20
21
|
logger: exports.httpLogger,
|
21
22
|
serializers: {
|
package/dist/logger.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;AA6BA,sCAIC;AAhCD,+BAAqC;AACrC,yCAAoC;AACpC,4CAAmE;AAEtD,QAAA,QAAQ,GAAG,IAAA,wBAAe,EAAC,QAAQ,CAAC,CAAA;AACpC,QAAA,cAAc,GAAG,IAAA,wBAAe,EAAC,eAAe,CAAC,CAAA;AACjD,QAAA,gBAAgB,GAAG,IAAA,wBAAe,EAAC,iBAAiB,CAAC,CAAA;AACrD,QAAA,WAAW,GAAG,IAAA,wBAAe,EAAC,WAAW,CAAC,CAAA;AAC1C,QAAA,SAAS,GAAG,IAAA,wBAAe,EAAC,eAAe,CAAC,CAAA;AAC5C,QAAA,YAAY,GAAG,IAAA,wBAAe,EAAC,YAAY,CAAC,CAAA;AAC5C,QAAA,aAAa,GAAG,IAAA,wBAAe,EAAC,aAAa,CAAC,CAAA;AAC9C,QAAA,aAAa,GAAG,IAAA,wBAAe,EAAC,aAAa,CAAC,CAAA;AAC9C,QAAA,UAAU,GAAG,IAAA,wBAAe,EAAC,KAAK,CAAC,CAAA;AACnC,QAAA,WAAW,GAAG,IAAA,wBAAe,EAAC,WAAW,CAAC,CAAA;AAC1C,QAAA,WAAW,GAAG,IAAA,wBAAe,EAAC,WAAW,CAAC,CAAA;AAC1C,QAAA,qBAAqB,GAAG,IAAA,wBAAe,EAAC,sBAAsB,CAAC,CAAA;AAE/D,QAAA,gBAAgB,GAAG,IAAA,oBAAQ,EAAC;IACvC,MAAM,EAAE,kBAAU;IAClB,WAAW,EAAE;QACX,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,CAAC,GAAY,EAAE,EAAE,CAAC,CAAC;YACtB,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC;YACnB,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC;SAC1B,CAAC;KACH;CACF,CAAC,CAAA;AAEF,SAAgB,aAAa,CAAC,GAAoB;IAChD,MAAM,UAAU,GAAG,qBAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC1C,MAAM,OAAO,GAAG,IAAA,yBAAgB,EAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IACpD,OAAO,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE,CAAA;AACnC,CAAC"}
|
package/dist/pipethrough.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pipethrough.js","sourceRoot":"","sources":["../src/pipethrough.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"pipethrough.js","sourceRoot":"","sources":["../src/pipethrough.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@atproto/pds",
|
3
|
-
"version": "0.4.
|
3
|
+
"version": "0.4.173",
|
4
4
|
"license": "MIT",
|
5
5
|
"description": "Reference implementation of atproto Personal Data Server (PDS)",
|
6
6
|
"keywords": [
|
@@ -47,20 +47,21 @@
|
|
47
47
|
"uint8arrays": "3.0.0",
|
48
48
|
"undici": "^6.19.8",
|
49
49
|
"zod": "^3.23.8",
|
50
|
-
"@atproto-labs/fetch-node": "0.1.
|
51
|
-
"@atproto-labs/xrpc-utils": "0.0.
|
52
|
-
"@atproto/api": "^0.16.
|
53
|
-
"@atproto/aws": "^0.2.
|
50
|
+
"@atproto-labs/fetch-node": "0.1.10",
|
51
|
+
"@atproto-labs/xrpc-utils": "0.0.21",
|
52
|
+
"@atproto/api": "^0.16.6",
|
53
|
+
"@atproto/aws": "^0.2.28",
|
54
54
|
"@atproto/common": "^0.4.11",
|
55
55
|
"@atproto/crypto": "^0.4.4",
|
56
56
|
"@atproto/identity": "^0.4.8",
|
57
|
-
"@atproto/lexicon": "^0.
|
58
|
-
"@atproto/
|
59
|
-
"@atproto/oauth-
|
60
|
-
"@atproto/
|
61
|
-
"@atproto/
|
62
|
-
"@atproto/
|
63
|
-
"@atproto/xrpc
|
57
|
+
"@atproto/lexicon": "^0.5.0",
|
58
|
+
"@atproto/lexicon-resolver": "^0.2.0",
|
59
|
+
"@atproto/oauth-scopes": "^0.1.0",
|
60
|
+
"@atproto/oauth-provider": "^0.11.0",
|
61
|
+
"@atproto/repo": "^0.8.8",
|
62
|
+
"@atproto/syntax": "^0.4.1",
|
63
|
+
"@atproto/xrpc": "^0.7.4",
|
64
|
+
"@atproto/xrpc-server": "^0.9.4"
|
64
65
|
},
|
65
66
|
"devDependencies": {
|
66
67
|
"@atproto/pds-entryway": "npm:@atproto/pds@0.3.0-entryway.3",
|
@@ -78,9 +79,9 @@
|
|
78
79
|
"ts-node": "^10.8.2",
|
79
80
|
"typescript": "^5.6.3",
|
80
81
|
"ws": "^8.12.0",
|
81
|
-
"@atproto/api": "^0.16.
|
82
|
-
"@atproto/bsky": "^0.0.
|
83
|
-
"@atproto/lex-cli": "^0.9.
|
82
|
+
"@atproto/api": "^0.16.6",
|
83
|
+
"@atproto/bsky": "^0.0.181",
|
84
|
+
"@atproto/lex-cli": "^0.9.4",
|
84
85
|
"@atproto/oauth-client-browser-example": "0.0.5"
|
85
86
|
},
|
86
87
|
"scripts": {
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import { Kysely } from 'kysely'
|
2
|
+
|
3
|
+
export async function up(db: Kysely<unknown>): Promise<void> {
|
4
|
+
await db.schema.alterTable('token').addColumn('scope', 'varchar').execute()
|
5
|
+
|
6
|
+
await db.schema
|
7
|
+
.createTable('lexicon')
|
8
|
+
.addColumn('nsid', 'varchar', (col) => col.primaryKey())
|
9
|
+
.addColumn('createdAt', 'varchar', (col) => col.notNull())
|
10
|
+
.addColumn('updatedAt', 'varchar', (col) => col.notNull())
|
11
|
+
.addColumn('lastSucceededAt', 'varchar')
|
12
|
+
.addColumn('uri', 'varchar')
|
13
|
+
.addColumn('lexicon', 'varchar')
|
14
|
+
.execute()
|
15
|
+
}
|
16
|
+
|
17
|
+
export async function down(db: Kysely<unknown>): Promise<void> {
|
18
|
+
await db.schema.dropTable('lexicon').execute()
|
19
|
+
await db.schema.alterTable('token').dropColumn('scope').execute()
|
20
|
+
}
|
@@ -3,6 +3,7 @@ import * as mig002 from './002-account-deactivation'
|
|
3
3
|
import * as mig003 from './003-privileged-app-passwords'
|
4
4
|
import * as mig004 from './004-oauth'
|
5
5
|
import * as mig005 from './005-oauth-account-management'
|
6
|
+
import * as mig006 from './006-oauth-permission-sets'
|
6
7
|
|
7
8
|
export default {
|
8
9
|
'001': mig001,
|
@@ -10,4 +11,5 @@ export default {
|
|
10
11
|
'003': mig003,
|
11
12
|
'004': mig004,
|
12
13
|
'005': mig005,
|
14
|
+
'006': mig006,
|
13
15
|
}
|
@@ -7,6 +7,7 @@ import * as authorizedClient from './authorized-client'
|
|
7
7
|
import * as device from './device'
|
8
8
|
import * as emailToken from './email-token'
|
9
9
|
import * as inviteCode from './invite-code'
|
10
|
+
import * as lexicon from './lexicon'
|
10
11
|
import * as refreshToken from './refresh-token'
|
11
12
|
import * as repoRoot from './repo-root'
|
12
13
|
import * as token from './token'
|
@@ -24,6 +25,7 @@ export type DatabaseSchema = actor.PartialDB &
|
|
24
25
|
appPassword.PartialDB &
|
25
26
|
repoRoot.PartialDB &
|
26
27
|
inviteCode.PartialDB &
|
28
|
+
lexicon.PartialDB &
|
27
29
|
emailToken.PartialDB
|
28
30
|
|
29
31
|
export type { Actor, ActorEntry } from './actor'
|
@@ -32,6 +34,7 @@ export type { AccountDevice } from './account-device'
|
|
32
34
|
export type { Device } from './device'
|
33
35
|
export type { AuthorizationRequest } from './authorization-request'
|
34
36
|
export type { Token } from './token'
|
37
|
+
export type { Lexicon } from './lexicon'
|
35
38
|
export type { UsedRefreshToken } from './used-refresh-token'
|
36
39
|
export type { RepoRoot } from './repo-root'
|
37
40
|
export type { RefreshToken } from './refresh-token'
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import type { LexiconDoc } from '@atproto/oauth-provider'
|
2
|
+
import { DateISO, JsonEncoded } from '../../../db/cast'
|
3
|
+
|
4
|
+
export interface Lexicon {
|
5
|
+
nsid: string
|
6
|
+
createdAt: DateISO
|
7
|
+
updatedAt: DateISO
|
8
|
+
lastSucceededAt: null | DateISO
|
9
|
+
uri: null | string
|
10
|
+
lexicon: null | JsonEncoded<LexiconDoc>
|
11
|
+
}
|
12
|
+
|
13
|
+
export const tableName = 'lexicon'
|
14
|
+
|
15
|
+
export type PartialDB = { [tableName]: Lexicon }
|
@@ -0,0 +1,49 @@
|
|
1
|
+
import { Insertable } from 'kysely'
|
2
|
+
import { LexiconData } from '@atproto/oauth-provider'
|
3
|
+
import { fromDateISO, fromJson, toDateISO, toJson } from '../../db'
|
4
|
+
import { AccountDb, Lexicon } from '../db'
|
5
|
+
|
6
|
+
export async function upsert(db: AccountDb, nsid: string, data: LexiconData) {
|
7
|
+
const updates: Omit<Insertable<Lexicon>, 'nsid'> = {
|
8
|
+
...data,
|
9
|
+
createdAt: toDateISO(data.createdAt),
|
10
|
+
updatedAt: toDateISO(data.updatedAt),
|
11
|
+
lastSucceededAt: data.lastSucceededAt
|
12
|
+
? toDateISO(data.lastSucceededAt)
|
13
|
+
: null,
|
14
|
+
lexicon: data.lexicon ? toJson(data.lexicon) : null,
|
15
|
+
}
|
16
|
+
|
17
|
+
await db.executeWithRetry(
|
18
|
+
db.db
|
19
|
+
.insertInto('lexicon')
|
20
|
+
.values({ ...updates, nsid })
|
21
|
+
.onConflict((oc) => oc.column('nsid').doUpdateSet(updates)),
|
22
|
+
)
|
23
|
+
}
|
24
|
+
|
25
|
+
export async function find(
|
26
|
+
db: AccountDb,
|
27
|
+
nsid: string,
|
28
|
+
): Promise<LexiconData | null> {
|
29
|
+
const row = await db.db
|
30
|
+
.selectFrom('lexicon')
|
31
|
+
.selectAll()
|
32
|
+
.where('nsid', '=', nsid)
|
33
|
+
.executeTakeFirst()
|
34
|
+
if (!row) return null
|
35
|
+
|
36
|
+
return {
|
37
|
+
...row,
|
38
|
+
createdAt: fromDateISO(row.createdAt),
|
39
|
+
updatedAt: fromDateISO(row.updatedAt),
|
40
|
+
lastSucceededAt: row.lastSucceededAt
|
41
|
+
? fromDateISO(row.lastSucceededAt)
|
42
|
+
: null,
|
43
|
+
lexicon: row.lexicon ? fromJson(row.lexicon) : null,
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
export async function remove(db: AccountDb, nsid: string) {
|
48
|
+
await db.db.deleteFrom('lexicon').where('nsid', '=', nsid).execute()
|
49
|
+
}
|
@@ -21,6 +21,7 @@ export function toTokenData(row: Selectable<Token>): TokenData {
|
|
21
21
|
sub: row.did,
|
22
22
|
parameters: fromJson(row.parameters),
|
23
23
|
code: row.code,
|
24
|
+
scope: row.scope,
|
24
25
|
}
|
25
26
|
}
|
26
27
|
|
@@ -42,6 +43,7 @@ const selectTokenInfoQB = (db: AccountDb) =>
|
|
42
43
|
'token.details',
|
43
44
|
'token.code',
|
44
45
|
'token.currentRefreshToken',
|
46
|
+
'token.scope',
|
45
47
|
])
|
46
48
|
|
47
49
|
export const createQB = (
|
@@ -49,8 +51,8 @@ export const createQB = (
|
|
49
51
|
tokenId: TokenId,
|
50
52
|
data: TokenData,
|
51
53
|
refreshToken?: RefreshToken,
|
52
|
-
) =>
|
53
|
-
db.db.insertInto('token').values({
|
54
|
+
) => {
|
55
|
+
return db.db.insertInto('token').values({
|
54
56
|
tokenId,
|
55
57
|
createdAt: toDateISO(data.createdAt),
|
56
58
|
expiresAt: toDateISO(data.expiresAt),
|
@@ -63,7 +65,9 @@ export const createQB = (
|
|
63
65
|
details: data.details ? toJson(data.details) : null,
|
64
66
|
code: data.code,
|
65
67
|
currentRefreshToken: refreshToken || null,
|
68
|
+
scope: data.scope,
|
66
69
|
})
|
70
|
+
}
|
67
71
|
|
68
72
|
export const forRotateQB = (db: AccountDb, id: TokenId) =>
|
69
73
|
db.db
|
@@ -138,6 +142,7 @@ export const rotateQB = (
|
|
138
142
|
expiresAt: toDateISO(newData.expiresAt),
|
139
143
|
updatedAt: toDateISO(newData.updatedAt),
|
140
144
|
clientAuth: toJson(newData.clientAuth),
|
145
|
+
scope: newData.scope,
|
141
146
|
})
|
142
147
|
// uses primary key index
|
143
148
|
.where('id', '=', id)
|
@@ -18,6 +18,8 @@ import {
|
|
18
18
|
HandleUnavailableError,
|
19
19
|
InvalidInviteCodeError,
|
20
20
|
InvalidRequestError,
|
21
|
+
LexiconData,
|
22
|
+
LexiconStore,
|
21
23
|
NewTokenData,
|
22
24
|
RefreshToken,
|
23
25
|
RequestData,
|
@@ -52,6 +54,7 @@ import * as accountDeviceHelper from './helpers/account-device'
|
|
52
54
|
import * as authRequestHelper from './helpers/authorization-request'
|
53
55
|
import * as authorizedClientHelper from './helpers/authorized-client'
|
54
56
|
import * as deviceHelper from './helpers/device'
|
57
|
+
import * as lexiconHelper from './helpers/lexicon'
|
55
58
|
import * as tokenHelper from './helpers/token'
|
56
59
|
import * as usedRefreshTokenHelper from './helpers/used-refresh-token'
|
57
60
|
|
@@ -62,7 +65,7 @@ import * as usedRefreshTokenHelper from './helpers/used-refresh-token'
|
|
62
65
|
* @note The use of this class assumes that there is no entryway.
|
63
66
|
*/
|
64
67
|
export class OAuthStore
|
65
|
-
implements AccountStore, RequestStore, DeviceStore, TokenStore
|
68
|
+
implements AccountStore, RequestStore, DeviceStore, LexiconStore, TokenStore
|
66
69
|
{
|
67
70
|
constructor(
|
68
71
|
private readonly accountManager: AccountManager,
|
@@ -462,6 +465,20 @@ export class OAuthStore
|
|
462
465
|
await this.db.executeWithRetry(deviceHelper.removeQB(this.db, deviceId))
|
463
466
|
}
|
464
467
|
|
468
|
+
// LexiconStore
|
469
|
+
|
470
|
+
async findLexicon(nsid: string): Promise<LexiconData | null> {
|
471
|
+
return lexiconHelper.find(this.db, nsid)
|
472
|
+
}
|
473
|
+
|
474
|
+
async storeLexicon(nsid: string, data: LexiconData): Promise<void> {
|
475
|
+
return lexiconHelper.upsert(this.db, nsid, data)
|
476
|
+
}
|
477
|
+
|
478
|
+
async deleteLexicon(nsid: string): Promise<void> {
|
479
|
+
return lexiconHelper.remove(this.db, nsid)
|
480
|
+
}
|
481
|
+
|
465
482
|
// TokenStore
|
466
483
|
|
467
484
|
async createToken(
|
package/src/auth-output.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { ScopePermissions } from '@atproto/oauth-scopes'
|
2
2
|
import { AuthScope } from './auth-scope'
|
3
3
|
|
4
4
|
export type UnauthenticatedOutput = {
|
@@ -30,7 +30,7 @@ export type OAuthOutput = {
|
|
30
30
|
credentials: {
|
31
31
|
type: 'oauth'
|
32
32
|
did: string
|
33
|
-
permissions:
|
33
|
+
permissions: ScopePermissions
|
34
34
|
}
|
35
35
|
}
|
36
36
|
|
package/src/auth-verifier.ts
CHANGED
@@ -10,7 +10,10 @@ import {
|
|
10
10
|
VerifyTokenClaimsOptions,
|
11
11
|
WWWAuthenticateError,
|
12
12
|
} from '@atproto/oauth-provider'
|
13
|
-
import {
|
13
|
+
import {
|
14
|
+
ScopePermissions,
|
15
|
+
ScopePermissionsTransition,
|
16
|
+
} from '@atproto/oauth-scopes'
|
14
17
|
import {
|
15
18
|
AuthRequiredError,
|
16
19
|
Awaitable,
|
@@ -55,7 +58,7 @@ export type ExtraScopedOptions<S extends AuthScope = AuthScope> = {
|
|
55
58
|
|
56
59
|
export type AuthorizedOptions<P extends Params = Params> = {
|
57
60
|
authorize: (
|
58
|
-
permissions:
|
61
|
+
permissions: ScopePermissions,
|
59
62
|
ctx: MethodAuthContext<P>,
|
60
63
|
) => Awaitable<void>
|
61
64
|
}
|
@@ -399,7 +402,7 @@ export class AuthVerifier {
|
|
399
402
|
|
400
403
|
await this.verifyStatus(did, verifyStatusOptions)
|
401
404
|
|
402
|
-
const permissions = new
|
405
|
+
const permissions = new ScopePermissionsTransition(
|
403
406
|
tokenClaims.scope?.split(' '),
|
404
407
|
)
|
405
408
|
|
package/src/config/config.ts
CHANGED
@@ -319,6 +319,10 @@ export const envToCfg = (env: ServerEnvironment): ServerConfig => {
|
|
319
319
|
},
|
320
320
|
}
|
321
321
|
|
322
|
+
const lexiconCfg: LexiconResolverConfig = {
|
323
|
+
didAuthority: env.lexiconDidAuthority,
|
324
|
+
}
|
325
|
+
|
322
326
|
return {
|
323
327
|
service: serviceCfg,
|
324
328
|
db: dbCfg,
|
@@ -337,6 +341,7 @@ export const envToCfg = (env: ServerEnvironment): ServerConfig => {
|
|
337
341
|
rateLimits: rateLimitsCfg,
|
338
342
|
crawlers: crawlersCfg,
|
339
343
|
fetch: fetchCfg,
|
344
|
+
lexicon: lexiconCfg,
|
340
345
|
proxy: proxyCfg,
|
341
346
|
oauth: oauthCfg,
|
342
347
|
}
|
@@ -362,6 +367,7 @@ export type ServerConfig = {
|
|
362
367
|
fetch: FetchConfig
|
363
368
|
proxy: ProxyConfig
|
364
369
|
oauth: OAuthConfig
|
370
|
+
lexicon: LexiconResolverConfig
|
365
371
|
}
|
366
372
|
|
367
373
|
export type ServiceConfig = {
|
@@ -460,6 +466,10 @@ export type OAuthConfig = {
|
|
460
466
|
}
|
461
467
|
}
|
462
468
|
|
469
|
+
export type LexiconResolverConfig = {
|
470
|
+
didAuthority?: string
|
471
|
+
}
|
472
|
+
|
463
473
|
export type InvitesConfig =
|
464
474
|
| {
|
465
475
|
required: true
|
package/src/config/env.ts
CHANGED
@@ -286,8 +286,12 @@ export type ServerEnvironment = {
|
|
286
286
|
disableSsrfProtection?: boolean
|
287
287
|
|
288
288
|
// fetch
|
289
|
+
fetchForceLogging?: boolean
|
289
290
|
fetchMaxResponseSize?: number
|
290
291
|
|
292
|
+
// lexicon resolver
|
293
|
+
lexiconDidAuthority?: string
|
294
|
+
|
291
295
|
// proxy
|
292
296
|
proxyAllowHTTP2?: boolean
|
293
297
|
proxyHeadersTimeout?: number
|
package/src/context.ts
CHANGED
@@ -9,6 +9,10 @@ import { AtpAgent } from '@atproto/api'
|
|
9
9
|
import { KmsKeypair, S3BlobStore } from '@atproto/aws'
|
10
10
|
import * as crypto from '@atproto/crypto'
|
11
11
|
import { IdResolver } from '@atproto/identity'
|
12
|
+
import {
|
13
|
+
LexiconResolver,
|
14
|
+
buildLexiconResolver,
|
15
|
+
} from '@atproto/lexicon-resolver'
|
12
16
|
import {
|
13
17
|
AccessTokenMode,
|
14
18
|
JoseKey,
|
@@ -23,7 +27,6 @@ import {
|
|
23
27
|
import {
|
24
28
|
Fetch,
|
25
29
|
isUnicastIp,
|
26
|
-
loggedFetch,
|
27
30
|
safeFetchWrap,
|
28
31
|
unicastLookup,
|
29
32
|
} from '@atproto-labs/fetch-node'
|
@@ -43,7 +46,7 @@ import { Crawlers } from './crawlers'
|
|
43
46
|
import { DidSqliteCache } from './did-cache'
|
44
47
|
import { DiskBlobStore } from './disk-blobstore'
|
45
48
|
import { ImageUrlBuilder } from './image/image-url-builder'
|
46
|
-
import { fetchLogger } from './logger'
|
49
|
+
import { fetchLogger, lexiconResolverLogger } from './logger'
|
47
50
|
import { ServerMailer } from './mailer'
|
48
51
|
import { ModerationMailer } from './mailer/moderation'
|
49
52
|
import { LocalViewer, LocalViewerCreator } from './read-after-write/viewer'
|
@@ -289,25 +292,82 @@ export class AppContext {
|
|
289
292
|
})
|
290
293
|
: proxyAgentBase
|
291
294
|
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
295
|
+
/**
|
296
|
+
* A fetch() function that protects against SSRF attacks, large responses &
|
297
|
+
* known bad domains. This function can safely be used to fetch user
|
298
|
+
* provided URLs (unless "disableSsrfProtection" is true, of course).
|
299
|
+
*
|
300
|
+
* @note **DO NOT** wrap `safeFetch` with any logging or other transforms as
|
301
|
+
* this might prevent the use of explicit `redirect: "follow"` init from
|
302
|
+
* working. See {@link safeFetchWrap}.
|
303
|
+
*/
|
304
|
+
const safeFetch = safeFetchWrap({
|
305
|
+
allowIpHost: false,
|
306
|
+
allowImplicitRedirect: false,
|
307
|
+
responseMaxSize: cfg.fetch.maxResponseSize,
|
308
|
+
ssrfProtection: !cfg.fetch.disableSsrfProtection,
|
309
|
+
|
310
|
+
// @NOTE Since we are using NodeJS <= 20, unicastFetchWrap would normally
|
311
|
+
// *not* be using a keep-alive agent if it we are providing a fetch
|
312
|
+
// function that is different from `globalThis.fetch`. However, since the
|
313
|
+
// fetch function below is indeed calling `globalThis.fetch` without
|
314
|
+
// altering any argument, we can safely force the use of the keep-alive
|
315
|
+
// agent. This would not be the case if we used "loggedFetch" as that
|
316
|
+
// function does wrap the input & init arguments into a Request object,
|
317
|
+
// which, on NodeJS<=20, results in init.dispatcher *not* being used.
|
318
|
+
dangerouslyForceKeepAliveAgent: true,
|
319
|
+
fetch: function (input, init) {
|
320
|
+
const method =
|
321
|
+
init?.method ?? (input instanceof Request ? input.method : 'GET')
|
322
|
+
const uri = input instanceof Request ? input.url : String(input)
|
323
|
+
|
324
|
+
fetchLogger.info({ method, uri }, 'fetch')
|
325
|
+
|
326
|
+
return globalThis.fetch.call(this, input, init)
|
306
327
|
},
|
307
|
-
logResponse: false,
|
308
|
-
logError: false,
|
309
328
|
})
|
310
329
|
|
330
|
+
const baseLexiconResolver = buildLexiconResolver({
|
331
|
+
idResolver,
|
332
|
+
rpc: { fetch: safeFetch },
|
333
|
+
})
|
334
|
+
|
335
|
+
const getLexiconAuthority = (_nsid: string): string | undefined => {
|
336
|
+
// At the moment, only a single override strategy is supported by
|
337
|
+
// specifying a did through which all the lexicons will be resolved. We
|
338
|
+
// might need more granular control in the future (e.g. per-nsid
|
339
|
+
// overrides)
|
340
|
+
return cfg.lexicon.didAuthority
|
341
|
+
}
|
342
|
+
|
343
|
+
const lexiconResolver: LexiconResolver = async (input) => {
|
344
|
+
const nsid: string = String(input)
|
345
|
+
try {
|
346
|
+
const result = await baseLexiconResolver(input, {
|
347
|
+
didAuthority: getLexiconAuthority(nsid),
|
348
|
+
// Right now, the lexicon resolver is only used by the oauth-provider,
|
349
|
+
// which caches the responses internally (through the LexiconStore).
|
350
|
+
// Since the `LexiconResolver` does not allow specifying a
|
351
|
+
// `forceRefresh` option, we hard code it here. Should PDSs need to
|
352
|
+
// resolve lexicons for other purposes (e.g. record validation), we'd
|
353
|
+
// probably want to either implement caching as built into the
|
354
|
+
// lexiconResolver here, or allow the caller (oauth-provider, etc.) to
|
355
|
+
// specify a `forceRefresh` option by altering the LexiconResolver
|
356
|
+
// interface.
|
357
|
+
forceRefresh: true,
|
358
|
+
})
|
359
|
+
|
360
|
+
const { uri, cid } = result
|
361
|
+
lexiconResolverLogger.info({ nsid, uri, cid }, 'Resolved lexicon')
|
362
|
+
|
363
|
+
return result
|
364
|
+
} catch (err) {
|
365
|
+
lexiconResolverLogger.error({ nsid, err }, 'Lexicon resolution failed')
|
366
|
+
|
367
|
+
throw err
|
368
|
+
}
|
369
|
+
}
|
370
|
+
|
311
371
|
const oauthProvider = cfg.oauth.provider
|
312
372
|
? new OAuthProvider({
|
313
373
|
issuer: cfg.oauth.issuer,
|
@@ -331,6 +391,7 @@ export class AppContext {
|
|
331
391
|
hcaptcha: cfg.oauth.provider.hcaptcha,
|
332
392
|
branding: cfg.oauth.provider.branding,
|
333
393
|
safeFetch,
|
394
|
+
lexiconResolver,
|
334
395
|
metadata: {
|
335
396
|
protected_resources: [new URL(cfg.oauth.issuer).origin],
|
336
397
|
},
|