@atproto/dev-env 0.4.9 → 0.5.0

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 (157) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/bin.js +1 -4
  3. package/dist/bin.d.ts +1 -1
  4. package/dist/bin.d.ts.map +1 -1
  5. package/dist/bin.js +8 -10
  6. package/dist/bin.js.map +1 -1
  7. package/dist/bsky.d.ts +1 -1
  8. package/dist/bsky.d.ts.map +1 -1
  9. package/dist/bsky.js +30 -113
  10. package/dist/bsky.js.map +1 -1
  11. package/dist/bsync.d.ts +1 -1
  12. package/dist/bsync.d.ts.map +1 -1
  13. package/dist/bsync.js +7 -62
  14. package/dist/bsync.js.map +1 -1
  15. package/dist/const.js +3 -6
  16. package/dist/const.js.map +1 -1
  17. package/dist/env.js +3 -8
  18. package/dist/env.js.map +1 -1
  19. package/dist/feed-gen.js +18 -78
  20. package/dist/feed-gen.js.map +1 -1
  21. package/dist/index.d.ts +14 -14
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +16 -55
  24. package/dist/index.js.map +1 -1
  25. package/dist/introspect.d.ts +4 -4
  26. package/dist/introspect.d.ts.map +1 -1
  27. package/dist/introspect.js +8 -25
  28. package/dist/introspect.js.map +1 -1
  29. package/dist/mock/data.js +2 -5
  30. package/dist/mock/data.js.map +1 -1
  31. package/dist/mock/img/blur-hash-avatar-b64.js +1 -3
  32. package/dist/mock/img/blur-hash-avatar-b64.js.map +1 -1
  33. package/dist/mock/img/labeled-img-b64.js +1 -3
  34. package/dist/mock/img/labeled-img-b64.js.map +1 -1
  35. package/dist/mock/index.d.ts +1 -1
  36. package/dist/mock/index.d.ts.map +1 -1
  37. package/dist/mock/index.js +29 -36
  38. package/dist/mock/index.js.map +1 -1
  39. package/dist/moderator-client.d.ts +4 -3
  40. package/dist/moderator-client.d.ts.map +1 -1
  41. package/dist/moderator-client.js +2 -17
  42. package/dist/moderator-client.js.map +1 -1
  43. package/dist/network-no-appview.d.ts +5 -5
  44. package/dist/network-no-appview.d.ts.map +1 -1
  45. package/dist/network-no-appview.js +14 -33
  46. package/dist/network-no-appview.js.map +1 -1
  47. package/dist/network.d.ts +7 -7
  48. package/dist/network.d.ts.map +1 -1
  49. package/dist/network.js +39 -104
  50. package/dist/network.js.map +1 -1
  51. package/dist/ozone.d.ts +2 -2
  52. package/dist/ozone.d.ts.map +1 -1
  53. package/dist/ozone.js +30 -106
  54. package/dist/ozone.js.map +1 -1
  55. package/dist/pds.d.ts +1 -1
  56. package/dist/pds.d.ts.map +1 -1
  57. package/dist/pds.js +29 -84
  58. package/dist/pds.js.map +1 -1
  59. package/dist/plc.d.ts +1 -1
  60. package/dist/plc.d.ts.map +1 -1
  61. package/dist/plc.js +9 -64
  62. package/dist/plc.js.map +1 -1
  63. package/dist/seed/author-feed.d.ts +2 -2
  64. package/dist/seed/author-feed.d.ts.map +1 -1
  65. package/dist/seed/author-feed.js +3 -8
  66. package/dist/seed/author-feed.js.map +1 -1
  67. package/dist/seed/basic.d.ts +3 -3
  68. package/dist/seed/basic.d.ts.map +1 -1
  69. package/dist/seed/basic.js +20 -26
  70. package/dist/seed/basic.js.map +1 -1
  71. package/dist/seed/client.d.ts +1 -1
  72. package/dist/seed/client.d.ts.map +1 -1
  73. package/dist/seed/client.js +29 -157
  74. package/dist/seed/client.js.map +1 -1
  75. package/dist/seed/follows.d.ts +1 -1
  76. package/dist/seed/follows.d.ts.map +1 -1
  77. package/dist/seed/follows.js +1 -3
  78. package/dist/seed/follows.js.map +1 -1
  79. package/dist/seed/index.d.ts +10 -10
  80. package/dist/seed/index.d.ts.map +1 -1
  81. package/dist/seed/index.js +10 -39
  82. package/dist/seed/index.js.map +1 -1
  83. package/dist/seed/likes.d.ts +2 -2
  84. package/dist/seed/likes.d.ts.map +1 -1
  85. package/dist/seed/likes.js +3 -8
  86. package/dist/seed/likes.js.map +1 -1
  87. package/dist/seed/quotes.d.ts +2 -2
  88. package/dist/seed/quotes.d.ts.map +1 -1
  89. package/dist/seed/quotes.js +3 -8
  90. package/dist/seed/quotes.js.map +1 -1
  91. package/dist/seed/reposts.d.ts +2 -2
  92. package/dist/seed/reposts.d.ts.map +1 -1
  93. package/dist/seed/reposts.js +3 -8
  94. package/dist/seed/reposts.js.map +1 -1
  95. package/dist/seed/thread-v2.d.ts +30 -30
  96. package/dist/seed/thread-v2.d.ts.map +1 -1
  97. package/dist/seed/thread-v2.js +35 -48
  98. package/dist/seed/thread-v2.js.map +1 -1
  99. package/dist/seed/users-bulk.d.ts +2 -2
  100. package/dist/seed/users-bulk.d.ts.map +1 -1
  101. package/dist/seed/users-bulk.js +3 -5
  102. package/dist/seed/users-bulk.js.map +1 -1
  103. package/dist/seed/users.d.ts +2 -2
  104. package/dist/seed/users.d.ts.map +1 -1
  105. package/dist/seed/users.js +1 -3
  106. package/dist/seed/users.js.map +1 -1
  107. package/dist/seed/verifications.d.ts +2 -2
  108. package/dist/seed/verifications.d.ts.map +1 -1
  109. package/dist/seed/verifications.js +3 -5
  110. package/dist/seed/verifications.js.map +1 -1
  111. package/dist/service-profile-lexicon.d.ts +2 -2
  112. package/dist/service-profile-lexicon.d.ts.map +1 -1
  113. package/dist/service-profile-lexicon.js +2 -6
  114. package/dist/service-profile-lexicon.js.map +1 -1
  115. package/dist/service-profile-ozone.d.ts +2 -2
  116. package/dist/service-profile-ozone.d.ts.map +1 -1
  117. package/dist/service-profile-ozone.js +6 -20
  118. package/dist/service-profile-ozone.js.map +1 -1
  119. package/dist/service-profile.d.ts +1 -1
  120. package/dist/service-profile.d.ts.map +1 -1
  121. package/dist/service-profile.js +6 -25
  122. package/dist/service-profile.js.map +1 -1
  123. package/dist/types.js +1 -2
  124. package/dist/util.d.ts +3 -3
  125. package/dist/util.d.ts.map +1 -1
  126. package/dist/util.js +13 -54
  127. package/dist/util.js.map +1 -1
  128. package/package.json +25 -20
  129. package/src/bin.ts +4 -4
  130. package/src/bsky.ts +2 -2
  131. package/src/bsync.ts +1 -1
  132. package/src/index.ts +14 -14
  133. package/src/introspect.ts +4 -4
  134. package/src/mock/index.ts +11 -8
  135. package/src/moderator-client.ts +2 -1
  136. package/src/network-no-appview.ts +6 -6
  137. package/src/network.ts +11 -11
  138. package/src/ozone.ts +4 -4
  139. package/src/pds.ts +2 -2
  140. package/src/plc.ts +1 -1
  141. package/src/seed/author-feed.ts +2 -2
  142. package/src/seed/basic.ts +6 -6
  143. package/src/seed/client.ts +3 -1
  144. package/src/seed/follows.ts +1 -1
  145. package/src/seed/index.ts +10 -10
  146. package/src/seed/likes.ts +2 -2
  147. package/src/seed/quotes.ts +2 -2
  148. package/src/seed/reposts.ts +2 -2
  149. package/src/seed/thread-v2.ts +13 -9
  150. package/src/seed/users-bulk.ts +1 -1
  151. package/src/seed/users.ts +1 -1
  152. package/src/seed/verifications.ts +2 -2
  153. package/src/service-profile-lexicon.ts +2 -2
  154. package/src/service-profile-ozone.ts +2 -2
  155. package/src/service-profile.ts +1 -1
  156. package/src/util.ts +3 -3
  157. package/tsconfig.build.tsbuildinfo +1 -1
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LexiconAuthorityProfile = void 0;
4
- const service_profile_1 = require("./service-profile");
1
+ import { ServiceProfile } from './service-profile.js';
5
2
  const LEXICONS = [
6
3
  {
7
4
  lexicon: 1,
@@ -67,7 +64,7 @@ const LEXICONS = [
67
64
  },
68
65
  },
69
66
  ];
70
- class LexiconAuthorityProfile extends service_profile_1.ServiceProfile {
67
+ export class LexiconAuthorityProfile extends ServiceProfile {
71
68
  static async create(pds, userDetails = {
72
69
  email: 'lex-authority@test.com',
73
70
  handle: 'lex-authority.test',
@@ -92,5 +89,4 @@ class LexiconAuthorityProfile extends service_profile_1.ServiceProfile {
92
89
  }
93
90
  }
94
91
  }
95
- exports.LexiconAuthorityProfile = LexiconAuthorityProfile;
96
92
  //# sourceMappingURL=service-profile-lexicon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service-profile-lexicon.js","sourceRoot":"","sources":["../src/service-profile-lexicon.ts"],"names":[],"mappings":";;;AAEA,uDAAkD;AAElD,MAAM,QAAQ,GAA0B;IACtC;QACE,OAAO,EAAE,CAAC;QACV,EAAE,EAAE,wCAAwC;QAC5C,IAAI,EAAE;YACJ,IAAI,EAAE;gBACJ,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,YAAY;gBACnB,YAAY,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE;gBAClC,MAAM,EAAE,2BAA2B;gBACnC,aAAa,EAAE;oBACb,OAAO,EAAE,kCAAkC;iBAC5C;gBACD,WAAW,EAAE;oBACX;wBACE,IAAI,EAAE,YAAY;wBAClB,QAAQ,EAAE,KAAK;wBACf,GAAG,EAAE,GAAG;wBACR,GAAG,EAAE,CAAC,qCAAqC,CAAC;qBAC7C;iBACF;aACF;SACF;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,EAAE,EAAE,sCAAsC;QAC1C,IAAI,EAAE;YACJ,IAAI,EAAE;gBACJ,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,UAAU;gBACjB,YAAY,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE;gBAClC,MAAM,EAAE,8BAA8B;gBACtC,aAAa,EAAE;oBACb,OAAO,EAAE,kCAAkC;iBAC5C;gBACD,WAAW,EAAE;oBACX;wBACE,IAAI,EAAE,YAAY;wBAClB,QAAQ,EAAE,KAAK;wBACf,UAAU,EAAE,IAAI;wBAChB,GAAG,EAAE;4BACH,iCAAiC;4BACjC,sCAAsC;4BACtC,oCAAoC;yBACrC;qBACF;oBACD;wBACE,IAAI,EAAE,YAAY;wBAClB,QAAQ,EAAE,MAAM;wBAChB,UAAU,EAAE;4BACV,4BAA4B;4BAC5B,2BAA2B;yBAC5B;qBACF;oBACD;wBACE,IAAI,EAAE,YAAY;wBAClB,QAAQ,EAAE,MAAM;wBAChB,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;qBAC/B;iBACF;aACF;SACF;KACF;CACF,CAAA;AAED,MAAa,uBAAwB,SAAQ,gCAAc;IAClD,MAAM,CAAC,KAAK,CAAC,MAAM,CACxB,GAAY,EACZ,WAAW,GAAG;QACZ,KAAK,EAAE,wBAAwB;QAC/B,MAAM,EAAE,oBAAoB;QAC5B,QAAQ,EAAE,SAAS;KACpB;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;QAC5B,MAAM,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAA;QAEtC,OAAO,IAAI,uBAAuB,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;IAC7D,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAC5C,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAClB;YACE,WAAW,EAAE,mBAAmB;YAChC,WAAW,EAAE,kEAAkE;SAChF,CACF,CAAA;QAED,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;gBAC7C,IAAI,EAAE,IAAI,CAAC,GAAG;gBACd,UAAU,EAAE,4BAA4B;gBACxC,IAAI,EAAE,GAAG,CAAC,EAAE;gBACZ,MAAM,EAAE,GAAG;aACZ,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF;AAjCD,0DAiCC","sourcesContent":["import { LexiconDoc } from '@atproto/lexicon'\nimport { TestPds } from './pds'\nimport { ServiceProfile } from './service-profile'\n\nconst LEXICONS: readonly LexiconDoc[] = [\n {\n lexicon: 1,\n id: 'com.atproto.moderation.basePermissions',\n defs: {\n main: {\n type: 'permission-set',\n title: 'Moderation',\n 'title:lang': { fr: 'Modération' },\n detail: 'Create moderation reports',\n 'detail:lang': {\n 'fr-FR': 'Créer des rapports de modération',\n },\n permissions: [\n {\n type: 'permission',\n resource: 'rpc',\n aud: '*',\n lxm: ['com.atproto.moderation.createReport'],\n },\n ],\n },\n },\n },\n {\n lexicon: 1,\n id: 'com.example.calendar.basePermissions',\n defs: {\n main: {\n type: 'permission-set',\n title: 'Calendar',\n 'title:lang': { fr: 'Calendrier' },\n detail: 'Manage your events and RSVPs',\n 'detail:lang': {\n 'fr-BE': 'Gérer vos événements et réponses',\n },\n permissions: [\n {\n type: 'permission',\n resource: 'rpc',\n inheritAud: true,\n lxm: [\n 'com.example.calendar.listEvents',\n 'com.example.calendar.getEventDetails',\n 'com.example.calendar.getEventRsvps',\n ],\n },\n {\n type: 'permission',\n resource: 'repo',\n collection: [\n 'com.example.calendar.event',\n 'com.example.calendar.rsvp',\n ],\n },\n {\n type: 'permission',\n resource: 'blob',\n accept: ['image/*', 'video/*'],\n },\n ],\n },\n },\n },\n]\n\nexport class LexiconAuthorityProfile extends ServiceProfile {\n public static async create(\n pds: TestPds,\n userDetails = {\n email: 'lex-authority@test.com',\n handle: 'lex-authority.test',\n password: 'hunter2',\n },\n ) {\n const agent = pds.getAgent()\n await agent.createAccount(userDetails)\n\n return new LexiconAuthorityProfile(pds, agent, userDetails)\n }\n\n async createRecords() {\n await this.agent.app.bsky.actor.profile.create(\n { repo: this.did },\n {\n displayName: 'Lexicon Authority',\n description: `the repo containing all the lexicons that can be resolved in dev`,\n },\n )\n\n for (const doc of LEXICONS) {\n await this.agent.com.atproto.repo.createRecord({\n repo: this.did,\n collection: 'com.atproto.lexicon.schema',\n rkey: doc.id,\n record: doc,\n })\n }\n }\n}\n"]}
1
+ {"version":3,"file":"service-profile-lexicon.js","sourceRoot":"","sources":["../src/service-profile-lexicon.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,MAAM,QAAQ,GAA0B;IACtC;QACE,OAAO,EAAE,CAAC;QACV,EAAE,EAAE,wCAAwC;QAC5C,IAAI,EAAE;YACJ,IAAI,EAAE;gBACJ,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,YAAY;gBACnB,YAAY,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE;gBAClC,MAAM,EAAE,2BAA2B;gBACnC,aAAa,EAAE;oBACb,OAAO,EAAE,kCAAkC;iBAC5C;gBACD,WAAW,EAAE;oBACX;wBACE,IAAI,EAAE,YAAY;wBAClB,QAAQ,EAAE,KAAK;wBACf,GAAG,EAAE,GAAG;wBACR,GAAG,EAAE,CAAC,qCAAqC,CAAC;qBAC7C;iBACF;aACF;SACF;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,EAAE,EAAE,sCAAsC;QAC1C,IAAI,EAAE;YACJ,IAAI,EAAE;gBACJ,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,UAAU;gBACjB,YAAY,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE;gBAClC,MAAM,EAAE,8BAA8B;gBACtC,aAAa,EAAE;oBACb,OAAO,EAAE,kCAAkC;iBAC5C;gBACD,WAAW,EAAE;oBACX;wBACE,IAAI,EAAE,YAAY;wBAClB,QAAQ,EAAE,KAAK;wBACf,UAAU,EAAE,IAAI;wBAChB,GAAG,EAAE;4BACH,iCAAiC;4BACjC,sCAAsC;4BACtC,oCAAoC;yBACrC;qBACF;oBACD;wBACE,IAAI,EAAE,YAAY;wBAClB,QAAQ,EAAE,MAAM;wBAChB,UAAU,EAAE;4BACV,4BAA4B;4BAC5B,2BAA2B;yBAC5B;qBACF;oBACD;wBACE,IAAI,EAAE,YAAY;wBAClB,QAAQ,EAAE,MAAM;wBAChB,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;qBAC/B;iBACF;aACF;SACF;KACF;CACF,CAAA;AAED,MAAM,OAAO,uBAAwB,SAAQ,cAAc;IAClD,MAAM,CAAC,KAAK,CAAC,MAAM,CACxB,GAAY,EACZ,WAAW,GAAG;QACZ,KAAK,EAAE,wBAAwB;QAC/B,MAAM,EAAE,oBAAoB;QAC5B,QAAQ,EAAE,SAAS;KACpB;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;QAC5B,MAAM,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAA;QAEtC,OAAO,IAAI,uBAAuB,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;IAC7D,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAC5C,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAClB;YACE,WAAW,EAAE,mBAAmB;YAChC,WAAW,EAAE,kEAAkE;SAChF,CACF,CAAA;QAED,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;gBAC7C,IAAI,EAAE,IAAI,CAAC,GAAG;gBACd,UAAU,EAAE,4BAA4B;gBACxC,IAAI,EAAE,GAAG,CAAC,EAAE;gBACZ,MAAM,EAAE,GAAG;aACZ,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF","sourcesContent":["import { LexiconDoc } from '@atproto/lexicon'\nimport { TestPds } from './pds.js'\nimport { ServiceProfile } from './service-profile.js'\n\nconst LEXICONS: readonly LexiconDoc[] = [\n {\n lexicon: 1,\n id: 'com.atproto.moderation.basePermissions',\n defs: {\n main: {\n type: 'permission-set',\n title: 'Moderation',\n 'title:lang': { fr: 'Modération' },\n detail: 'Create moderation reports',\n 'detail:lang': {\n 'fr-FR': 'Créer des rapports de modération',\n },\n permissions: [\n {\n type: 'permission',\n resource: 'rpc',\n aud: '*',\n lxm: ['com.atproto.moderation.createReport'],\n },\n ],\n },\n },\n },\n {\n lexicon: 1,\n id: 'com.example.calendar.basePermissions',\n defs: {\n main: {\n type: 'permission-set',\n title: 'Calendar',\n 'title:lang': { fr: 'Calendrier' },\n detail: 'Manage your events and RSVPs',\n 'detail:lang': {\n 'fr-BE': 'Gérer vos événements et réponses',\n },\n permissions: [\n {\n type: 'permission',\n resource: 'rpc',\n inheritAud: true,\n lxm: [\n 'com.example.calendar.listEvents',\n 'com.example.calendar.getEventDetails',\n 'com.example.calendar.getEventRsvps',\n ],\n },\n {\n type: 'permission',\n resource: 'repo',\n collection: [\n 'com.example.calendar.event',\n 'com.example.calendar.rsvp',\n ],\n },\n {\n type: 'permission',\n resource: 'blob',\n accept: ['image/*', 'video/*'],\n },\n ],\n },\n },\n },\n]\n\nexport class LexiconAuthorityProfile extends ServiceProfile {\n public static async create(\n pds: TestPds,\n userDetails = {\n email: 'lex-authority@test.com',\n handle: 'lex-authority.test',\n password: 'hunter2',\n },\n ) {\n const agent = pds.getAgent()\n await agent.createAccount(userDetails)\n\n return new LexiconAuthorityProfile(pds, agent, userDetails)\n }\n\n async createRecords() {\n await this.agent.app.bsky.actor.profile.create(\n { repo: this.did },\n {\n displayName: 'Lexicon Authority',\n description: `the repo containing all the lexicons that can be resolved in dev`,\n },\n )\n\n for (const doc of LEXICONS) {\n await this.agent.com.atproto.repo.createRecord({\n repo: this.did,\n collection: 'com.atproto.lexicon.schema',\n rkey: doc.id,\n record: doc,\n })\n }\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { AtpAgent } from '@atproto/api';
2
2
  import { Secp256k1Keypair } from '@atproto/crypto';
3
- import { TestPds } from './pds';
4
- import { ServiceMigrationOptions, ServiceProfile, ServiceUserDetails } from './service-profile';
3
+ import { TestPds } from './pds.js';
4
+ import { ServiceMigrationOptions, ServiceProfile, ServiceUserDetails } from './service-profile.js';
5
5
  export declare class OzoneServiceProfile extends ServiceProfile {
6
6
  readonly ozoneUrl: string;
7
7
  readonly key: Secp256k1Keypair;
@@ -1 +1 @@
1
- {"version":3,"file":"service-profile-ozone.d.ts","sourceRoot":"","sources":["../src/service-profile-ozone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,kBAAkB,EACnB,MAAM,mBAAmB,CAAA;AAE1B,qBAAa,mBAAoB,SAAQ,cAAc;IAsBnD,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,GAAG,EAAE,gBAAgB;WAtBnB,MAAM,CACjB,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,EAChB,WAAW;;;;KAIV;IAUH,SAAS,aACP,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,QAAQ,EACf,WAAW,EAAE,kBAAkB,EACtB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,gBAAgB;IAK1B,gCAAgC;IAOhC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,uBAA4B;IAiB7D,aAAa;CAyTpB"}
1
+ {"version":3,"file":"service-profile-ozone.d.ts","sourceRoot":"","sources":["../src/service-profile-ozone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,kBAAkB,EACnB,MAAM,sBAAsB,CAAA;AAE7B,qBAAa,mBAAoB,SAAQ,cAAc;IAsBnD,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,GAAG,EAAE,gBAAgB;WAtBnB,MAAM,CACjB,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,EAChB,WAAW;;;;KAIV;IAUH,SAAS,aACP,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,QAAQ,EACf,WAAW,EAAE,kBAAkB,EACtB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,gBAAgB;IAK1B,gCAAgC;IAOhC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,uBAA4B;IAiB7D,aAAa;CAyTpB"}
@@ -1,9 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OzoneServiceProfile = void 0;
4
- const crypto_1 = require("@atproto/crypto");
5
- const service_profile_1 = require("./service-profile");
6
- class OzoneServiceProfile extends service_profile_1.ServiceProfile {
1
+ import { Secp256k1Keypair } from '@atproto/crypto';
2
+ import { ServiceProfile, } from './service-profile.js';
3
+ export class OzoneServiceProfile extends ServiceProfile {
7
4
  static async create(pds, ozoneUrl, userDetails = {
8
5
  email: 'mod-authority@test.com',
9
6
  handle: 'mod-authority.test',
@@ -11,23 +8,13 @@ class OzoneServiceProfile extends service_profile_1.ServiceProfile {
11
8
  }) {
12
9
  const agent = pds.getAgent();
13
10
  await agent.createAccount(userDetails);
14
- const key = await crypto_1.Secp256k1Keypair.create({ exportable: true });
11
+ const key = await Secp256k1Keypair.create({ exportable: true });
15
12
  return new OzoneServiceProfile(pds, agent, userDetails, ozoneUrl, key);
16
13
  }
17
14
  constructor(pds, agent, userDetails, ozoneUrl, key) {
18
15
  super(pds, agent, userDetails);
19
- Object.defineProperty(this, "ozoneUrl", {
20
- enumerable: true,
21
- configurable: true,
22
- writable: true,
23
- value: ozoneUrl
24
- });
25
- Object.defineProperty(this, "key", {
26
- enumerable: true,
27
- configurable: true,
28
- writable: true,
29
- value: key
30
- });
16
+ this.ozoneUrl = ozoneUrl;
17
+ this.key = key;
31
18
  }
32
19
  async createAppPasswordForVerification() {
33
20
  const { data } = await this.agent.com.atproto.server.createAppPassword({
@@ -343,5 +330,4 @@ class OzoneServiceProfile extends service_profile_1.ServiceProfile {
343
330
  });
344
331
  }
345
332
  }
346
- exports.OzoneServiceProfile = OzoneServiceProfile;
347
333
  //# sourceMappingURL=service-profile-ozone.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service-profile-ozone.js","sourceRoot":"","sources":["../src/service-profile-ozone.ts"],"names":[],"mappings":"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","sourcesContent":["import { AtpAgent } from '@atproto/api'\nimport { Secp256k1Keypair } from '@atproto/crypto'\nimport { TestPds } from './pds'\nimport {\n ServiceMigrationOptions,\n ServiceProfile,\n ServiceUserDetails,\n} from './service-profile'\n\nexport class OzoneServiceProfile extends ServiceProfile {\n static async create(\n pds: TestPds,\n ozoneUrl: string,\n userDetails = {\n email: 'mod-authority@test.com',\n handle: 'mod-authority.test',\n password: 'hunter2',\n },\n ) {\n const agent = pds.getAgent()\n await agent.createAccount(userDetails)\n\n const key = await Secp256k1Keypair.create({ exportable: true })\n\n return new OzoneServiceProfile(pds, agent, userDetails, ozoneUrl, key)\n }\n\n protected constructor(\n pds: TestPds,\n agent: AtpAgent,\n userDetails: ServiceUserDetails,\n readonly ozoneUrl: string,\n readonly key: Secp256k1Keypair,\n ) {\n super(pds, agent, userDetails)\n }\n\n async createAppPasswordForVerification() {\n const { data } = await this.agent.com.atproto.server.createAppPassword({\n name: 'ozone-verifier',\n })\n return data.password\n }\n\n async migrateTo(pds: TestPds, options: ServiceMigrationOptions = {}) {\n await super.migrateTo(pds, {\n ...options,\n services: {\n ...options.services,\n atproto_labeler: {\n type: 'AtprotoLabeler',\n endpoint: this.ozoneUrl,\n },\n },\n verificationMethods: {\n ...options.verificationMethods,\n atproto_label: this.key.did(),\n },\n })\n }\n\n async createRecords() {\n await this.agent.app.bsky.actor.profile.create(\n { repo: this.did },\n {\n displayName: 'Dev-env Moderation',\n description: `The pretend version of mod.bsky.app`,\n },\n )\n\n await this.agent.app.bsky.labeler.service.create(\n { repo: this.did, rkey: 'self' },\n {\n policies: {\n labelValues: [\n '!hide',\n '!warn',\n 'porn',\n 'sexual',\n 'nudity',\n 'sexual-figurative',\n 'graphic-media',\n 'self-harm',\n 'sensitive',\n 'extremist',\n 'intolerant',\n 'threat',\n 'rude',\n 'illicit',\n 'security',\n 'unsafe-link',\n 'impersonation',\n 'misinformation',\n 'scam',\n 'engagement-farming',\n 'spam',\n 'rumor',\n 'misleading',\n 'inauthentic',\n ],\n labelValueDefinitions: [\n {\n identifier: 'spam',\n blurs: 'content',\n severity: 'inform',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Spam',\n description:\n 'Unwanted, repeated, or unrelated actions that bother users.',\n },\n ],\n },\n {\n identifier: 'impersonation',\n blurs: 'none',\n severity: 'inform',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Impersonation',\n description:\n 'Pretending to be someone else without permission.',\n },\n ],\n },\n {\n identifier: 'scam',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Scam',\n description: 'Scams, phishing & fraud.',\n },\n ],\n },\n {\n identifier: 'intolerant',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'warn',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Intolerance',\n description: 'Discrimination against protected groups.',\n },\n ],\n },\n {\n identifier: 'self-harm',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'warn',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Self-Harm',\n description:\n 'Promotes self-harm, including graphic images, glorifying discussions, or triggering stories.',\n },\n ],\n },\n {\n identifier: 'security',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Security Concerns',\n description:\n 'May be unsafe and could harm your device, steal your info, or get your account hacked.',\n },\n ],\n },\n {\n identifier: 'misleading',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'warn',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Misleading',\n description:\n 'Altered images/videos, deceptive links, or false statements.',\n },\n ],\n },\n {\n identifier: 'threat',\n blurs: 'content',\n severity: 'inform',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Threats',\n description:\n 'Promotes violence or harm towards others, including threats, incitement, or advocacy of harm.',\n },\n ],\n },\n {\n identifier: 'unsafe-link',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Unsafe link',\n description:\n 'Links to harmful sites with malware, phishing, or violating content that risk security and privacy.',\n },\n ],\n },\n {\n identifier: 'illicit',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Illicit',\n description:\n 'Promoting or selling potentially illicit goods, services, or activities.',\n },\n ],\n },\n {\n identifier: 'misinformation',\n blurs: 'content',\n severity: 'inform',\n defaultSetting: 'warn',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Misinformation',\n description:\n 'Spreading false or misleading info, including unverified claims and harmful conspiracy theories.',\n },\n ],\n },\n {\n identifier: 'rumor',\n blurs: 'content',\n severity: 'inform',\n defaultSetting: 'warn',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Rumor',\n description:\n 'Approach with caution, as these claims lack evidence from credible sources.',\n },\n ],\n },\n {\n identifier: 'rude',\n blurs: 'content',\n severity: 'inform',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Rude',\n description:\n 'Rude or impolite, including crude language and disrespectful comments, without constructive purpose.',\n },\n ],\n },\n {\n identifier: 'extremist',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Extremist',\n description:\n 'Radical views advocating violence, hate, or discrimination against individuals or groups.',\n },\n ],\n },\n {\n identifier: 'sensitive',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'warn',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Sensitive',\n description:\n 'May be upsetting, covering topics like substance abuse or mental health issues, cautioning sensitive viewers.',\n },\n ],\n },\n {\n identifier: 'engagement-farming',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Engagement Farming',\n description:\n 'Insincere content or bulk actions aimed at gaining followers, including frequent follows, posts, and likes.',\n },\n ],\n },\n {\n identifier: 'inauthentic',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Inauthentic Account',\n description: 'Bot or a person pretending to be someone else.',\n },\n ],\n },\n {\n identifier: 'sexual-figurative',\n blurs: 'media',\n severity: 'none',\n defaultSetting: 'show',\n adultOnly: true,\n locales: [\n {\n lang: 'en',\n name: 'Sexually Suggestive (Cartoon)',\n description:\n 'Art with explicit or suggestive sexual themes, including provocative imagery or partial nudity.',\n },\n ],\n },\n ],\n },\n createdAt: new Date().toISOString(),\n },\n )\n }\n}\n"]}
1
+ {"version":3,"file":"service-profile-ozone.js","sourceRoot":"","sources":["../src/service-profile-ozone.ts"],"names":[],"mappings":"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","sourcesContent":["import { AtpAgent } from '@atproto/api'\nimport { Secp256k1Keypair } from '@atproto/crypto'\nimport { TestPds } from './pds.js'\nimport {\n ServiceMigrationOptions,\n ServiceProfile,\n ServiceUserDetails,\n} from './service-profile.js'\n\nexport class OzoneServiceProfile extends ServiceProfile {\n static async create(\n pds: TestPds,\n ozoneUrl: string,\n userDetails = {\n email: 'mod-authority@test.com',\n handle: 'mod-authority.test',\n password: 'hunter2',\n },\n ) {\n const agent = pds.getAgent()\n await agent.createAccount(userDetails)\n\n const key = await Secp256k1Keypair.create({ exportable: true })\n\n return new OzoneServiceProfile(pds, agent, userDetails, ozoneUrl, key)\n }\n\n protected constructor(\n pds: TestPds,\n agent: AtpAgent,\n userDetails: ServiceUserDetails,\n readonly ozoneUrl: string,\n readonly key: Secp256k1Keypair,\n ) {\n super(pds, agent, userDetails)\n }\n\n async createAppPasswordForVerification() {\n const { data } = await this.agent.com.atproto.server.createAppPassword({\n name: 'ozone-verifier',\n })\n return data.password\n }\n\n async migrateTo(pds: TestPds, options: ServiceMigrationOptions = {}) {\n await super.migrateTo(pds, {\n ...options,\n services: {\n ...options.services,\n atproto_labeler: {\n type: 'AtprotoLabeler',\n endpoint: this.ozoneUrl,\n },\n },\n verificationMethods: {\n ...options.verificationMethods,\n atproto_label: this.key.did(),\n },\n })\n }\n\n async createRecords() {\n await this.agent.app.bsky.actor.profile.create(\n { repo: this.did },\n {\n displayName: 'Dev-env Moderation',\n description: `The pretend version of mod.bsky.app`,\n },\n )\n\n await this.agent.app.bsky.labeler.service.create(\n { repo: this.did, rkey: 'self' },\n {\n policies: {\n labelValues: [\n '!hide',\n '!warn',\n 'porn',\n 'sexual',\n 'nudity',\n 'sexual-figurative',\n 'graphic-media',\n 'self-harm',\n 'sensitive',\n 'extremist',\n 'intolerant',\n 'threat',\n 'rude',\n 'illicit',\n 'security',\n 'unsafe-link',\n 'impersonation',\n 'misinformation',\n 'scam',\n 'engagement-farming',\n 'spam',\n 'rumor',\n 'misleading',\n 'inauthentic',\n ],\n labelValueDefinitions: [\n {\n identifier: 'spam',\n blurs: 'content',\n severity: 'inform',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Spam',\n description:\n 'Unwanted, repeated, or unrelated actions that bother users.',\n },\n ],\n },\n {\n identifier: 'impersonation',\n blurs: 'none',\n severity: 'inform',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Impersonation',\n description:\n 'Pretending to be someone else without permission.',\n },\n ],\n },\n {\n identifier: 'scam',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Scam',\n description: 'Scams, phishing & fraud.',\n },\n ],\n },\n {\n identifier: 'intolerant',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'warn',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Intolerance',\n description: 'Discrimination against protected groups.',\n },\n ],\n },\n {\n identifier: 'self-harm',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'warn',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Self-Harm',\n description:\n 'Promotes self-harm, including graphic images, glorifying discussions, or triggering stories.',\n },\n ],\n },\n {\n identifier: 'security',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Security Concerns',\n description:\n 'May be unsafe and could harm your device, steal your info, or get your account hacked.',\n },\n ],\n },\n {\n identifier: 'misleading',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'warn',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Misleading',\n description:\n 'Altered images/videos, deceptive links, or false statements.',\n },\n ],\n },\n {\n identifier: 'threat',\n blurs: 'content',\n severity: 'inform',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Threats',\n description:\n 'Promotes violence or harm towards others, including threats, incitement, or advocacy of harm.',\n },\n ],\n },\n {\n identifier: 'unsafe-link',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Unsafe link',\n description:\n 'Links to harmful sites with malware, phishing, or violating content that risk security and privacy.',\n },\n ],\n },\n {\n identifier: 'illicit',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Illicit',\n description:\n 'Promoting or selling potentially illicit goods, services, or activities.',\n },\n ],\n },\n {\n identifier: 'misinformation',\n blurs: 'content',\n severity: 'inform',\n defaultSetting: 'warn',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Misinformation',\n description:\n 'Spreading false or misleading info, including unverified claims and harmful conspiracy theories.',\n },\n ],\n },\n {\n identifier: 'rumor',\n blurs: 'content',\n severity: 'inform',\n defaultSetting: 'warn',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Rumor',\n description:\n 'Approach with caution, as these claims lack evidence from credible sources.',\n },\n ],\n },\n {\n identifier: 'rude',\n blurs: 'content',\n severity: 'inform',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Rude',\n description:\n 'Rude or impolite, including crude language and disrespectful comments, without constructive purpose.',\n },\n ],\n },\n {\n identifier: 'extremist',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Extremist',\n description:\n 'Radical views advocating violence, hate, or discrimination against individuals or groups.',\n },\n ],\n },\n {\n identifier: 'sensitive',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'warn',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Sensitive',\n description:\n 'May be upsetting, covering topics like substance abuse or mental health issues, cautioning sensitive viewers.',\n },\n ],\n },\n {\n identifier: 'engagement-farming',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Engagement Farming',\n description:\n 'Insincere content or bulk actions aimed at gaining followers, including frequent follows, posts, and likes.',\n },\n ],\n },\n {\n identifier: 'inauthentic',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'hide',\n adultOnly: false,\n locales: [\n {\n lang: 'en',\n name: 'Inauthentic Account',\n description: 'Bot or a person pretending to be someone else.',\n },\n ],\n },\n {\n identifier: 'sexual-figurative',\n blurs: 'media',\n severity: 'none',\n defaultSetting: 'show',\n adultOnly: true,\n locales: [\n {\n lang: 'en',\n name: 'Sexually Suggestive (Cartoon)',\n description:\n 'Art with explicit or suggestive sexual themes, including provocative imagery or partial nudity.',\n },\n ],\n },\n ],\n },\n createdAt: new Date().toISOString(),\n },\n )\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { AtpAgent } from '@atproto/api';
2
2
  import { DidString } from '@atproto/lex';
3
- import { TestPds } from './pds';
3
+ import { TestPds } from './pds.js';
4
4
  export type ServiceUserDetails = {
5
5
  email: string;
6
6
  handle: string;
@@ -1 +1 @@
1
- {"version":3,"file":"service-profile.d.ts","sourceRoot":"","sources":["../src/service-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9C,CAAA;AAED,qBAAa,cAAc;IAEvB,SAAS,CAAC,GAAG,EAAE,OAAO;IACtB,yDAAyD;IACzD,SAAS,CAAC,KAAK,EAAE,QAAQ;IACzB,SAAS,CAAC,WAAW,EAAE,kBAAkB;IAJ3C,SAAS,aACG,GAAG,EAAE,OAAO;IACtB,yDAAyD;IAC/C,KAAK,EAAE,QAAQ,EACf,WAAW,EAAE,kBAAkB;IAG3C,IAAI,GAAG,IAAI,SAAS,CAEnB;IAEK,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,GAAE,uBAA4B;CAmEvE"}
1
+ {"version":3,"file":"service-profile.d.ts","sourceRoot":"","sources":["../src/service-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAElC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9C,CAAA;AAED,qBAAa,cAAc;IAEvB,SAAS,CAAC,GAAG,EAAE,OAAO;IACtB,yDAAyD;IACzD,SAAS,CAAC,KAAK,EAAE,QAAQ;IACzB,SAAS,CAAC,WAAW,EAAE,kBAAkB;IAJ3C,SAAS,aACG,GAAG,EAAE,OAAO;IACtB,yDAAyD;IAC/C,KAAK,EAAE,QAAQ,EACf,WAAW,EAAE,kBAAkB;IAG3C,IAAI,GAAG,IAAI,SAAS,CAEnB;IAEK,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,GAAE,uBAA4B;CAmEvE"}
@@ -1,28 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ServiceProfile = void 0;
4
- class ServiceProfile {
1
+ export class ServiceProfile {
5
2
  constructor(pds,
6
3
  /** @note assumes the session is already authenticated */
7
4
  agent, userDetails) {
8
- Object.defineProperty(this, "pds", {
9
- enumerable: true,
10
- configurable: true,
11
- writable: true,
12
- value: pds
13
- });
14
- Object.defineProperty(this, "agent", {
15
- enumerable: true,
16
- configurable: true,
17
- writable: true,
18
- value: agent
19
- });
20
- Object.defineProperty(this, "userDetails", {
21
- enumerable: true,
22
- configurable: true,
23
- writable: true,
24
- value: userDetails
25
- });
5
+ this.pds = pds;
6
+ this.agent = agent;
7
+ this.userDetails = userDetails;
26
8
  }
27
9
  get did() {
28
10
  return this.agent.assertDid;
@@ -65,8 +47,8 @@ class ServiceProfile {
65
47
  .where('purpose', '=', 'plc_operation')
66
48
  .executeTakeFirstOrThrow();
67
49
  const op = { ...newDidCredentialsRes.data, token };
68
- Object.assign((op.services ?? (op.services = {})), options.services);
69
- Object.assign((op.verificationMethods ?? (op.verificationMethods = {})), options.verificationMethods);
50
+ Object.assign((op.services ??= {}), options.services);
51
+ Object.assign((op.verificationMethods ??= {}), options.verificationMethods);
70
52
  const signedPlcOperation = await this.agent.com.atproto.identity.signPlcOperation(op);
71
53
  await newAgent.com.atproto.identity.submitPlcOperation({
72
54
  operation: signedPlcOperation.data.operation,
@@ -76,5 +58,4 @@ class ServiceProfile {
76
58
  this.agent = newAgent;
77
59
  }
78
60
  }
79
- exports.ServiceProfile = ServiceProfile;
80
61
  //# sourceMappingURL=service-profile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service-profile.js","sourceRoot":"","sources":["../src/service-profile.ts"],"names":[],"mappings":"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","sourcesContent":["import { AtpAgent } from '@atproto/api'\nimport { DidString } from '@atproto/lex'\nimport { TestPds } from './pds'\n\nexport type ServiceUserDetails = {\n email: string\n handle: string\n password: string\n}\n\nexport type ServiceMigrationOptions = {\n services?: Record<string, unknown>\n verificationMethods?: Record<string, unknown>\n}\n\nexport class ServiceProfile {\n protected constructor(\n protected pds: TestPds,\n /** @note assumes the session is already authenticated */\n protected agent: AtpAgent,\n protected userDetails: ServiceUserDetails,\n ) {}\n\n get did(): DidString {\n return this.agent.assertDid\n }\n\n async migrateTo(newPds: TestPds, options: ServiceMigrationOptions = {}) {\n const newAgent = newPds.getAgent()\n\n const newPdsDesc = await newAgent.com.atproto.server.describeServer()\n const serviceAuth = await this.agent.com.atproto.server.getServiceAuth({\n aud: newPdsDesc.data.did,\n lxm: 'com.atproto.server.createAccount',\n })\n\n const inviteCode = newPds.ctx.cfg.invites.required\n ? await newAgent.com.atproto.server\n .createInviteCode(\n { useCount: 1 },\n {\n encoding: 'application/json',\n headers: newPds.adminAuthHeaders(),\n },\n )\n .then((res) => res.data.code)\n : undefined\n\n await newAgent.createAccount(\n {\n ...this.userDetails,\n inviteCode,\n did: this.did,\n },\n {\n encoding: 'application/json',\n headers: { authorization: `Bearer ${serviceAuth.data.token}` },\n },\n )\n\n // The session manager will use the \"didDoc\" in the result of\n // \"createAccount\" in order to setup the pdsUrl. However, since are in the\n // process of migrating, that didDoc references the old PDS. In order to\n // avoid calling the old PDS, let's clear the pdsUrl, which will result in\n // the (new) serviceUrl being used.\n newAgent.sessionManager.pdsUrl = undefined\n\n const newDidCredentialsRes =\n await newAgent.com.atproto.identity.getRecommendedDidCredentials()\n\n await this.agent.com.atproto.identity.requestPlcOperationSignature()\n const { token } = await this.pds.ctx.accountManager.db.db\n .selectFrom('email_token')\n .select('token')\n .where('did', '=', this.did)\n .where('purpose', '=', 'plc_operation')\n .executeTakeFirstOrThrow()\n\n const op = { ...newDidCredentialsRes.data, token }\n Object.assign((op.services ??= {}), options.services)\n Object.assign((op.verificationMethods ??= {}), options.verificationMethods)\n\n const signedPlcOperation =\n await this.agent.com.atproto.identity.signPlcOperation(op)\n\n await newAgent.com.atproto.identity.submitPlcOperation({\n operation: signedPlcOperation.data.operation,\n })\n\n await newAgent.com.atproto.server.activateAccount()\n\n this.pds = newPds\n this.agent = newAgent\n }\n}\n"]}
1
+ {"version":3,"file":"service-profile.js","sourceRoot":"","sources":["../src/service-profile.ts"],"names":[],"mappings":"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","sourcesContent":["import { AtpAgent } from '@atproto/api'\nimport { DidString } from '@atproto/lex'\nimport { TestPds } from './pds.js'\n\nexport type ServiceUserDetails = {\n email: string\n handle: string\n password: string\n}\n\nexport type ServiceMigrationOptions = {\n services?: Record<string, unknown>\n verificationMethods?: Record<string, unknown>\n}\n\nexport class ServiceProfile {\n protected constructor(\n protected pds: TestPds,\n /** @note assumes the session is already authenticated */\n protected agent: AtpAgent,\n protected userDetails: ServiceUserDetails,\n ) {}\n\n get did(): DidString {\n return this.agent.assertDid\n }\n\n async migrateTo(newPds: TestPds, options: ServiceMigrationOptions = {}) {\n const newAgent = newPds.getAgent()\n\n const newPdsDesc = await newAgent.com.atproto.server.describeServer()\n const serviceAuth = await this.agent.com.atproto.server.getServiceAuth({\n aud: newPdsDesc.data.did,\n lxm: 'com.atproto.server.createAccount',\n })\n\n const inviteCode = newPds.ctx.cfg.invites.required\n ? await newAgent.com.atproto.server\n .createInviteCode(\n { useCount: 1 },\n {\n encoding: 'application/json',\n headers: newPds.adminAuthHeaders(),\n },\n )\n .then((res) => res.data.code)\n : undefined\n\n await newAgent.createAccount(\n {\n ...this.userDetails,\n inviteCode,\n did: this.did,\n },\n {\n encoding: 'application/json',\n headers: { authorization: `Bearer ${serviceAuth.data.token}` },\n },\n )\n\n // The session manager will use the \"didDoc\" in the result of\n // \"createAccount\" in order to setup the pdsUrl. However, since are in the\n // process of migrating, that didDoc references the old PDS. In order to\n // avoid calling the old PDS, let's clear the pdsUrl, which will result in\n // the (new) serviceUrl being used.\n newAgent.sessionManager.pdsUrl = undefined\n\n const newDidCredentialsRes =\n await newAgent.com.atproto.identity.getRecommendedDidCredentials()\n\n await this.agent.com.atproto.identity.requestPlcOperationSignature()\n const { token } = await this.pds.ctx.accountManager.db.db\n .selectFrom('email_token')\n .select('token')\n .where('did', '=', this.did)\n .where('purpose', '=', 'plc_operation')\n .executeTakeFirstOrThrow()\n\n const op = { ...newDidCredentialsRes.data, token }\n Object.assign((op.services ??= {}), options.services)\n Object.assign((op.verificationMethods ??= {}), options.verificationMethods)\n\n const signedPlcOperation =\n await this.agent.com.atproto.identity.signPlcOperation(op)\n\n await newAgent.com.atproto.identity.submitPlcOperation({\n operation: signedPlcOperation.data.operation,\n })\n\n await newAgent.com.atproto.server.activateAccount()\n\n this.pds = newPds\n this.agent = newAgent\n }\n}\n"]}
package/dist/types.js CHANGED
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=types.js.map
package/dist/util.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { IdResolver } from '@atproto/identity';
2
- import { TestBsky } from './bsky';
3
- import { TestPds } from './pds';
4
- import { DidAndKey } from './types';
2
+ import { TestBsky } from './bsky.js';
3
+ import { TestPds } from './pds.js';
4
+ import { DidAndKey } from './types.js';
5
5
  export declare const mockNetworkUtilities: (pds: TestPds, bsky?: TestBsky) => void;
6
6
  export declare const mockResolvers: (idResolver: IdResolver, pds: TestPds) => void;
7
7
  export declare const mockMailer: (pds: TestPds) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEnC,eAAO,MAAM,oBAAoB,GAAI,KAAK,OAAO,EAAE,OAAO,QAAQ,SAMjE,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,YAAY,UAAU,EAAE,KAAK,OAAO,SAwCjE,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,KAAK,OAAO,SAQtC,CAAA;AAGD,eAAO,MAAM,YAAY,cAOxB,CAAA;AAED,eAAO,MAAM,eAAe,GAAU,MAAM;IAC1C,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;CACZ,KAAG,OAAO,CAAC,SAAS,CAcpB,CAAA"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,eAAO,MAAM,oBAAoB,GAAI,KAAK,OAAO,EAAE,OAAO,QAAQ,SAMjE,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,YAAY,UAAU,EAAE,KAAK,OAAO,SAwCjE,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,KAAK,OAAO,SAQtC,CAAA;AAGD,eAAO,MAAM,YAAY,cAOxB,CAAA;AAED,eAAO,MAAM,eAAe,GAAU,MAAM;IAC1C,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;CACZ,KAAG,OAAO,CAAC,SAAS,CAcpB,CAAA"}
package/dist/util.js CHANGED
@@ -1,51 +1,14 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.createDidAndKey = exports.uniqueLockId = exports.mockMailer = exports.mockResolvers = exports.mockNetworkUtilities = void 0;
37
- const plc = __importStar(require("@did-plc/lib"));
38
- const undici_1 = require("undici");
39
- const crypto_1 = require("@atproto/crypto");
40
- const mockNetworkUtilities = (pds, bsky) => {
41
- (0, exports.mockResolvers)(pds.ctx.idResolver, pds);
1
+ import * as plc from '@did-plc/lib';
2
+ import { request } from 'undici';
3
+ import { Secp256k1Keypair } from '@atproto/crypto';
4
+ export const mockNetworkUtilities = (pds, bsky) => {
5
+ mockResolvers(pds.ctx.idResolver, pds);
42
6
  if (bsky) {
43
- (0, exports.mockResolvers)(bsky.ctx.idResolver, pds);
44
- (0, exports.mockResolvers)(bsky.dataplane.idResolver, pds);
7
+ mockResolvers(bsky.ctx.idResolver, pds);
8
+ mockResolvers(bsky.dataplane.idResolver, pds);
45
9
  }
46
10
  };
47
- exports.mockNetworkUtilities = mockNetworkUtilities;
48
- const mockResolvers = (idResolver, pds) => {
11
+ export const mockResolvers = (idResolver, pds) => {
49
12
  // Map pds public url to its local url when resolving from plc
50
13
  const origResolveDid = idResolver.did.resolveNoCache;
51
14
  idResolver.did.resolveNoCache = async (did) => {
@@ -64,7 +27,7 @@ const mockResolvers = (idResolver, pds) => {
64
27
  }
65
28
  const url = new URL(`/.well-known/atproto-did`, pds.url);
66
29
  try {
67
- const res = await (0, undici_1.request)(url, { headers: { host: handle } });
30
+ const res = await request(url, { headers: { host: handle } });
68
31
  if (res.statusCode !== 200) {
69
32
  await res.body.dump();
70
33
  return undefined;
@@ -76,8 +39,7 @@ const mockResolvers = (idResolver, pds) => {
76
39
  }
77
40
  };
78
41
  };
79
- exports.mockResolvers = mockResolvers;
80
- const mockMailer = (pds) => {
42
+ export const mockMailer = (pds) => {
81
43
  const mailer = pds.ctx.mailer;
82
44
  const _origSendMail = mailer.transporter.sendMail;
83
45
  mailer.transporter.sendMail = async (opts) => {
@@ -86,9 +48,8 @@ const mockMailer = (pds) => {
86
48
  return result;
87
49
  };
88
50
  };
89
- exports.mockMailer = mockMailer;
90
51
  const usedLockIds = new Set();
91
- const uniqueLockId = () => {
52
+ export const uniqueLockId = () => {
92
53
  let lockId;
93
54
  do {
94
55
  lockId = 1000 + Math.ceil(1000 * Math.random());
@@ -96,10 +57,9 @@ const uniqueLockId = () => {
96
57
  usedLockIds.add(lockId);
97
58
  return lockId;
98
59
  };
99
- exports.uniqueLockId = uniqueLockId;
100
- const createDidAndKey = async (opts) => {
60
+ export const createDidAndKey = async (opts) => {
101
61
  const { plcUrl, handle, pds } = opts;
102
- const key = await crypto_1.Secp256k1Keypair.create({ exportable: true });
62
+ const key = await Secp256k1Keypair.create({ exportable: true });
103
63
  const did = await new plc.Client(plcUrl).createDid({
104
64
  signingKey: key.did(),
105
65
  rotationKeys: [key.did()],
@@ -112,5 +72,4 @@ const createDidAndKey = async (opts) => {
112
72
  did,
113
73
  };
114
74
  };
115
- exports.createDidAndKey = createDidAndKey;
116
75
  //# sourceMappingURL=util.js.map
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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","sourcesContent":["import * as plc from '@did-plc/lib'\nimport { request } from 'undici'\nimport { Secp256k1Keypair } from '@atproto/crypto'\nimport { IdResolver } from '@atproto/identity'\nimport { TestBsky } from './bsky'\nimport { TestPds } from './pds'\nimport { DidAndKey } from './types'\n\nexport const mockNetworkUtilities = (pds: TestPds, bsky?: TestBsky) => {\n mockResolvers(pds.ctx.idResolver, pds)\n if (bsky) {\n mockResolvers(bsky.ctx.idResolver, pds)\n mockResolvers(bsky.dataplane.idResolver, pds)\n }\n}\n\nexport const mockResolvers = (idResolver: IdResolver, pds: TestPds) => {\n // Map pds public url to its local url when resolving from plc\n const origResolveDid = idResolver.did.resolveNoCache\n idResolver.did.resolveNoCache = async (did: string) => {\n const result = await (origResolveDid.call(\n idResolver.did,\n did,\n ) as ReturnType<typeof origResolveDid>)\n const service = result?.service?.find((svc) => svc.id === '#atproto_pds')\n if (typeof service?.serviceEndpoint === 'string') {\n service.serviceEndpoint = service.serviceEndpoint.replace(\n pds.ctx.cfg.service.publicUrl,\n `http://localhost:${pds.port}`,\n )\n }\n return result\n }\n\n const origResolveHandleDns = idResolver.handle.resolveDns\n idResolver.handle.resolve = async (handle: string) => {\n const isPdsHandle = pds.ctx.cfg.identity.serviceHandleDomains.some(\n (domain) => handle.endsWith(domain),\n )\n if (!isPdsHandle) {\n return origResolveHandleDns.call(idResolver.handle, handle)\n }\n\n const url = new URL(`/.well-known/atproto-did`, pds.url)\n try {\n const res = await request(url, { headers: { host: handle } })\n if (res.statusCode !== 200) {\n await res.body.dump()\n return undefined\n }\n\n return res.body.text()\n } catch (err) {\n return undefined\n }\n }\n}\n\nexport const mockMailer = (pds: TestPds) => {\n const mailer = pds.ctx.mailer\n const _origSendMail = mailer.transporter.sendMail\n mailer.transporter.sendMail = async (opts) => {\n const result = await _origSendMail.call(mailer.transporter, opts)\n console.log(`✉️ Email: ${JSON.stringify(result, null, 2)}`)\n return result\n }\n}\n\nconst usedLockIds = new Set()\nexport const uniqueLockId = () => {\n let lockId: number\n do {\n lockId = 1000 + Math.ceil(1000 * Math.random())\n } while (usedLockIds.has(lockId))\n usedLockIds.add(lockId)\n return lockId\n}\n\nexport const createDidAndKey = async (opts: {\n plcUrl: string\n handle: string\n pds: string\n}): Promise<DidAndKey> => {\n const { plcUrl, handle, pds } = opts\n const key = await Secp256k1Keypair.create({ exportable: true })\n const did = await new plc.Client(plcUrl).createDid({\n signingKey: key.did(),\n rotationKeys: [key.did()],\n handle,\n pds,\n signer: key,\n })\n return {\n key,\n did,\n }\n}\n"]}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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","sourcesContent":["import * as plc from '@did-plc/lib'\nimport { request } from 'undici'\nimport { Secp256k1Keypair } from '@atproto/crypto'\nimport { IdResolver } from '@atproto/identity'\nimport { TestBsky } from './bsky.js'\nimport { TestPds } from './pds.js'\nimport { DidAndKey } from './types.js'\n\nexport const mockNetworkUtilities = (pds: TestPds, bsky?: TestBsky) => {\n mockResolvers(pds.ctx.idResolver, pds)\n if (bsky) {\n mockResolvers(bsky.ctx.idResolver, pds)\n mockResolvers(bsky.dataplane.idResolver, pds)\n }\n}\n\nexport const mockResolvers = (idResolver: IdResolver, pds: TestPds) => {\n // Map pds public url to its local url when resolving from plc\n const origResolveDid = idResolver.did.resolveNoCache\n idResolver.did.resolveNoCache = async (did: string) => {\n const result = await (origResolveDid.call(\n idResolver.did,\n did,\n ) as ReturnType<typeof origResolveDid>)\n const service = result?.service?.find((svc) => svc.id === '#atproto_pds')\n if (typeof service?.serviceEndpoint === 'string') {\n service.serviceEndpoint = service.serviceEndpoint.replace(\n pds.ctx.cfg.service.publicUrl,\n `http://localhost:${pds.port}`,\n )\n }\n return result\n }\n\n const origResolveHandleDns = idResolver.handle.resolveDns\n idResolver.handle.resolve = async (handle: string) => {\n const isPdsHandle = pds.ctx.cfg.identity.serviceHandleDomains.some(\n (domain) => handle.endsWith(domain),\n )\n if (!isPdsHandle) {\n return origResolveHandleDns.call(idResolver.handle, handle)\n }\n\n const url = new URL(`/.well-known/atproto-did`, pds.url)\n try {\n const res = await request(url, { headers: { host: handle } })\n if (res.statusCode !== 200) {\n await res.body.dump()\n return undefined\n }\n\n return res.body.text()\n } catch (err) {\n return undefined\n }\n }\n}\n\nexport const mockMailer = (pds: TestPds) => {\n const mailer = pds.ctx.mailer\n const _origSendMail = mailer.transporter.sendMail\n mailer.transporter.sendMail = async (opts) => {\n const result = await _origSendMail.call(mailer.transporter, opts)\n console.log(`✉️ Email: ${JSON.stringify(result, null, 2)}`)\n return result\n }\n}\n\nconst usedLockIds = new Set()\nexport const uniqueLockId = () => {\n let lockId: number\n do {\n lockId = 1000 + Math.ceil(1000 * Math.random())\n } while (usedLockIds.has(lockId))\n usedLockIds.add(lockId)\n return lockId\n}\n\nexport const createDidAndKey = async (opts: {\n plcUrl: string\n handle: string\n pds: string\n}): Promise<DidAndKey> => {\n const { plcUrl, handle, pds } = opts\n const key = await Secp256k1Keypair.create({ exportable: true })\n const did = await new plc.Client(plcUrl).createDid({\n signingKey: key.did(),\n rotationKeys: [key.did()],\n handle,\n pds,\n signer: key,\n })\n return {\n key,\n did,\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/dev-env",
3
- "version": "0.4.9",
3
+ "version": "0.5.0",
4
4
  "license": "MIT",
5
5
  "description": "Local development environment helper for atproto development",
6
6
  "keywords": [
@@ -12,11 +12,9 @@
12
12
  "url": "https://github.com/bluesky-social/atproto",
13
13
  "directory": "packages/dev-env"
14
14
  },
15
- "main": "dist/index.js",
16
- "types": "dist/index.d.ts",
17
15
  "bin": "bin.js",
18
16
  "engines": {
19
- "node": ">=18.7.0"
17
+ "node": ">=22"
20
18
  },
21
19
  "dependencies": {
22
20
  "@did-plc/lib": "^0.0.1",
@@ -24,26 +22,33 @@
24
22
  "dotenv": "^16.0.3",
25
23
  "express": "^4.18.2",
26
24
  "get-port": "^5.1.1",
27
- "multiformats": "^9.9.0",
28
- "uint8arrays": "3.0.0",
25
+ "multiformats": "^13.0.0",
26
+ "uint8arrays": "^5.0.0",
29
27
  "undici": "^6.14.1",
30
- "@atproto/api": "^0.19.19",
31
- "@atproto/bsky": "^0.0.230",
32
- "@atproto/bsync": "^0.0.25",
33
- "@atproto/common-web": "^0.4.21",
34
- "@atproto/crypto": "^0.4.5",
35
- "@atproto/identity": "^0.4.12",
36
- "@atproto/lex": "^0.0.27",
37
- "@atproto/lexicon": "^0.6.2",
38
- "@atproto/ozone": "^0.1.174",
39
- "@atproto/pds": "^0.4.223",
40
- "@atproto/sync": "^0.2.4",
41
- "@atproto/syntax": "^0.5.4",
42
- "@atproto/xrpc-server": "^0.10.22"
28
+ "@atproto/api": "^0.20.0",
29
+ "@atproto/bsky": "^0.0.231",
30
+ "@atproto/bsync": "^0.0.26",
31
+ "@atproto/common-web": "^0.5.0",
32
+ "@atproto/crypto": "^0.5.0",
33
+ "@atproto/identity": "^0.5.0",
34
+ "@atproto/lex": "^0.1.0",
35
+ "@atproto/lexicon": "^0.7.0",
36
+ "@atproto/ozone": "^0.1.175",
37
+ "@atproto/pds": "^0.4.224",
38
+ "@atproto/sync": "^0.3.0",
39
+ "@atproto/syntax": "^0.6.0",
40
+ "@atproto/xrpc-server": "^0.11.0"
43
41
  },
44
42
  "devDependencies": {
45
43
  "@types/express": "^4.17.13",
46
- "typescript": "^5.6.3"
44
+ "typescript": "^6.0.3"
45
+ },
46
+ "type": "module",
47
+ "exports": {
48
+ ".": {
49
+ "types": "./dist/index.d.ts",
50
+ "default": "./dist/index.js"
51
+ }
47
52
  },
48
53
  "scripts": {
49
54
  "build": "tsc --build tsconfig.build.json",
package/src/bin.ts CHANGED
@@ -1,7 +1,7 @@
1
- import './env'
2
- import { generateMockSetup } from './mock'
3
- import { TestNetwork } from './network'
4
- import { mockMailer } from './util'
1
+ import './env.js'
2
+ import { generateMockSetup } from './mock/index.js'
3
+ import { TestNetwork } from './network.js'
4
+ import { mockMailer } from './util.js'
5
5
 
6
6
  const run = async () => {
7
7
  console.log(`
package/src/bsky.ts CHANGED
@@ -5,8 +5,8 @@ import { AtpAgent } from '@atproto/api'
5
5
  import * as bsky from '@atproto/bsky'
6
6
  import { Secp256k1Keypair } from '@atproto/crypto'
7
7
  import { Client } from '@atproto/lex'
8
- import { ADMIN_PASSWORD, EXAMPLE_LABELER } from './const'
9
- import { BskyConfig } from './types'
8
+ import { ADMIN_PASSWORD, EXAMPLE_LABELER } from './const.js'
9
+ import { BskyConfig } from './types.js'
10
10
  export * from '@atproto/bsky'
11
11
 
12
12
  export class TestBsky {
package/src/bsync.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import getPort from 'get-port'
2
2
  import * as bsync from '@atproto/bsync'
3
- import { BsyncConfig } from './types'
3
+ import { BsyncConfig } from './types.js'
4
4
 
5
5
  export class TestBsync {
6
6
  constructor(
package/src/index.ts CHANGED
@@ -1,17 +1,17 @@
1
- export * from './bsky'
2
- export * from './bsync'
3
- export * from './network'
4
- export * from './network-no-appview'
5
- export * from './ozone'
6
- export * from './pds'
7
- export * from './plc'
8
- export * from './ozone'
9
- export * from './feed-gen'
10
- export * from './seed'
11
- export * from './moderator-client'
12
- export * from './types'
13
- export * from './util'
14
- export * from './const'
1
+ export * from './bsky.js'
2
+ export * from './bsync.js'
3
+ export * from './network.js'
4
+ export * from './network-no-appview.js'
5
+ export * from './ozone.js'
6
+ export * from './pds.js'
7
+ export * from './plc.js'
8
+ export * from './ozone.js'
9
+ export * from './feed-gen.js'
10
+ export * from './seed/index.js'
11
+ export * from './moderator-client.js'
12
+ export * from './types.js'
13
+ export * from './util.js'
14
+ export * from './const.js'
15
15
 
16
16
  import * as seedThreadV2 from './seed/thread-v2.js'
17
17
  export { seedThreadV2 }
package/src/introspect.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import events from 'node:events'
2
2
  import http from 'node:http'
3
3
  import express from 'express'
4
- import { TestBsky } from './bsky'
5
- import { TestOzone } from './ozone'
6
- import { TestPds } from './pds'
7
- import { TestPlc } from './plc'
4
+ import { TestBsky } from './bsky.js'
5
+ import { TestOzone } from './ozone.js'
6
+ import { TestPds } from './pds.js'
7
+ import { TestPlc } from './plc.js'
8
8
 
9
9
  export class IntrospectServer {
10
10
  constructor(