From ebb56b2ce814f113b469f4cf4fb7f76d7a3c4d99 Mon Sep 17 00:00:00 2001 From: Christopher Allen Date: Thu, 25 Jul 2024 17:25:24 +0100 Subject: [PATCH 01/26] docs(blocks): `block.ts` and `blocks/*` JSDoc / formatting / etc. cleanup (#8431) * docs(block): Improve documentation for well-known block methods Improve the JSDocs for the declarations of well-known block methods: - getDeveloperVariables - compose - decompose - saveConnections * docs(blocks): Improve block comments Fix JSDoc formatting in both core/block.ts and blocks/*, as well as making various other minor improvments. * chore(blocks): Remove one unexported const --- blocks/procedures.ts | 2 +- blocks/text.ts | 16 +++++++--------- core/block.ts | 36 +++++++++++++++++++++--------------- core/block_svg.ts | 20 +++++++++++++++++++- 4 files changed, 48 insertions(+), 26 deletions(-) diff --git a/blocks/procedures.ts b/blocks/procedures.ts index 1214eb55e..e2b7ba18f 100644 --- a/blocks/procedures.ts +++ b/blocks/procedures.ts @@ -1206,7 +1206,7 @@ blocks['procedures_callreturn'] = { this.appendDummyInput('TOPROW').appendField('', 'NAME'); this.setOutput(true); this.setStyle('procedure_blocks'); - // Tooltip is set in domToMutation. + // Tooltip is set in renameProcedure. this.setHelpUrl(Msg['PROCEDURES_CALLRETURN_HELPURL']); this.arguments_ = []; this.argumentVarModels_ = []; diff --git a/blocks/text.ts b/blocks/text.ts index 91a27005a..450e30087 100644 --- a/blocks/text.ts +++ b/blocks/text.ts @@ -438,6 +438,11 @@ const PROMPT_COMMON = { domToMutation: function (this: PromptCommonBlock, xmlElement: Element) { this.updateType_(xmlElement.getAttribute('type')!); }, + + // These blocks do not need JSO serialization hooks (saveExtraState + // and loadExtraState) because the state of this object is already + // encoded in the dropdown values. + // XML hooks are kept for backwards compatibility. }; blocks['text_prompt_ext'] = { @@ -468,16 +473,11 @@ blocks['text_prompt_ext'] = { : Msg['TEXT_PROMPT_TOOLTIP_NUMBER']; }); }, - - // This block does not need JSO serialization hooks (saveExtraState and - // loadExtraState) because the state of this object is already encoded in the - // dropdown values. - // XML hooks are kept for backwards compatibility. }; type PromptBlock = Block & PromptCommonMixin & QuoteImageMixin; -const TEXT_PROMPT_BLOCK = { +blocks['text_prompt'] = { ...PROMPT_COMMON, /** * Block for prompt function (internal message). @@ -520,8 +520,6 @@ const TEXT_PROMPT_BLOCK = { }, }; -blocks['text_prompt'] = TEXT_PROMPT_BLOCK; - blocks['text_count'] = { /** * Block for counting how many times one string appears within another string. @@ -666,7 +664,7 @@ const QUOTE_IMAGE_MIXIN = { * closing double quote. The selected quote will be adapted for RTL blocks. * * @param open If the image should be open quote (“ in LTR). - * Otherwise, a closing quote is used (” in LTR). + * Otherwise, a closing quote is used (” in LTR). * @returns The new field. */ newQuote_: function (this: QuoteImageBlock, open: boolean): FieldImage { diff --git a/core/block.ts b/core/block.ts index 6a911d557..6db948e48 100644 --- a/core/block.ts +++ b/core/block.ts @@ -143,24 +143,31 @@ export class Block implements IASTNodeLocation { suppressPrefixSuffix: boolean | null = false; /** - * An optional property for declaring developer variables. Return a list of - * variable names for use by generators. Developer variables are never - * shown to the user, but are declared as global variables in the generated - * code. + * An optional method for declaring developer variables, to be used + * by generators. Developer variables are never shown to the user, + * but are declared as global variables in the generated code. + * + * @returns a list of developer variable names. */ getDeveloperVariables?: () => string[]; /** - * An optional function that reconfigures the block based on the contents of - * the mutator dialog. + * An optional method that reconfigures the block based on the + * contents of the mutator dialog. + * + * @param rootBlock The root block in the mutator flyout. */ - compose?: (p1: Block) => void; + compose?: (rootBlock: Block) => void; /** - * An optional function that populates the mutator's dialog with - * this block's components. + * An optional function that populates the mutator flyout with + * blocks representing this block's configuration. + * + * @param workspace The mutator flyout's workspace. + * @returns The root block created in the flyout's workspace. */ - decompose?: (p1: Workspace) => Block; + decompose?: (workspace: Workspace) => Block; + id: string; outputConnection: Connection | null = null; nextConnection: Connection | null = null; @@ -716,7 +723,7 @@ export class Block implements IASTNodeLocation { } // Check that block is connected to new parent if new parent is not null and - // that block is not connected to superior one if new parent is null. + // that block is not connected to superior one if new parent is null. const targetBlock = (this.previousConnection && this.previousConnection.targetBlock()) || (this.outputConnection && this.outputConnection.targetBlock()); @@ -734,14 +741,13 @@ export class Block implements IASTNodeLocation { } // This block hasn't actually moved on-screen, so there's no need to - // update - // its connection locations. + // update its connection locations. if (this.parentBlock_) { // Remove this block from the old parent's child list. arrayUtils.removeElem(this.parentBlock_.childBlocks_, this); } else { - // New parent must be non-null so remove this block from the workspace's - // list of top-most blocks. + // New parent must be non-null so remove this block from the + // workspace's list of top-most blocks. this.workspace.removeTopBlock(this); } diff --git a/core/block_svg.ts b/core/block_svg.ts index 79f548caf..1a96d166a 100644 --- a/core/block_svg.ts +++ b/core/block_svg.ts @@ -92,7 +92,25 @@ export class BlockSvg static readonly COLLAPSED_WARNING_ID = 'TEMP_COLLAPSED_WARNING_'; override decompose?: (p1: Workspace) => BlockSvg; // override compose?: ((p1: BlockSvg) => void)|null; - saveConnections?: (p1: BlockSvg) => void; + + /** + * An optional method which saves a record of blocks connected to + * this block so they can be later restored after this block is + * recoomposed (reconfigured). Typically records the connected + * blocks on properties on blocks in the mutator flyout, so that + * rearranging those component blocks will automatically rearrange + * the corresponding connected blocks on this block after this block + * is recomposed. + * + * To keep the saved connection information up-to-date, MutatorIcon + * arranges for an event listener to call this method any time the + * mutator flyout is open and a change occurs on this block's + * workspace. + * + * @param rootBlock The root block in the mutator flyout. + */ + saveConnections?: (rootBlock: BlockSvg) => void; + customContextMenu?: ( p1: Array, ) => void; From 504de6a98c741c902a00d6534eb69f7c31e45b9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=84=8D=F0=9D=95=A0=F0=9D=95=9D=F0=9D=95=9D=F0=9D=95=A0?= =?UTF-8?q?=F0=9D=95=A8=20=F0=9D=95=84=F0=9D=95=92=F0=9D=95=9F?= Date: Fri, 26 Jul 2024 00:09:10 +0300 Subject: [PATCH 02/26] fix: drag strategy only clear group id set by us (#8355) Add a condition check so that we don't unset the group ID that is not set by us. Otherwise the multi-select plugin undo/redo will be broken (apply individually instead of all together) Signed-off-by: Hollow Man --- core/dragging/block_drag_strategy.ts | 10 ++++++++-- core/dragging/bubble_drag_strategy.ts | 10 ++++++++-- core/dragging/comment_drag_strategy.ts | 10 ++++++++-- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/core/dragging/block_drag_strategy.ts b/core/dragging/block_drag_strategy.ts index dc136d814..2afdba51f 100644 --- a/core/dragging/block_drag_strategy.ts +++ b/core/dragging/block_drag_strategy.ts @@ -61,6 +61,9 @@ export class BlockDragStrategy implements IDragStrategy { */ private dragOffset = new Coordinate(0, 0); + /** Was there already an event group in progress when the drag started? */ + private inGroup: boolean = false; + constructor(private block: BlockSvg) { this.workspace = block.workspace; } @@ -92,7 +95,8 @@ export class BlockDragStrategy implements IDragStrategy { } this.dragging = true; - if (!eventUtils.getGroup()) { + this.inGroup = !!eventUtils.getGroup(); + if (!this.inGroup) { eventUtils.setGroup(true); } this.fireDragStartEvent(); @@ -389,7 +393,9 @@ export class BlockDragStrategy implements IDragStrategy { this.connectionPreviewer!.dispose(); this.workspace.setResizesEnabled(true); - eventUtils.setGroup(false); + if (!this.inGroup) { + eventUtils.setGroup(false); + } } /** Connects the given candidate connections. */ diff --git a/core/dragging/bubble_drag_strategy.ts b/core/dragging/bubble_drag_strategy.ts index 7ffccddc1..f388bb94c 100644 --- a/core/dragging/bubble_drag_strategy.ts +++ b/core/dragging/bubble_drag_strategy.ts @@ -13,6 +13,9 @@ import * as layers from '../layers.js'; export class BubbleDragStrategy implements IDragStrategy { private startLoc: Coordinate | null = null; + /** Was there already an event group in progress when the drag started? */ + private inGroup: boolean = false; + constructor( private bubble: IBubble, private workspace: WorkspaceSvg, @@ -23,7 +26,8 @@ export class BubbleDragStrategy implements IDragStrategy { } startDrag(): void { - if (!eventUtils.getGroup()) { + this.inGroup = !!eventUtils.getGroup(); + if (!this.inGroup) { eventUtils.setGroup(true); } this.startLoc = this.bubble.getRelativeToSurfaceXY(); @@ -38,7 +42,9 @@ export class BubbleDragStrategy implements IDragStrategy { endDrag(): void { this.workspace.setResizesEnabled(true); - eventUtils.setGroup(false); + if (!this.inGroup) { + eventUtils.setGroup(false); + } this.workspace .getLayerManager() diff --git a/core/dragging/comment_drag_strategy.ts b/core/dragging/comment_drag_strategy.ts index 2ad5fa144..2197d37f2 100644 --- a/core/dragging/comment_drag_strategy.ts +++ b/core/dragging/comment_drag_strategy.ts @@ -17,6 +17,9 @@ export class CommentDragStrategy implements IDragStrategy { private workspace: WorkspaceSvg; + /** Was there already an event group in progress when the drag started? */ + private inGroup: boolean = false; + constructor(private comment: RenderedWorkspaceComment) { this.workspace = comment.workspace; } @@ -26,7 +29,8 @@ export class CommentDragStrategy implements IDragStrategy { } startDrag(): void { - if (!eventUtils.getGroup()) { + this.inGroup = !!eventUtils.getGroup(); + if (!this.inGroup) { eventUtils.setGroup(true); } this.fireDragStartEvent(); @@ -52,7 +56,9 @@ export class CommentDragStrategy implements IDragStrategy { this.comment.snapToGrid(); this.workspace.setResizesEnabled(true); - eventUtils.setGroup(false); + if (!this.inGroup) { + eventUtils.setGroup(false); + } } /** Fire a UI event at the start of a comment drag. */ From ee4a9dd8a1fabd3aeda25fecac21b06de968dace Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 26 Jul 2024 19:28:10 +0100 Subject: [PATCH 03/26] chore(deps): bump prettier from 3.3.2 to 3.3.3 (#8410) Bumps [prettier](https://github.com/prettier/prettier) from 3.3.2 to 3.3.3. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/3.3.2...3.3.3) --- updated-dependencies: - dependency-name: prettier dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index ef27c3b64..2e9e2b264 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,7 +47,7 @@ "markdown-tables-to-json": "^0.1.7", "mocha": "^10.0.0", "patch-package": "^8.0.0", - "prettier": "3.3.2", + "prettier": "3.3.3", "readline-sync": "^1.4.10", "rimraf": "^5.0.0", "typescript": "^5.3.3", @@ -9344,9 +9344,9 @@ } }, "node_modules/prettier": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", - "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" diff --git a/package.json b/package.json index c0a55f201..512a8203c 100644 --- a/package.json +++ b/package.json @@ -134,7 +134,7 @@ "markdown-tables-to-json": "^0.1.7", "mocha": "^10.0.0", "patch-package": "^8.0.0", - "prettier": "3.3.2", + "prettier": "3.3.3", "readline-sync": "^1.4.10", "rimraf": "^5.0.0", "typescript": "^5.3.3", From 1d8e31802832443b0920d2b67d75b585198959bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 10:26:32 -0700 Subject: [PATCH 04/26] chore(deps): bump @typescript-eslint/parser from 7.16.1 to 7.17.0 (#8442) Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 7.16.1 to 7.17.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.17.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 126 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 118 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2e9e2b264..b030aec0e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1319,16 +1319,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.16.1.tgz", - "integrity": "sha512-u+1Qx86jfGQ5i4JjK33/FnawZRpsLxRnKzGE6EABZ40KxVT/vWsiZFEBBHjFOljmmV3MBYOHEKi0Jm9hbAOClA==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.17.0.tgz", + "integrity": "sha512-puiYfGeg5Ydop8eusb/Hy1k7QmOU6X3nvsqCgzrB2K4qMavK//21+PzNE8qeECgNOIoertJPUC1SpegHDI515A==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "7.16.1", - "@typescript-eslint/types": "7.16.1", - "@typescript-eslint/typescript-estree": "7.16.1", - "@typescript-eslint/visitor-keys": "7.16.1", + "@typescript-eslint/scope-manager": "7.17.0", + "@typescript-eslint/types": "7.17.0", + "@typescript-eslint/typescript-estree": "7.17.0", + "@typescript-eslint/visitor-keys": "7.17.0", "debug": "^4.3.4" }, "engines": { @@ -1347,6 +1346,117 @@ } } }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.17.0.tgz", + "integrity": "sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.17.0", + "@typescript-eslint/visitor-keys": "7.17.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.17.0.tgz", + "integrity": "sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.17.0.tgz", + "integrity": "sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.17.0", + "@typescript-eslint/visitor-keys": "7.17.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.17.0.tgz", + "integrity": "sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.17.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/scope-manager": { "version": "7.16.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.1.tgz", From 0f7418622748e802b82279fd0e46e30f5d98b8d3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 10:27:20 -0700 Subject: [PATCH 05/26] chore(deps): bump @typescript-eslint/eslint-plugin from 7.16.1 to 7.17.0 (#8445) Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 7.16.1 to 7.17.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.17.0/packages/eslint-plugin) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 288 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 270 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index b030aec0e..c4e11db5b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1286,16 +1286,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.1.tgz", - "integrity": "sha512-SxdPak/5bO0EnGktV05+Hq8oatjAYVY3Zh2bye9pGZy6+jwyR3LG3YKkV4YatlsgqXP28BTeVm9pqwJM96vf2A==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.17.0.tgz", + "integrity": "sha512-pyiDhEuLM3PuANxH7uNYan1AaFs5XE0zw1hq69JBvGvE7gSuEoQl1ydtEe/XQeoC3GQxLXyOVa5kNOATgM638A==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.16.1", - "@typescript-eslint/type-utils": "7.16.1", - "@typescript-eslint/utils": "7.16.1", - "@typescript-eslint/visitor-keys": "7.16.1", + "@typescript-eslint/scope-manager": "7.17.0", + "@typescript-eslint/type-utils": "7.17.0", + "@typescript-eslint/utils": "7.17.0", + "@typescript-eslint/visitor-keys": "7.17.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -1318,6 +1318,53 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.17.0.tgz", + "integrity": "sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.17.0", + "@typescript-eslint/visitor-keys": "7.17.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.17.0.tgz", + "integrity": "sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.17.0.tgz", + "integrity": "sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.17.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/parser": { "version": "7.17.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.17.0.tgz", @@ -1476,13 +1523,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.16.1.tgz", - "integrity": "sha512-rbu/H2MWXN4SkjIIyWcmYBjlp55VT+1G3duFOIukTNFxr9PI35pLc2ydwAfejCEitCv4uztA07q0QWanOHC7dA==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.17.0.tgz", + "integrity": "sha512-XD3aaBt+orgkM/7Cei0XNEm1vwUxQ958AOLALzPlbPqb8C1G8PZK85tND7Jpe69Wualri81PLU+Zc48GVKIMMA==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.16.1", - "@typescript-eslint/utils": "7.16.1", + "@typescript-eslint/typescript-estree": "7.17.0", + "@typescript-eslint/utils": "7.17.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -1502,6 +1549,100 @@ } } }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.17.0.tgz", + "integrity": "sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.17.0.tgz", + "integrity": "sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.17.0", + "@typescript-eslint/visitor-keys": "7.17.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.17.0.tgz", + "integrity": "sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.17.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/types": { "version": "7.16.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.1.tgz", @@ -1585,15 +1726,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.16.1.tgz", - "integrity": "sha512-WrFM8nzCowV0he0RlkotGDujx78xudsxnGMBHI88l5J8wEhED6yBwaSLP99ygfrzAjsQvcYQ94quDwI0d7E1fA==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.17.0.tgz", + "integrity": "sha512-r+JFlm5NdB+JXc7aWWZ3fKSm1gn0pkswEwIYsrGPdsT2GjsRATAKXiNtp3vgAAO1xZhX8alIOEQnNMl3kbTgJw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.16.1", - "@typescript-eslint/types": "7.16.1", - "@typescript-eslint/typescript-estree": "7.16.1" + "@typescript-eslint/scope-manager": "7.17.0", + "@typescript-eslint/types": "7.17.0", + "@typescript-eslint/typescript-estree": "7.17.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1606,6 +1747,117 @@ "eslint": "^8.56.0" } }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.17.0.tgz", + "integrity": "sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.17.0", + "@typescript-eslint/visitor-keys": "7.17.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.17.0.tgz", + "integrity": "sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.17.0.tgz", + "integrity": "sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.17.0", + "@typescript-eslint/visitor-keys": "7.17.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.17.0.tgz", + "integrity": "sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.17.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/visitor-keys": { "version": "7.16.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.1.tgz", From e2310a4fed429e27ccc514a4aa45b7766eda5bfe Mon Sep 17 00:00:00 2001 From: John Nesky Date: Mon, 29 Jul 2024 10:30:29 -0700 Subject: [PATCH 06/26] fix: Codify component weights with toolbox in front of flyouts. (#8432) --- core/component_manager.ts | 12 ++++++++++++ core/flyout_base.ts | 2 +- core/toolbox/toolbox.ts | 2 +- core/trashcan.ts | 2 +- core/zoom_controls.ts | 2 +- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/core/component_manager.ts b/core/component_manager.ts index b9654c94e..fb89c38ae 100644 --- a/core/component_manager.ts +++ b/core/component_manager.ts @@ -224,6 +224,16 @@ export class ComponentManager { } export namespace ComponentManager { + export enum ComponentWeight { + // The toolbox weight is lower (higher precedence) than the flyout, so that + // if both are under the pointer, the toolbox takes precedence even though + // the flyout's drag target area is large enough to include the toolbox. + TOOLBOX_WEIGHT = 0, + FLYOUT_WEIGHT = 1, + TRASHCAN_WEIGHT = 2, + ZOOM_CONTROLS_WEIGHT = 3, + } + /** An object storing component information. */ export interface ComponentDatum { component: IComponent; @@ -232,4 +242,6 @@ export namespace ComponentManager { } } +export type ComponentWeight = ComponentManager.ComponentWeight; +export const ComponentWeight = ComponentManager.ComponentWeight; export type ComponentDatum = ComponentManager.ComponentDatum; diff --git a/core/flyout_base.ts b/core/flyout_base.ts index 18f84480c..27ad0abf5 100644 --- a/core/flyout_base.ts +++ b/core/flyout_base.ts @@ -427,7 +427,7 @@ export abstract class Flyout targetWorkspace.getComponentManager().addComponent({ component: this, - weight: 1, + weight: ComponentManager.ComponentWeight.FLYOUT_WEIGHT, capabilities: [ ComponentManager.Capability.AUTOHIDEABLE, ComponentManager.Capability.DELETE_AREA, diff --git a/core/toolbox/toolbox.ts b/core/toolbox/toolbox.ts index e0fb62e23..578a62b0e 100644 --- a/core/toolbox/toolbox.ts +++ b/core/toolbox/toolbox.ts @@ -157,7 +157,7 @@ export class Toolbox themeManager.subscribe(this.HtmlDiv, 'toolboxForegroundColour', 'color'); this.workspace_.getComponentManager().addComponent({ component: this, - weight: 1, + weight: ComponentManager.ComponentWeight.TOOLBOX_WEIGHT, capabilities: [ ComponentManager.Capability.AUTOHIDEABLE, ComponentManager.Capability.DELETE_AREA, diff --git a/core/trashcan.ts b/core/trashcan.ts index 050f506a4..d4629dcae 100644 --- a/core/trashcan.ts +++ b/core/trashcan.ts @@ -247,7 +247,7 @@ export class Trashcan } this.workspace.getComponentManager().addComponent({ component: this, - weight: 1, + weight: ComponentManager.ComponentWeight.TRASHCAN_WEIGHT, capabilities: [ ComponentManager.Capability.AUTOHIDEABLE, ComponentManager.Capability.DELETE_AREA, diff --git a/core/zoom_controls.ts b/core/zoom_controls.ts index 6534c7322..c93d99de4 100644 --- a/core/zoom_controls.ts +++ b/core/zoom_controls.ts @@ -116,7 +116,7 @@ export class ZoomControls implements IPositionable { init() { this.workspace.getComponentManager().addComponent({ component: this, - weight: 2, + weight: ComponentManager.ComponentWeight.ZOOM_CONTROLS_WEIGHT, capabilities: [ComponentManager.Capability.POSITIONABLE], }); this.initialized = true; From 612b8c89dc391531e6a0e442bed1847b5dec80ef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 31 Jul 2024 00:51:41 +0100 Subject: [PATCH 07/26] chore(deps): bump jsdom from 24.1.0 to 24.1.1 (#8444) Bumps [jsdom](https://github.com/jsdom/jsdom) from 24.1.0 to 24.1.1. - [Release notes](https://github.com/jsdom/jsdom/releases) - [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md) - [Commits](https://github.com/jsdom/jsdom/compare/24.1.0...24.1.1) --- updated-dependencies: - dependency-name: jsdom dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 34 +++++++++++++++++----------------- package.json | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index c4e11db5b..aa836198a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "jsdom": "24.1.0" + "jsdom": "24.1.1" }, "devDependencies": { "@blockly/block-test": "^6.0.4", @@ -7074,9 +7074,9 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dependencies": { "agent-base": "^7.0.2", "debug": "4" @@ -7633,9 +7633,9 @@ } }, "node_modules/jsdom": { - "version": "24.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.0.tgz", - "integrity": "sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA==", + "version": "24.1.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.1.tgz", + "integrity": "sha512-5O1wWV99Jhq4DV7rCLIoZ/UIhyQeDR7wHVyZAHAshbrvZsLs+Xzz7gtwnlJTJDjleiTKh54F4dXrX70vJQTyJQ==", "dependencies": { "cssstyle": "^4.0.1", "data-urls": "^5.0.0", @@ -7643,11 +7643,11 @@ "form-data": "^4.0.0", "html-encoding-sniffer": "^4.0.0", "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.4", + "https-proxy-agent": "^7.0.5", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.10", + "nwsapi": "^2.2.12", "parse5": "^7.1.2", - "rrweb-cssom": "^0.7.0", + "rrweb-cssom": "^0.7.1", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", "tough-cookie": "^4.1.4", @@ -7656,7 +7656,7 @@ "whatwg-encoding": "^3.1.1", "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0", - "ws": "^8.17.0", + "ws": "^8.18.0", "xml-name-validator": "^5.0.0" }, "engines": { @@ -7738,9 +7738,9 @@ } }, "node_modules/jsdom/node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "engines": { "node": ">=10.0.0" }, @@ -8898,9 +8898,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz", - "integrity": "sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==" + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", + "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==" }, "node_modules/object-assign": { "version": "4.1.1", diff --git a/package.json b/package.json index 512a8203c..e81bfb875 100644 --- a/package.json +++ b/package.json @@ -142,7 +142,7 @@ "yargs": "^17.2.1" }, "dependencies": { - "jsdom": "24.1.0" + "jsdom": "24.1.1" }, "engines": { "node": ">=18" From f020b54fd08e30ec12d9749e4272ca20db26a13e Mon Sep 17 00:00:00 2001 From: Jeremiah Saunders <46662314+UCYT5040@users.noreply.github.com> Date: Fri, 2 Aug 2024 15:09:30 -0500 Subject: [PATCH 08/26] fix: bring comments and bubbles to the front on click (#8451) * Bring comment to the block layer when clicked * Bring bubbles to front when clicked --- core/bubbles/bubble.ts | 3 ++- core/comments/rendered_workspace_comment.ts | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/core/bubbles/bubble.ts b/core/bubbles/bubble.ts index 35b9e7dde..e86f5a856 100644 --- a/core/bubbles/bubble.ts +++ b/core/bubbles/bubble.ts @@ -212,9 +212,10 @@ export abstract class Bubble implements IBubble, ISelectable { this.background.setAttribute('fill', colour); } - /** Passes the pointer event off to the gesture system. */ + /** Brings the bubble to the front and passes the pointer event off to the gesture system. */ private onMouseDown(e: PointerEvent) { this.workspace.getGesture(e)?.handleBubbleStart(e, this); + this.bringToFront(); common.setSelected(this); } diff --git a/core/comments/rendered_workspace_comment.ts b/core/comments/rendered_workspace_comment.ts index 79caf6a1d..7cc643808 100644 --- a/core/comments/rendered_workspace_comment.ts +++ b/core/comments/rendered_workspace_comment.ts @@ -28,6 +28,7 @@ import { import {IContextMenu} from '../interfaces/i_contextmenu.js'; import * as contextMenu from '../contextmenu.js'; import {ContextMenuRegistry} from '../contextmenu_registry.js'; +import * as layers from '../layers.js'; export class RenderedWorkspaceComment extends WorkspaceComment @@ -208,6 +209,7 @@ export class RenderedWorkspaceComment const gesture = this.workspace.getGesture(e); if (gesture) { gesture.handleCommentStart(e, this); + this.workspace.getLayerManager()?.append(this, layers.BLOCK); common.setSelected(this); } } From 159c5c4d7d737f36bfd25b050b006eeabc56cde6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Aug 2024 08:57:59 -0700 Subject: [PATCH 09/26] chore(deps): bump rimraf from 5.0.9 to 5.0.10 (#8461) Bumps [rimraf](https://github.com/isaacs/rimraf) from 5.0.9 to 5.0.10. - [Changelog](https://github.com/isaacs/rimraf/blob/main/CHANGELOG.md) - [Commits](https://github.com/isaacs/rimraf/compare/v5.0.9...v5.0.10) --- updated-dependencies: - dependency-name: rimraf dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 113 ++-------------------------------------------- 1 file changed, 3 insertions(+), 110 deletions(-) diff --git a/package-lock.json b/package-lock.json index aa836198a..596222b2b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1504,24 +1504,6 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.1.tgz", - "integrity": "sha512-nYpyv6ALte18gbMz323RM+vpFpTjfNdyakbf3nsLvF43uF9KeNC289SUEW3QLZ1xPtyINJ1dIsZOuWuSRIWygw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "7.16.1", - "@typescript-eslint/visitor-keys": "7.16.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/type-utils": { "version": "7.17.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.17.0.tgz", @@ -1657,74 +1639,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.1.tgz", - "integrity": "sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "7.16.1", - "@typescript-eslint/visitor-keys": "7.16.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "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/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/utils": { "version": "7.17.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.17.0.tgz", @@ -1858,24 +1772,6 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.1.tgz", - "integrity": "sha512-Qlzzx4sE4u3FsHTPQAAQFJFNOuqtuY0LFrZHwQ8IHK705XxBiWOFkfKRWu6niB7hwfgnwIpO4jTC75ozW1PHWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "7.16.1", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -10299,9 +10195,9 @@ "dev": true }, "node_modules/rimraf": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.9.tgz", - "integrity": "sha512-3i7b8OcswU6CpU8Ej89quJD4O98id7TtVM5U4Mybh84zQXdrFmDLouWBEEaD/QfO3gDDfH+AGFCGsR7kngzQnA==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", "dev": true, "dependencies": { "glob": "^10.3.7" @@ -10309,9 +10205,6 @@ "bin": { "rimraf": "dist/esm/bin.mjs" }, - "engines": { - "node": "14 >=14.20 || 16 >=16.20 || >=18" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } From cd31edbd9afdc443e57cfe4b6e0cb035cf3f2251 Mon Sep 17 00:00:00 2001 From: John Nesky Date: Mon, 5 Aug 2024 12:02:58 -0700 Subject: [PATCH 10/26] fix: Update dev-tools and remove toolbox category tests Colour and Angles. (#8457) --- package-lock.json | 54 +++++++++++------------- package.json | 2 +- tests/browser/test/toolbox_drag_test.mjs | 2 - 3 files changed, 25 insertions(+), 33 deletions(-) diff --git a/package-lock.json b/package-lock.json index 596222b2b..2b72eff83 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ }, "devDependencies": { "@blockly/block-test": "^6.0.4", - "@blockly/dev-tools": "^8.0.4", + "@blockly/dev-tools": "^8.0.6", "@blockly/theme-modern": "^6.0.3", "@hyperjump/browser": "^1.1.4", "@hyperjump/json-schema": "^1.5.0", @@ -80,11 +80,10 @@ } }, "node_modules/@blockly/block-test": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@blockly/block-test/-/block-test-6.0.4.tgz", - "integrity": "sha512-T8uod/uIt3QSvS5nIRGTa6i3h/UZXWJPUOiNY+RW0/azHZLBSOH8udyw1a22u9iOSpA7gDmw3WBbFgooCytDcw==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/@blockly/block-test/-/block-test-6.0.5.tgz", + "integrity": "sha512-k71CGCM6A7XZFyFQL/cnZkylhtfCgf3wTTG9Jymt7bkGZR6jVV1FSZYk0vaZ4tj+T2goqc8gb9VA1Jn8YWmoFA==", "dev": true, - "license": "Apache 2.0", "engines": { "node": ">=8.17.0" }, @@ -93,17 +92,16 @@ } }, "node_modules/@blockly/dev-tools": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@blockly/dev-tools/-/dev-tools-8.0.4.tgz", - "integrity": "sha512-YTb3dj8msWWz4hfpQTRIE3NLX2xbTjkluuazA55jOBWSnkPRo0ZeCmjMVwOAG3GECBrjt3IanwuNIuwwBLkbkg==", + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@blockly/dev-tools/-/dev-tools-8.0.6.tgz", + "integrity": "sha512-jC/XG7KKHqt1evxW/2/cnEgNEUsAzigsFjPNqwgCTyouJTORMxPDx/+CDIo3VPfRf2XFkEb/+KecjZz4SC+ToA==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "@blockly/block-test": "^6.0.4", - "@blockly/theme-dark": "^7.0.3", - "@blockly/theme-deuteranopia": "^6.0.3", - "@blockly/theme-highcontrast": "^6.0.3", - "@blockly/theme-tritanopia": "^6.0.3", + "@blockly/block-test": "^6.0.5", + "@blockly/theme-dark": "^7.0.4", + "@blockly/theme-deuteranopia": "^6.0.4", + "@blockly/theme-highcontrast": "^6.0.4", + "@blockly/theme-tritanopia": "^6.0.4", "chai": "^4.2.0", "dat.gui": "^0.7.7", "lodash.assign": "^4.2.0", @@ -188,11 +186,10 @@ } }, "node_modules/@blockly/theme-dark": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@blockly/theme-dark/-/theme-dark-7.0.3.tgz", - "integrity": "sha512-lRV9V5vjijbJAlUdZqtEhUt81OjHjZK8vagxir1cUqTrZ/+MNS2m7wkhIVPba4RWInJ1LY/nHEoQn6demZqRRQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@blockly/theme-dark/-/theme-dark-7.0.4.tgz", + "integrity": "sha512-HJgP+3g5YYt8Zqe7DSstT0mM13BgsSKwuXNSD8iC7nNxldKu+uEWcoOdAIOy3oLifmnDJ6cYk924+KM6JLUnhQ==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=8.17.0" }, @@ -201,11 +198,10 @@ } }, "node_modules/@blockly/theme-deuteranopia": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@blockly/theme-deuteranopia/-/theme-deuteranopia-6.0.3.tgz", - "integrity": "sha512-56nkKRoRMzArtz14sMp4sQ8nd2oYQGToadAzx9JfOl0otx2RoeZLnMnZlKa6ZeTsdJXspPRfkrwHcSyuDTA/6g==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@blockly/theme-deuteranopia/-/theme-deuteranopia-6.0.4.tgz", + "integrity": "sha512-8nQ6Q+eRpHOA5ZSUWShPavYBE/TDzKrSEW5F2flpYTM/Yepyv55d8hKm/0ZxxKPbYO7deqx2iwfriAVFHwpDOQ==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=8.17.0" }, @@ -214,11 +210,10 @@ } }, "node_modules/@blockly/theme-highcontrast": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@blockly/theme-highcontrast/-/theme-highcontrast-6.0.3.tgz", - "integrity": "sha512-AXaB6ELmOZ+2z8ENbdaFDGVorNmcLn10JE9+fMICGTKBTs0T+N5LYH7q7dok04qrV3ZTrhw+rV8Xxp9tYio0Cw==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@blockly/theme-highcontrast/-/theme-highcontrast-6.0.4.tgz", + "integrity": "sha512-c9EBTQbOcBfOun8VRJsRNt8BvMI1Y6K2KZr6XIX4ur04O+XUMXixid8+4xceEajFSZd7IKB19CEwUkO3hjWXNQ==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=8.17.0" }, @@ -240,11 +235,10 @@ } }, "node_modules/@blockly/theme-tritanopia": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@blockly/theme-tritanopia/-/theme-tritanopia-6.0.3.tgz", - "integrity": "sha512-U4Y7WB2jzFQbNtt7D74gixfPHFBK0FW5CqGCFFOO+mHz2AfKHA+s/cZiVblYomhlA1938mvjzIxbdnafzmaCiw==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@blockly/theme-tritanopia/-/theme-tritanopia-6.0.4.tgz", + "integrity": "sha512-7bHo8tZcjL3xP7FM23R7kxJSN2K8kwn5KA0jx2GQ5gMbd+woHRo0VBXV/HeH5d6ulFTPUNoCb9XjuTVLRiW6zQ==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=8.17.0" }, diff --git a/package.json b/package.json index e81bfb875..74e3227e5 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,7 @@ "license": "Apache-2.0", "devDependencies": { "@blockly/block-test": "^6.0.4", - "@blockly/dev-tools": "^8.0.4", + "@blockly/dev-tools": "^8.0.6", "@blockly/theme-modern": "^6.0.3", "@hyperjump/browser": "^1.1.4", "@hyperjump/json-schema": "^1.5.0", diff --git a/tests/browser/test/toolbox_drag_test.mjs b/tests/browser/test/toolbox_drag_test.mjs index ab0fa828f..c751f5552 100644 --- a/tests/browser/test/toolbox_drag_test.mjs +++ b/tests/browser/test/toolbox_drag_test.mjs @@ -25,7 +25,6 @@ const basicCategories = [ 'Math', 'Text', 'Lists', - 'Colour', 'Variables', 'Functions', ]; @@ -44,7 +43,6 @@ const testCategories = [ // 'Fields', 'Defaults', 'Numbers', - 'Angles', 'Drop-downs', // Note: images has a block that has a bad image source, but still builds and renders // just fine. From 23e901120b55ac198389eef7740c52aced174642 Mon Sep 17 00:00:00 2001 From: Jeremiah Saunders <46662314+UCYT5040@users.noreply.github.com> Date: Wed, 7 Aug 2024 11:07:48 -0500 Subject: [PATCH 11/26] feat: expose `bringToFront()` method (#8472) * Remove internal from bringToFront JSDoc * Add a note about the cost of this method * Remove unnecessary colon --- core/block_svg.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/block_svg.ts b/core/block_svg.ts index 1a96d166a..14c580574 100644 --- a/core/block_svg.ts +++ b/core/block_svg.ts @@ -1171,10 +1171,11 @@ export class BlockSvg * tags do not respect z-index so SVG renders them in the * order that they are in the DOM. By placing this block first within the * block group's , it will render on top of any other blocks. + * Use sparingly, this method is expensive because it reorders the DOM + * nodes. * - * @param blockOnly: True to only move this block to the front without + * @param blockOnly True to only move this block to the front without * adjusting its parents. - * @internal */ bringToFront(blockOnly = false) { /* eslint-disable-next-line @typescript-eslint/no-this-alias */ From cf5a3c0fa37da0b94994055b160e9ed6aa847f57 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Aug 2024 09:37:37 -0700 Subject: [PATCH 12/26] chore(deps): bump @microsoft/api-documenter from 7.25.7 to 7.25.10 (#8464) Bumps [@microsoft/api-documenter](https://github.com/microsoft/rushstack/tree/HEAD/apps/api-documenter) from 7.25.7 to 7.25.10. - [Changelog](https://github.com/microsoft/rushstack/blob/main/apps/api-documenter/CHANGELOG.md) - [Commits](https://github.com/microsoft/rushstack/commits/@microsoft/api-documenter_v7.25.10/apps/api-documenter) --- updated-dependencies: - dependency-name: "@microsoft/api-documenter" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2b72eff83..93b1a3283 100644 --- a/package-lock.json +++ b/package-lock.json @@ -621,16 +621,16 @@ } }, "node_modules/@microsoft/api-documenter": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.25.7.tgz", - "integrity": "sha512-jxGFnZ8olak7q/DVPpMYKb8xvMu9ySmvdx0ltLhkaXXCfD/md5ZlJjEOMNHTnP5I1HclJ1Z8WyRilL+GmycKmw==", + "version": "7.25.10", + "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.25.10.tgz", + "integrity": "sha512-GYc5AALrP9gxYPpkPc/BXXdekg+Ge8p9yyO1aRVwJDGzCXR7XRUvh6gc2jay/DmBx4KfyMx0LFWJ0HcUXudqgQ==", "dev": true, "dependencies": { - "@microsoft/api-extractor-model": "7.29.3", + "@microsoft/api-extractor-model": "7.29.4", "@microsoft/tsdoc": "~0.15.0", - "@rushstack/node-core-library": "5.5.0", - "@rushstack/terminal": "0.13.2", - "@rushstack/ts-command-line": "4.22.2", + "@rushstack/node-core-library": "5.5.1", + "@rushstack/terminal": "0.13.3", + "@rushstack/ts-command-line": "4.22.4", "js-yaml": "~3.13.1", "resolve": "~1.22.1" }, @@ -639,20 +639,20 @@ } }, "node_modules/@microsoft/api-documenter/node_modules/@microsoft/api-extractor-model": { - "version": "7.29.3", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.29.3.tgz", - "integrity": "sha512-kEWjLr2ygL3ku9EGyjeTnL2S5IxyH9NaF1k1UoI0Nzwr4xEJBSWCVsWuF2+0lPUrRPA6mTY95fR264SJ5ETKQA==", + "version": "7.29.4", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.29.4.tgz", + "integrity": "sha512-LHOMxmT8/tU1IiiiHOdHFF83Qsi+V8d0kLfscG4EvQE9cafiR8blOYr8SfkQKWB1wgEilQgXJX3MIA4vetDLZw==", "dev": true, "dependencies": { "@microsoft/tsdoc": "~0.15.0", "@microsoft/tsdoc-config": "~0.17.0", - "@rushstack/node-core-library": "5.5.0" + "@rushstack/node-core-library": "5.5.1" } }, "node_modules/@microsoft/api-documenter/node_modules/@rushstack/node-core-library": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.5.0.tgz", - "integrity": "sha512-Cl3MYQ74Je5Y/EngMxcA3SpHjGZ/022nKbAO1aycGfQ+7eKyNCBu0oywj5B1f367GCzuHBgy+3BlVLKysHkXZw==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.5.1.tgz", + "integrity": "sha512-ZutW56qIzH8xIOlfyaLQJFx+8IBqdbVCZdnj+XT1MorQ1JqqxHse8vbCpEM+2MjsrqcbxcgDIbfggB1ZSQ2A3g==", "dev": true, "dependencies": { "ajv": "~8.13.0", @@ -674,12 +674,12 @@ } }, "node_modules/@microsoft/api-documenter/node_modules/@rushstack/terminal": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.13.2.tgz", - "integrity": "sha512-t8i0PsGvBHmFBY8pryO3badqFlxQsm2rw3KYrzjcmVkG/WGklKg1qVkr9beAS1Oe8XWDRgj6SkoHkpNjs7aaNw==", + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.13.3.tgz", + "integrity": "sha512-fc3zjXOw8E0pXS5t9vTiIPx9gHA0fIdTXsu9mT4WbH+P3mYvnrX0iAQ5a6NvyK1+CqYWBTw/wVNx7SDJkI+WYQ==", "dev": true, "dependencies": { - "@rushstack/node-core-library": "5.5.0", + "@rushstack/node-core-library": "5.5.1", "supports-color": "~8.1.1" }, "peerDependencies": { @@ -692,12 +692,12 @@ } }, "node_modules/@microsoft/api-documenter/node_modules/@rushstack/ts-command-line": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.22.2.tgz", - "integrity": "sha512-xkvrGd6D9dPlI3I401Thc640WNsEPB1sGEmy12a2VJaPQPwhE6Ik0gEVPZJ/2G1w213eaCAdxUY1xpiTulsmpA==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.22.4.tgz", + "integrity": "sha512-QoyhbWfyF9Ixg5DWdPzxO3h2RmJ7i5WH9b7qLzD5h5WFya/ZqicjdPrVwQiGtrFvAbBj8jhcC9DhbzU9xAk78g==", "dev": true, "dependencies": { - "@rushstack/terminal": "0.13.2", + "@rushstack/terminal": "0.13.3", "@types/argparse": "1.0.38", "argparse": "~1.0.9", "string-argv": "~0.3.1" From 6b3f9a672397c866e4b22056ba4bd1ae93726cbd Mon Sep 17 00:00:00 2001 From: AbhinavKRNarayan <115357208+AbhinavKRN@users.noreply.github.com> Date: Fri, 9 Aug 2024 03:47:34 +0530 Subject: [PATCH 13/26] fix(touch): prevent infinite loop on multi-touch drag (#8470) * Change in gesture.ts * prettier --- core/gesture.ts | 11 +++++++++-- package-lock.json | 3 ++- package.json | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/core/gesture.ts b/core/gesture.ts index 7970ed006..0aefba47d 100644 --- a/core/gesture.ts +++ b/core/gesture.ts @@ -599,13 +599,20 @@ export class Gesture { */ handleTouchMove(e: PointerEvent) { const pointerId = Touch.getTouchIdentifierFromEvent(e); - // Update the cache this.cachedPoints.set(pointerId, this.getTouchPoint(e)); if (this.isPinchZoomEnabled && this.cachedPoints.size === 2) { this.handlePinch(e); } else { - this.handleMove(e); + // Handle the move directly instead of calling handleMove + this.updateFromEvent(e); + if (this.workspaceDragger) { + this.workspaceDragger.drag(this.currentDragDeltaXY); + } else if (this.dragger) { + this.dragger.onDrag(this.mostRecentEvent, this.currentDragDeltaXY); + } + e.preventDefault(); + e.stopPropagation(); } } diff --git a/package-lock.json b/package-lock.json index 93b1a3283..0ef6d5021 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,7 +47,7 @@ "markdown-tables-to-json": "^0.1.7", "mocha": "^10.0.0", "patch-package": "^8.0.0", - "prettier": "3.3.3", + "prettier": "^3.3.3", "readline-sync": "^1.4.10", "rimraf": "^5.0.0", "typescript": "^5.3.3", @@ -9600,6 +9600,7 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, diff --git a/package.json b/package.json index 74e3227e5..4df66d662 100644 --- a/package.json +++ b/package.json @@ -134,7 +134,7 @@ "markdown-tables-to-json": "^0.1.7", "mocha": "^10.0.0", "patch-package": "^8.0.0", - "prettier": "3.3.3", + "prettier": "^3.3.3", "readline-sync": "^1.4.10", "rimraf": "^5.0.0", "typescript": "^5.3.3", From 8fa216c22660db5c9657a43a4e92998faab40b53 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 9 Aug 2024 19:14:47 +0100 Subject: [PATCH 14/26] chore(deps): bump gulp from 4.0.2 to 5.0.0 (#8463) Bumps [gulp](https://github.com/gulpjs/gulp) from 4.0.2 to 5.0.0. - [Release notes](https://github.com/gulpjs/gulp/releases) - [Changelog](https://github.com/gulpjs/gulp/blob/master/CHANGELOG.md) - [Commits](https://github.com/gulpjs/gulp/compare/v4.0.2...v5.0.0) --- updated-dependencies: - dependency-name: gulp dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 3478 ++++++--------------------------------------- package.json | 2 +- 2 files changed, 431 insertions(+), 3049 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0ef6d5021..9d441b410 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,7 @@ "eslint-plugin-jsdoc": "^48.0.2", "glob": "^10.3.4", "google-closure-compiler": "^20240317.0.0", - "gulp": "^4.0.2", + "gulp": "^5.0.0", "gulp-concat": "^2.6.1", "gulp-gzip": "^1.4.2", "gulp-header": "^2.0.9", @@ -416,6 +416,27 @@ "xtend": "~4.0.1" } }, + "node_modules/@gulpjs/messages": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@gulpjs/messages/-/messages-1.1.0.tgz", + "integrity": "sha512-Ys9sazDatyTgZVb4xPlDufLweJ/Os2uHWOv+Caxvy2O85JcnT4M3vc73bi8pdLWlv3fdWQz3pdI9tVwo8rQQSg==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@gulpjs/to-absolute-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@gulpjs/to-absolute-glob/-/to-absolute-glob-4.0.0.tgz", + "integrity": "sha512-kjotm7XJrJ6v+7knhPaRgaT6q8F8K2jiafwYdNHLzmV0uGLuZY43FK6smNSHUPrhq5kX2slCUy+RGG/xGqmIKA==", + "dev": true, + "dependencies": { + "is-negated-glob": "^1.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", @@ -2122,15 +2143,6 @@ "node": ">=0.10.0" } }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -2162,9 +2174,9 @@ "dev": true }, "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "dependencies": { "normalize-path": "^3.0.0", @@ -2174,18 +2186,6 @@ "node": ">= 8" } }, - "node_modules/append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", - "dev": true, - "dependencies": { - "buffer-equal": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/archiver": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", @@ -2369,12 +2369,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, "node_modules/are-docs-informative": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", @@ -2408,39 +2402,6 @@ "node": ">=0.10.0" } }, - "node_modules/arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", - "dev": true, - "dependencies": { - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", - "dev": true, - "dependencies": { - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", @@ -2453,50 +2414,7 @@ "node_modules/array-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", - "dev": true, - "dependencies": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-initial/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", - "dev": true, - "dependencies": { - "is-number": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-last/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2511,20 +2429,6 @@ "node": ">=0.10.0" } }, - "node_modules/array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", - "dev": true, - "dependencies": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -2534,15 +2438,6 @@ "node": ">=8" } }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/assertion-error": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", @@ -2599,37 +2494,16 @@ "node": ">= 10.13.0" } }, - "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, "node_modules/async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-2.0.0.tgz", + "integrity": "sha512-Obu/KE8FurfQRN6ODdHN9LuXqwC+JFIM9NRyZqJJ4ZfLJmIYN9Rg0/kb+wF70VV5+fJusTMQlJ1t5rF7J/ETdg==", "dev": true, "dependencies": { - "async-done": "^1.2.2" + "async-done": "^2.0.0" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/async-settle/node_modules/async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/asynckit": { @@ -2665,38 +2539,17 @@ "dev": true }, "node_modules/bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bach/-/bach-2.0.1.tgz", + "integrity": "sha512-A7bvGMGiTOxGMpNupYl9HQTf0FFDNF4VCmks4PJpFyN1AX2pdKuxuwdvUz2Hu388wcgp+OvGFNsumBfFNkR7eg==", "dev": true, "dependencies": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" + "async-done": "^2.0.0", + "async-settle": "^2.0.0", + "now-and-later": "^3.0.0" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/bach/node_modules/async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, "node_modules/balanced-match": { @@ -2751,36 +2604,6 @@ "streamx": "^2.18.0" } }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -2843,6 +2666,41 @@ "url": "https://bevry.me/fund" } }, + "node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dev": true, + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "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" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -2854,12 +2712,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -2904,15 +2762,6 @@ "node": "*" } }, - "node_modules/buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -2928,26 +2777,6 @@ "node": ">= 0.8" } }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/cacheable-lookup": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", @@ -2987,19 +2816,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "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", @@ -3104,95 +2920,6 @@ "node": ">=8" } }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -3254,42 +2981,6 @@ "util-deprecate": "~1.0.1" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", - "dev": true, - "dependencies": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -3346,12 +3037,6 @@ "node": ">= 12.0.0" } }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, "node_modules/compress-commons": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", @@ -3551,23 +3236,17 @@ "safe-buffer": "~5.1.1" } }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/copy-props": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", - "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-4.0.0.tgz", + "integrity": "sha512-bVWtw1wQLzzKiYROtvNlbJgxgBYt2bMJpkCbKmXM3xyijvcjjWXEk5nyrrT3bgJ7ODb19ZohE2T0Y3FgNPyoTw==", "dev": true, "dependencies": { - "each-props": "^1.3.2", + "each-props": "^3.0.0", "is-plain-object": "^5.0.0" + }, + "engines": { + "node": ">= 10.13.0" } }, "node_modules/core-util-is": { @@ -3846,15 +3525,6 @@ "ms": "^2.1.1" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/decimal.js": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", @@ -3920,27 +3590,6 @@ "node": ">=16.0.0" } }, - "node_modules/default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", - "dev": true, - "dependencies": { - "kind-of": "^5.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", @@ -3950,31 +3599,6 @@ "node": ">=10" } }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/degenerator": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", @@ -4000,7 +3624,7 @@ "node_modules/detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -4063,53 +3687,17 @@ "node": ">=6.0.0" } }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/duplexify/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "node_modules/each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-3.0.0.tgz", + "integrity": "sha512-IYf1hpuWrdzse/s/YJOrFmU15lyhSzxelNVAHTEG3DtP4QsLTWZUzcUL3HMXmKQxXpa4EIrBPpwRgj0aehdvAw==", "dev": true, "dependencies": { - "is-plain-object": "^2.0.1", + "is-plain-object": "^5.0.0", "object.defaults": "^1.1.0" - } - }, - "node_modules/each-props/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, "node_modules/eastasianwidth": { @@ -4241,15 +3829,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, "node_modules/es-module-lexer": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", @@ -4623,138 +4202,10 @@ "node": ">=0.8.x" } }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "node_modules/expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", "dev": true, "dependencies": { "homedir-polyfill": "^1.0.1" @@ -4797,58 +4248,6 @@ "node": ">=0.10.0" } }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -4912,19 +4311,6 @@ "node": ">=8.6.0" } }, - "node_modules/fast-glob/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.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", @@ -4937,6 +4323,15 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, "node_modules/fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -4991,9 +4386,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -5027,69 +4422,44 @@ "micromatch": "^4.0.2" } }, - "node_modules/find-yarn-workspace-root/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", + "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", "dev": true, "dependencies": { "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", + "is-glob": "^4.0.3", + "micromatch": "^4.0.4", "resolve-dir": "^1.0.1" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-2.0.0.tgz", + "integrity": "sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==", "dev": true, "dependencies": { "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", + "is-plain-object": "^5.0.0", "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" + "object.pick": "^1.3.0", + "parse-filepath": "^1.0.2" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fined/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, "node_modules/flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-2.0.0.tgz", + "integrity": "sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/flat": { @@ -5155,31 +4525,6 @@ "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", "dev": true }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/flush-write-stream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "node_modules/follow-redirects": { "version": "1.15.4", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", @@ -5203,7 +4548,7 @@ "node_modules/for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -5212,7 +4557,7 @@ "node_modules/for-own": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", "dev": true, "dependencies": { "for-in": "^1.0.1" @@ -5271,18 +4616,6 @@ "node": ">=12.20.0" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/fs-extra": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", @@ -5316,41 +4649,16 @@ } }, "node_modules/fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-2.0.1.tgz", + "integrity": "sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" + "graceful-fs": "^4.2.8", + "streamx": "^2.12.0" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fs-mkdirp-stream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/fs-mkdirp-stream/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "node": ">=10.13.0" } }, "node_modules/fs.realpath": { @@ -5486,20 +4794,6 @@ "node": "*" } }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/get-port": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.1.0.tgz", @@ -5574,15 +4868,6 @@ "node": ">= 4.0.0" } }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/glob": { "version": "10.4.1", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", @@ -5618,301 +4903,47 @@ } }, "node_modules/glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-8.0.2.tgz", + "integrity": "sha512-R8z6eTB55t3QeZMmU1C+Gv+t5UnNRkA55c5yo67fAVfxODxieTwsjNG7utxS/73NdP1NbDgCrhVEg2h00y4fFw==", "dev": true, "dependencies": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", + "@gulpjs/to-absolute-glob": "^4.0.0", + "anymatch": "^3.1.3", + "fastq": "^1.13.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" + "normalize-path": "^3.0.0", + "streamx": "^2.12.5" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/glob-stream/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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": ">=10.13.0" } }, "node_modules/glob-stream/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "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, "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-stream/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-stream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "node": ">=10.13.0" } }, "node_modules/glob-watcher": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", - "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-6.0.0.tgz", + "integrity": "sha512-wGM28Ehmcnk2NqRORXFOTOR064L4imSw3EeOqU5bIwUf62eXGwg89WivH6VMahL8zlQHeodzvHpXplrqzrz3Nw==", "dev": true, "dependencies": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" + "async-done": "^2.0.0", + "chokidar": "^3.5.3" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/glob-watcher/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/glob-watcher/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/glob-watcher/node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", - "dev": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/glob-watcher/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-watcher/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/glob-watcher/node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/glob-watcher/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, "node_modules/glob/node_modules/brace-expansion": { @@ -5956,7 +4987,7 @@ "node_modules/global-prefix": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", "dev": true, "dependencies": { "expand-tilde": "^2.0.2", @@ -6029,15 +5060,15 @@ } }, "node_modules/glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-2.2.0.tgz", + "integrity": "sha512-eWv1ds/zAlz+M1ioHsyKJomfY7jbDDPpwSkv14KQj89bycx1nvK5/2Cj/T9g7kzJcX5Bc7Yv22FjfBZS/jl94A==", "dev": true, "dependencies": { - "sparkles": "^1.0.0" + "sparkles": "^2.1.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/google-closure-compiler": { @@ -6151,9 +5182,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, "node_modules/grapheme-splitter": { @@ -6169,258 +5200,74 @@ "dev": true }, "node_modules/gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-5.0.0.tgz", + "integrity": "sha512-S8Z8066SSileaYw1S2N1I64IUc/myI2bqe2ihOBzO6+nKpvNSg7ZcWJt/AwF8LC/NVN+/QZ560Cb/5OPsyhkhg==", "dev": true, "dependencies": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" + "glob-watcher": "^6.0.0", + "gulp-cli": "^3.0.0", + "undertaker": "^2.0.0", + "vinyl-fs": "^4.0.0" }, "bin": { "gulp": "bin/gulp.js" }, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, "node_modules/gulp-cli": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", - "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-3.0.0.tgz", + "integrity": "sha512-RtMIitkT8DEMZZygHK2vEuLPqLPAFB4sntSxg4NoDta7ciwGZ18l7JuhCTiS5deOJi2IoK0btE+hs6R4sfj7AA==", "dev": true, "dependencies": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" + "@gulpjs/messages": "^1.1.0", + "chalk": "^4.1.2", + "copy-props": "^4.0.0", + "gulplog": "^2.2.0", + "interpret": "^3.1.1", + "liftoff": "^5.0.0", + "mute-stdout": "^2.0.0", + "replace-homedir": "^2.0.0", + "semver-greatest-satisfied-range": "^2.0.0", + "string-width": "^4.2.3", + "v8flags": "^4.0.0", + "yargs": "^16.2.0" }, "bin": { "gulp": "bin/gulp.js" }, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, - "node_modules/gulp-cli/node_modules/ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dev": true, - "dependencies": { - "ansi-wrap": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/gulp-cli/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "node_modules/gulp-cli/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/gulp-cli/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/gulp-cli/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/gulp-cli/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true - }, "node_modules/gulp-cli/node_modules/yargs": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", - "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "dependencies": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.1" + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" } }, "node_modules/gulp-cli/node_modules/yargs-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", - "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "dependencies": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" + "engines": { + "node": ">=10" } }, "node_modules/gulp-concat": { @@ -6763,27 +5610,15 @@ } }, "node_modules/gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-2.2.0.tgz", + "integrity": "sha512-V2FaKiOhpR3DRXZuYdRLn/qiY0yI5XmqbTKrYbdemJ+xOh2d2MOweI/XFgMzd/9+1twdvMwllnZbWZNJ+BOm4A==", "dev": true, "dependencies": { - "glogg": "^1.0.0" + "glogg": "^2.2.0" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "node": ">= 10.13.0" } }, "node_modules/has-flag": { @@ -6795,57 +5630,6 @@ "node": ">=8" } }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -7088,21 +5872,12 @@ "dev": true }, "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, "node_modules/ip": { @@ -7124,33 +5899,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -7163,12 +5911,6 @@ "node": ">=8" } }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "node_modules/is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", @@ -7181,50 +5923,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -7297,34 +5995,19 @@ "node_modules/is-negated-glob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "node": ">=0.12.0" } }, "node_modules/is-path-inside": { @@ -7404,16 +6087,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, "node_modules/is-valid-glob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -7752,12 +6429,6 @@ "integrity": "sha512-silMIRiFjUWlfaDhkgSzpuAyQ6EX/o09Eu8ZBfmFwQMbax7+LQzeIU2CBrICT6Ne4l86ITCGvUCBpCubWYy0Yw==", "dev": true }, - "node_modules/just-debounce": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", - "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==", - "dev": true - }, "node_modules/just-extend": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", @@ -7773,15 +6444,6 @@ "json-buffer": "3.0.1" } }, - "node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/klaw-sync": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", @@ -7804,16 +6466,12 @@ } }, "node_modules/last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-2.0.0.tgz", + "integrity": "sha512-j+y6WhTLN4Itnf9j5ZQos1BGPCS8DAwmgMroR3OzfxAsBxam0hMw7J8M3KqZl0pLQJ1jNnwIexg5DYpC/ctwEQ==", "dev": true, - "dependencies": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/lazystream": { @@ -7843,28 +6501,13 @@ "util-deprecate": "~1.0.1" } }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "dependencies": { - "invert-kv": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-4.0.0.tgz", + "integrity": "sha512-DpMa59o5uGUWWjruMp71e6knmwKU3jRBBn1kjuLWN9EeIOxNeSAwvHf03WIl8g/ZMR2oSQC9ej3yeLBwdDc/pg==", "dev": true, - "dependencies": { - "flush-write-stream": "^1.0.2" - }, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, "node_modules/levn": { @@ -7890,62 +6533,21 @@ } }, "node_modules/liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-5.0.0.tgz", + "integrity": "sha512-a5BQjbCHnB+cy+gsro8lXJ4kZluzOijzJ1UVVfyJYZC+IP2pLv1h4+aysQeKuTmyO8NAqfyQAk4HWaP/HjcKTg==", "dev": true, "dependencies": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" + "extend": "^3.0.2", + "findup-sync": "^5.0.0", + "fined": "^2.0.0", + "flagged-respawn": "^2.0.0", + "is-plain-object": "^5.0.0", + "rechoir": "^0.8.0", + "resolve": "^1.20.0" }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/liftoff/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, "node_modules/locate-app": { @@ -8122,31 +6724,10 @@ "es5-ext": "~0.10.2" } }, - "node_modules/make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/make-iterator/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -8158,18 +6739,6 @@ "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", "dev": true }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/markdown-tables-to-json": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/markdown-tables-to-json/-/markdown-tables-to-json-0.1.7.tgz", @@ -8179,48 +6748,6 @@ "@ts-stack/markdown": "^1.3.0" } }, - "node_modules/matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", - "dev": true, - "dependencies": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/matchdep/node_modules/findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "dev": true, - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/matchdep/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/memoizee": { "version": "0.4.15", "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", @@ -8253,118 +6780,16 @@ } }, "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" + "node": ">=8.6" } }, "node_modules/mime": { @@ -8443,19 +6868,6 @@ "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", "dev": true }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -8633,43 +7045,12 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-2.0.0.tgz", + "integrity": "sha512-32GSKM3Wyc8dg/p39lWPKYu8zci9mJFzV1Np9Of0ZEpe6Fhssn/FbI7ywAMd40uX+p3ZKh3T5EeCFv81qS3HmQ==", "dev": true, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, "node_modules/natural-compare": { @@ -8767,24 +7148,15 @@ } }, "node_modules/now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-3.0.0.tgz", + "integrity": "sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg==", "dev": true, "dependencies": { - "once": "^1.3.2" + "once": "^1.4.0" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, "node_modules/nwsapi": { @@ -8801,134 +7173,10 @@ "node": ">=0.10.0" } }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object.defaults": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", "dev": true, "dependencies": { "array-each": "^1.0.1", @@ -8940,23 +7188,10 @@ "node": ">=0.10.0" } }, - "node_modules/object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "dev": true, - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "dev": true, "dependencies": { "isobject": "^3.0.1" @@ -8965,19 +7200,6 @@ "node": ">=0.10.0" } }, - "node_modules/object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", - "dev": true, - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -9029,42 +7251,6 @@ "node": ">= 0.8.0" } }, - "node_modules/ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.1" - } - }, - "node_modules/ordered-read-streams/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "dependencies": { - "lcid": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -9167,7 +7353,7 @@ "node_modules/parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", "dev": true, "dependencies": { "is-absolute": "^1.0.0", @@ -9203,7 +7389,7 @@ "node_modules/parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -9220,15 +7406,6 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/patch-package": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz", @@ -9315,12 +7492,6 @@ "node": ">=6" } }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -9357,7 +7528,7 @@ "node_modules/path-root": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", "dev": true, "dependencies": { "path-root-regex": "^0.1.0" @@ -9369,7 +7540,7 @@ "node_modules/path-root-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -9415,20 +7586,6 @@ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, - "node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/pathval": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", @@ -9462,36 +7619,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/plugin-error": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", @@ -9551,15 +7678,6 @@ "ms": "^2.1.1" } }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/postcss": { "version": "7.0.39", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", @@ -9611,15 +7729,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -9693,27 +7802,6 @@ "once": "^1.3.1" } }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -9886,15 +7974,15 @@ } }, "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "dependencies": { - "resolve": "^1.1.6" + "resolve": "^1.20.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/regenerator-runtime": { @@ -9903,107 +7991,28 @@ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "dev": true }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", - "dev": true, - "dependencies": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remove-bom-stream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/remove-bom-stream/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "node_modules/replace-ext": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", + "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", "dev": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true, - "engines": { - "node": ">=0.10" + "node": ">= 10" } }, "node_modules/replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-2.0.0.tgz", + "integrity": "sha512-bgEuQQ/BHW0XkkJtawzrfzHFSN70f/3cNOiHa2QsYxqrjaC30X1k74FJ6xswVBP0sr0SpGIdVFuPwfrYziVeyw==", "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/replacestream": { @@ -10059,12 +8068,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -10096,7 +8099,7 @@ "node_modules/resolve-dir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", "dev": true, "dependencies": { "expand-tilde": "^2.0.0", @@ -10116,24 +8119,17 @@ } }, "node_modules/resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-2.0.0.tgz", + "integrity": "sha512-/FopbmmFOQCfsCx77BRFdKOniglTiHumLgwvd6IDPihy1GKkadZbgQJBcTb2lMzSR1pndzd96b1nZrreZ7+9/A==", "dev": true, "dependencies": { - "value-or-function": "^3.0.0" + "value-or-function": "^4.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, "node_modules/responselike": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", @@ -10164,15 +8160,6 @@ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "engines": { - "node": ">=0.12" - } - }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -10254,15 +8241,6 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "dependencies": { - "ret": "~0.1.10" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -10301,15 +8279,15 @@ } }, "node_modules/semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-2.0.0.tgz", + "integrity": "sha512-lH3f6kMbwyANB7HuOWRMlLCa2itaCrZJ+SAqqkSZrZKO/cAsk2EOyaKHUtNkVLFyFW9pct22SFesFp3Z7zpA0g==", "dev": true, "dependencies": { - "sver-compat": "^1.5.0" + "sver": "^1.8.3" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/serialize-error": { @@ -10336,60 +8314,6 @@ "randombytes": "^2.1.0" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -10490,198 +8414,6 @@ "npm": ">= 3.0.0" } }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/snapdragon/node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, "node_modules/socks": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", @@ -10735,12 +8467,6 @@ "decode-uri-component": "^0.2.0" } }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "dev": true - }, "node_modules/spacetrim": { "version": "0.11.36", "resolved": "https://registry.npmjs.org/spacetrim/-/spacetrim-0.11.36.tgz", @@ -10758,12 +8484,12 @@ ] }, "node_modules/sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-2.1.0.tgz", + "integrity": "sha512-r7iW1bDw8R/cFifrD3JnQJX0K1jqT0kprL48BiBpLZLJPmAm34zsVBsK5lc7HirZYZqMW65dOXZgbAGt/I6frg==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/spawn-command": { @@ -10772,50 +8498,18 @@ "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", "dev": true }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, "node_modules/spdx-license-ids": { "version": "3.0.11", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", "dev": true }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/split2": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", @@ -10831,100 +8525,13 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "node_modules/stream-composer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-composer/-/stream-composer-1.0.2.tgz", + "integrity": "sha512-bnBselmwfX5K10AH6L4c8+S5lgZMWI7ZYrz2rvYjCPB2DIMC4Ig8OpxGpNJSxRZ58oti7y1IcNvjBAz9vW5m4w==", "dev": true, "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" + "streamx": "^2.13.2" } }, "node_modules/stream-exhaust": { @@ -10933,12 +8540,6 @@ "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", "dev": true }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, "node_modules/stream-to-array": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", @@ -11088,18 +8689,6 @@ "node": ">=8" } }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/strip-bom-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", @@ -11145,14 +8734,23 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "node_modules/sver": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/sver/-/sver-1.8.4.tgz", + "integrity": "sha512-71o1zfzyawLfIWBOmw8brleKyvnbn73oVHNCsu51uPMz/HWiKkkXsI31JjHW5zqXEqnPYkIiHd8ZmL7FCimLEA==", "dev": true, - "dependencies": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" + "optionalDependencies": { + "semver": "^6.3.0" + } + }, + "node_modules/sver/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, + "optional": true, + "bin": { + "semver": "bin/semver.js" } }, "node_modules/symbol-tree": { @@ -11204,6 +8802,15 @@ "streamx": "^2.15.0" } }, + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "dev": true, + "dependencies": { + "streamx": "^2.12.5" + } + }, "node_modules/text-decoder": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.0.tgz", @@ -11237,41 +8844,6 @@ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, - "node_modules/through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "dev": true, - "dependencies": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "node_modules/through2-filter/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/through2-filter/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, "node_modules/time-stamp": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", @@ -11303,58 +8875,6 @@ "node": ">=0.6.0" } }, - "node_modules/to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", - "dev": true, - "dependencies": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -11367,50 +8887,16 @@ "node": ">=8.0" } }, - "node_modules/to-regex-range/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, - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-3.0.0.tgz", + "integrity": "sha512-y8MN937s/HVhEoBU1SxfHC+wxCHkV1a9gW8eAdTadYh/bGyesZIVcbjI+mSpFbSVwQici/XjBjuUyri1dnXwBw==", "dev": true, "dependencies": { - "through2": "^2.0.3" + "streamx": "^2.12.5" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/to-through/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/to-through/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "node": ">=10.13.0" } }, "node_modules/tough-cookie": { @@ -11539,47 +9025,44 @@ "node_modules/unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/undertaker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", - "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-2.0.0.tgz", + "integrity": "sha512-tO/bf30wBbTsJ7go80j0RzA2rcwX6o7XPBpeFcb+jzoeb4pfMM2zUeSDIkY1AWqeZabWxaQZ/h8N9t35QKDLPQ==", "dev": true, "dependencies": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "fast-levenshtein": "^1.0.0", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" + "bach": "^2.0.1", + "fast-levenshtein": "^3.0.0", + "last-run": "^2.0.0", + "undertaker-registry": "^2.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, "node_modules/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-2.0.0.tgz", + "integrity": "sha512-+hhVICbnp+rlzZMgxXenpvTxpuvA67Bfgtt+O9WOE5jo7w/dyiF1VmoZVIHvP2EkUjsyKyTwYKlLhA+j47m1Ew==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/undertaker/node_modules/fast-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz", + "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==", + "dev": true, + "dependencies": { + "fastest-levenshtein": "^1.0.7" + } }, "node_modules/union": { "version": "0.5.0", @@ -11593,40 +9076,6 @@ "node": ">= 0.8.0" } }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "dev": true, - "dependencies": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -11636,64 +9085,6 @@ "node": ">= 10.0.0" } }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -11703,13 +9094,6 @@ "punycode": "^2.1.0" } }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, "node_modules/url-join": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", @@ -11725,15 +9109,6 @@ "requires-port": "^1.0.0" } }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/userhome": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/userhome/-/userhome-1.0.0.tgz", @@ -11759,34 +9134,21 @@ } }, "node_modules/v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-4.0.1.tgz", + "integrity": "sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==", "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "node": ">= 10.13.0" } }, "node_modules/value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-4.0.0.tgz", + "integrity": "sha512-aeVK81SIuT6aMJfNo9Vte8Dw0/FZINGBV8BfCraGtqVxIeLAEhJyoWs8SmvRVmXfGss2PmmOwZCuBPbZR+IYWg==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/vinyl": { @@ -11806,87 +9168,113 @@ "node": ">= 0.10" } }, - "node_modules/vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "node_modules/vinyl-contents": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-contents/-/vinyl-contents-2.0.0.tgz", + "integrity": "sha512-cHq6NnGyi2pZ7xwdHSW1v4Jfnho4TEGtxZHw01cmnc8+i7jgR6bRnED/LbrKan/Q7CvVLbnvA5OepnhbpjBZ5Q==", "dev": true, "dependencies": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" + "bl": "^5.0.0", + "vinyl": "^3.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, - "node_modules/vinyl-fs/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/vinyl-contents/node_modules/vinyl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", + "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", "dev": true, "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "clone": "^2.1.2", + "clone-stats": "^1.0.0", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/vinyl-fs/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/vinyl-fs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-4.0.0.tgz", + "integrity": "sha512-7GbgBnYfaquMk3Qu9g22x000vbYkOex32930rBnc3qByw6HfMEAoELjCjoJv4HuEQxHAurT+nvMHm6MnJllFLw==", "dev": true, "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "fs-mkdirp-stream": "^2.0.1", + "glob-stream": "^8.0.0", + "graceful-fs": "^4.2.11", + "iconv-lite": "^0.6.3", + "is-valid-glob": "^1.0.0", + "lead": "^4.0.0", + "normalize-path": "3.0.0", + "resolve-options": "^2.0.0", + "stream-composer": "^1.0.2", + "streamx": "^2.14.0", + "to-through": "^3.0.0", + "value-or-function": "^4.0.0", + "vinyl": "^3.0.0", + "vinyl-sourcemap": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/vinyl-fs/node_modules/vinyl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", + "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", + "dev": true, + "dependencies": { + "clone": "^2.1.2", + "clone-stats": "^1.0.0", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" } }, "node_modules/vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-2.0.0.tgz", + "integrity": "sha512-BAEvWxbBUXvlNoFQVFVHpybBbjW1r03WhohJzJDSfgrrK5xVYIDTan6xN14DlyImShgDRv2gl9qhM6irVMsV0Q==", "dev": true, "dependencies": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" + "convert-source-map": "^2.0.0", + "graceful-fs": "^4.2.10", + "now-and-later": "^3.0.0", + "streamx": "^2.12.5", + "vinyl": "^3.0.0", + "vinyl-contents": "^2.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, - "node_modules/vinyl-sourcemap/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "node_modules/vinyl-sourcemap/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/vinyl-sourcemap/node_modules/vinyl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", + "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", "dev": true, "dependencies": { - "remove-trailing-separator": "^1.0.1" + "clone": "^2.1.2", + "clone-stats": "^1.0.0", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, "node_modules/vinyl-sourcemaps-apply": { @@ -12105,12 +9493,6 @@ "node": ">= 8" } }, - "node_modules/which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, "node_modules/workerpool": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", diff --git a/package.json b/package.json index 4df66d662..38e620200 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "eslint-plugin-jsdoc": "^48.0.2", "glob": "^10.3.4", "google-closure-compiler": "^20240317.0.0", - "gulp": "^4.0.2", + "gulp": "^5.0.0", "gulp-concat": "^2.6.1", "gulp-gzip": "^1.4.2", "gulp-header": "^2.0.9", From f4731f2caf875902541649dbc38d0b1df6d02821 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 08:05:49 -0700 Subject: [PATCH 15/26] chore(deps): bump @hyperjump/json-schema from 1.9.3 to 1.9.6 (#8482) Bumps [@hyperjump/json-schema](https://github.com/hyperjump-io/json-schema) from 1.9.3 to 1.9.6. - [Commits](https://github.com/hyperjump-io/json-schema/compare/v1.9.3...v1.9.6) --- updated-dependencies: - dependency-name: "@hyperjump/json-schema" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9d441b410..dde5aaa9c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -501,9 +501,9 @@ } }, "node_modules/@hyperjump/json-schema": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@hyperjump/json-schema/-/json-schema-1.9.3.tgz", - "integrity": "sha512-NZyQ+PSQKUVIO0PInwqk2EOOObJD/ZqR9awzZeOddwtJyLZaxim9/xizZ6gGxGZi5ZGIdIB1mkBTM9fBu85E4A==", + "version": "1.9.6", + "resolved": "https://registry.npmjs.org/@hyperjump/json-schema/-/json-schema-1.9.6.tgz", + "integrity": "sha512-tv0JLDESJCGEPR1LNDNHEdr/AV+kjmfwpsayNPnk8Qy55VPZvXpr5SpExlq8HwB9IXJp1ScfIcrcVrpaWN2Yxw==", "dev": true, "dependencies": { "@hyperjump/json-pointer": "^1.1.0", From 7ca84603f6d6a6b7583e04687730f1d34f4fafa7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 09:40:54 -0700 Subject: [PATCH 16/26] chore(deps): bump google-github-actions/deploy-appengine (#8483) Bumps [google-github-actions/deploy-appengine](https://github.com/google-github-actions/deploy-appengine) from 2.1.2 to 2.1.3. - [Release notes](https://github.com/google-github-actions/deploy-appengine/releases) - [Changelog](https://github.com/google-github-actions/deploy-appengine/blob/main/CHANGELOG.md) - [Commits](https://github.com/google-github-actions/deploy-appengine/compare/v2.1.2...v2.1.3) --- updated-dependencies: - dependency-name: google-github-actions/deploy-appengine dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/appengine_deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/appengine_deploy.yml b/.github/workflows/appengine_deploy.yml index ab8c6bc2e..438d2f094 100644 --- a/.github/workflows/appengine_deploy.yml +++ b/.github/workflows/appengine_deploy.yml @@ -42,7 +42,7 @@ jobs: path: _deploy/ - name: Deploy to App Engine - uses: google-github-actions/deploy-appengine@v2.1.2 + uses: google-github-actions/deploy-appengine@v2.1.3 # For parameters see: # https://github.com/google-github-actions/deploy-appengine#inputs with: From c0c365a5daae131c2b1be57b31a0e43a56e72853 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 09:42:41 -0700 Subject: [PATCH 17/26] chore(deps): bump the npm_and_yarn group across 1 directory with 4 updates (#8476) Bumps the npm_and_yarn group with 4 updates in the / directory: [follow-redirects](https://github.com/follow-redirects/follow-redirects), [ip](https://github.com/indutny/node-ip), [pac-resolver](https://github.com/TooTallNate/proxy-agents/tree/HEAD/packages/pac-resolver) and [socks](https://github.com/JoshGlazebrook/socks). Updates `follow-redirects` from 1.15.4 to 1.15.6 - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.4...v1.15.6) Removes `ip` Updates `pac-resolver` from 7.0.0 to 7.0.1 - [Release notes](https://github.com/TooTallNate/proxy-agents/releases) - [Changelog](https://github.com/TooTallNate/proxy-agents/blob/main/packages/pac-resolver/CHANGELOG.md) - [Commits](https://github.com/TooTallNate/proxy-agents/commits/pac-resolver@7.0.1/packages/pac-resolver) Updates `socks` from 2.7.1 to 2.8.3 - [Release notes](https://github.com/JoshGlazebrook/socks/releases) - [Commits](https://github.com/JoshGlazebrook/socks/compare/2.7.1...2.8.3) Updates `pac-resolver` from 7.0.0 to 7.0.1 - [Release notes](https://github.com/TooTallNate/proxy-agents/releases) - [Changelog](https://github.com/TooTallNate/proxy-agents/blob/main/packages/pac-resolver/CHANGELOG.md) - [Commits](https://github.com/TooTallNate/proxy-agents/commits/pac-resolver@7.0.1/packages/pac-resolver) Updates `socks` from 2.7.1 to 2.8.3 - [Release notes](https://github.com/JoshGlazebrook/socks/releases) - [Commits](https://github.com/JoshGlazebrook/socks/compare/2.7.1...2.8.3) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: ip dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: pac-resolver dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: socks dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: pac-resolver dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: socks dependency-type: indirect dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 56 ++++++++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index dde5aaa9c..02f14699d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4526,9 +4526,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true, "funding": [ { @@ -5880,10 +5880,23 @@ "node": ">=10.13.0" } }, - "node_modules/ip": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", - "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==", + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "dev": true }, "node_modules/is-absolute": { @@ -6190,6 +6203,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, "node_modules/jsdoc-type-pratt-parser": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", @@ -7319,13 +7338,12 @@ } }, "node_modules/pac-resolver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz", - "integrity": "sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", "dev": true, "dependencies": { "degenerator": "^5.0.0", - "ip": "^1.1.8", "netmask": "^2.0.2" }, "engines": { @@ -8415,16 +8433,16 @@ } }, "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", "dev": true, "dependencies": { - "ip": "^2.0.0", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", + "node": ">= 10.0.0", "npm": ">= 3.0.0" } }, @@ -8442,12 +8460,6 @@ "node": ">= 14" } }, - "node_modules/socks/node_modules/ip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", - "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", - "dev": true - }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", From f57ef73aaffa196a12682ee55a0a0c1336f8732f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Aug 2024 09:10:34 -0700 Subject: [PATCH 18/26] chore(deps): bump @typescript-eslint/eslint-plugin from 7.17.0 to 8.0.1 (#8479) * chore(deps): bump @typescript-eslint/eslint-plugin from 7.17.0 to 8.0.1 Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 7.17.0 to 8.0.1. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.0.1/packages/eslint-plugin) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * fix: lint plugin versions * chore: fix linting --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Beka Westberg --- .eslintrc.js | 2 + core/block.ts | 12 +- core/block_svg.ts | 4 +- core/browser_events.ts | 8 +- core/dragging/bubble_drag_strategy.ts | 4 +- core/dropdowndiv.ts | 10 +- core/events/utils.ts | 2 +- core/extensions.ts | 5 +- core/field.ts | 12 +- core/flyout_base.ts | 2 +- core/flyout_metrics_manager.ts | 2 +- core/insertion_marker_manager.ts | 2 +- core/interfaces/i_comment_icon.ts | 2 +- core/interfaces/i_legacy_procedure_blocks.ts | 4 +- core/interfaces/i_selectable.ts | 2 +- core/interfaces/i_serializer.ts | 4 +- core/menuitem.ts | 2 +- core/registry.ts | 2 +- core/rendered_connection.ts | 11 +- core/renderers/common/block_rendering.ts | 5 +- core/renderers/common/marker_svg.ts | 8 +- core/renderers/measurables/types.ts | 3 + core/serialization/procedures.ts | 4 +- core/toolbox/category.ts | 16 +- core/tooltip.ts | 2 +- core/utils/dom.ts | 2 +- core/widgetdiv.ts | 2 +- core/workspace.ts | 6 +- core/workspace_audio.ts | 2 +- core/workspace_svg.ts | 2 +- package-lock.json | 493 ++++++------------- package.json | 4 +- tests/typescript/src/generators.ts | 2 + 33 files changed, 246 insertions(+), 397 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 14d27ca1a..5b539133b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -101,6 +101,8 @@ function buildTSOverride({files, tsconfig}) { '@typescript-eslint/no-empty-function': ['off'], // Temporarily disable. 3 problems. '@typescript-eslint/no-empty-interface': ['off'], + // We use this pattern extensively for block (e.g. controls_if) interfaces. + '@typescript-eslint/no-empty-object-type': ['off'], // TsDoc rules (using JsDoc plugin) // Disable built-in jsdoc verifier. diff --git a/core/block.ts b/core/block.ts index 6db948e48..dad2fd6e9 100644 --- a/core/block.ts +++ b/core/block.ts @@ -223,7 +223,7 @@ export class Block implements IASTNodeLocation { /** * String for block help, or function that returns a URL. Null for no help. */ - helpUrl: string | Function | null = null; + helpUrl: string | (() => string) | null = null; /** A bound callback function to use when the parent workspace changes. */ private onchangeWrapper_: ((p1: Abstract) => void) | null = null; @@ -997,7 +997,7 @@ export class Block implements IASTNodeLocation { * @param url URL string for block help, or function that returns a URL. Null * for no help. */ - setHelpUrl(url: string | Function) { + setHelpUrl(url: string | (() => string)) { this.helpUrl = url; } @@ -1864,7 +1864,7 @@ export class Block implements IASTNodeLocation { const rawValue = json['colour']; try { this.setColour(rawValue); - } catch (e) { + } catch { console.warn(warningPrefix + 'Illegal colour value: ', rawValue); } } @@ -1881,7 +1881,7 @@ export class Block implements IASTNodeLocation { const blockStyleName = json['style']; try { this.setStyle(blockStyleName); - } catch (styleError) { + } catch { console.warn(warningPrefix + 'Style does not exist: ', blockStyleName); } } @@ -2461,7 +2461,9 @@ export class Block implements IASTNodeLocation { const event = new (eventUtils.get(eventUtils.BLOCK_MOVE))( this, ) as BlockMove; - reason && event.setReason(reason); + if (reason) { + event.setReason(reason); + } this.xy_.translate(dx, dy); event.recordNew(); eventUtils.fire(event); diff --git a/core/block_svg.ts b/core/block_svg.ts index 14c580574..275451a61 100644 --- a/core/block_svg.ts +++ b/core/block_svg.ts @@ -378,7 +378,9 @@ export class BlockSvg let event: BlockMove | null = null; if (eventsEnabled) { event = new (eventUtils.get(eventUtils.BLOCK_MOVE)!)(this) as BlockMove; - reason && event.setReason(reason); + if (reason) { + event.setReason(reason); + } } const delta = new Coordinate(dx, dy); diff --git a/core/browser_events.ts b/core/browser_events.ts index 54fec307e..8176fe10f 100644 --- a/core/browser_events.ts +++ b/core/browser_events.ts @@ -6,6 +6,10 @@ // Former goog.module ID: Blockly.browserEvents +// Theoretically we could figure out a way to type the event params correctly, +// but it's not high priority. +/* eslint-disable @typescript-eslint/no-unsafe-function-type */ + import * as Touch from './touch.js'; import * as userAgent from './utils/useragent.js'; @@ -47,7 +51,7 @@ const PAGE_MODE_MULTIPLIER = 125; export function conditionalBind( node: EventTarget, name: string, - thisObject: Object | null, + thisObject: object | null, func: Function, opt_noCaptureIdentifier?: boolean, ): Data { @@ -96,7 +100,7 @@ export function conditionalBind( export function bind( node: EventTarget, name: string, - thisObject: Object | null, + thisObject: object | null, func: Function, ): Data { /** diff --git a/core/dragging/bubble_drag_strategy.ts b/core/dragging/bubble_drag_strategy.ts index f388bb94c..05465a804 100644 --- a/core/dragging/bubble_drag_strategy.ts +++ b/core/dragging/bubble_drag_strategy.ts @@ -33,7 +33,9 @@ export class BubbleDragStrategy implements IDragStrategy { this.startLoc = this.bubble.getRelativeToSurfaceXY(); this.workspace.setResizesEnabled(false); this.workspace.getLayerManager()?.moveToDragLayer(this.bubble); - this.bubble.setDragging && this.bubble.setDragging(true); + if (this.bubble.setDragging) { + this.bubble.setDragging(true); + } } drag(newLoc: Coordinate): void { diff --git a/core/dropdowndiv.ts b/core/dropdowndiv.ts index c90661c4e..5b531912a 100644 --- a/core/dropdowndiv.ts +++ b/core/dropdowndiv.ts @@ -53,7 +53,7 @@ export const ANIMATION_TIME = 0.25; let animateOutTimer: ReturnType | null = null; /** Callback for when the drop-down is hidden. */ -let onHide: Function | null = null; +let onHide: (() => void) | null = null; /** A class name representing the current owner's workspace renderer. */ let renderedClassName = ''; @@ -202,7 +202,7 @@ export function setColour(backgroundColour: string, borderColour: string) { export function showPositionedByBlock( field: Field, block: BlockSvg, - opt_onHide?: Function, + opt_onHide?: () => void, opt_secondaryYOffset?: number, ): boolean { return showPositionedByRect( @@ -226,7 +226,7 @@ export function showPositionedByBlock( */ export function showPositionedByField( field: Field, - opt_onHide?: Function, + opt_onHide?: () => void, opt_secondaryYOffset?: number, ): boolean { positionToField = true; @@ -278,7 +278,7 @@ function getScaledBboxOfField(field: Field): Rect { function showPositionedByRect( bBox: Rect, field: Field, - opt_onHide?: Function, + opt_onHide?: () => void, opt_secondaryYOffset?: number, ): boolean { // If we can fit it, render below the block. @@ -334,7 +334,7 @@ export function show( primaryY: number, secondaryX: number, secondaryY: number, - opt_onHide?: Function, + opt_onHide?: () => void, ): boolean { owner = newOwner as Field; onHide = opt_onHide || null; diff --git a/core/events/utils.ts b/core/events/utils.ts index 2d434594b..0bb69980e 100644 --- a/core/events/utils.ts +++ b/core/events/utils.ts @@ -256,7 +256,7 @@ function fireInternal(event: Abstract) { requestAnimationFrame(() => { setTimeout(fireNow, 0); }); - } catch (e) { + } catch { // Otherwise we just want to delay so events can be coallesced. // requestAnimationFrame will error triggering this. setTimeout(fireNow, 0); diff --git a/core/extensions.ts b/core/extensions.ts index aa9a6a186..0957b7f86 100644 --- a/core/extensions.ts +++ b/core/extensions.ts @@ -27,7 +27,10 @@ export const TEST_ONLY = {allExtensions}; * @throws {Error} if the extension name is empty, the extension is already * registered, or extensionFn is not a function. */ -export function register(name: string, initFn: Function) { +export function register( + name: string, + initFn: (this: T) => void, +) { if (typeof name !== 'string' || name.trim() === '') { throw Error('Error: Invalid extension name "' + name + '"'); } diff --git a/core/field.ts b/core/field.ts index 51e006823..777b19f55 100644 --- a/core/field.ts +++ b/core/field.ts @@ -1080,7 +1080,7 @@ export abstract class Field setValue(newValue: AnyDuringMigration, fireChangeEvent = true) { const doLogging = false; if (newValue === null) { - doLogging && console.log('null, return'); + if (doLogging) console.log('null, return'); // Not a valid value to check. return; } @@ -1092,7 +1092,7 @@ export abstract class Field fireChangeEvent, ); if (classValue instanceof Error) { - doLogging && console.log('invalid class validation, return'); + if (doLogging) console.log('invalid class validation, return'); return; } @@ -1103,19 +1103,19 @@ export abstract class Field fireChangeEvent, ); if (localValue instanceof Error) { - doLogging && console.log('invalid local validation, return'); + if (doLogging) console.log('invalid local validation, return'); return; } const source = this.sourceBlock_; if (source && source.disposed) { - doLogging && console.log('source disposed, return'); + if (doLogging) console.log('source disposed, return'); return; } const oldValue = this.getValue(); if (oldValue === localValue) { - doLogging && console.log('same, doValueUpdate_, return'); + if (doLogging) console.log('same, doValueUpdate_, return'); this.doValueUpdate_(localValue); return; } @@ -1135,7 +1135,7 @@ export abstract class Field if (this.isDirty_) { this.forceRerender(); } - doLogging && console.log(this.value_); + if (doLogging) console.log(this.value_); } /** diff --git a/core/flyout_base.ts b/core/flyout_base.ts index 27ad0abf5..e81df4279 100644 --- a/core/flyout_base.ts +++ b/core/flyout_base.ts @@ -1070,7 +1070,7 @@ export abstract class Flyout * @param block The flyout block to copy. * @returns Function to call when block is clicked. */ - private blockMouseDown(block: BlockSvg): Function { + private blockMouseDown(block: BlockSvg) { return (e: PointerEvent) => { const gesture = this.targetWorkspace.getGesture(e); if (gesture) { diff --git a/core/flyout_metrics_manager.ts b/core/flyout_metrics_manager.ts index fadc5deb5..a291f4c3b 100644 --- a/core/flyout_metrics_manager.ts +++ b/core/flyout_metrics_manager.ts @@ -44,7 +44,7 @@ export class FlyoutMetricsManager extends MetricsManager { let blockBoundingBox; try { blockBoundingBox = this.workspace_.getCanvas().getBBox(); - } catch (e) { + } catch { // Firefox has trouble with hidden elements (Bug 528969). // 2021 Update: It looks like this was fixed around Firefox 77 released in // 2020. diff --git a/core/insertion_marker_manager.ts b/core/insertion_marker_manager.ts index 376297f10..6f27eada7 100644 --- a/core/insertion_marker_manager.ts +++ b/core/insertion_marker_manager.ts @@ -529,7 +529,7 @@ export class InsertionMarkerManager { local.getSourceBlock(), local, ); - } catch (e) { + } catch { // It's possible that the number of connections on the local block has // changed since the insertion marker was originally created. Let's // recreate the insertion marker and try again. In theory we could diff --git a/core/interfaces/i_comment_icon.ts b/core/interfaces/i_comment_icon.ts index 09b071110..47c46daaf 100644 --- a/core/interfaces/i_comment_icon.ts +++ b/core/interfaces/i_comment_icon.ts @@ -26,7 +26,7 @@ export interface ICommentIcon extends IIcon, IHasBubble, ISerializable { } /** Checks whether the given object is an ICommentIcon. */ -export function isCommentIcon(obj: Object): obj is ICommentIcon { +export function isCommentIcon(obj: object): obj is ICommentIcon { return ( isIcon(obj) && hasBubble(obj) && diff --git a/core/interfaces/i_legacy_procedure_blocks.ts b/core/interfaces/i_legacy_procedure_blocks.ts index 3bd7e19bf..d74eaec22 100644 --- a/core/interfaces/i_legacy_procedure_blocks.ts +++ b/core/interfaces/i_legacy_procedure_blocks.ts @@ -28,7 +28,7 @@ export interface LegacyProcedureDefBlock { /** @internal */ export function isLegacyProcedureDefBlock( - block: Object, + block: object, ): block is LegacyProcedureDefBlock { return (block as any).getProcedureDef !== undefined; } @@ -41,7 +41,7 @@ export interface LegacyProcedureCallBlock { /** @internal */ export function isLegacyProcedureCallBlock( - block: Object, + block: object, ): block is LegacyProcedureCallBlock { return ( (block as any).getProcedureCall !== undefined && diff --git a/core/interfaces/i_selectable.ts b/core/interfaces/i_selectable.ts index 7cf9ad98c..972b0adb1 100644 --- a/core/interfaces/i_selectable.ts +++ b/core/interfaces/i_selectable.ts @@ -24,7 +24,7 @@ export interface ISelectable { } /** Checks whether the given object is an ISelectable. */ -export function isSelectable(obj: Object): obj is ISelectable { +export function isSelectable(obj: object): obj is ISelectable { return ( typeof (obj as any).id === 'string' && (obj as any).workspace !== undefined && diff --git a/core/interfaces/i_serializer.ts b/core/interfaces/i_serializer.ts index 29c257915..a33e6b225 100644 --- a/core/interfaces/i_serializer.ts +++ b/core/interfaces/i_serializer.ts @@ -31,7 +31,7 @@ export interface ISerializer { * @returns A JS object containing the system's state, or null if there is no * state to record. */ - save(workspace: Workspace): Object | null; + save(workspace: Workspace): object | null; /* eslint-enable valid-jsdoc */ /** @@ -42,7 +42,7 @@ export interface ISerializer { * @param workspace The workspace the system to deserialize is associated * with. */ - load(state: Object, workspace: Workspace): void; + load(state: object, workspace: Workspace): void; /** * Clears the state of the plugin or system. diff --git a/core/menuitem.ts b/core/menuitem.ts index aad914b68..e9e7dc0db 100644 --- a/core/menuitem.ts +++ b/core/menuitem.ts @@ -41,7 +41,7 @@ export class MenuItem { private highlight = false; /** Bound function to call when this menu item is clicked. */ - private actionHandler: Function | null = null; + private actionHandler: ((obj: this) => void) | null = null; /** * @param content Text caption to display as the content of the item, or a diff --git a/core/registry.ts b/core/registry.ts index d46c36f48..39bb83b87 100644 --- a/core/registry.ts +++ b/core/registry.ts @@ -193,7 +193,7 @@ export function register( * @param registryItem A class or object that we are checking for the required * properties. */ -function validate(type: string, registryItem: Function | AnyDuringMigration) { +function validate(type: string, registryItem: AnyDuringMigration) { switch (type) { case String(Type.FIELD): if (typeof registryItem.fromJson !== 'function') { diff --git a/core/rendered_connection.ts b/core/rendered_connection.ts index 5aa6f7f75..27c532839 100644 --- a/core/rendered_connection.ts +++ b/core/rendered_connection.ts @@ -146,7 +146,7 @@ export class RenderedConnection extends Connection { } // Raise it to the top for extra visibility. const selected = common.getSelected() == rootBlock; - selected || rootBlock.addSelect(); + if (!selected) rootBlock.addSelect(); let dx = staticConnection.x + config.snapRadius + @@ -169,7 +169,7 @@ export class RenderedConnection extends Connection { this.x; } rootBlock.moveBy(dx, dy, ['bump']); - selected || rootBlock.removeSelect(); + if (!selected) rootBlock.removeSelect(); } /** @@ -389,9 +389,10 @@ export class RenderedConnection extends Connection { if (block.isCollapsed()) { // This block should only be partially revealed since it is collapsed. connections = []; - block.outputConnection && connections.push(block.outputConnection); - block.nextConnection && connections.push(block.nextConnection); - block.previousConnection && connections.push(block.previousConnection); + if (block.outputConnection) connections.push(block.outputConnection); + if (block.nextConnection) connections.push(block.nextConnection); + if (block.previousConnection) + connections.push(block.previousConnection); } else { // Show all connections of this block. connections = block.getConnections_(true); diff --git a/core/renderers/common/block_rendering.ts b/core/renderers/common/block_rendering.ts index 7c87a8928..741e2367d 100644 --- a/core/renderers/common/block_rendering.ts +++ b/core/renderers/common/block_rendering.ts @@ -45,7 +45,10 @@ import {Renderer} from './renderer.js'; * @param rendererClass The new renderer class to register. * @throws {Error} if a renderer with the same name has already been registered. */ -export function register(name: string, rendererClass: Function) { +export function register( + name: string, + rendererClass: new (name: string) => Renderer, +) { registry.register(registry.Type.RENDERER, name, rendererClass); } diff --git a/core/renderers/common/marker_svg.ts b/core/renderers/common/marker_svg.ts index 995783576..b2005012f 100644 --- a/core/renderers/common/marker_svg.ts +++ b/core/renderers/common/marker_svg.ts @@ -176,9 +176,11 @@ export class MarkerSvg { // Ensures the marker will be visible immediately after the move. const animate = this.currentMarkerSvg!.childNodes[0]; - if (animate !== undefined) { - (animate as SVGAnimationElement).beginElement && - (animate as SVGAnimationElement).beginElement(); + if ( + animate !== undefined && + (animate as SVGAnimationElement).beginElement + ) { + (animate as SVGAnimationElement).beginElement(); } } diff --git a/core/renderers/measurables/types.ts b/core/renderers/measurables/types.ts index a378fc18e..a145b1563 100644 --- a/core/renderers/measurables/types.ts +++ b/core/renderers/measurables/types.ts @@ -13,6 +13,9 @@ import type {Row} from './row.js'; * Types of rendering elements. */ class TypesContainer { + // This class is very non-idiomatic for typescript, so we have to use + // the Function type to make it happy. + // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type [index: string]: number | Function; NONE = 0; // None diff --git a/core/serialization/procedures.ts b/core/serialization/procedures.ts index 55d720604..c51a38c82 100644 --- a/core/serialization/procedures.ts +++ b/core/serialization/procedures.ts @@ -44,7 +44,7 @@ interface ProcedureModelConstructor { * @param workspace The workspace to load the procedure model into. * @returns The constructed procedure model. */ - loadState(state: Object, workspace: Workspace): ProcedureModel; + loadState(state: object, workspace: Workspace): ProcedureModel; } /** @@ -64,7 +64,7 @@ interface ParameterModelConstructor { * @param workspace The workspace to load the parameter model into. * @returns The constructed parameter model. */ - loadState(state: Object, workspace: Workspace): ParameterModel; + loadState(state: object, workspace: Workspace): ParameterModel; } /** diff --git a/core/toolbox/category.ts b/core/toolbox/category.ts index 6ff159b0b..9fc2f8a6f 100644 --- a/core/toolbox/category.ts +++ b/core/toolbox/category.ts @@ -248,9 +248,11 @@ export class ToolboxCategory const nestedPadding = `${ ToolboxCategory.nestedPadding * this.getLevel() }px`; - this.workspace_.RTL - ? (rowDiv.style.paddingRight = nestedPadding) - : (rowDiv.style.paddingLeft = nestedPadding); + if (this.workspace_.RTL) { + rowDiv.style.paddingRight = nestedPadding; + } else { + rowDiv.style.paddingLeft = nestedPadding; + } return rowDiv; } @@ -564,9 +566,11 @@ export class ToolboxCategory setDisabled(isDisabled: boolean) { this.isDisabled_ = isDisabled; this.getDiv()!.setAttribute('disabled', `${isDisabled}`); - isDisabled - ? this.getDiv()!.setAttribute('disabled', 'true') - : this.getDiv()!.removeAttribute('disabled'); + if (isDisabled) { + this.getDiv()!.setAttribute('disabled', 'true'); + } else { + this.getDiv()!.removeAttribute('disabled'); + } } /** diff --git a/core/tooltip.ts b/core/tooltip.ts index 0478b91fd..bf379f291 100644 --- a/core/tooltip.ts +++ b/core/tooltip.ts @@ -19,7 +19,7 @@ import * as blocklyString from './utils/string.js'; export type TipInfo = | string | {tooltip: AnyDuringMigration} - | (() => TipInfo | string | Function); + | (() => TipInfo | string); /** * A function that renders custom tooltip UI. diff --git a/core/utils/dom.ts b/core/utils/dom.ts index e318e7e91..309cd3fae 100644 --- a/core/utils/dom.ts +++ b/core/utils/dom.ts @@ -211,7 +211,7 @@ export function getTextWidth(textElement: SVGTextElement): number { // Attempt to compute fetch the width of the SVG text element. try { width = textElement.getComputedTextLength(); - } catch (e) { + } catch { // In other cases where we fail to get the computed text. Instead, use an // approximation and do not cache the result. At some later point in time // when the block is inserted into the visible DOM, this method will be diff --git a/core/widgetdiv.ts b/core/widgetdiv.ts index 9f58bb1c5..b28ec6367 100644 --- a/core/widgetdiv.ts +++ b/core/widgetdiv.ts @@ -126,7 +126,7 @@ export function hide() { div.style.display = 'none'; div.style.left = ''; div.style.top = ''; - dispose && dispose(); + if (dispose) dispose(); dispose = null; div.textContent = ''; diff --git a/core/workspace.ts b/core/workspace.ts index 16f32611b..d092cbc82 100644 --- a/core/workspace.ts +++ b/core/workspace.ts @@ -102,7 +102,7 @@ export class Workspace implements IASTNodeLocation { private readonly topBlocks: Block[] = []; private readonly topComments: WorkspaceComment[] = []; private readonly commentDB = new Map(); - private readonly listeners: Function[] = []; + private readonly listeners: ((e: Abstract) => void)[] = []; protected undoStack_: Abstract[] = []; protected redoStack_: Abstract[] = []; private readonly blockDB = new Map(); @@ -679,7 +679,7 @@ export class Workspace implements IASTNodeLocation { * @param func Function to call. * @returns Obsolete return value, ignore. */ - addChangeListener(func: (e: Abstract) => void): Function { + addChangeListener(func: (e: Abstract) => void): (e: Abstract) => void { this.listeners.push(func); return func; } @@ -689,7 +689,7 @@ export class Workspace implements IASTNodeLocation { * * @param func Function to stop calling. */ - removeChangeListener(func: Function) { + removeChangeListener(func: (e: Abstract) => void) { arrayUtils.removeElem(this.listeners, func); } diff --git a/core/workspace_audio.ts b/core/workspace_audio.ts index c2ab93222..c8d21080c 100644 --- a/core/workspace_audio.ts +++ b/core/workspace_audio.ts @@ -64,7 +64,7 @@ export class WorkspaceAudio { let audioTest; try { audioTest = new globalThis['Audio'](); - } catch (e) { + } catch { // No browser support for Audio. // IE can throw an error even if the Audio object exists. return; diff --git a/core/workspace_svg.ts b/core/workspace_svg.ts index aad748105..82a08b237 100644 --- a/core/workspace_svg.ts +++ b/core/workspace_svg.ts @@ -817,7 +817,7 @@ export class WorkspaceSvg extends Workspace implements IASTNodeLocationSvg { this.options, ); - CursorClass && this.markerManager.setCursor(new CursorClass()); + if (CursorClass) this.markerManager.setCursor(new CursorClass()); this.renderer.createDom(this.svgGroup_, this.getTheme()); return this.svgGroup_; diff --git a/package-lock.json b/package-lock.json index 02f14699d..227a27031 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,8 +20,8 @@ "@hyperjump/json-schema": "^1.5.0", "@microsoft/api-documenter": "^7.22.4", "@microsoft/api-extractor": "^7.29.5", - "@typescript-eslint/eslint-plugin": "^7.3.1", - "@typescript-eslint/parser": "^7.16.1", + "@typescript-eslint/eslint-plugin": "^8.1.0", + "@typescript-eslint/parser": "^8.1.0", "async-done": "^2.0.0", "chai": "^5.1.1", "concurrently": "^8.0.1", @@ -1301,31 +1301,32 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.17.0.tgz", - "integrity": "sha512-pyiDhEuLM3PuANxH7uNYan1AaFs5XE0zw1hq69JBvGvE7gSuEoQl1ydtEe/XQeoC3GQxLXyOVa5kNOATgM638A==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.1.0.tgz", + "integrity": "sha512-LlNBaHFCEBPHyD4pZXb35mzjGkuGKXU5eeCA1SxvHfiRES0E82dOounfVpL4DCqYvJEKab0bZIA0gCRpdLKkCw==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.17.0", - "@typescript-eslint/type-utils": "7.17.0", - "@typescript-eslint/utils": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0", + "@typescript-eslint/scope-manager": "8.1.0", + "@typescript-eslint/type-utils": "8.1.0", + "@typescript-eslint/utils": "8.1.0", + "@typescript-eslint/visitor-keys": "8.1.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -1333,74 +1334,28 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.17.0.tgz", - "integrity": "sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.17.0.tgz", - "integrity": "sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.17.0.tgz", - "integrity": "sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.17.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.17.0.tgz", - "integrity": "sha512-puiYfGeg5Ydop8eusb/Hy1k7QmOU6X3nvsqCgzrB2K4qMavK//21+PzNE8qeECgNOIoertJPUC1SpegHDI515A==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.1.0.tgz", + "integrity": "sha512-U7iTAtGgJk6DPX9wIWPPOlt1gO57097G06gIcl0N0EEnNw8RGD62c+2/DiP/zL7KrkqnnqF7gtFGR7YgzPllTA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "7.17.0", - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/typescript-estree": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0", + "@typescript-eslint/scope-manager": "8.1.0", + "@typescript-eslint/types": "8.1.0", + "@typescript-eslint/typescript-estree": "8.1.0", + "@typescript-eslint/visitor-keys": "8.1.0", "debug": "^4.3.4" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -1408,174 +1363,66 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.17.0.tgz", - "integrity": "sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.17.0.tgz", - "integrity": "sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.1.0.tgz", + "integrity": "sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==", "dev": true, + "license": "MIT", "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.17.0.tgz", - "integrity": "sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.1.0.tgz", + "integrity": "sha512-DsuOZQji687sQUjm4N6c9xABJa7fjvfIdjqpSIIVOgaENf2jFXiM9hIBZOL3hb6DHK9Nvd2d7zZnoMLf9e0OtQ==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "@typescript-eslint/types": "8.1.0", + "@typescript-eslint/visitor-keys": "8.1.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.17.0.tgz", - "integrity": "sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.17.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.1.0.tgz", + "integrity": "sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.17.0.tgz", - "integrity": "sha512-XD3aaBt+orgkM/7Cei0XNEm1vwUxQ958AOLALzPlbPqb8C1G8PZK85tND7Jpe69Wualri81PLU+Zc48GVKIMMA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.1.0.tgz", + "integrity": "sha512-oLYvTxljVvsMnldfl6jIKxTaU7ok7km0KDrwOt1RHYu6nxlhN3TIx8k5Q52L6wR33nOwDgM7VwW1fT1qMNfFIA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "7.17.0", - "@typescript-eslint/utils": "7.17.0", + "@typescript-eslint/typescript-estree": "8.1.0", + "@typescript-eslint/utils": "8.1.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.17.0.tgz", - "integrity": "sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.17.0.tgz", - "integrity": "sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -1587,59 +1434,6 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.17.0.tgz", - "integrity": "sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.17.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/types": { "version": "7.16.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.1.tgz", @@ -1654,66 +1448,15 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/utils": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.17.0.tgz", - "integrity": "sha512-r+JFlm5NdB+JXc7aWWZ3fKSm1gn0pkswEwIYsrGPdsT2GjsRATAKXiNtp3vgAAO1xZhX8alIOEQnNMl3kbTgJw==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.1.0.tgz", + "integrity": "sha512-NTHhmufocEkMiAord/g++gWKb0Fr34e9AExBRdqgWdVBaKoei2dIyYKD9Q0jBnvfbEA5zaf8plUFMUH6kQ0vGg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.17.0", - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/typescript-estree": "7.17.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.17.0.tgz", - "integrity": "sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.17.0.tgz", - "integrity": "sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.17.0.tgz", - "integrity": "sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0", + "@typescript-eslint/types": "8.1.0", + "@typescript-eslint/visitor-keys": "8.1.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -1722,7 +1465,7 @@ "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -1734,37 +1477,36 @@ } } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.17.0.tgz", - "integrity": "sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.1.0.tgz", + "integrity": "sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==", "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.17.0", - "eslint-visitor-keys": "^3.4.3" - }, + "license": "MIT", "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/utils/node_modules/brace-expansion": { + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/minimatch": { + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1775,11 +1517,12 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -1787,6 +1530,75 @@ "node": ">=10" } }, + "node_modules/@typescript-eslint/utils": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.1.0.tgz", + "integrity": "sha512-ypRueFNKTIFwqPeJBfeIpxZ895PQhNyH4YID6js0UoBImWYoSjBsahUn9KMiJXh94uOjVBgHD9AmkyPsPnFwJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.1.0", + "@typescript-eslint/types": "8.1.0", + "@typescript-eslint/typescript-estree": "8.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.1.0.tgz", + "integrity": "sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.1.0.tgz", + "integrity": "sha512-ba0lNI19awqZ5ZNKh6wCModMwoZs457StTebQ0q1NP58zSi2F6MOZRXwfKZy+jB78JNJ/WH8GSh2IQNzXX8Nag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.1.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.1.0.tgz", + "integrity": "sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -2434,6 +2246,7 @@ "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" } @@ -3659,6 +3472,7 @@ "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" }, @@ -3666,15 +3480,6 @@ "node": ">=8" } }, - "node_modules/dir-glob/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, - "engines": { - "node": ">=8" - } - }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -4300,6 +4105,7 @@ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -5044,6 +4850,7 @@ "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", @@ -6794,6 +6601,7 @@ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -7604,6 +7412,16 @@ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, + "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/pathval": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", @@ -8412,6 +8230,7 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } diff --git a/package.json b/package.json index 38e620200..3fc0a69e1 100644 --- a/package.json +++ b/package.json @@ -107,8 +107,8 @@ "@hyperjump/json-schema": "^1.5.0", "@microsoft/api-documenter": "^7.22.4", "@microsoft/api-extractor": "^7.29.5", - "@typescript-eslint/eslint-plugin": "^7.3.1", - "@typescript-eslint/parser": "^7.16.1", + "@typescript-eslint/eslint-plugin": "^8.1.0", + "@typescript-eslint/parser": "^8.1.0", "async-done": "^2.0.0", "chai": "^5.1.1", "concurrently": "^8.0.1", diff --git a/tests/typescript/src/generators.ts b/tests/typescript/src/generators.ts index fd79a3a00..61506e11a 100644 --- a/tests/typescript/src/generators.ts +++ b/tests/typescript/src/generators.ts @@ -4,6 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ +/* eslint-disable */ + import * as Blockly from 'blockly-test/core'; import {JavascriptGenerator} from 'blockly-test/javascript'; import {PhpGenerator, phpGenerator, Order} from 'blockly-test/php'; From ec8f9c8589fd0ea849eba4ae80f59cb878a0f24a Mon Sep 17 00:00:00 2001 From: abhinavjha0239 <75026232+abhinavjha0239@users.noreply.github.com> Date: Wed, 14 Aug 2024 23:47:28 +0530 Subject: [PATCH 19/26] chore: removed the whole Drag category from the browser test (#8478) * fix: removed the whole Drag category from the blocks * fix: added comment according to reviewer * fix: added comment according to reviewer * fix: added comment according to reviewer --- tests/browser/test/toolbox_drag_test.mjs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/browser/test/toolbox_drag_test.mjs b/tests/browser/test/toolbox_drag_test.mjs index c751f5552..47a352042 100644 --- a/tests/browser/test/toolbox_drag_test.mjs +++ b/tests/browser/test/toolbox_drag_test.mjs @@ -38,7 +38,9 @@ const testCategories = [ 'Row', 'Stack', 'Statement', - 'Drag', + // Disabled due to #8466 + // 'Drag', + // Skip fields because it's an accordion that is already open. // 'Fields', 'Defaults', From ce22f428688206089379406a5a44e309e5692ccf Mon Sep 17 00:00:00 2001 From: Christopher Allen Date: Thu, 15 Aug 2024 03:16:14 +0100 Subject: [PATCH 20/26] chore: Organise imports (#8527) * chore(deps): Add pretter-plugin-organize-imports * chore: Remove insignificant blank lines in import sections Since prettier-plugin-organize-imports sorts imports within sections separated by blank lines, but preserves the section divisions, remove any blank lines that are not dividing imports into meaningful sections. Do not remove blank lines separating side-effect-only imports from main imports. * chore: Remove unneded eslint-disable directives * chore: Organise imports --- .prettierrc.js | 2 + blocks/blocks.ts | 2 +- blocks/lists.ts | 16 +- blocks/logic.ts | 14 +- blocks/loops.ts | 16 +- blocks/math.ts | 6 +- blocks/procedures.ts | 34 +- blocks/text.ts | 22 +- blocks/variables.ts | 20 +- blocks/variables_dynamic.ts | 22 +- core/block.ts | 26 +- core/block_svg.ts | 18 +- core/blockly.ts | 329 +++++++++--------- core/blockly_options.ts | 4 +- core/bubbles.ts | 4 +- core/bubbles/bubble.ts | 6 +- core/bubbles/mini_workspace_bubble.ts | 8 +- core/bubbles/text_bubble.ts | 2 +- core/bubbles/textinput_bubble.ts | 8 +- core/clipboard.ts | 6 +- core/clipboard/block_paster.ts | 8 +- core/clipboard/workspace_comment_paster.ts | 10 +- core/comments.ts | 2 +- core/comments/comment_view.ts | 16 +- core/comments/rendered_workspace_comment.ts | 36 +- core/comments/workspace_comment.ts | 10 +- core/common.ts | 3 +- core/contextmenu.ts | 8 +- core/contextmenu_items.ts | 4 +- core/delete_area.ts | 2 +- core/dragging.ts | 4 +- core/dragging/block_drag_strategy.ts | 28 +- core/dragging/bubble_drag_strategy.ts | 6 +- core/dragging/comment_drag_strategy.ts | 10 +- core/dragging/dragger.ts | 20 +- core/dropdowndiv.ts | 2 +- core/events/events.ts | 130 +++---- core/events/events_abstract.ts | 1 - core/events/events_block_base.ts | 1 - core/events/events_block_change.ts | 3 +- core/events/events_block_create.ts | 3 +- core/events/events_block_delete.ts | 3 +- core/events/events_block_drag.ts | 2 +- .../events_block_field_intermediate_change.ts | 1 - core/events/events_block_move.ts | 3 +- core/events/events_bubble_open.ts | 4 +- core/events/events_click.ts | 3 +- core/events/events_comment_base.ts | 2 +- core/events/events_comment_change.ts | 5 +- core/events/events_comment_collapse.ts | 4 +- core/events/events_comment_create.ts | 4 +- core/events/events_comment_delete.ts | 8 +- core/events/events_comment_drag.ts | 2 +- core/events/events_comment_move.ts | 5 +- core/events/events_comment_resize.ts | 5 +- core/events/events_marker_move.ts | 1 - core/events/events_selected.ts | 3 +- core/events/events_theme_change.ts | 2 +- core/events/events_toolbox_item_select.ts | 2 +- core/events/events_trashcan_open.ts | 3 +- core/events/events_var_base.ts | 3 +- core/events/events_var_create.ts | 3 +- core/events/events_var_delete.ts | 3 +- core/events/events_var_rename.ts | 3 +- core/events/events_viewport.ts | 2 +- core/events/utils.ts | 1 - core/field.ts | 2 +- core/field_checkbox.ts | 2 +- core/field_dropdown.ts | 2 +- core/field_input.ts | 6 +- core/field_label.ts | 2 +- core/field_number.ts | 2 +- core/flyout_base.ts | 10 +- core/flyout_button.ts | 2 +- core/gesture.ts | 10 +- core/grid.ts | 6 +- core/icons.ts | 16 +- core/icons/comment_icon.ts | 24 +- core/icons/icon.ts | 2 +- core/icons/mutator_icon.ts | 14 +- core/icons/warning_icon.ts | 12 +- core/inputs.ts | 8 +- core/inputs/input.ts | 2 +- core/insertion_marker_manager.ts | 6 +- core/insertion_marker_previewer.ts | 16 +- .../i_ast_node_location_with_block.ts | 2 +- core/interfaces/i_bounded_element.ts | 3 +- core/interfaces/i_bubble.ts | 2 +- core/interfaces/i_comment_icon.ts | 4 +- core/interfaces/i_connection_checker.ts | 3 +- core/interfaces/i_drag_target.ts | 6 +- core/interfaces/i_flyout.ts | 10 +- core/interfaces/i_keyboard_accessible.ts | 3 +- core/interfaces/i_metrics_manager.ts | 7 +- core/interfaces/i_positionable.ts | 4 +- core/interfaces/i_procedure_block.ts | 3 +- core/interfaces/i_selectable_toolbox_item.ts | 2 +- core/interfaces/i_serializer.ts | 3 - core/interfaces/i_toolbox.ts | 6 +- core/keyboard_nav/ast_node.ts | 4 +- core/keyboard_nav/basic_cursor.ts | 1 - core/keyboard_nav/cursor.ts | 1 - core/keyboard_nav/marker.ts | 2 - core/keyboard_nav/tab_navigate_cursor.ts | 1 - core/layer_manager.ts | 6 +- core/observable_procedure_map.ts | 2 +- core/procedures.ts | 24 +- core/registry.ts | 16 +- core/render_management.ts | 2 +- core/renderers/common/block_rendering.ts | 73 ++-- core/renderers/common/drawer.ts | 5 +- core/renderers/common/i_path_object.ts | 4 +- core/renderers/common/info.ts | 13 +- core/renderers/common/marker_svg.ts | 3 +- core/renderers/common/path_object.ts | 1 - core/renderers/common/renderer.ts | 3 +- core/renderers/geras/drawer.ts | 1 - core/renderers/geras/highlighter.ts | 1 - core/renderers/geras/info.ts | 9 +- .../geras/measurables/inline_input.ts | 1 - .../geras/measurables/statement_input.ts | 1 - core/renderers/geras/path_object.ts | 1 - core/renderers/geras/renderer.ts | 1 - core/renderers/measurables/base.ts | 1 - core/renderers/measurables/bottom_row.ts | 1 - core/renderers/measurables/connection.ts | 2 - .../measurables/external_value_input.ts | 2 - core/renderers/measurables/field.ts | 2 - core/renderers/measurables/hat.ts | 1 - core/renderers/measurables/icon.ts | 2 - core/renderers/measurables/in_row_spacer.ts | 1 - core/renderers/measurables/inline_input.ts | 2 - .../renderers/measurables/input_connection.ts | 1 - core/renderers/measurables/input_row.ts | 1 - core/renderers/measurables/jagged_edge.ts | 1 - core/renderers/measurables/next_connection.ts | 1 - .../measurables/output_connection.ts | 1 - .../measurables/previous_connection.ts | 1 - core/renderers/measurables/round_corner.ts | 1 - core/renderers/measurables/row.ts | 1 - core/renderers/measurables/spacer_row.ts | 1 - core/renderers/measurables/square_corner.ts | 1 - core/renderers/measurables/statement_input.ts | 2 - core/renderers/measurables/top_row.ts | 1 - core/renderers/thrasos/info.ts | 1 - core/renderers/thrasos/renderer.ts | 1 - core/renderers/zelos/constants.ts | 2 +- core/renderers/zelos/drawer.ts | 1 - core/renderers/zelos/info.ts | 11 +- core/renderers/zelos/marker_svg.ts | 1 - core/renderers/zelos/measurables/inputs.ts | 1 - core/renderers/zelos/path_object.ts | 1 - core/renderers/zelos/renderer.ts | 3 +- core/serialization.ts | 8 +- core/serialization/blocks.ts | 7 +- core/serialization/procedures.ts | 2 +- core/serialization/variables.ts | 1 - core/serialization/workspace_comments.ts | 8 +- core/serialization/workspaces.ts | 1 - core/shortcut_items.ts | 8 +- core/toolbox/category.ts | 11 +- core/toolbox/collapsible_category.ts | 1 - core/toolbox/separator.ts | 1 - core/toolbox/toolbox.ts | 5 +- core/trashcan.ts | 5 +- core/utils/parsing.ts | 1 - core/utils/svg_math.ts | 1 - core/variables.ts | 2 +- core/variables_dynamic.ts | 2 +- core/widgetdiv.ts | 2 +- core/workspace.ts | 8 +- core/workspace_svg.ts | 14 +- core/xml.ts | 8 +- generators/dart/dart_generator.ts | 8 +- generators/dart/lists.ts | 4 +- generators/dart/loops.ts | 6 +- generators/dart/procedures.ts | 2 +- generators/dart/text.ts | 2 +- generators/javascript/javascript_generator.ts | 8 +- generators/javascript/lists.ts | 4 +- generators/javascript/loops.ts | 6 +- generators/javascript/procedures.ts | 2 +- generators/javascript/text.ts | 2 +- generators/lua.ts | 2 +- generators/lua/lists.ts | 4 +- generators/lua/loops.ts | 6 +- generators/lua/lua_generator.ts | 6 +- generators/lua/procedures.ts | 2 +- generators/lua/text.ts | 2 +- generators/php.ts | 2 +- generators/php/lists.ts | 6 +- generators/php/logic.ts | 2 +- generators/php/loops.ts | 6 +- generators/php/math.ts | 2 +- generators/php/php_generator.ts | 6 +- generators/php/procedures.ts | 6 +- generators/php/text.ts | 4 +- generators/php/variables.ts | 2 +- generators/python.ts | 2 +- generators/python/lists.ts | 6 +- generators/python/loops.ts | 6 +- generators/python/procedures.ts | 6 +- generators/python/python_generator.ts | 8 +- generators/python/text.ts | 6 +- package-lock.json | 22 ++ package.json | 1 + .../browser/test/basic_block_factory_test.mjs | 2 +- tests/browser/test/basic_block_test.mjs | 7 +- tests/browser/test/basic_playground_test.mjs | 8 +- tests/browser/test/block_undo_test.mjs | 6 +- tests/browser/test/delete_blocks_test.mjs | 10 +- tests/browser/test/extensive_test.mjs | 14 +- tests/browser/test/field_edits_test.mjs | 8 +- tests/browser/test/mutator_test.mjs | 12 +- tests/browser/test/procedure_test.mjs | 10 +- tests/browser/test/test_setup.mjs | 2 +- tests/browser/test/toolbox_drag_test.mjs | 8 +- tests/browser/test/workspace_comment_test.mjs | 3 +- tests/migration/validate-renamings.mjs | 5 +- tests/mocha/astnode_test.js | 2 +- tests/mocha/block_json_test.js | 2 +- tests/mocha/block_test.js | 16 +- tests/mocha/blocks/lists_test.js | 4 +- tests/mocha/blocks/logic_ternary_test.js | 2 +- tests/mocha/blocks/loops_test.js | 2 +- tests/mocha/blocks/procedures_test.js | 6 +- tests/mocha/blocks/variables_test.js | 10 +- tests/mocha/clipboard_test.js | 8 +- tests/mocha/comment_test.js | 2 +- tests/mocha/connection_checker_test.js | 2 +- tests/mocha/connection_db_test.js | 2 +- tests/mocha/connection_test.js | 10 +- tests/mocha/contextmenu_test.js | 7 +- tests/mocha/cursor_test.js | 2 +- tests/mocha/event_block_change_test.js | 2 +- tests/mocha/event_block_create_test.js | 6 +- tests/mocha/event_test.js | 6 +- tests/mocha/field_checkbox_test.js | 4 +- tests/mocha/field_colour_test.js | 10 +- tests/mocha/field_dropdown_test.js | 10 +- tests/mocha/field_image_test.js | 2 +- tests/mocha/field_label_serializable_test.js | 10 +- tests/mocha/field_label_test.js | 4 +- tests/mocha/field_number_test.js | 6 +- tests/mocha/field_registry_test.js | 3 +- tests/mocha/field_test.js | 3 +- tests/mocha/field_textinput_test.js | 10 +- tests/mocha/field_variable_test.js | 10 +- tests/mocha/flyout_test.js | 8 - tests/mocha/generator_test.js | 2 +- tests/mocha/gesture_test.js | 8 +- tests/mocha/icon_test.js | 4 +- tests/mocha/insertion_marker_manager_test.js | 8 +- tests/mocha/jso_deserialization_test.js | 13 +- tests/mocha/jso_serialization_test.js | 14 +- tests/mocha/keydown_test.js | 2 +- tests/mocha/mutator_test.js | 8 +- tests/mocha/procedure_map_test.js | 7 +- tests/mocha/registry_test.js | 2 +- tests/mocha/serializer_test.js | 2 +- tests/mocha/shortcut_registry_test.js | 2 +- tests/mocha/test_helpers/procedures.js | 2 +- tests/mocha/test_helpers/workspace.js | 4 +- tests/mocha/theme_test.js | 2 +- tests/mocha/trashcan_test.js | 12 +- tests/mocha/variable_map_test.js | 12 +- tests/mocha/workspace_comment_test.js | 8 +- tests/mocha/workspace_svg_test.js | 6 +- tests/mocha/workspace_test.js | 2 - tests/mocha/zoom_controls_test.js | 2 +- tests/node/run_node_test.mjs | 2 +- tests/typescript/src/generators.ts | 8 +- tests/typescript/src/generators/php.ts | 2 +- tests/typescript/src/generators/python.ts | 2 +- 274 files changed, 985 insertions(+), 1048 deletions(-) diff --git a/.prettierrc.js b/.prettierrc.js index bbfb46639..84a85c115 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -10,4 +10,6 @@ module.exports = { bracketSpacing: false, // Put HTML tag closing brackets on same line as last attribute. bracketSameLine: true, + // Organise imports using a plugin. + 'plugins': ['prettier-plugin-organize-imports'], }; diff --git a/blocks/blocks.ts b/blocks/blocks.ts index a9874e54d..dc6ca386c 100644 --- a/blocks/blocks.ts +++ b/blocks/blocks.ts @@ -6,6 +6,7 @@ // Former goog.module ID: Blockly.libraryBlocks +import type {BlockDefinition} from '../core/blocks.js'; import * as lists from './lists.js'; import * as logic from './logic.js'; import * as loops from './loops.js'; @@ -14,7 +15,6 @@ import * as procedures from './procedures.js'; import * as texts from './text.js'; import * as variables from './variables.js'; import * as variablesDynamic from './variables_dynamic.js'; -import type {BlockDefinition} from '../core/blocks.js'; export { lists, diff --git a/blocks/lists.ts b/blocks/lists.ts index 3b468dc9d..28ff17b3d 100644 --- a/blocks/lists.ts +++ b/blocks/lists.ts @@ -6,22 +6,22 @@ // Former goog.module ID: Blockly.libraryBlocks.lists -import * as fieldRegistry from '../core/field_registry.js'; -import * as xmlUtils from '../core/utils/xml.js'; -import {Align} from '../core/inputs/align.js'; import type {Block} from '../core/block.js'; -import type {Connection} from '../core/connection.js'; import type {BlockSvg} from '../core/block_svg.js'; -import type {FieldDropdown} from '../core/field_dropdown.js'; -import {Msg} from '../core/msg.js'; -import {MutatorIcon} from '../core/icons/mutator_icon.js'; -import type {Workspace} from '../core/workspace.js'; import { createBlockDefinitionsFromJsonArray, defineBlocks, } from '../core/common.js'; +import type {Connection} from '../core/connection.js'; import '../core/field_dropdown.js'; +import type {FieldDropdown} from '../core/field_dropdown.js'; +import * as fieldRegistry from '../core/field_registry.js'; +import {MutatorIcon} from '../core/icons/mutator_icon.js'; +import {Align} from '../core/inputs/align.js'; import {ValueInput} from '../core/inputs/value_input.js'; +import {Msg} from '../core/msg.js'; +import * as xmlUtils from '../core/utils/xml.js'; +import type {Workspace} from '../core/workspace.js'; /** * A dictionary of the block definitions provided by this module. diff --git a/blocks/logic.ts b/blocks/logic.ts index 3e5b807eb..d2a7405ff 100644 --- a/blocks/logic.ts +++ b/blocks/logic.ts @@ -6,22 +6,22 @@ // Former goog.module ID: Blockly.libraryBlocks.logic -import * as Events from '../core/events/events.js'; -import * as Extensions from '../core/extensions.js'; -import * as xmlUtils from '../core/utils/xml.js'; -import type {Abstract as AbstractEvent} from '../core/events/events_abstract.js'; import type {Block} from '../core/block.js'; import type {BlockSvg} from '../core/block_svg.js'; -import type {Connection} from '../core/connection.js'; -import {Msg} from '../core/msg.js'; -import type {Workspace} from '../core/workspace.js'; import { createBlockDefinitionsFromJsonArray, defineBlocks, } from '../core/common.js'; +import type {Connection} from '../core/connection.js'; +import * as Events from '../core/events/events.js'; +import type {Abstract as AbstractEvent} from '../core/events/events_abstract.js'; +import * as Extensions from '../core/extensions.js'; import '../core/field_dropdown.js'; import '../core/field_label.js'; import '../core/icons/mutator_icon.js'; +import {Msg} from '../core/msg.js'; +import * as xmlUtils from '../core/utils/xml.js'; +import type {Workspace} from '../core/workspace.js'; /** * A dictionary of the block definitions provided by this module. diff --git a/blocks/loops.ts b/blocks/loops.ts index c7cb710d7..dd5a81162 100644 --- a/blocks/loops.ts +++ b/blocks/loops.ts @@ -6,27 +6,27 @@ // Former goog.module ID: Blockly.libraryBlocks.loops -import type {Abstract as AbstractEvent} from '../core/events/events_abstract.js'; import type {Block} from '../core/block.js'; +import { + createBlockDefinitionsFromJsonArray, + defineBlocks, +} from '../core/common.js'; import * as ContextMenu from '../core/contextmenu.js'; import type { ContextMenuOption, LegacyContextMenuOption, } from '../core/contextmenu_registry.js'; import * as Events from '../core/events/events.js'; -import * as Extensions from '../core/extensions.js'; -import {Msg} from '../core/msg.js'; -import { - createBlockDefinitionsFromJsonArray, - defineBlocks, -} from '../core/common.js'; +import type {Abstract as AbstractEvent} from '../core/events/events_abstract.js'; import * as eventUtils from '../core/events/utils.js'; +import * as Extensions from '../core/extensions.js'; import '../core/field_dropdown.js'; import '../core/field_label.js'; import '../core/field_number.js'; import '../core/field_variable.js'; -import '../core/icons/warning_icon.js'; import {FieldVariable} from '../core/field_variable.js'; +import '../core/icons/warning_icon.js'; +import {Msg} from '../core/msg.js'; import {WorkspaceSvg} from '../core/workspace_svg.js'; /** diff --git a/blocks/math.ts b/blocks/math.ts index c96aef3c2..e5aef5fbb 100644 --- a/blocks/math.ts +++ b/blocks/math.ts @@ -6,18 +6,18 @@ // Former goog.module ID: Blockly.libraryBlocks.math -import * as Extensions from '../core/extensions.js'; -import type {FieldDropdown} from '../core/field_dropdown.js'; -import * as xmlUtils from '../core/utils/xml.js'; import type {Block} from '../core/block.js'; import { createBlockDefinitionsFromJsonArray, defineBlocks, } from '../core/common.js'; +import * as Extensions from '../core/extensions.js'; import '../core/field_dropdown.js'; +import type {FieldDropdown} from '../core/field_dropdown.js'; import '../core/field_label.js'; import '../core/field_number.js'; import '../core/field_variable.js'; +import * as xmlUtils from '../core/utils/xml.js'; /** * A dictionary of the block definitions provided by this module. diff --git a/blocks/procedures.ts b/blocks/procedures.ts index e2b7ba18f..bf9a9206b 100644 --- a/blocks/procedures.ts +++ b/blocks/procedures.ts @@ -6,40 +6,40 @@ // Former goog.module ID: Blockly.libraryBlocks.procedures -import * as ContextMenu from '../core/contextmenu.js'; -import * as Events from '../core/events/events.js'; -import * as Procedures from '../core/procedures.js'; -import * as Variables from '../core/variables.js'; -import * as Xml from '../core/xml.js'; -import * as fieldRegistry from '../core/field_registry.js'; -import * as xmlUtils from '../core/utils/xml.js'; -import type {Abstract as AbstractEvent} from '../core/events/events_abstract.js'; -import {Align} from '../core/inputs/align.js'; import type {Block} from '../core/block.js'; import type {BlockSvg} from '../core/block_svg.js'; -import type {BlockCreate} from '../core/events/events_block_create.js'; -import type {BlockChange} from '../core/events/events_block_change.js'; import type {BlockDefinition} from '../core/blocks.js'; +import * as common from '../core/common.js'; +import {defineBlocks} from '../core/common.js'; +import {config} from '../core/config.js'; import type {Connection} from '../core/connection.js'; +import * as ContextMenu from '../core/contextmenu.js'; import type { ContextMenuOption, LegacyContextMenuOption, } from '../core/contextmenu_registry.js'; +import * as Events from '../core/events/events.js'; +import type {Abstract as AbstractEvent} from '../core/events/events_abstract.js'; +import type {BlockChange} from '../core/events/events_block_change.js'; +import type {BlockCreate} from '../core/events/events_block_create.js'; import * as eventUtils from '../core/events/utils.js'; import {FieldCheckbox} from '../core/field_checkbox.js'; import {FieldLabel} from '../core/field_label.js'; +import * as fieldRegistry from '../core/field_registry.js'; import {FieldTextInput} from '../core/field_textinput.js'; -import {Msg} from '../core/msg.js'; +import '../core/icons/comment_icon.js'; import {MutatorIcon as Mutator} from '../core/icons/mutator_icon.js'; +import '../core/icons/warning_icon.js'; +import {Align} from '../core/inputs/align.js'; +import {Msg} from '../core/msg.js'; import {Names} from '../core/names.js'; +import * as Procedures from '../core/procedures.js'; +import * as xmlUtils from '../core/utils/xml.js'; import type {VariableModel} from '../core/variable_model.js'; +import * as Variables from '../core/variables.js'; import type {Workspace} from '../core/workspace.js'; import type {WorkspaceSvg} from '../core/workspace_svg.js'; -import {config} from '../core/config.js'; -import {defineBlocks} from '../core/common.js'; -import '../core/icons/comment_icon.js'; -import '../core/icons/warning_icon.js'; -import * as common from '../core/common.js'; +import * as Xml from '../core/xml.js'; /** A dictionary of the block definitions provided by this module. */ export const blocks: {[key: string]: BlockDefinition} = {}; diff --git a/blocks/text.ts b/blocks/text.ts index 450e30087..5ab631836 100644 --- a/blocks/text.ts +++ b/blocks/text.ts @@ -6,25 +6,25 @@ // Former goog.module ID: Blockly.libraryBlocks.texts -import * as Extensions from '../core/extensions.js'; -import * as fieldRegistry from '../core/field_registry.js'; -import * as xmlUtils from '../core/utils/xml.js'; -import {Align} from '../core/inputs/align.js'; import type {Block} from '../core/block.js'; import type {BlockSvg} from '../core/block_svg.js'; -import {Connection} from '../core/connection.js'; -import {FieldImage} from '../core/field_image.js'; -import {FieldDropdown} from '../core/field_dropdown.js'; -import {FieldTextInput} from '../core/field_textinput.js'; -import {Msg} from '../core/msg.js'; -import {MutatorIcon} from '../core/icons/mutator_icon.js'; -import type {Workspace} from '../core/workspace.js'; import { createBlockDefinitionsFromJsonArray, defineBlocks, } from '../core/common.js'; +import {Connection} from '../core/connection.js'; +import * as Extensions from '../core/extensions.js'; +import {FieldDropdown} from '../core/field_dropdown.js'; +import {FieldImage} from '../core/field_image.js'; +import * as fieldRegistry from '../core/field_registry.js'; +import {FieldTextInput} from '../core/field_textinput.js'; import '../core/field_variable.js'; +import {MutatorIcon} from '../core/icons/mutator_icon.js'; +import {Align} from '../core/inputs/align.js'; import {ValueInput} from '../core/inputs/value_input.js'; +import {Msg} from '../core/msg.js'; +import * as xmlUtils from '../core/utils/xml.js'; +import type {Workspace} from '../core/workspace.js'; /** * A dictionary of the block definitions provided by this module. diff --git a/blocks/variables.ts b/blocks/variables.ts index 8ac038fb2..0ec9112a3 100644 --- a/blocks/variables.ts +++ b/blocks/variables.ts @@ -6,22 +6,22 @@ // Former goog.module ID: Blockly.libraryBlocks.variables -import * as ContextMenu from '../core/contextmenu.js'; -import * as Extensions from '../core/extensions.js'; -import * as Variables from '../core/variables.js'; import type {Block} from '../core/block.js'; -import type { - ContextMenuOption, - LegacyContextMenuOption, -} from '../core/contextmenu_registry.js'; -import {FieldVariable} from '../core/field_variable.js'; -import {Msg} from '../core/msg.js'; -import type {WorkspaceSvg} from '../core/workspace_svg.js'; import { createBlockDefinitionsFromJsonArray, defineBlocks, } from '../core/common.js'; +import * as ContextMenu from '../core/contextmenu.js'; +import type { + ContextMenuOption, + LegacyContextMenuOption, +} from '../core/contextmenu_registry.js'; +import * as Extensions from '../core/extensions.js'; import '../core/field_label.js'; +import {FieldVariable} from '../core/field_variable.js'; +import {Msg} from '../core/msg.js'; +import * as Variables from '../core/variables.js'; +import type {WorkspaceSvg} from '../core/workspace_svg.js'; /** * A dictionary of the block definitions provided by this module. diff --git a/blocks/variables_dynamic.ts b/blocks/variables_dynamic.ts index e74cae423..8e4ce290e 100644 --- a/blocks/variables_dynamic.ts +++ b/blocks/variables_dynamic.ts @@ -6,23 +6,23 @@ // Former goog.module ID: Blockly.libraryBlocks.variablesDynamic -import * as ContextMenu from '../core/contextmenu.js'; -import * as Extensions from '../core/extensions.js'; -import * as Variables from '../core/variables.js'; -import {Abstract as AbstractEvent} from '../core/events/events_abstract.js'; import type {Block} from '../core/block.js'; -import type { - ContextMenuOption, - LegacyContextMenuOption, -} from '../core/contextmenu_registry.js'; -import {FieldVariable} from '../core/field_variable.js'; -import {Msg} from '../core/msg.js'; -import type {WorkspaceSvg} from '../core/workspace_svg.js'; import { createBlockDefinitionsFromJsonArray, defineBlocks, } from '../core/common.js'; +import * as ContextMenu from '../core/contextmenu.js'; +import type { + ContextMenuOption, + LegacyContextMenuOption, +} from '../core/contextmenu_registry.js'; +import {Abstract as AbstractEvent} from '../core/events/events_abstract.js'; +import * as Extensions from '../core/extensions.js'; import '../core/field_label.js'; +import {FieldVariable} from '../core/field_variable.js'; +import {Msg} from '../core/msg.js'; +import * as Variables from '../core/variables.js'; +import type {WorkspaceSvg} from '../core/workspace_svg.js'; /** * A dictionary of the block definitions provided by this module. diff --git a/core/block.ts b/core/block.ts index dad2fd6e9..7875ac6a4 100644 --- a/core/block.ts +++ b/core/block.ts @@ -23,35 +23,35 @@ import * as common from './common.js'; import {Connection} from './connection.js'; import {ConnectionType} from './connection_type.js'; import * as constants from './constants.js'; -import {DuplicateIconType} from './icons/exceptions.js'; import type {Abstract} from './events/events_abstract.js'; import type {BlockChange} from './events/events_block_change.js'; import type {BlockMove} from './events/events_block_move.js'; -import * as deprecation from './utils/deprecation.js'; import * as eventUtils from './events/utils.js'; import * as Extensions from './extensions.js'; import type {Field} from './field.js'; import * as fieldRegistry from './field_registry.js'; -import {Input} from './inputs/input.js'; -import {Align} from './inputs/align.js'; -import type {IASTNodeLocation} from './interfaces/i_ast_node_location.js'; -import {type IIcon} from './interfaces/i_icon.js'; -import {isCommentIcon} from './interfaces/i_comment_icon.js'; +import {DuplicateIconType} from './icons/exceptions.js'; +import {IconType} from './icons/icon_types.js'; import type {MutatorIcon} from './icons/mutator_icon.js'; +import {Align} from './inputs/align.js'; +import {DummyInput} from './inputs/dummy_input.js'; +import {EndRowInput} from './inputs/end_row_input.js'; +import {Input} from './inputs/input.js'; +import {StatementInput} from './inputs/statement_input.js'; +import {ValueInput} from './inputs/value_input.js'; +import type {IASTNodeLocation} from './interfaces/i_ast_node_location.js'; +import {isCommentIcon} from './interfaces/i_comment_icon.js'; +import {type IIcon} from './interfaces/i_icon.js'; +import * as registry from './registry.js'; import * as Tooltip from './tooltip.js'; import * as arrayUtils from './utils/array.js'; import {Coordinate} from './utils/coordinate.js'; +import * as deprecation from './utils/deprecation.js'; import * as idGenerator from './utils/idgenerator.js'; import * as parsing from './utils/parsing.js'; -import * as registry from './registry.js'; import {Size} from './utils/size.js'; import type {VariableModel} from './variable_model.js'; import type {Workspace} from './workspace.js'; -import {DummyInput} from './inputs/dummy_input.js'; -import {EndRowInput} from './inputs/end_row_input.js'; -import {ValueInput} from './inputs/value_input.js'; -import {StatementInput} from './inputs/statement_input.js'; -import {IconType} from './icons/icon_types.js'; /** * Class for one block. diff --git a/core/block_svg.ts b/core/block_svg.ts index 275451a61..e3a60315e 100644 --- a/core/block_svg.ts +++ b/core/block_svg.ts @@ -16,7 +16,9 @@ import './events/events_selected.js'; import {Block} from './block.js'; import * as blockAnimations from './block_animations.js'; +import {IDeletable} from './blockly.js'; import * as browserEvents from './browser_events.js'; +import {BlockCopyData, BlockPaster} from './clipboard/block_paster.js'; import * as common from './common.js'; import {config} from './config.js'; import type {Connection} from './connection.js'; @@ -28,11 +30,14 @@ import { ContextMenuRegistry, LegacyContextMenuOption, } from './contextmenu_registry.js'; +import {BlockDragStrategy} from './dragging/block_drag_strategy.js'; import type {BlockMove} from './events/events_block_move.js'; -import * as deprecation from './utils/deprecation.js'; import * as eventUtils from './events/utils.js'; import type {Field} from './field.js'; import {FieldLabel} from './field_label.js'; +import {IconType} from './icons/icon_types.js'; +import {MutatorIcon} from './icons/mutator_icon.js'; +import {WarningIcon} from './icons/warning_icon.js'; import type {Input} from './inputs/input.js'; import type {IASTNodeLocationSvg} from './interfaces/i_ast_node_location_svg.js'; import type {IBoundedElement} from './interfaces/i_bounded_element.js'; @@ -44,26 +49,21 @@ import {ASTNode} from './keyboard_nav/ast_node.js'; import {TabNavigateCursor} from './keyboard_nav/tab_navigate_cursor.js'; import {MarkerManager} from './marker_manager.js'; import {Msg} from './msg.js'; -import {MutatorIcon} from './icons/mutator_icon.js'; +import * as renderManagement from './render_management.js'; import {RenderedConnection} from './rendered_connection.js'; import type {IPathObject} from './renderers/common/i_path_object.js'; import * as blocks from './serialization/blocks.js'; import type {BlockStyle} from './theme.js'; import * as Tooltip from './tooltip.js'; import {Coordinate} from './utils/coordinate.js'; +import * as deprecation from './utils/deprecation.js'; import * as dom from './utils/dom.js'; import {Rect} from './utils/rect.js'; import {Svg} from './utils/svg.js'; import * as svgMath from './utils/svg_math.js'; -import {WarningIcon} from './icons/warning_icon.js'; +import {FlyoutItemInfo} from './utils/toolbox.js'; import type {Workspace} from './workspace.js'; import type {WorkspaceSvg} from './workspace_svg.js'; -import * as renderManagement from './render_management.js'; -import {IconType} from './icons/icon_types.js'; -import {BlockCopyData, BlockPaster} from './clipboard/block_paster.js'; -import {BlockDragStrategy} from './dragging/block_drag_strategy.js'; -import {IDeletable} from './blockly.js'; -import {FlyoutItemInfo} from './utils/toolbox.js'; /** * Class for a block's SVG representation. diff --git a/core/blockly.ts b/core/blockly.ts index 77362c0b4..01490dbb6 100644 --- a/core/blockly.ts +++ b/core/blockly.ts @@ -22,8 +22,10 @@ import {BlocklyOptions} from './blockly_options.js'; import {Blocks} from './blocks.js'; import * as browserEvents from './browser_events.js'; import * as bubbles from './bubbles.js'; +import {MiniWorkspaceBubble} from './bubbles/mini_workspace_bubble.js'; import * as bumpObjects from './bump_objects.js'; import * as clipboard from './clipboard.js'; +import * as comments from './comments.js'; import * as common from './common.js'; import {ComponentManager} from './component_manager.js'; import {config} from './config.js'; @@ -31,15 +33,15 @@ import {Connection} from './connection.js'; import {ConnectionChecker} from './connection_checker.js'; import {ConnectionDB} from './connection_db.js'; import {ConnectionType} from './connection_type.js'; +import * as constants from './constants.js'; import * as ContextMenu from './contextmenu.js'; import * as ContextMenuItems from './contextmenu_items.js'; import {ContextMenuRegistry} from './contextmenu_registry.js'; -import * as comments from './comments.js'; import * as Css from './css.js'; import {DeleteArea} from './delete_area.js'; import * as dialog from './dialog.js'; -import * as dragging from './dragging.js'; import {DragTarget} from './drag_target.js'; +import * as dragging from './dragging.js'; import * as dropDownDiv from './dropdowndiv.js'; import * as Events from './events/events.js'; import * as Extensions from './extensions.js'; @@ -104,8 +106,8 @@ import {Gesture} from './gesture.js'; import {Grid} from './grid.js'; import * as icons from './icons.js'; import {inject} from './inject.js'; -import {Input} from './inputs/input.js'; import * as inputs from './inputs.js'; +import {Input} from './inputs/input.js'; import {InsertionMarkerManager} from './insertion_marker_manager.js'; import {InsertionMarkerPreviewer} from './insertion_marker_previewer.js'; import {IASTNodeLocation} from './interfaces/i_ast_node_location.js'; @@ -119,16 +121,16 @@ import {IComponent} from './interfaces/i_component.js'; import {IConnectionChecker} from './interfaces/i_connection_checker.js'; import {IConnectionPreviewer} from './interfaces/i_connection_previewer.js'; import {IContextMenu} from './interfaces/i_contextmenu.js'; -import {ICopyable, isCopyable, ICopyData} from './interfaces/i_copyable.js'; +import {ICopyData, ICopyable, isCopyable} from './interfaces/i_copyable.js'; import {IDeletable, isDeletable} from './interfaces/i_deletable.js'; import {IDeleteArea} from './interfaces/i_delete_area.js'; import {IDragTarget} from './interfaces/i_drag_target.js'; -import {IDragger} from './interfaces/i_dragger.js'; import { + IDragStrategy, IDraggable, isDraggable, - IDragStrategy, } from './interfaces/i_draggable.js'; +import {IDragger} from './interfaces/i_dragger.js'; import {IFlyout} from './interfaces/i_flyout.js'; import {IHasBubble, hasBubble} from './interfaces/i_has_bubble.js'; import {IIcon, isIcon} from './interfaces/i_icon.js'; @@ -159,23 +161,21 @@ import {BasicCursor} from './keyboard_nav/basic_cursor.js'; import {Cursor} from './keyboard_nav/cursor.js'; import {Marker} from './keyboard_nav/marker.js'; import {TabNavigateCursor} from './keyboard_nav/tab_navigate_cursor.js'; -import {MarkerManager} from './marker_manager.js'; import type {LayerManager} from './layer_manager.js'; import * as layers from './layers.js'; +import {MarkerManager} from './marker_manager.js'; import {Menu} from './menu.js'; import {MenuItem} from './menuitem.js'; import {MetricsManager} from './metrics_manager.js'; import {Msg, setLocale} from './msg.js'; -import {MiniWorkspaceBubble} from './bubbles/mini_workspace_bubble.js'; import {Names} from './names.js'; import {Options} from './options.js'; import * as uiPosition from './positionable_helpers.js'; import * as Procedures from './procedures.js'; import * as registry from './registry.js'; -import {RenderedConnection} from './rendered_connection.js'; import * as renderManagement from './render_management.js'; +import {RenderedConnection} from './rendered_connection.js'; import * as blockRendering from './renderers/common/block_rendering.js'; -import * as constants from './constants.js'; import * as geras from './renderers/geras/geras.js'; import * as thrasos from './renderers/thrasos/thrasos.js'; import * as zelos from './renderers/zelos/zelos.js'; @@ -418,172 +418,187 @@ Names.prototype.populateProcedures = function ( // clang-format on // Re-export submodules that no longer declareLegacyNamespace. -export {browserEvents}; -export {ContextMenu}; -export {ContextMenuItems}; -export {Css}; -export {Events}; -export {Extensions}; -export {Procedures}; -export {Procedures as procedures}; -export {ShortcutItems}; -export {Themes}; -export {Tooltip}; -export {Touch}; -export {Variables}; -export {VariablesDynamic}; -export {WidgetDiv}; -export {Xml}; -export {blockAnimations}; -export {blockRendering}; -export {bumpObjects}; -export {clipboard}; -export {common}; -export {constants}; -export {dialog}; -export {fieldRegistry}; -export {geras}; -export {registry}; -export {thrasos}; -export {uiPosition}; -export {utils}; -export {zelos}; -export {ASTNode}; -export {BasicCursor}; -export {Block}; -export {BlocklyOptions}; -export {BlockSvg}; -export {Blocks}; -export {bubbles}; -export {CollapsibleToolboxCategory}; -export {ComponentManager}; -export {Connection}; -export {ConnectionType}; -export {ConnectionChecker}; -export {ConnectionDB}; -export {ContextMenuRegistry}; -export {comments}; -export {Cursor}; -export {DeleteArea}; -export {dragging}; -export {DragTarget}; -export const DropDownDiv = dropDownDiv; -export {Field, FieldConfig, FieldValidator, UnattachedFieldError}; export { + ASTNode, + BasicCursor, + Block, + BlockSvg, + BlocklyOptions, + Blocks, + CollapsibleToolboxCategory, + ComponentManager, + Connection, + ConnectionChecker, + ConnectionDB, + ConnectionType, + ContextMenu, + ContextMenuItems, + ContextMenuRegistry, + Css, + Cursor, + DeleteArea, + DragTarget, + Events, + Extensions, + Procedures, + ShortcutItems, + Themes, + Tooltip, + Touch, + Variables, + VariablesDynamic, + WidgetDiv, + Xml, + blockAnimations, + blockRendering, + browserEvents, + bubbles, + bumpObjects, + clipboard, + comments, + common, + constants, + dialog, + dragging, + fieldRegistry, + geras, + Procedures as procedures, + registry, + thrasos, + uiPosition, + utils, + zelos, +}; +export const DropDownDiv = dropDownDiv; +export { + CodeGenerator, + Field, FieldCheckbox, FieldCheckboxConfig, FieldCheckboxFromJsonConfig, FieldCheckboxValidator, -}; -export { + FieldConfig, FieldDropdown, FieldDropdownConfig, FieldDropdownFromJsonConfig, FieldDropdownValidator, - MenuGenerator, - MenuGeneratorFunction, - MenuOption, -}; -export {FieldImage, FieldImageConfig, FieldImageFromJsonConfig}; -export {FieldLabel, FieldLabelConfig, FieldLabelFromJsonConfig}; -export {FieldLabelSerializable}; -export { + FieldImage, + FieldImageConfig, + FieldImageFromJsonConfig, + FieldLabel, + FieldLabelConfig, + FieldLabelFromJsonConfig, + FieldLabelSerializable, FieldNumber, FieldNumberConfig, FieldNumberFromJsonConfig, FieldNumberValidator, -}; -export { FieldTextInput, FieldTextInputConfig, FieldTextInputFromJsonConfig, FieldTextInputValidator, -}; -export { + FieldValidator, FieldVariable, FieldVariableConfig, FieldVariableFromJsonConfig, FieldVariableValidator, + Flyout, + FlyoutButton, + FlyoutMetricsManager, + CodeGenerator as Generator, + Gesture, + Grid, + HorizontalFlyout, + IASTNodeLocation, + IASTNodeLocationSvg, + IASTNodeLocationWithBlock, + IAutoHideable, + IBoundedElement, + IBubble, + ICollapsibleToolboxItem, + IComponent, + IConnectionChecker, + IConnectionPreviewer, + IContextMenu, + ICopyData, + ICopyable, + IDeletable, + IDeleteArea, + IDragStrategy, + IDragTarget, + IDraggable, + IDragger, + IFlyout, + IHasBubble, + IIcon, + IKeyboardAccessible, + IMetricsManager, + IMovable, + IObservable, + IPaster, + IPositionable, + IRegistrable, + IRenderedElement, + ISelectable, + ISelectableToolboxItem, + ISerializable, + IStyleable, + IToolbox, + IToolboxItem, + IVariableBackedParameterModel, + Input, + InsertionMarkerManager, + InsertionMarkerPreviewer, + LayerManager, + Marker, + MarkerManager, + Menu, + MenuGenerator, + MenuGeneratorFunction, + MenuItem, + MenuOption, + MetricsManager, + Msg, + Names, + Options, + RenderedConnection, + Scrollbar, + ScrollbarPair, + ShortcutRegistry, + TabNavigateCursor, + Theme, + ThemeManager, + Toolbox, + ToolboxCategory, + ToolboxItem, + ToolboxSeparator, + Trashcan, + UnattachedFieldError, + VariableMap, + VariableModel, + VerticalFlyout, + Workspace, + WorkspaceAudio, + WorkspaceDragger, + WorkspaceSvg, + ZoomControls, + config, + hasBubble, + icons, + inject, + inputs, + isCopyable, + isDeletable, + isDraggable, + isIcon, + isObservable, + isPaster, + isRenderedElement, + isSelectable, + isSerializable, + isVariableBackedParameterModel, + layers, + renderManagement, + serialization, + setLocale, }; -export {Flyout}; -export {FlyoutButton}; -export {FlyoutMetricsManager}; -export {CodeGenerator}; -export {CodeGenerator as Generator}; // Deprecated name, October 2022. -export {Gesture}; -export {Grid}; -export {HorizontalFlyout}; -export {IASTNodeLocation}; -export {IASTNodeLocationSvg}; -export {IASTNodeLocationWithBlock}; -export {IAutoHideable}; -export {IBoundedElement}; -export {IBubble}; -export {ICollapsibleToolboxItem}; -export {IComponent}; -export {IConnectionChecker}; -export {IConnectionPreviewer}; -export {IContextMenu}; -export {icons}; -export {ICopyable, isCopyable, ICopyData}; -export {IDeletable, isDeletable}; -export {IDeleteArea}; -export {IDragTarget}; -export {IDragger}; -export {IDraggable, isDraggable, IDragStrategy}; -export {IFlyout}; -export {IHasBubble, hasBubble}; -export {IIcon, isIcon}; -export {IKeyboardAccessible}; -export {IMetricsManager}; -export {IMovable}; -export {Input}; -export {inputs}; -export {InsertionMarkerManager}; -export {InsertionMarkerPreviewer}; -export {IObservable, isObservable}; -export {IPaster, isPaster}; -export {IPositionable}; -export {IRegistrable}; -export {IRenderedElement, isRenderedElement}; -export {ISelectable, isSelectable}; -export {ISelectableToolboxItem}; -export {ISerializable, isSerializable}; -export {IStyleable}; -export {IToolbox}; -export {IToolboxItem}; -export {IVariableBackedParameterModel, isVariableBackedParameterModel}; -export {Marker}; -export {MarkerManager}; -export {LayerManager}; -export {Menu}; -export {MenuItem}; -export {MetricsManager}; -export {Msg, setLocale}; -export {Names}; -export {Options}; -export {RenderedConnection}; -export {renderManagement}; -export {Scrollbar}; -export {ScrollbarPair}; -export {ShortcutRegistry}; -export {TabNavigateCursor}; -export {Theme}; -export {ThemeManager}; -export {Toolbox}; -export {ToolboxCategory}; -export {ToolboxItem}; -export {ToolboxSeparator}; -export {Trashcan}; -export {VariableMap}; -export {VariableModel}; -export {VerticalFlyout}; -export {Workspace}; -export {WorkspaceAudio}; -export {WorkspaceDragger}; -export {WorkspaceSvg}; -export {ZoomControls}; -export {config}; -export {inject}; -export {serialization}; -export {layers}; diff --git a/core/blockly_options.ts b/core/blockly_options.ts index e3ed0b912..dd18dbfee 100644 --- a/core/blockly_options.ts +++ b/core/blockly_options.ts @@ -6,9 +6,9 @@ // Former goog.module ID: Blockly.BlocklyOptions -import type {Theme, ITheme} from './theme.js'; -import type {WorkspaceSvg} from './workspace_svg.js'; +import type {ITheme, Theme} from './theme.js'; import type {ToolboxDefinition} from './utils/toolbox.js'; +import type {WorkspaceSvg} from './workspace_svg.js'; /** * Blockly options. diff --git a/core/bubbles.ts b/core/bubbles.ts index 0c61741f9..a49c2ae35 100644 --- a/core/bubbles.ts +++ b/core/bubbles.ts @@ -5,8 +5,8 @@ */ import {Bubble} from './bubbles/bubble.js'; +import {MiniWorkspaceBubble} from './bubbles/mini_workspace_bubble.js'; import {TextBubble} from './bubbles/text_bubble.js'; import {TextInputBubble} from './bubbles/textinput_bubble.js'; -import {MiniWorkspaceBubble} from './bubbles/mini_workspace_bubble.js'; -export {Bubble, TextBubble, TextInputBubble, MiniWorkspaceBubble}; +export {Bubble, MiniWorkspaceBubble, TextBubble, TextInputBubble}; diff --git a/core/bubbles/bubble.ts b/core/bubbles/bubble.ts index e86f5a856..bac94dbc8 100644 --- a/core/bubbles/bubble.ts +++ b/core/bubbles/bubble.ts @@ -4,21 +4,21 @@ * SPDX-License-Identifier: Apache-2.0 */ +import {ISelectable} from '../blockly.js'; import * as browserEvents from '../browser_events.js'; +import * as common from '../common.js'; import {BubbleDragStrategy} from '../dragging/bubble_drag_strategy.js'; import {IBubble} from '../interfaces/i_bubble.js'; import {ContainerRegion} from '../metrics_manager.js'; import {Scrollbar} from '../scrollbar.js'; import {Coordinate} from '../utils/coordinate.js'; import * as dom from '../utils/dom.js'; +import * as idGenerator from '../utils/idgenerator.js'; import * as math from '../utils/math.js'; import {Rect} from '../utils/rect.js'; import {Size} from '../utils/size.js'; import {Svg} from '../utils/svg.js'; import {WorkspaceSvg} from '../workspace_svg.js'; -import * as common from '../common.js'; -import {ISelectable} from '../blockly.js'; -import * as idGenerator from '../utils/idgenerator.js'; /** * The abstract pop-up bubble class. This creates a UI that looks like a speech diff --git a/core/bubbles/mini_workspace_bubble.ts b/core/bubbles/mini_workspace_bubble.ts index 74317d57b..f4ad96c8c 100644 --- a/core/bubbles/mini_workspace_bubble.ts +++ b/core/bubbles/mini_workspace_bubble.ts @@ -4,16 +4,16 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {Abstract as AbstractEvent} from '../events/events_abstract.js'; import type {BlocklyOptions} from '../blockly_options.js'; -import {Bubble} from './bubble.js'; +import {Abstract as AbstractEvent} from '../events/events_abstract.js'; +import {Options} from '../options.js'; import {Coordinate} from '../utils/coordinate.js'; import * as dom from '../utils/dom.js'; -import {Options} from '../options.js'; -import {Svg} from '../utils/svg.js'; import type {Rect} from '../utils/rect.js'; import {Size} from '../utils/size.js'; +import {Svg} from '../utils/svg.js'; import type {WorkspaceSvg} from '../workspace_svg.js'; +import {Bubble} from './bubble.js'; /** * A bubble that contains a mini-workspace which can hold arbitrary blocks. diff --git a/core/bubbles/text_bubble.ts b/core/bubbles/text_bubble.ts index 020ab4f2e..7ac5fa029 100644 --- a/core/bubbles/text_bubble.ts +++ b/core/bubbles/text_bubble.ts @@ -4,13 +4,13 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {Bubble} from './bubble.js'; import {Coordinate} from '../utils/coordinate.js'; import * as dom from '../utils/dom.js'; import {Rect} from '../utils/rect.js'; import {Size} from '../utils/size.js'; import {Svg} from '../utils/svg.js'; import {WorkspaceSvg} from '../workspace_svg.js'; +import {Bubble} from './bubble.js'; /** * A bubble that displays non-editable text. Used by the warning icon. diff --git a/core/bubbles/textinput_bubble.ts b/core/bubbles/textinput_bubble.ts index d7d1f5ae7..675dbb539 100644 --- a/core/bubbles/textinput_bubble.ts +++ b/core/bubbles/textinput_bubble.ts @@ -4,16 +4,16 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {Bubble} from './bubble.js'; -import {Coordinate} from '../utils/coordinate.js'; import * as Css from '../css.js'; +import * as touch from '../touch.js'; +import {browserEvents} from '../utils.js'; +import {Coordinate} from '../utils/coordinate.js'; import * as dom from '../utils/dom.js'; import {Rect} from '../utils/rect.js'; import {Size} from '../utils/size.js'; import {Svg} from '../utils/svg.js'; -import * as touch from '../touch.js'; import {WorkspaceSvg} from '../workspace_svg.js'; -import {browserEvents} from '../utils.js'; +import {Bubble} from './bubble.js'; /** * A bubble that displays editable text. It can also be resized by the user. diff --git a/core/clipboard.ts b/core/clipboard.ts index ed574d112..62e23fd24 100644 --- a/core/clipboard.ts +++ b/core/clipboard.ts @@ -6,12 +6,12 @@ // Former goog.module ID: Blockly.clipboard -import type {ICopyData, ICopyable} from './interfaces/i_copyable.js'; import {BlockPaster} from './clipboard/block_paster.js'; -import * as globalRegistry from './registry.js'; -import {WorkspaceSvg} from './workspace_svg.js'; import * as registry from './clipboard/registry.js'; +import type {ICopyData, ICopyable} from './interfaces/i_copyable.js'; +import * as globalRegistry from './registry.js'; import {Coordinate} from './utils/coordinate.js'; +import {WorkspaceSvg} from './workspace_svg.js'; /** Metadata about the object that is currently on the clipboard. */ let stashedCopyData: ICopyData | null = null; diff --git a/core/clipboard/block_paster.ts b/core/clipboard/block_paster.ts index f82adf2b3..04c55c5b0 100644 --- a/core/clipboard/block_paster.ts +++ b/core/clipboard/block_paster.ts @@ -5,15 +5,15 @@ */ import {BlockSvg} from '../block_svg.js'; -import * as registry from './registry.js'; +import * as common from '../common.js'; +import {config} from '../config.js'; +import * as eventUtils from '../events/utils.js'; import {ICopyData} from '../interfaces/i_copyable.js'; import {IPaster} from '../interfaces/i_paster.js'; import {State, append} from '../serialization/blocks.js'; import {Coordinate} from '../utils/coordinate.js'; import {WorkspaceSvg} from '../workspace_svg.js'; -import * as eventUtils from '../events/utils.js'; -import {config} from '../config.js'; -import * as common from '../common.js'; +import * as registry from './registry.js'; export class BlockPaster implements IPaster { static TYPE = 'block'; diff --git a/core/clipboard/workspace_comment_paster.ts b/core/clipboard/workspace_comment_paster.ts index c7e5eed68..173949a2b 100644 --- a/core/clipboard/workspace_comment_paster.ts +++ b/core/clipboard/workspace_comment_paster.ts @@ -4,15 +4,15 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {IPaster} from '../interfaces/i_paster.js'; +import {RenderedWorkspaceComment} from '../comments/rendered_workspace_comment.js'; +import * as common from '../common.js'; +import * as eventUtils from '../events/utils.js'; import {ICopyData} from '../interfaces/i_copyable.js'; +import {IPaster} from '../interfaces/i_paster.js'; +import * as commentSerialiation from '../serialization/workspace_comments.js'; import {Coordinate} from '../utils/coordinate.js'; import {WorkspaceSvg} from '../workspace_svg.js'; import * as registry from './registry.js'; -import * as commentSerialiation from '../serialization/workspace_comments.js'; -import * as eventUtils from '../events/utils.js'; -import * as common from '../common.js'; -import {RenderedWorkspaceComment} from '../comments/rendered_workspace_comment.js'; export class WorkspaceCommentPaster implements IPaster diff --git a/core/comments.ts b/core/comments.ts index 368db0e77..ee8591987 100644 --- a/core/comments.ts +++ b/core/comments.ts @@ -5,5 +5,5 @@ */ export {CommentView} from './comments/comment_view.js'; -export {WorkspaceComment} from './comments/workspace_comment.js'; export {RenderedWorkspaceComment} from './comments/rendered_workspace_comment.js'; +export {WorkspaceComment} from './comments/workspace_comment.js'; diff --git a/core/comments/comment_view.ts b/core/comments/comment_view.ts index bda2b9762..bf615163c 100644 --- a/core/comments/comment_view.ts +++ b/core/comments/comment_view.ts @@ -4,16 +4,16 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {IRenderedElement} from '../interfaces/i_rendered_element.js'; -import {WorkspaceSvg} from '../workspace_svg.js'; -import * as dom from '../utils/dom.js'; -import {Svg} from '../utils/svg.js'; -import * as layers from '../layers.js'; -import * as css from '../css.js'; -import {Coordinate} from '../utils/coordinate.js'; -import {Size} from '../utils/size.js'; import * as browserEvents from '../browser_events.js'; +import * as css from '../css.js'; +import {IRenderedElement} from '../interfaces/i_rendered_element.js'; +import * as layers from '../layers.js'; import * as touch from '../touch.js'; +import {Coordinate} from '../utils/coordinate.js'; +import * as dom from '../utils/dom.js'; +import {Size} from '../utils/size.js'; +import {Svg} from '../utils/svg.js'; +import {WorkspaceSvg} from '../workspace_svg.js'; export class CommentView implements IRenderedElement { /** The root group element of the comment view. */ diff --git a/core/comments/rendered_workspace_comment.ts b/core/comments/rendered_workspace_comment.ts index 7cc643808..ff2133574 100644 --- a/core/comments/rendered_workspace_comment.ts +++ b/core/comments/rendered_workspace_comment.ts @@ -4,31 +4,31 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {WorkspaceComment} from './workspace_comment.js'; -import {WorkspaceSvg} from '../workspace_svg.js'; -import {CommentView} from './comment_view.js'; -import {Coordinate} from '../utils/coordinate.js'; -import {Rect} from '../utils/rect.js'; -import {Size} from '../utils/size.js'; -import {IBoundedElement} from '../interfaces/i_bounded_element.js'; -import {IRenderedElement} from '../interfaces/i_rendered_element.js'; -import * as dom from '../utils/dom.js'; -import {IDraggable} from '../interfaces/i_draggable.js'; -import {CommentDragStrategy} from '../dragging/comment_drag_strategy.js'; import * as browserEvents from '../browser_events.js'; -import * as common from '../common.js'; -import {ISelectable} from '../interfaces/i_selectable.js'; -import {IDeletable} from '../interfaces/i_deletable.js'; -import {ICopyable} from '../interfaces/i_copyable.js'; -import * as commentSerialization from '../serialization/workspace_comments.js'; import { - WorkspaceCommentPaster, WorkspaceCommentCopyData, + WorkspaceCommentPaster, } from '../clipboard/workspace_comment_paster.js'; -import {IContextMenu} from '../interfaces/i_contextmenu.js'; +import * as common from '../common.js'; import * as contextMenu from '../contextmenu.js'; import {ContextMenuRegistry} from '../contextmenu_registry.js'; +import {CommentDragStrategy} from '../dragging/comment_drag_strategy.js'; +import {IBoundedElement} from '../interfaces/i_bounded_element.js'; +import {IContextMenu} from '../interfaces/i_contextmenu.js'; +import {ICopyable} from '../interfaces/i_copyable.js'; +import {IDeletable} from '../interfaces/i_deletable.js'; +import {IDraggable} from '../interfaces/i_draggable.js'; +import {IRenderedElement} from '../interfaces/i_rendered_element.js'; +import {ISelectable} from '../interfaces/i_selectable.js'; import * as layers from '../layers.js'; +import * as commentSerialization from '../serialization/workspace_comments.js'; +import {Coordinate} from '../utils/coordinate.js'; +import * as dom from '../utils/dom.js'; +import {Rect} from '../utils/rect.js'; +import {Size} from '../utils/size.js'; +import {WorkspaceSvg} from '../workspace_svg.js'; +import {CommentView} from './comment_view.js'; +import {WorkspaceComment} from './workspace_comment.js'; export class RenderedWorkspaceComment extends WorkspaceComment diff --git a/core/comments/workspace_comment.ts b/core/comments/workspace_comment.ts index 0764b5168..a659bc8d9 100644 --- a/core/comments/workspace_comment.ts +++ b/core/comments/workspace_comment.ts @@ -4,13 +4,13 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {Workspace} from '../workspace.js'; -import {Size} from '../utils/size.js'; -import {Coordinate} from '../utils/coordinate.js'; -import * as idGenerator from '../utils/idgenerator.js'; -import * as eventUtils from '../events/utils.js'; import {CommentMove} from '../events/events_comment_move.js'; import {CommentResize} from '../events/events_comment_resize.js'; +import * as eventUtils from '../events/utils.js'; +import {Coordinate} from '../utils/coordinate.js'; +import * as idGenerator from '../utils/idgenerator.js'; +import {Size} from '../utils/size.js'; +import {Workspace} from '../workspace.js'; export class WorkspaceComment { /** The unique identifier for this comment. */ diff --git a/core/common.ts b/core/common.ts index fba960a5b..fcd27b00d 100644 --- a/core/common.ts +++ b/core/common.ts @@ -6,14 +6,13 @@ // Former goog.module ID: Blockly.common -/* eslint-disable-next-line no-unused-vars */ import type {Block} from './block.js'; import {ISelectable} from './blockly.js'; import {BlockDefinition, Blocks} from './blocks.js'; import type {Connection} from './connection.js'; +import * as eventUtils from './events/utils.js'; import type {Workspace} from './workspace.js'; import type {WorkspaceSvg} from './workspace_svg.js'; -import * as eventUtils from './events/utils.js'; /** Database of all workspaces. */ const WorkspaceDB_ = Object.create(null); diff --git a/core/contextmenu.ts b/core/contextmenu.ts index e469c4335..8f4626358 100644 --- a/core/contextmenu.ts +++ b/core/contextmenu.ts @@ -9,8 +9,8 @@ import type {Block} from './block.js'; import type {BlockSvg} from './block_svg.js'; import * as browserEvents from './browser_events.js'; +import * as common from './common.js'; import {config} from './config.js'; -import * as dom from './utils/dom.js'; import type { ContextMenuOption, LegacyContextMenuOption, @@ -18,14 +18,14 @@ import type { import * as eventUtils from './events/utils.js'; import {Menu} from './menu.js'; import {MenuItem} from './menuitem.js'; -import * as aria from './utils/aria.js'; -import {Rect} from './utils/rect.js'; import * as serializationBlocks from './serialization/blocks.js'; +import * as aria from './utils/aria.js'; +import * as dom from './utils/dom.js'; +import {Rect} from './utils/rect.js'; import * as svgMath from './utils/svg_math.js'; import * as WidgetDiv from './widgetdiv.js'; import type {WorkspaceSvg} from './workspace_svg.js'; import * as Xml from './xml.js'; -import * as common from './common.js'; /** * Which block is the context menu attached to? diff --git a/core/contextmenu_items.ts b/core/contextmenu_items.ts index 254906ce7..25ffab59b 100644 --- a/core/contextmenu_items.ts +++ b/core/contextmenu_items.ts @@ -9,12 +9,13 @@ import type {BlockSvg} from './block_svg.js'; import * as clipboard from './clipboard.js'; import {RenderedWorkspaceComment} from './comments/rendered_workspace_comment.js'; +import * as common from './common.js'; +import {MANUALLY_DISABLED} from './constants.js'; import { ContextMenuRegistry, RegistryItem, Scope, } from './contextmenu_registry.js'; -import {MANUALLY_DISABLED} from './constants.js'; import * as dialog from './dialog.js'; import * as Events from './events/events.js'; import * as eventUtils from './events/utils.js'; @@ -23,7 +24,6 @@ import {Msg} from './msg.js'; import {StatementInput} from './renderers/zelos/zelos.js'; import {Coordinate} from './utils/coordinate.js'; import type {WorkspaceSvg} from './workspace_svg.js'; -import * as common from './common.js'; /** * Option to undo previous action. diff --git a/core/delete_area.ts b/core/delete_area.ts index 4967927c4..405084db9 100644 --- a/core/delete_area.ts +++ b/core/delete_area.ts @@ -14,9 +14,9 @@ import {BlockSvg} from './block_svg.js'; import {DragTarget} from './drag_target.js'; +import {isDeletable} from './interfaces/i_deletable.js'; import type {IDeleteArea} from './interfaces/i_delete_area.js'; import type {IDraggable} from './interfaces/i_draggable.js'; -import {isDeletable} from './interfaces/i_deletable.js'; /** * Abstract class for a component that can delete a block or bubble that is diff --git a/core/dragging.ts b/core/dragging.ts index a7e46fc27..4ba85c49f 100644 --- a/core/dragging.ts +++ b/core/dragging.ts @@ -4,9 +4,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {Dragger} from './dragging/dragger.js'; import {BlockDragStrategy} from './dragging/block_drag_strategy.js'; import {BubbleDragStrategy} from './dragging/bubble_drag_strategy.js'; import {CommentDragStrategy} from './dragging/comment_drag_strategy.js'; +import {Dragger} from './dragging/dragger.js'; -export {Dragger, BlockDragStrategy, BubbleDragStrategy, CommentDragStrategy}; +export {BlockDragStrategy, BubbleDragStrategy, CommentDragStrategy, Dragger}; diff --git a/core/dragging/block_drag_strategy.ts b/core/dragging/block_drag_strategy.ts index 2afdba51f..968de3902 100644 --- a/core/dragging/block_drag_strategy.ts +++ b/core/dragging/block_drag_strategy.ts @@ -4,24 +4,24 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {WorkspaceSvg} from '../workspace_svg.js'; -import {IDragStrategy} from '../interfaces/i_draggable.js'; -import {Coordinate} from '../utils.js'; -import * as eventUtils from '../events/utils.js'; -import {BlockSvg} from '../block_svg.js'; -import {RenderedConnection} from '../rendered_connection.js'; -import * as dom from '../utils/dom.js'; -import * as blockAnimation from '../block_animations.js'; -import {ConnectionType} from '../connection_type.js'; -import * as bumpObjects from '../bump_objects.js'; -import * as registry from '../registry.js'; -import {IConnectionPreviewer} from '../interfaces/i_connection_previewer.js'; -import {Connection} from '../connection.js'; import type {Block} from '../block.js'; +import * as blockAnimation from '../block_animations.js'; +import {BlockSvg} from '../block_svg.js'; +import * as bumpObjects from '../bump_objects.js'; import {config} from '../config.js'; +import {Connection} from '../connection.js'; +import {ConnectionType} from '../connection_type.js'; import type {BlockMove} from '../events/events_block_move.js'; -import {finishQueuedRenders} from '../render_management.js'; +import * as eventUtils from '../events/utils.js'; +import {IConnectionPreviewer} from '../interfaces/i_connection_previewer.js'; +import {IDragStrategy} from '../interfaces/i_draggable.js'; import * as layers from '../layers.js'; +import * as registry from '../registry.js'; +import {finishQueuedRenders} from '../render_management.js'; +import {RenderedConnection} from '../rendered_connection.js'; +import {Coordinate} from '../utils.js'; +import * as dom from '../utils/dom.js'; +import {WorkspaceSvg} from '../workspace_svg.js'; /** Represents a nearby valid connection. */ interface ConnectionCandidate { diff --git a/core/dragging/bubble_drag_strategy.ts b/core/dragging/bubble_drag_strategy.ts index 05465a804..c2a5c58f4 100644 --- a/core/dragging/bubble_drag_strategy.ts +++ b/core/dragging/bubble_drag_strategy.ts @@ -4,11 +4,11 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {IDragStrategy} from '../interfaces/i_draggable.js'; -import {Coordinate} from '../utils.js'; -import * as eventUtils from '../events/utils.js'; import {IBubble, WorkspaceSvg} from '../blockly.js'; +import * as eventUtils from '../events/utils.js'; +import {IDragStrategy} from '../interfaces/i_draggable.js'; import * as layers from '../layers.js'; +import {Coordinate} from '../utils.js'; export class BubbleDragStrategy implements IDragStrategy { private startLoc: Coordinate | null = null; diff --git a/core/dragging/comment_drag_strategy.ts b/core/dragging/comment_drag_strategy.ts index 2197d37f2..4053638c2 100644 --- a/core/dragging/comment_drag_strategy.ts +++ b/core/dragging/comment_drag_strategy.ts @@ -4,13 +4,13 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {IDragStrategy} from '../interfaces/i_draggable.js'; -import {Coordinate} from '../utils.js'; -import * as eventUtils from '../events/utils.js'; -import * as layers from '../layers.js'; import {RenderedWorkspaceComment} from '../comments.js'; -import {WorkspaceSvg} from '../workspace_svg.js'; import {CommentMove} from '../events/events_comment_move.js'; +import * as eventUtils from '../events/utils.js'; +import {IDragStrategy} from '../interfaces/i_draggable.js'; +import * as layers from '../layers.js'; +import {Coordinate} from '../utils.js'; +import {WorkspaceSvg} from '../workspace_svg.js'; export class CommentDragStrategy implements IDragStrategy { private startLoc: Coordinate | null = null; diff --git a/core/dragging/dragger.ts b/core/dragging/dragger.ts index 66d447a6f..8a9ac87c6 100644 --- a/core/dragging/dragger.ts +++ b/core/dragging/dragger.ts @@ -4,18 +4,18 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {IDragTarget} from '../interfaces/i_drag_target.js'; -import {IDeletable, isDeletable} from '../interfaces/i_deletable.js'; -import {IDragger} from '../interfaces/i_dragger.js'; -import {IDraggable} from '../interfaces/i_draggable.js'; -import {Coordinate} from '../utils/coordinate.js'; -import {WorkspaceSvg} from '../workspace_svg.js'; -import {ComponentManager} from '../component_manager.js'; -import {IDeleteArea} from '../interfaces/i_delete_area.js'; -import * as registry from '../registry.js'; -import * as eventUtils from '../events/utils.js'; import * as blockAnimations from '../block_animations.js'; import {BlockSvg} from '../block_svg.js'; +import {ComponentManager} from '../component_manager.js'; +import * as eventUtils from '../events/utils.js'; +import {IDeletable, isDeletable} from '../interfaces/i_deletable.js'; +import {IDeleteArea} from '../interfaces/i_delete_area.js'; +import {IDragTarget} from '../interfaces/i_drag_target.js'; +import {IDraggable} from '../interfaces/i_draggable.js'; +import {IDragger} from '../interfaces/i_dragger.js'; +import * as registry from '../registry.js'; +import {Coordinate} from '../utils/coordinate.js'; +import {WorkspaceSvg} from '../workspace_svg.js'; export class Dragger implements IDragger { protected startLoc: Coordinate; diff --git a/core/dropdowndiv.ts b/core/dropdowndiv.ts index 5b531912a..f9af02ac9 100644 --- a/core/dropdowndiv.ts +++ b/core/dropdowndiv.ts @@ -14,8 +14,8 @@ import type {BlockSvg} from './block_svg.js'; import * as common from './common.js'; -import * as dom from './utils/dom.js'; import type {Field} from './field.js'; +import * as dom from './utils/dom.js'; import * as math from './utils/math.js'; import {Rect} from './utils/rect.js'; import type {Size} from './utils/size.js'; diff --git a/core/events/events.ts b/core/events/events.ts index b31cf7dc7..97dc8cba4 100644 --- a/core/events/events.ts +++ b/core/events/events.ts @@ -21,15 +21,15 @@ import {BubbleOpen, BubbleOpenJson, BubbleType} from './events_bubble_open.js'; import {Click, ClickJson, ClickTarget} from './events_click.js'; import {CommentBase, CommentBaseJson} from './events_comment_base.js'; import {CommentChange, CommentChangeJson} from './events_comment_change.js'; -import {CommentCreate, CommentCreateJson} from './events_comment_create.js'; -import {CommentDelete} from './events_comment_delete.js'; -import {CommentMove, CommentMoveJson} from './events_comment_move.js'; -import {CommentResize, CommentResizeJson} from './events_comment_resize.js'; -import {CommentDrag, CommentDragJson} from './events_comment_drag.js'; import { CommentCollapse, CommentCollapseJson, } from './events_comment_collapse.js'; +import {CommentCreate, CommentCreateJson} from './events_comment_create.js'; +import {CommentDelete} from './events_comment_delete.js'; +import {CommentDrag, CommentDragJson} from './events_comment_drag.js'; +import {CommentMove, CommentMoveJson} from './events_comment_move.js'; +import {CommentResize, CommentResizeJson} from './events_comment_resize.js'; import {MarkerMove, MarkerMoveJson} from './events_marker_move.js'; import {Selected, SelectedJson} from './events_selected.js'; import {ThemeChange, ThemeChangeJson} from './events_theme_change.js'; @@ -48,65 +48,67 @@ import * as eventUtils from './utils.js'; import {FinishedLoading} from './workspace_events.js'; // Events. -export {Abstract}; -export {AbstractEventJson}; -export {BubbleOpen}; -export {BubbleOpenJson}; -export {BubbleType}; -export {BlockBase}; -export {BlockBaseJson}; -export {BlockChange}; -export {BlockChangeJson}; -export {BlockCreate}; -export {BlockCreateJson}; -export {BlockDelete}; -export {BlockDeleteJson}; -export {BlockDrag}; -export {BlockDragJson}; -export {BlockFieldIntermediateChange}; -export {BlockFieldIntermediateChangeJson}; -export {BlockMove}; -export {BlockMoveJson}; -export {Click}; -export {ClickJson}; -export {ClickTarget}; -export {CommentBase}; -export {CommentBaseJson}; -export {CommentChange}; -export {CommentChangeJson}; -export {CommentCreate}; -export {CommentCreateJson}; -export {CommentDelete}; -export {CommentMove}; -export {CommentMoveJson}; -export {CommentResize}; -export {CommentResizeJson}; -export {CommentDrag}; -export {CommentDragJson}; -export {CommentCollapse}; -export {CommentCollapseJson}; -export {FinishedLoading}; -export {MarkerMove}; -export {MarkerMoveJson}; -export {Selected}; -export {SelectedJson}; -export {ThemeChange}; -export {ThemeChangeJson}; -export {ToolboxItemSelect}; -export {ToolboxItemSelectJson}; -export {TrashcanOpen}; -export {TrashcanOpenJson}; -export {UiBase}; -export {VarBase}; -export {VarBaseJson}; -export {VarCreate}; -export {VarCreateJson}; -export {VarDelete}; -export {VarDeleteJson}; -export {VarRename}; -export {VarRenameJson}; -export {ViewportChange}; -export {ViewportChangeJson}; +export { + Abstract, + AbstractEventJson, + BlockBase, + BlockBaseJson, + BlockChange, + BlockChangeJson, + BlockCreate, + BlockCreateJson, + BlockDelete, + BlockDeleteJson, + BlockDrag, + BlockDragJson, + BlockFieldIntermediateChange, + BlockFieldIntermediateChangeJson, + BlockMove, + BlockMoveJson, + BubbleOpen, + BubbleOpenJson, + BubbleType, + Click, + ClickJson, + ClickTarget, + CommentBase, + CommentBaseJson, + CommentChange, + CommentChangeJson, + CommentCollapse, + CommentCollapseJson, + CommentCreate, + CommentCreateJson, + CommentDelete, + CommentDrag, + CommentDragJson, + CommentMove, + CommentMoveJson, + CommentResize, + CommentResizeJson, + FinishedLoading, + MarkerMove, + MarkerMoveJson, + Selected, + SelectedJson, + ThemeChange, + ThemeChangeJson, + ToolboxItemSelect, + ToolboxItemSelectJson, + TrashcanOpen, + TrashcanOpenJson, + UiBase, + VarBase, + VarBaseJson, + VarCreate, + VarCreateJson, + VarDelete, + VarDeleteJson, + VarRename, + VarRenameJson, + ViewportChange, + ViewportChangeJson, +}; // Event types. export const BLOCK_CHANGE = eventUtils.BLOCK_CHANGE; diff --git a/core/events/events_abstract.ts b/core/events/events_abstract.ts index 7f06d48e9..b63c742b5 100644 --- a/core/events/events_abstract.ts +++ b/core/events/events_abstract.ts @@ -14,7 +14,6 @@ import * as common from '../common.js'; import type {Workspace} from '../workspace.js'; - import * as eventUtils from './utils.js'; /** diff --git a/core/events/events_block_base.ts b/core/events/events_block_base.ts index 350985428..d15b8e439 100644 --- a/core/events/events_block_base.ts +++ b/core/events/events_block_base.ts @@ -13,7 +13,6 @@ import type {Block} from '../block.js'; import type {Workspace} from '../workspace.js'; - import { Abstract as AbstractEvent, AbstractEventJson, diff --git a/core/events/events_block_change.ts b/core/events/events_block_change.ts index 570b7f58e..103dc3427 100644 --- a/core/events/events_block_change.ts +++ b/core/events/events_block_change.ts @@ -13,14 +13,13 @@ import type {Block} from '../block.js'; import type {BlockSvg} from '../block_svg.js'; +import {MANUALLY_DISABLED} from '../constants.js'; import {IconType} from '../icons/icon_types.js'; import {hasBubble} from '../interfaces/i_has_bubble.js'; -import {MANUALLY_DISABLED} from '../constants.js'; import * as registry from '../registry.js'; import * as utilsXml from '../utils/xml.js'; import {Workspace} from '../workspace.js'; import * as Xml from '../xml.js'; - import {BlockBase, BlockBaseJson} from './events_block_base.js'; import * as eventUtils from './utils.js'; diff --git a/core/events/events_block_create.ts b/core/events/events_block_create.ts index cbabc9332..6f14a8117 100644 --- a/core/events/events_block_create.ts +++ b/core/events/events_block_create.ts @@ -15,11 +15,10 @@ import type {Block} from '../block.js'; import * as registry from '../registry.js'; import * as blocks from '../serialization/blocks.js'; import * as utilsXml from '../utils/xml.js'; +import {Workspace} from '../workspace.js'; import * as Xml from '../xml.js'; - import {BlockBase, BlockBaseJson} from './events_block_base.js'; import * as eventUtils from './utils.js'; -import {Workspace} from '../workspace.js'; /** * Notifies listeners when a block (or connected stack of blocks) is diff --git a/core/events/events_block_delete.ts b/core/events/events_block_delete.ts index 3375a78dd..e1c04f365 100644 --- a/core/events/events_block_delete.ts +++ b/core/events/events_block_delete.ts @@ -15,11 +15,10 @@ import type {Block} from '../block.js'; import * as registry from '../registry.js'; import * as blocks from '../serialization/blocks.js'; import * as utilsXml from '../utils/xml.js'; +import {Workspace} from '../workspace.js'; import * as Xml from '../xml.js'; - import {BlockBase, BlockBaseJson} from './events_block_base.js'; import * as eventUtils from './utils.js'; -import {Workspace} from '../workspace.js'; /** * Notifies listeners when a block (or connected stack of blocks) is diff --git a/core/events/events_block_drag.ts b/core/events/events_block_drag.ts index 3729ab777..0045d2bec 100644 --- a/core/events/events_block_drag.ts +++ b/core/events/events_block_drag.ts @@ -13,10 +13,10 @@ import type {Block} from '../block.js'; import * as registry from '../registry.js'; +import {Workspace} from '../workspace.js'; import {AbstractEventJson} from './events_abstract.js'; import {UiBase} from './events_ui_base.js'; import * as eventUtils from './utils.js'; -import {Workspace} from '../workspace.js'; /** * Notifies listeners when a block is being manually dragged/dropped. diff --git a/core/events/events_block_field_intermediate_change.ts b/core/events/events_block_field_intermediate_change.ts index 264f910a8..ef077a97a 100644 --- a/core/events/events_block_field_intermediate_change.ts +++ b/core/events/events_block_field_intermediate_change.ts @@ -15,7 +15,6 @@ import type {Block} from '../block.js'; import * as registry from '../registry.js'; import {Workspace} from '../workspace.js'; - import {BlockBase, BlockBaseJson} from './events_block_base.js'; import * as eventUtils from './utils.js'; diff --git a/core/events/events_block_move.ts b/core/events/events_block_move.ts index 6c05ab2af..233880eef 100644 --- a/core/events/events_block_move.ts +++ b/core/events/events_block_move.ts @@ -15,10 +15,9 @@ import type {Block} from '../block.js'; import {ConnectionType} from '../connection_type.js'; import * as registry from '../registry.js'; import {Coordinate} from '../utils/coordinate.js'; - +import type {Workspace} from '../workspace.js'; import {BlockBase, BlockBaseJson} from './events_block_base.js'; import * as eventUtils from './utils.js'; -import type {Workspace} from '../workspace.js'; interface BlockLocation { parentId?: string; diff --git a/core/events/events_bubble_open.ts b/core/events/events_bubble_open.ts index 023e16a17..fa9b43d25 100644 --- a/core/events/events_bubble_open.ts +++ b/core/events/events_bubble_open.ts @@ -11,12 +11,12 @@ */ // Former goog.module ID: Blockly.Events.BubbleOpen -import type {AbstractEventJson} from './events_abstract.js'; import type {BlockSvg} from '../block_svg.js'; import * as registry from '../registry.js'; +import type {Workspace} from '../workspace.js'; +import type {AbstractEventJson} from './events_abstract.js'; import {UiBase} from './events_ui_base.js'; import * as eventUtils from './utils.js'; -import type {Workspace} from '../workspace.js'; /** * Class for a bubble open event. diff --git a/core/events/events_click.ts b/core/events/events_click.ts index 1b1556069..ada1ebc3e 100644 --- a/core/events/events_click.ts +++ b/core/events/events_click.ts @@ -13,11 +13,10 @@ import type {Block} from '../block.js'; import * as registry from '../registry.js'; +import {Workspace} from '../workspace.js'; import {AbstractEventJson} from './events_abstract.js'; - import {UiBase} from './events_ui_base.js'; import * as eventUtils from './utils.js'; -import {Workspace} from '../workspace.js'; /** * Notifies listeners that some blockly element was clicked. diff --git a/core/events/events_comment_base.ts b/core/events/events_comment_base.ts index 6fbc95c4d..afda026f2 100644 --- a/core/events/events_comment_base.ts +++ b/core/events/events_comment_base.ts @@ -13,6 +13,7 @@ import type {WorkspaceComment} from '../comments/workspace_comment.js'; import * as comments from '../serialization/workspace_comments.js'; +import type {Workspace} from '../workspace.js'; import { Abstract as AbstractEvent, AbstractEventJson, @@ -20,7 +21,6 @@ import { import type {CommentCreate} from './events_comment_create.js'; import type {CommentDelete} from './events_comment_delete.js'; import * as eventUtils from './utils.js'; -import type {Workspace} from '../workspace.js'; /** * Abstract class for a comment event. diff --git a/core/events/events_comment_change.ts b/core/events/events_comment_change.ts index eb39d929d..ca807a6d2 100644 --- a/core/events/events_comment_change.ts +++ b/core/events/events_comment_change.ts @@ -11,12 +11,11 @@ */ // Former goog.module ID: Blockly.Events.CommentChange -import * as registry from '../registry.js'; import type {WorkspaceComment} from '../comments/workspace_comment.js'; - +import * as registry from '../registry.js'; +import type {Workspace} from '../workspace.js'; import {CommentBase, CommentBaseJson} from './events_comment_base.js'; import * as eventUtils from './utils.js'; -import type {Workspace} from '../workspace.js'; /** * Notifies listeners that the contents of a workspace comment has changed. diff --git a/core/events/events_comment_collapse.ts b/core/events/events_comment_collapse.ts index 6646b1df2..30147f3d8 100644 --- a/core/events/events_comment_collapse.ts +++ b/core/events/events_comment_collapse.ts @@ -4,11 +4,11 @@ * SPDX-License-Identifier: Apache-2.0 */ -import * as registry from '../registry.js'; import {WorkspaceComment} from '../comments/workspace_comment.js'; +import * as registry from '../registry.js'; +import type {Workspace} from '../workspace.js'; import {CommentBase, CommentBaseJson} from './events_comment_base.js'; import * as eventUtils from './utils.js'; -import type {Workspace} from '../workspace.js'; export class CommentCollapse extends CommentBase { override type = eventUtils.COMMENT_COLLAPSE; diff --git a/core/events/events_comment_create.ts b/core/events/events_comment_create.ts index 692397df6..b4ee7ad71 100644 --- a/core/events/events_comment_create.ts +++ b/core/events/events_comment_create.ts @@ -11,14 +11,14 @@ */ // Former goog.module ID: Blockly.Events.CommentCreate -import * as registry from '../registry.js'; import type {WorkspaceComment} from '../comments/workspace_comment.js'; +import * as registry from '../registry.js'; import * as comments from '../serialization/workspace_comments.js'; import * as utilsXml from '../utils/xml.js'; +import type {Workspace} from '../workspace.js'; import * as Xml from '../xml.js'; import {CommentBase, CommentBaseJson} from './events_comment_base.js'; import * as eventUtils from './utils.js'; -import type {Workspace} from '../workspace.js'; /** * Notifies listeners that a workspace comment was created. diff --git a/core/events/events_comment_delete.ts b/core/events/events_comment_delete.ts index 62f8916fb..a429ab824 100644 --- a/core/events/events_comment_delete.ts +++ b/core/events/events_comment_delete.ts @@ -11,14 +11,14 @@ */ // Former goog.module ID: Blockly.Events.CommentDelete -import * as registry from '../registry.js'; import type {WorkspaceComment} from '../comments/workspace_comment.js'; +import * as registry from '../registry.js'; import * as comments from '../serialization/workspace_comments.js'; +import * as utilsXml from '../utils/xml.js'; +import type {Workspace} from '../workspace.js'; +import * as Xml from '../xml.js'; import {CommentBase, CommentBaseJson} from './events_comment_base.js'; import * as eventUtils from './utils.js'; -import * as utilsXml from '../utils/xml.js'; -import * as Xml from '../xml.js'; -import type {Workspace} from '../workspace.js'; /** * Notifies listeners that a workspace comment has been deleted. diff --git a/core/events/events_comment_drag.ts b/core/events/events_comment_drag.ts index 80caeea52..7ca21d4dc 100644 --- a/core/events/events_comment_drag.ts +++ b/core/events/events_comment_drag.ts @@ -10,10 +10,10 @@ import type {WorkspaceComment} from '../comments/workspace_comment.js'; import * as registry from '../registry.js'; +import {Workspace} from '../workspace.js'; import {AbstractEventJson} from './events_abstract.js'; import {UiBase} from './events_ui_base.js'; import * as eventUtils from './utils.js'; -import {Workspace} from '../workspace.js'; /** * Notifies listeners when a comment is being manually dragged/dropped. diff --git a/core/events/events_comment_move.ts b/core/events/events_comment_move.ts index 502ca032f..d50efec5a 100644 --- a/core/events/events_comment_move.ts +++ b/core/events/events_comment_move.ts @@ -11,13 +11,12 @@ */ // Former goog.module ID: Blockly.Events.CommentMove +import type {WorkspaceComment} from '../comments/workspace_comment.js'; import * as registry from '../registry.js'; import {Coordinate} from '../utils/coordinate.js'; -import type {WorkspaceComment} from '../comments/workspace_comment.js'; - +import type {Workspace} from '../workspace.js'; import {CommentBase, CommentBaseJson} from './events_comment_base.js'; import * as eventUtils from './utils.js'; -import type {Workspace} from '../workspace.js'; /** * Notifies listeners that a workspace comment has moved. diff --git a/core/events/events_comment_resize.ts b/core/events/events_comment_resize.ts index dfc785832..623e0c415 100644 --- a/core/events/events_comment_resize.ts +++ b/core/events/events_comment_resize.ts @@ -8,13 +8,12 @@ * Class for comment resize event. */ +import type {WorkspaceComment} from '../comments/workspace_comment.js'; import * as registry from '../registry.js'; import {Size} from '../utils/size.js'; -import type {WorkspaceComment} from '../comments/workspace_comment.js'; - +import type {Workspace} from '../workspace.js'; import {CommentBase, CommentBaseJson} from './events_comment_base.js'; import * as eventUtils from './utils.js'; -import type {Workspace} from '../workspace.js'; /** * Notifies listeners that a workspace comment has resized. diff --git a/core/events/events_marker_move.ts b/core/events/events_marker_move.ts index f162eeca9..e5c7dc47d 100644 --- a/core/events/events_marker_move.ts +++ b/core/events/events_marker_move.ts @@ -16,7 +16,6 @@ import {ASTNode} from '../keyboard_nav/ast_node.js'; import * as registry from '../registry.js'; import type {Workspace} from '../workspace.js'; import {AbstractEventJson} from './events_abstract.js'; - import {UiBase} from './events_ui_base.js'; import * as eventUtils from './utils.js'; diff --git a/core/events/events_selected.ts b/core/events/events_selected.ts index c320c6746..1892dcb18 100644 --- a/core/events/events_selected.ts +++ b/core/events/events_selected.ts @@ -12,11 +12,10 @@ // Former goog.module ID: Blockly.Events.Selected import * as registry from '../registry.js'; +import type {Workspace} from '../workspace.js'; import {AbstractEventJson} from './events_abstract.js'; - import {UiBase} from './events_ui_base.js'; import * as eventUtils from './utils.js'; -import type {Workspace} from '../workspace.js'; /** * Class for a selected event. diff --git a/core/events/events_theme_change.ts b/core/events/events_theme_change.ts index c0267ac6c..c92aa0b7e 100644 --- a/core/events/events_theme_change.ts +++ b/core/events/events_theme_change.ts @@ -12,10 +12,10 @@ // Former goog.module ID: Blockly.Events.ThemeChange import * as registry from '../registry.js'; +import type {Workspace} from '../workspace.js'; import {AbstractEventJson} from './events_abstract.js'; import {UiBase} from './events_ui_base.js'; import * as eventUtils from './utils.js'; -import type {Workspace} from '../workspace.js'; /** * Notifies listeners that the workspace theme has changed. diff --git a/core/events/events_toolbox_item_select.ts b/core/events/events_toolbox_item_select.ts index f1810dead..f462addf3 100644 --- a/core/events/events_toolbox_item_select.ts +++ b/core/events/events_toolbox_item_select.ts @@ -12,10 +12,10 @@ // Former goog.module ID: Blockly.Events.ToolboxItemSelect import * as registry from '../registry.js'; +import type {Workspace} from '../workspace.js'; import {AbstractEventJson} from './events_abstract.js'; import {UiBase} from './events_ui_base.js'; import * as eventUtils from './utils.js'; -import type {Workspace} from '../workspace.js'; /** * Notifies listeners that a toolbox item has been selected. diff --git a/core/events/events_trashcan_open.ts b/core/events/events_trashcan_open.ts index 745e7459c..bbd5d2dd9 100644 --- a/core/events/events_trashcan_open.ts +++ b/core/events/events_trashcan_open.ts @@ -12,11 +12,10 @@ // Former goog.module ID: Blockly.Events.TrashcanOpen import * as registry from '../registry.js'; +import type {Workspace} from '../workspace.js'; import {AbstractEventJson} from './events_abstract.js'; - import {UiBase} from './events_ui_base.js'; import * as eventUtils from './utils.js'; -import type {Workspace} from '../workspace.js'; /** * Notifies listeners when the trashcan is opening or closing. diff --git a/core/events/events_var_base.ts b/core/events/events_var_base.ts index 74537f144..8e359de51 100644 --- a/core/events/events_var_base.ts +++ b/core/events/events_var_base.ts @@ -12,12 +12,11 @@ // Former goog.module ID: Blockly.Events.VarBase import type {VariableModel} from '../variable_model.js'; - +import type {Workspace} from '../workspace.js'; import { Abstract as AbstractEvent, AbstractEventJson, } from './events_abstract.js'; -import type {Workspace} from '../workspace.js'; /** * Abstract class for a variable event. diff --git a/core/events/events_var_create.ts b/core/events/events_var_create.ts index a719cad98..6376e1a61 100644 --- a/core/events/events_var_create.ts +++ b/core/events/events_var_create.ts @@ -13,10 +13,9 @@ import * as registry from '../registry.js'; import type {VariableModel} from '../variable_model.js'; - +import type {Workspace} from '../workspace.js'; import {VarBase, VarBaseJson} from './events_var_base.js'; import * as eventUtils from './utils.js'; -import type {Workspace} from '../workspace.js'; /** * Notifies listeners that a variable model has been created. diff --git a/core/events/events_var_delete.ts b/core/events/events_var_delete.ts index fc19461d4..125269791 100644 --- a/core/events/events_var_delete.ts +++ b/core/events/events_var_delete.ts @@ -8,10 +8,9 @@ import * as registry from '../registry.js'; import type {VariableModel} from '../variable_model.js'; - +import type {Workspace} from '../workspace.js'; import {VarBase, VarBaseJson} from './events_var_base.js'; import * as eventUtils from './utils.js'; -import type {Workspace} from '../workspace.js'; /** * Notifies listeners that a variable model has been deleted. diff --git a/core/events/events_var_rename.ts b/core/events/events_var_rename.ts index 3bb1e90eb..268d6abc9 100644 --- a/core/events/events_var_rename.ts +++ b/core/events/events_var_rename.ts @@ -8,10 +8,9 @@ import * as registry from '../registry.js'; import type {VariableModel} from '../variable_model.js'; - +import type {Workspace} from '../workspace.js'; import {VarBase, VarBaseJson} from './events_var_base.js'; import * as eventUtils from './utils.js'; -import type {Workspace} from '../workspace.js'; /** * Notifies listeners that a variable model was renamed. diff --git a/core/events/events_viewport.ts b/core/events/events_viewport.ts index aff236e48..243477099 100644 --- a/core/events/events_viewport.ts +++ b/core/events/events_viewport.ts @@ -12,10 +12,10 @@ // Former goog.module ID: Blockly.Events.ViewportChange import * as registry from '../registry.js'; +import type {Workspace} from '../workspace.js'; import {AbstractEventJson} from './events_abstract.js'; import {UiBase} from './events_ui_base.js'; import * as eventUtils from './utils.js'; -import type {Workspace} from '../workspace.js'; /** * Notifies listeners that the workspace surface's position or scale has diff --git a/core/events/utils.ts b/core/events/utils.ts index 0bb69980e..2e2701cf9 100644 --- a/core/events/utils.ts +++ b/core/events/utils.ts @@ -12,7 +12,6 @@ import * as registry from '../registry.js'; import * as idGenerator from '../utils/idgenerator.js'; import type {Workspace} from '../workspace.js'; import type {WorkspaceSvg} from '../workspace_svg.js'; - import type {Abstract} from './events_abstract.js'; import type {BlockChange} from './events_block_change.js'; import type {BlockCreate} from './events_block_create.js'; diff --git a/core/field.ts b/core/field.ts index 777b19f55..87a27f446 100644 --- a/core/field.ts +++ b/core/field.ts @@ -26,6 +26,7 @@ import type {IASTNodeLocationSvg} from './interfaces/i_ast_node_location_svg.js' import type {IASTNodeLocationWithBlock} from './interfaces/i_ast_node_location_with_block.js'; import type {IKeyboardAccessible} from './interfaces/i_keyboard_accessible.js'; import type {IRegistrable} from './interfaces/i_registrable.js'; +import {ISerializable} from './interfaces/i_serializable.js'; import {MarkerManager} from './marker_manager.js'; import type {ConstantProvider} from './renderers/common/constants.js'; import type {KeyboardShortcut} from './shortcut_registry.js'; @@ -41,7 +42,6 @@ import * as userAgent from './utils/useragent.js'; import * as utilsXml from './utils/xml.js'; import * as WidgetDiv from './widgetdiv.js'; import type {WorkspaceSvg} from './workspace_svg.js'; -import {ISerializable} from './interfaces/i_serializable.js'; /** * A function that is called to validate changes to the field's value before diff --git a/core/field_checkbox.ts b/core/field_checkbox.ts index 83f460bb9..01d1851aa 100644 --- a/core/field_checkbox.ts +++ b/core/field_checkbox.ts @@ -14,9 +14,9 @@ // Unused import preserved for side-effects. Remove if unneeded. import './events/events_block_change.js'; -import * as dom from './utils/dom.js'; import {Field, FieldConfig, FieldValidator} from './field.js'; import * as fieldRegistry from './field_registry.js'; +import * as dom from './utils/dom.js'; type BoolString = 'TRUE' | 'FALSE'; type CheckboxBool = BoolString | boolean; diff --git a/core/field_dropdown.ts b/core/field_dropdown.ts index 58a4b0732..71b17326d 100644 --- a/core/field_dropdown.ts +++ b/core/field_dropdown.ts @@ -24,12 +24,12 @@ import { import * as fieldRegistry from './field_registry.js'; import {Menu} from './menu.js'; import {MenuItem} from './menuitem.js'; -import * as style from './utils/style.js'; import * as aria from './utils/aria.js'; import {Coordinate} from './utils/coordinate.js'; import * as dom from './utils/dom.js'; import * as parsing from './utils/parsing.js'; import * as utilsString from './utils/string.js'; +import * as style from './utils/style.js'; import {Svg} from './utils/svg.js'; /** diff --git a/core/field_input.ts b/core/field_input.ts index 85431cc5b..c3641f4f8 100644 --- a/core/field_input.ts +++ b/core/field_input.ts @@ -15,10 +15,9 @@ import './events/events_block_change.js'; import {BlockSvg} from './block_svg.js'; -import * as bumpObjects from './bump_objects.js'; import * as browserEvents from './browser_events.js'; +import * as bumpObjects from './bump_objects.js'; import * as dialog from './dialog.js'; -import * as dom from './utils/dom.js'; import * as dropDownDiv from './dropdowndiv.js'; import * as eventUtils from './events/utils.js'; import { @@ -30,10 +29,11 @@ import { import {Msg} from './msg.js'; import * as aria from './utils/aria.js'; import {Coordinate} from './utils/coordinate.js'; +import * as dom from './utils/dom.js'; +import {Size} from './utils/size.js'; import * as userAgent from './utils/useragent.js'; import * as WidgetDiv from './widgetdiv.js'; import type {WorkspaceSvg} from './workspace_svg.js'; -import {Size} from './utils/size.js'; /** * Supported types for FieldInput subclasses. diff --git a/core/field_label.ts b/core/field_label.ts index 2b77b0d25..2b0ae1eba 100644 --- a/core/field_label.ts +++ b/core/field_label.ts @@ -12,9 +12,9 @@ */ // Former goog.module ID: Blockly.FieldLabel -import * as dom from './utils/dom.js'; import {Field, FieldConfig} from './field.js'; import * as fieldRegistry from './field_registry.js'; +import * as dom from './utils/dom.js'; import * as parsing from './utils/parsing.js'; /** diff --git a/core/field_number.ts b/core/field_number.ts index e8e51d060..0641b9ae3 100644 --- a/core/field_number.ts +++ b/core/field_number.ts @@ -12,12 +12,12 @@ // Former goog.module ID: Blockly.FieldNumber import {Field} from './field.js'; -import * as fieldRegistry from './field_registry.js'; import { FieldInput, FieldInputConfig, FieldInputValidator, } from './field_input.js'; +import * as fieldRegistry from './field_registry.js'; import * as aria from './utils/aria.js'; /** diff --git a/core/flyout_base.ts b/core/flyout_base.ts index e81df4279..2a048a2c9 100644 --- a/core/flyout_base.ts +++ b/core/flyout_base.ts @@ -11,19 +11,21 @@ */ // Former goog.module ID: Blockly.Flyout -import type {Abstract as AbstractEvent} from './events/events_abstract.js'; import type {Block} from './block.js'; import {BlockSvg} from './block_svg.js'; import * as browserEvents from './browser_events.js'; import * as common from './common.js'; import {ComponentManager} from './component_manager.js'; +import {MANUALLY_DISABLED} from './constants.js'; import {DeleteArea} from './delete_area.js'; +import type {Abstract as AbstractEvent} from './events/events_abstract.js'; import * as eventUtils from './events/utils.js'; import {FlyoutButton} from './flyout_button.js'; import {FlyoutMetricsManager} from './flyout_metrics_manager.js'; +import {IAutoHideable} from './interfaces/i_autohideable.js'; import type {IFlyout} from './interfaces/i_flyout.js'; -import {MANUALLY_DISABLED} from './constants.js'; import type {Options} from './options.js'; +import * as renderManagement from './render_management.js'; import {ScrollbarPair} from './scrollbar_pair.js'; import * as blocks from './serialization/blocks.js'; import * as Tooltip from './tooltip.js'; @@ -32,12 +34,10 @@ import * as dom from './utils/dom.js'; import * as idGenerator from './utils/idgenerator.js'; import {Svg} from './utils/svg.js'; import * as toolbox from './utils/toolbox.js'; +import * as utilsXml from './utils/xml.js'; import * as Variables from './variables.js'; import {WorkspaceSvg} from './workspace_svg.js'; -import * as utilsXml from './utils/xml.js'; import * as Xml from './xml.js'; -import * as renderManagement from './render_management.js'; -import {IAutoHideable} from './interfaces/i_autohideable.js'; enum FlyoutItemType { BLOCK = 'block', diff --git a/core/flyout_button.ts b/core/flyout_button.ts index e73403d77..b03a8d961 100644 --- a/core/flyout_button.ts +++ b/core/flyout_button.ts @@ -11,6 +11,7 @@ */ // Former goog.module ID: Blockly.FlyoutButton +import type {IASTNodeLocationSvg} from './blockly.js'; import * as browserEvents from './browser_events.js'; import * as Css from './css.js'; import {Coordinate} from './utils/coordinate.js'; @@ -20,7 +21,6 @@ import * as style from './utils/style.js'; import {Svg} from './utils/svg.js'; import type * as toolbox from './utils/toolbox.js'; import type {WorkspaceSvg} from './workspace_svg.js'; -import type {IASTNodeLocationSvg} from './blockly.js'; /** * Class for a button or label in the flyout. diff --git a/core/gesture.ts b/core/gesture.ts index 0aefba47d..a9a04e046 100644 --- a/core/gesture.ts +++ b/core/gesture.ts @@ -18,23 +18,23 @@ import './events/events_click.js'; import * as blockAnimations from './block_animations.js'; import type {BlockSvg} from './block_svg.js'; import * as browserEvents from './browser_events.js'; +import {RenderedWorkspaceComment} from './comments.js'; import * as common from './common.js'; import {config} from './config.js'; import * as dropDownDiv from './dropdowndiv.js'; import * as eventUtils from './events/utils.js'; import type {Field} from './field.js'; import type {IBubble} from './interfaces/i_bubble.js'; +import {IDraggable, isDraggable} from './interfaces/i_draggable.js'; +import {IDragger} from './interfaces/i_dragger.js'; import type {IFlyout} from './interfaces/i_flyout.js'; +import type {IIcon} from './interfaces/i_icon.js'; +import * as registry from './registry.js'; import * as Tooltip from './tooltip.js'; import * as Touch from './touch.js'; import {Coordinate} from './utils/coordinate.js'; import {WorkspaceDragger} from './workspace_dragger.js'; import type {WorkspaceSvg} from './workspace_svg.js'; -import type {IIcon} from './interfaces/i_icon.js'; -import {IDragger} from './interfaces/i_dragger.js'; -import * as registry from './registry.js'; -import {IDraggable, isDraggable} from './interfaces/i_draggable.js'; -import {RenderedWorkspaceComment} from './comments.js'; /** * Note: In this file "start" refers to pointerdown diff --git a/core/grid.ts b/core/grid.ts index 1a5de250e..e2fc054a2 100644 --- a/core/grid.ts +++ b/core/grid.ts @@ -12,10 +12,10 @@ */ // Former goog.module ID: Blockly.Grid -import * as dom from './utils/dom.js'; -import {Coordinate} from './utils/coordinate.js'; -import {Svg} from './utils/svg.js'; import {GridOptions} from './options.js'; +import {Coordinate} from './utils/coordinate.js'; +import * as dom from './utils/dom.js'; +import {Svg} from './utils/svg.js'; /** * Class for a workspace's grid. diff --git a/core/icons.ts b/core/icons.ts index 61d1594b8..fcc7c98c6 100644 --- a/core/icons.ts +++ b/core/icons.ts @@ -4,21 +4,21 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {Icon} from './icons/icon.js'; import {CommentIcon, CommentState} from './icons/comment_icon.js'; -import {MutatorIcon} from './icons/mutator_icon.js'; -import {WarningIcon} from './icons/warning_icon.js'; -import {IconType} from './icons/icon_types.js'; import * as exceptions from './icons/exceptions.js'; +import {Icon} from './icons/icon.js'; +import {IconType} from './icons/icon_types.js'; +import {MutatorIcon} from './icons/mutator_icon.js'; import * as registry from './icons/registry.js'; +import {WarningIcon} from './icons/warning_icon.js'; export { - Icon, CommentIcon, CommentState, - MutatorIcon, - WarningIcon, - IconType, exceptions, + Icon, + IconType, + MutatorIcon, registry, + WarningIcon, }; diff --git a/core/icons/comment_icon.ts b/core/icons/comment_icon.ts index df54560c5..d06952b7a 100644 --- a/core/icons/comment_icon.ts +++ b/core/icons/comment_icon.ts @@ -8,21 +8,21 @@ import type {Block} from '../block.js'; import type {BlockSvg} from '../block_svg.js'; -import {IconType} from './icon_types.js'; -import {Coordinate} from '../utils.js'; -import * as dom from '../utils/dom.js'; -import * as eventUtils from '../events/utils.js'; -import {Icon} from './icon.js'; -import type {IHasBubble} from '../interfaces/i_has_bubble.js'; -import type {ISerializable} from '../interfaces/i_serializable.js'; -import {Rect} from '../utils/rect.js'; -import * as registry from './registry.js'; -import {Size} from '../utils/size.js'; -import {Svg} from '../utils/svg.js'; import {TextBubble} from '../bubbles/text_bubble.js'; import {TextInputBubble} from '../bubbles/textinput_bubble.js'; -import type {WorkspaceSvg} from '../workspace_svg.js'; +import * as eventUtils from '../events/utils.js'; +import type {IHasBubble} from '../interfaces/i_has_bubble.js'; +import type {ISerializable} from '../interfaces/i_serializable.js'; import * as renderManagement from '../render_management.js'; +import {Coordinate} from '../utils.js'; +import * as dom from '../utils/dom.js'; +import {Rect} from '../utils/rect.js'; +import {Size} from '../utils/size.js'; +import {Svg} from '../utils/svg.js'; +import type {WorkspaceSvg} from '../workspace_svg.js'; +import {Icon} from './icon.js'; +import {IconType} from './icon_types.js'; +import * as registry from './registry.js'; /** The size of the comment icon in workspace-scale units. */ const SIZE = 17; diff --git a/core/icons/icon.ts b/core/icons/icon.ts index 6ad953236..30a6b538f 100644 --- a/core/icons/icon.ts +++ b/core/icons/icon.ts @@ -9,12 +9,12 @@ import type {BlockSvg} from '../block_svg.js'; import * as browserEvents from '../browser_events.js'; import {hasBubble} from '../interfaces/i_has_bubble.js'; import type {IIcon} from '../interfaces/i_icon.js'; +import * as tooltip from '../tooltip.js'; import {Coordinate} from '../utils/coordinate.js'; import * as dom from '../utils/dom.js'; import {Size} from '../utils/size.js'; import {Svg} from '../utils/svg.js'; import type {IconType} from './icon_types.js'; -import * as tooltip from '../tooltip.js'; /** * The abstract icon class. Icons are visual elements that live in the top-start diff --git a/core/icons/mutator_icon.ts b/core/icons/mutator_icon.ts index 7fb3fcf3b..1aac847ca 100644 --- a/core/icons/mutator_icon.ts +++ b/core/icons/mutator_icon.ts @@ -6,22 +6,22 @@ // Former goog.module ID: Blockly.Mutator +import type {BlockSvg} from '../block_svg.js'; +import type {BlocklyOptions} from '../blockly_options.js'; +import {MiniWorkspaceBubble} from '../bubbles/mini_workspace_bubble.js'; import type {Abstract} from '../events/events_abstract.js'; import {BlockChange} from '../events/events_block_change.js'; -import type {BlocklyOptions} from '../blockly_options.js'; -import type {BlockSvg} from '../block_svg.js'; -import {Coordinate} from '../utils/coordinate.js'; -import * as dom from '../utils/dom.js'; import * as eventUtils from '../events/utils.js'; import type {IHasBubble} from '../interfaces/i_has_bubble.js'; -import {Icon} from './icon.js'; -import {MiniWorkspaceBubble} from '../bubbles/mini_workspace_bubble.js'; +import * as renderManagement from '../render_management.js'; +import {Coordinate} from '../utils/coordinate.js'; +import * as dom from '../utils/dom.js'; import {Rect} from '../utils/rect.js'; import {Size} from '../utils/size.js'; import {Svg} from '../utils/svg.js'; import type {WorkspaceSvg} from '../workspace_svg.js'; +import {Icon} from './icon.js'; import {IconType} from './icon_types.js'; -import * as renderManagement from '../render_management.js'; /** The size of the mutator icon in workspace-scale units. */ const SIZE = 17; diff --git a/core/icons/warning_icon.ts b/core/icons/warning_icon.ts index 08f511a60..845094876 100644 --- a/core/icons/warning_icon.ts +++ b/core/icons/warning_icon.ts @@ -7,17 +7,17 @@ // Former goog.module ID: Blockly.Warning import type {BlockSvg} from '../block_svg.js'; +import {TextBubble} from '../bubbles/text_bubble.js'; +import * as eventUtils from '../events/utils.js'; +import type {IHasBubble} from '../interfaces/i_has_bubble.js'; +import * as renderManagement from '../render_management.js'; +import {Size} from '../utils.js'; import {Coordinate} from '../utils/coordinate.js'; import * as dom from '../utils/dom.js'; -import * as eventUtils from '../events/utils.js'; -import {Icon} from './icon.js'; -import type {IHasBubble} from '../interfaces/i_has_bubble.js'; import {Rect} from '../utils/rect.js'; -import {Size} from '../utils.js'; import {Svg} from '../utils/svg.js'; -import {TextBubble} from '../bubbles/text_bubble.js'; +import {Icon} from './icon.js'; import {IconType} from './icon_types.js'; -import * as renderManagement from '../render_management.js'; /** The size of the warning icon in workspace-scale units. */ const SIZE = 17; diff --git a/core/inputs.ts b/core/inputs.ts index 4b7bfa897..064d37530 100644 --- a/core/inputs.ts +++ b/core/inputs.ts @@ -5,19 +5,19 @@ */ import {Align} from './inputs/align.js'; -import {Input} from './inputs/input.js'; import {DummyInput} from './inputs/dummy_input.js'; import {EndRowInput} from './inputs/end_row_input.js'; +import {Input} from './inputs/input.js'; +import {inputTypes} from './inputs/input_types.js'; import {StatementInput} from './inputs/statement_input.js'; import {ValueInput} from './inputs/value_input.js'; -import {inputTypes} from './inputs/input_types.js'; export { Align, - Input, DummyInput, EndRowInput, + Input, + inputTypes, StatementInput, ValueInput, - inputTypes, }; diff --git a/core/inputs/input.ts b/core/inputs/input.ts index da7cccad5..0907bf449 100644 --- a/core/inputs/input.ts +++ b/core/inputs/input.ts @@ -21,8 +21,8 @@ import type {ConnectionType} from '../connection_type.js'; import type {Field} from '../field.js'; import * as fieldRegistry from '../field_registry.js'; import type {RenderedConnection} from '../rendered_connection.js'; -import {inputTypes} from './input_types.js'; import {Align} from './align.js'; +import {inputTypes} from './input_types.js'; /** Class for an input with optional fields. */ export class Input { diff --git a/core/insertion_marker_manager.ts b/core/insertion_marker_manager.ts index 6f27eada7..13d630420 100644 --- a/core/insertion_marker_manager.ts +++ b/core/insertion_marker_manager.ts @@ -11,20 +11,20 @@ */ // Former goog.module ID: Blockly.InsertionMarkerManager -import {finishQueuedRenders} from './render_management.js'; import * as blockAnimations from './block_animations.js'; import type {BlockSvg} from './block_svg.js'; import * as common from './common.js'; import {ComponentManager} from './component_manager.js'; import {config} from './config.js'; -import * as blocks from './serialization/blocks.js'; import * as eventUtils from './events/utils.js'; import type {IDeleteArea} from './interfaces/i_delete_area.js'; import type {IDragTarget} from './interfaces/i_drag_target.js'; +import * as renderManagement from './render_management.js'; +import {finishQueuedRenders} from './render_management.js'; import type {RenderedConnection} from './rendered_connection.js'; +import * as blocks from './serialization/blocks.js'; import type {Coordinate} from './utils/coordinate.js'; import type {WorkspaceSvg} from './workspace_svg.js'; -import * as renderManagement from './render_management.js'; /** Represents a nearby valid connection. */ interface CandidateConnection { diff --git a/core/insertion_marker_previewer.ts b/core/insertion_marker_previewer.ts index 3cc9f1a04..2343b9adc 100644 --- a/core/insertion_marker_previewer.ts +++ b/core/insertion_marker_previewer.ts @@ -5,15 +5,15 @@ */ import {BlockSvg} from './block_svg.js'; -import {IConnectionPreviewer} from './interfaces/i_connection_previewer.js'; -import {RenderedConnection} from './rendered_connection.js'; -import {WorkspaceSvg} from './workspace_svg.js'; -import * as blocks from './serialization/blocks.js'; -import * as eventUtils from './events/utils.js'; -import * as renderManagement from './render_management.js'; -import * as registry from './registry.js'; -import {Renderer as ZelosRenderer} from './renderers/zelos/renderer.js'; import {ConnectionType} from './connection_type.js'; +import * as eventUtils from './events/utils.js'; +import {IConnectionPreviewer} from './interfaces/i_connection_previewer.js'; +import * as registry from './registry.js'; +import * as renderManagement from './render_management.js'; +import {RenderedConnection} from './rendered_connection.js'; +import {Renderer as ZelosRenderer} from './renderers/zelos/renderer.js'; +import * as blocks from './serialization/blocks.js'; +import {WorkspaceSvg} from './workspace_svg.js'; export class InsertionMarkerPreviewer implements IConnectionPreviewer { private readonly workspace: WorkspaceSvg; diff --git a/core/interfaces/i_ast_node_location_with_block.ts b/core/interfaces/i_ast_node_location_with_block.ts index a00603864..b04234fd4 100644 --- a/core/interfaces/i_ast_node_location_with_block.ts +++ b/core/interfaces/i_ast_node_location_with_block.ts @@ -6,8 +6,8 @@ // Former goog.module ID: Blockly.IASTNodeLocationWithBlock -import type {IASTNodeLocation} from './i_ast_node_location.js'; import type {Block} from '../block.js'; +import type {IASTNodeLocation} from './i_ast_node_location.js'; /** * An AST node location that has an associated block. diff --git a/core/interfaces/i_bounded_element.ts b/core/interfaces/i_bounded_element.ts index a32df5985..aac26855b 100644 --- a/core/interfaces/i_bounded_element.ts +++ b/core/interfaces/i_bounded_element.ts @@ -4,9 +4,10 @@ * SPDX-License-Identifier: Apache-2.0 */ -import type {Rect} from '../utils/rect.js'; // Former goog.module ID: Blockly.IBoundedElement +import type {Rect} from '../utils/rect.js'; + /** * A bounded element interface. */ diff --git a/core/interfaces/i_bubble.ts b/core/interfaces/i_bubble.ts index e27fccafd..d31ce9c9d 100644 --- a/core/interfaces/i_bubble.ts +++ b/core/interfaces/i_bubble.ts @@ -4,9 +4,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -import type {Coordinate} from '../utils/coordinate.js'; // Former goog.module ID: Blockly.IBubble +import type {Coordinate} from '../utils/coordinate.js'; import type {IContextMenu} from './i_contextmenu.js'; import type {IDraggable} from './i_draggable.js'; diff --git a/core/interfaces/i_comment_icon.ts b/core/interfaces/i_comment_icon.ts index 47c46daaf..9801a8d6e 100644 --- a/core/interfaces/i_comment_icon.ts +++ b/core/interfaces/i_comment_icon.ts @@ -4,11 +4,11 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {IconType} from '../icons/icon_types.js'; import {CommentState} from '../icons/comment_icon.js'; -import {IIcon, isIcon} from './i_icon.js'; +import {IconType} from '../icons/icon_types.js'; import {Size} from '../utils/size.js'; import {IHasBubble, hasBubble} from './i_has_bubble.js'; +import {IIcon, isIcon} from './i_icon.js'; import {ISerializable, isSerializable} from './i_serializable.js'; export interface ICommentIcon extends IIcon, IHasBubble, ISerializable { diff --git a/core/interfaces/i_connection_checker.ts b/core/interfaces/i_connection_checker.ts index 8bb0fcc73..352b719d6 100644 --- a/core/interfaces/i_connection_checker.ts +++ b/core/interfaces/i_connection_checker.ts @@ -4,9 +4,10 @@ * SPDX-License-Identifier: Apache-2.0 */ +// Former goog.module ID: Blockly.IConnectionChecker + import type {Connection} from '../connection.js'; import type {RenderedConnection} from '../rendered_connection.js'; -// Former goog.module ID: Blockly.IConnectionChecker /** * Class for connection type checking logic. diff --git a/core/interfaces/i_drag_target.ts b/core/interfaces/i_drag_target.ts index 3fa060232..395b23451 100644 --- a/core/interfaces/i_drag_target.ts +++ b/core/interfaces/i_drag_target.ts @@ -4,13 +4,11 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {Rect} from '../utils/rect.js'; - -import {IDraggable} from './i_draggable.js'; - // Former goog.module ID: Blockly.IDragTarget +import {Rect} from '../utils/rect.js'; import type {IComponent} from './i_component.js'; +import {IDraggable} from './i_draggable.js'; /** * Interface for a component with custom behaviour when a block or bubble is diff --git a/core/interfaces/i_flyout.ts b/core/interfaces/i_flyout.ts index 84067f755..c79be344c 100644 --- a/core/interfaces/i_flyout.ts +++ b/core/interfaces/i_flyout.ts @@ -6,13 +6,13 @@ // Former goog.module ID: Blockly.IFlyout -import type {WorkspaceSvg} from '../workspace_svg.js'; import type {BlockSvg} from '../block_svg.js'; -import type {Coordinate} from '../utils/coordinate.js'; -import type {FlyoutDefinition} from '../utils/toolbox.js'; -import type {Svg} from '../utils/svg.js'; -import type {IRegistrable} from './i_registrable.js'; import {FlyoutItem} from '../flyout_base.js'; +import type {Coordinate} from '../utils/coordinate.js'; +import type {Svg} from '../utils/svg.js'; +import type {FlyoutDefinition} from '../utils/toolbox.js'; +import type {WorkspaceSvg} from '../workspace_svg.js'; +import type {IRegistrable} from './i_registrable.js'; /** * Interface for a flyout. diff --git a/core/interfaces/i_keyboard_accessible.ts b/core/interfaces/i_keyboard_accessible.ts index 50e85b08e..4d04e9d4f 100644 --- a/core/interfaces/i_keyboard_accessible.ts +++ b/core/interfaces/i_keyboard_accessible.ts @@ -4,9 +4,10 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {KeyboardShortcut} from '../shortcut_registry.js'; // Former goog.module ID: Blockly.IKeyboardAccessible +import {KeyboardShortcut} from '../shortcut_registry.js'; + /** * An interface for an object that handles keyboard shortcuts. */ diff --git a/core/interfaces/i_metrics_manager.ts b/core/interfaces/i_metrics_manager.ts index 52b9644df..bb4d54da4 100644 --- a/core/interfaces/i_metrics_manager.ts +++ b/core/interfaces/i_metrics_manager.ts @@ -4,15 +4,16 @@ * SPDX-License-Identifier: Apache-2.0 */ +// Former goog.module ID: Blockly.IMetricsManager + import type { + AbsoluteMetrics, ContainerRegion, ToolboxMetrics, - AbsoluteMetrics, UiMetrics, } from '../metrics_manager.js'; -import type {Size} from '../utils/size.js'; import type {Metrics} from '../utils/metrics.js'; -// Former goog.module ID: Blockly.IMetricsManager +import type {Size} from '../utils/size.js'; /** * Interface for a metrics manager. diff --git a/core/interfaces/i_positionable.ts b/core/interfaces/i_positionable.ts index 19843d153..4ea7dafa0 100644 --- a/core/interfaces/i_positionable.ts +++ b/core/interfaces/i_positionable.ts @@ -4,10 +4,10 @@ * SPDX-License-Identifier: Apache-2.0 */ -import type {Rect} from '../utils/rect.js'; -import type {UiMetrics} from '../metrics_manager.js'; // Former goog.module ID: Blockly.IPositionable +import type {UiMetrics} from '../metrics_manager.js'; +import type {Rect} from '../utils/rect.js'; import type {IComponent} from './i_component.js'; /** diff --git a/core/interfaces/i_procedure_block.ts b/core/interfaces/i_procedure_block.ts index 3744eb183..f85380527 100644 --- a/core/interfaces/i_procedure_block.ts +++ b/core/interfaces/i_procedure_block.ts @@ -4,9 +4,10 @@ * SPDX-License-Identifier: Apache-2.0 */ +// Former goog.module ID: Blockly.procedures.IProcedureBlock + import type {Block} from '../block.js'; import {IProcedureModel} from './i_procedure_model.js'; -// Former goog.module ID: Blockly.procedures.IProcedureBlock /** The interface for a block which models a procedure. */ export interface IProcedureBlock { diff --git a/core/interfaces/i_selectable_toolbox_item.ts b/core/interfaces/i_selectable_toolbox_item.ts index b3267efd0..890d4e370 100644 --- a/core/interfaces/i_selectable_toolbox_item.ts +++ b/core/interfaces/i_selectable_toolbox_item.ts @@ -4,9 +4,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -import type {FlyoutItemInfoArray} from '../utils/toolbox'; // Former goog.module ID: Blockly.ISelectableToolboxItem +import type {FlyoutItemInfoArray} from '../utils/toolbox'; import type {IToolboxItem} from './i_toolbox_item.js'; /** diff --git a/core/interfaces/i_serializer.ts b/core/interfaces/i_serializer.ts index a33e6b225..0e8302f39 100644 --- a/core/interfaces/i_serializer.ts +++ b/core/interfaces/i_serializer.ts @@ -22,8 +22,6 @@ export interface ISerializer { */ priority: number; - /* eslint-disable no-unused-vars, valid-jsdoc */ - /** * Saves the state of the plugin or system. * @@ -52,4 +50,3 @@ export interface ISerializer { */ clear(workspace: Workspace): void; } -/* eslint-enable no-unused-vars */ diff --git a/core/interfaces/i_toolbox.ts b/core/interfaces/i_toolbox.ts index a236d4442..2756099ec 100644 --- a/core/interfaces/i_toolbox.ts +++ b/core/interfaces/i_toolbox.ts @@ -6,11 +6,11 @@ // Former goog.module ID: Blockly.IToolbox +import type {ToolboxInfo} from '../utils/toolbox.js'; +import type {WorkspaceSvg} from '../workspace_svg.js'; +import type {IFlyout} from './i_flyout.js'; import type {IRegistrable} from './i_registrable.js'; import type {IToolboxItem} from './i_toolbox_item.js'; -import type {ToolboxInfo} from '../utils/toolbox.js'; -import type {IFlyout} from './i_flyout.js'; -import type {WorkspaceSvg} from '../workspace_svg.js'; /** * Interface for a toolbox. diff --git a/core/keyboard_nav/ast_node.ts b/core/keyboard_nav/ast_node.ts index 7985ac6dc..3b0efae3f 100644 --- a/core/keyboard_nav/ast_node.ts +++ b/core/keyboard_nav/ast_node.ts @@ -16,14 +16,14 @@ import {Block} from '../block.js'; import type {Connection} from '../connection.js'; import {ConnectionType} from '../connection_type.js'; import type {Field} from '../field.js'; +import {FlyoutItem} from '../flyout_base.js'; +import {FlyoutButton} from '../flyout_button.js'; import type {Input} from '../inputs/input.js'; import type {IASTNodeLocation} from '../interfaces/i_ast_node_location.js'; import type {IASTNodeLocationWithBlock} from '../interfaces/i_ast_node_location_with_block.js'; import {Coordinate} from '../utils/coordinate.js'; import type {Workspace} from '../workspace.js'; -import {FlyoutButton} from '../flyout_button.js'; import {WorkspaceSvg} from '../workspace_svg.js'; -import {FlyoutItem} from '../flyout_base.js'; /** * Class for an AST node. diff --git a/core/keyboard_nav/basic_cursor.ts b/core/keyboard_nav/basic_cursor.ts index 95b5e2f4d..752614152 100644 --- a/core/keyboard_nav/basic_cursor.ts +++ b/core/keyboard_nav/basic_cursor.ts @@ -13,7 +13,6 @@ // Former goog.module ID: Blockly.BasicCursor import * as registry from '../registry.js'; - import {ASTNode} from './ast_node.js'; import {Cursor} from './cursor.js'; diff --git a/core/keyboard_nav/cursor.ts b/core/keyboard_nav/cursor.ts index da0a50f1c..92279da56 100644 --- a/core/keyboard_nav/cursor.ts +++ b/core/keyboard_nav/cursor.ts @@ -13,7 +13,6 @@ // Former goog.module ID: Blockly.Cursor import * as registry from '../registry.js'; - import {ASTNode} from './ast_node.js'; import {Marker} from './marker.js'; diff --git a/core/keyboard_nav/marker.ts b/core/keyboard_nav/marker.ts index 9653e6b85..e3b438e6e 100644 --- a/core/keyboard_nav/marker.ts +++ b/core/keyboard_nav/marker.ts @@ -12,9 +12,7 @@ */ // Former goog.module ID: Blockly.Marker -/* eslint-disable-next-line no-unused-vars */ import type {MarkerSvg} from '../renderers/common/marker_svg.js'; - import type {ASTNode} from './ast_node.js'; /** diff --git a/core/keyboard_nav/tab_navigate_cursor.ts b/core/keyboard_nav/tab_navigate_cursor.ts index 20fd3dabb..0392887a1 100644 --- a/core/keyboard_nav/tab_navigate_cursor.ts +++ b/core/keyboard_nav/tab_navigate_cursor.ts @@ -13,7 +13,6 @@ // Former goog.module ID: Blockly.TabNavigateCursor import type {Field} from '../field.js'; - import {ASTNode} from './ast_node.js'; import {BasicCursor} from './basic_cursor.js'; diff --git a/core/layer_manager.ts b/core/layer_manager.ts index e181e6801..e7663b1b7 100644 --- a/core/layer_manager.ts +++ b/core/layer_manager.ts @@ -4,12 +4,12 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {WorkspaceSvg} from './workspace_svg.js'; -import * as dom from './utils/dom.js'; -import {Svg} from './utils/svg.js'; import {IRenderedElement} from './interfaces/i_rendered_element.js'; import * as layerNums from './layers.js'; import {Coordinate} from './utils/coordinate.js'; +import * as dom from './utils/dom.js'; +import {Svg} from './utils/svg.js'; +import {WorkspaceSvg} from './workspace_svg.js'; /** @internal */ export class LayerManager { diff --git a/core/observable_procedure_map.ts b/core/observable_procedure_map.ts index e8722bcbf..2f1010755 100644 --- a/core/observable_procedure_map.ts +++ b/core/observable_procedure_map.ts @@ -4,9 +4,9 @@ * SPDX-License-Identifier: Apache-2.0 */ +import {isObservable} from './interfaces/i_observable.js'; import {IProcedureMap} from './interfaces/i_procedure_map.js'; import type {IProcedureModel} from './interfaces/i_procedure_model.js'; -import {isObservable} from './interfaces/i_observable.js'; export class ObservableProcedureMap extends Map diff --git a/core/procedures.ts b/core/procedures.ts index 680abb8af..7ab62a91d 100644 --- a/core/procedures.ts +++ b/core/procedures.ts @@ -17,27 +17,27 @@ import type {Abstract} from './events/events_abstract.js'; import type {BubbleOpen} from './events/events_bubble_open.js'; import * as eventUtils from './events/utils.js'; import {Field, UnattachedFieldError} from './field.js'; -import {Msg} from './msg.js'; -import {Names} from './names.js'; -import {IParameterModel} from './interfaces/i_parameter_model.js'; -import {IProcedureMap} from './interfaces/i_procedure_map.js'; -import {IProcedureModel} from './interfaces/i_procedure_model.js'; -import { - IProcedureBlock, - isProcedureBlock, -} from './interfaces/i_procedure_block.js'; +import {MutatorIcon} from './icons.js'; import { isLegacyProcedureCallBlock, isLegacyProcedureDefBlock, ProcedureBlock, ProcedureTuple, } from './interfaces/i_legacy_procedure_blocks.js'; +import {IParameterModel} from './interfaces/i_parameter_model.js'; +import { + IProcedureBlock, + isProcedureBlock, +} from './interfaces/i_procedure_block.js'; +import {IProcedureMap} from './interfaces/i_procedure_map.js'; +import {IProcedureModel} from './interfaces/i_procedure_model.js'; +import {Msg} from './msg.js'; +import {Names} from './names.js'; import {ObservableProcedureMap} from './observable_procedure_map.js'; import * as utilsXml from './utils/xml.js'; import * as Variables from './variables.js'; import type {Workspace} from './workspace.js'; import type {WorkspaceSvg} from './workspace_svg.js'; -import {MutatorIcon} from './icons.js'; /** * String for use in the "custom" attribute of a category in toolbox XML. @@ -500,11 +500,11 @@ export function getDefinition( } export { - ObservableProcedureMap, IParameterModel, IProcedureBlock, - isProcedureBlock, IProcedureMap, IProcedureModel, + isProcedureBlock, + ObservableProcedureMap, ProcedureTuple, }; diff --git a/core/registry.ts b/core/registry.ts index 39bb83b87..60e804979 100644 --- a/core/registry.ts +++ b/core/registry.ts @@ -8,11 +8,15 @@ import type {Abstract} from './events/events_abstract.js'; import type {Field} from './field.js'; -import type {IConnectionChecker} from './interfaces/i_connection_checker.js'; -import type {IFlyout} from './interfaces/i_flyout.js'; -import type {IMetricsManager} from './interfaces/i_metrics_manager.js'; -import type {IIcon} from './interfaces/i_icon.js'; import type {Input} from './inputs/input.js'; +import type {IConnectionChecker} from './interfaces/i_connection_checker.js'; +import type {IConnectionPreviewer} from './interfaces/i_connection_previewer.js'; +import type {ICopyData, ICopyable} from './interfaces/i_copyable.js'; +import type {IDragger} from './interfaces/i_dragger.js'; +import type {IFlyout} from './interfaces/i_flyout.js'; +import type {IIcon} from './interfaces/i_icon.js'; +import type {IMetricsManager} from './interfaces/i_metrics_manager.js'; +import type {IPaster} from './interfaces/i_paster.js'; import type {ISerializer} from './interfaces/i_serializer.js'; import type {IToolbox} from './interfaces/i_toolbox.js'; import type {Cursor} from './keyboard_nav/cursor.js'; @@ -20,10 +24,6 @@ import type {Options} from './options.js'; import type {Renderer} from './renderers/common/renderer.js'; import type {Theme} from './theme.js'; import type {ToolboxItem} from './toolbox/toolbox_item.js'; -import type {IPaster} from './interfaces/i_paster.js'; -import type {ICopyData, ICopyable} from './interfaces/i_copyable.js'; -import type {IConnectionPreviewer} from './interfaces/i_connection_previewer.js'; -import type {IDragger} from './interfaces/i_dragger.js'; /** * A map of maps. With the keys being the type and name of the class we are diff --git a/core/render_management.ts b/core/render_management.ts index 3e84efead..c3fe2e342 100644 --- a/core/render_management.ts +++ b/core/render_management.ts @@ -5,8 +5,8 @@ */ import {BlockSvg} from './block_svg.js'; -import * as userAgent from './utils/useragent.js'; import * as eventUtils from './events/utils.js'; +import * as userAgent from './utils/useragent.js'; import type {WorkspaceSvg} from './workspace_svg.js'; /** The set of all blocks in need of rendering which don't have parents. */ diff --git a/core/renderers/common/block_rendering.ts b/core/renderers/common/block_rendering.ts index 741e2367d..27fbbd538 100644 --- a/core/renderers/common/block_rendering.ts +++ b/core/renderers/common/block_rendering.ts @@ -30,7 +30,6 @@ import {SquareCorner} from '../measurables/square_corner.js'; import {StatementInput} from '../measurables/statement_input.js'; import {TopRow} from '../measurables/top_row.js'; import {Types} from '../measurables/types.js'; - import {Drawer} from './drawer.js'; import type {IPathObject} from './i_path_object.js'; import {RenderInfo} from './info.js'; @@ -81,43 +80,45 @@ export function init( renderer.init(theme, opt_rendererOverrides); return renderer; } -export {BottomRow}; -export {Connection}; -export {Drawer}; -export {ExternalValueInput}; -export {Field}; -export {Hat}; -export {Icon}; -export {InRowSpacer}; -export {InlineInput}; -export {InputConnection}; -export {InputRow}; -export {IPathObject}; -export {JaggedEdge}; -export {MarkerSvg}; -export {Measurable}; -export {NextConnection}; -export {OutputConnection}; -export {PathObject}; -export {PreviousConnection}; -export {Renderer}; -export {RenderInfo}; -export {RoundCorner}; -export {Row}; -export {SpacerRow}; -export {SquareCorner}; -export {StatementInput}; -export {TopRow}; -export {Types}; +export { + BottomRow, + Connection, + Drawer, + ExternalValueInput, + Field, + Hat, + Icon, + InlineInput, + InputConnection, + InputRow, + InRowSpacer, + IPathObject, + JaggedEdge, + MarkerSvg, + Measurable, + NextConnection, + OutputConnection, + PathObject, + PreviousConnection, + Renderer, + RenderInfo, + RoundCorner, + Row, + SpacerRow, + SquareCorner, + StatementInput, + TopRow, + Types, +}; export { - OutsideCorners, - InsideCorners, - StartHat, - Notch, - PuzzleTab, - JaggedTeeth, BaseShape, - DynamicShape, ConstantProvider, + DynamicShape, + InsideCorners, + JaggedTeeth, + Notch, + OutsideCorners, + PuzzleTab, + StartHat, } from './constants.js'; diff --git a/core/renderers/common/drawer.ts b/core/renderers/common/drawer.ts index 17d54eea5..59a856011 100644 --- a/core/renderers/common/drawer.ts +++ b/core/renderers/common/drawer.ts @@ -7,6 +7,7 @@ // Former goog.module ID: Blockly.blockRendering.Drawer import type {BlockSvg} from '../../block_svg.js'; +import {ConnectionType} from '../../connection_type.js'; import {Coordinate} from '../../utils.js'; import * as svgPaths from '../../utils/svg_paths.js'; import {Connection} from '../measurables/connection.js'; @@ -17,11 +18,9 @@ import type {InlineInput} from '../measurables/inline_input.js'; import type {PreviousConnection} from '../measurables/previous_connection.js'; import type {Row} from '../measurables/row.js'; import {Types} from '../measurables/types.js'; - -import {isDynamicShape, isNotch, isPuzzleTab} from './constants.js'; import type {ConstantProvider, Notch, PuzzleTab} from './constants.js'; +import {isDynamicShape, isNotch, isPuzzleTab} from './constants.js'; import type {RenderInfo} from './info.js'; -import {ConnectionType} from '../../connection_type.js'; /** * An object that draws a block based on the given rendering information. diff --git a/core/renderers/common/i_path_object.ts b/core/renderers/common/i_path_object.ts index 30033f18e..3a78035e1 100644 --- a/core/renderers/common/i_path_object.ts +++ b/core/renderers/common/i_path_object.ts @@ -6,11 +6,11 @@ // Former goog.module ID: Blockly.blockRendering.IPathObject -import type {BlockStyle} from '../../theme.js'; import type {BlockSvg} from '../../block_svg.js'; -import type {ConstantProvider} from './constants.js'; import type {RenderedConnection} from '../../rendered_connection.js'; +import type {BlockStyle} from '../../theme.js'; import type {Coordinate} from '../../utils/coordinate.js'; +import type {ConstantProvider} from './constants.js'; /** * An interface for a block's path object. diff --git a/core/renderers/common/info.ts b/core/renderers/common/info.ts index 995124c1b..ff073ace4 100644 --- a/core/renderers/common/info.ts +++ b/core/renderers/common/info.ts @@ -7,13 +7,16 @@ // Former goog.module ID: Blockly.blockRendering.RenderInfo import type {BlockSvg} from '../../block_svg.js'; -import {Input} from '../../inputs/input.js'; import {Align} from '../../inputs/align.js'; +import {DummyInput} from '../../inputs/dummy_input.js'; +import {EndRowInput} from '../../inputs/end_row_input.js'; +import {Input} from '../../inputs/input.js'; +import {StatementInput} from '../../inputs/statement_input.js'; +import {ValueInput} from '../../inputs/value_input.js'; import type {RenderedConnection} from '../../rendered_connection.js'; import type {Measurable} from '../measurables/base.js'; import {BottomRow} from '../measurables/bottom_row.js'; -import {DummyInput} from '../../inputs/dummy_input.js'; -import {EndRowInput} from '../../inputs/end_row_input.js'; +import {Connection} from '../measurables/connection.js'; import {ExternalValueInput} from '../measurables/external_value_input.js'; import {Field} from '../measurables/field.js'; import {Hat} from '../measurables/hat.js'; @@ -30,14 +33,10 @@ import type {Row} from '../measurables/row.js'; import {SpacerRow} from '../measurables/spacer_row.js'; import {SquareCorner} from '../measurables/square_corner.js'; import {StatementInput as StatementInputMeasurable} from '../measurables/statement_input.js'; -import {StatementInput} from '../../inputs/statement_input.js'; import {TopRow} from '../measurables/top_row.js'; import {Types} from '../measurables/types.js'; -import {ValueInput} from '../../inputs/value_input.js'; - import type {ConstantProvider} from './constants.js'; import type {Renderer} from './renderer.js'; -import {Connection} from '../measurables/connection.js'; /** * An object containing all sizing information needed to draw this block. diff --git a/core/renderers/common/marker_svg.ts b/core/renderers/common/marker_svg.ts index b2005012f..2eaee2aea 100644 --- a/core/renderers/common/marker_svg.ts +++ b/core/renderers/common/marker_svg.ts @@ -14,6 +14,7 @@ import type {Connection} from '../../connection.js'; import {ConnectionType} from '../../connection_type.js'; import * as eventUtils from '../../events/utils.js'; import type {Field} from '../../field.js'; +import {FlyoutButton} from '../../flyout_button.js'; import type {IASTNodeLocationSvg} from '../../interfaces/i_ast_node_location_svg.js'; import {ASTNode} from '../../keyboard_nav/ast_node.js'; import type {Marker} from '../../keyboard_nav/marker.js'; @@ -22,9 +23,7 @@ import * as dom from '../../utils/dom.js'; import {Svg} from '../../utils/svg.js'; import * as svgPaths from '../../utils/svg_paths.js'; import type {WorkspaceSvg} from '../../workspace_svg.js'; - import type {ConstantProvider, Notch, PuzzleTab} from './constants.js'; -import {FlyoutButton} from '../../flyout_button.js'; /** The name of the CSS class for a cursor. */ const CURSOR_CLASS = 'blocklyCursor'; diff --git a/core/renderers/common/path_object.ts b/core/renderers/common/path_object.ts index d5c0850a1..0f46cf3a4 100644 --- a/core/renderers/common/path_object.ts +++ b/core/renderers/common/path_object.ts @@ -13,7 +13,6 @@ import type {BlockStyle} from '../../theme.js'; import {Coordinate} from '../../utils/coordinate.js'; import * as dom from '../../utils/dom.js'; import {Svg} from '../../utils/svg.js'; - import type {ConstantProvider} from './constants.js'; import type {IPathObject} from './i_path_object.js'; diff --git a/core/renderers/common/renderer.ts b/core/renderers/common/renderer.ts index 15a958db4..d3bff56a7 100644 --- a/core/renderers/common/renderer.ts +++ b/core/renderers/common/renderer.ts @@ -18,15 +18,14 @@ import type {IRegistrable} from '../../interfaces/i_registrable.js'; import type {Marker} from '../../keyboard_nav/marker.js'; import type {RenderedConnection} from '../../rendered_connection.js'; import type {BlockStyle, Theme} from '../../theme.js'; +import * as deprecation from '../../utils/deprecation.js'; import type {WorkspaceSvg} from '../../workspace_svg.js'; - import {ConstantProvider} from './constants.js'; import {Drawer} from './drawer.js'; import type {IPathObject} from './i_path_object.js'; import {RenderInfo} from './info.js'; import {MarkerSvg} from './marker_svg.js'; import {PathObject} from './path_object.js'; -import * as deprecation from '../../utils/deprecation.js'; /** * The base class for a block renderer. diff --git a/core/renderers/geras/drawer.ts b/core/renderers/geras/drawer.ts index 29bcbfab4..542b21ff9 100644 --- a/core/renderers/geras/drawer.ts +++ b/core/renderers/geras/drawer.ts @@ -10,7 +10,6 @@ import type {BlockSvg} from '../../block_svg.js'; import * as svgPaths from '../../utils/svg_paths.js'; import {Drawer as BaseDrawer} from '../common/drawer.js'; import type {Row} from '../measurables/row.js'; - import type {ConstantProvider} from './constants.js'; import {Highlighter} from './highlighter.js'; import type {RenderInfo} from './info.js'; diff --git a/core/renderers/geras/highlighter.ts b/core/renderers/geras/highlighter.ts index 664e74fb8..efcb4e2df 100644 --- a/core/renderers/geras/highlighter.ts +++ b/core/renderers/geras/highlighter.ts @@ -13,7 +13,6 @@ import type {Row} from '../measurables/row.js'; import {SpacerRow} from '../measurables/spacer_row.js'; import type {TopRow} from '../measurables/top_row.js'; import {Types} from '../measurables/types.js'; - import type { HighlightConstantProvider, InsideCorner, diff --git a/core/renderers/geras/info.ts b/core/renderers/geras/info.ts index 6565f226b..b9cc1c59c 100644 --- a/core/renderers/geras/info.ts +++ b/core/renderers/geras/info.ts @@ -7,22 +7,21 @@ // Former goog.module ID: Blockly.geras.RenderInfo import type {BlockSvg} from '../../block_svg.js'; +import {DummyInput} from '../../inputs/dummy_input.js'; +import {EndRowInput} from '../../inputs/end_row_input.js'; import type {Input} from '../../inputs/input.js'; +import {StatementInput} from '../../inputs/statement_input.js'; +import {ValueInput} from '../../inputs/value_input.js'; import {RenderInfo as BaseRenderInfo} from '../common/info.js'; import type {Measurable} from '../measurables/base.js'; import type {BottomRow} from '../measurables/bottom_row.js'; -import {DummyInput} from '../../inputs/dummy_input.js'; -import {EndRowInput} from '../../inputs/end_row_input.js'; import {ExternalValueInput} from '../measurables/external_value_input.js'; import type {Field} from '../measurables/field.js'; import {InRowSpacer} from '../measurables/in_row_spacer.js'; import type {InputRow} from '../measurables/input_row.js'; import type {Row} from '../measurables/row.js'; -import {StatementInput} from '../../inputs/statement_input.js'; import type {TopRow} from '../measurables/top_row.js'; import {Types} from '../measurables/types.js'; -import {ValueInput} from '../../inputs/value_input.js'; - import type {ConstantProvider} from './constants.js'; import {InlineInput} from './measurables/inline_input.js'; import {StatementInput as StatementInputMeasurable} from './measurables/statement_input.js'; diff --git a/core/renderers/geras/measurables/inline_input.ts b/core/renderers/geras/measurables/inline_input.ts index 9ed85ad52..931b9e762 100644 --- a/core/renderers/geras/measurables/inline_input.ts +++ b/core/renderers/geras/measurables/inline_input.ts @@ -6,7 +6,6 @@ // Former goog.module ID: Blockly.geras.InlineInput -/* eslint-disable-next-line no-unused-vars */ import type {Input} from '../../../inputs/input.js'; import type {ConstantProvider as BaseConstantProvider} from '../../../renderers/common/constants.js'; import {InlineInput as BaseInlineInput} from '../../../renderers/measurables/inline_input.js'; diff --git a/core/renderers/geras/measurables/statement_input.ts b/core/renderers/geras/measurables/statement_input.ts index 5ce3f854a..c6eba8dc0 100644 --- a/core/renderers/geras/measurables/statement_input.ts +++ b/core/renderers/geras/measurables/statement_input.ts @@ -6,7 +6,6 @@ // Former goog.module ID: Blockly.geras.StatementInput -/* eslint-disable-next-line no-unused-vars */ import type {Input} from '../../../inputs/input.js'; import type {ConstantProvider as BaseConstantProvider} from '../../../renderers/common/constants.js'; import {StatementInput as BaseStatementInput} from '../../../renderers/measurables/statement_input.js'; diff --git a/core/renderers/geras/path_object.ts b/core/renderers/geras/path_object.ts index 6b058e5a7..c1d689535 100644 --- a/core/renderers/geras/path_object.ts +++ b/core/renderers/geras/path_object.ts @@ -12,7 +12,6 @@ import * as colour from '../../utils/colour.js'; import * as dom from '../../utils/dom.js'; import {Svg} from '../../utils/svg.js'; import {PathObject as BasePathObject} from '../common/path_object.js'; - import type {ConstantProvider} from './constants.js'; /** diff --git a/core/renderers/geras/renderer.ts b/core/renderers/geras/renderer.ts index 06062e9bc..aba8fc3ea 100644 --- a/core/renderers/geras/renderer.ts +++ b/core/renderers/geras/renderer.ts @@ -11,7 +11,6 @@ import type {BlockStyle, Theme} from '../../theme.js'; import * as blockRendering from '../common/block_rendering.js'; import type {RenderInfo as BaseRenderInfo} from '../common/info.js'; import {Renderer as BaseRenderer} from '../common/renderer.js'; - import {ConstantProvider} from './constants.js'; import {Drawer} from './drawer.js'; import {HighlightConstantProvider} from './highlight_constants.js'; diff --git a/core/renderers/measurables/base.ts b/core/renderers/measurables/base.ts index e429a3a3e..15f4f3683 100644 --- a/core/renderers/measurables/base.ts +++ b/core/renderers/measurables/base.ts @@ -7,7 +7,6 @@ // Former goog.module ID: Blockly.blockRendering.Measurable import type {ConstantProvider} from '../common/constants.js'; - import {Types} from './types.js'; /** diff --git a/core/renderers/measurables/bottom_row.ts b/core/renderers/measurables/bottom_row.ts index 66cbbd34e..2506610e7 100644 --- a/core/renderers/measurables/bottom_row.ts +++ b/core/renderers/measurables/bottom_row.ts @@ -8,7 +8,6 @@ import type {BlockSvg} from '../../block_svg.js'; import type {ConstantProvider} from '../common/constants.js'; - import type {NextConnection} from './next_connection.js'; import {Row} from './row.js'; import {Types} from './types.js'; diff --git a/core/renderers/measurables/connection.ts b/core/renderers/measurables/connection.ts index 5744eaab4..c5a3e4ce0 100644 --- a/core/renderers/measurables/connection.ts +++ b/core/renderers/measurables/connection.ts @@ -6,10 +6,8 @@ // Former goog.module ID: Blockly.blockRendering.Connection -/* eslint-disable-next-line no-unused-vars */ import type {RenderedConnection} from '../../rendered_connection.js'; import type {ConstantProvider, Shape} from '../common/constants.js'; - import {Measurable} from './base.js'; import {Types} from './types.js'; diff --git a/core/renderers/measurables/external_value_input.ts b/core/renderers/measurables/external_value_input.ts index 9b9dac15f..4dea75413 100644 --- a/core/renderers/measurables/external_value_input.ts +++ b/core/renderers/measurables/external_value_input.ts @@ -6,10 +6,8 @@ // Former goog.module ID: Blockly.blockRendering.ExternalValueInput -/* eslint-disable-next-line no-unused-vars */ import type {Input} from '../../inputs/input.js'; import type {ConstantProvider} from '../common/constants.js'; - import {InputConnection} from './input_connection.js'; import {Types} from './types.js'; diff --git a/core/renderers/measurables/field.ts b/core/renderers/measurables/field.ts index 8d6c4d60b..2c080d2e3 100644 --- a/core/renderers/measurables/field.ts +++ b/core/renderers/measurables/field.ts @@ -6,11 +6,9 @@ // Former goog.module ID: Blockly.blockRendering.Field -/* eslint-disable-next-line no-unused-vars */ import type {Field as BlocklyField} from '../../field.js'; import type {Input} from '../../inputs/input.js'; import type {ConstantProvider} from '../common/constants.js'; - import {Measurable} from './base.js'; import {Types} from './types.js'; diff --git a/core/renderers/measurables/hat.ts b/core/renderers/measurables/hat.ts index 2a0a50586..477a2095b 100644 --- a/core/renderers/measurables/hat.ts +++ b/core/renderers/measurables/hat.ts @@ -7,7 +7,6 @@ // Former goog.module ID: Blockly.blockRendering.Hat import type {ConstantProvider} from '../common/constants.js'; - import {Measurable} from './base.js'; import {Types} from './types.js'; diff --git a/core/renderers/measurables/icon.ts b/core/renderers/measurables/icon.ts index 98e3f722d..424cc67be 100644 --- a/core/renderers/measurables/icon.ts +++ b/core/renderers/measurables/icon.ts @@ -6,10 +6,8 @@ // Former goog.module ID: Blockly.blockRendering.Icon -/* eslint-disable-next-line no-unused-vars */ import type {IIcon as BlocklyIcon} from '../../interfaces/i_icon.js'; import type {ConstantProvider} from '../common/constants.js'; - import {Measurable} from './base.js'; import {Types} from './types.js'; diff --git a/core/renderers/measurables/in_row_spacer.ts b/core/renderers/measurables/in_row_spacer.ts index 19b9efa67..ec64e71a2 100644 --- a/core/renderers/measurables/in_row_spacer.ts +++ b/core/renderers/measurables/in_row_spacer.ts @@ -7,7 +7,6 @@ // Former goog.module ID: Blockly.blockRendering.InRowSpacer import type {ConstantProvider} from '../common/constants.js'; - import {Measurable} from './base.js'; import {Types} from './types.js'; diff --git a/core/renderers/measurables/inline_input.ts b/core/renderers/measurables/inline_input.ts index 9738ddfc2..307daef8d 100644 --- a/core/renderers/measurables/inline_input.ts +++ b/core/renderers/measurables/inline_input.ts @@ -6,10 +6,8 @@ // Former goog.module ID: Blockly.blockRendering.InlineInput -/* eslint-disable-next-line no-unused-vars */ import type {Input} from '../../inputs/input.js'; import type {ConstantProvider} from '../common/constants.js'; - import {InputConnection} from './input_connection.js'; import {Types} from './types.js'; diff --git a/core/renderers/measurables/input_connection.ts b/core/renderers/measurables/input_connection.ts index 69ac82d21..e4e265b4e 100644 --- a/core/renderers/measurables/input_connection.ts +++ b/core/renderers/measurables/input_connection.ts @@ -10,7 +10,6 @@ import type {BlockSvg} from '../../block_svg.js'; import type {Input} from '../../inputs/input.js'; import type {RenderedConnection} from '../../rendered_connection.js'; import type {ConstantProvider} from '../common/constants.js'; - import {Connection} from './connection.js'; import {Types} from './types.js'; diff --git a/core/renderers/measurables/input_row.ts b/core/renderers/measurables/input_row.ts index 229975cfe..a9924246f 100644 --- a/core/renderers/measurables/input_row.ts +++ b/core/renderers/measurables/input_row.ts @@ -7,7 +7,6 @@ // Former goog.module ID: Blockly.blockRendering.InputRow import type {ConstantProvider} from '../common/constants.js'; - import {ExternalValueInput} from './external_value_input.js'; import {InputConnection} from './input_connection.js'; import {Row} from './row.js'; diff --git a/core/renderers/measurables/jagged_edge.ts b/core/renderers/measurables/jagged_edge.ts index a7711dc28..daca25121 100644 --- a/core/renderers/measurables/jagged_edge.ts +++ b/core/renderers/measurables/jagged_edge.ts @@ -7,7 +7,6 @@ // Former goog.module ID: Blockly.blockRendering.JaggedEdge import type {ConstantProvider} from '../common/constants.js'; - import {Measurable} from './base.js'; import {Types} from './types.js'; diff --git a/core/renderers/measurables/next_connection.ts b/core/renderers/measurables/next_connection.ts index 50ac75ad2..ea22001ed 100644 --- a/core/renderers/measurables/next_connection.ts +++ b/core/renderers/measurables/next_connection.ts @@ -8,7 +8,6 @@ import type {RenderedConnection} from '../../rendered_connection.js'; import type {ConstantProvider} from '../common/constants.js'; - import {Connection} from './connection.js'; import {Types} from './types.js'; diff --git a/core/renderers/measurables/output_connection.ts b/core/renderers/measurables/output_connection.ts index 4a3f995f4..1fa074949 100644 --- a/core/renderers/measurables/output_connection.ts +++ b/core/renderers/measurables/output_connection.ts @@ -8,7 +8,6 @@ import type {RenderedConnection} from '../../rendered_connection.js'; import type {ConstantProvider} from '../common/constants.js'; - import {Connection} from './connection.js'; import {Types} from './types.js'; diff --git a/core/renderers/measurables/previous_connection.ts b/core/renderers/measurables/previous_connection.ts index 44ebeebfa..1314eb6a4 100644 --- a/core/renderers/measurables/previous_connection.ts +++ b/core/renderers/measurables/previous_connection.ts @@ -8,7 +8,6 @@ import type {RenderedConnection} from '../../rendered_connection.js'; import type {ConstantProvider} from '../common/constants.js'; - import {Connection} from './connection.js'; import {Types} from './types.js'; diff --git a/core/renderers/measurables/round_corner.ts b/core/renderers/measurables/round_corner.ts index 37fc0fb98..60bbed707 100644 --- a/core/renderers/measurables/round_corner.ts +++ b/core/renderers/measurables/round_corner.ts @@ -7,7 +7,6 @@ // Former goog.module ID: Blockly.blockRendering.RoundCorner import type {ConstantProvider} from '../common/constants.js'; - import {Measurable} from './base.js'; import {Types} from './types.js'; diff --git a/core/renderers/measurables/row.ts b/core/renderers/measurables/row.ts index 4208c84b7..613ec6ace 100644 --- a/core/renderers/measurables/row.ts +++ b/core/renderers/measurables/row.ts @@ -7,7 +7,6 @@ // Former goog.module ID: Blockly.blockRendering.Row import type {ConstantProvider} from '../common/constants.js'; - import type {Measurable} from './base.js'; import type {InRowSpacer} from './in_row_spacer.js'; import type {InputConnection} from './input_connection.js'; diff --git a/core/renderers/measurables/spacer_row.ts b/core/renderers/measurables/spacer_row.ts index 6fae98d87..0e49d3088 100644 --- a/core/renderers/measurables/spacer_row.ts +++ b/core/renderers/measurables/spacer_row.ts @@ -7,7 +7,6 @@ // Former goog.module ID: Blockly.blockRendering.SpacerRow import type {ConstantProvider} from '../common/constants.js'; - import {InRowSpacer} from './in_row_spacer.js'; import {Row} from './row.js'; import {Types} from './types.js'; diff --git a/core/renderers/measurables/square_corner.ts b/core/renderers/measurables/square_corner.ts index 560f37b65..29749ac05 100644 --- a/core/renderers/measurables/square_corner.ts +++ b/core/renderers/measurables/square_corner.ts @@ -7,7 +7,6 @@ // Former goog.module ID: Blockly.blockRendering.SquareCorner import type {ConstantProvider} from '../common/constants.js'; - import {Measurable} from './base.js'; import {Types} from './types.js'; diff --git a/core/renderers/measurables/statement_input.ts b/core/renderers/measurables/statement_input.ts index cdc7c6680..91fe5b64a 100644 --- a/core/renderers/measurables/statement_input.ts +++ b/core/renderers/measurables/statement_input.ts @@ -6,10 +6,8 @@ // Former goog.module ID: Blockly.blockRendering.StatementInput -/* eslint-disable-next-line no-unused-vars */ import type {Input} from '../../inputs/input.js'; import type {ConstantProvider} from '../common/constants.js'; - import {InputConnection} from './input_connection.js'; import {Types} from './types.js'; diff --git a/core/renderers/measurables/top_row.ts b/core/renderers/measurables/top_row.ts index b14908606..b87ce4ad7 100644 --- a/core/renderers/measurables/top_row.ts +++ b/core/renderers/measurables/top_row.ts @@ -8,7 +8,6 @@ import type {BlockSvg} from '../../block_svg.js'; import type {ConstantProvider} from '../common/constants.js'; - import {Hat} from './hat.js'; import type {PreviousConnection} from './previous_connection.js'; import {Row} from './row.js'; diff --git a/core/renderers/thrasos/info.ts b/core/renderers/thrasos/info.ts index 789897209..23772a9af 100644 --- a/core/renderers/thrasos/info.ts +++ b/core/renderers/thrasos/info.ts @@ -15,7 +15,6 @@ import {InRowSpacer} from '../measurables/in_row_spacer.js'; import type {Row} from '../measurables/row.js'; import type {TopRow} from '../measurables/top_row.js'; import {Types} from '../measurables/types.js'; - import type {Renderer} from './renderer.js'; /** diff --git a/core/renderers/thrasos/renderer.ts b/core/renderers/thrasos/renderer.ts index 513cadc78..d12eaf941 100644 --- a/core/renderers/thrasos/renderer.ts +++ b/core/renderers/thrasos/renderer.ts @@ -9,7 +9,6 @@ import type {BlockSvg} from '../../block_svg.js'; import * as blockRendering from '../common/block_rendering.js'; import {Renderer as BaseRenderer} from '../common/renderer.js'; - import {RenderInfo} from './info.js'; /** diff --git a/core/renderers/zelos/constants.ts b/core/renderers/zelos/constants.ts index c50e66510..66ba6c958 100644 --- a/core/renderers/zelos/constants.ts +++ b/core/renderers/zelos/constants.ts @@ -13,8 +13,8 @@ import * as utilsColour from '../../utils/colour.js'; import * as dom from '../../utils/dom.js'; import {Svg} from '../../utils/svg.js'; import * as svgPaths from '../../utils/svg_paths.js'; -import {ConstantProvider as BaseConstantProvider} from '../common/constants.js'; import type {Shape} from '../common/constants.js'; +import {ConstantProvider as BaseConstantProvider} from '../common/constants.js'; /** An object containing sizing and path information about inside corners. */ export interface InsideCorners { diff --git a/core/renderers/zelos/drawer.ts b/core/renderers/zelos/drawer.ts index 009247aea..e5b91c1e6 100644 --- a/core/renderers/zelos/drawer.ts +++ b/core/renderers/zelos/drawer.ts @@ -17,7 +17,6 @@ import {OutputConnection} from '../measurables/output_connection.js'; import type {Row} from '../measurables/row.js'; import type {SpacerRow} from '../measurables/spacer_row.js'; import {Types} from '../measurables/types.js'; - import type {InsideCorners} from './constants.js'; import type {RenderInfo} from './info.js'; import type {StatementInput} from './measurables/inputs.js'; diff --git a/core/renderers/zelos/info.ts b/core/renderers/zelos/info.ts index 623f0a3b0..dd3702fe5 100644 --- a/core/renderers/zelos/info.ts +++ b/core/renderers/zelos/info.ts @@ -7,24 +7,23 @@ // Former goog.module ID: Blockly.zelos.RenderInfo import type {BlockSvg} from '../../block_svg.js'; -import {DummyInput} from '../../inputs/dummy_input.js'; -import {EndRowInput} from '../../inputs/end_row_input.js'; import {FieldImage} from '../../field_image.js'; import {FieldLabel} from '../../field_label.js'; import {FieldTextInput} from '../../field_textinput.js'; -import {Input} from '../../inputs/input.js'; import {Align} from '../../inputs/align.js'; +import {DummyInput} from '../../inputs/dummy_input.js'; +import {EndRowInput} from '../../inputs/end_row_input.js'; +import {Input} from '../../inputs/input.js'; +import {StatementInput} from '../../inputs/statement_input.js'; +import {ValueInput} from '../../inputs/value_input.js'; import {RenderInfo as BaseRenderInfo} from '../common/info.js'; import type {Measurable} from '../measurables/base.js'; import {Field} from '../measurables/field.js'; import {InRowSpacer} from '../measurables/in_row_spacer.js'; import {InputConnection} from '../measurables/input_connection.js'; -import {StatementInput} from '../../inputs/statement_input.js'; import type {Row} from '../measurables/row.js'; import type {SpacerRow} from '../measurables/spacer_row.js'; import {Types} from '../measurables/types.js'; -import {ValueInput} from '../../inputs/value_input.js'; - import type {ConstantProvider, InsideCorners} from './constants.js'; import {BottomRow} from './measurables/bottom_row.js'; import {StatementInput as StatementInputMeasurable} from './measurables/inputs.js'; diff --git a/core/renderers/zelos/marker_svg.ts b/core/renderers/zelos/marker_svg.ts index 4805e264b..395ece0b0 100644 --- a/core/renderers/zelos/marker_svg.ts +++ b/core/renderers/zelos/marker_svg.ts @@ -15,7 +15,6 @@ import {Svg} from '../../utils/svg.js'; import type {WorkspaceSvg} from '../../workspace_svg.js'; import type {ConstantProvider as BaseConstantProvider} from '../common/constants.js'; import {MarkerSvg as BaseMarkerSvg} from '../common/marker_svg.js'; - import type {ConstantProvider as ZelosConstantProvider} from './constants.js'; /** diff --git a/core/renderers/zelos/measurables/inputs.ts b/core/renderers/zelos/measurables/inputs.ts index d405574e0..98dd9f33e 100644 --- a/core/renderers/zelos/measurables/inputs.ts +++ b/core/renderers/zelos/measurables/inputs.ts @@ -6,7 +6,6 @@ // Former goog.module ID: Blockly.zelos.StatementInput -/* eslint-disable-next-line no-unused-vars */ import type {Input} from '../../../inputs/input.js'; import type {ConstantProvider} from '../../../renderers/common/constants.js'; import {StatementInput as BaseStatementInput} from '../../../renderers/measurables/statement_input.js'; diff --git a/core/renderers/zelos/path_object.ts b/core/renderers/zelos/path_object.ts index fdc6ab8a6..060190ee1 100644 --- a/core/renderers/zelos/path_object.ts +++ b/core/renderers/zelos/path_object.ts @@ -12,7 +12,6 @@ import type {BlockStyle} from '../../theme.js'; import * as dom from '../../utils/dom.js'; import {Svg} from '../../utils/svg.js'; import {PathObject as BasePathObject} from '../common/path_object.js'; - import type {ConstantProvider} from './constants.js'; /** diff --git a/core/renderers/zelos/renderer.ts b/core/renderers/zelos/renderer.ts index 354a3f35a..b48600a0b 100644 --- a/core/renderers/zelos/renderer.ts +++ b/core/renderers/zelos/renderer.ts @@ -12,17 +12,16 @@ import {InsertionMarkerManager} from '../../insertion_marker_manager.js'; import type {Marker} from '../../keyboard_nav/marker.js'; import type {RenderedConnection} from '../../rendered_connection.js'; import type {BlockStyle} from '../../theme.js'; +import * as deprecation from '../../utils/deprecation.js'; import type {WorkspaceSvg} from '../../workspace_svg.js'; import * as blockRendering from '../common/block_rendering.js'; import type {RenderInfo as BaseRenderInfo} from '../common/info.js'; import {Renderer as BaseRenderer} from '../common/renderer.js'; - import {ConstantProvider} from './constants.js'; import {Drawer} from './drawer.js'; import {RenderInfo} from './info.js'; import {MarkerSvg} from './marker_svg.js'; import {PathObject} from './path_object.js'; -import * as deprecation from '../../utils/deprecation.js'; /** * The zelos renderer. This renderer emulates Scratch-style and MakeCode-style diff --git a/core/serialization.ts b/core/serialization.ts index 8e159bb2b..3eb232a54 100644 --- a/core/serialization.ts +++ b/core/serialization.ts @@ -9,24 +9,24 @@ */ // Former goog.module ID: Blockly.serialization +import {ISerializer} from './interfaces/i_serializer.js'; import * as blocks from './serialization/blocks.js'; import * as exceptions from './serialization/exceptions.js'; import * as priorities from './serialization/priorities.js'; import * as procedures from './serialization/procedures.js'; import * as registry from './serialization/registry.js'; import * as variables from './serialization/variables.js'; -import * as workspaces from './serialization/workspaces.js'; import * as workspaceComments from './serialization/workspace_comments.js'; -import {ISerializer} from './interfaces/i_serializer.js'; +import * as workspaces from './serialization/workspaces.js'; export { blocks, exceptions, + ISerializer, priorities, procedures, registry, variables, - workspaces, workspaceComments, - ISerializer, + workspaces, }; diff --git a/core/serialization/blocks.ts b/core/serialization/blocks.ts index dbb58cffb..47960258f 100644 --- a/core/serialization/blocks.ts +++ b/core/serialization/blocks.ts @@ -15,11 +15,12 @@ import {inputTypes} from '../inputs/input_types.js'; import {isSerializable} from '../interfaces/i_serializable.js'; import type {ISerializer} from '../interfaces/i_serializer.js'; import * as registry from '../registry.js'; +import * as renderManagement from '../render_management.js'; import * as utilsXml from '../utils/xml.js'; +import {VariableModel} from '../variable_model.js'; +import * as Variables from '../variables.js'; import type {Workspace} from '../workspace.js'; import * as Xml from '../xml.js'; -import * as renderManagement from '../render_management.js'; - import { BadConnectionCheck, MissingBlockType, @@ -29,8 +30,6 @@ import { } from './exceptions.js'; import * as priorities from './priorities.js'; import * as serializationRegistry from './registry.js'; -import * as Variables from '../variables.js'; -import {VariableModel} from '../variable_model.js'; // TODO(#5160): Remove this once lint is fixed. /* eslint-disable no-use-before-define */ diff --git a/core/serialization/procedures.ts b/core/serialization/procedures.ts index c51a38c82..5e2dd0d28 100644 --- a/core/serialization/procedures.ts +++ b/core/serialization/procedures.ts @@ -7,8 +7,8 @@ import {IParameterModel} from '../interfaces/i_parameter_model.js'; import {IProcedureModel} from '../interfaces/i_procedure_model.js'; import type {ISerializer} from '../interfaces/i_serializer.js'; -import * as priorities from './priorities.js'; import type {Workspace} from '../workspace.js'; +import * as priorities from './priorities.js'; /** Represents the state of a procedure model. */ export interface State { diff --git a/core/serialization/variables.ts b/core/serialization/variables.ts index 69c6cda8c..b714401eb 100644 --- a/core/serialization/variables.ts +++ b/core/serialization/variables.ts @@ -8,7 +8,6 @@ import type {ISerializer} from '../interfaces/i_serializer.js'; import type {Workspace} from '../workspace.js'; - import * as priorities from './priorities.js'; import * as serializationRegistry from './registry.js'; diff --git a/core/serialization/workspace_comments.ts b/core/serialization/workspace_comments.ts index 525274e58..61d1127b3 100644 --- a/core/serialization/workspace_comments.ts +++ b/core/serialization/workspace_comments.ts @@ -4,14 +4,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {ISerializer} from '../interfaces/i_serializer.js'; -import {Workspace} from '../workspace.js'; -import * as priorities from './priorities.js'; import type {WorkspaceComment} from '../comments/workspace_comment.js'; import * as eventUtils from '../events/utils.js'; +import {ISerializer} from '../interfaces/i_serializer.js'; import {Coordinate} from '../utils/coordinate.js'; -import * as serializationRegistry from './registry.js'; import {Size} from '../utils/size.js'; +import {Workspace} from '../workspace.js'; +import * as priorities from './priorities.js'; +import * as serializationRegistry from './registry.js'; export interface State { id?: string; diff --git a/core/serialization/workspaces.ts b/core/serialization/workspaces.ts index 871060196..7206e3715 100644 --- a/core/serialization/workspaces.ts +++ b/core/serialization/workspaces.ts @@ -10,7 +10,6 @@ import * as eventUtils from '../events/utils.js'; import type {ISerializer} from '../interfaces/i_serializer.js'; import * as registry from '../registry.js'; import * as dom from '../utils/dom.js'; -// eslint-disable-next-line no-unused-vars import type {Workspace} from '../workspace.js'; import {WorkspaceSvg} from '../workspace_svg.js'; diff --git a/core/shortcut_items.ts b/core/shortcut_items.ts index 6a7e29d26..3a32b687f 100644 --- a/core/shortcut_items.ts +++ b/core/shortcut_items.ts @@ -9,16 +9,16 @@ import {BlockSvg} from './block_svg.js'; import * as clipboard from './clipboard.js'; import * as common from './common.js'; +import * as eventUtils from './events/utils.js'; import {Gesture} from './gesture.js'; import {ICopyData, isCopyable} from './interfaces/i_copyable.js'; import {isDeletable} from './interfaces/i_deletable.js'; -import {KeyboardShortcut, ShortcutRegistry} from './shortcut_registry.js'; -import {KeyCodes} from './utils/keycodes.js'; -import type {WorkspaceSvg} from './workspace_svg.js'; import {isDraggable} from './interfaces/i_draggable.js'; -import * as eventUtils from './events/utils.js'; +import {KeyboardShortcut, ShortcutRegistry} from './shortcut_registry.js'; import {Coordinate} from './utils/coordinate.js'; +import {KeyCodes} from './utils/keycodes.js'; import {Rect} from './utils/rect.js'; +import type {WorkspaceSvg} from './workspace_svg.js'; /** * Object holding the names of the default shortcut items. diff --git a/core/toolbox/category.ts b/core/toolbox/category.ts index 9fc2f8a6f..5bdeca223 100644 --- a/core/toolbox/category.ts +++ b/core/toolbox/category.ts @@ -16,6 +16,11 @@ import type {ICollapsibleToolboxItem} from '../interfaces/i_collapsible_toolbox_ import type {ISelectableToolboxItem} from '../interfaces/i_selectable_toolbox_item.js'; import type {IToolbox} from '../interfaces/i_toolbox.js'; import type {IToolboxItem} from '../interfaces/i_toolbox_item.js'; +import * as registry from '../registry.js'; +import * as aria from '../utils/aria.js'; +import * as colourUtils from '../utils/colour.js'; +import * as dom from '../utils/dom.js'; +import * as parsing from '../utils/parsing.js'; import type { CategoryInfo, DynamicCategoryInfo, @@ -24,13 +29,7 @@ import type { FlyoutItemInfoArray, StaticCategoryInfo, } from '../utils/toolbox.js'; -import * as registry from '../registry.js'; -import * as aria from '../utils/aria.js'; -import * as colourUtils from '../utils/colour.js'; -import * as dom from '../utils/dom.js'; -import * as parsing from '../utils/parsing.js'; import * as toolbox from '../utils/toolbox.js'; - import {ToolboxItem} from './toolbox_item.js'; /** diff --git a/core/toolbox/collapsible_category.ts b/core/toolbox/collapsible_category.ts index faea8edcb..e51db4f68 100644 --- a/core/toolbox/collapsible_category.ts +++ b/core/toolbox/collapsible_category.ts @@ -18,7 +18,6 @@ import * as registry from '../registry.js'; import * as aria from '../utils/aria.js'; import * as dom from '../utils/dom.js'; import * as toolbox from '../utils/toolbox.js'; - import {ToolboxCategory} from './category.js'; import {ToolboxSeparator} from './separator.js'; diff --git a/core/toolbox/separator.ts b/core/toolbox/separator.ts index ec003daf6..5e899054a 100644 --- a/core/toolbox/separator.ts +++ b/core/toolbox/separator.ts @@ -16,7 +16,6 @@ import type {IToolbox} from '../interfaces/i_toolbox.js'; import * as registry from '../registry.js'; import * as dom from '../utils/dom.js'; import type * as toolbox from '../utils/toolbox.js'; - import {ToolboxItem} from './toolbox_item.js'; /** diff --git a/core/toolbox/toolbox.ts b/core/toolbox/toolbox.ts index 578a62b0e..4e0f77207 100644 --- a/core/toolbox/toolbox.ts +++ b/core/toolbox/toolbox.ts @@ -12,8 +12,6 @@ // Former goog.module ID: Blockly.Toolbox // Unused import preserved for side-effects. Remove if unneeded. -import '../events/events_toolbox_item_select.js'; - import {BlockSvg} from '../block_svg.js'; import type {BlocklyOptions} from '../blockly_options.js'; import * as browserEvents from '../browser_events.js'; @@ -21,9 +19,11 @@ import * as common from '../common.js'; import {ComponentManager} from '../component_manager.js'; import * as Css from '../css.js'; import {DeleteArea} from '../delete_area.js'; +import '../events/events_toolbox_item_select.js'; import * as eventUtils from '../events/utils.js'; import type {IAutoHideable} from '../interfaces/i_autohideable.js'; import type {ICollapsibleToolboxItem} from '../interfaces/i_collapsible_toolbox_item.js'; +import {isDeletable} from '../interfaces/i_deletable.js'; import type {IDraggable} from '../interfaces/i_draggable.js'; import type {IFlyout} from '../interfaces/i_flyout.js'; import type {IKeyboardAccessible} from '../interfaces/i_keyboard_accessible.js'; @@ -43,7 +43,6 @@ import * as toolbox from '../utils/toolbox.js'; import type {WorkspaceSvg} from '../workspace_svg.js'; import type {ToolboxCategory} from './category.js'; import {CollapsibleToolboxCategory} from './collapsible_category.js'; -import {isDeletable} from '../interfaces/i_deletable.js'; /** * Class for a Toolbox. diff --git a/core/trashcan.ts b/core/trashcan.ts index d4629dcae..4083a4294 100644 --- a/core/trashcan.ts +++ b/core/trashcan.ts @@ -12,14 +12,13 @@ // Former goog.module ID: Blockly.Trashcan // Unused import preserved for side-effects. Remove if unneeded. -import './events/events_trashcan_open.js'; - import type {BlocklyOptions} from './blockly_options.js'; import * as browserEvents from './browser_events.js'; import {ComponentManager} from './component_manager.js'; import {DeleteArea} from './delete_area.js'; import type {Abstract} from './events/events_abstract.js'; import type {BlockDelete} from './events/events_block_delete.js'; +import './events/events_trashcan_open.js'; import * as eventUtils from './events/utils.js'; import type {IAutoHideable} from './interfaces/i_autohideable.js'; import type {IDraggable} from './interfaces/i_draggable.js'; @@ -35,8 +34,8 @@ import * as dom from './utils/dom.js'; import {Rect} from './utils/rect.js'; import {Size} from './utils/size.js'; import {Svg} from './utils/svg.js'; -import {BlockInfo} from './utils/toolbox.js'; import * as toolbox from './utils/toolbox.js'; +import {BlockInfo} from './utils/toolbox.js'; import type {WorkspaceSvg} from './workspace_svg.js'; /** diff --git a/core/utils/parsing.ts b/core/utils/parsing.ts index 9950b80e6..3f70f5693 100644 --- a/core/utils/parsing.ts +++ b/core/utils/parsing.ts @@ -7,7 +7,6 @@ // Former goog.module ID: Blockly.utils.parsing import {Msg} from '../msg.js'; - import * as colourUtils from './colour.js'; /** diff --git a/core/utils/svg_math.ts b/core/utils/svg_math.ts index 0444787ad..c29d6ae69 100644 --- a/core/utils/svg_math.ts +++ b/core/utils/svg_math.ts @@ -7,7 +7,6 @@ // Former goog.module ID: Blockly.utils.svgMath import type {WorkspaceSvg} from '../workspace_svg.js'; - import {Coordinate} from './coordinate.js'; import {Rect} from './rect.js'; import * as style from './style.js'; diff --git a/core/variables.ts b/core/variables.ts index dee53a72b..b69893a9f 100644 --- a/core/variables.ts +++ b/core/variables.ts @@ -8,9 +8,9 @@ import {Blocks} from './blocks.js'; import * as dialog from './dialog.js'; +import {isLegacyProcedureDefBlock} from './interfaces/i_legacy_procedure_blocks.js'; import {isVariableBackedParameterModel} from './interfaces/i_variable_backed_parameter_model.js'; import {Msg} from './msg.js'; -import {isLegacyProcedureDefBlock} from './interfaces/i_legacy_procedure_blocks.js'; import * as utilsXml from './utils/xml.js'; import {VariableModel} from './variable_model.js'; import type {Workspace} from './workspace.js'; diff --git a/core/variables_dynamic.ts b/core/variables_dynamic.ts index 6c4457549..9788962c7 100644 --- a/core/variables_dynamic.ts +++ b/core/variables_dynamic.ts @@ -7,13 +7,13 @@ // Former goog.module ID: Blockly.VariablesDynamic import {Blocks} from './blocks.js'; +import type {FlyoutButton} from './flyout_button.js'; import {Msg} from './msg.js'; import * as xml from './utils/xml.js'; import {VariableModel} from './variable_model.js'; import * as Variables from './variables.js'; import type {Workspace} from './workspace.js'; import type {WorkspaceSvg} from './workspace_svg.js'; -import type {FlyoutButton} from './flyout_button.js'; /** * String for use in the "custom" attribute of a category in toolbox XML. diff --git a/core/widgetdiv.ts b/core/widgetdiv.ts index b28ec6367..897698611 100644 --- a/core/widgetdiv.ts +++ b/core/widgetdiv.ts @@ -7,8 +7,8 @@ // Former goog.module ID: Blockly.WidgetDiv import * as common from './common.js'; -import * as dom from './utils/dom.js'; import {Field} from './field.js'; +import * as dom from './utils/dom.js'; import type {Rect} from './utils/rect.js'; import type {Size} from './utils/size.js'; import type {WorkspaceSvg} from './workspace_svg.js'; diff --git a/core/workspace.ts b/core/workspace.ts index d092cbc82..bf734243f 100644 --- a/core/workspace.ts +++ b/core/workspace.ts @@ -16,12 +16,15 @@ import './connection_checker.js'; import type {Block} from './block.js'; import type {BlocklyOptions} from './blockly_options.js'; +import {WorkspaceComment} from './comments/workspace_comment.js'; +import * as common from './common.js'; import type {ConnectionDB} from './connection_db.js'; import type {Abstract} from './events/events_abstract.js'; -import * as common from './common.js'; import * as eventUtils from './events/utils.js'; import type {IASTNodeLocation} from './interfaces/i_ast_node_location.js'; import type {IConnectionChecker} from './interfaces/i_connection_checker.js'; +import {IProcedureMap} from './interfaces/i_procedure_map.js'; +import {ObservableProcedureMap} from './observable_procedure_map.js'; import {Options} from './options.js'; import * as registry from './registry.js'; import * as arrayUtils from './utils/array.js'; @@ -30,9 +33,6 @@ import * as math from './utils/math.js'; import type * as toolbox from './utils/toolbox.js'; import {VariableMap} from './variable_map.js'; import type {VariableModel} from './variable_model.js'; -import {WorkspaceComment} from './comments/workspace_comment.js'; -import {IProcedureMap} from './interfaces/i_procedure_map.js'; -import {ObservableProcedureMap} from './observable_procedure_map.js'; /** * Class for a workspace. This is a data structure that contains blocks. diff --git a/core/workspace_svg.ts b/core/workspace_svg.ts index 82a08b237..6bf5fa5a5 100644 --- a/core/workspace_svg.ts +++ b/core/workspace_svg.ts @@ -22,11 +22,16 @@ import type {Block} from './block.js'; import type {BlockSvg} from './block_svg.js'; import type {BlocklyOptions} from './blockly_options.js'; import * as browserEvents from './browser_events.js'; +import {RenderedWorkspaceComment} from './comments/rendered_workspace_comment.js'; +import {WorkspaceComment} from './comments/workspace_comment.js'; import * as common from './common.js'; import {ComponentManager} from './component_manager.js'; import {ConnectionDB} from './connection_db.js'; import * as ContextMenu from './contextmenu.js'; -import {ContextMenuRegistry} from './contextmenu_registry.js'; +import { + ContextMenuOption, + ContextMenuRegistry, +} from './contextmenu_registry.js'; import * as dropDownDiv from './dropdowndiv.js'; import * as eventUtils from './events/utils.js'; import type {FlyoutButton} from './flyout_button.js'; @@ -40,10 +45,12 @@ import type {IMetricsManager} from './interfaces/i_metrics_manager.js'; import type {IToolbox} from './interfaces/i_toolbox.js'; import type {Cursor} from './keyboard_nav/cursor.js'; import type {Marker} from './keyboard_nav/marker.js'; +import {LayerManager} from './layer_manager.js'; import {MarkerManager} from './marker_manager.js'; import {Options} from './options.js'; import * as Procedures from './procedures.js'; import * as registry from './registry.js'; +import * as renderManagement from './render_management.js'; import * as blockRendering from './renderers/common/block_rendering.js'; import type {Renderer} from './renderers/common/renderer.js'; import type {ScrollbarPair} from './scrollbar_pair.js'; @@ -68,12 +75,7 @@ import * as VariablesDynamic from './variables_dynamic.js'; import * as WidgetDiv from './widgetdiv.js'; import {Workspace} from './workspace.js'; import {WorkspaceAudio} from './workspace_audio.js'; -import {WorkspaceComment} from './comments/workspace_comment.js'; import {ZoomControls} from './zoom_controls.js'; -import {ContextMenuOption} from './contextmenu_registry.js'; -import * as renderManagement from './render_management.js'; -import {LayerManager} from './layer_manager.js'; -import {RenderedWorkspaceComment} from './comments/rendered_workspace_comment.js'; /** Margin around the top/bottom/left/right after a zoomToFit call. */ const ZOOM_TO_FIT_MARGIN = 20; diff --git a/core/xml.ts b/core/xml.ts index bad381c5d..5e344c3db 100644 --- a/core/xml.ts +++ b/core/xml.ts @@ -8,12 +8,16 @@ import type {Block} from './block.js'; import type {BlockSvg} from './block_svg.js'; +import {RenderedWorkspaceComment} from './comments/rendered_workspace_comment.js'; +import {WorkspaceComment} from './comments/workspace_comment.js'; import type {Connection} from './connection.js'; import {MANUALLY_DISABLED} from './constants.js'; import * as eventUtils from './events/utils.js'; import type {Field} from './field.js'; import {IconType} from './icons/icon_types.js'; import {inputTypes} from './inputs/input_types.js'; +import * as renderManagement from './render_management.js'; +import {Coordinate} from './utils/coordinate.js'; import * as dom from './utils/dom.js'; import {Size} from './utils/size.js'; import * as utilsXml from './utils/xml.js'; @@ -21,10 +25,6 @@ import type {VariableModel} from './variable_model.js'; import * as Variables from './variables.js'; import type {Workspace} from './workspace.js'; import {WorkspaceSvg} from './workspace_svg.js'; -import * as renderManagement from './render_management.js'; -import {WorkspaceComment} from './comments/workspace_comment.js'; -import {RenderedWorkspaceComment} from './comments/rendered_workspace_comment.js'; -import {Coordinate} from './utils/coordinate.js'; /** * Encode a block tree as XML. diff --git a/generators/dart/dart_generator.ts b/generators/dart/dart_generator.ts index 222bbd41d..20feeda6f 100644 --- a/generators/dart/dart_generator.ts +++ b/generators/dart/dart_generator.ts @@ -11,13 +11,13 @@ // Former goog.module ID: Blockly.Dart -import * as Variables from '../../core/variables.js'; -import * as stringUtils from '../../core/utils/string.js'; import type {Block} from '../../core/block.js'; import {CodeGenerator} from '../../core/generator.js'; -import {Names, NameType} from '../../core/names.js'; -import type {Workspace} from '../../core/workspace.js'; import {inputTypes} from '../../core/inputs/input_types.js'; +import {Names, NameType} from '../../core/names.js'; +import * as stringUtils from '../../core/utils/string.js'; +import * as Variables from '../../core/variables.js'; +import type {Workspace} from '../../core/workspace.js'; /** * Order of operation ENUMs. diff --git a/generators/dart/lists.ts b/generators/dart/lists.ts index 4aaf39905..176b88dc4 100644 --- a/generators/dart/lists.ts +++ b/generators/dart/lists.ts @@ -10,10 +10,10 @@ // Former goog.module ID: Blockly.Dart.lists -import type {Block} from '../../core/block.js'; import type {CreateWithBlock} from '../../blocks/lists.js'; -import type {DartGenerator} from './dart_generator.js'; +import type {Block} from '../../core/block.js'; import {NameType} from '../../core/names.js'; +import type {DartGenerator} from './dart_generator.js'; import {Order} from './dart_generator.js'; // RESERVED WORDS: 'Math' diff --git a/generators/dart/loops.ts b/generators/dart/loops.ts index a6b6bb180..f2e6efab0 100644 --- a/generators/dart/loops.ts +++ b/generators/dart/loops.ts @@ -10,11 +10,11 @@ // Former goog.module ID: Blockly.Dart.loops -import * as stringUtils from '../../core/utils/string.js'; -import type {Block} from '../../core/block.js'; import type {ControlFlowInLoopBlock} from '../../blocks/loops.js'; -import type {DartGenerator} from './dart_generator.js'; +import type {Block} from '../../core/block.js'; import {NameType} from '../../core/names.js'; +import * as stringUtils from '../../core/utils/string.js'; +import type {DartGenerator} from './dart_generator.js'; import {Order} from './dart_generator.js'; export function controls_repeat_ext(block: Block, generator: DartGenerator) { diff --git a/generators/dart/procedures.ts b/generators/dart/procedures.ts index 0ecf6d210..8890e713c 100644 --- a/generators/dart/procedures.ts +++ b/generators/dart/procedures.ts @@ -10,8 +10,8 @@ // Former goog.module ID: Blockly.Dart.procedures -import type {Block} from '../../core/block.js'; import type {IfReturnBlock} from '../../blocks/procedures.js'; +import type {Block} from '../../core/block.js'; import type {DartGenerator} from './dart_generator.js'; import {Order} from './dart_generator.js'; diff --git a/generators/dart/text.ts b/generators/dart/text.ts index c141eaad0..c189c32cf 100644 --- a/generators/dart/text.ts +++ b/generators/dart/text.ts @@ -10,9 +10,9 @@ // Former goog.module ID: Blockly.Dart.texts +import type {JoinMutatorBlock} from '../../blocks/text.js'; import type {Block} from '../../core/block.js'; import type {DartGenerator} from './dart_generator.js'; -import type {JoinMutatorBlock} from '../../blocks/text.js'; import {Order} from './dart_generator.js'; // RESERVED WORDS: 'Html,Math' diff --git a/generators/javascript/javascript_generator.ts b/generators/javascript/javascript_generator.ts index 592563f91..a247ed5dd 100644 --- a/generators/javascript/javascript_generator.ts +++ b/generators/javascript/javascript_generator.ts @@ -11,13 +11,13 @@ // Former goog.module ID: Blockly.JavaScript -import * as Variables from '../../core/variables.js'; -import * as stringUtils from '../../core/utils/string.js'; import type {Block} from '../../core/block.js'; import {CodeGenerator} from '../../core/generator.js'; -import {Names, NameType} from '../../core/names.js'; -import type {Workspace} from '../../core/workspace.js'; import {inputTypes} from '../../core/inputs/input_types.js'; +import {Names, NameType} from '../../core/names.js'; +import * as stringUtils from '../../core/utils/string.js'; +import * as Variables from '../../core/variables.js'; +import type {Workspace} from '../../core/workspace.js'; /** * Order of operation ENUMs. diff --git a/generators/javascript/lists.ts b/generators/javascript/lists.ts index bbed5231b..7fd1887fb 100644 --- a/generators/javascript/lists.ts +++ b/generators/javascript/lists.ts @@ -10,10 +10,10 @@ // Former goog.module ID: Blockly.JavaScript.lists -import type {Block} from '../../core/block.js'; import type {CreateWithBlock} from '../../blocks/lists.js'; -import type {JavascriptGenerator} from './javascript_generator.js'; +import type {Block} from '../../core/block.js'; import {NameType} from '../../core/names.js'; +import type {JavascriptGenerator} from './javascript_generator.js'; import {Order} from './javascript_generator.js'; export function lists_create_empty( diff --git a/generators/javascript/loops.ts b/generators/javascript/loops.ts index 555e43ff1..2bc561582 100644 --- a/generators/javascript/loops.ts +++ b/generators/javascript/loops.ts @@ -10,11 +10,11 @@ // Former goog.module ID: Blockly.JavaScript.loops -import * as stringUtils from '../../core/utils/string.js'; -import type {Block} from '../../core/block.js'; import type {ControlFlowInLoopBlock} from '../../blocks/loops.js'; -import type {JavascriptGenerator} from './javascript_generator.js'; +import type {Block} from '../../core/block.js'; import {NameType} from '../../core/names.js'; +import * as stringUtils from '../../core/utils/string.js'; +import type {JavascriptGenerator} from './javascript_generator.js'; import {Order} from './javascript_generator.js'; export function controls_repeat_ext( diff --git a/generators/javascript/procedures.ts b/generators/javascript/procedures.ts index e0a055217..d4a2e2034 100644 --- a/generators/javascript/procedures.ts +++ b/generators/javascript/procedures.ts @@ -10,8 +10,8 @@ // Former goog.module ID: Blockly.JavaScript.procedures -import type {Block} from '../../core/block.js'; import type {IfReturnBlock} from '../../blocks/procedures.js'; +import type {Block} from '../../core/block.js'; import type {JavascriptGenerator} from './javascript_generator.js'; import {Order} from './javascript_generator.js'; diff --git a/generators/javascript/text.ts b/generators/javascript/text.ts index d31bdcf4b..f991bb28a 100644 --- a/generators/javascript/text.ts +++ b/generators/javascript/text.ts @@ -10,9 +10,9 @@ // Former goog.module ID: Blockly.JavaScript.texts +import type {JoinMutatorBlock} from '../../blocks/text.js'; import type {Block} from '../../core/block.js'; import type {JavascriptGenerator} from './javascript_generator.js'; -import type {JoinMutatorBlock} from '../../blocks/text.js'; import {Order} from './javascript_generator.js'; /** diff --git a/generators/lua.ts b/generators/lua.ts index 0cf81fb96..35ac570af 100644 --- a/generators/lua.ts +++ b/generators/lua.ts @@ -11,10 +11,10 @@ // Former goog.module ID: Blockly.Lua.all -import {LuaGenerator} from './lua/lua_generator.js'; import * as lists from './lua/lists.js'; import * as logic from './lua/logic.js'; import * as loops from './lua/loops.js'; +import {LuaGenerator} from './lua/lua_generator.js'; import * as math from './lua/math.js'; import * as procedures from './lua/procedures.js'; import * as text from './lua/text.js'; diff --git a/generators/lua/lists.ts b/generators/lua/lists.ts index 901ed88a6..f1f90cc4a 100644 --- a/generators/lua/lists.ts +++ b/generators/lua/lists.ts @@ -10,10 +10,10 @@ // Former goog.module ID: Blockly.Lua.lists -import type {Block} from '../../core/block.js'; import type {CreateWithBlock} from '../../blocks/lists.js'; -import type {LuaGenerator} from './lua_generator.js'; +import type {Block} from '../../core/block.js'; import {NameType} from '../../core/names.js'; +import type {LuaGenerator} from './lua_generator.js'; import {Order} from './lua_generator.js'; export function lists_create_empty( diff --git a/generators/lua/loops.ts b/generators/lua/loops.ts index 01474cd81..2c09f6279 100644 --- a/generators/lua/loops.ts +++ b/generators/lua/loops.ts @@ -10,11 +10,11 @@ // Former goog.module ID: Blockly.Lua.loops -import * as stringUtils from '../../core/utils/string.js'; -import type {Block} from '../../core/block.js'; import type {ControlFlowInLoopBlock} from '../../blocks/loops.js'; -import type {LuaGenerator} from './lua_generator.js'; +import type {Block} from '../../core/block.js'; import {NameType} from '../../core/names.js'; +import * as stringUtils from '../../core/utils/string.js'; +import type {LuaGenerator} from './lua_generator.js'; import {Order} from './lua_generator.js'; /** diff --git a/generators/lua/lua_generator.ts b/generators/lua/lua_generator.ts index 76517c77d..b753ff2c6 100644 --- a/generators/lua/lua_generator.ts +++ b/generators/lua/lua_generator.ts @@ -13,12 +13,12 @@ // Former goog.module ID: Blockly.Lua -import * as stringUtils from '../../core/utils/string.js'; import type {Block} from '../../core/block.js'; import {CodeGenerator} from '../../core/generator.js'; -import {Names} from '../../core/names.js'; -import type {Workspace} from '../../core/workspace.js'; import {inputTypes} from '../../core/inputs/input_types.js'; +import {Names} from '../../core/names.js'; +import * as stringUtils from '../../core/utils/string.js'; +import type {Workspace} from '../../core/workspace.js'; /** * Order of operation ENUMs. diff --git a/generators/lua/procedures.ts b/generators/lua/procedures.ts index 79dc58aa2..bd78ef7a6 100644 --- a/generators/lua/procedures.ts +++ b/generators/lua/procedures.ts @@ -10,8 +10,8 @@ // Former goog.module ID: Blockly.Lua.procedures -import type {Block} from '../../core/block.js'; import type {IfReturnBlock} from '../../blocks/procedures.js'; +import type {Block} from '../../core/block.js'; import type {LuaGenerator} from './lua_generator.js'; import {Order} from './lua_generator.js'; diff --git a/generators/lua/text.ts b/generators/lua/text.ts index 1c4a79a8e..47d9a2033 100644 --- a/generators/lua/text.ts +++ b/generators/lua/text.ts @@ -10,8 +10,8 @@ // Former goog.module ID: Blockly.Lua.texts -import type {Block} from '../../core/block.js'; import type {JoinMutatorBlock} from '../../blocks/text.js'; +import type {Block} from '../../core/block.js'; import type {LuaGenerator} from './lua_generator.js'; import {Order} from './lua_generator.js'; diff --git a/generators/php.ts b/generators/php.ts index 30a080866..69f6cda74 100644 --- a/generators/php.ts +++ b/generators/php.ts @@ -12,11 +12,11 @@ // Former goog.module ID: Blockly.PHP.all -import {PhpGenerator} from './php/php_generator.js'; import * as lists from './php/lists.js'; import * as logic from './php/logic.js'; import * as loops from './php/loops.js'; import * as math from './php/math.js'; +import {PhpGenerator} from './php/php_generator.js'; import * as procedures from './php/procedures.js'; import * as text from './php/text.js'; import * as variables from './php/variables.js'; diff --git a/generators/php/lists.ts b/generators/php/lists.ts index 7ca2639b7..009d7ccc8 100644 --- a/generators/php/lists.ts +++ b/generators/php/lists.ts @@ -21,12 +21,12 @@ // Former goog.module ID: Blockly.generator.lists -import * as stringUtils from '../../core/utils/string.js'; -import type {Block} from '../../core/block.js'; import type {CreateWithBlock} from '../../blocks/lists.js'; +import type {Block} from '../../core/block.js'; import {NameType} from '../../core/names.js'; -import {Order} from './php_generator.js'; +import * as stringUtils from '../../core/utils/string.js'; import type {PhpGenerator} from './php_generator.js'; +import {Order} from './php_generator.js'; export function lists_create_empty( block: Block, diff --git a/generators/php/logic.ts b/generators/php/logic.ts index 8aaa5c892..731fe5708 100644 --- a/generators/php/logic.ts +++ b/generators/php/logic.ts @@ -11,8 +11,8 @@ // Former goog.module ID: Blockly.PHP.logic import type {Block} from '../../core/block.js'; -import {Order} from './php_generator.js'; import type {PhpGenerator} from './php_generator.js'; +import {Order} from './php_generator.js'; export function controls_if(block: Block, generator: PhpGenerator) { // If/elseif/else condition. diff --git a/generators/php/loops.ts b/generators/php/loops.ts index ae87dbb29..991cbaf4e 100644 --- a/generators/php/loops.ts +++ b/generators/php/loops.ts @@ -10,12 +10,12 @@ // Former goog.module ID: Blockly.PHP.loops -import * as stringUtils from '../../core/utils/string.js'; -import type {Block} from '../../core/block.js'; import type {ControlFlowInLoopBlock} from '../../blocks/loops.js'; +import type {Block} from '../../core/block.js'; import {NameType} from '../../core/names.js'; -import {Order} from './php_generator.js'; +import * as stringUtils from '../../core/utils/string.js'; import type {PhpGenerator} from './php_generator.js'; +import {Order} from './php_generator.js'; export function controls_repeat_ext(block: Block, generator: PhpGenerator) { // Repeat n times. diff --git a/generators/php/math.ts b/generators/php/math.ts index 6218bf4d1..2026af064 100644 --- a/generators/php/math.ts +++ b/generators/php/math.ts @@ -11,8 +11,8 @@ // Former goog.module ID: Blockly.PHP.math import type {Block} from '../../core/block.js'; -import {Order} from './php_generator.js'; import type {PhpGenerator} from './php_generator.js'; +import {Order} from './php_generator.js'; export function math_number( block: Block, diff --git a/generators/php/php_generator.ts b/generators/php/php_generator.ts index ecdfb76fd..8ac23c057 100644 --- a/generators/php/php_generator.ts +++ b/generators/php/php_generator.ts @@ -11,12 +11,12 @@ // Former goog.module ID: Blockly.PHP -import * as stringUtils from '../../core/utils/string.js'; import type {Block} from '../../core/block.js'; import {CodeGenerator} from '../../core/generator.js'; -import {Names} from '../../core/names.js'; -import type {Workspace} from '../../core/workspace.js'; import {inputTypes} from '../../core/inputs/input_types.js'; +import {Names} from '../../core/names.js'; +import * as stringUtils from '../../core/utils/string.js'; +import type {Workspace} from '../../core/workspace.js'; /** * Order of operation ENUMs. diff --git a/generators/php/procedures.ts b/generators/php/procedures.ts index acf84aea6..bad6c1443 100644 --- a/generators/php/procedures.ts +++ b/generators/php/procedures.ts @@ -10,12 +10,12 @@ // Former goog.module ID: Blockly.PHP.procedures -import * as Variables from '../../core/variables.js'; -import type {Block} from '../../core/block.js'; import type {IfReturnBlock} from '../../blocks/procedures.js'; +import type {Block} from '../../core/block.js'; import {NameType} from '../../core/names.js'; -import {Order} from './php_generator.js'; +import * as Variables from '../../core/variables.js'; import type {PhpGenerator} from './php_generator.js'; +import {Order} from './php_generator.js'; export function procedures_defreturn(block: Block, generator: PhpGenerator) { // Define a procedure with a return value. diff --git a/generators/php/text.ts b/generators/php/text.ts index 811e0251f..f50c76946 100644 --- a/generators/php/text.ts +++ b/generators/php/text.ts @@ -10,10 +10,10 @@ // Former goog.module ID: Blockly.PHP.texts -import type {Block} from '../../core/block.js'; import type {JoinMutatorBlock} from '../../blocks/text.js'; -import {Order} from './php_generator.js'; +import type {Block} from '../../core/block.js'; import type {PhpGenerator} from './php_generator.js'; +import {Order} from './php_generator.js'; export function text(block: Block, generator: PhpGenerator): [string, Order] { // Text value. diff --git a/generators/php/variables.ts b/generators/php/variables.ts index 4aacc293b..2275719da 100644 --- a/generators/php/variables.ts +++ b/generators/php/variables.ts @@ -11,8 +11,8 @@ // Former goog.module ID: Blockly.PHP.variables import type {Block} from '../../core/block.js'; -import {Order} from './php_generator.js'; import type {PhpGenerator} from './php_generator.js'; +import {Order} from './php_generator.js'; export function variables_get( block: Block, diff --git a/generators/python.ts b/generators/python.ts index d7b505763..6d57229e3 100644 --- a/generators/python.ts +++ b/generators/python.ts @@ -12,12 +12,12 @@ // Former goog.module ID: Blockly.Python.all -import {PythonGenerator} from './python/python_generator.js'; import * as lists from './python/lists.js'; import * as logic from './python/logic.js'; import * as loops from './python/loops.js'; import * as math from './python/math.js'; import * as procedures from './python/procedures.js'; +import {PythonGenerator} from './python/python_generator.js'; import * as text from './python/text.js'; import * as variables from './python/variables.js'; import * as variablesDynamic from './python/variables_dynamic.js'; diff --git a/generators/python/lists.ts b/generators/python/lists.ts index 6e412c23f..79cfe9dd8 100644 --- a/generators/python/lists.ts +++ b/generators/python/lists.ts @@ -10,12 +10,12 @@ // Former goog.module ID: Blockly.Python.lists -import * as stringUtils from '../../core/utils/string.js'; -import type {Block} from '../../core/block.js'; import type {CreateWithBlock} from '../../blocks/lists.js'; +import type {Block} from '../../core/block.js'; import {NameType} from '../../core/names.js'; -import {Order} from './python_generator.js'; +import * as stringUtils from '../../core/utils/string.js'; import type {PythonGenerator} from './python_generator.js'; +import {Order} from './python_generator.js'; export function lists_create_empty( block: Block, diff --git a/generators/python/loops.ts b/generators/python/loops.ts index 7ca7a5582..84aa613c6 100644 --- a/generators/python/loops.ts +++ b/generators/python/loops.ts @@ -10,11 +10,11 @@ // Former goog.module ID: Blockly.Python.loops -import * as stringUtils from '../../core/utils/string.js'; -import type {Block} from '../../core/block.js'; import type {ControlFlowInLoopBlock} from '../../blocks/loops.js'; -import type {PythonGenerator} from './python_generator.js'; +import type {Block} from '../../core/block.js'; import {NameType} from '../../core/names.js'; +import * as stringUtils from '../../core/utils/string.js'; +import type {PythonGenerator} from './python_generator.js'; import {Order} from './python_generator.js'; export function controls_repeat_ext(block: Block, generator: PythonGenerator) { diff --git a/generators/python/procedures.ts b/generators/python/procedures.ts index 51d2ee9a3..32eae97b9 100644 --- a/generators/python/procedures.ts +++ b/generators/python/procedures.ts @@ -10,12 +10,12 @@ // Former goog.module ID: Blockly.Python.procedures -import * as Variables from '../../core/variables.js'; -import type {Block} from '../../core/block.js'; import type {IfReturnBlock} from '../../blocks/procedures.js'; +import type {Block} from '../../core/block.js'; import {NameType} from '../../core/names.js'; -import {Order} from './python_generator.js'; +import * as Variables from '../../core/variables.js'; import type {PythonGenerator} from './python_generator.js'; +import {Order} from './python_generator.js'; export function procedures_defreturn(block: Block, generator: PythonGenerator) { // Define a procedure with a return value. diff --git a/generators/python/python_generator.ts b/generators/python/python_generator.ts index bf7b87496..f96312e6d 100644 --- a/generators/python/python_generator.ts +++ b/generators/python/python_generator.ts @@ -11,13 +11,13 @@ // Former goog.module ID: Blockly.Python -import * as stringUtils from '../../core/utils/string.js'; -import * as Variables from '../../core/variables.js'; import type {Block} from '../../core/block.js'; import {CodeGenerator} from '../../core/generator.js'; -import {Names} from '../../core/names.js'; -import type {Workspace} from '../../core/workspace.js'; import {inputTypes} from '../../core/inputs/input_types.js'; +import {Names} from '../../core/names.js'; +import * as stringUtils from '../../core/utils/string.js'; +import * as Variables from '../../core/variables.js'; +import type {Workspace} from '../../core/workspace.js'; /** * Order of operation ENUMs. diff --git a/generators/python/text.ts b/generators/python/text.ts index e9154da83..1ccf6b200 100644 --- a/generators/python/text.ts +++ b/generators/python/text.ts @@ -10,12 +10,12 @@ // Former goog.module ID: Blockly.Python.texts -import * as stringUtils from '../../core/utils/string.js'; -import type {Block} from '../../core/block.js'; import type {JoinMutatorBlock} from '../../blocks/text.js'; +import type {Block} from '../../core/block.js'; import {NameType} from '../../core/names.js'; -import {Order} from './python_generator.js'; +import * as stringUtils from '../../core/utils/string.js'; import type {PythonGenerator} from './python_generator.js'; +import {Order} from './python_generator.js'; export function text( block: Block, diff --git a/package-lock.json b/package-lock.json index 227a27031..788993d05 100644 --- a/package-lock.json +++ b/package-lock.json @@ -48,6 +48,7 @@ "mocha": "^10.0.0", "patch-package": "^8.0.0", "prettier": "^3.3.3", + "prettier-plugin-organize-imports": "^4.0.0", "readline-sync": "^1.4.10", "rimraf": "^5.0.0", "typescript": "^5.3.3", @@ -7565,6 +7566,27 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/prettier-plugin-organize-imports": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.0.0.tgz", + "integrity": "sha512-vnKSdgv9aOlqKeEFGhf9SCBsTyzDSyScy1k7E0R1Uo4L0cTcOV7c1XQaT7jfXIOc/p08WLBfN2QUQA9zDSZMxA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@vue/language-plugin-pug": "^2.0.24", + "prettier": ">=2.0", + "typescript": ">=2.9", + "vue-tsc": "^2.0.24" + }, + "peerDependenciesMeta": { + "@vue/language-plugin-pug": { + "optional": true + }, + "vue-tsc": { + "optional": true + } + } + }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", diff --git a/package.json b/package.json index 3fc0a69e1..fa7ab7163 100644 --- a/package.json +++ b/package.json @@ -135,6 +135,7 @@ "mocha": "^10.0.0", "patch-package": "^8.0.0", "prettier": "^3.3.3", + "prettier-plugin-organize-imports": "^4.0.0", "readline-sync": "^1.4.10", "rimraf": "^5.0.0", "typescript": "^5.3.3", diff --git a/tests/browser/test/basic_block_factory_test.mjs b/tests/browser/test/basic_block_factory_test.mjs index e20892471..a9f3cc3f3 100644 --- a/tests/browser/test/basic_block_factory_test.mjs +++ b/tests/browser/test/basic_block_factory_test.mjs @@ -9,7 +9,7 @@ */ import * as chai from 'chai'; -import {testSetup, testFileLocations} from './test_setup.mjs'; +import {testFileLocations, testSetup} from './test_setup.mjs'; suite('Testing Connecting Blocks', function (done) { // Setting timeout to unlimited as the webdriver takes a longer time to run than most mocha test diff --git a/tests/browser/test/basic_block_test.mjs b/tests/browser/test/basic_block_test.mjs index 515cf5668..326e20ecf 100644 --- a/tests/browser/test/basic_block_test.mjs +++ b/tests/browser/test/basic_block_test.mjs @@ -11,12 +11,11 @@ import * as chai from 'chai'; import { - testSetup, - testFileLocations, - getAllBlocks, dragNthBlockFromFlyout, + getAllBlocks, + testFileLocations, + testSetup, } from './test_setup.mjs'; -import {Key} from 'webdriverio'; suite('Basic block tests', function (done) { // Setting timeout to unlimited as the webdriver takes a longer time diff --git a/tests/browser/test/basic_playground_test.mjs b/tests/browser/test/basic_playground_test.mjs index 11ad7a368..55ff58e4b 100644 --- a/tests/browser/test/basic_playground_test.mjs +++ b/tests/browser/test/basic_playground_test.mjs @@ -10,13 +10,13 @@ import * as chai from 'chai'; import { - testSetup, - testFileLocations, - dragNthBlockFromFlyout, - dragBlockTypeFromFlyout, connect, contextMenuSelect, + dragBlockTypeFromFlyout, + dragNthBlockFromFlyout, PAUSE_TIME, + testFileLocations, + testSetup, } from './test_setup.mjs'; async function getIsCollapsed(browser, blockId) { diff --git a/tests/browser/test/block_undo_test.mjs b/tests/browser/test/block_undo_test.mjs index 1c96422dc..0d9f256c2 100644 --- a/tests/browser/test/block_undo_test.mjs +++ b/tests/browser/test/block_undo_test.mjs @@ -11,11 +11,11 @@ import * as chai from 'chai'; import {Key} from 'webdriverio'; import { - testSetup, - testFileLocations, dragBlockTypeFromFlyout, - screenDirection, getAllBlocks, + screenDirection, + testFileLocations, + testSetup, } from './test_setup.mjs'; suite('Testing undo block movement', function (done) { diff --git a/tests/browser/test/delete_blocks_test.mjs b/tests/browser/test/delete_blocks_test.mjs index 1e560dcce..27e17054d 100644 --- a/tests/browser/test/delete_blocks_test.mjs +++ b/tests/browser/test/delete_blocks_test.mjs @@ -5,16 +5,16 @@ */ import * as chai from 'chai'; +import {Key} from 'webdriverio'; import { - testSetup, - testFileLocations, - getAllBlocks, - getBlockElementById, clickBlock, contextMenuSelect, + getAllBlocks, + getBlockElementById, PAUSE_TIME, + testFileLocations, + testSetup, } from './test_setup.mjs'; -import {Key} from 'webdriverio'; const firstBlockId = 'root_block'; const startBlocks = { diff --git a/tests/browser/test/extensive_test.mjs b/tests/browser/test/extensive_test.mjs index 2b1245d2a..786be0ade 100644 --- a/tests/browser/test/extensive_test.mjs +++ b/tests/browser/test/extensive_test.mjs @@ -9,14 +9,14 @@ */ import * as chai from 'chai'; -import { - testSetup, - testFileLocations, - getBlockElementById, - getAllBlocks, - PAUSE_TIME, -} from './test_setup.mjs'; import {Key} from 'webdriverio'; +import { + getAllBlocks, + getBlockElementById, + PAUSE_TIME, + testFileLocations, + testSetup, +} from './test_setup.mjs'; suite('This tests loading Large Configuration and Deletion', function (done) { // Setting timeout to unlimited as the webdriver takes a longer time to run than most mocha test diff --git a/tests/browser/test/field_edits_test.mjs b/tests/browser/test/field_edits_test.mjs index a4dbbb823..bd4da0019 100644 --- a/tests/browser/test/field_edits_test.mjs +++ b/tests/browser/test/field_edits_test.mjs @@ -9,14 +9,14 @@ */ import * as chai from 'chai'; +import {Key} from 'webdriverio'; import { - testSetup, - testFileLocations, + clickWorkspace, dragBlockTypeFromFlyout, screenDirection, - clickWorkspace, + testFileLocations, + testSetup, } from './test_setup.mjs'; -import {Key} from 'webdriverio'; suite('Testing Field Edits', function (done) { // Setting timeout to unlimited as the webdriver takes a longer time to run than most mocha test diff --git a/tests/browser/test/mutator_test.mjs b/tests/browser/test/mutator_test.mjs index 46bc2abbe..6d077b9fd 100644 --- a/tests/browser/test/mutator_test.mjs +++ b/tests/browser/test/mutator_test.mjs @@ -6,15 +6,15 @@ import * as chai from 'chai'; import { - testSetup, - testFileLocations, - connect, - dragBlockTypeFromFlyout, - screenDirection, PAUSE_TIME, - getBlockElementById, + connect, dragBlockFromMutatorFlyout, + dragBlockTypeFromFlyout, + getBlockElementById, openMutatorForBlock, + screenDirection, + testFileLocations, + testSetup, } from './test_setup.mjs'; suite('Mutating a block', function (done) { diff --git a/tests/browser/test/procedure_test.mjs b/tests/browser/test/procedure_test.mjs index 4c0e0897c..34368c732 100644 --- a/tests/browser/test/procedure_test.mjs +++ b/tests/browser/test/procedure_test.mjs @@ -10,13 +10,13 @@ import * as chai from 'chai'; import { - testSetup, - testFileLocations, - getSelectedBlockElement, - getNthBlockOfCategory, - getBlockTypeFromCategory, connect, + getBlockTypeFromCategory, + getNthBlockOfCategory, + getSelectedBlockElement, PAUSE_TIME, + testFileLocations, + testSetup, } from './test_setup.mjs'; suite('Testing Connecting Blocks', function (done) { diff --git a/tests/browser/test/test_setup.mjs b/tests/browser/test/test_setup.mjs index 3888815df..523a5d851 100644 --- a/tests/browser/test/test_setup.mjs +++ b/tests/browser/test/test_setup.mjs @@ -16,9 +16,9 @@ * identifiers that Selenium can use to find those elements. */ -import * as webdriverio from 'webdriverio'; import * as path from 'path'; import {fileURLToPath} from 'url'; +import * as webdriverio from 'webdriverio'; import {posixPath} from '../../../scripts/helpers.js'; let driver = null; diff --git a/tests/browser/test/toolbox_drag_test.mjs b/tests/browser/test/toolbox_drag_test.mjs index 47a352042..742872d93 100644 --- a/tests/browser/test/toolbox_drag_test.mjs +++ b/tests/browser/test/toolbox_drag_test.mjs @@ -10,12 +10,12 @@ import * as chai from 'chai'; import { - testSetup, - testFileLocations, getCategory, - scrollFlyout, - screenDirection, PAUSE_TIME, + screenDirection, + scrollFlyout, + testFileLocations, + testSetup, } from './test_setup.mjs'; // Categories in the basic toolbox. diff --git a/tests/browser/test/workspace_comment_test.mjs b/tests/browser/test/workspace_comment_test.mjs index 0a7b12bf7..5719948d0 100644 --- a/tests/browser/test/workspace_comment_test.mjs +++ b/tests/browser/test/workspace_comment_test.mjs @@ -6,8 +6,7 @@ import * as chai from 'chai'; import * as sinon from 'sinon'; -import {Key} from 'webdriverio'; -import {testSetup, testFileLocations} from './test_setup.mjs'; +import {testFileLocations, testSetup} from './test_setup.mjs'; suite('Workspace comments', function () { // Setting timeout to unlimited as the webdriver takes a longer time diff --git a/tests/migration/validate-renamings.mjs b/tests/migration/validate-renamings.mjs index 439e216c8..d9c66ef9c 100755 --- a/tests/migration/validate-renamings.mjs +++ b/tests/migration/validate-renamings.mjs @@ -11,11 +11,10 @@ * (renamings-schema.json). */ -import JSON5 from 'json5'; -import {readFile} from 'fs/promises'; -import {posixPath} from '../../scripts/helpers.js'; import {validate} from '@hyperjump/json-schema/draft-2020-12'; import {BASIC} from '@hyperjump/json-schema/experimental'; +import {readFile} from 'fs/promises'; +import JSON5 from 'json5'; /** @type {URL} Renaming schema filename. */ const SCHEMA_URL = new URL('renamings.schema.json', import.meta.url); diff --git a/tests/mocha/astnode_test.js b/tests/mocha/astnode_test.js index 4c449b7fa..7ffe8efb9 100644 --- a/tests/mocha/astnode_test.js +++ b/tests/mocha/astnode_test.js @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; import {ASTNode} from '../../build/src/core/keyboard_nav/ast_node.js'; +import {assert} from '../../node_modules/chai/chai.js'; import { sharedTestSetup, sharedTestTeardown, diff --git a/tests/mocha/block_json_test.js b/tests/mocha/block_json_test.js index 9d6dfb738..6f286fa30 100644 --- a/tests/mocha/block_json_test.js +++ b/tests/mocha/block_json_test.js @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; import {Align} from '../../build/src/core/inputs/align.js'; +import {assert} from '../../node_modules/chai/chai.js'; import { sharedTestSetup, sharedTestTeardown, diff --git a/tests/mocha/block_test.js b/tests/mocha/block_test.js index dd070f86c..1b685a445 100644 --- a/tests/mocha/block_test.js +++ b/tests/mocha/block_test.js @@ -4,23 +4,21 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; import {ConnectionType} from '../../build/src/core/connection_type.js'; -import {createDeprecationWarningStub} from './test_helpers/warnings.js'; -import {createRenderedBlock} from './test_helpers/block_definitions.js'; import * as eventUtils from '../../build/src/core/events/utils.js'; import {EndRowInput} from '../../build/src/core/inputs/end_row_input.js'; +import {assert} from '../../node_modules/chai/chai.js'; +import {createRenderedBlock} from './test_helpers/block_definitions.js'; +import { + createChangeListenerSpy, + createMockEvent, +} from './test_helpers/events.js'; +import {MockBubbleIcon, MockIcon} from './test_helpers/icon_mocks.js'; import { sharedTestSetup, sharedTestTeardown, workspaceTeardown, } from './test_helpers/setup_teardown.js'; -import { - createChangeListenerSpy, - createMockEvent, -} from './test_helpers/events.js'; -import {MockIcon, MockBubbleIcon} from './test_helpers/icon_mocks.js'; -import {IconType} from '../../build/src/core/icons/icon_types.js'; suite('Blocks', function () { setup(function () { diff --git a/tests/mocha/blocks/lists_test.js b/tests/mocha/blocks/lists_test.js index cecf3c808..0c7a92bf6 100644 --- a/tests/mocha/blocks/lists_test.js +++ b/tests/mocha/blocks/lists_test.js @@ -4,14 +4,14 @@ * SPDX-License-Identifier: Apache-2.0 */ +import {ConnectionType} from '../../../build/src/core/connection_type.js'; import {assert} from '../../../node_modules/chai/chai.js'; +import {defineStatementBlock} from '../test_helpers/block_definitions.js'; import {runSerializationTestSuite} from '../test_helpers/serialization.js'; import { sharedTestSetup, sharedTestTeardown, } from '../test_helpers/setup_teardown.js'; -import {ConnectionType} from '../../../build/src/core/connection_type.js'; -import {defineStatementBlock} from '../test_helpers/block_definitions.js'; suite('Lists', function () { setup(function () { diff --git a/tests/mocha/blocks/logic_ternary_test.js b/tests/mocha/blocks/logic_ternary_test.js index 6661bd5d4..e6e3326ec 100644 --- a/tests/mocha/blocks/logic_ternary_test.js +++ b/tests/mocha/blocks/logic_ternary_test.js @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../../node_modules/chai/chai.js'; import * as eventUtils from '../../../build/src/core/events/utils.js'; +import {assert} from '../../../node_modules/chai/chai.js'; import {runSerializationTestSuite} from '../test_helpers/serialization.js'; import { sharedTestSetup, diff --git a/tests/mocha/blocks/loops_test.js b/tests/mocha/blocks/loops_test.js index 8f4897e00..f8d74916c 100644 --- a/tests/mocha/blocks/loops_test.js +++ b/tests/mocha/blocks/loops_test.js @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../../node_modules/chai/chai.js'; import * as Blockly from '../../../build/src/core/blockly.js'; +import {assert} from '../../../node_modules/chai/chai.js'; import { sharedTestSetup, sharedTestTeardown, diff --git a/tests/mocha/blocks/procedures_test.js b/tests/mocha/blocks/procedures_test.js index 600aefa6a..84dbf1746 100644 --- a/tests/mocha/blocks/procedures_test.js +++ b/tests/mocha/blocks/procedures_test.js @@ -4,13 +4,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../../node_modules/chai/chai.js'; import * as Blockly from '../../../build/src/core/blockly.js'; +import {assert} from '../../../node_modules/chai/chai.js'; +import {defineRowBlock} from '../test_helpers/block_definitions.js'; import { assertCallBlockStructure, assertDefBlockStructure, - createProcDefBlock, createProcCallBlock, + createProcDefBlock, MockProcedureModel, } from '../test_helpers/procedures.js'; import {runSerializationTestSuite} from '../test_helpers/serialization.js'; @@ -20,7 +21,6 @@ import { sharedTestTeardown, workspaceTeardown, } from '../test_helpers/setup_teardown.js'; -import {defineRowBlock} from '../test_helpers/block_definitions.js'; suite('Procedures', function () { setup(function () { diff --git a/tests/mocha/blocks/variables_test.js b/tests/mocha/blocks/variables_test.js index ea45d59c3..d12691dd4 100644 --- a/tests/mocha/blocks/variables_test.js +++ b/tests/mocha/blocks/variables_test.js @@ -4,16 +4,16 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../../node_modules/chai/chai.js'; -import { - sharedTestSetup, - sharedTestTeardown, -} from '../test_helpers/setup_teardown.js'; import {nameUsedWithConflictingParam} from '../../../build/src/core/variables.js'; +import {assert} from '../../../node_modules/chai/chai.js'; import { MockParameterModelWithVar, MockProcedureModel, } from '../test_helpers/procedures.js'; +import { + sharedTestSetup, + sharedTestTeardown, +} from '../test_helpers/setup_teardown.js'; suite('Variables', function () { setup(function () { diff --git a/tests/mocha/clipboard_test.js b/tests/mocha/clipboard_test.js index 37145de07..652698421 100644 --- a/tests/mocha/clipboard_test.js +++ b/tests/mocha/clipboard_test.js @@ -5,14 +5,14 @@ */ import {assert} from '../../node_modules/chai/chai.js'; -import { - sharedTestSetup, - sharedTestTeardown, -} from './test_helpers/setup_teardown.js'; import { assertEventFired, createChangeListenerSpy, } from './test_helpers/events.js'; +import { + sharedTestSetup, + sharedTestTeardown, +} from './test_helpers/setup_teardown.js'; suite('Clipboard', function () { setup(function () { diff --git a/tests/mocha/comment_test.js b/tests/mocha/comment_test.js index d4091b9c2..3662a870f 100644 --- a/tests/mocha/comment_test.js +++ b/tests/mocha/comment_test.js @@ -4,9 +4,9 @@ * SPDX-License-Identifier: Apache-2.0 */ +import * as eventUtils from '../../build/src/core/events/utils.js'; import {assert} from '../../node_modules/chai/chai.js'; import {assertEventFired} from './test_helpers/events.js'; -import * as eventUtils from '../../build/src/core/events/utils.js'; import { sharedTestSetup, sharedTestTeardown, diff --git a/tests/mocha/connection_checker_test.js b/tests/mocha/connection_checker_test.js index 20f85623a..f7aa33ba8 100644 --- a/tests/mocha/connection_checker_test.js +++ b/tests/mocha/connection_checker_test.js @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; import {ConnectionType} from '../../build/src/core/connection_type.js'; +import {assert} from '../../node_modules/chai/chai.js'; import { sharedTestSetup, sharedTestTeardown, diff --git a/tests/mocha/connection_db_test.js b/tests/mocha/connection_db_test.js index 11eeecf31..e7f397d54 100644 --- a/tests/mocha/connection_db_test.js +++ b/tests/mocha/connection_db_test.js @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; import {ConnectionType} from '../../build/src/core/connection_type.js'; +import {assert} from '../../node_modules/chai/chai.js'; import { sharedTestSetup, sharedTestTeardown, diff --git a/tests/mocha/connection_test.js b/tests/mocha/connection_test.js index 040f59f40..cefea1784 100644 --- a/tests/mocha/connection_test.js +++ b/tests/mocha/connection_test.js @@ -5,17 +5,17 @@ */ import {assert} from '../../node_modules/chai/chai.js'; +import { + defineRowBlock, + defineStackBlock, + defineStatementBlock, +} from './test_helpers/block_definitions.js'; import { createGenUidStubWithReturns, sharedTestSetup, sharedTestTeardown, workspaceTeardown, } from './test_helpers/setup_teardown.js'; -import { - defineRowBlock, - defineStatementBlock, - defineStackBlock, -} from './test_helpers/block_definitions.js'; suite('Connection', function () { setup(function () { diff --git a/tests/mocha/contextmenu_test.js b/tests/mocha/contextmenu_test.js index b730b250d..fe6d4be99 100644 --- a/tests/mocha/contextmenu_test.js +++ b/tests/mocha/contextmenu_test.js @@ -4,16 +4,15 @@ * SPDX-License-Identifier: Apache-2.0 */ +import {callbackFactory} from '../../build/src/core/contextmenu.js'; +import * as xmlUtils from '../../build/src/core/utils/xml.js'; +import * as Variables from '../../build/src/core/variables.js'; import {assert} from '../../node_modules/chai/chai.js'; import { sharedTestSetup, sharedTestTeardown, } from './test_helpers/setup_teardown.js'; -import {callbackFactory} from '../../build/src/core/contextmenu.js'; -import * as xmlUtils from '../../build/src/core/utils/xml.js'; -import * as Variables from '../../build/src/core/variables.js'; - suite('Context Menu', function () { setup(function () { sharedTestSetup.call(this); diff --git a/tests/mocha/cursor_test.js b/tests/mocha/cursor_test.js index fcb763304..bb5026d7a 100644 --- a/tests/mocha/cursor_test.js +++ b/tests/mocha/cursor_test.js @@ -4,12 +4,12 @@ * SPDX-License-Identifier: Apache-2.0 */ +import {ASTNode} from '../../build/src/core/keyboard_nav/ast_node.js'; import {assert} from '../../node_modules/chai/chai.js'; import { sharedTestSetup, sharedTestTeardown, } from './test_helpers/setup_teardown.js'; -import {ASTNode} from '../../build/src/core/keyboard_nav/ast_node.js'; suite('Cursor', function () { setup(function () { diff --git a/tests/mocha/event_block_change_test.js b/tests/mocha/event_block_change_test.js index a4de1eddb..7de0a23b6 100644 --- a/tests/mocha/event_block_change_test.js +++ b/tests/mocha/event_block_change_test.js @@ -5,11 +5,11 @@ */ import {assert} from '../../node_modules/chai/chai.js'; +import {defineMutatorBlocks} from './test_helpers/block_definitions.js'; import { sharedTestSetup, sharedTestTeardown, } from './test_helpers/setup_teardown.js'; -import {defineMutatorBlocks} from './test_helpers/block_definitions.js'; suite('Block Change Event', function () { setup(function () { diff --git a/tests/mocha/event_block_create_test.js b/tests/mocha/event_block_create_test.js index 4ca6fb22a..94d9c72b3 100644 --- a/tests/mocha/event_block_create_test.js +++ b/tests/mocha/event_block_create_test.js @@ -4,14 +4,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; -import {assertEventFired} from './test_helpers/events.js'; import * as eventUtils from '../../build/src/core/events/utils.js'; +import {assert} from '../../node_modules/chai/chai.js'; +import {defineRowBlock} from './test_helpers/block_definitions.js'; +import {assertEventFired} from './test_helpers/events.js'; import { sharedTestSetup, sharedTestTeardown, } from './test_helpers/setup_teardown.js'; -import {defineRowBlock} from './test_helpers/block_definitions.js'; suite('Block Create Event', function () { setup(function () { diff --git a/tests/mocha/event_test.js b/tests/mocha/event_test.js index 0a4e96d2b..75b52bede 100644 --- a/tests/mocha/event_test.js +++ b/tests/mocha/event_test.js @@ -4,22 +4,22 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; import * as Blockly from '../../build/src/core/blockly.js'; +import * as eventUtils from '../../build/src/core/events/utils.js'; import {ASTNode} from '../../build/src/core/keyboard_nav/ast_node.js'; +import {assert} from '../../node_modules/chai/chai.js'; import { assertEventEquals, assertNthCallEventArgEquals, createChangeListenerSpy, } from './test_helpers/events.js'; -import {assertVariableValues} from './test_helpers/variables.js'; import { createGenUidStubWithReturns, sharedTestSetup, sharedTestTeardown, workspaceTeardown, } from './test_helpers/setup_teardown.js'; -import * as eventUtils from '../../build/src/core/events/utils.js'; +import {assertVariableValues} from './test_helpers/variables.js'; suite('Events', function () { setup(function () { diff --git a/tests/mocha/field_checkbox_test.js b/tests/mocha/field_checkbox_test.js index 1db3c9a4b..08190fed8 100644 --- a/tests/mocha/field_checkbox_test.js +++ b/tests/mocha/field_checkbox_test.js @@ -4,8 +4,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; import * as Blockly from '../../build/src/core/blockly.js'; +import {assert} from '../../node_modules/chai/chai.js'; +import {defineRowBlock} from './test_helpers/block_definitions.js'; import { assertFieldValue, runConstructorSuiteTests, @@ -17,7 +18,6 @@ import { sharedTestTeardown, workspaceTeardown, } from './test_helpers/setup_teardown.js'; -import {defineRowBlock} from './test_helpers/block_definitions.js'; suite('Checkbox Fields', function () { setup(function () { diff --git a/tests/mocha/field_colour_test.js b/tests/mocha/field_colour_test.js index ed30be552..262f978f2 100644 --- a/tests/mocha/field_colour_test.js +++ b/tests/mocha/field_colour_test.js @@ -4,18 +4,18 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; import * as Blockly from '../../build/src/core/blockly.js'; +import {assert} from '../../node_modules/chai/chai.js'; +import { + createTestBlock, + defineRowBlock, +} from './test_helpers/block_definitions.js'; import { assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests, } from './test_helpers/fields.js'; -import { - createTestBlock, - defineRowBlock, -} from './test_helpers/block_definitions.js'; import { sharedTestSetup, sharedTestTeardown, diff --git a/tests/mocha/field_dropdown_test.js b/tests/mocha/field_dropdown_test.js index c0261bc65..61deaf47f 100644 --- a/tests/mocha/field_dropdown_test.js +++ b/tests/mocha/field_dropdown_test.js @@ -4,18 +4,18 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; import * as Blockly from '../../build/src/core/blockly.js'; +import {assert} from '../../node_modules/chai/chai.js'; +import { + createTestBlock, + defineRowBlock, +} from './test_helpers/block_definitions.js'; import { assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests, } from './test_helpers/fields.js'; -import { - createTestBlock, - defineRowBlock, -} from './test_helpers/block_definitions.js'; import { sharedTestSetup, sharedTestTeardown, diff --git a/tests/mocha/field_image_test.js b/tests/mocha/field_image_test.js index ed1ec5596..89dd5fcc9 100644 --- a/tests/mocha/field_image_test.js +++ b/tests/mocha/field_image_test.js @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; import * as Blockly from '../../build/src/core/blockly.js'; +import {assert} from '../../node_modules/chai/chai.js'; import { assertFieldValue, runConstructorSuiteTests, diff --git a/tests/mocha/field_label_serializable_test.js b/tests/mocha/field_label_serializable_test.js index f6502db08..a83171341 100644 --- a/tests/mocha/field_label_serializable_test.js +++ b/tests/mocha/field_label_serializable_test.js @@ -4,8 +4,12 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; import * as Blockly from '../../build/src/core/blockly.js'; +import {assert} from '../../node_modules/chai/chai.js'; +import { + createTestBlock, + defineRowBlock, +} from './test_helpers/block_definitions.js'; import { assertFieldValue, runConstructorSuiteTests, @@ -17,10 +21,6 @@ import { sharedTestTeardown, workspaceTeardown, } from './test_helpers/setup_teardown.js'; -import { - createTestBlock, - defineRowBlock, -} from './test_helpers/block_definitions.js'; suite('Label Serializable Fields', function () { setup(function () { diff --git a/tests/mocha/field_label_test.js b/tests/mocha/field_label_test.js index 43883ebf8..cf5b49044 100644 --- a/tests/mocha/field_label_test.js +++ b/tests/mocha/field_label_test.js @@ -4,8 +4,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; import * as Blockly from '../../build/src/core/blockly.js'; +import {assert} from '../../node_modules/chai/chai.js'; +import {createTestBlock} from './test_helpers/block_definitions.js'; import { assertFieldValue, runConstructorSuiteTests, @@ -16,7 +17,6 @@ import { sharedTestSetup, sharedTestTeardown, } from './test_helpers/setup_teardown.js'; -import {createTestBlock} from './test_helpers/block_definitions.js'; suite('Label Fields', function () { setup(function () { diff --git a/tests/mocha/field_number_test.js b/tests/mocha/field_number_test.js index fb6712046..3e0d8ca38 100644 --- a/tests/mocha/field_number_test.js +++ b/tests/mocha/field_number_test.js @@ -4,21 +4,21 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; import * as Blockly from '../../build/src/core/blockly.js'; +import {assert} from '../../node_modules/chai/chai.js'; +import {defineRowBlock} from './test_helpers/block_definitions.js'; +import {runTestCases} from './test_helpers/common.js'; import { assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests, } from './test_helpers/fields.js'; -import {defineRowBlock} from './test_helpers/block_definitions.js'; import { sharedTestSetup, sharedTestTeardown, workspaceTeardown, } from './test_helpers/setup_teardown.js'; -import {runTestCases} from './test_helpers/common.js'; suite('Number Fields', function () { setup(function () { diff --git a/tests/mocha/field_registry_test.js b/tests/mocha/field_registry_test.js index c6ec26967..26b33c16c 100644 --- a/tests/mocha/field_registry_test.js +++ b/tests/mocha/field_registry_test.js @@ -4,9 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; import * as Blockly from '../../build/src/core/blockly.js'; -import {createDeprecationWarningStub} from './test_helpers/warnings.js'; +import {assert} from '../../node_modules/chai/chai.js'; import { sharedTestSetup, sharedTestTeardown, diff --git a/tests/mocha/field_test.js b/tests/mocha/field_test.js index dfc798033..70970b9bf 100644 --- a/tests/mocha/field_test.js +++ b/tests/mocha/field_test.js @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; import * as Blockly from '../../build/src/core/blockly.js'; +import {assert} from '../../node_modules/chai/chai.js'; import { addBlockTypeToCleanup, addMessageToCleanup, @@ -13,7 +13,6 @@ import { sharedTestTeardown, workspaceTeardown, } from './test_helpers/setup_teardown.js'; -import {createDeprecationWarningStub} from './test_helpers/warnings.js'; suite('Abstract Fields', function () { setup(function () { diff --git a/tests/mocha/field_textinput_test.js b/tests/mocha/field_textinput_test.js index 7b0da1b4c..3b755a543 100644 --- a/tests/mocha/field_textinput_test.js +++ b/tests/mocha/field_textinput_test.js @@ -4,18 +4,18 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; import * as Blockly from '../../build/src/core/blockly.js'; +import {assert} from '../../node_modules/chai/chai.js'; +import { + createTestBlock, + defineRowBlock, +} from './test_helpers/block_definitions.js'; import { assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests, } from './test_helpers/fields.js'; -import { - createTestBlock, - defineRowBlock, -} from './test_helpers/block_definitions.js'; import { sharedTestSetup, sharedTestTeardown, diff --git a/tests/mocha/field_variable_test.js b/tests/mocha/field_variable_test.js index 63dd644c3..78dad10ba 100644 --- a/tests/mocha/field_variable_test.js +++ b/tests/mocha/field_variable_test.js @@ -4,8 +4,12 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; import * as Blockly from '../../build/src/core/blockly.js'; +import {assert} from '../../node_modules/chai/chai.js'; +import { + createTestBlock, + defineRowBlock, +} from './test_helpers/block_definitions.js'; import { assertFieldValue, runConstructorSuiteTests, @@ -18,10 +22,6 @@ import { sharedTestTeardown, workspaceTeardown, } from './test_helpers/setup_teardown.js'; -import { - createTestBlock, - defineRowBlock, -} from './test_helpers/block_definitions.js'; suite('Variable Fields', function () { const FAKE_VARIABLE_NAME = 'default_name'; diff --git a/tests/mocha/flyout_test.js b/tests/mocha/flyout_test.js index 522efbdc6..9be45458c 100644 --- a/tests/mocha/flyout_test.js +++ b/tests/mocha/flyout_test.js @@ -10,16 +10,8 @@ import { sharedTestTeardown, workspaceTeardown, } from './test_helpers/setup_teardown.js'; -import {defineStackBlock} from './test_helpers/block_definitions.js'; import { - getBasicToolbox, - getChildItem, - getCollapsibleItem, - getDeeplyNestedJSON, - getInjectedToolbox, - getNonCollapsibleItem, getProperSimpleJson, - getSeparator, getSimpleJson, getXmlArray, } from './test_helpers/toolbox_definitions.js'; diff --git a/tests/mocha/generator_test.js b/tests/mocha/generator_test.js index efaa924de..527448eac 100644 --- a/tests/mocha/generator_test.js +++ b/tests/mocha/generator_test.js @@ -4,13 +4,13 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; import * as Blockly from '../../build/src/core/blockly.js'; import {DartGenerator} from '../../build/src/generators/dart/dart_generator.js'; import {JavascriptGenerator} from '../../build/src/generators/javascript/javascript_generator.js'; import {LuaGenerator} from '../../build/src/generators/lua/lua_generator.js'; import {PhpGenerator} from '../../build/src/generators/php/php_generator.js'; import {PythonGenerator} from '../../build/src/generators/python/python_generator.js'; +import {assert} from '../../node_modules/chai/chai.js'; import { sharedTestSetup, sharedTestTeardown, diff --git a/tests/mocha/gesture_test.js b/tests/mocha/gesture_test.js index 122e96b8b..be807a54a 100644 --- a/tests/mocha/gesture_test.js +++ b/tests/mocha/gesture_test.js @@ -4,15 +4,15 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; -import {assertEventFired, assertEventNotFired} from './test_helpers/events.js'; -import {defineBasicBlockWithField} from './test_helpers/block_definitions.js'; -import {dispatchPointerEvent} from './test_helpers/user_input.js'; import * as eventUtils from '../../build/src/core/events/utils.js'; +import {assert} from '../../node_modules/chai/chai.js'; +import {defineBasicBlockWithField} from './test_helpers/block_definitions.js'; +import {assertEventFired, assertEventNotFired} from './test_helpers/events.js'; import { sharedTestSetup, sharedTestTeardown, } from './test_helpers/setup_teardown.js'; +import {dispatchPointerEvent} from './test_helpers/user_input.js'; suite('Gesture', function () { function testGestureIsFieldClick(block, isFieldClick, eventsFireStub) { diff --git a/tests/mocha/icon_test.js b/tests/mocha/icon_test.js index dd5668b24..5855fcfc5 100644 --- a/tests/mocha/icon_test.js +++ b/tests/mocha/icon_test.js @@ -5,12 +5,12 @@ */ import {assert} from '../../node_modules/chai/chai.js'; +import {defineEmptyBlock} from './test_helpers/block_definitions.js'; +import {MockIcon, MockSerializableIcon} from './test_helpers/icon_mocks.js'; import { sharedTestSetup, sharedTestTeardown, } from './test_helpers/setup_teardown.js'; -import {defineEmptyBlock} from './test_helpers/block_definitions.js'; -import {MockIcon, MockSerializableIcon} from './test_helpers/icon_mocks.js'; suite('Icon', function () { setup(function () { diff --git a/tests/mocha/insertion_marker_manager_test.js b/tests/mocha/insertion_marker_manager_test.js index e6992109f..3fae888df 100644 --- a/tests/mocha/insertion_marker_manager_test.js +++ b/tests/mocha/insertion_marker_manager_test.js @@ -5,15 +5,15 @@ */ import {assert} from '../../node_modules/chai/chai.js'; -import { - sharedTestSetup, - sharedTestTeardown, -} from './test_helpers/setup_teardown.js'; import { defineRowBlock, defineRowToStackBlock, defineStackBlock, } from './test_helpers/block_definitions.js'; +import { + sharedTestSetup, + sharedTestTeardown, +} from './test_helpers/setup_teardown.js'; suite('Insertion marker manager', function () { setup(function () { diff --git a/tests/mocha/jso_deserialization_test.js b/tests/mocha/jso_deserialization_test.js index 7bd902a23..432f0a831 100644 --- a/tests/mocha/jso_deserialization_test.js +++ b/tests/mocha/jso_deserialization_test.js @@ -4,18 +4,17 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; -import { - sharedTestSetup, - sharedTestTeardown, - workspaceTeardown, -} from './test_helpers/setup_teardown.js'; -import {assertEventFired} from './test_helpers/events.js'; import * as eventUtils from '../../build/src/core/events/utils.js'; +import {assert} from '../../node_modules/chai/chai.js'; +import {assertEventFired} from './test_helpers/events.js'; import { MockParameterModel, MockProcedureModel, } from './test_helpers/procedures.js'; +import { + sharedTestSetup, + sharedTestTeardown, +} from './test_helpers/setup_teardown.js'; suite('JSO Deserialization', function () { setup(function () { diff --git a/tests/mocha/jso_serialization_test.js b/tests/mocha/jso_serialization_test.js index 8494dc3bc..7e68edb98 100644 --- a/tests/mocha/jso_serialization_test.js +++ b/tests/mocha/jso_serialization_test.js @@ -4,14 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; import * as Blockly from '../../build/src/core/blockly.js'; -import { - createGenUidStubWithReturns, - sharedTestSetup, - sharedTestTeardown, - workspaceTeardown, -} from './test_helpers/setup_teardown.js'; +import {assert} from '../../node_modules/chai/chai.js'; import { defineRowBlock, defineStackBlock, @@ -21,6 +15,12 @@ import { MockParameterModel, MockProcedureModel, } from './test_helpers/procedures.js'; +import { + createGenUidStubWithReturns, + sharedTestSetup, + sharedTestTeardown, + workspaceTeardown, +} from './test_helpers/setup_teardown.js'; suite('JSO Serialization', function () { setup(function () { diff --git a/tests/mocha/keydown_test.js b/tests/mocha/keydown_test.js index 077aff55e..da8129b48 100644 --- a/tests/mocha/keydown_test.js +++ b/tests/mocha/keydown_test.js @@ -5,12 +5,12 @@ */ import * as Blockly from '../../build/src/core/blockly.js'; -import {createKeyDownEvent} from './test_helpers/user_input.js'; import {defineStackBlock} from './test_helpers/block_definitions.js'; import { sharedTestSetup, sharedTestTeardown, } from './test_helpers/setup_teardown.js'; +import {createKeyDownEvent} from './test_helpers/user_input.js'; suite('Key Down', function () { setup(function () { diff --git a/tests/mocha/mutator_test.js b/tests/mocha/mutator_test.js index 7fa47fd82..fb6d8caf0 100644 --- a/tests/mocha/mutator_test.js +++ b/tests/mocha/mutator_test.js @@ -5,15 +5,15 @@ */ import {assert} from '../../node_modules/chai/chai.js'; -import { - sharedTestSetup, - sharedTestTeardown, -} from './test_helpers/setup_teardown.js'; import { createRenderedBlock, defineMutatorBlocks, } from './test_helpers/block_definitions.js'; import {assertEventFired, assertEventNotFired} from './test_helpers/events.js'; +import { + sharedTestSetup, + sharedTestTeardown, +} from './test_helpers/setup_teardown.js'; suite('Mutator', function () { setup(function () { diff --git a/tests/mocha/procedure_map_test.js b/tests/mocha/procedure_map_test.js index 69166fdb7..eebd5a9f3 100644 --- a/tests/mocha/procedure_map_test.js +++ b/tests/mocha/procedure_map_test.js @@ -5,16 +5,11 @@ */ import {assert} from '../../node_modules/chai/chai.js'; +import {MockProcedureModel} from './test_helpers/procedures.js'; import { sharedTestSetup, sharedTestTeardown, } from './test_helpers/setup_teardown.js'; -import { - assertEventFiredShallow, - assertEventNotFired, - createChangeListenerSpy, -} from './test_helpers/events.js'; -import {MockProcedureModel} from './test_helpers/procedures.js'; suite('Procedure Map', function () { setup(function () { diff --git a/tests/mocha/registry_test.js b/tests/mocha/registry_test.js index c1bbf442a..6bcb8b5b0 100644 --- a/tests/mocha/registry_test.js +++ b/tests/mocha/registry_test.js @@ -5,11 +5,11 @@ */ import {assert} from '../../node_modules/chai/chai.js'; -import {assertWarnings} from './test_helpers/warnings.js'; import { sharedTestSetup, sharedTestTeardown, } from './test_helpers/setup_teardown.js'; +import {assertWarnings} from './test_helpers/warnings.js'; suite('Registry', function () { const TestClass = function () {}; diff --git a/tests/mocha/serializer_test.js b/tests/mocha/serializer_test.js index 557608311..0cc073e7b 100644 --- a/tests/mocha/serializer_test.js +++ b/tests/mocha/serializer_test.js @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../node_modules/chai/chai.js'; import * as Blockly from '../../build/src/core/blockly.js'; +import {assert} from '../../node_modules/chai/chai.js'; import { TestCase, TestSuite, diff --git a/tests/mocha/shortcut_registry_test.js b/tests/mocha/shortcut_registry_test.js index 4c64f1e69..cfd98a302 100644 --- a/tests/mocha/shortcut_registry_test.js +++ b/tests/mocha/shortcut_registry_test.js @@ -5,11 +5,11 @@ */ import {assert} from '../../node_modules/chai/chai.js'; -import {createKeyDownEvent} from './test_helpers/user_input.js'; import { sharedTestSetup, sharedTestTeardown, } from './test_helpers/setup_teardown.js'; +import {createKeyDownEvent} from './test_helpers/user_input.js'; suite('Keyboard Shortcut Registry Test', function () { setup(function () { diff --git a/tests/mocha/test_helpers/procedures.js b/tests/mocha/test_helpers/procedures.js index 82075ff27..ecf8c13ad 100644 --- a/tests/mocha/test_helpers/procedures.js +++ b/tests/mocha/test_helpers/procedures.js @@ -4,9 +4,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assert} from '../../../node_modules/chai/chai.js'; import {ConnectionType} from '../../../build/src/core/connection_type.js'; import {VariableModel} from '../../../build/src/core/variable_model.js'; +import {assert} from '../../../node_modules/chai/chai.js'; /** * Asserts that the procedure definition or call block has the expected var diff --git a/tests/mocha/test_helpers/workspace.js b/tests/mocha/test_helpers/workspace.js index e312e1188..40b2574fc 100644 --- a/tests/mocha/test_helpers/workspace.js +++ b/tests/mocha/test_helpers/workspace.js @@ -4,11 +4,11 @@ * SPDX-License-Identifier: Apache-2.0 */ +import * as eventUtils from '../../../build/src/core/events/utils.js'; import {assert} from '../../../node_modules/chai/chai.js'; +import {workspaceTeardown} from './setup_teardown.js'; import {assertVariableValues} from './variables.js'; import {assertWarnings} from './warnings.js'; -import * as eventUtils from '../../../build/src/core/events/utils.js'; -import {workspaceTeardown} from './setup_teardown.js'; export function testAWorkspace() { setup(function () { diff --git a/tests/mocha/theme_test.js b/tests/mocha/theme_test.js index 57aec45a2..e94bc5e50 100644 --- a/tests/mocha/theme_test.js +++ b/tests/mocha/theme_test.js @@ -4,9 +4,9 @@ * SPDX-License-Identifier: Apache-2.0 */ +import * as eventUtils from '../../build/src/core/events/utils.js'; import {assert} from '../../node_modules/chai/chai.js'; import {assertEventFired} from './test_helpers/events.js'; -import * as eventUtils from '../../build/src/core/events/utils.js'; import { sharedTestSetup, sharedTestTeardown, diff --git a/tests/mocha/trashcan_test.js b/tests/mocha/trashcan_test.js index 798f604ff..7ba624094 100644 --- a/tests/mocha/trashcan_test.js +++ b/tests/mocha/trashcan_test.js @@ -4,12 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ +import * as eventUtils from '../../build/src/core/events/utils.js'; import {assert} from '../../node_modules/chai/chai.js'; -import {assertEventFired, assertEventNotFired} from './test_helpers/events.js'; -import { - sharedTestSetup, - sharedTestTeardown, -} from './test_helpers/setup_teardown.js'; import { defineBasicBlockWithField, defineMutatorBlocks, @@ -17,7 +13,11 @@ import { defineStackBlock, defineStatementBlock, } from './test_helpers/block_definitions.js'; -import * as eventUtils from '../../build/src/core/events/utils.js'; +import {assertEventFired, assertEventNotFired} from './test_helpers/events.js'; +import { + sharedTestSetup, + sharedTestTeardown, +} from './test_helpers/setup_teardown.js'; import {simulateClick} from './test_helpers/user_input.js'; suite('Trashcan', function () { diff --git a/tests/mocha/variable_map_test.js b/tests/mocha/variable_map_test.js index c3d75e8a5..51f710c99 100644 --- a/tests/mocha/variable_map_test.js +++ b/tests/mocha/variable_map_test.js @@ -5,17 +5,17 @@ */ import {assert} from '../../node_modules/chai/chai.js'; -import {assertVariableValues} from './test_helpers/variables.js'; -import { - createGenUidStubWithReturns, - sharedTestSetup, - sharedTestTeardown, -} from './test_helpers/setup_teardown.js'; import { assertEventFired, assertEventNotFired, createChangeListenerSpy, } from './test_helpers/events.js'; +import { + createGenUidStubWithReturns, + sharedTestSetup, + sharedTestTeardown, +} from './test_helpers/setup_teardown.js'; +import {assertVariableValues} from './test_helpers/variables.js'; suite('Variable Map', function () { setup(function () { diff --git a/tests/mocha/workspace_comment_test.js b/tests/mocha/workspace_comment_test.js index ece1819e4..6e3fa9607 100644 --- a/tests/mocha/workspace_comment_test.js +++ b/tests/mocha/workspace_comment_test.js @@ -4,14 +4,14 @@ * SPDX-License-Identifier: Apache-2.0 */ +import { + assertEventFired, + createChangeListenerSpy, +} from './test_helpers/events.js'; import { sharedTestSetup, sharedTestTeardown, } from './test_helpers/setup_teardown.js'; -import { - createChangeListenerSpy, - assertEventFired, -} from './test_helpers/events.js'; suite('Workspace comment', function () { setup(function () { diff --git a/tests/mocha/workspace_svg_test.js b/tests/mocha/workspace_svg_test.js index 93f8f7158..7439ccc5d 100644 --- a/tests/mocha/workspace_svg_test.js +++ b/tests/mocha/workspace_svg_test.js @@ -4,19 +4,17 @@ * SPDX-License-Identifier: Apache-2.0 */ +import * as eventUtils from '../../build/src/core/events/utils.js'; import {assert} from '../../node_modules/chai/chai.js'; +import {defineStackBlock} from './test_helpers/block_definitions.js'; import { assertEventFired, assertEventNotFired, createChangeListenerSpy, } from './test_helpers/events.js'; -import {assertVariableValues} from './test_helpers/variables.js'; -import {defineStackBlock} from './test_helpers/block_definitions.js'; -import * as eventUtils from '../../build/src/core/events/utils.js'; import { sharedTestSetup, sharedTestTeardown, - workspaceTeardown, } from './test_helpers/setup_teardown.js'; import {testAWorkspace} from './test_helpers/workspace.js'; diff --git a/tests/mocha/workspace_test.js b/tests/mocha/workspace_test.js index 58829a77a..a517d796c 100644 --- a/tests/mocha/workspace_test.js +++ b/tests/mocha/workspace_test.js @@ -4,11 +4,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {assertVariableValues} from './test_helpers/variables.js'; import { sharedTestSetup, sharedTestTeardown, - workspaceTeardown, } from './test_helpers/setup_teardown.js'; import {testAWorkspace} from './test_helpers/workspace.js'; diff --git a/tests/mocha/zoom_controls_test.js b/tests/mocha/zoom_controls_test.js index dce8acfe6..8751420c8 100644 --- a/tests/mocha/zoom_controls_test.js +++ b/tests/mocha/zoom_controls_test.js @@ -4,9 +4,9 @@ * SPDX-License-Identifier: Apache-2.0 */ +import * as eventUtils from '../../build/src/core/events/utils.js'; import {assert} from '../../node_modules/chai/chai.js'; import {assertEventFired, assertEventNotFired} from './test_helpers/events.js'; -import * as eventUtils from '../../build/src/core/events/utils.js'; import { sharedTestSetup, sharedTestTeardown, diff --git a/tests/node/run_node_test.mjs b/tests/node/run_node_test.mjs index f7a01098f..ee95fd528 100644 --- a/tests/node/run_node_test.mjs +++ b/tests/node/run_node_test.mjs @@ -22,9 +22,9 @@ console.log(process.cwd()); // copied when packaged), resulting in require() looking for the // compressed bundles in the wrong place. -import {assert} from 'chai'; import * as Blockly from 'blockly-test'; import {javascriptGenerator} from 'blockly-test/javascript'; +import {assert} from 'chai'; const xmlText = '\n' + diff --git a/tests/typescript/src/generators.ts b/tests/typescript/src/generators.ts index 61506e11a..d1358335d 100644 --- a/tests/typescript/src/generators.ts +++ b/tests/typescript/src/generators.ts @@ -7,11 +7,11 @@ /* eslint-disable */ import * as Blockly from 'blockly-test/core'; -import {JavascriptGenerator} from 'blockly-test/javascript'; -import {PhpGenerator, phpGenerator, Order} from 'blockly-test/php'; -import {LuaGenerator} from 'blockly-test/lua'; -import {PythonGenerator} from 'blockly-test/python'; import {DartGenerator} from 'blockly-test/dart'; +import {JavascriptGenerator} from 'blockly-test/javascript'; +import {LuaGenerator} from 'blockly-test/lua'; +import {Order, PhpGenerator, phpGenerator} from 'blockly-test/php'; +import {PythonGenerator} from 'blockly-test/python'; JavascriptGenerator; PhpGenerator; diff --git a/tests/typescript/src/generators/php.ts b/tests/typescript/src/generators/php.ts index cb9241b43..5b66d3d71 100644 --- a/tests/typescript/src/generators/php.ts +++ b/tests/typescript/src/generators/php.ts @@ -10,7 +10,7 @@ import * as Blockly from 'blockly-test/core'; * Test: should be able to import a generator instance, class, and * Order enum. */ -import {phpGenerator, PhpGenerator, Order} from 'blockly-test/php'; +import {Order, phpGenerator, PhpGenerator} from 'blockly-test/php'; /** * Test: should be able to create a simple block generator function, diff --git a/tests/typescript/src/generators/python.ts b/tests/typescript/src/generators/python.ts index aa1c19c38..572e992e4 100644 --- a/tests/typescript/src/generators/python.ts +++ b/tests/typescript/src/generators/python.ts @@ -10,7 +10,7 @@ import * as Blockly from 'blockly-test/core'; * Test: should be able to import a generator instance, class, and * Order enum. */ -import {pythonGenerator, PythonGenerator, Order} from 'blockly-test/python'; +import {Order, pythonGenerator, PythonGenerator} from 'blockly-test/python'; /** * Test: should be able to create a simple block generator function, From 17e4f1c96665dd56ff33f5a45db809f7e2805e82 Mon Sep 17 00:00:00 2001 From: John Nesky Date: Thu, 15 Aug 2024 11:41:22 -0700 Subject: [PATCH 21/26] Fix: let workspace comment have delete cursor over trash. (#8477) --- core/comments/comment_view.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/core/comments/comment_view.ts b/core/comments/comment_view.ts index bf615163c..72f72fa38 100644 --- a/core/comments/comment_view.ts +++ b/core/comments/comment_view.ts @@ -827,7 +827,6 @@ css.register(` } .blocklyCommentTopbarBackground { - cursor: grab; fill: var(--commentBorderColour); height: 24px; } From 806f8f95d27a2bb0c2358e6c3f262ee274748dc1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2024 08:59:07 -0700 Subject: [PATCH 22/26] chore(deps): bump typescript from 5.5.3 to 5.5.4 (#8535) Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.5.3 to 5.5.4. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml) - [Commits](https://github.com/Microsoft/TypeScript/compare/v5.5.3...v5.5.4) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 788993d05..fa88a3f6f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8853,9 +8853,9 @@ "dev": true }, "node_modules/typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true, "bin": { "tsc": "bin/tsc", From 7ccdcc5cef9de3745597ec3e1deef6495d5e148e Mon Sep 17 00:00:00 2001 From: Christopher Allen Date: Tue, 20 Aug 2024 08:36:33 +0100 Subject: [PATCH 23/26] refactor(events): introduce `EventType` enum in separate module (#8530) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor(events): Use "export ... from" where applicable * refactor(events): Introduce EventType enum Introduce an enum for the event .type values. We can't actually use it as the type of the .type property on Abstract events, because we want to allow developers to add their own custom event types inheriting from this type, but at least this way we can be reasonably sure that all of our own event subclasses have distinct .type values—plus consistent use of enum syntax (EventType.TYPE_NAME) is probably good for readability overall. Put it in a separate module from the rest of events/utils.ts because it would be helpful if event utils could use event instanceof SomeEventType for type narrowing but but at the moment most events are in modules that depend on events/utils.ts for their .type constant, and although circular ESM dependencies should work in principle there are various restrictions and this particular circularity causes issues at the moment. A few of the event classes also depend on utils.ts for fire() or other functions, which will be harder to deal with, but at least this commit is win in terms of reducing the complexity of our dependencies, making most of the Abstract event subclass module dependent on type.ts, which has no imports, rather than on utils.ts which has multiple imports. --- core/block.ts | 21 +- core/block_svg.ts | 7 +- core/bump_objects.ts | 15 +- core/clipboard/block_paster.ts | 3 +- core/clipboard/workspace_comment_paster.ts | 3 +- core/comments/workspace_comment.ts | 13 +- core/common.ts | 3 +- core/connection.ts | 5 +- core/contextmenu.ts | 3 +- core/dragging/block_drag_strategy.ts | 7 +- core/dragging/comment_drag_strategy.ts | 7 +- core/events/events.ts | 223 +++++++----------- core/events/events_abstract.ts | 6 +- core/events/events_block_change.ts | 5 +- core/events/events_block_create.ts | 5 +- core/events/events_block_delete.ts | 5 +- core/events/events_block_drag.ts | 6 +- .../events_block_field_intermediate_change.ts | 6 +- core/events/events_block_move.ts | 6 +- core/events/events_bubble_open.ts | 7 +- core/events/events_click.ts | 7 +- core/events/events_comment_base.ts | 6 +- core/events/events_comment_change.ts | 10 +- core/events/events_comment_collapse.ts | 6 +- core/events/events_comment_create.ts | 10 +- core/events/events_comment_delete.ts | 10 +- core/events/events_comment_drag.ts | 6 +- core/events/events_comment_move.ts | 6 +- core/events/events_comment_resize.ts | 10 +- core/events/events_marker_move.ts | 6 +- core/events/events_selected.ts | 6 +- core/events/events_theme_change.ts | 6 +- core/events/events_toolbox_item_select.ts | 6 +- core/events/events_trashcan_open.ts | 6 +- core/events/events_var_create.ts | 6 +- core/events/events_var_delete.ts | 6 +- core/events/events_var_rename.ts | 6 +- core/events/events_viewport.ts | 6 +- core/events/type.ts | 85 +++++++ core/events/utils.ts | 184 ++------------- core/events/workspace_events.ts | 6 +- core/field.ts | 3 +- core/field_input.ts | 7 +- core/flyout_base.ts | 5 +- core/gesture.ts | 5 +- core/icons/comment_icon.ts | 7 +- core/icons/mutator_icon.ts | 9 +- core/icons/warning_icon.ts | 3 +- core/procedures.ts | 13 +- core/renderers/common/marker_svg.ts | 3 +- core/serialization/blocks.ts | 7 +- core/serialization/workspaces.ts | 3 +- core/toolbox/toolbox.ts | 3 +- core/trashcan.ts | 7 +- core/variable_map.ts | 11 +- core/workspace_svg.ts | 5 +- core/xml.ts | 9 +- core/zoom_controls.ts | 3 +- tests/mocha/block_test.js | 5 +- tests/mocha/comment_test.js | 10 +- tests/mocha/event_block_create_test.js | 4 +- tests/mocha/gesture_test.js | 6 +- tests/mocha/jso_deserialization_test.js | 26 +- tests/mocha/theme_test.js | 4 +- tests/mocha/trashcan_test.js | 13 +- tests/mocha/workspace_svg_test.js | 8 +- tests/mocha/zoom_controls_test.js | 14 +- 67 files changed, 419 insertions(+), 530 deletions(-) create mode 100644 core/events/type.ts diff --git a/core/block.ts b/core/block.ts index 7875ac6a4..189f67781 100644 --- a/core/block.ts +++ b/core/block.ts @@ -26,6 +26,7 @@ import * as constants from './constants.js'; import type {Abstract} from './events/events_abstract.js'; import type {BlockChange} from './events/events_block_change.js'; import type {BlockMove} from './events/events_block_move.js'; +import {EventType} from './events/type.js'; import * as eventUtils from './events/utils.js'; import * as Extensions from './extensions.js'; import type {Field} from './field.js'; @@ -304,7 +305,7 @@ export class Block implements IASTNodeLocation { // Fire a create event. if (eventUtils.isEnabled()) { - eventUtils.fire(new (eventUtils.get(eventUtils.BLOCK_CREATE))(this)); + eventUtils.fire(new (eventUtils.get(EventType.BLOCK_CREATE))(this)); } } finally { eventUtils.setGroup(existingGroup); @@ -339,7 +340,7 @@ export class Block implements IASTNodeLocation { this.unplug(healStack); if (eventUtils.isEnabled()) { // Constructing the delete event is costly. Only perform if necessary. - eventUtils.fire(new (eventUtils.get(eventUtils.BLOCK_DELETE))(this)); + eventUtils.fire(new (eventUtils.get(EventType.BLOCK_DELETE))(this)); } this.workspace.removeTopBlock(this); this.disposeInternal(); @@ -1329,7 +1330,7 @@ export class Block implements IASTNodeLocation { setInputsInline(newBoolean: boolean) { if (this.inputsInline !== newBoolean) { eventUtils.fire( - new (eventUtils.get(eventUtils.BLOCK_CHANGE))( + new (eventUtils.get(EventType.BLOCK_CHANGE))( this, 'inline', null, @@ -1491,7 +1492,7 @@ export class Block implements IASTNodeLocation { } else { this.disabledReasons.delete(reason); } - const blockChangeEvent = new (eventUtils.get(eventUtils.BLOCK_CHANGE))( + const blockChangeEvent = new (eventUtils.get(EventType.BLOCK_CHANGE))( this, 'disabled', /* name= */ null, @@ -1559,7 +1560,7 @@ export class Block implements IASTNodeLocation { setCollapsed(collapsed: boolean) { if (this.collapsed_ !== collapsed) { eventUtils.fire( - new (eventUtils.get(eventUtils.BLOCK_CHANGE))( + new (eventUtils.get(EventType.BLOCK_CHANGE))( this, 'collapsed', null, @@ -2358,7 +2359,7 @@ export class Block implements IASTNodeLocation { } eventUtils.fire( - new (eventUtils.get(eventUtils.BLOCK_CHANGE))( + new (eventUtils.get(EventType.BLOCK_CHANGE))( this, 'comment', null, @@ -2458,12 +2459,8 @@ export class Block implements IASTNodeLocation { if (this.parentBlock_) { throw Error('Block has parent'); } - const event = new (eventUtils.get(eventUtils.BLOCK_MOVE))( - this, - ) as BlockMove; - if (reason) { - event.setReason(reason); - } + const event = new (eventUtils.get(EventType.BLOCK_MOVE))(this) as BlockMove; + if (reason) event.setReason(reason); this.xy_.translate(dx, dy); event.recordNew(); eventUtils.fire(event); diff --git a/core/block_svg.ts b/core/block_svg.ts index e3a60315e..db75acde2 100644 --- a/core/block_svg.ts +++ b/core/block_svg.ts @@ -32,6 +32,7 @@ import { } from './contextmenu_registry.js'; import {BlockDragStrategy} from './dragging/block_drag_strategy.js'; import type {BlockMove} from './events/events_block_move.js'; +import {EventType} from './events/type.js'; import * as eventUtils from './events/utils.js'; import type {Field} from './field.js'; import {FieldLabel} from './field_label.js'; @@ -377,10 +378,8 @@ export class BlockSvg const eventsEnabled = eventUtils.isEnabled(); let event: BlockMove | null = null; if (eventsEnabled) { - event = new (eventUtils.get(eventUtils.BLOCK_MOVE)!)(this) as BlockMove; - if (reason) { - event.setReason(reason); - } + event = new (eventUtils.get(EventType.BLOCK_MOVE)!)(this) as BlockMove; + if (reason) event.setReason(reason); } const delta = new Coordinate(dx, dy); diff --git a/core/bump_objects.ts b/core/bump_objects.ts index f9495b3d8..7fe1e3851 100644 --- a/core/bump_objects.ts +++ b/core/bump_objects.ts @@ -14,6 +14,7 @@ import type {CommentCreate} from './events/events_comment_create.js'; import type {CommentMove} from './events/events_comment_move.js'; import type {CommentResize} from './events/events_comment_resize.js'; import type {ViewportChange} from './events/events_viewport.js'; +import {BUMP_EVENTS, EventType} from './events/type.js'; import * as eventUtils from './events/utils.js'; import type {IBoundedElement} from './interfaces/i_bounded_element.js'; import type {ContainerRegion} from './metrics_manager.js'; @@ -99,7 +100,7 @@ export function bumpIntoBoundsHandler( return; } - if (eventUtils.BUMP_EVENTS.includes(e.type ?? '')) { + if (BUMP_EVENTS.includes(e.type ?? '')) { const scrollMetricsInWsCoords = metricsManager.getScrollMetrics(true); // Triggered by move/create event @@ -127,7 +128,7 @@ export function bumpIntoBoundsHandler( ); } eventUtils.setGroup(existingGroup); - } else if (e.type === eventUtils.VIEWPORT_CHANGE) { + } else if (e.type === EventType.VIEWPORT_CHANGE) { const viewportEvent = e as ViewportChange; if ( viewportEvent.scale && @@ -155,16 +156,16 @@ function extractObjectFromEvent( ): IBoundedElement | null { let object = null; switch (e.type) { - case eventUtils.BLOCK_CREATE: - case eventUtils.BLOCK_MOVE: + case EventType.BLOCK_CREATE: + case EventType.BLOCK_MOVE: object = workspace.getBlockById((e as BlockCreate | BlockMove).blockId!); if (object) { object = object.getRootBlock(); } break; - case eventUtils.COMMENT_CREATE: - case eventUtils.COMMENT_MOVE: - case eventUtils.COMMENT_RESIZE: + case EventType.COMMENT_CREATE: + case EventType.COMMENT_MOVE: + case EventType.COMMENT_RESIZE: object = workspace.getCommentById( (e as CommentCreate | CommentMove | CommentResize).commentId!, ) as RenderedWorkspaceComment; diff --git a/core/clipboard/block_paster.ts b/core/clipboard/block_paster.ts index 04c55c5b0..08ff220ee 100644 --- a/core/clipboard/block_paster.ts +++ b/core/clipboard/block_paster.ts @@ -7,6 +7,7 @@ import {BlockSvg} from '../block_svg.js'; import * as common from '../common.js'; import {config} from '../config.js'; +import {EventType} from '../events/type.js'; import * as eventUtils from '../events/utils.js'; import {ICopyData} from '../interfaces/i_copyable.js'; import {IPaster} from '../interfaces/i_paster.js'; @@ -52,7 +53,7 @@ export class BlockPaster implements IPaster { if (!block) return block; if (eventUtils.isEnabled() && !block.isShadow()) { - eventUtils.fire(new (eventUtils.get(eventUtils.BLOCK_CREATE))(block)); + eventUtils.fire(new (eventUtils.get(EventType.BLOCK_CREATE))(block)); } common.setSelected(block); return block; diff --git a/core/clipboard/workspace_comment_paster.ts b/core/clipboard/workspace_comment_paster.ts index 173949a2b..fdfbf0a84 100644 --- a/core/clipboard/workspace_comment_paster.ts +++ b/core/clipboard/workspace_comment_paster.ts @@ -6,6 +6,7 @@ import {RenderedWorkspaceComment} from '../comments/rendered_workspace_comment.js'; import * as common from '../common.js'; +import {EventType} from '../events/type.js'; import * as eventUtils from '../events/utils.js'; import {ICopyData} from '../interfaces/i_copyable.js'; import {IPaster} from '../interfaces/i_paster.js'; @@ -46,7 +47,7 @@ export class WorkspaceCommentPaster if (!comment) return null; if (eventUtils.isEnabled()) { - eventUtils.fire(new (eventUtils.get(eventUtils.COMMENT_CREATE))(comment)); + eventUtils.fire(new (eventUtils.get(EventType.COMMENT_CREATE))(comment)); } common.setSelected(comment); return comment; diff --git a/core/comments/workspace_comment.ts b/core/comments/workspace_comment.ts index a659bc8d9..bda77f28c 100644 --- a/core/comments/workspace_comment.ts +++ b/core/comments/workspace_comment.ts @@ -6,6 +6,7 @@ import {CommentMove} from '../events/events_comment_move.js'; import {CommentResize} from '../events/events_comment_resize.js'; +import {EventType} from '../events/type.js'; import * as eventUtils from '../events/utils.js'; import {Coordinate} from '../utils/coordinate.js'; import * as idGenerator from '../utils/idgenerator.js'; @@ -63,13 +64,13 @@ export class WorkspaceComment { private fireCreateEvent() { if (eventUtils.isEnabled()) { - eventUtils.fire(new (eventUtils.get(eventUtils.COMMENT_CREATE))(this)); + eventUtils.fire(new (eventUtils.get(EventType.COMMENT_CREATE))(this)); } } private fireDeleteEvent() { if (eventUtils.isEnabled()) { - eventUtils.fire(new (eventUtils.get(eventUtils.COMMENT_DELETE))(this)); + eventUtils.fire(new (eventUtils.get(EventType.COMMENT_DELETE))(this)); } } @@ -77,7 +78,7 @@ export class WorkspaceComment { private fireChangeEvent(oldText: string, newText: string) { if (eventUtils.isEnabled()) { eventUtils.fire( - new (eventUtils.get(eventUtils.COMMENT_CHANGE))(this, oldText, newText), + new (eventUtils.get(EventType.COMMENT_CHANGE))(this, oldText, newText), ); } } @@ -86,7 +87,7 @@ export class WorkspaceComment { private fireCollapseEvent(newCollapsed: boolean) { if (eventUtils.isEnabled()) { eventUtils.fire( - new (eventUtils.get(eventUtils.COMMENT_COLLAPSE))(this, newCollapsed), + new (eventUtils.get(EventType.COMMENT_COLLAPSE))(this, newCollapsed), ); } } @@ -105,7 +106,7 @@ export class WorkspaceComment { /** Sets the comment's size in workspace units. */ setSize(size: Size) { - const event = new (eventUtils.get(eventUtils.COMMENT_RESIZE))( + const event = new (eventUtils.get(EventType.COMMENT_RESIZE))( this, ) as CommentResize; @@ -196,7 +197,7 @@ export class WorkspaceComment { /** Moves the comment to the given location in workspace coordinates. */ moveTo(location: Coordinate, reason?: string[] | undefined) { - const event = new (eventUtils.get(eventUtils.COMMENT_MOVE))( + const event = new (eventUtils.get(EventType.COMMENT_MOVE))( this, ) as CommentMove; if (reason) event.setReason(reason); diff --git a/core/common.ts b/core/common.ts index fcd27b00d..bc31bf17e 100644 --- a/core/common.ts +++ b/core/common.ts @@ -10,6 +10,7 @@ import type {Block} from './block.js'; import {ISelectable} from './blockly.js'; import {BlockDefinition, Blocks} from './blocks.js'; import type {Connection} from './connection.js'; +import {EventType} from './events/type.js'; import * as eventUtils from './events/utils.js'; import type {Workspace} from './workspace.js'; import type {WorkspaceSvg} from './workspace_svg.js'; @@ -107,7 +108,7 @@ export function getSelected(): ISelectable | null { export function setSelected(newSelection: ISelectable | null) { if (selected === newSelection) return; - const event = new (eventUtils.get(eventUtils.SELECTED))( + const event = new (eventUtils.get(EventType.SELECTED))( selected?.id ?? null, newSelection?.id ?? null, newSelection?.workspace.id ?? selected?.workspace.id ?? '', diff --git a/core/connection.ts b/core/connection.ts index 1dd8dc1ea..93caf5bcf 100644 --- a/core/connection.ts +++ b/core/connection.ts @@ -14,6 +14,7 @@ import type {Block} from './block.js'; import {ConnectionType} from './connection_type.js'; import type {BlockMove} from './events/events_block_move.js'; +import {EventType} from './events/type.js'; import * as eventUtils from './events/utils.js'; import type {Input} from './inputs/input.js'; import type {IASTNodeLocationWithBlock} from './interfaces/i_ast_node_location_with_block.js'; @@ -114,7 +115,7 @@ export class Connection implements IASTNodeLocationWithBlock { // Connect the new connection to the parent. let event; if (eventUtils.isEnabled()) { - event = new (eventUtils.get(eventUtils.BLOCK_MOVE))( + event = new (eventUtils.get(EventType.BLOCK_MOVE))( childBlock, ) as BlockMove; event.setReason(['connect']); @@ -281,7 +282,7 @@ export class Connection implements IASTNodeLocationWithBlock { let event; if (eventUtils.isEnabled()) { - event = new (eventUtils.get(eventUtils.BLOCK_MOVE))( + event = new (eventUtils.get(EventType.BLOCK_MOVE))( childConnection.getSourceBlock(), ) as BlockMove; event.setReason(['disconnect']); diff --git a/core/contextmenu.ts b/core/contextmenu.ts index 8f4626358..b49dcba51 100644 --- a/core/contextmenu.ts +++ b/core/contextmenu.ts @@ -15,6 +15,7 @@ import type { ContextMenuOption, LegacyContextMenuOption, } from './contextmenu_registry.js'; +import {EventType} from './events/type.js'; import * as eventUtils from './events/utils.js'; import {Menu} from './menu.js'; import {MenuItem} from './menuitem.js'; @@ -260,7 +261,7 @@ export function callbackFactory( eventUtils.enable(); } if (eventUtils.isEnabled() && !newBlock.isShadow()) { - eventUtils.fire(new (eventUtils.get(eventUtils.BLOCK_CREATE))(newBlock)); + eventUtils.fire(new (eventUtils.get(EventType.BLOCK_CREATE))(newBlock)); } common.setSelected(newBlock); return newBlock; diff --git a/core/dragging/block_drag_strategy.ts b/core/dragging/block_drag_strategy.ts index 968de3902..c3be97da6 100644 --- a/core/dragging/block_drag_strategy.ts +++ b/core/dragging/block_drag_strategy.ts @@ -12,6 +12,7 @@ import {config} from '../config.js'; import {Connection} from '../connection.js'; import {ConnectionType} from '../connection_type.js'; import type {BlockMove} from '../events/events_block_move.js'; +import {EventType} from '../events/type.js'; import * as eventUtils from '../events/utils.js'; import {IConnectionPreviewer} from '../interfaces/i_connection_previewer.js'; import {IDragStrategy} from '../interfaces/i_draggable.js'; @@ -177,7 +178,7 @@ export class BlockDragStrategy implements IDragStrategy { /** Fire a UI event at the start of a block drag. */ private fireDragStartEvent() { - const event = new (eventUtils.get(eventUtils.BLOCK_DRAG))( + const event = new (eventUtils.get(EventType.BLOCK_DRAG))( this.block, true, this.block.getDescendants(false), @@ -187,7 +188,7 @@ export class BlockDragStrategy implements IDragStrategy { /** Fire a UI event at the end of a block drag. */ private fireDragEndEvent() { - const event = new (eventUtils.get(eventUtils.BLOCK_DRAG))( + const event = new (eventUtils.get(EventType.BLOCK_DRAG))( this.block, false, this.block.getDescendants(false), @@ -198,7 +199,7 @@ export class BlockDragStrategy implements IDragStrategy { /** Fire a move event at the end of a block drag. */ private fireMoveEvent() { if (this.block.isDeadOrDying()) return; - const event = new (eventUtils.get(eventUtils.BLOCK_MOVE))( + const event = new (eventUtils.get(EventType.BLOCK_MOVE))( this.block, ) as BlockMove; event.setReason(['drag']); diff --git a/core/dragging/comment_drag_strategy.ts b/core/dragging/comment_drag_strategy.ts index 4053638c2..bc48c0e6c 100644 --- a/core/dragging/comment_drag_strategy.ts +++ b/core/dragging/comment_drag_strategy.ts @@ -6,6 +6,7 @@ import {RenderedWorkspaceComment} from '../comments.js'; import {CommentMove} from '../events/events_comment_move.js'; +import {EventType} from '../events/type.js'; import * as eventUtils from '../events/utils.js'; import {IDragStrategy} from '../interfaces/i_draggable.js'; import * as layers from '../layers.js'; @@ -63,7 +64,7 @@ export class CommentDragStrategy implements IDragStrategy { /** Fire a UI event at the start of a comment drag. */ private fireDragStartEvent() { - const event = new (eventUtils.get(eventUtils.COMMENT_DRAG))( + const event = new (eventUtils.get(EventType.COMMENT_DRAG))( this.comment, true, ); @@ -72,7 +73,7 @@ export class CommentDragStrategy implements IDragStrategy { /** Fire a UI event at the end of a comment drag. */ private fireDragEndEvent() { - const event = new (eventUtils.get(eventUtils.COMMENT_DRAG))( + const event = new (eventUtils.get(EventType.COMMENT_DRAG))( this.comment, false, ); @@ -82,7 +83,7 @@ export class CommentDragStrategy implements IDragStrategy { /** Fire a move event at the end of a comment drag. */ private fireMoveEvent() { if (this.comment.isDeadOrDying()) return; - const event = new (eventUtils.get(eventUtils.COMMENT_MOVE))( + const event = new (eventUtils.get(EventType.COMMENT_MOVE))( this.comment, ) as CommentMove; event.setReason(['drag']); diff --git a/core/events/events.ts b/core/events/events.ts index 97dc8cba4..868995653 100644 --- a/core/events/events.ts +++ b/core/events/events.ts @@ -6,156 +6,103 @@ // Former goog.module ID: Blockly.Events -import {Abstract, AbstractEventJson} from './events_abstract.js'; -import {BlockBase, BlockBaseJson} from './events_block_base.js'; -import {BlockChange, BlockChangeJson} from './events_block_change.js'; -import {BlockCreate, BlockCreateJson} from './events_block_create.js'; -import {BlockDelete, BlockDeleteJson} from './events_block_delete.js'; -import {BlockDrag, BlockDragJson} from './events_block_drag.js'; -import { +import {EventType} from './type.js'; + +// Events. +export {Abstract, AbstractEventJson} from './events_abstract.js'; +export {BlockBase, BlockBaseJson} from './events_block_base.js'; +export {BlockChange, BlockChangeJson} from './events_block_change.js'; +export {BlockCreate, BlockCreateJson} from './events_block_create.js'; +export {BlockDelete, BlockDeleteJson} from './events_block_delete.js'; +export {BlockDrag, BlockDragJson} from './events_block_drag.js'; +export { BlockFieldIntermediateChange, BlockFieldIntermediateChangeJson, } from './events_block_field_intermediate_change.js'; -import {BlockMove, BlockMoveJson} from './events_block_move.js'; -import {BubbleOpen, BubbleOpenJson, BubbleType} from './events_bubble_open.js'; -import {Click, ClickJson, ClickTarget} from './events_click.js'; -import {CommentBase, CommentBaseJson} from './events_comment_base.js'; -import {CommentChange, CommentChangeJson} from './events_comment_change.js'; -import { +export {BlockMove, BlockMoveJson} from './events_block_move.js'; +export {BubbleOpen, BubbleOpenJson, BubbleType} from './events_bubble_open.js'; +export {Click, ClickJson, ClickTarget} from './events_click.js'; +export {CommentBase, CommentBaseJson} from './events_comment_base.js'; +export {CommentChange, CommentChangeJson} from './events_comment_change.js'; +export { CommentCollapse, CommentCollapseJson, } from './events_comment_collapse.js'; -import {CommentCreate, CommentCreateJson} from './events_comment_create.js'; -import {CommentDelete} from './events_comment_delete.js'; -import {CommentDrag, CommentDragJson} from './events_comment_drag.js'; -import {CommentMove, CommentMoveJson} from './events_comment_move.js'; -import {CommentResize, CommentResizeJson} from './events_comment_resize.js'; -import {MarkerMove, MarkerMoveJson} from './events_marker_move.js'; -import {Selected, SelectedJson} from './events_selected.js'; -import {ThemeChange, ThemeChangeJson} from './events_theme_change.js'; -import { +export {CommentCreate, CommentCreateJson} from './events_comment_create.js'; +export {CommentDelete} from './events_comment_delete.js'; +export {CommentDrag, CommentDragJson} from './events_comment_drag.js'; +export {CommentMove, CommentMoveJson} from './events_comment_move.js'; +export {CommentResize, CommentResizeJson} from './events_comment_resize.js'; +export {MarkerMove, MarkerMoveJson} from './events_marker_move.js'; +export {Selected, SelectedJson} from './events_selected.js'; +export {ThemeChange, ThemeChangeJson} from './events_theme_change.js'; +export { ToolboxItemSelect, ToolboxItemSelectJson, } from './events_toolbox_item_select.js'; -import {TrashcanOpen, TrashcanOpenJson} from './events_trashcan_open.js'; -import {UiBase} from './events_ui_base.js'; -import {VarBase, VarBaseJson} from './events_var_base.js'; -import {VarCreate, VarCreateJson} from './events_var_create.js'; -import {VarDelete, VarDeleteJson} from './events_var_delete.js'; -import {VarRename, VarRenameJson} from './events_var_rename.js'; -import {ViewportChange, ViewportChangeJson} from './events_viewport.js'; -import * as eventUtils from './utils.js'; -import {FinishedLoading} from './workspace_events.js'; +export {TrashcanOpen, TrashcanOpenJson} from './events_trashcan_open.js'; +export {UiBase} from './events_ui_base.js'; +export {VarBase, VarBaseJson} from './events_var_base.js'; +export {VarCreate, VarCreateJson} from './events_var_create.js'; +export {VarDelete, VarDeleteJson} from './events_var_delete.js'; +export {VarRename, VarRenameJson} from './events_var_rename.js'; +export {ViewportChange, ViewportChangeJson} from './events_viewport.js'; +export {FinishedLoading} from './workspace_events.js'; -// Events. -export { - Abstract, - AbstractEventJson, - BlockBase, - BlockBaseJson, - BlockChange, - BlockChangeJson, - BlockCreate, - BlockCreateJson, - BlockDelete, - BlockDeleteJson, - BlockDrag, - BlockDragJson, - BlockFieldIntermediateChange, - BlockFieldIntermediateChangeJson, - BlockMove, - BlockMoveJson, - BubbleOpen, - BubbleOpenJson, - BubbleType, - Click, - ClickJson, - ClickTarget, - CommentBase, - CommentBaseJson, - CommentChange, - CommentChangeJson, - CommentCollapse, - CommentCollapseJson, - CommentCreate, - CommentCreateJson, - CommentDelete, - CommentDrag, - CommentDragJson, - CommentMove, - CommentMoveJson, - CommentResize, - CommentResizeJson, - FinishedLoading, - MarkerMove, - MarkerMoveJson, - Selected, - SelectedJson, - ThemeChange, - ThemeChangeJson, - ToolboxItemSelect, - ToolboxItemSelectJson, - TrashcanOpen, - TrashcanOpenJson, - UiBase, - VarBase, - VarBaseJson, - VarCreate, - VarCreateJson, - VarDelete, - VarDeleteJson, - VarRename, - VarRenameJson, - ViewportChange, - ViewportChangeJson, -}; +export type {BumpEvent} from './utils.js'; // Event types. -export const BLOCK_CHANGE = eventUtils.BLOCK_CHANGE; -export const BLOCK_CREATE = eventUtils.BLOCK_CREATE; -export const BLOCK_DELETE = eventUtils.BLOCK_DELETE; -export const BLOCK_DRAG = eventUtils.BLOCK_DRAG; -export const BLOCK_MOVE = eventUtils.BLOCK_MOVE; +export const BLOCK_CHANGE = EventType.BLOCK_CHANGE; +export const BLOCK_CREATE = EventType.BLOCK_CREATE; +export const BLOCK_DELETE = EventType.BLOCK_DELETE; +export const BLOCK_DRAG = EventType.BLOCK_DRAG; +export const BLOCK_MOVE = EventType.BLOCK_MOVE; export const BLOCK_FIELD_INTERMEDIATE_CHANGE = - eventUtils.BLOCK_FIELD_INTERMEDIATE_CHANGE; -export const BUBBLE_OPEN = eventUtils.BUBBLE_OPEN; -export type BumpEvent = eventUtils.BumpEvent; -export const BUMP_EVENTS = eventUtils.BUMP_EVENTS; -export const CHANGE = eventUtils.CHANGE; -export const CLICK = eventUtils.CLICK; -export const COMMENT_CHANGE = eventUtils.COMMENT_CHANGE; -export const COMMENT_CREATE = eventUtils.COMMENT_CREATE; -export const COMMENT_DELETE = eventUtils.COMMENT_DELETE; -export const COMMENT_MOVE = eventUtils.COMMENT_MOVE; -export const COMMENT_RESIZE = eventUtils.COMMENT_RESIZE; -export const COMMENT_DRAG = eventUtils.COMMENT_DRAG; -export const CREATE = eventUtils.CREATE; -export const DELETE = eventUtils.DELETE; -export const FINISHED_LOADING = eventUtils.FINISHED_LOADING; -export const MARKER_MOVE = eventUtils.MARKER_MOVE; -export const MOVE = eventUtils.MOVE; -export const SELECTED = eventUtils.SELECTED; -export const THEME_CHANGE = eventUtils.THEME_CHANGE; -export const TOOLBOX_ITEM_SELECT = eventUtils.TOOLBOX_ITEM_SELECT; -export const TRASHCAN_OPEN = eventUtils.TRASHCAN_OPEN; -export const UI = eventUtils.UI; -export const VAR_CREATE = eventUtils.VAR_CREATE; -export const VAR_DELETE = eventUtils.VAR_DELETE; -export const VAR_RENAME = eventUtils.VAR_RENAME; -export const VIEWPORT_CHANGE = eventUtils.VIEWPORT_CHANGE; + EventType.BLOCK_FIELD_INTERMEDIATE_CHANGE; +export const BUBBLE_OPEN = EventType.BUBBLE_OPEN; +/** @deprecated Use BLOCK_CHANGE instead */ +export const CHANGE = EventType.BLOCK_CHANGE; +export const CLICK = EventType.CLICK; +export const COMMENT_CHANGE = EventType.COMMENT_CHANGE; +export const COMMENT_CREATE = EventType.COMMENT_CREATE; +export const COMMENT_DELETE = EventType.COMMENT_DELETE; +export const COMMENT_MOVE = EventType.COMMENT_MOVE; +export const COMMENT_RESIZE = EventType.COMMENT_RESIZE; +export const COMMENT_DRAG = EventType.COMMENT_DRAG; +/** @deprecated Use BLOCK_CREATE instead */ +export const CREATE = EventType.BLOCK_CREATE; +/** @deprecated Use BLOCK_DELETE instead */ +export const DELETE = EventType.BLOCK_DELETE; +export const FINISHED_LOADING = EventType.FINISHED_LOADING; +export const MARKER_MOVE = EventType.MARKER_MOVE; +/** @deprecated Use BLOCK_MOVE instead */ +export const MOVE = EventType.BLOCK_MOVE; +export const SELECTED = EventType.SELECTED; +export const THEME_CHANGE = EventType.THEME_CHANGE; +export const TOOLBOX_ITEM_SELECT = EventType.TOOLBOX_ITEM_SELECT; +export const TRASHCAN_OPEN = EventType.TRASHCAN_OPEN; +export const UI = EventType.UI; +export const VAR_CREATE = EventType.VAR_CREATE; +export const VAR_DELETE = EventType.VAR_DELETE; +export const VAR_RENAME = EventType.VAR_RENAME; +export const VIEWPORT_CHANGE = EventType.VIEWPORT_CHANGE; + +export {BUMP_EVENTS} from './type.js'; // Event utils. -export const clearPendingUndo = eventUtils.clearPendingUndo; -export const disable = eventUtils.disable; -export const enable = eventUtils.enable; -export const filter = eventUtils.filter; -export const fire = eventUtils.fire; -export const fromJson = eventUtils.fromJson; -export const getDescendantIds = eventUtils.getDescendantIds; -export const get = eventUtils.get; -export const getGroup = eventUtils.getGroup; -export const getRecordUndo = eventUtils.getRecordUndo; -export const isEnabled = eventUtils.isEnabled; -export const setGroup = eventUtils.setGroup; -export const setRecordUndo = eventUtils.setRecordUndo; -export const disableOrphans = eventUtils.disableOrphans; +export { + clearPendingUndo, + disable, + disableOrphans, + enable, + filter, + fire, + fromJson, + get, + getDescendantIds, + getGroup, + getRecordUndo, + isEnabled, + setGroup, + setRecordUndo, +} from './utils.js'; diff --git a/core/events/events_abstract.ts b/core/events/events_abstract.ts index b63c742b5..e5a77dc7d 100644 --- a/core/events/events_abstract.ts +++ b/core/events/events_abstract.ts @@ -14,7 +14,7 @@ import * as common from '../common.js'; import type {Workspace} from '../workspace.js'; -import * as eventUtils from './utils.js'; +import {getGroup, getRecordUndo} from './utils.js'; /** * Abstract class for an event. @@ -47,8 +47,8 @@ export abstract class Abstract { type = ''; constructor() { - this.group = eventUtils.getGroup(); - this.recordUndo = eventUtils.getRecordUndo(); + this.group = getGroup(); + this.recordUndo = getRecordUndo(); } /** diff --git a/core/events/events_block_change.ts b/core/events/events_block_change.ts index 103dc3427..e71eabb17 100644 --- a/core/events/events_block_change.ts +++ b/core/events/events_block_change.ts @@ -21,6 +21,7 @@ import * as utilsXml from '../utils/xml.js'; import {Workspace} from '../workspace.js'; import * as Xml from '../xml.js'; import {BlockBase, BlockBaseJson} from './events_block_base.js'; +import {EventType} from './type.js'; import * as eventUtils from './utils.js'; /** @@ -28,7 +29,7 @@ import * as eventUtils from './utils.js'; * field values, comments, etc). */ export class BlockChange extends BlockBase { - override type = eventUtils.BLOCK_CHANGE; + override type = EventType.BLOCK_CHANGE; /** * The element that changed; one of 'field', 'comment', 'collapsed', * 'disabled', 'inline', or 'mutation' @@ -255,4 +256,4 @@ export interface BlockChangeJson extends BlockBaseJson { disabledReason?: string; } -registry.register(registry.Type.EVENT, eventUtils.CHANGE, BlockChange); +registry.register(registry.Type.EVENT, EventType.BLOCK_CHANGE, BlockChange); diff --git a/core/events/events_block_create.ts b/core/events/events_block_create.ts index 6f14a8117..ca6979454 100644 --- a/core/events/events_block_create.ts +++ b/core/events/events_block_create.ts @@ -18,6 +18,7 @@ import * as utilsXml from '../utils/xml.js'; import {Workspace} from '../workspace.js'; import * as Xml from '../xml.js'; import {BlockBase, BlockBaseJson} from './events_block_base.js'; +import {EventType} from './type.js'; import * as eventUtils from './utils.js'; /** @@ -25,7 +26,7 @@ import * as eventUtils from './utils.js'; * created. */ export class BlockCreate extends BlockBase { - override type = eventUtils.BLOCK_CREATE; + override type = EventType.BLOCK_CREATE; /** The XML representation of the created block(s). */ xml?: Element | DocumentFragment; @@ -181,4 +182,4 @@ export interface BlockCreateJson extends BlockBaseJson { recordUndo?: boolean; } -registry.register(registry.Type.EVENT, eventUtils.CREATE, BlockCreate); +registry.register(registry.Type.EVENT, EventType.BLOCK_CREATE, BlockCreate); diff --git a/core/events/events_block_delete.ts b/core/events/events_block_delete.ts index e1c04f365..5dd231606 100644 --- a/core/events/events_block_delete.ts +++ b/core/events/events_block_delete.ts @@ -18,6 +18,7 @@ import * as utilsXml from '../utils/xml.js'; import {Workspace} from '../workspace.js'; import * as Xml from '../xml.js'; import {BlockBase, BlockBaseJson} from './events_block_base.js'; +import {EventType} from './type.js'; import * as eventUtils from './utils.js'; /** @@ -37,7 +38,7 @@ export class BlockDelete extends BlockBase { /** True if the deleted block was a shadow block, false otherwise. */ wasShadow?: boolean; - override type = eventUtils.BLOCK_DELETE; + override type = EventType.BLOCK_DELETE; /** @param opt_block The deleted block. Undefined for a blank event. */ constructor(opt_block?: Block) { @@ -178,4 +179,4 @@ export interface BlockDeleteJson extends BlockBaseJson { recordUndo?: boolean; } -registry.register(registry.Type.EVENT, eventUtils.DELETE, BlockDelete); +registry.register(registry.Type.EVENT, EventType.BLOCK_DELETE, BlockDelete); diff --git a/core/events/events_block_drag.ts b/core/events/events_block_drag.ts index 0045d2bec..4a91c4d11 100644 --- a/core/events/events_block_drag.ts +++ b/core/events/events_block_drag.ts @@ -16,7 +16,7 @@ import * as registry from '../registry.js'; import {Workspace} from '../workspace.js'; import {AbstractEventJson} from './events_abstract.js'; import {UiBase} from './events_ui_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; /** * Notifies listeners when a block is being manually dragged/dropped. @@ -34,7 +34,7 @@ export class BlockDrag extends UiBase { */ blocks?: Block[]; - override type = eventUtils.BLOCK_DRAG; + override type = EventType.BLOCK_DRAG; /** * @param opt_block The top block in the stack that is being dragged. @@ -113,4 +113,4 @@ export interface BlockDragJson extends AbstractEventJson { blocks?: Block[]; } -registry.register(registry.Type.EVENT, eventUtils.BLOCK_DRAG, BlockDrag); +registry.register(registry.Type.EVENT, EventType.BLOCK_DRAG, BlockDrag); diff --git a/core/events/events_block_field_intermediate_change.ts b/core/events/events_block_field_intermediate_change.ts index ef077a97a..49280cf2b 100644 --- a/core/events/events_block_field_intermediate_change.ts +++ b/core/events/events_block_field_intermediate_change.ts @@ -16,7 +16,7 @@ import type {Block} from '../block.js'; import * as registry from '../registry.js'; import {Workspace} from '../workspace.js'; import {BlockBase, BlockBaseJson} from './events_block_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; /** * Notifies listeners when the value of a block's field has changed but the @@ -24,7 +24,7 @@ import * as eventUtils from './utils.js'; * event. */ export class BlockFieldIntermediateChange extends BlockBase { - override type = eventUtils.BLOCK_FIELD_INTERMEDIATE_CHANGE; + override type = EventType.BLOCK_FIELD_INTERMEDIATE_CHANGE; // Intermediate events do not undo or redo. They may be fired frequently while // the field editor widget is open. A separate BLOCK_CHANGE event is fired @@ -161,6 +161,6 @@ export interface BlockFieldIntermediateChangeJson extends BlockBaseJson { registry.register( registry.Type.EVENT, - eventUtils.BLOCK_FIELD_INTERMEDIATE_CHANGE, + EventType.BLOCK_FIELD_INTERMEDIATE_CHANGE, BlockFieldIntermediateChange, ); diff --git a/core/events/events_block_move.ts b/core/events/events_block_move.ts index 233880eef..cd683a777 100644 --- a/core/events/events_block_move.ts +++ b/core/events/events_block_move.ts @@ -17,7 +17,7 @@ import * as registry from '../registry.js'; import {Coordinate} from '../utils/coordinate.js'; import type {Workspace} from '../workspace.js'; import {BlockBase, BlockBaseJson} from './events_block_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; interface BlockLocation { parentId?: string; @@ -30,7 +30,7 @@ interface BlockLocation { * connection to another, or from one location on the workspace to another. */ export class BlockMove extends BlockBase { - override type = eventUtils.BLOCK_MOVE; + override type = EventType.BLOCK_MOVE; /** The ID of the old parent block. Undefined if it was a top-level block. */ oldParentId?: string; @@ -303,4 +303,4 @@ export interface BlockMoveJson extends BlockBaseJson { recordUndo?: boolean; } -registry.register(registry.Type.EVENT, eventUtils.MOVE, BlockMove); +registry.register(registry.Type.EVENT, EventType.BLOCK_MOVE, BlockMove); diff --git a/core/events/events_bubble_open.ts b/core/events/events_bubble_open.ts index fa9b43d25..a36bbcd6a 100644 --- a/core/events/events_bubble_open.ts +++ b/core/events/events_bubble_open.ts @@ -9,6 +9,7 @@ * * @class */ + // Former goog.module ID: Blockly.Events.BubbleOpen import type {BlockSvg} from '../block_svg.js'; @@ -16,7 +17,7 @@ import * as registry from '../registry.js'; import type {Workspace} from '../workspace.js'; import type {AbstractEventJson} from './events_abstract.js'; import {UiBase} from './events_ui_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; /** * Class for a bubble open event. @@ -31,7 +32,7 @@ export class BubbleOpen extends UiBase { /** The type of bubble; one of 'mutator', 'comment', or 'warning'. */ bubbleType?: BubbleType; - override type = eventUtils.BUBBLE_OPEN; + override type = EventType.BUBBLE_OPEN; /** * @param opt_block The associated block. Undefined for a blank event. @@ -117,4 +118,4 @@ export interface BubbleOpenJson extends AbstractEventJson { blockId: string; } -registry.register(registry.Type.EVENT, eventUtils.BUBBLE_OPEN, BubbleOpen); +registry.register(registry.Type.EVENT, EventType.BUBBLE_OPEN, BubbleOpen); diff --git a/core/events/events_click.ts b/core/events/events_click.ts index ada1ebc3e..c023f20f1 100644 --- a/core/events/events_click.ts +++ b/core/events/events_click.ts @@ -9,6 +9,7 @@ * * @class */ + // Former goog.module ID: Blockly.Events.Click import type {Block} from '../block.js'; @@ -16,7 +17,7 @@ import * as registry from '../registry.js'; import {Workspace} from '../workspace.js'; import {AbstractEventJson} from './events_abstract.js'; import {UiBase} from './events_ui_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; /** * Notifies listeners that some blockly element was clicked. @@ -30,7 +31,7 @@ export class Click extends UiBase { * or 'zoom_controls'. */ targetType?: ClickTarget; - override type = eventUtils.CLICK; + override type = EventType.CLICK; /** * @param opt_block The affected block. Null for click events that do not have @@ -106,4 +107,4 @@ export interface ClickJson extends AbstractEventJson { blockId?: string; } -registry.register(registry.Type.EVENT, eventUtils.CLICK, Click); +registry.register(registry.Type.EVENT, EventType.CLICK, Click); diff --git a/core/events/events_comment_base.ts b/core/events/events_comment_base.ts index afda026f2..e4b76c8e5 100644 --- a/core/events/events_comment_base.ts +++ b/core/events/events_comment_base.ts @@ -20,7 +20,7 @@ import { } from './events_abstract.js'; import type {CommentCreate} from './events_comment_create.js'; import type {CommentDelete} from './events_comment_delete.js'; -import * as eventUtils from './utils.js'; +import {getGroup, getRecordUndo} from './utils.js'; /** * Abstract class for a comment event. @@ -44,8 +44,8 @@ export class CommentBase extends AbstractEvent { this.commentId = opt_comment.id; this.workspaceId = opt_comment.workspace.id; - this.group = eventUtils.getGroup(); - this.recordUndo = eventUtils.getRecordUndo(); + this.group = getGroup(); + this.recordUndo = getRecordUndo(); } /** diff --git a/core/events/events_comment_change.ts b/core/events/events_comment_change.ts index ca807a6d2..4d944ea39 100644 --- a/core/events/events_comment_change.ts +++ b/core/events/events_comment_change.ts @@ -15,13 +15,13 @@ import type {WorkspaceComment} from '../comments/workspace_comment.js'; import * as registry from '../registry.js'; import type {Workspace} from '../workspace.js'; import {CommentBase, CommentBaseJson} from './events_comment_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; /** * Notifies listeners that the contents of a workspace comment has changed. */ export class CommentChange extends CommentBase { - override type = eventUtils.COMMENT_CHANGE; + override type = EventType.COMMENT_CHANGE; // TODO(#6774): We should remove underscores. /** The previous contents of the comment. */ @@ -153,8 +153,4 @@ export interface CommentChangeJson extends CommentBaseJson { newContents: string; } -registry.register( - registry.Type.EVENT, - eventUtils.COMMENT_CHANGE, - CommentChange, -); +registry.register(registry.Type.EVENT, EventType.COMMENT_CHANGE, CommentChange); diff --git a/core/events/events_comment_collapse.ts b/core/events/events_comment_collapse.ts index 30147f3d8..0f718a040 100644 --- a/core/events/events_comment_collapse.ts +++ b/core/events/events_comment_collapse.ts @@ -8,10 +8,10 @@ import {WorkspaceComment} from '../comments/workspace_comment.js'; import * as registry from '../registry.js'; import type {Workspace} from '../workspace.js'; import {CommentBase, CommentBaseJson} from './events_comment_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; export class CommentCollapse extends CommentBase { - override type = eventUtils.COMMENT_COLLAPSE; + override type = EventType.COMMENT_COLLAPSE; constructor( comment?: WorkspaceComment, @@ -98,6 +98,6 @@ export interface CommentCollapseJson extends CommentBaseJson { registry.register( registry.Type.EVENT, - eventUtils.COMMENT_COLLAPSE, + EventType.COMMENT_COLLAPSE, CommentCollapse, ); diff --git a/core/events/events_comment_create.ts b/core/events/events_comment_create.ts index b4ee7ad71..637107e3f 100644 --- a/core/events/events_comment_create.ts +++ b/core/events/events_comment_create.ts @@ -18,13 +18,13 @@ import * as utilsXml from '../utils/xml.js'; import type {Workspace} from '../workspace.js'; import * as Xml from '../xml.js'; import {CommentBase, CommentBaseJson} from './events_comment_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; /** * Notifies listeners that a workspace comment was created. */ export class CommentCreate extends CommentBase { - override type = eventUtils.COMMENT_CREATE; + override type = EventType.COMMENT_CREATE; /** The XML representation of the created workspace comment. */ xml?: Element | DocumentFragment; @@ -111,8 +111,4 @@ export interface CommentCreateJson extends CommentBaseJson { json: object; } -registry.register( - registry.Type.EVENT, - eventUtils.COMMENT_CREATE, - CommentCreate, -); +registry.register(registry.Type.EVENT, EventType.COMMENT_CREATE, CommentCreate); diff --git a/core/events/events_comment_delete.ts b/core/events/events_comment_delete.ts index a429ab824..579131e50 100644 --- a/core/events/events_comment_delete.ts +++ b/core/events/events_comment_delete.ts @@ -18,13 +18,13 @@ import * as utilsXml from '../utils/xml.js'; import type {Workspace} from '../workspace.js'; import * as Xml from '../xml.js'; import {CommentBase, CommentBaseJson} from './events_comment_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; /** * Notifies listeners that a workspace comment has been deleted. */ export class CommentDelete extends CommentBase { - override type = eventUtils.COMMENT_DELETE; + override type = EventType.COMMENT_DELETE; /** The XML representation of the deleted workspace comment. */ xml?: Element; @@ -110,8 +110,4 @@ export interface CommentDeleteJson extends CommentBaseJson { json: object; } -registry.register( - registry.Type.EVENT, - eventUtils.COMMENT_DELETE, - CommentDelete, -); +registry.register(registry.Type.EVENT, EventType.COMMENT_DELETE, CommentDelete); diff --git a/core/events/events_comment_drag.ts b/core/events/events_comment_drag.ts index 7ca21d4dc..b25ca5b73 100644 --- a/core/events/events_comment_drag.ts +++ b/core/events/events_comment_drag.ts @@ -13,7 +13,7 @@ import * as registry from '../registry.js'; import {Workspace} from '../workspace.js'; import {AbstractEventJson} from './events_abstract.js'; import {UiBase} from './events_ui_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; /** * Notifies listeners when a comment is being manually dragged/dropped. @@ -25,7 +25,7 @@ export class CommentDrag extends UiBase { /** True if this is the start of a drag, false if this is the end of one. */ isStart?: boolean; - override type = eventUtils.COMMENT_DRAG; + override type = EventType.COMMENT_DRAG; /** * @param opt_comment The comment that is being dragged. @@ -96,4 +96,4 @@ export interface CommentDragJson extends AbstractEventJson { commentId: string; } -registry.register(registry.Type.EVENT, eventUtils.COMMENT_DRAG, CommentDrag); +registry.register(registry.Type.EVENT, EventType.COMMENT_DRAG, CommentDrag); diff --git a/core/events/events_comment_move.ts b/core/events/events_comment_move.ts index d50efec5a..af5e33616 100644 --- a/core/events/events_comment_move.ts +++ b/core/events/events_comment_move.ts @@ -16,13 +16,13 @@ import * as registry from '../registry.js'; import {Coordinate} from '../utils/coordinate.js'; import type {Workspace} from '../workspace.js'; import {CommentBase, CommentBaseJson} from './events_comment_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; /** * Notifies listeners that a workspace comment has moved. */ export class CommentMove extends CommentBase { - override type = eventUtils.COMMENT_MOVE; + override type = EventType.COMMENT_MOVE; /** The comment that is being moved. */ comment_?: WorkspaceComment; @@ -203,4 +203,4 @@ export interface CommentMoveJson extends CommentBaseJson { newCoordinate: string; } -registry.register(registry.Type.EVENT, eventUtils.COMMENT_MOVE, CommentMove); +registry.register(registry.Type.EVENT, EventType.COMMENT_MOVE, CommentMove); diff --git a/core/events/events_comment_resize.ts b/core/events/events_comment_resize.ts index 623e0c415..0c59177d9 100644 --- a/core/events/events_comment_resize.ts +++ b/core/events/events_comment_resize.ts @@ -13,13 +13,13 @@ import * as registry from '../registry.js'; import {Size} from '../utils/size.js'; import type {Workspace} from '../workspace.js'; import {CommentBase, CommentBaseJson} from './events_comment_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; /** * Notifies listeners that a workspace comment has resized. */ export class CommentResize extends CommentBase { - override type = eventUtils.COMMENT_RESIZE; + override type = EventType.COMMENT_RESIZE; /** The size of the comment before the resize. */ oldSize?: Size; @@ -166,8 +166,4 @@ export interface CommentResizeJson extends CommentBaseJson { newHeight: number; } -registry.register( - registry.Type.EVENT, - eventUtils.COMMENT_RESIZE, - CommentResize, -); +registry.register(registry.Type.EVENT, EventType.COMMENT_RESIZE, CommentResize); diff --git a/core/events/events_marker_move.ts b/core/events/events_marker_move.ts index e5c7dc47d..58309df58 100644 --- a/core/events/events_marker_move.ts +++ b/core/events/events_marker_move.ts @@ -17,7 +17,7 @@ import * as registry from '../registry.js'; import type {Workspace} from '../workspace.js'; import {AbstractEventJson} from './events_abstract.js'; import {UiBase} from './events_ui_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; /** * Notifies listeners that a marker (used for keyboard navigation) has @@ -40,7 +40,7 @@ export class MarkerMove extends UiBase { */ isCursor?: boolean; - override type = eventUtils.MARKER_MOVE; + override type = EventType.MARKER_MOVE; /** * @param opt_block The affected block. Null if current node is of type @@ -130,4 +130,4 @@ export interface MarkerMoveJson extends AbstractEventJson { newNode: ASTNode; } -registry.register(registry.Type.EVENT, eventUtils.MARKER_MOVE, MarkerMove); +registry.register(registry.Type.EVENT, EventType.MARKER_MOVE, MarkerMove); diff --git a/core/events/events_selected.ts b/core/events/events_selected.ts index 1892dcb18..e4a777496 100644 --- a/core/events/events_selected.ts +++ b/core/events/events_selected.ts @@ -15,7 +15,7 @@ import * as registry from '../registry.js'; import type {Workspace} from '../workspace.js'; import {AbstractEventJson} from './events_abstract.js'; import {UiBase} from './events_ui_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; /** * Class for a selected event. @@ -31,7 +31,7 @@ export class Selected extends UiBase { */ newElementId?: string; - override type = eventUtils.SELECTED; + override type = EventType.SELECTED; /** * @param opt_oldElementId The ID of the previously selected element. Null if @@ -94,4 +94,4 @@ export interface SelectedJson extends AbstractEventJson { newElementId?: string; } -registry.register(registry.Type.EVENT, eventUtils.SELECTED, Selected); +registry.register(registry.Type.EVENT, EventType.SELECTED, Selected); diff --git a/core/events/events_theme_change.ts b/core/events/events_theme_change.ts index c92aa0b7e..b142b9f14 100644 --- a/core/events/events_theme_change.ts +++ b/core/events/events_theme_change.ts @@ -15,7 +15,7 @@ import * as registry from '../registry.js'; import type {Workspace} from '../workspace.js'; import {AbstractEventJson} from './events_abstract.js'; import {UiBase} from './events_ui_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; /** * Notifies listeners that the workspace theme has changed. @@ -24,7 +24,7 @@ export class ThemeChange extends UiBase { /** The name of the new theme that has been set. */ themeName?: string; - override type = eventUtils.THEME_CHANGE; + override type = EventType.THEME_CHANGE; /** * @param opt_themeName The theme name. Undefined for a blank event. @@ -81,4 +81,4 @@ export interface ThemeChangeJson extends AbstractEventJson { themeName: string; } -registry.register(registry.Type.EVENT, eventUtils.THEME_CHANGE, ThemeChange); +registry.register(registry.Type.EVENT, EventType.THEME_CHANGE, ThemeChange); diff --git a/core/events/events_toolbox_item_select.ts b/core/events/events_toolbox_item_select.ts index f462addf3..6a93dbfde 100644 --- a/core/events/events_toolbox_item_select.ts +++ b/core/events/events_toolbox_item_select.ts @@ -15,7 +15,7 @@ import * as registry from '../registry.js'; import type {Workspace} from '../workspace.js'; import {AbstractEventJson} from './events_abstract.js'; import {UiBase} from './events_ui_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; /** * Notifies listeners that a toolbox item has been selected. @@ -27,7 +27,7 @@ export class ToolboxItemSelect extends UiBase { /** The newly selected toolbox item. */ newItem?: string; - override type = eventUtils.TOOLBOX_ITEM_SELECT; + override type = EventType.TOOLBOX_ITEM_SELECT; /** * @param opt_oldItem The previously selected toolbox item. @@ -91,6 +91,6 @@ export interface ToolboxItemSelectJson extends AbstractEventJson { registry.register( registry.Type.EVENT, - eventUtils.TOOLBOX_ITEM_SELECT, + EventType.TOOLBOX_ITEM_SELECT, ToolboxItemSelect, ); diff --git a/core/events/events_trashcan_open.ts b/core/events/events_trashcan_open.ts index bbd5d2dd9..af06d9f8f 100644 --- a/core/events/events_trashcan_open.ts +++ b/core/events/events_trashcan_open.ts @@ -15,7 +15,7 @@ import * as registry from '../registry.js'; import type {Workspace} from '../workspace.js'; import {AbstractEventJson} from './events_abstract.js'; import {UiBase} from './events_ui_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; /** * Notifies listeners when the trashcan is opening or closing. @@ -26,7 +26,7 @@ export class TrashcanOpen extends UiBase { * False if it is currently closing (previously open). */ isOpen?: boolean; - override type = eventUtils.TRASHCAN_OPEN; + override type = EventType.TRASHCAN_OPEN; /** * @param opt_isOpen Whether the trashcan flyout is opening (false if @@ -84,4 +84,4 @@ export interface TrashcanOpenJson extends AbstractEventJson { isOpen: boolean; } -registry.register(registry.Type.EVENT, eventUtils.TRASHCAN_OPEN, TrashcanOpen); +registry.register(registry.Type.EVENT, EventType.TRASHCAN_OPEN, TrashcanOpen); diff --git a/core/events/events_var_create.ts b/core/events/events_var_create.ts index 6376e1a61..b3ae548aa 100644 --- a/core/events/events_var_create.ts +++ b/core/events/events_var_create.ts @@ -15,13 +15,13 @@ import * as registry from '../registry.js'; import type {VariableModel} from '../variable_model.js'; import type {Workspace} from '../workspace.js'; import {VarBase, VarBaseJson} from './events_var_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; /** * Notifies listeners that a variable model has been created. */ export class VarCreate extends VarBase { - override type = eventUtils.VAR_CREATE; + override type = EventType.VAR_CREATE; /** The type of the variable that was created. */ varType?: string; @@ -122,4 +122,4 @@ export interface VarCreateJson extends VarBaseJson { varName: string; } -registry.register(registry.Type.EVENT, eventUtils.VAR_CREATE, VarCreate); +registry.register(registry.Type.EVENT, EventType.VAR_CREATE, VarCreate); diff --git a/core/events/events_var_delete.ts b/core/events/events_var_delete.ts index 125269791..caaa1f487 100644 --- a/core/events/events_var_delete.ts +++ b/core/events/events_var_delete.ts @@ -10,7 +10,7 @@ import * as registry from '../registry.js'; import type {VariableModel} from '../variable_model.js'; import type {Workspace} from '../workspace.js'; import {VarBase, VarBaseJson} from './events_var_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; /** * Notifies listeners that a variable model has been deleted. @@ -18,7 +18,7 @@ import * as eventUtils from './utils.js'; * @class */ export class VarDelete extends VarBase { - override type = eventUtils.VAR_DELETE; + override type = EventType.VAR_DELETE; /** The type of the variable that was deleted. */ varType?: string; /** The name of the variable that was deleted. */ @@ -117,4 +117,4 @@ export interface VarDeleteJson extends VarBaseJson { varName: string; } -registry.register(registry.Type.EVENT, eventUtils.VAR_DELETE, VarDelete); +registry.register(registry.Type.EVENT, EventType.VAR_DELETE, VarDelete); diff --git a/core/events/events_var_rename.ts b/core/events/events_var_rename.ts index 268d6abc9..b461184ca 100644 --- a/core/events/events_var_rename.ts +++ b/core/events/events_var_rename.ts @@ -10,7 +10,7 @@ import * as registry from '../registry.js'; import type {VariableModel} from '../variable_model.js'; import type {Workspace} from '../workspace.js'; import {VarBase, VarBaseJson} from './events_var_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; /** * Notifies listeners that a variable model was renamed. @@ -18,7 +18,7 @@ import * as eventUtils from './utils.js'; * @class */ export class VarRename extends VarBase { - override type = eventUtils.VAR_RENAME; + override type = EventType.VAR_RENAME; /** The previous name of the variable. */ oldName?: string; @@ -126,4 +126,4 @@ export interface VarRenameJson extends VarBaseJson { newName: string; } -registry.register(registry.Type.EVENT, eventUtils.VAR_RENAME, VarRename); +registry.register(registry.Type.EVENT, EventType.VAR_RENAME, VarRename); diff --git a/core/events/events_viewport.ts b/core/events/events_viewport.ts index 243477099..b7a05b8d6 100644 --- a/core/events/events_viewport.ts +++ b/core/events/events_viewport.ts @@ -15,7 +15,7 @@ import * as registry from '../registry.js'; import type {Workspace} from '../workspace.js'; import {AbstractEventJson} from './events_abstract.js'; import {UiBase} from './events_ui_base.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; /** * Notifies listeners that the workspace surface's position or scale has @@ -42,7 +42,7 @@ export class ViewportChange extends UiBase { /** The previous scale of the workspace. */ oldScale?: number; - override type = eventUtils.VIEWPORT_CHANGE; + override type = EventType.VIEWPORT_CHANGE; /** * @param opt_top Top-edge of the visible portion of the workspace, relative @@ -144,6 +144,6 @@ export interface ViewportChangeJson extends AbstractEventJson { registry.register( registry.Type.EVENT, - eventUtils.VIEWPORT_CHANGE, + EventType.VIEWPORT_CHANGE, ViewportChange, ); diff --git a/core/events/type.ts b/core/events/type.ts new file mode 100644 index 000000000..71060efbb --- /dev/null +++ b/core/events/type.ts @@ -0,0 +1,85 @@ +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * Enum of values for the .type property for event classes (concrete subclasses + * of Abstract). + */ +export enum EventType { + /** Type of event that creates a block. */ + BLOCK_CREATE = 'create', + /** Type of event that deletes a block. */ + BLOCK_DELETE = 'delete', + /** Type of event that changes a block. */ + BLOCK_CHANGE = 'change', + /** + * Type of event representing an in-progress change to a field of a + * block, which is expected to be followed by a block change event. + */ + BLOCK_FIELD_INTERMEDIATE_CHANGE = 'block_field_intermediate_change', + /** Type of event that moves a block. */ + BLOCK_MOVE = 'move', + /** Type of event that creates a variable. */ + VAR_CREATE = 'var_create', + /** Type of event that deletes a variable. */ + VAR_DELETE = 'var_delete', + /** Type of event that renames a variable. */ + VAR_RENAME = 'var_rename', + /** + * Type of generic event that records a UI change. + * + * @deprecated Was only ever intended for internal use. + */ + UI = 'ui', + /** Type of event that drags a block. */ + BLOCK_DRAG = 'drag', + /** Type of event that records a change in selected element. */ + SELECTED = 'selected', + /** Type of event that records a click. */ + CLICK = 'click', + /** Type of event that records a marker move. */ + MARKER_MOVE = 'marker_move', + /** Type of event that records a bubble open. */ + BUBBLE_OPEN = 'bubble_open', + /** Type of event that records a trashcan open. */ + TRASHCAN_OPEN = 'trashcan_open', + /** Type of event that records a toolbox item select. */ + TOOLBOX_ITEM_SELECT = 'toolbox_item_select', + /** Type of event that records a theme change. */ + THEME_CHANGE = 'theme_change', + /** Type of event that records a viewport change. */ + VIEWPORT_CHANGE = 'viewport_change', + /** Type of event that creates a comment. */ + COMMENT_CREATE = 'comment_create', + /** Type of event that deletes a comment. */ + COMMENT_DELETE = 'comment_delete', + /** Type of event that changes a comment. */ + COMMENT_CHANGE = 'comment_change', + /** Type of event that moves a comment. */ + COMMENT_MOVE = 'comment_move', + /** Type of event that resizes a comment. */ + COMMENT_RESIZE = 'comment_resize', + /** Type of event that drags a comment. */ + COMMENT_DRAG = 'comment_drag', + /** Type of event that collapses a comment. */ + COMMENT_COLLAPSE = 'comment_collapse', + /** Type of event that records a workspace load. */ + FINISHED_LOADING = 'finished_loading', +} + +/** + * List of events that cause objects to be bumped back into the visible + * portion of the workspace. + * + * Not to be confused with bumping so that disconnected connections do not + * appear connected. + */ +export const BUMP_EVENTS: string[] = [ + EventType.BLOCK_CREATE, + EventType.BLOCK_MOVE, + EventType.COMMENT_CREATE, + EventType.COMMENT_MOVE, +]; diff --git a/core/events/utils.ts b/core/events/utils.ts index 2e2701cf9..b320a7a8f 100644 --- a/core/events/utils.ts +++ b/core/events/utils.ts @@ -20,6 +20,7 @@ import type {CommentCreate} from './events_comment_create.js'; import type {CommentMove} from './events_comment_move.js'; import type {CommentResize} from './events_comment_resize.js'; import type {ViewportChange} from './events_viewport.js'; +import {EventType} from './type.js'; /** Group ID for new events. Grouped events are indivisible. */ let group = ''; @@ -48,152 +49,6 @@ export function getRecordUndo(): boolean { /** Allow change events to be created and fired. */ let disabled = 0; -/** - * Name of event that creates a block. Will be deprecated for BLOCK_CREATE. - */ -export const CREATE = 'create'; - -/** - * Name of event that creates a block. - */ -export const BLOCK_CREATE = CREATE; - -/** - * Name of event that deletes a block. Will be deprecated for BLOCK_DELETE. - */ -export const DELETE = 'delete'; - -/** - * Name of event that deletes a block. - */ -export const BLOCK_DELETE = DELETE; - -/** - * Name of event that changes a block. Will be deprecated for BLOCK_CHANGE. - */ -export const CHANGE = 'change'; - -/** - * Name of event that changes a block. - */ -export const BLOCK_CHANGE = CHANGE; - -/** - * Name of event representing an in-progress change to a field of a block, which - * is expected to be followed by a block change event. - */ -export const BLOCK_FIELD_INTERMEDIATE_CHANGE = - 'block_field_intermediate_change'; - -/** - * Name of event that moves a block. Will be deprecated for BLOCK_MOVE. - */ -export const MOVE = 'move'; - -/** - * Name of event that moves a block. - */ -export const BLOCK_MOVE = MOVE; - -/** - * Name of event that creates a variable. - */ -export const VAR_CREATE = 'var_create'; - -/** - * Name of event that deletes a variable. - */ -export const VAR_DELETE = 'var_delete'; - -/** - * Name of event that renames a variable. - */ -export const VAR_RENAME = 'var_rename'; - -/** - * Name of generic event that records a UI change. - */ -export const UI = 'ui'; - -/** - * Name of event that drags a block. - */ -export const BLOCK_DRAG = 'drag'; - -/** - * Name of event that records a change in selected element. - */ -export const SELECTED = 'selected'; - -/** - * Name of event that records a click. - */ -export const CLICK = 'click'; - -/** - * Name of event that records a marker move. - */ -export const MARKER_MOVE = 'marker_move'; - -/** - * Name of event that records a bubble open. - */ -export const BUBBLE_OPEN = 'bubble_open'; - -/** - * Name of event that records a trashcan open. - */ -export const TRASHCAN_OPEN = 'trashcan_open'; - -/** - * Name of event that records a toolbox item select. - */ -export const TOOLBOX_ITEM_SELECT = 'toolbox_item_select'; - -/** - * Name of event that records a theme change. - */ -export const THEME_CHANGE = 'theme_change'; - -/** - * Name of event that records a viewport change. - */ -export const VIEWPORT_CHANGE = 'viewport_change'; - -/** - * Name of event that creates a comment. - */ -export const COMMENT_CREATE = 'comment_create'; - -/** - * Name of event that deletes a comment. - */ -export const COMMENT_DELETE = 'comment_delete'; - -/** - * Name of event that changes a comment. - */ -export const COMMENT_CHANGE = 'comment_change'; - -/** - * Name of event that moves a comment. - */ -export const COMMENT_MOVE = 'comment_move'; - -/** Name of event that resizes a comment. */ -export const COMMENT_RESIZE = 'comment_resize'; - -/** Name of event that drags a comment. */ -export const COMMENT_DRAG = 'comment_drag'; - -/** Type of event that collapses a comment. */ -export const COMMENT_COLLAPSE = 'comment_collapse'; - -/** - * Name of event that records a workspace load. - */ -export const FINISHED_LOADING = 'finished_loading'; - /** * The language-neutral ID for when the reason why a block is disabled is * because the block is not descended from a root block. @@ -214,20 +69,6 @@ export type BumpEvent = | CommentMove | CommentResize; -/** - * List of events that cause objects to be bumped back into the visible - * portion of the workspace. - * - * Not to be confused with bumping so that disconnected connections do not - * appear connected. - */ -export const BUMP_EVENTS: string[] = [ - BLOCK_CREATE, - BLOCK_MOVE, - COMMENT_CREATE, - COMMENT_MOVE, -]; - /** List of events queued for firing. */ const FIRE_QUEUE: Abstract[] = []; @@ -339,7 +180,7 @@ export function filter(queueIn: Abstract[], forward: boolean): Abstract[] { for (let i = 0, event; (event = queue[i]); i++) { if (!event.isNull()) { // Treat all UI events as the same type in hash table. - const eventType = event.isUiEvent ? UI : event.type; + const eventType = event.isUiEvent ? EventType.UI : event.type; // TODO(#5927): Check whether `blockId` exists before accessing it. const blockId = (event as AnyDuringMigration).blockId; const key = [eventType, blockId, event.workspaceId].join(' '); @@ -352,7 +193,10 @@ export function filter(queueIn: Abstract[], forward: boolean): Abstract[] { // move events. hash[key] = {event, index: i}; mergedQueue.push(event); - } else if (event.type === MOVE && lastEntry.index === i - 1) { + } else if ( + event.type === EventType.BLOCK_MOVE && + lastEntry.index === i - 1 + ) { const moveEvent = event as BlockMove; // Merge move events. lastEvent.newParentId = moveEvent.newParentId; @@ -371,21 +215,24 @@ export function filter(queueIn: Abstract[], forward: boolean): Abstract[] { } lastEntry.index = i; } else if ( - event.type === CHANGE && + event.type === EventType.BLOCK_CHANGE && (event as BlockChange).element === lastEvent.element && (event as BlockChange).name === lastEvent.name ) { const changeEvent = event as BlockChange; // Merge change events. lastEvent.newValue = changeEvent.newValue; - } else if (event.type === VIEWPORT_CHANGE) { + } else if (event.type === EventType.VIEWPORT_CHANGE) { const viewportEvent = event as ViewportChange; // Merge viewport change events. lastEvent.viewTop = viewportEvent.viewTop; lastEvent.viewLeft = viewportEvent.viewLeft; lastEvent.scale = viewportEvent.scale; lastEvent.oldScale = viewportEvent.oldScale; - } else if (event.type === CLICK && lastEvent.type === BUBBLE_OPEN) { + } else if ( + event.type === EventType.CLICK && + lastEvent.type === EventType.BUBBLE_OPEN + ) { // Drop click events caused by opening/closing bubbles. } else { // Collision: newer events should merge into this event to maintain @@ -409,7 +256,7 @@ export function filter(queueIn: Abstract[], forward: boolean): Abstract[] { // AnyDuringMigration because: Property 'element' does not exist on type // 'Abstract'. if ( - event.type === CHANGE && + event.type === EventType.BLOCK_CHANGE && (event as AnyDuringMigration).element === 'mutation' ) { queue.unshift(queue.splice(i, 1)[0]); @@ -539,7 +386,10 @@ export function get( * @param event Custom data for event. */ export function disableOrphans(event: Abstract) { - if (event.type === MOVE || event.type === CREATE) { + if ( + event.type === EventType.BLOCK_MOVE || + event.type === EventType.BLOCK_CREATE + ) { const blockEvent = event as BlockMove | BlockCreate; if (!blockEvent.workspaceId) { return; diff --git a/core/events/workspace_events.ts b/core/events/workspace_events.ts index 225e342b4..1a2ff5473 100644 --- a/core/events/workspace_events.ts +++ b/core/events/workspace_events.ts @@ -14,7 +14,7 @@ import * as registry from '../registry.js'; import type {Workspace} from '../workspace.js'; import {Abstract as AbstractEvent} from './events_abstract.js'; -import * as eventUtils from './utils.js'; +import {EventType} from './type.js'; /** * Notifies listeners when the workspace has finished deserializing from @@ -23,7 +23,7 @@ import * as eventUtils from './utils.js'; export class FinishedLoading extends AbstractEvent { override isBlank = true; override recordUndo = false; - override type = eventUtils.FINISHED_LOADING; + override type = EventType.FINISHED_LOADING; /** * @param opt_workspace The workspace that has finished loading. Undefined @@ -41,6 +41,6 @@ export class FinishedLoading extends AbstractEvent { registry.register( registry.Type.EVENT, - eventUtils.FINISHED_LOADING, + EventType.FINISHED_LOADING, FinishedLoading, ); diff --git a/core/field.ts b/core/field.ts index 87a27f446..c9d3781a2 100644 --- a/core/field.ts +++ b/core/field.ts @@ -20,6 +20,7 @@ import type {Block} from './block.js'; import type {BlockSvg} from './block_svg.js'; import * as browserEvents from './browser_events.js'; import * as dropDownDiv from './dropdowndiv.js'; +import {EventType} from './events/type.js'; import * as eventUtils from './events/utils.js'; import type {Input} from './inputs/input.js'; import type {IASTNodeLocationSvg} from './interfaces/i_ast_node_location_svg.js'; @@ -1123,7 +1124,7 @@ export abstract class Field this.doValueUpdate_(localValue); if (fireChangeEvent && source && eventUtils.isEnabled()) { eventUtils.fire( - new (eventUtils.get(eventUtils.BLOCK_CHANGE))( + new (eventUtils.get(EventType.BLOCK_CHANGE))( source, 'field', this.name || null, diff --git a/core/field_input.ts b/core/field_input.ts index c3641f4f8..7ef5a01bc 100644 --- a/core/field_input.ts +++ b/core/field_input.ts @@ -19,6 +19,7 @@ import * as browserEvents from './browser_events.js'; import * as bumpObjects from './bump_objects.js'; import * as dialog from './dialog.js'; import * as dropDownDiv from './dropdowndiv.js'; +import {EventType} from './events/type.js'; import * as eventUtils from './events/utils.js'; import { Field, @@ -187,7 +188,7 @@ export abstract class FieldInput extends Field< fireChangeEvent ) { eventUtils.fire( - new (eventUtils.get(eventUtils.BLOCK_CHANGE))( + new (eventUtils.get(EventType.BLOCK_CHANGE))( this.sourceBlock_, 'field', this.name || null, @@ -475,7 +476,7 @@ export abstract class FieldInput extends Field< // multiple times while the editor was open, but this will fire an event // containing the value when the editor was opened as well as the new one. eventUtils.fire( - new (eventUtils.get(eventUtils.BLOCK_CHANGE))( + new (eventUtils.get(EventType.BLOCK_CHANGE))( this.sourceBlock_, 'field', this.name || null, @@ -592,7 +593,7 @@ export abstract class FieldInput extends Field< // Fire a special event indicating that the value changed but the change // isn't complete yet and normal field change listeners can wait. eventUtils.fire( - new (eventUtils.get(eventUtils.BLOCK_FIELD_INTERMEDIATE_CHANGE))( + new (eventUtils.get(EventType.BLOCK_FIELD_INTERMEDIATE_CHANGE))( this.sourceBlock_, this.name || null, oldValue, diff --git a/core/flyout_base.ts b/core/flyout_base.ts index 2a048a2c9..ccfb91ed0 100644 --- a/core/flyout_base.ts +++ b/core/flyout_base.ts @@ -19,6 +19,7 @@ import {ComponentManager} from './component_manager.js'; import {MANUALLY_DISABLED} from './constants.js'; import {DeleteArea} from './delete_area.js'; import type {Abstract as AbstractEvent} from './events/events_abstract.js'; +import {EventType} from './events/type.js'; import * as eventUtils from './events/utils.js'; import {FlyoutButton} from './flyout_button.js'; import {FlyoutMetricsManager} from './flyout_metrics_manager.js'; @@ -1138,13 +1139,13 @@ export abstract class Flyout for (let i = 0; i < newVariables.length; i++) { const thisVariable = newVariables[i]; eventUtils.fire( - new (eventUtils.get(eventUtils.VAR_CREATE))(thisVariable), + new (eventUtils.get(EventType.VAR_CREATE))(thisVariable), ); } // Block events come after var events, in case they refer to newly created // variables. - eventUtils.fire(new (eventUtils.get(eventUtils.BLOCK_CREATE))(newBlock)); + eventUtils.fire(new (eventUtils.get(EventType.BLOCK_CREATE))(newBlock)); } if (this.autoClose) { this.hide(); diff --git a/core/gesture.ts b/core/gesture.ts index a9a04e046..a71eb861e 100644 --- a/core/gesture.ts +++ b/core/gesture.ts @@ -22,6 +22,7 @@ import {RenderedWorkspaceComment} from './comments.js'; import * as common from './common.js'; import {config} from './config.js'; import * as dropDownDiv from './dropdowndiv.js'; +import {EventType} from './events/type.js'; import * as eventUtils from './events/utils.js'; import type {Field} from './field.js'; import type {IBubble} from './interfaces/i_bubble.js'; @@ -776,7 +777,7 @@ export class Gesture { */ private fireWorkspaceClick(ws: WorkspaceSvg) { eventUtils.fire( - new (eventUtils.get(eventUtils.CLICK))(null, ws.id, 'workspace'), + new (eventUtils.get(EventType.CLICK))(null, ws.id, 'workspace'), ); } @@ -909,7 +910,7 @@ export class Gesture { ); } // Clicks events are on the start block, even if it was a shadow. - const event = new (eventUtils.get(eventUtils.CLICK))( + const event = new (eventUtils.get(EventType.CLICK))( this.startBlock, this.startWorkspace_.id, 'block', diff --git a/core/icons/comment_icon.ts b/core/icons/comment_icon.ts index d06952b7a..7cf5431d7 100644 --- a/core/icons/comment_icon.ts +++ b/core/icons/comment_icon.ts @@ -10,6 +10,7 @@ import type {Block} from '../block.js'; import type {BlockSvg} from '../block_svg.js'; import {TextBubble} from '../bubbles/text_bubble.js'; import {TextInputBubble} from '../bubbles/textinput_bubble.js'; +import {EventType} from '../events/type.js'; import * as eventUtils from '../events/utils.js'; import type {IHasBubble} from '../interfaces/i_has_bubble.js'; import type {ISerializable} from '../interfaces/i_serializable.js'; @@ -159,7 +160,7 @@ export class CommentIcon extends Icon implements IHasBubble, ISerializable { setText(text: string) { const oldText = this.text; eventUtils.fire( - new (eventUtils.get(eventUtils.BLOCK_CHANGE))( + new (eventUtils.get(EventType.BLOCK_CHANGE))( this.sourceBlock, 'comment', null, @@ -238,7 +239,7 @@ export class CommentIcon extends Icon implements IHasBubble, ISerializable { if (this.text === newText) return; eventUtils.fire( - new (eventUtils.get(eventUtils.BLOCK_CHANGE))( + new (eventUtils.get(EventType.BLOCK_CHANGE))( this.sourceBlock, 'comment', null, @@ -288,7 +289,7 @@ export class CommentIcon extends Icon implements IHasBubble, ISerializable { } eventUtils.fire( - new (eventUtils.get(eventUtils.BUBBLE_OPEN))( + new (eventUtils.get(EventType.BUBBLE_OPEN))( this.sourceBlock, visible, 'comment', diff --git a/core/icons/mutator_icon.ts b/core/icons/mutator_icon.ts index 1aac847ca..5c137917a 100644 --- a/core/icons/mutator_icon.ts +++ b/core/icons/mutator_icon.ts @@ -11,6 +11,7 @@ import type {BlocklyOptions} from '../blockly_options.js'; import {MiniWorkspaceBubble} from '../bubbles/mini_workspace_bubble.js'; import type {Abstract} from '../events/events_abstract.js'; import {BlockChange} from '../events/events_block_change.js'; +import {EventType} from '../events/type.js'; import * as eventUtils from '../events/utils.js'; import type {IHasBubble} from '../interfaces/i_has_bubble.js'; import * as renderManagement from '../render_management.js'; @@ -193,7 +194,7 @@ export class MutatorIcon extends Icon implements IHasBubble { } eventUtils.fire( - new (eventUtils.get(eventUtils.BUBBLE_OPEN))( + new (eventUtils.get(EventType.BUBBLE_OPEN))( this.sourceBlock, visible, 'mutator', @@ -307,8 +308,8 @@ export class MutatorIcon extends Icon implements IHasBubble { static isIgnorableMutatorEvent(e: Abstract) { return ( e.isUiEvent || - e.type === eventUtils.CREATE || - (e.type === eventUtils.CHANGE && + e.type === EventType.BLOCK_CREATE || + (e.type === EventType.BLOCK_CHANGE && (e as BlockChange).element === 'disabled') ); } @@ -331,7 +332,7 @@ export class MutatorIcon extends Icon implements IHasBubble { if (oldExtraState !== newExtraState) { eventUtils.fire( - new (eventUtils.get(eventUtils.BLOCK_CHANGE))( + new (eventUtils.get(EventType.BLOCK_CHANGE))( this.sourceBlock, 'mutation', null, diff --git a/core/icons/warning_icon.ts b/core/icons/warning_icon.ts index 845094876..2744195f9 100644 --- a/core/icons/warning_icon.ts +++ b/core/icons/warning_icon.ts @@ -8,6 +8,7 @@ import type {BlockSvg} from '../block_svg.js'; import {TextBubble} from '../bubbles/text_bubble.js'; +import {EventType} from '../events/type.js'; import * as eventUtils from '../events/utils.js'; import type {IHasBubble} from '../interfaces/i_has_bubble.js'; import * as renderManagement from '../render_management.js'; @@ -188,7 +189,7 @@ export class WarningIcon extends Icon implements IHasBubble { } eventUtils.fire( - new (eventUtils.get(eventUtils.BUBBLE_OPEN))( + new (eventUtils.get(EventType.BUBBLE_OPEN))( this.sourceBlock, visible, 'warning', diff --git a/core/procedures.ts b/core/procedures.ts index 7ab62a91d..bad4ef05a 100644 --- a/core/procedures.ts +++ b/core/procedures.ts @@ -15,6 +15,7 @@ import {Blocks} from './blocks.js'; import * as common from './common.js'; import type {Abstract} from './events/events_abstract.js'; import type {BubbleOpen} from './events/events_bubble_open.js'; +import {EventType} from './events/type.js'; import * as eventUtils from './events/utils.js'; import {Field, UnattachedFieldError} from './field.js'; import {MutatorIcon} from './icons.js'; @@ -354,7 +355,7 @@ function updateMutatorFlyout(workspace: WorkspaceSvg) { * @internal */ export function mutatorOpenListener(e: Abstract) { - if (e.type !== eventUtils.BUBBLE_OPEN) { + if (e.type !== EventType.BUBBLE_OPEN) { return; } const bubbleEvent = e as BubbleOpen; @@ -386,10 +387,10 @@ export function mutatorOpenListener(e: Abstract) { */ function mutatorChangeListener(e: Abstract) { if ( - e.type !== eventUtils.BLOCK_CREATE && - e.type !== eventUtils.BLOCK_DELETE && - e.type !== eventUtils.BLOCK_CHANGE && - e.type !== eventUtils.BLOCK_FIELD_INTERMEDIATE_CHANGE + e.type !== EventType.BLOCK_CREATE && + e.type !== EventType.BLOCK_DELETE && + e.type !== EventType.BLOCK_CHANGE && + e.type !== EventType.BLOCK_FIELD_INTERMEDIATE_CHANGE ) { return; } @@ -454,7 +455,7 @@ export function mutateCallers(defBlock: Block) { // definition mutation. eventUtils.setRecordUndo(false); eventUtils.fire( - new (eventUtils.get(eventUtils.BLOCK_CHANGE))( + new (eventUtils.get(EventType.BLOCK_CHANGE))( caller, 'mutation', null, diff --git a/core/renderers/common/marker_svg.ts b/core/renderers/common/marker_svg.ts index 2eaee2aea..927c377f4 100644 --- a/core/renderers/common/marker_svg.ts +++ b/core/renderers/common/marker_svg.ts @@ -12,6 +12,7 @@ import '../../events/events_marker_move.js'; import type {BlockSvg} from '../../block_svg.js'; import type {Connection} from '../../connection.js'; import {ConnectionType} from '../../connection_type.js'; +import {EventType} from '../../events/type.js'; import * as eventUtils from '../../events/utils.js'; import type {Field} from '../../field.js'; import {FlyoutButton} from '../../flyout_button.js'; @@ -621,7 +622,7 @@ export class MarkerSvg { */ private fireMarkerEvent(oldNode: ASTNode, curNode: ASTNode) { const curBlock = curNode.getSourceBlock(); - const event = new (eventUtils.get(eventUtils.MARKER_MOVE))( + const event = new (eventUtils.get(EventType.MARKER_MOVE))( curBlock, this.isCursor(), oldNode, diff --git a/core/serialization/blocks.ts b/core/serialization/blocks.ts index 47960258f..b693ff569 100644 --- a/core/serialization/blocks.ts +++ b/core/serialization/blocks.ts @@ -10,6 +10,7 @@ import type {Block} from '../block.js'; import type {BlockSvg} from '../block_svg.js'; import type {Connection} from '../connection.js'; import {MANUALLY_DISABLED} from '../constants.js'; +import {EventType} from '../events/type.js'; import * as eventUtils from '../events/utils.js'; import {inputTypes} from '../inputs/input_types.js'; import {isSerializable} from '../interfaces/i_serializable.js'; @@ -432,7 +433,7 @@ export function appendInternal( if (eventUtils.isEnabled()) { // Block events come after var events, in case they refer to newly created // variables. - eventUtils.fire(new (eventUtils.get(eventUtils.BLOCK_CREATE))(block)); + eventUtils.fire(new (eventUtils.get(EventType.BLOCK_CREATE))(block)); } eventUtils.setGroup(existingGroup); eventUtils.setRecordUndo(prevRecordUndo); @@ -512,9 +513,7 @@ function checkNewVariables( // Fire a VarCreate event for each (if any) new variable created. for (let i = 0; i < newVariables.length; i++) { const thisVariable = newVariables[i]; - eventUtils.fire( - new (eventUtils.get(eventUtils.VAR_CREATE))(thisVariable), - ); + eventUtils.fire(new (eventUtils.get(EventType.VAR_CREATE))(thisVariable)); } } } diff --git a/core/serialization/workspaces.ts b/core/serialization/workspaces.ts index 7206e3715..f201de19e 100644 --- a/core/serialization/workspaces.ts +++ b/core/serialization/workspaces.ts @@ -6,6 +6,7 @@ // Former goog.module ID: Blockly.serialization.workspaces +import {EventType} from '../events/type.js'; import * as eventUtils from '../events/utils.js'; import type {ISerializer} from '../interfaces/i_serializer.js'; import * as registry from '../registry.js'; @@ -86,7 +87,7 @@ export function load( } dom.stopTextWidthCache(); - eventUtils.fire(new (eventUtils.get(eventUtils.FINISHED_LOADING))(workspace)); + eventUtils.fire(new (eventUtils.get(EventType.FINISHED_LOADING))(workspace)); eventUtils.setGroup(existingGroup); eventUtils.setRecordUndo(prevRecordUndo); diff --git a/core/toolbox/toolbox.ts b/core/toolbox/toolbox.ts index 4e0f77207..5d6eee90a 100644 --- a/core/toolbox/toolbox.ts +++ b/core/toolbox/toolbox.ts @@ -20,6 +20,7 @@ import {ComponentManager} from '../component_manager.js'; import * as Css from '../css.js'; import {DeleteArea} from '../delete_area.js'; import '../events/events_toolbox_item_select.js'; +import {EventType} from '../events/type.js'; import * as eventUtils from '../events/utils.js'; import type {IAutoHideable} from '../interfaces/i_autohideable.js'; import type {ICollapsibleToolboxItem} from '../interfaces/i_collapsible_toolbox_item.js'; @@ -962,7 +963,7 @@ export class Toolbox if (oldItem === newItem) { newElement = null; } - const event = new (eventUtils.get(eventUtils.TOOLBOX_ITEM_SELECT))( + const event = new (eventUtils.get(EventType.TOOLBOX_ITEM_SELECT))( oldElement, newElement, this.workspace_.id, diff --git a/core/trashcan.ts b/core/trashcan.ts index 4083a4294..32b56221a 100644 --- a/core/trashcan.ts +++ b/core/trashcan.ts @@ -19,6 +19,7 @@ import {DeleteArea} from './delete_area.js'; import type {Abstract} from './events/events_abstract.js'; import type {BlockDelete} from './events/events_block_delete.js'; import './events/events_trashcan_open.js'; +import {EventType} from './events/type.js'; import * as eventUtils from './events/utils.js'; import type {IAutoHideable} from './interfaces/i_autohideable.js'; import type {IDraggable} from './interfaces/i_draggable.js'; @@ -556,7 +557,7 @@ export class Trashcan * @param trashcanOpen Whether the flyout is opening. */ private fireUiEvent(trashcanOpen: boolean) { - const uiEvent = new (eventUtils.get(eventUtils.TRASHCAN_OPEN))( + const uiEvent = new (eventUtils.get(EventType.TRASHCAN_OPEN))( trashcanOpen, this.workspace.id, ); @@ -603,12 +604,12 @@ export class Trashcan private onDelete(event: Abstract) { if ( this.workspace.options.maxTrashcanContents <= 0 || - event.type !== eventUtils.BLOCK_DELETE + event.type !== EventType.BLOCK_DELETE ) { return; } const deleteEvent = event as BlockDelete; - if (event.type === eventUtils.BLOCK_DELETE && !deleteEvent.wasShadow) { + if (event.type === EventType.BLOCK_DELETE && !deleteEvent.wasShadow) { if (!deleteEvent.oldJson) { throw new Error('Encountered a delete event without proper oldJson'); } diff --git a/core/variable_map.ts b/core/variable_map.ts index bc19b07a5..a67461741 100644 --- a/core/variable_map.ts +++ b/core/variable_map.ts @@ -18,6 +18,7 @@ import './events/events_var_rename.js'; import type {Block} from './block.js'; import * as dialog from './dialog.js'; +import {EventType} from './events/type.js'; import * as eventUtils from './events/utils.js'; import {Msg} from './msg.js'; import {Names} from './names.js'; @@ -119,7 +120,7 @@ export class VariableMap { blocks: Block[], ) { eventUtils.fire( - new (eventUtils.get(eventUtils.VAR_RENAME))(variable, newName), + new (eventUtils.get(EventType.VAR_RENAME))(variable, newName), ); variable.name = newName; for (let i = 0; i < blocks.length; i++) { @@ -158,7 +159,7 @@ export class VariableMap { blocks[i].renameVarById(variable.getId(), conflictVar.getId()); } // Finally delete the original variable, which is now unreferenced. - eventUtils.fire(new (eventUtils.get(eventUtils.VAR_DELETE))(variable)); + eventUtils.fire(new (eventUtils.get(EventType.VAR_DELETE))(variable)); // And remove it from the list. arrayUtils.removeElem(this.variableMap.get(type)!, variable); } @@ -213,7 +214,7 @@ export class VariableMap { this.variableMap.delete(type); this.variableMap.set(type, variables); - eventUtils.fire(new (eventUtils.get(eventUtils.VAR_CREATE))(variable)); + eventUtils.fire(new (eventUtils.get(EventType.VAR_CREATE))(variable)); return variable; } @@ -232,9 +233,7 @@ export class VariableMap { const tempVar = variableList[i]; if (tempVar.getId() === variableId) { variableList.splice(i, 1); - eventUtils.fire( - new (eventUtils.get(eventUtils.VAR_DELETE))(variable), - ); + eventUtils.fire(new (eventUtils.get(EventType.VAR_DELETE))(variable)); if (variableList.length === 0) { this.variableMap.delete(variable.type); } diff --git a/core/workspace_svg.ts b/core/workspace_svg.ts index 6bf5fa5a5..a01bbe07e 100644 --- a/core/workspace_svg.ts +++ b/core/workspace_svg.ts @@ -33,6 +33,7 @@ import { ContextMenuRegistry, } from './contextmenu_registry.js'; import * as dropDownDiv from './dropdowndiv.js'; +import {EventType} from './events/type.js'; import * as eventUtils from './events/utils.js'; import type {FlyoutButton} from './flyout_button.js'; import {Gesture} from './gesture.js'; @@ -558,7 +559,7 @@ export class WorkspaceSvg extends Workspace implements IASTNodeLocationSvg { this.setVisible(true); } - const event = new (eventUtils.get(eventUtils.THEME_CHANGE))( + const event = new (eventUtils.get(EventType.THEME_CHANGE))( this.getTheme().name, this.id, ); @@ -1181,7 +1182,7 @@ export class WorkspaceSvg extends Workspace implements IASTNodeLocationSvg { // of negligible changes in viewport top/left. return; } - const event = new (eventUtils.get(eventUtils.VIEWPORT_CHANGE))( + const event = new (eventUtils.get(EventType.VIEWPORT_CHANGE))( top, left, scale, diff --git a/core/xml.ts b/core/xml.ts index 5e344c3db..cecc4dce2 100644 --- a/core/xml.ts +++ b/core/xml.ts @@ -12,6 +12,7 @@ import {RenderedWorkspaceComment} from './comments/rendered_workspace_comment.js import {WorkspaceComment} from './comments/workspace_comment.js'; import type {Connection} from './connection.js'; import {MANUALLY_DISABLED} from './constants.js'; +import {EventType} from './events/type.js'; import * as eventUtils from './events/utils.js'; import type {Field} from './field.js'; import {IconType} from './icons/icon_types.js'; @@ -497,7 +498,7 @@ export function domToWorkspace(xml: Element, workspace: Workspace): string[] { dom.stopTextWidthCache(); } // Re-enable workspace resizing. - eventUtils.fire(new (eventUtils.get(eventUtils.FINISHED_LOADING))(workspace)); + eventUtils.fire(new (eventUtils.get(EventType.FINISHED_LOADING))(workspace)); return newBlockIds; } @@ -666,13 +667,11 @@ export function domToBlockInternal( // Fire a VarCreate event for each (if any) new variable created. for (let i = 0; i < newVariables.length; i++) { const thisVariable = newVariables[i]; - eventUtils.fire( - new (eventUtils.get(eventUtils.VAR_CREATE))(thisVariable), - ); + eventUtils.fire(new (eventUtils.get(EventType.VAR_CREATE))(thisVariable)); } // Block events come after var events, in case they refer to newly created // variables. - eventUtils.fire(new (eventUtils.get(eventUtils.CREATE))(topBlock)); + eventUtils.fire(new (eventUtils.get(EventType.BLOCK_CREATE))(topBlock)); } return topBlock; } diff --git a/core/zoom_controls.ts b/core/zoom_controls.ts index c93d99de4..4f14b73be 100644 --- a/core/zoom_controls.ts +++ b/core/zoom_controls.ts @@ -17,6 +17,7 @@ import './events/events_click.js'; import * as browserEvents from './browser_events.js'; import {ComponentManager} from './component_manager.js'; import * as Css from './css.js'; +import {EventType} from './events/type.js'; import * as eventUtils from './events/utils.js'; import type {IPositionable} from './interfaces/i_positionable.js'; import type {UiMetrics} from './metrics_manager.js'; @@ -467,7 +468,7 @@ export class ZoomControls implements IPositionable { /** Fires a zoom control UI event. */ private fireZoomEvent() { - const uiEvent = new (eventUtils.get(eventUtils.CLICK))( + const uiEvent = new (eventUtils.get(EventType.CLICK))( null, this.workspace.id, 'zoom_controls', diff --git a/tests/mocha/block_test.js b/tests/mocha/block_test.js index 1b685a445..061584401 100644 --- a/tests/mocha/block_test.js +++ b/tests/mocha/block_test.js @@ -5,6 +5,7 @@ */ import {ConnectionType} from '../../build/src/core/connection_type.js'; +import {EventType} from '../../build/src/core/events/type.js'; import * as eventUtils from '../../build/src/core/events/utils.js'; import {EndRowInput} from '../../build/src/core/inputs/end_row_input.js'; import {assert} from '../../node_modules/chai/chai.js'; @@ -1251,7 +1252,7 @@ suite('Blocks', function () { function assertCommentEvent(eventSpy, oldValue, newValue) { const calls = eventSpy.getCalls(); const event = calls[calls.length - 1].args[0]; - assert.equal(event.type, eventUtils.BLOCK_CHANGE); + assert.equal(event.type, EventType.BLOCK_CHANGE); assert.equal( event.element, 'comment', @@ -1271,7 +1272,7 @@ suite('Blocks', function () { function assertNoCommentEvent(eventSpy) { const calls = eventSpy.getCalls(); const event = calls[calls.length - 1].args[0]; - assert.notEqual(event.type, eventUtils.BLOCK_CHANGE); + assert.notEqual(event.type, EventType.BLOCK_CHANGE); } setup(function () { this.eventsFireSpy = sinon.spy(eventUtils.TEST_ONLY, 'fireInternal'); diff --git a/tests/mocha/comment_test.js b/tests/mocha/comment_test.js index 3662a870f..8024fa5e3 100644 --- a/tests/mocha/comment_test.js +++ b/tests/mocha/comment_test.js @@ -4,7 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import * as eventUtils from '../../build/src/core/events/utils.js'; +import {EventType} from '../../build/src/core/events/type.js'; import {assert} from '../../node_modules/chai/chai.js'; import {assertEventFired} from './test_helpers/events.js'; import { @@ -55,7 +55,7 @@ suite('Comments', function () { assertEventFired( this.eventsFireStub, Blockly.Events.BubbleOpen, - {bubbleType: 'comment', isOpen: true, type: eventUtils.BUBBLE_OPEN}, + {bubbleType: 'comment', isOpen: true, type: EventType.BUBBLE_OPEN}, this.workspace.id, this.block.id, ); @@ -70,7 +70,7 @@ suite('Comments', function () { assertEventFired( this.eventsFireStub, Blockly.Events.BubbleOpen, - {bubbleType: 'comment', isOpen: true, type: eventUtils.BUBBLE_OPEN}, + {bubbleType: 'comment', isOpen: true, type: EventType.BUBBLE_OPEN}, this.workspace.id, this.block.id, ); @@ -86,7 +86,7 @@ suite('Comments', function () { assertEventFired( this.eventsFireStub, Blockly.Events.BubbleOpen, - {bubbleType: 'comment', isOpen: true, type: eventUtils.BUBBLE_OPEN}, + {bubbleType: 'comment', isOpen: true, type: EventType.BUBBLE_OPEN}, this.workspace.id, this.block.id, ); @@ -104,7 +104,7 @@ suite('Comments', function () { assertEventFired( this.eventsFireStub, Blockly.Events.BubbleOpen, - {bubbleType: 'comment', isOpen: true, type: eventUtils.BUBBLE_OPEN}, + {bubbleType: 'comment', isOpen: true, type: EventType.BUBBLE_OPEN}, this.workspace.id, this.block.id, ); diff --git a/tests/mocha/event_block_create_test.js b/tests/mocha/event_block_create_test.js index 94d9c72b3..f59f9435e 100644 --- a/tests/mocha/event_block_create_test.js +++ b/tests/mocha/event_block_create_test.js @@ -4,7 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import * as eventUtils from '../../build/src/core/events/utils.js'; +import {EventType} from '../../build/src/core/events/type.js'; import {assert} from '../../node_modules/chai/chai.js'; import {defineRowBlock} from './test_helpers/block_definitions.js'; import {assertEventFired} from './test_helpers/events.js'; @@ -48,7 +48,7 @@ suite('Block Create Event', function () { assertEventFired( this.eventsFireStub, Blockly.Events.BlockCreate, - {'recordUndo': false, 'type': eventUtils.BLOCK_CREATE}, + {'recordUndo': false, 'type': EventType.BLOCK_CREATE}, this.workspace.id, 'shadowId', ); diff --git a/tests/mocha/gesture_test.js b/tests/mocha/gesture_test.js index be807a54a..3f53b8894 100644 --- a/tests/mocha/gesture_test.js +++ b/tests/mocha/gesture_test.js @@ -4,7 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import * as eventUtils from '../../build/src/core/events/utils.js'; +import {EventType} from '../../build/src/core/events/type.js'; import {assert} from '../../node_modules/chai/chai.js'; import {defineBasicBlockWithField} from './test_helpers/block_definitions.js'; import {assertEventFired, assertEventNotFired} from './test_helpers/events.js'; @@ -39,11 +39,11 @@ suite('Gesture', function () { assertEventFired( eventsFireStub, Blockly.Events.Selected, - {newElementId: block.id, type: eventUtils.SELECTED}, + {newElementId: block.id, type: EventType.SELECTED}, fieldWorkspace.id, ); assertEventNotFired(eventsFireStub, Blockly.Events.Click, { - type: eventUtils.CLICK, + type: EventType.CLICK, }); } diff --git a/tests/mocha/jso_deserialization_test.js b/tests/mocha/jso_deserialization_test.js index 432f0a831..dfd3e62b7 100644 --- a/tests/mocha/jso_deserialization_test.js +++ b/tests/mocha/jso_deserialization_test.js @@ -4,7 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import * as eventUtils from '../../build/src/core/events/utils.js'; +import {EventType} from '../../build/src/core/events/type.js'; import {assert} from '../../node_modules/chai/chai.js'; import {assertEventFired} from './test_helpers/events.js'; import { @@ -66,7 +66,7 @@ suite('JSO Deserialization', function () { assertEventFired( this.eventsFireStub, Blockly.Events.FinishedLoading, - {type: eventUtils.FINISHED_LOADING}, + {type: EventType.FINISHED_LOADING}, this.workspace.id, ); }); @@ -89,7 +89,7 @@ suite('JSO Deserialization', function () { assertEventFired( this.eventsFireStub, Blockly.Events.FinishedLoading, - {'group': 'my group', 'type': eventUtils.FINISHED_LOADING}, + {'group': 'my group', 'type': EventType.FINISHED_LOADING}, this.workspace.id, ); }); @@ -144,7 +144,7 @@ suite('JSO Deserialization', function () { 'varId': 'testId', 'varType': '', 'recordUndo': false, - 'type': eventUtils.VAR_CREATE, + 'type': EventType.VAR_CREATE, }, this.workspace.id, ); @@ -170,7 +170,7 @@ suite('JSO Deserialization', function () { 'varId': 'testId', 'varType': '', 'recordUndo': true, - 'type': eventUtils.VAR_CREATE, + 'type': EventType.VAR_CREATE, }, this.workspace.id, ); @@ -195,7 +195,7 @@ suite('JSO Deserialization', function () { 'varId': 'testId', 'varType': '', 'group': 'my group', - 'type': eventUtils.VAR_CREATE, + 'type': EventType.VAR_CREATE, }, this.workspace.id, ); @@ -260,7 +260,7 @@ suite('JSO Deserialization', function () { 'varName': 'test', 'varId': 'testId', 'varType': '', - 'type': eventUtils.VAR_CREATE, + 'type': EventType.VAR_CREATE, }, this.workspace.id, ); @@ -286,7 +286,7 @@ suite('JSO Deserialization', function () { assertEventFired( this.eventsFireStub, Blockly.Events.BlockCreate, - {'recordUndo': false, 'type': eventUtils.BLOCK_CREATE}, + {'recordUndo': false, 'type': EventType.BLOCK_CREATE}, this.workspace.id, 'testId', ); @@ -311,7 +311,7 @@ suite('JSO Deserialization', function () { assertEventFired( this.eventsFireStub, Blockly.Events.BlockCreate, - {'recordUndo': true, 'type': eventUtils.BLOCK_CREATE}, + {'recordUndo': true, 'type': EventType.BLOCK_CREATE}, this.workspace.id, 'testId', ); @@ -335,7 +335,7 @@ suite('JSO Deserialization', function () { assertEventFired( this.eventsFireStub, Blockly.Events.BlockCreate, - {'group': 'my group', 'type': eventUtils.BLOCK_CREATE}, + {'group': 'my group', 'type': EventType.BLOCK_CREATE}, this.workspace.id, 'testId', ); @@ -397,7 +397,7 @@ suite('JSO Deserialization', function () { assertEventFired( this.eventsFireStub, Blockly.Events.BlockCreate, - {type: eventUtils.BLOCK_CREATE}, + {type: EventType.BLOCK_CREATE}, this.workspace.id, 'id1', ); @@ -435,7 +435,7 @@ suite('JSO Deserialization', function () { assertEventFired( this.eventsFireStub, Blockly.Events.BlockCreate, - {'recordUndo': true, 'type': eventUtils.BLOCK_CREATE}, + {'recordUndo': true, 'type': EventType.BLOCK_CREATE}, this.workspace.id, 'testId', ); @@ -453,7 +453,7 @@ suite('JSO Deserialization', function () { assertEventFired( this.eventsFireStub, Blockly.Events.BlockCreate, - {'group': 'my group', 'type': eventUtils.BLOCK_CREATE}, + {'group': 'my group', 'type': EventType.BLOCK_CREATE}, this.workspace.id, 'testId', ); diff --git a/tests/mocha/theme_test.js b/tests/mocha/theme_test.js index e94bc5e50..1f425dca6 100644 --- a/tests/mocha/theme_test.js +++ b/tests/mocha/theme_test.js @@ -4,7 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import * as eventUtils from '../../build/src/core/events/utils.js'; +import {EventType} from '../../build/src/core/events/type.js'; import {assert} from '../../node_modules/chai/chai.js'; import {assertEventFired} from './test_helpers/events.js'; import { @@ -153,7 +153,7 @@ suite('Theme', function () { assertEventFired( this.eventsFireStub, Blockly.Events.ThemeChange, - {themeName: 'themeName', type: eventUtils.THEME_CHANGE}, + {themeName: 'themeName', type: EventType.THEME_CHANGE}, workspace.id, ); } finally { diff --git a/tests/mocha/trashcan_test.js b/tests/mocha/trashcan_test.js index 7ba624094..5486326f1 100644 --- a/tests/mocha/trashcan_test.js +++ b/tests/mocha/trashcan_test.js @@ -4,6 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ +import {EventType} from '../../build/src/core/events/type.js'; import * as eventUtils from '../../build/src/core/events/utils.js'; import {assert} from '../../node_modules/chai/chai.js'; import { @@ -91,12 +92,12 @@ suite('Trashcan', function () { simulateClick(this.trashcan.svgGroup); assertEventNotFired(this.eventsFireStub, Blockly.Events.TrashcanOpen, { - type: eventUtils.CLICK, + type: EventType.CLICK, }); assertEventFired( this.eventsFireStub, Blockly.Events.Click, - {targetType: 'workspace', type: eventUtils.CLICK}, + {targetType: 'workspace', type: EventType.CLICK}, this.workspace.id, undefined, ); @@ -114,11 +115,11 @@ suite('Trashcan', function () { assertEventFired( this.eventsFireStub, Blockly.Events.TrashcanOpen, - {isOpen: true, type: eventUtils.TRASHCAN_OPEN}, + {isOpen: true, type: EventType.TRASHCAN_OPEN}, this.workspace.id, ); assertEventNotFired(this.eventsFireStub, Blockly.Events.Click, { - type: eventUtils.TRASHCAN_OPEN, + type: EventType.TRASHCAN_OPEN, }); }); test('Click outside trashcan - fires trashcanClose', function () { @@ -133,13 +134,13 @@ suite('Trashcan', function () { assertEventFired( this.eventsFireStub, Blockly.Events.TrashcanOpen, - {isOpen: false, type: eventUtils.TRASHCAN_OPEN}, + {isOpen: false, type: EventType.TRASHCAN_OPEN}, this.workspace.id, ); assertEventFired( this.eventsFireStub, Blockly.Events.Click, - {targetType: 'workspace', type: eventUtils.CLICK}, + {targetType: 'workspace', type: EventType.CLICK}, this.workspace.id, undefined, ); diff --git a/tests/mocha/workspace_svg_test.js b/tests/mocha/workspace_svg_test.js index 7439ccc5d..d5c80e2f3 100644 --- a/tests/mocha/workspace_svg_test.js +++ b/tests/mocha/workspace_svg_test.js @@ -4,7 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import * as eventUtils from '../../build/src/core/events/utils.js'; +import {EventType} from '../../build/src/core/events/type.js'; import {assert} from '../../node_modules/chai/chai.js'; import {defineStackBlock} from './test_helpers/block_definitions.js'; import { @@ -187,7 +187,7 @@ suite('WorkspaceSvg', function () { oldScale: 1, viewTop: metrics.viewTop, viewLeft: metrics.viewLeft, - type: eventUtils.VIEWPORT_CHANGE, + type: EventType.VIEWPORT_CHANGE, }; assertSpyFiredViewportEvent( changeListenerSpy, @@ -350,7 +350,7 @@ suite('WorkspaceSvg', function () { assertEventNotFired( this.changeListenerSpy, Blockly.Events.ViewportChange, - {type: eventUtils.VIEWPORT_CHANGE}, + {type: EventType.VIEWPORT_CHANGE}, ); }); test("domToWorkspace at 0,0 that doesn't trigger scroll", function () { @@ -377,7 +377,7 @@ suite('WorkspaceSvg', function () { assertEventNotFired( this.changeListenerSpy, Blockly.Events.ViewportChange, - {type: eventUtils.VIEWPORT_CHANGE}, + {type: EventType.VIEWPORT_CHANGE}, ); }); test.skip('domToWorkspace multiple blocks triggers one viewport event', function () { diff --git a/tests/mocha/zoom_controls_test.js b/tests/mocha/zoom_controls_test.js index 8751420c8..dedc36b75 100644 --- a/tests/mocha/zoom_controls_test.js +++ b/tests/mocha/zoom_controls_test.js @@ -4,7 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import * as eventUtils from '../../build/src/core/events/utils.js'; +import {EventType} from '../../build/src/core/events/type.js'; import {assert} from '../../node_modules/chai/chai.js'; import {assertEventFired, assertEventNotFired} from './test_helpers/events.js'; import { @@ -35,13 +35,13 @@ suite('Zoom Controls', function () { assertEventFired( this.eventsFireStub, Blockly.Events.Click, - {targetType: 'zoom_controls', type: eventUtils.CLICK}, + {targetType: 'zoom_controls', type: EventType.CLICK}, this.workspace.id, undefined, ); assertEventNotFired(this.eventsFireStub, Blockly.Events.Click, { targetType: 'workspace', - type: eventUtils.CLICK, + type: EventType.CLICK, }); assert.closeTo(this.workspace.getScale(), 1.2, 0.05); }); @@ -51,13 +51,13 @@ suite('Zoom Controls', function () { assertEventFired( this.eventsFireStub, Blockly.Events.Click, - {targetType: 'zoom_controls', type: eventUtils.CLICK}, + {targetType: 'zoom_controls', type: EventType.CLICK}, this.workspace.id, undefined, ); assertEventNotFired(this.eventsFireStub, Blockly.Events.Click, { targetType: 'workspace', - type: eventUtils.CLICK, + type: EventType.CLICK, }); assert.closeTo(this.workspace.getScale(), 0.8, 0.05); }); @@ -67,13 +67,13 @@ suite('Zoom Controls', function () { assertEventFired( this.eventsFireStub, Blockly.Events.Click, - {targetType: 'zoom_controls', type: eventUtils.CLICK}, + {targetType: 'zoom_controls', type: EventType.CLICK}, this.workspace.id, undefined, ); assertEventNotFired(this.eventsFireStub, Blockly.Events.Click, { targetType: 'workspace', - type: eventUtils.CLICK, + type: EventType.CLICK, }); assert.equal(this.workspace.getScale(), 1); }); From bde216d1205a6d3523b74525a93ef4c2c35da925 Mon Sep 17 00:00:00 2001 From: Christopher Allen Date: Tue, 20 Aug 2024 08:39:37 +0100 Subject: [PATCH 24/26] refactor(events): Don't filter events before undo (#8537) Use of the filter function in Workspace.prototype.undo has caused problems with repeated undo/redo (see issue #7026), the originally-chosen fix for which was the addition (in PR #7069) of code to fireNow to post-filter the .undoStack_ and .redoStack_ of any workspace that had just been involved in dispatching events. This apparently resolved the issue but added considerable additional complexity and made it difficult to reason about how events are processed for undo/redo. Instead, since this filtering typically does nothing (at least nothing desirable), simply don't re-filter events on the undo stack before replaying them. --- core/events/utils.ts | 79 +++++++++++++++++++++----------------------- core/workspace.ts | 3 +- 2 files changed, 38 insertions(+), 44 deletions(-) diff --git a/core/events/utils.ts b/core/events/utils.ts index b320a7a8f..d0aad5f53 100644 --- a/core/events/utils.ts +++ b/core/events/utils.ts @@ -105,7 +105,7 @@ function fireInternal(event: Abstract) { FIRE_QUEUE.push(event); } -/** Fire all queued events. */ +/** Dispatch all queued events. */ function fireNow() { const queue = filter(FIRE_QUEUE, true); FIRE_QUEUE.length = 0; @@ -118,50 +118,45 @@ function fireNow() { eventWorkspace.fireChangeListener(event); } } - - // Post-filter the undo stack to squash and remove any events that result in - // a null event - - // 1. Determine which workspaces will need to have their undo stacks validated - const workspaceIds = new Set(queue.map((e) => e.workspaceId)); - for (const workspaceId of workspaceIds) { - // Only process valid workspaces - if (!workspaceId) { - continue; - } - const eventWorkspace = common.getWorkspaceById(workspaceId); - if (!eventWorkspace) { - continue; - } - - // Find the last contiguous group of events on the stack - const undoStack = eventWorkspace.getUndoStack(); - let i; - let group: string | undefined = undefined; - for (i = undoStack.length; i > 0; i--) { - const event = undoStack[i - 1]; - if (event.group === '') { - break; - } else if (group === undefined) { - group = event.group; - } else if (event.group !== group) { - break; - } - } - if (!group || i == undoStack.length - 1) { - // Need a group of two or more events on the stack. Nothing to do here. - continue; - } - - // Extract the event group, filter, and add back to the undo stack - let events = undoStack.splice(i, undoStack.length - i); - events = filter(events, true); - undoStack.push(...events); - } } /** - * Filter the queued events and merge duplicates. + * Filter the queued events by merging duplicates, removing null + * events and reording BlockChange events. + * + * History of this function: + * + * This function was originally added in commit cf257ea5 with the + * intention of dramatically reduing the total number of dispatched + * events. Initialy it affected only BlockMove events but others were + * added over time. + * + * Code was added to reorder BlockChange events added in commit + * 5578458, for uncertain reasons but most probably as part of an + * only-partially-successful attemp to fix problems with event + * ordering during block mutations. This code should probably have + * been added to the top of the function, before merging and + * null-removal, but was added at the bottom for now-forgotten + * reasons. See these bug investigations for a fuller discussion of + * the underlying issue and some of the failures that arose because of + * this incomplete/incorrect fix: + * + * https://github.com/google/blockly/issues/8225#issuecomment-2195751783 + * https://github.com/google/blockly/issues/2037#issuecomment-2209696351 + * + * Later, in PR #1205 the original O(n^2) implementation was replaced + * by a linear-time implementation, though addiitonal fixes were made + * subsequently. + * + * This function was previously called from Workspace.prototype.undo, + * but this was the cause of issue #7026, the originally-chosen fix + * for which was the addition (in PR #7069) of code to fireNow to + * post-filter the .undoStack_ and .redoStack_ of any workspace that + * had just been involved in dispatching events. This apparently + * resolved the issue but added considerable additional complexity and + * made it difficlut to reason about how events are processed for + * undo/redo, so both the call from undo and the post-processing code + * was later removed. * * @param queueIn Array of events. * @param forward True if forward (redo), false if backward (undo). diff --git a/core/workspace.ts b/core/workspace.ts index bf734243f..bc09d36fb 100644 --- a/core/workspace.ts +++ b/core/workspace.ts @@ -634,7 +634,7 @@ export class Workspace implements IASTNodeLocation { if (!inputEvent) { return; } - let events = [inputEvent]; + const events = [inputEvent]; // Do another undo/redo if the next one is of the same group. while ( inputStack.length && @@ -650,7 +650,6 @@ export class Workspace implements IASTNodeLocation { const event = events[i]; outputStack.push(event); } - events = eventUtils.filter(events, redo); eventUtils.setRecordUndo(false); try { for (let i = 0; i < events.length; i++) { From 032b5ed9eaa87f610beb34f977992aa1c0c8ff0c Mon Sep 17 00:00:00 2001 From: Christopher Allen Date: Tue, 20 Aug 2024 19:50:29 +0100 Subject: [PATCH 25/26] refactor(events): Introduce and use event type predicates (#8538) * refactor(events): Introduce type predicates for event classes Introduce predicates for testing Abstract event subclasses based on their .type properties. These are useful because there are places where it is not possible to use instanceof tests for type narrowing due to load ordering issues that would be caused by the need to import (rather than just import type) the class constructors in question. * refactor(events): Use event type predicates Simplify several sections of code by using type predicates for type narrowing and thereby avoiding the need for explicit casts. * chore(events): Fix copyright date of recently-added files * chore: Remove unused import --- core/bump_objects.ts | 11 +-- core/events/predicates.ts | 172 +++++++++++++++++++++++++++++++++++++ core/events/type.ts | 2 +- core/events/utils.ts | 60 ++++++------- core/icons/mutator_icon.ts | 6 +- core/procedures.ts | 20 +++-- core/trashcan.ts | 34 +++----- 7 files changed, 231 insertions(+), 74 deletions(-) create mode 100644 core/events/predicates.ts diff --git a/core/bump_objects.ts b/core/bump_objects.ts index 7fe1e3851..2aae257dd 100644 --- a/core/bump_objects.ts +++ b/core/bump_objects.ts @@ -13,7 +13,7 @@ import type {BlockMove} from './events/events_block_move.js'; import type {CommentCreate} from './events/events_comment_create.js'; import type {CommentMove} from './events/events_comment_move.js'; import type {CommentResize} from './events/events_comment_resize.js'; -import type {ViewportChange} from './events/events_viewport.js'; +import {isViewportChange} from './events/predicates.js'; import {BUMP_EVENTS, EventType} from './events/type.js'; import * as eventUtils from './events/utils.js'; import type {IBoundedElement} from './interfaces/i_bounded_element.js'; @@ -128,13 +128,8 @@ export function bumpIntoBoundsHandler( ); } eventUtils.setGroup(existingGroup); - } else if (e.type === EventType.VIEWPORT_CHANGE) { - const viewportEvent = e as ViewportChange; - if ( - viewportEvent.scale && - viewportEvent.oldScale && - viewportEvent.scale > viewportEvent.oldScale - ) { + } else if (isViewportChange(e)) { + if (e.scale && e.oldScale && e.scale > e.oldScale) { bumpTopObjectsIntoBounds(workspace); } } diff --git a/core/events/predicates.ts b/core/events/predicates.ts new file mode 100644 index 000000000..79d8ca284 --- /dev/null +++ b/core/events/predicates.ts @@ -0,0 +1,172 @@ +/** + * @license + * Copyright 2024 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file Predicates for testing Abstract event subclasses based on + * their .type properties. These are useful because there are places + * where it is not possible to use instanceof tests + * for type narrowing due to load ordering issues that would be caused + * by the need to import (rather than just import type) the class + * constructors in question. + */ + +import type {Abstract} from './events_abstract.js'; +import type {BlockChange} from './events_block_change.js'; +import type {BlockCreate} from './events_block_create.js'; +import type {BlockDelete} from './events_block_delete.js'; +import type {BlockDrag} from './events_block_drag.js'; +import type {BlockFieldIntermediateChange} from './events_block_field_intermediate_change.js'; +import type {BlockMove} from './events_block_move.js'; +import type {BubbleOpen} from './events_bubble_open.js'; +import type {Click} from './events_click.js'; +import type {CommentChange} from './events_comment_change.js'; +import type {CommentCollapse} from './events_comment_collapse.js'; +import type {CommentCreate} from './events_comment_create.js'; +import type {CommentDelete} from './events_comment_delete.js'; +import type {CommentDrag} from './events_comment_drag.js'; +import type {CommentMove} from './events_comment_move.js'; +import type {CommentResize} from './events_comment_resize.js'; +import type {MarkerMove} from './events_marker_move.js'; +import type {Selected} from './events_selected.js'; +import type {ThemeChange} from './events_theme_change.js'; +import type {ToolboxItemSelect} from './events_toolbox_item_select.js'; +import type {TrashcanOpen} from './events_trashcan_open.js'; +import type {VarCreate} from './events_var_create.js'; +import type {VarDelete} from './events_var_delete.js'; +import type {VarRename} from './events_var_rename.js'; +import type {ViewportChange} from './events_viewport.js'; +import type {FinishedLoading} from './workspace_events.js'; + +import {EventType} from './type.js'; + +/** @returns true iff event.type is EventType.BLOCK_CREATE */ +export function isBlockCreate(event: Abstract): event is BlockCreate { + return event.type === EventType.BLOCK_CREATE; +} + +/** @returns true iff event.type is EventType.BLOCK_DELETE */ +export function isBlockDelete(event: Abstract): event is BlockDelete { + return event.type === EventType.BLOCK_DELETE; +} + +/** @returns true iff event.type is EventType.BLOCK_CHANGE */ +export function isBlockChange(event: Abstract): event is BlockChange { + return event.type === EventType.BLOCK_CHANGE; +} + +/** @returns true iff event.type is EventType.BLOCK_FIELD_INTERMEDIATE_CHANGE */ +export function isBlockFieldIntermediateChange( + event: Abstract, +): event is BlockFieldIntermediateChange { + return event.type === EventType.BLOCK_FIELD_INTERMEDIATE_CHANGE; +} + +/** @returns true iff event.type is EventType.BLOCK_MOVE */ +export function isBlockMove(event: Abstract): event is BlockMove { + return event.type === EventType.BLOCK_MOVE; +} + +/** @returns true iff event.type is EventType.VAR_CREATE */ +export function isVarCreate(event: Abstract): event is VarCreate { + return event.type === EventType.VAR_CREATE; +} + +/** @returns true iff event.type is EventType.VAR_DELETE */ +export function isVarDelete(event: Abstract): event is VarDelete { + return event.type === EventType.VAR_DELETE; +} + +/** @returns true iff event.type is EventType.VAR_RENAME */ +export function isVarRename(event: Abstract): event is VarRename { + return event.type === EventType.VAR_RENAME; +} + +/** @returns true iff event.type is EventType.BLOCK_DRAG */ +export function isBlockDrag(event: Abstract): event is BlockDrag { + return event.type === EventType.BLOCK_DRAG; +} + +/** @returns true iff event.type is EventType.SELECTED */ +export function isSelected(event: Abstract): event is Selected { + return event.type === EventType.SELECTED; +} + +/** @returns true iff event.type is EventType.CLICK */ +export function isClick(event: Abstract): event is Click { + return event.type === EventType.CLICK; +} + +/** @returns true iff event.type is EventType.MARKER_MOVE */ +export function isMarkerMove(event: Abstract): event is MarkerMove { + return event.type === EventType.MARKER_MOVE; +} + +/** @returns true iff event.type is EventType.BUBBLE_OPEN */ +export function isBubbleOpen(event: Abstract): event is BubbleOpen { + return event.type === EventType.BUBBLE_OPEN; +} + +/** @returns true iff event.type is EventType.TRASHCAN_OPEN */ +export function isTrashcanOpen(event: Abstract): event is TrashcanOpen { + return event.type === EventType.TRASHCAN_OPEN; +} + +/** @returns true iff event.type is EventType.TOOLBOX_ITEM_SELECT */ +export function isToolboxItemSelect( + event: Abstract, +): event is ToolboxItemSelect { + return event.type === EventType.TOOLBOX_ITEM_SELECT; +} + +/** @returns true iff event.type is EventType.THEME_CHANGE */ +export function isThemeChange(event: Abstract): event is ThemeChange { + return event.type === EventType.THEME_CHANGE; +} + +/** @returns true iff event.type is EventType.VIEWPORT_CHANGE */ +export function isViewportChange(event: Abstract): event is ViewportChange { + return event.type === EventType.VIEWPORT_CHANGE; +} + +/** @returns true iff event.type is EventType.COMMENT_CREATE */ +export function isCommentCreate(event: Abstract): event is CommentCreate { + return event.type === EventType.COMMENT_CREATE; +} + +/** @returns true iff event.type is EventType.COMMENT_DELETE */ +export function isCommentDelete(event: Abstract): event is CommentDelete { + return event.type === EventType.COMMENT_DELETE; +} + +/** @returns true iff event.type is EventType.COMMENT_CHANGE */ +export function isCommentChange(event: Abstract): event is CommentChange { + return event.type === EventType.COMMENT_CHANGE; +} + +/** @returns true iff event.type is EventType.COMMENT_MOVE */ +export function isCommentMove(event: Abstract): event is CommentMove { + return event.type === EventType.COMMENT_MOVE; +} + +/** @returns true iff event.type is EventType.COMMENT_RESIZE */ +export function isCommentResize(event: Abstract): event is CommentResize { + return event.type === EventType.COMMENT_RESIZE; +} + +/** @returns true iff event.type is EventType.COMMENT_DRAG */ +export function isCommentDrag(event: Abstract): event is CommentDrag { + return event.type === EventType.COMMENT_DRAG; +} + +/** @returns true iff event.type is EventType.COMMENT_COLLAPSE */ +export function isCommentCollapse(event: Abstract): event is CommentCollapse { + return event.type === EventType.COMMENT_COLLAPSE; +} + +/** @returns true iff event.type is EventType.FINISHED_LOADING */ +export function isFinishedLoading(event: Abstract): event is FinishedLoading { + return event.type === EventType.FINISHED_LOADING; +} diff --git a/core/events/type.ts b/core/events/type.ts index 71060efbb..db9ad6c96 100644 --- a/core/events/type.ts +++ b/core/events/type.ts @@ -1,6 +1,6 @@ /** * @license - * Copyright 2021 Google LLC + * Copyright 2024 Google LLC * SPDX-License-Identifier: Apache-2.0 */ diff --git a/core/events/utils.ts b/core/events/utils.ts index d0aad5f53..63217168f 100644 --- a/core/events/utils.ts +++ b/core/events/utils.ts @@ -13,13 +13,19 @@ import * as idGenerator from '../utils/idgenerator.js'; import type {Workspace} from '../workspace.js'; import type {WorkspaceSvg} from '../workspace_svg.js'; import type {Abstract} from './events_abstract.js'; -import type {BlockChange} from './events_block_change.js'; import type {BlockCreate} from './events_block_create.js'; import type {BlockMove} from './events_block_move.js'; import type {CommentCreate} from './events_comment_create.js'; import type {CommentMove} from './events_comment_move.js'; import type {CommentResize} from './events_comment_resize.js'; -import type {ViewportChange} from './events_viewport.js'; +import { + isBlockChange, + isBlockCreate, + isBlockMove, + isBubbleOpen, + isClick, + isViewportChange, +} from './predicates.js'; import {EventType} from './type.js'; /** Group ID for new events. Grouped events are indivisible. */ @@ -188,46 +194,35 @@ export function filter(queueIn: Abstract[], forward: boolean): Abstract[] { // move events. hash[key] = {event, index: i}; mergedQueue.push(event); - } else if ( - event.type === EventType.BLOCK_MOVE && - lastEntry.index === i - 1 - ) { - const moveEvent = event as BlockMove; + } else if (isBlockMove(event) && lastEntry.index === i - 1) { // Merge move events. - lastEvent.newParentId = moveEvent.newParentId; - lastEvent.newInputName = moveEvent.newInputName; - lastEvent.newCoordinate = moveEvent.newCoordinate; - if (moveEvent.reason) { + lastEvent.newParentId = event.newParentId; + lastEvent.newInputName = event.newInputName; + lastEvent.newCoordinate = event.newCoordinate; + if (event.reason) { if (lastEvent.reason) { // Concatenate reasons without duplicates. - const reasonSet = new Set( - moveEvent.reason.concat(lastEvent.reason), - ); + const reasonSet = new Set(event.reason.concat(lastEvent.reason)); lastEvent.reason = Array.from(reasonSet); } else { - lastEvent.reason = moveEvent.reason; + lastEvent.reason = event.reason; } } lastEntry.index = i; } else if ( - event.type === EventType.BLOCK_CHANGE && - (event as BlockChange).element === lastEvent.element && - (event as BlockChange).name === lastEvent.name + isBlockChange(event) && + event.element === lastEvent.element && + event.name === lastEvent.name ) { - const changeEvent = event as BlockChange; // Merge change events. - lastEvent.newValue = changeEvent.newValue; - } else if (event.type === EventType.VIEWPORT_CHANGE) { - const viewportEvent = event as ViewportChange; + lastEvent.newValue = event.newValue; + } else if (isViewportChange(event)) { // Merge viewport change events. - lastEvent.viewTop = viewportEvent.viewTop; - lastEvent.viewLeft = viewportEvent.viewLeft; - lastEvent.scale = viewportEvent.scale; - lastEvent.oldScale = viewportEvent.oldScale; - } else if ( - event.type === EventType.CLICK && - lastEvent.type === EventType.BUBBLE_OPEN - ) { + lastEvent.viewTop = event.viewTop; + lastEvent.viewLeft = event.viewLeft; + lastEvent.scale = event.scale; + lastEvent.oldScale = event.oldScale; + } else if (isClick(event) && isBubbleOpen(lastEvent)) { // Drop click events caused by opening/closing bubbles. } else { // Collision: newer events should merge into this event to maintain @@ -381,10 +376,7 @@ export function get( * @param event Custom data for event. */ export function disableOrphans(event: Abstract) { - if ( - event.type === EventType.BLOCK_MOVE || - event.type === EventType.BLOCK_CREATE - ) { + if (isBlockMove(event) || isBlockCreate(event)) { const blockEvent = event as BlockMove | BlockCreate; if (!blockEvent.workspaceId) { return; diff --git a/core/icons/mutator_icon.ts b/core/icons/mutator_icon.ts index 5c137917a..d02c7e187 100644 --- a/core/icons/mutator_icon.ts +++ b/core/icons/mutator_icon.ts @@ -11,6 +11,7 @@ import type {BlocklyOptions} from '../blockly_options.js'; import {MiniWorkspaceBubble} from '../bubbles/mini_workspace_bubble.js'; import type {Abstract} from '../events/events_abstract.js'; import {BlockChange} from '../events/events_block_change.js'; +import {isBlockChange, isBlockCreate} from '../events/predicates.js'; import {EventType} from '../events/type.js'; import * as eventUtils from '../events/utils.js'; import type {IHasBubble} from '../interfaces/i_has_bubble.js'; @@ -308,9 +309,8 @@ export class MutatorIcon extends Icon implements IHasBubble { static isIgnorableMutatorEvent(e: Abstract) { return ( e.isUiEvent || - e.type === EventType.BLOCK_CREATE || - (e.type === EventType.BLOCK_CHANGE && - (e as BlockChange).element === 'disabled') + isBlockCreate(e) || + (isBlockChange(e) && e.element === 'disabled') ); } diff --git a/core/procedures.ts b/core/procedures.ts index bad4ef05a..a16b0fce4 100644 --- a/core/procedures.ts +++ b/core/procedures.ts @@ -15,6 +15,13 @@ import {Blocks} from './blocks.js'; import * as common from './common.js'; import type {Abstract} from './events/events_abstract.js'; import type {BubbleOpen} from './events/events_bubble_open.js'; +import { + isBlockChange, + isBlockCreate, + isBlockDelete, + isBlockFieldIntermediateChange, + isBubbleOpen, +} from './events/predicates.js'; import {EventType} from './events/type.js'; import * as eventUtils from './events/utils.js'; import {Field, UnattachedFieldError} from './field.js'; @@ -355,9 +362,8 @@ function updateMutatorFlyout(workspace: WorkspaceSvg) { * @internal */ export function mutatorOpenListener(e: Abstract) { - if (e.type !== EventType.BUBBLE_OPEN) { - return; - } + if (!isBubbleOpen(e)) return; + const bubbleEvent = e as BubbleOpen; if ( !(bubbleEvent.bubbleType === 'mutator' && bubbleEvent.isOpen) || @@ -387,10 +393,10 @@ export function mutatorOpenListener(e: Abstract) { */ function mutatorChangeListener(e: Abstract) { if ( - e.type !== EventType.BLOCK_CREATE && - e.type !== EventType.BLOCK_DELETE && - e.type !== EventType.BLOCK_CHANGE && - e.type !== EventType.BLOCK_FIELD_INTERMEDIATE_CHANGE + !isBlockCreate(e) && + !isBlockDelete(e) && + !isBlockChange(e) && + !isBlockFieldIntermediateChange(e) ) { return; } diff --git a/core/trashcan.ts b/core/trashcan.ts index 32b56221a..d30c4a4e2 100644 --- a/core/trashcan.ts +++ b/core/trashcan.ts @@ -17,8 +17,8 @@ import * as browserEvents from './browser_events.js'; import {ComponentManager} from './component_manager.js'; import {DeleteArea} from './delete_area.js'; import type {Abstract} from './events/events_abstract.js'; -import type {BlockDelete} from './events/events_block_delete.js'; import './events/events_trashcan_open.js'; +import {isBlockDelete} from './events/predicates.js'; import {EventType} from './events/type.js'; import * as eventUtils from './events/utils.js'; import type {IAutoHideable} from './interfaces/i_autohideable.js'; @@ -604,30 +604,22 @@ export class Trashcan private onDelete(event: Abstract) { if ( this.workspace.options.maxTrashcanContents <= 0 || - event.type !== EventType.BLOCK_DELETE + !isBlockDelete(event) || + event.wasShadow ) { return; } - const deleteEvent = event as BlockDelete; - if (event.type === EventType.BLOCK_DELETE && !deleteEvent.wasShadow) { - if (!deleteEvent.oldJson) { - throw new Error('Encountered a delete event without proper oldJson'); - } - const cleanedJson = JSON.stringify( - this.cleanBlockJson(deleteEvent.oldJson), - ); - if (this.contents.includes(cleanedJson)) { - return; - } - this.contents.unshift(cleanedJson); - while ( - this.contents.length > this.workspace.options.maxTrashcanContents - ) { - this.contents.pop(); - } - - this.setMinOpenness(HAS_BLOCKS_LID_ANGLE); + if (!event.oldJson) { + throw new Error('Encountered a delete event without proper oldJson'); } + const cleanedJson = JSON.stringify(this.cleanBlockJson(event.oldJson)); + if (this.contents.includes(cleanedJson)) return; + this.contents.unshift(cleanedJson); + while (this.contents.length > this.workspace.options.maxTrashcanContents) { + this.contents.pop(); + } + + this.setMinOpenness(HAS_BLOCKS_LID_ANGLE); } /** From 9445adf8feb1f8431436c9ec61414df201b772a9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Aug 2024 11:27:18 +0100 Subject: [PATCH 26/26] chore(deps): bump mocha from 10.6.0 to 10.7.3 (#8481) Bumps [mocha](https://github.com/mochajs/mocha) from 10.6.0 to 10.7.3. - [Release notes](https://github.com/mochajs/mocha/releases) - [Changelog](https://github.com/mochajs/mocha/blob/main/CHANGELOG.md) - [Commits](https://github.com/mochajs/mocha/compare/v10.6.0...v10.7.3) --- updated-dependencies: - dependency-name: mocha dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index fa88a3f6f..7097ad6d1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6715,9 +6715,9 @@ "dev": true }, "node_modules/mocha": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.6.0.tgz", - "integrity": "sha512-hxjt4+EEB0SA0ZDygSS015t65lJw/I2yRCS3Ae+SJ5FrbzrXgfYwJr96f0OvIXdj7h4lv/vLCrH3rkiuizFSvw==", + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.3.tgz", + "integrity": "sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==", "dev": true, "dependencies": { "ansi-colors": "^4.1.3",