@fedify/vocab-runtime 2.0.8 → 2.0.10
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 +56 -121
- package/dist/mod.d.cts +1 -5
- package/dist/mod.d.ts +1 -5
- package/dist/mod.js +32 -100
- package/dist/tests/{chunk-DWy1uDak.cjs → chunk-Do9eywBl.cjs} +13 -17
- package/dist/tests/docloader.test.cjs +65 -106
- package/dist/tests/{docloader.test.js → docloader.test.mjs} +60 -107
- 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.test.cjs +39 -70
- package/dist/tests/{key.test.js → key.test.mjs} +32 -62
- package/dist/tests/langstr.test.cjs +6 -8
- package/dist/tests/{langstr.test.js → langstr.test.mjs} +2 -4
- package/dist/tests/{link-CdFPEo9O.cjs → link-B6ZWBZhf.cjs} +6 -8
- package/dist/tests/{link-Ck2yj4dH.js → link-B8JGXSS2.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-B2D6B0V4.cjs → multibase-CgYqpk4Z.cjs} +43 -49
- package/dist/tests/{multibase-BdHCGO4H.js → multibase-jcKrOpuU.mjs} +5 -12
- package/dist/tests/{multicodec-mHcRzSGY.cjs → multicodec-DeYop8xg.cjs} +16 -18
- package/dist/tests/{multicodec-DvC5xnX2.js → multicodec-aqbZnrNi.mjs} +1 -2
- package/dist/tests/{request-Cqx2eUpt.js → request-BaPLwjp1.mjs} +4 -45
- package/dist/tests/{request-D2-F2dMS.cjs → request-DIHEQLwz.cjs} +38 -72
- package/dist/tests/request.test.cjs +23 -24
- package/dist/tests/request.test.mjs +42 -0
- package/dist/tests/{url-C5Vs9nYh.cjs → url-Cr2K-wzd.cjs} +31 -35
- package/dist/tests/{url-fW_DHbih.js → url-Djghaq0m.mjs} +3 -7
- 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/dist/tests/request.test.js +0 -43
- /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
package/deno.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
2
|
var __create = Object.create;
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -19,12 +19,10 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
19
19
|
value: mod,
|
|
20
20
|
enumerable: true
|
|
21
21
|
}) : target, mod));
|
|
22
|
-
|
|
23
22
|
//#endregion
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
});
|
|
23
|
+
Object.defineProperty(exports, "__toESM", {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
get: function() {
|
|
26
|
+
return __toESM;
|
|
27
|
+
}
|
|
28
|
+
});
|
package/dist/jsonld.cjs
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
const require_chunk = require(
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
const require_chunk = require("./chunk-CKQMccvm.cjs");
|
|
2
|
+
let jsonld_dist_jsonld_esm_js = require("jsonld/dist/jsonld.esm.js");
|
|
3
|
+
jsonld_dist_jsonld_esm_js = require_chunk.__toESM(jsonld_dist_jsonld_esm_js);
|
|
4
4
|
//#region src/jsonld.ts
|
|
5
5
|
var jsonld_default = jsonld_dist_jsonld_esm_js.default;
|
|
6
|
-
|
|
7
6
|
//#endregion
|
|
8
|
-
module.exports = jsonld_default;
|
|
7
|
+
module.exports = jsonld_default;
|
package/dist/jsonld.d.cts
CHANGED
package/dist/jsonld.d.ts
CHANGED
package/dist/jsonld.js
CHANGED
package/dist/mod.cjs
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_chunk = require("./chunk-CKQMccvm.cjs");
|
|
3
|
+
let _logtape_logtape = require("@logtape/logtape");
|
|
4
|
+
let _opentelemetry_api = require("@opentelemetry/api");
|
|
5
|
+
let node_process = require("node:process");
|
|
6
|
+
node_process = require_chunk.__toESM(node_process);
|
|
7
|
+
let node_dns_promises = require("node:dns/promises");
|
|
8
|
+
let node_net = require("node:net");
|
|
9
|
+
let asn1js = require("asn1js");
|
|
10
|
+
let byte_encodings_base64 = require("byte-encodings/base64");
|
|
11
|
+
let byte_encodings_base64url = require("byte-encodings/base64url");
|
|
12
|
+
let node_crypto = require("node:crypto");
|
|
13
|
+
let pkijs = require("pkijs");
|
|
14
|
+
let _multiformats_base_x = require("@multiformats/base-x");
|
|
15
|
+
_multiformats_base_x = require_chunk.__toESM(_multiformats_base_x);
|
|
14
16
|
//#region src/contexts.ts
|
|
15
17
|
const preloadedContexts = {
|
|
16
18
|
"https://www.w3.org/ns/activitystreams": { "@context": {
|
|
@@ -4258,50 +4260,10 @@ const preloadedContexts = {
|
|
|
4258
4260
|
}
|
|
4259
4261
|
} }
|
|
4260
4262
|
};
|
|
4261
|
-
var contexts_default = preloadedContexts;
|
|
4262
|
-
|
|
4263
4263
|
//#endregion
|
|
4264
4264
|
//#region deno.json
|
|
4265
4265
|
var name = "@fedify/vocab-runtime";
|
|
4266
|
-
var version = "2.0.
|
|
4267
|
-
var license = "MIT";
|
|
4268
|
-
var exports$1 = {
|
|
4269
|
-
".": "./src/mod.ts",
|
|
4270
|
-
"./jsonld": "./src/jsonld.ts"
|
|
4271
|
-
};
|
|
4272
|
-
var description = "Runtime library for @fedify/vocab";
|
|
4273
|
-
var author = {
|
|
4274
|
-
"name": "Hong Minhee",
|
|
4275
|
-
"email": "hong@minhee.org",
|
|
4276
|
-
"url": "https://hongminhee.org/"
|
|
4277
|
-
};
|
|
4278
|
-
var imports = {
|
|
4279
|
-
"@multiformats/base-x": "npm:@multiformats/base-x@^4.0.1",
|
|
4280
|
-
"asn1js": "npm:asn1js@^3.0.6",
|
|
4281
|
-
"byte-encodings": "npm:byte-encodings@^1.0.11",
|
|
4282
|
-
"fetch-mock": "npm:fetch-mock@^12.5.4",
|
|
4283
|
-
"jsonld": "npm:jsonld@^9.0.0",
|
|
4284
|
-
"pkijs": "npm:pkijs@^3.2.5"
|
|
4285
|
-
};
|
|
4286
|
-
var exclude = ["dist", "node_modules"];
|
|
4287
|
-
var publish = { "exclude": ["**/*.test.ts", "tsdown.config.ts"] };
|
|
4288
|
-
var tasks = {
|
|
4289
|
-
"check": "deno fmt --check && deno lint && deno check src/*.ts",
|
|
4290
|
-
"test": "deno test"
|
|
4291
|
-
};
|
|
4292
|
-
var deno_default = {
|
|
4293
|
-
name,
|
|
4294
|
-
version,
|
|
4295
|
-
license,
|
|
4296
|
-
exports: exports$1,
|
|
4297
|
-
description,
|
|
4298
|
-
author,
|
|
4299
|
-
imports,
|
|
4300
|
-
exclude,
|
|
4301
|
-
publish,
|
|
4302
|
-
tasks
|
|
4303
|
-
};
|
|
4304
|
-
|
|
4266
|
+
var version = "2.0.10";
|
|
4305
4267
|
//#endregion
|
|
4306
4268
|
//#region src/link.ts
|
|
4307
4269
|
const parametersNeedLowerCase = ["rel", "type"];
|
|
@@ -4483,7 +4445,6 @@ var HttpHeaderLink = class HttpHeaderLink {
|
|
|
4483
4445
|
return new this(...inputs).toString();
|
|
4484
4446
|
}
|
|
4485
4447
|
};
|
|
4486
|
-
|
|
4487
4448
|
//#endregion
|
|
4488
4449
|
//#region src/request.ts
|
|
4489
4450
|
/**
|
|
@@ -4529,27 +4490,25 @@ function createActivityPubRequest(url, options = {}) {
|
|
|
4529
4490
|
* @since 1.3.0
|
|
4530
4491
|
*/
|
|
4531
4492
|
function getUserAgent({ software, url } = {}) {
|
|
4532
|
-
const fedify = `Fedify/${
|
|
4493
|
+
const fedify = `Fedify/${version}`;
|
|
4533
4494
|
const runtime = globalThis.Deno?.version?.deno != null ? `Deno/${Deno.version.deno}` : globalThis.process?.versions?.bun != null ? `Bun/${node_process.default.versions.bun}` : "navigator" in globalThis && navigator.userAgent === "Cloudflare-Workers" ? navigator.userAgent : globalThis.process?.versions?.node != null ? `Node.js/${node_process.default.versions.node}` : null;
|
|
4534
4495
|
const userAgent = software == null ? [fedify] : [software, fedify];
|
|
4535
4496
|
if (runtime != null) userAgent.push(runtime);
|
|
4536
4497
|
if (url != null) userAgent.push(`+${url.toString()}`);
|
|
4537
|
-
|
|
4538
|
-
return `${first} (${userAgent.join("; ")})`;
|
|
4498
|
+
return `${userAgent.shift()} (${userAgent.join("; ")})`;
|
|
4539
4499
|
}
|
|
4540
4500
|
/**
|
|
4541
4501
|
* Logs the request.
|
|
4542
4502
|
* @param request The request to log.
|
|
4543
4503
|
* @internal
|
|
4544
4504
|
*/
|
|
4545
|
-
function logRequest(logger
|
|
4546
|
-
logger
|
|
4505
|
+
function logRequest(logger, request) {
|
|
4506
|
+
logger.debug("Fetching document: {method} {url} {headers}", {
|
|
4547
4507
|
method: request.method,
|
|
4548
4508
|
url: request.url,
|
|
4549
4509
|
headers: Object.fromEntries(request.headers.entries())
|
|
4550
4510
|
});
|
|
4551
4511
|
}
|
|
4552
|
-
|
|
4553
4512
|
//#endregion
|
|
4554
4513
|
//#region src/url.ts
|
|
4555
4514
|
var UrlError = class extends Error {
|
|
@@ -4568,8 +4527,7 @@ async function validatePublicUrl(url) {
|
|
|
4568
4527
|
if (hostname.startsWith("[") && hostname.endsWith("]")) hostname = hostname.substring(1, hostname.length - 2);
|
|
4569
4528
|
if (hostname === "localhost") throw new UrlError("Localhost is not allowed");
|
|
4570
4529
|
if ("Deno" in globalThis && !(0, node_net.isIP)(hostname)) {
|
|
4571
|
-
|
|
4572
|
-
if (netPermission.state !== "granted") return;
|
|
4530
|
+
if ((await Deno.permissions.query({ name: "net" })).state !== "granted") return;
|
|
4573
4531
|
}
|
|
4574
4532
|
if ("Bun" in globalThis) {
|
|
4575
4533
|
if (hostname === "example.com" || hostname.endsWith(".example.com")) return;
|
|
@@ -4605,13 +4563,11 @@ function expandIPv6Address(address) {
|
|
|
4605
4563
|
if (address.startsWith("::")) address = "0000" + address;
|
|
4606
4564
|
if (address.endsWith("::")) address = address + "0000";
|
|
4607
4565
|
address = address.replace("::", ":0000".repeat(8 - (address.match(/:/g) || []).length) + ":");
|
|
4608
|
-
|
|
4609
|
-
return parts.map((part) => part.padStart(4, "0")).join(":");
|
|
4566
|
+
return address.split(":").map((part) => part.padStart(4, "0")).join(":");
|
|
4610
4567
|
}
|
|
4611
|
-
|
|
4612
4568
|
//#endregion
|
|
4613
4569
|
//#region src/docloader.ts
|
|
4614
|
-
const logger = (0,
|
|
4570
|
+
const logger = (0, _logtape_logtape.getLogger)([
|
|
4615
4571
|
"fedify",
|
|
4616
4572
|
"runtime",
|
|
4617
4573
|
"docloader"
|
|
@@ -4626,7 +4582,7 @@ const DEFAULT_MAX_REDIRECTION = 20;
|
|
|
4626
4582
|
* @throws {FetchError} If the response is not OK.
|
|
4627
4583
|
* @internal
|
|
4628
4584
|
*/
|
|
4629
|
-
async function getRemoteDocument(url, response, fetch
|
|
4585
|
+
async function getRemoteDocument(url, response, fetch) {
|
|
4630
4586
|
const documentUrl = response.url === "" ? url : response.url;
|
|
4631
4587
|
const docUrl = new URL(documentUrl);
|
|
4632
4588
|
if (!response.ok) {
|
|
@@ -4664,7 +4620,7 @@ async function getRemoteDocument(url, response, fetch$1) {
|
|
|
4664
4620
|
alternateUrl: altUri.href,
|
|
4665
4621
|
url: documentUrl
|
|
4666
4622
|
});
|
|
4667
|
-
return await fetch
|
|
4623
|
+
return await fetch(altUri.href);
|
|
4668
4624
|
}
|
|
4669
4625
|
}
|
|
4670
4626
|
}
|
|
@@ -4690,15 +4646,14 @@ async function getRemoteDocument(url, response, fetch$1) {
|
|
|
4690
4646
|
attrPattern.lastIndex = 0;
|
|
4691
4647
|
while ((attrMatch = attrPattern.exec(tagContent)) !== null) {
|
|
4692
4648
|
const key = attrMatch[1].toLowerCase();
|
|
4693
|
-
|
|
4694
|
-
attribs[key] = value;
|
|
4649
|
+
attribs[key] = attrMatch[2] ?? attrMatch[3] ?? attrMatch[4] ?? "";
|
|
4695
4650
|
}
|
|
4696
4651
|
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) {
|
|
4697
4652
|
logger.debug("Found alternate document: {alternateUrl} from {url}", {
|
|
4698
4653
|
alternateUrl: attribs.href,
|
|
4699
4654
|
url: documentUrl
|
|
4700
4655
|
});
|
|
4701
|
-
return await fetch
|
|
4656
|
+
return await fetch(new URL(attribs.href, docUrl).href);
|
|
4702
4657
|
}
|
|
4703
4658
|
}
|
|
4704
4659
|
document = JSON.parse(html);
|
|
@@ -4733,16 +4688,15 @@ async function getRemoteDocument(url, response, fetch$1) {
|
|
|
4733
4688
|
* @since 1.3.0
|
|
4734
4689
|
*/
|
|
4735
4690
|
function getDocumentLoader({ allowPrivateAddress, skipPreloadedContexts, userAgent } = {}) {
|
|
4736
|
-
const
|
|
4737
|
-
const tracer = tracerProvider.getTracer(deno_default.name, deno_default.version);
|
|
4691
|
+
const tracer = _opentelemetry_api.trace.getTracerProvider().getTracer(name, version);
|
|
4738
4692
|
async function load(url, options, redirected = 0, visited = /* @__PURE__ */ new Set()) {
|
|
4739
4693
|
options?.signal?.throwIfAborted();
|
|
4740
4694
|
const currentUrl = new URL(url).href;
|
|
4741
|
-
if (!skipPreloadedContexts && currentUrl in
|
|
4695
|
+
if (!skipPreloadedContexts && currentUrl in preloadedContexts) {
|
|
4742
4696
|
logger.debug("Using preloaded context: {url}.", { url: currentUrl });
|
|
4743
4697
|
return {
|
|
4744
4698
|
contextUrl: null,
|
|
4745
|
-
document:
|
|
4699
|
+
document: preloadedContexts[currentUrl],
|
|
4746
4700
|
documentUrl: currentUrl
|
|
4747
4701
|
};
|
|
4748
4702
|
}
|
|
@@ -4757,7 +4711,7 @@ function getDocumentLoader({ allowPrivateAddress, skipPreloadedContexts, userAge
|
|
|
4757
4711
|
}
|
|
4758
4712
|
visited.add(currentUrl);
|
|
4759
4713
|
return await tracer.startActiveSpan("activitypub.fetch_document", {
|
|
4760
|
-
kind:
|
|
4714
|
+
kind: _opentelemetry_api.SpanKind.CLIENT,
|
|
4761
4715
|
attributes: { "url.full": currentUrl }
|
|
4762
4716
|
}, async (span) => {
|
|
4763
4717
|
try {
|
|
@@ -4794,7 +4748,7 @@ function getDocumentLoader({ allowPrivateAddress, skipPreloadedContexts, userAge
|
|
|
4794
4748
|
} catch (error) {
|
|
4795
4749
|
span.recordException(error);
|
|
4796
4750
|
span.setStatus({
|
|
4797
|
-
code:
|
|
4751
|
+
code: _opentelemetry_api.SpanStatusCode.ERROR,
|
|
4798
4752
|
message: String(error)
|
|
4799
4753
|
});
|
|
4800
4754
|
throw error;
|
|
@@ -4805,7 +4759,6 @@ function getDocumentLoader({ allowPrivateAddress, skipPreloadedContexts, userAge
|
|
|
4805
4759
|
}
|
|
4806
4760
|
return load;
|
|
4807
4761
|
}
|
|
4808
|
-
|
|
4809
4762
|
//#endregion
|
|
4810
4763
|
//#region src/internal/multicodec.ts
|
|
4811
4764
|
const INVALID_MULTICODEC_PREFIX = "Invalid multicodec prefix.";
|
|
@@ -4845,7 +4798,6 @@ function addMulticodecPrefix(code, payload) {
|
|
|
4845
4798
|
prefixed.set(payload, prefix.length);
|
|
4846
4799
|
return prefixed;
|
|
4847
4800
|
}
|
|
4848
|
-
|
|
4849
4801
|
//#endregion
|
|
4850
4802
|
//#region src/jwk.ts
|
|
4851
4803
|
function validateCryptoKey(key, type) {
|
|
@@ -4853,11 +4805,9 @@ function validateCryptoKey(key, type) {
|
|
|
4853
4805
|
if (!key.extractable) throw new TypeError("The key is not extractable.");
|
|
4854
4806
|
if (key.algorithm.name !== "RSASSA-PKCS1-v1_5" && key.algorithm.name !== "Ed25519") throw new TypeError("Currently only RSASSA-PKCS1-v1_5 and Ed25519 keys are supported. More algorithms will be added in the future!");
|
|
4855
4807
|
if (key.algorithm.name === "RSASSA-PKCS1-v1_5") {
|
|
4856
|
-
|
|
4857
|
-
if (algorithm.hash.name !== "SHA-256") throw new TypeError("For compatibility with the existing Fediverse software (e.g., Mastodon), hash algorithm for RSASSA-PKCS1-v1_5 keys must be SHA-256.");
|
|
4808
|
+
if (key.algorithm.hash.name !== "SHA-256") throw new TypeError("For compatibility with the existing Fediverse software (e.g., Mastodon), hash algorithm for RSASSA-PKCS1-v1_5 keys must be SHA-256.");
|
|
4858
4809
|
}
|
|
4859
4810
|
}
|
|
4860
|
-
|
|
4861
4811
|
//#endregion
|
|
4862
4812
|
//#region src/multibase/util.ts
|
|
4863
4813
|
const textDecoder = new TextDecoder();
|
|
@@ -4873,7 +4823,6 @@ function concat(arrs, length) {
|
|
|
4873
4823
|
}
|
|
4874
4824
|
return output;
|
|
4875
4825
|
}
|
|
4876
|
-
|
|
4877
4826
|
//#endregion
|
|
4878
4827
|
//#region src/multibase/base.ts
|
|
4879
4828
|
/**
|
|
@@ -4882,8 +4831,8 @@ function concat(arrs, length) {
|
|
|
4882
4831
|
var Base = class {
|
|
4883
4832
|
codeBuf;
|
|
4884
4833
|
codec;
|
|
4885
|
-
constructor(name
|
|
4886
|
-
this.name = name
|
|
4834
|
+
constructor(name, code, factory, alphabet) {
|
|
4835
|
+
this.name = name;
|
|
4887
4836
|
this.code = code;
|
|
4888
4837
|
this.alphabet = alphabet;
|
|
4889
4838
|
this.codeBuf = encodeText(this.code);
|
|
@@ -4898,12 +4847,11 @@ var Base = class {
|
|
|
4898
4847
|
return this.codec.decode(string);
|
|
4899
4848
|
}
|
|
4900
4849
|
};
|
|
4901
|
-
|
|
4902
4850
|
//#endregion
|
|
4903
4851
|
//#region src/multibase/rfc4648.ts
|
|
4904
4852
|
const decode = (string, alphabet, bitsPerChar) => {
|
|
4905
|
-
const codes
|
|
4906
|
-
for (let i = 0; i < alphabet.length; ++i) codes
|
|
4853
|
+
const codes = {};
|
|
4854
|
+
for (let i = 0; i < alphabet.length; ++i) codes[alphabet[i]] = i;
|
|
4907
4855
|
let end = string.length;
|
|
4908
4856
|
while (string[end - 1] === "=") --end;
|
|
4909
4857
|
const out = new Uint8Array(end * bitsPerChar / 8 | 0);
|
|
@@ -4911,7 +4859,7 @@ const decode = (string, alphabet, bitsPerChar) => {
|
|
|
4911
4859
|
let buffer = 0;
|
|
4912
4860
|
let written = 0;
|
|
4913
4861
|
for (let i = 0; i < end; ++i) {
|
|
4914
|
-
const value = codes
|
|
4862
|
+
const value = codes[string[i]];
|
|
4915
4863
|
if (value === void 0) throw new SyntaxError("Invalid character " + string[i]);
|
|
4916
4864
|
buffer = buffer << bitsPerChar | value;
|
|
4917
4865
|
bits += bitsPerChar;
|
|
@@ -4954,7 +4902,6 @@ const rfc4648 = (bitsPerChar) => (alphabet) => {
|
|
|
4954
4902
|
}
|
|
4955
4903
|
};
|
|
4956
4904
|
};
|
|
4957
|
-
|
|
4958
4905
|
//#endregion
|
|
4959
4906
|
//#region src/multibase/constants.ts
|
|
4960
4907
|
const identity = () => {
|
|
@@ -4990,7 +4937,7 @@ const constants = [
|
|
|
4990
4937
|
[
|
|
4991
4938
|
"base10",
|
|
4992
4939
|
"9",
|
|
4993
|
-
|
|
4940
|
+
_multiformats_base_x.default,
|
|
4994
4941
|
"0123456789"
|
|
4995
4942
|
],
|
|
4996
4943
|
[
|
|
@@ -5062,25 +5009,25 @@ const constants = [
|
|
|
5062
5009
|
[
|
|
5063
5010
|
"base36",
|
|
5064
5011
|
"k",
|
|
5065
|
-
|
|
5012
|
+
_multiformats_base_x.default,
|
|
5066
5013
|
"0123456789abcdefghijklmnopqrstuvwxyz"
|
|
5067
5014
|
],
|
|
5068
5015
|
[
|
|
5069
5016
|
"base36upper",
|
|
5070
5017
|
"K",
|
|
5071
|
-
|
|
5018
|
+
_multiformats_base_x.default,
|
|
5072
5019
|
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
5073
5020
|
],
|
|
5074
5021
|
[
|
|
5075
5022
|
"base58btc",
|
|
5076
5023
|
"z",
|
|
5077
|
-
|
|
5024
|
+
_multiformats_base_x.default,
|
|
5078
5025
|
"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
|
|
5079
5026
|
],
|
|
5080
5027
|
[
|
|
5081
5028
|
"base58flickr",
|
|
5082
5029
|
"Z",
|
|
5083
|
-
|
|
5030
|
+
_multiformats_base_x.default,
|
|
5084
5031
|
"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"
|
|
5085
5032
|
],
|
|
5086
5033
|
[
|
|
@@ -5116,7 +5063,6 @@ const codes = constants.reduce((prev, tupple) => {
|
|
|
5116
5063
|
prev[tupple[1]] = names[tupple[0]];
|
|
5117
5064
|
return prev;
|
|
5118
5065
|
}, {});
|
|
5119
|
-
|
|
5120
5066
|
//#endregion
|
|
5121
5067
|
//#region src/multibase/mod.ts
|
|
5122
5068
|
/**
|
|
@@ -5153,8 +5099,7 @@ function decodeMultibase(data) {
|
|
|
5153
5099
|
"k",
|
|
5154
5100
|
"K"
|
|
5155
5101
|
].includes(prefix)) data = data.toLowerCase();
|
|
5156
|
-
|
|
5157
|
-
return enc.decode(data.substring(1));
|
|
5102
|
+
return encoding(data[0]).decode(data.substring(1));
|
|
5158
5103
|
}
|
|
5159
5104
|
/**
|
|
5160
5105
|
* Get the encoding by name or code
|
|
@@ -5176,7 +5121,6 @@ function encodingFromBaseData(data) {
|
|
|
5176
5121
|
if (data instanceof Uint8Array) data = decodeText(data);
|
|
5177
5122
|
return encoding(data[0]);
|
|
5178
5123
|
}
|
|
5179
|
-
|
|
5180
5124
|
//#endregion
|
|
5181
5125
|
//#region src/key.ts
|
|
5182
5126
|
const algorithms = {
|
|
@@ -5201,8 +5145,7 @@ async function importSpki(pem) {
|
|
|
5201
5145
|
} catch (_) {
|
|
5202
5146
|
throw new TypeError("Invalid PEM-SPKI format.");
|
|
5203
5147
|
}
|
|
5204
|
-
const
|
|
5205
|
-
const oid = pki.algorithm.algorithmId;
|
|
5148
|
+
const oid = pkijs.PublicKeyInfo.fromBER(spki).algorithm.algorithmId;
|
|
5206
5149
|
const algorithm = algorithms[oid];
|
|
5207
5150
|
if (algorithm == null) throw new TypeError("Unsupported algorithm: " + oid);
|
|
5208
5151
|
return await crypto.subtle.importKey("spki", spki, algorithm, true, ["verify"]);
|
|
@@ -5216,8 +5159,7 @@ async function importSpki(pem) {
|
|
|
5216
5159
|
*/
|
|
5217
5160
|
async function exportSpki(key) {
|
|
5218
5161
|
validateCryptoKey(key);
|
|
5219
|
-
|
|
5220
|
-
let pem = (0, byte_encodings_base64.encodeBase64)(spki);
|
|
5162
|
+
let pem = (0, byte_encodings_base64.encodeBase64)(await crypto.subtle.exportKey("spki", key));
|
|
5221
5163
|
pem = (pem.match(/.{1,64}/g) || []).join("\n");
|
|
5222
5164
|
return `-----BEGIN PUBLIC KEY-----\n${pem}\n-----END PUBLIC KEY-----\n`;
|
|
5223
5165
|
}
|
|
@@ -5229,16 +5171,14 @@ async function exportSpki(key) {
|
|
|
5229
5171
|
* @since 1.5.0
|
|
5230
5172
|
*/
|
|
5231
5173
|
function importPkcs1(pem) {
|
|
5232
|
-
|
|
5174
|
+
return importSpki((0, node_crypto.createPublicKey)({
|
|
5233
5175
|
key: pem,
|
|
5234
5176
|
format: "pem",
|
|
5235
5177
|
type: "pkcs1"
|
|
5236
|
-
})
|
|
5237
|
-
const spki = key.export({
|
|
5178
|
+
}).export({
|
|
5238
5179
|
type: "spki",
|
|
5239
5180
|
format: "pem"
|
|
5240
|
-
});
|
|
5241
|
-
return importSpki(spki);
|
|
5181
|
+
}));
|
|
5242
5182
|
}
|
|
5243
5183
|
const PKCS1_HEADER = /^\s*-----BEGIN\s+RSA\s+PUBLIC\s+KEY-----\s*\n/;
|
|
5244
5184
|
/**
|
|
@@ -5265,12 +5205,11 @@ async function importMultibaseKey(key) {
|
|
|
5265
5205
|
const { code } = getMulticodecPrefix(decoded);
|
|
5266
5206
|
const content = removeMulticodecPrefix(decoded);
|
|
5267
5207
|
if (code === 4613) {
|
|
5268
|
-
const
|
|
5208
|
+
const exported = (0, node_crypto.createPublicKey)({
|
|
5269
5209
|
key: content,
|
|
5270
5210
|
format: "der",
|
|
5271
5211
|
type: "pkcs1"
|
|
5272
|
-
})
|
|
5273
|
-
const exported = keyObject.export({
|
|
5212
|
+
}).export({
|
|
5274
5213
|
type: "spki",
|
|
5275
5214
|
format: "der"
|
|
5276
5215
|
});
|
|
@@ -5302,21 +5241,18 @@ async function exportMultibaseKey(key) {
|
|
|
5302
5241
|
const decodedN = (0, byte_encodings_base64url.decodeBase64Url)(jwk.n);
|
|
5303
5242
|
const n = new Uint8Array(decodedN.length + 1);
|
|
5304
5243
|
n.set(decodedN, 1);
|
|
5305
|
-
|
|
5244
|
+
content = new asn1js.Sequence({ value: [new asn1js.Integer({
|
|
5306
5245
|
isHexOnly: true,
|
|
5307
5246
|
valueHex: n
|
|
5308
5247
|
}), new asn1js.Integer({
|
|
5309
5248
|
isHexOnly: true,
|
|
5310
5249
|
valueHex: (0, byte_encodings_base64url.decodeBase64Url)(jwk.e)
|
|
5311
|
-
})] });
|
|
5312
|
-
content = sequence.toBER(false);
|
|
5250
|
+
})] }).toBER(false);
|
|
5313
5251
|
code = 4613;
|
|
5314
5252
|
} else throw new TypeError("Unsupported key type: " + JSON.stringify(key.algorithm));
|
|
5315
|
-
const
|
|
5316
|
-
const encoded = encodeMultibase("base58btc", prefixed);
|
|
5253
|
+
const encoded = encodeMultibase("base58btc", addMulticodecPrefix(code, new Uint8Array(content)));
|
|
5317
5254
|
return new TextDecoder().decode(encoded);
|
|
5318
5255
|
}
|
|
5319
|
-
|
|
5320
5256
|
//#endregion
|
|
5321
5257
|
//#region src/langstr.ts
|
|
5322
5258
|
/**
|
|
@@ -5345,7 +5281,6 @@ LanguageString.prototype[Symbol.for("Deno.customInspect")] = function(inspect, o
|
|
|
5345
5281
|
LanguageString.prototype[Symbol.for("nodejs.util.inspect.custom")] = function(_depth, options, inspect) {
|
|
5346
5282
|
return `<${this.locale.baseName}> ${inspect(this.toString(), options)}`;
|
|
5347
5283
|
};
|
|
5348
|
-
|
|
5349
5284
|
//#endregion
|
|
5350
5285
|
exports.FetchError = FetchError;
|
|
5351
5286
|
exports.LanguageString = LanguageString;
|
|
@@ -5367,5 +5302,5 @@ exports.importSpki = importSpki;
|
|
|
5367
5302
|
exports.isValidPublicIPv4Address = isValidPublicIPv4Address;
|
|
5368
5303
|
exports.isValidPublicIPv6Address = isValidPublicIPv6Address;
|
|
5369
5304
|
exports.logRequest = logRequest;
|
|
5370
|
-
exports.preloadedContexts =
|
|
5371
|
-
exports.validatePublicUrl = validatePublicUrl;
|
|
5305
|
+
exports.preloadedContexts = preloadedContexts;
|
|
5306
|
+
exports.validatePublicUrl = validatePublicUrl;
|
package/dist/mod.d.cts
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { Logger } from "@logtape/logtape";
|
|
2
2
|
|
|
3
3
|
//#region src/contexts.d.ts
|
|
4
|
-
// Preloaded context documents
|
|
5
|
-
// https://github.com/fedify-dev/fedify/issues/74
|
|
6
|
-
// cSpell: disable
|
|
7
4
|
declare const preloadedContexts: Record<string, unknown>;
|
|
8
5
|
//#endregion
|
|
9
6
|
//#region src/request.d.ts
|
|
@@ -267,7 +264,6 @@ declare class LanguageString extends String {
|
|
|
267
264
|
//#endregion
|
|
268
265
|
//#region src/multibase/types.d.ts
|
|
269
266
|
type BaseCode = "\x00" | "0" | "7" | "9" | "f" | "F" | "v" | "V" | "t" | "T" | "b" | "B" | "c" | "C" | "h" | "k" | "K" | "z" | "Z" | "m" | "M" | "u" | "U";
|
|
270
|
-
|
|
271
267
|
/**
|
|
272
268
|
* - Names of the supported encodings
|
|
273
269
|
*/
|
|
@@ -331,4 +327,4 @@ declare function isValidPublicIPv4Address(address: string): boolean;
|
|
|
331
327
|
declare function isValidPublicIPv6Address(address: string): boolean;
|
|
332
328
|
declare function expandIPv6Address(address: string): string;
|
|
333
329
|
//#endregion
|
|
334
|
-
export { AuthenticatedDocumentLoaderFactory, CreateRequestOptions, DocumentLoader, DocumentLoaderFactory, DocumentLoaderFactoryOptions, DocumentLoaderOptions, FetchError, GetDocumentLoaderOptions, GetUserAgentOptions, LanguageString, RemoteDocument, UrlError, createActivityPubRequest, decodeMultibase, encodeMultibase, encodingFromBaseData, expandIPv6Address, exportMultibaseKey, exportSpki, getDocumentLoader, getRemoteDocument, getUserAgent, importMultibaseKey, importPem, importPkcs1, importSpki, isValidPublicIPv4Address, isValidPublicIPv6Address, logRequest, preloadedContexts, validatePublicUrl };
|
|
330
|
+
export { type AuthenticatedDocumentLoaderFactory, type CreateRequestOptions, type DocumentLoader, type DocumentLoaderFactory, type DocumentLoaderFactoryOptions, type DocumentLoaderOptions, FetchError, type GetDocumentLoaderOptions, type GetUserAgentOptions, LanguageString, type RemoteDocument, UrlError, createActivityPubRequest, decodeMultibase, encodeMultibase, encodingFromBaseData, expandIPv6Address, exportMultibaseKey, exportSpki, getDocumentLoader, getRemoteDocument, getUserAgent, importMultibaseKey, importPem, importPkcs1, importSpki, isValidPublicIPv4Address, isValidPublicIPv6Address, logRequest, preloadedContexts, validatePublicUrl };
|
package/dist/mod.d.ts
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { Logger } from "@logtape/logtape";
|
|
2
2
|
|
|
3
3
|
//#region src/contexts.d.ts
|
|
4
|
-
// Preloaded context documents
|
|
5
|
-
// https://github.com/fedify-dev/fedify/issues/74
|
|
6
|
-
// cSpell: disable
|
|
7
4
|
declare const preloadedContexts: Record<string, unknown>;
|
|
8
5
|
//#endregion
|
|
9
6
|
//#region src/request.d.ts
|
|
@@ -267,7 +264,6 @@ declare class LanguageString extends String {
|
|
|
267
264
|
//#endregion
|
|
268
265
|
//#region src/multibase/types.d.ts
|
|
269
266
|
type BaseCode = "\x00" | "0" | "7" | "9" | "f" | "F" | "v" | "V" | "t" | "T" | "b" | "B" | "c" | "C" | "h" | "k" | "K" | "z" | "Z" | "m" | "M" | "u" | "U";
|
|
270
|
-
|
|
271
267
|
/**
|
|
272
268
|
* - Names of the supported encodings
|
|
273
269
|
*/
|
|
@@ -331,4 +327,4 @@ declare function isValidPublicIPv4Address(address: string): boolean;
|
|
|
331
327
|
declare function isValidPublicIPv6Address(address: string): boolean;
|
|
332
328
|
declare function expandIPv6Address(address: string): string;
|
|
333
329
|
//#endregion
|
|
334
|
-
export { AuthenticatedDocumentLoaderFactory, CreateRequestOptions, DocumentLoader, DocumentLoaderFactory, DocumentLoaderFactoryOptions, DocumentLoaderOptions, FetchError, GetDocumentLoaderOptions, GetUserAgentOptions, LanguageString, RemoteDocument, UrlError, createActivityPubRequest, decodeMultibase, encodeMultibase, encodingFromBaseData, expandIPv6Address, exportMultibaseKey, exportSpki, getDocumentLoader, getRemoteDocument, getUserAgent, importMultibaseKey, importPem, importPkcs1, importSpki, isValidPublicIPv4Address, isValidPublicIPv6Address, logRequest, preloadedContexts, validatePublicUrl };
|
|
330
|
+
export { type AuthenticatedDocumentLoaderFactory, type CreateRequestOptions, type DocumentLoader, type DocumentLoaderFactory, type DocumentLoaderFactoryOptions, type DocumentLoaderOptions, FetchError, type GetDocumentLoaderOptions, type GetUserAgentOptions, LanguageString, type RemoteDocument, UrlError, createActivityPubRequest, decodeMultibase, encodeMultibase, encodingFromBaseData, expandIPv6Address, exportMultibaseKey, exportSpki, getDocumentLoader, getRemoteDocument, getUserAgent, importMultibaseKey, importPem, importPkcs1, importSpki, isValidPublicIPv4Address, isValidPublicIPv6Address, logRequest, preloadedContexts, validatePublicUrl };
|