@fedify/fedify 2.3.0-dev.1137 → 2.3.0-dev.1150

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/{builder-BCkBXxky.mjs → builder-Bjm1Jq9n.mjs} +2 -2
  2. package/dist/compat/mod.d.cts +1 -1
  3. package/dist/compat/mod.d.ts +1 -1
  4. package/dist/compat/transformers.test.mjs +1 -1
  5. package/dist/{context-DI2gRbyN.d.cts → context-CRXCkTM6.d.cts} +48 -6
  6. package/dist/{context-DCtsSHDv.d.ts → context-MgCh7YGu.d.ts} +48 -6
  7. package/dist/{deno-B_9yJW3w.mjs → deno-CKFE6Uya.mjs} +1 -1
  8. package/dist/{docloader-BT89tyFr.mjs → docloader-B-ZE1cZf.mjs} +2 -2
  9. package/dist/federation/builder.test.mjs +1 -1
  10. package/dist/federation/handler.test.mjs +1363 -44
  11. package/dist/federation/idempotency.test.mjs +2 -2
  12. package/dist/federation/metrics.test.mjs +60 -1
  13. package/dist/federation/middleware.test.mjs +1667 -163
  14. package/dist/federation/mod.cjs +1 -1
  15. package/dist/federation/mod.d.cts +2 -2
  16. package/dist/federation/mod.d.ts +2 -2
  17. package/dist/federation/mod.js +1 -1
  18. package/dist/federation/retry.test.mjs +1 -1
  19. package/dist/federation/send.test.mjs +8 -8
  20. package/dist/federation/temporal.test.d.mts +2 -0
  21. package/dist/federation/temporal.test.mjs +71 -0
  22. package/dist/federation/webfinger.test.mjs +147 -2
  23. package/dist/{getMachineId-bsd-etIyxDet.mjs → getMachineId-bsd-BY01PL1n.mjs} +1 -1
  24. package/dist/{getMachineId-darwin-D23zTf4g.mjs → getMachineId-darwin-Dr1gkBkp.mjs} +1 -1
  25. package/dist/{getMachineId-win-Dpap6v5i.mjs → getMachineId-win-QEYwcJiy.mjs} +1 -1
  26. package/dist/{http-CWoeyogl.cjs → http-DQYEA7AZ.cjs} +53 -1
  27. package/dist/{http-CToqG5ap.js → http-WbS1gKzr.js} +48 -2
  28. package/dist/{http-Cyx5SNuu.mjs → http-vHCgbhTg.mjs} +3 -3
  29. package/dist/{key-CkkMJBjF.mjs → key-N0zP_oJA.mjs} +2 -2
  30. package/dist/{kv-cache-CuCn2xvM.js → kv-cache-DM2O-Yjy.js} +1 -1
  31. package/dist/{kv-cache-DuEwFYcN.cjs → kv-cache-Dsg_bi4N.cjs} +1 -1
  32. package/dist/{kv-cache-VHFP42vY.mjs → kv-cache-GXXZEemD.mjs} +1 -1
  33. package/dist/{ld-k8yqD2a-.mjs → ld-BwKhquPx.mjs} +302 -6
  34. package/dist/{metrics-iRBg8jTk.mjs → metrics-7Vy9FvEw.mjs} +48 -2
  35. package/dist/{middleware-D7FrhN9q.js → middleware-BscgvU-m.js} +496 -115
  36. package/dist/{middleware-BWLUrbS9.cjs → middleware-D_iXrYHJ.cjs} +497 -115
  37. package/dist/{middleware-CztxpARM.mjs → middleware-Db1_qAFG.mjs} +1 -1
  38. package/dist/{middleware-DQEgdr83.mjs → middleware-ZuUcO0t1.mjs} +416 -124
  39. package/dist/{mod-C504qevA.d.cts → mod-C7HOzGqH.d.cts} +11 -2
  40. package/dist/{mod-wYfuXeDE.d.ts → mod-CpQHB3Ys.d.ts} +11 -2
  41. package/dist/mod.cjs +4 -4
  42. package/dist/mod.d.cts +2 -2
  43. package/dist/mod.d.ts +2 -2
  44. package/dist/mod.js +4 -4
  45. package/dist/nodeinfo/handler.test.mjs +1 -1
  46. package/dist/{owner-nmXdvXpc.mjs → owner-FD0H_vpj.mjs} +2 -2
  47. package/dist/{proof-CcsIJLTn.cjs → proof-CYK8T8IS.cjs} +353 -3
  48. package/dist/{proof-NRmtrTDu.js → proof-I3EokKN-.js} +300 -4
  49. package/dist/{proof-DpwO1T4S.mjs → proof-V_lafPmA.mjs} +3 -3
  50. package/dist/{send-DvX2tYyZ.mjs → send-Cc2_10tF.mjs} +3 -3
  51. package/dist/sig/http.test.mjs +2 -2
  52. package/dist/sig/key.test.mjs +1 -1
  53. package/dist/sig/ld.test.mjs +558 -2
  54. package/dist/sig/mod.cjs +2 -2
  55. package/dist/sig/mod.js +2 -2
  56. package/dist/sig/owner.test.mjs +1 -1
  57. package/dist/sig/proof.test.mjs +1 -1
  58. package/dist/temporal-BkmBfs__.mjs +95 -0
  59. package/dist/testing/mod.d.mts +48 -6
  60. package/dist/utils/docloader.test.mjs +2 -2
  61. package/dist/utils/kv-cache.test.mjs +1 -1
  62. package/dist/utils/mod.cjs +1 -1
  63. package/dist/utils/mod.js +1 -1
  64. package/package.json +6 -6
  65. /package/dist/{execAsync-DCBrgFiV.mjs → execAsync-Dxb7rNf3.mjs} +0 -0
  66. /package/dist/{getMachineId-linux-ObI47Hql.mjs → getMachineId-linux-Bbhofx-s.mjs} +0 -0
  67. /package/dist/{getMachineId-unsupported-Ddu-PFeh.mjs → getMachineId-unsupported-dIOte2Ct.mjs} +0 -0
  68. /package/dist/{retry-v_sGLH1d.mjs → retry-_VvV0h9f.mjs} +0 -0
@@ -4,9 +4,9 @@ globalThis.addEventListener = () => {};
4
4
  import { t as assertEquals } from "../assert_equals-C-ZRDbaf.mjs";
5
5
  import "../std__assert-BBjXFNOb.mjs";
6
6
  import { n as ed25519PrivateKey, r as ed25519PublicKey, t as ed25519Multikey } from "../keys-C3kae-6B.mjs";
7
- import { r as signObject } from "../proof-DpwO1T4S.mjs";
7
+ import { r as signObject } from "../proof-V_lafPmA.mjs";
8
8
  import { t as MemoryKvStore } from "../kv-x2IvBUyq.mjs";
9
- import { o as createFederation } from "../middleware-DQEgdr83.mjs";
9
+ import { o as createFederation } from "../middleware-ZuUcO0t1.mjs";
10
10
  import { Create, Follow, Person } from "@fedify/vocab";
11
11
  import { mockDocumentLoader, test } from "@fedify/fixture";
12
12
  //#region src/federation/idempotency.test.ts
@@ -4,7 +4,7 @@ globalThis.addEventListener = () => {};
4
4
  import { t as assertEquals } from "../assert_equals-C-ZRDbaf.mjs";
5
5
  import "../std__assert-BBjXFNOb.mjs";
6
6
  import { t as assertRejects } from "../assert_rejects-DN60FHPX.mjs";
7
- import { a as instrumentDocumentLoader, c as recordDocumentCache, d as recordInboxActivity, f as recordKeyLookup, l as recordDocumentFetch, m as recordOutboxEnqueue, p as recordOutboxActivity, t as classifyFetchError, u as recordFanoutRecipients } from "../metrics-iRBg8jTk.mjs";
7
+ import { a as instrumentDocumentLoader, c as recordDocumentCache, d as recordInboxActivity, f as recordKeyLookup, h as recordWebFingerHandle, l as recordDocumentFetch, m as recordOutboxEnqueue, p as recordOutboxActivity, t as classifyFetchError, u as recordFanoutRecipients } from "../metrics-7Vy9FvEw.mjs";
8
8
  import { createTestMeterProvider, test } from "@fedify/fixture";
9
9
  import { FetchError } from "@fedify/vocab-runtime";
10
10
  //#region src/federation/metrics.test.ts
@@ -213,6 +213,65 @@ test("recordDocumentCache() records hit and miss as a counter", () => {
213
213
  assertEquals(measurements[1].attributes["activitypub.lookup.result"], "miss");
214
214
  assertEquals(measurements[1].attributes["activitypub.remote.host"], "w3id.org");
215
215
  });
216
+ test("recordWebFingerHandle() records counter and duration with all attributes", () => {
217
+ const [meterProvider, recorder] = createTestMeterProvider();
218
+ recordWebFingerHandle(meterProvider, {
219
+ durationMs: 17,
220
+ result: "resolved",
221
+ scheme: "acct",
222
+ statusCode: 200
223
+ });
224
+ const counters = recorder.getMeasurements("webfinger.handle");
225
+ assertEquals(counters.length, 1);
226
+ assertEquals(counters[0].type, "counter");
227
+ assertEquals(counters[0].value, 1);
228
+ assertEquals(counters[0].attributes["webfinger.handle.result"], "resolved");
229
+ assertEquals(counters[0].attributes["webfinger.resource.scheme"], "acct");
230
+ assertEquals(counters[0].attributes["http.response.status_code"], 200);
231
+ const durations = recorder.getMeasurements("webfinger.handle.duration");
232
+ assertEquals(durations.length, 1);
233
+ assertEquals(durations[0].type, "histogram");
234
+ assertEquals(durations[0].value, 17);
235
+ assertEquals(durations[0].attributes["webfinger.handle.result"], "resolved");
236
+ assertEquals(durations[0].attributes["webfinger.resource.scheme"], "acct");
237
+ assertEquals(durations[0].attributes["http.response.status_code"], 200);
238
+ });
239
+ test("recordWebFingerHandle() records each non-resolved result with the matching status code", () => {
240
+ const [meterProvider, recorder] = createTestMeterProvider();
241
+ for (const [result, statusCode] of [
242
+ ["invalid", 400],
243
+ ["not_found", 404],
244
+ ["tombstoned", 410]
245
+ ]) recordWebFingerHandle(meterProvider, {
246
+ durationMs: 1,
247
+ result,
248
+ scheme: "acct",
249
+ statusCode
250
+ });
251
+ const counters = recorder.getMeasurements("webfinger.handle");
252
+ assertEquals(counters.length, 3);
253
+ assertEquals(counters.map((m) => m.attributes["webfinger.handle.result"]), [
254
+ "invalid",
255
+ "not_found",
256
+ "tombstoned"
257
+ ]);
258
+ assertEquals(counters.map((m) => m.attributes["http.response.status_code"]), [
259
+ 400,
260
+ 404,
261
+ 410
262
+ ]);
263
+ });
264
+ test("recordWebFingerHandle() omits optional attributes when not provided", () => {
265
+ const [meterProvider, recorder] = createTestMeterProvider();
266
+ recordWebFingerHandle(meterProvider, {
267
+ durationMs: 0,
268
+ result: "error"
269
+ });
270
+ const counter = recorder.getMeasurement("webfinger.handle");
271
+ assertEquals(counter?.attributes["webfinger.handle.result"], "error");
272
+ assertEquals("webfinger.resource.scheme" in (counter?.attributes ?? {}), false);
273
+ assertEquals("http.response.status_code" in (counter?.attributes ?? {}), false);
274
+ });
216
275
  test("classifyFetchError() classifies FetchError with 404 as not_found", () => {
217
276
  assertEquals(classifyFetchError(new FetchError("https://example.com/k", "not found", new Response("", { status: 404 }))), {
218
277
  result: "not_found",