@atproto/dev-env 0.3.8 → 0.3.10
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 +20 -0
- package/dist/bin.js +1 -0
- package/dist/bin.js.map +1 -1
- package/dist/bsky.d.ts.map +1 -1
- package/dist/bsky.js +1 -0
- package/dist/bsky.js.map +1 -1
- package/dist/mock/index.d.ts.map +1 -1
- package/dist/mock/index.js +0 -299
- package/dist/mock/index.js.map +1 -1
- package/dist/network.d.ts.map +1 -1
- package/dist/network.js +33 -7
- package/dist/network.js.map +1 -1
- package/dist/ozone-service-profile.d.ts +23 -0
- package/dist/ozone-service-profile.d.ts.map +1 -0
- package/dist/ozone-service-profile.js +392 -0
- package/dist/ozone-service-profile.js.map +1 -0
- package/dist/ozone.js +1 -1
- package/dist/ozone.js.map +1 -1
- package/package.json +5 -5
- package/src/bin.ts +1 -0
- package/src/bsky.ts +1 -0
- package/src/mock/index.ts +0 -322
- package/src/network.ts +41 -8
- package/src/ozone-service-profile.ts +420 -0
- package/src/ozone.ts +1 -1
package/src/mock/index.ts
CHANGED
@@ -350,328 +350,6 @@ export async function generateMockSetup(env: TestNetwork) {
|
|
350
350
|
},
|
351
351
|
)
|
352
352
|
|
353
|
-
// create the dev-env moderator
|
354
|
-
{
|
355
|
-
const res = await clients.loggedout.api.com.atproto.server.createAccount({
|
356
|
-
email: 'mod-authority@test.com',
|
357
|
-
handle: 'mod-authority.test',
|
358
|
-
password: 'hunter2',
|
359
|
-
})
|
360
|
-
const agent = env.pds.getClient()
|
361
|
-
agent.api.setHeader('Authorization', `Bearer ${res.data.accessJwt}`)
|
362
|
-
await agent.api.app.bsky.actor.profile.create(
|
363
|
-
{ repo: res.data.did },
|
364
|
-
{
|
365
|
-
displayName: 'Dev-env Moderation',
|
366
|
-
description: `The pretend version of mod.bsky.app`,
|
367
|
-
},
|
368
|
-
)
|
369
|
-
|
370
|
-
await agent.api.app.bsky.labeler.service.create(
|
371
|
-
{ repo: res.data.did, rkey: 'self' },
|
372
|
-
{
|
373
|
-
policies: {
|
374
|
-
labelValues: [
|
375
|
-
'!hide',
|
376
|
-
'!warn',
|
377
|
-
'porn',
|
378
|
-
'sexual',
|
379
|
-
'nudity',
|
380
|
-
'sexual-figurative',
|
381
|
-
'graphic-media',
|
382
|
-
'self-harm',
|
383
|
-
'sensitive',
|
384
|
-
'extremist',
|
385
|
-
'intolerant',
|
386
|
-
'threat',
|
387
|
-
'rude',
|
388
|
-
'illicit',
|
389
|
-
'security',
|
390
|
-
'unsafe-link',
|
391
|
-
'impersonation',
|
392
|
-
'misinformation',
|
393
|
-
'scam',
|
394
|
-
'engagement-farming',
|
395
|
-
'spam',
|
396
|
-
'rumor',
|
397
|
-
'misleading',
|
398
|
-
'inauthentic',
|
399
|
-
],
|
400
|
-
labelValueDefinitions: [
|
401
|
-
{
|
402
|
-
identifier: 'spam',
|
403
|
-
blurs: 'content',
|
404
|
-
severity: 'inform',
|
405
|
-
defaultSetting: 'hide',
|
406
|
-
adultOnly: false,
|
407
|
-
locales: [
|
408
|
-
{
|
409
|
-
lang: 'en',
|
410
|
-
name: 'Spam',
|
411
|
-
description:
|
412
|
-
'Unwanted, repeated, or unrelated actions that bother users.',
|
413
|
-
},
|
414
|
-
],
|
415
|
-
},
|
416
|
-
{
|
417
|
-
identifier: 'impersonation',
|
418
|
-
blurs: 'none',
|
419
|
-
severity: 'inform',
|
420
|
-
defaultSetting: 'hide',
|
421
|
-
adultOnly: false,
|
422
|
-
locales: [
|
423
|
-
{
|
424
|
-
lang: 'en',
|
425
|
-
name: 'Impersonation',
|
426
|
-
description:
|
427
|
-
'Pretending to be someone else without permission.',
|
428
|
-
},
|
429
|
-
],
|
430
|
-
},
|
431
|
-
{
|
432
|
-
identifier: 'scam',
|
433
|
-
blurs: 'content',
|
434
|
-
severity: 'alert',
|
435
|
-
defaultSetting: 'hide',
|
436
|
-
adultOnly: false,
|
437
|
-
locales: [
|
438
|
-
{
|
439
|
-
lang: 'en',
|
440
|
-
name: 'Scam',
|
441
|
-
description: 'Scams, phishing & fraud.',
|
442
|
-
},
|
443
|
-
],
|
444
|
-
},
|
445
|
-
{
|
446
|
-
identifier: 'intolerant',
|
447
|
-
blurs: 'content',
|
448
|
-
severity: 'alert',
|
449
|
-
defaultSetting: 'warn',
|
450
|
-
adultOnly: false,
|
451
|
-
locales: [
|
452
|
-
{
|
453
|
-
lang: 'en',
|
454
|
-
name: 'Intolerance',
|
455
|
-
description: 'Discrimination against protected groups.',
|
456
|
-
},
|
457
|
-
],
|
458
|
-
},
|
459
|
-
{
|
460
|
-
identifier: 'self-harm',
|
461
|
-
blurs: 'content',
|
462
|
-
severity: 'alert',
|
463
|
-
defaultSetting: 'warn',
|
464
|
-
adultOnly: false,
|
465
|
-
locales: [
|
466
|
-
{
|
467
|
-
lang: 'en',
|
468
|
-
name: 'Self-Harm',
|
469
|
-
description:
|
470
|
-
'Promotes self-harm, including graphic images, glorifying discussions, or triggering stories.',
|
471
|
-
},
|
472
|
-
],
|
473
|
-
},
|
474
|
-
{
|
475
|
-
identifier: 'security',
|
476
|
-
blurs: 'content',
|
477
|
-
severity: 'alert',
|
478
|
-
defaultSetting: 'hide',
|
479
|
-
adultOnly: false,
|
480
|
-
locales: [
|
481
|
-
{
|
482
|
-
lang: 'en',
|
483
|
-
name: 'Security Concerns',
|
484
|
-
description:
|
485
|
-
'May be unsafe and could harm your device, steal your info, or get your account hacked.',
|
486
|
-
},
|
487
|
-
],
|
488
|
-
},
|
489
|
-
{
|
490
|
-
identifier: 'misleading',
|
491
|
-
blurs: 'content',
|
492
|
-
severity: 'alert',
|
493
|
-
defaultSetting: 'warn',
|
494
|
-
adultOnly: false,
|
495
|
-
locales: [
|
496
|
-
{
|
497
|
-
lang: 'en',
|
498
|
-
name: 'Misleading',
|
499
|
-
description:
|
500
|
-
'Altered images/videos, deceptive links, or false statements.',
|
501
|
-
},
|
502
|
-
],
|
503
|
-
},
|
504
|
-
{
|
505
|
-
identifier: 'threat',
|
506
|
-
blurs: 'content',
|
507
|
-
severity: 'inform',
|
508
|
-
defaultSetting: 'hide',
|
509
|
-
adultOnly: false,
|
510
|
-
locales: [
|
511
|
-
{
|
512
|
-
lang: 'en',
|
513
|
-
name: 'Threats',
|
514
|
-
description:
|
515
|
-
'Promotes violence or harm towards others, including threats, incitement, or advocacy of harm.',
|
516
|
-
},
|
517
|
-
],
|
518
|
-
},
|
519
|
-
{
|
520
|
-
identifier: 'unsafe-link',
|
521
|
-
blurs: 'content',
|
522
|
-
severity: 'alert',
|
523
|
-
defaultSetting: 'hide',
|
524
|
-
adultOnly: false,
|
525
|
-
locales: [
|
526
|
-
{
|
527
|
-
lang: 'en',
|
528
|
-
name: 'Unsafe link',
|
529
|
-
description:
|
530
|
-
'Links to harmful sites with malware, phishing, or violating content that risk security and privacy.',
|
531
|
-
},
|
532
|
-
],
|
533
|
-
},
|
534
|
-
{
|
535
|
-
identifier: 'illicit',
|
536
|
-
blurs: 'content',
|
537
|
-
severity: 'alert',
|
538
|
-
defaultSetting: 'hide',
|
539
|
-
adultOnly: false,
|
540
|
-
locales: [
|
541
|
-
{
|
542
|
-
lang: 'en',
|
543
|
-
name: 'Illicit',
|
544
|
-
description:
|
545
|
-
'Promoting or selling potentially illicit goods, services, or activities.',
|
546
|
-
},
|
547
|
-
],
|
548
|
-
},
|
549
|
-
{
|
550
|
-
identifier: 'misinformation',
|
551
|
-
blurs: 'content',
|
552
|
-
severity: 'inform',
|
553
|
-
defaultSetting: 'warn',
|
554
|
-
adultOnly: false,
|
555
|
-
locales: [
|
556
|
-
{
|
557
|
-
lang: 'en',
|
558
|
-
name: 'Misinformation',
|
559
|
-
description:
|
560
|
-
'Spreading false or misleading info, including unverified claims and harmful conspiracy theories.',
|
561
|
-
},
|
562
|
-
],
|
563
|
-
},
|
564
|
-
{
|
565
|
-
identifier: 'rumor',
|
566
|
-
blurs: 'content',
|
567
|
-
severity: 'inform',
|
568
|
-
defaultSetting: 'warn',
|
569
|
-
adultOnly: false,
|
570
|
-
locales: [
|
571
|
-
{
|
572
|
-
lang: 'en',
|
573
|
-
name: 'Rumor',
|
574
|
-
description:
|
575
|
-
'Approach with caution, as these claims lack evidence from credible sources.',
|
576
|
-
},
|
577
|
-
],
|
578
|
-
},
|
579
|
-
{
|
580
|
-
identifier: 'rude',
|
581
|
-
blurs: 'content',
|
582
|
-
severity: 'inform',
|
583
|
-
defaultSetting: 'hide',
|
584
|
-
adultOnly: false,
|
585
|
-
locales: [
|
586
|
-
{
|
587
|
-
lang: 'en',
|
588
|
-
name: 'Rude',
|
589
|
-
description:
|
590
|
-
'Rude or impolite, including crude language and disrespectful comments, without constructive purpose.',
|
591
|
-
},
|
592
|
-
],
|
593
|
-
},
|
594
|
-
{
|
595
|
-
identifier: 'extremist',
|
596
|
-
blurs: 'content',
|
597
|
-
severity: 'alert',
|
598
|
-
defaultSetting: 'hide',
|
599
|
-
adultOnly: false,
|
600
|
-
locales: [
|
601
|
-
{
|
602
|
-
lang: 'en',
|
603
|
-
name: 'Extremist',
|
604
|
-
description:
|
605
|
-
'Radical views advocating violence, hate, or discrimination against individuals or groups.',
|
606
|
-
},
|
607
|
-
],
|
608
|
-
},
|
609
|
-
{
|
610
|
-
identifier: 'sensitive',
|
611
|
-
blurs: 'content',
|
612
|
-
severity: 'alert',
|
613
|
-
defaultSetting: 'warn',
|
614
|
-
adultOnly: false,
|
615
|
-
locales: [
|
616
|
-
{
|
617
|
-
lang: 'en',
|
618
|
-
name: 'Sensitive',
|
619
|
-
description:
|
620
|
-
'May be upsetting, covering topics like substance abuse or mental health issues, cautioning sensitive viewers.',
|
621
|
-
},
|
622
|
-
],
|
623
|
-
},
|
624
|
-
{
|
625
|
-
identifier: 'engagement-farming',
|
626
|
-
blurs: 'content',
|
627
|
-
severity: 'alert',
|
628
|
-
defaultSetting: 'hide',
|
629
|
-
adultOnly: false,
|
630
|
-
locales: [
|
631
|
-
{
|
632
|
-
lang: 'en',
|
633
|
-
name: 'Engagement Farming',
|
634
|
-
description:
|
635
|
-
'Insincere content or bulk actions aimed at gaining followers, including frequent follows, posts, and likes.',
|
636
|
-
},
|
637
|
-
],
|
638
|
-
},
|
639
|
-
{
|
640
|
-
identifier: 'inauthentic',
|
641
|
-
blurs: 'content',
|
642
|
-
severity: 'alert',
|
643
|
-
defaultSetting: 'hide',
|
644
|
-
adultOnly: false,
|
645
|
-
locales: [
|
646
|
-
{
|
647
|
-
lang: 'en',
|
648
|
-
name: 'Inauthentic Account',
|
649
|
-
description: 'Bot or a person pretending to be someone else.',
|
650
|
-
},
|
651
|
-
],
|
652
|
-
},
|
653
|
-
{
|
654
|
-
identifier: 'sexual-figurative',
|
655
|
-
blurs: 'media',
|
656
|
-
severity: 'none',
|
657
|
-
defaultSetting: 'show',
|
658
|
-
adultOnly: true,
|
659
|
-
locales: [
|
660
|
-
{
|
661
|
-
lang: 'en',
|
662
|
-
name: 'Sexually Suggestive (Cartoon)',
|
663
|
-
description:
|
664
|
-
'Art with explicit or suggestive sexual themes, including provocative imagery or partial nudity.',
|
665
|
-
},
|
666
|
-
],
|
667
|
-
},
|
668
|
-
],
|
669
|
-
},
|
670
|
-
createdAt: date.next().value,
|
671
|
-
},
|
672
|
-
)
|
673
|
-
}
|
674
|
-
|
675
353
|
// create a labeler account
|
676
354
|
{
|
677
355
|
const res = await clients.loggedout.api.com.atproto.server.createAccount({
|
package/src/network.ts
CHANGED
@@ -7,10 +7,10 @@ import { TestServerParams } from './types'
|
|
7
7
|
import { TestPlc } from './plc'
|
8
8
|
import { TestPds } from './pds'
|
9
9
|
import { TestBsky } from './bsky'
|
10
|
-
import { TestOzone
|
10
|
+
import { TestOzone } from './ozone'
|
11
|
+
import { OzoneServiceProfile } from './ozone-service-profile'
|
11
12
|
import { mockNetworkUtilities } from './util'
|
12
13
|
import { TestNetworkNoAppView } from './network-no-appview'
|
13
|
-
import { Secp256k1Keypair } from '@atproto/crypto'
|
14
14
|
import { EXAMPLE_LABELER } from './const'
|
15
15
|
|
16
16
|
const ADMIN_USERNAME = 'admin'
|
@@ -42,8 +42,16 @@ export class TestNetwork extends TestNetworkNoAppView {
|
|
42
42
|
const pdsPort = params.pds?.port ?? (await getPort())
|
43
43
|
const ozonePort = params.ozone?.port ?? (await getPort())
|
44
44
|
|
45
|
-
const
|
46
|
-
|
45
|
+
const thirdPartyPdsProps = {
|
46
|
+
didPlcUrl: plc.url,
|
47
|
+
...params.pds,
|
48
|
+
inviteRequired: false,
|
49
|
+
port: await getPort(),
|
50
|
+
}
|
51
|
+
const thirdPartyPds = await TestPds.create(thirdPartyPdsProps)
|
52
|
+
const ozoneServiceProfile = new OzoneServiceProfile(thirdPartyPds)
|
53
|
+
const { did: ozoneDid, key: ozoneKey } =
|
54
|
+
await ozoneServiceProfile.createDidAndKey()
|
47
55
|
|
48
56
|
const bsky = await TestBsky.create({
|
49
57
|
port: bskyPort,
|
@@ -58,22 +66,25 @@ export class TestNetwork extends TestNetworkNoAppView {
|
|
58
66
|
...params.bsky,
|
59
67
|
})
|
60
68
|
|
61
|
-
const
|
69
|
+
const modServiceUrl = `http://localhost:${ozonePort}`
|
70
|
+
const pdsProps = {
|
62
71
|
port: pdsPort,
|
63
72
|
didPlcUrl: plc.url,
|
64
73
|
bskyAppViewUrl: bsky.url,
|
65
74
|
bskyAppViewDid: bsky.ctx.cfg.serverDid,
|
66
|
-
modServiceUrl
|
75
|
+
modServiceUrl,
|
67
76
|
modServiceDid: ozoneDid,
|
68
77
|
...params.pds,
|
69
|
-
}
|
78
|
+
}
|
79
|
+
|
80
|
+
const pds = await TestPds.create(pdsProps)
|
70
81
|
|
71
82
|
const ozone = await TestOzone.create({
|
72
83
|
port: ozonePort,
|
73
84
|
plcUrl: plc.url,
|
74
85
|
signingKey: ozoneKey,
|
75
86
|
serverDid: ozoneDid,
|
76
|
-
dbPostgresSchema: `ozone_${dbPostgresSchema}`,
|
87
|
+
dbPostgresSchema: `ozone_${dbPostgresSchema || 'db'}`,
|
77
88
|
dbPostgresUrl,
|
78
89
|
appviewUrl: bsky.url,
|
79
90
|
appviewDid: bsky.ctx.cfg.serverDid,
|
@@ -83,7 +94,29 @@ export class TestNetwork extends TestNetworkNoAppView {
|
|
83
94
|
...params.ozone,
|
84
95
|
})
|
85
96
|
|
97
|
+
let inviteCode: string | undefined
|
98
|
+
if (pdsProps.inviteRequired) {
|
99
|
+
const { data: invite } = await pds
|
100
|
+
.getClient()
|
101
|
+
.api.com.atproto.server.createInviteCode(
|
102
|
+
{ useCount: 1 },
|
103
|
+
{
|
104
|
+
encoding: 'application/json',
|
105
|
+
headers: pds.adminAuthHeaders(),
|
106
|
+
},
|
107
|
+
)
|
108
|
+
inviteCode = invite.code
|
109
|
+
}
|
110
|
+
await ozoneServiceProfile.createServiceDetails(pds, modServiceUrl, {
|
111
|
+
inviteCode,
|
112
|
+
})
|
113
|
+
|
114
|
+
ozone.addAdminDid(ozoneDid)
|
115
|
+
|
86
116
|
mockNetworkUtilities(pds, bsky)
|
117
|
+
await pds.processAll()
|
118
|
+
await bsky.sub.background.processAll()
|
119
|
+
await thirdPartyPds.close()
|
87
120
|
|
88
121
|
return new TestNetwork(plc, pds, bsky, ozone)
|
89
122
|
}
|