@fedify/fedify 2.3.0-dev.1158 → 2.3.0-dev.1172
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/dist/{builder-B66L9i5E.mjs → builder-JoFBmqfM.mjs} +2 -2
- package/dist/compat/transformers.test.mjs +1 -1
- package/dist/{deno-O_rwum1q.mjs → deno-Cb_y5qEi.mjs} +1 -1
- package/dist/{docloader-Ct8PhKFS.mjs → docloader-Bv4TW6eo.mjs} +2 -2
- package/dist/federation/builder.test.mjs +1 -1
- package/dist/federation/handler.test.mjs +305 -3
- package/dist/federation/idempotency.test.mjs +2 -2
- package/dist/federation/metrics.test.mjs +80 -1
- package/dist/federation/middleware.test.mjs +20 -6
- package/dist/federation/mod.cjs +1 -1
- package/dist/federation/mod.js +1 -1
- package/dist/federation/send.test.mjs +3 -3
- package/dist/federation/temporal.test.mjs +1 -1
- package/dist/federation/webfinger.test.mjs +1 -1
- package/dist/{http-BoRhhcgB.mjs → http--aE0vk2u.mjs} +3 -3
- package/dist/{http-CFP8WMMv.js → http-C0XZv7iH.js} +92 -2
- package/dist/{http-DlPd_LYM.cjs → http-D_HNhC57.cjs} +115 -1
- package/dist/{key-DyATZSWG.mjs → key-Cl_bixZo.mjs} +2 -2
- package/dist/{kv-cache-BJo6COYN.cjs → kv-cache-CdOuPFgC.cjs} +1 -1
- package/dist/{kv-cache-DeJE8EeD.mjs → kv-cache-DQUblF4f.mjs} +1 -1
- package/dist/{kv-cache-dH0biV98.js → kv-cache-DsbVBK7Y.js} +1 -1
- package/dist/{ld-B8wjsKDJ.mjs → ld-xVq6y31b.mjs} +3 -3
- package/dist/{metrics-oMUWaw6W.mjs → metrics-CKticT28.mjs} +92 -2
- package/dist/{middleware-DwZ1ofL9.js → middleware-BSuEI4Qf.js} +318 -107
- package/dist/{middleware-BzOa0ncb.mjs → middleware-BmPIKmb4.mjs} +1 -1
- package/dist/{middleware-xtTRaiJL.mjs → middleware-DHM2Pjqf.mjs} +327 -116
- package/dist/{middleware-CcJyVEpv.cjs → middleware-hxnyAewn.cjs} +318 -107
- package/dist/mod.cjs +4 -4
- package/dist/mod.js +4 -4
- package/dist/nodeinfo/handler.test.mjs +1 -1
- package/dist/{owner-BxjgK8PG.mjs → owner-DmU2qEh_.mjs} +2 -2
- package/dist/{proof-42Q9NiqN.mjs → proof-1XBgQ0Z0.mjs} +3 -3
- package/dist/{proof-B_6gAVQ2.js → proof-CmS6yxgt.js} +1 -1
- package/dist/{proof-CfttNzWW.cjs → proof-wm6UxUoM.cjs} +1 -1
- package/dist/{send-R1_K46CH.mjs → send-CmtB8w5D.mjs} +3 -3
- package/dist/sig/http.test.mjs +2 -2
- package/dist/sig/key.test.mjs +1 -1
- package/dist/sig/ld.test.mjs +2 -2
- package/dist/sig/mod.cjs +2 -2
- package/dist/sig/mod.js +2 -2
- package/dist/sig/owner.test.mjs +1 -1
- package/dist/sig/proof.test.mjs +1 -1
- package/dist/{temporal-8kDX3E4q.mjs → temporal-DE9_a2nI.mjs} +1 -1
- package/dist/utils/docloader.test.mjs +2 -2
- package/dist/utils/kv-cache.test.mjs +1 -1
- package/dist/utils/mod.cjs +1 -1
- package/dist/utils/mod.js +1 -1
- package/package.json +6 -6
|
@@ -10,7 +10,7 @@ import { ATTR_HTTP_REQUEST_HEADER, ATTR_HTTP_REQUEST_METHOD, ATTR_URL_FULL } fro
|
|
|
10
10
|
import { decodeBase64, encodeBase64 } from "byte-encodings/base64";
|
|
11
11
|
//#region deno.json
|
|
12
12
|
var name = "@fedify/fedify";
|
|
13
|
-
var version = "2.3.0-dev.
|
|
13
|
+
var version = "2.3.0-dev.1172+8cc8a23f";
|
|
14
14
|
//#endregion
|
|
15
15
|
//#region src/sig/accept.ts
|
|
16
16
|
/**
|
|
@@ -178,6 +178,10 @@ var FederationMetrics = class {
|
|
|
178
178
|
documentCache;
|
|
179
179
|
webFingerHandle;
|
|
180
180
|
webFingerHandleDuration;
|
|
181
|
+
collectionRequest;
|
|
182
|
+
collectionDispatchDuration;
|
|
183
|
+
collectionPageItems;
|
|
184
|
+
collectionTotalItems;
|
|
181
185
|
constructor(meterProvider) {
|
|
182
186
|
const meter = meterProvider.getMeter(name, version);
|
|
183
187
|
this.deliverySent = meter.createCounter("activitypub.delivery.sent", {
|
|
@@ -360,6 +364,38 @@ var FederationMetrics = class {
|
|
|
360
364
|
1e4
|
|
361
365
|
] }
|
|
362
366
|
});
|
|
367
|
+
this.collectionRequest = meter.createCounter("activitypub.collection.request", {
|
|
368
|
+
description: "ActivityPub collection and collection-page requests handled by Fedify.",
|
|
369
|
+
unit: "{request}"
|
|
370
|
+
});
|
|
371
|
+
this.collectionDispatchDuration = meter.createHistogram("activitypub.collection.dispatch.duration", {
|
|
372
|
+
description: "Duration of ActivityPub collection dispatcher callbacks.",
|
|
373
|
+
unit: "ms",
|
|
374
|
+
advice: { explicitBucketBoundaries: [
|
|
375
|
+
5,
|
|
376
|
+
10,
|
|
377
|
+
25,
|
|
378
|
+
50,
|
|
379
|
+
75,
|
|
380
|
+
100,
|
|
381
|
+
250,
|
|
382
|
+
500,
|
|
383
|
+
750,
|
|
384
|
+
1e3,
|
|
385
|
+
2500,
|
|
386
|
+
5e3,
|
|
387
|
+
7500,
|
|
388
|
+
1e4
|
|
389
|
+
] }
|
|
390
|
+
});
|
|
391
|
+
this.collectionPageItems = meter.createHistogram("activitypub.collection.page.items", {
|
|
392
|
+
description: "Number of items Fedify materialized for an ActivityPub collection response.",
|
|
393
|
+
unit: "{item}"
|
|
394
|
+
});
|
|
395
|
+
this.collectionTotalItems = meter.createHistogram("activitypub.collection.total_items", {
|
|
396
|
+
description: "Total item count reported by ActivityPub collection counters.",
|
|
397
|
+
unit: "{item}"
|
|
398
|
+
});
|
|
363
399
|
}
|
|
364
400
|
recordDelivery(inbox, durationMs, success, activityType) {
|
|
365
401
|
const deliveryAttributes = {
|
|
@@ -480,7 +516,29 @@ var FederationMetrics = class {
|
|
|
480
516
|
this.webFingerHandle.add(1, attributes);
|
|
481
517
|
this.webFingerHandleDuration.record(attrs.durationMs, attributes);
|
|
482
518
|
}
|
|
519
|
+
recordCollectionRequest(attrs) {
|
|
520
|
+
this.collectionRequest.add(1, buildCollectionAttributes(attrs));
|
|
521
|
+
}
|
|
522
|
+
recordCollectionDispatchDuration(durationMs, attrs) {
|
|
523
|
+
this.collectionDispatchDuration.record(durationMs, buildCollectionAttributes(attrs));
|
|
524
|
+
}
|
|
525
|
+
recordCollectionPageItems(itemCount, attrs) {
|
|
526
|
+
this.collectionPageItems.record(itemCount, buildCollectionAttributes(attrs));
|
|
527
|
+
}
|
|
528
|
+
recordCollectionTotalItems(totalItems, attrs) {
|
|
529
|
+
this.collectionTotalItems.record(totalItems, buildCollectionAttributes(attrs));
|
|
530
|
+
}
|
|
483
531
|
};
|
|
532
|
+
function buildCollectionAttributes(attrs) {
|
|
533
|
+
const attributes = {
|
|
534
|
+
"activitypub.collection.kind": attrs.kind,
|
|
535
|
+
"activitypub.collection.page": attrs.page,
|
|
536
|
+
"activitypub.collection.result": attrs.result,
|
|
537
|
+
"fedify.collection.dispatcher": attrs.dispatcher
|
|
538
|
+
};
|
|
539
|
+
if (attrs.statusCode != null) attributes["http.response.status_code"] = attrs.statusCode;
|
|
540
|
+
return attributes;
|
|
541
|
+
}
|
|
484
542
|
function buildActivityLifecycleAttributes(result, activityType) {
|
|
485
543
|
const attributes = { "activitypub.processing.result": result };
|
|
486
544
|
if (activityType != null) attributes["activitypub.activity.type"] = activityType;
|
|
@@ -617,6 +675,38 @@ function recordWebFingerHandle(meterProvider, attrs) {
|
|
|
617
675
|
getFederationMetrics(meterProvider).recordWebFingerHandle(attrs);
|
|
618
676
|
}
|
|
619
677
|
/**
|
|
678
|
+
* Records one `activitypub.collection.request` measurement for a
|
|
679
|
+
* collection or collection-page request handled by Fedify.
|
|
680
|
+
* @since 2.3.0
|
|
681
|
+
*/
|
|
682
|
+
function recordCollectionRequest(meterProvider, attrs) {
|
|
683
|
+
getFederationMetrics(meterProvider).recordCollectionRequest(attrs);
|
|
684
|
+
}
|
|
685
|
+
/**
|
|
686
|
+
* Records one `activitypub.collection.dispatch.duration` measurement for a
|
|
687
|
+
* collection dispatcher callback invocation.
|
|
688
|
+
* @since 2.3.0
|
|
689
|
+
*/
|
|
690
|
+
function recordCollectionDispatchDuration(meterProvider, durationMs, attrs) {
|
|
691
|
+
getFederationMetrics(meterProvider).recordCollectionDispatchDuration(durationMs, attrs);
|
|
692
|
+
}
|
|
693
|
+
/**
|
|
694
|
+
* Records one `activitypub.collection.page.items` measurement when Fedify
|
|
695
|
+
* has materialized collection items in memory.
|
|
696
|
+
* @since 2.3.0
|
|
697
|
+
*/
|
|
698
|
+
function recordCollectionPageItems(meterProvider, itemCount, attrs) {
|
|
699
|
+
getFederationMetrics(meterProvider).recordCollectionPageItems(itemCount, attrs);
|
|
700
|
+
}
|
|
701
|
+
/**
|
|
702
|
+
* Records one `activitypub.collection.total_items` measurement when a
|
|
703
|
+
* collection counter has already reported a total item count.
|
|
704
|
+
* @since 2.3.0
|
|
705
|
+
*/
|
|
706
|
+
function recordCollectionTotalItems(meterProvider, totalItems, attrs) {
|
|
707
|
+
getFederationMetrics(meterProvider).recordCollectionTotalItems(totalItems, attrs);
|
|
708
|
+
}
|
|
709
|
+
/**
|
|
620
710
|
* Classifies a thrown value from a key or document fetch into the bounded
|
|
621
711
|
* {@link LookupResult} taxonomy and, when an HTTP response was received,
|
|
622
712
|
* surfaces its status code.
|
|
@@ -2222,4 +2312,4 @@ function timingSafeEqual(a, b) {
|
|
|
2222
2312
|
return result === 0;
|
|
2223
2313
|
}
|
|
2224
2314
|
//#endregion
|
|
2225
|
-
export {
|
|
2315
|
+
export { parseAcceptSignature as A, recordFanoutRecipients as C, recordWebFingerHandle as D, recordOutboxEnqueue as E, name as M, version as N, formatAcceptSignature as O, recordDocumentCache as S, recordOutboxActivity as T, measureSignatureKeyFetch as _, verifyRequestDetailed as a, recordCollectionRequest as b, fetchKeyDetailed as c, validateCryptoKey as d, getDurationMs as f, isAbortError$1 as g, instrumentDocumentLoader as h, verifyRequest as i, validateAcceptSignature as j, fulfillAcceptSignature as k, generateCryptoKeyPair as l, getRemoteHost as m, parseRfc9421SignatureInput as n, exportJwk as o, getFederationMetrics as p, signRequest as r, fetchKey as s, doubleKnock as t, importJwk as u, recordCollectionDispatchDuration as v, recordInboxActivity as w, recordCollectionTotalItems as x, recordCollectionPageItems as y };
|
|
@@ -11,7 +11,7 @@ let _opentelemetry_semantic_conventions = require("@opentelemetry/semantic-conve
|
|
|
11
11
|
let byte_encodings_base64 = require("byte-encodings/base64");
|
|
12
12
|
//#region deno.json
|
|
13
13
|
var name = "@fedify/fedify";
|
|
14
|
-
var version = "2.3.0-dev.
|
|
14
|
+
var version = "2.3.0-dev.1172+8cc8a23f";
|
|
15
15
|
//#endregion
|
|
16
16
|
//#region src/sig/accept.ts
|
|
17
17
|
/**
|
|
@@ -179,6 +179,10 @@ var FederationMetrics = class {
|
|
|
179
179
|
documentCache;
|
|
180
180
|
webFingerHandle;
|
|
181
181
|
webFingerHandleDuration;
|
|
182
|
+
collectionRequest;
|
|
183
|
+
collectionDispatchDuration;
|
|
184
|
+
collectionPageItems;
|
|
185
|
+
collectionTotalItems;
|
|
182
186
|
constructor(meterProvider) {
|
|
183
187
|
const meter = meterProvider.getMeter(name, version);
|
|
184
188
|
this.deliverySent = meter.createCounter("activitypub.delivery.sent", {
|
|
@@ -361,6 +365,38 @@ var FederationMetrics = class {
|
|
|
361
365
|
1e4
|
|
362
366
|
] }
|
|
363
367
|
});
|
|
368
|
+
this.collectionRequest = meter.createCounter("activitypub.collection.request", {
|
|
369
|
+
description: "ActivityPub collection and collection-page requests handled by Fedify.",
|
|
370
|
+
unit: "{request}"
|
|
371
|
+
});
|
|
372
|
+
this.collectionDispatchDuration = meter.createHistogram("activitypub.collection.dispatch.duration", {
|
|
373
|
+
description: "Duration of ActivityPub collection dispatcher callbacks.",
|
|
374
|
+
unit: "ms",
|
|
375
|
+
advice: { explicitBucketBoundaries: [
|
|
376
|
+
5,
|
|
377
|
+
10,
|
|
378
|
+
25,
|
|
379
|
+
50,
|
|
380
|
+
75,
|
|
381
|
+
100,
|
|
382
|
+
250,
|
|
383
|
+
500,
|
|
384
|
+
750,
|
|
385
|
+
1e3,
|
|
386
|
+
2500,
|
|
387
|
+
5e3,
|
|
388
|
+
7500,
|
|
389
|
+
1e4
|
|
390
|
+
] }
|
|
391
|
+
});
|
|
392
|
+
this.collectionPageItems = meter.createHistogram("activitypub.collection.page.items", {
|
|
393
|
+
description: "Number of items Fedify materialized for an ActivityPub collection response.",
|
|
394
|
+
unit: "{item}"
|
|
395
|
+
});
|
|
396
|
+
this.collectionTotalItems = meter.createHistogram("activitypub.collection.total_items", {
|
|
397
|
+
description: "Total item count reported by ActivityPub collection counters.",
|
|
398
|
+
unit: "{item}"
|
|
399
|
+
});
|
|
364
400
|
}
|
|
365
401
|
recordDelivery(inbox, durationMs, success, activityType) {
|
|
366
402
|
const deliveryAttributes = {
|
|
@@ -481,7 +517,29 @@ var FederationMetrics = class {
|
|
|
481
517
|
this.webFingerHandle.add(1, attributes);
|
|
482
518
|
this.webFingerHandleDuration.record(attrs.durationMs, attributes);
|
|
483
519
|
}
|
|
520
|
+
recordCollectionRequest(attrs) {
|
|
521
|
+
this.collectionRequest.add(1, buildCollectionAttributes(attrs));
|
|
522
|
+
}
|
|
523
|
+
recordCollectionDispatchDuration(durationMs, attrs) {
|
|
524
|
+
this.collectionDispatchDuration.record(durationMs, buildCollectionAttributes(attrs));
|
|
525
|
+
}
|
|
526
|
+
recordCollectionPageItems(itemCount, attrs) {
|
|
527
|
+
this.collectionPageItems.record(itemCount, buildCollectionAttributes(attrs));
|
|
528
|
+
}
|
|
529
|
+
recordCollectionTotalItems(totalItems, attrs) {
|
|
530
|
+
this.collectionTotalItems.record(totalItems, buildCollectionAttributes(attrs));
|
|
531
|
+
}
|
|
484
532
|
};
|
|
533
|
+
function buildCollectionAttributes(attrs) {
|
|
534
|
+
const attributes = {
|
|
535
|
+
"activitypub.collection.kind": attrs.kind,
|
|
536
|
+
"activitypub.collection.page": attrs.page,
|
|
537
|
+
"activitypub.collection.result": attrs.result,
|
|
538
|
+
"fedify.collection.dispatcher": attrs.dispatcher
|
|
539
|
+
};
|
|
540
|
+
if (attrs.statusCode != null) attributes["http.response.status_code"] = attrs.statusCode;
|
|
541
|
+
return attributes;
|
|
542
|
+
}
|
|
485
543
|
function buildActivityLifecycleAttributes(result, activityType) {
|
|
486
544
|
const attributes = { "activitypub.processing.result": result };
|
|
487
545
|
if (activityType != null) attributes["activitypub.activity.type"] = activityType;
|
|
@@ -618,6 +676,38 @@ function recordWebFingerHandle(meterProvider, attrs) {
|
|
|
618
676
|
getFederationMetrics(meterProvider).recordWebFingerHandle(attrs);
|
|
619
677
|
}
|
|
620
678
|
/**
|
|
679
|
+
* Records one `activitypub.collection.request` measurement for a
|
|
680
|
+
* collection or collection-page request handled by Fedify.
|
|
681
|
+
* @since 2.3.0
|
|
682
|
+
*/
|
|
683
|
+
function recordCollectionRequest(meterProvider, attrs) {
|
|
684
|
+
getFederationMetrics(meterProvider).recordCollectionRequest(attrs);
|
|
685
|
+
}
|
|
686
|
+
/**
|
|
687
|
+
* Records one `activitypub.collection.dispatch.duration` measurement for a
|
|
688
|
+
* collection dispatcher callback invocation.
|
|
689
|
+
* @since 2.3.0
|
|
690
|
+
*/
|
|
691
|
+
function recordCollectionDispatchDuration(meterProvider, durationMs, attrs) {
|
|
692
|
+
getFederationMetrics(meterProvider).recordCollectionDispatchDuration(durationMs, attrs);
|
|
693
|
+
}
|
|
694
|
+
/**
|
|
695
|
+
* Records one `activitypub.collection.page.items` measurement when Fedify
|
|
696
|
+
* has materialized collection items in memory.
|
|
697
|
+
* @since 2.3.0
|
|
698
|
+
*/
|
|
699
|
+
function recordCollectionPageItems(meterProvider, itemCount, attrs) {
|
|
700
|
+
getFederationMetrics(meterProvider).recordCollectionPageItems(itemCount, attrs);
|
|
701
|
+
}
|
|
702
|
+
/**
|
|
703
|
+
* Records one `activitypub.collection.total_items` measurement when a
|
|
704
|
+
* collection counter has already reported a total item count.
|
|
705
|
+
* @since 2.3.0
|
|
706
|
+
*/
|
|
707
|
+
function recordCollectionTotalItems(meterProvider, totalItems, attrs) {
|
|
708
|
+
getFederationMetrics(meterProvider).recordCollectionTotalItems(totalItems, attrs);
|
|
709
|
+
}
|
|
710
|
+
/**
|
|
621
711
|
* Classifies a thrown value from a key or document fetch into the bounded
|
|
622
712
|
* {@link LookupResult} taxonomy and, when an HTTP response was received,
|
|
623
713
|
* surfaces its status code.
|
|
@@ -2325,6 +2415,30 @@ Object.defineProperty(exports, "parseRfc9421SignatureInput", {
|
|
|
2325
2415
|
return parseRfc9421SignatureInput;
|
|
2326
2416
|
}
|
|
2327
2417
|
});
|
|
2418
|
+
Object.defineProperty(exports, "recordCollectionDispatchDuration", {
|
|
2419
|
+
enumerable: true,
|
|
2420
|
+
get: function() {
|
|
2421
|
+
return recordCollectionDispatchDuration;
|
|
2422
|
+
}
|
|
2423
|
+
});
|
|
2424
|
+
Object.defineProperty(exports, "recordCollectionPageItems", {
|
|
2425
|
+
enumerable: true,
|
|
2426
|
+
get: function() {
|
|
2427
|
+
return recordCollectionPageItems;
|
|
2428
|
+
}
|
|
2429
|
+
});
|
|
2430
|
+
Object.defineProperty(exports, "recordCollectionRequest", {
|
|
2431
|
+
enumerable: true,
|
|
2432
|
+
get: function() {
|
|
2433
|
+
return recordCollectionRequest;
|
|
2434
|
+
}
|
|
2435
|
+
});
|
|
2436
|
+
Object.defineProperty(exports, "recordCollectionTotalItems", {
|
|
2437
|
+
enumerable: true,
|
|
2438
|
+
get: function() {
|
|
2439
|
+
return recordCollectionTotalItems;
|
|
2440
|
+
}
|
|
2441
|
+
});
|
|
2328
2442
|
Object.defineProperty(exports, "recordDocumentCache", {
|
|
2329
2443
|
enumerable: true,
|
|
2330
2444
|
get: function() {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "@js-temporal/polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { n as version, t as name } from "./deno-
|
|
5
|
-
import {
|
|
4
|
+
import { n as version, t as name } from "./deno-Cb_y5qEi.mjs";
|
|
5
|
+
import { g as recordKeyLookup, n as getDurationMs, t as classifyFetchError } from "./metrics-CKticT28.mjs";
|
|
6
6
|
import { getLogger } from "@logtape/logtape";
|
|
7
7
|
import { CryptographicKey, Object as Object$1, isActor } from "@fedify/vocab";
|
|
8
8
|
import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const { Temporal } = require("@js-temporal/polyfill");
|
|
2
2
|
const { URLPattern } = require("urlpattern-polyfill");
|
|
3
3
|
require("./chunk-DDcVe30Y.cjs");
|
|
4
|
-
const require_http = require("./http-
|
|
4
|
+
const require_http = require("./http-D_HNhC57.cjs");
|
|
5
5
|
let _logtape_logtape = require("@logtape/logtape");
|
|
6
6
|
let es_toolkit = require("es-toolkit");
|
|
7
7
|
let _fedify_vocab_runtime = require("@fedify/vocab-runtime");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import { URLPattern } from "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import {
|
|
4
|
+
import { f as recordDocumentCache } from "./metrics-CKticT28.mjs";
|
|
5
5
|
import { getLogger } from "@logtape/logtape";
|
|
6
6
|
import { preloadedContexts } from "@fedify/vocab-runtime";
|
|
7
7
|
//#region src/utils/kv-cache.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import { URLPattern } from "urlpattern-polyfill";
|
|
3
|
-
import {
|
|
3
|
+
import { S as recordDocumentCache, d as validateCryptoKey, t as doubleKnock } from "./http-C0XZv7iH.js";
|
|
4
4
|
import { getLogger } from "@logtape/logtape";
|
|
5
5
|
import { curry } from "es-toolkit";
|
|
6
6
|
import { UrlError, createActivityPubRequest, getRemoteDocument, logRequest, preloadedContexts, validatePublicUrl } from "@fedify/vocab-runtime";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "@js-temporal/polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { n as version, t as name } from "./deno-
|
|
5
|
-
import { n as getDurationMs, r as getFederationMetrics, s as measureSignatureKeyFetch } from "./metrics-
|
|
6
|
-
import { n as fetchKey, o as validateCryptoKey } from "./key-
|
|
4
|
+
import { n as version, t as name } from "./deno-Cb_y5qEi.mjs";
|
|
5
|
+
import { n as getDurationMs, r as getFederationMetrics, s as measureSignatureKeyFetch } from "./metrics-CKticT28.mjs";
|
|
6
|
+
import { n as fetchKey, o as validateCryptoKey } from "./key-Cl_bixZo.mjs";
|
|
7
7
|
import { getLogger } from "@logtape/logtape";
|
|
8
8
|
import { Activity, CryptographicKey, Object as Object$1, getTypeId } from "@fedify/vocab";
|
|
9
9
|
import { SpanStatusCode, trace } from "@opentelemetry/api";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "@js-temporal/polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { n as version, t as name } from "./deno-
|
|
4
|
+
import { n as version, t as name } from "./deno-Cb_y5qEi.mjs";
|
|
5
5
|
import { metrics } from "@opentelemetry/api";
|
|
6
6
|
import { FetchError } from "@fedify/vocab-runtime";
|
|
7
7
|
//#region src/federation/metrics.ts
|
|
@@ -31,6 +31,10 @@ var FederationMetrics = class {
|
|
|
31
31
|
documentCache;
|
|
32
32
|
webFingerHandle;
|
|
33
33
|
webFingerHandleDuration;
|
|
34
|
+
collectionRequest;
|
|
35
|
+
collectionDispatchDuration;
|
|
36
|
+
collectionPageItems;
|
|
37
|
+
collectionTotalItems;
|
|
34
38
|
constructor(meterProvider) {
|
|
35
39
|
const meter = meterProvider.getMeter(name, version);
|
|
36
40
|
this.deliverySent = meter.createCounter("activitypub.delivery.sent", {
|
|
@@ -213,6 +217,38 @@ var FederationMetrics = class {
|
|
|
213
217
|
1e4
|
|
214
218
|
] }
|
|
215
219
|
});
|
|
220
|
+
this.collectionRequest = meter.createCounter("activitypub.collection.request", {
|
|
221
|
+
description: "ActivityPub collection and collection-page requests handled by Fedify.",
|
|
222
|
+
unit: "{request}"
|
|
223
|
+
});
|
|
224
|
+
this.collectionDispatchDuration = meter.createHistogram("activitypub.collection.dispatch.duration", {
|
|
225
|
+
description: "Duration of ActivityPub collection dispatcher callbacks.",
|
|
226
|
+
unit: "ms",
|
|
227
|
+
advice: { explicitBucketBoundaries: [
|
|
228
|
+
5,
|
|
229
|
+
10,
|
|
230
|
+
25,
|
|
231
|
+
50,
|
|
232
|
+
75,
|
|
233
|
+
100,
|
|
234
|
+
250,
|
|
235
|
+
500,
|
|
236
|
+
750,
|
|
237
|
+
1e3,
|
|
238
|
+
2500,
|
|
239
|
+
5e3,
|
|
240
|
+
7500,
|
|
241
|
+
1e4
|
|
242
|
+
] }
|
|
243
|
+
});
|
|
244
|
+
this.collectionPageItems = meter.createHistogram("activitypub.collection.page.items", {
|
|
245
|
+
description: "Number of items Fedify materialized for an ActivityPub collection response.",
|
|
246
|
+
unit: "{item}"
|
|
247
|
+
});
|
|
248
|
+
this.collectionTotalItems = meter.createHistogram("activitypub.collection.total_items", {
|
|
249
|
+
description: "Total item count reported by ActivityPub collection counters.",
|
|
250
|
+
unit: "{item}"
|
|
251
|
+
});
|
|
216
252
|
}
|
|
217
253
|
recordDelivery(inbox, durationMs, success, activityType) {
|
|
218
254
|
const deliveryAttributes = {
|
|
@@ -333,7 +369,29 @@ var FederationMetrics = class {
|
|
|
333
369
|
this.webFingerHandle.add(1, attributes);
|
|
334
370
|
this.webFingerHandleDuration.record(attrs.durationMs, attributes);
|
|
335
371
|
}
|
|
372
|
+
recordCollectionRequest(attrs) {
|
|
373
|
+
this.collectionRequest.add(1, buildCollectionAttributes(attrs));
|
|
374
|
+
}
|
|
375
|
+
recordCollectionDispatchDuration(durationMs, attrs) {
|
|
376
|
+
this.collectionDispatchDuration.record(durationMs, buildCollectionAttributes(attrs));
|
|
377
|
+
}
|
|
378
|
+
recordCollectionPageItems(itemCount, attrs) {
|
|
379
|
+
this.collectionPageItems.record(itemCount, buildCollectionAttributes(attrs));
|
|
380
|
+
}
|
|
381
|
+
recordCollectionTotalItems(totalItems, attrs) {
|
|
382
|
+
this.collectionTotalItems.record(totalItems, buildCollectionAttributes(attrs));
|
|
383
|
+
}
|
|
336
384
|
};
|
|
385
|
+
function buildCollectionAttributes(attrs) {
|
|
386
|
+
const attributes = {
|
|
387
|
+
"activitypub.collection.kind": attrs.kind,
|
|
388
|
+
"activitypub.collection.page": attrs.page,
|
|
389
|
+
"activitypub.collection.result": attrs.result,
|
|
390
|
+
"fedify.collection.dispatcher": attrs.dispatcher
|
|
391
|
+
};
|
|
392
|
+
if (attrs.statusCode != null) attributes["http.response.status_code"] = attrs.statusCode;
|
|
393
|
+
return attributes;
|
|
394
|
+
}
|
|
337
395
|
function buildActivityLifecycleAttributes(result, activityType) {
|
|
338
396
|
const attributes = { "activitypub.processing.result": result };
|
|
339
397
|
if (activityType != null) attributes["activitypub.activity.type"] = activityType;
|
|
@@ -470,6 +528,38 @@ function recordWebFingerHandle(meterProvider, attrs) {
|
|
|
470
528
|
getFederationMetrics(meterProvider).recordWebFingerHandle(attrs);
|
|
471
529
|
}
|
|
472
530
|
/**
|
|
531
|
+
* Records one `activitypub.collection.request` measurement for a
|
|
532
|
+
* collection or collection-page request handled by Fedify.
|
|
533
|
+
* @since 2.3.0
|
|
534
|
+
*/
|
|
535
|
+
function recordCollectionRequest(meterProvider, attrs) {
|
|
536
|
+
getFederationMetrics(meterProvider).recordCollectionRequest(attrs);
|
|
537
|
+
}
|
|
538
|
+
/**
|
|
539
|
+
* Records one `activitypub.collection.dispatch.duration` measurement for a
|
|
540
|
+
* collection dispatcher callback invocation.
|
|
541
|
+
* @since 2.3.0
|
|
542
|
+
*/
|
|
543
|
+
function recordCollectionDispatchDuration(meterProvider, durationMs, attrs) {
|
|
544
|
+
getFederationMetrics(meterProvider).recordCollectionDispatchDuration(durationMs, attrs);
|
|
545
|
+
}
|
|
546
|
+
/**
|
|
547
|
+
* Records one `activitypub.collection.page.items` measurement when Fedify
|
|
548
|
+
* has materialized collection items in memory.
|
|
549
|
+
* @since 2.3.0
|
|
550
|
+
*/
|
|
551
|
+
function recordCollectionPageItems(meterProvider, itemCount, attrs) {
|
|
552
|
+
getFederationMetrics(meterProvider).recordCollectionPageItems(itemCount, attrs);
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* Records one `activitypub.collection.total_items` measurement when a
|
|
556
|
+
* collection counter has already reported a total item count.
|
|
557
|
+
* @since 2.3.0
|
|
558
|
+
*/
|
|
559
|
+
function recordCollectionTotalItems(meterProvider, totalItems, attrs) {
|
|
560
|
+
getFederationMetrics(meterProvider).recordCollectionTotalItems(totalItems, attrs);
|
|
561
|
+
}
|
|
562
|
+
/**
|
|
473
563
|
* Classifies a thrown value from a key or document fetch into the bounded
|
|
474
564
|
* {@link LookupResult} taxonomy and, when an HTTP response was received,
|
|
475
565
|
* surfaces its status code.
|
|
@@ -632,4 +722,4 @@ function getDurationMs(start) {
|
|
|
632
722
|
return Math.max(0, performance.now() - start);
|
|
633
723
|
}
|
|
634
724
|
//#endregion
|
|
635
|
-
export { instrumentDocumentLoader as a,
|
|
725
|
+
export { recordOutboxActivity as _, instrumentDocumentLoader as a, recordCollectionDispatchDuration as c, recordCollectionTotalItems as d, recordDocumentCache as f, recordKeyLookup as g, recordInboxActivity as h, getRemoteHost as i, recordCollectionPageItems as l, recordFanoutRecipients as m, getDurationMs as n, isAbortError as o, recordDocumentFetch as p, getFederationMetrics as r, measureSignatureKeyFetch as s, classifyFetchError as t, recordCollectionRequest as u, recordOutboxEnqueue as v, recordWebFingerHandle as y };
|