mirror of
https://github.com/google/blockly.git
synced 2026-06-16 16:15:14 +02:00
chore: enable linting ts files (#6351)
* chore: initial setup for linting ts * chore: Temporarily disable most of the rules causing problems * chore: fix autofixable problems. * chore: ignore the last few files and rules * chore: fix remaining lint errors * chore: fix more small lint * chore: run original rules on js files, new ts rules on ts files * chore: use jsdoc style return in js files * chore: add lint fix script * chore: fix prefer-spread lint * chore: fix no-invalid-this rule * chore: fix no-unused-vars * chore: fix trashcan lint
This commit is contained in:
committed by
GitHub
parent
9830641cb7
commit
49f87fba79
@@ -17,3 +17,4 @@
|
||||
/externs/*
|
||||
/closure/*
|
||||
/scripts/gulpfiles/*
|
||||
/typings/*
|
||||
|
||||
+51
-2
@@ -39,7 +39,7 @@
|
||||
"strict": ["off"],
|
||||
// Closure style allows redeclarations.
|
||||
"no-redeclare": ["off"],
|
||||
"valid-jsdoc": ["error", {"requireReturn": false}],
|
||||
"valid-jsdoc": ["error"],
|
||||
"no-console": ["off"],
|
||||
"no-multi-spaces": ["error", { "ignoreEOLComments": true }],
|
||||
"operator-linebreak": ["error", "after"],
|
||||
@@ -83,5 +83,54 @@
|
||||
},
|
||||
"extends": [
|
||||
"eslint:recommended", "google"
|
||||
]
|
||||
],
|
||||
// TypeScript-specific config. Uses above rules plus these.
|
||||
"overrides": [{
|
||||
"files": ["**/*.ts", "**/*.tsx"],
|
||||
"plugins": [
|
||||
"@typescript-eslint/eslint-plugin"
|
||||
],
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"parserOptions": {
|
||||
"project": "./tsconfig.json",
|
||||
"tsconfigRootDir": ".",
|
||||
"ecmaVersion": 2020,
|
||||
"sourceType": "module"
|
||||
},
|
||||
"extends": ["plugin:@typescript-eslint/recommended"],
|
||||
"rules": {
|
||||
// TS rules
|
||||
// Disable JsDoc validation, since we use TsDoc.
|
||||
"valid-jsdoc": ["off"],
|
||||
// Blockly uses namespaces to do declaration merging in some cases.
|
||||
"@typescript-eslint/no-namespace": ["off"],
|
||||
// Use the updated TypeScript-specific rule.
|
||||
"no-invalid-this": ["off"],
|
||||
"@typescript-eslint/no-invalid-this": ["error"],
|
||||
// Needs decision. 601 problems.
|
||||
"@typescript-eslint/no-non-null-assertion": ["off"],
|
||||
// Use TS-specific rule.
|
||||
"no-unused-vars": ["off"],
|
||||
"@typescript-eslint/no-unused-vars": ["warn", {
|
||||
"argsIgnorePattern": "^_",
|
||||
"varsIgnorePattern": "^_"
|
||||
}],
|
||||
// Temporarily disable. 23 problems.
|
||||
"@typescript-eslint/no-explicit-any": ["off"],
|
||||
// Temporarily disable. 128 problems.
|
||||
"require-jsdoc": ["off"],
|
||||
// Temporarily disable. 55 problems.
|
||||
"@typescript-eslint/ban-types": ["off"],
|
||||
// Temporarily disable. 18 problems. Autofixable?
|
||||
"@typescript-eslint/no-inferrable-types": ["off"],
|
||||
// Temporarily disable. 33 problems.
|
||||
"@typescript-eslint/no-empty-function": ["off"],
|
||||
// Temporarily disable. 17 problems.
|
||||
"@typescript-eslint/no-this-alias": ["off"],
|
||||
// Temporarily disable. 3 problems.
|
||||
"@typescript-eslint/no-empty-interface": ["off"],
|
||||
// Temporarily disable. 34 problems.
|
||||
"func-call-spacing": ["off"]
|
||||
}
|
||||
}]
|
||||
}
|
||||
|
||||
+3
-3
@@ -531,7 +531,7 @@ blocks['lists_getIndex'] = {
|
||||
/**
|
||||
* @param {*} value The input value.
|
||||
* @this {FieldDropdown}
|
||||
* @returns {null|undefined} Null if the field has been replaced;
|
||||
* @return {null|undefined} Null if the field has been replaced;
|
||||
* otherwise undefined.
|
||||
*/
|
||||
function(value) {
|
||||
@@ -694,7 +694,7 @@ blocks['lists_setIndex'] = {
|
||||
/**
|
||||
* @param {*} value The input value.
|
||||
* @this {FieldDropdown}
|
||||
* @returns {null|undefined} Null if the field has been replaced;
|
||||
* @return {null|undefined} Null if the field has been replaced;
|
||||
* otherwise undefined.
|
||||
*/
|
||||
function(value) {
|
||||
@@ -822,7 +822,7 @@ blocks['lists_getSublist'] = {
|
||||
/**
|
||||
* @param {*} value The input value.
|
||||
* @this {FieldDropdown}
|
||||
* @returns {null|undefined} Null if the field has been replaced;
|
||||
* @return {null|undefined} Null if the field has been replaced;
|
||||
* otherwise undefined.
|
||||
*/
|
||||
function(value) {
|
||||
|
||||
+1
-1
@@ -343,7 +343,7 @@ blocks['text_getSubstring'] = {
|
||||
/**
|
||||
* @param {*} value The input value.
|
||||
* @this {FieldDropdown}
|
||||
* @returns {null|undefined} Null if the field has been replaced;
|
||||
* @return {null|undefined} Null if the field has been replaced;
|
||||
* otherwise undefined.
|
||||
*/
|
||||
function(value) {
|
||||
|
||||
+2
-1
@@ -1 +1,2 @@
|
||||
type AnyDuringMigration = any;
|
||||
// eslint-disable-next-line
|
||||
type AnyDuringMigration = any;
|
||||
|
||||
+1
-2
@@ -743,8 +743,7 @@ export class Block implements IASTNodeLocation, IDeletable {
|
||||
for (let child, i = 0; child = childBlocks[i]; i++) {
|
||||
// AnyDuringMigration because: Argument of type 'Block[]' is not
|
||||
// assignable to parameter of type 'this[]'.
|
||||
blocks.push.apply(
|
||||
blocks, child.getDescendants(ordered) as AnyDuringMigration);
|
||||
blocks.push(...child.getDescendants(ordered) as AnyDuringMigration);
|
||||
}
|
||||
return blocks;
|
||||
}
|
||||
|
||||
+1
-2
@@ -527,7 +527,7 @@ export class BlockSvg extends Block implements IASTNodeLocationSvg,
|
||||
return; // Deleted block.
|
||||
}
|
||||
if (this.workspace.isDragging()) {
|
||||
return // Don't bump blocks during a drag.;
|
||||
return; // Don't bump blocks during a drag.;
|
||||
}
|
||||
|
||||
if (this.getParent()) {
|
||||
@@ -1053,7 +1053,6 @@ export class BlockSvg extends Block implements IASTNodeLocationSvg,
|
||||
if (this.workspace.isDragging()) {
|
||||
// Don't change the warning text during a drag.
|
||||
// Wait until the drag finishes.
|
||||
const thisBlock = this;
|
||||
this.warningTextDb.set(
|
||||
id, setTimeout(() => {
|
||||
if (!this.disposed) { // Check block wasn't deleted.
|
||||
|
||||
+9
-9
@@ -550,16 +550,16 @@ export const PROCEDURE_CATEGORY_NAME: string = Procedures.CATEGORY_NAME;
|
||||
Workspace.prototype.newBlock =
|
||||
function(prototypeName: string, opt_id?: string): Block {
|
||||
return new Block(this, prototypeName, opt_id);
|
||||
}
|
||||
};
|
||||
|
||||
WorkspaceSvg.prototype.newBlock =
|
||||
function(prototypeName: string, opt_id?: string): BlockSvg {
|
||||
return new BlockSvg(this, prototypeName, opt_id);
|
||||
}
|
||||
};
|
||||
|
||||
WorkspaceSvg.newTrashcan = function(workspace: WorkspaceSvg): Trashcan {
|
||||
return new Trashcan(workspace);
|
||||
}
|
||||
};
|
||||
|
||||
WorkspaceCommentSvg.prototype.showContextMenu =
|
||||
function(this: WorkspaceCommentSvg, e: Event) {
|
||||
@@ -576,23 +576,23 @@ WorkspaceCommentSvg.prototype.showContextMenu =
|
||||
}
|
||||
|
||||
ContextMenu.show(e, menuOptions, this.RTL);
|
||||
}
|
||||
};
|
||||
|
||||
Mutator.prototype.newWorkspaceSvg =
|
||||
function(options: Options): WorkspaceSvg {
|
||||
return new WorkspaceSvg(options);
|
||||
}
|
||||
};
|
||||
|
||||
Names.prototype.populateProcedures =
|
||||
function(this: Names, workspace: Workspace) {
|
||||
let procedures = Procedures.allProcedures(workspace);
|
||||
const procedures = Procedures.allProcedures(workspace);
|
||||
// Flatten the return vs no-return procedure lists.
|
||||
let flattenedProcedures: AnyDuringMigration[][] =
|
||||
const flattenedProcedures: AnyDuringMigration[][] =
|
||||
procedures[0].concat(procedures[1]);
|
||||
for (let i = 0; i < flattenedProcedures.length; i++) {
|
||||
this.getName(flattenedProcedures[i][0], Names.NameType.PROCEDURE);
|
||||
}
|
||||
}
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
|
||||
@@ -746,4 +746,4 @@ export namespace serialization {
|
||||
export const variables = serializationVariables;
|
||||
export const workspaces = serializationWorkspaces;
|
||||
export type ISerializer = SerializerInterface;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -188,7 +188,7 @@ export function unbind(bindData: Data): (e: Event) => void {
|
||||
// Accessing an element of the last property of the array is unsafe if the
|
||||
// bindData is an empty array. But that should never happen because developers
|
||||
// should only pass Data from bind or conditionalBind.
|
||||
let callback = bindData[bindData.length - 1][2];
|
||||
const callback = bindData[bindData.length - 1][2];
|
||||
while (bindData.length) {
|
||||
const bindDatum = bindData.pop();
|
||||
const node = bindDatum![0];
|
||||
|
||||
@@ -24,7 +24,7 @@ import type {CommentMove} from './events/events_comment_move.js';
|
||||
import type {ViewportChange} from './events/events_viewport.js';
|
||||
import * as eventUtils from './events/utils.js';
|
||||
import type {IBoundedElement} from './interfaces/i_bounded_element.js';
|
||||
import type {ContainerRegion, MetricsManager} from './metrics_manager.js';
|
||||
import type {ContainerRegion} from './metrics_manager.js';
|
||||
import * as mathUtils from './utils/math.js';
|
||||
import type {WorkspaceCommentSvg} from './workspace_comment_svg.js';
|
||||
import type {WorkspaceSvg} from './workspace_svg.js';
|
||||
|
||||
+1
-1
@@ -88,4 +88,4 @@ function duplicateInternal(toDuplicate: ICopyable): ICopyable|null {
|
||||
export const TEST_ONLY = {
|
||||
duplicateInternal,
|
||||
copyInternal,
|
||||
}
|
||||
};
|
||||
|
||||
@@ -23,7 +23,7 @@ import type {IPositionable} from './interfaces/i_positionable.js';
|
||||
import * as arrayUtils from './utils/array.js';
|
||||
|
||||
|
||||
class Capability<T> {
|
||||
class Capability<_T> {
|
||||
static POSITIONABLE = new Capability<IPositionable>('positionable');
|
||||
static DRAG_TARGET = new Capability<IDragTarget>('drag_target');
|
||||
static DELETE_AREA = new Capability<IDeleteArea>('delete_area');
|
||||
@@ -208,4 +208,4 @@ export namespace ComponentManager {
|
||||
}
|
||||
}
|
||||
|
||||
export type ComponentDatum = ComponentManager.ComponentDatum;
|
||||
export type ComponentDatum = ComponentManager.ComponentDatum;
|
||||
|
||||
+2
-4
@@ -20,15 +20,13 @@ import type {BlockSvg} from './block_svg.js';
|
||||
import * as browserEvents from './browser_events.js';
|
||||
import * as clipboard from './clipboard.js';
|
||||
import {config} from './config.js';
|
||||
import type {ContextMenuOption, ContextMenuRegistry, LegacyContextMenuOption} from './contextmenu_registry.js';
|
||||
import * as BlockCreate from './events/events_block_create.js';
|
||||
import type {ContextMenuOption, LegacyContextMenuOption} from './contextmenu_registry.js';
|
||||
import * as eventUtils from './events/utils.js';
|
||||
import {Menu} from './menu.js';
|
||||
import {MenuItem} from './menuitem.js';
|
||||
import {Msg} from './msg.js';
|
||||
import * as aria from './utils/aria.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 * as svgMath from './utils/svg_math.js';
|
||||
@@ -44,7 +42,7 @@ import * as Xml from './xml.js';
|
||||
*/
|
||||
let currentBlock: Block|null = null;
|
||||
|
||||
let dummyOwner = {};
|
||||
const dummyOwner = {};
|
||||
|
||||
/**
|
||||
* Gets the block the context menu is currently attached to.
|
||||
|
||||
+1
-1
@@ -124,4 +124,4 @@ export function setPrompt(
|
||||
|
||||
export const TEST_ONLY = {
|
||||
confirmInternal,
|
||||
}
|
||||
};
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
import * as goog from '../../closure/goog/goog.js';
|
||||
goog.declareModuleId('Blockly.Events');
|
||||
|
||||
import * as deprecation from '../utils/deprecation.js';
|
||||
|
||||
import {Abstract as AbstractEvent} from './events_abstract.js';
|
||||
import {BlockBase} from './events_block_base.js';
|
||||
|
||||
@@ -84,4 +84,4 @@ function fromJsonInternal(options: AnyDuringMigration): Field|null {
|
||||
|
||||
export const TEST_ONLY = {
|
||||
fromJsonInternal,
|
||||
}
|
||||
};
|
||||
|
||||
@@ -21,23 +21,17 @@ import * as browserEvents from './browser_events.js';
|
||||
import * as common from './common.js';
|
||||
import {ComponentManager} from './component_manager.js';
|
||||
import {DeleteArea} from './delete_area.js';
|
||||
import * as BlockCreate from './events/events_block_create.js';
|
||||
import * as VarCreate from './events/events_var_create.js';
|
||||
import * as eventUtils from './events/utils.js';
|
||||
import {FlyoutButton} from './flyout_button.js';
|
||||
import {FlyoutMetricsManager} from './flyout_metrics_manager.js';
|
||||
import * as Gesture from './gesture.js';
|
||||
import type {IFlyout} from './interfaces/i_flyout.js';
|
||||
import type {Options} from './options.js';
|
||||
import * as blockRendering from './renderers/common/block_rendering.js';
|
||||
import {ScrollbarPair} from './scrollbar_pair.js';
|
||||
import * as blocks from './serialization/blocks.js';
|
||||
import * as Tooltip from './tooltip.js';
|
||||
import * as Touch from './touch.js';
|
||||
import {Coordinate} from './utils/coordinate.js';
|
||||
import * as dom from './utils/dom.js';
|
||||
import * as idGenerator from './utils/idgenerator.js';
|
||||
import type {Rect} from './utils/rect.js';
|
||||
import {Svg} from './utils/svg.js';
|
||||
import * as toolbox from './utils/toolbox.js';
|
||||
import * as Variables from './variables.js';
|
||||
|
||||
@@ -34,7 +34,6 @@ import * as dom from './utils/dom.js';
|
||||
import {Svg} from './utils/svg.js';
|
||||
import * as userAgent from './utils/useragent.js';
|
||||
import * as WidgetDiv from './widgetdiv.js';
|
||||
import {Workspace} from './workspace.js';
|
||||
import {WorkspaceDragSurfaceSvg} from './workspace_drag_surface_svg.js';
|
||||
import {WorkspaceSvg} from './workspace_svg.js';
|
||||
|
||||
|
||||
@@ -81,4 +81,4 @@ export interface IToolboxItem {
|
||||
* @param isVisible True if category should be visible.
|
||||
*/
|
||||
setVisible_(isVisible: boolean): void;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,6 +217,7 @@ export class Mutator extends Icon {
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
newWorkspaceSvg(options: Options): WorkspaceSvg {
|
||||
throw new Error(
|
||||
'The implementation of newWorkspaceSvg should be ' +
|
||||
|
||||
@@ -120,6 +120,7 @@ export class Names {
|
||||
* Generate names for procedures.
|
||||
* @param workspace Workspace to generate procedures from.
|
||||
*/
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
populateProcedures(workspace: Workspace) {
|
||||
throw new Error(
|
||||
'The implementation of populateProcedures should be ' +
|
||||
|
||||
+2
-2
@@ -150,9 +150,9 @@ export class Options {
|
||||
deprecation.warn('path', 'Nov 2014', 'Jul 2023', 'media');
|
||||
pathToMedia = (options as any)['path'] + 'media/';
|
||||
}
|
||||
let oneBasedIndex;
|
||||
const rawOneBasedIndex = options['oneBasedIndex'];
|
||||
oneBasedIndex = rawOneBasedIndex === undefined ? true : rawOneBasedIndex;
|
||||
const oneBasedIndex =
|
||||
rawOneBasedIndex === undefined ? true : rawOneBasedIndex;
|
||||
const renderer = options['renderer'] || 'geras';
|
||||
|
||||
const plugins = options['plugins'] || {};
|
||||
|
||||
+1
-1
@@ -60,7 +60,7 @@ export const DEFAULT = 'default';
|
||||
* A name with the type of the element stored in the generic.
|
||||
* @alias Blockly.registry.Type
|
||||
*/
|
||||
export class Type<T> {
|
||||
export class Type<_T> {
|
||||
/** @param name The name of the registry type. */
|
||||
constructor(private readonly name: string) {}
|
||||
|
||||
|
||||
@@ -400,7 +400,7 @@ export class RenderedConnection extends Connection {
|
||||
connections = block.getConnections_(true);
|
||||
}
|
||||
for (let i = 0; i < connections.length; i++) {
|
||||
renderList.push.apply(renderList, connections[i].startTrackingAll());
|
||||
renderList.push(...connections[i].startTrackingAll());
|
||||
}
|
||||
if (!renderList.length) {
|
||||
// Leaf block.
|
||||
|
||||
@@ -1117,7 +1117,7 @@ export class ConstantProvider {
|
||||
selector + ' .blocklyReplaceable .blocklyPath {', 'fill-opacity: .5;', '}', selector + ' .blocklyReplaceable .blocklyPathLight,', selector + ' .blocklyReplaceable .blocklyPathDark {', 'display: none;', '}',
|
||||
|
||||
// Insertion marker.
|
||||
selector + ' .blocklyInsertionMarker>.blocklyPath {', 'fill-opacity: ' + this.INSERTION_MARKER_OPACITY + ';', 'stroke: none;', '}',];
|
||||
selector + ' .blocklyInsertionMarker>.blocklyPath {', 'fill-opacity: ' + this.INSERTION_MARKER_OPACITY + ';', 'stroke: none;', '}'];
|
||||
}
|
||||
}
|
||||
/* clang-format on */
|
||||
|
||||
@@ -33,5 +33,5 @@ export {
|
||||
PathObject,
|
||||
Renderer,
|
||||
RenderInfo,
|
||||
StatementInput
|
||||
StatementInput,
|
||||
};
|
||||
|
||||
@@ -37,7 +37,7 @@ export class Measurable {
|
||||
notchOffset: number;
|
||||
|
||||
/** The renderer's constant provider. */
|
||||
protected readonly constants_: ConstantProvider
|
||||
protected readonly constants_: ConstantProvider;
|
||||
|
||||
/**
|
||||
* @param constants The rendering constants provider.
|
||||
|
||||
@@ -329,4 +329,4 @@ class TypesContainer {
|
||||
}
|
||||
}
|
||||
|
||||
export const Types = new TypesContainer();
|
||||
export const Types = new TypesContainer();
|
||||
|
||||
@@ -147,7 +147,7 @@ export class PathObject extends BasePathObject {
|
||||
* @internal
|
||||
*/
|
||||
beginDrawing() {
|
||||
this.remainingOutlines.clear()
|
||||
this.remainingOutlines.clear();
|
||||
for (const key of this.outlines.keys()) {
|
||||
this.remainingOutlines.add(key);
|
||||
}
|
||||
|
||||
@@ -35,5 +35,5 @@ export {
|
||||
RenderInfo,
|
||||
RightConnectionShape,
|
||||
StatementInput,
|
||||
TopRow
|
||||
TopRow,
|
||||
};
|
||||
|
||||
@@ -84,7 +84,7 @@ export function save(block: Block, {
|
||||
addCoordinates = false,
|
||||
addInputBlocks = true,
|
||||
addNextBlocks = true,
|
||||
doFullSerialization = true
|
||||
doFullSerialization = true,
|
||||
}: {
|
||||
addCoordinates?: boolean,
|
||||
addInputBlocks?: boolean,
|
||||
|
||||
+1
-1
@@ -218,4 +218,4 @@ export namespace Theme {
|
||||
export type BlockStyle = Theme.BlockStyle;
|
||||
export type CategoryStyle = Theme.CategoryStyle;
|
||||
export type ComponentStyle = Theme.ComponentStyle;
|
||||
export type FontStyle = Theme.FontStyle;
|
||||
export type FontStyle = Theme.FontStyle;
|
||||
|
||||
@@ -21,8 +21,6 @@ import * as browserEvents from './browser_events.js';
|
||||
import {Gesture} from './gesture.js';
|
||||
import * as Touch from './touch.js';
|
||||
import {Coordinate} from './utils/coordinate.js';
|
||||
import type {WorkspaceSvg} from './workspace_svg.js';
|
||||
|
||||
|
||||
/*
|
||||
* Note: In this file "start" refers to touchstart, mousedown, and pointerstart
|
||||
|
||||
+2
-2
@@ -217,8 +217,8 @@ export class Trashcan extends DeleteArea implements IAutoHideable,
|
||||
init() {
|
||||
if (this.workspace.options.maxTrashcanContents > 0) {
|
||||
dom.insertAfter(
|
||||
this.flyout?.createDom(Svg.SVG)!, this.workspace.getParentSvg());
|
||||
this.flyout?.init(this.workspace);
|
||||
this.flyout!.createDom(Svg.SVG)!, this.workspace.getParentSvg());
|
||||
this.flyout!.init(this.workspace);
|
||||
}
|
||||
this.workspace.getComponentManager().addComponent({
|
||||
component: this,
|
||||
|
||||
+1
-1
@@ -68,7 +68,7 @@ export {
|
||||
svgPaths,
|
||||
toolbox,
|
||||
userAgent,
|
||||
xml
|
||||
xml,
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -217,7 +217,7 @@ function wrapScore(
|
||||
lineLengths[lineLengths.length - 1]++;
|
||||
}
|
||||
}
|
||||
const maxLength = Math.max.apply(Math, lineLengths);
|
||||
const maxLength = Math.max(...lineLengths);
|
||||
|
||||
let score = 0;
|
||||
for (let i = 0; i < lineLengths.length; i++) {
|
||||
|
||||
+1
-1
@@ -303,4 +303,4 @@ export function getContainerOffsetToScrollInto(
|
||||
|
||||
export const TEST_ONLY = {
|
||||
getSizeInternal,
|
||||
}
|
||||
};
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ goog.declareModuleId('Blockly.utils.Svg');
|
||||
* A name with the type of the SVG element stored in the generic.
|
||||
* @alias Blockly.utils.Svg
|
||||
*/
|
||||
export class Svg<T> {
|
||||
export class Svg<_T> {
|
||||
/** @internal */
|
||||
static ANIMATE = new Svg<SVGAnimateElement>('animate');
|
||||
/** @internal */
|
||||
|
||||
@@ -430,4 +430,4 @@ export function parseToolboxTree(toolboxDef: Element|null|string): Element|
|
||||
|
||||
export const TEST_ONLY = {
|
||||
hasCategoriesInternal,
|
||||
}
|
||||
};
|
||||
|
||||
@@ -298,7 +298,7 @@ export class VariableMap {
|
||||
* @return The variable with the given ID.
|
||||
*/
|
||||
getVariableById(id: string): VariableModel|null {
|
||||
for (const [key, variables] of this.variableMap) {
|
||||
for (const [_key, variables] of this.variableMap) {
|
||||
for (const variable of variables) {
|
||||
if (variable.getId() === id) {
|
||||
return variable;
|
||||
@@ -365,7 +365,7 @@ export class VariableMap {
|
||||
getAllVariableNames(): string[] {
|
||||
return Array.from(this.variableMap.values())
|
||||
.flat()
|
||||
.map(variable => variable.name);
|
||||
.map((variable) => variable.name);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -593,4 +593,4 @@ export function getAddedVariables(
|
||||
|
||||
export const TEST_ONLY = {
|
||||
generateUniqueNameInternal,
|
||||
}
|
||||
};
|
||||
|
||||
@@ -39,17 +39,20 @@ function stringButtonClickHandler(button: AnyDuringMigration) {
|
||||
Variables.createVariableButtonHandler(
|
||||
button.getTargetWorkspace(), undefined, 'String');
|
||||
}
|
||||
// eslint-disable-next-line camelcase
|
||||
export const onCreateVariableButtonClick_String = stringButtonClickHandler;
|
||||
function numberButtonClickHandler(button: AnyDuringMigration) {
|
||||
Variables.createVariableButtonHandler(
|
||||
button.getTargetWorkspace(), undefined, 'Number');
|
||||
}
|
||||
// eslint-disable-next-line camelcase
|
||||
export const onCreateVariableButtonClick_Number = numberButtonClickHandler;
|
||||
|
||||
function colourButtonClickHandler(button: AnyDuringMigration) {
|
||||
Variables.createVariableButtonHandler(
|
||||
button.getTargetWorkspace(), undefined, 'Colour');
|
||||
}
|
||||
// eslint-disable-next-line camelcase
|
||||
export const onCreateVariableButtonClick_Colour = colourButtonClickHandler;
|
||||
|
||||
/**
|
||||
|
||||
+3
-2
@@ -353,13 +353,13 @@ export class Workspace implements IASTNodeLocation {
|
||||
const topBlocks = this.getTopBlocks(true);
|
||||
blocks = [];
|
||||
for (let i = 0; i < topBlocks.length; i++) {
|
||||
blocks.push.apply(blocks, topBlocks[i].getDescendants(true));
|
||||
blocks.push(...topBlocks[i].getDescendants(true));
|
||||
}
|
||||
} else {
|
||||
// Fast, but in no particular order.
|
||||
blocks = this.getTopBlocks(false);
|
||||
for (let i = 0; i < blocks.length; i++) {
|
||||
blocks.push.apply(blocks, blocks[i].getChildren(false));
|
||||
blocks.push(...blocks[i].getChildren(false));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -518,6 +518,7 @@ export class Workspace implements IASTNodeLocation {
|
||||
* ID.
|
||||
* @return The created block.
|
||||
*/
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
newBlock(prototypeName: string, opt_id?: string): Block {
|
||||
throw new Error(
|
||||
'The implementation of newBlock should be ' +
|
||||
|
||||
@@ -209,6 +209,7 @@ export class WorkspaceCommentSvg extends WorkspaceComment implements
|
||||
* @param e Mouse event.
|
||||
* @internal
|
||||
*/
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
showContextMenu(e: Event) {
|
||||
throw new Error(
|
||||
'The implementation of showContextMenu should be ' +
|
||||
@@ -714,11 +715,7 @@ export class WorkspaceCommentSvg extends WorkspaceComment implements
|
||||
});
|
||||
browserEvents.conditionalBind(
|
||||
textarea, 'change', this,
|
||||
/** @param e Unused event parameter */
|
||||
/* eslint-enable no-unused-vars */
|
||||
function(
|
||||
this: WorkspaceCommentSvg,
|
||||
/* eslint-disable no-unused-vars */ e: Event) {
|
||||
function(this: WorkspaceCommentSvg, _e: Event) {
|
||||
this.setContent(textarea.value);
|
||||
});
|
||||
// AnyDuringMigration because: Type 'SVGForeignObjectElement | null' is not
|
||||
|
||||
@@ -961,7 +961,7 @@ export class WorkspaceSvg extends Workspace implements IASTNodeLocationSvg {
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
static newTrashcan(workspace: WorkspaceSvg): Trashcan {
|
||||
static newTrashcan(_workspace: WorkspaceSvg): Trashcan {
|
||||
throw new Error(
|
||||
'The implementation of newTrashcan should be ' +
|
||||
'monkey-patched in by blockly.ts');
|
||||
@@ -1670,6 +1670,7 @@ export class WorkspaceSvg extends Workspace implements IASTNodeLocationSvg {
|
||||
* ID.
|
||||
* @return The created block.
|
||||
*/
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
override newBlock(prototypeName: string, opt_id?: string): BlockSvg {
|
||||
throw new Error(
|
||||
'The implementation of newBlock should be ' +
|
||||
|
||||
+1
-1
@@ -667,7 +667,7 @@ function mapSupportedXmlTags(xmlBlock: Element): childNodeTagMap {
|
||||
data: new Array<Element>(),
|
||||
field: new Array<Element>(),
|
||||
input: new Array<Element>(),
|
||||
next: new Array<Element>()
|
||||
next: new Array<Element>(),
|
||||
};
|
||||
for (let i = 0; i < xmlBlock.children.length; i++) {
|
||||
const xmlChild = xmlBlock.children[i];
|
||||
|
||||
Generated
+443
-6
@@ -16,6 +16,7 @@
|
||||
"@blockly/dev-tools": "^4.0.2",
|
||||
"@blockly/theme-modern": "^2.1.1",
|
||||
"@hyperjump/json-schema": "^0.18.4",
|
||||
"@typescript-eslint/eslint-plugin": "^5.33.1",
|
||||
"@wdio/selenium-standalone-service": "^7.10.1",
|
||||
"chai": "^4.2.0",
|
||||
"clang-format": "^1.6.0",
|
||||
@@ -23,6 +24,7 @@
|
||||
"concurrently": "^7.0.0",
|
||||
"eslint": "^8.4.1",
|
||||
"eslint-config-google": "^0.14.0",
|
||||
"eslint-plugin-tsdoc": "^0.2.16",
|
||||
"google-closure-compiler": "^20220601.0.0",
|
||||
"google-closure-deps": "^20220502.0.0",
|
||||
"gulp": "^4.0.2",
|
||||
@@ -457,6 +459,37 @@
|
||||
"url": "https://github.com/sponsors/jdesrosiers"
|
||||
}
|
||||
},
|
||||
"node_modules/@microsoft/tsdoc": {
|
||||
"version": "0.14.1",
|
||||
"resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz",
|
||||
"integrity": "sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@microsoft/tsdoc-config": {
|
||||
"version": "0.16.1",
|
||||
"resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.1.tgz",
|
||||
"integrity": "sha512-2RqkwiD4uN6MLnHFljqBlZIXlt/SaUT6cuogU1w2ARw4nKuuppSmR0+s+NC+7kXBQykd9zzu0P4HtBpZT5zBpQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@microsoft/tsdoc": "0.14.1",
|
||||
"ajv": "~6.12.6",
|
||||
"jju": "~1.4.0",
|
||||
"resolve": "~1.19.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@microsoft/tsdoc-config/node_modules/resolve": {
|
||||
"version": "1.19.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
|
||||
"integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"is-core-module": "^2.1.0",
|
||||
"path-parse": "^1.0.6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/@nodelib/fs.scandir": {
|
||||
"version": "2.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
|
||||
@@ -608,6 +641,12 @@
|
||||
"rxjs": "^7.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/json-schema": {
|
||||
"version": "7.0.11",
|
||||
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
|
||||
"integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/keyv": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz",
|
||||
@@ -742,6 +781,204 @@
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||
"version": "5.33.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.33.1.tgz",
|
||||
"integrity": "sha512-S1iZIxrTvKkU3+m63YUOxYPKaP+yWDQrdhxTglVDVEVBf+aCSw85+BmJnyUaQQsk5TXFG/LpBu9fa+LrAQ91fQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/scope-manager": "5.33.1",
|
||||
"@typescript-eslint/type-utils": "5.33.1",
|
||||
"@typescript-eslint/utils": "5.33.1",
|
||||
"debug": "^4.3.4",
|
||||
"functional-red-black-tree": "^1.0.1",
|
||||
"ignore": "^5.2.0",
|
||||
"regexpp": "^3.2.0",
|
||||
"semver": "^7.3.7",
|
||||
"tsutils": "^3.21.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/typescript-eslint"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@typescript-eslint/parser": "^5.0.0",
|
||||
"eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"typescript": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/parser": {
|
||||
"version": "5.33.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.33.1.tgz",
|
||||
"integrity": "sha512-IgLLtW7FOzoDlmaMoXdxG8HOCByTBXrB1V2ZQYSEV1ggMmJfAkMWTwUjjzagS6OkfpySyhKFkBw7A9jYmcHpZA==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/scope-manager": "5.33.1",
|
||||
"@typescript-eslint/types": "5.33.1",
|
||||
"@typescript-eslint/typescript-estree": "5.33.1",
|
||||
"debug": "^4.3.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/typescript-eslint"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"typescript": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/scope-manager": {
|
||||
"version": "5.33.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.33.1.tgz",
|
||||
"integrity": "sha512-8ibcZSqy4c5m69QpzJn8XQq9NnqAToC8OdH/W6IXPXv83vRyEDPYLdjAlUx8h/rbusq6MkW4YdQzURGOqsn3CA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "5.33.1",
|
||||
"@typescript-eslint/visitor-keys": "5.33.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/typescript-eslint"
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/type-utils": {
|
||||
"version": "5.33.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.33.1.tgz",
|
||||
"integrity": "sha512-X3pGsJsD8OiqhNa5fim41YtlnyiWMF/eKsEZGsHID2HcDqeSC5yr/uLOeph8rNF2/utwuI0IQoAK3fpoxcLl2g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/utils": "5.33.1",
|
||||
"debug": "^4.3.4",
|
||||
"tsutils": "^3.21.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/typescript-eslint"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"eslint": "*"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"typescript": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/types": {
|
||||
"version": "5.33.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.33.1.tgz",
|
||||
"integrity": "sha512-7K6MoQPQh6WVEkMrMW5QOA5FO+BOwzHSNd0j3+BlBwd6vtzfZceJ8xJ7Um2XDi/O3umS8/qDX6jdy2i7CijkwQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/typescript-eslint"
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/typescript-estree": {
|
||||
"version": "5.33.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.33.1.tgz",
|
||||
"integrity": "sha512-JOAzJ4pJ+tHzA2pgsWQi4804XisPHOtbvwUyqsuuq8+y5B5GMZs7lI1xDWs6V2d7gE/Ez5bTGojSK12+IIPtXA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "5.33.1",
|
||||
"@typescript-eslint/visitor-keys": "5.33.1",
|
||||
"debug": "^4.3.4",
|
||||
"globby": "^11.1.0",
|
||||
"is-glob": "^4.0.3",
|
||||
"semver": "^7.3.7",
|
||||
"tsutils": "^3.21.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/typescript-eslint"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"typescript": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/utils": {
|
||||
"version": "5.33.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.33.1.tgz",
|
||||
"integrity": "sha512-uphZjkMaZ4fE8CR4dU7BquOV6u0doeQAr8n6cQenl/poMaIyJtBu8eys5uk6u5HiDH01Mj5lzbJ5SfeDz7oqMQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/json-schema": "^7.0.9",
|
||||
"@typescript-eslint/scope-manager": "5.33.1",
|
||||
"@typescript-eslint/types": "5.33.1",
|
||||
"@typescript-eslint/typescript-estree": "5.33.1",
|
||||
"eslint-scope": "^5.1.1",
|
||||
"eslint-utils": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/typescript-eslint"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/utils/node_modules/eslint-scope": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
|
||||
"integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"esrecurse": "^4.3.0",
|
||||
"estraverse": "^4.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/visitor-keys": {
|
||||
"version": "5.33.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.33.1.tgz",
|
||||
"integrity": "sha512-nwIxOK8Z2MPWltLKMLOEZwmfBZReqUdbEoHQXeCpa+sRVARe5twpJGHCB4dk9903Yaf0nMAlGbQfaAH92F60eg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "5.33.1",
|
||||
"eslint-visitor-keys": "^3.3.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/typescript-eslint"
|
||||
}
|
||||
},
|
||||
"node_modules/@ungap/promise-all-settled": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
|
||||
@@ -4001,6 +4238,16 @@
|
||||
"eslint": ">=5.16.0"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-tsdoc": {
|
||||
"version": "0.2.16",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.2.16.tgz",
|
||||
"integrity": "sha512-F/RWMnyDQuGlg82vQEFHQtGyWi7++XJKdYNn0ulIbyMOFqYIjoJOUdE6olORxgwgLkpJxsCJpJbTHgxJ/ggfXw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@microsoft/tsdoc": "0.14.1",
|
||||
"@microsoft/tsdoc-config": "0.16.1"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-scope": {
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
|
||||
@@ -7189,6 +7436,12 @@
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/jju": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz",
|
||||
"integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/js-green-licenses": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/js-green-licenses/-/js-green-licenses-3.0.1.tgz",
|
||||
@@ -10602,9 +10855,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/semver": {
|
||||
"version": "7.3.5",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
|
||||
"integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
|
||||
"version": "7.3.7",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
|
||||
"integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"lru-cache": "^6.0.0"
|
||||
@@ -11768,6 +12021,21 @@
|
||||
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/tsutils": {
|
||||
"version": "3.21.0",
|
||||
"resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
|
||||
"integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"tslib": "^1.8.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
|
||||
}
|
||||
},
|
||||
"node_modules/tunnel-agent": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
|
||||
@@ -13300,6 +13568,36 @@
|
||||
"just-curry-it": "^3.1.0"
|
||||
}
|
||||
},
|
||||
"@microsoft/tsdoc": {
|
||||
"version": "0.14.1",
|
||||
"resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz",
|
||||
"integrity": "sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==",
|
||||
"dev": true
|
||||
},
|
||||
"@microsoft/tsdoc-config": {
|
||||
"version": "0.16.1",
|
||||
"resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.1.tgz",
|
||||
"integrity": "sha512-2RqkwiD4uN6MLnHFljqBlZIXlt/SaUT6cuogU1w2ARw4nKuuppSmR0+s+NC+7kXBQykd9zzu0P4HtBpZT5zBpQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@microsoft/tsdoc": "0.14.1",
|
||||
"ajv": "~6.12.6",
|
||||
"jju": "~1.4.0",
|
||||
"resolve": "~1.19.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"resolve": {
|
||||
"version": "1.19.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
|
||||
"integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-core-module": "^2.1.0",
|
||||
"path-parse": "^1.0.6"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@nodelib/fs.scandir": {
|
||||
"version": "2.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
|
||||
@@ -13433,6 +13731,12 @@
|
||||
"rxjs": "^7.2.0"
|
||||
}
|
||||
},
|
||||
"@types/json-schema": {
|
||||
"version": "7.0.11",
|
||||
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
|
||||
"integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/keyv": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz",
|
||||
@@ -13567,6 +13871,114 @@
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/eslint-plugin": {
|
||||
"version": "5.33.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.33.1.tgz",
|
||||
"integrity": "sha512-S1iZIxrTvKkU3+m63YUOxYPKaP+yWDQrdhxTglVDVEVBf+aCSw85+BmJnyUaQQsk5TXFG/LpBu9fa+LrAQ91fQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/scope-manager": "5.33.1",
|
||||
"@typescript-eslint/type-utils": "5.33.1",
|
||||
"@typescript-eslint/utils": "5.33.1",
|
||||
"debug": "^4.3.4",
|
||||
"functional-red-black-tree": "^1.0.1",
|
||||
"ignore": "^5.2.0",
|
||||
"regexpp": "^3.2.0",
|
||||
"semver": "^7.3.7",
|
||||
"tsutils": "^3.21.0"
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/parser": {
|
||||
"version": "5.33.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.33.1.tgz",
|
||||
"integrity": "sha512-IgLLtW7FOzoDlmaMoXdxG8HOCByTBXrB1V2ZQYSEV1ggMmJfAkMWTwUjjzagS6OkfpySyhKFkBw7A9jYmcHpZA==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/scope-manager": "5.33.1",
|
||||
"@typescript-eslint/types": "5.33.1",
|
||||
"@typescript-eslint/typescript-estree": "5.33.1",
|
||||
"debug": "^4.3.4"
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/scope-manager": {
|
||||
"version": "5.33.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.33.1.tgz",
|
||||
"integrity": "sha512-8ibcZSqy4c5m69QpzJn8XQq9NnqAToC8OdH/W6IXPXv83vRyEDPYLdjAlUx8h/rbusq6MkW4YdQzURGOqsn3CA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/types": "5.33.1",
|
||||
"@typescript-eslint/visitor-keys": "5.33.1"
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/type-utils": {
|
||||
"version": "5.33.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.33.1.tgz",
|
||||
"integrity": "sha512-X3pGsJsD8OiqhNa5fim41YtlnyiWMF/eKsEZGsHID2HcDqeSC5yr/uLOeph8rNF2/utwuI0IQoAK3fpoxcLl2g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/utils": "5.33.1",
|
||||
"debug": "^4.3.4",
|
||||
"tsutils": "^3.21.0"
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/types": {
|
||||
"version": "5.33.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.33.1.tgz",
|
||||
"integrity": "sha512-7K6MoQPQh6WVEkMrMW5QOA5FO+BOwzHSNd0j3+BlBwd6vtzfZceJ8xJ7Um2XDi/O3umS8/qDX6jdy2i7CijkwQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@typescript-eslint/typescript-estree": {
|
||||
"version": "5.33.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.33.1.tgz",
|
||||
"integrity": "sha512-JOAzJ4pJ+tHzA2pgsWQi4804XisPHOtbvwUyqsuuq8+y5B5GMZs7lI1xDWs6V2d7gE/Ez5bTGojSK12+IIPtXA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/types": "5.33.1",
|
||||
"@typescript-eslint/visitor-keys": "5.33.1",
|
||||
"debug": "^4.3.4",
|
||||
"globby": "^11.1.0",
|
||||
"is-glob": "^4.0.3",
|
||||
"semver": "^7.3.7",
|
||||
"tsutils": "^3.21.0"
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/utils": {
|
||||
"version": "5.33.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.33.1.tgz",
|
||||
"integrity": "sha512-uphZjkMaZ4fE8CR4dU7BquOV6u0doeQAr8n6cQenl/poMaIyJtBu8eys5uk6u5HiDH01Mj5lzbJ5SfeDz7oqMQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/json-schema": "^7.0.9",
|
||||
"@typescript-eslint/scope-manager": "5.33.1",
|
||||
"@typescript-eslint/types": "5.33.1",
|
||||
"@typescript-eslint/typescript-estree": "5.33.1",
|
||||
"eslint-scope": "^5.1.1",
|
||||
"eslint-utils": "^3.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"eslint-scope": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
|
||||
"integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"esrecurse": "^4.3.0",
|
||||
"estraverse": "^4.1.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@typescript-eslint/visitor-keys": {
|
||||
"version": "5.33.1",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.33.1.tgz",
|
||||
"integrity": "sha512-nwIxOK8Z2MPWltLKMLOEZwmfBZReqUdbEoHQXeCpa+sRVARe5twpJGHCB4dk9903Yaf0nMAlGbQfaAH92F60eg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/types": "5.33.1",
|
||||
"eslint-visitor-keys": "^3.3.0"
|
||||
}
|
||||
},
|
||||
"@ungap/promise-all-settled": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
|
||||
@@ -16168,6 +16580,16 @@
|
||||
"dev": true,
|
||||
"requires": {}
|
||||
},
|
||||
"eslint-plugin-tsdoc": {
|
||||
"version": "0.2.16",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.2.16.tgz",
|
||||
"integrity": "sha512-F/RWMnyDQuGlg82vQEFHQtGyWi7++XJKdYNn0ulIbyMOFqYIjoJOUdE6olORxgwgLkpJxsCJpJbTHgxJ/ggfXw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@microsoft/tsdoc": "0.14.1",
|
||||
"@microsoft/tsdoc-config": "0.16.1"
|
||||
}
|
||||
},
|
||||
"eslint-scope": {
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
|
||||
@@ -18681,6 +19103,12 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"jju": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz",
|
||||
"integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==",
|
||||
"dev": true
|
||||
},
|
||||
"js-green-licenses": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/js-green-licenses/-/js-green-licenses-3.0.1.tgz",
|
||||
@@ -21410,9 +21838,9 @@
|
||||
}
|
||||
},
|
||||
"semver": {
|
||||
"version": "7.3.5",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
|
||||
"integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
|
||||
"version": "7.3.7",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
|
||||
"integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lru-cache": "^6.0.0"
|
||||
@@ -22387,6 +22815,15 @@
|
||||
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
|
||||
"dev": true
|
||||
},
|
||||
"tsutils": {
|
||||
"version": "3.21.0",
|
||||
"resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
|
||||
"integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"tslib": "^1.8.1"
|
||||
}
|
||||
},
|
||||
"tunnel-agent": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
"generate:langfiles": "gulp generateLangfiles",
|
||||
"license": "gulp checkLicenses",
|
||||
"lint": "eslint .",
|
||||
"lint:fix": "eslint . --fix",
|
||||
"package": "gulp package",
|
||||
"prepare": "gulp prepare",
|
||||
"prepareDemos": "gulp prepareDemos",
|
||||
@@ -69,6 +70,7 @@
|
||||
"@blockly/dev-tools": "^4.0.2",
|
||||
"@blockly/theme-modern": "^2.1.1",
|
||||
"@hyperjump/json-schema": "^0.18.4",
|
||||
"@typescript-eslint/eslint-plugin": "^5.33.1",
|
||||
"@wdio/selenium-standalone-service": "^7.10.1",
|
||||
"chai": "^4.2.0",
|
||||
"clang-format": "^1.6.0",
|
||||
@@ -76,6 +78,7 @@
|
||||
"concurrently": "^7.0.0",
|
||||
"eslint": "^8.4.1",
|
||||
"eslint-config-google": "^0.14.0",
|
||||
"eslint-plugin-tsdoc": "^0.2.16",
|
||||
"google-closure-compiler": "^20220601.0.0",
|
||||
"google-closure-deps": "^20220502.0.0",
|
||||
"gulp": "^4.0.2",
|
||||
|
||||
Reference in New Issue
Block a user