@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":"labeled-img-b64.js","sourceRoot":"","sources":["../../../src/mock/img/labeled-img-b64.ts"],"names":[],"mappings":";;AAAA,kBAAe,85sBAA85sB,CAAA","sourcesContent":["export default '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AQSsAEHGSlAjgAACCCCAgDoBgoy6LqPBCCCAAAIIIGAFCDJWghoBBBBAAAEE1AkQZNR1GQ1GAAEEEEAAAStAkLES1AgggAACCCCgToAgo67LaDACOgW23HJLs+uuu5pddtkl+G+HHXYIdmTlypVG/vvll1/MokWLzK+//qpzB2k1AgiURIAgUxJ2v41uvfXWpm7dun4z/2+uP/74w6xatcp7/nxnlD9E2267behiGzZsMKtXrw6dJ6mJnTt3NltttZXX6qZPn27WrVvnNW+cmdq2bWsaN24cuoovvvjCfP7556HzRJnYvn17Y8NBruXnzJljli5dmmtyop/vtttupkePHqZdu3amXr16ZrPNNvNav3wfL1u2zMyfP9+88MILZsWKFV7LuWZq3bq12XPPPUNnW7JkiZk7d27oPFEnduzYMXAIW/6jjz4K9j3bPG3atDHNmjXLNknFZ/LzJz+HUho2bGgOO+wwZ7vl50R+XopdjjjiCLPddtuFbnbx4sXB92joTEwsigBBpijM0TZyww03mP3339974f/++8/06dPHrFmzxnuZfGY8//zzTdeuXZ2LDB482CxcuNA5X5wZGjVqZCZNmuS9ismTJxv5r9DlgQceMPIHPKx8/PHHZsSIEWGzRJr25JNPmvr164cuO2XKFDNx4sTQeeJMlCA1cOBAc8ABB+QVwsO2+f3335vnnnvOzJgxI2w257TbbrvNtGjRInQ++aN56aWXhs4TdaKEsjp16oQu/vjjj5unnnoq6zx33HGH2XvvvbNO0/DhX3/9Zbp37x40VfZD9sdV5MDopJNOMvK7rVilZcuWZvTo0c7NSeA+8cQTnfMxQ+EFCDKFN468hXyDjGzo7bff9vohjNIo3yAzZswYM3PmzCib8F7mjDPOCH7B+S7w3XffmUGDBvnOHnm+TTnISJ/IGRjfMy/5Iv/+++/m/vvvjxxoCDL5iic7f+UgI2seO3asad68uXMjU6dONRMmTHDOl9QMjzzyiNlxxx2dq3viiSeMHDxQSi9AkCl9H+RsQZQg888//5iePXsGl5lyrjjihDQFGTmrsNNOO3nviRzRydHg33//7b1MlBk3xSAjR7DDhg1zXnaM4pltmR9++MHccsst5uuvv842OednBJmcNEWZUDXINGjQwDz22GPO4Cu/00455ZSiXBqWy3+XX36500Mu4Z96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FZ/5PglVsUCVf5RLkJFxNeQ1BWEl7j0yBJnqupyRqW7i+kS+T2Vk7rDfbXYdvkM22PmpdQgQZFLcT0kGGdlNCQgSFMKK3CMi94pkK8UIMkOHDjXt27fPtvmKzz744ANz4403Vnzt+49OnTo5X3C4atWq4F0tvuusOl+5BBm5Z0rG6wgrcZ9aIshU1yXIVDfx+WTIkCHmyCOPdM4q8y1YsMA5HzPoEiDIpLi/kg4yPu8uWrZsWXA3fzaWYgQZn3sz5DLZ7NmzszUx9LPatWsHp5RdR27y0jkJNFFKuQSZMWPGmH322SeUIO4j6wSZ6rwEmeomPp906NAh9J1rso587qfy2SbzpEfg/wAAAP//mlRinwAAF9lJREFU7d0HjDVl1QfwBxsIKgpSgoABUUJAjYqKITZiQUVADCoajEGxICUWFGIUsVDEAhYUpNpQsEQsVDFRE0CCJiAaVEjEBhpFQSFWvu/c79t1d9+9M3Puu3f3LP4mMbv3zrkz5/6elft/5848s87WW299V7OUFHj3u9/dHve4x/X2dthhh7Wf/exnvXVR8OEPf7htt912nbVveMMb2vXXX79Gzetf//r2vOc9b43nFz7x/ve/v1122WULn+59vPnmm7czzjijs+6uu+5qe+yxR4ufkyxnn31222STTTpfes4557RPf/rTnTXjVp5yyiltq622Grd69PxVV13VjjrqqM6aSVZ+7nOfaw984AM7X/rFL36x1zg2cPTRR7fHP/7xnduKMRjy9zBuI9/4xjfaOuusM271oOczPZxwwgltxx137Nxu/N3H3/80li9/+cttvfXW69x0/N3F399yLF/72tfaPe95z85dfehDH2qXXHJJZ02FlU95ylPaEUcc0dlK5m+lc0NWlhNYR5ApNyazDU0jyGy//fYt/uPUtdx4443t4IMPXqNk2kHmNa95Tdtrr73W2O/cJ371q1+1V7/61XOfSv1+yCGHtOc85zmdr/n1r3/dDjzwwM6acSvvLkHm8MMPb09/+tPHvc3Z5yNU/vvf/559nPklglffB3vf+syHkyAzf3QEmfkeHq1eAUGm8NhNI8jE2z311FPblltu2fnOX/va17abbrppXs20g8xZZ53VNt1003n7XPjgvPPOa2eeeebCpwc/HhLk4sNx7733bv/4xz8Gb3em8O4SZGL899xzz5m3NfZn5mjg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+amdLkHxkKu14oN03333bXfcccdEe3zxi188OlE2zp9Z6uXWW28dfcBfffXVS73pQduLO6PH14FdNx8dtKFFisI9TvyOu2xnjsLM3ZQgM1ejje4z1ndLEne/nm/mUU0BQabmuIy6ijk44g7Nfcv+++8/usqlr26S9bvuumuLGWEzS1eQGXLZdcw+m91npr9xtbvvvns79NBDx62efT5zGfbsixb8EvePilATk+et7RLnE5166qltpQLM3P4joMVkh3GZdnwtubZfOUWo/cEPfjCaa+fPf/7z3F2lfx/yD4Mrr7xydHQpvfEBLxgS4pdqtucB7Yxubho3Oe1aYtbouJ1G9WXIzNMRhiNsW+5+AoLM3W9MvaNVJBDn5jztaU9rO++88+iDv+9ITfzHOO5iHXOzxBGKb3/72xMfoZg2U8x5ExP2PetZz2pxeXV8aMbRmnHhJt5b3CT05ptvbldccUW78MILUydWT/v92D4BAjUFBJma46Kr/2KB9ddffzRvzCabbNI22GCDUVCJc3Nibpn4oF/tS7ynmA8nwk18RRfBJU7ejauQLAQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgK/A951lPeQIDuUAAAAABJRU5ErkJggg=='\n"]}
|
|
1
|
+
{"version":3,"file":"labeled-img-b64.js","sourceRoot":"","sources":["../../../src/mock/img/labeled-img-b64.ts"],"names":[],"mappings":"AAAA,eAAe,85sBAA85sB,CAAA","sourcesContent":["export default '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AQSsAEHGSlAjgAACCCCAgDoBgoy6LqPBCCCAAAIIIGAFCDJWghoBBBBAAAEE1AkQZNR1GQ1GAAEEEEAAAStAkLES1AgggAACCCCgToAgo67LaDACOgW23HJLs+uuu5pddtkl+G+HHXYIdmTlypVG/vvll1/MokWLzK+//qpzB2k1AgiURIAgUxJ2v41uvfXWpm7dun4z/2+uP/74w6xatcp7/nxnlD9E2267behiGzZsMKtXrw6dJ6mJnTt3NltttZXX6qZPn27WrVvnNW+cmdq2bWsaN24cuoovvvjCfP7556HzRJnYvn17Y8NBruXnzJljli5dmmtyop/vtttupkePHqZdu3amXr16ZrPNNvNav3wfL1u2zMyfP9+88MILZsWKFV7LuWZq3bq12XPPPUNnW7JkiZk7d27oPFEnduzYMXAIW/6jjz4K9j3bPG3atDHNmjXLNknFZ/LzJz+HUho2bGgOO+wwZ7vl50R+XopdjjjiCLPddtuFbnbx4sXB92joTEwsigBBpijM0TZyww03mP3339974f/++8/06dPHrFmzxnuZfGY8//zzTdeuXZ2LDB482CxcuNA5X5wZGjVqZCZNmuS9ismTJxv5r9DlgQceMPIHPKx8/PHHZsSIEWGzRJr25JNPmvr164cuO2XKFDNx4sTQeeJMlCA1cOBAc8ABB+QVwsO2+f3335vnnnvOzJgxI2w257TbbrvNtGjRInQ++aN56aWXhs4TdaKEsjp16oQu/vjjj5unnnoq6zx33HGH2XvvvbNO0/DhX3/9Zbp37x40VfZD9sdV5MDopJNOMvK7rVilZcuWZvTo0c7NSeA+8cQTnfMxQ+EFCDKFN468hXyDjGzo7bff9vohjNIo3yAzZswYM3PmzCib8F7mjDPOCH7B+S7w3XffmUGDBvnOHnm+TTnISJ/IGRjfMy/5Iv/+++/m/vvvjxxoCDL5iic7f+UgI2seO3asad68uXMjU6dONRMmTHDOl9QMjzzyiNlxxx2dq3viiSeMHDxQSi9AkCl9H+RsQZQg888//5iePXsGl5lyrjjihDQFGTmrsNNOO3nviRzRydHg33//7b1MlBk3xSAjR7DDhg1zXnaM4pltmR9++MHccsst5uuvv842OednBJmcNEWZUDXINGjQwDz22GPO4Cu/00455ZSiXBqWy3+XX36500Mu4Z96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FZ/5PglVsUCVf5RLkJFxNeQ1BWEl7j0yBJnqupyRqW7i+kS+T2Vk7rDfbXYdvkM22PmpdQgQZFLcT0kGGdlNCQgSFMKK3CMi94pkK8UIMkOHDjXt27fPtvmKzz744ANz4403Vnzt+49OnTo5X3C4atWq4F0tvuusOl+5BBm5Z0rG6wgrcZ9aIshU1yXIVDfx+WTIkCHmyCOPdM4q8y1YsMA5HzPoEiDIpLi/kg4yPu8uWrZsWXA3fzaWYgQZn3sz5DLZ7NmzszUx9LPatWsHp5RdR27y0jkJNFFKuQSZMWPGmH322SeUIO4j6wSZ6rwEmeomPp906NAh9J1rso587qfy2SbzpEfg/wAAAP//mlRinwAAF9lJREFU7d0HjDVl1QfwBxsIKgpSgoABUUJAjYqKITZiQUVADCoajEGxICUWFGIUsVDEAhYUpNpQsEQsVDFRE0CCJiAaVEjEBhpFQSFWvu/c79t1d9+9M3Puu3f3LP4mMbv3zrkz5/6elft/5848s87WW299V7OUFHj3u9/dHve4x/X2dthhh7Wf/exnvXVR8OEPf7htt912nbVveMMb2vXXX79Gzetf//r2vOc9b43nFz7x/ve/v1122WULn+59vPnmm7czzjijs+6uu+5qe+yxR4ufkyxnn31222STTTpfes4557RPf/rTnTXjVp5yyiltq622Grd69PxVV13VjjrqqM6aSVZ+7nOfaw984AM7X/rFL36x1zg2cPTRR7fHP/7xnduKMRjy9zBuI9/4xjfaOuusM271oOczPZxwwgltxx137Nxu/N3H3/80li9/+cttvfXW69x0/N3F399yLF/72tfaPe95z85dfehDH2qXXHJJZ02FlU95ylPaEUcc0dlK5m+lc0NWlhNYR5ApNyazDU0jyGy//fYt/uPUtdx4443t4IMPXqNk2kHmNa95Tdtrr73W2O/cJ371q1+1V7/61XOfSv1+yCGHtOc85zmdr/n1r3/dDjzwwM6acSvvLkHm8MMPb09/+tPHvc3Z5yNU/vvf/559nPklglffB3vf+syHkyAzf3QEmfkeHq1eAUGm8NhNI8jE2z311FPblltu2fnOX/va17abbrppXs20g8xZZ53VNt1003n7XPjgvPPOa2eeeebCpwc/HhLk4sNx7733bv/4xz8Gb3em8O4SZGL899xzz5m3NfZn5mjg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+amdLkHxkKu14oN03333bXfcccdEe3zxi188OlE2zp9Z6uXWW28dfcBfffXVS73pQduLO6PH14FdNx8dtKFFisI9TvyOu2xnjsLM3ZQgM1ejje4z1ndLEne/nm/mUU0BQabmuIy6ijk44g7Nfcv+++8/usqlr26S9bvuumuLGWEzS1eQGXLZdcw+m91npr9xtbvvvns79NBDx62efT5zGfbsixb8EvePilATk+et7RLnE5166qltpQLM3P4joMVkh3GZdnwtubZfOUWo/cEPfjCaa+fPf/7z3F2lfx/yD4Mrr7xydHQpvfEBLxgS4pdqtucB7Yxubho3Oe1aYtbouJ1G9WXIzNMRhiNsW+5+AoLM3W9MvaNVJBDn5jztaU9rO++88+iDv+9ITfzHOO5iHXOzxBGKb3/72xMfoZg2U8x5ExP2PetZz2pxeXV8aMbRmnHhJt5b3CT05ptvbldccUW78MILUydWT/v92D4BAjUFBJma46Kr/2KB9ddffzRvzCabbNI22GCDUVCJc3Nibpn4oF/tS7ynmA8nwk18RRfBJU7ejauQLAQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgK/A951lPeQIDuUAAAAABJRU5ErkJggg=='\n"]}
|
package/dist/mock/index.d.ts
CHANGED
package/dist/mock/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mock/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mock/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAA8B,WAAW,EAAE,MAAM,aAAa,CAAA;AAkBrE,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,WAAW,iBA2mBvD"}
|
package/dist/mock/index.js
CHANGED
|
@@ -1,16 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const api_1 = require("@atproto/api");
|
|
8
|
-
const createQueue_1 = require("@atproto/api/dist/client/types/tools/ozone/queue/createQueue");
|
|
9
|
-
const syntax_1 = require("@atproto/syntax");
|
|
10
|
-
const index_1 = require("../index");
|
|
11
|
-
const data_1 = require("./data");
|
|
12
|
-
const blur_hash_avatar_b64_1 = __importDefault(require("./img/blur-hash-avatar-b64"));
|
|
13
|
-
const labeled_img_b64_1 = __importDefault(require("./img/labeled-img-b64"));
|
|
1
|
+
import { COM_ATPROTO_MODERATION, ToolsOzoneQueueCreateQueue, } from '@atproto/api';
|
|
2
|
+
import { AtUri } from '@atproto/syntax';
|
|
3
|
+
import { EXAMPLE_LABELER, RecordRef } from '../index.js';
|
|
4
|
+
import { postTexts, replyTexts } from './data.js';
|
|
5
|
+
import blurHashB64 from './img/blur-hash-avatar-b64.js';
|
|
6
|
+
import labeledImgB64 from './img/labeled-img-b64.js';
|
|
14
7
|
// NOTE
|
|
15
8
|
// deterministic date generator
|
|
16
9
|
// we use this to ensure the mock dataset is always the same
|
|
@@ -23,7 +16,7 @@ function* dateGen() {
|
|
|
23
16
|
start += 1e3;
|
|
24
17
|
}
|
|
25
18
|
}
|
|
26
|
-
async function generateMockSetup(env) {
|
|
19
|
+
export async function generateMockSetup(env) {
|
|
27
20
|
const date = dateGen();
|
|
28
21
|
const rand = (n) => Math.floor(Math.random() * n);
|
|
29
22
|
const picka = (arr) => {
|
|
@@ -109,7 +102,7 @@ async function generateMockSetup(env) {
|
|
|
109
102
|
});
|
|
110
103
|
}
|
|
111
104
|
catch (err) {
|
|
112
|
-
if (!(err instanceof
|
|
105
|
+
if (!(err instanceof ToolsOzoneQueueCreateQueue.ConflictingQueueError)) {
|
|
113
106
|
throw err;
|
|
114
107
|
}
|
|
115
108
|
}
|
|
@@ -118,7 +111,7 @@ async function generateMockSetup(env) {
|
|
|
118
111
|
createQueue({
|
|
119
112
|
name: 'Spammy Accounts',
|
|
120
113
|
subjectTypes: ['account'],
|
|
121
|
-
reportTypes: [
|
|
114
|
+
reportTypes: [COM_ATPROTO_MODERATION.DefsReasonSpam],
|
|
122
115
|
}),
|
|
123
116
|
createQueue({
|
|
124
117
|
name: 'Threatening Accounts',
|
|
@@ -128,7 +121,7 @@ async function generateMockSetup(env) {
|
|
|
128
121
|
createQueue({
|
|
129
122
|
name: 'Spammy Posts',
|
|
130
123
|
subjectTypes: ['record'],
|
|
131
|
-
reportTypes: [
|
|
124
|
+
reportTypes: [COM_ATPROTO_MODERATION.DefsReasonSpam],
|
|
132
125
|
collection: 'app.bsky.feed.post',
|
|
133
126
|
}),
|
|
134
127
|
]);
|
|
@@ -136,8 +129,8 @@ async function generateMockSetup(env) {
|
|
|
136
129
|
const reporter = picka(userAgents);
|
|
137
130
|
await reporter.com.atproto.moderation.createReport({
|
|
138
131
|
reasonType: picka([
|
|
139
|
-
|
|
140
|
-
|
|
132
|
+
COM_ATPROTO_MODERATION.DefsReasonSpam,
|
|
133
|
+
COM_ATPROTO_MODERATION.DefsReasonOther,
|
|
141
134
|
]),
|
|
142
135
|
reason: picka(["Didn't look right to me", undefined, undefined]),
|
|
143
136
|
subject: {
|
|
@@ -147,7 +140,7 @@ async function generateMockSetup(env) {
|
|
|
147
140
|
});
|
|
148
141
|
// Reports that target queues
|
|
149
142
|
await alice.com.atproto.moderation.createReport({
|
|
150
|
-
reasonType:
|
|
143
|
+
reasonType: COM_ATPROTO_MODERATION.DefsReasonSpam,
|
|
151
144
|
reason: 'This account is spamming',
|
|
152
145
|
subject: { $type: 'com.atproto.admin.defs#repoRef', did: bob.did },
|
|
153
146
|
});
|
|
@@ -174,10 +167,10 @@ async function generateMockSetup(env) {
|
|
|
174
167
|
await follow(carla, bob);
|
|
175
168
|
// a set of posts and reposts
|
|
176
169
|
const posts = [];
|
|
177
|
-
for (let i = 0; i <
|
|
170
|
+
for (let i = 0; i < postTexts.length; i++) {
|
|
178
171
|
const author = picka(userAgents);
|
|
179
172
|
const post = await author.app.bsky.feed.post.create({ repo: author.did }, {
|
|
180
|
-
text:
|
|
173
|
+
text: postTexts[i],
|
|
181
174
|
createdAt: date.next().value,
|
|
182
175
|
});
|
|
183
176
|
posts.push(post);
|
|
@@ -192,8 +185,8 @@ async function generateMockSetup(env) {
|
|
|
192
185
|
const reporter = picka(userAgents);
|
|
193
186
|
await reporter.com.atproto.moderation.createReport({
|
|
194
187
|
reasonType: picka([
|
|
195
|
-
|
|
196
|
-
|
|
188
|
+
COM_ATPROTO_MODERATION.DefsReasonSpam,
|
|
189
|
+
COM_ATPROTO_MODERATION.DefsReasonOther,
|
|
197
190
|
]),
|
|
198
191
|
reason: picka(["Didn't look right to me", undefined, undefined]),
|
|
199
192
|
subject: {
|
|
@@ -207,7 +200,7 @@ async function generateMockSetup(env) {
|
|
|
207
200
|
// Spam post report
|
|
208
201
|
if (posts.length > 0) {
|
|
209
202
|
await carla.com.atproto.moderation.createReport({
|
|
210
|
-
reasonType:
|
|
203
|
+
reasonType: COM_ATPROTO_MODERATION.DefsReasonSpam,
|
|
211
204
|
reason: 'This post is spam',
|
|
212
205
|
subject: {
|
|
213
206
|
$type: 'com.atproto.repo.strongRef',
|
|
@@ -219,7 +212,7 @@ async function generateMockSetup(env) {
|
|
|
219
212
|
// Route all reports to queues
|
|
220
213
|
await env.ozone.daemon.ctx.queueRouter.routeReports();
|
|
221
214
|
// make some naughty posts & label them
|
|
222
|
-
const file = Buffer.from(
|
|
215
|
+
const file = Buffer.from(labeledImgB64, 'base64');
|
|
223
216
|
const uploadedImg = await bob.com.atproto.repo.uploadBlob(file, {
|
|
224
217
|
encoding: 'image/png',
|
|
225
218
|
});
|
|
@@ -253,14 +246,14 @@ async function generateMockSetup(env) {
|
|
|
253
246
|
// a set of replies
|
|
254
247
|
for (let i = 0; i < 100; i++) {
|
|
255
248
|
const targetUri = picka(posts).uri;
|
|
256
|
-
const urip = new
|
|
249
|
+
const urip = new AtUri(targetUri);
|
|
257
250
|
const target = await alice.app.bsky.feed.post.get({
|
|
258
251
|
repo: urip.host,
|
|
259
252
|
rkey: urip.rkey,
|
|
260
253
|
});
|
|
261
254
|
const author = picka(userAgents);
|
|
262
255
|
posts.push(await author.app.bsky.feed.post.create({ repo: author.did }, {
|
|
263
|
-
text: picka(
|
|
256
|
+
text: picka(replyTexts),
|
|
264
257
|
reply: {
|
|
265
258
|
root: target.value.reply ? target.value.reply.root : target,
|
|
266
259
|
parent: target,
|
|
@@ -280,7 +273,7 @@ async function generateMockSetup(env) {
|
|
|
280
273
|
}
|
|
281
274
|
}
|
|
282
275
|
// a couple feed generators that returns some posts
|
|
283
|
-
const fg1Uri =
|
|
276
|
+
const fg1Uri = AtUri.make(alice.assertDid, 'app.bsky.feed.generator', 'alice-favs');
|
|
284
277
|
const fg1 = await env.createFeedGen({
|
|
285
278
|
[fg1Uri.toString()]: async () => {
|
|
286
279
|
const feed = posts
|
|
@@ -294,7 +287,7 @@ async function generateMockSetup(env) {
|
|
|
294
287
|
};
|
|
295
288
|
},
|
|
296
289
|
});
|
|
297
|
-
const avatarImg = Buffer.from(
|
|
290
|
+
const avatarImg = Buffer.from(blurHashB64, 'base64');
|
|
298
291
|
const avatarRes = await alice.com.atproto.repo.uploadBlob(avatarImg, {
|
|
299
292
|
encoding: 'image/png',
|
|
300
293
|
});
|
|
@@ -319,7 +312,7 @@ async function generateMockSetup(env) {
|
|
|
319
312
|
createdAt: date.next().value,
|
|
320
313
|
});
|
|
321
314
|
}
|
|
322
|
-
const fg2Uri =
|
|
315
|
+
const fg2Uri = AtUri.make(bob.assertDid, 'app.bsky.feed.generator', 'bob-redux');
|
|
323
316
|
const fg2 = await env.createFeedGen({
|
|
324
317
|
[fg2Uri.toString()]: async () => {
|
|
325
318
|
const feed = posts
|
|
@@ -346,7 +339,7 @@ async function generateMockSetup(env) {
|
|
|
346
339
|
},
|
|
347
340
|
createdAt: date.next().value,
|
|
348
341
|
});
|
|
349
|
-
const fg3Uri =
|
|
342
|
+
const fg3Uri = AtUri.make(carla.assertDid, 'app.bsky.feed.generator', 'carla-intr-algo');
|
|
350
343
|
const fg3 = await env.createFeedGen({
|
|
351
344
|
[fg3Uri.toString()]: async () => {
|
|
352
345
|
const feed = posts
|
|
@@ -501,17 +494,17 @@ async function generateMockSetup(env) {
|
|
|
501
494
|
await alice.app.bsky.graph.listitem.create({ repo: alice.assertDid }, {
|
|
502
495
|
subject: bob.assertDid,
|
|
503
496
|
createdAt: new Date().toISOString(),
|
|
504
|
-
list: new
|
|
497
|
+
list: new RecordRef(flowerLovers.uri, flowerLovers.cid).uriStr,
|
|
505
498
|
});
|
|
506
499
|
await bob.app.bsky.graph.listitem.create({ repo: bob.assertDid }, {
|
|
507
500
|
subject: alice.assertDid,
|
|
508
501
|
createdAt: new Date().toISOString(),
|
|
509
|
-
list: new
|
|
502
|
+
list: new RecordRef(labelHaters.uri, labelHaters.cid).uriStr,
|
|
510
503
|
});
|
|
511
504
|
}
|
|
512
505
|
await setVerifier(env.bsky.db, alice.assertDid);
|
|
513
506
|
// @TODO These are useful when testing complex threads, but don't need to be enabled all the time. We could make it configurable.
|
|
514
|
-
// import * as seedThreadV2 from '../seed/thread-v2'
|
|
507
|
+
// import * as seedThreadV2 from '../seed/thread-v2.js'
|
|
515
508
|
// const sc = env.getSeedClient()
|
|
516
509
|
// await seedThreadV2.simple(sc)
|
|
517
510
|
// await seedThreadV2.long(sc)
|
|
@@ -537,7 +530,7 @@ const createLabel = async (db, opts) => {
|
|
|
537
530
|
val: opts.val,
|
|
538
531
|
cts: new Date().toISOString(),
|
|
539
532
|
neg: false,
|
|
540
|
-
src: opts.src ??
|
|
533
|
+
src: opts.src ?? EXAMPLE_LABELER,
|
|
541
534
|
})
|
|
542
535
|
.execute();
|
|
543
536
|
};
|
package/dist/mock/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mock/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { AtpAgent, COM_ATPROTO_MODERATION } from '@atproto/api'\nimport { ConflictingQueueError } from '@atproto/api/dist/client/types/tools/ozone/queue/createQueue'\nimport { Database } from '@atproto/bsky'\nimport { AtUri, AtUriString } from '@atproto/syntax'\nimport { EXAMPLE_LABELER, RecordRef, TestNetwork } from '../index'\nimport { postTexts, replyTexts } from './data'\nimport blurHashB64 from './img/blur-hash-avatar-b64'\nimport labeledImgB64 from './img/labeled-img-b64'\n\n// NOTE\n// deterministic date generator\n// we use this to ensure the mock dataset is always the same\n// which is very useful when testing\n// (not everything is currently deterministic but it could be)\nfunction* dateGen(): Generator<string, never> {\n let start = 1657846031914\n while (true) {\n yield new Date(start).toISOString()\n start += 1e3\n }\n}\n\nexport async function generateMockSetup(env: TestNetwork) {\n const date = dateGen()\n\n const rand = (n: number) => Math.floor(Math.random() * n)\n const picka = <T>(arr: Array<T>): T => {\n if (arr.length) {\n return arr[rand(arr.length)] || arr[0]\n }\n throw new Error('Not found')\n }\n\n const users = [\n {\n email: 'alice@test.com',\n handle: `alice.test`,\n password: 'hunter2',\n displayName: 'Alice',\n description: 'Test user 0',\n },\n {\n email: 'bob@test.com',\n handle: `bob.test`,\n password: 'hunter2',\n displayName: 'Bob',\n description: 'Test user 1',\n },\n {\n email: 'carla@test.com',\n handle: `carla.test`,\n password: 'hunter2',\n displayName: 'Carla',\n description: 'Test user 2',\n },\n {\n email: 'triage@test.com',\n handle: 'triage.test',\n password: 'triage-pass',\n },\n {\n email: 'mod@test.com',\n handle: 'mod.test',\n password: 'mod-pass',\n },\n {\n email: 'admin-mod@test.com',\n handle: 'admin-mod.test',\n password: 'admin-mod-pass',\n },\n {\n email: 'labeler@test.com',\n handle: 'labeler.test',\n password: 'hunter2',\n displayName: 'Test Labeler',\n description: 'Labeling things across the atmosphere',\n },\n ]\n\n const userAgents = await Promise.all(\n users.map(async (user) => {\n const agent: AtpAgent = env.pds.getAgent()\n await agent.createAccount(user)\n agent.assertAuthenticated()\n if (user.displayName || user.description) {\n await agent.app.bsky.actor.profile.create(\n { repo: agent.did },\n {\n displayName: user.displayName,\n description: user.description,\n },\n )\n }\n return agent\n }),\n )\n\n const [alice, bob, carla, triage, mod, adminMod, labeler] = userAgents\n\n // Create chat declarations for all users\n for (const user of userAgents) {\n await user.chat.bsky.actor.declaration.create(\n { repo: user.did },\n { allowIncoming: 'all' },\n )\n }\n\n // Add moderator roles\n await env.ozone.addTriageDid(triage.did)\n await env.ozone.addModeratorDid(mod.did)\n await env.ozone.addAdminDid(adminMod.did)\n\n // Create report queues\n const ozoneAgent = env.ozone.getAgent()\n const adminHeaders = async (nsid: string) =>\n env.ozone.modHeaders(nsid, 'admin')\n\n const createQueue = async (input: {\n name: string\n subjectTypes: string[]\n reportTypes: string[]\n collection?: string\n }): Promise<void> => {\n try {\n await ozoneAgent.tools.ozone.queue.createQueue(input, {\n encoding: 'application/json',\n headers: await adminHeaders('tools.ozone.queue.createQueue'),\n })\n } catch (err) {\n if (!(err instanceof ConflictingQueueError)) {\n throw err\n }\n }\n }\n\n await Promise.all([\n createQueue({\n name: 'Spammy Accounts',\n subjectTypes: ['account'],\n reportTypes: [COM_ATPROTO_MODERATION.DefsReasonSpam],\n }),\n createQueue({\n name: 'Threatening Accounts',\n subjectTypes: ['account'],\n reportTypes: ['tools.ozone.report.defs#reasonViolenceThreats'],\n }),\n createQueue({\n name: 'Spammy Posts',\n subjectTypes: ['record'],\n reportTypes: [COM_ATPROTO_MODERATION.DefsReasonSpam],\n collection: 'app.bsky.feed.post',\n }),\n ])\n\n // Report one user (random)\n const reporter = picka(userAgents)\n await reporter.com.atproto.moderation.createReport({\n reasonType: picka([\n COM_ATPROTO_MODERATION.DefsReasonSpam,\n COM_ATPROTO_MODERATION.DefsReasonOther,\n ]),\n reason: picka([\"Didn't look right to me\", undefined, undefined]),\n subject: {\n $type: 'com.atproto.admin.defs#repoRef',\n did: picka(userAgents).did,\n },\n })\n\n // Reports that target queues\n await alice.com.atproto.moderation.createReport({\n reasonType: COM_ATPROTO_MODERATION.DefsReasonSpam,\n reason: 'This account is spamming',\n subject: { $type: 'com.atproto.admin.defs#repoRef', did: bob.did },\n })\n await bob.com.atproto.moderation.createReport({\n reasonType: 'tools.ozone.report.defs#reasonViolenceThreats',\n reason: 'Threatened me',\n subject: {\n $type: 'com.atproto.admin.defs#repoRef',\n did: carla.did,\n },\n })\n\n // everybody follows everybody\n const follow = async (author: AtpAgent, subject: AtpAgent) => {\n await author.app.bsky.graph.follow.create(\n { repo: author.assertDid },\n {\n subject: subject.assertDid,\n createdAt: date.next().value,\n },\n )\n }\n await follow(alice, bob)\n await follow(alice, carla)\n await follow(bob, alice)\n await follow(bob, carla)\n await follow(carla, alice)\n await follow(carla, bob)\n\n // a set of posts and reposts\n const posts: { uri: string; cid: string }[] = []\n for (let i = 0; i < postTexts.length; i++) {\n const author = picka(userAgents)\n const post = await author.app.bsky.feed.post.create(\n { repo: author.did },\n {\n text: postTexts[i],\n createdAt: date.next().value,\n },\n )\n posts.push(post)\n if (rand(10) === 0) {\n const reposter = picka(userAgents)\n await reposter.app.bsky.feed.repost.create(\n { repo: reposter.did },\n {\n subject: picka(posts),\n createdAt: date.next().value,\n },\n )\n }\n if (rand(6) === 0) {\n const reporter = picka(userAgents)\n await reporter.com.atproto.moderation.createReport({\n reasonType: picka([\n COM_ATPROTO_MODERATION.DefsReasonSpam,\n COM_ATPROTO_MODERATION.DefsReasonOther,\n ]),\n reason: picka([\"Didn't look right to me\", undefined, undefined]),\n subject: {\n $type: 'com.atproto.repo.strongRef',\n uri: post.uri,\n cid: post.cid,\n },\n })\n }\n }\n\n // Spam post report\n if (posts.length > 0) {\n await carla.com.atproto.moderation.createReport({\n reasonType: COM_ATPROTO_MODERATION.DefsReasonSpam,\n reason: 'This post is spam',\n subject: {\n $type: 'com.atproto.repo.strongRef',\n uri: posts[0].uri,\n cid: posts[0].cid,\n },\n })\n }\n\n // Route all reports to queues\n await env.ozone.daemon.ctx.queueRouter.routeReports()\n\n // make some naughty posts & label them\n const file = Buffer.from(labeledImgB64, 'base64')\n const uploadedImg = await bob.com.atproto.repo.uploadBlob(file, {\n encoding: 'image/png',\n })\n const labeledPost = await bob.app.bsky.feed.post.create(\n { repo: bob.assertDid },\n {\n text: 'naughty post',\n embed: {\n $type: 'app.bsky.embed.images',\n images: [\n {\n image: uploadedImg.data.blob,\n alt: 'naughty naughty',\n },\n ],\n },\n createdAt: date.next().value,\n },\n )\n\n const filteredPost = await bob.app.bsky.feed.post.create(\n { repo: bob.assertDid },\n {\n text: 'really bad post should be deleted',\n createdAt: date.next().value,\n },\n )\n\n await createLabel(env.bsky.db, {\n uri: labeledPost.uri,\n cid: labeledPost.cid,\n val: 'nudity',\n })\n await createLabel(env.bsky.db, {\n uri: filteredPost.uri,\n cid: filteredPost.cid,\n val: 'dmca-violation',\n })\n\n // a set of replies\n for (let i = 0; i < 100; i++) {\n const targetUri = picka(posts).uri\n const urip = new AtUri(targetUri)\n const target = await alice.app.bsky.feed.post.get({\n repo: urip.host,\n rkey: urip.rkey,\n })\n const author = picka(userAgents)\n posts.push(\n await author.app.bsky.feed.post.create(\n { repo: author.did },\n {\n text: picka(replyTexts),\n reply: {\n root: target.value.reply ? target.value.reply.root : target,\n parent: target,\n },\n createdAt: date.next().value,\n },\n ),\n )\n }\n\n // a set of likes\n for (const post of posts) {\n for (const user of userAgents) {\n if (rand(3) === 0) {\n await user.app.bsky.feed.like.create(\n { repo: user.did },\n {\n subject: post,\n createdAt: date.next().value,\n },\n )\n }\n }\n }\n\n // a couple feed generators that returns some posts\n const fg1Uri = AtUri.make(\n alice.assertDid,\n 'app.bsky.feed.generator',\n 'alice-favs',\n )\n const fg1 = await env.createFeedGen({\n [fg1Uri.toString()]: async () => {\n const feed = posts\n .filter(() => rand(2) === 0)\n .map((post) => ({ post: post.uri as AtUriString }))\n return {\n encoding: 'application/json',\n body: {\n feed,\n },\n }\n },\n })\n const avatarImg = Buffer.from(blurHashB64, 'base64')\n const avatarRes = await alice.com.atproto.repo.uploadBlob(avatarImg, {\n encoding: 'image/png',\n })\n const fgAliceRes = await alice.app.bsky.feed.generator.create(\n { repo: alice.assertDid, rkey: fg1Uri.rkey },\n {\n did: fg1.did,\n displayName: 'alices feed',\n description: 'all my fav stuff',\n avatar: avatarRes.data.blob,\n createdAt: date.next().value,\n },\n )\n\n await alice.app.bsky.feed.post.create(\n { repo: alice.assertDid },\n {\n text: 'check out my algorithm!',\n embed: {\n $type: 'app.bsky.embed.record',\n record: fgAliceRes,\n },\n createdAt: date.next().value,\n },\n )\n for (const user of [alice, bob, carla]) {\n await user.app.bsky.feed.like.create(\n { repo: user.did },\n {\n subject: fgAliceRes,\n createdAt: date.next().value,\n },\n )\n }\n\n const fg2Uri = AtUri.make(\n bob.assertDid,\n 'app.bsky.feed.generator',\n 'bob-redux',\n )\n const fg2 = await env.createFeedGen({\n [fg2Uri.toString()]: async () => {\n const feed = posts\n .filter(() => rand(2) === 0)\n .map((post) => ({ post: post.uri as AtUriString }))\n return {\n encoding: 'application/json',\n body: {\n feed,\n },\n }\n },\n })\n const fgBobRes = await bob.app.bsky.feed.generator.create(\n { repo: bob.assertDid, rkey: fg2Uri.rkey },\n {\n did: fg2.did,\n displayName: 'Bobby boy hot new algo',\n createdAt: date.next().value,\n },\n )\n\n await alice.app.bsky.feed.post.create(\n { repo: alice.assertDid },\n {\n text: `bobs feed is neat too`,\n embed: {\n $type: 'app.bsky.embed.record',\n record: fgBobRes,\n },\n createdAt: date.next().value,\n },\n )\n\n const fg3Uri = AtUri.make(\n carla.assertDid,\n 'app.bsky.feed.generator',\n 'carla-intr-algo',\n )\n const fg3 = await env.createFeedGen({\n [fg3Uri.toString()]: async () => {\n const feed = posts\n .filter(() => rand(2) === 0)\n .map((post) => ({ post: post.uri as AtUriString }))\n return {\n encoding: 'application/json',\n body: {\n feed,\n },\n }\n },\n })\n const fgCarlaRes = await carla.app.bsky.feed.generator.create(\n { repo: carla.assertDid, rkey: fg3Uri.rkey },\n {\n did: fg3.did,\n displayName: `Acceptin' Generator`,\n acceptsInteractions: true,\n createdAt: date.next().value,\n },\n )\n\n await alice.app.bsky.feed.post.create(\n { repo: alice.assertDid },\n {\n text: `carla accepts interactions on her feed`,\n embed: {\n $type: 'app.bsky.embed.record',\n record: fgCarlaRes,\n },\n createdAt: date.next().value,\n },\n )\n\n // create labeler service\n {\n await labeler.app.bsky.labeler.service.create(\n { repo: labeler.did, rkey: 'self' },\n {\n policies: {\n labelValues: [\n '!hide',\n 'porn',\n 'rude',\n 'spam',\n 'spider',\n 'misinfo',\n 'cool',\n 'curate',\n ],\n labelValueDefinitions: [\n {\n identifier: 'rude',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'warn',\n adultOnly: true,\n locales: [\n {\n lang: 'en',\n name: 'Rude',\n description: 'Just such a jerk, you wouldnt believe it.',\n },\n ],\n },\n {\n identifier: 'spam',\n blurs: 'content',\n severity: 'inform',\n defaultSetting: 'hide',\n locales: [\n {\n lang: 'en',\n name: 'Spam',\n description:\n 'Low quality posts that dont add to the conversation.',\n },\n ],\n },\n {\n identifier: 'spider',\n blurs: 'media',\n severity: 'alert',\n defaultSetting: 'warn',\n locales: [\n {\n lang: 'en',\n name: 'Spider!',\n description: 'Oh no its a spider.',\n },\n ],\n },\n {\n identifier: 'cool',\n blurs: 'none',\n severity: 'inform',\n defaultSetting: 'warn',\n locales: [\n {\n lang: 'en',\n name: 'Cool',\n description: 'The coolest peeps in the atmosphere.',\n },\n ],\n },\n {\n identifier: 'curate',\n blurs: 'none',\n severity: 'none',\n defaultSetting: 'warn',\n locales: [\n {\n lang: 'en',\n name: 'Curation filter',\n description: 'We just dont want to see it as much.',\n },\n ],\n },\n ],\n },\n createdAt: date.next().value,\n },\n )\n await createLabel(env.bsky.db, {\n uri: alice.assertDid,\n cid: '',\n val: 'rude',\n src: labeler.did,\n })\n await createLabel(env.bsky.db, {\n uri: `at://${alice.assertDid}/app.bsky.feed.generator/alice-favs`,\n cid: '',\n val: 'cool',\n src: labeler.did,\n })\n await createLabel(env.bsky.db, {\n uri: bob.assertDid,\n cid: '',\n val: 'cool',\n src: labeler.did,\n })\n await createLabel(env.bsky.db, {\n uri: carla.assertDid,\n cid: '',\n val: 'spam',\n src: labeler.did,\n })\n }\n\n // Create lists and add people to the lists\n {\n const flowerLovers = await alice.app.bsky.graph.list.create(\n { repo: alice.assertDid },\n {\n name: 'Flower Lovers',\n purpose: 'app.bsky.graph.defs#curatelist',\n createdAt: new Date().toISOString(),\n description: 'A list of posts about flowers',\n },\n )\n const labelHaters = await bob.app.bsky.graph.list.create(\n { repo: bob.assertDid },\n {\n name: 'Label Haters',\n purpose: 'app.bsky.graph.defs#modlist',\n createdAt: new Date().toISOString(),\n description: 'A list of people who hate labels',\n },\n )\n await alice.app.bsky.graph.listitem.create(\n { repo: alice.assertDid },\n {\n subject: bob.assertDid,\n createdAt: new Date().toISOString(),\n list: new RecordRef(flowerLovers.uri, flowerLovers.cid).uriStr,\n },\n )\n await bob.app.bsky.graph.listitem.create(\n { repo: bob.assertDid },\n {\n subject: alice.assertDid,\n createdAt: new Date().toISOString(),\n list: new RecordRef(labelHaters.uri, labelHaters.cid).uriStr,\n },\n )\n }\n\n await setVerifier(env.bsky.db, alice.assertDid)\n\n // @TODO These are useful when testing complex threads, but don't need to be enabled all the time. We could make it configurable.\n // import * as seedThreadV2 from '../seed/thread-v2'\n // const sc = env.getSeedClient()\n // await seedThreadV2.simple(sc)\n // await seedThreadV2.long(sc)\n // await seedThreadV2.deep(sc)\n // await seedThreadV2.branchingFactor(sc)\n // await seedThreadV2.annotateMoreReplies(sc)\n // await seedThreadV2.annotateOP(sc)\n // await seedThreadV2.sort(sc)\n // await seedThreadV2.bumpOpAndViewer(sc)\n // await seedThreadV2.bumpGroupSorting(sc)\n // await seedThreadV2.bumpFollows(sc)\n // await seedThreadV2.blockDeletionAuth(sc, env.bsky.ctx.cfg.modServiceDid)\n // await seedThreadV2.mutes(sc)\n // await seedThreadV2.threadgated(sc)\n // await seedThreadV2.tags(sc)\n}\n\nconst createLabel = async (\n db: Database,\n opts: { uri: string; cid: string; val: string; src?: string },\n) => {\n await db.db\n .insertInto('label')\n .values({\n uri: opts.uri,\n cid: opts.cid,\n val: opts.val,\n cts: new Date().toISOString(),\n neg: false,\n src: opts.src ?? EXAMPLE_LABELER,\n })\n .execute()\n}\n\nconst setVerifier = async (db: Database, did: string) => {\n await db.db\n .updateTable('actor')\n .set({ trustedVerifier: true })\n .where('did', '=', did)\n .execute()\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mock/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AtpAgent,\n COM_ATPROTO_MODERATION,\n ToolsOzoneQueueCreateQueue,\n} from '@atproto/api'\nimport { Database } from '@atproto/bsky'\nimport { AtUri, AtUriString } from '@atproto/syntax'\nimport { EXAMPLE_LABELER, RecordRef, TestNetwork } from '../index.js'\nimport { postTexts, replyTexts } from './data.js'\nimport blurHashB64 from './img/blur-hash-avatar-b64.js'\nimport labeledImgB64 from './img/labeled-img-b64.js'\n\n// NOTE\n// deterministic date generator\n// we use this to ensure the mock dataset is always the same\n// which is very useful when testing\n// (not everything is currently deterministic but it could be)\nfunction* dateGen(): Generator<string, never> {\n let start = 1657846031914\n while (true) {\n yield new Date(start).toISOString()\n start += 1e3\n }\n}\n\nexport async function generateMockSetup(env: TestNetwork) {\n const date = dateGen()\n\n const rand = (n: number) => Math.floor(Math.random() * n)\n const picka = <T>(arr: Array<T>): T => {\n if (arr.length) {\n return arr[rand(arr.length)] || arr[0]\n }\n throw new Error('Not found')\n }\n\n const users = [\n {\n email: 'alice@test.com',\n handle: `alice.test`,\n password: 'hunter2',\n displayName: 'Alice',\n description: 'Test user 0',\n },\n {\n email: 'bob@test.com',\n handle: `bob.test`,\n password: 'hunter2',\n displayName: 'Bob',\n description: 'Test user 1',\n },\n {\n email: 'carla@test.com',\n handle: `carla.test`,\n password: 'hunter2',\n displayName: 'Carla',\n description: 'Test user 2',\n },\n {\n email: 'triage@test.com',\n handle: 'triage.test',\n password: 'triage-pass',\n },\n {\n email: 'mod@test.com',\n handle: 'mod.test',\n password: 'mod-pass',\n },\n {\n email: 'admin-mod@test.com',\n handle: 'admin-mod.test',\n password: 'admin-mod-pass',\n },\n {\n email: 'labeler@test.com',\n handle: 'labeler.test',\n password: 'hunter2',\n displayName: 'Test Labeler',\n description: 'Labeling things across the atmosphere',\n },\n ]\n\n const userAgents = await Promise.all(\n users.map(async (user) => {\n const agent: AtpAgent = env.pds.getAgent()\n await agent.createAccount(user)\n agent.assertAuthenticated()\n if (user.displayName || user.description) {\n await agent.app.bsky.actor.profile.create(\n { repo: agent.did },\n {\n displayName: user.displayName,\n description: user.description,\n },\n )\n }\n return agent\n }),\n )\n\n const [alice, bob, carla, triage, mod, adminMod, labeler] = userAgents\n\n // Create chat declarations for all users\n for (const user of userAgents) {\n await user.chat.bsky.actor.declaration.create(\n { repo: user.did },\n { allowIncoming: 'all' },\n )\n }\n\n // Add moderator roles\n await env.ozone.addTriageDid(triage.did)\n await env.ozone.addModeratorDid(mod.did)\n await env.ozone.addAdminDid(adminMod.did)\n\n // Create report queues\n const ozoneAgent = env.ozone.getAgent()\n const adminHeaders = async (nsid: string) =>\n env.ozone.modHeaders(nsid, 'admin')\n\n const createQueue = async (input: {\n name: string\n subjectTypes: string[]\n reportTypes: string[]\n collection?: string\n }): Promise<void> => {\n try {\n await ozoneAgent.tools.ozone.queue.createQueue(input, {\n encoding: 'application/json',\n headers: await adminHeaders('tools.ozone.queue.createQueue'),\n })\n } catch (err) {\n if (!(err instanceof ToolsOzoneQueueCreateQueue.ConflictingQueueError)) {\n throw err\n }\n }\n }\n\n await Promise.all([\n createQueue({\n name: 'Spammy Accounts',\n subjectTypes: ['account'],\n reportTypes: [COM_ATPROTO_MODERATION.DefsReasonSpam],\n }),\n createQueue({\n name: 'Threatening Accounts',\n subjectTypes: ['account'],\n reportTypes: ['tools.ozone.report.defs#reasonViolenceThreats'],\n }),\n createQueue({\n name: 'Spammy Posts',\n subjectTypes: ['record'],\n reportTypes: [COM_ATPROTO_MODERATION.DefsReasonSpam],\n collection: 'app.bsky.feed.post',\n }),\n ])\n\n // Report one user (random)\n const reporter = picka(userAgents)\n await reporter.com.atproto.moderation.createReport({\n reasonType: picka([\n COM_ATPROTO_MODERATION.DefsReasonSpam,\n COM_ATPROTO_MODERATION.DefsReasonOther,\n ]),\n reason: picka([\"Didn't look right to me\", undefined, undefined]),\n subject: {\n $type: 'com.atproto.admin.defs#repoRef',\n did: picka(userAgents).did,\n },\n })\n\n // Reports that target queues\n await alice.com.atproto.moderation.createReport({\n reasonType: COM_ATPROTO_MODERATION.DefsReasonSpam,\n reason: 'This account is spamming',\n subject: { $type: 'com.atproto.admin.defs#repoRef', did: bob.did },\n })\n await bob.com.atproto.moderation.createReport({\n reasonType: 'tools.ozone.report.defs#reasonViolenceThreats',\n reason: 'Threatened me',\n subject: {\n $type: 'com.atproto.admin.defs#repoRef',\n did: carla.did,\n },\n })\n\n // everybody follows everybody\n const follow = async (author: AtpAgent, subject: AtpAgent) => {\n await author.app.bsky.graph.follow.create(\n { repo: author.assertDid },\n {\n subject: subject.assertDid,\n createdAt: date.next().value,\n },\n )\n }\n await follow(alice, bob)\n await follow(alice, carla)\n await follow(bob, alice)\n await follow(bob, carla)\n await follow(carla, alice)\n await follow(carla, bob)\n\n // a set of posts and reposts\n const posts: { uri: string; cid: string }[] = []\n for (let i = 0; i < postTexts.length; i++) {\n const author = picka(userAgents)\n const post = await author.app.bsky.feed.post.create(\n { repo: author.did },\n {\n text: postTexts[i],\n createdAt: date.next().value,\n },\n )\n posts.push(post)\n if (rand(10) === 0) {\n const reposter = picka(userAgents)\n await reposter.app.bsky.feed.repost.create(\n { repo: reposter.did },\n {\n subject: picka(posts),\n createdAt: date.next().value,\n },\n )\n }\n if (rand(6) === 0) {\n const reporter = picka(userAgents)\n await reporter.com.atproto.moderation.createReport({\n reasonType: picka([\n COM_ATPROTO_MODERATION.DefsReasonSpam,\n COM_ATPROTO_MODERATION.DefsReasonOther,\n ]),\n reason: picka([\"Didn't look right to me\", undefined, undefined]),\n subject: {\n $type: 'com.atproto.repo.strongRef',\n uri: post.uri,\n cid: post.cid,\n },\n })\n }\n }\n\n // Spam post report\n if (posts.length > 0) {\n await carla.com.atproto.moderation.createReport({\n reasonType: COM_ATPROTO_MODERATION.DefsReasonSpam,\n reason: 'This post is spam',\n subject: {\n $type: 'com.atproto.repo.strongRef',\n uri: posts[0].uri,\n cid: posts[0].cid,\n },\n })\n }\n\n // Route all reports to queues\n await env.ozone.daemon.ctx.queueRouter.routeReports()\n\n // make some naughty posts & label them\n const file = Buffer.from(labeledImgB64, 'base64')\n const uploadedImg = await bob.com.atproto.repo.uploadBlob(file, {\n encoding: 'image/png',\n })\n const labeledPost = await bob.app.bsky.feed.post.create(\n { repo: bob.assertDid },\n {\n text: 'naughty post',\n embed: {\n $type: 'app.bsky.embed.images',\n images: [\n {\n image: uploadedImg.data.blob,\n alt: 'naughty naughty',\n },\n ],\n },\n createdAt: date.next().value,\n },\n )\n\n const filteredPost = await bob.app.bsky.feed.post.create(\n { repo: bob.assertDid },\n {\n text: 'really bad post should be deleted',\n createdAt: date.next().value,\n },\n )\n\n await createLabel(env.bsky.db, {\n uri: labeledPost.uri,\n cid: labeledPost.cid,\n val: 'nudity',\n })\n await createLabel(env.bsky.db, {\n uri: filteredPost.uri,\n cid: filteredPost.cid,\n val: 'dmca-violation',\n })\n\n // a set of replies\n for (let i = 0; i < 100; i++) {\n const targetUri = picka(posts).uri\n const urip = new AtUri(targetUri)\n const target = await alice.app.bsky.feed.post.get({\n repo: urip.host,\n rkey: urip.rkey,\n })\n const author = picka(userAgents)\n posts.push(\n await author.app.bsky.feed.post.create(\n { repo: author.did },\n {\n text: picka(replyTexts),\n reply: {\n root: target.value.reply ? target.value.reply.root : target,\n parent: target,\n },\n createdAt: date.next().value,\n },\n ),\n )\n }\n\n // a set of likes\n for (const post of posts) {\n for (const user of userAgents) {\n if (rand(3) === 0) {\n await user.app.bsky.feed.like.create(\n { repo: user.did },\n {\n subject: post,\n createdAt: date.next().value,\n },\n )\n }\n }\n }\n\n // a couple feed generators that returns some posts\n const fg1Uri = AtUri.make(\n alice.assertDid,\n 'app.bsky.feed.generator',\n 'alice-favs',\n )\n const fg1 = await env.createFeedGen({\n [fg1Uri.toString()]: async () => {\n const feed = posts\n .filter(() => rand(2) === 0)\n .map((post) => ({ post: post.uri as AtUriString }))\n return {\n encoding: 'application/json',\n body: {\n feed,\n },\n }\n },\n })\n const avatarImg = Buffer.from(blurHashB64, 'base64')\n const avatarRes = await alice.com.atproto.repo.uploadBlob(avatarImg, {\n encoding: 'image/png',\n })\n const fgAliceRes = await alice.app.bsky.feed.generator.create(\n { repo: alice.assertDid, rkey: fg1Uri.rkey },\n {\n did: fg1.did,\n displayName: 'alices feed',\n description: 'all my fav stuff',\n avatar: avatarRes.data.blob,\n createdAt: date.next().value,\n },\n )\n\n await alice.app.bsky.feed.post.create(\n { repo: alice.assertDid },\n {\n text: 'check out my algorithm!',\n embed: {\n $type: 'app.bsky.embed.record',\n record: fgAliceRes,\n },\n createdAt: date.next().value,\n },\n )\n for (const user of [alice, bob, carla]) {\n await user.app.bsky.feed.like.create(\n { repo: user.did },\n {\n subject: fgAliceRes,\n createdAt: date.next().value,\n },\n )\n }\n\n const fg2Uri = AtUri.make(\n bob.assertDid,\n 'app.bsky.feed.generator',\n 'bob-redux',\n )\n const fg2 = await env.createFeedGen({\n [fg2Uri.toString()]: async () => {\n const feed = posts\n .filter(() => rand(2) === 0)\n .map((post) => ({ post: post.uri as AtUriString }))\n return {\n encoding: 'application/json',\n body: {\n feed,\n },\n }\n },\n })\n const fgBobRes = await bob.app.bsky.feed.generator.create(\n { repo: bob.assertDid, rkey: fg2Uri.rkey },\n {\n did: fg2.did,\n displayName: 'Bobby boy hot new algo',\n createdAt: date.next().value,\n },\n )\n\n await alice.app.bsky.feed.post.create(\n { repo: alice.assertDid },\n {\n text: `bobs feed is neat too`,\n embed: {\n $type: 'app.bsky.embed.record',\n record: fgBobRes,\n },\n createdAt: date.next().value,\n },\n )\n\n const fg3Uri = AtUri.make(\n carla.assertDid,\n 'app.bsky.feed.generator',\n 'carla-intr-algo',\n )\n const fg3 = await env.createFeedGen({\n [fg3Uri.toString()]: async () => {\n const feed = posts\n .filter(() => rand(2) === 0)\n .map((post) => ({ post: post.uri as AtUriString }))\n return {\n encoding: 'application/json',\n body: {\n feed,\n },\n }\n },\n })\n const fgCarlaRes = await carla.app.bsky.feed.generator.create(\n { repo: carla.assertDid, rkey: fg3Uri.rkey },\n {\n did: fg3.did,\n displayName: `Acceptin' Generator`,\n acceptsInteractions: true,\n createdAt: date.next().value,\n },\n )\n\n await alice.app.bsky.feed.post.create(\n { repo: alice.assertDid },\n {\n text: `carla accepts interactions on her feed`,\n embed: {\n $type: 'app.bsky.embed.record',\n record: fgCarlaRes,\n },\n createdAt: date.next().value,\n },\n )\n\n // create labeler service\n {\n await labeler.app.bsky.labeler.service.create(\n { repo: labeler.did, rkey: 'self' },\n {\n policies: {\n labelValues: [\n '!hide',\n 'porn',\n 'rude',\n 'spam',\n 'spider',\n 'misinfo',\n 'cool',\n 'curate',\n ],\n labelValueDefinitions: [\n {\n identifier: 'rude',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'warn',\n adultOnly: true,\n locales: [\n {\n lang: 'en',\n name: 'Rude',\n description: 'Just such a jerk, you wouldnt believe it.',\n },\n ],\n },\n {\n identifier: 'spam',\n blurs: 'content',\n severity: 'inform',\n defaultSetting: 'hide',\n locales: [\n {\n lang: 'en',\n name: 'Spam',\n description:\n 'Low quality posts that dont add to the conversation.',\n },\n ],\n },\n {\n identifier: 'spider',\n blurs: 'media',\n severity: 'alert',\n defaultSetting: 'warn',\n locales: [\n {\n lang: 'en',\n name: 'Spider!',\n description: 'Oh no its a spider.',\n },\n ],\n },\n {\n identifier: 'cool',\n blurs: 'none',\n severity: 'inform',\n defaultSetting: 'warn',\n locales: [\n {\n lang: 'en',\n name: 'Cool',\n description: 'The coolest peeps in the atmosphere.',\n },\n ],\n },\n {\n identifier: 'curate',\n blurs: 'none',\n severity: 'none',\n defaultSetting: 'warn',\n locales: [\n {\n lang: 'en',\n name: 'Curation filter',\n description: 'We just dont want to see it as much.',\n },\n ],\n },\n ],\n },\n createdAt: date.next().value,\n },\n )\n await createLabel(env.bsky.db, {\n uri: alice.assertDid,\n cid: '',\n val: 'rude',\n src: labeler.did,\n })\n await createLabel(env.bsky.db, {\n uri: `at://${alice.assertDid}/app.bsky.feed.generator/alice-favs`,\n cid: '',\n val: 'cool',\n src: labeler.did,\n })\n await createLabel(env.bsky.db, {\n uri: bob.assertDid,\n cid: '',\n val: 'cool',\n src: labeler.did,\n })\n await createLabel(env.bsky.db, {\n uri: carla.assertDid,\n cid: '',\n val: 'spam',\n src: labeler.did,\n })\n }\n\n // Create lists and add people to the lists\n {\n const flowerLovers = await alice.app.bsky.graph.list.create(\n { repo: alice.assertDid },\n {\n name: 'Flower Lovers',\n purpose: 'app.bsky.graph.defs#curatelist',\n createdAt: new Date().toISOString(),\n description: 'A list of posts about flowers',\n },\n )\n const labelHaters = await bob.app.bsky.graph.list.create(\n { repo: bob.assertDid },\n {\n name: 'Label Haters',\n purpose: 'app.bsky.graph.defs#modlist',\n createdAt: new Date().toISOString(),\n description: 'A list of people who hate labels',\n },\n )\n await alice.app.bsky.graph.listitem.create(\n { repo: alice.assertDid },\n {\n subject: bob.assertDid,\n createdAt: new Date().toISOString(),\n list: new RecordRef(flowerLovers.uri, flowerLovers.cid).uriStr,\n },\n )\n await bob.app.bsky.graph.listitem.create(\n { repo: bob.assertDid },\n {\n subject: alice.assertDid,\n createdAt: new Date().toISOString(),\n list: new RecordRef(labelHaters.uri, labelHaters.cid).uriStr,\n },\n )\n }\n\n await setVerifier(env.bsky.db, alice.assertDid)\n\n // @TODO These are useful when testing complex threads, but don't need to be enabled all the time. We could make it configurable.\n // import * as seedThreadV2 from '../seed/thread-v2.js'\n // const sc = env.getSeedClient()\n // await seedThreadV2.simple(sc)\n // await seedThreadV2.long(sc)\n // await seedThreadV2.deep(sc)\n // await seedThreadV2.branchingFactor(sc)\n // await seedThreadV2.annotateMoreReplies(sc)\n // await seedThreadV2.annotateOP(sc)\n // await seedThreadV2.sort(sc)\n // await seedThreadV2.bumpOpAndViewer(sc)\n // await seedThreadV2.bumpGroupSorting(sc)\n // await seedThreadV2.bumpFollows(sc)\n // await seedThreadV2.blockDeletionAuth(sc, env.bsky.ctx.cfg.modServiceDid)\n // await seedThreadV2.mutes(sc)\n // await seedThreadV2.threadgated(sc)\n // await seedThreadV2.tags(sc)\n}\n\nconst createLabel = async (\n db: Database,\n opts: { uri: string; cid: string; val: string; src?: string },\n) => {\n await db.db\n .insertInto('label')\n .values({\n uri: opts.uri,\n cid: opts.cid,\n val: opts.val,\n cts: new Date().toISOString(),\n neg: false,\n src: opts.src ?? EXAMPLE_LABELER,\n })\n .execute()\n}\n\nconst setVerifier = async (db: Database, did: string) => {\n await db.db\n .updateTable('actor')\n .set({ trustedVerifier: true })\n .where('did', '=', did)\n .execute()\n}\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { AtpAgent, ToolsOzoneModerationDefs, ToolsOzoneModerationEmitEvent as EmitModerationEvent,
|
|
2
|
-
|
|
1
|
+
import { AtpAgent, ToolsOzoneModerationDefs, ToolsOzoneModerationEmitEvent as EmitModerationEvent, ToolsOzoneModerationGetReporterStats as _GetReporterStats, // includes types for getReporterStats()
|
|
2
|
+
ToolsOzoneModerationQueryEvents as QueryModerationEvents, ToolsOzoneModerationQueryStatuses as QueryModerationStatuses, ToolsOzoneReportQueryReports as QueryModerationReports, ToolsOzoneSettingRemoveOptions, ToolsOzoneSettingUpsertOption } from '@atproto/api';
|
|
3
|
+
import { TestOzone } from './ozone.js';
|
|
3
4
|
type TakeActionInput = EmitModerationEvent.InputSchema;
|
|
4
5
|
type QueryStatusesParams = QueryModerationStatuses.QueryParams;
|
|
5
6
|
type QueryEventsParams = QueryModerationEvents.QueryParams;
|
|
@@ -11,7 +12,7 @@ export declare class ModeratorClient {
|
|
|
11
12
|
constructor(ozone: TestOzone);
|
|
12
13
|
getEvent(id: number, role?: ModLevel): Promise<ToolsOzoneModerationDefs.ModEventViewDetail>;
|
|
13
14
|
queryStatuses(input: QueryStatusesParams, role?: ModLevel): Promise<QueryModerationStatuses.OutputSchema>;
|
|
14
|
-
getReporterStats(dids: string[]): Promise<
|
|
15
|
+
getReporterStats(dids: string[]): Promise<_GetReporterStats.OutputSchema>;
|
|
15
16
|
queryEvents(input: QueryEventsParams, role?: ModLevel): Promise<QueryModerationEvents.OutputSchema>;
|
|
16
17
|
queryReports(input: QueryReportsParams, role?: ModLevel): Promise<QueryModerationReports.OutputSchema>;
|
|
17
18
|
emitEvent(opts: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moderator-client.d.ts","sourceRoot":"","sources":["../src/moderator-client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,wBAAwB,EACxB,6BAA6B,IAAI,mBAAmB,EACpD,+BAA+B,IAAI,qBAAqB,EACxD,iCAAiC,IAAI,uBAAuB,EAC5D,4BAA4B,IAAI,sBAAsB,EACtD,8BAA8B,EAC9B,6BAA6B,EAC9B,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"moderator-client.d.ts","sourceRoot":"","sources":["../src/moderator-client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,wBAAwB,EACxB,6BAA6B,IAAI,mBAAmB,EACpD,oCAAoC,IAAI,iBAAiB,EAAE,wCAAwC;AACnG,+BAA+B,IAAI,qBAAqB,EACxD,iCAAiC,IAAI,uBAAuB,EAC5D,4BAA4B,IAAI,sBAAsB,EACtD,8BAA8B,EAC9B,6BAA6B,EAC9B,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,KAAK,eAAe,GAAG,mBAAmB,CAAC,WAAW,CAAA;AACtD,KAAK,mBAAmB,GAAG,uBAAuB,CAAC,WAAW,CAAA;AAC9D,KAAK,iBAAiB,GAAG,qBAAqB,CAAC,WAAW,CAAA;AAC1D,KAAK,kBAAkB,GAAG,sBAAsB,CAAC,WAAW,CAAA;AAC5D,KAAK,QAAQ,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,CAAA;AAEhD,qBAAa,eAAe;IAEP,KAAK,EAAE,SAAS;IADnC,KAAK,EAAE,QAAQ,CAAA;gBACI,KAAK,EAAE,SAAS;IAI7B,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ;IAapC,aAAa,CAAC,KAAK,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,QAAQ;IAazD,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE;IAa/B,WAAW,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,QAAQ;IAUrD,YAAY,CAAC,KAAK,EAAE,kBAAkB,EAAE,IAAI,CAAC,EAAE,QAAQ;IAUvD,SAAS,CACb,IAAI,EAAE;QACJ,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAA;QAC/B,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;QACnC,eAAe,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAA;QACpD,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,OAAO,CAAC,EAAE,wBAAwB,CAAC,OAAO,CAAA;QAC1C,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,YAAY,CAAC,EAAE,eAAe,CAAC,cAAc,CAAC,CAAA;KAC/C,EACD,IAAI,CAAC,EAAE,QAAQ;IAgCX,aAAa,CACjB,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAA;QACV,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;QACnC,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,OAAO,CAAC,EAAE,wBAAwB,CAAC,OAAO,CAAA;KAC3C,EACD,IAAI,CAAC,EAAE,QAAQ;IA6BX,eAAe,CACnB,IAAI,EAAE;QACJ,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;QACnC,eAAe,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAA;QACpD,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,0BAA0B,CAAC,EAAE,OAAO,CAAA;QACpC,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KACpB,EACD,IAAI,CAAC,EAAE,QAAQ;IAkBX,sBAAsB,CAC1B,IAAI,EAAE;QACJ,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;QACnC,eAAe,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAA;QACpD,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,EACD,IAAI,CAAC,EAAE,QAAQ;IAaX,mBAAmB,CACvB,OAAO,EAAE,6BAA6B,CAAC,WAAW,EAClD,UAAU,GAAE,OAAO,GAAG,WAAW,GAAG,QAAkB;IAgBlD,oBAAoB,CACxB,MAAM,EAAE,8BAA8B,CAAC,WAAW,EAClD,UAAU,GAAE,OAAO,GAAG,WAAW,GAAG,QAAkB;IAgBlD,YAAY;CAKnB"}
|
package/dist/moderator-client.js
CHANGED
|
@@ -1,20 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ModeratorClient = void 0;
|
|
4
|
-
class ModeratorClient {
|
|
1
|
+
export class ModeratorClient {
|
|
5
2
|
constructor(ozone) {
|
|
6
|
-
|
|
7
|
-
enumerable: true,
|
|
8
|
-
configurable: true,
|
|
9
|
-
writable: true,
|
|
10
|
-
value: ozone
|
|
11
|
-
});
|
|
12
|
-
Object.defineProperty(this, "agent", {
|
|
13
|
-
enumerable: true,
|
|
14
|
-
configurable: true,
|
|
15
|
-
writable: true,
|
|
16
|
-
value: void 0
|
|
17
|
-
});
|
|
3
|
+
this.ozone = ozone;
|
|
18
4
|
this.agent = ozone.getAgent();
|
|
19
5
|
}
|
|
20
6
|
async getEvent(id, role) {
|
|
@@ -119,5 +105,4 @@ class ModeratorClient {
|
|
|
119
105
|
await statsService.materializeAll({ force: true });
|
|
120
106
|
}
|
|
121
107
|
}
|
|
122
|
-
exports.ModeratorClient = ModeratorClient;
|
|
123
108
|
//# sourceMappingURL=moderator-client.js.map
|