From ac0ef277036149865f0ff0b8c9349a6a324e1d47 Mon Sep 17 00:00:00 2001 From: thenameisvicky Date: Sun, 12 Oct 2025 18:35:13 +0530 Subject: [PATCH 1/2] [TREE] - Custom Generic heap and root builder --- dist/modules/engineeringDrills/binaryTree.js | 17 +-- dist/modules/engineeringDrills/class.js | 86 ++++++++++++++ dist/modules/engineeringDrills/helper.js | 23 +++- .../engineeringDrills/helperClasses.js | 94 +++++++++++++++ dist/modules/engineeringDrills/index.js | 25 ++-- dist/modules/engineeringDrills/taskManager.js | 90 +------------- src/modules/engineeringDrills/binaryTree.ts | 35 ++---- src/modules/engineeringDrills/helper.ts | 20 +++- .../engineeringDrills/helperClasses.ts | 110 ++++++++++++++++++ src/modules/engineeringDrills/index.ts | 28 ++--- src/modules/engineeringDrills/taskManager.ts | 109 ++--------------- 11 files changed, 376 insertions(+), 261 deletions(-) create mode 100644 dist/modules/engineeringDrills/class.js create mode 100644 dist/modules/engineeringDrills/helperClasses.js create mode 100644 src/modules/engineeringDrills/helperClasses.ts diff --git a/dist/modules/engineeringDrills/binaryTree.js b/dist/modules/engineeringDrills/binaryTree.js index ecdbba5..de86694 100644 --- a/dist/modules/engineeringDrills/binaryTree.js +++ b/dist/modules/engineeringDrills/binaryTree.js @@ -1,15 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BinaryTree = void 0; -const _1 = require("."); -//Construct Tree -const root = new _1.TreeNode(1); -root.left = new _1.TreeNode(2); -root.right = new _1.TreeNode(3); -root.left.left = new _1.TreeNode(4); -root.left.right = new _1.TreeNode(5); -root.right.right = new _1.TreeNode(6); -//Traverse the Tree class BinaryTree { constructor(root = null) { this.root = root; @@ -17,7 +8,7 @@ class BinaryTree { preOrder(node = this.root, result) { if (!node) return result; - result.push(node.val); + result.push(node.value); this.preOrder(node.left, result); this.preOrder(node.right, result); return result; @@ -27,14 +18,14 @@ class BinaryTree { return result; this.postOrder(node.right, result); this.postOrder(node.left, result); - result.push(node.val); + result.push(node.value); return result; } inOrder(node = this.root, result) { if (!node) return result; this.inOrder(node.left, result); - result.push(node.val); + result.push(node.value); this.inOrder(node.right, result); return result; } @@ -45,7 +36,7 @@ class BinaryTree { queue.push(node); while (queue.length > 0) { const currentNode = queue.shift(); - result.push(currentNode ? currentNode.val : 0); + result.push(currentNode ? currentNode.value : 0); if (currentNode?.left) queue.push(currentNode.left); if (currentNode?.right) diff --git a/dist/modules/engineeringDrills/class.js b/dist/modules/engineeringDrills/class.js new file mode 100644 index 0000000..e1ae618 --- /dev/null +++ b/dist/modules/engineeringDrills/class.js @@ -0,0 +1,86 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.heap = void 0; +class heap { + //Class constructor + constructor(compareFn) { + this.data = []; + this.compare = compareFn; + } + insert(element) { + this.data.push(element); + this.bubbleUp(this.data.length - 1); + } + peek() { + return this.data[0]; + } + remove(element) { + const index = this.data.findIndex((elem) => elem == element); + if (index == -1) + return; + const last = this.data.pop(); + if (index < this.data.length && last) { + this.data[index] = last; + this.bubbleUp(index); + this.bubbleDown(index); + } + } + poll() { + if (this.data.length === 0) + return undefined; + const root = this.data[0]; + const last = this.data.pop(); + if (this.data.length > 0 && last) { + this.data[0] = last; + this.bubbleDown(0); + } + return root; + } + size() { + return this.data.length; + } + //Private Helpers + parent(index) { + return Math.floor((index - 1) / 2); + } + left(index) { + return index * 2 + 1; + } + right(index) { + return index * 2 + 2; + } + bubbleUp(index) { + while (index > 0) { + const parent = this.parent(index); + if (this.compare(this.data[index], this.data[parent]) < 0) { + [this.data[index], this.data[parent]] = [this.data[parent], this.data[index]]; + index = parent; + } + else { + break; + } + } + } + bubbleDown(index) { + const length = this.data.length; + while (true) { + const leftIndex = this.left(index); + const rightIndex = this.right(index); + let effecientIndex = index; + if (leftIndex < length && this.compare(this.data[leftIndex], this.data[effecientIndex]) < 0) { + effecientIndex = leftIndex; + } + if (rightIndex < length && this.compare(this.data[rightIndex], this.data[effecientIndex]) < 0) { + effecientIndex = rightIndex; + } + if (effecientIndex !== index) { + [this.data[index], this.data[effecientIndex]] = [this.data[effecientIndex], this.data[index]]; + index = effecientIndex; + } + else { + break; + } + } + } +} +exports.heap = heap; diff --git a/dist/modules/engineeringDrills/helper.js b/dist/modules/engineeringDrills/helper.js index 4b695f7..ca331b9 100644 --- a/dist/modules/engineeringDrills/helper.js +++ b/dist/modules/engineeringDrills/helper.js @@ -1,5 +1,24 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.getTree = getTree; -function getTree(node, count) { +exports.getRoot = getRoot; +const helperClasses_1 = require("./helperClasses"); +function getRoot(array) { + if (!array.length || array[0] == null) + return null; + const root = new helperClasses_1.TreeNode(array[0]); + const queue = [root]; + let i = 1; + while (i < queue.length) { + const current = queue.shift(); + if (!current) + continue; + const left = array[i++], right = array[i++]; + if (left && right) { + current.left = new helperClasses_1.TreeNode(left); + current.right = new helperClasses_1.TreeNode(right); + queue.push(current.left); + queue.push(current.right); + } + } + return root; } diff --git a/dist/modules/engineeringDrills/helperClasses.js b/dist/modules/engineeringDrills/helperClasses.js new file mode 100644 index 0000000..3b3d613 --- /dev/null +++ b/dist/modules/engineeringDrills/helperClasses.js @@ -0,0 +1,94 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.heap = exports.TreeNode = void 0; +class TreeNode { + constructor(val) { + this.value = val; + this.left = null; + this.right = null; + } +} +exports.TreeNode = TreeNode; +class heap { + //Class constructor + constructor(compareFn) { + this.data = []; + this.compare = compareFn; + } + insert(element) { + this.data.push(element); + this.bubbleUp(this.data.length - 1); + } + peek() { + return this.data[0]; + } + remove(element) { + const index = this.data.findIndex((elem) => elem == element); + if (index == -1) + return; + const last = this.data.pop(); + if (index < this.data.length && last) { + this.data[index] = last; + this.bubbleUp(index); + this.bubbleDown(index); + } + } + poll() { + if (this.data.length === 0) + return undefined; + const root = this.data[0]; + const last = this.data.pop(); + if (this.data.length > 0 && last) { + this.data[0] = last; + this.bubbleDown(0); + } + return root; + } + size() { + return this.data.length; + } + //Private Helpers + parent(index) { + return Math.floor((index - 1) / 2); + } + left(index) { + return index * 2 + 1; + } + right(index) { + return index * 2 + 2; + } + bubbleUp(index) { + while (index > 0) { + const parent = this.parent(index); + if (this.compare(this.data[index], this.data[parent]) < 0) { + [this.data[index], this.data[parent]] = [this.data[parent], this.data[index]]; + index = parent; + } + else { + break; + } + } + } + bubbleDown(index) { + const length = this.data.length; + while (true) { + const leftIndex = this.left(index); + const rightIndex = this.right(index); + let effecientIndex = index; + if (leftIndex < length && this.compare(this.data[leftIndex], this.data[effecientIndex]) < 0) { + effecientIndex = leftIndex; + } + if (rightIndex < length && this.compare(this.data[rightIndex], this.data[effecientIndex]) < 0) { + effecientIndex = rightIndex; + } + if (effecientIndex !== index) { + [this.data[index], this.data[effecientIndex]] = [this.data[effecientIndex], this.data[index]]; + index = effecientIndex; + } + else { + break; + } + } + } +} +exports.heap = heap; diff --git a/dist/modules/engineeringDrills/index.js b/dist/modules/engineeringDrills/index.js index f9df505..626c2fb 100644 --- a/dist/modules/engineeringDrills/index.js +++ b/dist/modules/engineeringDrills/index.js @@ -1,29 +1,22 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.TreeNode = void 0; const binaryTree_1 = require("./binaryTree"); +const helperClasses_1 = require("./helperClasses"); const taskManager_1 = require("./taskManager"); -class TreeNode { - constructor(val) { - this.val = val; - this.left = null; - this.right = null; - } -} -exports.TreeNode = TreeNode; //Construct Tree -const root = new TreeNode(1); -root.left = new TreeNode(2); -root.right = new TreeNode(3); -root.left.left = new TreeNode(4); -root.left.right = new TreeNode(5); -root.right.right = new TreeNode(6); +const root = new helperClasses_1.TreeNode(1); +root.left = new helperClasses_1.TreeNode(2); +root.right = new helperClasses_1.TreeNode(3); +root.left.left = new helperClasses_1.TreeNode(4); +root.left.right = new helperClasses_1.TreeNode(5); +root.right.right = new helperClasses_1.TreeNode(6); //class instances const tree = new binaryTree_1.BinaryTree(); const manager = new taskManager_1.TaskManager([ [1, 10, 5], [2, 11, 10], - [3, 12, 3] + [3, 12, 3], + [0, 21, 10] ]); //Function calls const result = tree.levelOrder(root, []); diff --git a/dist/modules/engineeringDrills/taskManager.js b/dist/modules/engineeringDrills/taskManager.js index 90f1a51..e675757 100644 --- a/dist/modules/engineeringDrills/taskManager.js +++ b/dist/modules/engineeringDrills/taskManager.js @@ -1,94 +1,14 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TaskManager = void 0; -class maxHeap { - constructor(compareFn) { - this.data = []; - this.compare = compareFn; - } - parent(i) { - return Math.floor((i - 1) / 2); - } - left(i) { - return 2 * i + 1; - } - right(i) { - return 2 * i + 2; - } - insert(task) { - this.data.push(task); - this.bubbleUp(this.data.length - 1); - } - peek() { - return this.data.length ? this.data[0] : null; - } - extract() { - if (!this.data.length) - return null; - const top = this.data[0]; - const last = this.data.pop(); - if (this.data.length > 0 && last) { - this.data[0] = last; - this.bubbledDown(0); - } - return top; - } - remove(taskId) { - const index = this.data.findIndex((task) => task.taskId == taskId); - if (index === -1) - return; - const last = this.data.pop(); - if (index < this.data.length && last) { - this.data[index] = last; - this.bubbleUp(index); - this.bubbledDown(index); - } - } - size() { - return this.data.length; - } - //Bubbling up and down to maintain the Heap - bubbleUp(index) { - while (index > 0) { - const parentIndex = this.parent(index); - if (this.compare(this.data[index], this.data[parentIndex]) > 0) { - [this.data[index], this.data[parentIndex]] = [this.data[parentIndex], this.data[index]]; - index = parentIndex; - } - else { - break; - } - } - } - bubbledDown(index) { - const length = this.data.length; - while (true) { - let largest = index; - const left = this.left(index); - const right = this.right(index); - if (left < length && this.compare(this.data[index], this.data[largest]) > 0) { - largest = left; - } - if (right < length && this.compare(this.data[right], this.data[largest]) > 0) { - largest = right; - } - if (largest != index) { - [this.data[index], this.data[largest]] = [this.data[largest], this.data[index]]; - index = largest; - } - else { - break; - } - } - } -} +const helperClasses_1 = require("./helperClasses"); class TaskManager { constructor(tasks) { this.task = {}; - this.heap = new maxHeap((a, b) => { + this.heap = new helperClasses_1.heap((a, b) => { if (a.priority !== b.priority) - return a.priority - b.priority; - return a.taskId - b.taskId; + return b.priority - a.priority; + return b.taskId - a.taskId; }); for (let [userId, taskId, priority] of tasks) { const taskWithVersion = { userId, taskId, priority, version: 1 }; @@ -112,7 +32,7 @@ class TaskManager { } execTop() { while (this.heap.size()) { - const top = this.heap.extract(); + const top = this.heap.poll(); if (!top) return -1; const valid = this.task[top.taskId]; diff --git a/src/modules/engineeringDrills/binaryTree.ts b/src/modules/engineeringDrills/binaryTree.ts index 67e4ae3..16eef45 100644 --- a/src/modules/engineeringDrills/binaryTree.ts +++ b/src/modules/engineeringDrills/binaryTree.ts @@ -1,54 +1,43 @@ -import { TreeNode } from "."; - - -//Construct Tree -const root = new TreeNode(1); -root.left = new TreeNode(2); -root.right = new TreeNode(3); -root.left.left = new TreeNode(4); -root.left.right = new TreeNode(5); -root.right.right = new TreeNode(6); - -//Traverse the Tree +import { TreeNode } from "./helperClasses"; export class BinaryTree { - private root: TreeNode | null; + private root: TreeNode | null; - constructor(root: TreeNode | null = null) { + constructor(root: TreeNode | null = null) { this.root = root; } - preOrder(node: TreeNode | null = this.root, result: Array): Array | undefined { + preOrder(node: TreeNode | null = this.root, result: Array): Array | undefined { if (!node) return result; - result.push(node.val); + result.push(node.value); this.preOrder(node.left, result); this.preOrder(node.right, result); return result; } - postOrder(node: TreeNode | null = this.root, result: Array): Array | undefined { + postOrder(node: TreeNode | null = this.root, result: Array): Array | undefined { if (!node) return result; this.postOrder(node.right, result); this.postOrder(node.left, result); - result.push(node.val); + result.push(node.value); return result; } - inOrder(node: TreeNode | null = this.root, result: Array): Array | undefined { + inOrder(node: TreeNode | null = this.root, result: Array): Array | undefined { if (!node) return result; this.inOrder(node.left, result); - result.push(node.val); + result.push(node.value); this.inOrder(node.right, result); return result; } - levelOrder(node: TreeNode | null = this.root, result: Array): Array | undefined { + levelOrder(node: TreeNode | null = this.root, result: Array): Array | undefined { if (!node) return result; - const queue: Array = []; + const queue: Array> = []; queue.push(node); while (queue.length > 0) { const currentNode = queue.shift(); - result.push(currentNode ? currentNode.val : 0); + result.push(currentNode ? currentNode.value : 0); if (currentNode?.left) queue.push(currentNode.left); if (currentNode?.right) queue.push(currentNode.right); } diff --git a/src/modules/engineeringDrills/helper.ts b/src/modules/engineeringDrills/helper.ts index d2604a1..e24c896 100644 --- a/src/modules/engineeringDrills/helper.ts +++ b/src/modules/engineeringDrills/helper.ts @@ -1,5 +1,23 @@ +import { TreeNode } from "./helperClasses"; +export function getRoot(array: Array): TreeNode | null { + if (!array.length || array[0] == null) return null; -export function getTree(node: T, count: number) { + const root = new TreeNode(array[0]); + const queue = [root]; + let i = 1; + while (i < queue.length) { + const current = queue.shift(); + if (!current) continue; + const left = array[i++], right = array[i++]; + if (left && right) { + current.left = new TreeNode(left); + current.right = new TreeNode(right); + queue.push(current.left); + queue.push(current.right); + } + } + + return root; } \ No newline at end of file diff --git a/src/modules/engineeringDrills/helperClasses.ts b/src/modules/engineeringDrills/helperClasses.ts new file mode 100644 index 0000000..e764b8a --- /dev/null +++ b/src/modules/engineeringDrills/helperClasses.ts @@ -0,0 +1,110 @@ +export class TreeNode { + value: T; + left: TreeNode | null; + right: TreeNode | null; + + constructor(val: T) { + this.value = val; + this.left = null; + this.right = null; + } +} + +export class heap { + private data: T[]; + private compare: (a: T, b: T) => number; + + //Class constructor + constructor(compareFn: (a: T, b: T) => number) { + this.data = []; + this.compare = compareFn; + } + + insert(element: T): void { + this.data.push(element); + this.bubbleUp(this.data.length - 1); + } + + peek(): T { + return this.data[0]; + } + + remove(element: T): void { + const index = this.data.findIndex((elem) => elem == element); + if (index == -1) return; + + const last = this.data.pop(); + if (index < this.data.length && last) { + this.data[index] = last; + this.bubbleUp(index); + this.bubbleDown(index); + } + } + + poll(): T | undefined { + if (this.data.length === 0) return undefined; + const root = this.data[0]; + const last = this.data.pop(); + + if (this.data.length > 0 && last) { + this.data[0] = last; + this.bubbleDown(0); + } + + return root; + } + + size(): number { + return this.data.length; + } + + //Private Helpers + private parent(index: number): number { + return Math.floor((index - 1) / 2); + } + + private left(index: number): number { + return index * 2 + 1; + } + + private right(index: number): number { + return index * 2 + 2; + } + + private bubbleUp(index: number): void { + while (index > 0) { + const parent = this.parent(index); + if (this.compare(this.data[index], this.data[parent]) < 0) { + [this.data[index], this.data[parent]] = [this.data[parent], this.data[index]]; + index = parent; + } else { + break; + } + } + } + + private bubbleDown(index: number): void { + const length = this.data.length; + while (true) { + const leftIndex = this.left(index); + const rightIndex = this.right(index); + let effecientIndex = index; + + if (leftIndex < length && this.compare(this.data[leftIndex], this.data[effecientIndex]) < 0) { + effecientIndex = leftIndex; + } + + if (rightIndex < length && this.compare(this.data[rightIndex], this.data[effecientIndex]) < 0) { + effecientIndex = rightIndex; + } + + if (effecientIndex !== index) { + [this.data[index], this.data[effecientIndex]] = [this.data[effecientIndex], this.data[index]]; + index = effecientIndex; + } else { + break; + } + } + } + +} diff --git a/src/modules/engineeringDrills/index.ts b/src/modules/engineeringDrills/index.ts index 4f321aa..1909bbe 100644 --- a/src/modules/engineeringDrills/index.ts +++ b/src/modules/engineeringDrills/index.ts @@ -1,32 +1,22 @@ import { BinaryTree } from "./binaryTree"; +import { TreeNode } from "./helperClasses"; import { TaskManager } from "./taskManager"; -export class TreeNode { - val: number; - left: TreeNode | null; - right: TreeNode | null; - - constructor(val: number) { - this.val = val; - this.left = null; - this.right = null; - } -} - //Construct Tree -const root = new TreeNode(1); -root.left = new TreeNode(2); -root.right = new TreeNode(3); -root.left.left = new TreeNode(4); -root.left.right = new TreeNode(5); -root.right.right = new TreeNode(6); +const root = new TreeNode(1); +root.left = new TreeNode(2); +root.right = new TreeNode(3); +root.left.left = new TreeNode(4); +root.left.right = new TreeNode(5); +root.right.right = new TreeNode(6); //class instances const tree = new BinaryTree(); const manager = new TaskManager([ [1, 10, 5], [2, 11, 10], - [3, 12, 3] + [3, 12, 3], + [0, 21, 10] ]); //Function calls diff --git a/src/modules/engineeringDrills/taskManager.ts b/src/modules/engineeringDrills/taskManager.ts index 6648045..521e4de 100644 --- a/src/modules/engineeringDrills/taskManager.ts +++ b/src/modules/engineeringDrills/taskManager.ts @@ -1,114 +1,19 @@ +import { heap } from "./helperClasses"; + type task = { userId: number; taskId: number; priority: number; version: number; } - -class maxHeap { - private data: task[]; - private compare: (a: task, b: task) => number; - - constructor(compareFn: (a: task, b: task) => number) { - this.data = []; - this.compare = compareFn; - } - - private parent(i: number): number { - return Math.floor((i - 1) / 2); - } - - private left(i: number): number { - return 2 * i + 1; - } - - private right(i: number): number { - return 2 * i + 2; - } - - insert(task: task): void { - this.data.push(task); - this.bubbleUp(this.data.length - 1); - } - - peek(): task | null { - return this.data.length ? this.data[0] : null; - } - - extract(): task | null { - if (!this.data.length) return null; - const top = this.data[0]; - const last = this.data.pop(); - if (this.data.length > 0 && last) { - this.data[0] = last; - this.bubbledDown(0); - } - - return top; - } - - remove(taskId: number): void { - const index = this.data.findIndex((task) => task.taskId == taskId); - if (index === -1) return; - - const last = this.data.pop(); - if (index < this.data.length && last) { - this.data[index] = last; - this.bubbleUp(index); - this.bubbledDown(index); - } - } - - size(): number { - return this.data.length; - } - - //Bubbling up and down to maintain the Heap - bubbleUp(index: number): void { - while (index > 0) { - const parentIndex = this.parent(index); - if (this.compare(this.data[index], this.data[parentIndex]) > 0) { - [this.data[index], this.data[parentIndex]] = [this.data[parentIndex], this.data[index]]; - index = parentIndex; - } else { - break; - } - } - } - - bubbledDown(index: number): void { - const length = this.data.length; - while (true) { - let largest = index; - const left = this.left(index); - const right = this.right(index); - - if (left < length && this.compare(this.data[index], this.data[largest]) > 0) { - largest = left; - } - - if (right < length && this.compare(this.data[right], this.data[largest]) > 0) { - largest = right; - } - - if (largest != index) { - [this.data[index], this.data[largest]] = [this.data[largest], this.data[index]]; - index = largest; - } else { - break; - } - } - } -} - export class TaskManager { private task: Record; - private heap: maxHeap; + private heap: heap; constructor(tasks: number[][]) { this.task = {}; - this.heap = new maxHeap((a, b) => { - if (a.priority !== b.priority) return a.priority - b.priority; - return a.taskId - b.taskId; + this.heap = new heap((a, b) => { + if (a.priority !== b.priority) return b.priority - a.priority; + return b.taskId - a.taskId; }) for (let [userId, taskId, priority] of tasks) { @@ -139,7 +44,7 @@ export class TaskManager { execTop(): number { while (this.heap.size()) { - const top = this.heap.extract(); + const top = this.heap.poll(); if (!top) return -1; From eed2bed07eac5bc7125bba608b915c06f56d0ccf Mon Sep 17 00:00:00 2001 From: thenameisvicky Date: Sun, 12 Oct 2025 19:31:37 +0530 Subject: [PATCH 2/2] [CHORE] - Added Lint rules and Ran Lint for All files --- .eslintrc.json | 28 + dist/Executors/problemSolvingExec.js | 2 +- dist/Executors/types/arrays.js | 6 +- dist/modules/engineeringDrills/helper.js | 3 +- .../engineeringDrills/helperClasses.js | 14 +- dist/modules/engineeringDrills/index.js | 6 +- dist/modules/engineeringDrills/taskManager.js | 6 +- .../arrayManipulation/permutations.js | 12 +- .../arrayManipulation/sumZero.js | 6 +- .../zeroFilledSubArrlength.js | 9 +- .../hashMap/countMaximumFrequence.js | 9 +- .../leetCodeStyle/hashMap/groupAnagrams.js | 2 +- .../leetCodeStyle/hashMap/singleNumber.js | 2 +- dist/modules/leetCodeStyle/hashMap/twoSum2.js | 4 +- dist/modules/leetCodeStyle/index.js | 32 +- .../pointers/containerWithMostWater.js | 4 +- .../modules/leetCodeStyle/pointers/fourSum.js | 10 +- .../pointers/hillsAndValleysCount.js | 6 +- .../leetCodeStyle/pointers/threeSum.js | 10 +- .../leetCodeStyle/pointers/threeSumClosest.js | 2 +- .../search/findInsertPosition.js | 7 +- .../search/rotatedArraySearch.js | 4 +- .../slidingWindow/longSubStringNoDup.js | 4 +- .../slidingWindow/longestCommonPrefix.js | 6 +- .../slidingWindow/minSizeSubarraySum.js | 4 +- package-lock.json | 3900 ++++++++++++++++- package.json | 17 +- src/Executors/problemSolvingExec.ts | 14 +- src/Executors/treeNodes.ts | 3 +- src/Executors/types/arrays.ts | 24 +- src/modules/engineeringDrills/binaryTree.ts | 78 +- src/modules/engineeringDrills/helper.ts | 36 +- .../engineeringDrills/helperClasses.ts | 197 +- src/modules/engineeringDrills/index.ts | 44 +- src/modules/engineeringDrills/taskManager.ts | 81 +- .../bestTimeStockActivities.ts | 32 +- .../arrayManipulation/consecutiveOdds.ts | 20 +- .../arrayManipulation/maxSumSubarray.ts | 42 +- .../arrayManipulation/moveZeros.ts | 18 +- .../arrayManipulation/nextPermutation.ts | 48 +- .../arrayManipulation/permutations.ts | 86 +- .../arrayManipulation/sumZero.ts | 42 +- .../zeroFilledSubArrlength.ts | 32 +- .../hashMap/countMaximumFrequence.ts | 50 +- .../leetCodeStyle/hashMap/groupAnagrams.ts | 21 +- .../leetCodeStyle/hashMap/singleNumber.ts | 19 +- src/modules/leetCodeStyle/hashMap/twoSum1.ts | 18 +- src/modules/leetCodeStyle/hashMap/twoSum2.ts | 24 +- src/modules/leetCodeStyle/index.ts | 179 +- .../pointers/containerWithMostWater.ts | 38 +- src/modules/leetCodeStyle/pointers/fourSum.ts | 58 +- .../pointers/hillsAndValleysCount.ts | 43 +- .../pointers/maxProductSubarry.ts | 38 +- .../leetCodeStyle/pointers/threeSum.ts | 52 +- .../leetCodeStyle/pointers/threeSumClosest.ts | 50 +- .../leetCodeStyle/search/binarySearch.ts | 22 +- .../search/findInsertPosition.ts | 34 +- .../search/rotatedArraySearch.ts | 54 +- .../slidingWindow/longSubStringNoDup.ts | 30 +- .../slidingWindow/longestCommonPrefix.ts | 30 +- .../slidingWindow/minSizeSubarraySum.ts | 30 +- src/modules/leetCodeStyle/types.ts | 2 +- 62 files changed, 4806 insertions(+), 898 deletions(-) create mode 100644 .eslintrc.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..72484ee --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,28 @@ +{ + "env": { + "es2021": true, + "node": true + }, + "extends": [ + "standard" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module" + }, + "plugins": [ + "@typescript-eslint" + ], + "rules": { + "no-use-before-define": "off", + "@typescript-eslint/no-use-before-define": [ + "error", + { + "classes": false, + "variables": true, + "typedefs": false + } + ] + } +} \ No newline at end of file diff --git a/dist/Executors/problemSolvingExec.js b/dist/Executors/problemSolvingExec.js index 664fcae..87f7383 100644 --- a/dist/Executors/problemSolvingExec.js +++ b/dist/Executors/problemSolvingExec.js @@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.exec = exec; const arrays_1 = require("./types/arrays"); async function exec(strategy, params) { - const executor = new arrays_1.contextExecutor(strategy); + const executor = new arrays_1.ContextExecutor(strategy); const result = await executor.execute(params); console.log(`Executed-${strategy.constructor.name} and Result: ${result}`); } diff --git a/dist/Executors/types/arrays.js b/dist/Executors/types/arrays.js index 4b19253..5f4b627 100644 --- a/dist/Executors/types/arrays.js +++ b/dist/Executors/types/arrays.js @@ -1,7 +1,7 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.engineeringContextExecutor = exports.contextExecutor = void 0; -class contextExecutor { +exports.engineeringContextExecutor = exports.ContextExecutor = void 0; +class ContextExecutor { constructor(Strategy) { this.strategy = Strategy; } @@ -9,7 +9,7 @@ class contextExecutor { return this.strategy.contextFunction(params); } } -exports.contextExecutor = contextExecutor; +exports.ContextExecutor = ContextExecutor; class engineeringContextExecutor { constructor(Strategy) { this.strategy = Strategy; diff --git a/dist/modules/engineeringDrills/helper.js b/dist/modules/engineeringDrills/helper.js index ca331b9..adb135b 100644 --- a/dist/modules/engineeringDrills/helper.js +++ b/dist/modules/engineeringDrills/helper.js @@ -12,7 +12,8 @@ function getRoot(array) { const current = queue.shift(); if (!current) continue; - const left = array[i++], right = array[i++]; + const left = array[i++]; + const right = array[i++]; if (left && right) { current.left = new helperClasses_1.TreeNode(left); current.right = new helperClasses_1.TreeNode(right); diff --git a/dist/modules/engineeringDrills/helperClasses.js b/dist/modules/engineeringDrills/helperClasses.js index 3b3d613..ada4c5b 100644 --- a/dist/modules/engineeringDrills/helperClasses.js +++ b/dist/modules/engineeringDrills/helperClasses.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.heap = exports.TreeNode = void 0; +exports.Heap = exports.TreeNode = void 0; class TreeNode { constructor(val) { this.value = val; @@ -9,8 +9,8 @@ class TreeNode { } } exports.TreeNode = TreeNode; -class heap { - //Class constructor +class Heap { + // Class constructor constructor(compareFn) { this.data = []; this.compare = compareFn; @@ -23,8 +23,8 @@ class heap { return this.data[0]; } remove(element) { - const index = this.data.findIndex((elem) => elem == element); - if (index == -1) + const index = this.data.findIndex((elem) => elem === element); + if (index === -1) return; const last = this.data.pop(); if (index < this.data.length && last) { @@ -47,7 +47,7 @@ class heap { size() { return this.data.length; } - //Private Helpers + // Private Helpers parent(index) { return Math.floor((index - 1) / 2); } @@ -91,4 +91,4 @@ class heap { } } } -exports.heap = heap; +exports.Heap = Heap; diff --git a/dist/modules/engineeringDrills/index.js b/dist/modules/engineeringDrills/index.js index 626c2fb..2e7f7b8 100644 --- a/dist/modules/engineeringDrills/index.js +++ b/dist/modules/engineeringDrills/index.js @@ -3,14 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true }); const binaryTree_1 = require("./binaryTree"); const helperClasses_1 = require("./helperClasses"); const taskManager_1 = require("./taskManager"); -//Construct Tree +// Construct Tree const root = new helperClasses_1.TreeNode(1); root.left = new helperClasses_1.TreeNode(2); root.right = new helperClasses_1.TreeNode(3); root.left.left = new helperClasses_1.TreeNode(4); root.left.right = new helperClasses_1.TreeNode(5); root.right.right = new helperClasses_1.TreeNode(6); -//class instances +// class instances const tree = new binaryTree_1.BinaryTree(); const manager = new taskManager_1.TaskManager([ [1, 10, 5], @@ -18,7 +18,7 @@ const manager = new taskManager_1.TaskManager([ [3, 12, 3], [0, 21, 10] ]); -//Function calls +// Function calls const result = tree.levelOrder(root, []); const exeTask = manager.execTop(); console.log(`Binary Traversal Result: ${result}`); diff --git a/dist/modules/engineeringDrills/taskManager.js b/dist/modules/engineeringDrills/taskManager.js index e675757..2b2f392 100644 --- a/dist/modules/engineeringDrills/taskManager.js +++ b/dist/modules/engineeringDrills/taskManager.js @@ -5,12 +5,12 @@ const helperClasses_1 = require("./helperClasses"); class TaskManager { constructor(tasks) { this.task = {}; - this.heap = new helperClasses_1.heap((a, b) => { + this.heap = new helperClasses_1.Heap((a, b) => { if (a.priority !== b.priority) return b.priority - a.priority; return b.taskId - a.taskId; }); - for (let [userId, taskId, priority] of tasks) { + for (const [userId, taskId, priority] of tasks) { const taskWithVersion = { userId, taskId, priority, version: 1 }; this.task[taskId] = taskWithVersion; this.heap.insert(taskWithVersion); @@ -36,7 +36,7 @@ class TaskManager { if (!top) return -1; const valid = this.task[top.taskId]; - if (valid.version == top.version) { + if (valid.version === top.version) { delete this.task[top.taskId]; return valid.userId; } diff --git a/dist/modules/leetCodeStyle/arrayManipulation/permutations.js b/dist/modules/leetCodeStyle/arrayManipulation/permutations.js index 5385fd1..ae084a7 100644 --- a/dist/modules/leetCodeStyle/arrayManipulation/permutations.js +++ b/dist/modules/leetCodeStyle/arrayManipulation/permutations.js @@ -5,12 +5,6 @@ class PermutationsStrategy { contextFunction(params) { const { nums } = params; const resultArr = []; - const length = getCount(); - for (let i = 0; i <= length; i++) { - resultArr.push([...nums]); - permutate(); - } - return resultArr; function getCount() { let count = 1; for (let i = 2; i <= nums.length; i++) { @@ -39,6 +33,12 @@ class PermutationsStrategy { } return nums; } + const length = getCount(); + for (let i = 0; i <= length; i++) { + resultArr.push([...nums]); + permutate(); + } + return resultArr; } } exports.PermutationsStrategy = PermutationsStrategy; diff --git a/dist/modules/leetCodeStyle/arrayManipulation/sumZero.js b/dist/modules/leetCodeStyle/arrayManipulation/sumZero.js index 1cb3773..c3e50b5 100644 --- a/dist/modules/leetCodeStyle/arrayManipulation/sumZero.js +++ b/dist/modules/leetCodeStyle/arrayManipulation/sumZero.js @@ -4,10 +4,10 @@ exports.SumsUpToZeroStrategy = void 0; class SumsUpToZeroStrategy { contextFunction(params) { const { length } = params; - if (length == 1) + if (length === 1) return [0]; - let array = []; - if (length % 2 == 0) { + const array = []; + if (length % 2 === 0) { for (let i = 1; i < length; i++) { array.push(i * -1); array.push(i); diff --git a/dist/modules/leetCodeStyle/arrayManipulation/zeroFilledSubArrlength.js b/dist/modules/leetCodeStyle/arrayManipulation/zeroFilledSubArrlength.js index 514582f..b4fba85 100644 --- a/dist/modules/leetCodeStyle/arrayManipulation/zeroFilledSubArrlength.js +++ b/dist/modules/leetCodeStyle/arrayManipulation/zeroFilledSubArrlength.js @@ -1,10 +1,11 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.zeroFilledSubArrayStrategy = void 0; -class zeroFilledSubArrayStrategy { +exports.ZeroFilledSubArrayStrategy = void 0; +class ZeroFilledSubArrayStrategy { contextFunction(params) { const { nums } = params; - let count = 0, streak = 0; + let count = 0; + let streak = 0; for (let i = 0; i < nums.length; i++) { if (nums[i] === 0) { streak++; @@ -17,4 +18,4 @@ class zeroFilledSubArrayStrategy { return count; } } -exports.zeroFilledSubArrayStrategy = zeroFilledSubArrayStrategy; +exports.ZeroFilledSubArrayStrategy = ZeroFilledSubArrayStrategy; diff --git a/dist/modules/leetCodeStyle/hashMap/countMaximumFrequence.js b/dist/modules/leetCodeStyle/hashMap/countMaximumFrequence.js index faa243e..830119c 100644 --- a/dist/modules/leetCodeStyle/hashMap/countMaximumFrequence.js +++ b/dist/modules/leetCodeStyle/hashMap/countMaximumFrequence.js @@ -5,8 +5,9 @@ class CountElementsWithMaximumFrequencyStrategy { contextFunction(params) { const { array } = params; const map = new Map(); - let maxFreCount = 0, maxFre = 0; - for (let element of array) { + let maxFreCount = 0; + let maxFre = 0; + for (const element of array) { if (map.has(element)) { map.set(element, map.get(element) + 1); } @@ -14,8 +15,8 @@ class CountElementsWithMaximumFrequencyStrategy { map.set(element, 1); } } - for (let [key, value] of map) { - if (value == maxFre) { + for (const [value] of map) { + if (value === maxFre) { maxFreCount += value; } else if (value > maxFre) { diff --git a/dist/modules/leetCodeStyle/hashMap/groupAnagrams.js b/dist/modules/leetCodeStyle/hashMap/groupAnagrams.js index d7f2263..6b95196 100644 --- a/dist/modules/leetCodeStyle/hashMap/groupAnagrams.js +++ b/dist/modules/leetCodeStyle/hashMap/groupAnagrams.js @@ -6,7 +6,7 @@ class GroupAnagramsStrategy { const { strings } = params; const map = new Map(); for (let i = 0; i < strings.length; i++) { - const generalized = strings[i].split("").sort().join(""); + const generalized = strings[i].split('').sort().join(''); if (!map.has(generalized)) { map.set(generalized, []); } diff --git a/dist/modules/leetCodeStyle/hashMap/singleNumber.js b/dist/modules/leetCodeStyle/hashMap/singleNumber.js index b76372a..f712bc8 100644 --- a/dist/modules/leetCodeStyle/hashMap/singleNumber.js +++ b/dist/modules/leetCodeStyle/hashMap/singleNumber.js @@ -5,7 +5,7 @@ class SingleOccuringNumberStrategy { contextFunction(params) { const { num } = params; let result = 0; - for (let n of num) { + for (const n of num) { result ^= n; } return result; diff --git a/dist/modules/leetCodeStyle/hashMap/twoSum2.js b/dist/modules/leetCodeStyle/hashMap/twoSum2.js index 887807b..9a80aee 100644 --- a/dist/modules/leetCodeStyle/hashMap/twoSum2.js +++ b/dist/modules/leetCodeStyle/hashMap/twoSum2.js @@ -7,8 +7,8 @@ class TwoSumStrategy2 { let left = 0; let right = nums.length - 1; while (left <= right) { - let sum = nums[left] + nums[right]; - if (sum == target) { + const sum = nums[left] + nums[right]; + if (sum === target) { return Promise.resolve([left, right]); } else if (sum < target) { diff --git a/dist/modules/leetCodeStyle/index.js b/dist/modules/leetCodeStyle/index.js index 844bd45..b4e50b0 100644 --- a/dist/modules/leetCodeStyle/index.js +++ b/dist/modules/leetCodeStyle/index.js @@ -56,48 +56,48 @@ const singleNumber = new singleNumber_1.SingleOccuringNumberStrategy(); // ThreeSum: Only valid triplet const threeSum = new threeSum_1.ThreeSumStrategy(); (0, problemSolvingExec_1.exec)(threeSum, { nums: [-1, 0, 1, 2, -1, -4] }); // ➞ [[-1, -1, 2], [-1, 0, 1]] -//FourSum: All elements same, only one unique quadruplet +// FourSum: All elements same, only one unique quadruplet const fourSum = new fourSum_1.FourSumStrategy(); (0, problemSolvingExec_1.exec)(fourSum, { nums: [2, 2, 2, 2, 2], target: 8 }); // ➞ [[2, 2, 2, 2]] -//ThreeSumClosest: Return the closest 3Sum values +// ThreeSumClosest: Return the closest 3Sum values const threeSumClosest = new threeSumClosest_1.ThreeSumClosestStrategy(); (0, problemSolvingExec_1.exec)(threeSumClosest, { nums: [-8, -6, -5, -3, -1], target: 2 }); // ➞ -9 (closest to 2) -//ContainerWithMostWater: All heights zero +// ContainerWithMostWater: All heights zero const containerWithMostWater = new containerWithMostWater_1.ContainerWithMostWaterStrategy(); -(0, problemSolvingExec_1.exec)(containerWithMostWater, { nums: [0, 0, 0, 0, 0] }); // ➞ 0 -//GroupAnagrams: Empty array - no anagrams to group +(0, problemSolvingExec_1.exec)(containerWithMostWater, { nums: [0, 0, 0, 0, 0] }); // ➞ 0 +// GroupAnagrams: Empty array - no anagrams to group const groupAnagrams = new groupAnagrams_1.GroupAnagramsStrategy(); (0, problemSolvingExec_1.exec)(groupAnagrams, { strings: [] }); // ➞ [] // MaximumSumSubArray: Edge Case 1000000 const maxSumSubarray = new maxSumSubarray_1.MaximumSumSubArrayStrategy(); (0, problemSolvingExec_1.exec)(maxSumSubarray, { nums: [1000000, -1000000, 1000000] }); // ➞ 1000000 -// CountHillsAndValleys: All elements are the same +// CountHillsAndValleys: All elements are the same const countHillsAndValleys = new hillsAndValleysCount_1.CountHillsAndValleysStrategy(); (0, problemSolvingExec_1.exec)(countHillsAndValleys, { nums: [5, 5, 5, 5, 5] }); // ➞ 0 // MaximumProductSubArray: Expected 0 as output const maximumProductSubarray = new maxProductSubarry_1.MaximumProductSubArrayStrategy(); (0, problemSolvingExec_1.exec)(maximumProductSubarray, { nums: [-2, 0 - 2] }); // ➞ 4 -//RotatedArraySearch: Edge Case handling with all Duplicate +// RotatedArraySearch: Edge Case handling with all Duplicate const rotatedArraySearch = new rotatedArraySearch_1.RotatedArraySearchStrategy(); (0, problemSolvingExec_1.exec)(rotatedArraySearch, { nums: [1, 1, 3, 1, 1], target: 3 }); -//ZeroFilledSubArray: Expected 6 as output -const zeroFilledSubArray = new zeroFilledSubArrlength_1.zeroFilledSubArrayStrategy(); +// ZeroFilledSubArray: Expected 6 as output +const zeroFilledSubArray = new zeroFilledSubArrlength_1.ZeroFilledSubArrayStrategy(); (0, problemSolvingExec_1.exec)(zeroFilledSubArray, { nums: [1, 3, 0, 0, 2, 0, 0, 4] }); -//LongestCommonPrefix: Expected "" as output +// LongestCommonPrefix: Expected "" as output const longestCommonPrefix = new longestCommonPrefix_1.LongestCommonPrefixStrategy(); -(0, problemSolvingExec_1.exec)(longestCommonPrefix, { array: ["hello", "", "world", "help"] }); -//SumsUpToZero: Expected [-1, 0, 1] as output +(0, problemSolvingExec_1.exec)(longestCommonPrefix, { array: ['hello', '', 'world', 'help'] }); +// SumsUpToZero: Expected [-1, 0, 1] as output const sumUpToZero = new sumZero_1.SumsUpToZeroStrategy(); (0, problemSolvingExec_1.exec)(sumUpToZero, { length: 3 }); -//BestTimeToBuyAndSellStock: Expected 0 as output +// BestTimeToBuyAndSellStock: Expected 0 as output const bestTimeToBuyAndSell = new bestTimeStockActivities_1.BestTimeToBuyAndSellStockStrategy(); (0, problemSolvingExec_1.exec)(bestTimeToBuyAndSell, { array: [9, 7, 5, 3, 1] }); -//CountElementsWithMostFrequency: Expected 4 as output +// CountElementsWithMostFrequency: Expected 4 as output const countElemWithMostFre = new countMaximumFrequence_1.CountElementsWithMaximumFrequencyStrategy(); (0, problemSolvingExec_1.exec)(countElemWithMostFre, { array: [1, 2, 2, 3, 1, 4] }); -//Permutations: Expected [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] as output in any order +// Permutations: Expected [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] as output in any order const permutations = new permutations_1.PermutationsStrategy(); (0, problemSolvingExec_1.exec)(permutations, { nums: [1, 2, 3] }); -//Consecutive Odds: Expected true +// Consecutive Odds: Expected true const consecutiveOdds = new consecutiveOdds_1.ConsecutiveOddsStrategy(); (0, problemSolvingExec_1.exec)(consecutiveOdds, { array: [0, 0, 0, 0, 0, 1, 23, 5, 0, 0, 0, 7, 5, 3] }); diff --git a/dist/modules/leetCodeStyle/pointers/containerWithMostWater.js b/dist/modules/leetCodeStyle/pointers/containerWithMostWater.js index 7ce7eb4..e50951b 100644 --- a/dist/modules/leetCodeStyle/pointers/containerWithMostWater.js +++ b/dist/modules/leetCodeStyle/pointers/containerWithMostWater.js @@ -8,8 +8,8 @@ class ContainerWithMostWaterStrategy { let right = nums.length - 1; let maxArea = -Infinity; while (left < right) { - let distance = right - left; - let area = Math.floor(Math.min(nums[left], nums[right]) * distance); + const distance = right - left; + const area = Math.floor(Math.min(nums[left], nums[right]) * distance); maxArea = Math.max(area, maxArea); if (nums[right] > nums[left]) { left++; diff --git a/dist/modules/leetCodeStyle/pointers/fourSum.js b/dist/modules/leetCodeStyle/pointers/fourSum.js index c385810..85bf368 100644 --- a/dist/modules/leetCodeStyle/pointers/fourSum.js +++ b/dist/modules/leetCodeStyle/pointers/fourSum.js @@ -7,20 +7,20 @@ class FourSumStrategy { const result = []; nums.sort((a, b) => a - b); for (let i = 0; i < nums.length - 3; i++) { - if (i > 0 && nums[i] == nums[i - 1]) + if (i > 0 && nums[i] === nums[i - 1]) continue; for (let j = i + 1; j < nums.length - 2; j++) { - if (j > i + 1 && nums[j] == nums[j - 1]) + if (j > i + 1 && nums[j] === nums[j - 1]) continue; let k = j + 1; let l = nums.length - 1; while (k < l) { const sum = nums[i] + nums[j] + nums[k] + nums[l]; - if (sum == target) { + if (sum === target) { result.push([nums[i], nums[j], nums[k], nums[l]]); - while (k < l && nums[k] == nums[k - 1]) + while (k < l && nums[k] === nums[k - 1]) k++; - while (k < l && nums[l] == nums[l + 1]) + while (k < l && nums[l] === nums[l + 1]) l--; k++; l--; diff --git a/dist/modules/leetCodeStyle/pointers/hillsAndValleysCount.js b/dist/modules/leetCodeStyle/pointers/hillsAndValleysCount.js index 27eaefa..4854127 100644 --- a/dist/modules/leetCodeStyle/pointers/hillsAndValleysCount.js +++ b/dist/modules/leetCodeStyle/pointers/hillsAndValleysCount.js @@ -6,14 +6,14 @@ class CountHillsAndValleysStrategy { const { nums } = params; let count = 0; for (let i = 1; i < nums.length - 1; i++) { - if (nums[i] == nums[i - 1]) + if (nums[i] === nums[i - 1]) continue; let left = i - 1; - while (left >= 0 && nums[left] == nums[i]) { + while (left >= 0 && nums[left] === nums[i]) { left--; } let right = i + 1; - while (right < nums.length && nums[right] == nums[i]) { + while (right < nums.length && nums[right] === nums[i]) { right++; } if ((nums[left] < nums[i] && nums[i] > nums[right]) || (nums[left] > nums[i] && nums[i] < nums[right])) { diff --git a/dist/modules/leetCodeStyle/pointers/threeSum.js b/dist/modules/leetCodeStyle/pointers/threeSum.js index 4689e24..f5ea2b7 100644 --- a/dist/modules/leetCodeStyle/pointers/threeSum.js +++ b/dist/modules/leetCodeStyle/pointers/threeSum.js @@ -4,20 +4,20 @@ exports.ThreeSumStrategy = void 0; class ThreeSumStrategy { contextFunction(params) { const { nums } = params; - let result = []; + const result = []; nums.sort((a, b) => a - b); for (let i = 0; i < nums.length - 2; i++) { - if (i > 0 && nums[i] == nums[i - 1]) + if (i > 0 && nums[i] === nums[i - 1]) continue; let j = i + 1; let k = nums.length - 1; while (j < k) { - let sum = nums[i] + nums[j] + nums[k]; + const sum = nums[i] + nums[j] + nums[k]; if (sum === 0) { result.push([nums[i], nums[j], nums[k]]); - while (nums[j] == nums[j + 1]) + while (nums[j] === nums[j + 1]) j++; - while (nums[k] == nums[k - 1]) + while (nums[k] === nums[k - 1]) k--; j++; k--; diff --git a/dist/modules/leetCodeStyle/pointers/threeSumClosest.js b/dist/modules/leetCodeStyle/pointers/threeSumClosest.js index a9b22a2..9c6512d 100644 --- a/dist/modules/leetCodeStyle/pointers/threeSumClosest.js +++ b/dist/modules/leetCodeStyle/pointers/threeSumClosest.js @@ -7,7 +7,7 @@ class ThreeSumClosestStrategy { nums.sort((a, b) => a - b); let closest = -Infinity; for (let i = 0; i < nums.length - 2; i++) { - if (i > 0 && nums[i] == nums[i - 1]) + if (i > 0 && nums[i] === nums[i - 1]) continue; let j = i + 1; let k = nums.length - 1; diff --git a/dist/modules/leetCodeStyle/search/findInsertPosition.js b/dist/modules/leetCodeStyle/search/findInsertPosition.js index 6761351..a7ddc2b 100644 --- a/dist/modules/leetCodeStyle/search/findInsertPosition.js +++ b/dist/modules/leetCodeStyle/search/findInsertPosition.js @@ -4,10 +4,11 @@ exports.FindInsertPositionStrategy = void 0; class FindInsertPositionStrategy { contextFunction(params) { const { nums, target } = params; - let left = 0, right = nums.length - 1; + let left = 0; + let right = nums.length - 1; while (left <= right) { - let mid = Math.floor((left + right) / 2); - if (nums[mid] == target) { + const mid = Math.floor((left + right) / 2); + if (nums[mid] === target) { return mid; } else if (nums[mid] < target) { diff --git a/dist/modules/leetCodeStyle/search/rotatedArraySearch.js b/dist/modules/leetCodeStyle/search/rotatedArraySearch.js index 9c985fd..fba2810 100644 --- a/dist/modules/leetCodeStyle/search/rotatedArraySearch.js +++ b/dist/modules/leetCodeStyle/search/rotatedArraySearch.js @@ -7,8 +7,8 @@ class RotatedArraySearchStrategy { let left = 0; let right = nums.length - 1; while (left <= right) { - let mid = Math.floor((left + right) / 2); - if (nums[mid] == target) { + const mid = Math.floor((left + right) / 2); + if (nums[mid] === target) { return mid; } if (nums[left] < nums[mid]) { diff --git a/dist/modules/leetCodeStyle/slidingWindow/longSubStringNoDup.js b/dist/modules/leetCodeStyle/slidingWindow/longSubStringNoDup.js index 1090935..0ade7d4 100644 --- a/dist/modules/leetCodeStyle/slidingWindow/longSubStringNoDup.js +++ b/dist/modules/leetCodeStyle/slidingWindow/longSubStringNoDup.js @@ -4,7 +4,9 @@ exports.LongestSubStrWithNoRepeatCharStrategy = void 0; class LongestSubStrWithNoRepeatCharStrategy { contextFunction(params) { const { s } = params; - let left = 0, map = new Map(), max = 0; + let left = 0; + const map = new Map(); + let max = 0; for (let i = 0; i < s.length; i++) { while (map.has(s[i])) { map.delete(s[left]); diff --git a/dist/modules/leetCodeStyle/slidingWindow/longestCommonPrefix.js b/dist/modules/leetCodeStyle/slidingWindow/longestCommonPrefix.js index 7892bb7..8cd535b 100644 --- a/dist/modules/leetCodeStyle/slidingWindow/longestCommonPrefix.js +++ b/dist/modules/leetCodeStyle/slidingWindow/longestCommonPrefix.js @@ -5,14 +5,14 @@ class LongestCommonPrefixStrategy { contextFunction(params) { const { array } = params; if (!array.length) - return ""; + return ''; const sortedLen = array.sort((a, b) => b.length - a.length); let currentWin = sortedLen[0]; for (let i = 1; i < sortedLen.length; i++) { while (!sortedLen[i].startsWith(currentWin)) { currentWin = currentWin.slice(0, -1); - if (currentWin == "") - return ""; + if (currentWin === '') + return ''; } } return currentWin; diff --git a/dist/modules/leetCodeStyle/slidingWindow/minSizeSubarraySum.js b/dist/modules/leetCodeStyle/slidingWindow/minSizeSubarraySum.js index 1c52ceb..1e2c558 100644 --- a/dist/modules/leetCodeStyle/slidingWindow/minSizeSubarraySum.js +++ b/dist/modules/leetCodeStyle/slidingWindow/minSizeSubarraySum.js @@ -4,7 +4,9 @@ exports.MinimumSizeSubarraySumStrategy = void 0; class MinimumSizeSubarraySumStrategy { contextFunction(params) { const { nums, target } = params; - let left = 0, min = Infinity, sum = 0; + let left = 0; + let min = Infinity; + let sum = 0; for (let i = 0; i < nums.length; i++) { sum += nums[i]; while (sum >= target) { diff --git a/package-lock.json b/package-lock.json index 9d2ccb0..5c15b45 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,31 +5,3737 @@ "packages": { "": { "dependencies": { - "node": "^24.4.0", - "typescript": "^5.8.3" + "node": "24.4.0", + "typescript": "5.8.3" + }, + "devDependencies": { + "@typescript-eslint/eslint-plugin": "6.18.0", + "@typescript-eslint/parser": "6.18.0", + "eslint": "8.56.0", + "eslint-config-standard": "17.1.0", + "eslint-plugin-import": "2.29.1", + "eslint-plugin-n": "16.6.2", + "eslint-plugin-promise": "6.1.1" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.18.0.tgz", + "integrity": "sha512-3lqEvQUdCozi6d1mddWqd+kf8KxmGq2Plzx36BlkjuQe3rSTm/O98cLf0A4uDO+a5N1KD2SeEEl6fW97YHY+6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.18.0", + "@typescript-eslint/type-utils": "6.18.0", + "@typescript-eslint/utils": "6.18.0", + "@typescript-eslint/visitor-keys": "6.18.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.18.0.tgz", + "integrity": "sha512-v6uR68SFvqhNQT41frCMCQpsP+5vySy6IdgjlzUWoo7ALCnpaWYcz/Ij2k4L8cEsL0wkvOviCMpjmtRtHNOKzA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "6.18.0", + "@typescript-eslint/types": "6.18.0", + "@typescript-eslint/typescript-estree": "6.18.0", + "@typescript-eslint/visitor-keys": "6.18.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.18.0.tgz", + "integrity": "sha512-o/UoDT2NgOJ2VfHpfr+KBY2ErWvCySNUIX/X7O9g8Zzt/tXdpfEU43qbNk8LVuWUT2E0ptzTWXh79i74PP0twA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.18.0", + "@typescript-eslint/visitor-keys": "6.18.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.18.0.tgz", + "integrity": "sha512-ZeMtrXnGmTcHciJN1+u2CigWEEXgy1ufoxtWcHORt5kGvpjjIlK9MUhzHm4RM8iVy6dqSaZA/6PVkX6+r+ChjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "6.18.0", + "@typescript-eslint/utils": "6.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.18.0.tgz", + "integrity": "sha512-/RFVIccwkwSdW/1zeMx3hADShWbgBxBnV/qSrex6607isYjj05t36P6LyONgqdUrNLl5TYU8NIKdHUYpFvExkA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.18.0.tgz", + "integrity": "sha512-klNvl+Ql4NsBNGB4W9TZ2Od03lm7aGvTbs0wYaFYsplVPhr+oeXjlPZCDI4U9jgJIDK38W1FKhacCFzCC+nbIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "6.18.0", + "@typescript-eslint/visitor-keys": "6.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.18.0.tgz", + "integrity": "sha512-wiKKCbUeDPGaYEYQh1S580dGxJ/V9HI7K5sbGAVklyf+o5g3O+adnS4UNJajplF4e7z2q0uVBaTdT/yLb4XAVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.18.0", + "@typescript-eslint/types": "6.18.0", + "@typescript-eslint/typescript-estree": "6.18.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.18.0.tgz", + "integrity": "sha512-1wetAlSZpewRDb2h9p/Q8kRjdGuqdTAQbkJIOUMLug2LBLG+QOjiWoSj6/3B/hA9/tVTFFdtiKvAYoYnSRW/RA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.18.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/builtins": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-compat-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-config-standard": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", + "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", + "eslint-plugin-promise": "^6.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-es-x": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", + "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/ota-meshi", + "https://opencollective.com/eslint" + ], + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.11.0", + "eslint-compat-utils": "^0.5.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": ">=8" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-n": { + "version": "16.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz", + "integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "builtins": "^5.0.1", + "eslint-plugin-es-x": "^7.5.0", + "get-tsconfig": "^4.7.0", + "globals": "^13.24.0", + "ignore": "^5.2.4", + "is-builtin-module": "^3.2.1", + "is-core-module": "^2.12.1", + "minimatch": "^3.1.2", + "resolve": "^1.22.2", + "semver": "^7.5.3" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-n/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-promise": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", + "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.12.0.tgz", + "integrity": "sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "license": "MIT", + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node": { + "version": "24.4.0", + "resolved": "https://registry.npmjs.org/node/-/node-24.4.0.tgz", + "integrity": "sha512-IPMGt3XUfM12saFz9D3cFx9T7d8rvx8sIf/v2K3Jwgjrp8LyzO7bIrHZDR6XpiNRHX3hKvI7KzXti8zKRyr7Jg==", + "hasInstallScript": true, + "license": "ISC", + "dependencies": { + "node-bin-setup": "^1.0.0" + }, + "bin": { + "node": "bin/node" + }, + "engines": { + "npm": ">=5.0.0" + } + }, + "node_modules/node-bin-setup": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/node-bin-setup/-/node-bin-setup-1.1.4.tgz", + "integrity": "sha512-vWNHOne0ZUavArqPP5LJta50+S8R261Fr5SvGul37HbEDcowvLjwdvd0ZeSr0r2lTSrPxl6okq9QUw8BFGiAxA==", + "license": "ISC" + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" } }, - "node_modules/node": { - "version": "24.4.0", - "resolved": "https://registry.npmjs.org/node/-/node-24.4.0.tgz", - "integrity": "sha512-IPMGt3XUfM12saFz9D3cFx9T7d8rvx8sIf/v2K3Jwgjrp8LyzO7bIrHZDR6XpiNRHX3hKvI7KzXti8zKRyr7Jg==", - "hasInstallScript": true, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, "license": "ISC", "dependencies": { - "node-bin-setup": "^1.0.0" + "glob": "^7.1.3" }, "bin": { - "node": "bin/node" + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" }, "engines": { - "npm": ">=5.0.0" + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/node-bin-setup": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/node-bin-setup/-/node-bin-setup-1.1.4.tgz", - "integrity": "sha512-vWNHOne0ZUavArqPP5LJta50+S8R261Fr5SvGul37HbEDcowvLjwdvd0ZeSr0r2lTSrPxl6okq9QUw8BFGiAxA==", - "license": "ISC" + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/typescript": { "version": "5.8.3", @@ -43,6 +3749,170 @@ "engines": { "node": ">=14.17" } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index 5faae22..860aaef 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,21 @@ { "dependencies": { - "node": "^24.4.0", - "typescript": "^5.8.3" + "node": "24.4.0", + "typescript": "5.8.3" + }, + "devDependencies": { + "eslint": "8.56.0", + "eslint-config-standard": "17.1.0", + "eslint-plugin-import": "2.29.1", + "eslint-plugin-n": "16.6.2", + "eslint-plugin-promise": "6.1.1", + "@typescript-eslint/eslint-plugin": "6.18.0", + "@typescript-eslint/parser": "6.18.0" }, "scripts": { "build": "tsc", - "leetcodeDev": "node dist/leetCodeStyle/index.js" + "leetcodeDev": "node dist/leetCodeStyle/index.js", + "engineeringDrills": "node dist/engineeringDrills/index.js", + "lint:fix": "eslint src --ext .ts,.js --fix" } } \ No newline at end of file diff --git a/src/Executors/problemSolvingExec.ts b/src/Executors/problemSolvingExec.ts index 2d96faa..6b69174 100644 --- a/src/Executors/problemSolvingExec.ts +++ b/src/Executors/problemSolvingExec.ts @@ -1,14 +1,14 @@ import { BaseSingleArrayExecutionStrategy, - contextExecutor, -} from "./types/arrays"; -import type { paramsMap } from "./types/arrays"; + ContextExecutor +} from './types/arrays' +import type { paramsMap } from './types/arrays' -export async function exec( +export async function exec ( strategy: BaseSingleArrayExecutionStrategy, params: paramsMap[K] ) { - const executor = new contextExecutor(strategy); - const result = await executor.execute(params); - console.log(`Executed-${strategy.constructor.name} and Result: ${result}`); + const executor = new ContextExecutor(strategy) + const result = await executor.execute(params) + console.log(`Executed-${strategy.constructor.name} and Result: ${result}`) } diff --git a/src/Executors/treeNodes.ts b/src/Executors/treeNodes.ts index 4de2fc1..9c408a4 100644 --- a/src/Executors/treeNodes.ts +++ b/src/Executors/treeNodes.ts @@ -1,4 +1,3 @@ +export function getTree (node: T, count: number) { -export function getTree(node: T, count: number) { - } diff --git a/src/Executors/types/arrays.ts b/src/Executors/types/arrays.ts index b328475..6f168e3 100644 --- a/src/Executors/types/arrays.ts +++ b/src/Executors/types/arrays.ts @@ -1,4 +1,4 @@ -import { bestTimeToBuyAndSellStockParams, binarySearchParams, consecutiveOddsParams, containerWithMostWaterParams, countElementsWithMaximumFrequencyParams, countHillsAndValleysParams, findInsertPositionParams, fourSumParams, groupAnagramsParams, longestCommonPrefixParams, longSubStringNoDupParams, maxProductSubarrayParams, maxSumSubarrayParams, minSizeSubarraySumParams, moveZerosParams, nextPermutationParams, rotatedArraySearchParams, singleNumberParams, sumsUpToZeroParams, threeSumClosestParams, threeSumParams, twoSumParams, zeroFilledSubArrParams } from "../../modules/leetCodeStyle/types"; +import { bestTimeToBuyAndSellStockParams, binarySearchParams, consecutiveOddsParams, containerWithMostWaterParams, countElementsWithMaximumFrequencyParams, countHillsAndValleysParams, findInsertPositionParams, fourSumParams, groupAnagramsParams, longestCommonPrefixParams, longSubStringNoDupParams, maxProductSubarrayParams, maxSumSubarrayParams, minSizeSubarraySumParams, moveZerosParams, nextPermutationParams, rotatedArraySearchParams, singleNumberParams, sumsUpToZeroParams, threeSumClosestParams, threeSumParams, twoSumParams, zeroFilledSubArrParams } from '../../modules/leetCodeStyle/types' export interface paramsMap { twoSum: twoSumParams, @@ -30,14 +30,14 @@ export interface BaseSingleArrayExecutionStrategy { contextFunction: (params: paramsMap[K]) => any; } -export class contextExecutor { - private strategy: BaseSingleArrayExecutionStrategy; - constructor(Strategy: BaseSingleArrayExecutionStrategy) { - this.strategy = Strategy; +export class ContextExecutor { + private strategy: BaseSingleArrayExecutionStrategy + constructor (Strategy: BaseSingleArrayExecutionStrategy) { + this.strategy = Strategy } - execute(params: paramsMap[K]): any { - return this.strategy.contextFunction(params); + execute (params: paramsMap[K]): any { + return this.strategy.contextFunction(params) } } @@ -54,12 +54,12 @@ export interface BaseEngineeringExecutionStrategy { - private strategy: BaseEngineeringExecutionStrategy; - constructor(Strategy: BaseEngineeringExecutionStrategy) { - this.strategy = Strategy; + private strategy: BaseEngineeringExecutionStrategy + constructor (Strategy: BaseEngineeringExecutionStrategy) { + this.strategy = Strategy } - execute(params: engineeringParamsMap[K]): any { - return this.strategy.contextFunction(params); + execute (params: engineeringParamsMap[K]): any { + return this.strategy.contextFunction(params) } } diff --git a/src/modules/engineeringDrills/binaryTree.ts b/src/modules/engineeringDrills/binaryTree.ts index 16eef45..8526a08 100644 --- a/src/modules/engineeringDrills/binaryTree.ts +++ b/src/modules/engineeringDrills/binaryTree.ts @@ -1,47 +1,47 @@ -import { TreeNode } from "./helperClasses"; +import { TreeNode } from './helperClasses' export class BinaryTree { - private root: TreeNode | null; + private root: TreeNode | null - constructor(root: TreeNode | null = null) { - this.root = root; - } - - preOrder(node: TreeNode | null = this.root, result: Array): Array | undefined { - if (!node) return result; - result.push(node.value); - this.preOrder(node.left, result); - this.preOrder(node.right, result); - return result; - } + constructor (root: TreeNode | null = null) { + this.root = root + } - postOrder(node: TreeNode | null = this.root, result: Array): Array | undefined { - if (!node) return result; - this.postOrder(node.right, result); - this.postOrder(node.left, result); - result.push(node.value); - return result; - } + preOrder (node: TreeNode | null = this.root, result: Array): Array | undefined { + if (!node) return result + result.push(node.value) + this.preOrder(node.left, result) + this.preOrder(node.right, result) + return result + } - inOrder(node: TreeNode | null = this.root, result: Array): Array | undefined { - if (!node) return result; - this.inOrder(node.left, result); - result.push(node.value); - this.inOrder(node.right, result); - return result; - } + postOrder (node: TreeNode | null = this.root, result: Array): Array | undefined { + if (!node) return result + this.postOrder(node.right, result) + this.postOrder(node.left, result) + result.push(node.value) + return result + } - levelOrder(node: TreeNode | null = this.root, result: Array): Array | undefined { - if (!node) return result; - const queue: Array> = []; - queue.push(node); + inOrder (node: TreeNode | null = this.root, result: Array): Array | undefined { + if (!node) return result + this.inOrder(node.left, result) + result.push(node.value) + this.inOrder(node.right, result) + return result + } - while (queue.length > 0) { - const currentNode = queue.shift(); - result.push(currentNode ? currentNode.value : 0); - if (currentNode?.left) queue.push(currentNode.left); - if (currentNode?.right) queue.push(currentNode.right); - } + levelOrder (node: TreeNode | null = this.root, result: Array): Array | undefined { + if (!node) return result + const queue: Array> = [] + queue.push(node) - return result; + while (queue.length > 0) { + const currentNode = queue.shift() + result.push(currentNode ? currentNode.value : 0) + if (currentNode?.left) queue.push(currentNode.left) + if (currentNode?.right) queue.push(currentNode.right) } -} \ No newline at end of file + + return result + } +} diff --git a/src/modules/engineeringDrills/helper.ts b/src/modules/engineeringDrills/helper.ts index e24c896..78ccb90 100644 --- a/src/modules/engineeringDrills/helper.ts +++ b/src/modules/engineeringDrills/helper.ts @@ -1,23 +1,23 @@ -import { TreeNode } from "./helperClasses"; +import { TreeNode } from './helperClasses' -export function getRoot(array: Array): TreeNode | null { - if (!array.length || array[0] == null) return null; +export function getRoot (array: Array): TreeNode | null { + if (!array.length || array[0] == null) return null - const root = new TreeNode(array[0]); - const queue = [root]; - let i = 1; + const root = new TreeNode(array[0]) + const queue = [root] + let i = 1 - while (i < queue.length) { - const current = queue.shift(); - if (!current) continue; - const left = array[i++], right = array[i++]; - if (left && right) { - current.left = new TreeNode(left); - current.right = new TreeNode(right); - queue.push(current.left); - queue.push(current.right); - } + while (i < queue.length) { + const current = queue.shift() + if (!current) continue + const left = array[i++]; const right = array[i++] + if (left && right) { + current.left = new TreeNode(left) + current.right = new TreeNode(right) + queue.push(current.left) + queue.push(current.right) } + } - return root; -} \ No newline at end of file + return root +} diff --git a/src/modules/engineeringDrills/helperClasses.ts b/src/modules/engineeringDrills/helperClasses.ts index e764b8a..6c27bb9 100644 --- a/src/modules/engineeringDrills/helperClasses.ts +++ b/src/modules/engineeringDrills/helperClasses.ts @@ -1,110 +1,109 @@ export class TreeNode { - value: T; - left: TreeNode | null; - right: TreeNode | null; - - constructor(val: T) { - this.value = val; - this.left = null; - this.right = null; - } + value: T + left: TreeNode | null + right: TreeNode | null + + constructor (val: T) { + this.value = val + this.left = null + this.right = null + } } -export class heap { - private data: T[]; - private compare: (a: T, b: T) => number; - - //Class constructor - constructor(compareFn: (a: T, b: T) => number) { - this.data = []; - this.compare = compareFn; - } - - insert(element: T): void { - this.data.push(element); - this.bubbleUp(this.data.length - 1); - } - - peek(): T { - return this.data[0]; - } - - remove(element: T): void { - const index = this.data.findIndex((elem) => elem == element); - if (index == -1) return; - - const last = this.data.pop(); - if (index < this.data.length && last) { - this.data[index] = last; - this.bubbleUp(index); - this.bubbleDown(index); - } - } - - poll(): T | undefined { - if (this.data.length === 0) return undefined; - const root = this.data[0]; - const last = this.data.pop(); - - if (this.data.length > 0 && last) { - this.data[0] = last; - this.bubbleDown(0); - } - - return root; - } - - size(): number { - return this.data.length; +export class Heap { + private data: T[] + private compare: (a: T, b: T) => number + + // Class constructor + constructor (compareFn: (a: T, b: T) => number) { + this.data = [] + this.compare = compareFn + } + + insert (element: T): void { + this.data.push(element) + this.bubbleUp(this.data.length - 1) + } + + peek (): T { + return this.data[0] + } + + remove (element: T): void { + const index = this.data.findIndex((elem) => elem === element) + if (index === -1) return + + const last = this.data.pop() + if (index < this.data.length && last) { + this.data[index] = last + this.bubbleUp(index) + this.bubbleDown(index) } + } - //Private Helpers - private parent(index: number): number { - return Math.floor((index - 1) / 2); - } + poll (): T | undefined { + if (this.data.length === 0) return undefined + const root = this.data[0] + const last = this.data.pop() - private left(index: number): number { - return index * 2 + 1; + if (this.data.length > 0 && last) { + this.data[0] = last + this.bubbleDown(0) } - private right(index: number): number { - return index * 2 + 2; + return root + } + + size (): number { + return this.data.length + } + + // Private Helpers + private parent (index: number): number { + return Math.floor((index - 1) / 2) + } + + private left (index: number): number { + return index * 2 + 1 + } + + private right (index: number): number { + return index * 2 + 2 + } + + private bubbleUp (index: number): void { + while (index > 0) { + const parent = this.parent(index) + if (this.compare(this.data[index], this.data[parent]) < 0) { + [this.data[index], this.data[parent]] = [this.data[parent], this.data[index]] + index = parent + } else { + break + } } - - private bubbleUp(index: number): void { - while (index > 0) { - const parent = this.parent(index); - if (this.compare(this.data[index], this.data[parent]) < 0) { - [this.data[index], this.data[parent]] = [this.data[parent], this.data[index]]; - index = parent; - } else { - break; - } - } + } + + private bubbleDown (index: number): void { + const length = this.data.length + while (true) { + const leftIndex = this.left(index) + const rightIndex = this.right(index) + let effecientIndex = index + + if (leftIndex < length && this.compare(this.data[leftIndex], this.data[effecientIndex]) < 0) { + effecientIndex = leftIndex + } + + if (rightIndex < length && this.compare(this.data[rightIndex], this.data[effecientIndex]) < 0) { + effecientIndex = rightIndex + } + + if (effecientIndex !== index) { + [this.data[index], this.data[effecientIndex]] = [this.data[effecientIndex], this.data[index]] + index = effecientIndex + } else { + break + } } - - private bubbleDown(index: number): void { - const length = this.data.length; - while (true) { - const leftIndex = this.left(index); - const rightIndex = this.right(index); - let effecientIndex = index; - - if (leftIndex < length && this.compare(this.data[leftIndex], this.data[effecientIndex]) < 0) { - effecientIndex = leftIndex; - } - - if (rightIndex < length && this.compare(this.data[rightIndex], this.data[effecientIndex]) < 0) { - effecientIndex = rightIndex; - } - - if (effecientIndex !== index) { - [this.data[index], this.data[effecientIndex]] = [this.data[effecientIndex], this.data[index]]; - index = effecientIndex; - } else { - break; - } - } - } - + } } diff --git a/src/modules/engineeringDrills/index.ts b/src/modules/engineeringDrills/index.ts index 1909bbe..fcad302 100644 --- a/src/modules/engineeringDrills/index.ts +++ b/src/modules/engineeringDrills/index.ts @@ -1,27 +1,27 @@ -import { BinaryTree } from "./binaryTree"; -import { TreeNode } from "./helperClasses"; -import { TaskManager } from "./taskManager"; +import { BinaryTree } from './binaryTree' +import { TreeNode } from './helperClasses' +import { TaskManager } from './taskManager' -//Construct Tree -const root = new TreeNode(1); -root.left = new TreeNode(2); -root.right = new TreeNode(3); -root.left.left = new TreeNode(4); -root.left.right = new TreeNode(5); -root.right.right = new TreeNode(6); +// Construct Tree +const root = new TreeNode(1) +root.left = new TreeNode(2) +root.right = new TreeNode(3) +root.left.left = new TreeNode(4) +root.left.right = new TreeNode(5) +root.right.right = new TreeNode(6) -//class instances -const tree = new BinaryTree(); +// class instances +const tree = new BinaryTree() const manager = new TaskManager([ - [1, 10, 5], - [2, 11, 10], - [3, 12, 3], - [0, 21, 10] -]); + [1, 10, 5], + [2, 11, 10], + [3, 12, 3], + [0, 21, 10] +]) -//Function calls -const result = tree.levelOrder(root, []); -const exeTask = manager.execTop(); +// Function calls +const result = tree.levelOrder(root, []) +const exeTask = manager.execTop() -console.log(`Binary Traversal Result: ${result}`); -console.log(`Task Manager result: ${exeTask}`); +console.log(`Binary Traversal Result: ${result}`) +console.log(`Task Manager result: ${exeTask}`) diff --git a/src/modules/engineeringDrills/taskManager.ts b/src/modules/engineeringDrills/taskManager.ts index 521e4de..0780147 100644 --- a/src/modules/engineeringDrills/taskManager.ts +++ b/src/modules/engineeringDrills/taskManager.ts @@ -1,4 +1,4 @@ -import { heap } from "./helperClasses"; +import { Heap } from './helperClasses' type task = { userId: number; @@ -7,53 +7,52 @@ type task = { version: number; } export class TaskManager { - private task: Record; - private heap: heap; - constructor(tasks: number[][]) { - this.task = {}; - this.heap = new heap((a, b) => { - if (a.priority !== b.priority) return b.priority - a.priority; - return b.taskId - a.taskId; - }) - - for (let [userId, taskId, priority] of tasks) { - const taskWithVersion: task = { userId, taskId, priority, version: 1 } - this.task[taskId] = taskWithVersion; - this.heap.insert(taskWithVersion); - } - + private task: Record + private heap: Heap + constructor (tasks: number[][]) { + this.task = {} + this.heap = new Heap((a, b) => { + if (a.priority !== b.priority) return b.priority - a.priority + return b.taskId - a.taskId + }) + + for (const [userId, taskId, priority] of tasks) { + const taskWithVersion: task = { userId, taskId, priority, version: 1 } + this.task[taskId] = taskWithVersion + this.heap.insert(taskWithVersion) } + } - add(userId: number, taskId: number, priority: number): void { - const newTask: task = { userId, taskId, priority, version: 1 }; - this.task[taskId] = newTask; - this.heap.insert(newTask); - } + add (userId: number, taskId: number, priority: number): void { + const newTask: task = { userId, taskId, priority, version: 1 } + this.task[taskId] = newTask + this.heap.insert(newTask) + } - edit(taskId: number, newPriority: number): void { - const oldTask = this.task[taskId]; - oldTask.version++ - oldTask.priority = newPriority; + edit (taskId: number, newPriority: number): void { + const oldTask = this.task[taskId] + oldTask.version++ + oldTask.priority = newPriority - this.heap.insert({ ...oldTask }); - } + this.heap.insert({ ...oldTask }) + } - rmv(taskId: number): void { - delete this.task[taskId]; - } + rmv (taskId: number): void { + delete this.task[taskId] + } - execTop(): number { - while (this.heap.size()) { - const top = this.heap.poll(); + execTop (): number { + while (this.heap.size()) { + const top = this.heap.poll() - if (!top) return -1; + if (!top) return -1 - const valid = this.task[top.taskId]; - if (valid.version == top.version) { - delete this.task[top.taskId]; - return valid.userId; - } - } - return -1; + const valid = this.task[top.taskId] + if (valid.version === top.version) { + delete this.task[top.taskId] + return valid.userId + } } + return -1 + } } diff --git a/src/modules/leetCodeStyle/arrayManipulation/bestTimeStockActivities.ts b/src/modules/leetCodeStyle/arrayManipulation/bestTimeStockActivities.ts index 1d91bff..7413548 100644 --- a/src/modules/leetCodeStyle/arrayManipulation/bestTimeStockActivities.ts +++ b/src/modules/leetCodeStyle/arrayManipulation/bestTimeStockActivities.ts @@ -1,18 +1,18 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { bestTimeToBuyAndSellStockParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { bestTimeToBuyAndSellStockParams } from '../types' -export class BestTimeToBuyAndSellStockStrategy implements BaseSingleArrayExecutionStrategy<"bestTimeToSell"> { - contextFunction(params: bestTimeToBuyAndSellStockParams): any { - const { array } = params; - let min = Infinity; - let max = 0; - for (let i = 0; i < array.length; i++) { - min = Math.min(array[i], min); - if (min < array[i]) { - const profit = array[i] - min; - max = Math.max(profit, max); - } - } - return max; +export class BestTimeToBuyAndSellStockStrategy implements BaseSingleArrayExecutionStrategy<'bestTimeToSell'> { + contextFunction (params: bestTimeToBuyAndSellStockParams): any { + const { array } = params + let min = Infinity + let max = 0 + for (let i = 0; i < array.length; i++) { + min = Math.min(array[i], min) + if (min < array[i]) { + const profit = array[i] - min + max = Math.max(profit, max) + } } -} \ No newline at end of file + return max + } +} diff --git a/src/modules/leetCodeStyle/arrayManipulation/consecutiveOdds.ts b/src/modules/leetCodeStyle/arrayManipulation/consecutiveOdds.ts index 73a54e9..f8bd739 100644 --- a/src/modules/leetCodeStyle/arrayManipulation/consecutiveOdds.ts +++ b/src/modules/leetCodeStyle/arrayManipulation/consecutiveOdds.ts @@ -1,13 +1,13 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { consecutiveOddsParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { consecutiveOddsParams } from '../types' export class ConsecutiveOddsStrategy implements BaseSingleArrayExecutionStrategy<'consecutiveOdds'> { - contextFunction(params: consecutiveOddsParams): any { - const { array } = params; - for (let i = 0; i < array.length; i++) { - if (array[i] % 2 !== 0 && array[i + 1] % 2 !== 0 && array[i + 2] % 2 !== 0) { - return true; - } - } + contextFunction (params: consecutiveOddsParams): any { + const { array } = params + for (let i = 0; i < array.length; i++) { + if (array[i] % 2 !== 0 && array[i + 1] % 2 !== 0 && array[i + 2] % 2 !== 0) { + return true + } } -} \ No newline at end of file + } +} diff --git a/src/modules/leetCodeStyle/arrayManipulation/maxSumSubarray.ts b/src/modules/leetCodeStyle/arrayManipulation/maxSumSubarray.ts index ef66b10..15c10cf 100644 --- a/src/modules/leetCodeStyle/arrayManipulation/maxSumSubarray.ts +++ b/src/modules/leetCodeStyle/arrayManipulation/maxSumSubarray.ts @@ -1,28 +1,28 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { maxSumSubarrayParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { maxSumSubarrayParams } from '../types' export class MaximumSumSubArrayStrategy implements BaseSingleArrayExecutionStrategy<'maxSumSubarray'> { - contextFunction(params: maxSumSubarrayParams): any { - const { nums } = params; + contextFunction (params: maxSumSubarrayParams): any { + const { nums } = params - if (nums.length === 0) { - return 0; - } + if (nums.length === 0) { + return 0 + } - if (nums.length === 1) { - return nums[0]; - } + if (nums.length === 1) { + return nums[0] + } - let currentSum = 0; - let maxSum = nums[0]; + let currentSum = 0 + let maxSum = nums[0] - for (let i = 0; i < nums.length; i++) { - currentSum += nums[i]; - maxSum = Math.max(maxSum, currentSum); - if (currentSum < 0) { - currentSum = 0; - } - } - return maxSum; + for (let i = 0; i < nums.length; i++) { + currentSum += nums[i] + maxSum = Math.max(maxSum, currentSum) + if (currentSum < 0) { + currentSum = 0 + } } -} \ No newline at end of file + return maxSum + } +} diff --git a/src/modules/leetCodeStyle/arrayManipulation/moveZeros.ts b/src/modules/leetCodeStyle/arrayManipulation/moveZeros.ts index e230a90..6cc47e9 100644 --- a/src/modules/leetCodeStyle/arrayManipulation/moveZeros.ts +++ b/src/modules/leetCodeStyle/arrayManipulation/moveZeros.ts @@ -1,19 +1,19 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { moveZerosParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { moveZerosParams } from '../types' export class MoveZeroStrategy implements BaseSingleArrayExecutionStrategy<'moveZeros'> { - contextFunction(params: moveZerosParams): any { - const { nums } = params; - let k = 0; + contextFunction (params: moveZerosParams): any { + const { nums } = params + let k = 0 for (let i = 0; i < nums.length; i++) { if (nums[i] !== 0) { - nums[k] = nums[i]; - k++; + nums[k] = nums[i] + k++ } } for (let i = k; i < nums.length; i++) { - nums[i] = 0; + nums[i] = 0 } - return nums; + return nums } } diff --git a/src/modules/leetCodeStyle/arrayManipulation/nextPermutation.ts b/src/modules/leetCodeStyle/arrayManipulation/nextPermutation.ts index ddbbfb6..a9f9606 100644 --- a/src/modules/leetCodeStyle/arrayManipulation/nextPermutation.ts +++ b/src/modules/leetCodeStyle/arrayManipulation/nextPermutation.ts @@ -1,27 +1,27 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { nextPermutationParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { nextPermutationParams } from '../types' export class NextPermutationStrategy implements BaseSingleArrayExecutionStrategy<'nextPermutation'> { - contextFunction(params: nextPermutationParams): any { - const { nums } = params; - let i = nums.length - 2; - while (i >= 0 && nums[i] >= nums[i + 1]) { - i--; - } - if (i >= 0) { - let j = nums.length - 1; - while (nums[j] <= nums[i]) { - j--; - } - [nums[i], nums[j]] = [nums[j], nums[i]]; - } - let left = i + 1; - let right = nums.length - 1; - while (left < right) { - [nums[left], nums[right]] = [nums[right], nums[left]]; - left++; - right--; - } - return nums; + contextFunction (params: nextPermutationParams): any { + const { nums } = params + let i = nums.length - 2 + while (i >= 0 && nums[i] >= nums[i + 1]) { + i-- } -} \ No newline at end of file + if (i >= 0) { + let j = nums.length - 1 + while (nums[j] <= nums[i]) { + j-- + } + [nums[i], nums[j]] = [nums[j], nums[i]] + } + let left = i + 1 + let right = nums.length - 1 + while (left < right) { + [nums[left], nums[right]] = [nums[right], nums[left]] + left++ + right-- + } + return nums + } +} diff --git a/src/modules/leetCodeStyle/arrayManipulation/permutations.ts b/src/modules/leetCodeStyle/arrayManipulation/permutations.ts index 01a6d08..d12dfe8 100644 --- a/src/modules/leetCodeStyle/arrayManipulation/permutations.ts +++ b/src/modules/leetCodeStyle/arrayManipulation/permutations.ts @@ -1,50 +1,50 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { nextPermutationParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { nextPermutationParams } from '../types' export class PermutationsStrategy implements BaseSingleArrayExecutionStrategy<'nextPermutation'> { - contextFunction(params: nextPermutationParams) { - const { nums } = params; - const resultArr = []; - const length = getCount(); - - for (let i = 0; i <= length; i++) { - resultArr.push([...nums]); - permutate(); - } + contextFunction (params: nextPermutationParams) { + const { nums } = params + const resultArr = [] + + function getCount () { + let count = 1 + for (let i = 2; i <= nums.length; i++) { + count *= i + } + return count + } - return resultArr; + function permutate () { + let i = nums.length - 2 + while (i >= 0 && nums[i] >= nums[i + 1]) { + i-- + } - function getCount() { - let count = 1; - for (let i = 2; i <= nums.length; i++) { - count *= i; - } - return count; + if (i >= 0) { + let j = nums.length - 1 + while (nums[i] >= nums[j]) { + j-- } + [nums[i], nums[j]] = [nums[j], nums[i]] + } + + let left = i + 1 + let right = nums.length - 1 + while (left < right) { + [nums[left], nums[right]] = [nums[right], nums[left]] + left++ + right-- + } + + return nums + } - function permutate() { - let i = nums.length - 2; - while (i >= 0 && nums[i] >= nums[i + 1]) { - i--; - } - - if (i >= 0) { - let j = nums.length - 1; - while (nums[i] >= nums[j]) { - j--; - } - [nums[i], nums[j]] = [nums[j], nums[i]]; - } - - let left = i + 1; - let right = nums.length - 1; - while (left < right) { - [nums[left], nums[right]] = [nums[right], nums[left]]; - left++; - right--; - } - - return nums; - } + const length = getCount() + for (let i = 0; i <= length; i++) { + resultArr.push([...nums]) + permutate() } -} \ No newline at end of file + + return resultArr + } +} diff --git a/src/modules/leetCodeStyle/arrayManipulation/sumZero.ts b/src/modules/leetCodeStyle/arrayManipulation/sumZero.ts index df60a75..f187092 100644 --- a/src/modules/leetCodeStyle/arrayManipulation/sumZero.ts +++ b/src/modules/leetCodeStyle/arrayManipulation/sumZero.ts @@ -1,25 +1,25 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { sumsUpToZeroParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { sumsUpToZeroParams } from '../types' export class SumsUpToZeroStrategy implements BaseSingleArrayExecutionStrategy<'sumsUpToZero'> { - contextFunction(params: sumsUpToZeroParams) { - const { length } = params; - if (length == 1) return [0]; - let array = []; - if (length % 2 == 0) { - for (let i = 1; i < length; i++) { - array.push(i * -1); - array.push(i); - } - } else { - for (let i = 1; i < length; i++) { - array.push(i * -1); - array.push(i); - } + contextFunction (params: sumsUpToZeroParams) { + const { length } = params + if (length === 1) return [0] + const array = [] + if (length % 2 === 0) { + for (let i = 1; i < length; i++) { + array.push(i * -1) + array.push(i) + } + } else { + for (let i = 1; i < length; i++) { + array.push(i * -1) + array.push(i) + } - array.splice(length - 2, 0, 0); - } - - return array.slice(0, length); + array.splice(length - 2, 0, 0) } -} \ No newline at end of file + + return array.slice(0, length) + } +} diff --git a/src/modules/leetCodeStyle/arrayManipulation/zeroFilledSubArrlength.ts b/src/modules/leetCodeStyle/arrayManipulation/zeroFilledSubArrlength.ts index 08559ba..2e8bbec 100644 --- a/src/modules/leetCodeStyle/arrayManipulation/zeroFilledSubArrlength.ts +++ b/src/modules/leetCodeStyle/arrayManipulation/zeroFilledSubArrlength.ts @@ -1,18 +1,18 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { zeroFilledSubArrParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { zeroFilledSubArrParams } from '../types' -export class zeroFilledSubArrayStrategy implements BaseSingleArrayExecutionStrategy<'zeroFilledSubArray'> { - contextFunction(params: zeroFilledSubArrParams): any { - const { nums } = params; - let count = 0, streak = 0; - for (let i = 0; i < nums.length; i++) { - if(nums[i] === 0) { - streak ++; - count += streak; - }else { - streak = 0; - } - } - return count; +export class ZeroFilledSubArrayStrategy implements BaseSingleArrayExecutionStrategy<'zeroFilledSubArray'> { + contextFunction (params: zeroFilledSubArrParams): any { + const { nums } = params + let count = 0; let streak = 0 + for (let i = 0; i < nums.length; i++) { + if (nums[i] === 0) { + streak++ + count += streak + } else { + streak = 0 + } } -} \ No newline at end of file + return count + } +} diff --git a/src/modules/leetCodeStyle/hashMap/countMaximumFrequence.ts b/src/modules/leetCodeStyle/hashMap/countMaximumFrequence.ts index a18a4c8..ad42130 100644 --- a/src/modules/leetCodeStyle/hashMap/countMaximumFrequence.ts +++ b/src/modules/leetCodeStyle/hashMap/countMaximumFrequence.ts @@ -1,29 +1,29 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { countElementsWithMaximumFrequencyParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { countElementsWithMaximumFrequencyParams } from '../types' -export class CountElementsWithMaximumFrequencyStrategy implements BaseSingleArrayExecutionStrategy<"countElemWithMostFrequency"> { - contextFunction(params: countElementsWithMaximumFrequencyParams) { - const { array } = params; - const map = new Map(); - let maxFreCount = 0, maxFre = 0; +export class CountElementsWithMaximumFrequencyStrategy implements BaseSingleArrayExecutionStrategy<'countElemWithMostFrequency'> { + contextFunction (params: countElementsWithMaximumFrequencyParams) { + const { array } = params + const map = new Map() + let maxFreCount = 0; let maxFre = 0 - for (let element of array) { - if (map.has(element)) { - map.set(element, map.get(element) + 1); - } else { - map.set(element, 1); - } - } - - for (let [key, value] of map) { - if (value == maxFre) { - maxFreCount += value; - } else if (value > maxFre) { - maxFre = value; - maxFreCount = maxFre; - } - } + for (const element of array) { + if (map.has(element)) { + map.set(element, map.get(element) + 1) + } else { + map.set(element, 1) + } + } - return maxFreCount; + for (const [value] of map) { + if (value === maxFre) { + maxFreCount += value + } else if (value > maxFre) { + maxFre = value + maxFreCount = maxFre + } } -} \ No newline at end of file + + return maxFreCount + } +} diff --git a/src/modules/leetCodeStyle/hashMap/groupAnagrams.ts b/src/modules/leetCodeStyle/hashMap/groupAnagrams.ts index fd83938..d803649 100644 --- a/src/modules/leetCodeStyle/hashMap/groupAnagrams.ts +++ b/src/modules/leetCodeStyle/hashMap/groupAnagrams.ts @@ -1,19 +1,18 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { groupAnagramsParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { groupAnagramsParams } from '../types' export class GroupAnagramsStrategy - implements BaseSingleArrayExecutionStrategy<"groupAnagrams"> -{ - contextFunction(params: groupAnagramsParams): any { - const { strings } = params; - const map = new Map(); +implements BaseSingleArrayExecutionStrategy<'groupAnagrams'> { + contextFunction (params: groupAnagramsParams): any { + const { strings } = params + const map = new Map() for (let i = 0; i < strings.length; i++) { - const generalized = strings[i].split("").sort().join(""); + const generalized = strings[i].split('').sort().join('') if (!map.has(generalized)) { - map.set(generalized, []); + map.set(generalized, []) } - map.get(generalized).push(strings[i]); + map.get(generalized).push(strings[i]) } - return Array.from(map.values()); + return Array.from(map.values()) } } diff --git a/src/modules/leetCodeStyle/hashMap/singleNumber.ts b/src/modules/leetCodeStyle/hashMap/singleNumber.ts index b84a502..1e33dac 100644 --- a/src/modules/leetCodeStyle/hashMap/singleNumber.ts +++ b/src/modules/leetCodeStyle/hashMap/singleNumber.ts @@ -1,15 +1,14 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { singleNumberParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { singleNumberParams } from '../types' export class SingleOccuringNumberStrategy - implements BaseSingleArrayExecutionStrategy<"singleOccuringNumber"> -{ - contextFunction(params: singleNumberParams): any { - const { num } = params; - let result = 0; - for (let n of num) { - result ^= n; +implements BaseSingleArrayExecutionStrategy<'singleOccuringNumber'> { + contextFunction (params: singleNumberParams): any { + const { num } = params + let result = 0 + for (const n of num) { + result ^= n } - return result; + return result } } diff --git a/src/modules/leetCodeStyle/hashMap/twoSum1.ts b/src/modules/leetCodeStyle/hashMap/twoSum1.ts index fd4c723..e63e05f 100644 --- a/src/modules/leetCodeStyle/hashMap/twoSum1.ts +++ b/src/modules/leetCodeStyle/hashMap/twoSum1.ts @@ -1,17 +1,17 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { twoSumParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { twoSumParams } from '../types' export class TwoSumStrategy1 implements BaseSingleArrayExecutionStrategy<'twoSum'> { - contextFunction(params: twoSumParams): Promise> { - const { nums, target } = params; - const map = new Map(); + contextFunction (params: twoSumParams): Promise> { + const { nums, target } = params + const map = new Map() for (let i = 0; i < nums.length; i++) { - const completement = target && target - nums[i]; + const completement = target && target - nums[i] if (map.has(completement)) { - return Promise.resolve([map.get(completement), i]); + return Promise.resolve([map.get(completement), i]) } - map.set(nums[i], i); + map.set(nums[i], i) } - return Promise.resolve([-1, -1]); + return Promise.resolve([-1, -1]) } } diff --git a/src/modules/leetCodeStyle/hashMap/twoSum2.ts b/src/modules/leetCodeStyle/hashMap/twoSum2.ts index 759a449..eea10c0 100644 --- a/src/modules/leetCodeStyle/hashMap/twoSum2.ts +++ b/src/modules/leetCodeStyle/hashMap/twoSum2.ts @@ -1,21 +1,21 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { twoSumParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { twoSumParams } from '../types' export class TwoSumStrategy2 implements BaseSingleArrayExecutionStrategy<'twoSum'> { - contextFunction(params: twoSumParams): Promise> { - const { nums, target } = params; - let left = 0; - let right = nums.length - 1; + contextFunction (params: twoSumParams): Promise> { + const { nums, target } = params + let left = 0 + let right = nums.length - 1 while (left <= right) { - let sum = nums[left] + nums[right]; - if (sum == target) { - return Promise.resolve([left, right]); + const sum = nums[left] + nums[right] + if (sum === target) { + return Promise.resolve([left, right]) } else if (sum < target) { - left++; + left++ } else { - right--; + right-- } } - return Promise.resolve([-1, -1]); + return Promise.resolve([-1, -1]) } } diff --git a/src/modules/leetCodeStyle/index.ts b/src/modules/leetCodeStyle/index.ts index 70a203d..8f7d18d 100644 --- a/src/modules/leetCodeStyle/index.ts +++ b/src/modules/leetCodeStyle/index.ts @@ -1,127 +1,126 @@ -import { exec } from "../../Executors/problemSolvingExec"; -import { BinarySearchStrategy } from "./search/binarySearch"; -import { FindInsertPositionStrategy } from "./search/findInsertPosition"; -import { FourSumStrategy } from "./pointers/fourSum"; -import { LongestSubStrWithNoRepeatCharStrategy } from "./slidingWindow/longSubStringNoDup"; -import { MinimumSizeSubarraySumStrategy } from "./slidingWindow/minSizeSubarraySum"; -import { MaximumSumSubArrayStrategy } from "./arrayManipulation/maxSumSubarray"; -import { MoveZeroStrategy } from "./arrayManipulation/moveZeros"; -import { NextPermutationStrategy } from "./arrayManipulation/nextPermutation"; -import { SingleOccuringNumberStrategy } from "./hashMap/singleNumber"; -import { ThreeSumStrategy } from "./pointers/threeSum"; -import { ThreeSumClosestStrategy } from "./pointers/threeSumClosest"; -import { TwoSumStrategy1 } from "./hashMap/twoSum1"; -import { TwoSumStrategy2 } from "./hashMap/twoSum2"; -import { ContainerWithMostWaterStrategy } from "./pointers/containerWithMostWater"; -import { GroupAnagramsStrategy } from "./hashMap/groupAnagrams"; -import { CountHillsAndValleysStrategy } from "./pointers/hillsAndValleysCount"; -import { MaximumProductSubArrayStrategy } from "./pointers/maxProductSubarry"; -import { RotatedArraySearchStrategy } from "./search/rotatedArraySearch"; -import { zeroFilledSubArrayStrategy } from "./arrayManipulation/zeroFilledSubArrlength"; -import { LongestCommonPrefixStrategy } from "./slidingWindow/longestCommonPrefix"; -import { SumsUpToZeroStrategy } from "./arrayManipulation/sumZero"; -import { BestTimeToBuyAndSellStockStrategy } from "./arrayManipulation/bestTimeStockActivities"; -import { CountElementsWithMaximumFrequencyStrategy } from "./hashMap/countMaximumFrequence"; -import { PermutationsStrategy } from "./arrayManipulation/permutations"; -import { ConsecutiveOddsStrategy } from "./arrayManipulation/consecutiveOdds"; - +import { exec } from '../../Executors/problemSolvingExec' +import { BinarySearchStrategy } from './search/binarySearch' +import { FindInsertPositionStrategy } from './search/findInsertPosition' +import { FourSumStrategy } from './pointers/fourSum' +import { LongestSubStrWithNoRepeatCharStrategy } from './slidingWindow/longSubStringNoDup' +import { MinimumSizeSubarraySumStrategy } from './slidingWindow/minSizeSubarraySum' +import { MaximumSumSubArrayStrategy } from './arrayManipulation/maxSumSubarray' +import { MoveZeroStrategy } from './arrayManipulation/moveZeros' +import { NextPermutationStrategy } from './arrayManipulation/nextPermutation' +import { SingleOccuringNumberStrategy } from './hashMap/singleNumber' +import { ThreeSumStrategy } from './pointers/threeSum' +import { ThreeSumClosestStrategy } from './pointers/threeSumClosest' +import { TwoSumStrategy1 } from './hashMap/twoSum1' +import { TwoSumStrategy2 } from './hashMap/twoSum2' +import { ContainerWithMostWaterStrategy } from './pointers/containerWithMostWater' +import { GroupAnagramsStrategy } from './hashMap/groupAnagrams' +import { CountHillsAndValleysStrategy } from './pointers/hillsAndValleysCount' +import { MaximumProductSubArrayStrategy } from './pointers/maxProductSubarry' +import { RotatedArraySearchStrategy } from './search/rotatedArraySearch' +import { ZeroFilledSubArrayStrategy } from './arrayManipulation/zeroFilledSubArrlength' +import { LongestCommonPrefixStrategy } from './slidingWindow/longestCommonPrefix' +import { SumsUpToZeroStrategy } from './arrayManipulation/sumZero' +import { BestTimeToBuyAndSellStockStrategy } from './arrayManipulation/bestTimeStockActivities' +import { CountElementsWithMaximumFrequencyStrategy } from './hashMap/countMaximumFrequence' +import { PermutationsStrategy } from './arrayManipulation/permutations' +import { ConsecutiveOddsStrategy } from './arrayManipulation/consecutiveOdds' // TwoSum1: No pair adds to 100 -const twoSum1 = new TwoSumStrategy1(); -exec<'twoSum'>(twoSum1, { nums: [1, 2, 3, 4, 5], target: 100 }); // ➞ [-1,-1] +const twoSum1 = new TwoSumStrategy1() +exec<'twoSum'>(twoSum1, { nums: [1, 2, 3, 4, 5], target: 100 }) // ➞ [-1,-1] // TwoSum2: Multiple duplicates that sum to target -const twoSum2 = new TwoSumStrategy2(); -exec<'twoSum'>(twoSum2, { nums: [2, 3, 3, 4, 5], target: 6 }); // ➞ [0,3] +const twoSum2 = new TwoSumStrategy2() +exec<'twoSum'>(twoSum2, { nums: [2, 3, 3, 4, 5], target: 6 }) // ➞ [0,3] // MoveZeros: All zeros -const moveZeros = new MoveZeroStrategy(); -exec<'moveZeros'>(moveZeros, { nums: [0, 0, 0, 0] }); // ➞ [0, 0, 0, 0] +const moveZeros = new MoveZeroStrategy() +exec<'moveZeros'>(moveZeros, { nums: [0, 0, 0, 0] }) // ➞ [0, 0, 0, 0] // BinarySearch: Target not found -const binarySearch = new BinarySearchStrategy(); -exec<'binarySearch'>(binarySearch, { nums: [1, 2, 4, 5, 6], target: 3 }); // ➞ -1 +const binarySearch = new BinarySearchStrategy() +exec<'binarySearch'>(binarySearch, { nums: [1, 2, 4, 5, 6], target: 3 }) // ➞ -1 // MinimumSizeSubarraySum: No subarray meets target -const minSizesubarrSum = new MinimumSizeSubarraySumStrategy(); -exec<'minSizeSubarrSum'>(minSizesubarrSum, { nums: [1, 1, 1, 1], target: 10 }); // ➞ 0 +const minSizesubarrSum = new MinimumSizeSubarraySumStrategy() +exec<'minSizeSubarrSum'>(minSizesubarrSum, { nums: [1, 1, 1, 1], target: 10 }) // ➞ 0 // LongestSubStringNoDup: All same characters -const longSizesubstrNoDupLen = new LongestSubStrWithNoRepeatCharStrategy(); -exec<'longestSubStringNoDup'>(longSizesubstrNoDupLen, { s: 'aaaaaa' }); // ➞ 1 +const longSizesubstrNoDupLen = new LongestSubStrWithNoRepeatCharStrategy() +exec<'longestSubStringNoDup'>(longSizesubstrNoDupLen, { s: 'aaaaaa' }) // ➞ 1 // FindInsertPosition: Insert in middle -const findInserPosition = new FindInsertPositionStrategy(); -exec<'findInsertPosition'>(findInserPosition, { nums: [1, 3, 5, 6], target: 4 }); // ➞ 2 +const findInserPosition = new FindInsertPositionStrategy() +exec<'findInsertPosition'>(findInserPosition, { nums: [1, 3, 5, 6], target: 4 }) // ➞ 2 // NextPermutation: Already in descending order -const nextPermutation = new NextPermutationStrategy(); -exec<'nextPermutation'>(nextPermutation, { nums: [3, 2, 1] }); // ➞ [1, 2, 3] +const nextPermutation = new NextPermutationStrategy() +exec<'nextPermutation'>(nextPermutation, { nums: [3, 2, 1] }) // ➞ [1, 2, 3] // SingleOccuringNumber: Only one unique -const singleNumber = new SingleOccuringNumberStrategy(); -exec<'singleOccuringNumber'>(singleNumber, { num: [7, 3, 3, 7, 1, 1, 4, 4, 9] }); // ➞ 9 +const singleNumber = new SingleOccuringNumberStrategy() +exec<'singleOccuringNumber'>(singleNumber, { num: [7, 3, 3, 7, 1, 1, 4, 4, 9] }) // ➞ 9 // ThreeSum: Only valid triplet -const threeSum = new ThreeSumStrategy(); -exec<'threeSum'>(threeSum, { nums: [-1, 0, 1, 2, -1, -4] }); // ➞ [[-1, -1, 2], [-1, 0, 1]] +const threeSum = new ThreeSumStrategy() +exec<'threeSum'>(threeSum, { nums: [-1, 0, 1, 2, -1, -4] }) // ➞ [[-1, -1, 2], [-1, 0, 1]] -//FourSum: All elements same, only one unique quadruplet -const fourSum = new FourSumStrategy(); -exec<'fourSum'>(fourSum, { nums: [2, 2, 2, 2, 2], target: 8 }); // ➞ [[2, 2, 2, 2]] +// FourSum: All elements same, only one unique quadruplet +const fourSum = new FourSumStrategy() +exec<'fourSum'>(fourSum, { nums: [2, 2, 2, 2, 2], target: 8 }) // ➞ [[2, 2, 2, 2]] -//ThreeSumClosest: Return the closest 3Sum values -const threeSumClosest = new ThreeSumClosestStrategy(); -exec<'threeSumClosest'>(threeSumClosest, { nums: [-8, -6, -5, -3, -1], target: 2 }); // ➞ -9 (closest to 2) +// ThreeSumClosest: Return the closest 3Sum values +const threeSumClosest = new ThreeSumClosestStrategy() +exec<'threeSumClosest'>(threeSumClosest, { nums: [-8, -6, -5, -3, -1], target: 2 }) // ➞ -9 (closest to 2) -//ContainerWithMostWater: All heights zero -const containerWithMostWater = new ContainerWithMostWaterStrategy(); -exec<'containerWithMostWater'>(containerWithMostWater, { nums: [0, 0, 0, 0, 0] }); // ➞ 0 +// ContainerWithMostWater: All heights zero +const containerWithMostWater = new ContainerWithMostWaterStrategy() +exec<'containerWithMostWater'>(containerWithMostWater, { nums: [0, 0, 0, 0, 0] }) // ➞ 0 -//GroupAnagrams: Empty array - no anagrams to group -const groupAnagrams = new GroupAnagramsStrategy(); -exec<'groupAnagrams'>(groupAnagrams, { strings: [] }); // ➞ [] +// GroupAnagrams: Empty array - no anagrams to group +const groupAnagrams = new GroupAnagramsStrategy() +exec<'groupAnagrams'>(groupAnagrams, { strings: [] }) // ➞ [] // MaximumSumSubArray: Edge Case 1000000 -const maxSumSubarray = new MaximumSumSubArrayStrategy(); -exec<'maxSumSubarray'>(maxSumSubarray, { nums: [1000000, -1000000, 1000000] }); // ➞ 1000000 +const maxSumSubarray = new MaximumSumSubArrayStrategy() +exec<'maxSumSubarray'>(maxSumSubarray, { nums: [1000000, -1000000, 1000000] }) // ➞ 1000000 -// CountHillsAndValleys: All elements are the same -const countHillsAndValleys = new CountHillsAndValleysStrategy(); -exec<'countHillsAndValley'>(countHillsAndValleys, { nums: [5, 5, 5, 5, 5] }); // ➞ 0 +// CountHillsAndValleys: All elements are the same +const countHillsAndValleys = new CountHillsAndValleysStrategy() +exec<'countHillsAndValley'>(countHillsAndValleys, { nums: [5, 5, 5, 5, 5] }) // ➞ 0 // MaximumProductSubArray: Expected 0 as output -const maximumProductSubarray = new MaximumProductSubArrayStrategy(); -exec<'maxProductSubarray'>(maximumProductSubarray, { nums: [-2, 0 - 2] }); // ➞ 4 +const maximumProductSubarray = new MaximumProductSubArrayStrategy() +exec<'maxProductSubarray'>(maximumProductSubarray, { nums: [-2, 0 - 2] }) // ➞ 4 -//RotatedArraySearch: Edge Case handling with all Duplicate -const rotatedArraySearch = new RotatedArraySearchStrategy(); -exec<'rotatedArraySearch'>(rotatedArraySearch, { nums: [1, 1, 3, 1, 1], target: 3 }); +// RotatedArraySearch: Edge Case handling with all Duplicate +const rotatedArraySearch = new RotatedArraySearchStrategy() +exec<'rotatedArraySearch'>(rotatedArraySearch, { nums: [1, 1, 3, 1, 1], target: 3 }) -//ZeroFilledSubArray: Expected 6 as output -const zeroFilledSubArray = new zeroFilledSubArrayStrategy(); -exec<'zeroFilledSubArray'>(zeroFilledSubArray, { nums: [1, 3, 0, 0, 2, 0, 0, 4] }); +// ZeroFilledSubArray: Expected 6 as output +const zeroFilledSubArray = new ZeroFilledSubArrayStrategy() +exec<'zeroFilledSubArray'>(zeroFilledSubArray, { nums: [1, 3, 0, 0, 2, 0, 0, 4] }) -//LongestCommonPrefix: Expected "" as output -const longestCommonPrefix = new LongestCommonPrefixStrategy(); -exec<'longestCommonPrefix'>(longestCommonPrefix, { array: ["hello", "", "world", "help"] }); +// LongestCommonPrefix: Expected "" as output +const longestCommonPrefix = new LongestCommonPrefixStrategy() +exec<'longestCommonPrefix'>(longestCommonPrefix, { array: ['hello', '', 'world', 'help'] }) -//SumsUpToZero: Expected [-1, 0, 1] as output -const sumUpToZero = new SumsUpToZeroStrategy(); -exec<'sumsUpToZero'>(sumUpToZero, { length: 3 }); +// SumsUpToZero: Expected [-1, 0, 1] as output +const sumUpToZero = new SumsUpToZeroStrategy() +exec<'sumsUpToZero'>(sumUpToZero, { length: 3 }) -//BestTimeToBuyAndSellStock: Expected 0 as output -const bestTimeToBuyAndSell = new BestTimeToBuyAndSellStockStrategy(); -exec<'bestTimeToSell'>(bestTimeToBuyAndSell, { array: [9, 7, 5, 3, 1] }); +// BestTimeToBuyAndSellStock: Expected 0 as output +const bestTimeToBuyAndSell = new BestTimeToBuyAndSellStockStrategy() +exec<'bestTimeToSell'>(bestTimeToBuyAndSell, { array: [9, 7, 5, 3, 1] }) -//CountElementsWithMostFrequency: Expected 4 as output -const countElemWithMostFre = new CountElementsWithMaximumFrequencyStrategy(); -exec<"countElemWithMostFrequency">(countElemWithMostFre, { array: [1, 2, 2, 3, 1, 4] }); +// CountElementsWithMostFrequency: Expected 4 as output +const countElemWithMostFre = new CountElementsWithMaximumFrequencyStrategy() +exec<'countElemWithMostFrequency'>(countElemWithMostFre, { array: [1, 2, 2, 3, 1, 4] }) -//Permutations: Expected [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] as output in any order -const permutations = new PermutationsStrategy(); -exec<'nextPermutation'>(permutations, { nums: [1, 2, 3] }); +// Permutations: Expected [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] as output in any order +const permutations = new PermutationsStrategy() +exec<'nextPermutation'>(permutations, { nums: [1, 2, 3] }) -//Consecutive Odds: Expected true -const consecutiveOdds = new ConsecutiveOddsStrategy(); -exec<'consecutiveOdds'>(consecutiveOdds, { array: [0, 0, 0, 0, 0, 1, 23, 5, 0, 0, 0, 7, 5, 3] }); \ No newline at end of file +// Consecutive Odds: Expected true +const consecutiveOdds = new ConsecutiveOddsStrategy() +exec<'consecutiveOdds'>(consecutiveOdds, { array: [0, 0, 0, 0, 0, 1, 23, 5, 0, 0, 0, 7, 5, 3] }) diff --git a/src/modules/leetCodeStyle/pointers/containerWithMostWater.ts b/src/modules/leetCodeStyle/pointers/containerWithMostWater.ts index ed2f381..a7b1df6 100644 --- a/src/modules/leetCodeStyle/pointers/containerWithMostWater.ts +++ b/src/modules/leetCodeStyle/pointers/containerWithMostWater.ts @@ -1,22 +1,22 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { containerWithMostWaterParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { containerWithMostWaterParams } from '../types' export class ContainerWithMostWaterStrategy implements BaseSingleArrayExecutionStrategy<'containerWithMostWater'> { - contextFunction(params: containerWithMostWaterParams): any { - const { nums } = params; - let left = 0; - let right = nums.length - 1; - let maxArea = -Infinity; - while (left < right) { - let distance = right - left; - let area = Math.floor(Math.min(nums[left], nums[right]) * distance); - maxArea = Math.max(area, maxArea); - if (nums[right] > nums[left]) { - left++; - } else { - right--; - } - } - return maxArea; + contextFunction (params: containerWithMostWaterParams): any { + const { nums } = params + let left = 0 + let right = nums.length - 1 + let maxArea = -Infinity + while (left < right) { + const distance = right - left + const area = Math.floor(Math.min(nums[left], nums[right]) * distance) + maxArea = Math.max(area, maxArea) + if (nums[right] > nums[left]) { + left++ + } else { + right-- + } } -} \ No newline at end of file + return maxArea + } +} diff --git a/src/modules/leetCodeStyle/pointers/fourSum.ts b/src/modules/leetCodeStyle/pointers/fourSum.ts index 356b415..c99ed3b 100644 --- a/src/modules/leetCodeStyle/pointers/fourSum.ts +++ b/src/modules/leetCodeStyle/pointers/fourSum.ts @@ -1,33 +1,33 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { fourSumParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { fourSumParams } from '../types' export class FourSumStrategy implements BaseSingleArrayExecutionStrategy<'fourSum'> { - contextFunction(params: fourSumParams): any { - const { nums, target } = params; - const result = []; - nums.sort((a: number, b: number) => a - b); - for (let i = 0; i < nums.length - 3; i++) { - if (i > 0 && nums[i] == nums[i - 1]) continue; - for (let j = i + 1; j < nums.length - 2; j++) { - if (j > i + 1 && nums[j] == nums[j - 1]) continue; - let k = j + 1; - let l = nums.length - 1; - while (k < l) { - const sum = nums[i] + nums[j] + nums[k] + nums[l]; - if (sum == target) { - result.push([nums[i], nums[j], nums[k], nums[l]]); - while (k < l && nums[k] == nums[k - 1]) k++; - while (k < l && nums[l] == nums[l + 1]) l--; - k++; - l--; - } else if (sum < target) { - k++; - } else { - l--; - } - } - } + contextFunction (params: fourSumParams): any { + const { nums, target } = params + const result = [] + nums.sort((a: number, b: number) => a - b) + for (let i = 0; i < nums.length - 3; i++) { + if (i > 0 && nums[i] === nums[i - 1]) continue + for (let j = i + 1; j < nums.length - 2; j++) { + if (j > i + 1 && nums[j] === nums[j - 1]) continue + let k = j + 1 + let l = nums.length - 1 + while (k < l) { + const sum = nums[i] + nums[j] + nums[k] + nums[l] + if (sum === target) { + result.push([nums[i], nums[j], nums[k], nums[l]]) + while (k < l && nums[k] === nums[k - 1]) k++ + while (k < l && nums[l] === nums[l + 1]) l-- + k++ + l-- + } else if (sum < target) { + k++ + } else { + l-- + } } - return result; + } } -} \ No newline at end of file + return result + } +} diff --git a/src/modules/leetCodeStyle/pointers/hillsAndValleysCount.ts b/src/modules/leetCodeStyle/pointers/hillsAndValleysCount.ts index 058adca..d7fd53d 100644 --- a/src/modules/leetCodeStyle/pointers/hillsAndValleysCount.ts +++ b/src/modules/leetCodeStyle/pointers/hillsAndValleysCount.ts @@ -1,30 +1,29 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { countHillsAndValleysParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { countHillsAndValleysParams } from '../types' export class CountHillsAndValleysStrategy implements BaseSingleArrayExecutionStrategy<'countHillsAndValley'> { - contextFunction(params: countHillsAndValleysParams): any { - const { nums } = params; + contextFunction (params: countHillsAndValleysParams): any { + const { nums } = params - let count = 0; + let count = 0 - for (let i = 1; i < nums.length - 1; i++) { + for (let i = 1; i < nums.length - 1; i++) { + if (nums[i] === nums[i - 1]) continue - if (nums[i] == nums[i - 1]) continue; + let left = i - 1 + while (left >= 0 && nums[left] === nums[i]) { + left-- + } - let left = i - 1; - while (left >= 0 && nums[left] == nums[i]) { - left--; - } + let right = i + 1 + while (right < nums.length && nums[right] === nums[i]) { + right++ + } - let right = i + 1; - while (right < nums.length && nums[right] == nums[i]) { - right++; - } - - if ((nums[left] < nums[i] && nums[i] > nums[right]) || (nums[left] > nums[i] && nums[i] < nums[right])) { - count++; - } - } - return count; + if ((nums[left] < nums[i] && nums[i] > nums[right]) || (nums[left] > nums[i] && nums[i] < nums[right])) { + count++ + } } -} \ No newline at end of file + return count + } +} diff --git a/src/modules/leetCodeStyle/pointers/maxProductSubarry.ts b/src/modules/leetCodeStyle/pointers/maxProductSubarry.ts index 44f6d9d..d7235b7 100644 --- a/src/modules/leetCodeStyle/pointers/maxProductSubarry.ts +++ b/src/modules/leetCodeStyle/pointers/maxProductSubarry.ts @@ -1,26 +1,24 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { maxProductSubarrayParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { maxProductSubarrayParams } from '../types' export class MaximumProductSubArrayStrategy implements BaseSingleArrayExecutionStrategy<'maxProductSubarray'> { - contextFunction(params: maxProductSubarrayParams): any { - const { nums } = params; - let maxProduct = nums[0]; - let minProduct = nums[0]; - let result = nums[0]; + contextFunction (params: maxProductSubarrayParams): any { + const { nums } = params + let maxProduct = nums[0] + let minProduct = nums[0] + let result = nums[0] - for (let i = 1; i < nums.length; i++) { + for (let i = 1; i < nums.length; i++) { + if (nums[i] < 0) { + [maxProduct, minProduct] = [minProduct, maxProduct] + } - if (nums[i] < 0) { - [maxProduct, minProduct] = [minProduct, maxProduct] - } - - maxProduct = Math.max(nums[i], maxProduct * nums[i]); - minProduct = Math.min(nums[i], minProduct * nums[i]); - - result = Math.max(maxProduct, result); - } - - return result; + maxProduct = Math.max(nums[i], maxProduct * nums[i]) + minProduct = Math.min(nums[i], minProduct * nums[i]) + result = Math.max(maxProduct, result) } -} \ No newline at end of file + + return result + } +} diff --git a/src/modules/leetCodeStyle/pointers/threeSum.ts b/src/modules/leetCodeStyle/pointers/threeSum.ts index cd794b8..aed1c53 100644 --- a/src/modules/leetCodeStyle/pointers/threeSum.ts +++ b/src/modules/leetCodeStyle/pointers/threeSum.ts @@ -1,30 +1,30 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { threeSumParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { threeSumParams } from '../types' export class ThreeSumStrategy implements BaseSingleArrayExecutionStrategy<'threeSum'> { - contextFunction(params: threeSumParams): any { - const { nums } = params; - let result = []; - nums.sort((a: number, b: number) => a - b); - for (let i = 0; i < nums.length - 2; i++) { - if (i > 0 && nums[i] == nums[i - 1]) continue; - let j = i + 1; - let k = nums.length - 1; - while (j < k) { - let sum = nums[i] + nums[j] + nums[k]; - if (sum === 0) { - result.push([nums[i], nums[j], nums[k]]); - while (nums[j] == nums[j + 1]) j++; - while (nums[k] == nums[k - 1]) k--; - j++; - k--; - } else if (sum < 0) { - j++; - } else { - k--; - } - } + contextFunction (params: threeSumParams): any { + const { nums } = params + const result = [] + nums.sort((a: number, b: number) => a - b) + for (let i = 0; i < nums.length - 2; i++) { + if (i > 0 && nums[i] === nums[i - 1]) continue + let j = i + 1 + let k = nums.length - 1 + while (j < k) { + const sum = nums[i] + nums[j] + nums[k] + if (sum === 0) { + result.push([nums[i], nums[j], nums[k]]) + while (nums[j] === nums[j + 1]) j++ + while (nums[k] === nums[k - 1]) k-- + j++ + k-- + } else if (sum < 0) { + j++ + } else { + k-- } - return result; + } } -} \ No newline at end of file + return result + } +} diff --git a/src/modules/leetCodeStyle/pointers/threeSumClosest.ts b/src/modules/leetCodeStyle/pointers/threeSumClosest.ts index 499fb47..fb84b77 100644 --- a/src/modules/leetCodeStyle/pointers/threeSumClosest.ts +++ b/src/modules/leetCodeStyle/pointers/threeSumClosest.ts @@ -1,29 +1,29 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { threeSumClosestParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { threeSumClosestParams } from '../types' export class ThreeSumClosestStrategy implements BaseSingleArrayExecutionStrategy<'threeSumClosest'> { - contextFunction(params: threeSumClosestParams): any { - const { nums, target } = params; - nums.sort((a: number, b: number) => a - b); - let closest = -Infinity; - for (let i = 0; i < nums.length - 2; i++) { - if (i > 0 && nums[i] == nums[i - 1]) continue; - let j = i + 1; - let k = nums.length - 1; - while (j < k) { - const sum = nums[i] + nums[j] + nums[k]; - if (Math.abs(sum - target) < Math.abs(closest - target)) { - closest = sum; - } - if (sum < target) { - j++; - } else if (sum > target) { - k--; - } else { - return sum; - } - } + contextFunction (params: threeSumClosestParams): any { + const { nums, target } = params + nums.sort((a: number, b: number) => a - b) + let closest = -Infinity + for (let i = 0; i < nums.length - 2; i++) { + if (i > 0 && nums[i] === nums[i - 1]) continue + let j = i + 1 + let k = nums.length - 1 + while (j < k) { + const sum = nums[i] + nums[j] + nums[k] + if (Math.abs(sum - target) < Math.abs(closest - target)) { + closest = sum } - return closest; + if (sum < target) { + j++ + } else if (sum > target) { + k-- + } else { + return sum + } + } } -} \ No newline at end of file + return closest + } +} diff --git a/src/modules/leetCodeStyle/search/binarySearch.ts b/src/modules/leetCodeStyle/search/binarySearch.ts index 1acb2c1..040fe5f 100644 --- a/src/modules/leetCodeStyle/search/binarySearch.ts +++ b/src/modules/leetCodeStyle/search/binarySearch.ts @@ -1,21 +1,21 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import type { binarySearchParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import type { binarySearchParams } from '../types' export class BinarySearchStrategy implements BaseSingleArrayExecutionStrategy<'binarySearch'> { - contextFunction(params: binarySearchParams): any { - const { nums, target } = params; - let left = 0; - let right = nums.length - 1; + contextFunction (params: binarySearchParams): any { + const { nums, target } = params + let left = 0 + let right = nums.length - 1 while (left <= right) { - const mid = Math.floor((left + right) / 2); + const mid = Math.floor((left + right) / 2) if (nums[mid] === target) { - return Promise.resolve(mid); + return Promise.resolve(mid) } else if (nums[mid] < target) { - left = mid + 1; + left = mid + 1 } else { - right = mid - 1; + right = mid - 1 } } - return -1; + return -1 } } diff --git a/src/modules/leetCodeStyle/search/findInsertPosition.ts b/src/modules/leetCodeStyle/search/findInsertPosition.ts index 6a88af5..c4b0c0b 100644 --- a/src/modules/leetCodeStyle/search/findInsertPosition.ts +++ b/src/modules/leetCodeStyle/search/findInsertPosition.ts @@ -1,20 +1,20 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { findInsertPositionParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { findInsertPositionParams } from '../types' export class FindInsertPositionStrategy implements BaseSingleArrayExecutionStrategy<'findInsertPosition'> { - contextFunction(params: findInsertPositionParams): any { - const { nums, target } = params; - let left = 0, right = nums.length - 1; - while (left <= right) { - let mid = Math.floor((left + right) / 2); - if (nums[mid] == target) { - return mid; - } else if (nums[mid] < target) { - left++; - } else { - right--; - } - } - return left; + contextFunction (params: findInsertPositionParams): any { + const { nums, target } = params + let left = 0; let right = nums.length - 1 + while (left <= right) { + const mid = Math.floor((left + right) / 2) + if (nums[mid] === target) { + return mid + } else if (nums[mid] < target) { + left++ + } else { + right-- + } } -} \ No newline at end of file + return left + } +} diff --git a/src/modules/leetCodeStyle/search/rotatedArraySearch.ts b/src/modules/leetCodeStyle/search/rotatedArraySearch.ts index 575b109..c9d5e34 100644 --- a/src/modules/leetCodeStyle/search/rotatedArraySearch.ts +++ b/src/modules/leetCodeStyle/search/rotatedArraySearch.ts @@ -1,34 +1,34 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { rotatedArraySearchParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { rotatedArraySearchParams } from '../types' export class RotatedArraySearchStrategy implements BaseSingleArrayExecutionStrategy<'rotatedArraySearch'> { - contextFunction(params: rotatedArraySearchParams): any { - const { nums, target } = params; - let left = 0; - let right = nums.length - 1; + contextFunction (params: rotatedArraySearchParams): any { + const { nums, target } = params + let left = 0 + let right = nums.length - 1 - while (left <= right) { - let mid = Math.floor((left + right) / 2); + while (left <= right) { + const mid = Math.floor((left + right) / 2) - if (nums[mid] == target) { - return mid; - } + if (nums[mid] === target) { + return mid + } - if (nums[left] < nums[mid]) { - if (nums[left] <= target && target <= nums[mid]) { - right = mid - 1; - } else { - left = mid + 1; - } - } else { - if (nums[mid] <= target && target <= nums[right]) { - left = mid + 1; - } else { - right = mid - 1; - } - } + if (nums[left] < nums[mid]) { + if (nums[left] <= target && target <= nums[mid]) { + right = mid - 1 + } else { + left = mid + 1 } - - return -1; + } else { + if (nums[mid] <= target && target <= nums[right]) { + left = mid + 1 + } else { + right = mid - 1 + } + } } -} \ No newline at end of file + + return -1 + } +} diff --git a/src/modules/leetCodeStyle/slidingWindow/longSubStringNoDup.ts b/src/modules/leetCodeStyle/slidingWindow/longSubStringNoDup.ts index 27c368c..aabae86 100644 --- a/src/modules/leetCodeStyle/slidingWindow/longSubStringNoDup.ts +++ b/src/modules/leetCodeStyle/slidingWindow/longSubStringNoDup.ts @@ -1,18 +1,18 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { longSubStringNoDupParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { longSubStringNoDupParams } from '../types' export class LongestSubStrWithNoRepeatCharStrategy implements BaseSingleArrayExecutionStrategy<'longestSubStringNoDup'> { - contextFunction(params: longSubStringNoDupParams): any { - const { s } = params; - let left = 0, map = new Map(), max = 0; - for (let i = 0; i < s.length; i++) { - while (map.has(s[i])) { - map.delete(s[left]); - left++ - } - map.set(s[i], i); - max = Math.max(i - left + 1, max); - } - return max; + contextFunction (params: longSubStringNoDupParams): any { + const { s } = params + let left = 0; const map = new Map(); let max = 0 + for (let i = 0; i < s.length; i++) { + while (map.has(s[i])) { + map.delete(s[left]) + left++ + } + map.set(s[i], i) + max = Math.max(i - left + 1, max) } -} \ No newline at end of file + return max + } +} diff --git a/src/modules/leetCodeStyle/slidingWindow/longestCommonPrefix.ts b/src/modules/leetCodeStyle/slidingWindow/longestCommonPrefix.ts index 312ddb5..f5c2804 100644 --- a/src/modules/leetCodeStyle/slidingWindow/longestCommonPrefix.ts +++ b/src/modules/leetCodeStyle/slidingWindow/longestCommonPrefix.ts @@ -1,18 +1,18 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { longestCommonPrefixParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { longestCommonPrefixParams } from '../types' export class LongestCommonPrefixStrategy implements BaseSingleArrayExecutionStrategy<'longestCommonPrefix'> { - contextFunction(params: longestCommonPrefixParams): any { - const { array } = params; - if (!array.length) return ""; - const sortedLen = array.sort((a, b) => b.length - a.length); - let currentWin = sortedLen[0]; - for (let i = 1; i < sortedLen.length; i++) { - while (!sortedLen[i].startsWith(currentWin)) { - currentWin = currentWin.slice(0, -1); - if (currentWin == "") return ""; - } - } - return currentWin; + contextFunction (params: longestCommonPrefixParams): any { + const { array } = params + if (!array.length) return '' + const sortedLen = array.sort((a, b) => b.length - a.length) + let currentWin = sortedLen[0] + for (let i = 1; i < sortedLen.length; i++) { + while (!sortedLen[i].startsWith(currentWin)) { + currentWin = currentWin.slice(0, -1) + if (currentWin === '') return '' + } } -} \ No newline at end of file + return currentWin + } +} diff --git a/src/modules/leetCodeStyle/slidingWindow/minSizeSubarraySum.ts b/src/modules/leetCodeStyle/slidingWindow/minSizeSubarraySum.ts index dd38252..fbc9bb8 100644 --- a/src/modules/leetCodeStyle/slidingWindow/minSizeSubarraySum.ts +++ b/src/modules/leetCodeStyle/slidingWindow/minSizeSubarraySum.ts @@ -1,18 +1,18 @@ -import { BaseSingleArrayExecutionStrategy } from "../../../Executors/types/arrays"; -import { minSizeSubarraySumParams } from "../types"; +import { BaseSingleArrayExecutionStrategy } from '../../../Executors/types/arrays' +import { minSizeSubarraySumParams } from '../types' export class MinimumSizeSubarraySumStrategy implements BaseSingleArrayExecutionStrategy<'minSizeSubarrSum'> { - contextFunction(params: minSizeSubarraySumParams): any { - const { nums, target } = params; - let left = 0, min = Infinity, sum = 0; - for (let i = 0; i < nums.length; i++) { - sum += nums[i]; - while (sum >= target) { - min = Math.min(min, i - left + 1); - sum -= nums[left]; - left++; - } - } - return min === Infinity ? 0 : min; + contextFunction (params: minSizeSubarraySumParams): any { + const { nums, target } = params + let left = 0; let min = Infinity; let sum = 0 + for (let i = 0; i < nums.length; i++) { + sum += nums[i] + while (sum >= target) { + min = Math.min(min, i - left + 1) + sum -= nums[left] + left++ + } } -} \ No newline at end of file + return min === Infinity ? 0 : min + } +} diff --git a/src/modules/leetCodeStyle/types.ts b/src/modules/leetCodeStyle/types.ts index 2694429..1801cc1 100644 --- a/src/modules/leetCodeStyle/types.ts +++ b/src/modules/leetCodeStyle/types.ts @@ -95,4 +95,4 @@ export type countElementsWithMaximumFrequencyParams = { export type consecutiveOddsParams = { array: Array; -} \ No newline at end of file +}