@fedify/fedify 2.4.0-pr.936.41 → 2.5.0-dev.2271
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/README.md +50 -39
- package/dist/{assert-CJ1KXcvv.mjs → assert-D1Eafmd_.mjs} +1 -1
- package/dist/{assert_equals-BV7oLMxm.mjs → assert_equals-Z6IcEbWU.mjs} +2 -28
- package/dist/assert_exists-cffSpJ7X.mjs +28 -0
- package/dist/assert_false-CPdRnc3E.mjs +23 -0
- package/dist/assert_greater_or_equal-BlafOF4-.mjs +31 -0
- package/dist/{assert_instance_of-Q9KTBnrf.mjs → assert_instance_of-mrXWWNY-.mjs} +1 -1
- package/dist/{assert_not_equals-EPJPoxuf.mjs → assert_not_equals-CpPK2t89.mjs} +2 -1
- package/dist/assert_rejects-CTptdYck.mjs +39 -0
- package/dist/{assert_strict_equals-Ec20AUwa.mjs → assert_strict_equals-CYvBmkpC.mjs} +2 -1
- package/dist/{assert_throws-NiFfqbnH.mjs → assert_throws-BYITOvPO.mjs} +2 -1
- package/dist/assertion_error-B-cx0fFA.mjs +31 -0
- package/dist/audience-CHQ-FlLD.mjs +95 -0
- package/dist/{builder-DonuxRl_.mjs → builder-Bda6LK7A.mjs} +169 -14
- package/dist/{circuit-breaker-CBGyz5F7.mjs → circuit-breaker-XJ53md4S.mjs} +224 -17
- package/dist/circuit-breaker-test-utils-DW6YC_Pe.mjs +14 -0
- package/dist/{client-CjF5IYQS.mjs → client-CEnNz8O7.mjs} +144 -8
- package/dist/{codec-BBga-FWI.mjs → codec-C6rTrpIp.mjs} +26 -3
- package/dist/{collection-BIhlldqK.mjs → collection-CnnP1UAv.mjs} +1 -1
- package/dist/compat/mod.cjs +1 -1
- package/dist/compat/mod.d.cts +1 -1
- package/dist/compat/mod.d.ts +1 -1
- package/dist/compat/mod.js +1 -1
- package/dist/compat/outgoing-jsonld.test.mjs +71 -3
- package/dist/compat/public-audience.test.mjs +14 -5
- package/dist/compat/secured-document.test.d.mts +2 -0
- package/dist/compat/secured-document.test.mjs +58 -0
- package/dist/compat/transformers.test.mjs +5 -5
- package/dist/compound-proof-B-9mXxFW.mjs +989 -0
- package/dist/{context-Zii1f5xS.d.ts → context-7NyiqIcg.d.ts} +1600 -25
- package/dist/{context-BJXxPElm.mjs → context-8Tu9kea0.mjs} +21 -63
- package/dist/{context-lxX6I7as.d.cts → context-tsYPJ2Ew.d.cts} +1600 -25
- package/dist/{deno-BHzKn9Ig.mjs → deno-oR5aJKpU.mjs} +1 -1
- package/dist/dist-DJQM4u7i.mjs +189 -0
- package/dist/docloader-DBoYbvYW.mjs +87 -0
- package/dist/{esm-yYQfPhIY.mjs → esm-BHXXx4Wx.mjs} +13 -6
- package/dist/federation/audience.test.d.mts +2 -0
- package/dist/federation/audience.test.mjs +130 -0
- package/dist/federation/builder.test.mjs +54 -5
- package/dist/federation/circuit-breaker.test.mjs +838 -7
- package/dist/federation/collection.test.mjs +3 -3
- package/dist/federation/compound-fanout.test.d.mts +2 -0
- package/dist/federation/compound-fanout.test.mjs +228 -0
- package/dist/federation/handler-compound-proof.test.d.mts +2 -0
- package/dist/federation/handler-compound-proof.test.mjs +384 -0
- package/dist/federation/handler.test.mjs +385 -15
- package/dist/federation/hashlink-media.test.d.mts +2 -0
- package/dist/federation/hashlink-media.test.mjs +422 -0
- package/dist/federation/idempotency.test.mjs +6 -6
- package/dist/federation/inbox-report.test.d.mts +2 -0
- package/dist/federation/inbox-report.test.mjs +475 -0
- package/dist/federation/inbox.test.mjs +3 -3
- package/dist/federation/keycache.test.mjs +215 -14
- package/dist/federation/kv.test.mjs +3 -3
- package/dist/federation/metrics.test.mjs +5 -5
- package/dist/federation/middleware.test.mjs +967 -35
- package/dist/federation/mod.cjs +18 -261
- package/dist/federation/mod.d.cts +5 -5
- package/dist/federation/mod.d.ts +5 -5
- package/dist/federation/mod.js +279 -1
- package/dist/federation/mq.test.mjs +123 -47
- package/dist/federation/negotiation.test.mjs +4 -4
- package/dist/federation/outgoing-proof.test.d.mts +2 -0
- package/dist/federation/outgoing-proof.test.mjs +931 -0
- package/dist/federation/portable-actor.test.d.mts +2 -0
- package/dist/federation/portable-actor.test.mjs +496 -0
- package/dist/federation/portable-chain.test.d.mts +2 -0
- package/dist/federation/portable-chain.test.mjs +370 -0
- package/dist/federation/portable-collection.test.d.mts +2 -0
- package/dist/federation/portable-collection.test.mjs +832 -0
- package/dist/federation/portable-delivery.test.d.mts +2 -0
- package/dist/federation/portable-delivery.test.mjs +746 -0
- package/dist/federation/portable-gateway-keys.test.d.mts +2 -0
- package/dist/federation/portable-gateway-keys.test.mjs +686 -0
- package/dist/federation/portable-inbox.test.d.mts +2 -0
- package/dist/federation/portable-inbox.test.mjs +1535 -0
- package/dist/federation/portable-parse-uri.test.d.mts +2 -0
- package/dist/federation/portable-parse-uri.test.mjs +348 -0
- package/dist/federation/portable-route-activity.test.d.mts +2 -0
- package/dist/federation/portable-route-activity.test.mjs +259 -0
- package/dist/federation/portable.test.d.mts +2 -0
- package/dist/federation/portable.test.mjs +1072 -0
- package/dist/federation/retry.test.mjs +4 -3
- package/dist/federation/router.test.mjs +9 -159
- package/dist/federation/send.test.mjs +245 -27
- package/dist/federation/tasks/codec.test.mjs +4 -4
- package/dist/federation/tasks/enqueue.test.mjs +42 -4
- package/dist/federation/tasks/tasks.test.mjs +7 -6
- package/dist/federation/temporal.test.mjs +4 -4
- package/dist/federation/webfinger.test.mjs +275 -12
- package/dist/{middleware-FrSMAYEx.cjs → federation-CkZiAcWY.cjs} +8640 -3722
- package/dist/http-B5JT115n.cjs +10630 -0
- package/dist/http-DydWCB7R.js +6527 -0
- package/dist/{http-CPVMUgsW.mjs → http-siciWkmx.mjs} +397 -168
- package/dist/key-BspPiXqn.mjs +951 -0
- package/dist/key-C1nv7_jD.d.ts +1125 -0
- package/dist/key-DYxuyd-s.d.cts +1125 -0
- package/dist/key-owner-evidence-APB6NpSk.mjs +108 -0
- package/dist/keycache-Da8A8mZa.mjs +200 -0
- package/dist/{kv-D6hNiMTK.d.ts → kv-B2mzK5tl.d.cts} +3 -2
- package/dist/{kv-gJ8LYbxX.d.cts → kv-B2mzK5tl.d.ts} +3 -2
- package/dist/kv-DBRWVx3Q.mjs +104 -0
- package/dist/{kv-cache-KyGqJqSp.mjs → kv-cache-BF1hnW65.mjs} +1 -1
- package/dist/{kv-cache-5bnX3-Jq.js → kv-cache-CTQr1tbn.js} +54 -16
- package/dist/{kv-cache-DQ29C4XL.cjs → kv-cache-DCac1nEU.cjs} +55 -19
- package/dist/{ld-Cj9F_5AP.mjs → ld-CzaP-hJl.mjs} +44 -12
- package/dist/map-local-context-conflict-DOYEEJ3u.mjs +204 -0
- package/dist/map-local-create-note-B0SeXJms.mjs +214 -0
- package/dist/{metrics-DMk-nTxI.mjs → metrics-CYg9yxBL.mjs} +3 -2
- package/dist/metrics-DVKYY6K1.d.cts +36 -0
- package/dist/metrics-DoRtI0qU.d.ts +36 -0
- package/dist/{middleware-Y-kpsp6S.js → middleware-CsDDXKuL.js} +5493 -1103
- package/dist/{middleware-CvwTUgnP.mjs → middleware-D7_LO-Vs.mjs} +3157 -272
- package/dist/{middleware-CEctxBN6.mjs → middleware-DWjrfpcz.mjs} +1 -1
- package/dist/{mod-gOlPDuT8.d.cts → mod-BojP2Bw3.d.cts} +1 -1
- package/dist/mod-CavhAgLw.d.cts +320 -0
- package/dist/mod-CtpF2BU5.d.ts +320 -0
- package/dist/{mod-BtEaIEcD.d.cts → mod-DEZXwV6J.d.ts} +10 -4
- package/dist/{mod-UMmveiO0.d.ts → mod-Dw-nPxQh.d.cts} +10 -4
- package/dist/{mod-DLc2Ot6f.d.ts → mod-Xj5P4s4d.d.ts} +1 -1
- package/dist/mod.cjs +40 -39
- package/dist/mod.d.cts +10 -11
- package/dist/mod.d.ts +10 -11
- package/dist/mod.js +9 -9
- package/dist/{mq-llHKivST.mjs → mq-Dm1Wmtm-.mjs} +6 -0
- package/dist/nodeinfo/client.test.mjs +139 -4
- package/dist/nodeinfo/handler.test.mjs +5 -5
- package/dist/nodeinfo/mod.cjs +1 -1
- package/dist/nodeinfo/mod.d.cts +1 -1
- package/dist/nodeinfo/mod.d.ts +1 -1
- package/dist/nodeinfo/mod.js +1 -1
- package/dist/nodeinfo/types.test.mjs +4 -4
- package/dist/otel/exporter.test.mjs +3 -3
- package/dist/otel/mod.cjs +0 -1
- package/dist/otel/mod.d.cts +1 -1
- package/dist/otel/mod.d.ts +1 -1
- package/dist/{outgoing-jsonld-URuqsICz.mjs → outgoing-jsonld-4IJqPYos.mjs} +12 -10
- package/dist/{owner-DEvZuyOE.d.cts → owner-BF0L9cMt.d.cts} +11 -0
- package/dist/{owner-CnngXDNJ.d.ts → owner-BSzr5-I8.d.ts} +11 -0
- package/dist/owner-DYgfTFHy.mjs +267 -0
- package/dist/portable-collection-BpsVsRov.js +670 -0
- package/dist/portable-collection-C74P1vtC.mjs +418 -0
- package/dist/portable-collection-DZd2bm7M.cjs +686 -0
- package/dist/portable-key-BIMLrAP4.mjs +549 -0
- package/dist/portable-key-id-Ca30-hOa.mjs +248 -0
- package/dist/proof-Dxy6ByqI.mjs +1299 -0
- package/dist/{public-audience-Cr5MsnMq.mjs → public-audience--klBIOk1.mjs} +15 -10
- package/dist/router-u5O5KCQr.mjs +156 -0
- package/dist/runtime/mod.cjs +1 -1
- package/dist/runtime/mod.js +1 -1
- package/dist/secured-document-CxzZZ9nL.mjs +35 -0
- package/dist/send-C4dDpAxm.mjs +495 -0
- package/dist/sig/accept.test.mjs +1 -1
- package/dist/sig/compound-proof-discovery.test.d.mts +2 -0
- package/dist/sig/compound-proof-discovery.test.mjs +331 -0
- package/dist/sig/compound-proof-producer.test.d.mts +2 -0
- package/dist/sig/compound-proof-producer.test.mjs +107 -0
- package/dist/sig/compound-proof-verification.test.d.mts +2 -0
- package/dist/sig/compound-proof-verification.test.mjs +833 -0
- package/dist/sig/compound-proof.test.d.mts +2 -0
- package/dist/sig/compound-proof.test.mjs +411 -0
- package/dist/sig/http.test.mjs +702 -31
- package/dist/sig/key-owner-evidence.test.d.mts +2 -0
- package/dist/sig/key-owner-evidence.test.mjs +100 -0
- package/dist/sig/key.test.mjs +220 -8
- package/dist/sig/ld.test.mjs +65 -7
- package/dist/sig/mitra-receive-interop.test.d.mts +2 -0
- package/dist/sig/mitra-receive-interop.test.mjs +260 -0
- package/dist/sig/mitra-send-interop.test.d.mts +2 -0
- package/dist/sig/mitra-send-interop.test.mjs +461 -0
- package/dist/sig/mod.cjs +18 -16
- package/dist/sig/mod.d.cts +4 -4
- package/dist/sig/mod.d.ts +4 -4
- package/dist/sig/mod.js +3 -3
- package/dist/sig/owner.test.mjs +108 -9
- package/dist/sig/portable-collection.test.d.mts +2 -0
- package/dist/sig/portable-collection.test.mjs +697 -0
- package/dist/sig/portable-interop.test.d.mts +2 -0
- package/dist/sig/portable-interop.test.mjs +156 -0
- package/dist/sig/portable-key-id.test.d.mts +2 -0
- package/dist/sig/portable-key-id.test.mjs +67 -0
- package/dist/sig/portable-key.test.d.mts +2 -0
- package/dist/sig/portable-key.test.mjs +1439 -0
- package/dist/sig/proof.test.mjs +1753 -16
- package/dist/sig/tootik-request-interop.test.d.mts +2 -0
- package/dist/sig/tootik-request-interop.test.mjs +190 -0
- package/dist/sig/tootik-send-interop.test.d.mts +2 -0
- package/dist/sig/tootik-send-interop.test.mjs +331 -0
- package/dist/sig/verification.test.d.mts +2 -0
- package/dist/sig/verification.test.mjs +310 -0
- package/dist/std__assert-DvMDRPes.mjs +8 -0
- package/dist/{testing-CO7ftO8A.mjs → tasks-IG3pHfvZ.mjs} +2 -2
- package/dist/{temporal-fsXO5IvD.mjs → temporal-D0KJI4NF.mjs} +3 -3
- package/dist/testing/context.test.d.mts +2 -0
- package/dist/testing/context.test.mjs +19 -0
- package/dist/testing/kv.test.d.mts +2 -0
- package/dist/testing/kv.test.mjs +101 -0
- package/dist/testing/mod.d.mts +1617 -48
- package/dist/testing/mod.mjs +6 -3
- package/dist/testing-t8xDeJZ5.mjs +8 -0
- package/dist/{transformers-DGwl-hD1.cjs → transformers-BalCrSsr.cjs} +0 -1
- package/dist/{types-DC1pNgJA.js → types-_S2_MeLF.js} +144 -8
- package/dist/{types-CPym83zc.cjs → types-poIao40f.cjs} +160 -7
- package/dist/utils/docloader.test.mjs +530 -8
- package/dist/utils/kv-cache.test.mjs +2 -2
- package/dist/utils/mod.cjs +1 -1
- package/dist/utils/mod.d.cts +1 -1
- package/dist/utils/mod.d.ts +1 -1
- package/dist/utils/mod.js +1 -1
- package/dist/verification-C3954hQh.mjs +5 -0
- package/dist/verification-Dpfcw8ml.mjs +105 -0
- package/dist/vocab/cjs.test.mjs +1 -1
- package/package.json +8 -8
- package/dist/assert_rejects-EgstcQy5.mjs +0 -82
- package/dist/docloader-e1khNUKy.mjs +0 -49
- package/dist/http-CsmQ-BQ4.js +0 -2483
- package/dist/http-VyDTd4G3.d.cts +0 -553
- package/dist/http-hlIjmewS.cjs +0 -2694
- package/dist/http-lf8Hsd91.d.ts +0 -553
- package/dist/key-DfPsX8hv.mjs +0 -453
- package/dist/keycache-_DHqz5z_.mjs +0 -97
- package/dist/metrics-CoUJLQhZ.d.cts +0 -276
- package/dist/metrics-Dc4jR-IC.d.ts +0 -276
- package/dist/mod-B0hW12_O.d.cts +0 -307
- package/dist/mod-COIAjwRS.d.ts +0 -307
- package/dist/owner-Br9YYzn_.mjs +0 -120
- package/dist/proof-B4ngoaNQ.mjs +0 -316
- package/dist/proof-B6E0XUXJ.js +0 -1415
- package/dist/proof-NN4xCQGL.cjs +0 -1562
- package/dist/send-CxHKUNzv.mjs +0 -239
- package/dist/std__assert-B2NnY9bq.mjs +0 -79
- package/dist/temporal-polyfill-BCdTHexd.cjs +0 -3565
- /package/dist/{accept-8PiolDP7.mjs → accept-CPVqki78.mjs} +0 -0
- /package/dist/{activity-listener-BtTSxZWA.mjs → activity-listener-C-BSbKI7.mjs} +0 -0
- /package/dist/{client-CAM_bQXx.d.cts → client-D-XP_Ccb.d.cts} +0 -0
- /package/dist/{client-CSddvgWN.d.ts → client-D-XP_Ccb.d.ts} +0 -0
- /package/dist/{keys-Dbyd7bhl.mjs → keys-DIJNHW-Y.mjs} +0 -0
- /package/dist/{kv-CXBAok3k.mjs → kv-DCHkaJ9-.mjs} +0 -0
- /package/dist/{negotiation-RuwrPFqi.mjs → negotiation-CCocWT_N.mjs} +0 -0
- /package/dist/{retry-DgFqeS5k.mjs → retry-zX5xw5e0.mjs} +0 -0
- /package/dist/{chunk-D5IdezsZ.js → rolldown-runtime-BC-Eo5Mj.js} +0 -0
- /package/dist/{chunk-Czpeue4M.cjs → rolldown-runtime-Dmm3t92W.cjs} +0 -0
- /package/dist/{transformers-DXze6FUB.js → transformers-DAtXl_Kc.js} +0 -0
- /package/dist/{types-CrtdVuDP.mjs → types-DE_LV1JB.mjs} +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import "temporal-polyfill";
|
|
2
2
|
import "urlpattern-polyfill";
|
|
3
3
|
globalThis.addEventListener = () => {};
|
|
4
|
+
import { t as isSelfContainedSecuredDocument } from "./secured-document-CxzZZ9nL.mjs";
|
|
4
5
|
import { getLogger } from "@logtape/logtape";
|
|
5
6
|
import { PUBLIC_COLLECTION } from "@fedify/vocab";
|
|
6
7
|
import { preloadedContexts } from "@fedify/vocab-runtime";
|
|
@@ -30,7 +31,7 @@ const logger = getLogger([
|
|
|
30
31
|
"compat",
|
|
31
32
|
"public-audience"
|
|
32
33
|
]);
|
|
33
|
-
const PUBLIC_ADDRESSING_FIELDS = new Set([
|
|
34
|
+
const PUBLIC_ADDRESSING_FIELDS = /* @__PURE__ */ new Set([
|
|
34
35
|
"to",
|
|
35
36
|
"cc",
|
|
36
37
|
"bto",
|
|
@@ -40,36 +41,39 @@ const PUBLIC_ADDRESSING_FIELDS = new Set([
|
|
|
40
41
|
const AS_CONTEXT_URL = "https://www.w3.org/ns/activitystreams";
|
|
41
42
|
const MAX_TRAVERSAL_DEPTH = 64;
|
|
42
43
|
const KNOWN_SAFE_CONTEXT_URLS = new Set(Object.keys(preloadedContexts));
|
|
43
|
-
function hasPublicCurieInAddressing(value, parentKey, depth = 0) {
|
|
44
|
+
function hasPublicCurieInAddressing(value, preserveSecured, parentKey, depth = 0) {
|
|
44
45
|
if (typeof value === "string") return parentKey != null && PUBLIC_ADDRESSING_FIELDS.has(parentKey) && (value === "as:Public" || value === "Public");
|
|
45
46
|
if (depth >= MAX_TRAVERSAL_DEPTH) return false;
|
|
46
|
-
if (Array.isArray(value)) return value.some((item) => hasPublicCurieInAddressing(item, parentKey, depth + 1));
|
|
47
|
+
if (Array.isArray(value)) return value.some((item) => hasPublicCurieInAddressing(item, preserveSecured, parentKey, depth + 1));
|
|
47
48
|
if (typeof value !== "object" || value == null) return false;
|
|
49
|
+
if (preserveSecured && depth > 0 && isSelfContainedSecuredDocument(value)) return false;
|
|
48
50
|
const record = value;
|
|
49
51
|
for (const key of Object.keys(record)) {
|
|
52
|
+
if (record.type === "Follow" && key === "object" && (record[key] === "as:Public" || record[key] === "Public")) return true;
|
|
50
53
|
if (key === "@context") continue;
|
|
51
|
-
if (hasPublicCurieInAddressing(record[key], key, depth + 1)) return true;
|
|
54
|
+
if (hasPublicCurieInAddressing(record[key], preserveSecured, key, depth + 1)) return true;
|
|
52
55
|
}
|
|
53
56
|
return false;
|
|
54
57
|
}
|
|
55
|
-
function rewritePublicAudience(value, parentKey, depth = 0) {
|
|
58
|
+
function rewritePublicAudience(value, preserveSecured, parentKey, depth = 0) {
|
|
56
59
|
if (typeof value === "string" && parentKey != null && PUBLIC_ADDRESSING_FIELDS.has(parentKey) && (value === "as:Public" || value === "Public")) return PUBLIC_COLLECTION.href;
|
|
57
60
|
if (depth >= MAX_TRAVERSAL_DEPTH) return value;
|
|
58
61
|
if (Array.isArray(value)) {
|
|
59
62
|
let changed = false;
|
|
60
63
|
const mapped = value.map((item) => {
|
|
61
|
-
const rewritten = rewritePublicAudience(item, parentKey, depth + 1);
|
|
64
|
+
const rewritten = rewritePublicAudience(item, preserveSecured, parentKey, depth + 1);
|
|
62
65
|
if (rewritten !== item) changed = true;
|
|
63
66
|
return rewritten;
|
|
64
67
|
});
|
|
65
68
|
return changed ? mapped : value;
|
|
66
69
|
}
|
|
67
70
|
if (typeof value !== "object" || value == null) return value;
|
|
71
|
+
if (preserveSecured && depth > 0 && isSelfContainedSecuredDocument(value)) return value;
|
|
68
72
|
const record = value;
|
|
69
73
|
let changed = false;
|
|
70
74
|
const normalized = Object.create(null);
|
|
71
75
|
for (const key of Object.keys(record)) {
|
|
72
|
-
const rewritten = key === "@context" ? record[key] : rewritePublicAudience(record[key], key, depth + 1);
|
|
76
|
+
const rewritten = key === "@context" ? record[key] : record.type === "Follow" && key === "object" && (record[key] === "as:Public" || record[key] === "Public") ? PUBLIC_COLLECTION.href : rewritePublicAudience(record[key], preserveSecured, key, depth + 1);
|
|
73
77
|
if (rewritten !== record[key]) changed = true;
|
|
74
78
|
normalized[key] = rewritten;
|
|
75
79
|
}
|
|
@@ -168,9 +172,10 @@ function hasKnownSafeContext(jsonLd) {
|
|
|
168
172
|
* using the `eddsa-jcs-2022` cryptosuite), so the signed payload
|
|
169
173
|
* matches what is sent on the wire.
|
|
170
174
|
*/
|
|
171
|
-
async function normalizePublicAudience(jsonLd, contextLoader) {
|
|
172
|
-
|
|
173
|
-
|
|
175
|
+
async function normalizePublicAudience(jsonLd, contextLoader, options = {}) {
|
|
176
|
+
const preserveSecured = options.preserveNestedSecuredDocuments ?? false;
|
|
177
|
+
if (!hasPublicCurieInAddressing(jsonLd, preserveSecured)) return jsonLd;
|
|
178
|
+
const normalized = rewritePublicAudience(jsonLd, preserveSecured);
|
|
174
179
|
if (hasKnownSafeContext(jsonLd)) return normalized;
|
|
175
180
|
const loader = contextLoader ?? preloadedOnlyDocumentLoader;
|
|
176
181
|
try {
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import "temporal-polyfill";
|
|
2
|
+
import "urlpattern-polyfill";
|
|
3
|
+
globalThis.addEventListener = () => {};
|
|
4
|
+
import { getLogger } from "@logtape/logtape";
|
|
5
|
+
import { Router, RouterError, assertPath, isPath } from "@fedify/uri-template";
|
|
6
|
+
//#region src/federation/router.ts
|
|
7
|
+
const logger = getLogger([
|
|
8
|
+
"fedify",
|
|
9
|
+
"federation",
|
|
10
|
+
"router",
|
|
11
|
+
"deprecated"
|
|
12
|
+
]);
|
|
13
|
+
let deprecationWarned = false;
|
|
14
|
+
function warnDeprecated() {
|
|
15
|
+
if (deprecationWarned) return;
|
|
16
|
+
deprecationWarned = true;
|
|
17
|
+
logger.warn("The `Router` and `RouterError` classes from `@fedify/fedify` are deprecated. Please use `Router` from `@fedify/uri-template` instead.");
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* URL router and constructor based on URI Template
|
|
21
|
+
* ([RFC 6570](https://tools.ietf.org/html/rfc6570)).
|
|
22
|
+
*
|
|
23
|
+
* @deprecated Import `Router` from `@fedify/uri-template` instead. This class
|
|
24
|
+
* remains only for compatibility with older Fedify code. The
|
|
25
|
+
* `@fedify/uri-template` router is the replacement implementation
|
|
26
|
+
* and should be used directly in new code.
|
|
27
|
+
*/
|
|
28
|
+
var Router$1 = class Router$1 {
|
|
29
|
+
#router;
|
|
30
|
+
/**
|
|
31
|
+
* Create a new {@link Router}.
|
|
32
|
+
* @param options Options for the router.
|
|
33
|
+
* @deprecated Use `new Router(options)` from `@fedify/uri-template`
|
|
34
|
+
* instead.
|
|
35
|
+
*/
|
|
36
|
+
constructor(options) {
|
|
37
|
+
this.#router = convertRouterError(() => new Router(options));
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Whether to ignore trailing slashes when matching paths.
|
|
41
|
+
* @deprecated Use `Router` from `@fedify/uri-template` instead. This
|
|
42
|
+
* accessor forwards to the underlying `@fedify/uri-template`
|
|
43
|
+
* router so that post-construction mutation keeps working as
|
|
44
|
+
* in older Fedify code.
|
|
45
|
+
*/
|
|
46
|
+
get trailingSlashInsensitive() {
|
|
47
|
+
return this.#router.trailingSlashInsensitive;
|
|
48
|
+
}
|
|
49
|
+
set trailingSlashInsensitive(value) {
|
|
50
|
+
this.#router.trailingSlashInsensitive = value;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Clones this router.
|
|
54
|
+
* @deprecated Use `Router` from `@fedify/uri-template` instead.
|
|
55
|
+
*/
|
|
56
|
+
clone() {
|
|
57
|
+
return convertRouterError(() => {
|
|
58
|
+
const clone = new Router$1();
|
|
59
|
+
clone.#router = this.#router.clone();
|
|
60
|
+
return clone;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Checks if a path name exists in the router.
|
|
65
|
+
* @param name The name of the path.
|
|
66
|
+
* @returns `true` if the path name exists, otherwise `false`.
|
|
67
|
+
* @deprecated Use `Router` from `@fedify/uri-template` instead.
|
|
68
|
+
*/
|
|
69
|
+
has(name) {
|
|
70
|
+
return convertRouterError(() => this.#router.has(name));
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Adds a new path rule to the router.
|
|
74
|
+
* @param template The path pattern.
|
|
75
|
+
* @param name The name of the path.
|
|
76
|
+
* @returns The names of the variables in the path pattern.
|
|
77
|
+
* @deprecated Use `Router` from `@fedify/uri-template` instead. In this
|
|
78
|
+
* compatibility class, `add()` both registers the route and
|
|
79
|
+
* returns the variables in the path pattern. In
|
|
80
|
+
* `@fedify/uri-template`, these two responsibilities are split:
|
|
81
|
+
* `router.add(template, name)` registers the route and returns
|
|
82
|
+
* `void`, while the pure static method
|
|
83
|
+
* `Router.variables(template)` returns the variable names. To
|
|
84
|
+
* migrate, call `Router.variables(template)` when variables are
|
|
85
|
+
* needed, then call `router.add(template, name)` to register the
|
|
86
|
+
* route.
|
|
87
|
+
*/
|
|
88
|
+
add(template, name) {
|
|
89
|
+
return convertRouterError(() => {
|
|
90
|
+
assertPath(template);
|
|
91
|
+
this.#router.add(template, name);
|
|
92
|
+
return Router.variables(template);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Resolves a path name and values from a URL, if any match.
|
|
97
|
+
* @param url The URL to resolve.
|
|
98
|
+
* @returns The name of the path and its values, if any match. Otherwise,
|
|
99
|
+
* `null`.
|
|
100
|
+
* @deprecated Use `Router` from `@fedify/uri-template` instead. Unlike the
|
|
101
|
+
* stricter `@fedify/uri-template` router, this compatibility
|
|
102
|
+
* method keeps the old Fedify 2.x contract of returning `null`
|
|
103
|
+
* (rather than throwing) for inputs that are not router paths.
|
|
104
|
+
*/
|
|
105
|
+
route(url) {
|
|
106
|
+
return convertRouterError(() => {
|
|
107
|
+
if (!isPath(url)) return null;
|
|
108
|
+
return this.#router.route(url);
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Constructs a URL/path from a path name and values.
|
|
113
|
+
* @param name The name of the path.
|
|
114
|
+
* @param values The values to expand the path with.
|
|
115
|
+
* @returns The URL/path, if the name exists. Otherwise, `null`.
|
|
116
|
+
* @deprecated Use `Router` from `@fedify/uri-template` instead.
|
|
117
|
+
*/
|
|
118
|
+
build(name, values) {
|
|
119
|
+
return convertRouterError(() => this.#router.build(name, values));
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* An error thrown by the {@link Router}.
|
|
124
|
+
* @deprecated Import `RouterError` from `@fedify/uri-template` instead.
|
|
125
|
+
*/
|
|
126
|
+
var RouterError$1 = class extends RouterError {
|
|
127
|
+
/**
|
|
128
|
+
* Treats every `RouterError` from `@fedify/uri-template` as an instance of
|
|
129
|
+
* this deprecated class.
|
|
130
|
+
*
|
|
131
|
+
* @deprecated Import `RouterError` from `@fedify/uri-template` instead.
|
|
132
|
+
*/
|
|
133
|
+
static [Symbol.hasInstance](instance) {
|
|
134
|
+
return instance instanceof RouterError;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Create a new {@link RouterError}.
|
|
138
|
+
* @param message The error message.
|
|
139
|
+
* @deprecated Import `RouterError` from `@fedify/uri-template` instead.
|
|
140
|
+
*/
|
|
141
|
+
constructor(message) {
|
|
142
|
+
super(message);
|
|
143
|
+
warnDeprecated();
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
function convertRouterError(func) {
|
|
147
|
+
try {
|
|
148
|
+
warnDeprecated();
|
|
149
|
+
return func();
|
|
150
|
+
} catch (error) {
|
|
151
|
+
if (error instanceof RouterError) throw new RouterError$1(error.message);
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//#endregion
|
|
156
|
+
export { RouterError$1 as n, Router$1 as t };
|
package/dist/runtime/mod.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const { URLPattern } = require("urlpattern-polyfill");
|
|
2
|
-
require("../
|
|
2
|
+
require("../rolldown-runtime-Dmm3t92W.cjs");
|
|
3
3
|
var _fedify_vocab_runtime = require("@fedify/vocab-runtime");
|
|
4
4
|
Object.keys(_fedify_vocab_runtime).forEach(function(k) {
|
|
5
5
|
if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
package/dist/runtime/mod.js
CHANGED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import "temporal-polyfill";
|
|
2
|
+
import "urlpattern-polyfill";
|
|
3
|
+
globalThis.addEventListener = () => {};
|
|
4
|
+
//#region src/compat/secured-document.ts
|
|
5
|
+
function isJsonMap(value) {
|
|
6
|
+
return typeof value === "object" && value != null && !Array.isArray(value);
|
|
7
|
+
}
|
|
8
|
+
function isNonEmptyString(value) {
|
|
9
|
+
return typeof value === "string" && value.length > 0;
|
|
10
|
+
}
|
|
11
|
+
function hasDataIntegrityProofType(value) {
|
|
12
|
+
return (Array.isArray(value) ? value : [value]).some((type) => type === "DataIntegrityProof" || type === "https://w3id.org/security#DataIntegrityProof");
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Checks whether a JSON value is a complete, self-contained secured document:
|
|
16
|
+
* a map with its own `@context` and exactly one direct, map-valued `proof`
|
|
17
|
+
* that carries every member `eddsa-jcs-2022` proof generation produces.
|
|
18
|
+
*
|
|
19
|
+
* This is deliberately stricter than {@link hasProofLike}, which exists to
|
|
20
|
+
* decide whether a document is worth verifying. Here a false positive would
|
|
21
|
+
* silently suppress a wire-compatibility fix on an ordinary document, so a
|
|
22
|
+
* partial or malformed proof does not qualify.
|
|
23
|
+
*
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
function isSelfContainedSecuredDocument(value) {
|
|
27
|
+
if (!isJsonMap(value)) return false;
|
|
28
|
+
if (!Object.hasOwn(value, "@context") || value["@context"] == null) return false;
|
|
29
|
+
if (!Object.hasOwn(value, "proof")) return false;
|
|
30
|
+
const proof = value.proof;
|
|
31
|
+
if (!isJsonMap(proof)) return false;
|
|
32
|
+
return hasDataIntegrityProofType(proof.type) && isNonEmptyString(proof.cryptosuite) && isNonEmptyString(proof.created) && isNonEmptyString(proof.verificationMethod) && isNonEmptyString(proof.proofPurpose) && isNonEmptyString(proof.proofValue);
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
export { isSelfContainedSecuredDocument as t };
|