@atproto/bsky 0.0.103 → 0.0.105

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.
Files changed (65) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/api/blob-dispatcher.d.ts +4 -0
  3. package/dist/api/blob-dispatcher.d.ts.map +1 -0
  4. package/dist/api/blob-dispatcher.js +37 -0
  5. package/dist/api/blob-dispatcher.js.map +1 -0
  6. package/dist/api/blob-resolver.d.ts +17 -8
  7. package/dist/api/blob-resolver.d.ts.map +1 -1
  8. package/dist/api/blob-resolver.js +246 -99
  9. package/dist/api/blob-resolver.js.map +1 -1
  10. package/dist/api/well-known.d.ts.map +1 -1
  11. package/dist/api/well-known.js +30 -24
  12. package/dist/api/well-known.js.map +1 -1
  13. package/dist/config.d.ts +14 -1
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/config.js +40 -5
  16. package/dist/config.js.map +1 -1
  17. package/dist/context.d.ts +3 -0
  18. package/dist/context.d.ts.map +1 -1
  19. package/dist/context.js +3 -0
  20. package/dist/context.js.map +1 -1
  21. package/dist/data-plane/server/indexing/index.js +2 -2
  22. package/dist/image/server.d.ts +7 -13
  23. package/dist/image/server.d.ts.map +1 -1
  24. package/dist/image/server.js +119 -115
  25. package/dist/image/server.js.map +1 -1
  26. package/dist/image/sharp.d.ts +11 -2
  27. package/dist/image/sharp.d.ts.map +1 -1
  28. package/dist/image/sharp.js +35 -38
  29. package/dist/image/sharp.js.map +1 -1
  30. package/dist/image/util.d.ts +6 -4
  31. package/dist/image/util.d.ts.map +1 -1
  32. package/dist/image/util.js +14 -10
  33. package/dist/image/util.js.map +1 -1
  34. package/dist/index.d.ts +1 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +6 -10
  37. package/dist/index.js.map +1 -1
  38. package/dist/util/http.d.ts +12 -0
  39. package/dist/util/http.d.ts.map +1 -0
  40. package/dist/util/http.js +36 -0
  41. package/dist/util/http.js.map +1 -0
  42. package/dist/util/retry.d.ts +2 -5
  43. package/dist/util/retry.d.ts.map +1 -1
  44. package/dist/util/retry.js +8 -27
  45. package/dist/util/retry.js.map +1 -1
  46. package/package.json +18 -14
  47. package/src/api/blob-dispatcher.ts +38 -0
  48. package/src/api/blob-resolver.ts +341 -106
  49. package/src/api/well-known.ts +31 -24
  50. package/src/config.ts +63 -6
  51. package/src/context.ts +6 -0
  52. package/src/data-plane/server/indexing/index.ts +3 -3
  53. package/src/image/server.ts +131 -107
  54. package/src/image/sharp.ts +48 -52
  55. package/src/image/util.ts +20 -12
  56. package/src/index.ts +8 -15
  57. package/src/util/http.ts +41 -0
  58. package/src/util/retry.ts +8 -32
  59. package/tests/_util.ts +50 -3
  60. package/tests/blob-resolver.test.ts +62 -36
  61. package/tests/image/server.test.ts +40 -32
  62. package/tests/image/sharp.test.ts +17 -4
  63. package/tests/label-hydration.test.ts +6 -6
  64. package/tests/server.test.ts +41 -56
  65. package/tsconfig.build.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/image/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/image/server.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,16 @@
1
- import { Readable } from 'stream';
1
+ import { PassThrough, Readable } from 'node:stream';
2
+ import sharp from 'sharp';
2
3
  import { ImageInfo, Options } from './util';
3
4
  export type { Options };
4
- export declare function resize(stream: Readable, options: Options): Promise<Readable>;
5
+ /**
6
+ * Scale up to hit any specified minimum size
7
+ */
8
+ export declare function createImageUpscaler({ min }: Options): sharp.Sharp | PassThrough;
9
+ /**
10
+ * Scale down (or possibly up if min is true) to desired size, then compress
11
+ * to the desired format.
12
+ */
13
+ export declare function createImageProcessor({ height, width, min, fit, format, quality, }: Options): sharp.Sharp;
5
14
  export declare function maybeGetInfo(stream: Readable): Promise<ImageInfo | null>;
6
15
  export declare function getInfo(stream: Readable): Promise<ImageInfo>;
7
16
  //# sourceMappingURL=sharp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sharp.d.ts","sourceRoot":"","sources":["../../src/image/sharp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAIjC,OAAO,EAAkB,SAAS,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAE3D,YAAY,EAAE,OAAO,EAAE,CAAA;AAEvB,wBAAsB,MAAM,CAC1B,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,QAAQ,CAAC,CAsCnB;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,QAAQ,GACf,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA+B3B;AAED,wBAAsB,OAAO,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAMlE"}
1
+ {"version":3,"file":"sharp.d.ts","sourceRoot":"","sources":["../../src/image/sharp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEnD,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAkB,SAAS,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAE3D,YAAY,EAAE,OAAO,EAAE,CAAA;AAEvB;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,GAAW,EAAE,EAAE,OAAO,6BAY3D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,MAAM,EACN,KAAK,EACL,GAAW,EACX,GAAa,EACb,MAAM,EACN,OAAa,GACd,EAAE,OAAO,eAeT;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,QAAQ,GACf,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAyB3B;AAED,wBAAsB,OAAO,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAMlE"}
@@ -3,58 +3,68 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.resize = resize;
6
+ exports.createImageUpscaler = createImageUpscaler;
7
+ exports.createImageProcessor = createImageProcessor;
7
8
  exports.maybeGetInfo = maybeGetInfo;
8
9
  exports.getInfo = getInfo;
9
- const promises_1 = require("stream/promises");
10
- const sharp_1 = __importDefault(require("sharp"));
11
10
  const common_1 = require("@atproto/common");
11
+ const node_stream_1 = require("node:stream");
12
+ const promises_1 = require("node:stream/promises");
13
+ const sharp_1 = __importDefault(require("sharp"));
12
14
  const util_1 = require("./util");
13
- async function resize(stream, options) {
14
- const { height, width, min = false, fit = 'cover', format, quality } = options;
15
- let processor = (0, sharp_1.default)();
16
- // Scale up to hit any specified minimum size
17
- if (typeof min !== 'boolean') {
18
- const upsizeProcessor = (0, sharp_1.default)().resize({
15
+ /**
16
+ * Scale up to hit any specified minimum size
17
+ */
18
+ function createImageUpscaler({ min = false }) {
19
+ // Due to the way sharp works, up-scaling must happen in a separate processor
20
+ // than down-scaling.
21
+ return typeof min !== 'boolean'
22
+ ? (0, sharp_1.default)().resize({
19
23
  fit: 'outside',
20
24
  width: min.width,
21
25
  height: min.height,
22
26
  withoutReduction: true,
23
27
  withoutEnlargement: false,
24
- });
25
- (0, common_1.forwardStreamErrors)(stream, upsizeProcessor);
26
- stream = stream.pipe(upsizeProcessor);
27
- }
28
- // Scale down (or possibly up if min is true) to desired size
29
- processor = processor.resize({
28
+ })
29
+ : new node_stream_1.PassThrough();
30
+ }
31
+ /**
32
+ * Scale down (or possibly up if min is true) to desired size, then compress
33
+ * to the desired format.
34
+ */
35
+ function createImageProcessor({ height, width, min = false, fit = 'cover', format, quality = 100, }) {
36
+ const processor = (0, sharp_1.default)().resize({
30
37
  fit,
31
38
  width,
32
39
  height,
33
40
  withoutEnlargement: min !== true,
34
41
  });
35
- // Output to specified format
36
42
  if (format === 'jpeg') {
37
- processor = processor.jpeg({ quality: quality ?? 100 });
43
+ return processor.jpeg({ quality });
38
44
  }
39
45
  else if (format === 'png') {
40
- processor = processor.png({ quality: quality ?? 100 });
46
+ return processor.png({ quality });
41
47
  }
42
48
  else {
43
- const exhaustiveCheck = format;
44
- throw new Error(`Unhandled case: ${exhaustiveCheck}`);
49
+ throw new Error(`Unhandled case: ${format}`);
45
50
  }
46
- (0, common_1.forwardStreamErrors)(stream, processor);
47
- return stream.pipe(processor);
48
51
  }
49
52
  async function maybeGetInfo(stream) {
50
- let metadata;
51
53
  try {
52
54
  const processor = (0, sharp_1.default)();
53
- const [result] = await Promise.all([
55
+ const [{ size, height, width, format }] = await Promise.all([
54
56
  processor.metadata(),
55
57
  (0, promises_1.pipeline)(stream, processor), // Handles error propagation
56
58
  ]);
57
- metadata = result;
59
+ if (size == null || height == null || width == null || format == null) {
60
+ return null;
61
+ }
62
+ return {
63
+ height,
64
+ width,
65
+ size,
66
+ mime: util_1.formatsToMimes.get(format) ?? 'unknown',
67
+ };
58
68
  }
59
69
  catch (err) {
60
70
  if ((0, common_1.errHasMsg)(err, 'Input buffer contains unsupported image format')) {
@@ -62,19 +72,6 @@ async function maybeGetInfo(stream) {
62
72
  }
63
73
  throw err;
64
74
  }
65
- const { size, height, width, format } = metadata;
66
- if (size === undefined ||
67
- height === undefined ||
68
- width === undefined ||
69
- format === undefined) {
70
- return null;
71
- }
72
- return {
73
- height,
74
- width,
75
- size,
76
- mime: util_1.formatsToMimes[format] ?? 'unknown',
77
- };
78
75
  }
79
76
  async function getInfo(stream) {
80
77
  const maybeInfo = await maybeGetInfo(stream);
@@ -1 +1 @@
1
- {"version":3,"file":"sharp.js","sourceRoot":"","sources":["../../src/image/sharp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sharp.js","sourceRoot":"","sources":["../../src/image/sharp.ts"],"names":[],"mappings":";;;;;AAWA,kDAYC;AAMD,oDAsBC;AAED,oCA2BC;AAED,0BAMC;AAxFD,4CAA2C;AAC3C,6CAAmD;AACnD,mDAA+C;AAC/C,kDAAyB;AACzB,iCAA2D;AAI3D;;GAEG;AACH,SAAgB,mBAAmB,CAAC,EAAE,GAAG,GAAG,KAAK,EAAW;IAC1D,6EAA6E;IAC7E,qBAAqB;IACrB,OAAO,OAAO,GAAG,KAAK,SAAS;QAC7B,CAAC,CAAC,IAAA,eAAK,GAAE,CAAC,MAAM,CAAC;YACb,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,gBAAgB,EAAE,IAAI;YACtB,kBAAkB,EAAE,KAAK;SAC1B,CAAC;QACJ,CAAC,CAAC,IAAI,yBAAW,EAAE,CAAA;AACvB,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,EACnC,MAAM,EACN,KAAK,EACL,GAAG,GAAG,KAAK,EACX,GAAG,GAAG,OAAO,EACb,MAAM,EACN,OAAO,GAAG,GAAG,GACL;IACR,MAAM,SAAS,GAAG,IAAA,eAAK,GAAE,CAAC,MAAM,CAAC;QAC/B,GAAG;QACH,KAAK;QACL,MAAM;QACN,kBAAkB,EAAE,GAAG,KAAK,IAAI;KACjC,CAAC,CAAA;IAEF,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IACpC,CAAC;SAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IACnC,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAA;IAC9C,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,YAAY,CAChC,MAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAA,eAAK,GAAE,CAAA;QAEzB,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC1D,SAAS,CAAC,QAAQ,EAAE;YACpB,IAAA,mBAAQ,EAAC,MAAM,EAAE,SAAS,CAAC,EAAE,4BAA4B;SAC1D,CAAC,CAAA;QAEF,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACtE,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO;YACL,MAAM;YACN,KAAK;YACL,IAAI;YACJ,IAAI,EAAE,qBAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS;SAC9C,CAAA;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,IAAA,kBAAS,EAAC,GAAG,EAAE,gDAAgD,CAAC,EAAE,CAAC;YACrE,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,OAAO,CAAC,MAAgB;IAC5C,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAA;IAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACxD,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -1,4 +1,5 @@
1
- import { FormatEnum } from 'sharp';
1
+ import { FormatEnum, OutputInfo } from 'sharp';
2
+ export type ImageMime = `image/${string}`;
2
3
  export type Options = Dimensions & {
3
4
  format: 'jpeg' | 'png';
4
5
  fit?: 'cover' | 'inside';
@@ -7,13 +8,14 @@ export type Options = Dimensions & {
7
8
  };
8
9
  export type ImageInfo = Dimensions & {
9
10
  size: number;
10
- mime: `image/${string}` | 'unknown';
11
+ mime: ImageMime | 'unknown';
11
12
  };
12
13
  export type Dimensions = {
13
14
  height: number;
14
15
  width: number;
15
16
  };
16
- export declare const formatsToMimes: {
17
- [s in keyof FormatEnum]?: `image/${string}`;
17
+ export declare const formatsToMimes: Map<keyof FormatEnum, `image/${string}`>;
18
+ export type SharpInfo = OutputInfo & {
19
+ format: keyof FormatEnum;
18
20
  };
19
21
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/image/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAElC,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG;IACjC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAA;IAGtB,GAAG,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IAIxB,GAAG,CAAC,EAAE,UAAU,GAAG,OAAO,CAAA;IAE1B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1D,eAAO,MAAM,cAAc,EAAE;KAAG,CAAC,IAAI,MAAM,UAAU,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE;CASzE,CAAA"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/image/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAE9C,MAAM,MAAM,SAAS,GAAG,SAAS,MAAM,EAAE,CAAA;AAEzC,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG;IACjC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAA;IAGtB,GAAG,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IAIxB,GAAG,CAAC,EAAE,UAAU,GAAG,OAAO,CAAA;IAE1B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,SAAS,GAAG,SAAS,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1D,eAAO,MAAM,cAAc,0CAazB,CAAA;AAEF,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,UAAU,CAAA;CAAE,CAAA"}
@@ -1,14 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.formatsToMimes = void 0;
4
- exports.formatsToMimes = {
5
- jpg: 'image/jpeg',
6
- jpeg: 'image/jpeg',
7
- png: 'image/png',
8
- gif: 'image/gif',
9
- svg: 'image/svg+xml',
10
- tif: 'image/tiff',
11
- tiff: 'image/tiff',
12
- webp: 'image/webp',
13
- };
4
+ exports.formatsToMimes = new Map([
5
+ ['jpg', 'image/jpeg'],
6
+ ['jpeg', 'image/jpeg'],
7
+ ['png', 'image/png'],
8
+ ['gif', 'image/gif'],
9
+ ['svg', 'image/svg+xml'],
10
+ ['tif', 'image/tiff'],
11
+ ['tiff', 'image/tiff'],
12
+ ['webp', 'image/webp'],
13
+ ['avif', 'image/avif'],
14
+ ['heif', 'image/heif'],
15
+ ['jp2', 'image/jp2'],
16
+ ['jxl', 'image/jxl'],
17
+ ]);
14
18
  //# sourceMappingURL=util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/image/util.ts"],"names":[],"mappings":";;;AAsBa,QAAA,cAAc,GAAoD;IAC7E,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;CACnB,CAAA"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/image/util.ts"],"names":[],"mappings":";;;AAwBa,QAAA,cAAc,GAAG,IAAI,GAAG,CAA8B;IACjE,CAAC,KAAK,EAAE,YAAY,CAAC;IACrB,CAAC,MAAM,EAAE,YAAY,CAAC;IACtB,CAAC,KAAK,EAAE,WAAW,CAAC;IACpB,CAAC,KAAK,EAAE,WAAW,CAAC;IACpB,CAAC,KAAK,EAAE,eAAe,CAAC;IACxB,CAAC,KAAK,EAAE,YAAY,CAAC;IACrB,CAAC,MAAM,EAAE,YAAY,CAAC;IACtB,CAAC,MAAM,EAAE,YAAY,CAAC;IACtB,CAAC,MAAM,EAAE,YAAY,CAAC;IACtB,CAAC,MAAM,EAAE,YAAY,CAAC;IACtB,CAAC,KAAK,EAAE,WAAW,CAAC;IACpB,CAAC,KAAK,EAAE,WAAW,CAAC;CACrB,CAAC,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import express from 'express';
2
2
  import http from 'http';
3
+ import { Keypair } from '@atproto/crypto';
3
4
  import { ServerConfig } from './config';
4
5
  import AppContext from './context';
5
- import { Keypair } from '@atproto/crypto';
6
6
  export * from './data-plane';
7
7
  export type { ServerConfigValues } from './config';
8
8
  export { ServerConfig } from './config';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAA;AAYvB,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAIvC,OAAO,UAAU,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAUzC,cAAc,cAAc,CAAA;AAC5B,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAEhE,qBAAa,WAAW;IACf,GAAG,EAAE,UAAU,CAAA;IACf,GAAG,EAAE,OAAO,CAAC,WAAW,CAAA;IACxB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAA;IAC3B,OAAO,CAAC,UAAU,CAAC,CAAgB;gBAEvB,IAAI,EAAE;QAAE,GAAG,EAAE,UAAU,CAAC;QAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAA;KAAE;IAK/D,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,MAAM,EAAE,YAAY,CAAA;QACpB,UAAU,EAAE,OAAO,CAAA;KACpB,GAAG,WAAW;IA8IT,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IAY7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAA;AASvB,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAIzC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAIvC,OAAO,UAAU,MAAM,WAAW,CAAA;AAWlC,cAAc,cAAc,CAAA;AAC5B,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAEhE,qBAAa,WAAW;IACf,GAAG,EAAE,UAAU,CAAA;IACf,GAAG,EAAE,OAAO,CAAC,WAAW,CAAA;IACxB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAA;IAC3B,OAAO,CAAC,UAAU,CAAC,CAAgB;gBAEvB,IAAI,EAAE;QAAE,GAAG,EAAE,UAAU,CAAC;QAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAA;KAAE;IAK/D,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,MAAM,EAAE,YAAY,CAAA;QACpB,UAAU,EAAE,OAAO,CAAA;KACpB,GAAG,WAAW;IAsIT,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IAY7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B;AAED,eAAe,WAAW,CAAA"}
package/dist/index.js CHANGED
@@ -43,7 +43,7 @@ const error = __importStar(require("./error"));
43
43
  const logger_1 = require("./logger");
44
44
  const lexicon_1 = require("./lexicon");
45
45
  const uri_1 = require("./image/uri");
46
- const server_1 = require("./image/server");
46
+ const imageServer = __importStar(require("./image/server"));
47
47
  const context_1 = __importDefault(require("./context"));
48
48
  const client_1 = require("./data-plane/client");
49
49
  const hydrator_1 = require("./hydration/hydrator");
@@ -53,6 +53,7 @@ const bsync_1 = require("./bsync");
53
53
  const courier_1 = require("./courier");
54
54
  const feature_gates_1 = require("./feature-gates");
55
55
  const util_1 = require("./views/util");
56
+ const blob_dispatcher_1 = require("./api/blob-dispatcher");
56
57
  __exportStar(require("./data-plane"), exports);
57
58
  var config_1 = require("./config");
58
59
  Object.defineProperty(exports, "ServerConfig", { enumerable: true, get: function () { return config_1.ServerConfig; } });
@@ -111,11 +112,6 @@ class BskyAppView {
111
112
  thumbnailUrlPattern: config.videoThumbnailUrlPattern ||
112
113
  `${config.publicUrl}/vid/%s/%s/thumbnail.jpg`,
113
114
  });
114
- let imgProcessingServer;
115
- if (!config.cdnUrl) {
116
- const imgProcessingCache = new server_1.BlobDiskCache(config.blobCacheLocation);
117
- imgProcessingServer = new server_1.ImageProcessingServer(config, imgProcessingCache);
118
- }
119
115
  const searchAgent = config.searchUrl
120
116
  ? new api_1.AtpAgent({ service: config.searchUrl })
121
117
  : undefined;
@@ -171,6 +167,7 @@ class BskyAppView {
171
167
  apiKey: config.statsigKey,
172
168
  env: config.statsigEnv,
173
169
  });
170
+ const blobDispatcher = (0, blob_dispatcher_1.createBlobDispatcher)(config);
174
171
  const ctx = new context_1.default({
175
172
  cfg: config,
176
173
  dataplane,
@@ -185,6 +182,7 @@ class BskyAppView {
185
182
  courierClient,
186
183
  authVerifier,
187
184
  featureGates,
185
+ blobDispatcher,
188
186
  });
189
187
  let server = (0, lexicon_1.createServer)({
190
188
  validateResponse: config.debugMode,
@@ -197,10 +195,8 @@ class BskyAppView {
197
195
  server = (0, api_2.default)(server, ctx);
198
196
  app.use(api_2.health.createRouter(ctx));
199
197
  app.use(api_2.wellKnown.createRouter(ctx));
200
- app.use(api_2.blobResolver.createRouter(ctx));
201
- if (imgProcessingServer) {
202
- app.use('/img', imgProcessingServer.app);
203
- }
198
+ app.use(api_2.blobResolver.createMiddleware(ctx));
199
+ app.use(imageServer.createMiddleware(ctx, { prefix: '/img/' }));
204
200
  app.use(server.xrpc.router);
205
201
  app.use(error.handler);
206
202
  return new BskyAppView({ ctx, app });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAA6B;AAG7B,oDAA2B;AAC3B,qDAAsE;AACtE,gDAAuB;AACvB,8DAAqC;AACrC,sCAAuC;AACvC,gDAA8C;AAC9C,4CAA6C;AAC7C,6CAA4D;AAC5D,+CAAgC;AAChC,qCAA2C;AAE3C,uCAAwC;AACxC,qCAA6C;AAC7C,2CAAqE;AACrE,wDAAkC;AAElC,gDAA2D;AAC3D,mDAA+C;AAC/C,mCAA+B;AAC/B,mDAAqE;AACrE,mCAAwE;AACxE,uCAA8E;AAC9E,mDAA8C;AAC9C,uCAA8C;AAE9C,+CAA4B;AAE5B,mCAAuC;AAA9B,sGAAA,YAAY,OAAA;AACrB,6CAAiD;AAAxC,8FAAA,QAAQ,OAAA;AACjB,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,qCAAsC;AAA7B,qGAAA,UAAU,OAAA;AACnB,6DAAgE;AAAvD,6GAAA,eAAe,OAAA;AAExB,MAAa,WAAW;IAMtB,YAAY,IAAmD;QALxD;;;;;WAAe;QACf;;;;;WAAwB;QACxB;;;;;WAAoB;QACnB;;;;;WAA2B;QAGjC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QACnB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;IACrB,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,IAGb;QACC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;QACnC,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAA;QACrB,GAAG,CAAC,GAAG,CAAC,IAAA,cAAI,EAAC,EAAE,MAAM,EAAE,YAAG,GAAG,eAAM,EAAE,CAAC,CAAC,CAAA;QACvC,GAAG,CAAC,GAAG,CAAC,yBAAgB,CAAC,CAAA;QACzB,GAAG,CAAC,GAAG,CAAC,IAAA,qBAAW,GAAE,CAAC,CAAA;QAEtB,yEAAyE;QACzE,MAAM,UAAU,GAAG,IAAI,qBAAU,CAAC;YAChC,MAAM,EAAE,MAAM,CAAC,SAAS;YACxB,iBAAiB,EAAE,MAAM,CAAC,wBAAwB;SACnD,CAAC,CAAA;QAEF,MAAM,aAAa,GAAG,IAAI,qBAAe,CACvC,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,MAAM,CAC3C,CAAA;QACD,MAAM,eAAe,GAAG,IAAI,sBAAe,CAAC;YAC1C,kBAAkB,EAChB,MAAM,CAAC,uBAAuB;gBAC9B,GAAG,MAAM,CAAC,SAAS,0BAA0B;YAC/C,mBAAmB,EACjB,MAAM,CAAC,wBAAwB;gBAC/B,GAAG,MAAM,CAAC,SAAS,0BAA0B;SAChD,CAAC,CAAA;QAEF,IAAI,mBAAsD,CAAA;QAC1D,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,kBAAkB,GAAG,IAAI,sBAAa,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;YACtE,mBAAmB,GAAG,IAAI,8BAAqB,CAC7C,MAAM,EACN,kBAAkB,CACnB,CAAA;QACH,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS;YAClC,CAAC,CAAC,IAAI,cAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;YAC7C,CAAC,CAAC,SAAS,CAAA;QAEb,MAAM,gBAAgB,GAAG,MAAM,CAAC,cAAc;YAC5C,CAAC,CAAC,IAAI,cAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC;YAClD,CAAC,CAAC,SAAS,CAAA;QACb,IAAI,gBAAgB,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACjD,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAC5B,eAAe,EACf,UAAU,MAAM,CAAC,iBAAiB,EAAE,CACrC,CAAA;QACH,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS;YAClC,CAAC,CAAC,IAAI,cAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;YAC7C,CAAC,CAAC,SAAS,CAAA;QACb,IAAI,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACvC,WAAW,CAAC,GAAG,CAAC,SAAS,CACvB,eAAe,EACf,UAAU,MAAM,CAAC,YAAY,EAAE,CAChC,CAAA;QACH,CAAC;QAED,MAAM,SAAS,GAAG,IAAA,8BAAqB,EAAC,MAAM,CAAC,aAAa,EAAE;YAC5D,WAAW,EAAE,MAAM,CAAC,oBAAoB;YACxC,kBAAkB,EAAE,CAAC,MAAM,CAAC,qBAAqB;SAClD,CAAC,CAAA;QACF,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAA;QACrE,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC;YACtB,aAAa,EAAE,aAAa;YAC5B,eAAe,EAAE,eAAe;YAChC,cAAc,EAAE,MAAM,CAAC,cAAc;SACtC,CAAC,CAAA;QAEF,MAAM,WAAW,GAAG,IAAA,yBAAiB,EAAC;YACpC,OAAO,EAAE,MAAM,CAAC,QAAQ;YACxB,WAAW,EAAE,MAAM,CAAC,gBAAgB,IAAI,GAAG;YAC3C,WAAW,EAAE,EAAE,kBAAkB,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE;YAC9D,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAA,sBAAS,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;SACxE,CAAC,CAAA;QAEF,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU;YACrC,CAAC,CAAC,IAAA,6BAAmB,EAAC;gBAClB,OAAO,EAAE,MAAM,CAAC,UAAU;gBAC1B,WAAW,EAAE,MAAM,CAAC,kBAAkB,IAAI,GAAG;gBAC7C,WAAW,EAAE,EAAE,kBAAkB,EAAE,CAAC,MAAM,CAAC,mBAAmB,EAAE;gBAChE,YAAY,EAAE,MAAM,CAAC,aAAa;oBAChC,CAAC,CAAC,CAAC,IAAA,wBAAW,EAAC,MAAM,CAAC,aAAa,CAAC,CAAC;oBACrC,CAAC,CAAC,EAAE;aACP,CAAC;YACJ,CAAC,CAAC,SAAS,CAAA;QAEb,MAAM,oBAAoB,GAAG,MAAM,CAAC,uBAAuB;YACzD,CAAC,CAAC,IAAA,qCAAqB,EAAC,MAAM,CAAC,uBAAuB,CAAC;YACvD,CAAC,CAAC,SAAS,CAAA;QACb,MAAM,YAAY,GAAG,IAAI,4BAAY,CAAC,SAAS,EAAE;YAC/C,MAAM,EAAE,MAAM,CAAC,SAAS;YACxB,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;YACnD,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,WAAW,EAAE,MAAM,CAAC,cAAc;YAClC,oBAAoB;SACrB,CAAC,CAAA;QAEF,MAAM,YAAY,GAAG,IAAI,4BAAY,CAAC;YACpC,MAAM,EAAE,MAAM,CAAC,UAAU;YACzB,GAAG,EAAE,MAAM,CAAC,UAAU;SACvB,CAAC,CAAA;QAEF,MAAM,GAAG,GAAG,IAAI,iBAAU,CAAC;YACzB,GAAG,EAAE,MAAM;YACX,SAAS;YACT,WAAW;YACX,gBAAgB;YAChB,WAAW;YACX,QAAQ;YACR,KAAK;YACL,UAAU;YACV,UAAU;YACV,WAAW;YACX,aAAa;YACb,YAAY;YACZ,YAAY;SACb,CAAC,CAAA;QAEF,IAAI,MAAM,GAAG,IAAA,sBAAY,EAAC;YACxB,gBAAgB,EAAE,MAAM,CAAC,SAAS;YAClC,OAAO,EAAE;gBACP,SAAS,EAAE,GAAG,GAAG,IAAI,EAAE,QAAQ;gBAC/B,SAAS,EAAE,GAAG,GAAG,IAAI,EAAE,QAAQ;gBAC/B,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,MAAM;aACnC;SACF,CAAC,CAAA;QAEF,MAAM,GAAG,IAAA,aAAG,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAEzB,GAAG,CAAC,GAAG,CAAC,YAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAA;QACjC,GAAG,CAAC,GAAG,CAAC,eAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAA;QACpC,GAAG,CAAC,GAAG,CAAC,kBAAY,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAA;QACvC,IAAI,mBAAmB,EAAE,CAAC;YACxB,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAA;QAC1C,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC3B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAEtB,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;IACtC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAA;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAA,sCAAoB,EAAC,EAAE,MAAM,EAAE,CAAC,CAAA;QAClD,MAAM,gBAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;QACtC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,EAAiB,CAAA;QAChD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAC7B,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,CAAA;QAClC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,CAAA;IACjC,CAAC;CACF;AA5KD,kCA4KC;AAED,kBAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { IncomingMessage, ServerResponse } from 'node:http';
2
+ import { IncomingHttpHeaders } from 'undici/types/header';
3
+ type NextFunction = (err?: unknown) => void;
4
+ export type Middleware = (req: IncomingMessage, res: ServerResponse, next: NextFunction) => void;
5
+ export type ResponseData = {
6
+ statusCode: number;
7
+ headers: IncomingHttpHeaders;
8
+ };
9
+ export declare function proxyResponseHeaders(data: ResponseData, res: ServerResponse): void;
10
+ export declare function responseSignal(res: ServerResponse): AbortSignal;
11
+ export {};
12
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/util/http.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAEzD,KAAK,YAAY,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;AAE3C,MAAM,MAAM,UAAU,GAAG,CACvB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,YAAY,KACf,IAAI,CAAA;AAET,MAAM,MAAM,YAAY,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,CAAA;AAe/E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,cAAc,QAM3E;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,WAAW,CAK/D"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.proxyResponseHeaders = proxyResponseHeaders;
7
+ exports.responseSignal = responseSignal;
8
+ const http_errors_1 = __importDefault(require("http-errors"));
9
+ const RESPONSE_HEADERS_TO_PROXY = new Set([
10
+ 'content-type',
11
+ 'content-length',
12
+ 'content-encoding',
13
+ 'content-language',
14
+ 'cache-control',
15
+ 'last-modified',
16
+ 'etag',
17
+ 'expires',
18
+ 'retry-after',
19
+ 'vary', // Might vary based on "accept" headers
20
+ ]);
21
+ function proxyResponseHeaders(data, res) {
22
+ res.statusCode = data.statusCode >= 500 ? 502 : data.statusCode;
23
+ for (const name of RESPONSE_HEADERS_TO_PROXY) {
24
+ const val = data.headers[name];
25
+ if (val)
26
+ res.setHeader(name, val);
27
+ }
28
+ }
29
+ function responseSignal(res) {
30
+ if (res.destroyed)
31
+ throw (0, http_errors_1.default)(499, 'Client Disconnected');
32
+ const controller = new AbortController();
33
+ res.once('close', () => controller.abort());
34
+ return controller.signal;
35
+ }
36
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/util/http.ts"],"names":[],"mappings":";;;;;AA2BA,oDAMC;AAED,wCAKC;AAxCD,8DAAyC;AAczC,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IACxC,cAAc;IACd,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,eAAe;IACf,eAAe;IACf,MAAM;IACN,SAAS;IACT,aAAa;IACb,MAAM,EAAE,uCAAuC;CACC,CAAC,CAAA;AAEnD,SAAgB,oBAAoB,CAAC,IAAkB,EAAE,GAAmB;IAC1E,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAA;IAC/D,KAAK,MAAM,IAAI,IAAI,yBAAyB,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,GAAG;YAAE,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACnC,CAAC;AACH,CAAC;AAED,SAAgB,cAAc,CAAC,GAAmB;IAChD,IAAI,GAAG,CAAC,SAAS;QAAE,MAAM,IAAA,qBAAe,EAAC,GAAG,EAAE,qBAAqB,CAAC,CAAA;IACpE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IACxC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAA;IAC3C,OAAO,UAAU,CAAC,MAAM,CAAA;AAC1B,CAAC"}
@@ -1,6 +1,3 @@
1
- import { RetryOptions } from '@atproto/common';
2
- export declare function retryHttp<T>(fn: () => Promise<T>, opts?: RetryOptions): Promise<T>;
3
- export declare function retryableHttp(err: unknown): boolean;
4
- export declare function retryConnect<T>(fn: () => Promise<T>, opts?: RetryOptions): Promise<T>;
5
- export declare function retryableConnect(err: unknown): boolean;
1
+ export declare const RETRYABLE_HTTP_STATUS_CODES: Set<number>;
2
+ export declare const retryXrpc: <T>(fn: () => Promise<T>, opts?: import("@atproto/common").RetryOptions) => Promise<T>;
6
3
  //# sourceMappingURL=retry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/util/retry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAS,MAAM,iBAAiB,CAAA;AAGrD,wBAAsB,SAAS,CAAC,CAAC,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,WAUzC;AAMD,wBAAsB,YAAY,CAAC,CAAC,EAClC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,WAE5C"}
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/util/retry.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,2BAA2B,aAEtC,CAAA;AAEF,eAAO,MAAM,SAAS,wFAMpB,CAAA"}
@@ -1,36 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.retryHttp = retryHttp;
4
- exports.retryableHttp = retryableHttp;
5
- exports.retryConnect = retryConnect;
6
- exports.retryableConnect = retryableConnect;
7
- const axios_1 = require("axios");
8
- const xrpc_1 = require("@atproto/xrpc");
3
+ exports.retryXrpc = exports.RETRYABLE_HTTP_STATUS_CODES = void 0;
9
4
  const common_1 = require("@atproto/common");
10
- const connect_1 = require("@connectrpc/connect");
11
- async function retryHttp(fn, opts = {}) {
12
- return (0, common_1.retry)(fn, { retryable: retryableHttp, ...opts });
13
- }
14
- function retryableHttp(err) {
5
+ const xrpc_1 = require("@atproto/xrpc");
6
+ exports.RETRYABLE_HTTP_STATUS_CODES = new Set([
7
+ 408, 425, 429, 500, 502, 503, 504, 522, 524,
8
+ ]);
9
+ exports.retryXrpc = (0, common_1.createRetryable)((err) => {
15
10
  if (err instanceof xrpc_1.XRPCError) {
16
11
  if (err.status === xrpc_1.ResponseType.Unknown)
17
12
  return true;
18
- return retryableHttpStatusCodes.has(err.status);
19
- }
20
- if (err instanceof axios_1.AxiosError) {
21
- if (!err.response)
22
- return true;
23
- return retryableHttpStatusCodes.has(err.response.status);
13
+ return exports.RETRYABLE_HTTP_STATUS_CODES.has(err.status);
24
14
  }
25
15
  return false;
26
- }
27
- const retryableHttpStatusCodes = new Set([
28
- 408, 425, 429, 500, 502, 503, 504, 522, 524,
29
- ]);
30
- async function retryConnect(fn, opts = {}) {
31
- return (0, common_1.retry)(fn, { retryable: retryableConnect, ...opts });
32
- }
33
- function retryableConnect(err) {
34
- return err instanceof connect_1.ConnectError && err.code === connect_1.Code.Unavailable;
35
- }
16
+ });
36
17
  //# sourceMappingURL=retry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/util/retry.ts"],"names":[],"mappings":";;AAKA,8BAKC;AAED,sCAUC;AAMD,oCAKC;AAED,4CAEC;AArCD,iCAAkC;AAClC,wCAAuD;AACvD,4CAAqD;AACrD,iDAAwD;AAEjD,KAAK,UAAU,SAAS,CAC7B,EAAoB,EACpB,OAAqB,EAAE;IAEvB,OAAO,IAAA,cAAK,EAAC,EAAE,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;AACzD,CAAC;AAED,SAAgB,aAAa,CAAC,GAAY;IACxC,IAAI,GAAG,YAAY,gBAAS,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,MAAM,KAAK,mBAAY,CAAC,OAAO;YAAE,OAAO,IAAI,CAAA;QACpD,OAAO,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACjD,CAAC;IACD,IAAI,GAAG,YAAY,kBAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAA;QAC9B,OAAO,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC1D,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC;IACvC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CAC5C,CAAC,CAAA;AAEK,KAAK,UAAU,YAAY,CAChC,EAAoB,EACpB,OAAqB,EAAE;IAEvB,OAAO,IAAA,cAAK,EAAC,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;AAC5D,CAAC;AAED,SAAgB,gBAAgB,CAAC,GAAY;IAC3C,OAAO,GAAG,YAAY,sBAAY,IAAI,GAAG,CAAC,IAAI,KAAK,cAAI,CAAC,WAAW,CAAA;AACrE,CAAC"}
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/util/retry.ts"],"names":[],"mappings":";;;AAAA,4CAAiD;AACjD,wCAAuD;AAE1C,QAAA,2BAA2B,GAAG,IAAI,GAAG,CAAC;IACjD,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CAC5C,CAAC,CAAA;AAEW,QAAA,SAAS,GAAG,IAAA,wBAAe,EAAC,CAAC,GAAY,EAAE,EAAE;IACxD,IAAI,GAAG,YAAY,gBAAS,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,MAAM,KAAK,mBAAY,CAAC,OAAO;YAAE,OAAO,IAAI,CAAA;QACpD,OAAO,mCAA2B,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/bsky",
3
- "version": "0.0.103",
3
+ "version": "0.0.105",
4
4
  "license": "MIT",
5
5
  "description": "Reference implementation of app.bsky App View (Bluesky API)",
6
6
  "keywords": [
@@ -22,6 +22,7 @@
22
22
  "@connectrpc/connect-express": "^1.1.4",
23
23
  "@connectrpc/connect-node": "^1.1.4",
24
24
  "@did-plc/lib": "^0.0.1",
25
+ "@types/http-errors": "^2.0.1",
25
26
  "compression": "^1.7.4",
26
27
  "cors": "^2.8.5",
27
28
  "express": "^4.17.2",
@@ -42,15 +43,19 @@
42
43
  "structured-headers": "^1.0.1",
43
44
  "typed-emitter": "^2.1.0",
44
45
  "uint8arrays": "3.0.0",
45
- "@atproto/api": "^0.13.25",
46
- "@atproto/common": "^0.4.5",
47
- "@atproto/crypto": "^0.4.2",
48
- "@atproto/identity": "^0.4.3",
49
- "@atproto/lexicon": "^0.4.4",
50
- "@atproto/repo": "^0.6.0",
51
- "@atproto/sync": "^0.1.7",
46
+ "undici": "^6.19.8",
47
+ "@atproto-labs/fetch-node": "0.1.4",
48
+ "@atproto-labs/xrpc-utils": "0.0.2",
49
+ "@atproto/api": "^0.13.26",
50
+ "@atproto/common": "^0.4.6",
51
+ "@atproto/crypto": "^0.4.3",
52
+ "@atproto/did": "^0.1.3",
53
+ "@atproto/identity": "^0.4.5",
54
+ "@atproto/lexicon": "^0.4.5",
55
+ "@atproto/repo": "^0.6.2",
56
+ "@atproto/sync": "^0.1.9",
52
57
  "@atproto/syntax": "^0.3.1",
53
- "@atproto/xrpc-server": "^0.7.4"
58
+ "@atproto/xrpc-server": "^0.7.6"
54
59
  },
55
60
  "devDependencies": {
56
61
  "@bufbuild/buf": "^1.28.1",
@@ -62,14 +67,13 @@
62
67
  "@types/express-serve-static-core": "^4.17.36",
63
68
  "@types/pg": "^8.6.6",
64
69
  "@types/qs": "^6.9.7",
65
- "axios": "^0.27.2",
66
70
  "jest": "^28.1.2",
67
71
  "ts-node": "^10.8.2",
68
72
  "typescript": "^5.6.3",
69
- "@atproto/api": "^0.13.25",
70
- "@atproto/lex-cli": "^0.5.4",
71
- "@atproto/pds": "^0.4.81",
72
- "@atproto/xrpc": "^0.6.5"
73
+ "@atproto/api": "^0.13.26",
74
+ "@atproto/lex-cli": "^0.5.5",
75
+ "@atproto/pds": "^0.4.83",
76
+ "@atproto/xrpc": "^0.6.6"
73
77
  },
74
78
  "scripts": {
75
79
  "codegen": "lex gen-server --yes ./src/lexicon ../../lexicons/com/atproto/*/* ../../lexicons/app/bsky/*/* ../../lexicons/chat/bsky/*/*",
@@ -0,0 +1,38 @@
1
+ import { isUnicastIp, unicastLookup } from '@atproto-labs/fetch-node'
2
+ import { Agent, Dispatcher, Pool, RetryAgent } from 'undici'
3
+
4
+ import { ServerConfig } from '../config'
5
+ import { RETRYABLE_HTTP_STATUS_CODES } from '../util/retry'
6
+
7
+ export function createBlobDispatcher(cfg: ServerConfig): Dispatcher {
8
+ const baseDispatcher = new Agent({
9
+ allowH2: cfg.proxyAllowHTTP2, // This is experimental
10
+ headersTimeout: cfg.proxyHeadersTimeout,
11
+ maxResponseSize: cfg.proxyMaxResponseSize,
12
+ bodyTimeout: cfg.proxyBodyTimeout,
13
+ factory: cfg.disableSsrfProtection
14
+ ? undefined
15
+ : (origin, opts) => {
16
+ const { protocol, hostname } =
17
+ origin instanceof URL ? origin : new URL(origin)
18
+ if (protocol !== 'https:') {
19
+ throw new Error(`Forbidden protocol "${protocol}"`)
20
+ }
21
+ if (isUnicastIp(hostname) === false) {
22
+ throw new Error('Hostname resolved to non-unicast address')
23
+ }
24
+ return new Pool(origin, opts)
25
+ },
26
+ connect: {
27
+ lookup: cfg.disableSsrfProtection ? undefined : unicastLookup,
28
+ },
29
+ })
30
+
31
+ return cfg.proxyMaxRetries > 0
32
+ ? new RetryAgent(baseDispatcher, {
33
+ statusCodes: [...RETRYABLE_HTTP_STATUS_CODES],
34
+ methods: ['GET', 'HEAD'],
35
+ maxRetries: cfg.proxyMaxRetries,
36
+ })
37
+ : baseDispatcher
38
+ }