From 710c78d8a5c4a1a4c0ca02f6e2cd5041e1e6e263 Mon Sep 17 00:00:00 2001 From: Chris Cowan Date: Mon, 18 Sep 2023 11:36:11 -0700 Subject: [PATCH] convert to Typescript --- .babelrc | 2 +- .eslintignore | 3 +- .eslintrc.js | 11 +- .flowconfig | 14 - .gitignore | 2 +- .mocharc.yaml | 1 - .mocharc.yml | 4 + .npmignore | 2 +- .vscode/settings.json | 8 + README.md | 3 +- flow-libs/mocha.js | 8 - index.d.ts | 48 ---- package.json | 18 +- src/{index.js => index.ts} | 78 ++--- src/isNotNil.ts | 7 + test/babel-register.js | 4 + test/{index.js => index.test.ts} | 60 ++-- tsconfig.json | 8 +- yarn.lock | 480 ++++++++++++++++--------------- 19 files changed, 367 insertions(+), 394 deletions(-) delete mode 100644 .flowconfig delete mode 100644 .mocharc.yaml create mode 100644 .mocharc.yml create mode 100644 .vscode/settings.json delete mode 100644 flow-libs/mocha.js delete mode 100644 index.d.ts rename src/{index.js => index.ts} (85%) create mode 100644 src/isNotNil.ts create mode 100644 test/babel-register.js rename test/{index.js => index.test.ts} (87%) diff --git a/.babelrc b/.babelrc index 4c4b2d1..1a1e5f8 100644 --- a/.babelrc +++ b/.babelrc @@ -1,7 +1,7 @@ { "presets": [ "@babel/preset-env", - "@babel/preset-flow" + "@babel/preset-typescript" ], "plugins": [ "@babel/plugin-transform-runtime" diff --git a/.eslintignore b/.eslintignore index fce8e86..9b1c8b1 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1 @@ -/flow-libs -/js +/dist diff --git a/.eslintrc.js b/.eslintrc.js index 9aabc2a..045d679 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,19 +1,18 @@ /* @flow */ module.exports = { - 'parser': '@babel/eslint-parser', 'env': { 'browser': true, 'mocha': true, 'node': true, 'es6': true }, - 'extends': ['eslint:recommended'], - 'plugins': [ - 'flowtype' + 'extends': [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended' ], + 'plugins': [], 'rules': { - 'flowtype/define-flow-type': 1, - 'flowtype/require-valid-file-annotation': ['error', 'always'], + '@typescript-eslint/no-explicit-any': ['off'], 'indent': ['error', 2], 'linebreak-style': ['error', 'unix'], diff --git a/.flowconfig b/.flowconfig deleted file mode 100644 index 13a2335..0000000 --- a/.flowconfig +++ /dev/null @@ -1,14 +0,0 @@ -[ignore] -.*/node_modules/babel-.* -.*/node_modules/fbjs/.* -.*/node_modules/binary-extensions/.* -.*/node_modules/builtin-modules/.* -.*/node_modules/spdx-.*/.* -.*/node_modules/.*/\(test\|lib\|example\|samplejson\)/.*\.json - -[include] - -[libs] -flow-libs/ - -[options] diff --git a/.gitignore b/.gitignore index 3d23023..db6ef7f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,4 @@ .DS_Store /node_modules npm-debug.log -/js +/dist diff --git a/.mocharc.yaml b/.mocharc.yaml deleted file mode 100644 index 15a5e8f..0000000 --- a/.mocharc.yaml +++ /dev/null @@ -1 +0,0 @@ -require: '@babel/register' diff --git a/.mocharc.yml b/.mocharc.yml new file mode 100644 index 0000000..5982ca0 --- /dev/null +++ b/.mocharc.yml @@ -0,0 +1,4 @@ +require: "test/babel-register.js" +extension: + - ts +spec: "test/**/*.test.ts" diff --git a/.npmignore b/.npmignore index 7b18977..4dbcd5b 100644 --- a/.npmignore +++ b/.npmignore @@ -1,9 +1,9 @@ *~ .DS_Store -/flow-libs /node_modules npm-debug.log /src /test /yarn.lock .babelrc +tsconfig.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..a07ac29 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "eslint.validate": [ + "javascript", + "javascriptreact", + "typescript", + "typescriptreact" + ] +} diff --git a/README.md b/README.md index 9997a67..43cb699 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,5 @@ uses it for building interactive menus. ## Types -Both [TypeScript](https://www.typescriptlang.org/) and -[Flow](https://flowtype.org/) type definitions for this module are included! +[TypeScript](https://www.typescriptlang.org/) type definitions for this module are included! The type definitions won't require any configuration to use. diff --git a/flow-libs/mocha.js b/flow-libs/mocha.js deleted file mode 100644 index affd1ef..0000000 --- a/flow-libs/mocha.js +++ /dev/null @@ -1,8 +0,0 @@ -declare function describe(name: string, fn: (done: (err: any) => void) => ?Promise): void; -declare function xdescribe(name: string, fn: (done: (err: any) => void) => ?Promise): void; -declare function before(fn: (done: (err: any) => void) => ?Promise): void; -declare function beforeEach(fn: (done: (err: any) => void) => ?Promise): void; -declare function after(fn: (done: (err: any) => void) => ?Promise): void; -declare function afterEach(fn: (done: (err: any) => void) => ?Promise): void; -declare function it(name: string, fn: (done: (err: any) => void) => ?Promise): void; -declare function xit(name: string, fn: (done: (err: any) => void) => ?Promise): void; diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index 9684c66..0000000 --- a/index.d.ts +++ /dev/null @@ -1,48 +0,0 @@ -export type PositionOption = 'top'|'bottom'|'left'|'right'|'cover'; -export type HAlignOption = 'center'|'left'|'right'; -export type VAlignOption = 'center'|'top'|'bottom'; - -export type Position = PositionOption | PositionOption[]; -export type HAlign = HAlignOption | HAlignOption[]; -export type VAlign = VAlignOption | VAlignOption[]; -export interface Choice { - position: PositionOption; - hAlign: HAlignOption; - vAlign: VAlignOption; -} - -export interface Coordinates { - top: number; - left: number; -} - -export interface ChoiceAndCoordinates { - choice: Choice; - coordinates: Coordinates; -} - -export interface Options { - position?: Position | null | undefined; - forcePosition?: boolean | null | undefined; - hAlign?: HAlign | null | undefined; - forceHAlign?: boolean | null | undefined; - vAlign?: VAlign | null | undefined; - forceVAlign?: boolean | null | undefined; - buffer?: number | null | undefined; - topBuffer?: number | null | undefined; - bottomBuffer?: number | null | undefined; - leftBuffer?: number | null | undefined; - rightBuffer?: number | null | undefined; -} - -export function containByScreen( - element: HTMLElement, - anchorPoint: HTMLElement, - options: Options -): Choice; - -export function getContainByScreenResults( - element: HTMLElement, - anchorPoint: HTMLElement, - options: Options -): ChoiceAndCoordinates; diff --git a/package.json b/package.json index f1ee58a..9e6ac4a 100644 --- a/package.json +++ b/package.json @@ -2,12 +2,11 @@ "name": "contain-by-screen", "version": "2.0.0", "description": "Position a dropdown element near a button in a way that fits on the screen.", - "main": "js/index.js", + "main": "dist/src/index.js", "sideEffects": false, "scripts": { - "prepare": "rimraf js && babel -s true -d js/ src/ && flow-copy-source -v src js", - "test": "yarn run lint && yarn run flow_check && mocha && tsc", - "flow_check": "flow check", + "prepare": "rimraf dist && babel -s true -d dist/src/ src/ -x .ts,.tsx --ignore '**/*.test.ts,**/*.test.tsx' && tsc", + "test": "yarn run lint && mocha && tsc --noEmit --emitDeclarationOnly false", "lint": "eslint .", "lint-fix": "eslint . --fix" }, @@ -34,21 +33,22 @@ "devDependencies": { "@babel/cli": "^7.0.0", "@babel/core": "^7.0.0", - "@babel/eslint-parser": "^7.18.9", "@babel/plugin-transform-runtime": "^7.0.0", "@babel/preset-env": "^7.0.0", - "@babel/preset-flow": "^7.0.0", + "@babel/preset-typescript": "^7.22.15", "@babel/register": "^7.0.0", + "@types/mocha": "^10.0.1", + "@types/node": "^20.6.2", + "@typescript-eslint/eslint-plugin": "^6.7.2", + "@typescript-eslint/parser": "^6.7.2", "eslint": "^8.23.0", - "eslint-plugin-flowtype": "^8.0.3", - "flow-bin": "^0.81.0", - "flow-copy-source": "^2.0.0", "mocha": "^10.0.0", "rimraf": "^5.0.1", "typescript": "^5.2.2" }, "dependencies": { "@babel/runtime": "^7.0.0", + "@types/lodash": "^4.14.198", "envify": "^4.1.0", "lodash": "^4.6.1" } diff --git a/src/index.js b/src/index.ts similarity index 85% rename from src/index.js rename to src/index.ts index 21ef8fc..a4924e3 100644 --- a/src/index.js +++ b/src/index.ts @@ -1,7 +1,6 @@ -/* @flow */ - import flatten from 'lodash/flatten'; import uniq from 'lodash/uniq'; +import { isNotNil } from './isNotNil'; export type PositionOption = 'top'|'bottom'|'left'|'right'|'cover'; export type HAlignOption = 'center'|'left'|'right'; @@ -10,44 +9,44 @@ export type VAlignOption = 'center'|'top'|'bottom'; export type Position = PositionOption | PositionOption[]; export type HAlign = HAlignOption | HAlignOption[]; export type VAlign = VAlignOption | VAlignOption[]; -export type Choice = { +export interface Choice { position: PositionOption; hAlign: HAlignOption; vAlign: VAlignOption; -}; +} -export type Coordinates = { +export interface Coordinates { top: number; left: number; -}; +} -export type ChoiceAndCoordinates = { +export interface ChoiceAndCoordinates { choice: Choice; coordinates: Coordinates; -}; - -export type Options = { - position?: ?Position; - forcePosition?: ?boolean; - hAlign?: ?HAlign; - forceHAlign?: ?boolean; - vAlign?: ?VAlign; - forceVAlign?: ?boolean; - buffer?: ?number; - topBuffer?: ?number; - bottomBuffer?: ?number; - leftBuffer?: ?number; - rightBuffer?: ?number; -}; - -type Rect = { // Similar to ClientRect, but not a class +} + +export interface Options { + position?: Position | null; + forcePosition?: boolean | null; + hAlign?: HAlign | null; + forceHAlign?: boolean | null; + vAlign?: VAlign | null; + forceVAlign?: boolean | null; + buffer?: number | null; + topBuffer?: number | null; + bottomBuffer?: number | null; + leftBuffer?: number | null; + rightBuffer?: number | null; +} + +interface Rect { top: number; bottom: number; height: number; left: number; right: number; width: number; -}; +} export function containByScreen( element: HTMLElement, @@ -82,9 +81,9 @@ export function getContainByScreenResults(element: HTMLElement, anchorPoint: HTM right: options.rightBuffer || 0 }; - const optionPositions = Array.isArray(options.position) ? options.position : [options.position].filter(Boolean); - const optionHAligns = Array.isArray(options.hAlign) ? options.hAlign : [options.hAlign].filter(Boolean); - const optionVAligns = Array.isArray(options.vAlign) ? options.vAlign : [options.vAlign].filter(Boolean); + const optionPositions = Array.isArray(options.position) ? options.position : [options.position].filter(isNotNil); + const optionHAligns = Array.isArray(options.hAlign) ? options.hAlign : [options.hAlign].filter(isNotNil); + const optionVAligns = Array.isArray(options.vAlign) ? options.vAlign : [options.vAlign].filter(isNotNil); const positions: PositionOption[] = optionPositions.length > 0 && options.forcePosition ? optionPositions : @@ -96,9 +95,9 @@ export function getContainByScreenResults(element: HTMLElement, anchorPoint: HTM optionVAligns : uniq(optionVAligns.concat(['center','top','bottom'])); - const allPossibleChoices = flatten(positions.map(position => + const allPossibleChoices: Choice[] = flatten(positions.map(position => (position === 'cover') ? - flatten(hAligns.map(hAlign => vAligns.map(vAlign => ({position, hAlign, vAlign})))) : + flatten(hAligns.map(hAlign => vAligns.map(vAlign => ({position, hAlign, vAlign} as Choice)))) : (position === 'top' || position === 'bottom') ? hAligns.map(hAlign => ({position, hAlign, vAlign: 'center'})) : vAligns.map(vAlign => ({position, hAlign: 'center', vAlign})) @@ -140,15 +139,24 @@ function getBoundingClientRect(el: Element): Rect { let rect = el.getBoundingClientRect(); if (!('width' in rect)) { // IE <9 support - rect = Object.assign(({ - width: rect.right-rect.left, - height: rect.bottom-rect.top - }: Object), rect); + rect = { + width: (rect as any).right-(rect as any).left, + height: (rect as any).bottom-(rect as any).top, + ...(rect as any) + }; } return rect; } -function positionAndAlign(elRect: Rect, anchorRect: Rect, {position, hAlign, vAlign}: Choice, buffers): Coordinates { +interface Buffers { + all: number; + top: number; + bottom: number; + left: number; + right: number; +} + +function positionAndAlign(elRect: Rect, anchorRect: Rect, {position, hAlign, vAlign}: Choice, buffers: Buffers): Coordinates { let top=0, left=0; if (position === 'cover') { switch (hAlign) { diff --git a/src/isNotNil.ts b/src/isNotNil.ts new file mode 100644 index 0000000..92c28d5 --- /dev/null +++ b/src/isNotNil.ts @@ -0,0 +1,7 @@ +/** + * Type predicate to avoid opting out of strict type checking in filter operations. + * Adapted from https://stackoverflow.com/a/46700791 + */ +export function isNotNil(value: TValue | null | undefined): value is TValue { + return value != null; +} diff --git a/test/babel-register.js b/test/babel-register.js new file mode 100644 index 0000000..af4072a --- /dev/null +++ b/test/babel-register.js @@ -0,0 +1,4 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const register = require('@babel/register').default; + +register({ extensions: ['.ts', '.tsx', '.js', '.jsx'] }); diff --git a/test/index.js b/test/index.test.ts similarity index 87% rename from test/index.js rename to test/index.test.ts index f992f6f..2ab6dbc 100644 --- a/test/index.js +++ b/test/index.test.ts @@ -1,13 +1,11 @@ -/* @flow */ - import assert from 'assert'; import { containByScreen } from '../src'; -global.window = null; +(globalThis as any).window = null; class MockElement { _rect: {top: number, bottom: number, left: number, right: number}; - style: Object; + style: unknown; constructor(rect: {top: number, bottom: number, left: number, right: number}) { this._rect = rect; @@ -22,18 +20,18 @@ class MockElement { describe('containByScreen', function() { before(function() { - global.window = {innerWidth: 800, innerHeight: 600}; + (globalThis as any).window = {innerWidth: 800, innerHeight: 600}; }); after(function() { - delete global.window; + delete (globalThis as any).window; }); it('fallback', function() { const button = new MockElement({top: 10, bottom: 20, left: 30, right: 50}); const dropdown = new MockElement({top: 0, bottom: 200, left: 0, right: 100}); - containByScreen((dropdown: any), (button: any), {position: 'left', hAlign: 'center', vAlign: 'center'}); + containByScreen(dropdown as any, button as any, {position: 'left', hAlign: 'center', vAlign: 'center'}); // button is unmoved assert.deepEqual(button.style, {}); @@ -49,7 +47,7 @@ describe('containByScreen', function() { it('right, vAlign=top with buffers', function() { const button = new MockElement({top: 300, bottom: 320, left: 300, right: 350}); const dropdown = new MockElement({top: 0, bottom: 200, left: 0, right: 100}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'right', vAlign: 'top', buffer: 1, leftBuffer: 2, topBuffer: 4, bottomBuffer: 8, rightBuffer: 16 // shouldn't change anything @@ -60,7 +58,7 @@ describe('containByScreen', function() { it('left, vAlign=top with buffers', function() { const button = new MockElement({top: 300, bottom: 320, left: 300, right: 350}); const dropdown = new MockElement({top: 0, bottom: 200, left: 0, right: 100}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'left', vAlign: 'top', buffer: 1, rightBuffer: 2, topBuffer: 4, bottomBuffer: 8, leftBuffer: 16 // shouldn't change anything @@ -71,7 +69,7 @@ describe('containByScreen', function() { it('left, vAlign=bottom with buffers', function() { const button = new MockElement({top: 300, bottom: 320, left: 300, right: 350}); const dropdown = new MockElement({top: 0, bottom: 200, left: 0, right: 100}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'left', vAlign: 'bottom', buffer: 1, rightBuffer: 2, topBuffer: 4, bottomBuffer: 8, leftBuffer: 16 // shouldn't change anything @@ -82,7 +80,7 @@ describe('containByScreen', function() { it('left, vAlign=center with buffers', function() { const button = new MockElement({top: 300, bottom: 320, left: 300, right: 350}); const dropdown = new MockElement({top: 0, bottom: 200, left: 0, right: 100}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'left', vAlign: 'center', buffer: 1, rightBuffer: 2, topBuffer: 4, bottomBuffer: 8, leftBuffer: 16 // shouldn't change anything @@ -93,7 +91,7 @@ describe('containByScreen', function() { it('top, hAlign=left with buffers', function() { const button = new MockElement({top: 300, bottom: 320, left: 300, right: 350}); const dropdown = new MockElement({top: 0, bottom: 200, left: 0, right: 100}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'top', hAlign: 'left', buffer: 1, bottomBuffer: 2, topBuffer: 4, rightBuffer: 8, leftBuffer: 16 // shouldn't change anything @@ -104,7 +102,7 @@ describe('containByScreen', function() { it('bottom, hAlign=left with buffers', function() { const button = new MockElement({top: 300, bottom: 320, left: 300, right: 350}); const dropdown = new MockElement({top: 0, bottom: 200, left: 0, right: 100}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'bottom', hAlign: 'left', buffer: 1, topBuffer: 2, bottomBuffer: 4, rightBuffer: 8, leftBuffer: 16 // shouldn't change anything @@ -115,7 +113,7 @@ describe('containByScreen', function() { it('bottom, hAlign=right with buffers', function() { const button = new MockElement({top: 300, bottom: 320, left: 300, right: 350}); const dropdown = new MockElement({top: 0, bottom: 200, left: 0, right: 100}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'bottom', hAlign: 'right', buffer: 1, topBuffer: 2, bottomBuffer: 4, rightBuffer: 8, leftBuffer: 16 // shouldn't change anything @@ -126,7 +124,7 @@ describe('containByScreen', function() { it('bottom, hAlign=center with buffers', function() { const button = new MockElement({top: 300, bottom: 320, left: 300, right: 350}); const dropdown = new MockElement({top: 0, bottom: 200, left: 0, right: 100}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'bottom', hAlign: 'center', buffer: 1, topBuffer: 2, bottomBuffer: 4, rightBuffer: 8, leftBuffer: 16 // shouldn't change anything @@ -138,7 +136,7 @@ describe('containByScreen', function() { it('vAlign=top hAlign=left with buffers', function() { const button = new MockElement({top: 300, bottom: 320, left: 300, right: 350}); const dropdown = new MockElement({top: 0, bottom: 200, left: 0, right: 100}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'cover', vAlign: 'top', hAlign: 'left', buffer: 1, leftBuffer: 2, topBuffer: 4, bottomBuffer: 8, rightBuffer: 16 @@ -149,7 +147,7 @@ describe('containByScreen', function() { it('vAlign=bottom hAlign=right with buffers', function() { const button = new MockElement({top: 300, bottom: 320, left: 300, right: 350}); const dropdown = new MockElement({top: 0, bottom: 200, left: 0, right: 100}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'cover', vAlign: 'bottom', hAlign: 'right', buffer: 1, leftBuffer: 2, topBuffer: 4, bottomBuffer: 8, rightBuffer: 16 @@ -160,7 +158,7 @@ describe('containByScreen', function() { it('vAlign=center hAlign=center with buffers', function() { const button = new MockElement({top: 300, bottom: 320, left: 300, right: 350}); const dropdown = new MockElement({top: 0, bottom: 200, left: 0, right: 100}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'cover', vAlign: 'center', hAlign: 'center', buffer: 1, leftBuffer: 2, topBuffer: 4, bottomBuffer: 8, rightBuffer: 16 @@ -175,7 +173,7 @@ describe('containByScreen', function() { it('top', function() { const button = new MockElement({top: 200, bottom: 400, left: 300, right: 400}); const dropdown = new MockElement({top: 0, bottom: 190, left: 0, right: 100}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'top', hAlign: 'left', topBuffer: 11 }); assert.deepEqual(dropdown.style, {top: '205px', left: '200px'}); @@ -184,7 +182,7 @@ describe('containByScreen', function() { it('bottom', function() { const button = new MockElement({top: 200, bottom: 400, left: 300, right: 400}); const dropdown = new MockElement({top: 0, bottom: 190, left: 0, right: 100}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'bottom', hAlign: 'left', bottomBuffer: 11 }); assert.deepEqual(dropdown.style, {top: '205px', left: '200px'}); @@ -193,7 +191,7 @@ describe('containByScreen', function() { it('left', function() { const button = new MockElement({top: 300, bottom: 320, left: 300, right: 500}); const dropdown = new MockElement({top: 0, bottom: 200, left: 0, right: 290}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'left', vAlign: 'top', leftBuffer: 11 }); assert.deepEqual(dropdown.style, {top: '100px', left: '255px'}); @@ -202,7 +200,7 @@ describe('containByScreen', function() { it('right', function() { const button = new MockElement({top: 300, bottom: 320, left: 300, right: 500}); const dropdown = new MockElement({top: 0, bottom: 200, left: 0, right: 290}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'right', vAlign: 'top', rightBuffer: 11 }); assert.deepEqual(dropdown.style, {top: '100px', left: '255px'}); @@ -214,7 +212,7 @@ describe('containByScreen', function() { it('position', function() { const button = new MockElement({top: 200, bottom: 400, left: 300, right: 400}); const dropdown = new MockElement({top: 0, bottom: 190, left: 0, right: 100}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: ['top', 'bottom'], hAlign: 'left', topBuffer: 11 }); assert.deepEqual(dropdown.style, {top: '205px', left: '200px'}); @@ -223,7 +221,7 @@ describe('containByScreen', function() { it('vAlign', function() { const button = new MockElement({top: 200, bottom: 400, left: 300, right: 400}); const dropdown = new MockElement({top: 0, bottom: 190, left: 0, right: 100}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: ['top'], hAlign: ['left'], topBuffer: 11 }); assert.deepEqual(dropdown.style, {top: '205px', left: '200px'}); @@ -232,7 +230,7 @@ describe('containByScreen', function() { it('hAlign', function() { const button = new MockElement({top: 300, bottom: 320, left: 300, right: 500}); const dropdown = new MockElement({top: 0, bottom: 200, left: 0, right: 290}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'right', vAlign: ['top'], rightBuffer: 11 }); assert.deepEqual(dropdown.style, {top: '100px', left: '255px'}); @@ -244,7 +242,7 @@ describe('containByScreen', function() { const button = new MockElement({top: 100, bottom: 130, left: 100, right: 200}); const dropdown = new MockElement({top: 0, bottom: 100, left: 0, right: 100}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'cover', hAlign: 'left', vAlign: 'top' @@ -256,7 +254,7 @@ describe('containByScreen', function() { const button = new MockElement({top: 100, bottom: 130, left: 200, right: 300}); const dropdown = new MockElement({top: 0, bottom: 100, left: 0, right: 130}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'cover', hAlign: 'right', vAlign: 'top' @@ -268,7 +266,7 @@ describe('containByScreen', function() { const button = new MockElement({top: 400, bottom: 430, left: 100, right: 200}); const dropdown = new MockElement({top: 0, bottom: 100, left: 0, right: 100}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'cover', hAlign: 'left', vAlign: 'bottom' @@ -280,7 +278,7 @@ describe('containByScreen', function() { const button = new MockElement({top: 400, bottom: 430, left: 100, right: 200}); const dropdown = new MockElement({top: 0, bottom: 100, left: 0, right: 130}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'cover', hAlign: 'right', vAlign: 'bottom' @@ -292,7 +290,7 @@ describe('containByScreen', function() { const button = new MockElement({top: 400, bottom: 430, left: 100, right: 200}); const dropdown = new MockElement({top: 0, bottom: 100, left: 0, right: 130}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'cover', hAlign: 'right', vAlign: 'center' @@ -304,7 +302,7 @@ describe('containByScreen', function() { const button = new MockElement({top: 400, bottom: 430, left: 100, right: 200}); const dropdown = new MockElement({top: 0, bottom: 100, left: 0, right: 130}); - containByScreen((dropdown: any), (button: any), { + containByScreen(dropdown as any, button as any, { position: 'cover', hAlign: 'center', vAlign: 'center' diff --git a/tsconfig.json b/tsconfig.json index d3c93c7..6fa9bf8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,9 +1,13 @@ { "compilerOptions": { - "noEmit": true, + "outDir": "dist", + "rootDir": ".", + "emitDeclarationOnly": true, + "declaration": true, "strict": true, "module": "commonjs", "target": "ES2017", - "moduleResolution": "node" + "moduleResolution": "node", + "esModuleInterop": true } } diff --git a/yarn.lock b/yarn.lock index d5c0e6d..b17bf8e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -65,15 +65,6 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/eslint-parser@^7.18.9": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz#263f059c476e29ca4972481a17b8b660cb025a34" - integrity sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg== - dependencies: - "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" - eslint-visitor-keys "^2.1.0" - semver "^6.3.1" - "@babel/generator@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.15.tgz#1564189c7ec94cb8f77b5e8a90c4d200d21b2339" @@ -109,7 +100,7 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.5": +"@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.22.5": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== @@ -343,13 +334,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz#163b820b9e7696ce134df3ee716d9c0c98035859" - integrity sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-import-assertions@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" @@ -378,6 +362,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-jsx@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" + integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -434,6 +425,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-syntax-typescript@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" + integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" @@ -568,14 +566,6 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-flow-strip-types@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz#0bb17110c7bf5b35a60754b2f00c58302381dee2" - integrity sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-flow" "^7.22.5" - "@babel/plugin-transform-for-of@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" @@ -819,6 +809,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-typescript@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz#15adef906451d86349eb4b8764865c960eb54127" + integrity sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.22.5" + "@babel/plugin-transform-unicode-escapes@^7.22.10": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" @@ -936,15 +936,6 @@ core-js-compat "^3.31.0" semver "^6.3.1" -"@babel/preset-flow@^7.0.0": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.22.15.tgz#30318deb9b3ebd9f5738e96da03a531e0cd3165d" - integrity sha512-dB5aIMqpkgbTfN5vDdTRPzjqtWiZcRESNR88QYnoPR+bmdYoluOzMX9tQerTv0XzSgZYctPfO1oc0N5zdog1ew== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-transform-flow-strip-types" "^7.22.5" - "@babel/preset-modules@0.1.6-no-external-plugins": version "0.1.6-no-external-plugins" resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" @@ -954,6 +945,17 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" +"@babel/preset-typescript@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.22.15.tgz#43db30516fae1d417d748105a0bc95f637239d48" + integrity sha512-HblhNmh6yM+cU4VwbBRpxFhxsTdfS1zsvH9W+gEjD0ARV9+8B4sNfpI6GuhePti84nuvhiwKS539jKPFHskA9A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.22.15" + "@babel/plugin-transform-typescript" "^7.22.15" + "@babel/register@^7.0.0": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.22.15.tgz#c2c294a361d59f5fa7bcc8b97ef7319c32ecaec7" @@ -1011,14 +1013,14 @@ "@babel/helper-validator-identifier" "^7.22.19" to-fast-properties "^2.0.0" -"@eslint-community/eslint-utils@^4.2.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.6.1": +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": version "4.8.1" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.1.tgz#8c4bb756cc2aa7eaf13cfa5e69c83afb3260c20c" integrity sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ== @@ -1111,13 +1113,6 @@ resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b" integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ== -"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": - version "5.1.1-v1" - resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" - integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== - dependencies: - eslint-scope "5.1.1" - "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -1126,12 +1121,12 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.8": +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -1144,6 +1139,116 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@types/json-schema@^7.0.12": + version "7.0.13" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" + integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== + +"@types/lodash@^4.14.198": + version "4.14.198" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.198.tgz#4d27465257011aedc741a809f1269941fa2c5d4c" + integrity sha512-trNJ/vtMZYMLhfN45uLq4ShQSw0/S7xCTLLVM+WM1rmFpba/VS42jVUgaO3w/NOLiWR/09lnYk0yMaA/atdIsg== + +"@types/mocha@^10.0.1": + version "10.0.1" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.1.tgz#2f4f65bb08bc368ac39c96da7b2f09140b26851b" + integrity sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q== + +"@types/node@^20.6.2": + version "20.6.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.2.tgz#a065925409f59657022e9063275cd0b9bd7e1b12" + integrity sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw== + +"@types/semver@^7.5.0": + version "7.5.2" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.2.tgz#31f6eec1ed7ec23f4f05608d3a2d381df041f564" + integrity sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw== + +"@typescript-eslint/eslint-plugin@^6.7.2": + version "6.7.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.2.tgz#f18cc75c9cceac8080a9dc2e7d166008c5207b9f" + integrity sha512-ooaHxlmSgZTM6CHYAFRlifqh1OAr3PAQEwi7lhYhaegbnXrnh7CDcHmc3+ihhbQC7H0i4JF0psI5ehzkF6Yl6Q== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.7.2" + "@typescript-eslint/type-utils" "6.7.2" + "@typescript-eslint/utils" "6.7.2" + "@typescript-eslint/visitor-keys" "6.7.2" + 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" + +"@typescript-eslint/parser@^6.7.2": + version "6.7.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.7.2.tgz#e0ae93771441b9518e67d0660c79e3a105497af4" + integrity sha512-KA3E4ox0ws+SPyxQf9iSI25R6b4Ne78ORhNHeVKrPQnoYsb9UhieoiRoJgrzgEeKGOXhcY1i8YtOeCHHTDa6Fw== + dependencies: + "@typescript-eslint/scope-manager" "6.7.2" + "@typescript-eslint/types" "6.7.2" + "@typescript-eslint/typescript-estree" "6.7.2" + "@typescript-eslint/visitor-keys" "6.7.2" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@6.7.2": + version "6.7.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.7.2.tgz#cf59a2095d2f894770c94be489648ad1c78dc689" + integrity sha512-bgi6plgyZjEqapr7u2mhxGR6E8WCzKNUFWNh6fkpVe9+yzRZeYtDTbsIBzKbcxI+r1qVWt6VIoMSNZ4r2A+6Yw== + dependencies: + "@typescript-eslint/types" "6.7.2" + "@typescript-eslint/visitor-keys" "6.7.2" + +"@typescript-eslint/type-utils@6.7.2": + version "6.7.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.7.2.tgz#ed921c9db87d72fa2939fee242d700561454f367" + integrity sha512-36F4fOYIROYRl0qj95dYKx6kybddLtsbmPIYNK0OBeXv2j9L5nZ17j9jmfy+bIDHKQgn2EZX+cofsqi8NPATBQ== + dependencies: + "@typescript-eslint/typescript-estree" "6.7.2" + "@typescript-eslint/utils" "6.7.2" + debug "^4.3.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/types@6.7.2": + version "6.7.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.7.2.tgz#75a615a6dbeca09cafd102fe7f465da1d8a3c066" + integrity sha512-flJYwMYgnUNDAN9/GAI3l8+wTmvTYdv64fcH8aoJK76Y+1FCZ08RtI5zDerM/FYT5DMkAc+19E4aLmd5KqdFyg== + +"@typescript-eslint/typescript-estree@6.7.2": + version "6.7.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.2.tgz#ce5883c23b581a5caf878af641e49dd0349238c7" + integrity sha512-kiJKVMLkoSciGyFU0TOY0fRxnp9qq1AzVOHNeN1+B9erKFCJ4Z8WdjAkKQPP+b1pWStGFqezMLltxO+308dJTQ== + dependencies: + "@typescript-eslint/types" "6.7.2" + "@typescript-eslint/visitor-keys" "6.7.2" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@6.7.2": + version "6.7.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.7.2.tgz#b9ef0da6f04932167a9222cb4ac59cb187165ebf" + integrity sha512-ZCcBJug/TS6fXRTsoTkgnsvyWSiXwMNiPzBUani7hDidBdj1779qwM1FIAmpH4lvlOZNF3EScsxxuGifjpLSWQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.7.2" + "@typescript-eslint/types" "6.7.2" + "@typescript-eslint/typescript-estree" "6.7.2" + semver "^7.5.4" + +"@typescript-eslint/visitor-keys@6.7.2": + version "6.7.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.2.tgz#4cb2bd786f1f459731b0ad1584c9f73e1c7a4d5c" + integrity sha512-uVw9VIMFBUTz8rIeaUT3fFe8xIUx8r4ywAdlQv1ifH+6acn/XF8Y6rwJ7XNmkNMDrTW+7+vxFFPIF40nJCVsMQ== + dependencies: + "@typescript-eslint/types" "6.7.2" + eslint-visitor-keys "^3.4.1" + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -1211,6 +1316,11 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + babel-plugin-polyfill-corejs2@^0.4.5: version "0.4.5" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c" @@ -1260,7 +1370,7 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@~3.0.2: +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -1292,11 +1402,6 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - camelcase@^6.0.0: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" @@ -1324,7 +1429,7 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chokidar@3.5.3, chokidar@^3.0.0, chokidar@^3.4.0: +chokidar@3.5.3, chokidar@^3.4.0: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -1339,15 +1444,6 @@ chokidar@3.5.3, chokidar@^3.0.0, chokidar@^3.4.0: optionalDependencies: fsevents "~2.3.2" -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -1426,18 +1522,13 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" -debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2: +debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - decamelize@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" @@ -1453,6 +1544,13 @@ diff@5.0.0: resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -1503,22 +1601,6 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -eslint-plugin-flowtype@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz#e1557e37118f24734aa3122e7536a038d34a4912" - integrity sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ== - dependencies: - lodash "^4.17.21" - string-natural-compare "^3.0.1" - -eslint-scope@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - eslint-scope@^7.2.2: version "7.2.2" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" @@ -1527,11 +1609,6 @@ eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-visitor-keys@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" @@ -1608,11 +1685,6 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - estraverse@^5.1.0, estraverse@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" @@ -1628,6 +1700,17 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-glob@^3.2.9: + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + 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.4" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -1683,14 +1766,6 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - flat-cache@^3.0.4: version "3.1.0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.0.tgz#0e54ab4a1a60fe87e2946b6b00657f1c99e1af3f" @@ -1710,22 +1785,6 @@ flatted@^3.2.7: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== -flow-bin@^0.81.0: - version "0.81.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.81.0.tgz#7f0a733dce1dad3cb1447c692639292dc3d60bf5" - integrity sha512-5e8oL3/5rm3G0Eet3yDCne2R/TLo5Fkn+Z5MtHd4wtz+1miLC35Sgo8XvnbTmiZ9epdTZ1q6GLmJWYh7tUlfGg== - -flow-copy-source@^2.0.0: - version "2.0.9" - resolved "https://registry.yarnpkg.com/flow-copy-source/-/flow-copy-source-2.0.9.tgz#0c94ad842f2ae544d5a6b8ae720cee0b8678d742" - integrity sha512-7zX/oHSIHe8YRGiA9QIcC4SW6KF667ikdmiDfbST15up1Ona8dn7Xy0PmSrfw6ceBWDww8sRKlCLKsztStpYkQ== - dependencies: - chokidar "^3.0.0" - fs-extra "^8.1.0" - glob "^7.0.0" - kefir "^3.7.3" - yargs "^15.0.1" - foreground-child@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" @@ -1734,15 +1793,6 @@ foreground-child@^3.1.0: cross-spawn "^7.0.0" signal-exit "^4.0.1" -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-readdir-recursive@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -1768,11 +1818,18 @@ gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.1, get-caller-file@^2.0.5: +get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" @@ -1780,13 +1837,6 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - glob@7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" @@ -1810,7 +1860,7 @@ glob@^10.2.5: minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry "^1.10.1" -glob@^7.0.0, glob@^7.1.3, glob@^7.2.0: +glob@^7.1.3, glob@^7.2.0: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -1834,10 +1884,17 @@ globals@^13.19.0: dependencies: type-fest "^0.20.2" -graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + 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" graphemer@^1.4.0: version "1.4.0" @@ -1866,7 +1923,7 @@ he@1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -ignore@^5.2.0: +ignore@^5.2.0, ignore@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== @@ -2016,18 +2073,6 @@ json5@^2.2.3: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -kefir@^3.7.3: - version "3.8.8" - resolved "https://registry.yarnpkg.com/kefir/-/kefir-3.8.8.tgz#235932ddfbed422acebf5d7cba503035e9ea05c5" - integrity sha512-xWga7QCZsR2Wjy2vNL3Kq/irT+IwxwItEWycRRlT5yhqHZK2fmEhziP+LzcJBWSTAMranGKtGTQ6lFpyJS3+jA== - keyv@^4.5.3: version "4.5.3" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.3.tgz#00873d2b046df737963157bd04f294ca818c9c25" @@ -2056,13 +2101,6 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" @@ -2080,7 +2118,7 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.17.21, lodash@^4.6.1: +lodash@^4.6.1: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -2100,6 +2138,13 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + "lru-cache@^9.1.1 || ^10.0.0": version "10.0.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" @@ -2113,6 +2158,19 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + minimatch@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" @@ -2215,7 +2273,7 @@ optionator@^0.9.3: prelude-ls "^1.2.1" type-check "^0.4.0" -p-limit@^2.0.0, p-limit@^2.2.0: +p-limit@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -2236,13 +2294,6 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - p-locate@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" @@ -2295,12 +2346,17 @@ path-scurry@^1.10.1: lru-cache "^9.1.1 || ^10.0.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -2399,11 +2455,6 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -2459,6 +2510,13 @@ semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== +semver@^7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + serialize-javascript@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" @@ -2466,11 +2524,6 @@ serialize-javascript@6.0.0: dependencies: randombytes "^2.1.0" -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" @@ -2500,6 +2553,11 @@ slash@^2.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + source-map-support@^0.5.16: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -2513,11 +2571,6 @@ source-map@^0.6.0: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -string-natural-compare@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" - integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== - "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -2603,6 +2656,11 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +ts-api-utils@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" + integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -2643,11 +2701,6 @@ unicode-property-aliases-ecmascript@^2.0.0: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - update-browserslist-db@^1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" @@ -2663,11 +2716,6 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -which-module@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" - integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== - which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -2689,15 +2737,6 @@ workerpool@6.2.1: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" @@ -2712,11 +2751,6 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" @@ -2727,19 +2761,16 @@ yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yargs-parser@20.2.4: version "20.2.4" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^20.2.2: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" @@ -2768,23 +2799,6 @@ yargs@16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^15.0.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"