@atproto/bsky 0.0.202 → 0.0.204

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 (93) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/api/age-assurance/const.d.ts.map +1 -1
  3. package/dist/api/age-assurance/const.js +40 -0
  4. package/dist/api/age-assurance/const.js.map +1 -1
  5. package/dist/api/app/bsky/contact/dismissMatch.d.ts.map +1 -1
  6. package/dist/api/app/bsky/contact/dismissMatch.js +2 -3
  7. package/dist/api/app/bsky/contact/dismissMatch.js.map +1 -1
  8. package/dist/api/app/bsky/contact/getMatches.js +2 -3
  9. package/dist/api/app/bsky/contact/getMatches.js.map +1 -1
  10. package/dist/api/app/bsky/contact/getSyncStatus.d.ts.map +1 -1
  11. package/dist/api/app/bsky/contact/getSyncStatus.js +2 -3
  12. package/dist/api/app/bsky/contact/getSyncStatus.js.map +1 -1
  13. package/dist/api/app/bsky/contact/importContacts.js +2 -3
  14. package/dist/api/app/bsky/contact/importContacts.js.map +1 -1
  15. package/dist/api/app/bsky/contact/removeData.d.ts.map +1 -1
  16. package/dist/api/app/bsky/contact/removeData.js +2 -3
  17. package/dist/api/app/bsky/contact/removeData.js.map +1 -1
  18. package/dist/api/app/bsky/contact/sendNotification.d.ts.map +1 -1
  19. package/dist/api/app/bsky/contact/sendNotification.js.map +1 -1
  20. package/dist/api/app/bsky/contact/startPhoneVerification.d.ts.map +1 -1
  21. package/dist/api/app/bsky/contact/startPhoneVerification.js +2 -3
  22. package/dist/api/app/bsky/contact/startPhoneVerification.js.map +1 -1
  23. package/dist/api/app/bsky/contact/util.d.ts +7 -0
  24. package/dist/api/app/bsky/contact/util.d.ts.map +1 -1
  25. package/dist/api/app/bsky/contact/util.js +68 -0
  26. package/dist/api/app/bsky/contact/util.js.map +1 -1
  27. package/dist/api/app/bsky/contact/verifyPhone.d.ts.map +1 -1
  28. package/dist/api/app/bsky/contact/verifyPhone.js +2 -3
  29. package/dist/api/app/bsky/contact/verifyPhone.js.map +1 -1
  30. package/dist/api/index.d.ts.map +1 -1
  31. package/dist/api/index.js +2 -0
  32. package/dist/api/index.js.map +1 -1
  33. package/dist/hydration/actor.js +1 -1
  34. package/dist/hydration/actor.js.map +1 -1
  35. package/dist/lexicon/lexicons.d.ts +142 -52
  36. package/dist/lexicon/lexicons.d.ts.map +1 -1
  37. package/dist/lexicon/lexicons.js +93 -26
  38. package/dist/lexicon/lexicons.js.map +1 -1
  39. package/dist/lexicon/types/app/bsky/contact/dismissMatch.d.ts +1 -1
  40. package/dist/lexicon/types/app/bsky/contact/dismissMatch.d.ts.map +1 -1
  41. package/dist/lexicon/types/app/bsky/contact/dismissMatch.js.map +1 -1
  42. package/dist/lexicon/types/app/bsky/contact/getMatches.d.ts +1 -1
  43. package/dist/lexicon/types/app/bsky/contact/getMatches.d.ts.map +1 -1
  44. package/dist/lexicon/types/app/bsky/contact/getMatches.js.map +1 -1
  45. package/dist/lexicon/types/app/bsky/contact/getSyncStatus.d.ts +1 -1
  46. package/dist/lexicon/types/app/bsky/contact/getSyncStatus.d.ts.map +1 -1
  47. package/dist/lexicon/types/app/bsky/contact/getSyncStatus.js.map +1 -1
  48. package/dist/lexicon/types/app/bsky/contact/importContacts.d.ts +1 -1
  49. package/dist/lexicon/types/app/bsky/contact/importContacts.d.ts.map +1 -1
  50. package/dist/lexicon/types/app/bsky/contact/importContacts.js.map +1 -1
  51. package/dist/lexicon/types/app/bsky/contact/removeData.d.ts +1 -1
  52. package/dist/lexicon/types/app/bsky/contact/removeData.d.ts.map +1 -1
  53. package/dist/lexicon/types/app/bsky/contact/removeData.js.map +1 -1
  54. package/dist/lexicon/types/app/bsky/contact/startPhoneVerification.d.ts +1 -1
  55. package/dist/lexicon/types/app/bsky/contact/startPhoneVerification.d.ts.map +1 -1
  56. package/dist/lexicon/types/app/bsky/contact/startPhoneVerification.js.map +1 -1
  57. package/dist/lexicon/types/app/bsky/contact/verifyPhone.d.ts +1 -1
  58. package/dist/lexicon/types/app/bsky/contact/verifyPhone.d.ts.map +1 -1
  59. package/dist/lexicon/types/app/bsky/contact/verifyPhone.js.map +1 -1
  60. package/dist/lexicon/types/com/atproto/server/deleteSession.d.ts +1 -0
  61. package/dist/lexicon/types/com/atproto/server/deleteSession.d.ts.map +1 -1
  62. package/dist/lexicon/types/com/atproto/server/deleteSession.js.map +1 -1
  63. package/dist/lexicon/types/com/atproto/server/getSession.d.ts +3 -3
  64. package/dist/lexicon/types/com/atproto/server/getSession.d.ts.map +1 -1
  65. package/dist/lexicon/types/com/atproto/server/getSession.js.map +1 -1
  66. package/dist/lexicon/types/com/atproto/server/refreshSession.d.ts +4 -1
  67. package/dist/lexicon/types/com/atproto/server/refreshSession.d.ts.map +1 -1
  68. package/dist/lexicon/types/com/atproto/server/refreshSession.js.map +1 -1
  69. package/package.json +8 -8
  70. package/proto/bsky.proto +1 -0
  71. package/src/api/age-assurance/const.ts +40 -0
  72. package/src/api/app/bsky/contact/dismissMatch.ts +7 -6
  73. package/src/api/app/bsky/contact/getMatches.ts +8 -7
  74. package/src/api/app/bsky/contact/getSyncStatus.ts +6 -5
  75. package/src/api/app/bsky/contact/importContacts.ts +8 -7
  76. package/src/api/app/bsky/contact/removeData.ts +6 -5
  77. package/src/api/app/bsky/contact/sendNotification.ts +2 -1
  78. package/src/api/app/bsky/contact/startPhoneVerification.ts +7 -6
  79. package/src/api/app/bsky/contact/util.ts +80 -1
  80. package/src/api/app/bsky/contact/verifyPhone.ts +8 -7
  81. package/src/api/index.ts +2 -0
  82. package/src/hydration/actor.ts +1 -1
  83. package/src/lexicon/lexicons.ts +94 -26
  84. package/src/lexicon/types/app/bsky/contact/dismissMatch.ts +1 -1
  85. package/src/lexicon/types/app/bsky/contact/getMatches.ts +1 -1
  86. package/src/lexicon/types/app/bsky/contact/getSyncStatus.ts +1 -1
  87. package/src/lexicon/types/app/bsky/contact/importContacts.ts +6 -1
  88. package/src/lexicon/types/app/bsky/contact/removeData.ts +1 -1
  89. package/src/lexicon/types/app/bsky/contact/startPhoneVerification.ts +1 -1
  90. package/src/lexicon/types/app/bsky/contact/verifyPhone.ts +6 -1
  91. package/src/lexicon/types/com/atproto/server/deleteSession.ts +1 -0
  92. package/src/lexicon/types/com/atproto/server/getSession.ts +1 -1
  93. package/src/lexicon/types/com/atproto/server/refreshSession.ts +4 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @atproto/bsky
2
2
 
3
+ ## 0.0.204
4
+
5
+ ### Patch Changes
6
+
7
+ - [#4426](https://github.com/bluesky-social/atproto/pull/4426) [`ce497e8`](https://github.com/bluesky-social/atproto/commit/ce497e85437c7ced3147691fb877e1f76f6ff472) Thanks [@estrattonbailey](https://github.com/estrattonbailey)! - Add Age Assurance config for Virginia
8
+
9
+ - Updated dependencies [[`10cf1c1`](https://github.com/bluesky-social/atproto/commit/10cf1c10188596724b0c38a5af507d95a382a164), [`10cf1c1`](https://github.com/bluesky-social/atproto/commit/10cf1c10188596724b0c38a5af507d95a382a164)]:
10
+ - @atproto/api@0.18.9
11
+ - @atproto/common@0.5.4
12
+ - @atproto/xrpc-server@0.10.5
13
+
14
+ ## 0.0.203
15
+
16
+ ### Patch Changes
17
+
18
+ - [#4460](https://github.com/bluesky-social/atproto/pull/4460) [`dd0fe8d`](https://github.com/bluesky-social/atproto/commit/dd0fe8d5e74e19b2cb37aa6a307b88f1f6bd1c9c) Thanks [@estrattonbailey](https://github.com/estrattonbailey)! - Add Age Assurance config for Tennessee
19
+
3
20
  ## 0.0.202
4
21
 
5
22
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../../src/api/age-assurance/const.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EAExB,MAAM,cAAc,CAAA;AAErB;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,uBAAuB,CAAC,MAgI1D,CAAA"}
1
+ {"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../../src/api/age-assurance/const.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EAExB,MAAM,cAAc,CAAA;AAErB;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,uBAAuB,CAAC,MAwK1D,CAAA"}
@@ -137,6 +137,46 @@ exports.AGE_ASSURANCE_CONFIG = {
137
137
  },
138
138
  ],
139
139
  },
140
+ {
141
+ countryCode: 'US',
142
+ regionCode: 'VA',
143
+ rules: [
144
+ {
145
+ $type: api_1.ageAssuranceRuleIDs.IfAssuredOverAge,
146
+ age: 16,
147
+ access: 'full',
148
+ },
149
+ {
150
+ $type: api_1.ageAssuranceRuleIDs.IfDeclaredOverAge,
151
+ age: 16,
152
+ access: 'full',
153
+ },
154
+ {
155
+ $type: api_1.ageAssuranceRuleIDs.Default,
156
+ access: 'none',
157
+ },
158
+ ],
159
+ },
160
+ {
161
+ countryCode: 'US',
162
+ regionCode: 'TN',
163
+ rules: [
164
+ {
165
+ $type: api_1.ageAssuranceRuleIDs.IfAssuredOverAge,
166
+ age: 18,
167
+ access: 'full',
168
+ },
169
+ {
170
+ $type: api_1.ageAssuranceRuleIDs.IfDeclaredOverAge,
171
+ age: 18,
172
+ access: 'full',
173
+ },
174
+ {
175
+ $type: api_1.ageAssuranceRuleIDs.Default,
176
+ access: 'none',
177
+ },
178
+ ],
179
+ },
140
180
  ],
141
181
  };
142
182
  //# sourceMappingURL=const.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../src/api/age-assurance/const.ts"],"names":[],"mappings":";;;AAAA,sCAGqB;AAErB;;;;;;;GAOG;AACU,QAAA,oBAAoB,GAAmC;IAClE,OAAO,EAAE;QACP;YACE,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,SAAS;YACrB,KAAK,EAAE;gBACL;oBACE,KAAK,EAAE,yBAAG,CAAC,gBAAgB;oBAC3B,GAAG,EAAE,EAAE;oBACP,MAAM,EAAE,MAAM;iBACf;gBACD;oBACE,KAAK,EAAE,yBAAG,CAAC,iBAAiB;oBAC5B,GAAG,EAAE,EAAE;oBACP,MAAM,EAAE,MAAM;iBACf;gBACD;oBACE,KAAK,EAAE,yBAAG,CAAC,OAAO;oBAClB,MAAM,EAAE,MAAM;iBACf;aACF;SACF;QACD;YACE,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,SAAS;YACrB,KAAK,EAAE;gBACL;oBACE,KAAK,EAAE,yBAAG,CAAC,kBAAkB;oBAC7B,IAAI,EAAE,sBAAsB;oBAC5B,MAAM,EAAE,MAAM;iBACf;gBACD;oBACE,KAAK,EAAE,yBAAG,CAAC,gBAAgB;oBAC3B,GAAG,EAAE,EAAE;oBACP,MAAM,EAAE,MAAM;iBACf;gBACD;oBACE,KAAK,EAAE,yBAAG,CAAC,gBAAgB;oBAC3B,GAAG,EAAE,EAAE;oBACP,MAAM,EAAE,MAAM;iBACf;gBACD;oBACE,KAAK,EAAE,yBAAG,CAAC,iBAAiB;oBAC5B,GAAG,EAAE,EAAE;oBACP,MAAM,EAAE,MAAM;iBACf;gBACD;oBACE,KAAK,EAAE,yBAAG,CAAC,OAAO;oBAClB,MAAM,EAAE,MAAM;iBACf;aACF;SACF;QACD;YACE,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE;gBACL;oBACE,KAAK,EAAE,yBAAG,CAAC,gBAAgB;oBAC3B,GAAG,EAAE,EAAE;oBACP,MAAM,EAAE,MAAM;iBACf;gBACD;oBACE,KAAK,EAAE,yBAAG,CAAC,iBAAiB;oBAC5B,GAAG,EAAE,EAAE;oBACP,MAAM,EAAE,MAAM;iBACf;gBACD;oBACE,KAAK,EAAE,yBAAG,CAAC,OAAO;oBAClB,MAAM,EAAE,MAAM;iBACf;aACF;SACF;QACD;YACE,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE;gBACL;oBACE,KAAK,EAAE,yBAAG,CAAC,gBAAgB;oBAC3B,GAAG,EAAE,EAAE;oBACP,MAAM,EAAE,MAAM;iBACf;gBACD;oBACE,KAAK,EAAE,yBAAG,CAAC,iBAAiB;oBAC5B,GAAG,EAAE,EAAE;oBACP,MAAM,EAAE,MAAM;iBACf;gBACD;oBACE,KAAK,EAAE,yBAAG,CAAC,OAAO;oBAClB,MAAM,EAAE,MAAM;iBACf;aACF;SACF;QACD;YACE,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE;gBACL;oBACE,KAAK,EAAE,yBAAG,CAAC,gBAAgB;oBAC3B,GAAG,EAAE,EAAE;oBACP,MAAM,EAAE,MAAM;iBACf;gBACD;oBACE,KAAK,EAAE,yBAAG,CAAC,iBAAiB;oBAC5B,GAAG,EAAE,EAAE;oBACP,MAAM,EAAE,MAAM;iBACf;gBACD;oBACE,KAAK,EAAE,yBAAG,CAAC,OAAO;oBAClB,MAAM,EAAE,MAAM;iBACf;aACF;SACF;QACD;YACE,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE;gBACL;oBACE,KAAK,EAAE,yBAAG,CAAC,gBAAgB;oBAC3B,GAAG,EAAE,EAAE;oBACP,MAAM,EAAE,MAAM;iBACf;gBACD;oBACE,KAAK,EAAE,yBAAG,CAAC,OAAO;oBAClB,MAAM,EAAE,MAAM;iBACf;aACF;SACF;KACF;CACF,CAAA","sourcesContent":["import {\n AppBskyAgeassuranceDefs,\n ageAssuranceRuleIDs as ids,\n} from '@atproto/api'\n\n/**\n * Age assurance configuration defining rules for various regions.\n *\n * NOTE: These rules are matched in order, and the first matching rule\n * determines the access level granted.\n *\n * NOTE: all regions MUST have a default rule as the last rule.\n */\nexport const AGE_ASSURANCE_CONFIG: AppBskyAgeassuranceDefs.Config = {\n regions: [\n {\n countryCode: 'GB',\n regionCode: undefined,\n rules: [\n {\n $type: ids.IfAssuredOverAge,\n age: 18,\n access: 'full',\n },\n {\n $type: ids.IfDeclaredOverAge,\n age: 13,\n access: 'safe',\n },\n {\n $type: ids.Default,\n access: 'none',\n },\n ],\n },\n {\n countryCode: 'AU',\n regionCode: undefined,\n rules: [\n {\n $type: ids.IfAccountNewerThan,\n date: '2025-12-10T00:00:00Z',\n access: 'none',\n },\n {\n $type: ids.IfAssuredOverAge,\n age: 18,\n access: 'full',\n },\n {\n $type: ids.IfAssuredOverAge,\n age: 16,\n access: 'safe',\n },\n {\n $type: ids.IfDeclaredOverAge,\n age: 16,\n access: 'safe',\n },\n {\n $type: ids.Default,\n access: 'none',\n },\n ],\n },\n {\n countryCode: 'US',\n regionCode: 'SD',\n rules: [\n {\n $type: ids.IfAssuredOverAge,\n age: 18,\n access: 'full',\n },\n {\n $type: ids.IfDeclaredOverAge,\n age: 13,\n access: 'safe',\n },\n {\n $type: ids.Default,\n access: 'none',\n },\n ],\n },\n {\n countryCode: 'US',\n regionCode: 'WY',\n rules: [\n {\n $type: ids.IfAssuredOverAge,\n age: 18,\n access: 'full',\n },\n {\n $type: ids.IfDeclaredOverAge,\n age: 13,\n access: 'safe',\n },\n {\n $type: ids.Default,\n access: 'none',\n },\n ],\n },\n {\n countryCode: 'US',\n regionCode: 'OH',\n rules: [\n {\n $type: ids.IfAssuredOverAge,\n age: 18,\n access: 'full',\n },\n {\n $type: ids.IfDeclaredOverAge,\n age: 13,\n access: 'safe',\n },\n {\n $type: ids.Default,\n access: 'none',\n },\n ],\n },\n {\n countryCode: 'US',\n regionCode: 'MS',\n rules: [\n {\n $type: ids.IfAssuredOverAge,\n age: 18,\n access: 'full',\n },\n {\n $type: ids.Default,\n access: 'none',\n },\n ],\n },\n ],\n}\n"]}
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../src/api/age-assurance/const.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AppBskyAgeassuranceDefs,\n ageAssuranceRuleIDs as ids,\n} from '@atproto/api'\n\n/**\n * Age assurance configuration defining rules for various regions.\n *\n * NOTE: These rules are matched in order, and the first matching rule\n * determines the access level granted.\n *\n * NOTE: all regions MUST have a default rule as the last rule.\n */\nexport const AGE_ASSURANCE_CONFIG: AppBskyAgeassuranceDefs.Config = {\n regions: [\n {\n countryCode: 'GB',\n regionCode: undefined,\n rules: [\n {\n $type: ids.IfAssuredOverAge,\n age: 18,\n access: 'full',\n },\n {\n $type: ids.IfDeclaredOverAge,\n age: 13,\n access: 'safe',\n },\n {\n $type: ids.Default,\n access: 'none',\n },\n ],\n },\n {\n countryCode: 'AU',\n regionCode: undefined,\n rules: [\n {\n $type: ids.IfAccountNewerThan,\n date: '2025-12-10T00:00:00Z',\n access: 'none',\n },\n {\n $type: ids.IfAssuredOverAge,\n age: 18,\n access: 'full',\n },\n {\n $type: ids.IfAssuredOverAge,\n age: 16,\n access: 'safe',\n },\n {\n $type: ids.IfDeclaredOverAge,\n age: 16,\n access: 'safe',\n },\n {\n $type: ids.Default,\n access: 'none',\n },\n ],\n },\n {\n countryCode: 'US',\n regionCode: 'SD',\n rules: [\n {\n $type: ids.IfAssuredOverAge,\n age: 18,\n access: 'full',\n },\n {\n $type: ids.IfDeclaredOverAge,\n age: 13,\n access: 'safe',\n },\n {\n $type: ids.Default,\n access: 'none',\n },\n ],\n },\n {\n countryCode: 'US',\n regionCode: 'WY',\n rules: [\n {\n $type: ids.IfAssuredOverAge,\n age: 18,\n access: 'full',\n },\n {\n $type: ids.IfDeclaredOverAge,\n age: 13,\n access: 'safe',\n },\n {\n $type: ids.Default,\n access: 'none',\n },\n ],\n },\n {\n countryCode: 'US',\n regionCode: 'OH',\n rules: [\n {\n $type: ids.IfAssuredOverAge,\n age: 18,\n access: 'full',\n },\n {\n $type: ids.IfDeclaredOverAge,\n age: 13,\n access: 'safe',\n },\n {\n $type: ids.Default,\n access: 'none',\n },\n ],\n },\n {\n countryCode: 'US',\n regionCode: 'MS',\n rules: [\n {\n $type: ids.IfAssuredOverAge,\n age: 18,\n access: 'full',\n },\n {\n $type: ids.Default,\n access: 'none',\n },\n ],\n },\n {\n countryCode: 'US',\n regionCode: 'VA',\n rules: [\n {\n $type: ids.IfAssuredOverAge,\n age: 16,\n access: 'full',\n },\n {\n $type: ids.IfDeclaredOverAge,\n age: 16,\n access: 'full',\n },\n {\n $type: ids.Default,\n access: 'none',\n },\n ],\n },\n {\n countryCode: 'US',\n regionCode: 'TN',\n rules: [\n {\n $type: ids.IfAssuredOverAge,\n age: 18,\n access: 'full',\n },\n {\n $type: ids.IfDeclaredOverAge,\n age: 18,\n access: 'full',\n },\n {\n $type: ids.Default,\n access: 'none',\n },\n ],\n },\n ],\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"dismissMatch.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/dismissMatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAG5C,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QAmBvD"}
1
+ {"version":3,"file":"dismissMatch.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/dismissMatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAG5C,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QAoBvD"}
@@ -8,11 +8,10 @@ function default_1(server, ctx) {
8
8
  handler: async ({ input, auth }) => {
9
9
  (0, util_1.assertRolodexOrThrowUnimplemented)(ctx);
10
10
  const actor = auth.credentials.iss;
11
- // TODO: Error handling.
12
- await ctx.rolodexClient.dismissMatch({
11
+ await (0, util_1.callRolodexClient)(ctx.rolodexClient.dismissMatch({
13
12
  actor,
14
13
  subject: input.body.subject,
15
- });
14
+ }));
16
15
  return {
17
16
  encoding: 'application/json',
18
17
  body: {},
@@ -1 +1 @@
1
- {"version":3,"file":"dismissMatch.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/dismissMatch.ts"],"names":[],"mappings":";;AAIA,4BAmBC;AArBD,iCAA0D;AAE1D,mBAAyB,MAAc,EAAE,GAAe;IACtD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QACnC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,QAAQ;QAC/B,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;YACjC,IAAA,wCAAiC,EAAC,GAAG,CAAC,CAAA;YAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAA;YAClC,wBAAwB;YACxB,MAAM,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC;gBACnC,KAAK;gBACL,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO;aAC5B,CAAC,CAAA;YAEF,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,EAAE;aACT,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { AppContext } from '../../../../context'\nimport { Server } from '../../../../lexicon'\nimport { assertRolodexOrThrowUnimplemented } from './util'\n\nexport default function (server: Server, ctx: AppContext) {\n server.app.bsky.contact.dismissMatch({\n auth: ctx.authVerifier.standard,\n handler: async ({ input, auth }) => {\n assertRolodexOrThrowUnimplemented(ctx)\n\n const actor = auth.credentials.iss\n // TODO: Error handling.\n await ctx.rolodexClient.dismissMatch({\n actor,\n subject: input.body.subject,\n })\n\n return {\n encoding: 'application/json',\n body: {},\n }\n },\n })\n}\n"]}
1
+ {"version":3,"file":"dismissMatch.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/dismissMatch.ts"],"names":[],"mappings":";;AAIA,4BAoBC;AAtBD,iCAA6E;AAE7E,mBAAyB,MAAc,EAAE,GAAe;IACtD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QACnC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,QAAQ;QAC/B,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;YACjC,IAAA,wCAAiC,EAAC,GAAG,CAAC,CAAA;YAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAA;YAClC,MAAM,IAAA,wBAAiB,EACrB,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC;gBAC7B,KAAK;gBACL,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO;aAC5B,CAAC,CACH,CAAA;YAED,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,EAAE;aACT,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { AppContext } from '../../../../context'\nimport { Server } from '../../../../lexicon'\nimport { assertRolodexOrThrowUnimplemented, callRolodexClient } from './util'\n\nexport default function (server: Server, ctx: AppContext) {\n server.app.bsky.contact.dismissMatch({\n auth: ctx.authVerifier.standard,\n handler: async ({ input, auth }) => {\n assertRolodexOrThrowUnimplemented(ctx)\n\n const actor = auth.credentials.iss\n await callRolodexClient(\n ctx.rolodexClient.dismissMatch({\n actor,\n subject: input.body.subject,\n }),\n )\n\n return {\n encoding: 'application/json',\n body: {},\n }\n },\n })\n}\n"]}
@@ -27,12 +27,11 @@ function default_1(server, ctx) {
27
27
  const skeleton = async (input) => {
28
28
  const { params, ctx } = input;
29
29
  const actor = params.hydrateCtx.viewer;
30
- // TODO: Error handling.
31
- const { cursor, subjects } = await ctx.rolodexClient.getMatches({
30
+ const { cursor, subjects } = await (0, util_1.callRolodexClient)(ctx.rolodexClient.getMatches({
32
31
  actor: params.hydrateCtx.viewer,
33
32
  limit: params.limit,
34
33
  cursor: params.cursor,
35
- });
34
+ }));
36
35
  return {
37
36
  actor,
38
37
  subjects,
@@ -1 +1 @@
1
- {"version":3,"file":"getMatches.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/getMatches.ts"],"names":[],"mappings":"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","sourcesContent":["import { mapDefined } from '@atproto/common'\nimport { AppContext } from '../../../../context'\nimport {\n HydrateCtx,\n HydrationState,\n Hydrator,\n} from '../../../../hydration/hydrator'\nimport { Server } from '../../../../lexicon'\nimport { QueryParams } from '../../../../lexicon/types/app/bsky/contact/getMatches'\nimport {\n HydrationFnInput,\n SkeletonFnInput,\n createPipeline,\n} from '../../../../pipeline'\nimport { RolodexClient } from '../../../../rolodex'\nimport { Views } from '../../../../views'\nimport { assertRolodexOrThrowUnimplemented } from './util'\n\nexport default function (server: Server, ctx: AppContext) {\n const getMatches = createPipeline(skeleton, hydration, noBlocks, presentation)\n server.app.bsky.contact.getMatches({\n auth: ctx.authVerifier.standard,\n handler: async ({ params, auth, req }) => {\n assertRolodexOrThrowUnimplemented(ctx)\n\n const viewer = auth.credentials.iss\n const labelers = ctx.reqLabelers(req)\n const hydrateCtx = await ctx.hydrator.createContext({\n labelers,\n viewer,\n })\n\n const result = await getMatches(\n { ...params, hydrateCtx: hydrateCtx.copy({ viewer }) },\n ctx,\n )\n\n return {\n encoding: 'application/json',\n body: result,\n }\n },\n })\n}\n\nconst skeleton = async (\n input: SkeletonFnInput<Context, Params>,\n): Promise<SkeletonState> => {\n const { params, ctx } = input\n const actor = params.hydrateCtx.viewer\n // TODO: Error handling.\n const { cursor, subjects } = await ctx.rolodexClient.getMatches({\n actor: params.hydrateCtx.viewer,\n limit: params.limit,\n cursor: params.cursor,\n })\n return {\n actor,\n subjects,\n cursor: cursor || undefined,\n }\n}\n\nconst hydration = async (\n input: HydrationFnInput<Context, Params, SkeletonState>,\n) => {\n const { ctx, params, skeleton } = input\n const { subjects } = skeleton\n return ctx.hydrator.hydrateProfiles(subjects, params.hydrateCtx)\n}\n\nconst noBlocks = (inputs: {\n ctx: Context\n skeleton: SkeletonState\n hydration: HydrationState\n}) => {\n const { ctx, skeleton, hydration } = inputs\n skeleton.subjects = skeleton.subjects.filter((subject) => {\n return !ctx.views.viewerBlockExists(subject, hydration)\n })\n return skeleton\n}\n\nconst presentation = (input: {\n ctx: Context\n params: Params\n skeleton: SkeletonState\n hydration: HydrationState\n}) => {\n const { ctx, skeleton, hydration } = input\n const matches = mapDefined(skeleton.subjects, (did) =>\n ctx.views.profile(did, hydration),\n )\n return { matches }\n}\n\ntype Context = {\n hydrator: Hydrator\n rolodexClient: RolodexClient\n views: Views\n}\n\ntype Params = QueryParams & {\n hydrateCtx: HydrateCtx & { viewer: string }\n}\n\ntype SkeletonState = {\n actor: string\n subjects: string[]\n cursor?: string\n}\n"]}
1
+ {"version":3,"file":"getMatches.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/getMatches.ts"],"names":[],"mappings":"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","sourcesContent":["import { mapDefined } from '@atproto/common'\nimport { AppContext } from '../../../../context'\nimport {\n HydrateCtx,\n HydrationState,\n Hydrator,\n} from '../../../../hydration/hydrator'\nimport { Server } from '../../../../lexicon'\nimport { QueryParams } from '../../../../lexicon/types/app/bsky/contact/getMatches'\nimport {\n HydrationFnInput,\n SkeletonFnInput,\n createPipeline,\n} from '../../../../pipeline'\nimport { RolodexClient } from '../../../../rolodex'\nimport { Views } from '../../../../views'\nimport { assertRolodexOrThrowUnimplemented, callRolodexClient } from './util'\n\nexport default function (server: Server, ctx: AppContext) {\n const getMatches = createPipeline(skeleton, hydration, noBlocks, presentation)\n server.app.bsky.contact.getMatches({\n auth: ctx.authVerifier.standard,\n handler: async ({ params, auth, req }) => {\n assertRolodexOrThrowUnimplemented(ctx)\n\n const viewer = auth.credentials.iss\n const labelers = ctx.reqLabelers(req)\n const hydrateCtx = await ctx.hydrator.createContext({\n labelers,\n viewer,\n })\n\n const result = await getMatches(\n { ...params, hydrateCtx: hydrateCtx.copy({ viewer }) },\n ctx,\n )\n\n return {\n encoding: 'application/json',\n body: result,\n }\n },\n })\n}\n\nconst skeleton = async (\n input: SkeletonFnInput<Context, Params>,\n): Promise<SkeletonState> => {\n const { params, ctx } = input\n const actor = params.hydrateCtx.viewer\n const { cursor, subjects } = await callRolodexClient(\n ctx.rolodexClient.getMatches({\n actor: params.hydrateCtx.viewer,\n limit: params.limit,\n cursor: params.cursor,\n }),\n )\n return {\n actor,\n subjects,\n cursor: cursor || undefined,\n }\n}\n\nconst hydration = async (\n input: HydrationFnInput<Context, Params, SkeletonState>,\n) => {\n const { ctx, params, skeleton } = input\n const { subjects } = skeleton\n return ctx.hydrator.hydrateProfiles(subjects, params.hydrateCtx)\n}\n\nconst noBlocks = (inputs: {\n ctx: Context\n skeleton: SkeletonState\n hydration: HydrationState\n}) => {\n const { ctx, skeleton, hydration } = inputs\n skeleton.subjects = skeleton.subjects.filter((subject) => {\n return !ctx.views.viewerBlockExists(subject, hydration)\n })\n return skeleton\n}\n\nconst presentation = (input: {\n ctx: Context\n params: Params\n skeleton: SkeletonState\n hydration: HydrationState\n}) => {\n const { ctx, skeleton, hydration } = input\n const matches = mapDefined(skeleton.subjects, (did) =>\n ctx.views.profile(did, hydration),\n )\n return { matches }\n}\n\ntype Context = {\n hydrator: Hydrator\n rolodexClient: RolodexClient\n views: Views\n}\n\ntype Params = QueryParams & {\n hydrateCtx: HydrateCtx & { viewer: string }\n}\n\ntype SkeletonState = {\n actor: string\n subjects: string[]\n cursor?: string\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"getSyncStatus.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/getSyncStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAI5C,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QA6BvD"}
1
+ {"version":3,"file":"getSyncStatus.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/getSyncStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAI5C,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QA8BvD"}
@@ -8,10 +8,9 @@ function default_1(server, ctx) {
8
8
  handler: async ({ auth }) => {
9
9
  (0, util_1.assertRolodexOrThrowUnimplemented)(ctx);
10
10
  const actor = auth.credentials.iss;
11
- // TODO: Error handling.
12
- const res = await ctx.rolodexClient.getSyncStatus({
11
+ const res = await (0, util_1.callRolodexClient)(ctx.rolodexClient.getSyncStatus({
13
12
  actor,
14
- });
13
+ }));
15
14
  let syncStatus;
16
15
  if (res.status && res.status.syncedAt) {
17
16
  const syncedAt = res.status?.syncedAt?.toDate().toISOString();
@@ -1 +1 @@
1
- {"version":3,"file":"getSyncStatus.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/getSyncStatus.ts"],"names":[],"mappings":";;AAKA,4BA6BC;AA/BD,iCAA0D;AAE1D,mBAAyB,MAAc,EAAE,GAAe;IACtD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACpC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,QAAQ;QAC/B,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YAC1B,IAAA,wCAAiC,EAAC,GAAG,CAAC,CAAA;YAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAA;YAClC,wBAAwB;YACxB,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC;gBAChD,KAAK;aACN,CAAC,CAAA;YAEF,IAAI,UAAkC,CAAA;YACtC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtC,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,WAAW,EAAE,CAAA;gBAC7D,UAAU,GAAG;oBACX,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,YAAY;oBACrC,QAAQ;iBACT,CAAA;YACH,CAAC;YAED,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE;oBACJ,UAAU;iBACX;aACF,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { AppContext } from '../../../../context'\nimport { Server } from '../../../../lexicon'\nimport { SyncStatus } from '../../../../lexicon/types/app/bsky/contact/defs'\nimport { assertRolodexOrThrowUnimplemented } from './util'\n\nexport default function (server: Server, ctx: AppContext) {\n server.app.bsky.contact.getSyncStatus({\n auth: ctx.authVerifier.standard,\n handler: async ({ auth }) => {\n assertRolodexOrThrowUnimplemented(ctx)\n\n const actor = auth.credentials.iss\n // TODO: Error handling.\n const res = await ctx.rolodexClient.getSyncStatus({\n actor,\n })\n\n let syncStatus: SyncStatus | undefined\n if (res.status && res.status.syncedAt) {\n const syncedAt = res.status?.syncedAt?.toDate().toISOString()\n syncStatus = {\n matchesCount: res.status.matchesCount,\n syncedAt,\n }\n }\n\n return {\n encoding: 'application/json',\n body: {\n syncStatus,\n },\n }\n },\n })\n}\n"]}
1
+ {"version":3,"file":"getSyncStatus.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/getSyncStatus.ts"],"names":[],"mappings":";;AAKA,4BA8BC;AAhCD,iCAA6E;AAE7E,mBAAyB,MAAc,EAAE,GAAe;IACtD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACpC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,QAAQ;QAC/B,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YAC1B,IAAA,wCAAiC,EAAC,GAAG,CAAC,CAAA;YAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAA;YAClC,MAAM,GAAG,GAAG,MAAM,IAAA,wBAAiB,EACjC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC;gBAC9B,KAAK;aACN,CAAC,CACH,CAAA;YAED,IAAI,UAAkC,CAAA;YACtC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtC,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,WAAW,EAAE,CAAA;gBAC7D,UAAU,GAAG;oBACX,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,YAAY;oBACrC,QAAQ;iBACT,CAAA;YACH,CAAC;YAED,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE;oBACJ,UAAU;iBACX;aACF,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { AppContext } from '../../../../context'\nimport { Server } from '../../../../lexicon'\nimport { SyncStatus } from '../../../../lexicon/types/app/bsky/contact/defs'\nimport { assertRolodexOrThrowUnimplemented, callRolodexClient } from './util'\n\nexport default function (server: Server, ctx: AppContext) {\n server.app.bsky.contact.getSyncStatus({\n auth: ctx.authVerifier.standard,\n handler: async ({ auth }) => {\n assertRolodexOrThrowUnimplemented(ctx)\n\n const actor = auth.credentials.iss\n const res = await callRolodexClient(\n ctx.rolodexClient.getSyncStatus({\n actor,\n }),\n )\n\n let syncStatus: SyncStatus | undefined\n if (res.status && res.status.syncedAt) {\n const syncedAt = res.status?.syncedAt?.toDate().toISOString()\n syncStatus = {\n matchesCount: res.status.matchesCount,\n syncedAt,\n }\n }\n\n return {\n encoding: 'application/json',\n body: {\n syncStatus,\n },\n }\n },\n })\n}\n"]}
@@ -28,12 +28,11 @@ function default_1(server, ctx) {
28
28
  const skeleton = async (input) => {
29
29
  const { params, ctx } = input;
30
30
  const actor = params.hydrateCtx.viewer;
31
- // TODO: Error handling.
32
- const { matches } = await ctx.rolodexClient.importContacts({
31
+ const { matches } = await (0, util_1.callRolodexClient)(ctx.rolodexClient.importContacts({
33
32
  actor: params.hydrateCtx.viewer,
34
33
  contacts: params.contacts,
35
34
  token: params.token,
36
- });
35
+ }));
37
36
  return {
38
37
  actor,
39
38
  matches,
@@ -1 +1 @@
1
- {"version":3,"file":"importContacts.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/importContacts.ts"],"names":[],"mappings":"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","sourcesContent":["import { mapDefined } from '@atproto/common'\nimport { AppContext } from '../../../../context'\nimport {\n HydrateCtx,\n HydrationState,\n Hydrator,\n} from '../../../../hydration/hydrator'\nimport { Server } from '../../../../lexicon'\nimport { MatchAndContactIndex } from '../../../../lexicon/types/app/bsky/contact/defs'\nimport { InputSchema } from '../../../../lexicon/types/app/bsky/contact/importContacts'\nimport {\n HydrationFnInput,\n SkeletonFnInput,\n createPipeline,\n noRules,\n} from '../../../../pipeline'\nimport { ImportContactsMatch } from '../../../../proto/rolodex_pb'\nimport { RolodexClient } from '../../../../rolodex'\nimport { Views } from '../../../../views'\nimport { assertRolodexOrThrowUnimplemented } from './util'\n\nexport default function (server: Server, ctx: AppContext) {\n const importContacts = createPipeline(\n skeleton,\n hydration,\n noRules, //\n presentation,\n )\n server.app.bsky.contact.importContacts({\n auth: ctx.authVerifier.standard,\n handler: async ({ input, auth, req }) => {\n assertRolodexOrThrowUnimplemented(ctx)\n\n const viewer = auth.credentials.iss\n const labelers = ctx.reqLabelers(req)\n const hydrateCtx = await ctx.hydrator.createContext({\n labelers,\n viewer,\n })\n\n const result = await importContacts(\n { ...input.body, hydrateCtx: hydrateCtx.copy({ viewer }) },\n ctx,\n )\n\n return {\n encoding: 'application/json',\n body: result,\n }\n },\n })\n}\n\nconst skeleton = async (\n input: SkeletonFnInput<Context, Params>,\n): Promise<SkeletonState> => {\n const { params, ctx } = input\n const actor = params.hydrateCtx.viewer\n // TODO: Error handling.\n const { matches } = await ctx.rolodexClient.importContacts({\n actor: params.hydrateCtx.viewer,\n contacts: params.contacts,\n token: params.token,\n })\n return {\n actor,\n matches,\n }\n}\n\nconst hydration = async (\n input: HydrationFnInput<Context, Params, SkeletonState>,\n) => {\n const { ctx, params, skeleton } = input\n const { matches } = skeleton\n const subjects = matches.map((m) => m.subject)\n return ctx.hydrator.hydrateProfiles(subjects, params.hydrateCtx)\n}\n\nconst presentation = (input: {\n ctx: Context\n params: Params\n skeleton: SkeletonState\n hydration: HydrationState\n}) => {\n const { ctx, skeleton, hydration } = input\n const matchesAndContactIndexes = mapDefined(\n skeleton.matches,\n ({ subject, inputIndex }): MatchAndContactIndex | undefined => {\n const profile = ctx.views.profile(subject, hydration)\n\n if (!profile) {\n return undefined\n }\n\n return {\n contactIndex: inputIndex,\n match: profile,\n }\n },\n )\n return { matchesAndContactIndexes }\n}\n\ntype Context = {\n hydrator: Hydrator\n rolodexClient: RolodexClient\n views: Views\n}\n\ntype Params = InputSchema & {\n hydrateCtx: HydrateCtx & { viewer: string }\n}\n\ntype SkeletonState = {\n actor: string\n matches: ImportContactsMatch[]\n}\n"]}
1
+ {"version":3,"file":"importContacts.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/importContacts.ts"],"names":[],"mappings":"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","sourcesContent":["import { mapDefined } from '@atproto/common'\nimport { AppContext } from '../../../../context'\nimport {\n HydrateCtx,\n HydrationState,\n Hydrator,\n} from '../../../../hydration/hydrator'\nimport { Server } from '../../../../lexicon'\nimport { MatchAndContactIndex } from '../../../../lexicon/types/app/bsky/contact/defs'\nimport { InputSchema } from '../../../../lexicon/types/app/bsky/contact/importContacts'\nimport {\n HydrationFnInput,\n SkeletonFnInput,\n createPipeline,\n noRules,\n} from '../../../../pipeline'\nimport { ImportContactsMatch } from '../../../../proto/rolodex_pb'\nimport { RolodexClient } from '../../../../rolodex'\nimport { Views } from '../../../../views'\nimport { assertRolodexOrThrowUnimplemented, callRolodexClient } from './util'\n\nexport default function (server: Server, ctx: AppContext) {\n const importContacts = createPipeline(\n skeleton,\n hydration,\n noRules, //\n presentation,\n )\n server.app.bsky.contact.importContacts({\n auth: ctx.authVerifier.standard,\n handler: async ({ input, auth, req }) => {\n assertRolodexOrThrowUnimplemented(ctx)\n\n const viewer = auth.credentials.iss\n const labelers = ctx.reqLabelers(req)\n const hydrateCtx = await ctx.hydrator.createContext({\n labelers,\n viewer,\n })\n\n const result = await importContacts(\n { ...input.body, hydrateCtx: hydrateCtx.copy({ viewer }) },\n ctx,\n )\n\n return {\n encoding: 'application/json',\n body: result,\n }\n },\n })\n}\n\nconst skeleton = async (\n input: SkeletonFnInput<Context, Params>,\n): Promise<SkeletonState> => {\n const { params, ctx } = input\n const actor = params.hydrateCtx.viewer\n const { matches } = await callRolodexClient(\n ctx.rolodexClient.importContacts({\n actor: params.hydrateCtx.viewer,\n contacts: params.contacts,\n token: params.token,\n }),\n )\n return {\n actor,\n matches,\n }\n}\n\nconst hydration = async (\n input: HydrationFnInput<Context, Params, SkeletonState>,\n) => {\n const { ctx, params, skeleton } = input\n const { matches } = skeleton\n const subjects = matches.map((m) => m.subject)\n return ctx.hydrator.hydrateProfiles(subjects, params.hydrateCtx)\n}\n\nconst presentation = (input: {\n ctx: Context\n params: Params\n skeleton: SkeletonState\n hydration: HydrationState\n}) => {\n const { ctx, skeleton, hydration } = input\n const matchesAndContactIndexes = mapDefined(\n skeleton.matches,\n ({ subject, inputIndex }): MatchAndContactIndex | undefined => {\n const profile = ctx.views.profile(subject, hydration)\n\n if (!profile) {\n return undefined\n }\n\n return {\n contactIndex: inputIndex,\n match: profile,\n }\n },\n )\n return { matchesAndContactIndexes }\n}\n\ntype Context = {\n hydrator: Hydrator\n rolodexClient: RolodexClient\n views: Views\n}\n\ntype Params = InputSchema & {\n hydrateCtx: HydrateCtx & { viewer: string }\n}\n\ntype SkeletonState = {\n actor: string\n matches: ImportContactsMatch[]\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"removeData.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/removeData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAG5C,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QAkBvD"}
1
+ {"version":3,"file":"removeData.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/removeData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAG5C,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QAmBvD"}
@@ -8,10 +8,9 @@ function default_1(server, ctx) {
8
8
  handler: async ({ auth }) => {
9
9
  (0, util_1.assertRolodexOrThrowUnimplemented)(ctx);
10
10
  const actor = auth.credentials.iss;
11
- // TODO: Error handling.
12
- await ctx.rolodexClient.removeData({
11
+ await (0, util_1.callRolodexClient)(ctx.rolodexClient.removeData({
13
12
  actor,
14
- });
13
+ }));
15
14
  return {
16
15
  encoding: 'application/json',
17
16
  body: {},
@@ -1 +1 @@
1
- {"version":3,"file":"removeData.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/removeData.ts"],"names":[],"mappings":";;AAIA,4BAkBC;AApBD,iCAA0D;AAE1D,mBAAyB,MAAc,EAAE,GAAe;IACtD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACjC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,QAAQ;QAC/B,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YAC1B,IAAA,wCAAiC,EAAC,GAAG,CAAC,CAAA;YAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAA;YAClC,wBAAwB;YACxB,MAAM,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC;gBACjC,KAAK;aACN,CAAC,CAAA;YAEF,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,EAAE;aACT,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { AppContext } from '../../../../context'\nimport { Server } from '../../../../lexicon'\nimport { assertRolodexOrThrowUnimplemented } from './util'\n\nexport default function (server: Server, ctx: AppContext) {\n server.app.bsky.contact.removeData({\n auth: ctx.authVerifier.standard,\n handler: async ({ auth }) => {\n assertRolodexOrThrowUnimplemented(ctx)\n\n const actor = auth.credentials.iss\n // TODO: Error handling.\n await ctx.rolodexClient.removeData({\n actor,\n })\n\n return {\n encoding: 'application/json',\n body: {},\n }\n },\n })\n}\n"]}
1
+ {"version":3,"file":"removeData.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/removeData.ts"],"names":[],"mappings":";;AAIA,4BAmBC;AArBD,iCAA6E;AAE7E,mBAAyB,MAAc,EAAE,GAAe;IACtD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACjC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,QAAQ;QAC/B,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YAC1B,IAAA,wCAAiC,EAAC,GAAG,CAAC,CAAA;YAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAA;YAClC,MAAM,IAAA,wBAAiB,EACrB,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC;gBAC3B,KAAK;aACN,CAAC,CACH,CAAA;YAED,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,EAAE;aACT,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { AppContext } from '../../../../context'\nimport { Server } from '../../../../lexicon'\nimport { assertRolodexOrThrowUnimplemented, callRolodexClient } from './util'\n\nexport default function (server: Server, ctx: AppContext) {\n server.app.bsky.contact.removeData({\n auth: ctx.authVerifier.standard,\n handler: async ({ auth }) => {\n assertRolodexOrThrowUnimplemented(ctx)\n\n const actor = auth.credentials.iss\n await callRolodexClient(\n ctx.rolodexClient.removeData({\n actor,\n }),\n )\n\n return {\n encoding: 'application/json',\n body: {},\n }\n },\n })\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"sendNotification.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/sendNotification.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAI5C,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QAyBvD"}
1
+ {"version":3,"file":"sendNotification.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/sendNotification.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAK5C,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QAyBvD"}
@@ -1 +1 @@
1
- {"version":3,"file":"sendNotification.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/sendNotification.ts"],"names":[],"mappings":";;AAMA,4BAyBC;AA/BD,4CAAqC;AAGrC,6CAA8C;AAC9C,iCAA0D;AAE1D,mBAAyB,MAAc,EAAE,GAAe;IACtD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACvC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,IAAI;QAC3B,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YAC3B,2HAA2H;YAC3H,IAAA,wCAAiC,EAAC,GAAG,CAAC,CAAA;YAEtC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,CAAA;YAE/B,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;gBAC3B,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,kBAAU,CAAC,8BAA8B;gBACpD,OAAO,EAAE;oBACP,IAAI;oBACJ,EAAE;iBACH;gBACD,GAAG,EAAE,YAAG,CAAC,OAAO,EAAE;aACnB,CAAC,CAAA;YAEF,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,EAAE;aACT,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { TID } from '@atproto/common'\nimport { AppContext } from '../../../../context'\nimport { Server } from '../../../../lexicon'\nimport { Namespaces } from '../../../../stash'\nimport { assertRolodexOrThrowUnimplemented } from './util'\n\nexport default function (server: Server, ctx: AppContext) {\n server.app.bsky.contact.sendNotification({\n auth: ctx.authVerifier.role,\n handler: async ({ input }) => {\n // Assert rolodex even though we don't call it, it is a proxy to whether the app is configured with contact import support.\n assertRolodexOrThrowUnimplemented(ctx)\n\n const { from, to } = input.body\n\n await ctx.stashClient.create({\n actorDid: from,\n namespace: Namespaces.AppBskyContactDefsNotification,\n payload: {\n from,\n to,\n },\n key: TID.nextStr(),\n })\n\n return {\n encoding: 'application/json',\n body: {},\n }\n },\n })\n}\n"]}
1
+ {"version":3,"file":"sendNotification.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/sendNotification.ts"],"names":[],"mappings":";;AAOA,4BAyBC;AAhCD,4CAAqC;AAIrC,6CAA8C;AAC9C,iCAA0D;AAE1D,mBAAyB,MAAc,EAAE,GAAe;IACtD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACvC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,IAAI;QAC3B,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YAC3B,2HAA2H;YAC3H,IAAA,wCAAiC,EAAC,GAAG,CAAC,CAAA;YAEtC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,CAAA;YAE/B,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;gBAC3B,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,kBAAU,CAAC,8BAA8B;gBACpD,OAAO,EAAE;oBACP,IAAI;oBACJ,EAAE;iBACoB;gBACxB,GAAG,EAAE,YAAG,CAAC,OAAO,EAAE;aACnB,CAAC,CAAA;YAEF,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,EAAE;aACT,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { TID } from '@atproto/common'\nimport { AppContext } from '../../../../context'\nimport { Server } from '../../../../lexicon'\nimport { Notification } from '../../../../lexicon/types/app/bsky/contact/defs'\nimport { Namespaces } from '../../../../stash'\nimport { assertRolodexOrThrowUnimplemented } from './util'\n\nexport default function (server: Server, ctx: AppContext) {\n server.app.bsky.contact.sendNotification({\n auth: ctx.authVerifier.role,\n handler: async ({ input }) => {\n // Assert rolodex even though we don't call it, it is a proxy to whether the app is configured with contact import support.\n assertRolodexOrThrowUnimplemented(ctx)\n\n const { from, to } = input.body\n\n await ctx.stashClient.create({\n actorDid: from,\n namespace: Namespaces.AppBskyContactDefsNotification,\n payload: {\n from,\n to,\n } satisfies Notification,\n key: TID.nextStr(),\n })\n\n return {\n encoding: 'application/json',\n body: {},\n }\n },\n })\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"startPhoneVerification.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/startPhoneVerification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAG5C,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QAmBvD"}
1
+ {"version":3,"file":"startPhoneVerification.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/startPhoneVerification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAG5C,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QAoBvD"}
@@ -8,11 +8,10 @@ function default_1(server, ctx) {
8
8
  handler: async ({ auth, input }) => {
9
9
  (0, util_1.assertRolodexOrThrowUnimplemented)(ctx);
10
10
  const actor = auth.credentials.iss;
11
- // TODO: Error handling.
12
- await ctx.rolodexClient.startPhoneVerification({
11
+ await (0, util_1.callRolodexClient)(ctx.rolodexClient.startPhoneVerification({
13
12
  actor,
14
13
  phone: input.body.phone,
15
- });
14
+ }));
16
15
  return {
17
16
  encoding: 'application/json',
18
17
  body: {},
@@ -1 +1 @@
1
- {"version":3,"file":"startPhoneVerification.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/startPhoneVerification.ts"],"names":[],"mappings":";;AAIA,4BAmBC;AArBD,iCAA0D;AAE1D,mBAAyB,MAAc,EAAE,GAAe;IACtD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;QAC7C,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,QAAQ;QAC/B,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;YACjC,IAAA,wCAAiC,EAAC,GAAG,CAAC,CAAA;YAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAA;YAClC,wBAAwB;YACxB,MAAM,GAAG,CAAC,aAAa,CAAC,sBAAsB,CAAC;gBAC7C,KAAK;gBACL,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;aACxB,CAAC,CAAA;YAEF,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,EAAE;aACT,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { AppContext } from '../../../../context'\nimport { Server } from '../../../../lexicon'\nimport { assertRolodexOrThrowUnimplemented } from './util'\n\nexport default function (server: Server, ctx: AppContext) {\n server.app.bsky.contact.startPhoneVerification({\n auth: ctx.authVerifier.standard,\n handler: async ({ auth, input }) => {\n assertRolodexOrThrowUnimplemented(ctx)\n\n const actor = auth.credentials.iss\n // TODO: Error handling.\n await ctx.rolodexClient.startPhoneVerification({\n actor,\n phone: input.body.phone,\n })\n\n return {\n encoding: 'application/json',\n body: {},\n }\n },\n })\n}\n"]}
1
+ {"version":3,"file":"startPhoneVerification.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/startPhoneVerification.ts"],"names":[],"mappings":";;AAIA,4BAoBC;AAtBD,iCAA6E;AAE7E,mBAAyB,MAAc,EAAE,GAAe;IACtD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;QAC7C,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,QAAQ;QAC/B,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;YACjC,IAAA,wCAAiC,EAAC,GAAG,CAAC,CAAA;YAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAA;YAClC,MAAM,IAAA,wBAAiB,EACrB,GAAG,CAAC,aAAa,CAAC,sBAAsB,CAAC;gBACvC,KAAK;gBACL,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;aACxB,CAAC,CACH,CAAA;YAED,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,EAAE;aACT,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { AppContext } from '../../../../context'\nimport { Server } from '../../../../lexicon'\nimport { assertRolodexOrThrowUnimplemented, callRolodexClient } from './util'\n\nexport default function (server: Server, ctx: AppContext) {\n server.app.bsky.contact.startPhoneVerification({\n auth: ctx.authVerifier.standard,\n handler: async ({ auth, input }) => {\n assertRolodexOrThrowUnimplemented(ctx)\n\n const actor = auth.credentials.iss\n await callRolodexClient(\n ctx.rolodexClient.startPhoneVerification({\n actor,\n phone: input.body.phone,\n }),\n )\n\n return {\n encoding: 'application/json',\n body: {},\n }\n },\n })\n}\n"]}
@@ -3,4 +3,11 @@ import { RolodexClient } from '../../../../rolodex';
3
3
  export declare function assertRolodexOrThrowUnimplemented(ctx: AppContext): asserts ctx is AppContext & {
4
4
  rolodexClient: RolodexClient;
5
5
  };
6
+ /**
7
+ * Helper to call Rolodex client methods and translate RPC errors to XRPC
8
+ * errors.
9
+ *
10
+ * These `reason` values need to stay in sync with the Rolodex service
11
+ */
12
+ export declare function callRolodexClient<T>(caller: T): Promise<T>;
6
13
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,GAAG,IAAI,UAAU,GAAG;IAAE,aAAa,EAAE,aAAa,CAAA;CAAE,CAM9D"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/util.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,GAAG,IAAI,UAAU,GAAG;IAAE,aAAa,EAAE,aAAa,CAAA;CAAE,CAM9D;AAgCD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,cAoCnD"}
@@ -1,10 +1,78 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.assertRolodexOrThrowUnimplemented = assertRolodexOrThrowUnimplemented;
4
+ exports.callRolodexClient = callRolodexClient;
5
+ const connect_1 = require("@connectrpc/connect");
4
6
  const xrpc_server_1 = require("@atproto/xrpc-server");
5
7
  function assertRolodexOrThrowUnimplemented(ctx) {
6
8
  if (!ctx.rolodexClient) {
7
9
  throw new xrpc_server_1.MethodNotImplementedError('This service is not configured to support contact imports.');
8
10
  }
9
11
  }
12
+ /**
13
+ * Converts UPPERCASE_ERROR from Rolodex to PascalCase for XRPC.
14
+ */
15
+ function convertErrorName(reason) {
16
+ switch (reason) {
17
+ case 'INVALID_DID':
18
+ return 'InvalidDid';
19
+ case 'INVALID_LIMIT':
20
+ return 'InvalidLimit';
21
+ case 'INVALID_CURSOR':
22
+ return 'InvalidCursor';
23
+ case 'INVALID_CONTACTS':
24
+ return 'InvalidContacts';
25
+ case 'TOO_MANY_CONTACTS':
26
+ return 'TooManyContacts';
27
+ case 'INVALID_TOKEN':
28
+ return 'InvalidToken';
29
+ case 'RATE_LIMIT_EXCEEDED':
30
+ return 'RateLimitExceeded';
31
+ case 'INVALID_PHONE':
32
+ return 'InvalidPhone';
33
+ case 'INVALID_CODE':
34
+ return 'InvalidCode';
35
+ case 'INTERNAL_ERROR':
36
+ return 'InternalError';
37
+ default:
38
+ return reason;
39
+ }
40
+ }
41
+ /**
42
+ * Helper to call Rolodex client methods and translate RPC errors to XRPC
43
+ * errors.
44
+ *
45
+ * These `reason` values need to stay in sync with the Rolodex service
46
+ */
47
+ async function callRolodexClient(caller) {
48
+ try {
49
+ return await caller;
50
+ }
51
+ catch (e) {
52
+ // might be something we want to handle
53
+ if (e instanceof connect_1.ConnectError) {
54
+ /**
55
+ * https://connectrpc.com/docs/protocol#error-end-stream
56
+ */
57
+ const details = e.details?.at(0);
58
+ const reason = details?.debug?.reason; // e.g. INVALID_DID
59
+ // Handle known error reasons
60
+ if (reason) {
61
+ const errorName = convertErrorName(reason);
62
+ // NOTE: Don't leak e.message to the response.
63
+ if (reason === 'INTERNAL_ERROR') {
64
+ throw new xrpc_server_1.InternalServerError('Upstream error', errorName, {
65
+ cause: e,
66
+ });
67
+ }
68
+ else {
69
+ throw new xrpc_server_1.InvalidRequestError('An error occurred', errorName, {
70
+ cause: e,
71
+ });
72
+ }
73
+ }
74
+ }
75
+ throw e;
76
+ }
77
+ }
10
78
  //# sourceMappingURL=util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/util.ts"],"names":[],"mappings":";;AAIA,8EAQC;AAZD,sDAAgE;AAIhE,SAAgB,iCAAiC,CAC/C,GAAe;IAEf,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACvB,MAAM,IAAI,uCAAyB,CACjC,4DAA4D,CAC7D,CAAA;IACH,CAAC;AACH,CAAC","sourcesContent":["import { MethodNotImplementedError } from '@atproto/xrpc-server'\nimport { AppContext } from '../../../..'\nimport { RolodexClient } from '../../../../rolodex'\n\nexport function assertRolodexOrThrowUnimplemented(\n ctx: AppContext,\n): asserts ctx is AppContext & { rolodexClient: RolodexClient } {\n if (!ctx.rolodexClient) {\n throw new MethodNotImplementedError(\n 'This service is not configured to support contact imports.',\n )\n }\n}\n"]}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/util.ts"],"names":[],"mappings":";;AASA,8EAQC;AAsCD,8CAoCC;AA3FD,iDAAkD;AAClD,sDAI6B;AAI7B,SAAgB,iCAAiC,CAC/C,GAAe;IAEf,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACvB,MAAM,IAAI,uCAAyB,CACjC,4DAA4D,CAC7D,CAAA;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,MAAc;IACtC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,aAAa;YAChB,OAAO,YAAY,CAAA;QACrB,KAAK,eAAe;YAClB,OAAO,cAAc,CAAA;QACvB,KAAK,gBAAgB;YACnB,OAAO,eAAe,CAAA;QACxB,KAAK,kBAAkB;YACrB,OAAO,iBAAiB,CAAA;QAC1B,KAAK,mBAAmB;YACtB,OAAO,iBAAiB,CAAA;QAC1B,KAAK,eAAe;YAClB,OAAO,cAAc,CAAA;QACvB,KAAK,qBAAqB;YACxB,OAAO,mBAAmB,CAAA;QAC5B,KAAK,eAAe;YAClB,OAAO,cAAc,CAAA;QACvB,KAAK,cAAc;YACjB,OAAO,aAAa,CAAA;QACtB,KAAK,gBAAgB;YACnB,OAAO,eAAe,CAAA;QACxB;YACE,OAAO,MAAM,CAAA;IACjB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,iBAAiB,CAAI,MAAS;IAClD,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAA;IACrB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,uCAAuC;QACvC,IAAI,CAAC,YAAY,sBAAY,EAAE,CAAC;YAC9B;;eAEG;YACH,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAOlB,CAAA;YACb,MAAM,MAAM,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,CAAA,CAAC,mBAAmB;YACzD,6BAA6B;YAC7B,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;gBAC1C,8CAA8C;gBAE9C,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;oBAChC,MAAM,IAAI,iCAAmB,CAAC,gBAAgB,EAAE,SAAS,EAAE;wBACzD,KAAK,EAAE,CAAC;qBACT,CAAC,CAAA;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,iCAAmB,CAAC,mBAAmB,EAAE,SAAS,EAAE;wBAC5D,KAAK,EAAE,CAAC;qBACT,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,CAAC,CAAA;IACT,CAAC;AACH,CAAC","sourcesContent":["import { ConnectError } from '@connectrpc/connect'\nimport {\n InternalServerError,\n InvalidRequestError,\n MethodNotImplementedError,\n} from '@atproto/xrpc-server'\nimport { AppContext } from '../../../..'\nimport { RolodexClient } from '../../../../rolodex'\n\nexport function assertRolodexOrThrowUnimplemented(\n ctx: AppContext,\n): asserts ctx is AppContext & { rolodexClient: RolodexClient } {\n if (!ctx.rolodexClient) {\n throw new MethodNotImplementedError(\n 'This service is not configured to support contact imports.',\n )\n }\n}\n\n/**\n * Converts UPPERCASE_ERROR from Rolodex to PascalCase for XRPC.\n */\nfunction convertErrorName(reason: string): string {\n switch (reason) {\n case 'INVALID_DID':\n return 'InvalidDid'\n case 'INVALID_LIMIT':\n return 'InvalidLimit'\n case 'INVALID_CURSOR':\n return 'InvalidCursor'\n case 'INVALID_CONTACTS':\n return 'InvalidContacts'\n case 'TOO_MANY_CONTACTS':\n return 'TooManyContacts'\n case 'INVALID_TOKEN':\n return 'InvalidToken'\n case 'RATE_LIMIT_EXCEEDED':\n return 'RateLimitExceeded'\n case 'INVALID_PHONE':\n return 'InvalidPhone'\n case 'INVALID_CODE':\n return 'InvalidCode'\n case 'INTERNAL_ERROR':\n return 'InternalError'\n default:\n return reason\n }\n}\n\n/**\n * Helper to call Rolodex client methods and translate RPC errors to XRPC\n * errors.\n *\n * These `reason` values need to stay in sync with the Rolodex service\n */\nexport async function callRolodexClient<T>(caller: T) {\n try {\n return await caller\n } catch (e) {\n // might be something we want to handle\n if (e instanceof ConnectError) {\n /**\n * https://connectrpc.com/docs/protocol#error-end-stream\n */\n const details = e.details?.at(0) as\n | {\n debug: {\n reason: string\n message: string\n }\n }\n | undefined\n const reason = details?.debug?.reason // e.g. INVALID_DID\n // Handle known error reasons\n if (reason) {\n const errorName = convertErrorName(reason)\n // NOTE: Don't leak e.message to the response.\n\n if (reason === 'INTERNAL_ERROR') {\n throw new InternalServerError('Upstream error', errorName, {\n cause: e,\n })\n } else {\n throw new InvalidRequestError('An error occurred', errorName, {\n cause: e,\n })\n }\n }\n }\n throw e\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"verifyPhone.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/verifyPhone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAG5C,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QAsBvD"}
1
+ {"version":3,"file":"verifyPhone.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/verifyPhone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAG5C,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QAuBvD"}
@@ -8,12 +8,11 @@ function default_1(server, ctx) {
8
8
  handler: async ({ auth, input }) => {
9
9
  (0, util_1.assertRolodexOrThrowUnimplemented)(ctx);
10
10
  const actor = auth.credentials.iss;
11
- // TODO: Error handling.
12
- const res = await ctx.rolodexClient.verifyPhone({
11
+ const res = await (0, util_1.callRolodexClient)(ctx.rolodexClient.verifyPhone({
13
12
  actor,
14
13
  verificationCode: input.body.code,
15
14
  phone: input.body.phone,
16
- });
15
+ }));
17
16
  return {
18
17
  encoding: 'application/json',
19
18
  body: {
@@ -1 +1 @@
1
- {"version":3,"file":"verifyPhone.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/verifyPhone.ts"],"names":[],"mappings":";;AAIA,4BAsBC;AAxBD,iCAA0D;AAE1D,mBAAyB,MAAc,EAAE,GAAe;IACtD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAClC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,QAAQ;QAC/B,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;YACjC,IAAA,wCAAiC,EAAC,GAAG,CAAC,CAAA;YAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAA;YAClC,wBAAwB;YACxB,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC;gBAC9C,KAAK;gBACL,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;gBACjC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;aACxB,CAAC,CAAA;YAEF,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE;oBACJ,KAAK,EAAE,GAAG,CAAC,KAAK;iBACjB;aACF,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { AppContext } from '../../../../context'\nimport { Server } from '../../../../lexicon'\nimport { assertRolodexOrThrowUnimplemented } from './util'\n\nexport default function (server: Server, ctx: AppContext) {\n server.app.bsky.contact.verifyPhone({\n auth: ctx.authVerifier.standard,\n handler: async ({ auth, input }) => {\n assertRolodexOrThrowUnimplemented(ctx)\n\n const actor = auth.credentials.iss\n // TODO: Error handling.\n const res = await ctx.rolodexClient.verifyPhone({\n actor,\n verificationCode: input.body.code,\n phone: input.body.phone,\n })\n\n return {\n encoding: 'application/json',\n body: {\n token: res.token,\n },\n }\n },\n })\n}\n"]}
1
+ {"version":3,"file":"verifyPhone.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/contact/verifyPhone.ts"],"names":[],"mappings":";;AAIA,4BAuBC;AAzBD,iCAA6E;AAE7E,mBAAyB,MAAc,EAAE,GAAe;IACtD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAClC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,QAAQ;QAC/B,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;YACjC,IAAA,wCAAiC,EAAC,GAAG,CAAC,CAAA;YAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAA;YAClC,MAAM,GAAG,GAAG,MAAM,IAAA,wBAAiB,EACjC,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC;gBAC5B,KAAK;gBACL,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;gBACjC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;aACxB,CAAC,CACH,CAAA;YAED,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE;oBACJ,KAAK,EAAE,GAAG,CAAC,KAAK;iBACjB;aACF,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { AppContext } from '../../../../context'\nimport { Server } from '../../../../lexicon'\nimport { assertRolodexOrThrowUnimplemented, callRolodexClient } from './util'\n\nexport default function (server: Server, ctx: AppContext) {\n server.app.bsky.contact.verifyPhone({\n auth: ctx.authVerifier.standard,\n handler: async ({ auth, input }) => {\n assertRolodexOrThrowUnimplemented(ctx)\n\n const actor = auth.credentials.iss\n const res = await callRolodexClient(\n ctx.rolodexClient.verifyPhone({\n actor,\n verificationCode: input.body.code,\n phone: input.body.phone,\n }),\n )\n\n return {\n encoding: 'application/json',\n body: {\n token: res.token,\n },\n }\n },\n })\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAwFnC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAA;AAElC,OAAO,KAAK,SAAS,MAAM,cAAc,CAAA;AAEzC,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAA;AAE/C,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAA;AAEtC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAA;AAEpC,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,UA0FvD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAyFnC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAA;AAElC,OAAO,KAAK,SAAS,MAAM,cAAc,CAAA;AAEzC,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAA;AAE/C,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAA;AAEtC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAA;AAEpC,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,UA2FvD"}
package/dist/api/index.js CHANGED
@@ -54,6 +54,7 @@ const getMatches_1 = __importDefault(require("./app/bsky/contact/getMatches"));
54
54
  const getSyncStatus_1 = __importDefault(require("./app/bsky/contact/getSyncStatus"));
55
55
  const importContacts_1 = __importDefault(require("./app/bsky/contact/importContacts"));
56
56
  const removeData_1 = __importDefault(require("./app/bsky/contact/removeData"));
57
+ const sendNotification_1 = __importDefault(require("./app/bsky/contact/sendNotification"));
57
58
  const startPhoneVerification_1 = __importDefault(require("./app/bsky/contact/startPhoneVerification"));
58
59
  const verifyPhone_1 = __importDefault(require("./app/bsky/contact/verifyPhone"));
59
60
  const getActorFeeds_1 = __importDefault(require("./app/bsky/feed/getActorFeeds"));
@@ -140,6 +141,7 @@ function default_1(server, ctx) {
140
141
  (0, getSyncStatus_1.default)(server, ctx);
141
142
  (0, importContacts_1.default)(server, ctx);
142
143
  (0, removeData_1.default)(server, ctx);
144
+ (0, sendNotification_1.default)(server, ctx);
143
145
  (0, startPhoneVerification_1.default)(server, ctx);
144
146
  (0, verifyPhone_1.default)(server, ctx);
145
147
  (0, getActorFeeds_1.default)(server, ctx);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppContext } from '../context'\nimport { Server } from '../lexicon'\nimport getProfile from './app/bsky/actor/getProfile'\nimport getProfiles from './app/bsky/actor/getProfiles'\nimport getSuggestions from './app/bsky/actor/getSuggestions'\nimport searchActors from './app/bsky/actor/searchActors'\nimport searchActorsTypeahead from './app/bsky/actor/searchActorsTypeahead'\nimport aaBegin from './app/bsky/ageassurance/begin'\nimport aaGetConfig from './app/bsky/ageassurance/getConfig'\nimport aaGetState from './app/bsky/ageassurance/getState'\nimport createBookmark from './app/bsky/bookmark/createBookmark'\nimport deleteBookmark from './app/bsky/bookmark/deleteBookmark'\nimport getBookmarks from './app/bsky/bookmark/getBookmarks'\nimport dismissMatch from './app/bsky/contact/dismissMatch'\nimport getMatches from './app/bsky/contact/getMatches'\nimport getSyncStatus from './app/bsky/contact/getSyncStatus'\nimport importContacts from './app/bsky/contact/importContacts'\nimport removeData from './app/bsky/contact/removeData'\nimport startPhoneVerification from './app/bsky/contact/startPhoneVerification'\nimport verifyPhone from './app/bsky/contact/verifyPhone'\nimport getActorFeeds from './app/bsky/feed/getActorFeeds'\nimport getActorLikes from './app/bsky/feed/getActorLikes'\nimport getAuthorFeed from './app/bsky/feed/getAuthorFeed'\nimport getFeed from './app/bsky/feed/getFeed'\nimport getFeedGenerator from './app/bsky/feed/getFeedGenerator'\nimport getFeedGenerators from './app/bsky/feed/getFeedGenerators'\nimport getLikes from './app/bsky/feed/getLikes'\nimport getListFeed from './app/bsky/feed/getListFeed'\nimport getPostThread from './app/bsky/feed/getPostThread'\nimport getPosts from './app/bsky/feed/getPosts'\nimport getQuotes from './app/bsky/feed/getQuotes'\nimport getRepostedBy from './app/bsky/feed/getRepostedBy'\nimport getSuggestedFeeds from './app/bsky/feed/getSuggestedFeeds'\nimport getTimeline from './app/bsky/feed/getTimeline'\nimport searchPosts from './app/bsky/feed/searchPosts'\nimport getActorStarterPacks from './app/bsky/graph/getActorStarterPacks'\nimport getBlocks from './app/bsky/graph/getBlocks'\nimport getFollowers from './app/bsky/graph/getFollowers'\nimport getFollows from './app/bsky/graph/getFollows'\nimport getKnownFollowers from './app/bsky/graph/getKnownFollowers'\nimport getList from './app/bsky/graph/getList'\nimport getListBlocks from './app/bsky/graph/getListBlocks'\nimport getListMutes from './app/bsky/graph/getListMutes'\nimport getLists from './app/bsky/graph/getLists'\nimport getListsWithMembership from './app/bsky/graph/getListsWithMembership'\nimport getMutes from './app/bsky/graph/getMutes'\nimport getRelationships from './app/bsky/graph/getRelationships'\nimport getStarterPack from './app/bsky/graph/getStarterPack'\nimport getStarterPacks from './app/bsky/graph/getStarterPacks'\nimport getStarterPacksWithMembership from './app/bsky/graph/getStarterPacksWithMembership'\nimport getSuggestedFollowsByActor from './app/bsky/graph/getSuggestedFollowsByActor'\nimport muteActor from './app/bsky/graph/muteActor'\nimport muteActorList from './app/bsky/graph/muteActorList'\nimport muteThread from './app/bsky/graph/muteThread'\nimport searchStarterPacks from './app/bsky/graph/searchStarterPacks'\nimport unmuteActor from './app/bsky/graph/unmuteActor'\nimport unmuteActorList from './app/bsky/graph/unmuteActorList'\nimport unmuteThread from './app/bsky/graph/unmuteThread'\nimport getLabelerServices from './app/bsky/labeler/getServices'\nimport getPreferences from './app/bsky/notification/getPreferences'\nimport getUnreadCount from './app/bsky/notification/getUnreadCount'\nimport listActivitySubscriptions from './app/bsky/notification/listActivitySubscriptions'\nimport listNotifications from './app/bsky/notification/listNotifications'\nimport putActivitySubscription from './app/bsky/notification/putActivitySubscription'\nimport putPreferences from './app/bsky/notification/putPreferences'\nimport putPreferencesV2 from './app/bsky/notification/putPreferencesV2'\nimport registerPush from './app/bsky/notification/registerPush'\nimport updateSeen from './app/bsky/notification/updateSeen'\nimport getAgeAssuranceState from './app/bsky/unspecced/getAgeAssuranceState'\nimport getConfig from './app/bsky/unspecced/getConfig'\nimport getOnboardingSuggestedStarterPacks from './app/bsky/unspecced/getOnboardingSuggestedStarterPacks'\nimport getPopularFeedGenerators from './app/bsky/unspecced/getPopularFeedGenerators'\nimport getPostThreadOtherV2 from './app/bsky/unspecced/getPostThreadOtherV2'\nimport getPostThreadV2 from './app/bsky/unspecced/getPostThreadV2'\nimport getUnspeccedSuggestedFeeds from './app/bsky/unspecced/getSuggestedFeeds'\nimport getSuggestedStarterPacks from './app/bsky/unspecced/getSuggestedStarterPacks'\nimport getSuggestedUsers from './app/bsky/unspecced/getSuggestedUsers'\nimport getTaggedSuggestions from './app/bsky/unspecced/getTaggedSuggestions'\nimport getTrendingTopics from './app/bsky/unspecced/getTrendingTopics'\nimport getTrends from './app/bsky/unspecced/getTrends'\nimport initAgeAssurance from './app/bsky/unspecced/initAgeAssurance'\nimport getAccountInfos from './com/atproto/admin/getAccountInfos'\nimport getSubjectStatus from './com/atproto/admin/getSubjectStatus'\nimport updateSubjectStatus from './com/atproto/admin/updateSubjectStatus'\nimport resolveHandle from './com/atproto/identity/resolveHandle'\nimport queryLabels from './com/atproto/label/queryLabels'\nimport getRecord from './com/atproto/repo/getRecord'\nimport fetchLabels from './com/atproto/temp/fetchLabels'\n\nexport * as health from './health'\n\nexport * as wellKnown from './well-known'\n\nexport * as blobResolver from './blob-resolver'\n\nexport * as external from './external'\n\nexport * as sitemap from './sitemap'\n\nexport default function (server: Server, ctx: AppContext) {\n // app.bsky\n getTimeline(server, ctx)\n createBookmark(server, ctx)\n deleteBookmark(server, ctx)\n getBookmarks(server, ctx)\n dismissMatch(server, ctx)\n getMatches(server, ctx)\n getSyncStatus(server, ctx)\n importContacts(server, ctx)\n removeData(server, ctx)\n startPhoneVerification(server, ctx)\n verifyPhone(server, ctx)\n getActorFeeds(server, ctx)\n getSuggestedFeeds(server, ctx)\n getAuthorFeed(server, ctx)\n getFeed(server, ctx)\n getFeedGenerator(server, ctx)\n getFeedGenerators(server, ctx)\n getLikes(server, ctx)\n getListFeed(server, ctx)\n getQuotes(server, ctx)\n getPostThread(server, ctx)\n getPostThreadOtherV2(server, ctx)\n getPostThreadV2(server, ctx)\n getPosts(server, ctx)\n searchPosts(server, ctx)\n getActorLikes(server, ctx)\n getProfile(server, ctx)\n getProfiles(server, ctx)\n getRepostedBy(server, ctx)\n getActorStarterPacks(server, ctx)\n getBlocks(server, ctx)\n getListBlocks(server, ctx)\n getFollowers(server, ctx)\n getKnownFollowers(server, ctx)\n getFollows(server, ctx)\n getList(server, ctx)\n getLists(server, ctx)\n getListsWithMembership(server, ctx)\n getListMutes(server, ctx)\n getMutes(server, ctx)\n getRelationships(server, ctx)\n getStarterPack(server, ctx)\n getStarterPacks(server, ctx)\n getStarterPacksWithMembership(server, ctx)\n searchStarterPacks(server, ctx)\n muteActor(server, ctx)\n unmuteActor(server, ctx)\n muteActorList(server, ctx)\n unmuteActorList(server, ctx)\n muteThread(server, ctx)\n unmuteThread(server, ctx)\n getSuggestedFollowsByActor(server, ctx)\n getTrendingTopics(server, ctx)\n getTrends(server, ctx)\n getOnboardingSuggestedStarterPacks(server, ctx)\n getSuggestedStarterPacks(server, ctx)\n getSuggestedUsers(server, ctx)\n getUnspeccedSuggestedFeeds(server, ctx)\n getLabelerServices(server, ctx)\n searchActors(server, ctx)\n searchActorsTypeahead(server, ctx)\n getSuggestions(server, ctx)\n getPreferences(server, ctx)\n getUnreadCount(server, ctx)\n listActivitySubscriptions(server, ctx)\n listNotifications(server, ctx)\n putActivitySubscription(server, ctx)\n updateSeen(server, ctx)\n putPreferences(server, ctx)\n putPreferencesV2(server, ctx)\n registerPush(server, ctx)\n getConfig(server, ctx)\n getPopularFeedGenerators(server, ctx)\n getTaggedSuggestions(server, ctx)\n getAgeAssuranceState(server, ctx)\n initAgeAssurance(server, ctx)\n aaGetConfig(server, ctx)\n aaGetState(server, ctx)\n aaBegin(server, ctx)\n // com.atproto\n getSubjectStatus(server, ctx)\n updateSubjectStatus(server, ctx)\n getAccountInfos(server, ctx)\n resolveHandle(server, ctx)\n getRecord(server, ctx)\n fetchLabels(server, ctx)\n queryLabels(server, ctx)\n return server\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppContext } from '../context'\nimport { Server } from '../lexicon'\nimport getProfile from './app/bsky/actor/getProfile'\nimport getProfiles from './app/bsky/actor/getProfiles'\nimport getSuggestions from './app/bsky/actor/getSuggestions'\nimport searchActors from './app/bsky/actor/searchActors'\nimport searchActorsTypeahead from './app/bsky/actor/searchActorsTypeahead'\nimport aaBegin from './app/bsky/ageassurance/begin'\nimport aaGetConfig from './app/bsky/ageassurance/getConfig'\nimport aaGetState from './app/bsky/ageassurance/getState'\nimport createBookmark from './app/bsky/bookmark/createBookmark'\nimport deleteBookmark from './app/bsky/bookmark/deleteBookmark'\nimport getBookmarks from './app/bsky/bookmark/getBookmarks'\nimport dismissMatch from './app/bsky/contact/dismissMatch'\nimport getMatches from './app/bsky/contact/getMatches'\nimport getSyncStatus from './app/bsky/contact/getSyncStatus'\nimport importContacts from './app/bsky/contact/importContacts'\nimport removeData from './app/bsky/contact/removeData'\nimport sendNotification from './app/bsky/contact/sendNotification'\nimport startPhoneVerification from './app/bsky/contact/startPhoneVerification'\nimport verifyPhone from './app/bsky/contact/verifyPhone'\nimport getActorFeeds from './app/bsky/feed/getActorFeeds'\nimport getActorLikes from './app/bsky/feed/getActorLikes'\nimport getAuthorFeed from './app/bsky/feed/getAuthorFeed'\nimport getFeed from './app/bsky/feed/getFeed'\nimport getFeedGenerator from './app/bsky/feed/getFeedGenerator'\nimport getFeedGenerators from './app/bsky/feed/getFeedGenerators'\nimport getLikes from './app/bsky/feed/getLikes'\nimport getListFeed from './app/bsky/feed/getListFeed'\nimport getPostThread from './app/bsky/feed/getPostThread'\nimport getPosts from './app/bsky/feed/getPosts'\nimport getQuotes from './app/bsky/feed/getQuotes'\nimport getRepostedBy from './app/bsky/feed/getRepostedBy'\nimport getSuggestedFeeds from './app/bsky/feed/getSuggestedFeeds'\nimport getTimeline from './app/bsky/feed/getTimeline'\nimport searchPosts from './app/bsky/feed/searchPosts'\nimport getActorStarterPacks from './app/bsky/graph/getActorStarterPacks'\nimport getBlocks from './app/bsky/graph/getBlocks'\nimport getFollowers from './app/bsky/graph/getFollowers'\nimport getFollows from './app/bsky/graph/getFollows'\nimport getKnownFollowers from './app/bsky/graph/getKnownFollowers'\nimport getList from './app/bsky/graph/getList'\nimport getListBlocks from './app/bsky/graph/getListBlocks'\nimport getListMutes from './app/bsky/graph/getListMutes'\nimport getLists from './app/bsky/graph/getLists'\nimport getListsWithMembership from './app/bsky/graph/getListsWithMembership'\nimport getMutes from './app/bsky/graph/getMutes'\nimport getRelationships from './app/bsky/graph/getRelationships'\nimport getStarterPack from './app/bsky/graph/getStarterPack'\nimport getStarterPacks from './app/bsky/graph/getStarterPacks'\nimport getStarterPacksWithMembership from './app/bsky/graph/getStarterPacksWithMembership'\nimport getSuggestedFollowsByActor from './app/bsky/graph/getSuggestedFollowsByActor'\nimport muteActor from './app/bsky/graph/muteActor'\nimport muteActorList from './app/bsky/graph/muteActorList'\nimport muteThread from './app/bsky/graph/muteThread'\nimport searchStarterPacks from './app/bsky/graph/searchStarterPacks'\nimport unmuteActor from './app/bsky/graph/unmuteActor'\nimport unmuteActorList from './app/bsky/graph/unmuteActorList'\nimport unmuteThread from './app/bsky/graph/unmuteThread'\nimport getLabelerServices from './app/bsky/labeler/getServices'\nimport getPreferences from './app/bsky/notification/getPreferences'\nimport getUnreadCount from './app/bsky/notification/getUnreadCount'\nimport listActivitySubscriptions from './app/bsky/notification/listActivitySubscriptions'\nimport listNotifications from './app/bsky/notification/listNotifications'\nimport putActivitySubscription from './app/bsky/notification/putActivitySubscription'\nimport putPreferences from './app/bsky/notification/putPreferences'\nimport putPreferencesV2 from './app/bsky/notification/putPreferencesV2'\nimport registerPush from './app/bsky/notification/registerPush'\nimport updateSeen from './app/bsky/notification/updateSeen'\nimport getAgeAssuranceState from './app/bsky/unspecced/getAgeAssuranceState'\nimport getConfig from './app/bsky/unspecced/getConfig'\nimport getOnboardingSuggestedStarterPacks from './app/bsky/unspecced/getOnboardingSuggestedStarterPacks'\nimport getPopularFeedGenerators from './app/bsky/unspecced/getPopularFeedGenerators'\nimport getPostThreadOtherV2 from './app/bsky/unspecced/getPostThreadOtherV2'\nimport getPostThreadV2 from './app/bsky/unspecced/getPostThreadV2'\nimport getUnspeccedSuggestedFeeds from './app/bsky/unspecced/getSuggestedFeeds'\nimport getSuggestedStarterPacks from './app/bsky/unspecced/getSuggestedStarterPacks'\nimport getSuggestedUsers from './app/bsky/unspecced/getSuggestedUsers'\nimport getTaggedSuggestions from './app/bsky/unspecced/getTaggedSuggestions'\nimport getTrendingTopics from './app/bsky/unspecced/getTrendingTopics'\nimport getTrends from './app/bsky/unspecced/getTrends'\nimport initAgeAssurance from './app/bsky/unspecced/initAgeAssurance'\nimport getAccountInfos from './com/atproto/admin/getAccountInfos'\nimport getSubjectStatus from './com/atproto/admin/getSubjectStatus'\nimport updateSubjectStatus from './com/atproto/admin/updateSubjectStatus'\nimport resolveHandle from './com/atproto/identity/resolveHandle'\nimport queryLabels from './com/atproto/label/queryLabels'\nimport getRecord from './com/atproto/repo/getRecord'\nimport fetchLabels from './com/atproto/temp/fetchLabels'\n\nexport * as health from './health'\n\nexport * as wellKnown from './well-known'\n\nexport * as blobResolver from './blob-resolver'\n\nexport * as external from './external'\n\nexport * as sitemap from './sitemap'\n\nexport default function (server: Server, ctx: AppContext) {\n // app.bsky\n getTimeline(server, ctx)\n createBookmark(server, ctx)\n deleteBookmark(server, ctx)\n getBookmarks(server, ctx)\n dismissMatch(server, ctx)\n getMatches(server, ctx)\n getSyncStatus(server, ctx)\n importContacts(server, ctx)\n removeData(server, ctx)\n sendNotification(server, ctx)\n startPhoneVerification(server, ctx)\n verifyPhone(server, ctx)\n getActorFeeds(server, ctx)\n getSuggestedFeeds(server, ctx)\n getAuthorFeed(server, ctx)\n getFeed(server, ctx)\n getFeedGenerator(server, ctx)\n getFeedGenerators(server, ctx)\n getLikes(server, ctx)\n getListFeed(server, ctx)\n getQuotes(server, ctx)\n getPostThread(server, ctx)\n getPostThreadOtherV2(server, ctx)\n getPostThreadV2(server, ctx)\n getPosts(server, ctx)\n searchPosts(server, ctx)\n getActorLikes(server, ctx)\n getProfile(server, ctx)\n getProfiles(server, ctx)\n getRepostedBy(server, ctx)\n getActorStarterPacks(server, ctx)\n getBlocks(server, ctx)\n getListBlocks(server, ctx)\n getFollowers(server, ctx)\n getKnownFollowers(server, ctx)\n getFollows(server, ctx)\n getList(server, ctx)\n getLists(server, ctx)\n getListsWithMembership(server, ctx)\n getListMutes(server, ctx)\n getMutes(server, ctx)\n getRelationships(server, ctx)\n getStarterPack(server, ctx)\n getStarterPacks(server, ctx)\n getStarterPacksWithMembership(server, ctx)\n searchStarterPacks(server, ctx)\n muteActor(server, ctx)\n unmuteActor(server, ctx)\n muteActorList(server, ctx)\n unmuteActorList(server, ctx)\n muteThread(server, ctx)\n unmuteThread(server, ctx)\n getSuggestedFollowsByActor(server, ctx)\n getTrendingTopics(server, ctx)\n getTrends(server, ctx)\n getOnboardingSuggestedStarterPacks(server, ctx)\n getSuggestedStarterPacks(server, ctx)\n getSuggestedUsers(server, ctx)\n getUnspeccedSuggestedFeeds(server, ctx)\n getLabelerServices(server, ctx)\n searchActors(server, ctx)\n searchActorsTypeahead(server, ctx)\n getSuggestions(server, ctx)\n getPreferences(server, ctx)\n getUnreadCount(server, ctx)\n listActivitySubscriptions(server, ctx)\n listNotifications(server, ctx)\n putActivitySubscription(server, ctx)\n updateSeen(server, ctx)\n putPreferences(server, ctx)\n putPreferencesV2(server, ctx)\n registerPush(server, ctx)\n getConfig(server, ctx)\n getPopularFeedGenerators(server, ctx)\n getTaggedSuggestions(server, ctx)\n getAgeAssuranceState(server, ctx)\n initAgeAssurance(server, ctx)\n aaGetConfig(server, ctx)\n aaGetState(server, ctx)\n aaBegin(server, ctx)\n // com.atproto\n getSubjectStatus(server, ctx)\n updateSubjectStatus(server, ctx)\n getAccountInfos(server, ctx)\n resolveHandle(server, ctx)\n getRecord(server, ctx)\n fetchLabels(server, ctx)\n queryLabels(server, ctx)\n return server\n}\n"]}