@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.
- package/CHANGELOG.md +29 -0
- package/bin.js +1 -4
- package/dist/bin.d.ts +1 -1
- package/dist/bin.d.ts.map +1 -1
- package/dist/bin.js +8 -10
- package/dist/bin.js.map +1 -1
- package/dist/bsky.d.ts +1 -1
- package/dist/bsky.d.ts.map +1 -1
- package/dist/bsky.js +30 -113
- package/dist/bsky.js.map +1 -1
- package/dist/bsync.d.ts +1 -1
- package/dist/bsync.d.ts.map +1 -1
- package/dist/bsync.js +7 -62
- package/dist/bsync.js.map +1 -1
- package/dist/const.js +3 -6
- package/dist/const.js.map +1 -1
- package/dist/env.js +3 -8
- package/dist/env.js.map +1 -1
- package/dist/feed-gen.js +18 -78
- package/dist/feed-gen.js.map +1 -1
- package/dist/index.d.ts +14 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -55
- package/dist/index.js.map +1 -1
- package/dist/introspect.d.ts +4 -4
- package/dist/introspect.d.ts.map +1 -1
- package/dist/introspect.js +8 -25
- package/dist/introspect.js.map +1 -1
- package/dist/mock/data.js +2 -5
- package/dist/mock/data.js.map +1 -1
- package/dist/mock/img/blur-hash-avatar-b64.js +1 -3
- package/dist/mock/img/blur-hash-avatar-b64.js.map +1 -1
- package/dist/mock/img/labeled-img-b64.js +1 -3
- package/dist/mock/img/labeled-img-b64.js.map +1 -1
- package/dist/mock/index.d.ts +1 -1
- package/dist/mock/index.d.ts.map +1 -1
- package/dist/mock/index.js +29 -36
- package/dist/mock/index.js.map +1 -1
- package/dist/moderator-client.d.ts +4 -3
- package/dist/moderator-client.d.ts.map +1 -1
- package/dist/moderator-client.js +2 -17
- package/dist/moderator-client.js.map +1 -1
- package/dist/network-no-appview.d.ts +5 -5
- package/dist/network-no-appview.d.ts.map +1 -1
- package/dist/network-no-appview.js +14 -33
- package/dist/network-no-appview.js.map +1 -1
- package/dist/network.d.ts +7 -7
- package/dist/network.d.ts.map +1 -1
- package/dist/network.js +39 -104
- package/dist/network.js.map +1 -1
- package/dist/ozone.d.ts +2 -2
- package/dist/ozone.d.ts.map +1 -1
- package/dist/ozone.js +30 -106
- package/dist/ozone.js.map +1 -1
- package/dist/pds.d.ts +1 -1
- package/dist/pds.d.ts.map +1 -1
- package/dist/pds.js +29 -84
- package/dist/pds.js.map +1 -1
- package/dist/plc.d.ts +1 -1
- package/dist/plc.d.ts.map +1 -1
- package/dist/plc.js +9 -64
- package/dist/plc.js.map +1 -1
- package/dist/seed/author-feed.d.ts +2 -2
- package/dist/seed/author-feed.d.ts.map +1 -1
- package/dist/seed/author-feed.js +3 -8
- package/dist/seed/author-feed.js.map +1 -1
- package/dist/seed/basic.d.ts +3 -3
- package/dist/seed/basic.d.ts.map +1 -1
- package/dist/seed/basic.js +20 -26
- package/dist/seed/basic.js.map +1 -1
- package/dist/seed/client.d.ts +1 -1
- package/dist/seed/client.d.ts.map +1 -1
- package/dist/seed/client.js +29 -157
- package/dist/seed/client.js.map +1 -1
- package/dist/seed/follows.d.ts +1 -1
- package/dist/seed/follows.d.ts.map +1 -1
- package/dist/seed/follows.js +1 -3
- package/dist/seed/follows.js.map +1 -1
- package/dist/seed/index.d.ts +10 -10
- package/dist/seed/index.d.ts.map +1 -1
- package/dist/seed/index.js +10 -39
- package/dist/seed/index.js.map +1 -1
- package/dist/seed/likes.d.ts +2 -2
- package/dist/seed/likes.d.ts.map +1 -1
- package/dist/seed/likes.js +3 -8
- package/dist/seed/likes.js.map +1 -1
- package/dist/seed/quotes.d.ts +2 -2
- package/dist/seed/quotes.d.ts.map +1 -1
- package/dist/seed/quotes.js +3 -8
- package/dist/seed/quotes.js.map +1 -1
- package/dist/seed/reposts.d.ts +2 -2
- package/dist/seed/reposts.d.ts.map +1 -1
- package/dist/seed/reposts.js +3 -8
- package/dist/seed/reposts.js.map +1 -1
- package/dist/seed/thread-v2.d.ts +30 -30
- package/dist/seed/thread-v2.d.ts.map +1 -1
- package/dist/seed/thread-v2.js +35 -48
- package/dist/seed/thread-v2.js.map +1 -1
- package/dist/seed/users-bulk.d.ts +2 -2
- package/dist/seed/users-bulk.d.ts.map +1 -1
- package/dist/seed/users-bulk.js +3 -5
- package/dist/seed/users-bulk.js.map +1 -1
- package/dist/seed/users.d.ts +2 -2
- package/dist/seed/users.d.ts.map +1 -1
- package/dist/seed/users.js +1 -3
- package/dist/seed/users.js.map +1 -1
- package/dist/seed/verifications.d.ts +2 -2
- package/dist/seed/verifications.d.ts.map +1 -1
- package/dist/seed/verifications.js +3 -5
- package/dist/seed/verifications.js.map +1 -1
- package/dist/service-profile-lexicon.d.ts +2 -2
- package/dist/service-profile-lexicon.d.ts.map +1 -1
- package/dist/service-profile-lexicon.js +2 -6
- package/dist/service-profile-lexicon.js.map +1 -1
- package/dist/service-profile-ozone.d.ts +2 -2
- package/dist/service-profile-ozone.d.ts.map +1 -1
- package/dist/service-profile-ozone.js +6 -20
- package/dist/service-profile-ozone.js.map +1 -1
- package/dist/service-profile.d.ts +1 -1
- package/dist/service-profile.d.ts.map +1 -1
- package/dist/service-profile.js +6 -25
- package/dist/service-profile.js.map +1 -1
- package/dist/types.js +1 -2
- package/dist/util.d.ts +3 -3
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +13 -54
- package/dist/util.js.map +1 -1
- package/package.json +25 -20
- package/src/bin.ts +4 -4
- package/src/bsky.ts +2 -2
- package/src/bsync.ts +1 -1
- package/src/index.ts +14 -14
- package/src/introspect.ts +4 -4
- package/src/mock/index.ts +11 -8
- package/src/moderator-client.ts +2 -1
- package/src/network-no-appview.ts +6 -6
- package/src/network.ts +11 -11
- package/src/ozone.ts +4 -4
- package/src/pds.ts +2 -2
- package/src/plc.ts +1 -1
- package/src/seed/author-feed.ts +2 -2
- package/src/seed/basic.ts +6 -6
- package/src/seed/client.ts +3 -1
- package/src/seed/follows.ts +1 -1
- package/src/seed/index.ts +10 -10
- package/src/seed/likes.ts +2 -2
- package/src/seed/quotes.ts +2 -2
- package/src/seed/reposts.ts +2 -2
- package/src/seed/thread-v2.ts +13 -9
- package/src/seed/users-bulk.ts +1 -1
- package/src/seed/users.ts +1 -1
- package/src/seed/verifications.ts +2 -2
- package/src/service-profile-lexicon.ts +2 -2
- package/src/service-profile-ozone.ts +2 -2
- package/src/service-profile.ts +1 -1
- package/src/util.ts +3 -3
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moderator-client.js","sourceRoot":"","sources":["../src/moderator-client.ts"],"names":[],"mappings":";;;AAkBA,MAAa,eAAe;IAE1B,YAAmB,KAAgB;QAAvB;;;;mBAAO,KAAK;WAAW;QADnC;;;;;WAAe;QAEb,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;IAC/B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU,EAAE,IAAe;QACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAC7D,EAAE,EAAE,EAAE,EACN;YACE,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAClC,iCAAiC,EACjC,IAAI,CACL;SACF,CACF,CAAA;QACD,OAAO,MAAM,CAAC,IAAI,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAA0B,EAAE,IAAe;QAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAClE,KAAK,EACL;YACE,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAClC,sCAAsC,EACtC,IAAI,CACL;SACF,CACF,CAAA;QACD,OAAO,MAAM,CAAC,IAAI,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAc;QACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CACrE,EAAE,IAAI,EAAE,EACR;YACE,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAClC,yCAAyC,EACzC,OAAO,CACR;SACF,CACF,CAAA;QACD,OAAO,MAAM,CAAC,IAAI,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAwB,EAAE,IAAe;QACzD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE;YACxE,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAClC,oCAAoC,EACpC,IAAI,CACL;SACF,CAAC,CAAA;QACF,OAAO,MAAM,CAAC,IAAI,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAyB,EAAE,IAAe;QAC3D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE;YACrE,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAClC,iCAAiC,EACjC,IAAI,CACL;SACF,CAAC,CAAA;QACF,OAAO,MAAM,CAAC,IAAI,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,SAAS,CACb,IAUC,EACD,IAAe;QAEf,MAAM,EACJ,KAAK,EACL,OAAO,EACP,eAAe,EACf,SAAS,GAAG,mBAAmB,EAC/B,OAAO,EACP,UAAU,EACV,YAAY,GACb,GAAG,IAAI,CAAA;QACR,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAC9D;YACE,KAAK;YACL,OAAO;YACP,eAAe;YACf,SAAS;YACT,OAAO;YACP,UAAU;YACV,YAAY;SACb,EACD;YACE,QAAQ,EAAE,kBAAkB;YAC5B,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAClC,kCAAkC,EAClC,IAAI,CACL;SACF,CACF,CAAA;QACD,OAAO,MAAM,CAAC,IAAI,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,IAMC,EACD,IAAe;QAEf,MAAM,EACJ,OAAO,EACP,MAAM,GAAG,GAAG,EACZ,SAAS,GAAG,mBAAmB,EAC/B,OAAO,GACR,GAAG,IAAI,CAAA;QACR,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAC9D;YACE,OAAO;YACP,KAAK,EAAE;gBACL,KAAK,EAAE,qDAAqD;gBAC5D,OAAO,EAAE,MAAM;aAChB;YACD,SAAS;YACT,OAAO;SACR,EACD;YACE,QAAQ,EAAE,kBAAkB;YAC5B,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAClC,kCAAkC,EAClC,IAAI,CACL;SACF,CACF,CAAA;QACD,OAAO,MAAM,CAAC,IAAI,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,IAOC,EACD,IAAe;QAEf,MAAM,EAAE,eAAe,EAAE,0BAA0B,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GACtE,IAAI,CAAA;QACN,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,KAAK,EAAE;gBACL,KAAK,EAAE,8CAA8C;gBACrD,0BAA0B;gBAC1B,eAAe;gBACf,QAAQ;aACT;YACD,GAAG,IAAI;SACR,EACD,IAAI,CACL,CAAA;IACH,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC1B,IAIC,EACD,IAAe;QAEf,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,KAAK,EAAE;gBACL,KAAK,EAAE,qDAAqD;aAC7D;YACD,GAAG,IAAI;SACR,EACD,IAAI,CACL,CAAA;IACH,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,OAAkD,EAClD,aAA+C,OAAO;QAEtD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAChE,OAAO,EACP;YACE,QAAQ,EAAE,kBAAkB;YAC5B,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAClC,kCAAkC,EAClC,UAAU,CACX;SACF,CACF,CAAA;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,MAAkD,EAClD,aAA+C,OAAO;QAEtD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CACjE,MAAM,EACN;YACE,QAAQ,EAAE,kBAAkB;YAC5B,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAClC,mCAAmC,EACnC,UAAU,CACX;SACF,CACF,CAAA;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAA;QAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;QAC1D,MAAM,YAAY,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACpD,CAAC;CACF;AAzOD,0CAyOC","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,
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
|
32
|
-
const pds = await
|
|
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
|
-
|
|
18
|
+
mockNetworkUtilities(pds);
|
|
37
19
|
return new TestNetworkNoAppView(plc, pds);
|
|
38
20
|
}
|
|
39
21
|
async createFeedGen(feeds) {
|
|
40
|
-
const fg = await
|
|
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
|
|
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":"
|
|
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;
|
package/dist/network.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
|
18
|
+
export class TestNetwork extends TestNetworkNoAppView {
|
|
58
19
|
constructor(plc, pds, bsky, ozone, introspect) {
|
|
59
20
|
super(plc, pds);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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
|
-
(
|
|
95
|
-
(
|
|
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
|
|
98
|
-
const bskyPort = params.bsky?.port ?? (await (
|
|
99
|
-
const pdsPort = params.pds?.port ?? (await (
|
|
100
|
-
const ozonePort = params.ozone?.port ?? (await (
|
|
101
|
-
const thirdPartyPds = await
|
|
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 (
|
|
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
|
|
111
|
-
const lexiconAuthorityProfile = await
|
|
112
|
-
const bsky = await
|
|
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,
|
|
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
|
|
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
|
-
|
|
140
|
-
const ozone = await
|
|
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
|
|
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
|
|
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
|
|
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
|
package/dist/network.js.map
CHANGED
|
@@ -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":"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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.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;
|
package/dist/ozone.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|