@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.
- package/CHANGELOG.md +19 -0
- package/dist/api/blob-dispatcher.d.ts +4 -0
- package/dist/api/blob-dispatcher.d.ts.map +1 -0
- package/dist/api/blob-dispatcher.js +37 -0
- package/dist/api/blob-dispatcher.js.map +1 -0
- package/dist/api/blob-resolver.d.ts +17 -8
- package/dist/api/blob-resolver.d.ts.map +1 -1
- package/dist/api/blob-resolver.js +246 -99
- package/dist/api/blob-resolver.js.map +1 -1
- package/dist/api/well-known.d.ts.map +1 -1
- package/dist/api/well-known.js +30 -24
- package/dist/api/well-known.js.map +1 -1
- package/dist/config.d.ts +14 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +40 -5
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +3 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +3 -0
- package/dist/context.js.map +1 -1
- package/dist/data-plane/server/indexing/index.js +2 -2
- package/dist/image/server.d.ts +7 -13
- package/dist/image/server.d.ts.map +1 -1
- package/dist/image/server.js +119 -115
- package/dist/image/server.js.map +1 -1
- package/dist/image/sharp.d.ts +11 -2
- package/dist/image/sharp.d.ts.map +1 -1
- package/dist/image/sharp.js +35 -38
- package/dist/image/sharp.js.map +1 -1
- package/dist/image/util.d.ts +6 -4
- package/dist/image/util.d.ts.map +1 -1
- package/dist/image/util.js +14 -10
- package/dist/image/util.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -10
- package/dist/index.js.map +1 -1
- package/dist/util/http.d.ts +12 -0
- package/dist/util/http.d.ts.map +1 -0
- package/dist/util/http.js +36 -0
- package/dist/util/http.js.map +1 -0
- package/dist/util/retry.d.ts +2 -5
- package/dist/util/retry.d.ts.map +1 -1
- package/dist/util/retry.js +8 -27
- package/dist/util/retry.js.map +1 -1
- package/package.json +17 -13
- package/src/api/blob-dispatcher.ts +38 -0
- package/src/api/blob-resolver.ts +341 -106
- package/src/api/well-known.ts +31 -24
- package/src/config.ts +63 -6
- package/src/context.ts +6 -0
- package/src/data-plane/server/indexing/index.ts +3 -3
- package/src/image/server.ts +131 -107
- package/src/image/sharp.ts +48 -52
- package/src/image/util.ts +20 -12
- package/src/index.ts +8 -15
- package/src/util/http.ts +41 -0
- package/src/util/retry.ts +8 -32
- package/tests/_util.ts +50 -3
- package/tests/blob-resolver.test.ts +62 -36
- package/tests/image/server.test.ts +40 -32
- package/tests/image/sharp.test.ts +17 -4
- package/tests/label-hydration.test.ts +6 -6
- package/tests/server.test.ts +41 -56
- 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
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IAEjC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,qBAAqB,EAAE,MAAM,EAAE,CAAA;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAEhC,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,oBAAoB,CAAC,EAAE,KAAK,GAAG,GAAG,CAAA;IAClC,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gBAAgB,CAAC,EAAE,KAAK,GAAG,GAAG,CAAA;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,kBAAkB,CAAC,EAAE,KAAK,GAAG,GAAG,CAAA;IAChC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,2BAA2B,CAAC,EAAE,MAAM,CAAA;IAEpC,SAAS,EAAE,MAAM,CAAA;IACjB,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAA;IAEnC,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC/B,cAAc,CAAC,EAAE,IAAI,CAAA;IAErB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC,aAAa,CAAC,EAAE,OAAO,CAAA;
|
|
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 =
|
|
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) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAgC;
|
|
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;
|
package/dist/context.d.ts.map
CHANGED
|
@@ -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;
|
|
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
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAAmC;AAYnC,iCAIe;AACf,qCAA4C;
|
|
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.
|
|
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.
|
|
265
|
+
await (0, retry_1.retryXrpc)(() => api.com.atproto.sync.getLatestCommit({ did }));
|
|
266
266
|
return true;
|
|
267
267
|
}
|
|
268
268
|
catch (err) {
|
package/dist/image/server.d.ts
CHANGED
|
@@ -1,16 +1,10 @@
|
|
|
1
|
-
import fsSync from 'fs';
|
|
2
|
-
import { Readable } from 'stream';
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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":"
|
|
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"}
|
package/dist/image/server.js
CHANGED
|
@@ -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 =
|
|
30
|
-
|
|
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
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
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
|
|
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,
|
|
92
|
-
return
|
|
75
|
+
await (0, promises_2.pipeline)(cachedImage, res);
|
|
76
|
+
return;
|
|
93
77
|
}
|
|
94
78
|
catch (err) {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
//
|
|
118
|
-
|
|
119
|
-
|
|
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 (
|
|
123
|
-
|
|
133
|
+
if (res.headersSent || res.destroyed) {
|
|
134
|
+
res.destroy();
|
|
124
135
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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 (
|
|
130
|
-
|
|
144
|
+
else if (err instanceof common_1.VerifyCidError) {
|
|
145
|
+
next((0, http_errors_1.default)(404, 'Blob not found', err));
|
|
131
146
|
}
|
|
132
|
-
if (
|
|
133
|
-
|
|
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
|
-
|
|
142
|
-
|
|
143
|
-
|
|
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
|
-
|
|
147
|
-
|
|
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
|
-
|
|
150
|
-
|
|
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
|
|
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 ||
|
|
172
|
-
if (!
|
|
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
|
-
|
|
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(
|
|
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 =
|
|
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 =
|
|
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
|