@atproto/dev-env 0.4.7 → 0.5.0-next.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 +43 -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 +1 @@
1
- {"version":3,"file":"moderator-client.js","sourceRoot":"","sources":["../src/moderator-client.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AtpAgent,\n ToolsOzoneModerationDefs,\n ToolsOzoneModerationEmitEvent as EmitModerationEvent,\n ToolsOzoneModerationQueryEvents as QueryModerationEvents,\n ToolsOzoneModerationQueryStatuses as QueryModerationStatuses,\n ToolsOzoneReportQueryReports as QueryModerationReports,\n ToolsOzoneSettingRemoveOptions,\n ToolsOzoneSettingUpsertOption,\n} from '@atproto/api'\nimport { TestOzone } from './ozone'\n\ntype TakeActionInput = EmitModerationEvent.InputSchema\ntype QueryStatusesParams = QueryModerationStatuses.QueryParams\ntype QueryEventsParams = QueryModerationEvents.QueryParams\ntype QueryReportsParams = QueryModerationReports.QueryParams\ntype ModLevel = 'admin' | 'moderator' | 'triage'\n\nexport class ModeratorClient {\n agent: AtpAgent\n constructor(public ozone: TestOzone) {\n this.agent = ozone.getAgent()\n }\n\n async getEvent(id: number, role?: ModLevel) {\n const result = await this.agent.tools.ozone.moderation.getEvent(\n { id },\n {\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.getEvent',\n role,\n ),\n },\n )\n return result.data\n }\n\n async queryStatuses(input: QueryStatusesParams, role?: ModLevel) {\n const result = await this.agent.tools.ozone.moderation.queryStatuses(\n input,\n {\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.queryStatuses',\n role,\n ),\n },\n )\n return result.data\n }\n\n async getReporterStats(dids: string[]) {\n const result = await this.agent.tools.ozone.moderation.getReporterStats(\n { dids },\n {\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.getReporterStats',\n 'admin',\n ),\n },\n )\n return result.data\n }\n\n async queryEvents(input: QueryEventsParams, role?: ModLevel) {\n const result = await this.agent.tools.ozone.moderation.queryEvents(input, {\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.queryEvents',\n role,\n ),\n })\n return result.data\n }\n\n async queryReports(input: QueryReportsParams, role?: ModLevel) {\n const result = await this.agent.tools.ozone.report.queryReports(input, {\n headers: await this.ozone.modHeaders(\n 'tools.ozone.report.queryReports',\n role,\n ),\n })\n return result.data\n }\n\n async emitEvent(\n opts: {\n event: TakeActionInput['event']\n subject: TakeActionInput['subject']\n subjectBlobCids?: TakeActionInput['subjectBlobCids']\n reason?: string\n createdBy?: string\n meta?: unknown\n modTool?: ToolsOzoneModerationDefs.ModTool\n externalId?: string\n reportAction?: TakeActionInput['reportAction']\n },\n role?: ModLevel,\n ) {\n const {\n event,\n subject,\n subjectBlobCids,\n createdBy = 'did:example:admin',\n modTool,\n externalId,\n reportAction,\n } = opts\n const result = await this.agent.tools.ozone.moderation.emitEvent(\n {\n event,\n subject,\n subjectBlobCids,\n createdBy,\n modTool,\n externalId,\n reportAction,\n },\n {\n encoding: 'application/json',\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.emitEvent',\n role,\n ),\n },\n )\n return result.data\n }\n\n async reverseAction(\n opts: {\n id: number\n subject: TakeActionInput['subject']\n reason?: string\n createdBy?: string\n modTool?: ToolsOzoneModerationDefs.ModTool\n },\n role?: ModLevel,\n ) {\n const {\n subject,\n reason = 'X',\n createdBy = 'did:example:admin',\n modTool,\n } = opts\n const result = await this.agent.tools.ozone.moderation.emitEvent(\n {\n subject,\n event: {\n $type: 'tools.ozone.moderation.defs#modEventReverseTakedown',\n comment: reason,\n },\n createdBy,\n modTool,\n },\n {\n encoding: 'application/json',\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.emitEvent',\n role,\n ),\n },\n )\n return result.data\n }\n\n async performTakedown(\n opts: {\n subject: TakeActionInput['subject']\n subjectBlobCids?: TakeActionInput['subjectBlobCids']\n durationInHours?: number\n acknowledgeAccountSubjects?: boolean\n reason?: string\n policies?: string[]\n },\n role?: ModLevel,\n ) {\n const { durationInHours, acknowledgeAccountSubjects, policies, ...rest } =\n opts\n return this.emitEvent(\n {\n event: {\n $type: 'tools.ozone.moderation.defs#modEventTakedown',\n acknowledgeAccountSubjects,\n durationInHours,\n policies,\n },\n ...rest,\n },\n role,\n )\n }\n\n async performReverseTakedown(\n opts: {\n subject: TakeActionInput['subject']\n subjectBlobCids?: TakeActionInput['subjectBlobCids']\n reason?: string\n },\n role?: ModLevel,\n ) {\n return this.emitEvent(\n {\n event: {\n $type: 'tools.ozone.moderation.defs#modEventReverseTakedown',\n },\n ...opts,\n },\n role,\n )\n }\n\n async upsertSettingOption(\n setting: ToolsOzoneSettingUpsertOption.InputSchema,\n callerRole: 'admin' | 'moderator' | 'triage' = 'admin',\n ) {\n const { data } = await this.agent.tools.ozone.setting.upsertOption(\n setting,\n {\n encoding: 'application/json',\n headers: await this.ozone.modHeaders(\n 'tools.ozone.setting.upsertOption',\n callerRole,\n ),\n },\n )\n\n return data\n }\n\n async removeSettingOptions(\n params: ToolsOzoneSettingRemoveOptions.InputSchema,\n callerRole: 'admin' | 'moderator' | 'triage' = 'admin',\n ) {\n const { data } = await this.agent.tools.ozone.setting.removeOptions(\n params,\n {\n encoding: 'application/json',\n headers: await this.ozone.modHeaders(\n 'tools.ozone.setting.removeOptions',\n callerRole,\n ),\n },\n )\n\n return data\n }\n\n async computeStats() {\n const db = this.ozone.ctx.db\n const statsService = this.ozone.ctx.reportStatsService(db)\n await statsService.materializeAll({ force: true })\n }\n}\n"]}
1
+ {"version":3,"file":"moderator-client.js","sourceRoot":"","sources":["../src/moderator-client.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AtpAgent,\n ToolsOzoneModerationDefs,\n ToolsOzoneModerationEmitEvent as EmitModerationEvent,\n ToolsOzoneModerationGetReporterStats as _GetReporterStats, // includes types for getReporterStats()\n ToolsOzoneModerationQueryEvents as QueryModerationEvents,\n ToolsOzoneModerationQueryStatuses as QueryModerationStatuses,\n ToolsOzoneReportQueryReports as QueryModerationReports,\n ToolsOzoneSettingRemoveOptions,\n ToolsOzoneSettingUpsertOption,\n} from '@atproto/api'\nimport { TestOzone } from './ozone.js'\n\ntype TakeActionInput = EmitModerationEvent.InputSchema\ntype QueryStatusesParams = QueryModerationStatuses.QueryParams\ntype QueryEventsParams = QueryModerationEvents.QueryParams\ntype QueryReportsParams = QueryModerationReports.QueryParams\ntype ModLevel = 'admin' | 'moderator' | 'triage'\n\nexport class ModeratorClient {\n agent: AtpAgent\n constructor(public ozone: TestOzone) {\n this.agent = ozone.getAgent()\n }\n\n async getEvent(id: number, role?: ModLevel) {\n const result = await this.agent.tools.ozone.moderation.getEvent(\n { id },\n {\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.getEvent',\n role,\n ),\n },\n )\n return result.data\n }\n\n async queryStatuses(input: QueryStatusesParams, role?: ModLevel) {\n const result = await this.agent.tools.ozone.moderation.queryStatuses(\n input,\n {\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.queryStatuses',\n role,\n ),\n },\n )\n return result.data\n }\n\n async getReporterStats(dids: string[]) {\n const result = await this.agent.tools.ozone.moderation.getReporterStats(\n { dids },\n {\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.getReporterStats',\n 'admin',\n ),\n },\n )\n return result.data\n }\n\n async queryEvents(input: QueryEventsParams, role?: ModLevel) {\n const result = await this.agent.tools.ozone.moderation.queryEvents(input, {\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.queryEvents',\n role,\n ),\n })\n return result.data\n }\n\n async queryReports(input: QueryReportsParams, role?: ModLevel) {\n const result = await this.agent.tools.ozone.report.queryReports(input, {\n headers: await this.ozone.modHeaders(\n 'tools.ozone.report.queryReports',\n role,\n ),\n })\n return result.data\n }\n\n async emitEvent(\n opts: {\n event: TakeActionInput['event']\n subject: TakeActionInput['subject']\n subjectBlobCids?: TakeActionInput['subjectBlobCids']\n reason?: string\n createdBy?: string\n meta?: unknown\n modTool?: ToolsOzoneModerationDefs.ModTool\n externalId?: string\n reportAction?: TakeActionInput['reportAction']\n },\n role?: ModLevel,\n ) {\n const {\n event,\n subject,\n subjectBlobCids,\n createdBy = 'did:example:admin',\n modTool,\n externalId,\n reportAction,\n } = opts\n const result = await this.agent.tools.ozone.moderation.emitEvent(\n {\n event,\n subject,\n subjectBlobCids,\n createdBy,\n modTool,\n externalId,\n reportAction,\n },\n {\n encoding: 'application/json',\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.emitEvent',\n role,\n ),\n },\n )\n return result.data\n }\n\n async reverseAction(\n opts: {\n id: number\n subject: TakeActionInput['subject']\n reason?: string\n createdBy?: string\n modTool?: ToolsOzoneModerationDefs.ModTool\n },\n role?: ModLevel,\n ) {\n const {\n subject,\n reason = 'X',\n createdBy = 'did:example:admin',\n modTool,\n } = opts\n const result = await this.agent.tools.ozone.moderation.emitEvent(\n {\n subject,\n event: {\n $type: 'tools.ozone.moderation.defs#modEventReverseTakedown',\n comment: reason,\n },\n createdBy,\n modTool,\n },\n {\n encoding: 'application/json',\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.emitEvent',\n role,\n ),\n },\n )\n return result.data\n }\n\n async performTakedown(\n opts: {\n subject: TakeActionInput['subject']\n subjectBlobCids?: TakeActionInput['subjectBlobCids']\n durationInHours?: number\n acknowledgeAccountSubjects?: boolean\n reason?: string\n policies?: string[]\n },\n role?: ModLevel,\n ) {\n const { durationInHours, acknowledgeAccountSubjects, policies, ...rest } =\n opts\n return this.emitEvent(\n {\n event: {\n $type: 'tools.ozone.moderation.defs#modEventTakedown',\n acknowledgeAccountSubjects,\n durationInHours,\n policies,\n },\n ...rest,\n },\n role,\n )\n }\n\n async performReverseTakedown(\n opts: {\n subject: TakeActionInput['subject']\n subjectBlobCids?: TakeActionInput['subjectBlobCids']\n reason?: string\n },\n role?: ModLevel,\n ) {\n return this.emitEvent(\n {\n event: {\n $type: 'tools.ozone.moderation.defs#modEventReverseTakedown',\n },\n ...opts,\n },\n role,\n )\n }\n\n async upsertSettingOption(\n setting: ToolsOzoneSettingUpsertOption.InputSchema,\n callerRole: 'admin' | 'moderator' | 'triage' = 'admin',\n ) {\n const { data } = await this.agent.tools.ozone.setting.upsertOption(\n setting,\n {\n encoding: 'application/json',\n headers: await this.ozone.modHeaders(\n 'tools.ozone.setting.upsertOption',\n callerRole,\n ),\n },\n )\n\n return data\n }\n\n async removeSettingOptions(\n params: ToolsOzoneSettingRemoveOptions.InputSchema,\n callerRole: 'admin' | 'moderator' | 'triage' = 'admin',\n ) {\n const { data } = await this.agent.tools.ozone.setting.removeOptions(\n params,\n {\n encoding: 'application/json',\n headers: await this.ozone.modHeaders(\n 'tools.ozone.setting.removeOptions',\n callerRole,\n ),\n },\n )\n\n return data\n }\n\n async computeStats() {\n const db = this.ozone.ctx.db\n const statsService = this.ozone.ctx.reportStatsService(db)\n await statsService.materializeAll({ force: true })\n }\n}\n"]}
@@ -1,9 +1,9 @@
1
1
  import { SkeletonHandler } from '@atproto/pds';
2
- import { TestFeedGen } from './feed-gen';
3
- import { TestPds } from './pds';
4
- import { TestPlc } from './plc';
5
- import { SeedClient } from './seed/client';
6
- import { TestServerParams } from './types';
2
+ import { TestFeedGen } from './feed-gen.js';
3
+ import { TestPds } from './pds.js';
4
+ import { TestPlc } from './plc.js';
5
+ import { SeedClient } from './seed/client.js';
6
+ import { TestServerParams } from './types.js';
7
7
  export declare class TestNetworkNoAppView {
8
8
  plc: TestPlc;
9
9
  pds: TestPds;
@@ -1 +1 @@
1
- {"version":3,"file":"network-no-appview.d.ts","sourceRoot":"","sources":["../src/network-no-appview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAG1C,qBAAa,oBAAoB;IAGtB,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,OAAO;IAHrB,QAAQ,EAAE,WAAW,EAAE,CAAK;gBAEnB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,OAAO;WAGR,MAAM,CACjB,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACrC,OAAO,CAAC,oBAAoB,CAAC;IAY1B,aAAa,CACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GACrC,OAAO,CAAC,WAAW,CAAC;IAMvB,aAAa,IAAI,UAAU,CAAC,OAAO,IAAI,CAAC;IAMlC,UAAU;IAIV,KAAK;CAKZ"}
1
+ {"version":3,"file":"network-no-appview.d.ts","sourceRoot":"","sources":["../src/network-no-appview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAG7C,qBAAa,oBAAoB;IAGtB,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,OAAO;IAHrB,QAAQ,EAAE,WAAW,EAAE,CAAK;gBAEnB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,OAAO;WAGR,MAAM,CACjB,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACrC,OAAO,CAAC,oBAAoB,CAAC;IAY1B,aAAa,CACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GACrC,OAAO,CAAC,WAAW,CAAC;IAMvB,aAAa,IAAI,UAAU,CAAC,OAAO,IAAI,CAAC;IAMlC,UAAU;IAIV,KAAK;CAKZ"}
@@ -1,50 +1,32 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TestNetworkNoAppView = void 0;
4
- const feed_gen_1 = require("./feed-gen");
5
- const pds_1 = require("./pds");
6
- const plc_1 = require("./plc");
7
- const client_1 = require("./seed/client");
8
- const util_1 = require("./util");
9
- class TestNetworkNoAppView {
1
+ import { TestFeedGen } from './feed-gen.js';
2
+ import { TestPds } from './pds.js';
3
+ import { TestPlc } from './plc.js';
4
+ import { SeedClient } from './seed/client.js';
5
+ import { mockNetworkUtilities } from './util.js';
6
+ export class TestNetworkNoAppView {
10
7
  constructor(plc, pds) {
11
- Object.defineProperty(this, "plc", {
12
- enumerable: true,
13
- configurable: true,
14
- writable: true,
15
- value: plc
16
- });
17
- Object.defineProperty(this, "pds", {
18
- enumerable: true,
19
- configurable: true,
20
- writable: true,
21
- value: pds
22
- });
23
- Object.defineProperty(this, "feedGens", {
24
- enumerable: true,
25
- configurable: true,
26
- writable: true,
27
- value: []
28
- });
8
+ this.plc = plc;
9
+ this.pds = pds;
10
+ this.feedGens = [];
29
11
  }
30
12
  static async create(params = {}) {
31
- const plc = await plc_1.TestPlc.create(params.plc ?? {});
32
- const pds = await pds_1.TestPds.create({
13
+ const plc = await TestPlc.create(params.plc ?? {});
14
+ const pds = await TestPds.create({
33
15
  didPlcUrl: plc.url,
34
16
  ...params.pds,
35
17
  });
36
- (0, util_1.mockNetworkUtilities)(pds);
18
+ mockNetworkUtilities(pds);
37
19
  return new TestNetworkNoAppView(plc, pds);
38
20
  }
39
21
  async createFeedGen(feeds) {
40
- const fg = await feed_gen_1.TestFeedGen.create(this.plc.url, feeds);
22
+ const fg = await TestFeedGen.create(this.plc.url, feeds);
41
23
  this.feedGens.push(fg);
42
24
  return fg;
43
25
  }
44
26
  getSeedClient() {
45
27
  const agent = this.pds.getAgent();
46
28
  const client = this.pds.getClient();
47
- return new client_1.SeedClient(this, agent, client);
29
+ return new SeedClient(this, agent, client);
48
30
  }
49
31
  async processAll() {
50
32
  await this.pds.processAll();
@@ -55,5 +37,4 @@ class TestNetworkNoAppView {
55
37
  await this.plc.close();
56
38
  }
57
39
  }
58
- exports.TestNetworkNoAppView = TestNetworkNoAppView;
59
40
  //# sourceMappingURL=network-no-appview.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"network-no-appview.js","sourceRoot":"","sources":["../src/network-no-appview.ts"],"names":[],"mappings":";;;AACA,yCAAwC;AACxC,+BAA+B;AAC/B,+BAA+B;AAC/B,0CAA0C;AAE1C,iCAA6C;AAE7C,MAAa,oBAAoB;IAE/B,YACS,GAAY,EACZ,GAAY;QADnB;;;;mBAAO,GAAG;WAAS;QACnB;;;;mBAAO,GAAG;WAAS;QAHrB;;;;mBAA0B,EAAE;WAAA;IAIzB,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,SAAoC,EAAE;QAEtC,MAAM,GAAG,GAAG,MAAM,aAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAA;QAClD,MAAM,GAAG,GAAG,MAAM,aAAO,CAAC,MAAM,CAAC;YAC/B,SAAS,EAAE,GAAG,CAAC,GAAG;YAClB,GAAG,MAAM,CAAC,GAAG;SACd,CAAC,CAAA;QAEF,IAAA,2BAAoB,EAAC,GAAG,CAAC,CAAA;QAEzB,OAAO,IAAI,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAC3C,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,KAAsC;QAEtC,MAAM,EAAE,GAAG,MAAM,sBAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACxD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACtB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,aAAa;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAA;QACnC,OAAO,IAAI,mBAAU,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QACxD,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;QACtB,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC;CACF;AA5CD,oDA4CC","sourcesContent":["import { SkeletonHandler } from '@atproto/pds'\nimport { TestFeedGen } from './feed-gen'\nimport { TestPds } from './pds'\nimport { TestPlc } from './plc'\nimport { SeedClient } from './seed/client'\nimport { TestServerParams } from './types'\nimport { mockNetworkUtilities } from './util'\n\nexport class TestNetworkNoAppView {\n feedGens: TestFeedGen[] = []\n constructor(\n public plc: TestPlc,\n public pds: TestPds,\n ) {}\n\n static async create(\n params: Partial<TestServerParams> = {},\n ): Promise<TestNetworkNoAppView> {\n const plc = await TestPlc.create(params.plc ?? {})\n const pds = await TestPds.create({\n didPlcUrl: plc.url,\n ...params.pds,\n })\n\n mockNetworkUtilities(pds)\n\n return new TestNetworkNoAppView(plc, pds)\n }\n\n async createFeedGen(\n feeds: Record<string, SkeletonHandler>,\n ): Promise<TestFeedGen> {\n const fg = await TestFeedGen.create(this.plc.url, feeds)\n this.feedGens.push(fg)\n return fg\n }\n\n getSeedClient(): SeedClient<typeof this> {\n const agent = this.pds.getAgent()\n const client = this.pds.getClient()\n return new SeedClient(this, agent, client)\n }\n\n async processAll() {\n await this.pds.processAll()\n }\n\n async close() {\n await Promise.all(this.feedGens.map((fg) => fg.close()))\n await this.pds.close()\n await this.plc.close()\n }\n}\n"]}
1
+ {"version":3,"file":"network-no-appview.js","sourceRoot":"","sources":["../src/network-no-appview.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,OAAO,oBAAoB;IAE/B,YACS,GAAY,EACZ,GAAY;QADZ,QAAG,GAAH,GAAG,CAAS;QACZ,QAAG,GAAH,GAAG,CAAS;QAHrB,aAAQ,GAAkB,EAAE,CAAA;IAIzB,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,SAAoC,EAAE;QAEtC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAA;QAClD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;YAC/B,SAAS,EAAE,GAAG,CAAC,GAAG;YAClB,GAAG,MAAM,CAAC,GAAG;SACd,CAAC,CAAA;QAEF,oBAAoB,CAAC,GAAG,CAAC,CAAA;QAEzB,OAAO,IAAI,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAC3C,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,KAAsC;QAEtC,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACxD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACtB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,aAAa;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAA;QACnC,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QACxD,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;QACtB,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC;CACF","sourcesContent":["import { SkeletonHandler } from '@atproto/pds'\nimport { TestFeedGen } from './feed-gen.js'\nimport { TestPds } from './pds.js'\nimport { TestPlc } from './plc.js'\nimport { SeedClient } from './seed/client.js'\nimport { TestServerParams } from './types.js'\nimport { mockNetworkUtilities } from './util.js'\n\nexport class TestNetworkNoAppView {\n feedGens: TestFeedGen[] = []\n constructor(\n public plc: TestPlc,\n public pds: TestPds,\n ) {}\n\n static async create(\n params: Partial<TestServerParams> = {},\n ): Promise<TestNetworkNoAppView> {\n const plc = await TestPlc.create(params.plc ?? {})\n const pds = await TestPds.create({\n didPlcUrl: plc.url,\n ...params.pds,\n })\n\n mockNetworkUtilities(pds)\n\n return new TestNetworkNoAppView(plc, pds)\n }\n\n async createFeedGen(\n feeds: Record<string, SkeletonHandler>,\n ): Promise<TestFeedGen> {\n const fg = await TestFeedGen.create(this.plc.url, feeds)\n this.feedGens.push(fg)\n return fg\n }\n\n getSeedClient(): SeedClient<typeof this> {\n const agent = this.pds.getAgent()\n const client = this.pds.getClient()\n return new SeedClient(this, agent, client)\n }\n\n async processAll() {\n await this.pds.processAll()\n }\n\n async close() {\n await Promise.all(this.feedGens.map((fg) => fg.close()))\n await this.pds.close()\n await this.plc.close()\n }\n}\n"]}
package/dist/network.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- import { TestBsky } from './bsky';
2
- import { IntrospectServer } from './introspect';
3
- import { TestNetworkNoAppView } from './network-no-appview';
4
- import { TestOzone } from './ozone';
5
- import { TestPds } from './pds';
6
- import { TestPlc } from './plc';
7
- import { TestServerParams } from './types';
1
+ import { TestBsky } from './bsky.js';
2
+ import { IntrospectServer } from './introspect.js';
3
+ import { TestNetworkNoAppView } from './network-no-appview.js';
4
+ import { TestOzone } from './ozone.js';
5
+ import { TestPds } from './pds.js';
6
+ import { TestPlc } from './plc.js';
7
+ import { TestServerParams } from './types.js';
8
8
  export declare class TestNetwork extends TestNetworkNoAppView {
9
9
  plc: TestPlc;
10
10
  pds: TestPds;
@@ -1 +1 @@
1
- {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAEjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAG/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAM1C,qBAAa,WAAY,SAAQ,oBAAoB;IAE1C,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,OAAO;IACZ,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,SAAS;IAChB,UAAU,CAAC,EAAE,gBAAgB;gBAJ7B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,SAAS,EAChB,UAAU,CAAC,EAAE,gBAAgB,YAAA;WAKzB,MAAM,CACjB,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACrC,OAAO,CAAC,WAAW,CAAC;IAsHjB,uBAAuB,CAAC,OAAO,SAAO;IAkBtC,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM;IAM3B,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM;;;IAWrD,YAAY,CAAC,EACjB,QAAyB,EACzB,QAAyB,GAC1B,EAAE;QACD,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB;;;IAWK,KAAK;CAQZ"}
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAGlC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAM7C,qBAAa,WAAY,SAAQ,oBAAoB;IAE1C,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,OAAO;IACZ,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,SAAS;IAChB,UAAU,CAAC,EAAE,gBAAgB;gBAJ7B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,SAAS,EAChB,UAAU,CAAC,EAAE,gBAAgB,YAAA;WAKzB,MAAM,CACjB,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACrC,OAAO,CAAC,WAAW,CAAC;IAsHjB,uBAAuB,CAAC,OAAO,SAAO;IAkBtC,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM;IAM3B,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM;;;IAWrD,YAAY,CAAC,EACjB,QAAyB,EACzB,QAAyB,GAC1B,EAAE;QACD,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB;;;IAWK,KAAK;CAQZ"}
package/dist/network.js CHANGED
@@ -1,115 +1,51 @@
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
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.TestNetwork = void 0;
40
- const node_assert_1 = __importDefault(require("node:assert"));
41
- const get_port_1 = __importDefault(require("get-port"));
42
- const uint8arrays = __importStar(require("uint8arrays"));
43
- const common_web_1 = require("@atproto/common-web");
44
- const xrpc_server_1 = require("@atproto/xrpc-server");
45
- const bsky_1 = require("./bsky");
46
- const const_1 = require("./const");
47
- const introspect_1 = require("./introspect");
48
- const network_no_appview_1 = require("./network-no-appview");
49
- const ozone_1 = require("./ozone");
50
- const pds_1 = require("./pds");
51
- const plc_1 = require("./plc");
52
- const service_profile_lexicon_1 = require("./service-profile-lexicon");
53
- const service_profile_ozone_1 = require("./service-profile-ozone");
54
- const util_1 = require("./util");
1
+ import assert from 'node:assert';
2
+ import getPort from 'get-port';
3
+ import * as uint8arrays from 'uint8arrays';
4
+ import { wait } from '@atproto/common-web';
5
+ import { createServiceJwt } from '@atproto/xrpc-server';
6
+ import { TestBsky } from './bsky.js';
7
+ import { EXAMPLE_LABELER } from './const.js';
8
+ import { IntrospectServer } from './introspect.js';
9
+ import { TestNetworkNoAppView } from './network-no-appview.js';
10
+ import { TestOzone } from './ozone.js';
11
+ import { TestPds } from './pds.js';
12
+ import { TestPlc } from './plc.js';
13
+ import { LexiconAuthorityProfile } from './service-profile-lexicon.js';
14
+ import { OzoneServiceProfile } from './service-profile-ozone.js';
15
+ import { mockNetworkUtilities } from './util.js';
55
16
  const ADMIN_USERNAME = 'admin';
56
17
  const ADMIN_PASSWORD = 'admin-pass';
57
- class TestNetwork extends network_no_appview_1.TestNetworkNoAppView {
18
+ export class TestNetwork extends TestNetworkNoAppView {
58
19
  constructor(plc, pds, bsky, ozone, introspect) {
59
20
  super(plc, pds);
60
- Object.defineProperty(this, "plc", {
61
- enumerable: true,
62
- configurable: true,
63
- writable: true,
64
- value: plc
65
- });
66
- Object.defineProperty(this, "pds", {
67
- enumerable: true,
68
- configurable: true,
69
- writable: true,
70
- value: pds
71
- });
72
- Object.defineProperty(this, "bsky", {
73
- enumerable: true,
74
- configurable: true,
75
- writable: true,
76
- value: bsky
77
- });
78
- Object.defineProperty(this, "ozone", {
79
- enumerable: true,
80
- configurable: true,
81
- writable: true,
82
- value: ozone
83
- });
84
- Object.defineProperty(this, "introspect", {
85
- enumerable: true,
86
- configurable: true,
87
- writable: true,
88
- value: introspect
89
- });
21
+ this.plc = plc;
22
+ this.pds = pds;
23
+ this.bsky = bsky;
24
+ this.ozone = ozone;
25
+ this.introspect = introspect;
90
26
  }
91
27
  static async create(params = {}) {
92
28
  const redisHost = process.env.REDIS_HOST;
93
29
  const dbPostgresUrl = params.dbPostgresUrl || process.env.DB_POSTGRES_URL;
94
- (0, node_assert_1.default)(dbPostgresUrl, 'Missing postgres url for tests');
95
- (0, node_assert_1.default)(redisHost, 'Missing redis host for tests');
30
+ assert(dbPostgresUrl, 'Missing postgres url for tests');
31
+ assert(redisHost, 'Missing redis host for tests');
96
32
  const dbPostgresSchema = params.dbPostgresSchema || process.env.DB_POSTGRES_SCHEMA;
97
- const plc = await plc_1.TestPlc.create(params.plc ?? {});
98
- const bskyPort = params.bsky?.port ?? (await (0, get_port_1.default)());
99
- const pdsPort = params.pds?.port ?? (await (0, get_port_1.default)());
100
- const ozonePort = params.ozone?.port ?? (await (0, get_port_1.default)());
101
- const thirdPartyPds = await pds_1.TestPds.create({
33
+ const plc = await TestPlc.create(params.plc ?? {});
34
+ const bskyPort = params.bsky?.port ?? (await getPort());
35
+ const pdsPort = params.pds?.port ?? (await getPort());
36
+ const ozonePort = params.ozone?.port ?? (await getPort());
37
+ const thirdPartyPds = await TestPds.create({
102
38
  didPlcUrl: plc.url,
103
39
  ...params.pds,
104
40
  inviteRequired: false,
105
- port: await (0, get_port_1.default)(),
41
+ port: await getPort(),
106
42
  });
107
43
  const ozoneUrl = `http://localhost:${ozonePort}`;
108
44
  // @TODO (?) rework the ServiceProfile to live on a separate PDS instead of
109
45
  // requiring to migrate to the main PDS
110
- const ozoneServiceProfile = await service_profile_ozone_1.OzoneServiceProfile.create(thirdPartyPds, ozoneUrl);
111
- const lexiconAuthorityProfile = await service_profile_lexicon_1.LexiconAuthorityProfile.create(thirdPartyPds);
112
- const bsky = await bsky_1.TestBsky.create({
46
+ const ozoneServiceProfile = await OzoneServiceProfile.create(thirdPartyPds, ozoneUrl);
47
+ const lexiconAuthorityProfile = await LexiconAuthorityProfile.create(thirdPartyPds);
48
+ const bsky = await TestBsky.create({
113
49
  port: bskyPort,
114
50
  plcUrl: plc.url,
115
51
  pdsPort,
@@ -120,12 +56,12 @@ class TestNetwork extends network_no_appview_1.TestNetworkNoAppView {
120
56
  dbPostgresUrl,
121
57
  redisHost,
122
58
  modServiceDid: ozoneServiceProfile.did,
123
- labelsFromIssuerDids: [ozoneServiceProfile.did, const_1.EXAMPLE_LABELER],
59
+ labelsFromIssuerDids: [ozoneServiceProfile.did, EXAMPLE_LABELER],
124
60
  // Using a static private key results in a static DID, which is useful for e2e tests with the social-app repo.
125
61
  privateKey: '3f916c70dc69e4c5e83877f013325b11ecac31742e6a42f5c4fb240d0703d9d5=',
126
62
  ...params.bsky,
127
63
  });
128
- const pds = await pds_1.TestPds.create({
64
+ const pds = await TestPds.create({
129
65
  port: pdsPort,
130
66
  didPlcUrl: plc.url,
131
67
  bskyAppViewUrl: bsky.url,
@@ -136,8 +72,8 @@ class TestNetwork extends network_no_appview_1.TestNetworkNoAppView {
136
72
  ...params.pds,
137
73
  });
138
74
  // mock before any events start flowing from pds so that we don't miss e.g. any handle resolutions.
139
- (0, util_1.mockNetworkUtilities)(pds, bsky);
140
- const ozone = await ozone_1.TestOzone.create({
75
+ mockNetworkUtilities(pds, bsky);
76
+ const ozone = await TestOzone.create({
141
77
  port: ozonePort,
142
78
  plcUrl: plc.url,
143
79
  signingKey: ozoneServiceProfile.key,
@@ -172,7 +108,7 @@ class TestNetwork extends network_no_appview_1.TestNetworkNoAppView {
172
108
  }
173
109
  let introspect = undefined;
174
110
  if (params.introspect?.port) {
175
- introspect = await introspect_1.IntrospectServer.start(params.introspect.port, plc, pds, bsky, ozone);
111
+ introspect = await IntrospectServer.start(params.introspect.port, plc, pds, bsky, ozone);
176
112
  }
177
113
  return new TestNetwork(plc, pds, bsky, ozone, introspect);
178
114
  }
@@ -190,7 +126,7 @@ class TestNetwork extends network_no_appview_1.TestNetworkNoAppView {
190
126
  if (runnerCursor && runnerCursor >= lastSeq) {
191
127
  return;
192
128
  }
193
- await (0, common_web_1.wait)(5);
129
+ await wait(5);
194
130
  }
195
131
  throw new Error(`Sequence was not processed within ${timeout}ms`);
196
132
  }
@@ -201,7 +137,7 @@ class TestNetwork extends network_no_appview_1.TestNetworkNoAppView {
201
137
  }
202
138
  async serviceHeaders(did, lxm, aud) {
203
139
  const keypair = await this.pds.ctx.actorStore.keypair(did);
204
- const jwt = await (0, xrpc_server_1.createServiceJwt)({
140
+ const jwt = await createServiceJwt({
205
141
  iss: did,
206
142
  aud: aud ?? this.bsky.ctx.cfg.serverDid,
207
143
  lxm,
@@ -224,5 +160,4 @@ class TestNetwork extends network_no_appview_1.TestNetworkNoAppView {
224
160
  await this.introspect?.close();
225
161
  }
226
162
  }
227
- exports.TestNetwork = TestNetwork;
228
163
  //# sourceMappingURL=network.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport getPort from 'get-port'\nimport * as uint8arrays from 'uint8arrays'\nimport { wait } from '@atproto/common-web'\nimport { createServiceJwt } from '@atproto/xrpc-server'\nimport { TestBsky } from './bsky'\nimport { EXAMPLE_LABELER } from './const'\nimport { IntrospectServer } from './introspect'\nimport { TestNetworkNoAppView } from './network-no-appview'\nimport { TestOzone } from './ozone'\nimport { TestPds } from './pds'\nimport { TestPlc } from './plc'\nimport { LexiconAuthorityProfile } from './service-profile-lexicon'\nimport { OzoneServiceProfile } from './service-profile-ozone'\nimport { TestServerParams } from './types'\nimport { mockNetworkUtilities } from './util'\n\nconst ADMIN_USERNAME = 'admin'\nconst ADMIN_PASSWORD = 'admin-pass'\n\nexport class TestNetwork extends TestNetworkNoAppView {\n constructor(\n public plc: TestPlc,\n public pds: TestPds,\n public bsky: TestBsky,\n public ozone: TestOzone,\n public introspect?: IntrospectServer,\n ) {\n super(plc, pds)\n }\n\n static async create(\n params: Partial<TestServerParams> = {},\n ): Promise<TestNetwork> {\n const redisHost = process.env.REDIS_HOST\n const dbPostgresUrl = params.dbPostgresUrl || process.env.DB_POSTGRES_URL\n assert(dbPostgresUrl, 'Missing postgres url for tests')\n assert(redisHost, 'Missing redis host for tests')\n const dbPostgresSchema =\n params.dbPostgresSchema || process.env.DB_POSTGRES_SCHEMA\n\n const plc = await TestPlc.create(params.plc ?? {})\n\n const bskyPort = params.bsky?.port ?? (await getPort())\n const pdsPort = params.pds?.port ?? (await getPort())\n const ozonePort = params.ozone?.port ?? (await getPort())\n\n const thirdPartyPds = await TestPds.create({\n didPlcUrl: plc.url,\n ...params.pds,\n inviteRequired: false,\n port: await getPort(),\n })\n\n const ozoneUrl = `http://localhost:${ozonePort}`\n\n // @TODO (?) rework the ServiceProfile to live on a separate PDS instead of\n // requiring to migrate to the main PDS\n const ozoneServiceProfile = await OzoneServiceProfile.create(\n thirdPartyPds,\n ozoneUrl,\n )\n const lexiconAuthorityProfile =\n await LexiconAuthorityProfile.create(thirdPartyPds)\n\n const bsky = await TestBsky.create({\n port: bskyPort,\n plcUrl: plc.url,\n pdsPort,\n rolodexUrl: process.env.BSKY_ROLODEX_URL,\n rolodexIgnoreBadTls: true,\n repoProvider: `ws://localhost:${pdsPort}`,\n dbPostgresSchema: `appview_${dbPostgresSchema}`,\n dbPostgresUrl,\n redisHost,\n modServiceDid: ozoneServiceProfile.did,\n labelsFromIssuerDids: [ozoneServiceProfile.did, EXAMPLE_LABELER],\n // Using a static private key results in a static DID, which is useful for e2e tests with the social-app repo.\n privateKey:\n '3f916c70dc69e4c5e83877f013325b11ecac31742e6a42f5c4fb240d0703d9d5=',\n ...params.bsky,\n })\n\n const pds = await TestPds.create({\n port: pdsPort,\n didPlcUrl: plc.url,\n bskyAppViewUrl: bsky.url,\n bskyAppViewDid: bsky.ctx.cfg.serverDid,\n modServiceUrl: ozoneUrl,\n modServiceDid: ozoneServiceProfile.did,\n lexiconDidAuthority: lexiconAuthorityProfile.did,\n ...params.pds,\n })\n\n // mock before any events start flowing from pds so that we don't miss e.g. any handle resolutions.\n mockNetworkUtilities(pds, bsky)\n\n const ozone = await TestOzone.create({\n port: ozonePort,\n plcUrl: plc.url,\n signingKey: ozoneServiceProfile.key,\n serverDid: ozoneServiceProfile.did,\n dbPostgresSchema: `ozone_${dbPostgresSchema || 'db'}`,\n dbPostgresUrl,\n appviewUrl: bsky.url,\n appviewDid: bsky.ctx.cfg.serverDid,\n appviewPushEvents: true,\n pdsUrl: pds.url,\n pdsDid: pds.ctx.cfg.service.did,\n verifierDid: ozoneServiceProfile.did,\n verifierUrl: pds.url,\n verifierPassword: 'temp',\n ...params.ozone,\n })\n\n await ozoneServiceProfile.migrateTo(pds)\n await ozoneServiceProfile.createRecords()\n\n await lexiconAuthorityProfile.migrateTo(pds)\n await lexiconAuthorityProfile.createRecords()\n\n await ozone.addAdminDid(ozoneServiceProfile.did)\n await ozone.createPolicies()\n\n await thirdPartyPds.processAll()\n await pds.processAll()\n await ozone.processAll()\n await bsky.sub.processAll()\n await thirdPartyPds.close()\n\n // Weird but if we do this before pds.processAll() somehow appview loses this user and tests in different parts fail because appview doesn't return this user in various contexts anymore\n const ozoneVerifierPassword =\n await ozoneServiceProfile.createAppPasswordForVerification()\n if (ozone.daemon.ctx.cfg.verifier) {\n ozone.daemon.ctx.cfg.verifier.password = ozoneVerifierPassword\n }\n\n let introspect: IntrospectServer | undefined = undefined\n if (params.introspect?.port) {\n introspect = await IntrospectServer.start(\n params.introspect.port,\n plc,\n pds,\n bsky,\n ozone,\n )\n }\n\n return new TestNetwork(plc, pds, bsky, ozone, introspect)\n }\n\n async processFullSubscription(timeout = 5000) {\n const sub = this.bsky.sub\n const start = Date.now()\n const lastSeq = await this.pds.ctx.sequencer.curr()\n if (!lastSeq) return\n while (Date.now() - start < timeout) {\n await sub.processAll()\n const runnerCursor = await sub.runner.getCursor()\n // if subscription claims to be done, ensure we are at the most recent cursor from PDS, else wait to process again\n // (the subscription may claim to be finished before the PDS has even emitted it's event)\n if (runnerCursor && runnerCursor >= lastSeq) {\n return\n }\n await wait(5)\n }\n throw new Error(`Sequence was not processed within ${timeout}ms`)\n }\n\n async processAll(timeout?: number) {\n await this.pds.processAll()\n await this.ozone.processAll()\n await this.processFullSubscription(timeout)\n }\n\n async serviceHeaders(did: string, lxm: string, aud?: string) {\n const keypair = await this.pds.ctx.actorStore.keypair(did)\n const jwt = await createServiceJwt({\n iss: did,\n aud: aud ?? this.bsky.ctx.cfg.serverDid,\n lxm,\n keypair,\n })\n return { authorization: `Bearer ${jwt}` }\n }\n\n async adminHeaders({\n username = ADMIN_USERNAME,\n password = ADMIN_PASSWORD,\n }: {\n username?: string\n password?: string\n }) {\n return {\n authorization:\n 'Basic ' +\n uint8arrays.toString(\n uint8arrays.fromString(`${username}:${password}`, 'utf8'),\n 'base64pad',\n ),\n }\n }\n\n async close() {\n await Promise.all(this.feedGens.map((fg) => fg.close()))\n await this.ozone.close()\n await this.bsky.close()\n await this.pds.close()\n await this.plc.close()\n await this.introspect?.close()\n }\n}\n"]}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,KAAK,WAAW,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,cAAc,GAAG,OAAO,CAAA;AAC9B,MAAM,cAAc,GAAG,YAAY,CAAA;AAEnC,MAAM,OAAO,WAAY,SAAQ,oBAAoB;IACnD,YACS,GAAY,EACZ,GAAY,EACZ,IAAc,EACd,KAAgB,EAChB,UAA6B;QAEpC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QANR,QAAG,GAAH,GAAG,CAAS;QACZ,QAAG,GAAH,GAAG,CAAS;QACZ,SAAI,GAAJ,IAAI,CAAU;QACd,UAAK,GAAL,KAAK,CAAW;QAChB,eAAU,GAAV,UAAU,CAAmB;IAGtC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,SAAoC,EAAE;QAEtC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAA;QACxC,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAA;QACzE,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC,CAAA;QACvD,MAAM,CAAC,SAAS,EAAE,8BAA8B,CAAC,CAAA;QACjD,MAAM,gBAAgB,GACpB,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAA;QAE3D,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAA;QAElD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,MAAM,OAAO,EAAE,CAAC,CAAA;QACvD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,OAAO,EAAE,CAAC,CAAA;QACrD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,OAAO,EAAE,CAAC,CAAA;QAEzD,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;YACzC,SAAS,EAAE,GAAG,CAAC,GAAG;YAClB,GAAG,MAAM,CAAC,GAAG;YACb,cAAc,EAAE,KAAK;YACrB,IAAI,EAAE,MAAM,OAAO,EAAE;SACtB,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,oBAAoB,SAAS,EAAE,CAAA;QAEhD,2EAA2E;QAC3E,uCAAuC;QACvC,MAAM,mBAAmB,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAC1D,aAAa,EACb,QAAQ,CACT,CAAA;QACD,MAAM,uBAAuB,GAC3B,MAAM,uBAAuB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QAErD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACjC,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,GAAG,CAAC,GAAG;YACf,OAAO;YACP,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB;YACxC,mBAAmB,EAAE,IAAI;YACzB,YAAY,EAAE,kBAAkB,OAAO,EAAE;YACzC,gBAAgB,EAAE,WAAW,gBAAgB,EAAE;YAC/C,aAAa;YACb,SAAS;YACT,aAAa,EAAE,mBAAmB,CAAC,GAAG;YACtC,oBAAoB,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,eAAe,CAAC;YAChE,8GAA8G;YAC9G,UAAU,EACR,mEAAmE;YACrE,GAAG,MAAM,CAAC,IAAI;SACf,CAAC,CAAA;QAEF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;YAC/B,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,GAAG,CAAC,GAAG;YAClB,cAAc,EAAE,IAAI,CAAC,GAAG;YACxB,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS;YACtC,aAAa,EAAE,QAAQ;YACvB,aAAa,EAAE,mBAAmB,CAAC,GAAG;YACtC,mBAAmB,EAAE,uBAAuB,CAAC,GAAG;YAChD,GAAG,MAAM,CAAC,GAAG;SACd,CAAC,CAAA;QAEF,mGAAmG;QACnG,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAE/B,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC;YACnC,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,GAAG,CAAC,GAAG;YACf,UAAU,EAAE,mBAAmB,CAAC,GAAG;YACnC,SAAS,EAAE,mBAAmB,CAAC,GAAG;YAClC,gBAAgB,EAAE,SAAS,gBAAgB,IAAI,IAAI,EAAE;YACrD,aAAa;YACb,UAAU,EAAE,IAAI,CAAC,GAAG;YACpB,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS;YAClC,iBAAiB,EAAE,IAAI;YACvB,MAAM,EAAE,GAAG,CAAC,GAAG;YACf,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG;YAC/B,WAAW,EAAE,mBAAmB,CAAC,GAAG;YACpC,WAAW,EAAE,GAAG,CAAC,GAAG;YACpB,gBAAgB,EAAE,MAAM;YACxB,GAAG,MAAM,CAAC,KAAK;SAChB,CAAC,CAAA;QAEF,MAAM,mBAAmB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QACxC,MAAM,mBAAmB,CAAC,aAAa,EAAE,CAAA;QAEzC,MAAM,uBAAuB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAC5C,MAAM,uBAAuB,CAAC,aAAa,EAAE,CAAA;QAE7C,MAAM,KAAK,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAA;QAChD,MAAM,KAAK,CAAC,cAAc,EAAE,CAAA;QAE5B,MAAM,aAAa,CAAC,UAAU,EAAE,CAAA;QAChC,MAAM,GAAG,CAAC,UAAU,EAAE,CAAA;QACtB,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QACxB,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAA;QAC3B,MAAM,aAAa,CAAC,KAAK,EAAE,CAAA;QAE3B,yLAAyL;QACzL,MAAM,qBAAqB,GACzB,MAAM,mBAAmB,CAAC,gCAAgC,EAAE,CAAA;QAC9D,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAClC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,qBAAqB,CAAA;QAChE,CAAC;QAED,IAAI,UAAU,GAAiC,SAAS,CAAA;QACxD,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;YAC5B,UAAU,GAAG,MAAM,gBAAgB,CAAC,KAAK,CACvC,MAAM,CAAC,UAAU,CAAC,IAAI,EACtB,GAAG,EACH,GAAG,EACH,IAAI,EACJ,KAAK,CACN,CAAA;QACH,CAAC;QAED,OAAO,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAA;IAC3D,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,OAAO,GAAG,IAAI;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACxB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;QACnD,IAAI,CAAC,OAAO;YAAE,OAAM;QACpB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,OAAO,EAAE,CAAC;YACpC,MAAM,GAAG,CAAC,UAAU,EAAE,CAAA;YACtB,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,CAAA;YACjD,kHAAkH;YAClH,yFAAyF;YACzF,IAAI,YAAY,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;gBAC5C,OAAM;YACR,CAAC;YACD,MAAM,IAAI,CAAC,CAAC,CAAC,CAAA;QACf,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,IAAI,CAAC,CAAA;IACnE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAgB;QAC/B,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAA;QAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAA;QAC7B,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,GAAW,EAAE,GAAY;QACzD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC1D,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC;YACjC,GAAG,EAAE,GAAG;YACR,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS;YACvC,GAAG;YACH,OAAO;SACR,CAAC,CAAA;QACF,OAAO,EAAE,aAAa,EAAE,UAAU,GAAG,EAAE,EAAE,CAAA;IAC3C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EACjB,QAAQ,GAAG,cAAc,EACzB,QAAQ,GAAG,cAAc,GAI1B;QACC,OAAO;YACL,aAAa,EACX,QAAQ;gBACR,WAAW,CAAC,QAAQ,CAClB,WAAW,CAAC,UAAU,CAAC,GAAG,QAAQ,IAAI,QAAQ,EAAE,EAAE,MAAM,CAAC,EACzD,WAAW,CACZ;SACJ,CAAA;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QACxD,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QACxB,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACvB,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;QACtB,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;QACtB,MAAM,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAA;IAChC,CAAC;CACF","sourcesContent":["import assert from 'node:assert'\nimport getPort from 'get-port'\nimport * as uint8arrays from 'uint8arrays'\nimport { wait } from '@atproto/common-web'\nimport { createServiceJwt } from '@atproto/xrpc-server'\nimport { TestBsky } from './bsky.js'\nimport { EXAMPLE_LABELER } from './const.js'\nimport { IntrospectServer } from './introspect.js'\nimport { TestNetworkNoAppView } from './network-no-appview.js'\nimport { TestOzone } from './ozone.js'\nimport { TestPds } from './pds.js'\nimport { TestPlc } from './plc.js'\nimport { LexiconAuthorityProfile } from './service-profile-lexicon.js'\nimport { OzoneServiceProfile } from './service-profile-ozone.js'\nimport { TestServerParams } from './types.js'\nimport { mockNetworkUtilities } from './util.js'\n\nconst ADMIN_USERNAME = 'admin'\nconst ADMIN_PASSWORD = 'admin-pass'\n\nexport class TestNetwork extends TestNetworkNoAppView {\n constructor(\n public plc: TestPlc,\n public pds: TestPds,\n public bsky: TestBsky,\n public ozone: TestOzone,\n public introspect?: IntrospectServer,\n ) {\n super(plc, pds)\n }\n\n static async create(\n params: Partial<TestServerParams> = {},\n ): Promise<TestNetwork> {\n const redisHost = process.env.REDIS_HOST\n const dbPostgresUrl = params.dbPostgresUrl || process.env.DB_POSTGRES_URL\n assert(dbPostgresUrl, 'Missing postgres url for tests')\n assert(redisHost, 'Missing redis host for tests')\n const dbPostgresSchema =\n params.dbPostgresSchema || process.env.DB_POSTGRES_SCHEMA\n\n const plc = await TestPlc.create(params.plc ?? {})\n\n const bskyPort = params.bsky?.port ?? (await getPort())\n const pdsPort = params.pds?.port ?? (await getPort())\n const ozonePort = params.ozone?.port ?? (await getPort())\n\n const thirdPartyPds = await TestPds.create({\n didPlcUrl: plc.url,\n ...params.pds,\n inviteRequired: false,\n port: await getPort(),\n })\n\n const ozoneUrl = `http://localhost:${ozonePort}`\n\n // @TODO (?) rework the ServiceProfile to live on a separate PDS instead of\n // requiring to migrate to the main PDS\n const ozoneServiceProfile = await OzoneServiceProfile.create(\n thirdPartyPds,\n ozoneUrl,\n )\n const lexiconAuthorityProfile =\n await LexiconAuthorityProfile.create(thirdPartyPds)\n\n const bsky = await TestBsky.create({\n port: bskyPort,\n plcUrl: plc.url,\n pdsPort,\n rolodexUrl: process.env.BSKY_ROLODEX_URL,\n rolodexIgnoreBadTls: true,\n repoProvider: `ws://localhost:${pdsPort}`,\n dbPostgresSchema: `appview_${dbPostgresSchema}`,\n dbPostgresUrl,\n redisHost,\n modServiceDid: ozoneServiceProfile.did,\n labelsFromIssuerDids: [ozoneServiceProfile.did, EXAMPLE_LABELER],\n // Using a static private key results in a static DID, which is useful for e2e tests with the social-app repo.\n privateKey:\n '3f916c70dc69e4c5e83877f013325b11ecac31742e6a42f5c4fb240d0703d9d5=',\n ...params.bsky,\n })\n\n const pds = await TestPds.create({\n port: pdsPort,\n didPlcUrl: plc.url,\n bskyAppViewUrl: bsky.url,\n bskyAppViewDid: bsky.ctx.cfg.serverDid,\n modServiceUrl: ozoneUrl,\n modServiceDid: ozoneServiceProfile.did,\n lexiconDidAuthority: lexiconAuthorityProfile.did,\n ...params.pds,\n })\n\n // mock before any events start flowing from pds so that we don't miss e.g. any handle resolutions.\n mockNetworkUtilities(pds, bsky)\n\n const ozone = await TestOzone.create({\n port: ozonePort,\n plcUrl: plc.url,\n signingKey: ozoneServiceProfile.key,\n serverDid: ozoneServiceProfile.did,\n dbPostgresSchema: `ozone_${dbPostgresSchema || 'db'}`,\n dbPostgresUrl,\n appviewUrl: bsky.url,\n appviewDid: bsky.ctx.cfg.serverDid,\n appviewPushEvents: true,\n pdsUrl: pds.url,\n pdsDid: pds.ctx.cfg.service.did,\n verifierDid: ozoneServiceProfile.did,\n verifierUrl: pds.url,\n verifierPassword: 'temp',\n ...params.ozone,\n })\n\n await ozoneServiceProfile.migrateTo(pds)\n await ozoneServiceProfile.createRecords()\n\n await lexiconAuthorityProfile.migrateTo(pds)\n await lexiconAuthorityProfile.createRecords()\n\n await ozone.addAdminDid(ozoneServiceProfile.did)\n await ozone.createPolicies()\n\n await thirdPartyPds.processAll()\n await pds.processAll()\n await ozone.processAll()\n await bsky.sub.processAll()\n await thirdPartyPds.close()\n\n // Weird but if we do this before pds.processAll() somehow appview loses this user and tests in different parts fail because appview doesn't return this user in various contexts anymore\n const ozoneVerifierPassword =\n await ozoneServiceProfile.createAppPasswordForVerification()\n if (ozone.daemon.ctx.cfg.verifier) {\n ozone.daemon.ctx.cfg.verifier.password = ozoneVerifierPassword\n }\n\n let introspect: IntrospectServer | undefined = undefined\n if (params.introspect?.port) {\n introspect = await IntrospectServer.start(\n params.introspect.port,\n plc,\n pds,\n bsky,\n ozone,\n )\n }\n\n return new TestNetwork(plc, pds, bsky, ozone, introspect)\n }\n\n async processFullSubscription(timeout = 5000) {\n const sub = this.bsky.sub\n const start = Date.now()\n const lastSeq = await this.pds.ctx.sequencer.curr()\n if (!lastSeq) return\n while (Date.now() - start < timeout) {\n await sub.processAll()\n const runnerCursor = await sub.runner.getCursor()\n // if subscription claims to be done, ensure we are at the most recent cursor from PDS, else wait to process again\n // (the subscription may claim to be finished before the PDS has even emitted it's event)\n if (runnerCursor && runnerCursor >= lastSeq) {\n return\n }\n await wait(5)\n }\n throw new Error(`Sequence was not processed within ${timeout}ms`)\n }\n\n async processAll(timeout?: number) {\n await this.pds.processAll()\n await this.ozone.processAll()\n await this.processFullSubscription(timeout)\n }\n\n async serviceHeaders(did: string, lxm: string, aud?: string) {\n const keypair = await this.pds.ctx.actorStore.keypair(did)\n const jwt = await createServiceJwt({\n iss: did,\n aud: aud ?? this.bsky.ctx.cfg.serverDid,\n lxm,\n keypair,\n })\n return { authorization: `Bearer ${jwt}` }\n }\n\n async adminHeaders({\n username = ADMIN_USERNAME,\n password = ADMIN_PASSWORD,\n }: {\n username?: string\n password?: string\n }) {\n return {\n authorization:\n 'Basic ' +\n uint8arrays.toString(\n uint8arrays.fromString(`${username}:${password}`, 'utf8'),\n 'base64pad',\n ),\n }\n }\n\n async close() {\n await Promise.all(this.feedGens.map((fg) => fg.close()))\n await this.ozone.close()\n await this.bsky.close()\n await this.pds.close()\n await this.plc.close()\n await this.introspect?.close()\n }\n}\n"]}
package/dist/ozone.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { AtpAgent } from '@atproto/api';
2
2
  import { Keypair } from '@atproto/crypto';
3
3
  import * as ozone from '@atproto/ozone';
4
- import { ModeratorClient } from './moderator-client';
5
- import { DidAndKey, OzoneConfig } from './types';
4
+ import { ModeratorClient } from './moderator-client.js';
5
+ import { DidAndKey, OzoneConfig } from './types.js';
6
6
  export declare class TestOzone {
7
7
  url: string;
8
8
  port: number;
@@ -1 +1 @@
1
- {"version":3,"file":"ozone.d.ts","sourceRoot":"","sources":["../src/ozone.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,OAAO,EAAoB,MAAM,iBAAiB,CAAA;AAC3D,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAGvC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAGhD,qBAAa,SAAS;IAEX,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,KAAK,CAAC,YAAY;IAC1B,MAAM,EAAE,KAAK,CAAC,WAAW;IACzB,UAAU,EAAE,SAAS;IACrB,cAAc,EAAE,SAAS;IACzB,WAAW,EAAE,SAAS;gBANtB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,KAAK,CAAC,YAAY,EAC1B,MAAM,EAAE,KAAK,CAAC,WAAW,EACzB,UAAU,EAAE,SAAS,EACrB,cAAc,EAAE,SAAS,EACzB,WAAW,EAAE,SAAS;WAGlB,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IA8E5D,IAAI,GAAG,IAAI,KAAK,CAAC,UAAU,CAE1B;IAED,QAAQ,IAAI,QAAQ;IAMpB,YAAY;IAIN,WAAW,CAAC,GAAG,EAAE,MAAM;IAYvB,eAAe,CAAC,GAAG,EAAE,MAAM;IAY3B,YAAY,CAAC,GAAG,EAAE,MAAM;IAYxB,cAAc;IAwEd,UAAU,CACd,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,OAAO,GAAG,WAAW,GAAG,QAAsB;;;IAiBhD,UAAU;IAKV,KAAK;CAIZ;AAED,eAAO,MAAM,cAAc,GACzB,QAAQ,MAAM,EACd,SAAS,OAAO,KACf,OAAO,CAAC,MAAM,CAuBhB,CAAA"}
1
+ {"version":3,"file":"ozone.d.ts","sourceRoot":"","sources":["../src/ozone.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,OAAO,EAAoB,MAAM,iBAAiB,CAAA;AAC3D,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAGvC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAGnD,qBAAa,SAAS;IAEX,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,KAAK,CAAC,YAAY;IAC1B,MAAM,EAAE,KAAK,CAAC,WAAW;IACzB,UAAU,EAAE,SAAS;IACrB,cAAc,EAAE,SAAS;IACzB,WAAW,EAAE,SAAS;gBANtB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,KAAK,CAAC,YAAY,EAC1B,MAAM,EAAE,KAAK,CAAC,WAAW,EACzB,UAAU,EAAE,SAAS,EACrB,cAAc,EAAE,SAAS,EACzB,WAAW,EAAE,SAAS;WAGlB,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IA8E5D,IAAI,GAAG,IAAI,KAAK,CAAC,UAAU,CAE1B;IAED,QAAQ,IAAI,QAAQ;IAMpB,YAAY;IAIN,WAAW,CAAC,GAAG,EAAE,MAAM;IAYvB,eAAe,CAAC,GAAG,EAAE,MAAM;IAY3B,YAAY,CAAC,GAAG,EAAE,MAAM;IAYxB,cAAc;IAwEd,UAAU,CACd,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,OAAO,GAAG,WAAW,GAAG,QAAsB;;;IAiBhD,UAAU;IAKV,KAAK;CAIZ;AAED,eAAO,MAAM,cAAc,GACzB,QAAQ,MAAM,EACd,SAAS,OAAO,KACf,OAAO,CAAC,MAAM,CAuBhB,CAAA"}