@fedify/vocab-runtime 2.1.0 → 2.1.2
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/deno.json +1 -1
- package/dist/{chunk-CUT6urMc.cjs → chunk-CKQMccvm.cjs} +7 -9
- package/dist/jsonld.cjs +4 -5
- package/dist/jsonld.d.cts +3 -4
- package/dist/jsonld.d.ts +2 -2
- package/dist/jsonld.js +1 -3
- package/dist/mod.cjs +107 -180
- package/dist/mod.d.cts +1 -2
- package/dist/mod.d.ts +1 -2
- package/dist/mod.js +83 -159
- package/dist/tests/{chunk-DWy1uDak.cjs → chunk-Do9eywBl.cjs} +13 -17
- package/dist/tests/decimal.test.cjs +12 -21
- package/dist/tests/{decimal.test.js → decimal.test.mjs} +10 -18
- package/dist/tests/{docloader-D3nu2LmR.cjs → docloader-0Yz9aPvU.cjs} +78 -91
- package/dist/tests/{docloader-U31begIa.js → docloader-DiLx08rm.mjs} +62 -75
- package/dist/tests/docloader.test.cjs +98 -88
- package/dist/tests/{docloader.test.js → docloader.test.mjs} +98 -94
- package/dist/tests/internal/multicodec.test.cjs +5 -7
- package/dist/tests/internal/{multicodec.test.js → multicodec.test.mjs} +3 -4
- package/dist/tests/{key-ByCmSI2y.js → key-BeTHFQJK.mjs} +14 -25
- package/dist/tests/{key-CCPn6TEY.cjs → key-DTTIntwb.cjs} +60 -71
- package/dist/tests/key.test.cjs +23 -45
- package/dist/tests/{key.test.js → key.test.mjs} +21 -42
- package/dist/tests/{langstr-EPh86hXK.cjs → langstr-CbAxaeEZ.cjs} +6 -8
- package/dist/tests/{langstr-BsVE3s9u.js → langstr-Di5AvKpB.mjs} +1 -2
- package/dist/tests/langstr.test.cjs +7 -8
- package/dist/tests/{langstr.test.js → langstr.test.mjs} +3 -4
- package/dist/tests/{link-DYNFAdNu.cjs → link-FguCydMA.cjs} +6 -8
- package/dist/tests/{link-C3q2TC2G.js → link-NUUWCdnK.mjs} +1 -2
- package/dist/tests/link.test.cjs +5 -7
- package/dist/tests/{link.test.js → link.test.mjs} +3 -4
- package/dist/tests/multibase/multibase.test.cjs +10 -17
- package/dist/tests/multibase/{multibase.test.js → multibase.test.mjs} +10 -18
- package/dist/tests/{multibase-B4g8pz6F.js → multibase-BgU9XRf7.mjs} +5 -12
- package/dist/tests/{multibase-o_ovPHYJ.cjs → multibase-F7LtMMsK.cjs} +43 -49
- package/dist/tests/{multicodec--6hQ74zI.cjs → multicodec-CxGVGa91.cjs} +16 -18
- package/dist/tests/{multicodec-Dq3IiOV4.js → multicodec-CyFp54fI.mjs} +1 -2
- package/dist/tests/{request-DyrEDYQ-.cjs → request-B4BOehn0.cjs} +38 -72
- package/dist/tests/{request-BH_NlxCL.js → request-Nob25QBF.mjs} +4 -45
- package/dist/tests/request.test.cjs +23 -24
- package/dist/tests/request.test.mjs +42 -0
- package/dist/tests/{url-CWEP9Zs9.js → url-BQ_kgmCk.mjs} +3 -7
- package/dist/tests/{url-DIjOdK8Q.cjs → url-pFuSds44.cjs} +31 -35
- package/dist/tests/url.test.cjs +5 -7
- package/dist/tests/{url.test.js → url.test.mjs} +3 -4
- package/package.json +3 -3
- package/src/docloader.test.ts +67 -0
- package/src/docloader.ts +43 -11
- package/dist/tests/request.test.js +0 -43
- /package/dist/tests/{decimal.test.d.ts → decimal.test.d.mts} +0 -0
- /package/dist/tests/{docloader.test.d.ts → docloader.test.d.mts} +0 -0
- /package/dist/tests/internal/{multicodec.test.d.ts → multicodec.test.d.mts} +0 -0
- /package/dist/tests/{key.test.d.ts → key.test.d.mts} +0 -0
- /package/dist/tests/{langstr.test.d.ts → langstr.test.d.mts} +0 -0
- /package/dist/tests/{link.test.d.ts → link.test.d.mts} +0 -0
- /package/dist/tests/multibase/{multibase.test.d.ts → multibase.test.d.mts} +0 -0
- /package/dist/tests/{request.test.d.ts → request.test.d.mts} +0 -0
- /package/dist/tests/{url.test.d.ts → url.test.d.mts} +0 -0
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { HttpHeaderLink } from "./link-
|
|
3
|
-
import {
|
|
1
|
+
import { a as name, i as logRequest, n as createActivityPubRequest, o as version, t as FetchError } from "./request-Nob25QBF.mjs";
|
|
2
|
+
import { t as HttpHeaderLink } from "./link-NUUWCdnK.mjs";
|
|
3
|
+
import { a as validatePublicUrl, t as UrlError } from "./url-BQ_kgmCk.mjs";
|
|
4
4
|
import { getLogger } from "@logtape/logtape";
|
|
5
5
|
import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
6
|
-
|
|
7
6
|
//#region src/contexts/activitystreams.json
|
|
8
|
-
var
|
|
7
|
+
var activitystreams_default = { "@context": {
|
|
9
8
|
"@vocab": "_:",
|
|
10
9
|
"xsd": "http://www.w3.org/2001/XMLSchema#",
|
|
11
10
|
"as": "https://www.w3.org/ns/activitystreams#",
|
|
@@ -381,12 +380,10 @@ var __context$11 = {
|
|
|
381
380
|
"@id": "as:alsoKnownAs",
|
|
382
381
|
"@type": "@id"
|
|
383
382
|
}
|
|
384
|
-
};
|
|
385
|
-
var activitystreams_default = { "@context": __context$11 };
|
|
386
|
-
|
|
383
|
+
} };
|
|
387
384
|
//#endregion
|
|
388
385
|
//#region src/contexts/did-v1.json
|
|
389
|
-
var
|
|
386
|
+
var did_v1_default = { "@context": {
|
|
390
387
|
"@protected": true,
|
|
391
388
|
"id": "@id",
|
|
392
389
|
"type": "@type",
|
|
@@ -440,12 +437,10 @@ var __context$10 = {
|
|
|
440
437
|
"@id": "https://w3id.org/security#verificationMethod",
|
|
441
438
|
"@type": "@id"
|
|
442
439
|
}
|
|
443
|
-
};
|
|
444
|
-
var did_v1_default = { "@context": __context$10 };
|
|
445
|
-
|
|
440
|
+
} };
|
|
446
441
|
//#endregion
|
|
447
442
|
//#region src/contexts/fep-5711.json
|
|
448
|
-
var
|
|
443
|
+
var fep_5711_default = { "@context": {
|
|
449
444
|
"likesOf": {
|
|
450
445
|
"@id": "https://w3id.org/fep/5711#likesOf",
|
|
451
446
|
"@type": "@id"
|
|
@@ -478,12 +473,10 @@ var __context$9 = {
|
|
|
478
473
|
"@id": "https://w3id.org/fep/5711#likedOf",
|
|
479
474
|
"@type": "@id"
|
|
480
475
|
}
|
|
481
|
-
};
|
|
482
|
-
var fep_5711_default = { "@context": __context$9 };
|
|
483
|
-
|
|
476
|
+
} };
|
|
484
477
|
//#endregion
|
|
485
478
|
//#region src/contexts/gotosocial.json
|
|
486
|
-
var
|
|
479
|
+
var gotosocial_default = { "@context": {
|
|
487
480
|
"xsd": "http://www.w3.org/2001/XMLSchema#",
|
|
488
481
|
"gts": "https://gotosocial.org/ns#",
|
|
489
482
|
"LikeRequest": "gts:LikeRequest",
|
|
@@ -566,12 +559,10 @@ var __context$8 = {
|
|
|
566
559
|
"@id": "gts:approvedBy",
|
|
567
560
|
"@type": "@id"
|
|
568
561
|
}
|
|
569
|
-
};
|
|
570
|
-
var gotosocial_default = { "@context": __context$8 };
|
|
571
|
-
|
|
562
|
+
} };
|
|
572
563
|
//#endregion
|
|
573
564
|
//#region src/contexts/identity-v1.json
|
|
574
|
-
var
|
|
565
|
+
var identity_v1_default = { "@context": {
|
|
575
566
|
"id": "@id",
|
|
576
567
|
"type": "@type",
|
|
577
568
|
"cred": "https://w3id.org/credentials#",
|
|
@@ -720,12 +711,10 @@ var __context$7 = {
|
|
|
720
711
|
"@id": "perm:writePermission",
|
|
721
712
|
"@type": "@id"
|
|
722
713
|
}
|
|
723
|
-
};
|
|
724
|
-
var identity_v1_default = { "@context": __context$7 };
|
|
725
|
-
|
|
714
|
+
} };
|
|
726
715
|
//#endregion
|
|
727
716
|
//#region src/contexts/joinmastodon.json
|
|
728
|
-
var
|
|
717
|
+
var joinmastodon_default = { "@context": {
|
|
729
718
|
"toot": "http://joinmastodon.org/ns#",
|
|
730
719
|
"Emoji": "toot:Emoji",
|
|
731
720
|
"featured": {
|
|
@@ -750,12 +739,10 @@ var __context$6 = {
|
|
|
750
739
|
"@id": "toot:attributionDomains",
|
|
751
740
|
"@type": "@id"
|
|
752
741
|
}
|
|
753
|
-
};
|
|
754
|
-
var joinmastodon_default = { "@context": __context$6 };
|
|
755
|
-
|
|
742
|
+
} };
|
|
756
743
|
//#endregion
|
|
757
744
|
//#region src/contexts/schemaorg.json
|
|
758
|
-
var
|
|
745
|
+
var schemaorg_default = { "@context": {
|
|
759
746
|
"type": "@type",
|
|
760
747
|
"id": "@id",
|
|
761
748
|
"HTML": { "@id": "rdf:HTML" },
|
|
@@ -4057,12 +4044,10 @@ var __context$5 = {
|
|
|
4057
4044
|
"yearlyRevenue": { "@id": "schema:yearlyRevenue" },
|
|
4058
4045
|
"yearsInOperation": { "@id": "schema:yearsInOperation" },
|
|
4059
4046
|
"yield": { "@id": "schema:yield" }
|
|
4060
|
-
};
|
|
4061
|
-
var schemaorg_default = { "@context": __context$5 };
|
|
4062
|
-
|
|
4047
|
+
} };
|
|
4063
4048
|
//#endregion
|
|
4064
4049
|
//#region src/contexts/security-data-integrity-v1.json
|
|
4065
|
-
var
|
|
4050
|
+
var security_data_integrity_v1_default = { "@context": {
|
|
4066
4051
|
"id": "@id",
|
|
4067
4052
|
"type": "@type",
|
|
4068
4053
|
"@protected": true,
|
|
@@ -4137,12 +4122,10 @@ var __context$4 = {
|
|
|
4137
4122
|
}
|
|
4138
4123
|
}
|
|
4139
4124
|
}
|
|
4140
|
-
};
|
|
4141
|
-
var security_data_integrity_v1_default = { "@context": __context$4 };
|
|
4142
|
-
|
|
4125
|
+
} };
|
|
4143
4126
|
//#endregion
|
|
4144
4127
|
//#region src/contexts/security-data-integrity-v2.json
|
|
4145
|
-
var
|
|
4128
|
+
var security_data_integrity_v2_default = { "@context": {
|
|
4146
4129
|
"id": "@id",
|
|
4147
4130
|
"type": "@type",
|
|
4148
4131
|
"@protected": true,
|
|
@@ -4220,12 +4203,10 @@ var __context$3 = {
|
|
|
4220
4203
|
}
|
|
4221
4204
|
}
|
|
4222
4205
|
}
|
|
4223
|
-
};
|
|
4224
|
-
var security_data_integrity_v2_default = { "@context": __context$3 };
|
|
4225
|
-
|
|
4206
|
+
} };
|
|
4226
4207
|
//#endregion
|
|
4227
4208
|
//#region src/contexts/security-multikey-v1.json
|
|
4228
|
-
var
|
|
4209
|
+
var security_multikey_v1_default = { "@context": {
|
|
4229
4210
|
"id": "@id",
|
|
4230
4211
|
"type": "@type",
|
|
4231
4212
|
"@protected": true,
|
|
@@ -4257,12 +4238,10 @@ var __context$2 = {
|
|
|
4257
4238
|
}
|
|
4258
4239
|
}
|
|
4259
4240
|
}
|
|
4260
|
-
};
|
|
4261
|
-
var security_multikey_v1_default = { "@context": __context$2 };
|
|
4262
|
-
|
|
4241
|
+
} };
|
|
4263
4242
|
//#endregion
|
|
4264
4243
|
//#region src/contexts/security-v1.json
|
|
4265
|
-
var
|
|
4244
|
+
var security_v1_default = { "@context": {
|
|
4266
4245
|
"id": "@id",
|
|
4267
4246
|
"type": "@type",
|
|
4268
4247
|
"dc": "http://purl.org/dc/terms/",
|
|
@@ -4333,21 +4312,17 @@ var __context$1 = {
|
|
|
4333
4312
|
"signature": "sec:signature",
|
|
4334
4313
|
"signatureAlgorithm": "sec:signingAlgorithm",
|
|
4335
4314
|
"signatureValue": "sec:signatureValue"
|
|
4336
|
-
};
|
|
4337
|
-
var security_v1_default = { "@context": __context$1 };
|
|
4338
|
-
|
|
4315
|
+
} };
|
|
4339
4316
|
//#endregion
|
|
4340
4317
|
//#region src/contexts/webfinger.json
|
|
4341
|
-
var
|
|
4318
|
+
var webfinger_default = { "@context": {
|
|
4342
4319
|
"wf": "https://purl.archive.org/socialweb/webfinger#",
|
|
4343
4320
|
"xsd": "http://www.w3.org/2001/XMLSchema#",
|
|
4344
4321
|
"webfinger": {
|
|
4345
4322
|
"@id": "wf:webfinger",
|
|
4346
4323
|
"@type": "xsd:string"
|
|
4347
4324
|
}
|
|
4348
|
-
};
|
|
4349
|
-
var webfinger_default = { "@context": __context };
|
|
4350
|
-
|
|
4325
|
+
} };
|
|
4351
4326
|
//#endregion
|
|
4352
4327
|
//#region src/contexts.ts
|
|
4353
4328
|
const preloadedContexts = {
|
|
@@ -4364,8 +4339,6 @@ const preloadedContexts = {
|
|
|
4364
4339
|
"https://w3id.org/fep/5711": fep_5711_default,
|
|
4365
4340
|
"http://joinmastodon.org/ns": joinmastodon_default
|
|
4366
4341
|
};
|
|
4367
|
-
var contexts_default = preloadedContexts;
|
|
4368
|
-
|
|
4369
4342
|
//#endregion
|
|
4370
4343
|
//#region src/docloader.ts
|
|
4371
4344
|
const logger = getLogger([
|
|
@@ -4373,6 +4346,7 @@ const logger = getLogger([
|
|
|
4373
4346
|
"runtime",
|
|
4374
4347
|
"docloader"
|
|
4375
4348
|
]);
|
|
4349
|
+
const DEFAULT_MAX_REDIRECTION = 20;
|
|
4376
4350
|
/**
|
|
4377
4351
|
* Gets a {@link RemoteDocument} from the given response.
|
|
4378
4352
|
* @param url The URL of the document to load.
|
|
@@ -4382,7 +4356,7 @@ const logger = getLogger([
|
|
|
4382
4356
|
* @throws {FetchError} If the response is not OK.
|
|
4383
4357
|
* @internal
|
|
4384
4358
|
*/
|
|
4385
|
-
async function getRemoteDocument(url, response, fetch
|
|
4359
|
+
async function getRemoteDocument(url, response, fetch) {
|
|
4386
4360
|
const documentUrl = response.url === "" ? url : response.url;
|
|
4387
4361
|
const docUrl = new URL(documentUrl);
|
|
4388
4362
|
if (!response.ok) {
|
|
@@ -4420,7 +4394,7 @@ async function getRemoteDocument(url, response, fetch$1) {
|
|
|
4420
4394
|
alternateUrl: altUri.href,
|
|
4421
4395
|
url: documentUrl
|
|
4422
4396
|
});
|
|
4423
|
-
return await fetch
|
|
4397
|
+
return await fetch(altUri.href);
|
|
4424
4398
|
}
|
|
4425
4399
|
}
|
|
4426
4400
|
}
|
|
@@ -4446,15 +4420,14 @@ async function getRemoteDocument(url, response, fetch$1) {
|
|
|
4446
4420
|
attrPattern.lastIndex = 0;
|
|
4447
4421
|
while ((attrMatch = attrPattern.exec(tagContent)) !== null) {
|
|
4448
4422
|
const key = attrMatch[1].toLowerCase();
|
|
4449
|
-
|
|
4450
|
-
attribs[key] = value;
|
|
4423
|
+
attribs[key] = attrMatch[2] ?? attrMatch[3] ?? attrMatch[4] ?? "";
|
|
4451
4424
|
}
|
|
4452
4425
|
if (attribs.rel === "alternate" && "type" in attribs && (attribs.type === "application/activity+json" || attribs.type === "application/ld+json" || attribs.type.startsWith("application/ld+json;")) && "href" in attribs && new URL(attribs.href, docUrl).href !== docUrl.href) {
|
|
4453
4426
|
logger.debug("Found alternate document: {alternateUrl} from {url}", {
|
|
4454
4427
|
alternateUrl: attribs.href,
|
|
4455
4428
|
url: documentUrl
|
|
4456
4429
|
});
|
|
4457
|
-
return await fetch
|
|
4430
|
+
return await fetch(new URL(attribs.href, docUrl).href);
|
|
4458
4431
|
}
|
|
4459
4432
|
}
|
|
4460
4433
|
document = JSON.parse(html);
|
|
@@ -4489,33 +4462,34 @@ async function getRemoteDocument(url, response, fetch$1) {
|
|
|
4489
4462
|
* @since 1.3.0
|
|
4490
4463
|
*/
|
|
4491
4464
|
function getDocumentLoader({ allowPrivateAddress, skipPreloadedContexts, userAgent } = {}) {
|
|
4492
|
-
const
|
|
4493
|
-
|
|
4494
|
-
async function load(url, options) {
|
|
4465
|
+
const tracer = trace.getTracerProvider().getTracer(name, version);
|
|
4466
|
+
async function load(url, options, redirected = 0, visited = /* @__PURE__ */ new Set()) {
|
|
4495
4467
|
options?.signal?.throwIfAborted();
|
|
4496
|
-
|
|
4497
|
-
|
|
4468
|
+
const currentUrl = new URL(url).href;
|
|
4469
|
+
if (!skipPreloadedContexts && currentUrl in preloadedContexts) {
|
|
4470
|
+
logger.debug("Using preloaded context: {url}.", { url: currentUrl });
|
|
4498
4471
|
return {
|
|
4499
4472
|
contextUrl: null,
|
|
4500
|
-
document:
|
|
4501
|
-
documentUrl:
|
|
4473
|
+
document: preloadedContexts[currentUrl],
|
|
4474
|
+
documentUrl: currentUrl
|
|
4502
4475
|
};
|
|
4503
4476
|
}
|
|
4504
4477
|
if (!allowPrivateAddress) try {
|
|
4505
|
-
await validatePublicUrl(
|
|
4478
|
+
await validatePublicUrl(currentUrl);
|
|
4506
4479
|
} catch (error) {
|
|
4507
4480
|
if (error instanceof UrlError) logger.error("Disallowed private URL: {url}", {
|
|
4508
|
-
url,
|
|
4481
|
+
url: currentUrl,
|
|
4509
4482
|
error
|
|
4510
4483
|
});
|
|
4511
4484
|
throw error;
|
|
4512
4485
|
}
|
|
4486
|
+
visited.add(currentUrl);
|
|
4513
4487
|
return await tracer.startActiveSpan("activitypub.fetch_document", {
|
|
4514
4488
|
kind: SpanKind.CLIENT,
|
|
4515
|
-
attributes: { "url.full":
|
|
4489
|
+
attributes: { "url.full": currentUrl }
|
|
4516
4490
|
}, async (span) => {
|
|
4517
4491
|
try {
|
|
4518
|
-
const request = createActivityPubRequest(
|
|
4492
|
+
const request = createActivityPubRequest(currentUrl, { userAgent });
|
|
4519
4493
|
logRequest(logger, request);
|
|
4520
4494
|
const response = await fetch(request, {
|
|
4521
4495
|
redirect: "manual",
|
|
@@ -4523,11 +4497,25 @@ function getDocumentLoader({ allowPrivateAddress, skipPreloadedContexts, userAge
|
|
|
4523
4497
|
});
|
|
4524
4498
|
span.setAttribute("http.response.status_code", response.status);
|
|
4525
4499
|
if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) {
|
|
4526
|
-
|
|
4500
|
+
if (redirected >= DEFAULT_MAX_REDIRECTION) {
|
|
4501
|
+
logger.error("Too many redirections ({redirections}) while fetching document.", {
|
|
4502
|
+
redirections: redirected + 1,
|
|
4503
|
+
url: currentUrl
|
|
4504
|
+
});
|
|
4505
|
+
throw new FetchError(currentUrl, `Too many redirections (${redirected + 1})`);
|
|
4506
|
+
}
|
|
4507
|
+
const redirectUrl = new URL(response.headers.get("Location"), response.url === "" ? currentUrl : response.url).href;
|
|
4527
4508
|
span.setAttribute("http.redirect.url", redirectUrl);
|
|
4528
|
-
|
|
4509
|
+
if (visited.has(redirectUrl)) {
|
|
4510
|
+
logger.error("Detected a redirect loop while fetching document: {url} -> {redirectUrl}", {
|
|
4511
|
+
url: currentUrl,
|
|
4512
|
+
redirectUrl
|
|
4513
|
+
});
|
|
4514
|
+
throw new FetchError(currentUrl, `Redirect loop detected: ${redirectUrl}`);
|
|
4515
|
+
}
|
|
4516
|
+
return await load(redirectUrl, options, redirected + 1, visited);
|
|
4529
4517
|
}
|
|
4530
|
-
const result = await getRemoteDocument(
|
|
4518
|
+
const result = await getRemoteDocument(currentUrl, response, load);
|
|
4531
4519
|
span.setAttribute("docloader.document_url", result.documentUrl);
|
|
4532
4520
|
if (result.contextUrl != null) span.setAttribute("docloader.context_url", result.contextUrl);
|
|
4533
4521
|
return result;
|
|
@@ -4545,6 +4533,5 @@ function getDocumentLoader({ allowPrivateAddress, skipPreloadedContexts, userAge
|
|
|
4545
4533
|
}
|
|
4546
4534
|
return load;
|
|
4547
4535
|
}
|
|
4548
|
-
|
|
4549
4536
|
//#endregion
|
|
4550
|
-
export {
|
|
4537
|
+
export { preloadedContexts as n, getDocumentLoader as t };
|