@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.
Files changed (89) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/account-manager/db/migrations/006-oauth-permission-sets.d.ts +4 -0
  3. package/dist/account-manager/db/migrations/006-oauth-permission-sets.d.ts.map +1 -0
  4. package/dist/account-manager/db/migrations/006-oauth-permission-sets.js +21 -0
  5. package/dist/account-manager/db/migrations/006-oauth-permission-sets.js.map +1 -0
  6. package/dist/account-manager/db/migrations/index.d.ts +2 -0
  7. package/dist/account-manager/db/migrations/index.d.ts.map +1 -1
  8. package/dist/account-manager/db/migrations/index.js +2 -0
  9. package/dist/account-manager/db/migrations/index.js.map +1 -1
  10. package/dist/account-manager/db/schema/index.d.ts +3 -1
  11. package/dist/account-manager/db/schema/index.d.ts.map +1 -1
  12. package/dist/account-manager/db/schema/lexicon.d.ts +15 -0
  13. package/dist/account-manager/db/schema/lexicon.d.ts.map +1 -0
  14. package/dist/account-manager/db/schema/lexicon.js +5 -0
  15. package/dist/account-manager/db/schema/lexicon.js.map +1 -0
  16. package/dist/account-manager/db/schema/token.d.ts +1 -0
  17. package/dist/account-manager/db/schema/token.d.ts.map +1 -1
  18. package/dist/account-manager/db/schema/token.js.map +1 -1
  19. package/dist/account-manager/helpers/account-device.d.ts +13 -0
  20. package/dist/account-manager/helpers/account-device.d.ts.map +1 -1
  21. package/dist/account-manager/helpers/account.d.ts +1 -0
  22. package/dist/account-manager/helpers/account.d.ts.map +1 -1
  23. package/dist/account-manager/helpers/lexicon.d.ts +6 -0
  24. package/dist/account-manager/helpers/lexicon.d.ts.map +1 -0
  25. package/dist/account-manager/helpers/lexicon.js +43 -0
  26. package/dist/account-manager/helpers/lexicon.js.map +1 -0
  27. package/dist/account-manager/helpers/token.d.ts +97 -32
  28. package/dist/account-manager/helpers/token.d.ts.map +1 -1
  29. package/dist/account-manager/helpers/token.js +20 -14
  30. package/dist/account-manager/helpers/token.js.map +1 -1
  31. package/dist/account-manager/oauth-store.d.ts +5 -2
  32. package/dist/account-manager/oauth-store.d.ts.map +1 -1
  33. package/dist/account-manager/oauth-store.js +11 -0
  34. package/dist/account-manager/oauth-store.js.map +1 -1
  35. package/dist/auth-output.d.ts +2 -2
  36. package/dist/auth-output.d.ts.map +1 -1
  37. package/dist/auth-verifier.d.ts +2 -2
  38. package/dist/auth-verifier.d.ts.map +1 -1
  39. package/dist/auth-verifier.js +1 -1
  40. package/dist/auth-verifier.js.map +1 -1
  41. package/dist/config/config.d.ts +4 -0
  42. package/dist/config/config.d.ts.map +1 -1
  43. package/dist/config/config.js +4 -0
  44. package/dist/config/config.js.map +1 -1
  45. package/dist/config/env.d.ts +2 -0
  46. package/dist/config/env.d.ts.map +1 -1
  47. package/dist/context.d.ts.map +1 -1
  48. package/dist/context.js +66 -16
  49. package/dist/context.js.map +1 -1
  50. package/dist/lexicon/index.d.ts +2 -0
  51. package/dist/lexicon/index.d.ts.map +1 -1
  52. package/dist/lexicon/index.js +4 -0
  53. package/dist/lexicon/index.js.map +1 -1
  54. package/dist/lexicon/lexicons.d.ts +46 -0
  55. package/dist/lexicon/lexicons.d.ts.map +1 -1
  56. package/dist/lexicon/lexicons.js +24 -0
  57. package/dist/lexicon/lexicons.js.map +1 -1
  58. package/dist/lexicon/types/com/atproto/temp/revokeAccountCredentials.d.ts +14 -0
  59. package/dist/lexicon/types/com/atproto/temp/revokeAccountCredentials.d.ts.map +1 -0
  60. package/dist/lexicon/types/com/atproto/temp/revokeAccountCredentials.js +7 -0
  61. package/dist/lexicon/types/com/atproto/temp/revokeAccountCredentials.js.map +1 -0
  62. package/dist/logger.d.ts +1 -0
  63. package/dist/logger.d.ts.map +1 -1
  64. package/dist/logger.js +2 -1
  65. package/dist/logger.js.map +1 -1
  66. package/dist/pipethrough.js.map +1 -1
  67. package/package.json +16 -15
  68. package/src/account-manager/db/migrations/006-oauth-permission-sets.ts +20 -0
  69. package/src/account-manager/db/migrations/index.ts +2 -0
  70. package/src/account-manager/db/schema/index.ts +3 -0
  71. package/src/account-manager/db/schema/lexicon.ts +15 -0
  72. package/src/account-manager/db/schema/token.ts +1 -0
  73. package/src/account-manager/helpers/lexicon.ts +49 -0
  74. package/src/account-manager/helpers/token.ts +7 -2
  75. package/src/account-manager/oauth-store.ts +18 -1
  76. package/src/auth-output.ts +2 -2
  77. package/src/auth-verifier.ts +6 -3
  78. package/src/config/config.ts +10 -0
  79. package/src/config/env.ts +4 -0
  80. package/src/context.ts +79 -18
  81. package/src/lexicon/index.ts +13 -0
  82. package/src/lexicon/lexicons.ts +26 -0
  83. package/src/lexicon/types/com/atproto/temp/revokeAccountCredentials.ts +33 -0
  84. package/src/logger.ts +1 -0
  85. package/src/pipethrough.ts +2 -2
  86. package/tests/oauth.test.ts +5 -0
  87. package/tests/proxied/__snapshots__/views.test.ts.snap +34 -2
  88. package/tsconfig.build.tsbuildinfo +1 -1
  89. 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>;
@@ -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;AAEvD,eAAO,MAAM,gBAAgB,wGAS3B,CAAA;AAEF,wBAAgB,aAAa,CAAC,GAAG,EAAE,eAAe;;;;;;;;;;EAIjD"}
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: {
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;AA4BA,sCAIC;AA/BD,+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;AAE1C,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"}
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"}
@@ -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.171",
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.9",
51
- "@atproto-labs/xrpc-utils": "0.0.20",
52
- "@atproto/api": "^0.16.4",
53
- "@atproto/aws": "^0.2.27",
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.4.14",
58
- "@atproto/oauth-scopes": "^0.0.2",
59
- "@atproto/oauth-provider": "^0.10.2",
60
- "@atproto/repo": "^0.8.7",
61
- "@atproto/syntax": "^0.4.0",
62
- "@atproto/xrpc": "^0.7.3",
63
- "@atproto/xrpc-server": "^0.9.3"
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.4",
82
- "@atproto/bsky": "^0.0.179",
83
- "@atproto/lex-cli": "^0.9.3",
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 }
@@ -28,6 +28,7 @@ export interface Token {
28
28
  details: JsonEncoded<OAuthAuthorizationDetails> | null
29
29
  code: Code | null
30
30
  currentRefreshToken: RefreshToken | null
31
+ scope: string | null
31
32
  }
32
33
 
33
34
  export type TokenEntry = Selectable<Token>
@@ -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(
@@ -1,4 +1,4 @@
1
- import { PermissionSet } from '@atproto/oauth-scopes'
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: PermissionSet
33
+ permissions: ScopePermissions
34
34
  }
35
35
  }
36
36
 
@@ -10,7 +10,10 @@ import {
10
10
  VerifyTokenClaimsOptions,
11
11
  WWWAuthenticateError,
12
12
  } from '@atproto/oauth-provider'
13
- import { PermissionSet, PermissionSetTransition } from '@atproto/oauth-scopes'
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: PermissionSet,
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 PermissionSetTransition(
405
+ const permissions = new ScopePermissionsTransition(
403
406
  tokenClaims.scope?.split(' '),
404
407
  )
405
408
 
@@ -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
- // A fetch() function that protects against SSRF attacks, large responses &
293
- // known bad domains. This function can safely be used to fetch user
294
- // provided URLs (unless "disableSsrfProtection" is true, of course).
295
- const safeFetch = loggedFetch({
296
- fetch: safeFetchWrap({
297
- // Using globalThis.fetch allows safeFetchWrap to use keep-alive. See
298
- // unicastFetchWrap().
299
- fetch: globalThis.fetch,
300
- allowIpHost: false,
301
- responseMaxSize: cfg.fetch.maxResponseSize,
302
- ssrfProtection: !cfg.fetch.disableSsrfProtection,
303
- }),
304
- logRequest: ({ method, url }) => {
305
- fetchLogger.debug({ method, uri: url }, 'fetch')
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
  },