@atproto/bsky 0.0.103 → 0.0.104

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 +19 -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 +17 -13
  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
package/dist/config.d.ts CHANGED
@@ -41,6 +41,13 @@ export interface ServerConfigValues {
41
41
  maxThreadDepth?: number;
42
42
  clientCheckEmailConfirmed?: boolean;
43
43
  topicsEnabled?: boolean;
44
+ disableSsrfProtection?: boolean;
45
+ proxyAllowHTTP2?: boolean;
46
+ proxyHeadersTimeout?: number;
47
+ proxyBodyTimeout?: number;
48
+ proxyMaxResponseSize?: number;
49
+ proxyMaxRetries?: number;
50
+ proxyPreferCompressed?: boolean;
44
51
  }
45
52
  export declare class ServerConfig {
46
53
  private cfg;
@@ -51,7 +58,6 @@ export declare class ServerConfig {
51
58
  get version(): string | undefined;
52
59
  get debugMode(): boolean;
53
60
  get port(): number | undefined;
54
- get localUrl(): string;
55
61
  get publicUrl(): string | undefined;
56
62
  get serverDid(): string;
57
63
  get alternateAudienceDids(): string[];
@@ -91,5 +97,12 @@ export declare class ServerConfig {
91
97
  get bigThreadUris(): Set<string>;
92
98
  get bigThreadDepth(): number | undefined;
93
99
  get maxThreadDepth(): number | undefined;
100
+ get disableSsrfProtection(): boolean;
101
+ get proxyAllowHTTP2(): boolean;
102
+ get proxyHeadersTimeout(): number;
103
+ get proxyBodyTimeout(): number;
104
+ get proxyMaxResponseSize(): number;
105
+ get proxyMaxRetries(): number;
106
+ get proxyPreferCompressed(): boolean;
94
107
  }
95
108
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -22,7 +22,9 @@ class ServerConfig {
22
22
  }
23
23
  static readEnv(overrides) {
24
24
  const version = process.env.BSKY_VERSION || undefined;
25
- const debugMode = process.env.NODE_ENV !== 'production';
25
+ const debugMode =
26
+ // Because security related features are disabled in development mode, this requires explicit opt-in.
27
+ process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test';
26
28
  const publicUrl = process.env.BSKY_PUBLIC_URL || undefined;
27
29
  const serverDid = process.env.BSKY_SERVER_DID || 'did:example:test';
28
30
  const envPort = parseInt(process.env.BSKY_PORT || '', 10);
@@ -96,6 +98,15 @@ class ServerConfig {
96
98
  const maxThreadDepth = process.env.BSKY_MAX_THREAD_DEPTH
97
99
  ? parseInt(process.env.BSKY_MAX_THREAD_DEPTH || '', 10)
98
100
  : undefined;
101
+ const disableSsrfProtection = process.env.BSKY_DISABLE_SSRF_PROTECTION
102
+ ? process.env.BSKY_DISABLE_SSRF_PROTECTION === 'true'
103
+ : debugMode;
104
+ const proxyAllowHTTP2 = process.env.BSKY_PROXY_ALLOW_HTTP2 === 'true';
105
+ const proxyHeadersTimeout = parseInt(process.env.BSKY_PROXY_HEADERS_TIMEOUT || '', 10) || undefined;
106
+ const proxyBodyTimeout = parseInt(process.env.BSKY_PROXY_BODY_TIMEOUT || '', 10) || undefined;
107
+ const proxyMaxResponseSize = parseInt(process.env.BSKY_PROXY_MAX_RESPONSE_SIZE || '', 10) || undefined;
108
+ const proxyMaxRetries = parseInt(process.env.BSKY_PROXY_MAX_RETRIES || '', 10) || undefined;
109
+ const proxyPreferCompressed = process.env.BSKY_PROXY_PREFER_COMPRESSED === 'true';
99
110
  return new ServerConfig({
100
111
  version,
101
112
  debugMode,
@@ -139,6 +150,13 @@ class ServerConfig {
139
150
  bigThreadUris,
140
151
  bigThreadDepth,
141
152
  maxThreadDepth,
153
+ disableSsrfProtection,
154
+ proxyAllowHTTP2,
155
+ proxyHeadersTimeout,
156
+ proxyBodyTimeout,
157
+ proxyMaxResponseSize,
158
+ proxyMaxRetries,
159
+ proxyPreferCompressed,
142
160
  ...stripUndefineds(overrides ?? {}),
143
161
  });
144
162
  }
@@ -155,10 +173,6 @@ class ServerConfig {
155
173
  get port() {
156
174
  return this.assignedPort || this.cfg.port;
157
175
  }
158
- get localUrl() {
159
- (0, node_assert_1.default)(this.port, 'No port assigned');
160
- return `http://localhost:${this.port}`;
161
- }
162
176
  get publicUrl() {
163
177
  return this.cfg.publicUrl;
164
178
  }
@@ -276,6 +290,27 @@ class ServerConfig {
276
290
  get maxThreadDepth() {
277
291
  return this.cfg.maxThreadDepth;
278
292
  }
293
+ get disableSsrfProtection() {
294
+ return this.cfg.disableSsrfProtection ?? false;
295
+ }
296
+ get proxyAllowHTTP2() {
297
+ return this.cfg.proxyAllowHTTP2 ?? false;
298
+ }
299
+ get proxyHeadersTimeout() {
300
+ return this.cfg.proxyHeadersTimeout ?? 30e3;
301
+ }
302
+ get proxyBodyTimeout() {
303
+ return this.cfg.proxyBodyTimeout ?? 30e3;
304
+ }
305
+ get proxyMaxResponseSize() {
306
+ return this.cfg.proxyMaxResponseSize ?? 10 * 1024 * 1024; // 10mb
307
+ }
308
+ get proxyMaxRetries() {
309
+ return this.cfg.proxyMaxRetries ?? 3;
310
+ }
311
+ get proxyPreferCompressed() {
312
+ return this.cfg.proxyPreferCompressed ?? true;
313
+ }
279
314
  }
280
315
  exports.ServerConfig = ServerConfig;
281
316
  function stripUndefineds(obj) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/context.d.ts CHANGED
@@ -12,6 +12,7 @@ import { BsyncClient } from './bsync';
12
12
  import { CourierClient } from './courier';
13
13
  import { FeatureGates } from './feature-gates';
14
14
  import { ParsedLabelers } from './util';
15
+ import { Dispatcher } from 'undici';
15
16
  export declare class AppContext {
16
17
  private opts;
17
18
  constructor(opts: {
@@ -28,6 +29,7 @@ export declare class AppContext {
28
29
  courierClient: CourierClient | undefined;
29
30
  authVerifier: AuthVerifier;
30
31
  featureGates: FeatureGates;
32
+ blobDispatcher: Dispatcher;
31
33
  });
32
34
  get cfg(): ServerConfig;
33
35
  get dataplane(): DataPlaneClient;
@@ -43,6 +45,7 @@ export declare class AppContext {
43
45
  get courierClient(): CourierClient | undefined;
44
46
  get authVerifier(): AuthVerifier;
45
47
  get featureGates(): FeatureGates;
48
+ get blobDispatcher(): Dispatcher;
46
49
  reqLabelers(req: express.Request): ParsedLabelers;
47
50
  }
48
51
  export default AppContext;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,GAAG,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EACL,cAAc,EAGf,MAAM,QAAQ,CAAA;AAGf,qBAAa,UAAU;IAEnB,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE;QACZ,GAAG,EAAE,YAAY,CAAA;QACjB,SAAS,EAAE,eAAe,CAAA;QAC1B,WAAW,EAAE,QAAQ,GAAG,SAAS,CAAA;QACjC,gBAAgB,EAAE,QAAQ,GAAG,SAAS,CAAA;QACtC,WAAW,EAAE,QAAQ,GAAG,SAAS,CAAA;QACjC,QAAQ,EAAE,QAAQ,CAAA;QAClB,KAAK,EAAE,KAAK,CAAA;QACZ,UAAU,EAAE,OAAO,CAAA;QACnB,UAAU,EAAE,UAAU,CAAA;QACtB,WAAW,EAAE,WAAW,CAAA;QACxB,aAAa,EAAE,aAAa,GAAG,SAAS,CAAA;QACxC,YAAY,EAAE,YAAY,CAAA;QAC1B,YAAY,EAAE,YAAY,CAAA;KAC3B;IAGH,IAAI,GAAG,IAAI,YAAY,CAEtB;IAED,IAAI,SAAS,IAAI,eAAe,CAE/B;IAED,IAAI,WAAW,IAAI,QAAQ,GAAG,SAAS,CAEtC;IAED,IAAI,gBAAgB,IAAI,QAAQ,GAAG,SAAS,CAE3C;IAED,IAAI,WAAW,IAAI,QAAQ,GAAG,SAAS,CAEtC;IAED,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,IAAI,KAAK,IAAI,KAAK,CAEjB;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,IAAI,SAAS,IAAI,GAAG,CAAC,MAAM,CAE1B;IAED,IAAI,UAAU,IAAI,UAAU,CAE3B;IAED,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED,IAAI,aAAa,IAAI,aAAa,GAAG,SAAS,CAE7C;IAED,IAAI,YAAY,IAAI,YAAY,CAE/B;IAED,IAAI,YAAY,IAAI,YAAY,CAE/B;IAED,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,GAAG,cAAc;CAYlD;AAED,eAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,GAAG,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EACL,cAAc,EAGf,MAAM,QAAQ,CAAA;AAEf,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAEnC,qBAAa,UAAU;IAEnB,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE;QACZ,GAAG,EAAE,YAAY,CAAA;QACjB,SAAS,EAAE,eAAe,CAAA;QAC1B,WAAW,EAAE,QAAQ,GAAG,SAAS,CAAA;QACjC,gBAAgB,EAAE,QAAQ,GAAG,SAAS,CAAA;QACtC,WAAW,EAAE,QAAQ,GAAG,SAAS,CAAA;QACjC,QAAQ,EAAE,QAAQ,CAAA;QAClB,KAAK,EAAE,KAAK,CAAA;QACZ,UAAU,EAAE,OAAO,CAAA;QACnB,UAAU,EAAE,UAAU,CAAA;QACtB,WAAW,EAAE,WAAW,CAAA;QACxB,aAAa,EAAE,aAAa,GAAG,SAAS,CAAA;QACxC,YAAY,EAAE,YAAY,CAAA;QAC1B,YAAY,EAAE,YAAY,CAAA;QAC1B,cAAc,EAAE,UAAU,CAAA;KAC3B;IAGH,IAAI,GAAG,IAAI,YAAY,CAEtB;IAED,IAAI,SAAS,IAAI,eAAe,CAE/B;IAED,IAAI,WAAW,IAAI,QAAQ,GAAG,SAAS,CAEtC;IAED,IAAI,gBAAgB,IAAI,QAAQ,GAAG,SAAS,CAE3C;IAED,IAAI,WAAW,IAAI,QAAQ,GAAG,SAAS,CAEtC;IAED,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,IAAI,KAAK,IAAI,KAAK,CAEjB;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,IAAI,SAAS,IAAI,GAAG,CAAC,MAAM,CAE1B;IAED,IAAI,UAAU,IAAI,UAAU,CAE3B;IAED,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED,IAAI,aAAa,IAAI,aAAa,GAAG,SAAS,CAE7C;IAED,IAAI,YAAY,IAAI,YAAY,CAE/B;IAED,IAAI,YAAY,IAAI,YAAY,CAE/B;IAED,IAAI,cAAc,IAAI,UAAU,CAE/B;IAED,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,GAAG,cAAc;CAYlD;AAED,eAAe,UAAU,CAAA"}
package/dist/context.js CHANGED
@@ -78,6 +78,9 @@ class AppContext {
78
78
  get featureGates() {
79
79
  return this.opts.featureGates;
80
80
  }
81
+ get blobDispatcher() {
82
+ return this.opts.blobDispatcher;
83
+ }
81
84
  reqLabelers(req) {
82
85
  const val = req.header('atproto-accept-labelers');
83
86
  let parsed;
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAAmC;AAYnC,iCAIe;AACf,qCAA4C;AAE5C,MAAa,UAAU;IACrB,YACU,IAcP;QAdD;;;;mBAAQ,IAAI;WAcX;IACA,CAAC;IAEJ,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;IACtB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAA;IAC5B,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAA;IAC9B,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAA;IACnC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAA;IAC9B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAA;IAC3B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;IACxB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAA;IAC7B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAA;IAC7B,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAA;IAC9B,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAA;IAChC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAA;IAC/B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAA;IAC/B,CAAC;IAED,WAAW,CAAC,GAAoB;QAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAA;QACjD,IAAI,MAA6B,CAAA;QACjC,IAAI,CAAC;YACH,MAAM,GAAG,IAAA,yBAAkB,EAAC,GAAG,CAAC,CAAA;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,IAAI,CAAA;YACb,mBAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,gCAAgC,CAAC,CAAA;QAC1D,CAAC;QACD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAA,2BAAoB,EAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;QACvE,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAvFD,gCAuFC;AAED,kBAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAAmC;AAYnC,iCAIe;AACf,qCAA4C;AAG5C,MAAa,UAAU;IACrB,YACU,IAeP;QAfD;;;;mBAAQ,IAAI;WAeX;IACA,CAAC;IAEJ,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;IACtB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAA;IAC5B,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAA;IAC9B,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAA;IACnC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAA;IAC9B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAA;IAC3B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;IACxB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAA;IAC7B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAA;IAC7B,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAA;IAC9B,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAA;IAChC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAA;IAC/B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAA;IAC/B,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAA;IACjC,CAAC;IAED,WAAW,CAAC,GAAoB;QAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAA;QACjD,IAAI,MAA6B,CAAA;QACjC,IAAI,CAAC;YACH,MAAM,GAAG,IAAA,yBAAkB,EAAC,GAAG,CAAC,CAAA;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,IAAI,CAAA;YACb,mBAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,gCAAgC,CAAC,CAAA;QAC1D,CAAC;QACD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAA,2BAAoB,EAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;QACvE,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AA5FD,gCA4FC;AAED,kBAAe,UAAU,CAAA"}
@@ -163,7 +163,7 @@ class IndexingService {
163
163
  const now = new Date().toISOString();
164
164
  const { pds, signingKey } = await this.idResolver.did.resolveAtprotoData(did, true);
165
165
  const { api } = new api_1.AtpAgent({ service: pds });
166
- const { data: car } = await (0, retry_1.retryHttp)(() => api.com.atproto.sync.getRepo({ did }));
166
+ const { data: car } = await (0, retry_1.retryXrpc)(() => api.com.atproto.sync.getRepo({ did }));
167
167
  const { root, blocks } = await (0, repo_1.readCarWithRoot)(car);
168
168
  const verifiedRepo = await (0, repo_1.verifyRepo)(blocks, root, did, signingKey);
169
169
  const currRecords = await this.getCurrentRecords(did);
@@ -262,7 +262,7 @@ class IndexingService {
262
262
  return false;
263
263
  const { api } = new api_1.AtpAgent({ service: pds });
264
264
  try {
265
- await (0, retry_1.retryHttp)(() => api.com.atproto.sync.getLatestCommit({ did }));
265
+ await (0, retry_1.retryXrpc)(() => api.com.atproto.sync.getLatestCommit({ did }));
266
266
  return true;
267
267
  }
268
268
  catch (err) {
@@ -1,16 +1,10 @@
1
- import fsSync from 'fs';
2
- import { Readable } from 'stream';
3
- import express, { Request, Response, Express, NextFunction } from 'express';
4
- import { ImageUriBuilder } from './uri';
5
- import { ServerConfig } from '../config';
6
- export declare class ImageProcessingServer {
7
- cfg: ServerConfig;
8
- cache: BlobCache;
9
- app: Express;
10
- uriBuilder: ImageUriBuilder;
11
- constructor(cfg: ServerConfig, cache: BlobCache);
12
- handler(req: Request, res: Response, next: NextFunction): Promise<void | express.Response<any, Record<string, any>>>;
13
- }
1
+ import fsSync from 'node:fs';
2
+ import { Readable } from 'node:stream';
3
+ import AppContext from '../context';
4
+ import { Middleware } from '../util/http';
5
+ export declare function createMiddleware(ctx: AppContext, { prefix }?: {
6
+ prefix?: string;
7
+ }): Middleware;
14
8
  export interface BlobCache {
15
9
  get(fileId: string): Promise<Readable & {
16
10
  size: number;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/image/server.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,IAAI,CAAA;AAGvB,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAEjC,OAAO,OAAO,EAAE,EACd,OAAO,EACP,QAAQ,EACR,OAAO,EAEP,YAAY,EACb,MAAM,SAAS,CAAA;AAQhB,OAAO,EAAgB,eAAe,EAAE,MAAM,OAAO,CAAA;AAKrD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAExC,qBAAa,qBAAqB;IAKvB,GAAG,EAAE,YAAY;IACjB,KAAK,EAAE,SAAS;IALzB,GAAG,EAAE,OAAO,CAAY;IACxB,UAAU,EAAE,eAAe,CAAA;gBAGlB,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,SAAS;IAOnB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY;CA0E9D;AAuBD,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACzD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpD,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B;AAED,qBAAa,aAAc,YAAW,SAAS;IAC7C,OAAO,EAAE,MAAM,CAAA;gBACH,QAAQ,CAAC,EAAE,MAAM;IAavB,GAAG,CAAC,MAAM,EAAE,MAAM;;;IAgBlB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ;IAWpC,KAAK,CAAC,MAAM,EAAE,MAAM;IAKpB,QAAQ;CAGf"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/image/server.ts"],"names":[],"mappings":"AASA,OAAO,MAAM,MAAM,SAAS,CAAA;AAI5B,OAAO,EAAU,QAAQ,EAAE,MAAM,aAAa,CAAA;AAI9C,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,UAAU,EAAkB,MAAM,cAAc,CAAA;AAMzD,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,UAAU,EACf,EAAE,MAAY,EAAE,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GACzC,UAAU,CA0HZ;AAsBD,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACzD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpD,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B;AAED,qBAAa,aAAc,YAAW,SAAS;IAC7C,OAAO,EAAE,MAAM,CAAA;gBACH,QAAQ,CAAC,EAAE,MAAM;IAavB,GAAG,CAAC,MAAM,EAAE,MAAM;;;IAgBlB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ;IAWpC,KAAK,CAAC,MAAM,EAAE,MAAM;IAKpB,QAAQ;CAGf"}
@@ -26,136 +26,149 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.BlobDiskCache = exports.ImageProcessingServer = void 0;
30
- const promises_1 = __importDefault(require("fs/promises"));
31
- const fs_1 = __importDefault(require("fs"));
32
- const os_1 = __importDefault(require("os"));
33
- const path_1 = __importDefault(require("path"));
34
- const axios_1 = __importStar(require("axios"));
35
- const express_1 = __importDefault(require("express"));
36
- const http_errors_1 = __importStar(require("http-errors"));
37
- const repo_1 = require("@atproto/repo");
29
+ exports.BlobDiskCache = void 0;
30
+ exports.createMiddleware = createMiddleware;
38
31
  const common_1 = require("@atproto/common");
39
- const uri_1 = require("./uri");
32
+ const repo_1 = require("@atproto/repo");
33
+ const http_errors_1 = __importStar(require("http-errors"));
34
+ const node_fs_1 = __importDefault(require("node:fs"));
35
+ const promises_1 = __importDefault(require("node:fs/promises"));
36
+ const node_os_1 = __importDefault(require("node:os"));
37
+ const node_path_1 = __importDefault(require("node:path"));
38
+ const promises_2 = require("node:stream/promises");
39
+ const blob_resolver_1 = require("../api/blob-resolver");
40
+ const http_1 = require("../util/http");
40
41
  const logger_1 = __importDefault(require("./logger"));
41
42
  const sharp_1 = require("./sharp");
43
+ const uri_1 = require("./uri");
42
44
  const util_1 = require("./util");
43
- const retry_1 = require("../util/retry");
44
- class ImageProcessingServer {
45
- constructor(cfg, cache) {
46
- Object.defineProperty(this, "cfg", {
47
- enumerable: true,
48
- configurable: true,
49
- writable: true,
50
- value: cfg
51
- });
52
- Object.defineProperty(this, "cache", {
53
- enumerable: true,
54
- configurable: true,
55
- writable: true,
56
- value: cache
57
- });
58
- Object.defineProperty(this, "app", {
59
- enumerable: true,
60
- configurable: true,
61
- writable: true,
62
- value: (0, express_1.default)()
63
- });
64
- Object.defineProperty(this, "uriBuilder", {
65
- enumerable: true,
66
- configurable: true,
67
- writable: true,
68
- value: void 0
69
- });
70
- this.uriBuilder = new uri_1.ImageUriBuilder('');
71
- this.app.get('*', this.handler.bind(this));
72
- this.app.use(errorMiddleware);
45
+ function createMiddleware(ctx, { prefix = '/' } = {}) {
46
+ if (!prefix.startsWith('/') || !prefix.endsWith('/')) {
47
+ throw new TypeError('Prefix must start and end with a slash');
48
+ }
49
+ // If there is a CDN, we don't need to serve images
50
+ if (ctx.cfg.cdnUrl) {
51
+ return (req, res, next) => next();
73
52
  }
74
- async handler(req, res, next) {
53
+ const cache = new BlobDiskCache(ctx.cfg.blobCacheLocation);
54
+ return async (req, res, next) => {
55
+ if (res.destroyed)
56
+ return;
57
+ if (req.method !== 'GET' && req.method !== 'HEAD')
58
+ return next();
59
+ if (!req.url?.startsWith(prefix))
60
+ return next();
61
+ const { 0: path, 1: _search } = req.url.slice(prefix.length - 1).split('?');
62
+ if (!path.startsWith('/') || path === '/')
63
+ return next();
75
64
  try {
76
- const path = req.path;
77
65
  const options = uri_1.ImageUriBuilder.getOptions(path);
78
- const cacheKey = [
79
- options.did,
80
- options.cid.toString(),
81
- options.preset,
82
- ].join('::');
66
+ const cacheKey = [options.did, options.cid, options.preset].join('::');
83
67
  // Cached flow
84
68
  try {
85
- const cachedImage = await this.cache.get(cacheKey);
69
+ const cachedImage = await cache.get(cacheKey);
86
70
  res.statusCode = 200;
87
71
  res.setHeader('x-cache', 'hit');
88
72
  res.setHeader('content-type', getMime(options.format));
89
73
  res.setHeader('cache-control', `public, max-age=31536000`); // 1 year
90
74
  res.setHeader('content-length', cachedImage.size);
91
- (0, common_1.forwardStreamErrors)(cachedImage, res);
92
- return cachedImage.pipe(res);
75
+ await (0, promises_2.pipeline)(cachedImage, res);
76
+ return;
93
77
  }
94
78
  catch (err) {
95
- // Ignore BlobNotFoundError and move on to non-cached flow
96
- if (!(err instanceof repo_1.BlobNotFoundError))
97
- throw err;
79
+ if (!(err instanceof repo_1.BlobNotFoundError)) {
80
+ logger_1.default.error({ cacheKey, err }, 'failed to serve cached image');
81
+ }
82
+ if (res.headersSent || res.destroyed) {
83
+ res.destroy();
84
+ return; // nothing we can do...
85
+ }
86
+ else {
87
+ // Ignore and move on to non-cached flow.
88
+ res.removeHeader('x-cache');
89
+ res.removeHeader('content-type');
90
+ res.removeHeader('cache-control');
91
+ res.removeHeader('content-length');
92
+ }
98
93
  }
99
94
  // Non-cached flow
100
- const { localUrl } = this.cfg;
101
- const did = options.did;
102
- const cidStr = options.cid.toString();
103
- const blobResult = await (0, retry_1.retryHttp)(() => getBlob({ baseUrl: localUrl, did, cid: cidStr }));
104
- const imageStream = blobResult.data;
105
- const processedImage = await (0, sharp_1.resize)(imageStream, options);
106
- // Cache in the background
107
- this.cache
108
- .put(cacheKey, (0, common_1.cloneStream)(processedImage))
109
- .catch((err) => logger_1.default.error(err, 'failed to cache image'));
110
- // Respond
111
- res.statusCode = 200;
112
- res.setHeader('x-cache', 'miss');
113
- res.setHeader('content-type', getMime(options.format));
114
- res.setHeader('cache-control', `public, max-age=31536000`); // 1 year
115
- (0, common_1.forwardStreamErrors)(processedImage, res);
116
- return (processedImage
117
- // @NOTE sharp does emit this in time to be set as a header
118
- .once('info', (info) => res.setHeader('content-length', info.size))
119
- .pipe(res));
95
+ const streamOptions = {
96
+ did: options.did,
97
+ cid: options.cid,
98
+ signal: (0, http_1.responseSignal)(res),
99
+ };
100
+ await (0, blob_resolver_1.streamBlob)(ctx, streamOptions, (upstream, { did, cid, url }) => {
101
+ // Definitely not an image ? Let's fail right away.
102
+ if (isImageMime(upstream.headers['content-type']) === false) {
103
+ throw (0, http_errors_1.default)(400, 'Not an image');
104
+ }
105
+ // Let's transform (decompress, verify CID, upscale), process and respond
106
+ const transforms = [
107
+ ...(0, common_1.createDecoders)(upstream.headers['content-encoding']),
108
+ new common_1.VerifyCidTransform(cid),
109
+ (0, sharp_1.createImageUpscaler)(options),
110
+ ];
111
+ const processor = (0, sharp_1.createImageProcessor)(options);
112
+ // Cache in the background
113
+ cache
114
+ .put(cacheKey, (0, common_1.cloneStream)(processor))
115
+ .catch((err) => logger_1.default.error(err, 'failed to cache image'));
116
+ res.statusCode = 200;
117
+ res.setHeader('cache-control', `public, max-age=31536000`); // 1 year
118
+ res.setHeader('x-cache', 'miss');
119
+ processor.once('info', ({ size, format }) => {
120
+ const type = util_1.formatsToMimes.get(format) || 'application/octet-stream';
121
+ // @NOTE sharp does emit this in time to be set as a header
122
+ res.setHeader('content-length', size);
123
+ res.setHeader('content-type', type);
124
+ });
125
+ const streams = [...transforms, processor, res];
126
+ void (0, promises_2.pipeline)(streams).catch((err) => {
127
+ logger_1.default.warn({ err, did, cid: cid.toString(), pds: url.origin }, 'blob resolution failed during transmission');
128
+ });
129
+ return streams[0];
130
+ });
120
131
  }
121
132
  catch (err) {
122
- if (err instanceof uri_1.BadPathError) {
123
- return next((0, http_errors_1.default)(400, err));
133
+ if (res.headersSent || res.destroyed) {
134
+ res.destroy();
124
135
  }
125
- if (err instanceof axios_1.AxiosError) {
126
- if (err.code === axios_1.AxiosError.ETIMEDOUT) {
127
- return next((0, http_errors_1.default)(504)); // Gateway timeout
136
+ else {
137
+ res.removeHeader('content-type');
138
+ res.removeHeader('content-length');
139
+ res.removeHeader('cache-control');
140
+ res.removeHeader('x-cache');
141
+ if (err instanceof uri_1.BadPathError) {
142
+ next((0, http_errors_1.default)(400, err));
128
143
  }
129
- if (!err.response || err.response.status >= 500) {
130
- return next((0, http_errors_1.default)(502));
144
+ else if (err instanceof common_1.VerifyCidError) {
145
+ next((0, http_errors_1.default)(404, 'Blob not found', err));
131
146
  }
132
- if (err.response.status === 400) {
133
- return next((0, http_errors_1.default)(400));
147
+ else if ((0, http_errors_1.isHttpError)(err)) {
148
+ next(err);
149
+ }
150
+ else {
151
+ next((0, http_errors_1.default)(502, 'Upstream Error', { cause: err }));
134
152
  }
135
- return next((0, http_errors_1.default)(404, 'Image not found'));
136
153
  }
137
- return next(err);
138
154
  }
139
- }
155
+ };
140
156
  }
141
- exports.ImageProcessingServer = ImageProcessingServer;
142
- const errorMiddleware = function (err, _req, res, next) {
143
- if ((0, http_errors_1.isHttpError)(err)) {
144
- logger_1.default.error(err, `error: ${err.message}`);
157
+ function isImageMime(contentType) {
158
+ if (contentType == null || contentType === 'application/octet-stream') {
159
+ return undefined; // maybe
145
160
  }
146
- else {
147
- logger_1.default.error(err, 'unhandled exception');
161
+ if (Array.isArray(contentType)) {
162
+ if (contentType.length === 0)
163
+ return undefined; // should never happen
164
+ if (contentType.length === 1)
165
+ return isImageMime(contentType[0]);
166
+ return contentType.every(isImageMime); // Should we throw a 502 here?
148
167
  }
149
- if (res.headersSent) {
150
- return next(err);
151
- }
152
- const httpError = (0, http_errors_1.default)(err);
153
- return res.status(httpError.status).json({
154
- message: httpError.expose ? httpError.message : 'Internal Server Error',
155
- });
156
- };
168
+ return contentType.startsWith('image/');
169
+ }
157
170
  function getMime(format) {
158
- const mime = util_1.formatsToMimes[format];
171
+ const mime = util_1.formatsToMimes.get(format);
159
172
  if (!mime)
160
173
  throw new Error('Unknown format');
161
174
  return mime;
@@ -168,12 +181,12 @@ class BlobDiskCache {
168
181
  writable: true,
169
182
  value: void 0
170
183
  });
171
- this.tempDir = basePath || path_1.default.join(os_1.default.tmpdir(), 'bsky--processed-images');
172
- if (!path_1.default.isAbsolute(this.tempDir)) {
184
+ this.tempDir = basePath || node_path_1.default.join(node_os_1.default.tmpdir(), 'bsky--processed-images');
185
+ if (!node_path_1.default.isAbsolute(this.tempDir)) {
173
186
  throw new Error('Must provide an absolute path');
174
187
  }
175
188
  try {
176
- fs_1.default.mkdirSync(this.tempDir, { recursive: true });
189
+ node_fs_1.default.mkdirSync(this.tempDir, { recursive: true });
177
190
  }
178
191
  catch (err) {
179
192
  // All good if cache dir already exists
@@ -183,7 +196,7 @@ class BlobDiskCache {
183
196
  }
184
197
  async get(fileId) {
185
198
  try {
186
- const handle = await promises_1.default.open(path_1.default.join(this.tempDir, fileId), 'r');
199
+ const handle = await promises_1.default.open(node_path_1.default.join(this.tempDir, fileId), 'r');
187
200
  const { size } = await handle.stat();
188
201
  if (size === 0) {
189
202
  throw new repo_1.BlobNotFoundError();
@@ -198,7 +211,7 @@ class BlobDiskCache {
198
211
  }
199
212
  }
200
213
  async put(fileId, stream) {
201
- const filename = path_1.default.join(this.tempDir, fileId);
214
+ const filename = node_path_1.default.join(this.tempDir, fileId);
202
215
  try {
203
216
  await promises_1.default.writeFile(filename, stream, { flag: 'wx' });
204
217
  }
@@ -210,7 +223,7 @@ class BlobDiskCache {
210
223
  }
211
224
  }
212
225
  async clear(fileId) {
213
- const filename = path_1.default.join(this.tempDir, fileId);
226
+ const filename = node_path_1.default.join(this.tempDir, fileId);
214
227
  await promises_1.default.rm(filename, { force: true });
215
228
  }
216
229
  async clearAll() {
@@ -218,13 +231,4 @@ class BlobDiskCache {
218
231
  }
219
232
  }
220
233
  exports.BlobDiskCache = BlobDiskCache;
221
- function getBlob(opts) {
222
- const { baseUrl, did, cid } = opts;
223
- const enc = encodeURIComponent;
224
- return axios_1.default.get(`${baseUrl}/blob/${enc(did)}/${enc(cid)}`, {
225
- decompress: true,
226
- responseType: 'stream',
227
- timeout: 2000, // 2sec of inactivity on the connection
228
- });
229
- }
230
234
  //# sourceMappingURL=server.js.map