Feat agent postprocess limit completion scope (#254)
* refactor: Extract postprocess filters , add unit test for postprocess filters. * feat: agent add indentation based postprocess. * feat: agent enable indentation based postprocess. * fix: rebase and small fixes. * fix: move postprocess after completion cache.sweep/improve-logging-information
parent
450e6bbb56
commit
2680410ac0
|
|
@ -0,0 +1,3 @@
|
|||
process.env.NODE_ENV = 'test';
|
||||
process.env.IS_BROWSER = false;
|
||||
process.env.IS_TEST = true;
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
module.exports = {
|
||||
spec: ["src/**/*.test.ts"],
|
||||
require: ["ts-node/register", "./.mocha.env.js"],
|
||||
};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -56,7 +56,7 @@ module.exports = __toCommonJS(src_exports);
|
|||
// src/TabbyAgent.ts
|
||||
var import_events2 = require("events");
|
||||
var import_uuid2 = require("uuid");
|
||||
var import_deep_equal2 = __toESM(require("deep-equal"));
|
||||
var import_deep_equal = __toESM(require("deep-equal"));
|
||||
var import_deepmerge = __toESM(require("deepmerge"));
|
||||
|
||||
// src/generated/core/BaseHttpRequest.ts
|
||||
|
|
@ -489,7 +489,6 @@ var TabbyApi = class {
|
|||
};
|
||||
|
||||
// src/utils.ts
|
||||
var isBrowser = false;
|
||||
function splitLines(input) {
|
||||
return input.match(/.*(?:$|\r?\n)/g).filter(Boolean);
|
||||
}
|
||||
|
|
@ -574,6 +573,9 @@ var CloudApi = class {
|
|||
}
|
||||
};
|
||||
|
||||
// src/env.ts
|
||||
var isBrowser = false;
|
||||
|
||||
// src/dataStore.ts
|
||||
var dataStore = isBrowser ? null : (() => {
|
||||
const dataFile = require("path").join(require("os").homedir(), ".tabby", "agent", "data.json");
|
||||
|
|
@ -870,26 +872,8 @@ var CompletionCache = class {
|
|||
}
|
||||
};
|
||||
|
||||
// src/postprocess.ts
|
||||
var import_deep_equal = __toESM(require("deep-equal"));
|
||||
// src/postprocess/filter.ts
|
||||
var logger = rootLogger.child({ component: "Postprocess" });
|
||||
var removeDuplicateLines = (context) => {
|
||||
return (input) => {
|
||||
const suffix = context.text.slice(context.position);
|
||||
const suffixLines = splitLines(suffix);
|
||||
const inputLines = splitLines(input);
|
||||
for (let index = Math.max(0, inputLines.length - suffixLines.length); index < inputLines.length; index++) {
|
||||
if ((0, import_deep_equal.default)(inputLines.slice(index), suffixLines.slice(0, input.length - index))) {
|
||||
logger.debug({ input, suffix, duplicateAt: index }, "Remove duplicate lines");
|
||||
return input.slice(0, index);
|
||||
}
|
||||
}
|
||||
return input;
|
||||
};
|
||||
};
|
||||
var dropBlank = (input) => {
|
||||
return isBlank(input) ? null : input;
|
||||
};
|
||||
var applyFilter = (filter) => {
|
||||
return async (response) => {
|
||||
response.choices = (await Promise.all(
|
||||
|
|
@ -901,8 +885,82 @@ var applyFilter = (filter) => {
|
|||
return response;
|
||||
};
|
||||
};
|
||||
|
||||
// src/postprocess/limitScopeByIndentation.ts
|
||||
function calcIndentLevel(line) {
|
||||
return line.match(/^[ \t]*/)?.[0]?.length || 0;
|
||||
}
|
||||
function isIndentBlockClosingAllowed(currentIndentLevel, suffixLines) {
|
||||
let index = 1;
|
||||
while (index < suffixLines.length && isBlank(suffixLines[index])) {
|
||||
index++;
|
||||
}
|
||||
if (index >= suffixLines.length) {
|
||||
return true;
|
||||
} else {
|
||||
const indentLevel = calcIndentLevel(suffixLines[index]);
|
||||
return indentLevel < currentIndentLevel;
|
||||
}
|
||||
}
|
||||
function isOpeningIndentBlock(lines, index) {
|
||||
if (index >= lines.length - 1) {
|
||||
return false;
|
||||
}
|
||||
return calcIndentLevel(lines[index]) < calcIndentLevel(lines[index + 1]);
|
||||
}
|
||||
var limitScopeByIndentation = (context) => {
|
||||
return (input) => {
|
||||
const prefix = context.text.slice(0, context.position);
|
||||
const suffix = context.text.slice(context.position);
|
||||
const prefixLines = splitLines(prefix);
|
||||
const suffixLines = splitLines(suffix);
|
||||
const inputLines = splitLines(input);
|
||||
const currentIndentLevel = calcIndentLevel(prefixLines[prefixLines.length - 1]);
|
||||
let index;
|
||||
for (index = 1; index < inputLines.length; index++) {
|
||||
if (isBlank(inputLines[index])) {
|
||||
continue;
|
||||
}
|
||||
const indentLevel = calcIndentLevel(inputLines[index]);
|
||||
if (indentLevel < currentIndentLevel) {
|
||||
if (isIndentBlockClosingAllowed(currentIndentLevel, suffixLines) && !isOpeningIndentBlock(inputLines, index)) {
|
||||
index++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (index < inputLines.length) {
|
||||
logger.debug({ input, prefix, suffix, scopeEndAt: index }, "Remove content out of scope");
|
||||
return inputLines.slice(0, index).join("").trimEnd();
|
||||
}
|
||||
return input;
|
||||
};
|
||||
};
|
||||
|
||||
// src/postprocess/removeOverlapping.ts
|
||||
var removeOverlapping = (context) => {
|
||||
return (input) => {
|
||||
const suffix = context.text.slice(context.position);
|
||||
for (let index = Math.max(0, input.length - suffix.length); index < input.length; index++) {
|
||||
if (input.slice(index) === suffix.slice(0, input.length - index)) {
|
||||
logger.debug({ input, suffix, overlappedAt: index }, "Remove overlapped content");
|
||||
return input.slice(0, index);
|
||||
}
|
||||
}
|
||||
return input;
|
||||
};
|
||||
};
|
||||
|
||||
// src/postprocess/dropBlank.ts
|
||||
var dropBlank = () => {
|
||||
return (input) => {
|
||||
return isBlank(input) ? null : input;
|
||||
};
|
||||
};
|
||||
|
||||
// src/postprocess/index.ts
|
||||
async function postprocess(request2, response) {
|
||||
return new Promise((resolve2) => resolve2(response)).then(applyFilter(removeDuplicateLines(request2))).then(applyFilter(dropBlank));
|
||||
return new Promise((resolve2) => resolve2(response)).then(applyFilter(limitScopeByIndentation(request2))).then(applyFilter(removeOverlapping(request2))).then(applyFilter(dropBlank()));
|
||||
}
|
||||
|
||||
// package.json
|
||||
|
|
@ -1072,7 +1130,7 @@ var _TabbyAgent = class extends import_events2.EventEmitter {
|
|||
}
|
||||
async updateConfig(config) {
|
||||
const mergedConfig = (0, import_deepmerge.default)(this.config, config);
|
||||
if (!(0, import_deep_equal2.default)(this.config, mergedConfig)) {
|
||||
if (!(0, import_deep_equal.default)(this.config, mergedConfig)) {
|
||||
this.config = mergedConfig;
|
||||
await this.applyConfig();
|
||||
const event = { event: "configUpdated", config: this.config };
|
||||
|
|
@ -1130,10 +1188,10 @@ var _TabbyAgent = class extends import_events2.EventEmitter {
|
|||
});
|
||||
return cancelable(
|
||||
promise.then((response) => {
|
||||
return postprocess(request2, response);
|
||||
}).then((response) => {
|
||||
this.completionCache.set(request2, response);
|
||||
return response;
|
||||
}).then((response) => {
|
||||
return postprocess(request2, response);
|
||||
}),
|
||||
() => {
|
||||
promise.cancel();
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -6184,7 +6184,7 @@ var require_deep_equal = __commonJS({
|
|||
}
|
||||
return true;
|
||||
}
|
||||
module.exports = function deepEqual4(a7, b5, opts) {
|
||||
module.exports = function deepEqual3(a7, b5, opts) {
|
||||
return internalDeepEqual(a7, b5, opts, getSideChannel());
|
||||
};
|
||||
}
|
||||
|
|
@ -10295,7 +10295,7 @@ function v4(options, buf, offset) {
|
|||
var v4_default = v4;
|
||||
|
||||
// src/TabbyAgent.ts
|
||||
var import_deep_equal2 = __toESM(require_deep_equal());
|
||||
var import_deep_equal = __toESM(require_deep_equal());
|
||||
var import_deepmerge = __toESM(require_cjs());
|
||||
|
||||
// src/generated/index.ts
|
||||
|
|
@ -13311,6 +13311,15 @@ init_dirname();
|
|||
init_filename();
|
||||
init_buffer2();
|
||||
init_process2();
|
||||
|
||||
// src/env.ts
|
||||
init_global();
|
||||
init_dirname();
|
||||
init_filename();
|
||||
init_buffer2();
|
||||
init_process2();
|
||||
|
||||
// src/dataStore.ts
|
||||
var dataStore = null ;
|
||||
|
||||
// src/logger.ts
|
||||
|
|
@ -14910,31 +14919,20 @@ var CompletionCache = class {
|
|||
}
|
||||
};
|
||||
|
||||
// src/postprocess.ts
|
||||
// src/postprocess/index.ts
|
||||
init_global();
|
||||
init_dirname();
|
||||
init_filename();
|
||||
init_buffer2();
|
||||
init_process2();
|
||||
|
||||
// src/postprocess/filter.ts
|
||||
init_global();
|
||||
init_dirname();
|
||||
init_filename();
|
||||
init_buffer2();
|
||||
init_process2();
|
||||
var import_deep_equal = __toESM(require_deep_equal());
|
||||
var logger = rootLogger.child({ component: "Postprocess" });
|
||||
var removeDuplicateLines = (context) => {
|
||||
return (input) => {
|
||||
const suffix = context.text.slice(context.position);
|
||||
const suffixLines = splitLines(suffix);
|
||||
const inputLines = splitLines(input);
|
||||
for (let index = Math.max(0, inputLines.length - suffixLines.length); index < inputLines.length; index++) {
|
||||
if ((0, import_deep_equal.default)(inputLines.slice(index), suffixLines.slice(0, input.length - index))) {
|
||||
logger.debug({ input, suffix, duplicateAt: index }, "Remove duplicate lines");
|
||||
return input.slice(0, index);
|
||||
}
|
||||
}
|
||||
return input;
|
||||
};
|
||||
};
|
||||
var dropBlank = (input) => {
|
||||
return isBlank(input) ? null : input;
|
||||
};
|
||||
var applyFilter = (filter2) => {
|
||||
return async (response) => {
|
||||
response.choices = (await Promise.all(
|
||||
|
|
@ -14946,8 +14944,97 @@ var applyFilter = (filter2) => {
|
|||
return response;
|
||||
};
|
||||
};
|
||||
|
||||
// src/postprocess/limitScopeByIndentation.ts
|
||||
init_global();
|
||||
init_dirname();
|
||||
init_filename();
|
||||
init_buffer2();
|
||||
init_process2();
|
||||
function calcIndentLevel(line) {
|
||||
return line.match(/^[ \t]*/)?.[0]?.length || 0;
|
||||
}
|
||||
function isIndentBlockClosingAllowed(currentIndentLevel, suffixLines) {
|
||||
let index = 1;
|
||||
while (index < suffixLines.length && isBlank(suffixLines[index])) {
|
||||
index++;
|
||||
}
|
||||
if (index >= suffixLines.length) {
|
||||
return true;
|
||||
} else {
|
||||
const indentLevel = calcIndentLevel(suffixLines[index]);
|
||||
return indentLevel < currentIndentLevel;
|
||||
}
|
||||
}
|
||||
function isOpeningIndentBlock(lines, index) {
|
||||
if (index >= lines.length - 1) {
|
||||
return false;
|
||||
}
|
||||
return calcIndentLevel(lines[index]) < calcIndentLevel(lines[index + 1]);
|
||||
}
|
||||
var limitScopeByIndentation = (context) => {
|
||||
return (input) => {
|
||||
const prefix = context.text.slice(0, context.position);
|
||||
const suffix = context.text.slice(context.position);
|
||||
const prefixLines = splitLines(prefix);
|
||||
const suffixLines = splitLines(suffix);
|
||||
const inputLines = splitLines(input);
|
||||
const currentIndentLevel = calcIndentLevel(prefixLines[prefixLines.length - 1]);
|
||||
let index;
|
||||
for (index = 1; index < inputLines.length; index++) {
|
||||
if (isBlank(inputLines[index])) {
|
||||
continue;
|
||||
}
|
||||
const indentLevel = calcIndentLevel(inputLines[index]);
|
||||
if (indentLevel < currentIndentLevel) {
|
||||
if (isIndentBlockClosingAllowed(currentIndentLevel, suffixLines) && !isOpeningIndentBlock(inputLines, index)) {
|
||||
index++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (index < inputLines.length) {
|
||||
logger.debug({ input, prefix, suffix, scopeEndAt: index }, "Remove content out of scope");
|
||||
return inputLines.slice(0, index).join("").trimEnd();
|
||||
}
|
||||
return input;
|
||||
};
|
||||
};
|
||||
|
||||
// src/postprocess/removeOverlapping.ts
|
||||
init_global();
|
||||
init_dirname();
|
||||
init_filename();
|
||||
init_buffer2();
|
||||
init_process2();
|
||||
var removeOverlapping = (context) => {
|
||||
return (input) => {
|
||||
const suffix = context.text.slice(context.position);
|
||||
for (let index = Math.max(0, input.length - suffix.length); index < input.length; index++) {
|
||||
if (input.slice(index) === suffix.slice(0, input.length - index)) {
|
||||
logger.debug({ input, suffix, overlappedAt: index }, "Remove overlapped content");
|
||||
return input.slice(0, index);
|
||||
}
|
||||
}
|
||||
return input;
|
||||
};
|
||||
};
|
||||
|
||||
// src/postprocess/dropBlank.ts
|
||||
init_global();
|
||||
init_dirname();
|
||||
init_filename();
|
||||
init_buffer2();
|
||||
init_process2();
|
||||
var dropBlank = () => {
|
||||
return (input) => {
|
||||
return isBlank(input) ? null : input;
|
||||
};
|
||||
};
|
||||
|
||||
// src/postprocess/index.ts
|
||||
async function postprocess(request2, response) {
|
||||
return new Promise((resolve4) => resolve4(response)).then(applyFilter(removeDuplicateLines(request2))).then(applyFilter(dropBlank));
|
||||
return new Promise((resolve4) => resolve4(response)).then(applyFilter(limitScopeByIndentation(request2))).then(applyFilter(removeOverlapping(request2))).then(applyFilter(dropBlank()));
|
||||
}
|
||||
|
||||
// src/AnonymousUsageLogger.ts
|
||||
|
|
@ -15123,7 +15210,7 @@ var _TabbyAgent = class extends EventEmitter {
|
|||
}
|
||||
async updateConfig(config2) {
|
||||
const mergedConfig = (0, import_deepmerge.default)(this.config, config2);
|
||||
if (!(0, import_deep_equal2.default)(this.config, mergedConfig)) {
|
||||
if (!(0, import_deep_equal.default)(this.config, mergedConfig)) {
|
||||
this.config = mergedConfig;
|
||||
await this.applyConfig();
|
||||
const event = { event: "configUpdated", config: this.config };
|
||||
|
|
@ -15181,10 +15268,10 @@ var _TabbyAgent = class extends EventEmitter {
|
|||
});
|
||||
return cancelable(
|
||||
promise.then((response) => {
|
||||
return postprocess(request2, response);
|
||||
}).then((response) => {
|
||||
this.completionCache.set(request2, response);
|
||||
return response;
|
||||
}).then((response) => {
|
||||
return postprocess(request2, response);
|
||||
}),
|
||||
() => {
|
||||
promise.cancel();
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -12,14 +12,22 @@
|
|||
"scripts": {
|
||||
"openapi-codegen": "rimraf ./src/generated && openapi --input ../../website/static/openapi.json --output ./src/generated --client axios --name TabbyApi --indent 2",
|
||||
"dev": "tsup --watch",
|
||||
"build": "tsup"
|
||||
"build": "tsup",
|
||||
"test:watch": "mocha --watch",
|
||||
"test": "mocha"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/chai": "^4.3.5",
|
||||
"@types/fs-extra": "^11.0.1",
|
||||
"@types/mocha": "^10.0.1",
|
||||
"@types/node": "^16.18.32",
|
||||
"chai": "^4.3.7",
|
||||
"dedent": "^0.7.0",
|
||||
"esbuild-plugin-polyfill-node": "^0.2.0",
|
||||
"mocha": "^10.2.0",
|
||||
"openapi-typescript-codegen": "^0.24.0",
|
||||
"rimraf": "^5.0.1",
|
||||
"ts-node": "^10.9.1",
|
||||
"tsup": "^6.7.0",
|
||||
"typescript": "^5.0.3"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { name as agentName, version as agentVersion } from "../package.json";
|
||||
import { CloudApi } from "./cloud";
|
||||
import { v4 as uuid } from "uuid";
|
||||
import { isBrowser } from "./utils";
|
||||
import { isBrowser } from "./env";
|
||||
import { rootLogger } from "./logger";
|
||||
import { dataStore, DataStore } from "./dataStore";
|
||||
|
||||
|
|
|
|||
|
|
@ -216,12 +216,12 @@ export class TabbyAgent extends EventEmitter implements Agent {
|
|||
});
|
||||
return cancelable(
|
||||
promise
|
||||
.then((response) => {
|
||||
return postprocess(request, response);
|
||||
})
|
||||
.then((response) => {
|
||||
this.completionCache.set(request, response);
|
||||
return response;
|
||||
})
|
||||
.then((response) => {
|
||||
return postprocess(request, response);
|
||||
}),
|
||||
() => {
|
||||
promise.cancel();
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { isBrowser } from "./utils";
|
||||
import { isBrowser } from "./env";
|
||||
|
||||
export type StoredData = {
|
||||
anonymousId: string;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
export const isBrowser = !!process.env.IS_BROWSER;
|
||||
export const isTest = !!process.env.IS_TEST;
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
import pino from "pino";
|
||||
import { isBrowser } from "./utils";
|
||||
import { isBrowser } from "./env";
|
||||
|
||||
/**
|
||||
* Stream not available in browser, will use default console output.
|
||||
|
|
|
|||
|
|
@ -1,51 +0,0 @@
|
|||
import { CompletionRequest, CompletionResponse } from "./Agent";
|
||||
import deepEqual from "deep-equal";
|
||||
import { isBlank, splitLines } from "./utils";
|
||||
import { rootLogger } from "./logger";
|
||||
|
||||
type PostprocessContext = CompletionRequest;
|
||||
type PostprocessFilter = (item: string) => string | null | Promise<string | null>;
|
||||
|
||||
const logger = rootLogger.child({ component: "Postprocess" });
|
||||
|
||||
const removeDuplicateLines: (context: PostprocessContext) => PostprocessFilter = (context) => {
|
||||
return (input) => {
|
||||
const suffix = context.text.slice(context.position);
|
||||
const suffixLines = splitLines(suffix);
|
||||
const inputLines = splitLines(input);
|
||||
for (let index = Math.max(0, inputLines.length - suffixLines.length); index < inputLines.length; index++) {
|
||||
if (deepEqual(inputLines.slice(index), suffixLines.slice(0, input.length - index))) {
|
||||
logger.debug({ input, suffix, duplicateAt: index }, "Remove duplicate lines");
|
||||
return input.slice(0, index);
|
||||
}
|
||||
}
|
||||
return input;
|
||||
};
|
||||
};
|
||||
|
||||
const dropBlank: PostprocessFilter = (input) => {
|
||||
return isBlank(input) ? null : input;
|
||||
};
|
||||
|
||||
const applyFilter = (filter: PostprocessFilter) => {
|
||||
return async (response: CompletionResponse) => {
|
||||
response.choices = (
|
||||
await Promise.all(
|
||||
response.choices.map(async (choice) => {
|
||||
choice.text = await filter(choice.text);
|
||||
return choice;
|
||||
})
|
||||
)
|
||||
).filter(Boolean);
|
||||
return response;
|
||||
};
|
||||
};
|
||||
|
||||
export async function postprocess(
|
||||
request: CompletionRequest,
|
||||
response: CompletionResponse
|
||||
): Promise<CompletionResponse> {
|
||||
return new Promise((resolve) => resolve(response))
|
||||
.then(applyFilter(removeDuplicateLines(request)))
|
||||
.then(applyFilter(dropBlank));
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import { expect } from "chai";
|
||||
import { dropBlank } from "./dropBlank";
|
||||
|
||||
describe("postprocess", () => {
|
||||
describe("dropBlank", () => {
|
||||
it("should return null if input is blank", () => {
|
||||
expect(dropBlank()("\n")).to.be.null;
|
||||
expect(dropBlank()("\t\n")).to.be.null;
|
||||
});
|
||||
it("should keep unchanged if input is not blank", () => {
|
||||
expect(dropBlank()("Not blank")).to.eq("Not blank");
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
import { PostprocessFilter } from "./filter";
|
||||
import { isBlank } from "../utils";
|
||||
|
||||
export const dropBlank: () => PostprocessFilter = () => {
|
||||
return (input) => {
|
||||
return isBlank(input) ? null : input;
|
||||
};
|
||||
};
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
import { CompletionRequest, CompletionResponse } from "../Agent";
|
||||
import { rootLogger } from "../logger";
|
||||
|
||||
export type PostprocessContext = CompletionRequest;
|
||||
export type PostprocessFilter = (item: string) => string | null | Promise<string | null>;
|
||||
|
||||
export const logger = rootLogger.child({ component: "Postprocess" });
|
||||
|
||||
export const applyFilter = (filter: PostprocessFilter) => {
|
||||
return async (response: CompletionResponse) => {
|
||||
response.choices = (
|
||||
await Promise.all(
|
||||
response.choices.map(async (choice) => {
|
||||
choice.text = await filter(choice.text);
|
||||
return choice;
|
||||
})
|
||||
)
|
||||
).filter(Boolean);
|
||||
return response;
|
||||
};
|
||||
};
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
import { CompletionRequest, CompletionResponse } from "../Agent";
|
||||
import { applyFilter } from "./filter";
|
||||
import { limitScopeByIndentation } from "./limitScopeByIndentation";
|
||||
import { removeOverlapping } from "./removeOverlapping";
|
||||
import { dropBlank } from "./dropBlank";
|
||||
|
||||
export async function postprocess(
|
||||
request: CompletionRequest,
|
||||
response: CompletionResponse
|
||||
): Promise<CompletionResponse> {
|
||||
return new Promise((resolve) => resolve(response))
|
||||
.then(applyFilter(limitScopeByIndentation(request)))
|
||||
.then(applyFilter(removeOverlapping(request)))
|
||||
.then(applyFilter(dropBlank()));
|
||||
}
|
||||
|
|
@ -0,0 +1,124 @@
|
|||
import { expect } from "chai";
|
||||
import { documentContext, inline } from "./testUtils";
|
||||
import { limitScopeByIndentation } from "./limitScopeByIndentation";
|
||||
|
||||
const buildContext = (doc: string) => {
|
||||
return {
|
||||
filepath: null,
|
||||
language: "javascript",
|
||||
text: doc.replace(/║/, ""),
|
||||
position: doc.indexOf("║"),
|
||||
};
|
||||
};
|
||||
|
||||
describe("postprocess", () => {
|
||||
describe("limitScopeByIndentation", () => {
|
||||
it("should remove content out of current intent scope", () => {
|
||||
const context = {
|
||||
...documentContext`
|
||||
function safeParse(json) {
|
||||
try {
|
||||
console.log║
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
`,
|
||||
language: "javascript",
|
||||
};
|
||||
const completion = inline`
|
||||
├("Parsing", { json });
|
||||
return JSON.parse(json);
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}┤
|
||||
`;
|
||||
const expected = inline`
|
||||
├("Parsing", { json });
|
||||
return JSON.parse(json);┤
|
||||
┴┴┴┴
|
||||
`;
|
||||
expect(limitScopeByIndentation(context)(completion)).to.eq(expected);
|
||||
});
|
||||
|
||||
it("should allow single level closing bracket", () => {
|
||||
const context = {
|
||||
...documentContext`
|
||||
function safeParse(json) {
|
||||
try {
|
||||
return JSON.parse(json);
|
||||
} catch (e) {
|
||||
return null;║
|
||||
`,
|
||||
language: "javascript",
|
||||
};
|
||||
const completion = inline`
|
||||
├
|
||||
}
|
||||
}┤
|
||||
`;
|
||||
const expected = inline`
|
||||
├
|
||||
}┤
|
||||
┴┴
|
||||
`;
|
||||
expect(limitScopeByIndentation(context)(completion)).to.eq(expected);
|
||||
});
|
||||
|
||||
|
||||
it("should allow single level closing bracket", () => {
|
||||
const context = {
|
||||
...documentContext`
|
||||
function safeParse(json) {
|
||||
try {
|
||||
return JSON.parse(json);
|
||||
} catch (e) {
|
||||
║
|
||||
}
|
||||
}`,
|
||||
language: "javascript",
|
||||
};
|
||||
const completion = inline`
|
||||
├return null;
|
||||
}
|
||||
}┤
|
||||
`;
|
||||
// In fact, we do not expect the closing `}`, because of there are `}` already in suffix,
|
||||
// but we leave them here and pass to other filters to handle it.
|
||||
const expected = inline`
|
||||
├return null;
|
||||
}┤
|
||||
┴┴
|
||||
`;
|
||||
expect(limitScopeByIndentation(context)(completion)).to.eq(expected);
|
||||
});
|
||||
|
||||
// Might be better to allow
|
||||
it("not allow back step indent level with `catch` or `else` if there is no similar block yet", () => {
|
||||
const context = {
|
||||
...documentContext`
|
||||
function safeParse(json) {
|
||||
try {
|
||||
║
|
||||
}
|
||||
}
|
||||
`,
|
||||
language: "javascript",
|
||||
};
|
||||
const completion = inline`
|
||||
├return JSON.parse(json);
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}┤
|
||||
`;
|
||||
const expected = inline`
|
||||
├return JSON.parse(json);┤
|
||||
┴┴┴┴
|
||||
`;
|
||||
expect(limitScopeByIndentation(context)(completion)).to.eq(expected);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
import { PostprocessFilter, PostprocessContext, logger } from "./filter";
|
||||
import { isBlank, splitLines } from "../utils";
|
||||
|
||||
function calcIndentLevel(line) {
|
||||
return line.match(/^[ \t]*/)?.[0]?.length || 0;
|
||||
}
|
||||
|
||||
function isIndentBlockClosingAllowed(currentIndentLevel, suffixLines) {
|
||||
let index = 1;
|
||||
while (index < suffixLines.length && isBlank(suffixLines[index])) {
|
||||
index++;
|
||||
}
|
||||
if (index >= suffixLines.length) {
|
||||
return true;
|
||||
} else {
|
||||
const indentLevel = calcIndentLevel(suffixLines[index]);
|
||||
return indentLevel < currentIndentLevel;
|
||||
}
|
||||
}
|
||||
|
||||
function isOpeningIndentBlock(lines, index) {
|
||||
if (index >= lines.length - 1) {
|
||||
return false;
|
||||
}
|
||||
return calcIndentLevel(lines[index]) < calcIndentLevel(lines[index + 1]);
|
||||
}
|
||||
|
||||
export const limitScopeByIndentation: (context: PostprocessContext) => PostprocessFilter = (context) => {
|
||||
return (input) => {
|
||||
const prefix = context.text.slice(0, context.position);
|
||||
const suffix = context.text.slice(context.position);
|
||||
const prefixLines = splitLines(prefix);
|
||||
const suffixLines = splitLines(suffix);
|
||||
const inputLines = splitLines(input);
|
||||
const currentIndentLevel = calcIndentLevel(prefixLines[prefixLines.length - 1]);
|
||||
let index;
|
||||
for (index = 1; index < inputLines.length; index++) {
|
||||
if (isBlank(inputLines[index])) {
|
||||
continue;
|
||||
}
|
||||
const indentLevel = calcIndentLevel(inputLines[index]);
|
||||
if (indentLevel < currentIndentLevel) {
|
||||
// If the line is indented less than the current indent level, it is out of scope.
|
||||
// We assume it begins with a symbol closing block.
|
||||
// If suffix context allows, and it do not open a new intent block, include this line here.
|
||||
if (isIndentBlockClosingAllowed(currentIndentLevel, suffixLines) && !isOpeningIndentBlock(inputLines, index)) {
|
||||
index++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (index < inputLines.length) {
|
||||
logger.debug({ input, prefix, suffix, scopeEndAt: index }, "Remove content out of scope");
|
||||
return inputLines.slice(0, index).join("").trimEnd();
|
||||
}
|
||||
return input;
|
||||
};
|
||||
};
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
import { expect } from "chai";
|
||||
import { documentContext, inline } from "./testUtils";
|
||||
import { removeOverlapping } from "./removeOverlapping";
|
||||
|
||||
describe("postprocess", () => {
|
||||
describe("removeOverlapping", () => {
|
||||
it("should remove content overlapped between completion and suffix", () => {
|
||||
const context = {
|
||||
...documentContext`
|
||||
function sum(a, b) {
|
||||
║
|
||||
return value;
|
||||
}
|
||||
`,
|
||||
language: "javascript",
|
||||
};
|
||||
const completion = inline`
|
||||
├let value = a + b;
|
||||
return value;
|
||||
}┤
|
||||
`;
|
||||
const expected = inline`
|
||||
├let value = a + b;┤
|
||||
┴┴
|
||||
`;
|
||||
expect(removeOverlapping(context)(completion)).to.eq(expected);
|
||||
});
|
||||
|
||||
// Bad case
|
||||
it("can not remove text that suffix not exactly starts with", () => {
|
||||
const context = {
|
||||
...documentContext`
|
||||
let sum = (a, b) => {
|
||||
║return a + b;
|
||||
}
|
||||
`,
|
||||
language: "javascript",
|
||||
};
|
||||
// completion give a `;` at end but context have not
|
||||
const completion = inline`
|
||||
├return a + b;
|
||||
};┤
|
||||
`;
|
||||
expect(removeOverlapping(context)(completion)).to.eq(completion);
|
||||
});
|
||||
|
||||
// Bad case
|
||||
it("can not remove text that suffix not exactly starts with", () => {
|
||||
const context = {
|
||||
...documentContext`
|
||||
let sum = (a, b) => {
|
||||
return a + b;
|
||||
║
|
||||
}
|
||||
`,
|
||||
language: "javascript",
|
||||
};
|
||||
// the difference is a `\n`
|
||||
const completion = inline`
|
||||
├}┤
|
||||
`;
|
||||
expect(removeOverlapping(context)(completion)).to.eq(completion);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import { PostprocessFilter, PostprocessContext, logger } from "./filter";
|
||||
|
||||
export const removeOverlapping: (context: PostprocessContext) => PostprocessFilter = (context) => {
|
||||
return (input) => {
|
||||
const suffix = context.text.slice(context.position);
|
||||
for (let index = Math.max(0, input.length - suffix.length); index < input.length; index++) {
|
||||
if (input.slice(index) === suffix.slice(0, input.length - index)) {
|
||||
logger.debug({ input, suffix, overlappedAt: index }, "Remove overlapped content");
|
||||
return input.slice(0, index);
|
||||
}
|
||||
}
|
||||
return input;
|
||||
};
|
||||
};
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
import dedent from "dedent";
|
||||
import type { PostprocessContext } from "./filter";
|
||||
|
||||
// `║` is the cursor position
|
||||
|
||||
export function documentContext(strings): PostprocessContext {
|
||||
const doc = dedent(strings);
|
||||
return {
|
||||
filepath: null,
|
||||
language: null,
|
||||
text: doc.replace(/║/, ""),
|
||||
position: doc.indexOf("║"),
|
||||
maxPrefixLines: 20,
|
||||
maxSuffixLines: 20,
|
||||
};
|
||||
}
|
||||
|
||||
// `├` start of the inline completion to insert
|
||||
// `┤` end of the inline completion to insert
|
||||
// `┴` use for indent placeholder, should be placed at last line after `┤`
|
||||
|
||||
export function inline(strings): string {
|
||||
const inline = dedent(strings);
|
||||
return inline.slice(inline.indexOf("├") + 1, inline.lastIndexOf("┤"));
|
||||
}
|
||||
|
|
@ -1,8 +1,5 @@
|
|||
declare const IS_BROWSER: boolean;
|
||||
export const isBrowser = IS_BROWSER;
|
||||
|
||||
export function splitLines(input: string) {
|
||||
return input.match(/.*(?:$|\r?\n)/g).filter(Boolean) // Split lines and keep newline character
|
||||
return input.match(/.*(?:$|\r?\n)/g).filter(Boolean); // Split lines and keep newline character
|
||||
}
|
||||
|
||||
export function splitWords(input: string) {
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
"target": "ES2020",
|
||||
"lib": ["ES2020", "dom"],
|
||||
"sourceMap": true,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"esModuleInterop": true,
|
||||
"resolveJsonModule": true
|
||||
},
|
||||
"include": ["./src"]
|
||||
|
|
|
|||
|
|
@ -2,10 +2,14 @@ import { defineConfig } from "tsup";
|
|||
import { polyfillNode } from "esbuild-plugin-polyfill-node";
|
||||
import { dependencies } from "./package.json";
|
||||
|
||||
const defineIsBrowser = (targetOptions, isBrowser: boolean) => {
|
||||
targetOptions["define"] = { ...targetOptions["define"], "IS_BROWSER": isBrowser.toString() };
|
||||
const defineEnvs = (targetOptions, envs: { browser: boolean }) => {
|
||||
targetOptions["define"] = {
|
||||
...targetOptions["define"],
|
||||
"process.env.IS_TEST": "false",
|
||||
"process.env.IS_BROWSER": Boolean(envs?.browser).toString(),
|
||||
};
|
||||
return targetOptions;
|
||||
}
|
||||
};
|
||||
|
||||
export default async () => [
|
||||
defineConfig({
|
||||
|
|
@ -15,7 +19,7 @@ export default async () => [
|
|||
format: ["cjs"],
|
||||
sourcemap: true,
|
||||
esbuildOptions(options) {
|
||||
defineIsBrowser(options, false);
|
||||
defineEnvs(options, { browser: false });
|
||||
},
|
||||
clean: true,
|
||||
}),
|
||||
|
|
@ -34,7 +38,7 @@ export default async () => [
|
|||
}),
|
||||
],
|
||||
esbuildOptions(options) {
|
||||
defineIsBrowser(options, true);
|
||||
defineEnvs(options, { browser: true });
|
||||
},
|
||||
clean: true,
|
||||
}),
|
||||
|
|
@ -53,7 +57,7 @@ export default async () => [
|
|||
}),
|
||||
],
|
||||
esbuildOptions(options) {
|
||||
defineIsBrowser(options, true);
|
||||
defineEnvs(options, { browser: true });
|
||||
},
|
||||
clean: true,
|
||||
}),
|
||||
|
|
@ -74,7 +78,7 @@ export default async () => [
|
|||
minify: true,
|
||||
sourcemap: true,
|
||||
esbuildOptions(options) {
|
||||
defineIsBrowser(options, false);
|
||||
defineEnvs(options, { browser: false });
|
||||
},
|
||||
clean: true,
|
||||
}),
|
||||
|
|
|
|||
|
|
@ -12,6 +12,13 @@
|
|||
call-me-maybe "^1.0.1"
|
||||
js-yaml "^4.1.0"
|
||||
|
||||
"@cspotcode/source-map-support@^0.8.0":
|
||||
version "0.8.1"
|
||||
resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"
|
||||
integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==
|
||||
dependencies:
|
||||
"@jridgewell/trace-mapping" "0.3.9"
|
||||
|
||||
"@esbuild/android-arm64@0.17.19":
|
||||
version "0.17.19"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd"
|
||||
|
|
@ -148,6 +155,11 @@
|
|||
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
|
||||
integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
|
||||
|
||||
"@jridgewell/resolve-uri@^3.0.3":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721"
|
||||
integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
|
||||
|
||||
"@jridgewell/set-array@^1.0.1":
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
|
||||
|
|
@ -163,6 +175,14 @@
|
|||
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
|
||||
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
|
||||
|
||||
"@jridgewell/trace-mapping@0.3.9":
|
||||
version "0.3.9"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
|
||||
integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
|
||||
dependencies:
|
||||
"@jridgewell/resolve-uri" "^3.0.3"
|
||||
"@jridgewell/sourcemap-codec" "^1.4.10"
|
||||
|
||||
"@jridgewell/trace-mapping@^0.3.9":
|
||||
version "0.3.18"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6"
|
||||
|
|
@ -207,6 +227,31 @@
|
|||
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
|
||||
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
|
||||
|
||||
"@tsconfig/node10@^1.0.7":
|
||||
version "1.0.9"
|
||||
resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2"
|
||||
integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==
|
||||
|
||||
"@tsconfig/node12@^1.0.7":
|
||||
version "1.0.11"
|
||||
resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d"
|
||||
integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==
|
||||
|
||||
"@tsconfig/node14@^1.0.0":
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1"
|
||||
integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==
|
||||
|
||||
"@tsconfig/node16@^1.0.2":
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9"
|
||||
integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==
|
||||
|
||||
"@types/chai@^4.3.5":
|
||||
version "4.3.5"
|
||||
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.5.tgz#ae69bcbb1bebb68c4ac0b11e9d8ed04526b3562b"
|
||||
integrity sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==
|
||||
|
||||
"@types/fs-extra@^11.0.1":
|
||||
version "11.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-11.0.1.tgz#f542ec47810532a8a252127e6e105f487e0a6ea5"
|
||||
|
|
@ -216,9 +261,9 @@
|
|||
"@types/node" "*"
|
||||
|
||||
"@types/json-schema@^7.0.6":
|
||||
version "7.0.11"
|
||||
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
|
||||
integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
|
||||
version "7.0.12"
|
||||
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb"
|
||||
integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==
|
||||
|
||||
"@types/jsonfile@*":
|
||||
version "6.1.1"
|
||||
|
|
@ -227,15 +272,20 @@
|
|||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/mocha@^10.0.1":
|
||||
version "10.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.1.tgz#2f4f65bb08bc368ac39c96da7b2f09140b26851b"
|
||||
integrity sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==
|
||||
|
||||
"@types/node@*":
|
||||
version "20.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.1.tgz#e8a83f1aa8b649377bb1fb5d7bac5cb90e784dfe"
|
||||
integrity sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==
|
||||
|
||||
"@types/node@^16.18.32":
|
||||
version "16.18.32"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.32.tgz#5b5becc5da76fc055b2a601c8a3adbf13891227e"
|
||||
integrity sha512-zpnXe4dEz6PrWz9u7dqyRoq9VxwCvoXRPy/ewhmMa1CgEyVmtL1NJPQ2MX+4pf97vetquVKkpiMx0MwI8pjNOw==
|
||||
version "16.18.36"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.36.tgz#0db5d7efc4760d36d0d1d22c85d1a53accd5dc27"
|
||||
integrity sha512-8egDX8dE50XyXWH6C6PRCNkTP106DuUrvdrednFouDSmCi7IOvrqr0frznfZaHifHH/3aq/7a7v9N4wdXMqhBQ==
|
||||
|
||||
abort-controller@^3.0.0:
|
||||
version "3.0.0"
|
||||
|
|
@ -244,6 +294,21 @@ abort-controller@^3.0.0:
|
|||
dependencies:
|
||||
event-target-shim "^5.0.0"
|
||||
|
||||
acorn-walk@^8.1.1:
|
||||
version "8.2.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
|
||||
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
|
||||
|
||||
acorn@^8.4.1:
|
||||
version "8.9.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.9.0.tgz#78a16e3b2bcc198c10822786fa6679e245db5b59"
|
||||
integrity sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==
|
||||
|
||||
ansi-colors@4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
|
||||
integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
|
||||
|
||||
ansi-regex@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
|
||||
|
|
@ -254,7 +319,7 @@ ansi-regex@^6.0.1:
|
|||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
|
||||
integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
|
||||
|
||||
ansi-styles@^4.0.0:
|
||||
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
|
||||
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
|
||||
|
|
@ -279,6 +344,11 @@ anymatch@~3.1.2:
|
|||
normalize-path "^3.0.0"
|
||||
picomatch "^2.0.4"
|
||||
|
||||
arg@^4.1.0:
|
||||
version "4.1.3"
|
||||
resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
|
||||
integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
|
||||
|
||||
argparse@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
|
||||
|
|
@ -297,6 +367,11 @@ array-union@^2.1.0:
|
|||
resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
|
||||
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
|
||||
|
||||
assertion-error@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
|
||||
integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==
|
||||
|
||||
asynckit@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
||||
|
|
@ -358,6 +433,11 @@ braces@^3.0.2, braces@~3.0.2:
|
|||
dependencies:
|
||||
fill-range "^7.0.1"
|
||||
|
||||
browser-stdout@1.3.1:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
|
||||
integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
|
||||
|
||||
buffer@^6.0.3:
|
||||
version "6.0.3"
|
||||
resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6"
|
||||
|
|
@ -391,12 +471,38 @@ call-me-maybe@^1.0.1:
|
|||
resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa"
|
||||
integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==
|
||||
|
||||
camelcase@^6.3.0:
|
||||
camelcase@^6.0.0, camelcase@^6.3.0:
|
||||
version "6.3.0"
|
||||
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
|
||||
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
|
||||
|
||||
chokidar@^3.5.1:
|
||||
chai@^4.3.7:
|
||||
version "4.3.7"
|
||||
resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51"
|
||||
integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==
|
||||
dependencies:
|
||||
assertion-error "^1.1.0"
|
||||
check-error "^1.0.2"
|
||||
deep-eql "^4.1.2"
|
||||
get-func-name "^2.0.0"
|
||||
loupe "^2.3.1"
|
||||
pathval "^1.1.1"
|
||||
type-detect "^4.0.5"
|
||||
|
||||
chalk@^4.1.0:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
|
||||
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
|
||||
dependencies:
|
||||
ansi-styles "^4.1.0"
|
||||
supports-color "^7.1.0"
|
||||
|
||||
check-error@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
|
||||
integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==
|
||||
|
||||
chokidar@3.5.3, chokidar@^3.5.1:
|
||||
version "3.5.3"
|
||||
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
|
||||
integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
|
||||
|
|
@ -411,6 +517,15 @@ chokidar@^3.5.1:
|
|||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
cliui@^7.0.2:
|
||||
version "7.0.4"
|
||||
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
|
||||
integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
|
||||
dependencies:
|
||||
string-width "^4.2.0"
|
||||
strip-ansi "^6.0.0"
|
||||
wrap-ansi "^7.0.0"
|
||||
|
||||
color-convert@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
|
||||
|
|
@ -445,6 +560,11 @@ concat-map@0.0.1:
|
|||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
|
||||
|
||||
create-require@^1.1.0:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
|
||||
integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
|
||||
|
||||
cross-spawn@^7.0.0, cross-spawn@^7.0.3:
|
||||
version "7.0.3"
|
||||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
|
||||
|
|
@ -454,13 +574,30 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.3:
|
|||
shebang-command "^2.0.0"
|
||||
which "^2.0.1"
|
||||
|
||||
debug@^4.3.1:
|
||||
debug@4.3.4, debug@^4.3.1:
|
||||
version "4.3.4"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
|
||||
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
|
||||
dependencies:
|
||||
ms "2.1.2"
|
||||
|
||||
decamelize@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837"
|
||||
integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==
|
||||
|
||||
dedent@^0.7.0:
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
|
||||
integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==
|
||||
|
||||
deep-eql@^4.1.2:
|
||||
version "4.1.3"
|
||||
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d"
|
||||
integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==
|
||||
dependencies:
|
||||
type-detect "^4.0.0"
|
||||
|
||||
deep-equal@^2.2.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.1.tgz#c72ab22f3a7d3503a4ca87dde976fe9978816739"
|
||||
|
|
@ -503,6 +640,16 @@ delayed-stream@~1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
||||
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
|
||||
|
||||
diff@5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b"
|
||||
integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==
|
||||
|
||||
diff@^4.0.1:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
|
||||
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
|
||||
|
||||
dir-glob@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
|
||||
|
|
@ -576,6 +723,16 @@ esbuild@^0.17.6:
|
|||
"@esbuild/win32-ia32" "0.17.19"
|
||||
"@esbuild/win32-x64" "0.17.19"
|
||||
|
||||
escalade@^3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
|
||||
integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
|
||||
|
||||
escape-string-regexp@4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
|
||||
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
|
||||
|
||||
event-target-shim@^5.0.0:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
|
||||
|
|
@ -631,6 +788,19 @@ fill-range@^7.0.1:
|
|||
dependencies:
|
||||
to-regex-range "^5.0.1"
|
||||
|
||||
find-up@5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
|
||||
integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
|
||||
dependencies:
|
||||
locate-path "^6.0.0"
|
||||
path-exists "^4.0.0"
|
||||
|
||||
flat@^5.0.2:
|
||||
version "5.0.2"
|
||||
resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241"
|
||||
integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==
|
||||
|
||||
follow-redirects@^1.15.0:
|
||||
version "1.15.2"
|
||||
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
|
||||
|
|
@ -689,6 +859,16 @@ functions-have-names@^1.2.3:
|
|||
resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
|
||||
integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
|
||||
|
||||
get-caller-file@^2.0.5:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
|
||||
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
|
||||
|
||||
get-func-name@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
|
||||
integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==
|
||||
|
||||
get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82"
|
||||
|
|
@ -723,10 +903,22 @@ glob@7.1.6:
|
|||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
glob@7.2.0:
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
|
||||
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
|
||||
dependencies:
|
||||
fs.realpath "^1.0.0"
|
||||
inflight "^1.0.4"
|
||||
inherits "2"
|
||||
minimatch "^3.0.4"
|
||||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
glob@^10.2.5:
|
||||
version "10.2.6"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-10.2.6.tgz#1e27edbb3bbac055cb97113e27a066c100a4e5e1"
|
||||
integrity sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA==
|
||||
version "10.2.7"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-10.2.7.tgz#9dd2828cd5bc7bd861e7738d91e7113dda41d7d8"
|
||||
integrity sha512-jTKehsravOJo8IJxUGfZILnkvVJM/MOfHRs8QcXolVef2zNI9Tqyy5+SeuOAZd3upViEZQLyFpQhYiHLrMUNmA==
|
||||
dependencies:
|
||||
foreground-child "^3.1.0"
|
||||
jackspeak "^2.0.3"
|
||||
|
|
@ -775,6 +967,11 @@ has-bigints@^1.0.1:
|
|||
resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa"
|
||||
integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==
|
||||
|
||||
has-flag@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
|
||||
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
|
||||
|
||||
has-property-descriptors@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861"
|
||||
|
|
@ -806,6 +1003,11 @@ has@^1.0.3:
|
|||
dependencies:
|
||||
function-bind "^1.1.1"
|
||||
|
||||
he@1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
|
||||
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
|
||||
|
||||
human-signals@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
|
||||
|
|
@ -933,6 +1135,11 @@ is-number@^7.0.0:
|
|||
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
|
||||
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
|
||||
|
||||
is-plain-obj@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
|
||||
integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
|
||||
|
||||
is-regex@^1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
|
||||
|
|
@ -983,6 +1190,11 @@ is-typed-array@^1.1.10:
|
|||
gopd "^1.0.1"
|
||||
has-tostringtag "^1.0.0"
|
||||
|
||||
is-unicode-supported@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
|
||||
integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
|
||||
|
||||
is-weakmap@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2"
|
||||
|
|
@ -1020,7 +1232,7 @@ joycon@^3.0.1:
|
|||
resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03"
|
||||
integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==
|
||||
|
||||
js-yaml@^4.1.0:
|
||||
js-yaml@4.1.0, js-yaml@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
|
||||
integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
|
||||
|
|
@ -1063,15 +1275,42 @@ load-tsconfig@^0.2.3:
|
|||
resolved "https://registry.yarnpkg.com/load-tsconfig/-/load-tsconfig-0.2.5.tgz#453b8cd8961bfb912dea77eb6c168fe8cca3d3a1"
|
||||
integrity sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==
|
||||
|
||||
locate-path@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
|
||||
integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
|
||||
dependencies:
|
||||
p-locate "^5.0.0"
|
||||
|
||||
lodash.sortby@^4.7.0:
|
||||
version "4.7.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
|
||||
integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==
|
||||
|
||||
log-symbols@4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
|
||||
integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
|
||||
dependencies:
|
||||
chalk "^4.1.0"
|
||||
is-unicode-supported "^0.1.0"
|
||||
|
||||
loupe@^2.3.1:
|
||||
version "2.3.6"
|
||||
resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53"
|
||||
integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==
|
||||
dependencies:
|
||||
get-func-name "^2.0.0"
|
||||
|
||||
lru-cache@^9.1.1:
|
||||
version "9.1.1"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-9.1.1.tgz#c58a93de58630b688de39ad04ef02ef26f1902f1"
|
||||
integrity sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==
|
||||
version "9.1.2"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-9.1.2.tgz#255fdbc14b75589d6d0e73644ca167a8db506835"
|
||||
integrity sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==
|
||||
|
||||
make-error@^1.1.1:
|
||||
version "1.3.6"
|
||||
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
|
||||
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
|
||||
|
||||
merge-stream@^2.0.0:
|
||||
version "2.0.0"
|
||||
|
|
@ -1108,6 +1347,13 @@ mimic-fn@^2.1.0:
|
|||
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
|
||||
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
|
||||
|
||||
minimatch@5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b"
|
||||
integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==
|
||||
dependencies:
|
||||
brace-expansion "^2.0.1"
|
||||
|
||||
minimatch@^3.0.4:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
|
||||
|
|
@ -1132,11 +1378,43 @@ minimist@^1.2.5:
|
|||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-6.0.2.tgz#542844b6c4ce95b202c0995b0a471f1229de4c81"
|
||||
integrity sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==
|
||||
|
||||
mocha@^10.2.0:
|
||||
version "10.2.0"
|
||||
resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8"
|
||||
integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==
|
||||
dependencies:
|
||||
ansi-colors "4.1.1"
|
||||
browser-stdout "1.3.1"
|
||||
chokidar "3.5.3"
|
||||
debug "4.3.4"
|
||||
diff "5.0.0"
|
||||
escape-string-regexp "4.0.0"
|
||||
find-up "5.0.0"
|
||||
glob "7.2.0"
|
||||
he "1.2.0"
|
||||
js-yaml "4.1.0"
|
||||
log-symbols "4.1.0"
|
||||
minimatch "5.0.1"
|
||||
ms "2.1.3"
|
||||
nanoid "3.3.3"
|
||||
serialize-javascript "6.0.0"
|
||||
strip-json-comments "3.1.1"
|
||||
supports-color "8.1.1"
|
||||
workerpool "6.2.1"
|
||||
yargs "16.2.0"
|
||||
yargs-parser "20.2.4"
|
||||
yargs-unparser "2.0.0"
|
||||
|
||||
ms@2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
|
||||
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
|
||||
|
||||
ms@2.1.3:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
||||
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
||||
|
||||
mz@^2.7.0:
|
||||
version "2.7.0"
|
||||
resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
|
||||
|
|
@ -1146,6 +1424,11 @@ mz@^2.7.0:
|
|||
object-assign "^4.0.1"
|
||||
thenify-all "^1.0.0"
|
||||
|
||||
nanoid@3.3.3:
|
||||
version "3.3.3"
|
||||
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25"
|
||||
integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==
|
||||
|
||||
neo-async@^2.6.0:
|
||||
version "2.6.2"
|
||||
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
|
||||
|
|
@ -1238,6 +1521,25 @@ openapi-typescript-codegen@^0.24.0:
|
|||
handlebars "^4.7.7"
|
||||
json-schema-ref-parser "^9.0.9"
|
||||
|
||||
p-limit@^3.0.2:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
|
||||
integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
|
||||
dependencies:
|
||||
yocto-queue "^0.1.0"
|
||||
|
||||
p-locate@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
|
||||
integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
|
||||
dependencies:
|
||||
p-limit "^3.0.2"
|
||||
|
||||
path-exists@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
|
||||
integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
|
||||
|
||||
path-is-absolute@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
||||
|
|
@ -1261,6 +1563,11 @@ path-type@^4.0.0:
|
|||
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
|
||||
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
|
||||
|
||||
pathval@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d"
|
||||
integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==
|
||||
|
||||
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
|
||||
|
|
@ -1297,9 +1604,9 @@ pino@^8.14.1:
|
|||
thread-stream "^2.0.0"
|
||||
|
||||
pirates@^4.0.1:
|
||||
version "4.0.5"
|
||||
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b"
|
||||
integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==
|
||||
version "4.0.6"
|
||||
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9"
|
||||
integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
|
||||
|
||||
postcss-load-config@^3.0.1:
|
||||
version "3.1.4"
|
||||
|
|
@ -1339,6 +1646,13 @@ quick-format-unescaped@^4.0.3:
|
|||
resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7"
|
||||
integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==
|
||||
|
||||
randombytes@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
|
||||
integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
|
||||
dependencies:
|
||||
safe-buffer "^5.1.0"
|
||||
|
||||
readable-stream@^4.0.0:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.4.0.tgz#55ce132d60a988c460d75c631e9ccf6a7229b468"
|
||||
|
|
@ -1370,6 +1684,11 @@ regexp.prototype.flags@^1.5.0:
|
|||
define-properties "^1.2.0"
|
||||
functions-have-names "^1.2.3"
|
||||
|
||||
require-directory@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
|
||||
integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
|
||||
|
||||
resolve-from@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
|
||||
|
|
@ -1388,9 +1707,9 @@ rimraf@^5.0.1:
|
|||
glob "^10.2.5"
|
||||
|
||||
rollup@^3.2.5:
|
||||
version "3.23.0"
|
||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.23.0.tgz#b8d6146dac4bf058ee817f92820988e9b358b564"
|
||||
integrity sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ==
|
||||
version "3.25.1"
|
||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.25.1.tgz#9fff79d22ff1a904b2b595a2fb9bc3793cb987d8"
|
||||
integrity sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
|
|
@ -1406,11 +1725,23 @@ run-parallel@^1.1.9:
|
|||
dependencies:
|
||||
queue-microtask "^1.2.2"
|
||||
|
||||
safe-buffer@^5.1.0:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
|
||||
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
|
||||
|
||||
safe-stable-stringify@^2.3.1:
|
||||
version "2.4.3"
|
||||
resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886"
|
||||
integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==
|
||||
|
||||
serialize-javascript@6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
|
||||
integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
|
||||
dependencies:
|
||||
randombytes "^2.1.0"
|
||||
|
||||
shebang-command@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
|
||||
|
|
@ -1478,8 +1809,7 @@ stop-iteration-iterator@^1.0.0:
|
|||
dependencies:
|
||||
internal-slot "^1.0.4"
|
||||
|
||||
"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0:
|
||||
name string-width-cjs
|
||||
"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0:
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
||||
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
||||
|
|
@ -1498,7 +1828,6 @@ string-width@^5.0.1, string-width@^5.1.2:
|
|||
strip-ansi "^7.0.1"
|
||||
|
||||
"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||
name strip-ansi-cjs
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||
|
|
@ -1506,9 +1835,9 @@ string-width@^5.0.1, string-width@^5.1.2:
|
|||
ansi-regex "^5.0.1"
|
||||
|
||||
strip-ansi@^7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2"
|
||||
integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==
|
||||
version "7.1.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
|
||||
integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
|
||||
dependencies:
|
||||
ansi-regex "^6.0.1"
|
||||
|
||||
|
|
@ -1517,6 +1846,11 @@ strip-final-newline@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
|
||||
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
|
||||
|
||||
strip-json-comments@3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
|
||||
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
|
||||
|
||||
sucrase@^3.20.3:
|
||||
version "3.32.0"
|
||||
resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.32.0.tgz#c4a95e0f1e18b6847127258a75cf360bc568d4a7"
|
||||
|
|
@ -1530,6 +1864,20 @@ sucrase@^3.20.3:
|
|||
pirates "^4.0.1"
|
||||
ts-interface-checker "^0.1.9"
|
||||
|
||||
supports-color@8.1.1:
|
||||
version "8.1.1"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
|
||||
integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
|
||||
dependencies:
|
||||
has-flag "^4.0.0"
|
||||
|
||||
supports-color@^7.1.0:
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
|
||||
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
|
||||
dependencies:
|
||||
has-flag "^4.0.0"
|
||||
|
||||
thenify-all@^1.0.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
|
||||
|
|
@ -1575,6 +1923,25 @@ ts-interface-checker@^0.1.9:
|
|||
resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
|
||||
integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
|
||||
|
||||
ts-node@^10.9.1:
|
||||
version "10.9.1"
|
||||
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b"
|
||||
integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==
|
||||
dependencies:
|
||||
"@cspotcode/source-map-support" "^0.8.0"
|
||||
"@tsconfig/node10" "^1.0.7"
|
||||
"@tsconfig/node12" "^1.0.7"
|
||||
"@tsconfig/node14" "^1.0.0"
|
||||
"@tsconfig/node16" "^1.0.2"
|
||||
acorn "^8.4.1"
|
||||
acorn-walk "^8.1.1"
|
||||
arg "^4.1.0"
|
||||
create-require "^1.1.0"
|
||||
diff "^4.0.1"
|
||||
make-error "^1.1.1"
|
||||
v8-compile-cache-lib "^3.0.1"
|
||||
yn "3.1.1"
|
||||
|
||||
tsup@^6.7.0:
|
||||
version "6.7.0"
|
||||
resolved "https://registry.yarnpkg.com/tsup/-/tsup-6.7.0.tgz#416f350f32a07b6ae86792ad7e52b0cafc566d64"
|
||||
|
|
@ -1595,10 +1962,15 @@ tsup@^6.7.0:
|
|||
sucrase "^3.20.3"
|
||||
tree-kill "^1.2.2"
|
||||
|
||||
type-detect@^4.0.0, type-detect@^4.0.5:
|
||||
version "4.0.8"
|
||||
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
|
||||
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
|
||||
|
||||
typescript@^5.0.3:
|
||||
version "5.0.4"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b"
|
||||
integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==
|
||||
version "5.1.3"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.3.tgz#8d84219244a6b40b6fb2b33cc1c062f715b9e826"
|
||||
integrity sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==
|
||||
|
||||
uglify-js@^3.1.4:
|
||||
version "3.17.4"
|
||||
|
|
@ -1615,6 +1987,11 @@ uuid@^9.0.0:
|
|||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5"
|
||||
integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==
|
||||
|
||||
v8-compile-cache-lib@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
|
||||
integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
|
||||
|
||||
webidl-conversions@^4.0.2:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
|
||||
|
|
@ -1674,7 +2051,12 @@ wordwrap@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
|
||||
integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==
|
||||
|
||||
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
|
||||
workerpool@6.2.1:
|
||||
version "6.2.1"
|
||||
resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343"
|
||||
integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==
|
||||
|
||||
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
||||
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
||||
|
|
@ -1697,7 +2079,55 @@ wrappy@1:
|
|||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
|
||||
|
||||
y18n@^5.0.5:
|
||||
version "5.0.8"
|
||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
|
||||
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
|
||||
|
||||
yaml@^1.10.2:
|
||||
version "1.10.2"
|
||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
|
||||
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
|
||||
|
||||
yargs-parser@20.2.4:
|
||||
version "20.2.4"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
|
||||
integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==
|
||||
|
||||
yargs-parser@^20.2.2:
|
||||
version "20.2.9"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
|
||||
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
|
||||
|
||||
yargs-unparser@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb"
|
||||
integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==
|
||||
dependencies:
|
||||
camelcase "^6.0.0"
|
||||
decamelize "^4.0.0"
|
||||
flat "^5.0.2"
|
||||
is-plain-obj "^2.1.0"
|
||||
|
||||
yargs@16.2.0:
|
||||
version "16.2.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
|
||||
integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
|
||||
dependencies:
|
||||
cliui "^7.0.2"
|
||||
escalade "^3.1.1"
|
||||
get-caller-file "^2.0.5"
|
||||
require-directory "^2.1.1"
|
||||
string-width "^4.2.0"
|
||||
y18n "^5.0.5"
|
||||
yargs-parser "^20.2.2"
|
||||
|
||||
yn@3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
|
||||
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
|
||||
|
||||
yocto-queue@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
||||
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@types/glob": "^7.2.0",
|
||||
"@types/mocha": "^9.1.1",
|
||||
"@types/mocha": "^10.0.1",
|
||||
"@types/node": "16.x",
|
||||
"@types/vscode": "^1.70.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.31.0",
|
||||
|
|
|
|||
|
|
@ -205,10 +205,10 @@
|
|||
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca"
|
||||
integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==
|
||||
|
||||
"@types/mocha@^9.1.1":
|
||||
version "9.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4"
|
||||
integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==
|
||||
"@types/mocha@^10.0.1":
|
||||
version "10.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.1.tgz#2f4f65bb08bc368ac39c96da7b2f09140b26851b"
|
||||
integrity sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==
|
||||
|
||||
"@types/node@*":
|
||||
version "20.2.5"
|
||||
|
|
|
|||
Loading…
Reference in New Issue