@atproto/bsky 0.0.133 → 0.0.135

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/api/app/bsky/unspecced/getSuggestedStarterPacks.d.ts +4 -0
  3. package/dist/api/app/bsky/unspecced/getSuggestedStarterPacks.d.ts.map +1 -0
  4. package/dist/api/app/bsky/unspecced/getSuggestedStarterPacks.js +101 -0
  5. package/dist/api/app/bsky/unspecced/getSuggestedStarterPacks.js.map +1 -0
  6. package/dist/api/app/bsky/unspecced/getTrends.d.ts +4 -0
  7. package/dist/api/app/bsky/unspecced/getTrends.d.ts.map +1 -0
  8. package/dist/api/app/bsky/unspecced/getTrends.js +96 -0
  9. package/dist/api/app/bsky/unspecced/getTrends.js.map +1 -0
  10. package/dist/api/index.d.ts.map +1 -1
  11. package/dist/api/index.js +4 -0
  12. package/dist/api/index.js.map +1 -1
  13. package/dist/lexicon/index.d.ts +10 -0
  14. package/dist/lexicon/index.d.ts.map +1 -1
  15. package/dist/lexicon/index.js +20 -0
  16. package/dist/lexicon/index.js.map +1 -1
  17. package/dist/lexicon/lexicons.d.ts +516 -0
  18. package/dist/lexicon/lexicons.d.ts.map +1 -1
  19. package/dist/lexicon/lexicons.js +277 -0
  20. package/dist/lexicon/lexicons.js.map +1 -1
  21. package/dist/lexicon/types/app/bsky/unspecced/defs.d.ts +27 -0
  22. package/dist/lexicon/types/app/bsky/unspecced/defs.d.ts.map +1 -1
  23. package/dist/lexicon/types/app/bsky/unspecced/defs.js +18 -0
  24. package/dist/lexicon/types/app/bsky/unspecced/defs.js.map +1 -1
  25. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.d.ts +36 -0
  26. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.d.ts.map +1 -0
  27. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.js +7 -0
  28. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.js.map +1 -0
  29. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.d.ts +37 -0
  30. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.d.ts.map +1 -0
  31. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.js +7 -0
  32. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.js.map +1 -0
  33. package/dist/lexicon/types/app/bsky/unspecced/getTrends.d.ts +36 -0
  34. package/dist/lexicon/types/app/bsky/unspecced/getTrends.d.ts.map +1 -0
  35. package/dist/lexicon/types/app/bsky/unspecced/getTrends.js +7 -0
  36. package/dist/lexicon/types/app/bsky/unspecced/getTrends.js.map +1 -0
  37. package/dist/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.d.ts +38 -0
  38. package/dist/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.d.ts.map +1 -0
  39. package/dist/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.js +7 -0
  40. package/dist/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.js.map +1 -0
  41. package/dist/lexicon/types/com/atproto/admin/updateAccountSigningKey.d.ts +31 -0
  42. package/dist/lexicon/types/com/atproto/admin/updateAccountSigningKey.d.ts.map +1 -0
  43. package/dist/lexicon/types/com/atproto/admin/updateAccountSigningKey.js +7 -0
  44. package/dist/lexicon/types/com/atproto/admin/updateAccountSigningKey.js.map +1 -0
  45. package/package.json +9 -9
  46. package/src/api/app/bsky/unspecced/getSuggestedStarterPacks.ts +147 -0
  47. package/src/api/app/bsky/unspecced/getTrends.ts +144 -0
  48. package/src/api/index.ts +4 -0
  49. package/src/lexicon/index.ts +62 -0
  50. package/src/lexicon/lexicons.ts +285 -0
  51. package/src/lexicon/types/app/bsky/unspecced/defs.ts +45 -0
  52. package/src/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.ts +54 -0
  53. package/src/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.ts +55 -0
  54. package/src/lexicon/types/app/bsky/unspecced/getTrends.ts +54 -0
  55. package/src/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.ts +56 -0
  56. package/src/lexicon/types/com/atproto/admin/updateAccountSigningKey.ts +48 -0
  57. package/tests/seed/get-suggested-starter-packs.ts +63 -0
  58. package/tests/seed/get-trends.ts +70 -0
  59. package/tests/views/get-suggested-starter-packs.test.ts +128 -0
  60. package/tests/views/get-trends.test.ts +133 -0
  61. package/tsconfig.build.tsbuildinfo +1 -1
  62. package/tsconfig.tests.tsbuildinfo +1 -1
@@ -2,6 +2,7 @@
2
2
  * GENERATED CODE - DO NOT MODIFY
3
3
  */
4
4
  import { type ValidationResult } from '@atproto/lexicon';
5
+ import type * as AppBskyActorDefs from '../actor/defs.js';
5
6
  export interface SkeletonSearchPost {
6
7
  $type?: 'app.bsky.unspecced.defs#skeletonSearchPost';
7
8
  uri: string;
@@ -29,4 +30,30 @@ export interface TrendingTopic {
29
30
  }
30
31
  export declare function isTrendingTopic<V>(v: V): v is import("../../../../util").$TypedObject<V, "app.bsky.unspecced.defs", "trendingTopic">;
31
32
  export declare function validateTrendingTopic<V>(v: V): ValidationResult<TrendingTopic & V>;
33
+ export interface SkeletonTrend {
34
+ $type?: 'app.bsky.unspecced.defs#skeletonTrend';
35
+ topic: string;
36
+ displayName: string;
37
+ link: string;
38
+ startedAt: string;
39
+ postCount: number;
40
+ status?: 'hot' | (string & {});
41
+ category?: string;
42
+ dids: string[];
43
+ }
44
+ export declare function isSkeletonTrend<V>(v: V): v is import("../../../../util").$TypedObject<V, "app.bsky.unspecced.defs", "skeletonTrend">;
45
+ export declare function validateSkeletonTrend<V>(v: V): ValidationResult<SkeletonTrend & V>;
46
+ export interface TrendView {
47
+ $type?: 'app.bsky.unspecced.defs#trendView';
48
+ topic: string;
49
+ displayName: string;
50
+ link: string;
51
+ startedAt: string;
52
+ postCount: number;
53
+ status?: 'hot' | (string & {});
54
+ category?: string;
55
+ actors: AppBskyActorDefs.ProfileViewBasic[];
56
+ }
57
+ export declare function isTrendView<V>(v: V): v is import("../../../../util").$TypedObject<V, "app.bsky.unspecced.defs", "trendView">;
58
+ export declare function validateTrendView<V>(v: V): ValidationResult<TrendView & V>;
32
59
  //# sourceMappingURL=defs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"defs.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/unspecced/defs.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,gBAAgB,EAAW,MAAM,kBAAkB,CAAA;AAajE,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,4CAA4C,CAAA;IACpD,GAAG,EAAE,MAAM,CAAA;CACZ;AAID,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,oGAE3C;AAED,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,4CAEjD;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,6CAA6C,CAAA;IACrD,GAAG,EAAE,MAAM,CAAA;CACZ;AAID,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,qGAE5C;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,6CAElD;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,mDAAmD,CAAA;IAC3D,GAAG,EAAE,MAAM,CAAA;CACZ;AAID,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,2GAElD;AAED,wBAAgB,iCAAiC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mDAMxD;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,uCAAuC,CAAA;IAC/C,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;CACb;AAID,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,+FAEtC;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,uCAE5C"}
1
+ {"version":3,"file":"defs.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/unspecced/defs.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,gBAAgB,EAAW,MAAM,kBAAkB,CAAA;AAQjE,OAAO,KAAK,KAAK,gBAAgB,MAAM,kBAAkB,CAAA;AAMzD,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,4CAA4C,CAAA;IACpD,GAAG,EAAE,MAAM,CAAA;CACZ;AAID,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,oGAE3C;AAED,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,4CAEjD;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,6CAA6C,CAAA;IACrD,GAAG,EAAE,MAAM,CAAA;CACZ;AAID,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,qGAE5C;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,6CAElD;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,mDAAmD,CAAA;IAC3D,GAAG,EAAE,MAAM,CAAA;CACZ;AAID,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,2GAElD;AAED,wBAAgB,iCAAiC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mDAMxD;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,uCAAuC,CAAA;IAC/C,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;CACb;AAID,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,+FAEtC;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,uCAE5C;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,uCAAuC,CAAA;IAC/C,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,EAAE,CAAA;CACf;AAID,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,+FAEtC;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,uCAE5C;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,mCAAmC,CAAA;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,CAAA;CAC5C;AAID,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,2FAElC;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mCAExC"}
@@ -8,6 +8,10 @@ exports.isSkeletonSearchStarterPack = isSkeletonSearchStarterPack;
8
8
  exports.validateSkeletonSearchStarterPack = validateSkeletonSearchStarterPack;
9
9
  exports.isTrendingTopic = isTrendingTopic;
10
10
  exports.validateTrendingTopic = validateTrendingTopic;
11
+ exports.isSkeletonTrend = isSkeletonTrend;
12
+ exports.validateSkeletonTrend = validateSkeletonTrend;
13
+ exports.isTrendView = isTrendView;
14
+ exports.validateTrendView = validateTrendView;
11
15
  const lexicons_1 = require("../../../../lexicons");
12
16
  const util_1 = require("../../../../util");
13
17
  const is$typed = util_1.is$typed, validate = lexicons_1.validate;
@@ -40,4 +44,18 @@ function isTrendingTopic(v) {
40
44
  function validateTrendingTopic(v) {
41
45
  return validate(v, id, hashTrendingTopic);
42
46
  }
47
+ const hashSkeletonTrend = 'skeletonTrend';
48
+ function isSkeletonTrend(v) {
49
+ return is$typed(v, id, hashSkeletonTrend);
50
+ }
51
+ function validateSkeletonTrend(v) {
52
+ return validate(v, id, hashSkeletonTrend);
53
+ }
54
+ const hashTrendView = 'trendView';
55
+ function isTrendView(v) {
56
+ return is$typed(v, id, hashTrendView);
57
+ }
58
+ function validateTrendView(v) {
59
+ return validate(v, id, hashTrendView);
60
+ }
43
61
  //# sourceMappingURL=defs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defs.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/unspecced/defs.ts"],"names":[],"mappings":";;AAuBA,oDAEC;AAED,gEAEC;AASD,sDAEC;AAED,kEAEC;AASD,kEAEC;AAED,8EAMC;AAYD,0CAEC;AAED,sDAEC;AA5ED,mDAA4D;AAC5D,2CAIyB;AAEzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,yBAAyB,CAAA;AAOpC,MAAM,sBAAsB,GAAG,oBAAoB,CAAA;AAEnD,SAAgB,oBAAoB,CAAI,CAAI;IAC1C,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,sBAAsB,CAAC,CAAA;AAChD,CAAC;AAED,SAAgB,0BAA0B,CAAI,CAAI;IAChD,OAAO,QAAQ,CAAyB,CAAC,EAAE,EAAE,EAAE,sBAAsB,CAAC,CAAA;AACxE,CAAC;AAOD,MAAM,uBAAuB,GAAG,qBAAqB,CAAA;AAErD,SAAgB,qBAAqB,CAAI,CAAI;IAC3C,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,uBAAuB,CAAC,CAAA;AACjD,CAAC;AAED,SAAgB,2BAA2B,CAAI,CAAI;IACjD,OAAO,QAAQ,CAA0B,CAAC,EAAE,EAAE,EAAE,uBAAuB,CAAC,CAAA;AAC1E,CAAC;AAOD,MAAM,6BAA6B,GAAG,2BAA2B,CAAA;AAEjE,SAAgB,2BAA2B,CAAI,CAAI;IACjD,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,6BAA6B,CAAC,CAAA;AACvD,CAAC;AAED,SAAgB,iCAAiC,CAAI,CAAI;IACvD,OAAO,QAAQ,CACb,CAAC,EACD,EAAE,EACF,6BAA6B,CAC9B,CAAA;AACH,CAAC;AAUD,MAAM,iBAAiB,GAAG,eAAe,CAAA;AAEzC,SAAgB,eAAe,CAAI,CAAI;IACrC,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAA;AAC3C,CAAC;AAED,SAAgB,qBAAqB,CAAI,CAAI;IAC3C,OAAO,QAAQ,CAAoB,CAAC,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAA;AAC9D,CAAC"}
1
+ {"version":3,"file":"defs.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/unspecced/defs.ts"],"names":[],"mappings":";;AAwBA,oDAEC;AAED,gEAEC;AASD,sDAEC;AAED,kEAEC;AASD,kEAEC;AAED,8EAMC;AAYD,0CAEC;AAED,sDAEC;AAgBD,0CAEC;AAED,sDAEC;AAgBD,kCAEC;AAED,8CAEC;AAzHD,mDAA4D;AAC5D,2CAIyB;AAGzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,yBAAyB,CAAA;AAOpC,MAAM,sBAAsB,GAAG,oBAAoB,CAAA;AAEnD,SAAgB,oBAAoB,CAAI,CAAI;IAC1C,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,sBAAsB,CAAC,CAAA;AAChD,CAAC;AAED,SAAgB,0BAA0B,CAAI,CAAI;IAChD,OAAO,QAAQ,CAAyB,CAAC,EAAE,EAAE,EAAE,sBAAsB,CAAC,CAAA;AACxE,CAAC;AAOD,MAAM,uBAAuB,GAAG,qBAAqB,CAAA;AAErD,SAAgB,qBAAqB,CAAI,CAAI;IAC3C,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,uBAAuB,CAAC,CAAA;AACjD,CAAC;AAED,SAAgB,2BAA2B,CAAI,CAAI;IACjD,OAAO,QAAQ,CAA0B,CAAC,EAAE,EAAE,EAAE,uBAAuB,CAAC,CAAA;AAC1E,CAAC;AAOD,MAAM,6BAA6B,GAAG,2BAA2B,CAAA;AAEjE,SAAgB,2BAA2B,CAAI,CAAI;IACjD,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,6BAA6B,CAAC,CAAA;AACvD,CAAC;AAED,SAAgB,iCAAiC,CAAI,CAAI;IACvD,OAAO,QAAQ,CACb,CAAC,EACD,EAAE,EACF,6BAA6B,CAC9B,CAAA;AACH,CAAC;AAUD,MAAM,iBAAiB,GAAG,eAAe,CAAA;AAEzC,SAAgB,eAAe,CAAI,CAAI;IACrC,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAA;AAC3C,CAAC;AAED,SAAgB,qBAAqB,CAAI,CAAI;IAC3C,OAAO,QAAQ,CAAoB,CAAC,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAA;AAC9D,CAAC;AAcD,MAAM,iBAAiB,GAAG,eAAe,CAAA;AAEzC,SAAgB,eAAe,CAAI,CAAI;IACrC,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAA;AAC3C,CAAC;AAED,SAAgB,qBAAqB,CAAI,CAAI;IAC3C,OAAO,QAAQ,CAAoB,CAAC,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAA;AAC9D,CAAC;AAcD,MAAM,aAAa,GAAG,WAAW,CAAA;AAEjC,SAAgB,WAAW,CAAI,CAAI;IACjC,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC,CAAA;AACvC,CAAC;AAED,SAAgB,iBAAiB,CAAI,CAAI;IACvC,OAAO,QAAQ,CAAgB,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC,CAAA;AACtD,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import express from 'express';
5
+ import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server';
6
+ import type * as AppBskyGraphDefs from '../graph/defs.js';
7
+ export interface QueryParams {
8
+ limit: number;
9
+ }
10
+ export type InputSchema = undefined;
11
+ export interface OutputSchema {
12
+ starterPacks: AppBskyGraphDefs.StarterPackView[];
13
+ }
14
+ export type HandlerInput = undefined;
15
+ export interface HandlerSuccess {
16
+ encoding: 'application/json';
17
+ body: OutputSchema;
18
+ headers?: {
19
+ [key: string]: string;
20
+ };
21
+ }
22
+ export interface HandlerError {
23
+ status: number;
24
+ message?: string;
25
+ }
26
+ export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough;
27
+ export type HandlerReqCtx<HA extends HandlerAuth = never> = {
28
+ auth: HA;
29
+ params: QueryParams;
30
+ input: HandlerInput;
31
+ req: express.Request;
32
+ res: express.Response;
33
+ resetRouteRateLimits: () => Promise<void>;
34
+ };
35
+ export type Handler<HA extends HandlerAuth = never> = (ctx: HandlerReqCtx<HA>) => Promise<HandlerOutput> | HandlerOutput;
36
+ //# sourceMappingURL=getSuggestedStarterPacks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSuggestedStarterPacks.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAA;AAS7B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,KAAK,gBAAgB,MAAM,kBAAkB,CAAA;AAMzD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,gBAAgB,CAAC,eAAe,EAAE,CAAA;CACjD;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,CAAA;AAEpC,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,kBAAkB,CAAA;AAC9E,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI;IAC1D,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAA;IACrB,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1C,CAAA;AACD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI,CACpD,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lexicons_1 = require("../../../../lexicons");
4
+ const util_1 = require("../../../../util");
5
+ const is$typed = util_1.is$typed, validate = lexicons_1.validate;
6
+ const id = 'app.bsky.unspecced.getSuggestedStarterPacks';
7
+ //# sourceMappingURL=getSuggestedStarterPacks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSuggestedStarterPacks.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.ts"],"names":[],"mappings":";;AAMA,mDAA4D;AAC5D,2CAIyB;AAIzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,6CAA6C,CAAA"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import express from 'express';
5
+ import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server';
6
+ export interface QueryParams {
7
+ /** DID of the account making the request (not included for public/unauthenticated queries). */
8
+ viewer?: string;
9
+ limit: number;
10
+ }
11
+ export type InputSchema = undefined;
12
+ export interface OutputSchema {
13
+ starterPacks: string[];
14
+ }
15
+ export type HandlerInput = undefined;
16
+ export interface HandlerSuccess {
17
+ encoding: 'application/json';
18
+ body: OutputSchema;
19
+ headers?: {
20
+ [key: string]: string;
21
+ };
22
+ }
23
+ export interface HandlerError {
24
+ status: number;
25
+ message?: string;
26
+ }
27
+ export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough;
28
+ export type HandlerReqCtx<HA extends HandlerAuth = never> = {
29
+ auth: HA;
30
+ params: QueryParams;
31
+ input: HandlerInput;
32
+ req: express.Request;
33
+ res: express.Response;
34
+ resetRouteRateLimits: () => Promise<void>;
35
+ };
36
+ export type Handler<HA extends HandlerAuth = never> = (ctx: HandlerReqCtx<HA>) => Promise<HandlerOutput> | HandlerOutput;
37
+ //# sourceMappingURL=getSuggestedStarterPacksSkeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSuggestedStarterPacksSkeleton.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAA;AAS7B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAMtE,MAAM,WAAW,WAAW;IAC1B,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,CAAA;AAEpC,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,kBAAkB,CAAA;AAC9E,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI;IAC1D,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAA;IACrB,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1C,CAAA;AACD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI,CACpD,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lexicons_1 = require("../../../../lexicons");
4
+ const util_1 = require("../../../../util");
5
+ const is$typed = util_1.is$typed, validate = lexicons_1.validate;
6
+ const id = 'app.bsky.unspecced.getSuggestedStarterPacksSkeleton';
7
+ //# sourceMappingURL=getSuggestedStarterPacksSkeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSuggestedStarterPacksSkeleton.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.ts"],"names":[],"mappings":";;AAMA,mDAA4D;AAC5D,2CAIyB;AAGzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,qDAAqD,CAAA"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import express from 'express';
5
+ import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server';
6
+ import type * as AppBskyUnspeccedDefs from './defs.js';
7
+ export interface QueryParams {
8
+ limit: number;
9
+ }
10
+ export type InputSchema = undefined;
11
+ export interface OutputSchema {
12
+ trends: AppBskyUnspeccedDefs.TrendView[];
13
+ }
14
+ export type HandlerInput = undefined;
15
+ export interface HandlerSuccess {
16
+ encoding: 'application/json';
17
+ body: OutputSchema;
18
+ headers?: {
19
+ [key: string]: string;
20
+ };
21
+ }
22
+ export interface HandlerError {
23
+ status: number;
24
+ message?: string;
25
+ }
26
+ export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough;
27
+ export type HandlerReqCtx<HA extends HandlerAuth = never> = {
28
+ auth: HA;
29
+ params: QueryParams;
30
+ input: HandlerInput;
31
+ req: express.Request;
32
+ res: express.Response;
33
+ resetRouteRateLimits: () => Promise<void>;
34
+ };
35
+ export type Handler<HA extends HandlerAuth = never> = (ctx: HandlerReqCtx<HA>) => Promise<HandlerOutput> | HandlerOutput;
36
+ //# sourceMappingURL=getTrends.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTrends.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/unspecced/getTrends.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAA;AAS7B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,KAAK,oBAAoB,MAAM,WAAW,CAAA;AAMtD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,oBAAoB,CAAC,SAAS,EAAE,CAAA;CACzC;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,CAAA;AAEpC,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,kBAAkB,CAAA;AAC9E,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI;IAC1D,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAA;IACrB,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1C,CAAA;AACD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI,CACpD,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lexicons_1 = require("../../../../lexicons");
4
+ const util_1 = require("../../../../util");
5
+ const is$typed = util_1.is$typed, validate = lexicons_1.validate;
6
+ const id = 'app.bsky.unspecced.getTrends';
7
+ //# sourceMappingURL=getTrends.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTrends.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/unspecced/getTrends.ts"],"names":[],"mappings":";;AAMA,mDAA4D;AAC5D,2CAIyB;AAIzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,8BAA8B,CAAA"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import express from 'express';
5
+ import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server';
6
+ import type * as AppBskyUnspeccedDefs from './defs.js';
7
+ export interface QueryParams {
8
+ /** DID of the account making the request (not included for public/unauthenticated queries). */
9
+ viewer?: string;
10
+ limit: number;
11
+ }
12
+ export type InputSchema = undefined;
13
+ export interface OutputSchema {
14
+ trends: AppBskyUnspeccedDefs.SkeletonTrend[];
15
+ }
16
+ export type HandlerInput = undefined;
17
+ export interface HandlerSuccess {
18
+ encoding: 'application/json';
19
+ body: OutputSchema;
20
+ headers?: {
21
+ [key: string]: string;
22
+ };
23
+ }
24
+ export interface HandlerError {
25
+ status: number;
26
+ message?: string;
27
+ }
28
+ export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough;
29
+ export type HandlerReqCtx<HA extends HandlerAuth = never> = {
30
+ auth: HA;
31
+ params: QueryParams;
32
+ input: HandlerInput;
33
+ req: express.Request;
34
+ res: express.Response;
35
+ resetRouteRateLimits: () => Promise<void>;
36
+ };
37
+ export type Handler<HA extends HandlerAuth = never> = (ctx: HandlerReqCtx<HA>) => Promise<HandlerOutput> | HandlerOutput;
38
+ //# sourceMappingURL=getTrendsSkeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTrendsSkeleton.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAA;AAS7B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,KAAK,oBAAoB,MAAM,WAAW,CAAA;AAMtD,MAAM,WAAW,WAAW;IAC1B,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,oBAAoB,CAAC,aAAa,EAAE,CAAA;CAC7C;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,CAAA;AAEpC,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,kBAAkB,CAAA;AAC9E,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI;IAC1D,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAA;IACrB,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1C,CAAA;AACD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI,CACpD,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lexicons_1 = require("../../../../lexicons");
4
+ const util_1 = require("../../../../util");
5
+ const is$typed = util_1.is$typed, validate = lexicons_1.validate;
6
+ const id = 'app.bsky.unspecced.getTrendsSkeleton';
7
+ //# sourceMappingURL=getTrendsSkeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTrendsSkeleton.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.ts"],"names":[],"mappings":";;AAMA,mDAA4D;AAC5D,2CAIyB;AAIzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,sCAAsC,CAAA"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import express from 'express';
5
+ import { HandlerAuth } from '@atproto/xrpc-server';
6
+ export interface QueryParams {
7
+ }
8
+ export interface InputSchema {
9
+ did: string;
10
+ /** Did-key formatted public key */
11
+ signingKey: string;
12
+ }
13
+ export interface HandlerInput {
14
+ encoding: 'application/json';
15
+ body: InputSchema;
16
+ }
17
+ export interface HandlerError {
18
+ status: number;
19
+ message?: string;
20
+ }
21
+ export type HandlerOutput = HandlerError | void;
22
+ export type HandlerReqCtx<HA extends HandlerAuth = never> = {
23
+ auth: HA;
24
+ params: QueryParams;
25
+ input: HandlerInput;
26
+ req: express.Request;
27
+ res: express.Response;
28
+ resetRouteRateLimits: () => Promise<void>;
29
+ };
30
+ export type Handler<HA extends HandlerAuth = never> = (ctx: HandlerReqCtx<HA>) => Promise<HandlerOutput> | HandlerOutput;
31
+ //# sourceMappingURL=updateAccountSigningKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateAccountSigningKey.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/admin/updateAccountSigningKey.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAA;AAS7B,OAAO,EAAE,WAAW,EAAsB,MAAM,sBAAsB,CAAA;AAMtE,MAAM,WAAW,WAAW;CAAG;AAE/B,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,IAAI,CAAA;AAC/C,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI;IAC1D,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAA;IACrB,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1C,CAAA;AACD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI,CACpD,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lexicons_1 = require("../../../../lexicons");
4
+ const util_1 = require("../../../../util");
5
+ const is$typed = util_1.is$typed, validate = lexicons_1.validate;
6
+ const id = 'com.atproto.admin.updateAccountSigningKey';
7
+ //# sourceMappingURL=updateAccountSigningKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateAccountSigningKey.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/admin/updateAccountSigningKey.ts"],"names":[],"mappings":";;AAMA,mDAA4D;AAC5D,2CAIyB;AAGzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,2CAA2C,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/bsky",
3
- "version": "0.0.133",
3
+ "version": "0.0.135",
4
4
  "license": "MIT",
5
5
  "description": "Reference implementation of app.bsky App View (Bluesky API)",
6
6
  "keywords": [
@@ -49,17 +49,17 @@
49
49
  "uint8arrays": "3.0.0",
50
50
  "undici": "^6.19.8",
51
51
  "@atproto-labs/fetch-node": "0.1.8",
52
- "@atproto-labs/xrpc-utils": "0.0.9",
53
- "@atproto/api": "^0.14.16",
54
- "@atproto/common": "^0.4.8",
52
+ "@atproto-labs/xrpc-utils": "0.0.10",
53
+ "@atproto/api": "^0.14.18",
54
+ "@atproto/common": "^0.4.9",
55
55
  "@atproto/crypto": "^0.4.4",
56
56
  "@atproto/did": "^0.1.5",
57
57
  "@atproto/identity": "^0.4.6",
58
58
  "@atproto/lexicon": "^0.4.9",
59
- "@atproto/repo": "^0.7.2",
60
- "@atproto/sync": "^0.1.18",
59
+ "@atproto/repo": "^0.7.3",
60
+ "@atproto/sync": "^0.1.19",
61
61
  "@atproto/syntax": "^0.4.0",
62
- "@atproto/xrpc-server": "^0.7.13"
62
+ "@atproto/xrpc-server": "^0.7.14"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@bufbuild/buf": "^1.28.1",
@@ -74,9 +74,9 @@
74
74
  "jest": "^28.1.2",
75
75
  "ts-node": "^10.8.2",
76
76
  "typescript": "^5.6.3",
77
- "@atproto/api": "^0.14.16",
77
+ "@atproto/api": "^0.14.18",
78
78
  "@atproto/lex-cli": "^0.7.1",
79
- "@atproto/pds": "^0.4.117",
79
+ "@atproto/pds": "^0.4.119",
80
80
  "@atproto/xrpc": "^0.6.11"
81
81
  },
82
82
  "scripts": {
@@ -0,0 +1,147 @@
1
+ import AtpAgent, { AtUri } from '@atproto/api'
2
+ import { dedupeStrs, mapDefined, noUndefinedVals } from '@atproto/common'
3
+ import { InternalServerError } from '@atproto/xrpc-server'
4
+ import { AppContext } from '../../../../context'
5
+ import {
6
+ HydrateCtx,
7
+ Hydrator,
8
+ mergeManyStates,
9
+ } from '../../../../hydration/hydrator'
10
+ import { Server } from '../../../../lexicon'
11
+ import { QueryParams } from '../../../../lexicon/types/app/bsky/unspecced/getTrendingTopics'
12
+ import {
13
+ HydrationFnInput,
14
+ PresentationFnInput,
15
+ RulesFnInput,
16
+ SkeletonFnInput,
17
+ createPipeline,
18
+ } from '../../../../pipeline'
19
+ import { Views } from '../../../../views'
20
+
21
+ export default function (server: Server, ctx: AppContext) {
22
+ const getTrends = createPipeline(skeleton, hydration, noBlocks, presentation)
23
+ server.app.bsky.unspecced.getSuggestedStarterPacks({
24
+ auth: ctx.authVerifier.standardOptional,
25
+ handler: async ({ auth, params, req }) => {
26
+ const viewer = auth.credentials.iss
27
+ const labelers = ctx.reqLabelers(req)
28
+ const hydrateCtx = await ctx.hydrator.createContext({ labelers, viewer })
29
+ const headers = noUndefinedVals({
30
+ 'accept-language': req.headers['accept-language'],
31
+ 'x-bsky-topics': Array.isArray(req.headers['x-bsky-topics'])
32
+ ? req.headers['x-bsky-topics'].join(',')
33
+ : req.headers['x-bsky-topics'],
34
+ })
35
+ const { ...result } = await getTrends(
36
+ {
37
+ ...params,
38
+ viewer: viewer ?? undefined,
39
+ hydrateCtx: hydrateCtx.copy({ viewer }),
40
+ headers,
41
+ },
42
+ ctx,
43
+ )
44
+ return {
45
+ encoding: 'application/json',
46
+ body: result,
47
+ }
48
+ },
49
+ })
50
+ }
51
+
52
+ const skeleton = async (input: SkeletonFnInput<Context, Params>) => {
53
+ const { params, ctx } = input
54
+ if (ctx.topicsAgent) {
55
+ const res =
56
+ await ctx.topicsAgent.app.bsky.unspecced.getSuggestedStarterPacksSkeleton(
57
+ {
58
+ limit: params.limit,
59
+ viewer: params.viewer,
60
+ },
61
+ {
62
+ headers: params.headers,
63
+ },
64
+ )
65
+
66
+ return res.data
67
+ } else {
68
+ throw new InternalServerError('Topics agent not available')
69
+ }
70
+ }
71
+
72
+ const hydration = async (
73
+ input: HydrationFnInput<Context, Params, SkeletonState>,
74
+ ) => {
75
+ const { ctx, params, skeleton } = input
76
+ let dids: string[] = []
77
+ for (const uri of skeleton.starterPacks) {
78
+ let aturi: AtUri | undefined
79
+ try {
80
+ aturi = new AtUri(uri)
81
+ } catch {
82
+ continue
83
+ }
84
+ dids.push(aturi.hostname)
85
+ }
86
+ dids = dedupeStrs(dids)
87
+ const pairs: Map<string, string[]> = new Map()
88
+ if (params.viewer) {
89
+ pairs.set(params.viewer, dids)
90
+ }
91
+ const [starterPacksState, bidirectionalBlocks] = await Promise.all([
92
+ ctx.hydrator.hydrateStarterPacks(skeleton.starterPacks, params.hydrateCtx),
93
+ ctx.hydrator.hydrateBidirectionalBlocks(pairs),
94
+ ])
95
+
96
+ return mergeManyStates(starterPacksState, { bidirectionalBlocks })
97
+ }
98
+
99
+ const noBlocks = (input: RulesFnInput<Context, Params, SkeletonState>) => {
100
+ const { skeleton, params, hydration } = input
101
+
102
+ if (!params.viewer) {
103
+ return skeleton
104
+ }
105
+
106
+ const blocks = hydration.bidirectionalBlocks?.get(params.viewer)
107
+ const filteredSkeleton: SkeletonState = {
108
+ starterPacks: skeleton.starterPacks.filter((uri) => {
109
+ let aturi: AtUri | undefined
110
+ try {
111
+ aturi = new AtUri(uri)
112
+ } catch {
113
+ return false
114
+ }
115
+ return !blocks?.get(aturi.hostname)
116
+ }),
117
+ }
118
+
119
+ return filteredSkeleton
120
+ }
121
+
122
+ const presentation = (
123
+ input: PresentationFnInput<Context, Params, SkeletonState>,
124
+ ) => {
125
+ const { ctx, skeleton, hydration } = input
126
+
127
+ return {
128
+ starterPacks: mapDefined(skeleton.starterPacks, (uri) =>
129
+ ctx.views.starterPack(uri, hydration),
130
+ ),
131
+ }
132
+ }
133
+
134
+ type Context = {
135
+ hydrator: Hydrator
136
+ views: Views
137
+ topicsAgent: AtpAgent | undefined
138
+ }
139
+
140
+ type Params = QueryParams & {
141
+ hydrateCtx: HydrateCtx & { viewer: string | null }
142
+ headers: Record<string, string>
143
+ }
144
+
145
+ type SkeletonState = {
146
+ starterPacks: string[]
147
+ }