@atproto/bsky 0.0.272 → 0.0.273
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/api/app/bsky/graph/getFollowers.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getFollowers.js +19 -1
- package/dist/api/app/bsky/graph/getFollowers.js.map +1 -1
- package/dist/api/blob-dispatcher.d.ts.map +1 -1
- package/dist/api/blob-dispatcher.js +6 -1
- package/dist/api/blob-dispatcher.js.map +1 -1
- package/dist/lexicons/app/bsky/embed/video.defs.d.ts +1 -1
- package/dist/lexicons/app/bsky/embed/video.defs.js +1 -1
- package/dist/lexicons/app/bsky/embed/video.defs.js.map +1 -1
- package/package.json +9 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @atproto/bsky
|
|
2
2
|
|
|
3
|
+
## 0.0.273
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#5356](https://github.com/bluesky-social/atproto/pull/5356) [`aa72025`](https://github.com/bluesky-social/atproto/commit/aa720259cd62362f5ea0a6a8314a42cdc24e6681) Thanks [@rafaeleyng](https://github.com/rafaeleyng)! - Refill follower pages after filtering blocked, taken-down, or deactivated accounts.
|
|
8
|
+
|
|
9
|
+
- [#5359](https://github.com/bluesky-social/atproto/pull/5359) [`aadb103`](https://github.com/bluesky-social/atproto/commit/aadb10349497d7c6b6ce5641dbbb1fd940dd5b12) Thanks [@rafaeleyng](https://github.com/rafaeleyng)! - Remove timing races from WebSocket, background indexing, firehose, and Ozone materialized-view tests.
|
|
10
|
+
|
|
11
|
+
- [#5351](https://github.com/bluesky-social/atproto/pull/5351) [`063dba4`](https://github.com/bluesky-social/atproto/commit/063dba438f8edab8ccf9650559ba0839f20ca639) Thanks [@amckinley](https://github.com/amckinley)! - Disable blob proxy retries for HTTP 429 responses while retaining the configured retry count for other transient failures.
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [[`b2de0ee`](https://github.com/bluesky-social/atproto/commit/b2de0ee1ccb70fac69be90037751ea30daa37e3f), [`aadb103`](https://github.com/bluesky-social/atproto/commit/aadb10349497d7c6b6ce5641dbbb1fd940dd5b12)]:
|
|
14
|
+
- @atproto/api@0.20.39
|
|
15
|
+
- @atproto/sync@0.4.3
|
|
16
|
+
- @atproto/xrpc-server@0.12.3
|
|
17
|
+
- @atproto-labs/xrpc-utils@0.1.16
|
|
18
|
+
|
|
3
19
|
## 0.0.272
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFollowers.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/graph/getFollowers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAA;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAkBxD,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"getFollowers.d.ts","sourceRoot":"","sources":["../../../../../src/api/app/bsky/graph/getFollowers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAA;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAkBxD,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QAoDvD"}
|
|
@@ -19,14 +19,32 @@ export default function (server, ctx) {
|
|
|
19
19
|
skipViewerBlocks,
|
|
20
20
|
});
|
|
21
21
|
const result = await getFollowers({ ...params, hydrateCtx }, ctx);
|
|
22
|
+
const followers = result.followers;
|
|
23
|
+
let cursor = result.cursor;
|
|
24
|
+
for (let fetches = 1; fetches < MAX_PAGE_FILL_FETCHES &&
|
|
25
|
+
cursor &&
|
|
26
|
+
followers.length < params.limit; fetches++) {
|
|
27
|
+
const previousCursor = cursor;
|
|
28
|
+
const page = await getFollowers({
|
|
29
|
+
...params,
|
|
30
|
+
cursor,
|
|
31
|
+
limit: params.limit - followers.length,
|
|
32
|
+
hydrateCtx,
|
|
33
|
+
}, ctx);
|
|
34
|
+
followers.push(...page.followers);
|
|
35
|
+
cursor = page.cursor;
|
|
36
|
+
if (cursor === previousCursor)
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
22
39
|
return {
|
|
23
40
|
encoding: 'application/json',
|
|
24
|
-
body: result,
|
|
41
|
+
body: { ...result, followers, cursor },
|
|
25
42
|
headers: resHeaders({ labelers: hydrateCtx.labelers }),
|
|
26
43
|
};
|
|
27
44
|
},
|
|
28
45
|
});
|
|
29
46
|
}
|
|
47
|
+
const MAX_PAGE_FILL_FETCHES = 10;
|
|
30
48
|
const skeleton = async (input) => {
|
|
31
49
|
const { params, ctx } = input;
|
|
32
50
|
const [subjectDid] = await ctx.hydrator.actor.getDidsDefined([params.actor]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFollowers.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/graph/getFollowers.ts"],"names":[],"mappings":"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","sourcesContent":["import { mapDefined } from '@atproto/common'\nimport type { AtUriString, DidString } from '@atproto/syntax'\nimport { InvalidRequestError, type Server } from '@atproto/xrpc-server'\nimport type { AppContext } from '../../../../context.js'\nimport {\n type HydrateCtx,\n type Hydrator,\n mergeStates,\n} from '../../../../hydration/hydrator.js'\nimport { app } from '../../../../lexicons/index.js'\nimport {\n type HydrationFnInput,\n type PresentationFnInput,\n type RulesFnInput,\n type SkeletonFnInput,\n createPipeline,\n} from '../../../../pipeline.js'\nimport { uriToDid as didFromUri } from '../../../../util/uris.js'\nimport type { Views } from '../../../../views/index.js'\nimport { clearlyBadCursor, resHeaders } from '../../../util.js'\n\nexport default function (server: Server, ctx: AppContext) {\n const getFollowers = createPipeline(\n skeleton,\n hydration,\n noBlocks,\n presentation,\n )\n server.add(app.bsky.graph.getFollowers, {\n auth: ctx.authVerifier.optionalStandardOrRole,\n handler: async ({ params, auth, req }) => {\n const { viewer, includeTakedowns, skipViewerBlocks } =\n ctx.authVerifier.parseCreds(auth)\n const labelers = ctx.reqLabelers(req)\n const hydrateCtx = await ctx.hydrator.createContext({\n labelers,\n viewer,\n includeTakedowns,\n skipViewerBlocks,\n })\n\n const result = await getFollowers({ ...params, hydrateCtx }, ctx)\n\n return {\n encoding: 'application/json',\n body: result,\n headers: resHeaders({ labelers: hydrateCtx.labelers }),\n }\n },\n })\n}\n\nconst skeleton = async (\n input: SkeletonFnInput<Context, Params>,\n): Promise<SkeletonState> => {\n const { params, ctx } = input\n const [subjectDid] = await ctx.hydrator.actor.getDidsDefined([params.actor])\n if (!subjectDid) {\n throw new InvalidRequestError(`Actor not found: ${params.actor}`)\n }\n if (clearlyBadCursor(params.cursor)) {\n return { subjectDid, followUris: [] }\n }\n const { followers, cursor } = await ctx.hydrator.graph.getActorFollowers({\n did: subjectDid,\n cursor: params.cursor,\n limit: params.limit,\n sort: params.sort,\n })\n return {\n subjectDid,\n followUris: followers.map((f) => f.uri as AtUriString),\n cursor: cursor || undefined,\n }\n}\n\nconst hydration = async (\n input: HydrationFnInput<Context, Params, SkeletonState>,\n) => {\n const { ctx, params, skeleton } = input\n const { followUris, subjectDid } = skeleton\n const followState = await ctx.hydrator.hydrateFollows(\n followUris,\n params.hydrateCtx,\n )\n const dids = [subjectDid]\n if (followState.follows) {\n for (const [uri, follow] of followState.follows) {\n if (follow) {\n dids.push(didFromUri(uri))\n }\n }\n }\n const profileState = await ctx.hydrator.hydrateProfiles(\n dids,\n params.hydrateCtx,\n )\n return mergeStates(followState, profileState)\n}\n\nconst noBlocks = (input: RulesFnInput<Context, Params, SkeletonState>) => {\n const { skeleton, params, hydration, ctx } = input\n const viewer = params.hydrateCtx.viewer\n skeleton.followUris = skeleton.followUris.filter((followUri) => {\n const followerDid = didFromUri(followUri)\n return (\n !hydration.followBlocks?.get(followUri) &&\n (!viewer || !ctx.views.viewerBlockExists(followerDid, hydration))\n )\n })\n return skeleton\n}\n\nconst presentation = (\n input: PresentationFnInput<Context, Params, SkeletonState>,\n) => {\n const { ctx, hydration, skeleton, params } = input\n const { subjectDid, followUris, cursor } = skeleton\n const isNoHosted = (did: DidString) =>\n ctx.views.actorIsNoHosted(did, hydration)\n\n const subject = ctx.views.profile(subjectDid, hydration)\n if (\n !subject ||\n (!params.hydrateCtx.includeTakedowns && isNoHosted(subjectDid))\n ) {\n throw new InvalidRequestError(`Actor not found: ${params.actor}`)\n }\n\n const followers = mapDefined(followUris, (followUri) => {\n const followerDid = didFromUri(followUri)\n if (!params.hydrateCtx.includeTakedowns && isNoHosted(followerDid)) {\n return\n }\n return ctx.views.profile(didFromUri(followUri), hydration)\n })\n\n return { followers, subject, cursor }\n}\n\ntype Context = {\n hydrator: Hydrator\n views: Views\n}\n\ntype Params = app.bsky.graph.getFollowers.$Params & {\n hydrateCtx: HydrateCtx\n}\n\ntype SkeletonState = {\n subjectDid: DidString\n followUris: AtUriString[]\n cursor?: string\n}\n"]}
|
|
1
|
+
{"version":3,"file":"getFollowers.js","sourceRoot":"","sources":["../../../../../src/api/app/bsky/graph/getFollowers.ts"],"names":[],"mappings":"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","sourcesContent":["import { mapDefined } from '@atproto/common'\nimport type { AtUriString, DidString } from '@atproto/syntax'\nimport { InvalidRequestError, type Server } from '@atproto/xrpc-server'\nimport type { AppContext } from '../../../../context.js'\nimport {\n type HydrateCtx,\n type Hydrator,\n mergeStates,\n} from '../../../../hydration/hydrator.js'\nimport { app } from '../../../../lexicons/index.js'\nimport {\n type HydrationFnInput,\n type PresentationFnInput,\n type RulesFnInput,\n type SkeletonFnInput,\n createPipeline,\n} from '../../../../pipeline.js'\nimport { uriToDid as didFromUri } from '../../../../util/uris.js'\nimport type { Views } from '../../../../views/index.js'\nimport { clearlyBadCursor, resHeaders } from '../../../util.js'\n\nexport default function (server: Server, ctx: AppContext) {\n const getFollowers = createPipeline(\n skeleton,\n hydration,\n noBlocks,\n presentation,\n )\n server.add(app.bsky.graph.getFollowers, {\n auth: ctx.authVerifier.optionalStandardOrRole,\n handler: async ({ params, auth, req }) => {\n const { viewer, includeTakedowns, skipViewerBlocks } =\n ctx.authVerifier.parseCreds(auth)\n const labelers = ctx.reqLabelers(req)\n const hydrateCtx = await ctx.hydrator.createContext({\n labelers,\n viewer,\n includeTakedowns,\n skipViewerBlocks,\n })\n\n const result = await getFollowers({ ...params, hydrateCtx }, ctx)\n const followers = result.followers\n let cursor = result.cursor\n for (\n let fetches = 1;\n fetches < MAX_PAGE_FILL_FETCHES &&\n cursor &&\n followers.length < params.limit;\n fetches++\n ) {\n const previousCursor = cursor\n const page = await getFollowers(\n {\n ...params,\n cursor,\n limit: params.limit - followers.length,\n hydrateCtx,\n },\n ctx,\n )\n followers.push(...page.followers)\n cursor = page.cursor\n if (cursor === previousCursor) break\n }\n\n return {\n encoding: 'application/json',\n body: { ...result, followers, cursor },\n headers: resHeaders({ labelers: hydrateCtx.labelers }),\n }\n },\n })\n}\n\nconst MAX_PAGE_FILL_FETCHES = 10\n\nconst skeleton = async (\n input: SkeletonFnInput<Context, Params>,\n): Promise<SkeletonState> => {\n const { params, ctx } = input\n const [subjectDid] = await ctx.hydrator.actor.getDidsDefined([params.actor])\n if (!subjectDid) {\n throw new InvalidRequestError(`Actor not found: ${params.actor}`)\n }\n if (clearlyBadCursor(params.cursor)) {\n return { subjectDid, followUris: [] }\n }\n const { followers, cursor } = await ctx.hydrator.graph.getActorFollowers({\n did: subjectDid,\n cursor: params.cursor,\n limit: params.limit,\n sort: params.sort,\n })\n return {\n subjectDid,\n followUris: followers.map((f) => f.uri as AtUriString),\n cursor: cursor || undefined,\n }\n}\n\nconst hydration = async (\n input: HydrationFnInput<Context, Params, SkeletonState>,\n) => {\n const { ctx, params, skeleton } = input\n const { followUris, subjectDid } = skeleton\n const followState = await ctx.hydrator.hydrateFollows(\n followUris,\n params.hydrateCtx,\n )\n const dids = [subjectDid]\n if (followState.follows) {\n for (const [uri, follow] of followState.follows) {\n if (follow) {\n dids.push(didFromUri(uri))\n }\n }\n }\n const profileState = await ctx.hydrator.hydrateProfiles(\n dids,\n params.hydrateCtx,\n )\n return mergeStates(followState, profileState)\n}\n\nconst noBlocks = (input: RulesFnInput<Context, Params, SkeletonState>) => {\n const { skeleton, params, hydration, ctx } = input\n const viewer = params.hydrateCtx.viewer\n skeleton.followUris = skeleton.followUris.filter((followUri) => {\n const followerDid = didFromUri(followUri)\n return (\n !hydration.followBlocks?.get(followUri) &&\n (!viewer || !ctx.views.viewerBlockExists(followerDid, hydration))\n )\n })\n return skeleton\n}\n\nconst presentation = (\n input: PresentationFnInput<Context, Params, SkeletonState>,\n) => {\n const { ctx, hydration, skeleton, params } = input\n const { subjectDid, followUris, cursor } = skeleton\n const isNoHosted = (did: DidString) =>\n ctx.views.actorIsNoHosted(did, hydration)\n\n const subject = ctx.views.profile(subjectDid, hydration)\n if (\n !subject ||\n (!params.hydrateCtx.includeTakedowns && isNoHosted(subjectDid))\n ) {\n throw new InvalidRequestError(`Actor not found: ${params.actor}`)\n }\n\n const followers = mapDefined(followUris, (followUri) => {\n const followerDid = didFromUri(followUri)\n if (!params.hydrateCtx.includeTakedowns && isNoHosted(followerDid)) {\n return\n }\n return ctx.views.profile(didFromUri(followUri), hydration)\n })\n\n return { followers, subject, cursor }\n}\n\ntype Context = {\n hydrator: Hydrator\n views: Views\n}\n\ntype Params = app.bsky.graph.getFollowers.$Params & {\n hydrateCtx: HydrateCtx\n}\n\ntype SkeletonState = {\n subjectDid: DidString\n followUris: AtUriString[]\n cursor?: string\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blob-dispatcher.d.ts","sourceRoot":"","sources":["../../src/api/blob-dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,UAAU,EAAsB,MAAM,QAAQ,CAAA;AAEnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAGhD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,YAAY,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"blob-dispatcher.d.ts","sourceRoot":"","sources":["../../src/api/blob-dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,UAAU,EAAsB,MAAM,QAAQ,CAAA;AAEnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAGhD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,YAAY,GAAG,UAAU,CA2ClE"}
|
|
@@ -27,9 +27,14 @@ export function createBlobDispatcher(cfg) {
|
|
|
27
27
|
maxRedirections: 10,
|
|
28
28
|
throwOnMaxRedirect: true,
|
|
29
29
|
}), interceptors.retry({
|
|
30
|
-
statusCodes: [...RETRYABLE_HTTP_STATUS_CODES],
|
|
30
|
+
statusCodes: [...RETRYABLE_HTTP_STATUS_CODES].filter((statusCode) => statusCode !== 429),
|
|
31
31
|
methods: ['GET', 'HEAD'],
|
|
32
32
|
maxRetries: cfg.proxyMaxRetries,
|
|
33
|
+
}), interceptors.retry({
|
|
34
|
+
statusCodes: [429],
|
|
35
|
+
errorCodes: [],
|
|
36
|
+
methods: ['GET', 'HEAD'],
|
|
37
|
+
maxRetries: 0,
|
|
33
38
|
}));
|
|
34
39
|
}
|
|
35
40
|
//# sourceMappingURL=blob-dispatcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blob-dispatcher.js","sourceRoot":"","sources":["../../src/api/blob-dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAmB,IAAI,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAErE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AAE9D,MAAM,UAAU,oBAAoB,CAAC,GAAiB;IACpD,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC;QAC/B,OAAO,EAAE,GAAG,CAAC,eAAe,EAAE,uBAAuB;QACrD,cAAc,EAAE,GAAG,CAAC,mBAAmB;QACvC,eAAe,EAAE,GAAG,CAAC,oBAAoB;QACzC,WAAW,EAAE,GAAG,CAAC,gBAAgB;QACjC,OAAO,EAAE,GAAG,CAAC,qBAAqB;YAChC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;gBACf,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAC1B,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;gBAClD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAC1B,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,GAAG,CAAC,CAAA;gBACrD,CAAC;gBACD,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,KAAK,EAAE,CAAC;oBACpC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;gBAC7D,CAAC;gBACD,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAC/B,CAAC;QACL,OAAO,EAAE;YACP,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa;SAC9D;KACF,CAAC,CAAA;IAEF,OAAO,cAAc,CAAC,OAAO,CAC3B,YAAY,CAAC,QAAQ,CAAC;QACpB,eAAe,EAAE,EAAE;QACnB,kBAAkB,EAAE,IAAI;KACzB,CAAC,EACF,YAAY,CAAC,KAAK,CAAC;QACjB,WAAW,EAAE,CAAC,GAAG,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"blob-dispatcher.js","sourceRoot":"","sources":["../../src/api/blob-dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAmB,IAAI,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAErE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AAE9D,MAAM,UAAU,oBAAoB,CAAC,GAAiB;IACpD,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC;QAC/B,OAAO,EAAE,GAAG,CAAC,eAAe,EAAE,uBAAuB;QACrD,cAAc,EAAE,GAAG,CAAC,mBAAmB;QACvC,eAAe,EAAE,GAAG,CAAC,oBAAoB;QACzC,WAAW,EAAE,GAAG,CAAC,gBAAgB;QACjC,OAAO,EAAE,GAAG,CAAC,qBAAqB;YAChC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;gBACf,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAC1B,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;gBAClD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAC1B,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,GAAG,CAAC,CAAA;gBACrD,CAAC;gBACD,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,KAAK,EAAE,CAAC;oBACpC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;gBAC7D,CAAC;gBACD,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAC/B,CAAC;QACL,OAAO,EAAE;YACP,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa;SAC9D;KACF,CAAC,CAAA;IAEF,OAAO,cAAc,CAAC,OAAO,CAC3B,YAAY,CAAC,QAAQ,CAAC;QACpB,eAAe,EAAE,EAAE;QACnB,kBAAkB,EAAE,IAAI;KACzB,CAAC,EACF,YAAY,CAAC,KAAK,CAAC;QACjB,WAAW,EAAE,CAAC,GAAG,2BAA2B,CAAC,CAAC,MAAM,CAClD,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,KAAK,GAAG,CACnC;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;QACxB,UAAU,EAAE,GAAG,CAAC,eAAe;KAChC,CAAC,EACF,YAAY,CAAC,KAAK,CAAC;QACjB,WAAW,EAAE,CAAC,GAAG,CAAC;QAClB,UAAU,EAAE,EAAE;QACd,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;QACxB,UAAU,EAAE,CAAC;KACd,CAAC,CACH,CAAA;AACH,CAAC","sourcesContent":["import { Agent, type Dispatcher, Pool, interceptors } from 'undici'\nimport { isUnicastIp, unicastLookup } from '@atproto-labs/fetch-node'\nimport type { ServerConfig } from '../config.js'\nimport { RETRYABLE_HTTP_STATUS_CODES } from '../util/retry.js'\n\nexport function createBlobDispatcher(cfg: ServerConfig): Dispatcher {\n const baseDispatcher = new Agent({\n allowH2: cfg.proxyAllowHTTP2, // This is experimental\n headersTimeout: cfg.proxyHeadersTimeout,\n maxResponseSize: cfg.proxyMaxResponseSize,\n bodyTimeout: cfg.proxyBodyTimeout,\n factory: cfg.disableSsrfProtection\n ? undefined\n : (origin, opts) => {\n const { protocol, hostname } =\n origin instanceof URL ? origin : new URL(origin)\n if (protocol !== 'https:') {\n throw new Error(`Forbidden protocol \"${protocol}\"`)\n }\n if (isUnicastIp(hostname) === false) {\n throw new Error('Hostname resolved to non-unicast address')\n }\n return new Pool(origin, opts)\n },\n connect: {\n lookup: cfg.disableSsrfProtection ? undefined : unicastLookup,\n },\n })\n\n return baseDispatcher.compose(\n interceptors.redirect({\n maxRedirections: 10,\n throwOnMaxRedirect: true,\n }),\n interceptors.retry({\n statusCodes: [...RETRYABLE_HTTP_STATUS_CODES].filter(\n (statusCode) => statusCode !== 429,\n ),\n methods: ['GET', 'HEAD'],\n maxRetries: cfg.proxyMaxRetries,\n }),\n interceptors.retry({\n statusCodes: [429],\n errorCodes: [],\n methods: ['GET', 'HEAD'],\n maxRetries: 0,\n }),\n )\n}\n"]}
|
|
@@ -6,7 +6,7 @@ export { $nsid };
|
|
|
6
6
|
type Main = {
|
|
7
7
|
$type?: 'app.bsky.embed.video';
|
|
8
8
|
/**
|
|
9
|
-
* The mp4 video file. May be up to
|
|
9
|
+
* The mp4 video file. May be up to 300mb, formerly limited to 100mb.
|
|
10
10
|
*/
|
|
11
11
|
video: l.BlobRef;
|
|
12
12
|
captions?: Caption[];
|
|
@@ -7,7 +7,7 @@ const $nsid = 'app.bsky.embed.video';
|
|
|
7
7
|
export { $nsid };
|
|
8
8
|
const main = /*#__PURE__*/ l.typedObject($nsid, 'main',
|
|
9
9
|
/*#__PURE__*/ l.object({
|
|
10
|
-
video: /*#__PURE__*/ l.blob({ accept: ['video/mp4'], maxSize:
|
|
10
|
+
video: /*#__PURE__*/ l.blob({ accept: ['video/mp4'], maxSize: 300000000 }),
|
|
11
11
|
captions: /*#__PURE__*/ l.optional(
|
|
12
12
|
/*#__PURE__*/ l.array(
|
|
13
13
|
/*#__PURE__*/ l.ref((() => caption)), { maxLength: 20 })),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video.defs.js","sourceRoot":"","sources":["../../../../../src/lexicons/app/bsky/embed/video.defs.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nimport { l } from '@atproto/lex'\nimport * as EmbedDefs from './defs.defs.js'\n\nconst $nsid = 'app.bsky.embed.video'\n\ntype $nsid = typeof $nsid\n\nexport { $nsid }\n\ntype Main = {\n $type?: 'app.bsky.embed.video'\n\n /**\n * The mp4 video file. May be up to
|
|
1
|
+
{"version":3,"file":"video.defs.js","sourceRoot":"","sources":["../../../../../src/lexicons/app/bsky/embed/video.defs.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nimport { l } from '@atproto/lex'\nimport * as EmbedDefs from './defs.defs.js'\n\nconst $nsid = 'app.bsky.embed.video'\n\ntype $nsid = typeof $nsid\n\nexport { $nsid }\n\ntype Main = {\n $type?: 'app.bsky.embed.video'\n\n /**\n * The mp4 video file. May be up to 300mb, formerly limited to 100mb.\n */\n video: l.BlobRef\n captions?: Caption[]\n\n /**\n * Alt text description of the video, for accessibility.\n */\n alt?: string\n aspectRatio?: EmbedDefs.AspectRatio\n\n /**\n * A hint to the client about how to present the video.\n */\n presentation?: 'default' | 'gif' | l.UnknownString\n}\n\nexport type { Main }\n\nconst main = /*#__PURE__*/ l.typedObject<Main>(\n $nsid,\n 'main',\n /*#__PURE__*/ l.object({\n video: /*#__PURE__*/ l.blob({ accept: ['video/mp4'], maxSize: 300000000 }),\n captions: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.array(\n /*#__PURE__*/ l.ref<Caption>((() => caption) as any),\n { maxLength: 20 },\n ),\n ),\n alt: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ maxGraphemes: 1000, maxLength: 10000 }),\n ),\n aspectRatio: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.ref<EmbedDefs.AspectRatio>(\n (() => EmbedDefs.aspectRatio) as any,\n ),\n ),\n presentation: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string<{ knownValues: ['default', 'gif'] }>(),\n ),\n }),\n)\n\nexport { main }\n\nconst $type = $nsid\n\ntype $type = typeof $type\n\nexport { $type }\n\nexport const $isTypeOf = /*#__PURE__*/ main.isTypeOf.bind(main)\nexport const $build = /*#__PURE__*/ main.build.bind(main)\nexport const $assert = /*#__PURE__*/ main.assert.bind(main)\nexport const $check = /*#__PURE__*/ main.check.bind(main)\nexport const $cast = /*#__PURE__*/ main.cast.bind(main)\nexport const $ifMatches = /*#__PURE__*/ main.ifMatches.bind(main)\nexport const $matches = /*#__PURE__*/ main.matches.bind(main)\nexport const $parse = /*#__PURE__*/ main.parse.bind(main)\nexport const $safeParse = /*#__PURE__*/ main.safeParse.bind(main)\nexport const $validate = /*#__PURE__*/ main.validate.bind(main)\nexport const $safeValidate = /*#__PURE__*/ main.safeValidate.bind(main)\n\ntype Caption = {\n $type?: 'app.bsky.embed.video#caption'\n lang: l.LanguageString\n file: l.BlobRef\n}\n\nexport type { Caption }\n\nconst caption = /*#__PURE__*/ l.typedObject<Caption>(\n $nsid,\n 'caption',\n /*#__PURE__*/ l.object({\n lang: /*#__PURE__*/ l.string({ format: 'language' }),\n file: /*#__PURE__*/ l.blob({ accept: ['text/vtt'], maxSize: 20000 }),\n }),\n)\n\nexport { caption }\n\ntype View = {\n $type?: 'app.bsky.embed.video#view'\n cid: l.CidString\n playlist: l.UriString\n thumbnail?: l.UriString\n alt?: string\n aspectRatio?: EmbedDefs.AspectRatio\n\n /**\n * A hint to the client about how to present the video.\n */\n presentation?: 'default' | 'gif' | l.UnknownString\n}\n\nexport type { View }\n\nconst view = /*#__PURE__*/ l.typedObject<View>(\n $nsid,\n 'view',\n /*#__PURE__*/ l.object({\n cid: /*#__PURE__*/ l.string({ format: 'cid' }),\n playlist: /*#__PURE__*/ l.string({ format: 'uri' }),\n thumbnail: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'uri' }),\n ),\n alt: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ maxGraphemes: 1000, maxLength: 10000 }),\n ),\n aspectRatio: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.ref<EmbedDefs.AspectRatio>(\n (() => EmbedDefs.aspectRatio) as any,\n ),\n ),\n presentation: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string<{ knownValues: ['default', 'gif'] }>(),\n ),\n }),\n)\n\nexport { view }\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atproto/bsky",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.273",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Reference implementation of app.bsky App View (Bluesky API)",
|
|
6
6
|
"keywords": [
|
|
@@ -60,17 +60,17 @@
|
|
|
60
60
|
"undici": "^8.5.0",
|
|
61
61
|
"zod": "3.23.8",
|
|
62
62
|
"@atproto-labs/fetch-node": "^0.3.7",
|
|
63
|
-
"@atproto/
|
|
64
|
-
"@atproto
|
|
65
|
-
"@atproto/common": "^0.7.6",
|
|
66
|
-
"@atproto/crypto": "^0.5.4",
|
|
63
|
+
"@atproto-labs/xrpc-utils": "^0.1.16",
|
|
64
|
+
"@atproto/api": "^0.20.39",
|
|
67
65
|
"@atproto/did": "^0.5.4",
|
|
66
|
+
"@atproto/common": "^0.7.6",
|
|
68
67
|
"@atproto/identity": "^0.5.9",
|
|
69
68
|
"@atproto/lex": "^0.3.5",
|
|
69
|
+
"@atproto/sync": "^0.4.3",
|
|
70
|
+
"@atproto/crypto": "^0.5.4",
|
|
70
71
|
"@atproto/repo": "^0.10.10",
|
|
71
|
-
"@atproto/
|
|
72
|
-
"@atproto/xrpc-server": "^0.12.
|
|
73
|
-
"@atproto/syntax": "^0.7.4"
|
|
72
|
+
"@atproto/syntax": "^0.7.4",
|
|
73
|
+
"@atproto/xrpc-server": "^0.12.3"
|
|
74
74
|
},
|
|
75
75
|
"devDependencies": {
|
|
76
76
|
"@bufbuild/buf": "^1.28.1",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"@types/pg": "^8.15.5",
|
|
85
85
|
"@types/qs": "^6.9.7",
|
|
86
86
|
"vitest": "^4.1.10",
|
|
87
|
-
"@atproto/pds": "^0.5.
|
|
87
|
+
"@atproto/pds": "^0.5.27"
|
|
88
88
|
},
|
|
89
89
|
"scripts": {
|
|
90
90
|
"codegen:buf": "buf generate ../bsync/proto && buf generate ./proto",
|