@fedify/vocab-runtime 2.1.1 → 2.2.0-dev.610
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/mod.cjs +4 -3
- package/dist/mod.d.cts +7 -0
- package/dist/mod.d.ts +7 -0
- package/dist/mod.js +4 -3
- package/dist/tests/decimal.test.cjs +2 -2
- package/dist/tests/decimal.test.js +2 -2
- package/dist/tests/{docloader-RQoMNF99.cjs → docloader-CURjCgWO.cjs} +4 -3
- package/dist/tests/{docloader-DIUeF-5W.js → docloader-aqHcQvoo.js} +4 -3
- package/dist/tests/docloader.test.cjs +8 -2
- package/dist/tests/docloader.test.js +8 -2
- package/dist/tests/{request-D6fgLaP4.js → request-BXW3NJ6a.js} +1 -1
- package/dist/tests/{request-kJU0S4zp.cjs → request-CiyP8tfi.cjs} +1 -1
- package/dist/tests/request.test.cjs +1 -1
- package/dist/tests/request.test.js +1 -1
- package/package.json +1 -1
- package/src/docloader.test.ts +11 -0
- package/src/docloader.ts +10 -2
package/deno.json
CHANGED
package/dist/mod.cjs
CHANGED
|
@@ -4376,7 +4376,7 @@ var contexts_default = preloadedContexts;
|
|
|
4376
4376
|
//#endregion
|
|
4377
4377
|
//#region deno.json
|
|
4378
4378
|
var name = "@fedify/vocab-runtime";
|
|
4379
|
-
var version = "2.
|
|
4379
|
+
var version = "2.2.0-dev.610+2d418352";
|
|
4380
4380
|
var license = "MIT";
|
|
4381
4381
|
var exports$1 = {
|
|
4382
4382
|
".": "./src/mod.ts",
|
|
@@ -4851,9 +4851,10 @@ async function getRemoteDocument(url, response, fetch$1) {
|
|
|
4851
4851
|
* @returns The document loader.
|
|
4852
4852
|
* @since 1.3.0
|
|
4853
4853
|
*/
|
|
4854
|
-
function getDocumentLoader({ allowPrivateAddress, skipPreloadedContexts, userAgent } = {}) {
|
|
4854
|
+
function getDocumentLoader({ allowPrivateAddress, maxRedirection, skipPreloadedContexts, userAgent } = {}) {
|
|
4855
4855
|
const tracerProvider = __opentelemetry_api.trace.getTracerProvider();
|
|
4856
4856
|
const tracer = tracerProvider.getTracer(deno_default.name, deno_default.version);
|
|
4857
|
+
const maximumRedirection = maxRedirection ?? DEFAULT_MAX_REDIRECTION;
|
|
4857
4858
|
async function load(url, options, redirected = 0, visited = /* @__PURE__ */ new Set()) {
|
|
4858
4859
|
options?.signal?.throwIfAborted();
|
|
4859
4860
|
const currentUrl = new URL(url).href;
|
|
@@ -4888,7 +4889,7 @@ function getDocumentLoader({ allowPrivateAddress, skipPreloadedContexts, userAge
|
|
|
4888
4889
|
});
|
|
4889
4890
|
span.setAttribute("http.response.status_code", response.status);
|
|
4890
4891
|
if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) {
|
|
4891
|
-
if (redirected >=
|
|
4892
|
+
if (redirected >= maximumRedirection) {
|
|
4892
4893
|
logger.error("Too many redirections ({redirections}) while fetching document.", {
|
|
4893
4894
|
redirections: redirected + 1,
|
|
4894
4895
|
url: currentUrl
|
package/dist/mod.d.cts
CHANGED
|
@@ -136,6 +136,12 @@ interface DocumentLoaderFactoryOptions {
|
|
|
136
136
|
* If an object is given, it is passed to {@link getUserAgent} function.
|
|
137
137
|
*/
|
|
138
138
|
userAgent?: GetUserAgentOptions | string;
|
|
139
|
+
/**
|
|
140
|
+
* The maximum number of redirections to follow.
|
|
141
|
+
* @default `20`
|
|
142
|
+
* @since 2.2.0
|
|
143
|
+
*/
|
|
144
|
+
maxRedirection?: number;
|
|
139
145
|
}
|
|
140
146
|
/**
|
|
141
147
|
* A factory function that creates an authenticated {@link DocumentLoader} for
|
|
@@ -190,6 +196,7 @@ interface GetDocumentLoaderOptions extends DocumentLoaderFactoryOptions {
|
|
|
190
196
|
*/
|
|
191
197
|
declare function getDocumentLoader({
|
|
192
198
|
allowPrivateAddress,
|
|
199
|
+
maxRedirection,
|
|
193
200
|
skipPreloadedContexts,
|
|
194
201
|
userAgent
|
|
195
202
|
}?: GetDocumentLoaderOptions): DocumentLoader;
|
package/dist/mod.d.ts
CHANGED
|
@@ -136,6 +136,12 @@ interface DocumentLoaderFactoryOptions {
|
|
|
136
136
|
* If an object is given, it is passed to {@link getUserAgent} function.
|
|
137
137
|
*/
|
|
138
138
|
userAgent?: GetUserAgentOptions | string;
|
|
139
|
+
/**
|
|
140
|
+
* The maximum number of redirections to follow.
|
|
141
|
+
* @default `20`
|
|
142
|
+
* @since 2.2.0
|
|
143
|
+
*/
|
|
144
|
+
maxRedirection?: number;
|
|
139
145
|
}
|
|
140
146
|
/**
|
|
141
147
|
* A factory function that creates an authenticated {@link DocumentLoader} for
|
|
@@ -190,6 +196,7 @@ interface GetDocumentLoaderOptions extends DocumentLoaderFactoryOptions {
|
|
|
190
196
|
*/
|
|
191
197
|
declare function getDocumentLoader({
|
|
192
198
|
allowPrivateAddress,
|
|
199
|
+
maxRedirection,
|
|
193
200
|
skipPreloadedContexts,
|
|
194
201
|
userAgent
|
|
195
202
|
}?: GetDocumentLoaderOptions): DocumentLoader;
|
package/dist/mod.js
CHANGED
|
@@ -4375,7 +4375,7 @@ var contexts_default = preloadedContexts;
|
|
|
4375
4375
|
//#endregion
|
|
4376
4376
|
//#region deno.json
|
|
4377
4377
|
var name = "@fedify/vocab-runtime";
|
|
4378
|
-
var version = "2.
|
|
4378
|
+
var version = "2.2.0-dev.610+2d418352";
|
|
4379
4379
|
var license = "MIT";
|
|
4380
4380
|
var exports = {
|
|
4381
4381
|
".": "./src/mod.ts",
|
|
@@ -4850,9 +4850,10 @@ async function getRemoteDocument(url, response, fetch$1) {
|
|
|
4850
4850
|
* @returns The document loader.
|
|
4851
4851
|
* @since 1.3.0
|
|
4852
4852
|
*/
|
|
4853
|
-
function getDocumentLoader({ allowPrivateAddress, skipPreloadedContexts, userAgent } = {}) {
|
|
4853
|
+
function getDocumentLoader({ allowPrivateAddress, maxRedirection, skipPreloadedContexts, userAgent } = {}) {
|
|
4854
4854
|
const tracerProvider = trace.getTracerProvider();
|
|
4855
4855
|
const tracer = tracerProvider.getTracer(deno_default.name, deno_default.version);
|
|
4856
|
+
const maximumRedirection = maxRedirection ?? DEFAULT_MAX_REDIRECTION;
|
|
4856
4857
|
async function load(url, options, redirected = 0, visited = /* @__PURE__ */ new Set()) {
|
|
4857
4858
|
options?.signal?.throwIfAborted();
|
|
4858
4859
|
const currentUrl = new URL(url).href;
|
|
@@ -4887,7 +4888,7 @@ function getDocumentLoader({ allowPrivateAddress, skipPreloadedContexts, userAge
|
|
|
4887
4888
|
});
|
|
4888
4889
|
span.setAttribute("http.response.status_code", response.status);
|
|
4889
4890
|
if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) {
|
|
4890
|
-
if (redirected >=
|
|
4891
|
+
if (redirected >= maximumRedirection) {
|
|
4891
4892
|
logger.error("Too many redirections ({redirections}) while fetching document.", {
|
|
4892
4893
|
redirections: redirected + 1,
|
|
4893
4894
|
url: currentUrl
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const require_chunk = require('./chunk-DWy1uDak.cjs');
|
|
2
|
-
require('./docloader-
|
|
3
|
-
require('./request-
|
|
2
|
+
require('./docloader-CURjCgWO.cjs');
|
|
3
|
+
require('./request-CiyP8tfi.cjs');
|
|
4
4
|
require('./link-DYNFAdNu.cjs');
|
|
5
5
|
require('./url-DIjOdK8Q.cjs');
|
|
6
6
|
require('./multicodec--6hQ74zI.cjs');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require('./chunk-DWy1uDak.cjs');
|
|
2
|
-
const require_request = require('./request-
|
|
2
|
+
const require_request = require('./request-CiyP8tfi.cjs');
|
|
3
3
|
const require_link = require('./link-DYNFAdNu.cjs');
|
|
4
4
|
const require_url = require('./url-DIjOdK8Q.cjs');
|
|
5
5
|
const __logtape_logtape = require_chunk.__toESM(require("@logtape/logtape"));
|
|
@@ -4490,9 +4490,10 @@ async function getRemoteDocument(url, response, fetch$1) {
|
|
|
4490
4490
|
* @returns The document loader.
|
|
4491
4491
|
* @since 1.3.0
|
|
4492
4492
|
*/
|
|
4493
|
-
function getDocumentLoader({ allowPrivateAddress, skipPreloadedContexts, userAgent } = {}) {
|
|
4493
|
+
function getDocumentLoader({ allowPrivateAddress, maxRedirection, skipPreloadedContexts, userAgent } = {}) {
|
|
4494
4494
|
const tracerProvider = __opentelemetry_api.trace.getTracerProvider();
|
|
4495
4495
|
const tracer = tracerProvider.getTracer(require_request.deno_default.name, require_request.deno_default.version);
|
|
4496
|
+
const maximumRedirection = maxRedirection ?? DEFAULT_MAX_REDIRECTION;
|
|
4496
4497
|
async function load(url, options, redirected = 0, visited = /* @__PURE__ */ new Set()) {
|
|
4497
4498
|
options?.signal?.throwIfAborted();
|
|
4498
4499
|
const currentUrl = new URL(url).href;
|
|
@@ -4527,7 +4528,7 @@ function getDocumentLoader({ allowPrivateAddress, skipPreloadedContexts, userAge
|
|
|
4527
4528
|
});
|
|
4528
4529
|
span.setAttribute("http.response.status_code", response.status);
|
|
4529
4530
|
if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) {
|
|
4530
|
-
if (redirected >=
|
|
4531
|
+
if (redirected >= maximumRedirection) {
|
|
4531
4532
|
logger.error("Too many redirections ({redirections}) while fetching document.", {
|
|
4532
4533
|
redirections: redirected + 1,
|
|
4533
4534
|
url: currentUrl
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FetchError, createActivityPubRequest, deno_default, logRequest } from "./request-
|
|
1
|
+
import { FetchError, createActivityPubRequest, deno_default, logRequest } from "./request-BXW3NJ6a.js";
|
|
2
2
|
import { HttpHeaderLink } from "./link-C3q2TC2G.js";
|
|
3
3
|
import { UrlError, validatePublicUrl } from "./url-CWEP9Zs9.js";
|
|
4
4
|
import { getLogger } from "@logtape/logtape";
|
|
@@ -4489,9 +4489,10 @@ async function getRemoteDocument(url, response, fetch$1) {
|
|
|
4489
4489
|
* @returns The document loader.
|
|
4490
4490
|
* @since 1.3.0
|
|
4491
4491
|
*/
|
|
4492
|
-
function getDocumentLoader({ allowPrivateAddress, skipPreloadedContexts, userAgent } = {}) {
|
|
4492
|
+
function getDocumentLoader({ allowPrivateAddress, maxRedirection, skipPreloadedContexts, userAgent } = {}) {
|
|
4493
4493
|
const tracerProvider = trace.getTracerProvider();
|
|
4494
4494
|
const tracer = tracerProvider.getTracer(deno_default.name, deno_default.version);
|
|
4495
|
+
const maximumRedirection = maxRedirection ?? DEFAULT_MAX_REDIRECTION;
|
|
4495
4496
|
async function load(url, options, redirected = 0, visited = /* @__PURE__ */ new Set()) {
|
|
4496
4497
|
options?.signal?.throwIfAborted();
|
|
4497
4498
|
const currentUrl = new URL(url).href;
|
|
@@ -4526,7 +4527,7 @@ function getDocumentLoader({ allowPrivateAddress, skipPreloadedContexts, userAge
|
|
|
4526
4527
|
});
|
|
4527
4528
|
span.setAttribute("http.response.status_code", response.status);
|
|
4528
4529
|
if (response.status >= 300 && response.status < 400 && response.headers.has("Location")) {
|
|
4529
|
-
if (redirected >=
|
|
4530
|
+
if (redirected >= maximumRedirection) {
|
|
4530
4531
|
logger.error("Too many redirections ({redirections}) while fetching document.", {
|
|
4531
4532
|
redirections: redirected + 1,
|
|
4532
4533
|
url: currentUrl
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const require_chunk = require('./chunk-DWy1uDak.cjs');
|
|
2
|
-
const require_docloader = require('./docloader-
|
|
3
|
-
const require_request = require('./request-
|
|
2
|
+
const require_docloader = require('./docloader-CURjCgWO.cjs');
|
|
3
|
+
const require_request = require('./request-CiyP8tfi.cjs');
|
|
4
4
|
require('./link-DYNFAdNu.cjs');
|
|
5
5
|
const require_url = require('./url-DIjOdK8Q.cjs');
|
|
6
6
|
const node_assert = require_chunk.__toESM(require("node:assert"));
|
|
@@ -1526,6 +1526,12 @@ var esm_default = FetchMock_default;
|
|
|
1526
1526
|
await (0, node_assert.rejects)(() => fetchDocumentLoader("https://example.com/too-many-redirects/0"), require_request.FetchError, "Too many redirections");
|
|
1527
1527
|
(0, node_assert.deepStrictEqual)(redirectAttempts, 21);
|
|
1528
1528
|
});
|
|
1529
|
+
await t.test("custom max redirection", async () => {
|
|
1530
|
+
redirectAttempts = 0;
|
|
1531
|
+
const loader = require_docloader.getDocumentLoader({ maxRedirection: 1 });
|
|
1532
|
+
await (0, node_assert.rejects)(() => loader("https://example.com/too-many-redirects/0"), require_request.FetchError, "Too many redirections");
|
|
1533
|
+
(0, node_assert.deepStrictEqual)(redirectAttempts, 2);
|
|
1534
|
+
});
|
|
1529
1535
|
let loopAttempts = 0;
|
|
1530
1536
|
esm_default.get("https://example.com/redirect-loop-a", () => {
|
|
1531
1537
|
loopAttempts++;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { contexts_default, getDocumentLoader } from "./docloader-
|
|
2
|
-
import { FetchError } from "./request-
|
|
1
|
+
import { contexts_default, getDocumentLoader } from "./docloader-aqHcQvoo.js";
|
|
2
|
+
import { FetchError } from "./request-BXW3NJ6a.js";
|
|
3
3
|
import "./link-C3q2TC2G.js";
|
|
4
4
|
import { UrlError } from "./url-CWEP9Zs9.js";
|
|
5
5
|
import "node:module";
|
|
@@ -1552,6 +1552,12 @@ test("getDocumentLoader()", async (t) => {
|
|
|
1552
1552
|
await rejects(() => fetchDocumentLoader("https://example.com/too-many-redirects/0"), FetchError, "Too many redirections");
|
|
1553
1553
|
deepStrictEqual(redirectAttempts, 21);
|
|
1554
1554
|
});
|
|
1555
|
+
await t.test("custom max redirection", async () => {
|
|
1556
|
+
redirectAttempts = 0;
|
|
1557
|
+
const loader = getDocumentLoader({ maxRedirection: 1 });
|
|
1558
|
+
await rejects(() => loader("https://example.com/too-many-redirects/0"), FetchError, "Too many redirections");
|
|
1559
|
+
deepStrictEqual(redirectAttempts, 2);
|
|
1560
|
+
});
|
|
1555
1561
|
let loopAttempts = 0;
|
|
1556
1562
|
esm_default.get("https://example.com/redirect-loop-a", () => {
|
|
1557
1563
|
loopAttempts++;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require('./chunk-DWy1uDak.cjs');
|
|
2
|
-
const require_request = require('./request-
|
|
2
|
+
const require_request = require('./request-CiyP8tfi.cjs');
|
|
3
3
|
const node_assert = require_chunk.__toESM(require("node:assert"));
|
|
4
4
|
const node_test = require_chunk.__toESM(require("node:test"));
|
|
5
5
|
const node_process = require_chunk.__toESM(require("node:process"));
|
package/package.json
CHANGED
package/src/docloader.test.ts
CHANGED
|
@@ -391,6 +391,17 @@ test("getDocumentLoader()", async (t) => {
|
|
|
391
391
|
deepStrictEqual(redirectAttempts, 21);
|
|
392
392
|
});
|
|
393
393
|
|
|
394
|
+
await t.test("custom max redirection", async () => {
|
|
395
|
+
redirectAttempts = 0;
|
|
396
|
+
const loader = getDocumentLoader({ maxRedirection: 1 });
|
|
397
|
+
await rejects(
|
|
398
|
+
() => loader("https://example.com/too-many-redirects/0"),
|
|
399
|
+
FetchError,
|
|
400
|
+
"Too many redirections",
|
|
401
|
+
);
|
|
402
|
+
deepStrictEqual(redirectAttempts, 2);
|
|
403
|
+
});
|
|
404
|
+
|
|
394
405
|
let loopAttempts = 0;
|
|
395
406
|
fetchMock.get("https://example.com/redirect-loop-a", () => {
|
|
396
407
|
loopAttempts++;
|
package/src/docloader.ts
CHANGED
|
@@ -88,6 +88,13 @@ export interface DocumentLoaderFactoryOptions {
|
|
|
88
88
|
* If an object is given, it is passed to {@link getUserAgent} function.
|
|
89
89
|
*/
|
|
90
90
|
userAgent?: GetUserAgentOptions | string;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* The maximum number of redirections to follow.
|
|
94
|
+
* @default `20`
|
|
95
|
+
* @since 2.2.0
|
|
96
|
+
*/
|
|
97
|
+
maxRedirection?: number;
|
|
91
98
|
}
|
|
92
99
|
|
|
93
100
|
/**
|
|
@@ -285,11 +292,12 @@ export interface GetDocumentLoaderOptions extends DocumentLoaderFactoryOptions {
|
|
|
285
292
|
* @since 1.3.0
|
|
286
293
|
*/
|
|
287
294
|
export function getDocumentLoader(
|
|
288
|
-
{ allowPrivateAddress, skipPreloadedContexts, userAgent }:
|
|
295
|
+
{ allowPrivateAddress, maxRedirection, skipPreloadedContexts, userAgent }:
|
|
289
296
|
GetDocumentLoaderOptions = {},
|
|
290
297
|
): DocumentLoader {
|
|
291
298
|
const tracerProvider = trace.getTracerProvider();
|
|
292
299
|
const tracer = tracerProvider.getTracer(metadata.name, metadata.version);
|
|
300
|
+
const maximumRedirection = maxRedirection ?? DEFAULT_MAX_REDIRECTION;
|
|
293
301
|
|
|
294
302
|
async function load(
|
|
295
303
|
url: string,
|
|
@@ -348,7 +356,7 @@ export function getDocumentLoader(
|
|
|
348
356
|
response.status >= 300 && response.status < 400 &&
|
|
349
357
|
response.headers.has("Location")
|
|
350
358
|
) {
|
|
351
|
-
if (redirected >=
|
|
359
|
+
if (redirected >= maximumRedirection) {
|
|
352
360
|
logger.error(
|
|
353
361
|
"Too many redirections ({redirections}) while fetching document.",
|
|
354
362
|
{ redirections: redirected + 1, url: currentUrl },
|