@atproto/bsky 0.0.60 → 0.0.61
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 +7 -0
- package/dist/api/app/bsky/graph/getKnownFollowers.d.ts +4 -0
- package/dist/api/app/bsky/graph/getKnownFollowers.d.ts.map +1 -0
- package/dist/api/app/bsky/graph/getKnownFollowers.js +71 -0
- package/dist/api/app/bsky/graph/getKnownFollowers.js.map +1 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +2 -0
- package/dist/api/index.js.map +1 -1
- package/dist/data-plane/server/routes/follows.d.ts.map +1 -1
- package/dist/data-plane/server/routes/follows.js +34 -2
- package/dist/data-plane/server/routes/follows.js.map +1 -1
- package/dist/hydration/actor.d.ts +6 -0
- package/dist/hydration/actor.d.ts.map +1 -1
- package/dist/hydration/actor.js +17 -0
- package/dist/hydration/actor.js.map +1 -1
- package/dist/hydration/hydrator.d.ts +2 -1
- package/dist/hydration/hydrator.d.ts.map +1 -1
- package/dist/hydration/hydrator.js +15 -1
- package/dist/hydration/hydrator.js.map +1 -1
- package/dist/lexicon/index.d.ts +2 -0
- package/dist/lexicon/index.d.ts.map +1 -1
- package/dist/lexicon/index.js +4 -0
- package/dist/lexicon/index.js.map +1 -1
- package/dist/lexicon/lexicons.d.ts +76 -0
- package/dist/lexicon/lexicons.d.ts.map +1 -1
- package/dist/lexicon/lexicons.js +76 -0
- package/dist/lexicon/lexicons.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/defs.d.ts +9 -0
- package/dist/lexicon/types/app/bsky/actor/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/defs.js +11 -1
- package/dist/lexicon/types/app/bsky/actor/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getKnownFollowers.d.ts +40 -0
- package/dist/lexicon/types/app/bsky/graph/getKnownFollowers.d.ts.map +1 -0
- package/dist/lexicon/types/app/bsky/graph/getKnownFollowers.js +3 -0
- package/dist/lexicon/types/app/bsky/graph/getKnownFollowers.js.map +1 -0
- package/dist/logger.d.ts +1 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +2 -1
- package/dist/logger.js.map +1 -1
- package/dist/proto/bsky_pb.d.ts +25 -4
- package/dist/proto/bsky_pb.d.ts.map +1 -1
- package/dist/proto/bsky_pb.js +83 -10
- package/dist/proto/bsky_pb.js.map +1 -1
- package/dist/views/index.d.ts +5 -0
- package/dist/views/index.d.ts.map +1 -1
- package/dist/views/index.js +19 -0
- package/dist/views/index.js.map +1 -1
- package/package.json +5 -5
- package/proto/bsky.proto +6 -2
- package/src/api/app/bsky/graph/getKnownFollowers.ts +119 -0
- package/src/api/index.ts +2 -0
- package/src/data-plane/server/routes/follows.ts +45 -2
- package/src/hydration/actor.ts +30 -0
- package/src/hydration/hydrator.ts +22 -1
- package/src/lexicon/index.ts +12 -0
- package/src/lexicon/lexicons.ts +77 -0
- package/src/lexicon/types/app/bsky/actor/defs.ts +20 -0
- package/src/lexicon/types/app/bsky/graph/getKnownFollowers.ts +50 -0
- package/src/logger.ts +2 -0
- package/src/proto/bsky_pb.ts +75 -8
- package/src/views/index.ts +24 -0
- package/tests/data-plane/__snapshots__/indexing.test.ts.snap +46 -28
- package/tests/label-hydration.test.ts +0 -2
- package/tests/query-labels.test.ts +0 -3
- package/tests/views/__snapshots__/profile.test.ts.snap +230 -10
- package/tests/views/blocks.test.ts +13 -0
- package/tests/views/profile.test.ts +35 -0
package/src/lexicon/lexicons.ts
CHANGED
|
@@ -4107,6 +4107,29 @@ export const schemaDict = {
|
|
|
4107
4107
|
type: 'string',
|
|
4108
4108
|
format: 'at-uri',
|
|
4109
4109
|
},
|
|
4110
|
+
knownFollowers: {
|
|
4111
|
+
type: 'ref',
|
|
4112
|
+
ref: 'lex:app.bsky.actor.defs#knownFollowers',
|
|
4113
|
+
},
|
|
4114
|
+
},
|
|
4115
|
+
},
|
|
4116
|
+
knownFollowers: {
|
|
4117
|
+
type: 'object',
|
|
4118
|
+
description: "The subject's followers whom you also follow",
|
|
4119
|
+
required: ['count', 'followers'],
|
|
4120
|
+
properties: {
|
|
4121
|
+
count: {
|
|
4122
|
+
type: 'integer',
|
|
4123
|
+
},
|
|
4124
|
+
followers: {
|
|
4125
|
+
type: 'array',
|
|
4126
|
+
minLength: 0,
|
|
4127
|
+
maxLength: 5,
|
|
4128
|
+
items: {
|
|
4129
|
+
type: 'ref',
|
|
4130
|
+
ref: 'lex:app.bsky.actor.defs#profileViewBasic',
|
|
4131
|
+
},
|
|
4132
|
+
},
|
|
4110
4133
|
},
|
|
4111
4134
|
},
|
|
4112
4135
|
preferences: {
|
|
@@ -7101,6 +7124,59 @@ export const schemaDict = {
|
|
|
7101
7124
|
},
|
|
7102
7125
|
},
|
|
7103
7126
|
},
|
|
7127
|
+
AppBskyGraphGetKnownFollowers: {
|
|
7128
|
+
lexicon: 1,
|
|
7129
|
+
id: 'app.bsky.graph.getKnownFollowers',
|
|
7130
|
+
defs: {
|
|
7131
|
+
main: {
|
|
7132
|
+
type: 'query',
|
|
7133
|
+
description:
|
|
7134
|
+
'Enumerates accounts which follow a specified account (actor) and are followed by the viewer.',
|
|
7135
|
+
parameters: {
|
|
7136
|
+
type: 'params',
|
|
7137
|
+
required: ['actor'],
|
|
7138
|
+
properties: {
|
|
7139
|
+
actor: {
|
|
7140
|
+
type: 'string',
|
|
7141
|
+
format: 'at-identifier',
|
|
7142
|
+
},
|
|
7143
|
+
limit: {
|
|
7144
|
+
type: 'integer',
|
|
7145
|
+
minimum: 1,
|
|
7146
|
+
maximum: 100,
|
|
7147
|
+
default: 50,
|
|
7148
|
+
},
|
|
7149
|
+
cursor: {
|
|
7150
|
+
type: 'string',
|
|
7151
|
+
},
|
|
7152
|
+
},
|
|
7153
|
+
},
|
|
7154
|
+
output: {
|
|
7155
|
+
encoding: 'application/json',
|
|
7156
|
+
schema: {
|
|
7157
|
+
type: 'object',
|
|
7158
|
+
required: ['subject', 'followers'],
|
|
7159
|
+
properties: {
|
|
7160
|
+
subject: {
|
|
7161
|
+
type: 'ref',
|
|
7162
|
+
ref: 'lex:app.bsky.actor.defs#profileView',
|
|
7163
|
+
},
|
|
7164
|
+
cursor: {
|
|
7165
|
+
type: 'string',
|
|
7166
|
+
},
|
|
7167
|
+
followers: {
|
|
7168
|
+
type: 'array',
|
|
7169
|
+
items: {
|
|
7170
|
+
type: 'ref',
|
|
7171
|
+
ref: 'lex:app.bsky.actor.defs#profileView',
|
|
7172
|
+
},
|
|
7173
|
+
},
|
|
7174
|
+
},
|
|
7175
|
+
},
|
|
7176
|
+
},
|
|
7177
|
+
},
|
|
7178
|
+
},
|
|
7179
|
+
},
|
|
7104
7180
|
AppBskyGraphGetList: {
|
|
7105
7181
|
lexicon: 1,
|
|
7106
7182
|
id: 'app.bsky.graph.getList',
|
|
@@ -9523,6 +9599,7 @@ export const ids = {
|
|
|
9523
9599
|
AppBskyGraphGetBlocks: 'app.bsky.graph.getBlocks',
|
|
9524
9600
|
AppBskyGraphGetFollowers: 'app.bsky.graph.getFollowers',
|
|
9525
9601
|
AppBskyGraphGetFollows: 'app.bsky.graph.getFollows',
|
|
9602
|
+
AppBskyGraphGetKnownFollowers: 'app.bsky.graph.getKnownFollowers',
|
|
9526
9603
|
AppBskyGraphGetList: 'app.bsky.graph.getList',
|
|
9527
9604
|
AppBskyGraphGetListBlocks: 'app.bsky.graph.getListBlocks',
|
|
9528
9605
|
AppBskyGraphGetListMutes: 'app.bsky.graph.getListMutes',
|
|
@@ -133,6 +133,7 @@ export interface ViewerState {
|
|
|
133
133
|
blockingByList?: AppBskyGraphDefs.ListViewBasic
|
|
134
134
|
following?: string
|
|
135
135
|
followedBy?: string
|
|
136
|
+
knownFollowers?: KnownFollowers
|
|
136
137
|
[k: string]: unknown
|
|
137
138
|
}
|
|
138
139
|
|
|
@@ -148,6 +149,25 @@ export function validateViewerState(v: unknown): ValidationResult {
|
|
|
148
149
|
return lexicons.validate('app.bsky.actor.defs#viewerState', v)
|
|
149
150
|
}
|
|
150
151
|
|
|
152
|
+
/** The subject's followers whom you also follow */
|
|
153
|
+
export interface KnownFollowers {
|
|
154
|
+
count: number
|
|
155
|
+
followers: ProfileViewBasic[]
|
|
156
|
+
[k: string]: unknown
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export function isKnownFollowers(v: unknown): v is KnownFollowers {
|
|
160
|
+
return (
|
|
161
|
+
isObj(v) &&
|
|
162
|
+
hasProp(v, '$type') &&
|
|
163
|
+
v.$type === 'app.bsky.actor.defs#knownFollowers'
|
|
164
|
+
)
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export function validateKnownFollowers(v: unknown): ValidationResult {
|
|
168
|
+
return lexicons.validate('app.bsky.actor.defs#knownFollowers', v)
|
|
169
|
+
}
|
|
170
|
+
|
|
151
171
|
export type Preferences = (
|
|
152
172
|
| AdultContentPref
|
|
153
173
|
| ContentLabelPref
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GENERATED CODE - DO NOT MODIFY
|
|
3
|
+
*/
|
|
4
|
+
import express from 'express'
|
|
5
|
+
import { ValidationResult, BlobRef } from '@atproto/lexicon'
|
|
6
|
+
import { lexicons } from '../../../../lexicons'
|
|
7
|
+
import { isObj, hasProp } from '../../../../util'
|
|
8
|
+
import { CID } from 'multiformats/cid'
|
|
9
|
+
import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server'
|
|
10
|
+
import * as AppBskyActorDefs from '../actor/defs'
|
|
11
|
+
|
|
12
|
+
export interface QueryParams {
|
|
13
|
+
actor: string
|
|
14
|
+
limit: number
|
|
15
|
+
cursor?: string
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export type InputSchema = undefined
|
|
19
|
+
|
|
20
|
+
export interface OutputSchema {
|
|
21
|
+
subject: AppBskyActorDefs.ProfileView
|
|
22
|
+
cursor?: string
|
|
23
|
+
followers: AppBskyActorDefs.ProfileView[]
|
|
24
|
+
[k: string]: unknown
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export type HandlerInput = undefined
|
|
28
|
+
|
|
29
|
+
export interface HandlerSuccess {
|
|
30
|
+
encoding: 'application/json'
|
|
31
|
+
body: OutputSchema
|
|
32
|
+
headers?: { [key: string]: string }
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface HandlerError {
|
|
36
|
+
status: number
|
|
37
|
+
message?: string
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough
|
|
41
|
+
export type HandlerReqCtx<HA extends HandlerAuth = never> = {
|
|
42
|
+
auth: HA
|
|
43
|
+
params: QueryParams
|
|
44
|
+
input: HandlerInput
|
|
45
|
+
req: express.Request
|
|
46
|
+
res: express.Response
|
|
47
|
+
}
|
|
48
|
+
export type Handler<HA extends HandlerAuth = never> = (
|
|
49
|
+
ctx: HandlerReqCtx<HA>,
|
|
50
|
+
) => Promise<HandlerOutput> | HandlerOutput
|
package/src/logger.ts
CHANGED
|
@@ -12,6 +12,8 @@ export const subLogger: ReturnType<typeof subsystemLogger> =
|
|
|
12
12
|
subsystemLogger('bsky:sub')
|
|
13
13
|
export const labelerLogger: ReturnType<typeof subsystemLogger> =
|
|
14
14
|
subsystemLogger('bsky:labeler')
|
|
15
|
+
export const hydrationLogger: ReturnType<typeof subsystemLogger> =
|
|
16
|
+
subsystemLogger('bsky:hydration')
|
|
15
17
|
export const httpLogger: ReturnType<typeof subsystemLogger> =
|
|
16
18
|
subsystemLogger('bsky')
|
|
17
19
|
|
package/src/proto/bsky_pb.ts
CHANGED
|
@@ -9820,9 +9820,9 @@ export class GetFollowsFollowingRequest extends Message<GetFollowsFollowingReque
|
|
|
9820
9820
|
actorDid = ''
|
|
9821
9821
|
|
|
9822
9822
|
/**
|
|
9823
|
-
* @generated from field: string
|
|
9823
|
+
* @generated from field: repeated string target_dids = 2;
|
|
9824
9824
|
*/
|
|
9825
|
-
|
|
9825
|
+
targetDids: string[] = []
|
|
9826
9826
|
|
|
9827
9827
|
constructor(data?: PartialMessage<GetFollowsFollowingRequest>) {
|
|
9828
9828
|
super()
|
|
@@ -9833,7 +9833,13 @@ export class GetFollowsFollowingRequest extends Message<GetFollowsFollowingReque
|
|
|
9833
9833
|
static readonly typeName = 'bsky.GetFollowsFollowingRequest'
|
|
9834
9834
|
static readonly fields: FieldList = proto3.util.newFieldList(() => [
|
|
9835
9835
|
{ no: 1, name: 'actor_did', kind: 'scalar', T: 9 /* ScalarType.STRING */ },
|
|
9836
|
-
{
|
|
9836
|
+
{
|
|
9837
|
+
no: 2,
|
|
9838
|
+
name: 'target_dids',
|
|
9839
|
+
kind: 'scalar',
|
|
9840
|
+
T: 9 /* ScalarType.STRING */,
|
|
9841
|
+
repeated: true,
|
|
9842
|
+
},
|
|
9837
9843
|
])
|
|
9838
9844
|
|
|
9839
9845
|
static fromBinary(
|
|
@@ -9871,14 +9877,75 @@ export class GetFollowsFollowingRequest extends Message<GetFollowsFollowingReque
|
|
|
9871
9877
|
}
|
|
9872
9878
|
}
|
|
9873
9879
|
|
|
9880
|
+
/**
|
|
9881
|
+
* @generated from message bsky.FollowsFollowing
|
|
9882
|
+
*/
|
|
9883
|
+
export class FollowsFollowing extends Message<FollowsFollowing> {
|
|
9884
|
+
/**
|
|
9885
|
+
* @generated from field: string target_did = 1;
|
|
9886
|
+
*/
|
|
9887
|
+
targetDid = ''
|
|
9888
|
+
|
|
9889
|
+
/**
|
|
9890
|
+
* @generated from field: repeated string dids = 2;
|
|
9891
|
+
*/
|
|
9892
|
+
dids: string[] = []
|
|
9893
|
+
|
|
9894
|
+
constructor(data?: PartialMessage<FollowsFollowing>) {
|
|
9895
|
+
super()
|
|
9896
|
+
proto3.util.initPartial(data, this)
|
|
9897
|
+
}
|
|
9898
|
+
|
|
9899
|
+
static readonly runtime: typeof proto3 = proto3
|
|
9900
|
+
static readonly typeName = 'bsky.FollowsFollowing'
|
|
9901
|
+
static readonly fields: FieldList = proto3.util.newFieldList(() => [
|
|
9902
|
+
{ no: 1, name: 'target_did', kind: 'scalar', T: 9 /* ScalarType.STRING */ },
|
|
9903
|
+
{
|
|
9904
|
+
no: 2,
|
|
9905
|
+
name: 'dids',
|
|
9906
|
+
kind: 'scalar',
|
|
9907
|
+
T: 9 /* ScalarType.STRING */,
|
|
9908
|
+
repeated: true,
|
|
9909
|
+
},
|
|
9910
|
+
])
|
|
9911
|
+
|
|
9912
|
+
static fromBinary(
|
|
9913
|
+
bytes: Uint8Array,
|
|
9914
|
+
options?: Partial<BinaryReadOptions>,
|
|
9915
|
+
): FollowsFollowing {
|
|
9916
|
+
return new FollowsFollowing().fromBinary(bytes, options)
|
|
9917
|
+
}
|
|
9918
|
+
|
|
9919
|
+
static fromJson(
|
|
9920
|
+
jsonValue: JsonValue,
|
|
9921
|
+
options?: Partial<JsonReadOptions>,
|
|
9922
|
+
): FollowsFollowing {
|
|
9923
|
+
return new FollowsFollowing().fromJson(jsonValue, options)
|
|
9924
|
+
}
|
|
9925
|
+
|
|
9926
|
+
static fromJsonString(
|
|
9927
|
+
jsonString: string,
|
|
9928
|
+
options?: Partial<JsonReadOptions>,
|
|
9929
|
+
): FollowsFollowing {
|
|
9930
|
+
return new FollowsFollowing().fromJsonString(jsonString, options)
|
|
9931
|
+
}
|
|
9932
|
+
|
|
9933
|
+
static equals(
|
|
9934
|
+
a: FollowsFollowing | PlainMessage<FollowsFollowing> | undefined,
|
|
9935
|
+
b: FollowsFollowing | PlainMessage<FollowsFollowing> | undefined,
|
|
9936
|
+
): boolean {
|
|
9937
|
+
return proto3.util.equals(FollowsFollowing, a, b)
|
|
9938
|
+
}
|
|
9939
|
+
}
|
|
9940
|
+
|
|
9874
9941
|
/**
|
|
9875
9942
|
* @generated from message bsky.GetFollowsFollowingResponse
|
|
9876
9943
|
*/
|
|
9877
9944
|
export class GetFollowsFollowingResponse extends Message<GetFollowsFollowingResponse> {
|
|
9878
9945
|
/**
|
|
9879
|
-
* @generated from field: repeated
|
|
9946
|
+
* @generated from field: repeated bsky.FollowsFollowing results = 1;
|
|
9880
9947
|
*/
|
|
9881
|
-
|
|
9948
|
+
results: FollowsFollowing[] = []
|
|
9882
9949
|
|
|
9883
9950
|
constructor(data?: PartialMessage<GetFollowsFollowingResponse>) {
|
|
9884
9951
|
super()
|
|
@@ -9890,9 +9957,9 @@ export class GetFollowsFollowingResponse extends Message<GetFollowsFollowingResp
|
|
|
9890
9957
|
static readonly fields: FieldList = proto3.util.newFieldList(() => [
|
|
9891
9958
|
{
|
|
9892
9959
|
no: 1,
|
|
9893
|
-
name: '
|
|
9894
|
-
kind: '
|
|
9895
|
-
T:
|
|
9960
|
+
name: 'results',
|
|
9961
|
+
kind: 'message',
|
|
9962
|
+
T: FollowsFollowing,
|
|
9896
9963
|
repeated: true,
|
|
9897
9964
|
},
|
|
9898
9965
|
])
|
package/src/views/index.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { AtUri, INVALID_HANDLE, normalizeDatetimeAlways } from '@atproto/syntax'
|
|
|
2
2
|
import { mapDefined } from '@atproto/common'
|
|
3
3
|
import { ImageUriBuilder } from '../image/uri'
|
|
4
4
|
import { HydrationState } from '../hydration/hydrator'
|
|
5
|
+
import { ProfileViewerState as HydratorProfileViewerState } from '../hydration/actor'
|
|
5
6
|
import { ids } from '../lexicon/lexicons'
|
|
6
7
|
import {
|
|
7
8
|
ProfileViewDetailed,
|
|
@@ -107,9 +108,19 @@ export class Views {
|
|
|
107
108
|
if (!actor) return
|
|
108
109
|
const baseView = this.profile(did, state)
|
|
109
110
|
if (!baseView) return
|
|
111
|
+
const knownFollowersSkeleton = state.knownFollowers?.get(did)
|
|
112
|
+
const knownFollowers = knownFollowersSkeleton
|
|
113
|
+
? this.knownFollowers(knownFollowersSkeleton, state)
|
|
114
|
+
: undefined
|
|
110
115
|
const profileAggs = state.profileAggs?.get(did)
|
|
111
116
|
return {
|
|
112
117
|
...baseView,
|
|
118
|
+
viewer: baseView.viewer
|
|
119
|
+
? {
|
|
120
|
+
...baseView.viewer,
|
|
121
|
+
knownFollowers,
|
|
122
|
+
}
|
|
123
|
+
: undefined,
|
|
113
124
|
banner: actor.profile?.banner
|
|
114
125
|
? this.imgUriBuilder.getPresetUri(
|
|
115
126
|
'banner',
|
|
@@ -216,6 +227,19 @@ export class Views {
|
|
|
216
227
|
}
|
|
217
228
|
}
|
|
218
229
|
|
|
230
|
+
knownFollowers(
|
|
231
|
+
knownFollowers: Required<HydratorProfileViewerState>['knownFollowers'],
|
|
232
|
+
state: HydrationState,
|
|
233
|
+
) {
|
|
234
|
+
const followers = mapDefined(knownFollowers.followers, (did) => {
|
|
235
|
+
if (this.viewerBlockExists(did, state)) {
|
|
236
|
+
return undefined
|
|
237
|
+
}
|
|
238
|
+
return this.profileBasic(did, state)
|
|
239
|
+
})
|
|
240
|
+
return { count: knownFollowers.count, followers }
|
|
241
|
+
}
|
|
242
|
+
|
|
219
243
|
blockedProfileViewer(
|
|
220
244
|
did: string,
|
|
221
245
|
state: HydrationState,
|
|
@@ -18,6 +18,24 @@ Array [
|
|
|
18
18
|
"postsCount": 5,
|
|
19
19
|
"viewer": Object {
|
|
20
20
|
"blockedBy": false,
|
|
21
|
+
"knownFollowers": Object {
|
|
22
|
+
"count": 1,
|
|
23
|
+
"followers": Array [
|
|
24
|
+
Object {
|
|
25
|
+
"avatar": "https://bsky.public.url/img/avatar/plain/user(2)/cids(0)@jpeg",
|
|
26
|
+
"did": "user(1)",
|
|
27
|
+
"displayName": "bobby",
|
|
28
|
+
"handle": "bob.test",
|
|
29
|
+
"labels": Array [],
|
|
30
|
+
"viewer": Object {
|
|
31
|
+
"blockedBy": false,
|
|
32
|
+
"followedBy": "record(1)",
|
|
33
|
+
"following": "record(0)",
|
|
34
|
+
"muted": false,
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
},
|
|
21
39
|
"muted": false,
|
|
22
40
|
},
|
|
23
41
|
},
|
|
@@ -35,7 +53,7 @@ Array [
|
|
|
35
53
|
"muted": false,
|
|
36
54
|
},
|
|
37
55
|
},
|
|
38
|
-
"cid": "cids(
|
|
56
|
+
"cid": "cids(1)",
|
|
39
57
|
"indexedAt": "1970-01-01T00:00:00.000Z",
|
|
40
58
|
"labels": Array [],
|
|
41
59
|
"likeCount": 0,
|
|
@@ -46,7 +64,7 @@ Array [
|
|
|
46
64
|
},
|
|
47
65
|
"replyCount": 0,
|
|
48
66
|
"repostCount": 0,
|
|
49
|
-
"uri": "record(
|
|
67
|
+
"uri": "record(2)",
|
|
50
68
|
"viewer": Object {},
|
|
51
69
|
},
|
|
52
70
|
},
|
|
@@ -61,7 +79,7 @@ Array [
|
|
|
61
79
|
"muted": false,
|
|
62
80
|
},
|
|
63
81
|
},
|
|
64
|
-
"cid": "cids(
|
|
82
|
+
"cid": "cids(2)",
|
|
65
83
|
"indexedAt": "1970-01-01T00:00:00.000Z",
|
|
66
84
|
"labels": Array [],
|
|
67
85
|
"likeCount": 0,
|
|
@@ -70,19 +88,19 @@ Array [
|
|
|
70
88
|
"createdAt": "1970-01-01T00:00:00.000Z",
|
|
71
89
|
"reply": Object {
|
|
72
90
|
"parent": Object {
|
|
73
|
-
"cid": "cids(
|
|
74
|
-
"uri": "record(
|
|
91
|
+
"cid": "cids(4)",
|
|
92
|
+
"uri": "record(5)",
|
|
75
93
|
},
|
|
76
94
|
"root": Object {
|
|
77
|
-
"cid": "cids(
|
|
78
|
-
"uri": "record(
|
|
95
|
+
"cid": "cids(3)",
|
|
96
|
+
"uri": "record(4)",
|
|
79
97
|
},
|
|
80
98
|
},
|
|
81
99
|
"text": "thanks bob",
|
|
82
100
|
},
|
|
83
101
|
"replyCount": 0,
|
|
84
102
|
"repostCount": 1,
|
|
85
|
-
"uri": "record(
|
|
103
|
+
"uri": "record(3)",
|
|
86
104
|
"viewer": Object {},
|
|
87
105
|
},
|
|
88
106
|
"reply": Object {
|
|
@@ -98,19 +116,19 @@ Array [
|
|
|
98
116
|
"parent": Object {
|
|
99
117
|
"$type": "app.bsky.feed.defs#postView",
|
|
100
118
|
"author": Object {
|
|
101
|
-
"avatar": "https://bsky.public.url/img/avatar/plain/user(2)/cids(
|
|
119
|
+
"avatar": "https://bsky.public.url/img/avatar/plain/user(2)/cids(0)@jpeg",
|
|
102
120
|
"did": "user(1)",
|
|
103
121
|
"displayName": "bobby",
|
|
104
122
|
"handle": "bob.test",
|
|
105
123
|
"labels": Array [],
|
|
106
124
|
"viewer": Object {
|
|
107
125
|
"blockedBy": false,
|
|
108
|
-
"followedBy": "record(
|
|
109
|
-
"following": "record(
|
|
126
|
+
"followedBy": "record(1)",
|
|
127
|
+
"following": "record(0)",
|
|
110
128
|
"muted": false,
|
|
111
129
|
},
|
|
112
130
|
},
|
|
113
|
-
"cid": "cids(
|
|
131
|
+
"cid": "cids(4)",
|
|
114
132
|
"embed": Object {
|
|
115
133
|
"$type": "app.bsky.embed.images#view",
|
|
116
134
|
"images": Array [
|
|
@@ -124,17 +142,17 @@ Array [
|
|
|
124
142
|
"indexedAt": "1970-01-01T00:00:00.000Z",
|
|
125
143
|
"labels": Array [
|
|
126
144
|
Object {
|
|
127
|
-
"cid": "cids(
|
|
145
|
+
"cid": "cids(4)",
|
|
128
146
|
"cts": "1970-01-01T00:00:00.000Z",
|
|
129
147
|
"src": "did:example:labeler",
|
|
130
|
-
"uri": "record(
|
|
148
|
+
"uri": "record(5)",
|
|
131
149
|
"val": "test-label",
|
|
132
150
|
},
|
|
133
151
|
Object {
|
|
134
|
-
"cid": "cids(
|
|
152
|
+
"cid": "cids(4)",
|
|
135
153
|
"cts": "1970-01-01T00:00:00.000Z",
|
|
136
154
|
"src": "did:example:labeler",
|
|
137
|
-
"uri": "record(
|
|
155
|
+
"uri": "record(5)",
|
|
138
156
|
"val": "test-label-2",
|
|
139
157
|
},
|
|
140
158
|
],
|
|
@@ -160,19 +178,19 @@ Array [
|
|
|
160
178
|
},
|
|
161
179
|
"reply": Object {
|
|
162
180
|
"parent": Object {
|
|
163
|
-
"cid": "cids(
|
|
164
|
-
"uri": "record(
|
|
181
|
+
"cid": "cids(3)",
|
|
182
|
+
"uri": "record(4)",
|
|
165
183
|
},
|
|
166
184
|
"root": Object {
|
|
167
|
-
"cid": "cids(
|
|
168
|
-
"uri": "record(
|
|
185
|
+
"cid": "cids(3)",
|
|
186
|
+
"uri": "record(4)",
|
|
169
187
|
},
|
|
170
188
|
},
|
|
171
189
|
"text": "hear that label_me label_me_2",
|
|
172
190
|
},
|
|
173
191
|
"replyCount": 1,
|
|
174
192
|
"repostCount": 0,
|
|
175
|
-
"uri": "record(
|
|
193
|
+
"uri": "record(5)",
|
|
176
194
|
"viewer": Object {},
|
|
177
195
|
},
|
|
178
196
|
"root": Object {
|
|
@@ -186,7 +204,7 @@ Array [
|
|
|
186
204
|
"muted": false,
|
|
187
205
|
},
|
|
188
206
|
},
|
|
189
|
-
"cid": "cids(
|
|
207
|
+
"cid": "cids(3)",
|
|
190
208
|
"indexedAt": "1970-01-01T00:00:00.000Z",
|
|
191
209
|
"labels": Array [],
|
|
192
210
|
"likeCount": 3,
|
|
@@ -197,7 +215,7 @@ Array [
|
|
|
197
215
|
},
|
|
198
216
|
"replyCount": 2,
|
|
199
217
|
"repostCount": 1,
|
|
200
|
-
"uri": "record(
|
|
218
|
+
"uri": "record(4)",
|
|
201
219
|
"viewer": Object {},
|
|
202
220
|
},
|
|
203
221
|
},
|
|
@@ -374,7 +392,7 @@ Array [
|
|
|
374
392
|
"muted": false,
|
|
375
393
|
},
|
|
376
394
|
},
|
|
377
|
-
"cid": "cids(
|
|
395
|
+
"cid": "cids(3)",
|
|
378
396
|
"indexedAt": "1970-01-01T00:00:00.000Z",
|
|
379
397
|
"labels": Array [],
|
|
380
398
|
"likeCount": 3,
|
|
@@ -385,7 +403,7 @@ Array [
|
|
|
385
403
|
},
|
|
386
404
|
"replyCount": 2,
|
|
387
405
|
"repostCount": 1,
|
|
388
|
-
"uri": "record(
|
|
406
|
+
"uri": "record(4)",
|
|
389
407
|
"viewer": Object {},
|
|
390
408
|
},
|
|
391
409
|
},
|
|
@@ -452,7 +470,7 @@ Array [
|
|
|
452
470
|
},
|
|
453
471
|
},
|
|
454
472
|
Object {
|
|
455
|
-
"avatar": "https://bsky.public.url/img/avatar/plain/user(2)/cids(
|
|
473
|
+
"avatar": "https://bsky.public.url/img/avatar/plain/user(2)/cids(0)@jpeg",
|
|
456
474
|
"description": "hi im bob label_me",
|
|
457
475
|
"did": "user(1)",
|
|
458
476
|
"displayName": "bobby",
|
|
@@ -461,8 +479,8 @@ Array [
|
|
|
461
479
|
"labels": Array [],
|
|
462
480
|
"viewer": Object {
|
|
463
481
|
"blockedBy": false,
|
|
464
|
-
"followedBy": "record(
|
|
465
|
-
"following": "record(
|
|
482
|
+
"followedBy": "record(1)",
|
|
483
|
+
"following": "record(0)",
|
|
466
484
|
"muted": false,
|
|
467
485
|
},
|
|
468
486
|
},
|
|
@@ -4,7 +4,6 @@ import axios from 'axios'
|
|
|
4
4
|
|
|
5
5
|
describe('label hydration', () => {
|
|
6
6
|
let network: TestNetwork
|
|
7
|
-
let agent: AtpAgent
|
|
8
7
|
let pdsAgent: AtpAgent
|
|
9
8
|
let sc: SeedClient
|
|
10
9
|
|
|
@@ -17,7 +16,6 @@ describe('label hydration', () => {
|
|
|
17
16
|
network = await TestNetwork.create({
|
|
18
17
|
dbPostgresSchema: 'bsky_label_hydration',
|
|
19
18
|
})
|
|
20
|
-
agent = network.bsky.getClient()
|
|
21
19
|
pdsAgent = network.pds.getClient()
|
|
22
20
|
sc = network.getSeedClient()
|
|
23
21
|
await basicSeed(sc)
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { AtpAgent } from '@atproto/api'
|
|
2
2
|
import { TestNetwork, SeedClient, basicSeed } from '@atproto/dev-env'
|
|
3
|
-
import axios from 'axios'
|
|
4
3
|
|
|
5
4
|
describe('label hydration', () => {
|
|
6
5
|
let network: TestNetwork
|
|
7
|
-
let agent: AtpAgent
|
|
8
6
|
let pdsAgent: AtpAgent
|
|
9
7
|
let sc: SeedClient
|
|
10
8
|
|
|
@@ -17,7 +15,6 @@ describe('label hydration', () => {
|
|
|
17
15
|
network = await TestNetwork.create({
|
|
18
16
|
dbPostgresSchema: 'bsky_label_hydration',
|
|
19
17
|
})
|
|
20
|
-
agent = network.bsky.getClient()
|
|
21
18
|
pdsAgent = network.pds.getClient()
|
|
22
19
|
sc = network.getSeedClient()
|
|
23
20
|
await basicSeed(sc)
|