@atproto/bsky 0.0.164 → 0.0.166
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 +16 -0
- package/dist/data-plane/bsync/index.d.ts.map +1 -1
- package/dist/data-plane/bsync/index.js +2 -1
- package/dist/data-plane/bsync/index.js.map +1 -1
- package/dist/data-plane/server/routes/private-data.d.ts.map +1 -1
- package/dist/data-plane/server/routes/private-data.js +2 -1
- package/dist/data-plane/server/routes/private-data.js.map +1 -1
- package/dist/lexicon/lexicons.d.ts +2 -2
- package/dist/lexicon/lexicons.d.ts.map +1 -1
- package/dist/lexicon/lexicons.js +1 -0
- package/dist/lexicon/lexicons.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/listNotifications.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/notification/listNotifications.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/listNotifications.js.map +1 -1
- package/dist/stash.d.ts +6 -2
- package/dist/stash.d.ts.map +1 -1
- package/dist/stash.js +4 -1
- package/dist/stash.js.map +1 -1
- package/package.json +4 -4
- package/src/data-plane/bsync/index.ts +2 -1
- package/src/data-plane/server/routes/private-data.ts +2 -1
- package/src/lexicon/lexicons.ts +1 -0
- package/src/lexicon/types/app/bsky/notification/listNotifications.ts +1 -0
- package/src/stash.ts +14 -4
- package/tests/stash.test.ts +2 -1
- package/tests/views/notifications.test.ts +15 -6
|
@@ -49,7 +49,7 @@ export interface Notification {
|
|
|
49
49
|
cid: string;
|
|
50
50
|
author: AppBskyActorDefs.ProfileView;
|
|
51
51
|
/** The reason why this notification was delivered - e.g. your post was liked, or you received a new follower. */
|
|
52
|
-
reason: 'like' | 'repost' | 'follow' | 'mention' | 'reply' | 'quote' | 'starterpack-joined' | 'verified' | 'unverified' | 'like-via-repost' | 'repost-via-repost' | (string & {});
|
|
52
|
+
reason: 'like' | 'repost' | 'follow' | 'mention' | 'reply' | 'quote' | 'starterpack-joined' | 'verified' | 'unverified' | 'like-via-repost' | 'repost-via-repost' | 'subscribed-post' | (string & {});
|
|
53
53
|
reasonSubject?: string;
|
|
54
54
|
record: {
|
|
55
55
|
[_ in string]: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listNotifications.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/notification/listNotifications.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,KAAK,gBAAgB,EAAW,MAAM,kBAAkB,CAAA;AAQjE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,KAAK,gBAAgB,MAAM,kBAAkB,CAAA;AACzD,OAAO,KAAK,KAAK,mBAAmB,MAAM,oCAAoC,CAAA;AAM9E,MAAM,WAAW,WAAW;IAC1B,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,YAAY,EAAE,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,CAAA;AAEpC,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,kBAAkB,CAAA;AAC9E,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI;IAC1D,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAA;IACrB,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1C,CAAA;AACD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI,CACpD,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA;AAE3C,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,sDAAsD,CAAA;IAC9D,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,gBAAgB,CAAC,WAAW,CAAA;IACpC,iHAAiH;IACjH,MAAM,EACF,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,OAAO,GACP,OAAO,GACP,oBAAoB,GACpB,UAAU,GACV,YAAY,GACZ,iBAAiB,GACjB,mBAAmB,GACnB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE;SAAG,CAAC,IAAI,MAAM,GAAG,OAAO;KAAE,CAAA;IAClC,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,mBAAmB,CAAC,KAAK,EAAE,CAAA;CACrC;AAID,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,8GAErC;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,sCAE3C"}
|
|
1
|
+
{"version":3,"file":"listNotifications.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/notification/listNotifications.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,KAAK,gBAAgB,EAAW,MAAM,kBAAkB,CAAA;AAQjE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,KAAK,gBAAgB,MAAM,kBAAkB,CAAA;AACzD,OAAO,KAAK,KAAK,mBAAmB,MAAM,oCAAoC,CAAA;AAM9E,MAAM,WAAW,WAAW;IAC1B,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,YAAY,EAAE,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,CAAA;AAEpC,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,kBAAkB,CAAA;AAC9E,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI;IAC1D,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAA;IACrB,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1C,CAAA;AACD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI,CACpD,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA;AAE3C,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,sDAAsD,CAAA;IAC9D,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,gBAAgB,CAAC,WAAW,CAAA;IACpC,iHAAiH;IACjH,MAAM,EACF,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,OAAO,GACP,OAAO,GACP,oBAAoB,GACpB,UAAU,GACV,YAAY,GACZ,iBAAiB,GACjB,mBAAmB,GACnB,iBAAiB,GACjB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE;SAAG,CAAC,IAAI,MAAM,GAAG,OAAO;KAAE,CAAA;IAClC,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,mBAAmB,CAAC,KAAK,EAAE,CAAA;CACrC;AAID,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,8GAErC;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,sCAE3C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listNotifications.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/notification/listNotifications.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"listNotifications.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/notification/listNotifications.ts"],"names":[],"mappings":";;AA6FA,wCAEC;AAED,oDAEC;AA7FD,mDAA4D;AAC5D,2CAIyB;AAKzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,yCAAyC,CAAA;AAyEpD,MAAM,gBAAgB,GAAG,cAAc,CAAA;AAEvC,SAAgB,cAAc,CAAI,CAAI;IACpC,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAA;AAC1C,CAAC;AAED,SAAgB,oBAAoB,CAAI,CAAI;IAC1C,OAAO,QAAQ,CAAmB,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAA;AAC5D,CAAC"}
|
package/dist/stash.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { LexValue } from '@atproto/lexicon';
|
|
2
2
|
import { BsyncClient } from './bsync';
|
|
3
|
+
export declare const Namespaces: {
|
|
4
|
+
AppBskyNotificationDefsPreferences: string;
|
|
5
|
+
};
|
|
6
|
+
export type Namespace = (typeof Namespaces)[keyof typeof Namespaces];
|
|
3
7
|
export declare const createStashClient: (bsyncClient: BsyncClient) => StashClient;
|
|
4
8
|
export declare class StashClient {
|
|
5
9
|
private readonly bsyncClient;
|
|
@@ -12,14 +16,14 @@ export declare class StashClient {
|
|
|
12
16
|
}
|
|
13
17
|
type CreateInput = {
|
|
14
18
|
actorDid: string;
|
|
15
|
-
namespace:
|
|
19
|
+
namespace: Namespace;
|
|
16
20
|
key: string;
|
|
17
21
|
payload: LexValue;
|
|
18
22
|
};
|
|
19
23
|
type UpdateInput = CreateInput;
|
|
20
24
|
type DeleteInput = {
|
|
21
25
|
actorDid: string;
|
|
22
|
-
namespace:
|
|
26
|
+
namespace: Namespace;
|
|
23
27
|
key: string;
|
|
24
28
|
};
|
|
25
29
|
export {};
|
package/dist/stash.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stash.d.ts","sourceRoot":"","sources":["../src/stash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAgB,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"stash.d.ts","sourceRoot":"","sources":["../src/stash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAgB,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAOrC,eAAO,MAAM,UAAU;;CAGtB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAA;AAEpE,eAAO,MAAM,iBAAiB,GAAI,aAAa,WAAW,KAAG,WAE5D,CAAA;AAID,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAErD,MAAM,CAAC,KAAK,EAAE,WAAW;IAKzB,MAAM,CAAC,KAAK,EAAE,WAAW;IAKzB,MAAM,CAAC,KAAK,EAAE,WAAW;IAIzB,OAAO,CAAC,eAAe;YAOT,YAAY;CAiB3B;AASD,KAAK,WAAW,GAAG;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,QAAQ,CAAA;CAClB,CAAA;AAED,KAAK,WAAW,GAAG,WAAW,CAAA;AAE9B,KAAK,WAAW,GAAG;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA"}
|
package/dist/stash.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StashClient = exports.createStashClient = void 0;
|
|
3
|
+
exports.StashClient = exports.createStashClient = exports.Namespaces = void 0;
|
|
4
4
|
const lexicon_1 = require("@atproto/lexicon");
|
|
5
5
|
const lexicons_1 = require("./lexicon/lexicons");
|
|
6
6
|
const bsync_pb_1 = require("./proto/bsync_pb");
|
|
7
|
+
exports.Namespaces = {
|
|
8
|
+
AppBskyNotificationDefsPreferences: 'app.bsky.notification.defs#preferences',
|
|
9
|
+
};
|
|
7
10
|
const createStashClient = (bsyncClient) => {
|
|
8
11
|
return new StashClient(bsyncClient);
|
|
9
12
|
};
|
package/dist/stash.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stash.js","sourceRoot":"","sources":["../src/stash.ts"],"names":[],"mappings":";;;AAAA,8CAAyD;AAEzD,iDAA6C;
|
|
1
|
+
{"version":3,"file":"stash.js","sourceRoot":"","sources":["../src/stash.ts"],"names":[],"mappings":";;;AAAA,8CAAyD;AAEzD,iDAA6C;AAE7C,+CAAyC;AAI5B,QAAA,UAAU,GAAG;IACxB,kCAAkC,EAChC,wCAAwE;CAC3E,CAAA;AAIM,MAAM,iBAAiB,GAAG,CAAC,WAAwB,EAAe,EAAE;IACzE,OAAO,IAAI,WAAW,CAAC,WAAW,CAAC,CAAA;AACrC,CAAC,CAAA;AAFY,QAAA,iBAAiB,qBAE7B;AAED,8EAA8E;AAC9E,2FAA2F;AAC3F,MAAa,WAAW;IACtB,YAA6B,WAAwB;QAAzC;;;;mBAAiB,WAAW;WAAa;IAAG,CAAC;IAEzD,MAAM,CAAC,KAAkB;QACvB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;QACpD,OAAO,IAAI,CAAC,YAAY,CAAC,iBAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,CAAC,KAAkB;QACvB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;QACpD,OAAO,IAAI,CAAC,YAAY,CAAC,iBAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,CAAC,KAAkB;QACvB,OAAO,IAAI,CAAC,YAAY,CAAC,iBAAM,CAAC,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;IAC3E,CAAC;IAEO,eAAe,CAAC,SAAoB,EAAE,OAAiB;QAC7D,MAAM,MAAM,GAAG,mBAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QACpD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,MAAM,CAAC,KAAK,CAAA;QACpB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,KAAwB;QACjE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;QACnD,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;YAClC,QAAQ;YACR,SAAS;YACT,GAAG;YACH,MAAM;YACN,OAAO,EAAE,OAAO;gBACd,CAAC,CAAC,MAAM,CAAC,IAAI,CACT,IAAA,sBAAY,EAAC;oBACX,KAAK,EAAE,SAAS;oBAChB,GAAG,OAAO;iBACX,CAAC,CACH;gBACH,CAAC,CAAC,SAAS;SACd,CAAC,CAAA;IACJ,CAAC;CACF;AAzCD,kCAyCC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atproto/bsky",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.166",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Reference implementation of app.bsky App View (Bluesky API)",
|
|
6
6
|
"keywords": [
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"undici": "^6.19.8",
|
|
50
50
|
"@atproto-labs/fetch-node": "0.1.9",
|
|
51
51
|
"@atproto-labs/xrpc-utils": "0.0.16",
|
|
52
|
-
"@atproto/api": "^0.15.
|
|
52
|
+
"@atproto/api": "^0.15.20",
|
|
53
53
|
"@atproto/common": "^0.4.11",
|
|
54
54
|
"@atproto/crypto": "^0.4.4",
|
|
55
55
|
"@atproto/did": "^0.1.5",
|
|
@@ -73,9 +73,9 @@
|
|
|
73
73
|
"jest": "^28.1.2",
|
|
74
74
|
"ts-node": "^10.8.2",
|
|
75
75
|
"typescript": "^5.6.3",
|
|
76
|
-
"@atproto/api": "^0.15.
|
|
76
|
+
"@atproto/api": "^0.15.20",
|
|
77
77
|
"@atproto/lex-cli": "^0.8.3",
|
|
78
|
-
"@atproto/pds": "^0.4.
|
|
78
|
+
"@atproto/pds": "^0.4.155",
|
|
79
79
|
"@atproto/xrpc": "^0.7.0"
|
|
80
80
|
},
|
|
81
81
|
"scripts": {
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
MuteOperation_Type,
|
|
14
14
|
PutOperationRequest,
|
|
15
15
|
} from '../../proto/bsync_pb'
|
|
16
|
+
import { Namespaces } from '../../stash'
|
|
16
17
|
import { Database } from '../server/db'
|
|
17
18
|
|
|
18
19
|
export class MockBsync {
|
|
@@ -154,7 +155,7 @@ const createRoutes = (db: Database) => (router: ConnectRouter) =>
|
|
|
154
155
|
}
|
|
155
156
|
|
|
156
157
|
const now = new Date().toISOString()
|
|
157
|
-
if (namespace ===
|
|
158
|
+
if (namespace === Namespaces.AppBskyNotificationDefsPreferences) {
|
|
158
159
|
await handleNotificationPreferencesOperation(db, req, now)
|
|
159
160
|
} else {
|
|
160
161
|
await handleGenericOperation(db, req, now)
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
NotificationPreference,
|
|
16
16
|
NotificationPreferences,
|
|
17
17
|
} from '../../../proto/bsky_pb'
|
|
18
|
+
import { Namespaces } from '../../../stash'
|
|
18
19
|
import { Database } from '../db'
|
|
19
20
|
|
|
20
21
|
export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
|
|
@@ -24,7 +25,7 @@ export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
|
|
|
24
25
|
.selectFrom('private_data')
|
|
25
26
|
.selectAll()
|
|
26
27
|
.where('actorDid', 'in', dids)
|
|
27
|
-
.where('namespace', '=',
|
|
28
|
+
.where('namespace', '=', Namespaces.AppBskyNotificationDefsPreferences)
|
|
28
29
|
.where('key', '=', 'self')
|
|
29
30
|
.execute()
|
|
30
31
|
|
package/src/lexicon/lexicons.ts
CHANGED
|
@@ -10129,6 +10129,7 @@ export const schemaDict = {
|
|
|
10129
10129
|
'unverified',
|
|
10130
10130
|
'like-via-repost',
|
|
10131
10131
|
'repost-via-repost',
|
|
10132
|
+
'subscribed-post',
|
|
10132
10133
|
],
|
|
10133
10134
|
},
|
|
10134
10135
|
reasonSubject: {
|
package/src/stash.ts
CHANGED
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
import { LexValue, stringifyLex } from '@atproto/lexicon'
|
|
2
2
|
import { BsyncClient } from './bsync'
|
|
3
3
|
import { lexicons } from './lexicon/lexicons'
|
|
4
|
+
import { Preferences } from './lexicon/types/app/bsky/notification/defs'
|
|
4
5
|
import { Method } from './proto/bsync_pb'
|
|
5
6
|
|
|
7
|
+
type PickNSID<T extends { $type?: string }> = Exclude<T['$type'], undefined>
|
|
8
|
+
|
|
9
|
+
export const Namespaces = {
|
|
10
|
+
AppBskyNotificationDefsPreferences:
|
|
11
|
+
'app.bsky.notification.defs#preferences' satisfies PickNSID<Preferences>,
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export type Namespace = (typeof Namespaces)[keyof typeof Namespaces]
|
|
15
|
+
|
|
6
16
|
export const createStashClient = (bsyncClient: BsyncClient): StashClient => {
|
|
7
17
|
return new StashClient(bsyncClient)
|
|
8
18
|
}
|
|
@@ -26,7 +36,7 @@ export class StashClient {
|
|
|
26
36
|
return this.putOperation(Method.DELETE, { ...input, payload: undefined })
|
|
27
37
|
}
|
|
28
38
|
|
|
29
|
-
private validateLexicon(namespace:
|
|
39
|
+
private validateLexicon(namespace: Namespace, payload: LexValue) {
|
|
30
40
|
const result = lexicons.validate(namespace, payload)
|
|
31
41
|
if (!result.success) {
|
|
32
42
|
throw result.error
|
|
@@ -54,14 +64,14 @@ export class StashClient {
|
|
|
54
64
|
|
|
55
65
|
type PutOperationInput = {
|
|
56
66
|
actorDid: string
|
|
57
|
-
namespace:
|
|
67
|
+
namespace: Namespace
|
|
58
68
|
key: string
|
|
59
69
|
payload: LexValue | undefined
|
|
60
70
|
}
|
|
61
71
|
|
|
62
72
|
type CreateInput = {
|
|
63
73
|
actorDid: string
|
|
64
|
-
namespace:
|
|
74
|
+
namespace: Namespace
|
|
65
75
|
key: string
|
|
66
76
|
payload: LexValue
|
|
67
77
|
}
|
|
@@ -70,6 +80,6 @@ type UpdateInput = CreateInput
|
|
|
70
80
|
|
|
71
81
|
type DeleteInput = {
|
|
72
82
|
actorDid: string
|
|
73
|
-
namespace:
|
|
83
|
+
namespace: Namespace
|
|
74
84
|
key: string
|
|
75
85
|
}
|
package/tests/stash.test.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { TestNetwork } from '@atproto/dev-env'
|
|
2
2
|
import { ProfileAssociatedChat } from '../dist/lexicon/types/app/bsky/actor/defs'
|
|
3
3
|
import { StashClient } from '../dist/stash'
|
|
4
|
+
import { Namespace } from '../src/stash'
|
|
4
5
|
|
|
5
6
|
type Database = TestNetwork['bsky']['db']
|
|
6
7
|
|
|
@@ -11,7 +12,7 @@ describe('private data', () => {
|
|
|
11
12
|
|
|
12
13
|
const actorDid = 'did:plc:example'
|
|
13
14
|
// This lexicon has nothing special other than being simple, convenient to use in a test.
|
|
14
|
-
const namespace = 'app.bsky.actor.defs#profileAssociatedChat'
|
|
15
|
+
const namespace = 'app.bsky.actor.defs#profileAssociatedChat' as Namespace
|
|
15
16
|
const key = 'self'
|
|
16
17
|
|
|
17
18
|
const validPayload0: ProfileAssociatedChat = { allowIncoming: 'all' }
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AtpAgent } from '@atproto/api'
|
|
2
2
|
import { SeedClient, TestNetwork, basicSeed } from '@atproto/dev-env'
|
|
3
|
+
import { Namespaces } from '../../dist/stash'
|
|
3
4
|
import { delayCursor } from '../../src/api/app/bsky/notification/listNotifications'
|
|
4
5
|
import { ids } from '../../src/lexicon/lexicons'
|
|
5
6
|
import {
|
|
@@ -960,7 +961,11 @@ describe('notification views', () => {
|
|
|
960
961
|
.selectFrom('private_data')
|
|
961
962
|
.selectAll()
|
|
962
963
|
.where('actorDid', '=', actorDid)
|
|
963
|
-
.where(
|
|
964
|
+
.where(
|
|
965
|
+
'namespace',
|
|
966
|
+
'=',
|
|
967
|
+
Namespaces.AppBskyNotificationDefsPreferences,
|
|
968
|
+
)
|
|
964
969
|
.where('key', '=', 'self')
|
|
965
970
|
.executeTakeFirst()
|
|
966
971
|
if (dbResult === undefined) {
|
|
@@ -968,14 +973,14 @@ describe('notification views', () => {
|
|
|
968
973
|
} else {
|
|
969
974
|
expect(dbResult).toStrictEqual({
|
|
970
975
|
actorDid: actorDid,
|
|
971
|
-
namespace:
|
|
976
|
+
namespace: Namespaces.AppBskyNotificationDefsPreferences,
|
|
972
977
|
key: 'self',
|
|
973
978
|
indexedAt: expect.any(String),
|
|
974
979
|
payload: expect.anything(), // Better to compare payload parsed.
|
|
975
980
|
updatedAt: expect.any(String),
|
|
976
981
|
})
|
|
977
982
|
expect(JSON.parse(dbResult.payload)).toStrictEqual({
|
|
978
|
-
$type:
|
|
983
|
+
$type: Namespaces.AppBskyNotificationDefsPreferences,
|
|
979
984
|
...expectedDb,
|
|
980
985
|
})
|
|
981
986
|
}
|
|
@@ -1056,19 +1061,23 @@ describe('notification views', () => {
|
|
|
1056
1061
|
.selectFrom('private_data')
|
|
1057
1062
|
.selectAll()
|
|
1058
1063
|
.where('actorDid', '=', actorDid)
|
|
1059
|
-
.where(
|
|
1064
|
+
.where(
|
|
1065
|
+
'namespace',
|
|
1066
|
+
'=',
|
|
1067
|
+
Namespaces.AppBskyNotificationDefsPreferences,
|
|
1068
|
+
)
|
|
1060
1069
|
.where('key', '=', 'self')
|
|
1061
1070
|
.executeTakeFirstOrThrow()
|
|
1062
1071
|
expect(dbResult).toStrictEqual({
|
|
1063
1072
|
actorDid: actorDid,
|
|
1064
|
-
namespace:
|
|
1073
|
+
namespace: Namespaces.AppBskyNotificationDefsPreferences,
|
|
1065
1074
|
key: 'self',
|
|
1066
1075
|
indexedAt: expect.any(String),
|
|
1067
1076
|
payload: expect.anything(), // Better to compare payload parsed.
|
|
1068
1077
|
updatedAt: expect.any(String),
|
|
1069
1078
|
})
|
|
1070
1079
|
expect(JSON.parse(dbResult.payload)).toStrictEqual({
|
|
1071
|
-
$type:
|
|
1080
|
+
$type: Namespaces.AppBskyNotificationDefsPreferences,
|
|
1072
1081
|
...expected,
|
|
1073
1082
|
})
|
|
1074
1083
|
}
|