@atproto/api 0.17.5 → 0.17.7
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 +12 -0
- package/dist/agent.d.ts +4 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +2 -1
- package/dist/agent.js.map +1 -1
- package/dist/client/lexicons.d.ts +40 -0
- package/dist/client/lexicons.d.ts.map +1 -1
- package/dist/client/lexicons.js +20 -0
- package/dist/client/lexicons.js.map +1 -1
- package/dist/client/types/app/bsky/actor/defs.d.ts +12 -0
- package/dist/client/types/app/bsky/actor/defs.d.ts.map +1 -1
- package/dist/client/types/app/bsky/actor/defs.js.map +1 -1
- package/dist/client/types/app/bsky/feed/defs.d.ts +4 -0
- package/dist/client/types/app/bsky/feed/defs.d.ts.map +1 -1
- package/dist/client/types/app/bsky/feed/defs.js.map +1 -1
- package/dist/client/types/app/bsky/graph/follow.d.ts +2 -0
- package/dist/client/types/app/bsky/graph/follow.d.ts.map +1 -1
- package/dist/client/types/app/bsky/graph/follow.js.map +1 -1
- package/package.json +1 -1
- package/src/agent.ts +2 -1
- package/src/client/lexicons.ts +20 -0
- package/src/client/types/app/bsky/actor/defs.ts +6 -0
- package/src/client/types/app/bsky/feed/defs.ts +2 -0
- package/src/client/types/app/bsky/graph/follow.ts +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @atproto/api
|
|
2
2
|
|
|
3
|
+
## 0.17.7
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#4317](https://github.com/bluesky-social/atproto/pull/4317) [`15fe80c39`](https://github.com/bluesky-social/atproto/commit/15fe80c39ff428652dfaa6b30c0bdb59a145aac6) Thanks [@estrattonbailey](https://github.com/estrattonbailey)! - Add `via` to `follow` record to mirror `like` records and provide a way to reference the starter pack that the follow originated from.
|
|
8
|
+
|
|
9
|
+
## 0.17.6
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#4314](https://github.com/bluesky-social/atproto/pull/4314) [`7c1429fe3`](https://github.com/bluesky-social/atproto/commit/7c1429fe36226d0d57e57c037ba4221d2fbd57ee) Thanks [@estrattonbailey](https://github.com/estrattonbailey)! - Add debug field to `PostView` and `ProfileView*` (see cdb6b27fc6be1e858476d8c55fd0c37561b972b4)
|
|
14
|
+
|
|
3
15
|
## 0.17.5
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/dist/agent.d.ts
CHANGED
|
@@ -122,7 +122,10 @@ export declare class Agent extends XrpcClient {
|
|
|
122
122
|
cid: string;
|
|
123
123
|
}>;
|
|
124
124
|
deleteRepost(repostUri: string): Promise<void>;
|
|
125
|
-
follow(subjectDid: string
|
|
125
|
+
follow(subjectDid: string, via?: {
|
|
126
|
+
uri: string;
|
|
127
|
+
cid: string;
|
|
128
|
+
}): Promise<{
|
|
126
129
|
uri: string;
|
|
127
130
|
cid: string;
|
|
128
131
|
}>;
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/agent.js
CHANGED
|
@@ -461,10 +461,11 @@ class Agent extends xrpc_1.XrpcClient {
|
|
|
461
461
|
rkey: repostUrip.rkey,
|
|
462
462
|
});
|
|
463
463
|
}
|
|
464
|
-
async follow(subjectDid) {
|
|
464
|
+
async follow(subjectDid, via) {
|
|
465
465
|
return this.app.bsky.graph.follow.create({ repo: this.accountDid }, {
|
|
466
466
|
subject: subjectDid,
|
|
467
467
|
createdAt: new Date().toISOString(),
|
|
468
|
+
via,
|
|
468
469
|
});
|
|
469
470
|
}
|
|
470
471
|
async deleteFollow(followUri) {
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAAkC;AAClC,oDAAgD;AAChD,4CAAuD;AACvD,wCAKsB;AACtB,0CAUuB;AACvB,gDAA2C;AAG3C,mCAA0C;AAC1C,6CAA6D;AAC7D,sDAAkE;AAMlE,uDAAwC;AAExC,mCAWgB;AAChB,iCAMe;AAEf,MAAM,uBAAuB,GAAG;IAC9B,WAAW,EAAE,KAAK;IAClB,uBAAuB,EAAE,IAAI;IAC7B,sBAAsB,EAAE,CAAC;IACzB,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,KAAK;CACtB,CAAA;AAED,MAAM,yBAAyB,GAAG;IAChC,IAAI,EAAE,SAAS;IACf,uBAAuB,EAAE,IAAI;CAC9B,CAAA;AAID;;;;;;;;GAQG;AACH,MAAa,KAAM,SAAQ,iBAAU;IAQnC;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,IAAwB;QACvC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAK,CAAC,CAAA,CAAC,kBAAkB;QACnE,CAAC;IACH,CAAC;IASD,qCAAqC;IACrC,IAAI,IAAI;QACN,OAAO,IAAI,CAAA;IACb,CAAC;IAID,YAAY,OAA4D;QACtE,MAAM,cAAc,GAClB,OAAO,OAAO,KAAK,QAAQ,IAAI,cAAc,IAAI,OAAO;YACtD,CAAC,CAAC,OAAO;YACT,CAAC,CAAC;gBACE,GAAG,EAAE,SAAS;gBACd,YAAY,EAAE,IAAA,wBAAiB,EAAC,OAAO,CAAC;aACzC,CAAA;QAEP,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAClB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YAE1C,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;YAC1C,CAAC;YAED,sEAAsE;YACtE,qBAAqB;YACrB,OAAO,CAAC,GAAG,CACT,yBAAyB,EACzB;gBACE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;gBAC7C,GAAG,IAAI,CAAC,QAAQ;gBAChB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE;aAC/C;iBACE,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC,CACd,CAAA;YAED,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QACpE,CAAC,EAAE,kBAAO,CAAC,CAAA;QA5Cb,YAAY;QAEZ;;;;mBAAM,IAAI,aAAK,CAAC,IAAI,CAAC;WAAA;QACrB;;;;mBAAM,IAAI,aAAK,CAAC,IAAI,CAAC;WAAA;QACrB;;;;mBAAO,IAAI,cAAM,CAAC,IAAI,CAAC;WAAA;QACvB;;;;mBAAQ,IAAI,eAAO,CAAC,IAAI,CAAC;WAAA;QAOhB;;;;;WAA8B;QAoEvC;;;;mBAA8B,EAAE;WAAA;QAYhC,YAAY;QAEZ,+CAA+C;QAE/C;;;;;WAAoB;QAmDpB,kDAAkD;QAElD;;WAEG;QACH;;;;mBAAsD,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CACnE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;WAAA;QAE9C;;WAEG;QACH;;;;mBAAgE,CAC9D,MAAM,EACN,IAAI,EACJ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAE1D;;WAEG;QACH;;;;mBAA8D,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAC3E,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;WAAA;QAEpD;;WAEG;QACH;;;;mBAA0E,CACxE,IAAI,EACJ,IAAI,EACJ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;WAAA;QAEzD,YAAY;QAEZ,+CAA+C;QAE/C;;;;mBAAqD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACpE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAE9C;;;;mBAAyD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAEhD;;;;mBAAyD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAEhD;;;;mBAAyD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAEhD;;;;mBAA8C,CAAC,MAAM,EAAE,EAAE,CACvD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;WAAA;QAErC;;;;mBAA+C,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAC9D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAE3C;;;;mBAA+C,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAC9D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAE3C;;;;mBAAyD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAEhD;;;;mBAAoD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACnE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAE9C;;;;mBAAwD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACvE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAEhD;;;;mBAAoD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACnE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAE9C;;;;mBAAsD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACrE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAE/C;;;;mBAA4D,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAC3E,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAElD;;;;mBAAwD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACvE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAEhD;;;;mBAA0E,CACxE,MAAM,EACN,IAAI,EACJ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAE5D;;;;mBAAyE,CACvE,MAAM,EACN,IAAI,EACJ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAE/D;;;;mBAA6E,CAC3E,MAAM,EACN,IAAI,EACJ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAE5D;;;;mBAAwD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACvE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAugCjD,mBAAmB;QAEnB,2BAAa,IAAI,oBAAS,EAAE;QAE5B;;;;;;;WAOG;UATyB;QA1sC1B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;IACtC,CAAC;IAED,2BAA2B;IAE3B,KAAK;QACH,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;IACtD,CAAC;IAED,QAAQ,CAAkB,IAAO;QAC/B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACrC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAA;QACvC,IAAI,CAAC,YAAY,EAAE,CAAA;QACnB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACnE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,SAAS,CAAC,WAA+B,EAAE,GAAW;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;QACzB,IAAI,CAAC,cAAc,CAAC,GAAG,IAAA,aAAK,EAAC,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC,CAAA;QACnD,OAAO,IAAiC,CAAA;IAC1C,CAAC;IAED,YAAY;IAEZ,kDAAkD;IAElD;;OAEG;IACH,IAAI,WAAW;QACb,OAAQ,IAAI,CAAC,WAA4B,CAAC,WAAW,CAAA;IACvD,CAAC;IAID,iBAAiB,CAAC,WAA8B;QAC9C,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,aAAK,CAAC,CAAA,CAAC,kBAAkB;IAC3D,CAAC;IAED,wDAAwD;IACxD,uBAAuB,CAAC,WAA8B;QACpD,uDAAuD;QACvD,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,aAAK,CAAC,CAAC,CAAA;IACnD,CAAC;IAQD,cAAc,CAAC,KAA0B;QACvC,IAAI,KAAK,KAAK,IAAI;YAAE,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;;YACrC,IAAI,CAAC,KAAK,GAAG,IAAA,sBAAc,EAAC,KAAK,CAAC,CAAA;IACzC,CAAC;IAED,qDAAqD;IACrD,oBAAoB,CAAC,WAA+B,EAAE,GAAW;QAC/D,sDAAsD;QACtD,IAAI,IAAA,aAAK,EAAC,GAAG,CAAC;YAAE,IAAI,CAAC,cAAc,CAAC,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,CAAA;IAC9D,CAAC;IAED,YAAY;IAEZ,4BAA4B;IAE5B;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAA;IAChC,CAAC;IAED,sDAAsD;IACtD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAED;;OAEG;IACI,mBAAmB;QACxB,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;IACjD,CAAC;IAED,YAAY;IAEZ,qCAAqC;IACrC,IAAI,GAAG;QACL,OAAO,IAAI,CAAA;IACb,CAAC;IAgGD,KAAK,CAAC,mBAAmB,CACvB,KAAmD;QAEnD,2BAA2B;QAC3B,MAAM,IAAI,GAAa,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA;QAC5C,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAChE,CAAC;aAAM,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAChD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAA;QACrB,CAAC;QAED,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC;YACtC,IAAI;YACJ,QAAQ,EAAE,IAAI;SACf,CAAC,CAAA;QAEF,4EAA4E;QAC5E,MAAM,SAAS,GAAG,EAAE,CAAA;QACpB,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,IAAI;iBAChC,KAAiD,EAAE,CAAC;gBACrD,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAA,2CAA8B,EAAC,OAAO,CAAC,CAAA;YAC1E,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,IAAI,CACR,MAC2C;QAE3C,MAAM,CAAC,SAAS,KAAhB,MAAM,CAAC,SAAS,GAAK,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAA;QAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CACnC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EACzB,MAAgC,CACjC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe;QAC9B,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAE1B,MAAM,QAAQ,GAAG,IAAI,cAAK,CAAC,OAAO,CAAC,CAAA;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YACpC,IAAI,EAAE,QAAQ,CAAC,QAAQ;YACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;SACpB,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,GAAW,EAAE,GAAkC;QACrE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CACnC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EACzB;YACE,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,GAAG;SACJ,CACF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe;QAC9B,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAE1B,MAAM,QAAQ,GAAG,IAAI,cAAK,CAAC,OAAO,CAAC,CAAA;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YACpC,IAAI,EAAE,QAAQ,CAAC,QAAQ;YACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;SACpB,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,GAAW,EAAE,GAAkC;QACvE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CACrC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EACzB;YACE,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,GAAG;SACJ,CACF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAiB;QAClC,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAE1B,MAAM,UAAU,GAAG,IAAI,cAAK,CAAC,SAAS,CAAC,CAAA;QACvC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACtC,IAAI,EAAE,UAAU,CAAC,QAAQ;YACzB,IAAI,EAAE,UAAU,CAAC,IAAI;SACtB,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,UAAkB;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CACtC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EACzB;YACE,OAAO,EAAE,UAAU;YACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CACF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAiB;QAClC,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAE1B,MAAM,UAAU,GAAG,IAAI,cAAK,CAAC,SAAS,CAAC,CAAA;QACvC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YACvC,IAAI,EAAE,UAAU,CAAC,QAAQ;YACzB,IAAI,EAAE,UAAU,CAAC,IAAI;SACtB,CAAC,CAAA;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CACjB,QAIiD;QAEjD,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAA;YAC3B,MAAM,UAAU,GAAG,wBAAwB,CAAA;YAE3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;iBACzC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iBAC7C,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAA;YAE1B,MAAM,cAAc,GAClB,QAAQ,IAAI,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;gBACvD,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK;gBACrB,CAAC,CAAC,SAAS,CAAA;YAEf,iBAAiB;YACjB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,CAAA;YAE9C,qDAAqD;YACrD,MAAM,UAAU,GAAG,2BAAmB,CAAC,cAAc,CAAC;gBACpD,KAAK,EAAE,UAAU;gBACjB,GAAG,OAAO;aACX,CAAC,CAAA;YAEF,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxB,MAAM,UAAU,CAAC,KAAK,CAAA;YACxB,CAAC;YAED,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;gBACpC,IAAI;gBACJ,UAAU;gBACV,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,UAAU,CAAC,KAAK;gBACxB,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI;aACvC,CAAC,CAAA;QACJ,CAAC,CAAA;QAED,OAAO,IAAA,kBAAK,EAAC,MAAM,EAAE;YACnB,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,+BAAuB,CAAC,gBAAgB;SACxE,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAa;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IACjD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAW;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;IACzD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAW;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;IAC3D,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CACzC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EACzB;YACE,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CACF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAW;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAA;QAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YACjD,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,CAAC;SACT,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAA;QAClD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,cAAK,CAAC,OAAO,CAAC,CAAA;YACnC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC1C,IAAI;gBACJ,IAAI;aACL,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,KAAK,GAAoB;YAC7B,KAAK,EAAE;gBACL,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,SAAS;aAClB;YACD,8BAA8B;YAC9B,UAAU,EAAE,SAAS;YACrB,aAAa,EAAE;gBACb,IAAI,EAAE;oBACJ,GAAG,uBAAuB;iBAC3B;aACF;YACD,eAAe,EAAE,EAAE,GAAG,yBAAyB,EAAE;YACjD,eAAe,EAAE;gBACf,mBAAmB,EAAE,KAAK;gBAC1B,MAAM,EAAE,EAAE,GAAG,+BAAsB,EAAE;gBACrC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACvC,GAAG;oBACH,MAAM,EAAE,EAAE;iBACX,CAAC,CAAC;gBACH,UAAU,EAAE,EAAE;gBACd,WAAW,EAAE,EAAE;aAChB;YACD,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE;gBACT,IAAI,EAAE,EAAE;aACT;YACD,YAAY,EAAE;gBACZ,YAAY,EAAE,EAAE;gBAChB,mBAAmB,EAAE,SAAS;gBAC9B,IAAI,EAAE,EAAE;aACT;YACD,uBAAuB,EAAE;gBACvB,oBAAoB,EAAE,SAAS;gBAC/B,sBAAsB,EAAE,SAAS;aAClC;YACD,iBAAiB,EAAE;gBACjB,UAAU,EAAE,KAAK;aAClB;SACF,CAAA;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;QACxD,MAAM,UAAU,GAAwC,EAAE,CAAA;QAC1D,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,IAAI,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5C,4BAA4B;gBAC5B,KAAK,CAAC,eAAe,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAA;YAC1D,CAAC;iBAAM,IAAI,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,2BAA2B;gBAC3B,MAAM,YAAY,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAA;gBACvD,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YAC/B,CAAC;iBAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,uBAAuB;gBACvB,KAAK,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW;qBAC9C,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;qBAC3C,MAAM,CACL,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBAC9B,GAAG,OAAO;oBACV,MAAM,EAAE,EAAE;iBACX,CAAC,CAAC,CACJ,CAAA;YACL,CAAC;iBAAM,IAAI,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAA;YAC/B,CAAC;iBAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,yBAAyB;gBACzB,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;gBAC9B,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;YAClC,CAAC;iBAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtD,mBAAmB;gBACnB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAC5C,CAAC;YACH,CAAC;iBAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,wBAAwB;gBACxB,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAA;gBACrC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,uBAAuB,EAAE,GAAG,CAAC,EAAE,CAAA;YAClE,CAAC;iBAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,0BAA0B;gBAC1B,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAA;gBAC/B,KAAK,CAAC,eAAe,GAAG,EAAE,GAAG,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,EAAE,CAAA;YAC5D,CAAC;iBAAM,IAAI,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChD,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAA;gBAC/B,KAAK,CAAC,SAAS,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAA;YAChD,CAAC;iBAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,KAAK,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAA;gBAE7C,IAAI,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;oBAC5C,KAAK,CAAC,eAAe,CAAC,UAAU;wBAC9B,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;4BAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,KAAK,CAAA;4BAC5C,OAAO,IAAI,CAAA;wBACb,CAAC,CAAC,CAAA;gBACN,CAAC;YACH,CAAC;iBAAM,IAAI,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,KAAK,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAA;YAChD,CAAC;iBAAM,IAAI,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,KAAK,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAA;gBACzD,KAAK,CAAC,YAAY,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAA;gBACjE,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAA;YAC3C,CAAC;iBAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9D,KAAK,CAAC,uBAAuB,CAAC,oBAAoB;oBAChD,IAAI,CAAC,oBAAoB,CAAA;gBAC3B,KAAK,CAAC,uBAAuB,CAAC,sBAAsB;oBAClD,IAAI,CAAC,sBAAsB,CAAA;YAC/B,CAAC;iBAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpD,KAAK,CAAC,iBAAiB,GAAG;oBACxB,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC5B,CAAA;YACH,CAAC;QACH,CAAC;QAED;;;;;;;;WAQG;QACH,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAA;YAErC,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;gBACpB,MAAM,wBAAwB,GAG1B,IAAI,GAAG,EAAE,CAAA;gBAEb,8BAA8B;gBAC9B,wBAAwB,CAAC,GAAG,CAAC,UAAU,EAAE;oBACvC,EAAE,EAAE,gBAAG,CAAC,OAAO,EAAE;oBACjB,IAAI,EAAE,UAAU;oBAChB,KAAK,EAAE,WAAW;oBAClB,MAAM,EAAE,IAAI;iBACb,CAAC,CAAA;gBAEF,+CAA+C;gBAC/C,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;oBACzB,MAAM,IAAI,GAAG,IAAA,uBAAgB,EAAC,GAAG,CAAC,CAAA;oBAClC,4BAA4B;oBAC5B,IAAI,IAAI,KAAK,SAAS;wBAAE,SAAQ;oBAChC,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE;wBAChC,EAAE,EAAE,gBAAG,CAAC,OAAO,EAAE;wBACjB,IAAI;wBACJ,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,IAAI;qBACb,CAAC,CAAA;gBACJ,CAAC;gBAED,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;oBACxB,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;wBACvC,MAAM,IAAI,GAAG,IAAA,uBAAgB,EAAC,GAAG,CAAC,CAAA;wBAClC,4BAA4B;wBAC5B,IAAI,IAAI,KAAK,SAAS;4BAAE,SAAQ;wBAChC,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE;4BAChC,EAAE,EAAE,gBAAG,CAAC,OAAO,EAAE;4BACjB,IAAI;4BACJ,KAAK,EAAE,GAAG;4BACV,MAAM,EAAE,KAAK;yBACd,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;gBAED,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAA;YAClE,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,UAAU,GAAG;oBACjB;wBACE,EAAE,EAAE,gBAAG,CAAC,OAAO,EAAE;wBACjB,IAAI,EAAE,UAAU;wBAChB,KAAK,EAAE,WAAW;wBAClB,MAAM,EAAE,IAAI;qBACb;iBACF,CAAA;YACH,CAAC;YAED,8DAA8D;YAC9D,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAClD,CAAC;QAED,wBAAwB;QACxB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CACjD,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAC7C,CAAA;gBACD,IAAI,CAAC,OAAO;oBAAE,SAAQ;gBACtB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAA6B,CAAA;YACjE,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;oBACtC,IAAI,CAAC,UAA6B,CAAA;YACtC,CAAC;QACH,CAAC;QAED,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,iBAAiB,CAC9C,KAAK,CAAC,eAAe,CAAC,MAAM,CAC7B,CAAA;QAED,qCAAqC;QACrC,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;QAErE,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,UAAwC;QAChE,UAAU,CAAC,OAAO,CAAC,wBAAiB,CAAC,CAAA;QACrC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAsC,CAAA;QACtE,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1B,yCAAyC;YACzC,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAClC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAClC,CAAC;YACD,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAC,6BAA6B,CAAC,GAAG,EAAE,CAC7C,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CACtC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,kBAAgD;QACrE,kBAAkB,CAAC,GAAG,CAAC,wBAAiB,CAAC,CAAA;QACzC,OAAO,IAAI,CAAC,6BAA6B,CAAC,CAAC,UAAU,EAAE,EAAE;YACvD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;gBAClC,MAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAC5C,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CACzC,CAAA;gBACD,IAAI,cAAc,EAAE,CAAC;oBACnB,OAAO;wBACL,GAAG,SAAS;wBACZ,qBAAqB;wBACrB,MAAM,EAAE,cAAc,CAAC,MAAM;qBAC9B,CAAA;gBACH,CAAC;gBACD,OAAO,SAAS,CAAA;YAClB,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,UAA2E;QAE3E,MAAM,MAAM,GAAiC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClE,GAAG,CAAC;YACJ,EAAE,EAAE,gBAAG,CAAC,OAAO,EAAE;SAClB,CAAC,CAAC,CAAA;QACH,MAAM,CAAC,OAAO,CAAC,wBAAiB,CAAC,CAAA;QACjC,OAAO,IAAI,CAAC,6BAA6B,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;YACxD,GAAG,UAAU;YACb,GAAG,MAAM;SACV,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAa;QAClC,OAAO,IAAI,CAAC,6BAA6B,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;YACxD,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;SAClE,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,KAAe,EAAE,MAAgB;QACnD,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,CAAC;YACvC,KAAK;YACL,MAAM;SACP,CAAC,CAAC,CAAA;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,CAAS;QAC1B,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,KAAe,EAAE,MAAgB,EAAE,EAAE,CAAC,CAAC;YACxE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/C,MAAM;SACP,CAAC,CAAC,CAAA;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,CAAS;QAC7B,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,KAAe,EAAE,MAAgB,EAAE,EAAE,CAAC,CAAC;YACxE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;YACvC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;SAC1C,CAAC,CAAC,CAAA;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,CAAS;QAC3B,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,KAAe,EAAE,MAAgB,EAAE,EAAE,CAAC,CAAC;YACxE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/C,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SAClD,CAAC,CAAC,CAAA;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,CAAS;QAC9B,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,KAAe,EAAE,MAAgB,EAAE,EAAE,CAAC,CAAC;YACxE,KAAK;YACL,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;SAC1C,CAAC,CAAC,CAAA;IACL,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,CAAU;QACrC,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,gBAAgB,GAAG,KAAK,CAAC,QAAQ,CACrC,SAAS,CAAC,uBAAuB,CAClC,IAAI;gBACH,KAAK,EAAE,sCAAsC;gBAC7C,OAAO,EAAE,CAAC;aACX,CAAA;YAED,gBAAgB,CAAC,OAAO,GAAG,CAAC,CAAA;YAE5B,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;iBAC5D,MAAM,CAAC,gBAAgB,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,GAAW,EACX,KAAsB,EACtB,UAAmB;QAEnB,IAAI,UAAU,EAAE,CAAC;YACf,IAAA,uBAAc,EAAC,UAAU,CAAC,CAAA;QAC5B,CAAC;QACD,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,SAAS,GAAG,KAAK;iBACpB,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC;iBACzC,QAAQ,CACP,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CAC/D,IAAI;gBACL,KAAK,EAAE,sCAAsC;gBAC7C,KAAK,EAAE,GAAG;gBACV,UAAU;gBACV,UAAU,EAAE,KAAK;aAClB,CAAA;YAED,SAAS,CAAC,UAAU,GAAG,KAAK,CAAA;YAE5B,IAAI,eAAsE,CAAA;YAC1E,IAAI,wBAAgB,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnD,YAAY;gBACZ,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;oBAC1B,MAAM,gBAAgB,GAAG;wBACvB,eAAe,EAAE,MAAM;wBACvB,IAAI,EAAE,MAAM;wBACZ,MAAM,EAAE,YAAY;wBACpB,mEAAmE;wBACnE,SAAS,EAAE,IAAI;qBAChB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;oBAElB,wDAAwD;oBACxD,IAAI,gBAAgB,EAAE,CAAC;wBACrB,eAAe,GAAG,KAAK;6BACpB,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC;6BACzC,QAAQ,CACP,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,KAAK,KAAK,gBAAgB;4BAC/B,IAAI,CAAC,UAAU,KAAK,SAAS,CAChC,IAAI;4BACL,KAAK,EAAE,sCAAsC;4BAC7C,KAAK,EAAE,gBAAgB;4BACvB,UAAU,EAAE,SAAS;4BACrB,UAAU,EAAE,KAAK;yBAClB,CAAA;wBAED,eAAgB,CAAC,UAAU,GAAG,KAAK,CAAA;oBACrC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,KAAK;iBACT,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,wBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC;gBAC1C,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,CAC1D;iBACA,MAAM,CAAC,SAAS,CAAC;iBACjB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gBACf,IAAI,CAAC,eAAe;oBAAE,OAAO,IAAI,CAAA;gBACjC,OAAO,CACL,CAAC,wBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC;oBAC1C,CAAC,CACC,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK;wBACpC,IAAI,CAAC,UAAU,KAAK,SAAS,CAC9B,CACF,CAAA;YACH,CAAC,CAAC;iBACD,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACrD,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACnD,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI;gBACpE,KAAK,EAAE,kCAAkC;gBACzC,QAAQ,EAAE,EAAE;aACb,CAAA;YAED,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;gBAClE,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;YACrC,CAAC;YAED,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;iBACxD,MAAM,CAAC,YAAY,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;QACF,qCAAqC;QACrC,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAW;QAC7B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACnD,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI;gBACpE,KAAK,EAAE,kCAAkC;gBACzC,QAAQ,EAAE,EAAE;aACb,CAAA;YAED,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAA;YAE1E,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;iBACxD,MAAM,CAAC,YAAY,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;QACF,qCAAqC;QACrC,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,EACvB,SAAS,GAGV;QACC,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,mBAAmB,GAAG,KAAK,CAAC,QAAQ,CACxC,SAAS,CAAC,0BAA0B,CACrC,IAAI;gBACH,KAAK,EAAE,yCAAyC;aACjD,CAAA;YAED,mBAAmB,CAAC,SAAS;gBAC3B,SAAS,YAAY,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;YAEjE,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;iBAC/D,MAAM,CAAC,mBAAmB,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAY,EAAE,IAAqC;QACxE,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,KAAK;iBACnB,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC;iBACrC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;YAEzC,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;iBACrE,MAAM,CAAC;gBACN,GAAG,QAAQ;gBACX,GAAG,IAAI;gBACP,KAAK,EAAE,kCAAkC;gBACzC,IAAI;aACL,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAuC;QAC9D,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAA;YAEhE,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;iBACpD,MAAM,CAAC;gBACN,GAAG,QAAQ;gBACX,GAAG,IAAI;gBACP,KAAK,EAAE,oCAAoC;aAC5C,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAsC;QAC3D,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAA;YAE/D,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;iBACnD,MAAM,CAAC;gBACN,GAAG,QAAQ;gBACX,GAAG,IAAI;gBACP,KAAK,EAAE,mCAAmC;aAC3C,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,SAGC;QAED,MAAM,cAAc,GAAG,IAAA,6BAAsB,EAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAE9D,IAAI,CAAC,cAAc;YAAE,OAAM;QAE3B,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,IAAI,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAA;YAEpE,MAAM,YAAY,GAA+B;gBAC/C,EAAE,EAAE,gBAAG,CAAC,OAAO,EAAE;gBACjB,KAAK,EAAE,cAAc;gBACrB,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,EAAE;gBAChC,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,KAAK;gBAC3C,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,SAAS;aAC5C,CAAA;YAED,IAAI,cAAc,EAAE,CAAC;gBACnB,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;gBAEvC;;mBAEG;gBACH,cAAc,CAAC,KAAK,GAAG,4BAA4B,CACjD,cAAc,CAAC,KAAK,CACrB,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,uCAAuC;gBACvC,cAAc,GAAG;oBACf,KAAK,EAAE,oCAAoC;oBAC3C,KAAK,EAAE,CAAC,YAAY,CAAC;iBACtB,CAAA;YACH,CAAC;YAED,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;iBACpD,MAAM,CAAC,cAAc,CAAC,CAAA;QAC3B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,aAA2C;QAC7D,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACzE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACpB,UAGG;QAEH,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,SAAqC;QACzD,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAA;YAEtE,IAAI,cAAc,EAAE,CAAC;gBACnB,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;oBAC/D,MAAM,KAAK,GAAG,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;oBAErD,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,OAAO,GAAG;4BACd,GAAG,YAAY;4BACf,GAAG,SAAS;yBACb,CAAA;wBACD,OAAO;4BACL,EAAE,EAAE,YAAY,CAAC,EAAE,IAAI,gBAAG,CAAC,OAAO,EAAE;4BACpC,KAAK,EACH,IAAA,6BAAsB,EAAC,OAAO,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK;4BAC7D,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;4BAC9B,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK;4BACzC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,SAAS;yBAC1C,CAAA;oBACH,CAAC;yBAAM,CAAC;wBACN,OAAO,YAAY,CAAA;oBACrB,CAAC;gBACH,CAAC,CAAC,CAAA;gBAEF;;mBAEG;gBACH,cAAc,CAAC,KAAK,GAAG,4BAA4B,CACjD,cAAc,CAAC,KAAK,CACrB,CAAA;gBAED,OAAO,KAAK;qBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;qBACpD,MAAM,CAAC,cAAc,CAAC,CAAA;YAC3B,CAAC;YAED,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,SAAqC;QACzD,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAA;YAEtE,IAAI,cAAc,EAAE,CAAC;gBACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrD,MAAM,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;oBAEhE,IAAI,KAAK,EAAE,CAAC;wBACV,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;wBACjC,MAAK;oBACP,CAAC;gBACH,CAAC;gBAED;;mBAEG;gBACH,cAAc,CAAC,KAAK,GAAG,4BAA4B,CACjD,cAAc,CAAC,KAAK,CACrB,CAAA;gBAED,OAAO,KAAK;qBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;qBACpD,MAAM,CAAC,cAAc,CAAC,CAAA;YAC3B,CAAC;YAED,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,UAAwC;QAC7D,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACzE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC9C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe;QAC9B,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,MAAyB;QAChD,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI;gBAChE,KAAK,EAAE,sCAAsC;aAC9C,CAAA;YAED,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAE5D,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;iBACtD,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,MAAyB;QAClD,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI;gBAChE,KAAK,EAAE,sCAAsC;aAC9C,CAAA;YAED,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YAClD,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CAClD,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CACnC,CAAA;YAED,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;iBACtD,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,6BAA6B,CACjC,KAAwD;QAExD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,MAAM,GAAG,wBAAgB,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAA;YACnE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,MAAM,MAAM,CAAC,KAAK,CAAA;QACzC,CAAC;QAED,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI;gBAChE,KAAK,EAAE,sCAAsC;aAC9C,CAAA;YAED,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAA;YAEhC,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;iBACtD,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,GAAQ;QAC7B,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAA;QAEhB,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI;gBAChE,KAAK,EAAE,sCAAsC;aAC9C,CAAA;YAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAA;YAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;gBACrC,OAAO,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAA;YACxB,CAAC,CAAC,CAAA;YAEF,IAAI,IAA0B,CAAA;YAE9B,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,GAAG;oBACL,EAAE,EAAE,QAAQ,CAAC,EAAE;oBACf,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,SAAS,EAAE,GAAG,CAAC,SAAS;iBACzB,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,GAAG,CAAA;YACZ,CAAC;YAED,+BAA+B;YAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAEjE,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;iBACtD,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,GAAa;QACnC,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI;gBAChE,KAAK,EAAE,sCAAsC;aAC9C,CAAA;YAED,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;YAEpE,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;iBACtD,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,0BAA0B,CAC9B,QAAsD;QAEtD,MAAM,MAAM,GACV,wBAAgB,CAAC,mCAAmC,CAAC,QAAQ,CAAC,CAAA;QAChE,8DAA8D;QAC9D,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,MAAM,CAAC,KAAK,CAAA;QAEvC,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CACzB,SAAS,CAAC,kCAAkC,CAC7C,IAAI;gBACH,KAAK,EAAE,iDAAiD;aACzD,CAAA;YAED;;eAEG;YACH,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAA;YACzD,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,sBAAsB,CAAA;YAE7D,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC;iBACjE,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,QAA4C;QACrE,MAAM,MAAM,GAAG,wBAAgB,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAA;QACnE,8DAA8D;QAC9D,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,MAAM,CAAC,KAAK,CAAA;QAEvC,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI;gBACjE,KAAK,EAAE,uCAAuC;gBAC9C,UAAU,EAAE,KAAK;aAClB,CAAA;YAED,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAA;YAErC,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;iBACvD,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IAMD;;;;;;;OAOG;IACK,KAAK,CAAC,iBAAiB,CAC7B,EAEyC;QAEzC,IAAI,CAAC;YACH,MAAM,uBAAA,IAAI,wBAAW,CAAC,YAAY,EAAE,CAAA;YACpC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;YACxD,MAAM,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACzC,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;gBACvB,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAA;YAC7B,CAAC;YACD,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;gBACvC,WAAW,EAAE,QAAQ;aACtB,CAAC,CAAA;YACF,OAAO,QAAQ,CAAA;QACjB,CAAC;gBAAS,CAAC;YACT,uBAAA,IAAI,wBAAW,CAAC,OAAO,EAAE,CAAA;QAC3B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,OAAe,EAAE,MAAyB;QACvE,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI;gBAC/D,KAAK,EAAE,qCAAqC;gBAC5C,KAAK,EAAE,EAAE;aACV,CAAA;YAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAEvC,IAAI,MAAM,KAAK,MAAM;gBAAE,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;;gBAC1C,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAEhC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,WAAW,CAAC,CAAA;YAE7B,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;iBACrD,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,qBAAqB,CACjC,EAG0C;QAE1C,IAAI,GAAG,CAAA;QACP,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI;gBACnE,KAAK,EAAE,oCAAoC;gBAC3C,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;aACX,CAAA;YAED,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;YAC3C,SAAS,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAA;YAC3B,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAA;YAE7B,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;iBAC1D,MAAM,CAAC,SAAS,CAAC,CAAA;QACtB,CAAC,CAAC,CAAA;QACF,OAAO,GAAG,CAAA;IACZ,CAAC;IAEO,KAAK,CAAC,6BAA6B,CACzC,EAEiC;QAEjC,IAAI,sBAAsB,GAAiC,EAAE,CAAA;QAE7D,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CACnC,SAAS,CAAC,uBAAuB,CAClC,IAAI;gBACH,KAAK,EAAE,sCAAsC;gBAC7C,KAAK,EAAE,EAAE;aACV,CAAA;YAED,MAAM,aAAa,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;YAE9C,6CAA6C;YAC7C,cAAc,CAAC,KAAK,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACtD,6DAA6D;YAC7D,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9C,CAAA;YAED,yBAAyB;YACzB,sBAAsB,GAAG,aAAa,CAAA;YAEtC,IAAI,YAAY,GAAG,KAAK;iBACrB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;iBAC5D,MAAM,CAAC,cAAc,CAAC,CAAA;YAEzB;;;;eAIG;YACH,IAAI,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAA;YACpE,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,cAAc,CAAA;gBACxC,MAAM,QAAQ,GAAG,IAAA,4BAAqB;gBACpC,mCAAmC;gBACnC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CACtE,CAAA;gBACD,cAAc,GAAG;oBACf,GAAG,cAAc;oBACjB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;oBACzD,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;iBAC7D,CAAA;gBACD,YAAY,GAAG,YAAY;qBACxB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;qBAC1D,MAAM,CAAC,cAAc,CAAC,CAAA;YAC3B,CAAC;YAED,OAAO,YAAY,CAAA;QACrB,CAAC,CAAC,CAAA;QAEF,OAAO,sBAAsB,CAAA;IAC/B,CAAC;;AAh5CH,sBAm5CC;;AAl5CC,8BAA8B;AAE9B;;GAEG;AACI;;;;WAAiC,CAAC,wBAAgB,CAAC;EAAxC,CAAwC;AA+4C5D;;GAEG;AACH,SAAS,4BAA4B,CACnC,IAAuC;IAEvC,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;IAEhC,uBAAuB;IACvB,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,UAAU,GAAG,QAAQ,CAAA;IACvB,CAAC;IAED,OAAO,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,CAAA;AAChC,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CACxB,MAAoD;IAEpD,MAAM,OAAO,GAAG,EAAE,GAAG,MAAM,EAAE,CAAA;IAC7B,MAAM,cAAc,GAAuC;QACzD,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,QAAQ;KACrB,CAAA;IAED,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,cAAc,CAAC,SAAS,CAAE,CAAA;QAC/C,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAC9B,KAAmC;IAEnC,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAA;IAClE,IAAI,IAAI,GAAa,EAAE,CAAA;IACvB,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,GAAI,YAA8C,CAAC,QAAQ,CAAC,GAAG,CACjE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CACzB,CAAA;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,WAAW,CAAC,CAAM;IACzB,OAAO,CACL,CAAC;QACD,OAAO,CAAC,KAAK,QAAQ;QACrB,iBAAiB,IAAI,CAAC;QACtB,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAC9B,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,CAAM;IACxB,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,UAAU,IAAI,CAAC,CAAA;AACtD,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAmC;IACvE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,GAAG,IAAI;QACP,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,gBAAG,CAAC,OAAO,EAAE;KAC7B,CAAC,CAAC,CAAA;AACL,CAAC;AAED,SAAS,cAAc,CACrB,YAAwC,EACxC,OAAmC;IAEnC,2CAA2C;IAC3C,MAAM,UAAU,GAAG,YAAY,CAAC,EAAE,CAAA;IAClC,8BAA8B;IAC9B,MAAM,SAAS,GAAG,UAAU,IAAI,UAAU,KAAK,OAAO,CAAC,EAAE,CAAA;IACzD,yCAAyC;IACzC,MAAM,kBAAkB,GAAG,CAAC,UAAU,IAAI,YAAY,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAA;IAE9E,OAAO,SAAS,IAAI,kBAAkB,CAAA;AACxC,CAAC","sourcesContent":["import AwaitLock from 'await-lock'\nimport { TID, retry } from '@atproto/common-web'\nimport { AtUri, ensureValidDid } from '@atproto/syntax'\nimport {\n FetchHandler,\n FetchHandlerOptions,\n XrpcClient,\n buildFetchHandler,\n} from '@atproto/xrpc'\nimport {\n AppBskyActorDefs,\n AppBskyActorProfile,\n AppBskyFeedPost,\n AppBskyLabelerDefs,\n AppNS,\n ChatNS,\n ComAtprotoRepoPutRecord,\n ComNS,\n ToolsNS,\n} from './client/index'\nimport { schemas } from './client/lexicons'\nimport { MutedWord, Nux } from './client/types/app/bsky/actor/defs'\nimport { $Typed, Un$Typed } from './client/util'\nimport { BSKY_LABELER_DID } from './const'\nimport { interpretLabelValueDefinitions } from './moderation'\nimport { DEFAULT_LABEL_SETTINGS } from './moderation/const/labels'\nimport {\n InterpretedLabelValueDefinition,\n LabelPreference,\n ModerationPrefs,\n} from './moderation/types'\nimport * as predicate from './predicate'\nimport { SessionManager } from './session-manager'\nimport {\n AtpAgentGlobalOpts,\n AtprotoProxy,\n AtprotoServiceType,\n BskyFeedViewPreference,\n BskyInterestsPreference,\n BskyPreferences,\n BskyThreadViewPreference,\n asAtprotoProxy,\n asDid,\n isDid,\n} from './types'\nimport {\n getSavedFeedType,\n sanitizeMutedWordValue,\n savedFeedsToUriArrays,\n validateNux,\n validateSavedFeed,\n} from './util'\n\nconst FEED_VIEW_PREF_DEFAULTS = {\n hideReplies: false,\n hideRepliesByUnfollowed: true,\n hideRepliesByLikeCount: 0,\n hideReposts: false,\n hideQuotePosts: false,\n}\n\nconst THREAD_VIEW_PREF_DEFAULTS = {\n sort: 'hotness',\n prioritizeFollowedUsers: true,\n}\n\nexport type { FetchHandler }\n\n/**\n * An {@link Agent} is an {@link AtpBaseClient} with the following\n * additional features:\n * - AT Protocol labelers configuration utilities\n * - AT Protocol proxy configuration utilities\n * - Cloning utilities\n * - `app.bsky` syntactic sugar\n * - `com.atproto` syntactic sugar\n */\nexport class Agent extends XrpcClient {\n //#region Static configuration\n\n /**\n * The labelers to be used across all requests with the takedown capability\n */\n static appLabelers: readonly string[] = [BSKY_LABELER_DID]\n\n /**\n * Configures the Agent (or its sub classes) globally.\n */\n static configure(opts: AtpAgentGlobalOpts) {\n if (opts.appLabelers) {\n this.appLabelers = opts.appLabelers.map(asDid) // Validate & copy\n }\n }\n\n //#endregion\n\n com = new ComNS(this)\n app = new AppNS(this)\n chat = new ChatNS(this)\n tools = new ToolsNS(this)\n\n /** @deprecated use `this` instead */\n get xrpc(): XrpcClient {\n return this\n }\n\n readonly sessionManager: SessionManager\n\n constructor(options: SessionManager | FetchHandler | FetchHandlerOptions) {\n const sessionManager: SessionManager =\n typeof options === 'object' && 'fetchHandler' in options\n ? options\n : {\n did: undefined,\n fetchHandler: buildFetchHandler(options),\n }\n\n super((url, init) => {\n const headers = new Headers(init?.headers)\n\n if (this.proxy && !headers.has('atproto-proxy')) {\n headers.set('atproto-proxy', this.proxy)\n }\n\n // Merge the labelers header of this particular request with the app &\n // instance labelers.\n headers.set(\n 'atproto-accept-labelers',\n [\n ...this.appLabelers.map((l) => `${l};redact`),\n ...this.labelers,\n headers.get('atproto-accept-labelers')?.trim(),\n ]\n .filter(Boolean)\n .join(', '),\n )\n\n return this.sessionManager.fetchHandler(url, { ...init, headers })\n }, schemas)\n\n this.sessionManager = sessionManager\n }\n\n //#region Cloning utilities\n\n clone(): Agent {\n return this.copyInto(new Agent(this.sessionManager))\n }\n\n copyInto<T extends Agent>(inst: T): T {\n inst.configureLabelers(this.labelers)\n inst.configureProxy(this.proxy ?? null)\n inst.clearHeaders()\n for (const [key, value] of this.headers) inst.setHeader(key, value)\n return inst\n }\n\n withProxy(serviceType: AtprotoServiceType, did: string) {\n const inst = this.clone()\n inst.configureProxy(`${asDid(did)}#${serviceType}`)\n return inst as ReturnType<this['clone']>\n }\n\n //#endregion\n\n //#region ATPROTO labelers configuration utilities\n\n /**\n * The labelers statically configured on the class of the current instance.\n */\n get appLabelers() {\n return (this.constructor as typeof Agent).appLabelers\n }\n\n labelers: readonly string[] = []\n\n configureLabelers(labelerDids: readonly string[]) {\n this.labelers = labelerDids.map(asDid) // Validate & copy\n }\n\n /** @deprecated use {@link configureLabelers} instead */\n configureLabelersHeader(labelerDids: readonly string[]) {\n // Filtering non-did values for backwards compatibility\n this.configureLabelers(labelerDids.filter(isDid))\n }\n\n //#endregion\n\n //#region ATPROTO proxy configuration utilities\n\n proxy?: AtprotoProxy\n\n configureProxy(value: AtprotoProxy | null) {\n if (value === null) this.proxy = undefined\n else this.proxy = asAtprotoProxy(value)\n }\n\n /** @deprecated use {@link configureProxy} instead */\n configureProxyHeader(serviceType: AtprotoServiceType, did: string) {\n // Ignoring non-did values for backwards compatibility\n if (isDid(did)) this.configureProxy(`${did}#${serviceType}`)\n }\n\n //#endregion\n\n //#region Session management\n\n /**\n * Get the authenticated user's DID, if any.\n */\n get did() {\n return this.sessionManager.did\n }\n\n /** @deprecated Use {@link Agent.assertDid} instead */\n get accountDid() {\n return this.assertDid\n }\n\n /**\n * Get the authenticated user's DID, or throw an error if not authenticated.\n */\n get assertDid(): string {\n this.assertAuthenticated()\n return this.did\n }\n\n /**\n * Assert that the user is authenticated.\n */\n public assertAuthenticated(): asserts this is { did: string } {\n if (!this.did) throw new Error('Not logged in')\n }\n\n //#endregion\n\n /** @deprecated use \"this\" instead */\n get api() {\n return this\n }\n\n //#region \"com.atproto\" lexicon short hand methods\n\n /**\n * Upload a binary blob to the server\n */\n uploadBlob: typeof this.com.atproto.repo.uploadBlob = (data, opts) =>\n this.com.atproto.repo.uploadBlob(data, opts)\n\n /**\n * Resolve a handle to a DID\n */\n resolveHandle: typeof this.com.atproto.identity.resolveHandle = (\n params,\n opts,\n ) => this.com.atproto.identity.resolveHandle(params, opts)\n\n /**\n * Change the user's handle\n */\n updateHandle: typeof this.com.atproto.identity.updateHandle = (data, opts) =>\n this.com.atproto.identity.updateHandle(data, opts)\n\n /**\n * Create a moderation report\n */\n createModerationReport: typeof this.com.atproto.moderation.createReport = (\n data,\n opts,\n ) => this.com.atproto.moderation.createReport(data, opts)\n\n //#endregion\n\n //#region \"app.bsky\" lexicon short hand methods\n\n getTimeline: typeof this.app.bsky.feed.getTimeline = (params, opts) =>\n this.app.bsky.feed.getTimeline(params, opts)\n\n getAuthorFeed: typeof this.app.bsky.feed.getAuthorFeed = (params, opts) =>\n this.app.bsky.feed.getAuthorFeed(params, opts)\n\n getActorLikes: typeof this.app.bsky.feed.getActorLikes = (params, opts) =>\n this.app.bsky.feed.getActorLikes(params, opts)\n\n getPostThread: typeof this.app.bsky.feed.getPostThread = (params, opts) =>\n this.app.bsky.feed.getPostThread(params, opts)\n\n getPost: typeof this.app.bsky.feed.post.get = (params) =>\n this.app.bsky.feed.post.get(params)\n\n getPosts: typeof this.app.bsky.feed.getPosts = (params, opts) =>\n this.app.bsky.feed.getPosts(params, opts)\n\n getLikes: typeof this.app.bsky.feed.getLikes = (params, opts) =>\n this.app.bsky.feed.getLikes(params, opts)\n\n getRepostedBy: typeof this.app.bsky.feed.getRepostedBy = (params, opts) =>\n this.app.bsky.feed.getRepostedBy(params, opts)\n\n getFollows: typeof this.app.bsky.graph.getFollows = (params, opts) =>\n this.app.bsky.graph.getFollows(params, opts)\n\n getFollowers: typeof this.app.bsky.graph.getFollowers = (params, opts) =>\n this.app.bsky.graph.getFollowers(params, opts)\n\n getProfile: typeof this.app.bsky.actor.getProfile = (params, opts) =>\n this.app.bsky.actor.getProfile(params, opts)\n\n getProfiles: typeof this.app.bsky.actor.getProfiles = (params, opts) =>\n this.app.bsky.actor.getProfiles(params, opts)\n\n getSuggestions: typeof this.app.bsky.actor.getSuggestions = (params, opts) =>\n this.app.bsky.actor.getSuggestions(params, opts)\n\n searchActors: typeof this.app.bsky.actor.searchActors = (params, opts) =>\n this.app.bsky.actor.searchActors(params, opts)\n\n searchActorsTypeahead: typeof this.app.bsky.actor.searchActorsTypeahead = (\n params,\n opts,\n ) => this.app.bsky.actor.searchActorsTypeahead(params, opts)\n\n listNotifications: typeof this.app.bsky.notification.listNotifications = (\n params,\n opts,\n ) => this.app.bsky.notification.listNotifications(params, opts)\n\n countUnreadNotifications: typeof this.app.bsky.notification.getUnreadCount = (\n params,\n opts,\n ) => this.app.bsky.notification.getUnreadCount(params, opts)\n\n getLabelers: typeof this.app.bsky.labeler.getServices = (params, opts) =>\n this.app.bsky.labeler.getServices(params, opts)\n\n async getLabelDefinitions(\n prefs: BskyPreferences | ModerationPrefs | string[],\n ): Promise<Record<string, InterpretedLabelValueDefinition[]>> {\n // collect the labeler dids\n const dids: string[] = [...this.appLabelers]\n if (isBskyPrefs(prefs)) {\n dids.push(...prefs.moderationPrefs.labelers.map((l) => l.did))\n } else if (isModPrefs(prefs)) {\n dids.push(...prefs.labelers.map((l) => l.did))\n } else {\n dids.push(...prefs)\n }\n\n // fetch their definitions\n const labelers = await this.getLabelers({\n dids,\n detailed: true,\n })\n\n // assemble a map of labeler dids to the interpreted label value definitions\n const labelDefs = {}\n if (labelers.data) {\n for (const labeler of labelers.data\n .views as AppBskyLabelerDefs.LabelerViewDetailed[]) {\n labelDefs[labeler.creator.did] = interpretLabelValueDefinitions(labeler)\n }\n }\n\n return labelDefs\n }\n\n async post(\n record: Partial<AppBskyFeedPost.Record> &\n Omit<AppBskyFeedPost.Record, 'createdAt'>,\n ) {\n record.createdAt ||= new Date().toISOString()\n return this.app.bsky.feed.post.create(\n { repo: this.accountDid },\n record as AppBskyFeedPost.Record,\n )\n }\n\n async deletePost(postUri: string) {\n this.assertAuthenticated()\n\n const postUrip = new AtUri(postUri)\n return this.app.bsky.feed.post.delete({\n repo: postUrip.hostname,\n rkey: postUrip.rkey,\n })\n }\n\n async like(uri: string, cid: string, via?: { uri: string; cid: string }) {\n return this.app.bsky.feed.like.create(\n { repo: this.accountDid },\n {\n subject: { uri, cid },\n createdAt: new Date().toISOString(),\n via,\n },\n )\n }\n\n async deleteLike(likeUri: string) {\n this.assertAuthenticated()\n\n const likeUrip = new AtUri(likeUri)\n return this.app.bsky.feed.like.delete({\n repo: likeUrip.hostname,\n rkey: likeUrip.rkey,\n })\n }\n\n async repost(uri: string, cid: string, via?: { uri: string; cid: string }) {\n return this.app.bsky.feed.repost.create(\n { repo: this.accountDid },\n {\n subject: { uri, cid },\n createdAt: new Date().toISOString(),\n via,\n },\n )\n }\n\n async deleteRepost(repostUri: string) {\n this.assertAuthenticated()\n\n const repostUrip = new AtUri(repostUri)\n return this.app.bsky.feed.repost.delete({\n repo: repostUrip.hostname,\n rkey: repostUrip.rkey,\n })\n }\n\n async follow(subjectDid: string) {\n return this.app.bsky.graph.follow.create(\n { repo: this.accountDid },\n {\n subject: subjectDid,\n createdAt: new Date().toISOString(),\n },\n )\n }\n\n async deleteFollow(followUri: string) {\n this.assertAuthenticated()\n\n const followUrip = new AtUri(followUri)\n return this.app.bsky.graph.follow.delete({\n repo: followUrip.hostname,\n rkey: followUrip.rkey,\n })\n }\n\n /**\n * @note: Using this method will reset the whole profile record if it\n * previously contained invalid values (wrt to the profile lexicon).\n */\n async upsertProfile(\n updateFn: (\n existing: AppBskyActorProfile.Record | undefined,\n ) =>\n | Un$Typed<AppBskyActorProfile.Record>\n | Promise<Un$Typed<AppBskyActorProfile.Record>>,\n ): Promise<void> {\n const upsert = async () => {\n const repo = this.assertDid\n const collection = 'app.bsky.actor.profile'\n\n const existing = await this.com.atproto.repo\n .getRecord({ repo, collection, rkey: 'self' })\n .catch((_) => undefined)\n\n const existingRecord: AppBskyActorProfile.Record | undefined =\n existing && predicate.isValidProfile(existing.data.value)\n ? existing.data.value\n : undefined\n\n // run the update\n const updated = await updateFn(existingRecord)\n\n // validate the value returned by the update function\n const validation = AppBskyActorProfile.validateRecord({\n $type: collection,\n ...updated,\n })\n\n if (!validation.success) {\n throw validation.error\n }\n\n await this.com.atproto.repo.putRecord({\n repo,\n collection,\n rkey: 'self',\n record: validation.value,\n swapRecord: existing?.data.cid || null,\n })\n }\n\n return retry(upsert, {\n maxRetries: 5,\n retryable: (e) => e instanceof ComAtprotoRepoPutRecord.InvalidSwapError,\n })\n }\n\n async mute(actor: string) {\n return this.app.bsky.graph.muteActor({ actor })\n }\n\n async unmute(actor: string) {\n return this.app.bsky.graph.unmuteActor({ actor })\n }\n\n async muteModList(uri: string) {\n return this.app.bsky.graph.muteActorList({ list: uri })\n }\n\n async unmuteModList(uri: string) {\n return this.app.bsky.graph.unmuteActorList({ list: uri })\n }\n\n async blockModList(uri: string) {\n return this.app.bsky.graph.listblock.create(\n { repo: this.accountDid },\n {\n subject: uri,\n createdAt: new Date().toISOString(),\n },\n )\n }\n\n async unblockModList(uri: string) {\n const repo = this.accountDid\n\n const listInfo = await this.app.bsky.graph.getList({\n list: uri,\n limit: 1,\n })\n\n const blocked = listInfo.data.list.viewer?.blocked\n if (blocked) {\n const { rkey } = new AtUri(blocked)\n return this.app.bsky.graph.listblock.delete({\n repo,\n rkey,\n })\n }\n }\n\n async updateSeenNotifications(seenAt = new Date().toISOString()) {\n return this.app.bsky.notification.updateSeen({ seenAt })\n }\n\n async getPreferences(): Promise<BskyPreferences> {\n const prefs: BskyPreferences = {\n feeds: {\n saved: undefined,\n pinned: undefined,\n },\n // @ts-ignore populating below\n savedFeeds: undefined,\n feedViewPrefs: {\n home: {\n ...FEED_VIEW_PREF_DEFAULTS,\n },\n },\n threadViewPrefs: { ...THREAD_VIEW_PREF_DEFAULTS },\n moderationPrefs: {\n adultContentEnabled: false,\n labels: { ...DEFAULT_LABEL_SETTINGS },\n labelers: this.appLabelers.map((did) => ({\n did,\n labels: {},\n })),\n mutedWords: [],\n hiddenPosts: [],\n },\n birthDate: undefined,\n interests: {\n tags: [],\n },\n bskyAppState: {\n queuedNudges: [],\n activeProgressGuide: undefined,\n nuxs: [],\n },\n postInteractionSettings: {\n threadgateAllowRules: undefined,\n postgateEmbeddingRules: undefined,\n },\n verificationPrefs: {\n hideBadges: false,\n },\n }\n const res = await this.app.bsky.actor.getPreferences({})\n const labelPrefs: AppBskyActorDefs.ContentLabelPref[] = []\n for (const pref of res.data.preferences) {\n if (predicate.isValidAdultContentPref(pref)) {\n // adult content preferences\n prefs.moderationPrefs.adultContentEnabled = pref.enabled\n } else if (predicate.isValidContentLabelPref(pref)) {\n // content label preference\n const adjustedPref = adjustLegacyContentLabelPref(pref)\n labelPrefs.push(adjustedPref)\n } else if (predicate.isValidLabelersPref(pref)) {\n // labelers preferences\n prefs.moderationPrefs.labelers = this.appLabelers\n .map((did: string) => ({ did, labels: {} }))\n .concat(\n pref.labelers.map((labeler) => ({\n ...labeler,\n labels: {},\n })),\n )\n } else if (predicate.isValidSavedFeedsPrefV2(pref)) {\n prefs.savedFeeds = pref.items\n } else if (predicate.isValidSavedFeedsPref(pref)) {\n // saved and pinned feeds\n prefs.feeds.saved = pref.saved\n prefs.feeds.pinned = pref.pinned\n } else if (predicate.isValidPersonalDetailsPref(pref)) {\n // birth date (irl)\n if (pref.birthDate) {\n prefs.birthDate = new Date(pref.birthDate)\n }\n } else if (predicate.isValidFeedViewPref(pref)) {\n // feed view preferences\n const { $type: _, feed, ...v } = pref\n prefs.feedViewPrefs[feed] = { ...FEED_VIEW_PREF_DEFAULTS, ...v }\n } else if (predicate.isValidThreadViewPref(pref)) {\n // thread view preferences\n const { $type: _, ...v } = pref\n prefs.threadViewPrefs = { ...prefs.threadViewPrefs, ...v }\n } else if (predicate.isValidInterestsPref(pref)) {\n const { $type: _, ...v } = pref\n prefs.interests = { ...prefs.interests, ...v }\n } else if (predicate.isValidMutedWordsPref(pref)) {\n prefs.moderationPrefs.mutedWords = pref.items\n\n if (prefs.moderationPrefs.mutedWords.length) {\n prefs.moderationPrefs.mutedWords =\n prefs.moderationPrefs.mutedWords.map((word) => {\n word.actorTarget = word.actorTarget || 'all'\n return word\n })\n }\n } else if (predicate.isValidHiddenPostsPref(pref)) {\n prefs.moderationPrefs.hiddenPosts = pref.items\n } else if (predicate.isValidBskyAppStatePref(pref)) {\n prefs.bskyAppState.queuedNudges = pref.queuedNudges || []\n prefs.bskyAppState.activeProgressGuide = pref.activeProgressGuide\n prefs.bskyAppState.nuxs = pref.nuxs || []\n } else if (predicate.isValidPostInteractionSettingsPref(pref)) {\n prefs.postInteractionSettings.threadgateAllowRules =\n pref.threadgateAllowRules\n prefs.postInteractionSettings.postgateEmbeddingRules =\n pref.postgateEmbeddingRules\n } else if (predicate.isValidVerificationPrefs(pref)) {\n prefs.verificationPrefs = {\n hideBadges: pref.hideBadges,\n }\n }\n }\n\n /*\n * If `prefs.savedFeeds` is undefined, no `savedFeedsPrefV2` exists, which\n * means we want to try to migrate if needed.\n *\n * If v1 prefs exist, they will be migrated to v2.\n *\n * If no v1 prefs exist, the user is either new, or could be old and has\n * never edited their feeds.\n */\n if (prefs.savedFeeds == null) {\n const { saved, pinned } = prefs.feeds\n\n if (saved && pinned) {\n const uniqueMigratedSavedFeeds: Map<\n string,\n AppBskyActorDefs.SavedFeed\n > = new Map()\n\n // insert Following feed first\n uniqueMigratedSavedFeeds.set('timeline', {\n id: TID.nextStr(),\n type: 'timeline',\n value: 'following',\n pinned: true,\n })\n\n // use pinned as source of truth for feed order\n for (const uri of pinned) {\n const type = getSavedFeedType(uri)\n // only want supported types\n if (type === 'unknown') continue\n uniqueMigratedSavedFeeds.set(uri, {\n id: TID.nextStr(),\n type,\n value: uri,\n pinned: true,\n })\n }\n\n for (const uri of saved) {\n if (!uniqueMigratedSavedFeeds.has(uri)) {\n const type = getSavedFeedType(uri)\n // only want supported types\n if (type === 'unknown') continue\n uniqueMigratedSavedFeeds.set(uri, {\n id: TID.nextStr(),\n type,\n value: uri,\n pinned: false,\n })\n }\n }\n\n prefs.savedFeeds = Array.from(uniqueMigratedSavedFeeds.values())\n } else {\n prefs.savedFeeds = [\n {\n id: TID.nextStr(),\n type: 'timeline',\n value: 'following',\n pinned: true,\n },\n ]\n }\n\n // save to user preferences so this migration doesn't re-occur\n await this.overwriteSavedFeeds(prefs.savedFeeds)\n }\n\n // apply the label prefs\n for (const pref of labelPrefs) {\n if (pref.labelerDid) {\n const labeler = prefs.moderationPrefs.labelers.find(\n (labeler) => labeler.did === pref.labelerDid,\n )\n if (!labeler) continue\n labeler.labels[pref.label] = pref.visibility as LabelPreference\n } else {\n prefs.moderationPrefs.labels[pref.label] =\n pref.visibility as LabelPreference\n }\n }\n\n prefs.moderationPrefs.labels = remapLegacyLabels(\n prefs.moderationPrefs.labels,\n )\n\n // automatically configure the client\n this.configureLabelers(prefsArrayToLabelerDids(res.data.preferences))\n\n return prefs\n }\n\n async overwriteSavedFeeds(savedFeeds: AppBskyActorDefs.SavedFeed[]) {\n savedFeeds.forEach(validateSavedFeed)\n const uniqueSavedFeeds = new Map<string, AppBskyActorDefs.SavedFeed>()\n savedFeeds.forEach((feed) => {\n // remove and re-insert to preserve order\n if (uniqueSavedFeeds.has(feed.id)) {\n uniqueSavedFeeds.delete(feed.id)\n }\n uniqueSavedFeeds.set(feed.id, feed)\n })\n return this.updateSavedFeedsV2Preferences(() =>\n Array.from(uniqueSavedFeeds.values()),\n )\n }\n\n async updateSavedFeeds(savedFeedsToUpdate: AppBskyActorDefs.SavedFeed[]) {\n savedFeedsToUpdate.map(validateSavedFeed)\n return this.updateSavedFeedsV2Preferences((savedFeeds) => {\n return savedFeeds.map((savedFeed) => {\n const updatedVersion = savedFeedsToUpdate.find(\n (updated) => savedFeed.id === updated.id,\n )\n if (updatedVersion) {\n return {\n ...savedFeed,\n // only update pinned\n pinned: updatedVersion.pinned,\n }\n }\n return savedFeed\n })\n })\n }\n\n async addSavedFeeds(\n savedFeeds: Pick<AppBskyActorDefs.SavedFeed, 'type' | 'value' | 'pinned'>[],\n ) {\n const toSave: AppBskyActorDefs.SavedFeed[] = savedFeeds.map((f) => ({\n ...f,\n id: TID.nextStr(),\n }))\n toSave.forEach(validateSavedFeed)\n return this.updateSavedFeedsV2Preferences((savedFeeds) => [\n ...savedFeeds,\n ...toSave,\n ])\n }\n\n async removeSavedFeeds(ids: string[]) {\n return this.updateSavedFeedsV2Preferences((savedFeeds) => [\n ...savedFeeds.filter((feed) => !ids.find((id) => feed.id === id)),\n ])\n }\n\n /**\n * @deprecated use `overwriteSavedFeeds`\n */\n async setSavedFeeds(saved: string[], pinned: string[]) {\n return this.updateFeedPreferences(() => ({\n saved,\n pinned,\n }))\n }\n\n /**\n * @deprecated use `addSavedFeeds`\n */\n async addSavedFeed(v: string) {\n return this.updateFeedPreferences((saved: string[], pinned: string[]) => ({\n saved: [...saved.filter((uri) => uri !== v), v],\n pinned,\n }))\n }\n\n /**\n * @deprecated use `removeSavedFeeds`\n */\n async removeSavedFeed(v: string) {\n return this.updateFeedPreferences((saved: string[], pinned: string[]) => ({\n saved: saved.filter((uri) => uri !== v),\n pinned: pinned.filter((uri) => uri !== v),\n }))\n }\n\n /**\n * @deprecated use `addSavedFeeds` or `updateSavedFeeds`\n */\n async addPinnedFeed(v: string) {\n return this.updateFeedPreferences((saved: string[], pinned: string[]) => ({\n saved: [...saved.filter((uri) => uri !== v), v],\n pinned: [...pinned.filter((uri) => uri !== v), v],\n }))\n }\n\n /**\n * @deprecated use `updateSavedFeeds` or `removeSavedFeeds`\n */\n async removePinnedFeed(v: string) {\n return this.updateFeedPreferences((saved: string[], pinned: string[]) => ({\n saved,\n pinned: pinned.filter((uri) => uri !== v),\n }))\n }\n\n async setAdultContentEnabled(v: boolean) {\n await this.updatePreferences((prefs) => {\n const adultContentPref = prefs.findLast(\n predicate.isValidAdultContentPref,\n ) || {\n $type: 'app.bsky.actor.defs#adultContentPref',\n enabled: v,\n }\n\n adultContentPref.enabled = v\n\n return prefs\n .filter((pref) => !AppBskyActorDefs.isAdultContentPref(pref))\n .concat(adultContentPref)\n })\n }\n\n async setContentLabelPref(\n key: string,\n value: LabelPreference,\n labelerDid?: string,\n ) {\n if (labelerDid) {\n ensureValidDid(labelerDid)\n }\n await this.updatePreferences((prefs) => {\n const labelPref = prefs\n .filter(predicate.isValidContentLabelPref)\n .findLast(\n (pref) => pref.label === key && pref.labelerDid === labelerDid,\n ) || {\n $type: 'app.bsky.actor.defs#contentLabelPref',\n label: key,\n labelerDid,\n visibility: value,\n }\n\n labelPref.visibility = value\n\n let legacyLabelPref: $Typed<AppBskyActorDefs.ContentLabelPref> | undefined\n if (AppBskyActorDefs.isContentLabelPref(labelPref)) {\n // is global\n if (!labelPref.labelerDid) {\n const legacyLabelValue = {\n 'graphic-media': 'gore',\n porn: 'nsfw',\n sexual: 'suggestive',\n // Protect against using toString, hasOwnProperty, etc. as a label:\n __proto__: null,\n }[labelPref.label]\n\n // if it's a legacy label, double-write the legacy label\n if (legacyLabelValue) {\n legacyLabelPref = prefs\n .filter(predicate.isValidContentLabelPref)\n .findLast(\n (pref) =>\n pref.label === legacyLabelValue &&\n pref.labelerDid === undefined,\n ) || {\n $type: 'app.bsky.actor.defs#contentLabelPref',\n label: legacyLabelValue,\n labelerDid: undefined,\n visibility: value,\n }\n\n legacyLabelPref!.visibility = value\n }\n }\n }\n\n return prefs\n .filter(\n (pref) =>\n !AppBskyActorDefs.isContentLabelPref(pref) ||\n !(pref.label === key && pref.labelerDid === labelerDid),\n )\n .concat(labelPref)\n .filter((pref) => {\n if (!legacyLabelPref) return true\n return (\n !AppBskyActorDefs.isContentLabelPref(pref) ||\n !(\n pref.label === legacyLabelPref.label &&\n pref.labelerDid === undefined\n )\n )\n })\n .concat(legacyLabelPref ? [legacyLabelPref] : [])\n })\n }\n\n async addLabeler(did: string) {\n const prefs = await this.updatePreferences((prefs) => {\n const labelersPref = prefs.findLast(predicate.isValidLabelersPref) || {\n $type: 'app.bsky.actor.defs#labelersPref',\n labelers: [],\n }\n\n if (!labelersPref.labelers.some((labeler) => labeler.did === did)) {\n labelersPref.labelers.push({ did })\n }\n\n return prefs\n .filter((pref) => !AppBskyActorDefs.isLabelersPref(pref))\n .concat(labelersPref)\n })\n // automatically configure the client\n this.configureLabelers(prefsArrayToLabelerDids(prefs))\n }\n\n async removeLabeler(did: string) {\n const prefs = await this.updatePreferences((prefs) => {\n const labelersPref = prefs.findLast(predicate.isValidLabelersPref) || {\n $type: 'app.bsky.actor.defs#labelersPref',\n labelers: [],\n }\n\n labelersPref.labelers = labelersPref.labelers.filter((l) => l.did !== did)\n\n return prefs\n .filter((pref) => !AppBskyActorDefs.isLabelersPref(pref))\n .concat(labelersPref)\n })\n // automatically configure the client\n this.configureLabelers(prefsArrayToLabelerDids(prefs))\n }\n\n async setPersonalDetails({\n birthDate,\n }: {\n birthDate: string | Date | undefined\n }) {\n await this.updatePreferences((prefs) => {\n const personalDetailsPref = prefs.findLast(\n predicate.isValidPersonalDetailsPref,\n ) || {\n $type: 'app.bsky.actor.defs#personalDetailsPref',\n }\n\n personalDetailsPref.birthDate =\n birthDate instanceof Date ? birthDate.toISOString() : birthDate\n\n return prefs\n .filter((pref) => !AppBskyActorDefs.isPersonalDetailsPref(pref))\n .concat(personalDetailsPref)\n })\n }\n\n async setFeedViewPrefs(feed: string, pref: Partial<BskyFeedViewPreference>) {\n await this.updatePreferences((prefs) => {\n const existing = prefs\n .filter(predicate.isValidFeedViewPref)\n .findLast((pref) => pref.feed === feed)\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isFeedViewPref(p) || p.feed !== feed)\n .concat({\n ...existing,\n ...pref,\n $type: 'app.bsky.actor.defs#feedViewPref',\n feed,\n })\n })\n }\n\n async setThreadViewPrefs(pref: Partial<BskyThreadViewPreference>) {\n await this.updatePreferences((prefs) => {\n const existing = prefs.findLast(predicate.isValidThreadViewPref)\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isThreadViewPref(p))\n .concat({\n ...existing,\n ...pref,\n $type: 'app.bsky.actor.defs#threadViewPref',\n })\n })\n }\n\n async setInterestsPref(pref: Partial<BskyInterestsPreference>) {\n await this.updatePreferences((prefs) => {\n const existing = prefs.findLast(predicate.isValidInterestsPref)\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isInterestsPref(p))\n .concat({\n ...existing,\n ...pref,\n $type: 'app.bsky.actor.defs#interestsPref',\n })\n })\n }\n\n /**\n * Add a muted word to user preferences.\n */\n async addMutedWord(\n mutedWord: Pick<\n MutedWord,\n 'value' | 'targets' | 'actorTarget' | 'expiresAt'\n >,\n ) {\n const sanitizedValue = sanitizeMutedWordValue(mutedWord.value)\n\n if (!sanitizedValue) return\n\n await this.updatePreferences((prefs) => {\n let mutedWordsPref = prefs.findLast(predicate.isValidMutedWordsPref)\n\n const newMutedWord: AppBskyActorDefs.MutedWord = {\n id: TID.nextStr(),\n value: sanitizedValue,\n targets: mutedWord.targets || [],\n actorTarget: mutedWord.actorTarget || 'all',\n expiresAt: mutedWord.expiresAt || undefined,\n }\n\n if (mutedWordsPref) {\n mutedWordsPref.items.push(newMutedWord)\n\n /**\n * Migrate any old muted words that don't have an id\n */\n mutedWordsPref.items = migrateLegacyMutedWordsItems(\n mutedWordsPref.items,\n )\n } else {\n // if the pref doesn't exist, create it\n mutedWordsPref = {\n $type: 'app.bsky.actor.defs#mutedWordsPref',\n items: [newMutedWord],\n }\n }\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isMutedWordsPref(p))\n .concat(mutedWordsPref)\n })\n }\n\n /**\n * Convenience method to add muted words to user preferences\n */\n async addMutedWords(newMutedWords: AppBskyActorDefs.MutedWord[]) {\n await Promise.all(newMutedWords.map((word) => this.addMutedWord(word)))\n }\n\n /**\n * @deprecated use `addMutedWords` or `addMutedWord` instead\n */\n async upsertMutedWords(\n mutedWords: Pick<\n MutedWord,\n 'value' | 'targets' | 'actorTarget' | 'expiresAt'\n >[],\n ) {\n await this.addMutedWords(mutedWords)\n }\n\n /**\n * Update a muted word in user preferences.\n */\n async updateMutedWord(mutedWord: AppBskyActorDefs.MutedWord) {\n await this.updatePreferences((prefs) => {\n const mutedWordsPref = prefs.findLast(predicate.isValidMutedWordsPref)\n\n if (mutedWordsPref) {\n mutedWordsPref.items = mutedWordsPref.items.map((existingItem) => {\n const match = matchMutedWord(existingItem, mutedWord)\n\n if (match) {\n const updated = {\n ...existingItem,\n ...mutedWord,\n }\n return {\n id: existingItem.id || TID.nextStr(),\n value:\n sanitizeMutedWordValue(updated.value) || existingItem.value,\n targets: updated.targets || [],\n actorTarget: updated.actorTarget || 'all',\n expiresAt: updated.expiresAt || undefined,\n }\n } else {\n return existingItem\n }\n })\n\n /**\n * Migrate any old muted words that don't have an id\n */\n mutedWordsPref.items = migrateLegacyMutedWordsItems(\n mutedWordsPref.items,\n )\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isMutedWordsPref(p))\n .concat(mutedWordsPref)\n }\n\n return prefs\n })\n }\n\n /**\n * Remove a muted word from user preferences.\n */\n async removeMutedWord(mutedWord: AppBskyActorDefs.MutedWord) {\n await this.updatePreferences((prefs) => {\n const mutedWordsPref = prefs.findLast(predicate.isValidMutedWordsPref)\n\n if (mutedWordsPref) {\n for (let i = 0; i < mutedWordsPref.items.length; i++) {\n const match = matchMutedWord(mutedWordsPref.items[i], mutedWord)\n\n if (match) {\n mutedWordsPref.items.splice(i, 1)\n break\n }\n }\n\n /**\n * Migrate any old muted words that don't have an id\n */\n mutedWordsPref.items = migrateLegacyMutedWordsItems(\n mutedWordsPref.items,\n )\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isMutedWordsPref(p))\n .concat(mutedWordsPref)\n }\n\n return prefs\n })\n }\n\n /**\n * Convenience method to remove muted words from user preferences\n */\n async removeMutedWords(mutedWords: AppBskyActorDefs.MutedWord[]) {\n await Promise.all(mutedWords.map((word) => this.removeMutedWord(word)))\n }\n\n async hidePost(postUri: string) {\n await this.updateHiddenPost(postUri, 'hide')\n }\n\n async unhidePost(postUri: string) {\n await this.updateHiddenPost(postUri, 'unhide')\n }\n\n async bskyAppQueueNudges(nudges: string | string[]) {\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidBskyAppStatePref) || {\n $type: 'app.bsky.actor.defs#bskyAppStatePref',\n }\n\n pref.queuedNudges = (pref.queuedNudges || []).concat(nudges)\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isBskyAppStatePref(p))\n .concat(pref)\n })\n }\n\n async bskyAppDismissNudges(nudges: string | string[]) {\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidBskyAppStatePref) || {\n $type: 'app.bsky.actor.defs#bskyAppStatePref',\n }\n\n nudges = Array.isArray(nudges) ? nudges : [nudges]\n pref.queuedNudges = (pref.queuedNudges || []).filter(\n (nudge) => !nudges.includes(nudge),\n )\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isBskyAppStatePref(p))\n .concat(pref)\n })\n }\n\n async bskyAppSetActiveProgressGuide(\n guide: AppBskyActorDefs.BskyAppProgressGuide | undefined,\n ) {\n if (guide) {\n const result = AppBskyActorDefs.validateBskyAppProgressGuide(guide)\n if (!result.success) throw result.error\n }\n\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidBskyAppStatePref) || {\n $type: 'app.bsky.actor.defs#bskyAppStatePref',\n }\n\n pref.activeProgressGuide = guide\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isBskyAppStatePref(p))\n .concat(pref)\n })\n }\n\n /**\n * Insert or update a NUX in user prefs\n */\n async bskyAppUpsertNux(nux: Nux) {\n validateNux(nux)\n\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidBskyAppStatePref) || {\n $type: 'app.bsky.actor.defs#bskyAppStatePref',\n }\n\n pref.nuxs = pref.nuxs || []\n\n const existing = pref.nuxs?.find((n) => {\n return n.id === nux.id\n })\n\n let next: AppBskyActorDefs.Nux\n\n if (existing) {\n next = {\n id: existing.id,\n completed: nux.completed,\n data: nux.data,\n expiresAt: nux.expiresAt,\n }\n } else {\n next = nux\n }\n\n // remove duplicates and append\n pref.nuxs = pref.nuxs.filter((n) => n.id !== nux.id).concat(next)\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isBskyAppStatePref(p))\n .concat(pref)\n })\n }\n\n /**\n * Removes NUXs from user preferences.\n */\n async bskyAppRemoveNuxs(ids: string[]) {\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidBskyAppStatePref) || {\n $type: 'app.bsky.actor.defs#bskyAppStatePref',\n }\n\n pref.nuxs = (pref.nuxs || []).filter((nux) => !ids.includes(nux.id))\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isBskyAppStatePref(p))\n .concat(pref)\n })\n }\n\n async setPostInteractionSettings(\n settings: AppBskyActorDefs.PostInteractionSettingsPref,\n ) {\n const result =\n AppBskyActorDefs.validatePostInteractionSettingsPref(settings)\n // Fool-proofing (should not be needed because of type safety)\n if (!result.success) throw result.error\n\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(\n predicate.isValidPostInteractionSettingsPref,\n ) || {\n $type: 'app.bsky.actor.defs#postInteractionSettingsPref',\n }\n\n /**\n * Matches handling of `threadgate.allow` where `undefined` means \"everyone\"\n */\n pref.threadgateAllowRules = settings.threadgateAllowRules\n pref.postgateEmbeddingRules = settings.postgateEmbeddingRules\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isPostInteractionSettingsPref(p))\n .concat(pref)\n })\n }\n\n async setVerificationPrefs(settings: AppBskyActorDefs.VerificationPrefs) {\n const result = AppBskyActorDefs.validateVerificationPrefs(settings)\n // Fool-proofing (should not be needed because of type safety)\n if (!result.success) throw result.error\n\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidVerificationPrefs) || {\n $type: 'app.bsky.actor.defs#verificationPrefs',\n hideBadges: false,\n }\n\n pref.hideBadges = settings.hideBadges\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isVerificationPrefs(p))\n .concat(pref)\n })\n }\n\n //- Private methods\n\n #prefsLock = new AwaitLock()\n\n /**\n * This function updates the preferences of a user and allows for a callback function to be executed\n * before the update.\n * @param cb - cb is a callback function that takes in a single parameter of type\n * AppBskyActorDefs.Preferences and returns either a boolean or void. This callback function is used to\n * update the preferences of the user. The function is called with the current preferences as an\n * argument and if the callback returns false, the preferences are not updated.\n */\n private async updatePreferences(\n cb: (\n prefs: AppBskyActorDefs.Preferences,\n ) => AppBskyActorDefs.Preferences | false,\n ) {\n try {\n await this.#prefsLock.acquireAsync()\n const res = await this.app.bsky.actor.getPreferences({})\n const newPrefs = cb(res.data.preferences)\n if (newPrefs === false) {\n return res.data.preferences\n }\n await this.app.bsky.actor.putPreferences({\n preferences: newPrefs,\n })\n return newPrefs\n } finally {\n this.#prefsLock.release()\n }\n }\n\n private async updateHiddenPost(postUri: string, action: 'hide' | 'unhide') {\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidHiddenPostsPref) || {\n $type: 'app.bsky.actor.defs#hiddenPostsPref',\n items: [],\n }\n\n const hiddenItems = new Set(pref.items)\n\n if (action === 'hide') hiddenItems.add(postUri)\n else hiddenItems.delete(postUri)\n\n pref.items = [...hiddenItems]\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isHiddenPostsPref(p))\n .concat(pref)\n })\n }\n\n /**\n * A helper specifically for updating feed preferences\n */\n private async updateFeedPreferences(\n cb: (\n saved: string[],\n pinned: string[],\n ) => { saved: string[]; pinned: string[] },\n ): Promise<{ saved: string[]; pinned: string[] }> {\n let res\n await this.updatePreferences((prefs) => {\n const feedsPref = prefs.findLast(predicate.isValidSavedFeedsPref) || {\n $type: 'app.bsky.actor.defs#savedFeedsPref',\n saved: [],\n pinned: [],\n }\n\n res = cb(feedsPref.saved, feedsPref.pinned)\n feedsPref.saved = res.saved\n feedsPref.pinned = res.pinned\n\n return prefs\n .filter((pref) => !AppBskyActorDefs.isSavedFeedsPref(pref))\n .concat(feedsPref)\n })\n return res\n }\n\n private async updateSavedFeedsV2Preferences(\n cb: (\n savedFeedsPref: AppBskyActorDefs.SavedFeed[],\n ) => AppBskyActorDefs.SavedFeed[],\n ): Promise<AppBskyActorDefs.SavedFeed[]> {\n let maybeMutatedSavedFeeds: AppBskyActorDefs.SavedFeed[] = []\n\n await this.updatePreferences((prefs) => {\n const existingV2Pref = prefs.findLast(\n predicate.isValidSavedFeedsPrefV2,\n ) || {\n $type: 'app.bsky.actor.defs#savedFeedsPrefV2',\n items: [],\n }\n\n const newSavedFeeds = cb(existingV2Pref.items)\n\n // enforce ordering: pinned first, then saved\n existingV2Pref.items = [...newSavedFeeds].sort((a, b) =>\n // @NOTE: preserve order of items with the same pinned status\n a.pinned === b.pinned ? 0 : a.pinned ? -1 : 1,\n )\n\n // Store the return value\n maybeMutatedSavedFeeds = newSavedFeeds\n\n let updatedPrefs = prefs\n .filter((pref) => !AppBskyActorDefs.isSavedFeedsPrefV2(pref))\n .concat(existingV2Pref)\n\n /*\n * If there's a v2 pref present, it means this account was migrated from v1\n * to v2. During the transition period, we double write v2 prefs back to\n * v1, but NOT the other way around.\n */\n let existingV1Pref = prefs.findLast(predicate.isValidSavedFeedsPref)\n if (existingV1Pref) {\n const { saved, pinned } = existingV1Pref\n const v2Compat = savedFeedsToUriArrays(\n // v1 only supports feeds and lists\n existingV2Pref.items.filter((i) => ['feed', 'list'].includes(i.type)),\n )\n existingV1Pref = {\n ...existingV1Pref,\n saved: Array.from(new Set([...saved, ...v2Compat.saved])),\n pinned: Array.from(new Set([...pinned, ...v2Compat.pinned])),\n }\n updatedPrefs = updatedPrefs\n .filter((pref) => !AppBskyActorDefs.isSavedFeedsPref(pref))\n .concat(existingV1Pref)\n }\n\n return updatedPrefs\n })\n\n return maybeMutatedSavedFeeds\n }\n\n //#endregion\n}\n\n/**\n * Helper to transform the legacy content preferences.\n */\nfunction adjustLegacyContentLabelPref(\n pref: AppBskyActorDefs.ContentLabelPref,\n): AppBskyActorDefs.ContentLabelPref {\n let visibility = pref.visibility\n\n // adjust legacy values\n if (visibility === 'show') {\n visibility = 'ignore'\n }\n\n return { ...pref, visibility }\n}\n\n/**\n * Re-maps legacy labels to new labels on READ. Does not save these changes to\n * the user's preferences.\n */\nfunction remapLegacyLabels(\n labels: BskyPreferences['moderationPrefs']['labels'],\n) {\n const _labels = { ...labels }\n const legacyToNewMap: Record<string, string | undefined> = {\n gore: 'graphic-media',\n nsfw: 'porn',\n suggestive: 'sexual',\n }\n\n for (const labelName in _labels) {\n const newLabelName = legacyToNewMap[labelName]!\n if (newLabelName) {\n _labels[newLabelName] = _labels[labelName]\n }\n }\n\n return _labels\n}\n\n/**\n * A helper to get the currently enabled labelers from the full preferences array\n */\nfunction prefsArrayToLabelerDids(\n prefs: AppBskyActorDefs.Preferences,\n): string[] {\n const labelersPref = prefs.findLast(predicate.isValidLabelersPref)\n let dids: string[] = []\n if (labelersPref) {\n dids = (labelersPref as AppBskyActorDefs.LabelersPref).labelers.map(\n (labeler) => labeler.did,\n )\n }\n return dids\n}\n\nfunction isBskyPrefs(v: any): v is BskyPreferences {\n return (\n v &&\n typeof v === 'object' &&\n 'moderationPrefs' in v &&\n isModPrefs(v.moderationPrefs)\n )\n}\n\nfunction isModPrefs(v: any): v is ModerationPrefs {\n return v && typeof v === 'object' && 'labelers' in v\n}\n\nfunction migrateLegacyMutedWordsItems(items: AppBskyActorDefs.MutedWord[]) {\n return items.map((item) => ({\n ...item,\n id: item.id || TID.nextStr(),\n }))\n}\n\nfunction matchMutedWord(\n existingWord: AppBskyActorDefs.MutedWord,\n newWord: AppBskyActorDefs.MutedWord,\n): boolean {\n // id is undefined in legacy implementation\n const existingId = existingWord.id\n // prefer matching based on id\n const matchById = existingId && existingId === newWord.id\n // handle legacy case where id is not set\n const legacyMatchByValue = !existingId && existingWord.value === newWord.value\n\n return matchById || legacyMatchByValue\n}\n"]}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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","sourcesContent":["import AwaitLock from 'await-lock'\nimport { TID, retry } from '@atproto/common-web'\nimport { AtUri, ensureValidDid } from '@atproto/syntax'\nimport {\n FetchHandler,\n FetchHandlerOptions,\n XrpcClient,\n buildFetchHandler,\n} from '@atproto/xrpc'\nimport {\n AppBskyActorDefs,\n AppBskyActorProfile,\n AppBskyFeedPost,\n AppBskyLabelerDefs,\n AppNS,\n ChatNS,\n ComAtprotoRepoPutRecord,\n ComNS,\n ToolsNS,\n} from './client/index'\nimport { schemas } from './client/lexicons'\nimport { MutedWord, Nux } from './client/types/app/bsky/actor/defs'\nimport { $Typed, Un$Typed } from './client/util'\nimport { BSKY_LABELER_DID } from './const'\nimport { interpretLabelValueDefinitions } from './moderation'\nimport { DEFAULT_LABEL_SETTINGS } from './moderation/const/labels'\nimport {\n InterpretedLabelValueDefinition,\n LabelPreference,\n ModerationPrefs,\n} from './moderation/types'\nimport * as predicate from './predicate'\nimport { SessionManager } from './session-manager'\nimport {\n AtpAgentGlobalOpts,\n AtprotoProxy,\n AtprotoServiceType,\n BskyFeedViewPreference,\n BskyInterestsPreference,\n BskyPreferences,\n BskyThreadViewPreference,\n asAtprotoProxy,\n asDid,\n isDid,\n} from './types'\nimport {\n getSavedFeedType,\n sanitizeMutedWordValue,\n savedFeedsToUriArrays,\n validateNux,\n validateSavedFeed,\n} from './util'\n\nconst FEED_VIEW_PREF_DEFAULTS = {\n hideReplies: false,\n hideRepliesByUnfollowed: true,\n hideRepliesByLikeCount: 0,\n hideReposts: false,\n hideQuotePosts: false,\n}\n\nconst THREAD_VIEW_PREF_DEFAULTS = {\n sort: 'hotness',\n prioritizeFollowedUsers: true,\n}\n\nexport type { FetchHandler }\n\n/**\n * An {@link Agent} is an {@link AtpBaseClient} with the following\n * additional features:\n * - AT Protocol labelers configuration utilities\n * - AT Protocol proxy configuration utilities\n * - Cloning utilities\n * - `app.bsky` syntactic sugar\n * - `com.atproto` syntactic sugar\n */\nexport class Agent extends XrpcClient {\n //#region Static configuration\n\n /**\n * The labelers to be used across all requests with the takedown capability\n */\n static appLabelers: readonly string[] = [BSKY_LABELER_DID]\n\n /**\n * Configures the Agent (or its sub classes) globally.\n */\n static configure(opts: AtpAgentGlobalOpts) {\n if (opts.appLabelers) {\n this.appLabelers = opts.appLabelers.map(asDid) // Validate & copy\n }\n }\n\n //#endregion\n\n com = new ComNS(this)\n app = new AppNS(this)\n chat = new ChatNS(this)\n tools = new ToolsNS(this)\n\n /** @deprecated use `this` instead */\n get xrpc(): XrpcClient {\n return this\n }\n\n readonly sessionManager: SessionManager\n\n constructor(options: SessionManager | FetchHandler | FetchHandlerOptions) {\n const sessionManager: SessionManager =\n typeof options === 'object' && 'fetchHandler' in options\n ? options\n : {\n did: undefined,\n fetchHandler: buildFetchHandler(options),\n }\n\n super((url, init) => {\n const headers = new Headers(init?.headers)\n\n if (this.proxy && !headers.has('atproto-proxy')) {\n headers.set('atproto-proxy', this.proxy)\n }\n\n // Merge the labelers header of this particular request with the app &\n // instance labelers.\n headers.set(\n 'atproto-accept-labelers',\n [\n ...this.appLabelers.map((l) => `${l};redact`),\n ...this.labelers,\n headers.get('atproto-accept-labelers')?.trim(),\n ]\n .filter(Boolean)\n .join(', '),\n )\n\n return this.sessionManager.fetchHandler(url, { ...init, headers })\n }, schemas)\n\n this.sessionManager = sessionManager\n }\n\n //#region Cloning utilities\n\n clone(): Agent {\n return this.copyInto(new Agent(this.sessionManager))\n }\n\n copyInto<T extends Agent>(inst: T): T {\n inst.configureLabelers(this.labelers)\n inst.configureProxy(this.proxy ?? null)\n inst.clearHeaders()\n for (const [key, value] of this.headers) inst.setHeader(key, value)\n return inst\n }\n\n withProxy(serviceType: AtprotoServiceType, did: string) {\n const inst = this.clone()\n inst.configureProxy(`${asDid(did)}#${serviceType}`)\n return inst as ReturnType<this['clone']>\n }\n\n //#endregion\n\n //#region ATPROTO labelers configuration utilities\n\n /**\n * The labelers statically configured on the class of the current instance.\n */\n get appLabelers() {\n return (this.constructor as typeof Agent).appLabelers\n }\n\n labelers: readonly string[] = []\n\n configureLabelers(labelerDids: readonly string[]) {\n this.labelers = labelerDids.map(asDid) // Validate & copy\n }\n\n /** @deprecated use {@link configureLabelers} instead */\n configureLabelersHeader(labelerDids: readonly string[]) {\n // Filtering non-did values for backwards compatibility\n this.configureLabelers(labelerDids.filter(isDid))\n }\n\n //#endregion\n\n //#region ATPROTO proxy configuration utilities\n\n proxy?: AtprotoProxy\n\n configureProxy(value: AtprotoProxy | null) {\n if (value === null) this.proxy = undefined\n else this.proxy = asAtprotoProxy(value)\n }\n\n /** @deprecated use {@link configureProxy} instead */\n configureProxyHeader(serviceType: AtprotoServiceType, did: string) {\n // Ignoring non-did values for backwards compatibility\n if (isDid(did)) this.configureProxy(`${did}#${serviceType}`)\n }\n\n //#endregion\n\n //#region Session management\n\n /**\n * Get the authenticated user's DID, if any.\n */\n get did() {\n return this.sessionManager.did\n }\n\n /** @deprecated Use {@link Agent.assertDid} instead */\n get accountDid() {\n return this.assertDid\n }\n\n /**\n * Get the authenticated user's DID, or throw an error if not authenticated.\n */\n get assertDid(): string {\n this.assertAuthenticated()\n return this.did\n }\n\n /**\n * Assert that the user is authenticated.\n */\n public assertAuthenticated(): asserts this is { did: string } {\n if (!this.did) throw new Error('Not logged in')\n }\n\n //#endregion\n\n /** @deprecated use \"this\" instead */\n get api() {\n return this\n }\n\n //#region \"com.atproto\" lexicon short hand methods\n\n /**\n * Upload a binary blob to the server\n */\n uploadBlob: typeof this.com.atproto.repo.uploadBlob = (data, opts) =>\n this.com.atproto.repo.uploadBlob(data, opts)\n\n /**\n * Resolve a handle to a DID\n */\n resolveHandle: typeof this.com.atproto.identity.resolveHandle = (\n params,\n opts,\n ) => this.com.atproto.identity.resolveHandle(params, opts)\n\n /**\n * Change the user's handle\n */\n updateHandle: typeof this.com.atproto.identity.updateHandle = (data, opts) =>\n this.com.atproto.identity.updateHandle(data, opts)\n\n /**\n * Create a moderation report\n */\n createModerationReport: typeof this.com.atproto.moderation.createReport = (\n data,\n opts,\n ) => this.com.atproto.moderation.createReport(data, opts)\n\n //#endregion\n\n //#region \"app.bsky\" lexicon short hand methods\n\n getTimeline: typeof this.app.bsky.feed.getTimeline = (params, opts) =>\n this.app.bsky.feed.getTimeline(params, opts)\n\n getAuthorFeed: typeof this.app.bsky.feed.getAuthorFeed = (params, opts) =>\n this.app.bsky.feed.getAuthorFeed(params, opts)\n\n getActorLikes: typeof this.app.bsky.feed.getActorLikes = (params, opts) =>\n this.app.bsky.feed.getActorLikes(params, opts)\n\n getPostThread: typeof this.app.bsky.feed.getPostThread = (params, opts) =>\n this.app.bsky.feed.getPostThread(params, opts)\n\n getPost: typeof this.app.bsky.feed.post.get = (params) =>\n this.app.bsky.feed.post.get(params)\n\n getPosts: typeof this.app.bsky.feed.getPosts = (params, opts) =>\n this.app.bsky.feed.getPosts(params, opts)\n\n getLikes: typeof this.app.bsky.feed.getLikes = (params, opts) =>\n this.app.bsky.feed.getLikes(params, opts)\n\n getRepostedBy: typeof this.app.bsky.feed.getRepostedBy = (params, opts) =>\n this.app.bsky.feed.getRepostedBy(params, opts)\n\n getFollows: typeof this.app.bsky.graph.getFollows = (params, opts) =>\n this.app.bsky.graph.getFollows(params, opts)\n\n getFollowers: typeof this.app.bsky.graph.getFollowers = (params, opts) =>\n this.app.bsky.graph.getFollowers(params, opts)\n\n getProfile: typeof this.app.bsky.actor.getProfile = (params, opts) =>\n this.app.bsky.actor.getProfile(params, opts)\n\n getProfiles: typeof this.app.bsky.actor.getProfiles = (params, opts) =>\n this.app.bsky.actor.getProfiles(params, opts)\n\n getSuggestions: typeof this.app.bsky.actor.getSuggestions = (params, opts) =>\n this.app.bsky.actor.getSuggestions(params, opts)\n\n searchActors: typeof this.app.bsky.actor.searchActors = (params, opts) =>\n this.app.bsky.actor.searchActors(params, opts)\n\n searchActorsTypeahead: typeof this.app.bsky.actor.searchActorsTypeahead = (\n params,\n opts,\n ) => this.app.bsky.actor.searchActorsTypeahead(params, opts)\n\n listNotifications: typeof this.app.bsky.notification.listNotifications = (\n params,\n opts,\n ) => this.app.bsky.notification.listNotifications(params, opts)\n\n countUnreadNotifications: typeof this.app.bsky.notification.getUnreadCount = (\n params,\n opts,\n ) => this.app.bsky.notification.getUnreadCount(params, opts)\n\n getLabelers: typeof this.app.bsky.labeler.getServices = (params, opts) =>\n this.app.bsky.labeler.getServices(params, opts)\n\n async getLabelDefinitions(\n prefs: BskyPreferences | ModerationPrefs | string[],\n ): Promise<Record<string, InterpretedLabelValueDefinition[]>> {\n // collect the labeler dids\n const dids: string[] = [...this.appLabelers]\n if (isBskyPrefs(prefs)) {\n dids.push(...prefs.moderationPrefs.labelers.map((l) => l.did))\n } else if (isModPrefs(prefs)) {\n dids.push(...prefs.labelers.map((l) => l.did))\n } else {\n dids.push(...prefs)\n }\n\n // fetch their definitions\n const labelers = await this.getLabelers({\n dids,\n detailed: true,\n })\n\n // assemble a map of labeler dids to the interpreted label value definitions\n const labelDefs = {}\n if (labelers.data) {\n for (const labeler of labelers.data\n .views as AppBskyLabelerDefs.LabelerViewDetailed[]) {\n labelDefs[labeler.creator.did] = interpretLabelValueDefinitions(labeler)\n }\n }\n\n return labelDefs\n }\n\n async post(\n record: Partial<AppBskyFeedPost.Record> &\n Omit<AppBskyFeedPost.Record, 'createdAt'>,\n ) {\n record.createdAt ||= new Date().toISOString()\n return this.app.bsky.feed.post.create(\n { repo: this.accountDid },\n record as AppBskyFeedPost.Record,\n )\n }\n\n async deletePost(postUri: string) {\n this.assertAuthenticated()\n\n const postUrip = new AtUri(postUri)\n return this.app.bsky.feed.post.delete({\n repo: postUrip.hostname,\n rkey: postUrip.rkey,\n })\n }\n\n async like(uri: string, cid: string, via?: { uri: string; cid: string }) {\n return this.app.bsky.feed.like.create(\n { repo: this.accountDid },\n {\n subject: { uri, cid },\n createdAt: new Date().toISOString(),\n via,\n },\n )\n }\n\n async deleteLike(likeUri: string) {\n this.assertAuthenticated()\n\n const likeUrip = new AtUri(likeUri)\n return this.app.bsky.feed.like.delete({\n repo: likeUrip.hostname,\n rkey: likeUrip.rkey,\n })\n }\n\n async repost(uri: string, cid: string, via?: { uri: string; cid: string }) {\n return this.app.bsky.feed.repost.create(\n { repo: this.accountDid },\n {\n subject: { uri, cid },\n createdAt: new Date().toISOString(),\n via,\n },\n )\n }\n\n async deleteRepost(repostUri: string) {\n this.assertAuthenticated()\n\n const repostUrip = new AtUri(repostUri)\n return this.app.bsky.feed.repost.delete({\n repo: repostUrip.hostname,\n rkey: repostUrip.rkey,\n })\n }\n\n async follow(subjectDid: string, via?: { uri: string; cid: string }) {\n return this.app.bsky.graph.follow.create(\n { repo: this.accountDid },\n {\n subject: subjectDid,\n createdAt: new Date().toISOString(),\n via,\n },\n )\n }\n\n async deleteFollow(followUri: string) {\n this.assertAuthenticated()\n\n const followUrip = new AtUri(followUri)\n return this.app.bsky.graph.follow.delete({\n repo: followUrip.hostname,\n rkey: followUrip.rkey,\n })\n }\n\n /**\n * @note: Using this method will reset the whole profile record if it\n * previously contained invalid values (wrt to the profile lexicon).\n */\n async upsertProfile(\n updateFn: (\n existing: AppBskyActorProfile.Record | undefined,\n ) =>\n | Un$Typed<AppBskyActorProfile.Record>\n | Promise<Un$Typed<AppBskyActorProfile.Record>>,\n ): Promise<void> {\n const upsert = async () => {\n const repo = this.assertDid\n const collection = 'app.bsky.actor.profile'\n\n const existing = await this.com.atproto.repo\n .getRecord({ repo, collection, rkey: 'self' })\n .catch((_) => undefined)\n\n const existingRecord: AppBskyActorProfile.Record | undefined =\n existing && predicate.isValidProfile(existing.data.value)\n ? existing.data.value\n : undefined\n\n // run the update\n const updated = await updateFn(existingRecord)\n\n // validate the value returned by the update function\n const validation = AppBskyActorProfile.validateRecord({\n $type: collection,\n ...updated,\n })\n\n if (!validation.success) {\n throw validation.error\n }\n\n await this.com.atproto.repo.putRecord({\n repo,\n collection,\n rkey: 'self',\n record: validation.value,\n swapRecord: existing?.data.cid || null,\n })\n }\n\n return retry(upsert, {\n maxRetries: 5,\n retryable: (e) => e instanceof ComAtprotoRepoPutRecord.InvalidSwapError,\n })\n }\n\n async mute(actor: string) {\n return this.app.bsky.graph.muteActor({ actor })\n }\n\n async unmute(actor: string) {\n return this.app.bsky.graph.unmuteActor({ actor })\n }\n\n async muteModList(uri: string) {\n return this.app.bsky.graph.muteActorList({ list: uri })\n }\n\n async unmuteModList(uri: string) {\n return this.app.bsky.graph.unmuteActorList({ list: uri })\n }\n\n async blockModList(uri: string) {\n return this.app.bsky.graph.listblock.create(\n { repo: this.accountDid },\n {\n subject: uri,\n createdAt: new Date().toISOString(),\n },\n )\n }\n\n async unblockModList(uri: string) {\n const repo = this.accountDid\n\n const listInfo = await this.app.bsky.graph.getList({\n list: uri,\n limit: 1,\n })\n\n const blocked = listInfo.data.list.viewer?.blocked\n if (blocked) {\n const { rkey } = new AtUri(blocked)\n return this.app.bsky.graph.listblock.delete({\n repo,\n rkey,\n })\n }\n }\n\n async updateSeenNotifications(seenAt = new Date().toISOString()) {\n return this.app.bsky.notification.updateSeen({ seenAt })\n }\n\n async getPreferences(): Promise<BskyPreferences> {\n const prefs: BskyPreferences = {\n feeds: {\n saved: undefined,\n pinned: undefined,\n },\n // @ts-ignore populating below\n savedFeeds: undefined,\n feedViewPrefs: {\n home: {\n ...FEED_VIEW_PREF_DEFAULTS,\n },\n },\n threadViewPrefs: { ...THREAD_VIEW_PREF_DEFAULTS },\n moderationPrefs: {\n adultContentEnabled: false,\n labels: { ...DEFAULT_LABEL_SETTINGS },\n labelers: this.appLabelers.map((did) => ({\n did,\n labels: {},\n })),\n mutedWords: [],\n hiddenPosts: [],\n },\n birthDate: undefined,\n interests: {\n tags: [],\n },\n bskyAppState: {\n queuedNudges: [],\n activeProgressGuide: undefined,\n nuxs: [],\n },\n postInteractionSettings: {\n threadgateAllowRules: undefined,\n postgateEmbeddingRules: undefined,\n },\n verificationPrefs: {\n hideBadges: false,\n },\n }\n const res = await this.app.bsky.actor.getPreferences({})\n const labelPrefs: AppBskyActorDefs.ContentLabelPref[] = []\n for (const pref of res.data.preferences) {\n if (predicate.isValidAdultContentPref(pref)) {\n // adult content preferences\n prefs.moderationPrefs.adultContentEnabled = pref.enabled\n } else if (predicate.isValidContentLabelPref(pref)) {\n // content label preference\n const adjustedPref = adjustLegacyContentLabelPref(pref)\n labelPrefs.push(adjustedPref)\n } else if (predicate.isValidLabelersPref(pref)) {\n // labelers preferences\n prefs.moderationPrefs.labelers = this.appLabelers\n .map((did: string) => ({ did, labels: {} }))\n .concat(\n pref.labelers.map((labeler) => ({\n ...labeler,\n labels: {},\n })),\n )\n } else if (predicate.isValidSavedFeedsPrefV2(pref)) {\n prefs.savedFeeds = pref.items\n } else if (predicate.isValidSavedFeedsPref(pref)) {\n // saved and pinned feeds\n prefs.feeds.saved = pref.saved\n prefs.feeds.pinned = pref.pinned\n } else if (predicate.isValidPersonalDetailsPref(pref)) {\n // birth date (irl)\n if (pref.birthDate) {\n prefs.birthDate = new Date(pref.birthDate)\n }\n } else if (predicate.isValidFeedViewPref(pref)) {\n // feed view preferences\n const { $type: _, feed, ...v } = pref\n prefs.feedViewPrefs[feed] = { ...FEED_VIEW_PREF_DEFAULTS, ...v }\n } else if (predicate.isValidThreadViewPref(pref)) {\n // thread view preferences\n const { $type: _, ...v } = pref\n prefs.threadViewPrefs = { ...prefs.threadViewPrefs, ...v }\n } else if (predicate.isValidInterestsPref(pref)) {\n const { $type: _, ...v } = pref\n prefs.interests = { ...prefs.interests, ...v }\n } else if (predicate.isValidMutedWordsPref(pref)) {\n prefs.moderationPrefs.mutedWords = pref.items\n\n if (prefs.moderationPrefs.mutedWords.length) {\n prefs.moderationPrefs.mutedWords =\n prefs.moderationPrefs.mutedWords.map((word) => {\n word.actorTarget = word.actorTarget || 'all'\n return word\n })\n }\n } else if (predicate.isValidHiddenPostsPref(pref)) {\n prefs.moderationPrefs.hiddenPosts = pref.items\n } else if (predicate.isValidBskyAppStatePref(pref)) {\n prefs.bskyAppState.queuedNudges = pref.queuedNudges || []\n prefs.bskyAppState.activeProgressGuide = pref.activeProgressGuide\n prefs.bskyAppState.nuxs = pref.nuxs || []\n } else if (predicate.isValidPostInteractionSettingsPref(pref)) {\n prefs.postInteractionSettings.threadgateAllowRules =\n pref.threadgateAllowRules\n prefs.postInteractionSettings.postgateEmbeddingRules =\n pref.postgateEmbeddingRules\n } else if (predicate.isValidVerificationPrefs(pref)) {\n prefs.verificationPrefs = {\n hideBadges: pref.hideBadges,\n }\n }\n }\n\n /*\n * If `prefs.savedFeeds` is undefined, no `savedFeedsPrefV2` exists, which\n * means we want to try to migrate if needed.\n *\n * If v1 prefs exist, they will be migrated to v2.\n *\n * If no v1 prefs exist, the user is either new, or could be old and has\n * never edited their feeds.\n */\n if (prefs.savedFeeds == null) {\n const { saved, pinned } = prefs.feeds\n\n if (saved && pinned) {\n const uniqueMigratedSavedFeeds: Map<\n string,\n AppBskyActorDefs.SavedFeed\n > = new Map()\n\n // insert Following feed first\n uniqueMigratedSavedFeeds.set('timeline', {\n id: TID.nextStr(),\n type: 'timeline',\n value: 'following',\n pinned: true,\n })\n\n // use pinned as source of truth for feed order\n for (const uri of pinned) {\n const type = getSavedFeedType(uri)\n // only want supported types\n if (type === 'unknown') continue\n uniqueMigratedSavedFeeds.set(uri, {\n id: TID.nextStr(),\n type,\n value: uri,\n pinned: true,\n })\n }\n\n for (const uri of saved) {\n if (!uniqueMigratedSavedFeeds.has(uri)) {\n const type = getSavedFeedType(uri)\n // only want supported types\n if (type === 'unknown') continue\n uniqueMigratedSavedFeeds.set(uri, {\n id: TID.nextStr(),\n type,\n value: uri,\n pinned: false,\n })\n }\n }\n\n prefs.savedFeeds = Array.from(uniqueMigratedSavedFeeds.values())\n } else {\n prefs.savedFeeds = [\n {\n id: TID.nextStr(),\n type: 'timeline',\n value: 'following',\n pinned: true,\n },\n ]\n }\n\n // save to user preferences so this migration doesn't re-occur\n await this.overwriteSavedFeeds(prefs.savedFeeds)\n }\n\n // apply the label prefs\n for (const pref of labelPrefs) {\n if (pref.labelerDid) {\n const labeler = prefs.moderationPrefs.labelers.find(\n (labeler) => labeler.did === pref.labelerDid,\n )\n if (!labeler) continue\n labeler.labels[pref.label] = pref.visibility as LabelPreference\n } else {\n prefs.moderationPrefs.labels[pref.label] =\n pref.visibility as LabelPreference\n }\n }\n\n prefs.moderationPrefs.labels = remapLegacyLabels(\n prefs.moderationPrefs.labels,\n )\n\n // automatically configure the client\n this.configureLabelers(prefsArrayToLabelerDids(res.data.preferences))\n\n return prefs\n }\n\n async overwriteSavedFeeds(savedFeeds: AppBskyActorDefs.SavedFeed[]) {\n savedFeeds.forEach(validateSavedFeed)\n const uniqueSavedFeeds = new Map<string, AppBskyActorDefs.SavedFeed>()\n savedFeeds.forEach((feed) => {\n // remove and re-insert to preserve order\n if (uniqueSavedFeeds.has(feed.id)) {\n uniqueSavedFeeds.delete(feed.id)\n }\n uniqueSavedFeeds.set(feed.id, feed)\n })\n return this.updateSavedFeedsV2Preferences(() =>\n Array.from(uniqueSavedFeeds.values()),\n )\n }\n\n async updateSavedFeeds(savedFeedsToUpdate: AppBskyActorDefs.SavedFeed[]) {\n savedFeedsToUpdate.map(validateSavedFeed)\n return this.updateSavedFeedsV2Preferences((savedFeeds) => {\n return savedFeeds.map((savedFeed) => {\n const updatedVersion = savedFeedsToUpdate.find(\n (updated) => savedFeed.id === updated.id,\n )\n if (updatedVersion) {\n return {\n ...savedFeed,\n // only update pinned\n pinned: updatedVersion.pinned,\n }\n }\n return savedFeed\n })\n })\n }\n\n async addSavedFeeds(\n savedFeeds: Pick<AppBskyActorDefs.SavedFeed, 'type' | 'value' | 'pinned'>[],\n ) {\n const toSave: AppBskyActorDefs.SavedFeed[] = savedFeeds.map((f) => ({\n ...f,\n id: TID.nextStr(),\n }))\n toSave.forEach(validateSavedFeed)\n return this.updateSavedFeedsV2Preferences((savedFeeds) => [\n ...savedFeeds,\n ...toSave,\n ])\n }\n\n async removeSavedFeeds(ids: string[]) {\n return this.updateSavedFeedsV2Preferences((savedFeeds) => [\n ...savedFeeds.filter((feed) => !ids.find((id) => feed.id === id)),\n ])\n }\n\n /**\n * @deprecated use `overwriteSavedFeeds`\n */\n async setSavedFeeds(saved: string[], pinned: string[]) {\n return this.updateFeedPreferences(() => ({\n saved,\n pinned,\n }))\n }\n\n /**\n * @deprecated use `addSavedFeeds`\n */\n async addSavedFeed(v: string) {\n return this.updateFeedPreferences((saved: string[], pinned: string[]) => ({\n saved: [...saved.filter((uri) => uri !== v), v],\n pinned,\n }))\n }\n\n /**\n * @deprecated use `removeSavedFeeds`\n */\n async removeSavedFeed(v: string) {\n return this.updateFeedPreferences((saved: string[], pinned: string[]) => ({\n saved: saved.filter((uri) => uri !== v),\n pinned: pinned.filter((uri) => uri !== v),\n }))\n }\n\n /**\n * @deprecated use `addSavedFeeds` or `updateSavedFeeds`\n */\n async addPinnedFeed(v: string) {\n return this.updateFeedPreferences((saved: string[], pinned: string[]) => ({\n saved: [...saved.filter((uri) => uri !== v), v],\n pinned: [...pinned.filter((uri) => uri !== v), v],\n }))\n }\n\n /**\n * @deprecated use `updateSavedFeeds` or `removeSavedFeeds`\n */\n async removePinnedFeed(v: string) {\n return this.updateFeedPreferences((saved: string[], pinned: string[]) => ({\n saved,\n pinned: pinned.filter((uri) => uri !== v),\n }))\n }\n\n async setAdultContentEnabled(v: boolean) {\n await this.updatePreferences((prefs) => {\n const adultContentPref = prefs.findLast(\n predicate.isValidAdultContentPref,\n ) || {\n $type: 'app.bsky.actor.defs#adultContentPref',\n enabled: v,\n }\n\n adultContentPref.enabled = v\n\n return prefs\n .filter((pref) => !AppBskyActorDefs.isAdultContentPref(pref))\n .concat(adultContentPref)\n })\n }\n\n async setContentLabelPref(\n key: string,\n value: LabelPreference,\n labelerDid?: string,\n ) {\n if (labelerDid) {\n ensureValidDid(labelerDid)\n }\n await this.updatePreferences((prefs) => {\n const labelPref = prefs\n .filter(predicate.isValidContentLabelPref)\n .findLast(\n (pref) => pref.label === key && pref.labelerDid === labelerDid,\n ) || {\n $type: 'app.bsky.actor.defs#contentLabelPref',\n label: key,\n labelerDid,\n visibility: value,\n }\n\n labelPref.visibility = value\n\n let legacyLabelPref: $Typed<AppBskyActorDefs.ContentLabelPref> | undefined\n if (AppBskyActorDefs.isContentLabelPref(labelPref)) {\n // is global\n if (!labelPref.labelerDid) {\n const legacyLabelValue = {\n 'graphic-media': 'gore',\n porn: 'nsfw',\n sexual: 'suggestive',\n // Protect against using toString, hasOwnProperty, etc. as a label:\n __proto__: null,\n }[labelPref.label]\n\n // if it's a legacy label, double-write the legacy label\n if (legacyLabelValue) {\n legacyLabelPref = prefs\n .filter(predicate.isValidContentLabelPref)\n .findLast(\n (pref) =>\n pref.label === legacyLabelValue &&\n pref.labelerDid === undefined,\n ) || {\n $type: 'app.bsky.actor.defs#contentLabelPref',\n label: legacyLabelValue,\n labelerDid: undefined,\n visibility: value,\n }\n\n legacyLabelPref!.visibility = value\n }\n }\n }\n\n return prefs\n .filter(\n (pref) =>\n !AppBskyActorDefs.isContentLabelPref(pref) ||\n !(pref.label === key && pref.labelerDid === labelerDid),\n )\n .concat(labelPref)\n .filter((pref) => {\n if (!legacyLabelPref) return true\n return (\n !AppBskyActorDefs.isContentLabelPref(pref) ||\n !(\n pref.label === legacyLabelPref.label &&\n pref.labelerDid === undefined\n )\n )\n })\n .concat(legacyLabelPref ? [legacyLabelPref] : [])\n })\n }\n\n async addLabeler(did: string) {\n const prefs = await this.updatePreferences((prefs) => {\n const labelersPref = prefs.findLast(predicate.isValidLabelersPref) || {\n $type: 'app.bsky.actor.defs#labelersPref',\n labelers: [],\n }\n\n if (!labelersPref.labelers.some((labeler) => labeler.did === did)) {\n labelersPref.labelers.push({ did })\n }\n\n return prefs\n .filter((pref) => !AppBskyActorDefs.isLabelersPref(pref))\n .concat(labelersPref)\n })\n // automatically configure the client\n this.configureLabelers(prefsArrayToLabelerDids(prefs))\n }\n\n async removeLabeler(did: string) {\n const prefs = await this.updatePreferences((prefs) => {\n const labelersPref = prefs.findLast(predicate.isValidLabelersPref) || {\n $type: 'app.bsky.actor.defs#labelersPref',\n labelers: [],\n }\n\n labelersPref.labelers = labelersPref.labelers.filter((l) => l.did !== did)\n\n return prefs\n .filter((pref) => !AppBskyActorDefs.isLabelersPref(pref))\n .concat(labelersPref)\n })\n // automatically configure the client\n this.configureLabelers(prefsArrayToLabelerDids(prefs))\n }\n\n async setPersonalDetails({\n birthDate,\n }: {\n birthDate: string | Date | undefined\n }) {\n await this.updatePreferences((prefs) => {\n const personalDetailsPref = prefs.findLast(\n predicate.isValidPersonalDetailsPref,\n ) || {\n $type: 'app.bsky.actor.defs#personalDetailsPref',\n }\n\n personalDetailsPref.birthDate =\n birthDate instanceof Date ? birthDate.toISOString() : birthDate\n\n return prefs\n .filter((pref) => !AppBskyActorDefs.isPersonalDetailsPref(pref))\n .concat(personalDetailsPref)\n })\n }\n\n async setFeedViewPrefs(feed: string, pref: Partial<BskyFeedViewPreference>) {\n await this.updatePreferences((prefs) => {\n const existing = prefs\n .filter(predicate.isValidFeedViewPref)\n .findLast((pref) => pref.feed === feed)\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isFeedViewPref(p) || p.feed !== feed)\n .concat({\n ...existing,\n ...pref,\n $type: 'app.bsky.actor.defs#feedViewPref',\n feed,\n })\n })\n }\n\n async setThreadViewPrefs(pref: Partial<BskyThreadViewPreference>) {\n await this.updatePreferences((prefs) => {\n const existing = prefs.findLast(predicate.isValidThreadViewPref)\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isThreadViewPref(p))\n .concat({\n ...existing,\n ...pref,\n $type: 'app.bsky.actor.defs#threadViewPref',\n })\n })\n }\n\n async setInterestsPref(pref: Partial<BskyInterestsPreference>) {\n await this.updatePreferences((prefs) => {\n const existing = prefs.findLast(predicate.isValidInterestsPref)\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isInterestsPref(p))\n .concat({\n ...existing,\n ...pref,\n $type: 'app.bsky.actor.defs#interestsPref',\n })\n })\n }\n\n /**\n * Add a muted word to user preferences.\n */\n async addMutedWord(\n mutedWord: Pick<\n MutedWord,\n 'value' | 'targets' | 'actorTarget' | 'expiresAt'\n >,\n ) {\n const sanitizedValue = sanitizeMutedWordValue(mutedWord.value)\n\n if (!sanitizedValue) return\n\n await this.updatePreferences((prefs) => {\n let mutedWordsPref = prefs.findLast(predicate.isValidMutedWordsPref)\n\n const newMutedWord: AppBskyActorDefs.MutedWord = {\n id: TID.nextStr(),\n value: sanitizedValue,\n targets: mutedWord.targets || [],\n actorTarget: mutedWord.actorTarget || 'all',\n expiresAt: mutedWord.expiresAt || undefined,\n }\n\n if (mutedWordsPref) {\n mutedWordsPref.items.push(newMutedWord)\n\n /**\n * Migrate any old muted words that don't have an id\n */\n mutedWordsPref.items = migrateLegacyMutedWordsItems(\n mutedWordsPref.items,\n )\n } else {\n // if the pref doesn't exist, create it\n mutedWordsPref = {\n $type: 'app.bsky.actor.defs#mutedWordsPref',\n items: [newMutedWord],\n }\n }\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isMutedWordsPref(p))\n .concat(mutedWordsPref)\n })\n }\n\n /**\n * Convenience method to add muted words to user preferences\n */\n async addMutedWords(newMutedWords: AppBskyActorDefs.MutedWord[]) {\n await Promise.all(newMutedWords.map((word) => this.addMutedWord(word)))\n }\n\n /**\n * @deprecated use `addMutedWords` or `addMutedWord` instead\n */\n async upsertMutedWords(\n mutedWords: Pick<\n MutedWord,\n 'value' | 'targets' | 'actorTarget' | 'expiresAt'\n >[],\n ) {\n await this.addMutedWords(mutedWords)\n }\n\n /**\n * Update a muted word in user preferences.\n */\n async updateMutedWord(mutedWord: AppBskyActorDefs.MutedWord) {\n await this.updatePreferences((prefs) => {\n const mutedWordsPref = prefs.findLast(predicate.isValidMutedWordsPref)\n\n if (mutedWordsPref) {\n mutedWordsPref.items = mutedWordsPref.items.map((existingItem) => {\n const match = matchMutedWord(existingItem, mutedWord)\n\n if (match) {\n const updated = {\n ...existingItem,\n ...mutedWord,\n }\n return {\n id: existingItem.id || TID.nextStr(),\n value:\n sanitizeMutedWordValue(updated.value) || existingItem.value,\n targets: updated.targets || [],\n actorTarget: updated.actorTarget || 'all',\n expiresAt: updated.expiresAt || undefined,\n }\n } else {\n return existingItem\n }\n })\n\n /**\n * Migrate any old muted words that don't have an id\n */\n mutedWordsPref.items = migrateLegacyMutedWordsItems(\n mutedWordsPref.items,\n )\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isMutedWordsPref(p))\n .concat(mutedWordsPref)\n }\n\n return prefs\n })\n }\n\n /**\n * Remove a muted word from user preferences.\n */\n async removeMutedWord(mutedWord: AppBskyActorDefs.MutedWord) {\n await this.updatePreferences((prefs) => {\n const mutedWordsPref = prefs.findLast(predicate.isValidMutedWordsPref)\n\n if (mutedWordsPref) {\n for (let i = 0; i < mutedWordsPref.items.length; i++) {\n const match = matchMutedWord(mutedWordsPref.items[i], mutedWord)\n\n if (match) {\n mutedWordsPref.items.splice(i, 1)\n break\n }\n }\n\n /**\n * Migrate any old muted words that don't have an id\n */\n mutedWordsPref.items = migrateLegacyMutedWordsItems(\n mutedWordsPref.items,\n )\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isMutedWordsPref(p))\n .concat(mutedWordsPref)\n }\n\n return prefs\n })\n }\n\n /**\n * Convenience method to remove muted words from user preferences\n */\n async removeMutedWords(mutedWords: AppBskyActorDefs.MutedWord[]) {\n await Promise.all(mutedWords.map((word) => this.removeMutedWord(word)))\n }\n\n async hidePost(postUri: string) {\n await this.updateHiddenPost(postUri, 'hide')\n }\n\n async unhidePost(postUri: string) {\n await this.updateHiddenPost(postUri, 'unhide')\n }\n\n async bskyAppQueueNudges(nudges: string | string[]) {\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidBskyAppStatePref) || {\n $type: 'app.bsky.actor.defs#bskyAppStatePref',\n }\n\n pref.queuedNudges = (pref.queuedNudges || []).concat(nudges)\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isBskyAppStatePref(p))\n .concat(pref)\n })\n }\n\n async bskyAppDismissNudges(nudges: string | string[]) {\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidBskyAppStatePref) || {\n $type: 'app.bsky.actor.defs#bskyAppStatePref',\n }\n\n nudges = Array.isArray(nudges) ? nudges : [nudges]\n pref.queuedNudges = (pref.queuedNudges || []).filter(\n (nudge) => !nudges.includes(nudge),\n )\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isBskyAppStatePref(p))\n .concat(pref)\n })\n }\n\n async bskyAppSetActiveProgressGuide(\n guide: AppBskyActorDefs.BskyAppProgressGuide | undefined,\n ) {\n if (guide) {\n const result = AppBskyActorDefs.validateBskyAppProgressGuide(guide)\n if (!result.success) throw result.error\n }\n\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidBskyAppStatePref) || {\n $type: 'app.bsky.actor.defs#bskyAppStatePref',\n }\n\n pref.activeProgressGuide = guide\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isBskyAppStatePref(p))\n .concat(pref)\n })\n }\n\n /**\n * Insert or update a NUX in user prefs\n */\n async bskyAppUpsertNux(nux: Nux) {\n validateNux(nux)\n\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidBskyAppStatePref) || {\n $type: 'app.bsky.actor.defs#bskyAppStatePref',\n }\n\n pref.nuxs = pref.nuxs || []\n\n const existing = pref.nuxs?.find((n) => {\n return n.id === nux.id\n })\n\n let next: AppBskyActorDefs.Nux\n\n if (existing) {\n next = {\n id: existing.id,\n completed: nux.completed,\n data: nux.data,\n expiresAt: nux.expiresAt,\n }\n } else {\n next = nux\n }\n\n // remove duplicates and append\n pref.nuxs = pref.nuxs.filter((n) => n.id !== nux.id).concat(next)\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isBskyAppStatePref(p))\n .concat(pref)\n })\n }\n\n /**\n * Removes NUXs from user preferences.\n */\n async bskyAppRemoveNuxs(ids: string[]) {\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidBskyAppStatePref) || {\n $type: 'app.bsky.actor.defs#bskyAppStatePref',\n }\n\n pref.nuxs = (pref.nuxs || []).filter((nux) => !ids.includes(nux.id))\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isBskyAppStatePref(p))\n .concat(pref)\n })\n }\n\n async setPostInteractionSettings(\n settings: AppBskyActorDefs.PostInteractionSettingsPref,\n ) {\n const result =\n AppBskyActorDefs.validatePostInteractionSettingsPref(settings)\n // Fool-proofing (should not be needed because of type safety)\n if (!result.success) throw result.error\n\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(\n predicate.isValidPostInteractionSettingsPref,\n ) || {\n $type: 'app.bsky.actor.defs#postInteractionSettingsPref',\n }\n\n /**\n * Matches handling of `threadgate.allow` where `undefined` means \"everyone\"\n */\n pref.threadgateAllowRules = settings.threadgateAllowRules\n pref.postgateEmbeddingRules = settings.postgateEmbeddingRules\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isPostInteractionSettingsPref(p))\n .concat(pref)\n })\n }\n\n async setVerificationPrefs(settings: AppBskyActorDefs.VerificationPrefs) {\n const result = AppBskyActorDefs.validateVerificationPrefs(settings)\n // Fool-proofing (should not be needed because of type safety)\n if (!result.success) throw result.error\n\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidVerificationPrefs) || {\n $type: 'app.bsky.actor.defs#verificationPrefs',\n hideBadges: false,\n }\n\n pref.hideBadges = settings.hideBadges\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isVerificationPrefs(p))\n .concat(pref)\n })\n }\n\n //- Private methods\n\n #prefsLock = new AwaitLock()\n\n /**\n * This function updates the preferences of a user and allows for a callback function to be executed\n * before the update.\n * @param cb - cb is a callback function that takes in a single parameter of type\n * AppBskyActorDefs.Preferences and returns either a boolean or void. This callback function is used to\n * update the preferences of the user. The function is called with the current preferences as an\n * argument and if the callback returns false, the preferences are not updated.\n */\n private async updatePreferences(\n cb: (\n prefs: AppBskyActorDefs.Preferences,\n ) => AppBskyActorDefs.Preferences | false,\n ) {\n try {\n await this.#prefsLock.acquireAsync()\n const res = await this.app.bsky.actor.getPreferences({})\n const newPrefs = cb(res.data.preferences)\n if (newPrefs === false) {\n return res.data.preferences\n }\n await this.app.bsky.actor.putPreferences({\n preferences: newPrefs,\n })\n return newPrefs\n } finally {\n this.#prefsLock.release()\n }\n }\n\n private async updateHiddenPost(postUri: string, action: 'hide' | 'unhide') {\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidHiddenPostsPref) || {\n $type: 'app.bsky.actor.defs#hiddenPostsPref',\n items: [],\n }\n\n const hiddenItems = new Set(pref.items)\n\n if (action === 'hide') hiddenItems.add(postUri)\n else hiddenItems.delete(postUri)\n\n pref.items = [...hiddenItems]\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isHiddenPostsPref(p))\n .concat(pref)\n })\n }\n\n /**\n * A helper specifically for updating feed preferences\n */\n private async updateFeedPreferences(\n cb: (\n saved: string[],\n pinned: string[],\n ) => { saved: string[]; pinned: string[] },\n ): Promise<{ saved: string[]; pinned: string[] }> {\n let res\n await this.updatePreferences((prefs) => {\n const feedsPref = prefs.findLast(predicate.isValidSavedFeedsPref) || {\n $type: 'app.bsky.actor.defs#savedFeedsPref',\n saved: [],\n pinned: [],\n }\n\n res = cb(feedsPref.saved, feedsPref.pinned)\n feedsPref.saved = res.saved\n feedsPref.pinned = res.pinned\n\n return prefs\n .filter((pref) => !AppBskyActorDefs.isSavedFeedsPref(pref))\n .concat(feedsPref)\n })\n return res\n }\n\n private async updateSavedFeedsV2Preferences(\n cb: (\n savedFeedsPref: AppBskyActorDefs.SavedFeed[],\n ) => AppBskyActorDefs.SavedFeed[],\n ): Promise<AppBskyActorDefs.SavedFeed[]> {\n let maybeMutatedSavedFeeds: AppBskyActorDefs.SavedFeed[] = []\n\n await this.updatePreferences((prefs) => {\n const existingV2Pref = prefs.findLast(\n predicate.isValidSavedFeedsPrefV2,\n ) || {\n $type: 'app.bsky.actor.defs#savedFeedsPrefV2',\n items: [],\n }\n\n const newSavedFeeds = cb(existingV2Pref.items)\n\n // enforce ordering: pinned first, then saved\n existingV2Pref.items = [...newSavedFeeds].sort((a, b) =>\n // @NOTE: preserve order of items with the same pinned status\n a.pinned === b.pinned ? 0 : a.pinned ? -1 : 1,\n )\n\n // Store the return value\n maybeMutatedSavedFeeds = newSavedFeeds\n\n let updatedPrefs = prefs\n .filter((pref) => !AppBskyActorDefs.isSavedFeedsPrefV2(pref))\n .concat(existingV2Pref)\n\n /*\n * If there's a v2 pref present, it means this account was migrated from v1\n * to v2. During the transition period, we double write v2 prefs back to\n * v1, but NOT the other way around.\n */\n let existingV1Pref = prefs.findLast(predicate.isValidSavedFeedsPref)\n if (existingV1Pref) {\n const { saved, pinned } = existingV1Pref\n const v2Compat = savedFeedsToUriArrays(\n // v1 only supports feeds and lists\n existingV2Pref.items.filter((i) => ['feed', 'list'].includes(i.type)),\n )\n existingV1Pref = {\n ...existingV1Pref,\n saved: Array.from(new Set([...saved, ...v2Compat.saved])),\n pinned: Array.from(new Set([...pinned, ...v2Compat.pinned])),\n }\n updatedPrefs = updatedPrefs\n .filter((pref) => !AppBskyActorDefs.isSavedFeedsPref(pref))\n .concat(existingV1Pref)\n }\n\n return updatedPrefs\n })\n\n return maybeMutatedSavedFeeds\n }\n\n //#endregion\n}\n\n/**\n * Helper to transform the legacy content preferences.\n */\nfunction adjustLegacyContentLabelPref(\n pref: AppBskyActorDefs.ContentLabelPref,\n): AppBskyActorDefs.ContentLabelPref {\n let visibility = pref.visibility\n\n // adjust legacy values\n if (visibility === 'show') {\n visibility = 'ignore'\n }\n\n return { ...pref, visibility }\n}\n\n/**\n * Re-maps legacy labels to new labels on READ. Does not save these changes to\n * the user's preferences.\n */\nfunction remapLegacyLabels(\n labels: BskyPreferences['moderationPrefs']['labels'],\n) {\n const _labels = { ...labels }\n const legacyToNewMap: Record<string, string | undefined> = {\n gore: 'graphic-media',\n nsfw: 'porn',\n suggestive: 'sexual',\n }\n\n for (const labelName in _labels) {\n const newLabelName = legacyToNewMap[labelName]!\n if (newLabelName) {\n _labels[newLabelName] = _labels[labelName]\n }\n }\n\n return _labels\n}\n\n/**\n * A helper to get the currently enabled labelers from the full preferences array\n */\nfunction prefsArrayToLabelerDids(\n prefs: AppBskyActorDefs.Preferences,\n): string[] {\n const labelersPref = prefs.findLast(predicate.isValidLabelersPref)\n let dids: string[] = []\n if (labelersPref) {\n dids = (labelersPref as AppBskyActorDefs.LabelersPref).labelers.map(\n (labeler) => labeler.did,\n )\n }\n return dids\n}\n\nfunction isBskyPrefs(v: any): v is BskyPreferences {\n return (\n v &&\n typeof v === 'object' &&\n 'moderationPrefs' in v &&\n isModPrefs(v.moderationPrefs)\n )\n}\n\nfunction isModPrefs(v: any): v is ModerationPrefs {\n return v && typeof v === 'object' && 'labelers' in v\n}\n\nfunction migrateLegacyMutedWordsItems(items: AppBskyActorDefs.MutedWord[]) {\n return items.map((item) => ({\n ...item,\n id: item.id || TID.nextStr(),\n }))\n}\n\nfunction matchMutedWord(\n existingWord: AppBskyActorDefs.MutedWord,\n newWord: AppBskyActorDefs.MutedWord,\n): boolean {\n // id is undefined in legacy implementation\n const existingId = existingWord.id\n // prefer matching based on id\n const matchById = existingId && existingId === newWord.id\n // handle legacy case where id is not set\n const legacyMatchByValue = !existingId && existingWord.value === newWord.value\n\n return matchById || legacyMatchByValue\n}\n"]}
|
|
@@ -58,6 +58,10 @@ export declare const schemaDict: {
|
|
|
58
58
|
readonly type: "ref";
|
|
59
59
|
readonly ref: "lex:app.bsky.actor.defs#statusView";
|
|
60
60
|
};
|
|
61
|
+
readonly debug: {
|
|
62
|
+
readonly type: "unknown";
|
|
63
|
+
readonly description: "Debug information for internal development";
|
|
64
|
+
};
|
|
61
65
|
};
|
|
62
66
|
};
|
|
63
67
|
readonly profileView: {
|
|
@@ -120,6 +124,10 @@ export declare const schemaDict: {
|
|
|
120
124
|
readonly type: "ref";
|
|
121
125
|
readonly ref: "lex:app.bsky.actor.defs#statusView";
|
|
122
126
|
};
|
|
127
|
+
readonly debug: {
|
|
128
|
+
readonly type: "unknown";
|
|
129
|
+
readonly description: "Debug information for internal development";
|
|
130
|
+
};
|
|
123
131
|
};
|
|
124
132
|
};
|
|
125
133
|
readonly profileViewDetailed: {
|
|
@@ -207,6 +215,10 @@ export declare const schemaDict: {
|
|
|
207
215
|
readonly type: "ref";
|
|
208
216
|
readonly ref: "lex:app.bsky.actor.defs#statusView";
|
|
209
217
|
};
|
|
218
|
+
readonly debug: {
|
|
219
|
+
readonly type: "unknown";
|
|
220
|
+
readonly description: "Debug information for internal development";
|
|
221
|
+
};
|
|
210
222
|
};
|
|
211
223
|
};
|
|
212
224
|
readonly profileAssociated: {
|
|
@@ -1723,6 +1735,10 @@ export declare const schemaDict: {
|
|
|
1723
1735
|
readonly type: "ref";
|
|
1724
1736
|
readonly ref: "lex:app.bsky.feed.defs#threadgateView";
|
|
1725
1737
|
};
|
|
1738
|
+
readonly debug: {
|
|
1739
|
+
readonly type: "unknown";
|
|
1740
|
+
readonly description: "Debug information for internal development";
|
|
1741
|
+
};
|
|
1726
1742
|
};
|
|
1727
1743
|
};
|
|
1728
1744
|
readonly viewerState: {
|
|
@@ -3809,6 +3825,10 @@ export declare const schemaDict: {
|
|
|
3809
3825
|
readonly type: "string";
|
|
3810
3826
|
readonly format: "datetime";
|
|
3811
3827
|
};
|
|
3828
|
+
readonly via: {
|
|
3829
|
+
readonly type: "ref";
|
|
3830
|
+
readonly ref: "lex:com.atproto.repo.strongRef";
|
|
3831
|
+
};
|
|
3812
3832
|
};
|
|
3813
3833
|
};
|
|
3814
3834
|
};
|
|
@@ -17528,6 +17548,10 @@ export declare const schemas: ({
|
|
|
17528
17548
|
readonly type: "ref";
|
|
17529
17549
|
readonly ref: "lex:app.bsky.actor.defs#statusView";
|
|
17530
17550
|
};
|
|
17551
|
+
readonly debug: {
|
|
17552
|
+
readonly type: "unknown";
|
|
17553
|
+
readonly description: "Debug information for internal development";
|
|
17554
|
+
};
|
|
17531
17555
|
};
|
|
17532
17556
|
};
|
|
17533
17557
|
readonly profileView: {
|
|
@@ -17590,6 +17614,10 @@ export declare const schemas: ({
|
|
|
17590
17614
|
readonly type: "ref";
|
|
17591
17615
|
readonly ref: "lex:app.bsky.actor.defs#statusView";
|
|
17592
17616
|
};
|
|
17617
|
+
readonly debug: {
|
|
17618
|
+
readonly type: "unknown";
|
|
17619
|
+
readonly description: "Debug information for internal development";
|
|
17620
|
+
};
|
|
17593
17621
|
};
|
|
17594
17622
|
};
|
|
17595
17623
|
readonly profileViewDetailed: {
|
|
@@ -17677,6 +17705,10 @@ export declare const schemas: ({
|
|
|
17677
17705
|
readonly type: "ref";
|
|
17678
17706
|
readonly ref: "lex:app.bsky.actor.defs#statusView";
|
|
17679
17707
|
};
|
|
17708
|
+
readonly debug: {
|
|
17709
|
+
readonly type: "unknown";
|
|
17710
|
+
readonly description: "Debug information for internal development";
|
|
17711
|
+
};
|
|
17680
17712
|
};
|
|
17681
17713
|
};
|
|
17682
17714
|
readonly profileAssociated: {
|
|
@@ -19173,6 +19205,10 @@ export declare const schemas: ({
|
|
|
19173
19205
|
readonly type: "ref";
|
|
19174
19206
|
readonly ref: "lex:app.bsky.feed.defs#threadgateView";
|
|
19175
19207
|
};
|
|
19208
|
+
readonly debug: {
|
|
19209
|
+
readonly type: "unknown";
|
|
19210
|
+
readonly description: "Debug information for internal development";
|
|
19211
|
+
};
|
|
19176
19212
|
};
|
|
19177
19213
|
};
|
|
19178
19214
|
readonly viewerState: {
|
|
@@ -21232,6 +21268,10 @@ export declare const schemas: ({
|
|
|
21232
21268
|
readonly type: "string";
|
|
21233
21269
|
readonly format: "datetime";
|
|
21234
21270
|
};
|
|
21271
|
+
readonly via: {
|
|
21272
|
+
readonly type: "ref";
|
|
21273
|
+
readonly ref: "lex:com.atproto.repo.strongRef";
|
|
21274
|
+
};
|
|
21235
21275
|
};
|
|
21236
21276
|
};
|
|
21237
21277
|
};
|