@fedify/fedify 2.3.0-dev.1114 → 2.3.0-dev.1119
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-YlEusQth.mjs → builder-Ond_h57y.mjs} +2 -2
- package/dist/compat/transformers.test.mjs +1 -1
- package/dist/{deno-CF3jMgip.mjs → deno-DVsHS7rA.mjs} +1 -1
- package/dist/{docloader-BENj6vQ4.mjs → docloader-WsWfKaE5.mjs} +2 -2
- package/dist/federation/builder.test.mjs +1 -1
- package/dist/federation/handler.test.mjs +2 -2
- package/dist/federation/idempotency.test.mjs +2 -2
- package/dist/federation/metrics.test.d.mts +2 -0
- package/dist/federation/metrics.test.mjs +107 -0
- package/dist/federation/middleware.test.mjs +386 -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/webfinger.test.mjs +1 -1
- package/dist/{http-CpzZ9zsb.js → http-CouJSFVK.js} +73 -5
- package/dist/{http-CKCgOPkX.cjs → http-CubOB9wq.cjs} +90 -4
- package/dist/{http-BmOZYc-8.mjs → http-DUV8ysti.mjs} +3 -3
- package/dist/{key-B4I8H5Lc.mjs → key-BoWaYRHm.mjs} +1 -1
- package/dist/{kv-cache-Wc5ezcVW.js → kv-cache-DBNpsneh.js} +1 -1
- package/dist/{kv-cache-DY-XWOqM.cjs → kv-cache-Dz31ATUT.cjs} +1 -1
- package/dist/{ld-B5D5THhl.mjs → ld-B5K1mSuG.mjs} +3 -3
- package/dist/{metrics-ek3ilf6c.mjs → metrics-C4attqv0.mjs} +73 -5
- package/dist/{middleware-EI7OU6BR.mjs → middleware-BDKFRjue.mjs} +1 -1
- package/dist/{middleware-EqTYPG4F.cjs → middleware-CmsDtIHI.cjs} +33 -14
- package/dist/{middleware-CuZbBw-N.js → middleware-Dtjz-hSk.js} +33 -14
- package/dist/{middleware-DlcecZMq.mjs → middleware-t0jC8I99.mjs} +40 -21
- package/dist/mod.cjs +4 -4
- package/dist/mod.js +4 -4
- package/dist/nodeinfo/handler.test.mjs +1 -1
- package/dist/{owner-DO810N24.mjs → owner-hDxI0ufu.mjs} +2 -2
- package/dist/{proof-DIoqrKnX.cjs → proof-BUWfVr6Q.cjs} +1 -1
- package/dist/{proof-BgfyWv7b.mjs → proof-DhVuz4bc.mjs} +3 -3
- package/dist/{proof-Vd8-1EWh.js → proof-n60t8o9P.js} +1 -1
- package/dist/{send-CAYXdUTk.mjs → send-BPhyR5Oo.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/utils/docloader.test.mjs +2 -2
- package/dist/utils/mod.cjs +1 -1
- package/dist/utils/mod.js +1 -1
- package/package.json +5 -5
|
@@ -2,10 +2,10 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
2
2
|
import { URLPattern } from "urlpattern-polyfill";
|
|
3
3
|
import { t as __exportAll } from "./chunk-CRNNMoPX.js";
|
|
4
4
|
import { r as getDefaultActivityTransformers } from "./transformers-BGMIq1cs.js";
|
|
5
|
-
import {
|
|
6
|
-
import { c as getKeyOwner, d as detachSignature, f as hasSignatureLike, i as verifyObject, m as verifyJsonLd, n as hasProofLike, o as normalizeOutgoingActivityJsonLd, p as signJsonLd, r as signObject, s as doesActorOwnKey } from "./proof-
|
|
5
|
+
import { E as version, T as name, _ as recordFanoutRecipients, a as verifyRequestDetailed, b as recordOutboxEnqueue, d as validateCryptoKey, f as getDurationMs, h as isAbortError, i as verifyRequest, m as getRemoteHost, n as parseRfc9421SignatureInput, o as exportJwk, p as getFederationMetrics, t as doubleKnock, u as importJwk, v as recordInboxActivity, x as formatAcceptSignature, y as recordOutboxActivity } from "./http-CouJSFVK.js";
|
|
6
|
+
import { c as getKeyOwner, d as detachSignature, f as hasSignatureLike, i as verifyObject, m as verifyJsonLd, n as hasProofLike, o as normalizeOutgoingActivityJsonLd, p as signJsonLd, r as signObject, s as doesActorOwnKey } from "./proof-n60t8o9P.js";
|
|
7
7
|
import { n as getNodeInfo, t as nodeInfoToJson } from "./types-CAY3OdLq.js";
|
|
8
|
-
import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-
|
|
8
|
+
import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-DBNpsneh.js";
|
|
9
9
|
import { getLogger, withContext } from "@logtape/logtape";
|
|
10
10
|
import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, Tombstone, getTypeId, lookupObject, traverseCollection } from "@fedify/vocab";
|
|
11
11
|
import { SpanKind, SpanStatusCode, context, metrics, propagation, trace } from "@opentelemetry/api";
|
|
@@ -817,6 +817,7 @@ async function routeActivity({ context: ctx, json, activity, recipient, inboxLis
|
|
|
817
817
|
code: SpanStatusCode.UNSET,
|
|
818
818
|
message: `Activity ${activity.id?.href} has already been processed.`
|
|
819
819
|
});
|
|
820
|
+
recordInboxActivity(meterProvider, "rejected", getTypeId(activity).href);
|
|
820
821
|
return "alreadyProcessed";
|
|
821
822
|
}
|
|
822
823
|
}
|
|
@@ -826,6 +827,7 @@ async function routeActivity({ context: ctx, json, activity, recipient, inboxLis
|
|
|
826
827
|
code: SpanStatusCode.ERROR,
|
|
827
828
|
message: "Missing actor."
|
|
828
829
|
});
|
|
830
|
+
recordInboxActivity(meterProvider, "rejected", getTypeId(activity).href);
|
|
829
831
|
return "missingActor";
|
|
830
832
|
}
|
|
831
833
|
span.setAttribute("activitypub.actor.id", activity.actorId.href);
|
|
@@ -861,6 +863,7 @@ async function routeActivity({ context: ctx, json, activity, recipient, inboxLis
|
|
|
861
863
|
queue,
|
|
862
864
|
activityType: getTypeId(activity).href
|
|
863
865
|
}, 0);
|
|
866
|
+
recordInboxActivity(meterProvider, "queued", getTypeId(activity).href);
|
|
864
867
|
logger.info("Activity {activityId} is enqueued.", {
|
|
865
868
|
activityId: activity.id?.href,
|
|
866
869
|
activity: json,
|
|
@@ -880,6 +883,7 @@ async function routeActivity({ context: ctx, json, activity, recipient, inboxLis
|
|
|
880
883
|
code: SpanStatusCode.UNSET,
|
|
881
884
|
message: `Unsupported activity type: ${getTypeId(activity).href}`
|
|
882
885
|
});
|
|
886
|
+
recordInboxActivity(meterProvider, "rejected", getTypeId(activity).href);
|
|
883
887
|
span.end();
|
|
884
888
|
return "unsupportedActivity";
|
|
885
889
|
}
|
|
@@ -889,7 +893,7 @@ async function routeActivity({ context: ctx, json, activity, recipient, inboxLis
|
|
|
889
893
|
const activityType = getTypeId(activity).href;
|
|
890
894
|
const started = performance.now();
|
|
891
895
|
try {
|
|
892
|
-
await listener(inboxContextFactory(recipient, json, activity
|
|
896
|
+
await listener(inboxContextFactory(recipient, json, activity.id?.href, activityType), activity);
|
|
893
897
|
} finally {
|
|
894
898
|
getFederationMetrics(meterProvider).recordInboxProcessingDuration(activityType, getDurationMs(started));
|
|
895
899
|
}
|
|
@@ -914,9 +918,11 @@ async function routeActivity({ context: ctx, json, activity, recipient, inboxLis
|
|
|
914
918
|
code: SpanStatusCode.ERROR,
|
|
915
919
|
message: String(error)
|
|
916
920
|
});
|
|
921
|
+
recordInboxActivity(meterProvider, "rejected", getTypeId(activity).href);
|
|
917
922
|
span.end();
|
|
918
923
|
return "error";
|
|
919
924
|
}
|
|
925
|
+
recordInboxActivity(meterProvider, "processed", getTypeId(activity).href);
|
|
920
926
|
if (cacheKey != null) await kv.set(cacheKey, true, { ttl: Temporal.Duration.from({ days: 1 }) });
|
|
921
927
|
logger.info("Activity {activityId} has been processed.", {
|
|
922
928
|
activityId: activity.id?.href,
|
|
@@ -3233,6 +3239,7 @@ var FederationImpl = class extends FederationBuilderImpl {
|
|
|
3233
3239
|
});
|
|
3234
3240
|
}
|
|
3235
3241
|
}
|
|
3242
|
+
recordOutboxActivity(this.meterProvider, "abandoned", message.activityType);
|
|
3236
3243
|
return;
|
|
3237
3244
|
}
|
|
3238
3245
|
if (this.outboxQueue?.nativeRetrial) {
|
|
@@ -3263,11 +3270,15 @@ var FederationImpl = class extends FederationBuilderImpl {
|
|
|
3263
3270
|
queue: outboxQueue,
|
|
3264
3271
|
activityType: retryMessage.activityType
|
|
3265
3272
|
}, retryMessage.attempt);
|
|
3273
|
+
recordOutboxActivity(this.meterProvider, "retried", retryMessage.activityType);
|
|
3266
3274
|
}
|
|
3267
|
-
} else
|
|
3268
|
-
|
|
3269
|
-
|
|
3270
|
-
|
|
3275
|
+
} else {
|
|
3276
|
+
logger.error("Failed to send activity {activityId} to {inbox} after {attempt} attempts; giving up:\n{error}", {
|
|
3277
|
+
...logData,
|
|
3278
|
+
error
|
|
3279
|
+
});
|
|
3280
|
+
recordOutboxActivity(this.meterProvider, "abandoned", message.activityType);
|
|
3281
|
+
}
|
|
3271
3282
|
return;
|
|
3272
3283
|
}
|
|
3273
3284
|
logger.info("Successfully sent activity {activityId} to {inbox}.", { ...logData });
|
|
@@ -3302,6 +3313,7 @@ var FederationImpl = class extends FederationBuilderImpl {
|
|
|
3302
3313
|
activity: message.activity,
|
|
3303
3314
|
recipient: message.identifier
|
|
3304
3315
|
});
|
|
3316
|
+
recordInboxActivity(this.meterProvider, "rejected", activityType);
|
|
3305
3317
|
return;
|
|
3306
3318
|
}
|
|
3307
3319
|
}
|
|
@@ -3318,6 +3330,7 @@ var FederationImpl = class extends FederationBuilderImpl {
|
|
|
3318
3330
|
code: SpanStatusCode.ERROR,
|
|
3319
3331
|
message: `Unsupported activity type: ${activityType}`
|
|
3320
3332
|
});
|
|
3333
|
+
recordInboxActivity(this.meterProvider, "rejected", activityType);
|
|
3321
3334
|
span.end();
|
|
3322
3335
|
return;
|
|
3323
3336
|
}
|
|
@@ -3330,6 +3343,7 @@ var FederationImpl = class extends FederationBuilderImpl {
|
|
|
3330
3343
|
} finally {
|
|
3331
3344
|
getFederationMetrics(this.meterProvider).recordInboxProcessingDuration(activityType, getDurationMs(started));
|
|
3332
3345
|
}
|
|
3346
|
+
recordInboxActivity(this.meterProvider, "processed", activityType);
|
|
3333
3347
|
} catch (error) {
|
|
3334
3348
|
try {
|
|
3335
3349
|
await this.inboxErrorHandler?.(context, error);
|
|
@@ -3380,13 +3394,17 @@ var FederationImpl = class extends FederationBuilderImpl {
|
|
|
3380
3394
|
queue: inboxQueue,
|
|
3381
3395
|
activityType
|
|
3382
3396
|
}, retryMessage.attempt);
|
|
3397
|
+
recordInboxActivity(this.meterProvider, "retried", activityType);
|
|
3383
3398
|
}
|
|
3384
|
-
} else
|
|
3385
|
-
error,
|
|
3386
|
-
|
|
3387
|
-
|
|
3388
|
-
|
|
3389
|
-
|
|
3399
|
+
} else {
|
|
3400
|
+
logger.error("Failed to process the incoming activity {activityId} after {trial} attempts; giving up:\n{error}", {
|
|
3401
|
+
error,
|
|
3402
|
+
activityId: activity.id?.href,
|
|
3403
|
+
activity: message.activity,
|
|
3404
|
+
recipient: message.identifier
|
|
3405
|
+
});
|
|
3406
|
+
recordInboxActivity(this.meterProvider, "abandoned", activityType);
|
|
3407
|
+
}
|
|
3390
3408
|
span.setStatus({
|
|
3391
3409
|
code: SpanStatusCode.ERROR,
|
|
3392
3410
|
message: String(error)
|
|
@@ -4413,6 +4431,7 @@ var ContextImpl = class ContextImpl {
|
|
|
4413
4431
|
queue: this.federation.fanoutQueue,
|
|
4414
4432
|
activityType: message.activityType
|
|
4415
4433
|
}, 0);
|
|
4434
|
+
recordFanoutRecipients(this.federation.meterProvider, globalThis.Object.keys(message.inboxes).length, message.activityType);
|
|
4416
4435
|
return true;
|
|
4417
4436
|
}
|
|
4418
4437
|
async *getFollowers(identifier) {
|
|
@@ -2,25 +2,25 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
4
|
import { n as RouterError } from "./router-BT_F5748.mjs";
|
|
5
|
-
import { n as version, t as name } from "./deno-
|
|
6
|
-
import { i as isAbortError, n as getFederationMetrics, o as
|
|
5
|
+
import { n as version, t as name } from "./deno-DVsHS7rA.mjs";
|
|
6
|
+
import { c as recordOutboxActivity, i as isAbortError, l as recordOutboxEnqueue, n as getFederationMetrics, o as recordFanoutRecipients, r as getRemoteHost, s as recordInboxActivity, t as getDurationMs } from "./metrics-C4attqv0.mjs";
|
|
7
7
|
import { t as formatAcceptSignature } from "./accept-CgDcxvjV.mjs";
|
|
8
|
-
import { a as importJwk, o as validateCryptoKey, t as exportJwk } from "./key-
|
|
9
|
-
import { l as verifyRequest, o as parseRfc9421SignatureInput, u as verifyRequestDetailed } from "./http-
|
|
10
|
-
import { t as getAuthenticatedDocumentLoader } from "./docloader-
|
|
8
|
+
import { a as importJwk, o as validateCryptoKey, t as exportJwk } from "./key-BoWaYRHm.mjs";
|
|
9
|
+
import { l as verifyRequest, o as parseRfc9421SignatureInput, u as verifyRequestDetailed } from "./http-DUV8ysti.mjs";
|
|
10
|
+
import { t as getAuthenticatedDocumentLoader } from "./docloader-WsWfKaE5.mjs";
|
|
11
11
|
import { n as kvCache } from "./kv-cache-DihufyAQ.mjs";
|
|
12
|
-
import { a as signJsonLd, i as hasSignatureLike, o as verifyJsonLd, r as detachSignature } from "./ld-
|
|
13
|
-
import { n as getKeyOwner, t as doesActorOwnKey } from "./owner-
|
|
12
|
+
import { a as signJsonLd, i as hasSignatureLike, o as verifyJsonLd, r as detachSignature } from "./ld-B5K1mSuG.mjs";
|
|
13
|
+
import { n as getKeyOwner, t as doesActorOwnKey } from "./owner-hDxI0ufu.mjs";
|
|
14
14
|
import { r as normalizeOutgoingActivityJsonLd } from "./outgoing-jsonld-BNL8AC14.mjs";
|
|
15
|
-
import { i as verifyObject, n as hasProofLike, r as signObject } from "./proof-
|
|
15
|
+
import { i as verifyObject, n as hasProofLike, r as signObject } from "./proof-DhVuz4bc.mjs";
|
|
16
16
|
import { t as getNodeInfo } from "./client-Bneh_DYR.mjs";
|
|
17
17
|
import { t as nodeInfoToJson } from "./types-D09GN0uZ.mjs";
|
|
18
|
-
import { n as FederationBuilderImpl, t as ACTOR_ALIAS_PREFIX } from "./builder-
|
|
18
|
+
import { n as FederationBuilderImpl, t as ACTOR_ALIAS_PREFIX } from "./builder-Ond_h57y.mjs";
|
|
19
19
|
import { t as buildCollectionSynchronizationHeader } from "./collection-Cc3DVAhE.mjs";
|
|
20
20
|
import { t as KvKeyCache } from "./keycache-BeU0LCII.mjs";
|
|
21
21
|
import { t as acceptsJsonLd } from "./negotiation-DDstyBvc.mjs";
|
|
22
22
|
import { t as createExponentialBackoffPolicy } from "./retry-_VvV0h9f.mjs";
|
|
23
|
-
import { n as extractInboxes, r as sendActivity, t as SendActivityError } from "./send-
|
|
23
|
+
import { n as extractInboxes, r as sendActivity, t as SendActivityError } from "./send-BPhyR5Oo.mjs";
|
|
24
24
|
import { getLogger, withContext } from "@logtape/logtape";
|
|
25
25
|
import { Activity, Collection, CollectionPage, CryptographicKey, Link, Multikey, Object as Object$1, OrderedCollection, OrderedCollectionPage, Tombstone, getTypeId, lookupObject, traverseCollection } from "@fedify/vocab";
|
|
26
26
|
import { lookupWebFinger } from "@fedify/webfinger";
|
|
@@ -192,6 +192,7 @@ async function routeActivity({ context: ctx, json, activity, recipient, inboxLis
|
|
|
192
192
|
code: SpanStatusCode.UNSET,
|
|
193
193
|
message: `Activity ${activity.id?.href} has already been processed.`
|
|
194
194
|
});
|
|
195
|
+
recordInboxActivity(meterProvider, "rejected", getTypeId(activity).href);
|
|
195
196
|
return "alreadyProcessed";
|
|
196
197
|
}
|
|
197
198
|
}
|
|
@@ -201,6 +202,7 @@ async function routeActivity({ context: ctx, json, activity, recipient, inboxLis
|
|
|
201
202
|
code: SpanStatusCode.ERROR,
|
|
202
203
|
message: "Missing actor."
|
|
203
204
|
});
|
|
205
|
+
recordInboxActivity(meterProvider, "rejected", getTypeId(activity).href);
|
|
204
206
|
return "missingActor";
|
|
205
207
|
}
|
|
206
208
|
span.setAttribute("activitypub.actor.id", activity.actorId.href);
|
|
@@ -236,6 +238,7 @@ async function routeActivity({ context: ctx, json, activity, recipient, inboxLis
|
|
|
236
238
|
queue,
|
|
237
239
|
activityType: getTypeId(activity).href
|
|
238
240
|
}, 0);
|
|
241
|
+
recordInboxActivity(meterProvider, "queued", getTypeId(activity).href);
|
|
239
242
|
logger.info("Activity {activityId} is enqueued.", {
|
|
240
243
|
activityId: activity.id?.href,
|
|
241
244
|
activity: json,
|
|
@@ -255,6 +258,7 @@ async function routeActivity({ context: ctx, json, activity, recipient, inboxLis
|
|
|
255
258
|
code: SpanStatusCode.UNSET,
|
|
256
259
|
message: `Unsupported activity type: ${getTypeId(activity).href}`
|
|
257
260
|
});
|
|
261
|
+
recordInboxActivity(meterProvider, "rejected", getTypeId(activity).href);
|
|
258
262
|
span.end();
|
|
259
263
|
return "unsupportedActivity";
|
|
260
264
|
}
|
|
@@ -264,7 +268,7 @@ async function routeActivity({ context: ctx, json, activity, recipient, inboxLis
|
|
|
264
268
|
const activityType = getTypeId(activity).href;
|
|
265
269
|
const started = performance.now();
|
|
266
270
|
try {
|
|
267
|
-
await listener(inboxContextFactory(recipient, json, activity
|
|
271
|
+
await listener(inboxContextFactory(recipient, json, activity.id?.href, activityType), activity);
|
|
268
272
|
} finally {
|
|
269
273
|
getFederationMetrics(meterProvider).recordInboxProcessingDuration(activityType, getDurationMs(started));
|
|
270
274
|
}
|
|
@@ -289,9 +293,11 @@ async function routeActivity({ context: ctx, json, activity, recipient, inboxLis
|
|
|
289
293
|
code: SpanStatusCode.ERROR,
|
|
290
294
|
message: String(error)
|
|
291
295
|
});
|
|
296
|
+
recordInboxActivity(meterProvider, "rejected", getTypeId(activity).href);
|
|
292
297
|
span.end();
|
|
293
298
|
return "error";
|
|
294
299
|
}
|
|
300
|
+
recordInboxActivity(meterProvider, "processed", getTypeId(activity).href);
|
|
295
301
|
if (cacheKey != null) await kv.set(cacheKey, true, { ttl: Temporal.Duration.from({ days: 1 }) });
|
|
296
302
|
logger.info("Activity {activityId} has been processed.", {
|
|
297
303
|
activityId: activity.id?.href,
|
|
@@ -2135,6 +2141,7 @@ var FederationImpl = class extends FederationBuilderImpl {
|
|
|
2135
2141
|
});
|
|
2136
2142
|
}
|
|
2137
2143
|
}
|
|
2144
|
+
recordOutboxActivity(this.meterProvider, "abandoned", message.activityType);
|
|
2138
2145
|
return;
|
|
2139
2146
|
}
|
|
2140
2147
|
if (this.outboxQueue?.nativeRetrial) {
|
|
@@ -2165,11 +2172,15 @@ var FederationImpl = class extends FederationBuilderImpl {
|
|
|
2165
2172
|
queue: outboxQueue,
|
|
2166
2173
|
activityType: retryMessage.activityType
|
|
2167
2174
|
}, retryMessage.attempt);
|
|
2175
|
+
recordOutboxActivity(this.meterProvider, "retried", retryMessage.activityType);
|
|
2168
2176
|
}
|
|
2169
|
-
} else
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
|
|
2177
|
+
} else {
|
|
2178
|
+
logger.error("Failed to send activity {activityId} to {inbox} after {attempt} attempts; giving up:\n{error}", {
|
|
2179
|
+
...logData,
|
|
2180
|
+
error
|
|
2181
|
+
});
|
|
2182
|
+
recordOutboxActivity(this.meterProvider, "abandoned", message.activityType);
|
|
2183
|
+
}
|
|
2173
2184
|
return;
|
|
2174
2185
|
}
|
|
2175
2186
|
logger.info("Successfully sent activity {activityId} to {inbox}.", { ...logData });
|
|
@@ -2204,6 +2215,7 @@ var FederationImpl = class extends FederationBuilderImpl {
|
|
|
2204
2215
|
activity: message.activity,
|
|
2205
2216
|
recipient: message.identifier
|
|
2206
2217
|
});
|
|
2218
|
+
recordInboxActivity(this.meterProvider, "rejected", activityType);
|
|
2207
2219
|
return;
|
|
2208
2220
|
}
|
|
2209
2221
|
}
|
|
@@ -2220,6 +2232,7 @@ var FederationImpl = class extends FederationBuilderImpl {
|
|
|
2220
2232
|
code: SpanStatusCode.ERROR,
|
|
2221
2233
|
message: `Unsupported activity type: ${activityType}`
|
|
2222
2234
|
});
|
|
2235
|
+
recordInboxActivity(this.meterProvider, "rejected", activityType);
|
|
2223
2236
|
span.end();
|
|
2224
2237
|
return;
|
|
2225
2238
|
}
|
|
@@ -2232,6 +2245,7 @@ var FederationImpl = class extends FederationBuilderImpl {
|
|
|
2232
2245
|
} finally {
|
|
2233
2246
|
getFederationMetrics(this.meterProvider).recordInboxProcessingDuration(activityType, getDurationMs(started));
|
|
2234
2247
|
}
|
|
2248
|
+
recordInboxActivity(this.meterProvider, "processed", activityType);
|
|
2235
2249
|
} catch (error) {
|
|
2236
2250
|
try {
|
|
2237
2251
|
await this.inboxErrorHandler?.(context, error);
|
|
@@ -2282,13 +2296,17 @@ var FederationImpl = class extends FederationBuilderImpl {
|
|
|
2282
2296
|
queue: inboxQueue,
|
|
2283
2297
|
activityType
|
|
2284
2298
|
}, retryMessage.attempt);
|
|
2299
|
+
recordInboxActivity(this.meterProvider, "retried", activityType);
|
|
2285
2300
|
}
|
|
2286
|
-
} else
|
|
2287
|
-
error,
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
|
|
2291
|
-
|
|
2301
|
+
} else {
|
|
2302
|
+
logger.error("Failed to process the incoming activity {activityId} after {trial} attempts; giving up:\n{error}", {
|
|
2303
|
+
error,
|
|
2304
|
+
activityId: activity.id?.href,
|
|
2305
|
+
activity: message.activity,
|
|
2306
|
+
recipient: message.identifier
|
|
2307
|
+
});
|
|
2308
|
+
recordInboxActivity(this.meterProvider, "abandoned", activityType);
|
|
2309
|
+
}
|
|
2292
2310
|
span.setStatus({
|
|
2293
2311
|
code: SpanStatusCode.ERROR,
|
|
2294
2312
|
message: String(error)
|
|
@@ -3315,6 +3333,7 @@ var ContextImpl = class ContextImpl {
|
|
|
3315
3333
|
queue: this.federation.fanoutQueue,
|
|
3316
3334
|
activityType: message.activityType
|
|
3317
3335
|
}, 0);
|
|
3336
|
+
recordFanoutRecipients(this.federation.meterProvider, globalThis.Object.keys(message.inboxes).length, message.activityType);
|
|
3318
3337
|
return true;
|
|
3319
3338
|
}
|
|
3320
3339
|
async *getFollowers(identifier) {
|
package/dist/mod.cjs
CHANGED
|
@@ -4,11 +4,11 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
4
4
|
require("./chunk-DDcVe30Y.cjs");
|
|
5
5
|
const require_transformers = require("./transformers-NeAONrAq.cjs");
|
|
6
6
|
require("./compat/mod.cjs");
|
|
7
|
-
const require_http = require("./http-
|
|
8
|
-
const require_middleware = require("./middleware-
|
|
9
|
-
const require_proof = require("./proof-
|
|
7
|
+
const require_http = require("./http-CubOB9wq.cjs");
|
|
8
|
+
const require_middleware = require("./middleware-CmsDtIHI.cjs");
|
|
9
|
+
const require_proof = require("./proof-BUWfVr6Q.cjs");
|
|
10
10
|
const require_types = require("./types-KC4QAoxe.cjs");
|
|
11
|
-
const require_kv_cache = require("./kv-cache-
|
|
11
|
+
const require_kv_cache = require("./kv-cache-Dz31ATUT.cjs");
|
|
12
12
|
const require_federation_mod = require("./federation/mod.cjs");
|
|
13
13
|
require("./nodeinfo/mod.cjs");
|
|
14
14
|
require("./runtime/mod.cjs");
|
package/dist/mod.js
CHANGED
|
@@ -3,11 +3,11 @@ import { URLPattern } from "urlpattern-polyfill";
|
|
|
3
3
|
import "./chunk-CRNNMoPX.js";
|
|
4
4
|
import { n as autoIdAssigner, r as getDefaultActivityTransformers, t as actorDehydrator } from "./transformers-BGMIq1cs.js";
|
|
5
5
|
import "./compat/mod.js";
|
|
6
|
-
import {
|
|
7
|
-
import { a as createExponentialBackoffPolicy, c as buildCollectionSynchronizationHeader, d as Router, f as RouterError, i as SendActivityError, l as digest, o as respondWithObject, r as handleWebFinger, s as respondWithObjectIfAcceptable, t as createFederation, u as createFederationBuilder } from "./middleware-
|
|
8
|
-
import { a as verifyProof, c as getKeyOwner, d as detachSignature, f as hasSignatureLike, h as verifySignature, i as verifyObject, l as attachSignature, m as verifyJsonLd, n as hasProofLike, p as signJsonLd, r as signObject, s as doesActorOwnKey, t as createProof, u as createSignature } from "./proof-
|
|
6
|
+
import { C as parseAcceptSignature, S as fulfillAcceptSignature, a as verifyRequestDetailed, c as fetchKeyDetailed, i as verifyRequest, l as generateCryptoKeyPair, o as exportJwk, r as signRequest, s as fetchKey, u as importJwk, w as validateAcceptSignature, x as formatAcceptSignature } from "./http-CouJSFVK.js";
|
|
7
|
+
import { a as createExponentialBackoffPolicy, c as buildCollectionSynchronizationHeader, d as Router, f as RouterError, i as SendActivityError, l as digest, o as respondWithObject, r as handleWebFinger, s as respondWithObjectIfAcceptable, t as createFederation, u as createFederationBuilder } from "./middleware-Dtjz-hSk.js";
|
|
8
|
+
import { a as verifyProof, c as getKeyOwner, d as detachSignature, f as hasSignatureLike, h as verifySignature, i as verifyObject, l as attachSignature, m as verifyJsonLd, n as hasProofLike, p as signJsonLd, r as signObject, s as doesActorOwnKey, t as createProof, u as createSignature } from "./proof-n60t8o9P.js";
|
|
9
9
|
import { n as getNodeInfo, r as parseNodeInfo, t as nodeInfoToJson } from "./types-CAY3OdLq.js";
|
|
10
|
-
import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-
|
|
10
|
+
import { n as getAuthenticatedDocumentLoader, t as kvCache } from "./kv-cache-DBNpsneh.js";
|
|
11
11
|
import { InProcessMessageQueue, MemoryKvStore, ParallelMessageQueue } from "./federation/mod.js";
|
|
12
12
|
import "./nodeinfo/mod.js";
|
|
13
13
|
import "./runtime/mod.js";
|
|
@@ -5,7 +5,7 @@ import { r as createRequestContext } from "../context-BAE7AKLA.mjs";
|
|
|
5
5
|
import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
|
|
6
6
|
import "../std__assert-BTEgfoJo.mjs";
|
|
7
7
|
import { t as MemoryKvStore } from "../kv-QHE0oeM3.mjs";
|
|
8
|
-
import { _ as handleNodeInfoJrd, g as handleNodeInfo, o as createFederation } from "../middleware-
|
|
8
|
+
import { _ as handleNodeInfoJrd, g as handleNodeInfo, o as createFederation } from "../middleware-t0jC8I99.mjs";
|
|
9
9
|
import { test } from "@fedify/fixture";
|
|
10
10
|
//#region src/nodeinfo/handler.test.ts
|
|
11
11
|
test("handleNodeInfo()", async () => {
|
|
@@ -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 "./key-
|
|
4
|
+
import { n as version, t as name } from "./deno-DVsHS7rA.mjs";
|
|
5
|
+
import "./key-BoWaYRHm.mjs";
|
|
6
6
|
import { CryptographicKey, Object as Object$1, isActor } from "@fedify/vocab";
|
|
7
7
|
import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
8
8
|
import { getDocumentLoader } from "@fedify/vocab-runtime";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const { Temporal } = require("@js-temporal/polyfill");
|
|
2
2
|
const { URLPattern } = require("urlpattern-polyfill");
|
|
3
3
|
const require_chunk = require("./chunk-DDcVe30Y.cjs");
|
|
4
|
-
const require_http = require("./http-
|
|
4
|
+
const require_http = require("./http-CubOB9wq.cjs");
|
|
5
5
|
let _logtape_logtape = require("@logtape/logtape");
|
|
6
6
|
let _fedify_vocab = require("@fedify/vocab");
|
|
7
7
|
let _opentelemetry_api = require("@opentelemetry/api");
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
-
import { n as version, t as name } from "./deno-
|
|
5
|
-
import { a as measureSignatureKeyFetch, n as getFederationMetrics, t as getDurationMs } from "./metrics-
|
|
6
|
-
import { n as fetchKey, o as validateCryptoKey } from "./key-
|
|
4
|
+
import { n as version, t as name } from "./deno-DVsHS7rA.mjs";
|
|
5
|
+
import { a as measureSignatureKeyFetch, n as getFederationMetrics, t as getDurationMs } from "./metrics-C4attqv0.mjs";
|
|
6
|
+
import { n as fetchKey, o as validateCryptoKey } from "./key-BoWaYRHm.mjs";
|
|
7
7
|
import { n as preloadedOnlyDocumentLoader } from "./public-audience-c9zmYKgA.mjs";
|
|
8
8
|
import { r as normalizeOutgoingActivityJsonLd } from "./outgoing-jsonld-BNL8AC14.mjs";
|
|
9
9
|
import { getLogger } from "@logtape/logtape";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import { URLPattern } from "urlpattern-polyfill";
|
|
3
|
-
import {
|
|
3
|
+
import { E as version, T as name, d as validateCryptoKey, f as getDurationMs, g as measureSignatureKeyFetch, p as getFederationMetrics, s as fetchKey } from "./http-CouJSFVK.js";
|
|
4
4
|
import { getLogger } from "@logtape/logtape";
|
|
5
5
|
import { Activity, CryptographicKey, DataIntegrityProof, Multikey, Object as Object$1, PUBLIC_COLLECTION, getTypeId, isActor } from "@fedify/vocab";
|
|
6
6
|
import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
@@ -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 getFederationMetrics, t as getDurationMs } from "./metrics-
|
|
6
|
-
import { n as doubleKnock } from "./http-
|
|
4
|
+
import { n as version, t as name } from "./deno-DVsHS7rA.mjs";
|
|
5
|
+
import { n as getFederationMetrics, t as getDurationMs } from "./metrics-C4attqv0.mjs";
|
|
6
|
+
import { n as doubleKnock } from "./http-DUV8ysti.mjs";
|
|
7
7
|
import { getLogger } from "@logtape/logtape";
|
|
8
8
|
import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
9
9
|
//#region src/federation/send.ts
|
package/dist/sig/http.test.mjs
CHANGED
|
@@ -7,8 +7,8 @@ import { n as assertGreaterOrEqual, r as assertFalse, t as assertRejects } from
|
|
|
7
7
|
import { t as assertThrows } from "../assert_throws-4NwKEy2q.mjs";
|
|
8
8
|
import { t as assert } from "../assert-DikXweDx.mjs";
|
|
9
9
|
import { t as esm_default } from "../esm-sdtqOUPu.mjs";
|
|
10
|
-
import { t as exportJwk } from "../key-
|
|
11
|
-
import { a as parseRfc9421Signature, c as timingSafeEqual, i as formatRfc9421SignatureParameters, l as verifyRequest, n as doubleKnock, o as parseRfc9421SignatureInput, r as formatRfc9421Signature, s as signRequest, t as createRfc9421SignatureBase, u as verifyRequestDetailed } from "../http-
|
|
10
|
+
import { t as exportJwk } from "../key-BoWaYRHm.mjs";
|
|
11
|
+
import { a as parseRfc9421Signature, c as timingSafeEqual, i as formatRfc9421SignatureParameters, l as verifyRequest, n as doubleKnock, o as parseRfc9421SignatureInput, r as formatRfc9421Signature, s as signRequest, t as createRfc9421SignatureBase, u as verifyRequestDetailed } from "../http-DUV8ysti.mjs";
|
|
12
12
|
import { i as rsaPrivateKey2, l as rsaPublicKey5, o as rsaPublicKey1, s as rsaPublicKey2 } from "../keys-CSYsOMFG.mjs";
|
|
13
13
|
import { createTestMeterProvider, createTestTracerProvider, mockDocumentLoader, test } from "@fedify/fixture";
|
|
14
14
|
import { FetchError, exportSpki } from "@fedify/vocab-runtime";
|
package/dist/sig/key.test.mjs
CHANGED
|
@@ -5,7 +5,7 @@ import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
|
|
|
5
5
|
import "../std__assert-BTEgfoJo.mjs";
|
|
6
6
|
import { t as assertRejects } from "../assert_rejects-DQP-q39h.mjs";
|
|
7
7
|
import { t as assertThrows } from "../assert_throws-4NwKEy2q.mjs";
|
|
8
|
-
import { a as importJwk, i as generateCryptoKeyPair, n as fetchKey, o as validateCryptoKey, r as fetchKeyDetailed, t as exportJwk } from "../key-
|
|
8
|
+
import { a as importJwk, i as generateCryptoKeyPair, n as fetchKey, o as validateCryptoKey, r as fetchKeyDetailed, t as exportJwk } from "../key-BoWaYRHm.mjs";
|
|
9
9
|
import { c as rsaPublicKey3, i as rsaPrivateKey2, o as rsaPublicKey1, s as rsaPublicKey2, t as ed25519Multikey } from "../keys-CSYsOMFG.mjs";
|
|
10
10
|
import { CryptographicKey, Multikey } from "@fedify/vocab";
|
|
11
11
|
import { createTestTracerProvider, mockDocumentLoader, test } from "@fedify/fixture";
|
package/dist/sig/ld.test.mjs
CHANGED
|
@@ -5,9 +5,9 @@ import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
|
|
|
5
5
|
import { n as assertGreaterOrEqual, r as assertFalse, t as assertRejects } from "../assert_rejects-DQP-q39h.mjs";
|
|
6
6
|
import { t as assertThrows } from "../assert_throws-4NwKEy2q.mjs";
|
|
7
7
|
import { t as assert } from "../assert-DikXweDx.mjs";
|
|
8
|
-
import { i as generateCryptoKeyPair } from "../key-
|
|
8
|
+
import { i as generateCryptoKeyPair } from "../key-BoWaYRHm.mjs";
|
|
9
9
|
import { a as rsaPrivateKey3, c as rsaPublicKey3, i as rsaPrivateKey2, n as ed25519PrivateKey, s as rsaPublicKey2, t as ed25519Multikey } from "../keys-CSYsOMFG.mjs";
|
|
10
|
-
import { a as signJsonLd, i as hasSignatureLike, n as createSignature, o as verifyJsonLd, r as detachSignature, s as verifySignature, t as attachSignature } from "../ld-
|
|
10
|
+
import { a as signJsonLd, i as hasSignatureLike, n as createSignature, o as verifyJsonLd, r as detachSignature, s as verifySignature, t as attachSignature } from "../ld-B5K1mSuG.mjs";
|
|
11
11
|
import { CryptographicKey } from "@fedify/vocab";
|
|
12
12
|
import { createTestMeterProvider, mockDocumentLoader, test } from "@fedify/fixture";
|
|
13
13
|
import { encodeBase64 } from "byte-encodings/base64";
|
package/dist/sig/mod.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
const { Temporal } = require("@js-temporal/polyfill");
|
|
2
2
|
const { URLPattern } = require("urlpattern-polyfill");
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
4
|
-
const require_http = require("../http-
|
|
5
|
-
const require_proof = require("../proof-
|
|
4
|
+
const require_http = require("../http-CubOB9wq.cjs");
|
|
5
|
+
const require_proof = require("../proof-BUWfVr6Q.cjs");
|
|
6
6
|
exports.attachSignature = require_proof.attachSignature;
|
|
7
7
|
exports.createProof = require_proof.createProof;
|
|
8
8
|
exports.createSignature = require_proof.createSignature;
|
package/dist/sig/mod.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import { URLPattern } from "urlpattern-polyfill";
|
|
3
|
-
import {
|
|
4
|
-
import { a as verifyProof, c as getKeyOwner, d as detachSignature, f as hasSignatureLike, h as verifySignature, i as verifyObject, l as attachSignature, m as verifyJsonLd, n as hasProofLike, p as signJsonLd, r as signObject, s as doesActorOwnKey, t as createProof, u as createSignature } from "../proof-
|
|
3
|
+
import { C as parseAcceptSignature, S as fulfillAcceptSignature, a as verifyRequestDetailed, c as fetchKeyDetailed, i as verifyRequest, l as generateCryptoKeyPair, o as exportJwk, r as signRequest, s as fetchKey, u as importJwk, w as validateAcceptSignature, x as formatAcceptSignature } from "../http-CouJSFVK.js";
|
|
4
|
+
import { a as verifyProof, c as getKeyOwner, d as detachSignature, f as hasSignatureLike, h as verifySignature, i as verifyObject, l as attachSignature, m as verifyJsonLd, n as hasProofLike, p as signJsonLd, r as signObject, s as doesActorOwnKey, t as createProof, u as createSignature } from "../proof-n60t8o9P.js";
|
|
5
5
|
export { attachSignature, createProof, createSignature, detachSignature, doesActorOwnKey, exportJwk, fetchKey, fetchKeyDetailed, formatAcceptSignature, fulfillAcceptSignature, generateCryptoKeyPair, getKeyOwner, hasProofLike, hasSignatureLike, importJwk, parseAcceptSignature, signJsonLd, signObject, signRequest, validateAcceptSignature, verifyJsonLd, verifyObject, verifyProof, verifyRequest, verifyRequestDetailed, verifySignature };
|
package/dist/sig/owner.test.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import "../std__assert-BTEgfoJo.mjs";
|
|
|
6
6
|
import { r as assertFalse } from "../assert_rejects-DQP-q39h.mjs";
|
|
7
7
|
import { t as assert } from "../assert-DikXweDx.mjs";
|
|
8
8
|
import { o as rsaPublicKey1, s as rsaPublicKey2 } from "../keys-CSYsOMFG.mjs";
|
|
9
|
-
import { n as getKeyOwner, t as doesActorOwnKey } from "../owner-
|
|
9
|
+
import { n as getKeyOwner, t as doesActorOwnKey } from "../owner-hDxI0ufu.mjs";
|
|
10
10
|
import { Create, CryptographicKey, lookupObject } from "@fedify/vocab";
|
|
11
11
|
import { createTestTracerProvider, mockDocumentLoader, test } from "@fedify/fixture";
|
|
12
12
|
//#region src/sig/owner.test.ts
|
package/dist/sig/proof.test.mjs
CHANGED
|
@@ -8,7 +8,7 @@ import { t as assertInstanceOf } from "../assert_instance_of-C4Ri6VuN.mjs";
|
|
|
8
8
|
import { t as assert } from "../assert-DikXweDx.mjs";
|
|
9
9
|
import { i as rsaPrivateKey2, n as ed25519PrivateKey, r as ed25519PublicKey, s as rsaPublicKey2, t as ed25519Multikey } from "../keys-CSYsOMFG.mjs";
|
|
10
10
|
import { r as normalizeOutgoingActivityJsonLd } from "../outgoing-jsonld-BNL8AC14.mjs";
|
|
11
|
-
import { a as verifyProof, i as verifyObject, n as hasProofLike, r as signObject, t as createProof } from "../proof-
|
|
11
|
+
import { a as verifyProof, i as verifyObject, n as hasProofLike, r as signObject, t as createProof } from "../proof-DhVuz4bc.mjs";
|
|
12
12
|
import { Create, DataIntegrityProof, Document, Multikey, Note, PUBLIC_COLLECTION, Place } from "@fedify/vocab";
|
|
13
13
|
import { createTestMeterProvider, mockDocumentLoader, test } from "@fedify/fixture";
|
|
14
14
|
import { decodeMultibase, importMultibaseKey } from "@fedify/vocab-runtime";
|
|
@@ -5,9 +5,9 @@ import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
|
|
|
5
5
|
import "../std__assert-BTEgfoJo.mjs";
|
|
6
6
|
import { t as assertRejects } from "../assert_rejects-DQP-q39h.mjs";
|
|
7
7
|
import { t as esm_default } from "../esm-sdtqOUPu.mjs";
|
|
8
|
-
import { l as verifyRequest } from "../http-
|
|
8
|
+
import { l as verifyRequest } from "../http-DUV8ysti.mjs";
|
|
9
9
|
import { i as rsaPrivateKey2 } from "../keys-CSYsOMFG.mjs";
|
|
10
|
-
import { t as getAuthenticatedDocumentLoader } from "../docloader-
|
|
10
|
+
import { t as getAuthenticatedDocumentLoader } from "../docloader-WsWfKaE5.mjs";
|
|
11
11
|
import { mockDocumentLoader, test } from "@fedify/fixture";
|
|
12
12
|
import { UrlError } from "@fedify/vocab-runtime";
|
|
13
13
|
//#region src/utils/docloader.test.ts
|
package/dist/utils/mod.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const { Temporal } = require("@js-temporal/polyfill");
|
|
2
2
|
const { URLPattern } = require("urlpattern-polyfill");
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
4
|
-
const require_kv_cache = require("../kv-cache-
|
|
4
|
+
const require_kv_cache = require("../kv-cache-Dz31ATUT.cjs");
|
|
5
5
|
exports.getAuthenticatedDocumentLoader = require_kv_cache.getAuthenticatedDocumentLoader;
|
|
6
6
|
exports.kvCache = require_kv_cache.kvCache;
|
package/dist/utils/mod.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Temporal } from "@js-temporal/polyfill";
|
|
2
2
|
import { URLPattern } from "urlpattern-polyfill";
|
|
3
|
-
import { n as getAuthenticatedDocumentLoader, t as kvCache } from "../kv-cache-
|
|
3
|
+
import { n as getAuthenticatedDocumentLoader, t as kvCache } from "../kv-cache-DBNpsneh.js";
|
|
4
4
|
export { getAuthenticatedDocumentLoader, kvCache };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fedify/fedify",
|
|
3
|
-
"version": "2.3.0-dev.
|
|
3
|
+
"version": "2.3.0-dev.1119+6cc02662",
|
|
4
4
|
"description": "An ActivityPub server framework",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ActivityPub",
|
|
@@ -153,9 +153,9 @@
|
|
|
153
153
|
"uri-template-router": "^1.0.0",
|
|
154
154
|
"url-template": "^3.1.1",
|
|
155
155
|
"urlpattern-polyfill": "^10.1.0",
|
|
156
|
-
"@fedify/vocab": "2.3.0-dev.
|
|
157
|
-
"@fedify/vocab-runtime": "2.3.0-dev.
|
|
158
|
-
"@fedify/webfinger": "2.3.0-dev.
|
|
156
|
+
"@fedify/vocab": "2.3.0-dev.1119+6cc02662",
|
|
157
|
+
"@fedify/vocab-runtime": "2.3.0-dev.1119+6cc02662",
|
|
158
|
+
"@fedify/webfinger": "2.3.0-dev.1119+6cc02662"
|
|
159
159
|
},
|
|
160
160
|
"devDependencies": {
|
|
161
161
|
"@opentelemetry/sdk-metrics": "2.7.1",
|
|
@@ -169,7 +169,7 @@
|
|
|
169
169
|
"typescript": "^6.0.0",
|
|
170
170
|
"wrangler": "^4.17.0",
|
|
171
171
|
"@fedify/fixture": "2.0.0",
|
|
172
|
-
"@fedify/vocab-tools": "^2.3.0-dev.
|
|
172
|
+
"@fedify/vocab-tools": "^2.3.0-dev.1119+6cc02662"
|
|
173
173
|
},
|
|
174
174
|
"scripts": {
|
|
175
175
|
"build:self": "tsdown",
|