Fixing issue with status in auto generated request in Azure Fn (#1046)
This commit is contained in:
Родитель
9909cbd9c3
Коммит
a4b6f71dfc
|
@ -1,72 +1,104 @@
|
|||
import { Context, HttpRequest } from "../Library/Functions";
|
||||
import Logging = require("../Library/Logging");
|
||||
import TelemetryClient = require("../Library/TelemetryClient");
|
||||
import { CorrelationContextManager } from "./CorrelationContextManager";
|
||||
import { CorrelationContext, CorrelationContextManager } from "./CorrelationContextManager";
|
||||
|
||||
|
||||
/** Node.js Azure Functions handle incoming HTTP requests before Application Insights SDK is available,
|
||||
* this code generate incoming request telemetry and generate correlation context to be used
|
||||
* by outgoing requests and other telemetry, we rely on hooks provided by Azure Functions
|
||||
*/
|
||||
export class AutoCollectAzureFunctions {
|
||||
export class AzureFunctionsHook {
|
||||
private _client: TelemetryClient;
|
||||
private _functionsCoreModule: any;
|
||||
private _autoGenerateIncomingRequests: boolean;
|
||||
private _preInvocationHook: any;
|
||||
|
||||
constructor(client: TelemetryClient) {
|
||||
this._client = client;
|
||||
this._autoGenerateIncomingRequests = false;
|
||||
try {
|
||||
this._functionsCoreModule = require('@azure/functions-core');
|
||||
}
|
||||
catch (error) {
|
||||
Logging.info("AutoCollectAzureFunctions failed to load, not running in Azure Functions");
|
||||
Logging.info("AzureFunctionsHook failed to load, not running in Azure Functions");
|
||||
return;
|
||||
}
|
||||
this._addPreInvocationHook();
|
||||
}
|
||||
|
||||
public enable(isEnabled: boolean) {
|
||||
if (this._functionsCoreModule) {
|
||||
if (isEnabled) {
|
||||
this._addPreInvocationHook();
|
||||
} else {
|
||||
this._removePreInvocationHook();
|
||||
}
|
||||
}
|
||||
this._autoGenerateIncomingRequests = isEnabled;
|
||||
}
|
||||
|
||||
public dispose() {
|
||||
this.enable(false);
|
||||
this._removePreInvocationHook();
|
||||
this._functionsCoreModule = undefined;
|
||||
}
|
||||
|
||||
private _addPreInvocationHook() {
|
||||
// Only add hook once
|
||||
if (!this._preInvocationHook) {
|
||||
this._preInvocationHook = this._functionsCoreModule.registerHook('preInvocation', (context: any) => {
|
||||
const originalCallback = context.functionCallback;
|
||||
context.functionCallback = async (context: Context, req: HttpRequest) => {
|
||||
const startTime = Date.now(); // Start trackRequest timer
|
||||
// Start an AI Correlation Context using the provided Function context
|
||||
const correlationContext = CorrelationContextManager.startOperation(context, req);
|
||||
if (correlationContext) {
|
||||
CorrelationContextManager.wrapCallback(async () => {
|
||||
originalCallback(context, req);
|
||||
this._client.trackRequest({
|
||||
name: context?.req?.method + " " + context.req?.url,
|
||||
resultCode: context?.res?.status,
|
||||
success: true,
|
||||
url: (req as HttpRequest)?.url,
|
||||
time: new Date(startTime),
|
||||
duration: Date.now() - startTime,
|
||||
id: correlationContext.operation?.parentId,
|
||||
});
|
||||
this._client.flush();
|
||||
}, correlationContext)();
|
||||
}
|
||||
this._preInvocationHook = this._functionsCoreModule.registerHook('preInvocation', async (preInvocationContext: any) => {
|
||||
const originalCallback = preInvocationContext.functionCallback;
|
||||
preInvocationContext.functionCallback = async (ctx: Context, request: HttpRequest) => {
|
||||
this._propagateContext(ctx, request, originalCallback);
|
||||
};
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private async _propagateContext(ctx: Context, request: HttpRequest, originalCallback: any) {
|
||||
// Update context to use Azure Functions one
|
||||
let extractedContext: CorrelationContext = null;
|
||||
try {
|
||||
// Start an AI Correlation Context using the provided Function context
|
||||
extractedContext = CorrelationContextManager.startOperation(ctx, request);
|
||||
}
|
||||
catch (err) {
|
||||
Logging.warn("Failed to propagate context in Azure Functions", err);
|
||||
originalCallback(ctx, request);
|
||||
return;
|
||||
}
|
||||
if (!extractedContext) {
|
||||
// Correlation Context could be disabled causing this to be null
|
||||
Logging.warn("Failed to create context in Azure Functions");
|
||||
originalCallback(ctx, request);
|
||||
return;
|
||||
}
|
||||
|
||||
CorrelationContextManager.wrapCallback(async () => {
|
||||
const startTime = Date.now(); // Start trackRequest timer
|
||||
originalCallback(ctx, request);
|
||||
try {
|
||||
if (this._autoGenerateIncomingRequests) {
|
||||
let statusCode = 200; //Default
|
||||
if (ctx.res) {
|
||||
if (ctx.res.statusCode) {
|
||||
statusCode = ctx.res.statusCode;
|
||||
}
|
||||
else if (ctx.res.status) {
|
||||
statusCode = ctx.res.status;
|
||||
}
|
||||
}
|
||||
this._client.trackRequest({
|
||||
name: request.method + " " + request.url,
|
||||
resultCode: statusCode,
|
||||
success: statusCode == 200,
|
||||
url: request.url,
|
||||
time: new Date(startTime),
|
||||
duration: Date.now() - startTime,
|
||||
id: extractedContext.operation?.parentId,
|
||||
});
|
||||
this._client.flush();
|
||||
}
|
||||
}
|
||||
catch (err) {
|
||||
Logging.warn("Error creating automatic incoming request in Azure Functions", err);
|
||||
}
|
||||
}, extractedContext)();
|
||||
}
|
||||
|
||||
private _removePreInvocationHook() {
|
||||
if (this._preInvocationHook) {
|
||||
this._preInvocationHook.dispose();
|
||||
|
|
|
@ -150,8 +150,8 @@ export interface IBaseConfig {
|
|||
*/
|
||||
enableWebInstrumentation: boolean;
|
||||
/**
|
||||
* Enable automatic incoming request tracking and correct correlation when using Azure Functions
|
||||
*/
|
||||
* Enable automatic incoming request tracking when running in Azure Functions
|
||||
*/
|
||||
enableAutoCollectAzureFunctions: boolean;
|
||||
/**
|
||||
* Application Insights resource connection string for web instrumentation and automatic monitoring
|
||||
|
|
|
@ -1,51 +1,98 @@
|
|||
import assert = require("assert");
|
||||
import sinon = require("sinon");
|
||||
import { TelemetryClient } from "../../applicationinsights";
|
||||
import { AzureFunctionsHook } from "../../AutoCollection/AzureFunctionsHook";
|
||||
import { CorrelationContextManager } from "../../AutoCollection/CorrelationContextManager";
|
||||
import { HttpRequest } from "../../Library/Functions";
|
||||
import Logging = require("../../Library/Logging");
|
||||
|
||||
import { AutoCollectAzureFunctions } from "../../AutoCollection/AzureFunctionsHook";
|
||||
|
||||
const testModule = {
|
||||
registerHook(type: string, hook: any) {
|
||||
class TestFunctionCore {
|
||||
public registerCalled: boolean = false;
|
||||
public hookName: string;
|
||||
|
||||
registerHook(name: string, func: any) {
|
||||
this.registerCalled = true;
|
||||
this.hookName = name;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
describe("AutoCollection/AutoCollectAzureFunctions", () => {
|
||||
describe("AutoCollection/AzureFunctionsHook", () => {
|
||||
let sandbox: sinon.SinonSandbox;
|
||||
let client: TelemetryClient;
|
||||
|
||||
it("constructor", () => {
|
||||
let client = new TelemetryClient("1aa11111-bbbb-1ccc-8ddd-eeeeffff3333");
|
||||
let auto = new AutoCollectAzureFunctions(client);
|
||||
assert.equal(auto["_functionsCoreModule"], undefined, "Module is not available so it should be undefined unless running in AzFn env");
|
||||
before(() => {
|
||||
client = new TelemetryClient("1aa11111-bbbb-1ccc-8ddd-eeeeffff3333");
|
||||
sandbox = sinon.sandbox.create();
|
||||
});
|
||||
|
||||
it("enable", () => {
|
||||
let client = new TelemetryClient("1aa11111-bbbb-1ccc-8ddd-eeeeffff3333");
|
||||
let auto = new AutoCollectAzureFunctions(client);
|
||||
auto["_functionsCoreModule"] = testModule;
|
||||
const addStub = sinon.stub(auto, "_addPreInvocationHook");
|
||||
const removeStub = sinon.stub(auto, "_removePreInvocationHook");
|
||||
auto.enable(true);
|
||||
assert.ok(removeStub.notCalled);
|
||||
assert.ok(addStub.calledOnce);
|
||||
afterEach(() => {
|
||||
sandbox.restore();
|
||||
CorrelationContextManager.enable(false);
|
||||
});
|
||||
|
||||
it("disable", () => {
|
||||
let client = new TelemetryClient("1aa11111-bbbb-1ccc-8ddd-eeeeffff3333");
|
||||
let auto = new AutoCollectAzureFunctions(client);
|
||||
auto["_functionsCoreModule"] = testModule;
|
||||
const addStub = sinon.stub(auto, "_addPreInvocationHook");
|
||||
const removeStub = sinon.stub(auto, "_removePreInvocationHook");
|
||||
auto.enable(false);
|
||||
assert.ok(removeStub.calledOnce);
|
||||
assert.ok(addStub.notCalled);
|
||||
|
||||
it("Hook not added if not running in Azure Functions", () => {
|
||||
const spy = sandbox.spy(Logging, "info");
|
||||
let hook = new AzureFunctionsHook(client);
|
||||
assert.equal(hook["_functionsCoreModule"], undefined);
|
||||
assert.ok(spy.called);
|
||||
assert.equal(spy.args[0][0], "AzureFunctionsHook failed to load, not running in Azure Functions");
|
||||
});
|
||||
|
||||
it("_addPreInvocationHook", () => {
|
||||
let client = new TelemetryClient("1aa11111-bbbb-1ccc-8ddd-eeeeffff3333");
|
||||
let auto = new AutoCollectAzureFunctions(client);
|
||||
const registerHook = sinon.stub(testModule, "registerHook");
|
||||
auto["_functionsCoreModule"] = testModule;
|
||||
auto["_addPreInvocationHook"]();
|
||||
assert.ok(registerHook.calledOnce);
|
||||
it("Hook added if running in Azure Functions", () => {
|
||||
let hook = new AzureFunctionsHook(client);
|
||||
let testCore = new TestFunctionCore();
|
||||
hook["_functionsCoreModule"] = testCore;
|
||||
hook["_addPreInvocationHook"]();
|
||||
assert.ok(testCore.registerCalled);
|
||||
assert.equal(testCore.hookName, "preInvocation");
|
||||
});
|
||||
|
||||
it("enable/disable", () => {
|
||||
let hook = new AzureFunctionsHook(client);
|
||||
hook.enable(true);
|
||||
assert.equal(hook["_autoGenerateIncomingRequests"], true);
|
||||
hook.enable(false);
|
||||
assert.equal(hook["_autoGenerateIncomingRequests"], false);
|
||||
});
|
||||
|
||||
it("Context propagation", () => {
|
||||
CorrelationContextManager.enable(true);
|
||||
let hook = new AzureFunctionsHook(client);
|
||||
hook.enable(true);
|
||||
let flushStub = sandbox.stub(hook["_client"], "flush");
|
||||
let trackRequestSpy = sandbox.stub(hook["_client"], "trackRequest");
|
||||
let contextSpy = sandbox.spy(CorrelationContextManager, "wrapCallback");
|
||||
let ctx = {
|
||||
res: { "status": 400 },
|
||||
traceContext: {
|
||||
traceparent: "00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01",
|
||||
tracestate: "",
|
||||
attributes: {}
|
||||
}
|
||||
};
|
||||
let request: HttpRequest = {
|
||||
method: "HEAD",
|
||||
url: "test.com",
|
||||
headers: { "": "" }
|
||||
};
|
||||
let originalCallbackCalled = false;
|
||||
let originalCallback = () => { originalCallbackCalled = true };
|
||||
hook["_propagateContext"](ctx as any, request, originalCallback);
|
||||
assert.ok(contextSpy.called);
|
||||
assert.ok(originalCallbackCalled);
|
||||
assert.ok(flushStub.called);
|
||||
assert.ok(trackRequestSpy.called);
|
||||
let propagatedContext = contextSpy.args[0][1];
|
||||
assert.equal(propagatedContext.operation.id, "0af7651916cd43dd8448eb211c80319c");
|
||||
assert.equal(propagatedContext.operation.name, "HEAD /");
|
||||
assert.equal(propagatedContext.operation.parentId, "|0af7651916cd43dd8448eb211c80319c.b7ad6b7169203331.");
|
||||
let incomingRequest = trackRequestSpy.args[0][0];
|
||||
assert.equal(incomingRequest.id, "|0af7651916cd43dd8448eb211c80319c.b7ad6b7169203331.");
|
||||
assert.equal(incomingRequest.name, "HEAD test.com");
|
||||
assert.equal(incomingRequest.resultCode, 400);
|
||||
assert.equal(incomingRequest.success, false);
|
||||
assert.equal(incomingRequest.url, "test.com");
|
||||
});
|
||||
});
|
||||
|
|
|
@ -13,7 +13,7 @@ import QuickPulseClient = require("./Library/QuickPulseStateManager");
|
|||
import { IncomingMessage } from "http";
|
||||
import { SpanContext } from "@opentelemetry/api";
|
||||
import { AutoCollectNativePerformance, IDisabledExtendedMetrics } from "./AutoCollection/NativePerformance";
|
||||
import { AutoCollectAzureFunctions } from "./AutoCollection/AzureFunctionsHook";
|
||||
import { AzureFunctionsHook } from "./AutoCollection/AzureFunctionsHook";
|
||||
|
||||
// We export these imports so that SDK users may use these classes directly.
|
||||
// They're exposed using "export import" so that types are passed along as expected
|
||||
|
@ -85,7 +85,7 @@ let _webSnippet: WebSnippet;
|
|||
let _nativePerformance: AutoCollectNativePerformance;
|
||||
let _serverRequests: AutoCollectHttpRequests;
|
||||
let _clientRequests: AutoCollectHttpDependencies;
|
||||
let _azureFunctions: AutoCollectAzureFunctions;
|
||||
let _azureFunctions: AzureFunctionsHook;
|
||||
|
||||
let _isStarted = false;
|
||||
|
||||
|
@ -122,7 +122,7 @@ export function setup(setupString?: string) {
|
|||
if (!_nativePerformance) {
|
||||
_nativePerformance = new AutoCollectNativePerformance(defaultClient);
|
||||
}
|
||||
_azureFunctions = new AutoCollectAzureFunctions(defaultClient);
|
||||
_azureFunctions = new AzureFunctionsHook(defaultClient);
|
||||
} else {
|
||||
Logging.info("The default client is already setup");
|
||||
}
|
||||
|
@ -177,7 +177,7 @@ function _initializeConfig() {
|
|||
_forceClsHooked = defaultClient.config.enableUseAsyncHooks !== undefined ? defaultClient.config.enableUseAsyncHooks : _forceClsHooked;
|
||||
_isSnippetInjection = defaultClient.config.enableWebInstrumentation !== undefined ? defaultClient.config.enableWebInstrumentation : _isSnippetInjection;
|
||||
_isSnippetInjection = defaultClient.config.enableAutoWebSnippetInjection === true ? true : _isSnippetInjection;
|
||||
_isAzureFunctions = defaultClient.config.enableAutoCollectAzureFunctions !== undefined ? defaultClient.config.enableAutoCollectAzureFunctions : _isPerformance;
|
||||
_isAzureFunctions = defaultClient.config.enableAutoCollectAzureFunctions !== undefined ? defaultClient.config.enableAutoCollectAzureFunctions : _isAzureFunctions;
|
||||
const extendedMetricsConfig = AutoCollectNativePerformance.parseEnabled(defaultClient.config.enableAutoCollectExtendedMetrics, defaultClient.config);
|
||||
_isNativePerformance = extendedMetricsConfig.isEnabled;
|
||||
_disabledExtendedMetrics = extendedMetricsConfig.disabledMetrics;
|
||||
|
|
|
@ -457,14 +457,14 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||
"version": "5.45.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.45.0.tgz",
|
||||
"integrity": "sha512-CXXHNlf0oL+Yg021cxgOdMHNTXD17rHkq7iW6RFHoybdFgQBjU3yIXhhcPpGwr1CjZlo6ET8C6tzX5juQoXeGA==",
|
||||
"version": "5.46.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.46.1.tgz",
|
||||
"integrity": "sha512-YpzNv3aayRBwjs4J3oz65eVLXc9xx0PDbIRisHj+dYhvBn02MjYOD96P8YGiWEIFBrojaUjxvkaUpakD82phsA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/scope-manager": "5.45.0",
|
||||
"@typescript-eslint/type-utils": "5.45.0",
|
||||
"@typescript-eslint/utils": "5.45.0",
|
||||
"@typescript-eslint/scope-manager": "5.46.1",
|
||||
"@typescript-eslint/type-utils": "5.46.1",
|
||||
"@typescript-eslint/utils": "5.46.1",
|
||||
"debug": "^4.3.4",
|
||||
"ignore": "^5.2.0",
|
||||
"natural-compare-lite": "^1.4.0",
|
||||
|
@ -490,14 +490,14 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/parser": {
|
||||
"version": "5.45.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.45.0.tgz",
|
||||
"integrity": "sha512-brvs/WSM4fKUmF5Ot/gEve6qYiCMjm6w4HkHPfS6ZNmxTS0m0iNN4yOChImaCkqc1hRwFGqUyanMXuGal6oyyQ==",
|
||||
"version": "5.46.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.46.1.tgz",
|
||||
"integrity": "sha512-RelQ5cGypPh4ySAtfIMBzBGyrNerQcmfA1oJvPj5f+H4jI59rl9xxpn4bonC0tQvUKOEN7eGBFWxFLK3Xepneg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/scope-manager": "5.45.0",
|
||||
"@typescript-eslint/types": "5.45.0",
|
||||
"@typescript-eslint/typescript-estree": "5.45.0",
|
||||
"@typescript-eslint/scope-manager": "5.46.1",
|
||||
"@typescript-eslint/types": "5.46.1",
|
||||
"@typescript-eslint/typescript-estree": "5.46.1",
|
||||
"debug": "^4.3.4"
|
||||
},
|
||||
"engines": {
|
||||
|
@ -517,13 +517,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/scope-manager": {
|
||||
"version": "5.45.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.45.0.tgz",
|
||||
"integrity": "sha512-noDMjr87Arp/PuVrtvN3dXiJstQR1+XlQ4R1EvzG+NMgXi8CuMCXpb8JqNtFHKceVSQ985BZhfRdowJzbv4yKw==",
|
||||
"version": "5.46.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.46.1.tgz",
|
||||
"integrity": "sha512-iOChVivo4jpwUdrJZyXSMrEIM/PvsbbDOX1y3UCKjSgWn+W89skxWaYXACQfxmIGhPVpRWK/VWPYc+bad6smIA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "5.45.0",
|
||||
"@typescript-eslint/visitor-keys": "5.45.0"
|
||||
"@typescript-eslint/types": "5.46.1",
|
||||
"@typescript-eslint/visitor-keys": "5.46.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
|
@ -534,13 +534,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/type-utils": {
|
||||
"version": "5.45.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.45.0.tgz",
|
||||
"integrity": "sha512-DY7BXVFSIGRGFZ574hTEyLPRiQIvI/9oGcN8t1A7f6zIs6ftbrU0nhyV26ZW//6f85avkwrLag424n+fkuoJ1Q==",
|
||||
"version": "5.46.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.46.1.tgz",
|
||||
"integrity": "sha512-V/zMyfI+jDmL1ADxfDxjZ0EMbtiVqj8LUGPAGyBkXXStWmCUErMpW873zEHsyguWCuq2iN4BrlWUkmuVj84yng==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/typescript-estree": "5.45.0",
|
||||
"@typescript-eslint/utils": "5.45.0",
|
||||
"@typescript-eslint/typescript-estree": "5.46.1",
|
||||
"@typescript-eslint/utils": "5.46.1",
|
||||
"debug": "^4.3.4",
|
||||
"tsutils": "^3.21.0"
|
||||
},
|
||||
|
@ -561,9 +561,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/types": {
|
||||
"version": "5.45.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.45.0.tgz",
|
||||
"integrity": "sha512-QQij+u/vgskA66azc9dCmx+rev79PzX8uDHpsqSjEFtfF2gBUTRCpvYMh2gw2ghkJabNkPlSUCimsyBEQZd1DA==",
|
||||
"version": "5.46.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.46.1.tgz",
|
||||
"integrity": "sha512-Z5pvlCaZgU+93ryiYUwGwLl9AQVB/PQ1TsJ9NZ/gHzZjN7g9IAn6RSDkpCV8hqTwAiaj6fmCcKSQeBPlIpW28w==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
|
@ -574,13 +574,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/typescript-estree": {
|
||||
"version": "5.45.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.45.0.tgz",
|
||||
"integrity": "sha512-maRhLGSzqUpFcZgXxg1qc/+H0bT36lHK4APhp0AEUVrpSwXiRAomm/JGjSG+kNUio5kAa3uekCYu/47cnGn5EQ==",
|
||||
"version": "5.46.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.46.1.tgz",
|
||||
"integrity": "sha512-j9W4t67QiNp90kh5Nbr1w92wzt+toiIsaVPnEblB2Ih2U9fqBTyqV9T3pYWZBRt6QoMh/zVWP59EpuCjc4VRBg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "5.45.0",
|
||||
"@typescript-eslint/visitor-keys": "5.45.0",
|
||||
"@typescript-eslint/types": "5.46.1",
|
||||
"@typescript-eslint/visitor-keys": "5.46.1",
|
||||
"debug": "^4.3.4",
|
||||
"globby": "^11.1.0",
|
||||
"is-glob": "^4.0.3",
|
||||
|
@ -601,16 +601,16 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/utils": {
|
||||
"version": "5.45.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.45.0.tgz",
|
||||
"integrity": "sha512-OUg2JvsVI1oIee/SwiejTot2OxwU8a7UfTFMOdlhD2y+Hl6memUSL4s98bpUTo8EpVEr0lmwlU7JSu/p2QpSvA==",
|
||||
"version": "5.46.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.46.1.tgz",
|
||||
"integrity": "sha512-RBdBAGv3oEpFojaCYT4Ghn4775pdjvwfDOfQ2P6qzNVgQOVrnSPe5/Pb88kv7xzYQjoio0eKHKB9GJ16ieSxvA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/json-schema": "^7.0.9",
|
||||
"@types/semver": "^7.3.12",
|
||||
"@typescript-eslint/scope-manager": "5.45.0",
|
||||
"@typescript-eslint/types": "5.45.0",
|
||||
"@typescript-eslint/typescript-estree": "5.45.0",
|
||||
"@typescript-eslint/scope-manager": "5.46.1",
|
||||
"@typescript-eslint/types": "5.46.1",
|
||||
"@typescript-eslint/typescript-estree": "5.46.1",
|
||||
"eslint-scope": "^5.1.1",
|
||||
"eslint-utils": "^3.0.0",
|
||||
"semver": "^7.3.7"
|
||||
|
@ -627,12 +627,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/visitor-keys": {
|
||||
"version": "5.45.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.45.0.tgz",
|
||||
"integrity": "sha512-jc6Eccbn2RtQPr1s7th6jJWQHBHI6GBVQkCHoJFQ5UreaKm59Vxw+ynQUPPY2u2Amquc+7tmEoC2G52ApsGNNg==",
|
||||
"version": "5.46.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.46.1.tgz",
|
||||
"integrity": "sha512-jczZ9noovXwy59KjRTk1OftT78pwygdcmCuBf8yMoWt/8O8l+6x2LSEze0E4TeepXK4MezW3zGSyoDRZK7Y9cg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "5.45.0",
|
||||
"@typescript-eslint/types": "5.46.1",
|
||||
"eslint-visitor-keys": "^3.3.0"
|
||||
},
|
||||
"engines": {
|
||||
|
@ -1337,9 +1337,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/es-abstract": {
|
||||
"version": "1.20.4",
|
||||
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz",
|
||||
"integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==",
|
||||
"version": "1.20.5",
|
||||
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz",
|
||||
"integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"call-bind": "^1.0.2",
|
||||
|
@ -1348,6 +1348,7 @@
|
|||
"function.prototype.name": "^1.1.5",
|
||||
"get-intrinsic": "^1.1.3",
|
||||
"get-symbol-description": "^1.0.0",
|
||||
"gopd": "^1.0.1",
|
||||
"has": "^1.0.3",
|
||||
"has-property-descriptors": "^1.0.0",
|
||||
"has-symbols": "^1.0.3",
|
||||
|
@ -1363,8 +1364,8 @@
|
|||
"object.assign": "^4.1.4",
|
||||
"regexp.prototype.flags": "^1.4.3",
|
||||
"safe-regex-test": "^1.0.0",
|
||||
"string.prototype.trimend": "^1.0.5",
|
||||
"string.prototype.trimstart": "^1.0.5",
|
||||
"string.prototype.trimend": "^1.0.6",
|
||||
"string.prototype.trimstart": "^1.0.6",
|
||||
"unbox-primitive": "^1.0.2"
|
||||
},
|
||||
"engines": {
|
||||
|
@ -1939,9 +1940,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/fastq": {
|
||||
"version": "1.13.0",
|
||||
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
|
||||
"integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
|
||||
"version": "1.14.0",
|
||||
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz",
|
||||
"integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"reusify": "^1.0.4"
|
||||
|
@ -2058,6 +2059,18 @@
|
|||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/fs-minipass/node_modules/minipass": {
|
||||
"version": "3.3.6",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
|
||||
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"yallist": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
|
@ -2207,9 +2220,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/globals": {
|
||||
"version": "13.18.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz",
|
||||
"integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==",
|
||||
"version": "13.19.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz",
|
||||
"integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"type-fest": "^0.20.2"
|
||||
|
@ -3010,9 +3023,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/minipass": {
|
||||
"version": "3.3.6",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
|
||||
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz",
|
||||
"integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"yallist": "^4.0.0"
|
||||
|
@ -3034,6 +3047,18 @@
|
|||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/minizlib/node_modules/minipass": {
|
||||
"version": "3.3.6",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
|
||||
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"yallist": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/mkdirp": {
|
||||
"version": "0.5.5",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
|
||||
|
@ -4070,14 +4095,14 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/tar": {
|
||||
"version": "6.1.12",
|
||||
"resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz",
|
||||
"integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==",
|
||||
"version": "6.1.13",
|
||||
"resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz",
|
||||
"integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"chownr": "^2.0.0",
|
||||
"fs-minipass": "^2.0.0",
|
||||
"minipass": "^3.0.0",
|
||||
"minipass": "^4.0.0",
|
||||
"minizlib": "^2.1.1",
|
||||
"mkdirp": "^1.0.3",
|
||||
"yallist": "^4.0.0"
|
||||
|
@ -4912,14 +4937,14 @@
|
|||
"dev": true
|
||||
},
|
||||
"@typescript-eslint/eslint-plugin": {
|
||||
"version": "5.45.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.45.0.tgz",
|
||||
"integrity": "sha512-CXXHNlf0oL+Yg021cxgOdMHNTXD17rHkq7iW6RFHoybdFgQBjU3yIXhhcPpGwr1CjZlo6ET8C6tzX5juQoXeGA==",
|
||||
"version": "5.46.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.46.1.tgz",
|
||||
"integrity": "sha512-YpzNv3aayRBwjs4J3oz65eVLXc9xx0PDbIRisHj+dYhvBn02MjYOD96P8YGiWEIFBrojaUjxvkaUpakD82phsA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/scope-manager": "5.45.0",
|
||||
"@typescript-eslint/type-utils": "5.45.0",
|
||||
"@typescript-eslint/utils": "5.45.0",
|
||||
"@typescript-eslint/scope-manager": "5.46.1",
|
||||
"@typescript-eslint/type-utils": "5.46.1",
|
||||
"@typescript-eslint/utils": "5.46.1",
|
||||
"debug": "^4.3.4",
|
||||
"ignore": "^5.2.0",
|
||||
"natural-compare-lite": "^1.4.0",
|
||||
|
@ -4929,53 +4954,53 @@
|
|||
}
|
||||
},
|
||||
"@typescript-eslint/parser": {
|
||||
"version": "5.45.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.45.0.tgz",
|
||||
"integrity": "sha512-brvs/WSM4fKUmF5Ot/gEve6qYiCMjm6w4HkHPfS6ZNmxTS0m0iNN4yOChImaCkqc1hRwFGqUyanMXuGal6oyyQ==",
|
||||
"version": "5.46.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.46.1.tgz",
|
||||
"integrity": "sha512-RelQ5cGypPh4ySAtfIMBzBGyrNerQcmfA1oJvPj5f+H4jI59rl9xxpn4bonC0tQvUKOEN7eGBFWxFLK3Xepneg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/scope-manager": "5.45.0",
|
||||
"@typescript-eslint/types": "5.45.0",
|
||||
"@typescript-eslint/typescript-estree": "5.45.0",
|
||||
"@typescript-eslint/scope-manager": "5.46.1",
|
||||
"@typescript-eslint/types": "5.46.1",
|
||||
"@typescript-eslint/typescript-estree": "5.46.1",
|
||||
"debug": "^4.3.4"
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/scope-manager": {
|
||||
"version": "5.45.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.45.0.tgz",
|
||||
"integrity": "sha512-noDMjr87Arp/PuVrtvN3dXiJstQR1+XlQ4R1EvzG+NMgXi8CuMCXpb8JqNtFHKceVSQ985BZhfRdowJzbv4yKw==",
|
||||
"version": "5.46.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.46.1.tgz",
|
||||
"integrity": "sha512-iOChVivo4jpwUdrJZyXSMrEIM/PvsbbDOX1y3UCKjSgWn+W89skxWaYXACQfxmIGhPVpRWK/VWPYc+bad6smIA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/types": "5.45.0",
|
||||
"@typescript-eslint/visitor-keys": "5.45.0"
|
||||
"@typescript-eslint/types": "5.46.1",
|
||||
"@typescript-eslint/visitor-keys": "5.46.1"
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/type-utils": {
|
||||
"version": "5.45.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.45.0.tgz",
|
||||
"integrity": "sha512-DY7BXVFSIGRGFZ574hTEyLPRiQIvI/9oGcN8t1A7f6zIs6ftbrU0nhyV26ZW//6f85avkwrLag424n+fkuoJ1Q==",
|
||||
"version": "5.46.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.46.1.tgz",
|
||||
"integrity": "sha512-V/zMyfI+jDmL1ADxfDxjZ0EMbtiVqj8LUGPAGyBkXXStWmCUErMpW873zEHsyguWCuq2iN4BrlWUkmuVj84yng==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/typescript-estree": "5.45.0",
|
||||
"@typescript-eslint/utils": "5.45.0",
|
||||
"@typescript-eslint/typescript-estree": "5.46.1",
|
||||
"@typescript-eslint/utils": "5.46.1",
|
||||
"debug": "^4.3.4",
|
||||
"tsutils": "^3.21.0"
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/types": {
|
||||
"version": "5.45.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.45.0.tgz",
|
||||
"integrity": "sha512-QQij+u/vgskA66azc9dCmx+rev79PzX8uDHpsqSjEFtfF2gBUTRCpvYMh2gw2ghkJabNkPlSUCimsyBEQZd1DA==",
|
||||
"version": "5.46.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.46.1.tgz",
|
||||
"integrity": "sha512-Z5pvlCaZgU+93ryiYUwGwLl9AQVB/PQ1TsJ9NZ/gHzZjN7g9IAn6RSDkpCV8hqTwAiaj6fmCcKSQeBPlIpW28w==",
|
||||
"dev": true
|
||||
},
|
||||
"@typescript-eslint/typescript-estree": {
|
||||
"version": "5.45.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.45.0.tgz",
|
||||
"integrity": "sha512-maRhLGSzqUpFcZgXxg1qc/+H0bT36lHK4APhp0AEUVrpSwXiRAomm/JGjSG+kNUio5kAa3uekCYu/47cnGn5EQ==",
|
||||
"version": "5.46.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.46.1.tgz",
|
||||
"integrity": "sha512-j9W4t67QiNp90kh5Nbr1w92wzt+toiIsaVPnEblB2Ih2U9fqBTyqV9T3pYWZBRt6QoMh/zVWP59EpuCjc4VRBg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/types": "5.45.0",
|
||||
"@typescript-eslint/visitor-keys": "5.45.0",
|
||||
"@typescript-eslint/types": "5.46.1",
|
||||
"@typescript-eslint/visitor-keys": "5.46.1",
|
||||
"debug": "^4.3.4",
|
||||
"globby": "^11.1.0",
|
||||
"is-glob": "^4.0.3",
|
||||
|
@ -4984,28 +5009,28 @@
|
|||
}
|
||||
},
|
||||
"@typescript-eslint/utils": {
|
||||
"version": "5.45.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.45.0.tgz",
|
||||
"integrity": "sha512-OUg2JvsVI1oIee/SwiejTot2OxwU8a7UfTFMOdlhD2y+Hl6memUSL4s98bpUTo8EpVEr0lmwlU7JSu/p2QpSvA==",
|
||||
"version": "5.46.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.46.1.tgz",
|
||||
"integrity": "sha512-RBdBAGv3oEpFojaCYT4Ghn4775pdjvwfDOfQ2P6qzNVgQOVrnSPe5/Pb88kv7xzYQjoio0eKHKB9GJ16ieSxvA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/json-schema": "^7.0.9",
|
||||
"@types/semver": "^7.3.12",
|
||||
"@typescript-eslint/scope-manager": "5.45.0",
|
||||
"@typescript-eslint/types": "5.45.0",
|
||||
"@typescript-eslint/typescript-estree": "5.45.0",
|
||||
"@typescript-eslint/scope-manager": "5.46.1",
|
||||
"@typescript-eslint/types": "5.46.1",
|
||||
"@typescript-eslint/typescript-estree": "5.46.1",
|
||||
"eslint-scope": "^5.1.1",
|
||||
"eslint-utils": "^3.0.0",
|
||||
"semver": "^7.3.7"
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/visitor-keys": {
|
||||
"version": "5.45.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.45.0.tgz",
|
||||
"integrity": "sha512-jc6Eccbn2RtQPr1s7th6jJWQHBHI6GBVQkCHoJFQ5UreaKm59Vxw+ynQUPPY2u2Amquc+7tmEoC2G52ApsGNNg==",
|
||||
"version": "5.46.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.46.1.tgz",
|
||||
"integrity": "sha512-jczZ9noovXwy59KjRTk1OftT78pwygdcmCuBf8yMoWt/8O8l+6x2LSEze0E4TeepXK4MezW3zGSyoDRZK7Y9cg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/types": "5.45.0",
|
||||
"@typescript-eslint/types": "5.46.1",
|
||||
"eslint-visitor-keys": "^3.3.0"
|
||||
}
|
||||
},
|
||||
|
@ -5535,9 +5560,9 @@
|
|||
}
|
||||
},
|
||||
"es-abstract": {
|
||||
"version": "1.20.4",
|
||||
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz",
|
||||
"integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==",
|
||||
"version": "1.20.5",
|
||||
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz",
|
||||
"integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"call-bind": "^1.0.2",
|
||||
|
@ -5546,6 +5571,7 @@
|
|||
"function.prototype.name": "^1.1.5",
|
||||
"get-intrinsic": "^1.1.3",
|
||||
"get-symbol-description": "^1.0.0",
|
||||
"gopd": "^1.0.1",
|
||||
"has": "^1.0.3",
|
||||
"has-property-descriptors": "^1.0.0",
|
||||
"has-symbols": "^1.0.3",
|
||||
|
@ -5561,8 +5587,8 @@
|
|||
"object.assign": "^4.1.4",
|
||||
"regexp.prototype.flags": "^1.4.3",
|
||||
"safe-regex-test": "^1.0.0",
|
||||
"string.prototype.trimend": "^1.0.5",
|
||||
"string.prototype.trimstart": "^1.0.5",
|
||||
"string.prototype.trimend": "^1.0.6",
|
||||
"string.prototype.trimstart": "^1.0.6",
|
||||
"unbox-primitive": "^1.0.2"
|
||||
}
|
||||
},
|
||||
|
@ -5988,9 +6014,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"fastq": {
|
||||
"version": "1.13.0",
|
||||
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
|
||||
"integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
|
||||
"version": "1.14.0",
|
||||
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz",
|
||||
"integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"reusify": "^1.0.4"
|
||||
|
@ -6083,6 +6109,17 @@
|
|||
"dev": true,
|
||||
"requires": {
|
||||
"minipass": "^3.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"minipass": {
|
||||
"version": "3.3.6",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
|
||||
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"yallist": "^4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"fs.realpath": {
|
||||
|
@ -6196,9 +6233,9 @@
|
|||
}
|
||||
},
|
||||
"globals": {
|
||||
"version": "13.18.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz",
|
||||
"integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==",
|
||||
"version": "13.19.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz",
|
||||
"integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"type-fest": "^0.20.2"
|
||||
|
@ -6767,9 +6804,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"minipass": {
|
||||
"version": "3.3.6",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
|
||||
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz",
|
||||
"integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"yallist": "^4.0.0"
|
||||
|
@ -6783,6 +6820,17 @@
|
|||
"requires": {
|
||||
"minipass": "^3.0.0",
|
||||
"yallist": "^4.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"minipass": {
|
||||
"version": "3.3.6",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
|
||||
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"yallist": "^4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"mkdirp": {
|
||||
|
@ -7525,14 +7573,14 @@
|
|||
}
|
||||
},
|
||||
"tar": {
|
||||
"version": "6.1.12",
|
||||
"resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz",
|
||||
"integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==",
|
||||
"version": "6.1.13",
|
||||
"resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz",
|
||||
"integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chownr": "^2.0.0",
|
||||
"fs-minipass": "^2.0.0",
|
||||
"minipass": "^3.0.0",
|
||||
"minipass": "^4.0.0",
|
||||
"minizlib": "^2.1.1",
|
||||
"mkdirp": "^1.0.3",
|
||||
"yallist": "^4.0.0"
|
||||
|
|
Загрузка…
Ссылка в новой задаче