@atproto/pds 0.4.22 → 0.4.24
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 +16 -0
- package/dist/actor-store/blob/reader.d.ts +4 -0
- package/dist/actor-store/blob/reader.d.ts.map +1 -1
- package/dist/actor-store/blob/reader.js +9 -3
- package/dist/actor-store/blob/reader.js.map +1 -1
- package/dist/api/chat/index.d.ts +4 -0
- package/dist/api/chat/index.d.ts.map +1 -0
- package/dist/api/chat/index.js +91 -0
- package/dist/api/chat/index.js.map +1 -0
- package/dist/api/com/atproto/repo/putRecord.d.ts.map +1 -1
- package/dist/api/com/atproto/repo/putRecord.js +19 -1
- package/dist/api/com/atproto/repo/putRecord.js.map +1 -1
- 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/index.js +1 -1
- package/dist/lexicon/lexicons.d.ts +9 -4
- package/dist/lexicon/lexicons.d.ts.map +1 -1
- package/dist/lexicon/lexicons.js +13 -7
- package/dist/lexicon/lexicons.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/defs.d.ts +4 -4
- package/dist/lexicon/types/chat/bsky/convo/defs.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/defs.js +7 -7
- package/dist/lexicon/types/chat/bsky/convo/defs.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/sendMessage.d.ts +1 -1
- package/dist/lexicon/types/chat/bsky/convo/sendMessage.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/sendMessageBatch.d.ts +1 -1
- package/dist/lexicon/types/chat/bsky/convo/sendMessageBatch.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/moderation/getMessageContext.d.ts +2 -0
- package/dist/lexicon/types/chat/bsky/moderation/getMessageContext.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts +2 -1
- package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/defs.js.map +1 -1
- package/dist/pipethrough.d.ts +2 -0
- package/dist/pipethrough.d.ts.map +1 -1
- package/dist/pipethrough.js +12 -1
- package/dist/pipethrough.js.map +1 -1
- package/package.json +4 -4
- package/src/actor-store/blob/reader.ts +13 -4
- package/src/api/chat/index.ts +90 -0
- package/src/api/com/atproto/repo/putRecord.ts +34 -1
- package/src/api/index.ts +2 -0
- package/src/index.ts +1 -1
- package/src/lexicon/lexicons.ts +14 -7
- package/src/lexicon/types/chat/bsky/convo/defs.ts +6 -6
- package/src/lexicon/types/chat/bsky/convo/sendMessage.ts +1 -1
- package/src/lexicon/types/chat/bsky/convo/sendMessageBatch.ts +1 -1
- package/src/lexicon/types/chat/bsky/moderation/getMessageContext.ts +2 -0
- package/src/lexicon/types/tools/ozone/moderation/defs.ts +2 -0
- package/src/pipethrough.ts +17 -1
- package/tests/crud.test.ts +30 -0
- package/tests/server.test.ts +1 -1
package/src/lexicon/lexicons.ts
CHANGED
@@ -8306,24 +8306,24 @@ export const schemaDict = {
|
|
8306
8306
|
defs: {
|
8307
8307
|
messageRef: {
|
8308
8308
|
type: 'object',
|
8309
|
-
required: ['did', 'messageId'],
|
8309
|
+
required: ['did', 'messageId', 'convoId'],
|
8310
8310
|
properties: {
|
8311
8311
|
did: {
|
8312
8312
|
type: 'string',
|
8313
8313
|
format: 'did',
|
8314
8314
|
},
|
8315
|
+
convoId: {
|
8316
|
+
type: 'string',
|
8317
|
+
},
|
8315
8318
|
messageId: {
|
8316
8319
|
type: 'string',
|
8317
8320
|
},
|
8318
8321
|
},
|
8319
8322
|
},
|
8320
|
-
|
8323
|
+
messageInput: {
|
8321
8324
|
type: 'object',
|
8322
8325
|
required: ['text'],
|
8323
8326
|
properties: {
|
8324
|
-
id: {
|
8325
|
-
type: 'string',
|
8326
|
-
},
|
8327
8327
|
text: {
|
8328
8328
|
type: 'string',
|
8329
8329
|
maxLength: 10000,
|
@@ -8825,7 +8825,7 @@ export const schemaDict = {
|
|
8825
8825
|
},
|
8826
8826
|
message: {
|
8827
8827
|
type: 'ref',
|
8828
|
-
ref: 'lex:chat.bsky.convo.defs#
|
8828
|
+
ref: 'lex:chat.bsky.convo.defs#messageInput',
|
8829
8829
|
},
|
8830
8830
|
},
|
8831
8831
|
},
|
@@ -8854,6 +8854,7 @@ export const schemaDict = {
|
|
8854
8854
|
properties: {
|
8855
8855
|
items: {
|
8856
8856
|
type: 'array',
|
8857
|
+
maxLength: 100,
|
8857
8858
|
items: {
|
8858
8859
|
type: 'ref',
|
8859
8860
|
ref: 'lex:chat.bsky.convo.sendMessageBatch#batchItem',
|
@@ -8888,7 +8889,7 @@ export const schemaDict = {
|
|
8888
8889
|
},
|
8889
8890
|
message: {
|
8890
8891
|
type: 'ref',
|
8891
|
-
ref: 'lex:chat.bsky.convo.defs#
|
8892
|
+
ref: 'lex:chat.bsky.convo.defs#messageInput',
|
8892
8893
|
},
|
8893
8894
|
},
|
8894
8895
|
},
|
@@ -9038,6 +9039,11 @@ export const schemaDict = {
|
|
9038
9039
|
type: 'params',
|
9039
9040
|
required: ['messageId'],
|
9040
9041
|
properties: {
|
9042
|
+
convoId: {
|
9043
|
+
type: 'string',
|
9044
|
+
description:
|
9045
|
+
'Conversation that the message is from. NOTE: this field will eventually be required.',
|
9046
|
+
},
|
9041
9047
|
messageId: {
|
9042
9048
|
type: 'string',
|
9043
9049
|
},
|
@@ -9340,6 +9346,7 @@ export const schemaDict = {
|
|
9340
9346
|
refs: [
|
9341
9347
|
'lex:com.atproto.admin.defs#repoRef',
|
9342
9348
|
'lex:com.atproto.repo.strongRef',
|
9349
|
+
'lex:chat.bsky.convo.defs#messageRef',
|
9343
9350
|
],
|
9344
9351
|
},
|
9345
9352
|
subjectBlobCids: {
|
@@ -11,6 +11,7 @@ import * as ChatBskyActorDefs from '../actor/defs'
|
|
11
11
|
|
12
12
|
export interface MessageRef {
|
13
13
|
did: string
|
14
|
+
convoId: string
|
14
15
|
messageId: string
|
15
16
|
[k: string]: unknown
|
16
17
|
}
|
@@ -27,8 +28,7 @@ export function validateMessageRef(v: unknown): ValidationResult {
|
|
27
28
|
return lexicons.validate('chat.bsky.convo.defs#messageRef', v)
|
28
29
|
}
|
29
30
|
|
30
|
-
export interface
|
31
|
-
id?: string
|
31
|
+
export interface MessageInput {
|
32
32
|
text: string
|
33
33
|
/** Annotations of text (mentions, URLs, hashtags, etc) */
|
34
34
|
facets?: AppBskyRichtextFacet.Main[]
|
@@ -36,16 +36,16 @@ export interface Message {
|
|
36
36
|
[k: string]: unknown
|
37
37
|
}
|
38
38
|
|
39
|
-
export function
|
39
|
+
export function isMessageInput(v: unknown): v is MessageInput {
|
40
40
|
return (
|
41
41
|
isObj(v) &&
|
42
42
|
hasProp(v, '$type') &&
|
43
|
-
v.$type === 'chat.bsky.convo.defs#
|
43
|
+
v.$type === 'chat.bsky.convo.defs#messageInput'
|
44
44
|
)
|
45
45
|
}
|
46
46
|
|
47
|
-
export function
|
48
|
-
return lexicons.validate('chat.bsky.convo.defs#
|
47
|
+
export function validateMessageInput(v: unknown): ValidationResult {
|
48
|
+
return lexicons.validate('chat.bsky.convo.defs#messageInput', v)
|
49
49
|
}
|
50
50
|
|
51
51
|
export interface MessageView {
|
@@ -10,6 +10,8 @@ import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server'
|
|
10
10
|
import * as ChatBskyConvoDefs from '../convo/defs'
|
11
11
|
|
12
12
|
export interface QueryParams {
|
13
|
+
/** Conversation that the message is from. NOTE: this field will eventually be required. */
|
14
|
+
convoId?: string
|
13
15
|
messageId: string
|
14
16
|
before: number
|
15
17
|
after: number
|
@@ -7,6 +7,7 @@ import { isObj, hasProp } from '../../../../util'
|
|
7
7
|
import { CID } from 'multiformats/cid'
|
8
8
|
import * as ComAtprotoAdminDefs from '../../../com/atproto/admin/defs'
|
9
9
|
import * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef'
|
10
|
+
import * as ChatBskyConvoDefs from '../../../chat/bsky/convo/defs'
|
10
11
|
import * as ComAtprotoModerationDefs from '../../../com/atproto/moderation/defs'
|
11
12
|
import * as ComAtprotoServerDefs from '../../../com/atproto/server/defs'
|
12
13
|
import * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs'
|
@@ -32,6 +33,7 @@ export interface ModEventView {
|
|
32
33
|
subject:
|
33
34
|
| ComAtprotoAdminDefs.RepoRef
|
34
35
|
| ComAtprotoRepoStrongRef.Main
|
36
|
+
| ChatBskyConvoDefs.MessageRef
|
35
37
|
| { $type: string; [k: string]: unknown }
|
36
38
|
subjectBlobCids: string[]
|
37
39
|
createdBy: string
|
package/src/pipethrough.ts
CHANGED
@@ -3,7 +3,7 @@ import * as ui8 from 'uint8arrays'
|
|
3
3
|
import net from 'node:net'
|
4
4
|
import stream from 'node:stream'
|
5
5
|
import webStream from 'node:stream/web'
|
6
|
-
import { jsonToLex } from '@atproto/lexicon'
|
6
|
+
import { LexValue, jsonToLex, stringifyLex } from '@atproto/lexicon'
|
7
7
|
import {
|
8
8
|
CatchallHandler,
|
9
9
|
HandlerPipeThrough,
|
@@ -45,6 +45,22 @@ export const pipethrough = async (
|
|
45
45
|
return parseProxyRes(res)
|
46
46
|
}
|
47
47
|
|
48
|
+
export const pipethroughProcedure = async (
|
49
|
+
ctx: AppContext,
|
50
|
+
req: express.Request,
|
51
|
+
requester: string | null,
|
52
|
+
body?: LexValue,
|
53
|
+
): Promise<HandlerPipeThrough> => {
|
54
|
+
const { url, aud } = await formatUrlAndAud(ctx, req)
|
55
|
+
const headers = await formatHeaders(ctx, req, aud, requester)
|
56
|
+
const encodedBody = body
|
57
|
+
? new TextEncoder().encode(stringifyLex(body))
|
58
|
+
: undefined
|
59
|
+
const reqInit = formatReqInit(req, headers, encodedBody)
|
60
|
+
const res = await makeRequest(url, reqInit)
|
61
|
+
return parseProxyRes(res)
|
62
|
+
}
|
63
|
+
|
48
64
|
// Request setup/formatting
|
49
65
|
// -------------------
|
50
66
|
|
package/tests/crud.test.ts
CHANGED
@@ -517,6 +517,36 @@ describe('crud operations', () => {
|
|
517
517
|
description: 'Dog lover',
|
518
518
|
})
|
519
519
|
})
|
520
|
+
|
521
|
+
// @TODO remove after migrating legacy blobs
|
522
|
+
it('updates a legacy blob ref when updating profile', async () => {
|
523
|
+
const { repo } = bobAgent.api.com.atproto
|
524
|
+
const file = await fs.readFile(
|
525
|
+
'../dev-env/src/seed/img/key-portrait-small.jpg',
|
526
|
+
)
|
527
|
+
const uploadedRes = await repo.uploadBlob(file, {
|
528
|
+
encoding: 'image/jpeg',
|
529
|
+
})
|
530
|
+
|
531
|
+
await repo.putRecord({
|
532
|
+
...profilePath,
|
533
|
+
repo: bob.did,
|
534
|
+
record: {
|
535
|
+
displayName: 'Robert',
|
536
|
+
avatar: BlobRef.fromJsonRef({
|
537
|
+
mimeType: uploadedRes.data.blob.mimeType,
|
538
|
+
cid: uploadedRes.data.blob.ref.toString(),
|
539
|
+
}),
|
540
|
+
},
|
541
|
+
})
|
542
|
+
|
543
|
+
const got = await repo.getRecord({
|
544
|
+
...profilePath,
|
545
|
+
repo: bob.did,
|
546
|
+
})
|
547
|
+
const gotAvatar = got.data.value['avatar'] as BlobRef
|
548
|
+
expect(gotAvatar.original).toEqual(uploadedRes.data.blob.original)
|
549
|
+
})
|
520
550
|
})
|
521
551
|
|
522
552
|
// Validation
|
package/tests/server.test.ts
CHANGED