Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add Blockly.Extensions.isRegistered function #5500

Merged
merged 2 commits into from
Oct 7, 2021

Conversation

aaimio
Copy link
Contributor

@aaimio aaimio commented Sep 18, 2021

The basics

  • I branched from develop
  • My pull request is against develop
  • My code follows the style guide

The details

Resolves

Proposed Changes

Adds a Blockly.Extensions.isRegistered function.

I'm using the block-plus-mins plugin which attempts to Blockly.Extensions.unregister an extension called controls_if_mutator. That extension only exists if you import everything from Blockly (default blocks etc.). However, In my project I'm importing Blockly as:

import * as Blockly from "blockly/core";

which means the controls_if_mutator extension is not there.

Currently, any call to Blockly.Extensions.unregister will put a warning in the developer console (if the extension doesn't exist).

Screenshot from 2021-09-18 21-57-07

Behavior Before Change

If attempting to unregister an extension that isn't registered, it will emit a warning to the developer's console.

Behavior After Change

This change will allow us to update the block-plus-mins plugin to check whether an extension is registered before unregistering it, so we can prevent the console.warn from happening.

Reason for Changes

Please see Proposed changes.

Test Coverage

N/A

@aaimio aaimio requested a review from a team as a code owner September 18, 2021 14:05
@aaimio aaimio requested a review from BeksOmega September 18, 2021 14:05
@google-cla
Copy link

google-cla bot commented Sep 18, 2021

Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

📝 Please visit https://cla.developers.google.com/ to sign.

Once you've signed (or fixed any issues), please reply here with @googlebot I signed it! and we'll verify it.


What to do if you already signed the CLA

Individual signers
Corporate signers

ℹ️ Googlers: Go here for more info.

@google-cla google-cla bot added the cla: no Used by Google's CLA checker. label Sep 18, 2021
@aaimio
Copy link
Contributor Author

aaimio commented Sep 18, 2021

@googlebot I signed it!

@google-cla google-cla bot added cla: yes Used by Google's CLA checker. and removed cla: no Used by Google's CLA checker. labels Sep 18, 2021
@aaimio aaimio force-pushed the blockly-extensions-is-registered branch from 997f981 to 696506e Compare September 22, 2021 02:30
@moniika moniika requested review from moniika and removed request for BeksOmega October 4, 2021 16:32
Copy link
Contributor

@moniika moniika left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR!

This change looks good to me, it just needs to be updated with the latest changes from develop. This quarter we did a large refactor to migrate to closure modules and the syntax and style of declaring functions has changed slightly.

If it easier to create a new PR, I can also review that instead.

@moniika moniika self-assigned this Oct 6, 2021
Copy link
Contributor

@moniika moniika left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've manually resolved the merge conflict, no action needed.
Thanks again for the PR!

@moniika moniika merged commit 2b1f33c into google:develop Oct 7, 2021
@aaimio
Copy link
Contributor Author

aaimio commented Oct 12, 2021

Thank you @moniika!

LionKenedi95 added a commit to varwin/blockly that referenced this pull request Jan 10, 2022
* feat: add top level `save` and `load` functions for JSO serialization (#5132)

* Add top-level serialization API

* Add using JSO system in serializer tests

* Make compiler happy

* feat: add deserialization of JSO block state (#5137)

* Fixup tests

* Add deserialization of blocks

* Cleanup

* PR commnts

* feat: add initialization of blocks and event firing (#5166)

* Change playground to use JSO system

* Add tests for initialization and events

* Add initialization of blocks

* PR Comments

* fix: touch up some deserialization behavior (#5181)

* Add parameter for recording undo.

This sets up the most common default behavior, but also makes it clear
to people that it is happening, because it might not be expected.

* Add grouping of events

* Add text width caching

* Add disabling workspace resizing

* Add performance optimizations

* Respect nulls from blocks.save

* Cleanup from rebase

* PR Comments

* Cleanup from rebase

* feat: upgrade block defs to have JSO serialization hooks (#5329)

* Respect nulls from blocks.save

* Upgrade list blocks to use JSO serialization

* Upgrade logic blocks to use JSO serialization

* Upgrade math blocks to use JSO serialization

* Upgrade text blocks to use JSO serialization

* Upgrade procedure blocks to use JSO serialization

* Add more mutator tests

* Fix firing enabled events

* PR Comments

* Add throwing exceptions during deserialization (#5200)

* Add exception definitions

* Add tests for throwing errors during deserialization

* Add actually throwing exceptions

* Cleanup

* Cleanup

* Fix tests

* fix: PR Comments

* feat: add serialization and deserialization of comments (#5216)

* Add tests for (de)seralizing icons

* Add logic for (de)serializing icons

* fix: add docs for saveIcons

* fix: add timeout for setting comment visible

* Add serializing shadows as JSOs for the JSO system (#5246)

* Move existing tests into new suite

* Add tests for setShadowState

* Add assertions for serialization

* Unskip serialization tests

* Add logic to handle shadows in both systems

* Uncomment tests

* fix: add access modifiers to new comment funcs

* fix: fixup types

* fix: remove addNextBlocks = true

* feat: add real child of shadow errors

* fix: types

* fix: insertion markers and change events to work with JSO hooks (#5378)

* fix: add tests for fixing change events

* fix: change events and insertion markers

* fix: build:

* fix: remove duplicate code

* fix: requires

* feat: adds hooks for serializing plugins (#5276)

* Reformat registry tests

* Add tests for plugin hooks

* Add plugin hooks for serialization

* Switch PluginSerializer to IPluginSerializer

* fix: types

* fix: PR comments

* fix: tests

* cleanup: formatting

* fix: types

* feat: add respecting case in registry

* feat: add separate registry for serializers

* fix: rename serialiation registry alias

* fix: move serializer interface into interface dir

* fix: remove some attributes from the JSO system (#5356)

* fix: remove some attributes from the JSO system

Remove the deletable, movable, and editable attributes.
Normally this would be a breaking change, but because this isn't
released yet it's just a patch.

* fixup: serializer tests

* feat: add throwing errors for bad shadows (#5330)

* fix: add throwing errors for bad shadows

* tests: add tests for setShadowDom

* fix: redo disconnect from shadow bug

* fix: not being able to specifying variable names in toolbox (#5408)

* fix: not being able to specifying variable names in toolbox

* fix: id -> ID

* feat: add support for defining toolboxes using pure json (#5392)

* feat: add recycling to core

* feat: add support for json block definitions in flyout

* tests: reorganize tests

* tests: add tests for generating contents

* Fixup reycling

* tests: add tests for recycling

* fix: types

* fix: lint

* fix: PR comments

* fix: creating blocks from flyout

* test: add test block to playground

* fix: types

* feat: add support for enabled

* fix: serializing edited shadows (#5424)

* fix: serializing shadows

* tests: add tests for serializing editted shadows

* fix: cereal backwards compatibility (#5421)

* fix: remove duplicate serialization hook implementations

* feat: add backwards compatibility to field serialization

* feat: add support for serializing old mutator hooks

* fix: build

* fix: refactor field changes into helpers

* fix: typo

* fix: removing xmlns

* tests: add tests for serialization and deserialization of mutator hooks

* fix: switch to early returns

* fix: copy paste with json system (#5423)

* fix: copy paste w/ json system

* fix: pr comments

* fix: dragging blocks from the flyout that only have XML hooks (#5422)

* fix: positioning of flyout blocks

* fix: move flyout to JSON system

* cleanup: remove test code from playground

* fix: loading blocks in RTL

* fix: create and delete events, and the trashcan (#5425)

* fix: create and delete events with JSON serialization

* fix: trashcan with JSON serialization

* fix: build

* fix: tests

* fix: PR comments

* fix: types

* fix: tests

* fix: update code demo to include JSON (#5444)

* fix: update code demo to include JSON

* fix: do property renames

* fix: change XML to place holder

* fix: PR comments

* fix: dragging variables from flyout (#5434)

* fix: dragging variables from flyout

* fix: rename positionBlock_ to positionNewBlock_

* fix: type

* fix: try alternative method for handling variables in flyout

* fix: project cereal cleanup (#5398)

* fix: make exception constructors package

* fix: rename blocks.load to blocks.append

* fix: inline docs

* fix: consistency in block serialization

* fix: remove unexported functions

* fix: interface requires

* fix: tag TODO with issue number

* fix: remove eslit disables

* chore: rebuild deps after rebase

* Make several exported private fields/methods TEST_ONLY (#5479)

* refactor: Remove remaining references to Blockly.* from goog.modules (#5505)

* Fix jsdoc in core/utils/useragent.js

* Fix jsdoc in core/serialization/variables.js

* chore: remove deprecated functions (#5509)

* Remove declareLegacyNamespace from block-related files.

* fix: enable missingRequire in build_tasks (#5510)

* chore: remove deprecateLegacyNamespace from keyboard nav files

* chore: Remove deprecateLegacyNamespace & fix tests

* chore: export from the blockly file

* chore: named exports for block* files (#5512)

* chore: named export for block.js

* chore: named export for block_drag_surface.js

* chore: named export for block_dragger.js

* chore: named export for block_svg.js

* Fix import ordering

* chore: fix imports using requireType

* Remove extra require

* Remove references to fully qualified namespace

* Remove duplicate declaration

* Fix bug in variable_map that was introduced during merge conflict resolving

* chore: named exports for keyboard_nav* files (#5517)

* chore: update dev tools dev dependency (#5516)

* Update package-lock.json

* fix: JSDoc generation for modules without classes

* fix: updates the release task to build typings for msgs (#5495)

* Migrate core/field_angle.js to to goog.module syntax (#5521)

Move angle picker field to goog module and ES6.

* chore: Remove declareLegacyNamespace() from toolbox/ files

* Remove unecessary deprecation warnings stubs

* Catch warnings logged during registry test

* Initialize generators in generator tests

* Remove usage of deprecated method in onKeyDown handler

* Update captureWarnings usages to assertWarnings

* Update test block in trashcan_test to not trigger warning log

* Remove unecessary block variable block definition

* chore: Remove declareLegacyNamespace() from field_* files

* chore: Remove declareLegacyNamespace() from files in core (#5525)

* chore: Remove declareLegacyNamespace() from files in core

* fix: Update missing/errant re-exports in blockly.js

* chore: Remove declareLegacyNamespace() from theme files

* refactor: Rename Blockly.connectionTypes to Blockly.ConnectionType (#5407)

* Renamed Blockly.connectionTypes to Blockly.ConnectionType
* Renamed core/connection_types.js to connection_type.js
* Add entry to renamings.js for renaming of Blockly.connectionTypes

Co-authored-by: Christopher Allen <cpcallen+git@google.com>

* chore: Remove declareLegacyNamespace from renderers (#5528)

* chore: Remove declareLegacyNamespace from Geras renderer

* chore: Remove declareLegacyNamespace from minimalist renderer

* chore: Remove declareLegacyNamespace from thrasos renderer

* chore: Remove declareLegacyNamespace from zelos renderer

* fix: Move debugger functionality out of Blockly.blockRendering to avoid dependency cycle when re-exporting submodules

* chore: Remove declareLegacyNamespace from Blockly.blockRendering.*

* Fix typo

* chore: Remove declareLegacyNamespace() from files under interfaces/*

* refactor: Migrate `Blockly.ConnectionType` to named exports (#5533)

* refactor: Migrate Blockly.ConnectionType to named exports
* Add corresponding information to renamings.js

* Reexport global.globalThis as Blockly.utils.global (#5534)

Fixes #5503

This makes the value of Blockly.utils.global the same as it was
before PR #5451.

* refactor: Rename `Blockly.Blocks`, migrate to named exports (#5515)

* Rename Blockly.Blocks to Blockly.blocks
  Because it does not export a type as its default export.

  Part of #5073.

* Name default export of Blockly.blocks Blocks.

  Use named exports in Blockly.blocks by giving the former default
  export the name Blocks.

  Part of #5153.

* Reexport Blockly.blocks from blockly.js

* Document the format of renamings.js better.

* chore: remove declareLegacyNamespace from events (#5532)

- Adds an extra events/utils.js file to hold helper methods related to events.

* Fix typo in alias

* fix: Add hack to copy accessors to global Blockly namespace object (#5536)

Ugly, but it works.

* fix: blocks dragged from RTL flyout being incorrectly positioned

* fix: infinite loop when using defineProperties (#5549)

* Add namespace and alias annotations to jsdoc (#5550)

* Add annotations to files under core/events

* Add annotations to files under core/interfaces

* Add annotations to files under core/keyboard_nav

* Add annotations to files under core/renderers

* Add annotations to files under core/serialization

* Add annotations to files under core/theme

* Add annotations to files under core/toolbox

* Add annotations to files under core/utils

* Add annotations to files under core

* Add missing @alias annotations (#5559)

* Update @package annotations (#5558)

* Add JSDoc to theme classes. (#5551)

* Add JSDoc to theme classes.

* Add missing alias annotations (#5561)

* chore: Rollup of all Q3 message changes (#5564)

Courtesy of Translatewiki

* Replace namespace annotation with class annotation in files that define a class (#5566)

* fix: JSDoc improvments for accessors, etc. (#5567)

* fix: Revert removal of documentation for get/set accessors.
  
  This partially reverts commit 839cb7b,
  "fix: infinite loop when using defineProperties (#5549)"

* docs: Use @name to attach JSDocs to accessors

  Reintroduce documentation for deprecated properties where it was
  removed when converting them to accessors.

* docs: Remove duplicate @package declarations

* fix: Fix eslint and compiler errors/warnings

* fix: Minor JSDoc tweaks to address comments on PR #5567

* fix: Use require instead of requireType for interfaces (#5568)

But only if the interface is used in an @implements or @extends
declaration.

Fixes #5450

* fix: Fix JS Spaghetti button. (#5569)

* fix: RTL copy-paste and duplicate (#5560)

* fix: Fix Block Factory preview (#5571)

It's OK to modify the contents of Blockly.Blocks, but it's not OK
to try to replace this export with a completely different object.

Fixes #5556

* chore: rebuild for release (#5573)

* chore: Bump @wdio/selenium-standalone-service from 7.13.0 to 7.13.2 (#5546)

Bumps [@wdio/selenium-standalone-service](https://github.com/webdriverio/webdriverio) from 7.13.0 to 7.13.2.
- [Release notes](https://github.com/webdriverio/webdriverio/releases)
- [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webdriverio/webdriverio/compare/v7.13.0...v7.13.2)

---
updated-dependencies:
- dependency-name: "@wdio/selenium-standalone-service"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: Bump mocha from 9.1.1 to 9.1.2 (#5574)

Bumps [mocha](https://github.com/mochajs/mocha) from 9.1.1 to 9.1.2.
- [Release notes](https://github.com/mochajs/mocha/releases)
- [Changelog](https://github.com/mochajs/mocha/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mochajs/mocha/compare/v9.1.1...v9.1.2)

---
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix: Fix errors in injected CSS (#5587)

* feat: add Blockly.Extensions.isRegistered function (#5500)

Co-authored-by: Monica Kozbial <6621618+moniika@users.noreply.github.com>

* chore: Run clang-format on core/*.js (#5589)

* Run clang-format on core/*.js

* Revert changes for css formatting

* fix: Make update_metadata.sh work on macOS (#5590)

* fix: clear dropdown div before rendering content (#5429)

* Changes Css.register API to accept string param (#5472)

* Chnages Css.register API to accept string param

* Address self review comments and nits

* Fix code-comment

* Address minor review comments and nits

* Allow passing an array of strings when registering CSS

* Fix lint errors

Co-authored-by: Aaron Dodson <adodson@google.com>

* Add Croatian to Code demo (#5583)

Contributed courtesy of Lidija Kralj.

* chore: Convert == to === and != to !== where possible. (#5599)

* Remove @author tags (#5601)

Our files are up to a decade old, and have churned so much, that the initial author of the file no longer has much meaning.

Furthermore, this will encourage developers to post to the developer group, rather than emailing Googlers (usually me) directly.

* fix: Don't kludge accessors in compiled mode (#5591)

In compiled mode we don't need to add exports to the global Blockly
object because they'll already be there - and attempting to do so
causes problems when a project imports multiple separate copies of
Blockly (which it shouldn't, but many plugins do).

This is part of the fix for google/blockly-samples#902.

* chore: Bump google-closure-compiler from 20210601.0.0 to 20211006.0.0 (#5592)

* Bump google-closure-compiler from 20210601.0.0 to 20211006.0.0

Bumps [google-closure-compiler](https://github.com/google/closure-compiler-npm) from 20210601.0.0 to 20211006.0.0.
- [Release notes](https://github.com/google/closure-compiler-npm/releases)
- [Commits](https://github.com/google/closure-compiler-npm/compare/v20210601.0.0...v20211006.0.0)

---
updated-dependencies:
- dependency-name: google-closure-compiler
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Remove deleted option from Closure Compiler arguments

The closure compiler no longer supports the undefinedNames warning
group (and indeed even prior to deletion it didn't do anything for
some time).

Per @lauraharker, enabling checkVars, missingProperties and
strictMissingProperties gives about the same check coverage; we
already enable the first two, while the third was already listed
but commented out for the time being.

* Provide externs for base.js functions

Per comment: fixes compiler errors from build:debug.

* Fix erroneous import

Blockly.serialization.ISerializer uses named exports, so we need to
destructure the import.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Christopher Allen <cpcallen+git@google.com>

* fix: group context menu collapse blocks events (#5501)

* Add Croatian to Code demo (#5583) (#5611)

Contributed courtesy of Lidija Kralj.

* fix: Positioning of pasted/duplicated blocks in LTR workspaces (#5613)

* Bump yargs from 16.2.0 to 17.2.1 (#5603)

Bumps [yargs](https://github.com/yargs/yargs) from 16.2.0 to 17.2.1.
- [Release notes](https://github.com/yargs/yargs/releases)
- [Changelog](https://github.com/yargs/yargs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/yargs/yargs/compare/v16.2.0...v17.2.1)

---
updated-dependencies:
- dependency-name: yargs
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump webdriverio from 7.13.0 to 7.14.1 (#5594)

Bumps [webdriverio](https://github.com/webdriverio/webdriverio) from 7.13.0 to 7.14.1.
- [Release notes](https://github.com/webdriverio/webdriverio/releases)
- [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webdriverio/webdriverio/compare/v7.13.0...v7.14.1)

---
updated-dependencies:
- dependency-name: webdriverio
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump mocha from 9.1.2 to 9.1.3 (#5616)

Bumps [mocha](https://github.com/mochajs/mocha) from 9.1.2 to 9.1.3.
- [Release notes](https://github.com/mochajs/mocha/releases)
- [Changelog](https://github.com/mochajs/mocha/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mochajs/mocha/compare/v9.1.2...v9.1.3)

---
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: update dependabot messages and labels (#5618)

* Bump concurrently from 6.2.0 to 6.3.0 (#5581)

Bumps [concurrently](https://github.com/open-cli-tools/concurrently) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/open-cli-tools/concurrently/releases)
- [Commits](https://github.com/open-cli-tools/concurrently/compare/v6.2.0...v6.3.0)

---
updated-dependencies:
- dependency-name: concurrently
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): Bump google-closure-deps from 20210601.0.0 to 20210808.0.0 (#5360)

Bumps [google-closure-deps](https://github.com/google/closure-library) from 20210601.0.0 to 20210808.0.0.
- [Release notes](https://github.com/google/closure-library/releases)
- [Commits](https://github.com/google/closure-library/compare/v20210601...v20210808)

---
updated-dependencies:
- dependency-name: google-closure-deps
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump typescript from 4.3.2 to 4.4.4 (#5617)

Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.3.2 to 4.4.4.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.3.2...v4.4.4)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: create release.yml (#5588)

* Create release.yml

* chore: update release.yml

* refactor: Migrate to named exports (#5623)

* refactor: Migrate to named exports

* fix: Sort requires

* fix: Remove duplicate deps

* chore: auto-fix violations of comma-dangle rule (#5625)

* chore: replace var with const and let in blocks directory (#5626)

* chore: use const and let in blocks/lists.js

* chore: use const and let in blocks/logic.js

* chore: use const and let in blocks/loops.js

* chore: use const and let in blocks/math.js

* chore: use const and let in blocks/procedures.js

* chore: use const and let in blocks/text.js

* chore: use const and let in blocks/variables_dynamic.js

* chore: use const and let in blocks/variables.js

* fix: updateShape_ variable scoping

* fix: declarations in switch clauses

* other: change while loops to for loops

* fix: fix violation of no-cond-assign

* chore: runs clang format on all files (#5627)

* Bump selenium-standalone from 7.1.0 to 8.0.3 (#5632)

Bumps [selenium-standalone](https://github.com/webdriverio/selenium-standalone) from 7.1.0 to 8.0.3.
- [Release notes](https://github.com/webdriverio/selenium-standalone/releases)
- [Changelog](https://github.com/webdriverio/selenium-standalone/blob/main/HISTORY.md)
- [Commits](https://github.com/webdriverio/selenium-standalone/compare/v7.1.0...v8.0.3)

---
updated-dependencies:
- dependency-name: selenium-standalone
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: Update deps.js with modified lang values (#5636)

This updates should have been included in PR #5626 but were apparently
omitted (and the omission not noted by the code reviewer either!)

* chore: replace more uses of var with const and let (#5628)

* chore: fix uses of var in core/block_dragger

* chore: fix uses of var in core/extensions.js

* chore: fix uses of var in core/field_multilineinput.js

* chore: fix uses of var in assorted core files

* chore: fix uses of var in node test runner and playground screenshot code

* fix: undefined return from measureFontMetrics

* fix: violations of no-const-assign

* chore: only one variable declaration per line

* chore: run eslint--fix for no-var rule in tests/mocha (#5637)

* chore: adds a check for properly formatted files (#5624)

* chore: add check for clang format

* chore: updates clang format script

* fix: Change Marker in blockly.js  becuase of the usage of the Marker class as a named export (#5629)

Fixed marker as per style guide and the export of tabnavigator as well.

Fixes #5606.

* chore: replace var with let and const in mocha tests (#5638)

* chore: replace var with let and const in mocha tests

* chore: change let to const in changed lines

* fix: Fix mutators when compiled with renames. (#5644)

Previous code not compatible with advanced compilation since 'mutationToDom' and other function names were hardcoded in strings.

* chore: update generators/dart.js to const and let (#5646)

* Add feedback on expiry page. (#5648)

Blank pages are bad for confirming anything happened.

* Bump @wdio/selenium-standalone-service from 7.13.2 to 7.16.1 (#5635)

Bumps [@wdio/selenium-standalone-service](https://github.com/webdriverio/webdriverio) from 7.13.2 to 7.16.1.
- [Release notes](https://github.com/webdriverio/webdriverio/releases)
- [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webdriverio/webdriverio/compare/v7.13.2...v7.16.1)

---
updated-dependencies:
- dependency-name: "@wdio/selenium-standalone-service"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: update dependabot messages and labels (#5653)

The same as #5618, but against master because dependabot ignores changes on develop.

* chore: replace var with const and let in python block generators (#5650)

* chore: replace var with const and let in python block generators

* chore: update test deps

* chore: update bracket usage in switch statements

* chore: update language generators to const and let (#5647)

* chore: update generators/javascript.js to const and let

* chore: update generators/lua.js to const and let

* chore: update generators/php.js to const and let

* chore: update generators/python.js to const and let

* chore: update var to const and let in dart block generators (#5654)

* chore: adds an action to assign reviewers from requested reviewers(#5642)

* fix(zelos): typo (#5649)

* Bump selenium-standalone from 8.0.3 to 8.0.4 (#5651)

Bumps [selenium-standalone](https://github.com/webdriverio/selenium-standalone) from 8.0.3 to 8.0.4.
- [Release notes](https://github.com/webdriverio/selenium-standalone/releases)
- [Changelog](https://github.com/webdriverio/selenium-standalone/blob/main/HISTORY.md)
- [Commits](https://github.com/webdriverio/selenium-standalone/compare/v8.0.3...v8.0.4)

---
updated-dependencies:
- dependency-name: selenium-standalone
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: Fix permissions for Assign requested reviewers workflow (#5666)

* refactor: Inline assign_reviewers script to avoid checkout

Per https://securitylab.github.com/research/github-actions-preventing-pwn-requests/
it is not safe to do a checkout of the submitter-supplied code
AND THEN RUN IT (via require).  This is pretty bad.

We want to give this script more permissions by running it
`on: [pull_request_target]` (instead of `pull_request`); this would
give it permission to modify the PR (e.g. add comments, change
assignment).  While it would be OK to do a checkout with default
parameters (which in `pull_request_target` would check out *our*
branch rather than the submitted one) it simplest just to inline
this small script and thereby obviate the need to do a checkout at all.

* chore: Give assign_reviewers action required permissions

Changing it from `on: [pull_request]` to `on: [pull_request_review]`
will give the action write access to our repository, allowing it to
change the assignment of the PR.

This is now safe as the script does not ever check out any
submitter-supplied code.

* docs: Comment tweaks for assign_reviewers.yml

* Normalize ++x to x++. (#5660)

There are only 10 instances of ++x in our codebase, compared with over 500 instances of x++.  The stlye guide has no opinion on which to use, nor do I.  But the lack of consistency was making regex searches for bugs more difficult.

* chore: Update dependabot labelling config (#5664)

Label all dependabot PRs as "PR: dependencies", following
@rachel-fenichel's recent rationalisation of issue/PR labels.

* fix: Don't crash when unable to post comment to PR (#5669)

... by not ever posting such comments from this workflow.

There will be a separate PR for the other workflow that does post
comments, because it needs to be in the master branch.

Part of #5659.

* chore: Create separate report_clang_format workflow in master branch (#5670)

The initial version of this workflow just uses `console.log` to report
the context of the `context` object.  It is hoped that there will
be enough information in this context to identify the PR to comment on,
without the `check_clang_format` workflow having to upload a
'build artefact' of some kind - see example of what I hoe to avoid
starting at `ReceivePR.yml` here:

https://securitylab.github.com/research/github-actions-preventing-pwn-requests/

A follow-up PR will (if possible) add the code to create comments
when `check_clang_format` fails.

Part of #5659.

* chore: Remove spurious extra `on` clause in report_clang_format.yml (#5671)

Removes an unwanted `on` clause that was overlooked in #5670 by author and reviewer.

* chore: More spelunking in GitHub Action data (#5673)

Looking for information about PR that triggered original
check_clang_format run.

* docs: Fix a few typos (#5655)

There are small typos in:
- closure/goog/base.js
- core/contextmenu_items.js
- core/insertion_marker_manager.js
- core/toolbox/collapsible_category.js
- demos/blockfactory/workspacefactory/wfactory_controller.js
- demos/blockfactory/workspacefactory/wfactory_view.js
- tests/mocha/field_colour_test.js

Fixes:
- Should read `updates` rather than `udpates`.
- Should read `unhighlighting` rather than `unhiglighting`.
- Should read `then` rather than `tehn`.
- Should read `modified` rather than `modifed`.
- Should read `different` rather than `diffferent`.
- Should read `currently` rather than `currenly`.
- Should read `browser` rather than `broswer`.

* chore: update javascript block generators to const and let (#5661)

* chore: update php block generators to const and let (#5663)

* Bump webdriverio from 7.14.1 to 7.16.3 (#5652)

Bumps [webdriverio](https://github.com/webdriverio/webdriverio) from 7.14.1 to 7.16.3.
- [Release notes](https://github.com/webdriverio/webdriverio/releases)
- [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webdriverio/webdriverio/compare/v7.14.1...v7.16.3)

---
updated-dependencies:
- dependency-name: webdriverio
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: update lua block generators to const and let (#5662)

* fix: isPrime block should cast str as num (#5680)

Fixes #5678

* fix: bad order of checks for setting flyout visibility (#5681)

* chore: fix redeclares in tests

* fix: bad order of checks for setting flyout visibility

* chore: applies fixes to clang format (#5677)

* chore: update the clang-format version

* chore: specify the clang format version to use

* chore: remove style tag since it will default to file

* chore: apply prefer-const rule fixes in mocha tests (#5682)

* chore: remove references to JSON extraction (#5683)

* chore: revert github action (#5675)

* fix: Don't try to set text fields to null on cancel (#5690)

Mobile users get a window.prompt as an input, if they press the cancel button the return value is null.  Don't attempt to set the value of the field to null.

Causes errors in the custom note field which inherits from FieldTextInput.  Detected in Blockly Games Music.

* fix: Don't try to set text fields to null on cancel (#5692)

Mobile users get a window.prompt as an input, if they press the cancel button the return value is null.  Don't attempt to set the value of the field to null.

Caused errors in the custom note field which inherits from FieldTextInput.  Detected in Blockly Games Music.

This PR is for the master branch and includes a recompile.  The develop branch has changed enough that a cherrypick from develop to master won't work.  The bug in question represents a significant number of the errors being reported from Blockly Games.

* fix!(blocks): Rename Blockly.Blocks.* modules to Blockly.blocks.* (#5696)

Use Blockly.blocks.* for blocks modules, leaving the Blockly.Blocks
name for the block dictionary object.

This resolves a problem with advanced compilation of Blockly Games,
 where, in the compressed output, (the minified name of)
 Blockly.Blocks gets overwritten, with the dictionary object defined in
 core/blocks.js being replaced by an empty namespace object
 created by the provides of Blockly.Blocks.* in blocks/*.js. Without
 this fix, some block definitions end up being created in the
 dictionary and some on the namespace object—with chaos
 predictably ensuing.

* chore: fix more lint (#5676)

* chore: fix assorted lint

* chore: clang-format

* chore: clang-format

* chore: add command to launch mocha tests (#5679)

* chore: update deps.js, deps.mocha.js (#5698)

* chore: fix more lint (#5700)

* chore: fix 918 violations of comma-dangle rule

* chore: fix 2 violations of comma-spacing

* chore: fix 13 violations of padded-blocks

* chore: fix 50 violations of block-spacing

* chore: fix one violation of semi-spacing

* chore: fix 4 violations of space-before-blocks

* chore: fix 38 violations of object-curly-spacing

* chore: fix 30 violations of key-spacing

* chore: fix 3 violations of quote-props

* chore: fix 5 violations of arrow-parens

* chore: fix 8 violations of no-tabs

* chore: allow uncommented helper functions in mocha tests

* chore: fix several more lint errors

* chore: tweak eslint configuration in core and tests

* chore: rebuild for tests

* fix: Quote Msg prop name to survive compile (#5703)

* chore(deps): bump webdriverio from 7.16.3 to 7.16.5 (#5701)

Bumps [webdriverio](https://github.com/webdriverio/webdriverio) from 7.16.3 to 7.16.5.
- [Release notes](https://github.com/webdriverio/webdriverio/releases)
- [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webdriverio/webdriverio/compare/v7.16.3...v7.16.5)

---
updated-dependencies:
- dependency-name: webdriverio
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Update dependabot.yml (#5705)

* chore(deps): bump http-server from 13.0.2 to 14.0.0 (#5657)

Bumps [http-server](https://github.com/http-party/http-server) from 13.0.2 to 14.0.0.
- [Release notes](https://github.com/http-party/http-server/releases)
- [Commits](https://github.com/http-party/http-server/compare/v13.0.2...v14.0.0)

---
updated-dependencies:
- dependency-name: http-server
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump @blockly/theme-modern from 2.1.19 to 2.1.24 (#5630)

Bumps [@blockly/theme-modern](https://github.com/google/blockly-samples/tree/HEAD/plugins/theme-modern) from 2.1.19 to 2.1.24.
- [Release notes](https://github.com/google/blockly-samples/releases)
- [Commits](https://github.com/google/blockly-samples/commits/@blockly/theme-modern@2.1.24/plugins/theme-modern)

---
updated-dependencies:
- dependency-name: "@blockly/theme-modern"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump webdriverio from 7.16.5 to 7.16.6 (#5704)

Bumps [webdriverio](https://github.com/webdriverio/webdriverio) from 7.16.5 to 7.16.6.
- [Release notes](https://github.com/webdriverio/webdriverio/releases)
- [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webdriverio/webdriverio/compare/v7.16.5...v7.16.6)

---
updated-dependencies:
- dependency-name: webdriverio
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump @wdio/selenium-standalone-service (#5708)

Bumps [@wdio/selenium-standalone-service](https://github.com/webdriverio/webdriverio) from 7.16.1 to 7.16.6.
- [Release notes](https://github.com/webdriverio/webdriverio/releases)
- [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webdriverio/webdriverio/compare/v7.16.1...v7.16.6)

---
updated-dependencies:
- dependency-name: "@wdio/selenium-standalone-service"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump concurrently from 6.3.0 to 6.4.0 (#5710)

Bumps [concurrently](https://github.com/open-cli-tools/concurrently) from 6.3.0 to 6.4.0.
- [Release notes](https://github.com/open-cli-tools/concurrently/releases)
- [Commits](https://github.com/open-cli-tools/concurrently/compare/v6.3.0...v6.4.0)

---
updated-dependencies:
- dependency-name: concurrently
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: Move functions from utils (#5706)

* chore: move functions from utils to more specific files

* chore: use new names for utils functions

* chore: run clang-format

* chore: add deprecation warnings back to utils.js

* chore: move remaining functions out of utils.js (#5714)

* chore: move arrayRemove to a new utils.array namespace

* chore: move getBlockTypeCounts out of utils.js

* chore: remove last functions from utils.js

* chore: reorder imports

* chore: add re-export for runAfterPageLoad

* refactor: Update uncompiled-mode dependency loading for playground, tests (#5715)

* chore: rename module Blockly.blocks.Lists to ....lists

All the other Blockly.blocks modules have lower-case names.  This
one being named with an upper-case initial appears to have been a
typo on my part.

This module name is not mentioned anywhere else in the source code
(though it will be soon!) so no other files need to be edited.
Further, it does not appear anywhere in the last release (which
before PR #5696) so it is not necessary to add an entry in
renamings.js for this change.

* chore(build): Rationalise deps.js, deps.mocha.js

* Include blocks/*.js (Blockly.blocks.*) in tests/deps.js, since
  these modules are used in the playground.  (They are goog.provide
  modules loaded via <script> tags, so their absence from deps.js
  does not cause errors - but it will when they are migrated to
  goog.module and must be loaded via goog.require.)

* Filter the entries in deps.mocha.js so that it includes only the
  additional mocha test modules (i.e. those not mentioned in deps.js
  already).

* refactor: Load blocks and generators using goog.require

* chore: fix or ignore remaining lint (#5709)

* chore: fix or ignore remaining lint

* chore: fix bad annotations

* chore: use push for array concatenation

* chore: revert use of spread for array operations

* chore: move remaining function definitions out of blockly.js (#5699)

* chore: move remaining function definitions out of blockly.js

* chore: record renamings

* chore: add aliases to moved function jsdoc

* chore: add deprecation warnings in blockly.js

* chore: fix bad merge

* chore: move functions in response to PR comments

* chore: move isNumber to utils.string

* chore: enable eslint-config-google (#5717)

* chore(deps): update package-lock.json

* chore(deps): install eslint-config-google as a dev dependency

* chore: enable eslint-config-google

* chore: fix missing commas

* chore: Record renamings for named exports (#5719)

* chore: make Blockly.common.setSelected package and update docs (#5728)

* chore: moves the public loop mixin into its own file (#5730)

* feat: Enable the creation of concurrent, but not connected, output and previous connectors (#5702)

* Add new connection checks and tests

* Enable concurrent output and previous connections on blocks

  * and remove assumption from unplug().

* Make changes compatible with new module system

* Fix issue do to Connection class change.

  . and change some var's to const's now that that appears to be ok ;-)

* Fix more code that assumes only one of output and previous connections

* Change function name as per PR comment

* Fix lint errors

* Fix clang format issues

* fix: Stop throwing error when PointerEvent.pageX is 0. (#5727)

The e.pageX (and .pageY) checks aren't strict enough.  0 is a perfectly valid coordinate.

Checking for the existence of changedTouches is an easier way to distinguish a PointerEvent from a TouchEvent.

* chore(deps): bump google-closure-deps from 20210808.0.0 to 20211107.0.0 (#5733)

Bumps [google-closure-deps](https://github.com/google/closure-library) from 20210808.0.0 to 20211107.0.0.
- [Release notes](https://github.com/google/closure-library/releases)
- [Commits](https://github.com/google/closure-library/compare/v20210808...v20211107)

---
updated-dependencies:
- dependency-name: google-closure-deps
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump google-closure-compiler (#5707)

Bumps [google-closure-compiler](https://github.com/google/closure-compiler-npm) from 20211006.0.0 to 20211107.0.0.
- [Release notes](https://github.com/google/closure-compiler-npm/releases)
- [Commits](https://github.com/google/closure-compiler-npm/compare/v20211006.0.0...v20211107.0.0)

---
updated-dependencies:
- dependency-name: google-closure-compiler
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(build): Use chunked compilation (#5721)

* chore(build): Add "all" modules for blocks & generators

These modules (Blockly.blocks.all and Blockly.<Generator>.all) will
be the entry points for the corresponding chunks.

They also make it easier to pull in all the modules in each package
(e.g. for playground and tests).

It is necessary to set the Closure Compiler dependency_mode to
SORT_ONLY as otherwise it tries to compile the "all" modules before
their dependencies, which fails.

The only impact on the _compressed.js files is the addition of a short
string to the very end of each file, e.g.:

    var module$exports$Blockly$JavaScript$all={};

* chore(deps): Add devDependency on closure-calculate-chunks

* feat(build): First pass at chunked complation

Add a new buildCompiled gulp target (npm run build:compiled) that
uses closure-calculate-chunks to do chunked compliation of core/,
blocks/ and generators/ all in a single pass.

This work is incomplete: the resulting *_compressed.js files don't
(yet) have UMD wrappers.

* chore(build): Generate chunk wrappers

A first pass; this does not have support for a namespace object yet.

* refactor(build): Use chunked compilation by default

Remove old "compressed" gulp tasks in favour of new "compiled" task.

* chore(build): Remove cruft from buildCompiled

Remove unneeded `done` parameter and commented-out options that had
been cargo-culted from the old build pipeline.

* fix(build): Fix test failures caused by new build pipeline

- Exclude closure/goog/base.js from compiler input; use
  externs/goog-externs.js instead.

- Have the build:debug and build:strict targets only build the first
  chunk (blockly_compressed.js).

- Fix namespace entries for blocks and generators.

* fix(build): Fix build failures on node v12

closure-calculate-chunks requires node.js v14 or later.

When running on node.js v14 or later have getChunkOptions save
the output of closure-calculate-chunks to
scripts/gulpfiles/chunks.json.  When running on older versions of
node.js have it use this checked-in, cached output instead of
attempting to run closure-calculate-chunks.

* chore(build): enable --rename_prefix_namespace

This will allow modules in blocks/ and generators/ to use
goog.require to obtain the exports object of goog.modules from
core/.

* fix(build): Always build all chunks

The previous commit enabled --rename_prefix_namespace option to
Closure Compiler, and this causes the buildCompressed target to
work fine when run without --debug or --strict, but adding either
of those flags (as for example when `npm test` runs
`npm run build:debug`) causes an issue:

- Because of many compiler errors in blocks/ and generators/,
  a previous commit added a hack to only build the first chunk
  when doing debug/strict builds.

- When asked to build only one chunk, Closure Compiler ignores the
  --rename_prefix_namespace flag, because it 'correctly' infers
  that there are no later chunks that will need to access global
  variables from the first chunk.

- This causes a test failure, because `npm test` first runs
  `npm run build`, which generates a valid blockly_compressed.js,
  but this is then overrwritten by an invalid one when it next runs
  `npm run build:debug`.

  (The invalid one is missing all `$.` prefixes on 'global' variables,
  including on Blockly, so the wrapper's last two lines -
  "$.Blockly.internal_ = $;" and "return $.Blockly" - fail.)

The fix is to add appropriate @suppress annotations to blocks/*.js and
generators/**/*.js and then remove the first-chunk-only hack.

* refactor(build): Just build once

Since the previous commit caused `npm run build:debug` to do
everything that `... build:compressed` does - and to produce
byte-for-byte identical output - it doesn't make sense to run
both when testing.  To that end:

- Replace the build:debug and build:strict package scripts that
  did `gulp buildCompressed --...` with new scripts build-debug
  and build-strict that do `gulp build --...` instead.

  (The target names are changed so as to extend our existing naming
  convention as follows: a target named "foo:bar" does some sub-part
  of the job done by target "foo", but a target named "foo-bar" does
  all the work of the target "foo" with some extra options.)

- build:debug:log and build:strict:log are similarly replaced with
  build-debug-log and build-strict-log.

- Modify run_all_tests.js to just do `npm run build-debug` instead of
  doing both `npm run build` and `npm run build:debug`.

- Also remove the 'build:blocks' script that should have been removed
  when the buildBlocks gulp task was deleted previously.

* refactor(build): Compile with base_minimal.js instead of base.js

Introduce a (very!) cut-down version of closure/goog/base.js named
base_minimal.js that is used as input to the compiler as an
alternative to using externs/goog-externs.js (which will be deleted
once the buildAdvancedCompilationTest target has been updated).

This will allow use of goog.setTestOnly since it will now exist in
compiled mode, and allows the changes made in 5b112db to filter
base.js out of the files for the first chunk to be reverted.
(It also obliges a change to the compiled-mode check in blockly.js.)

* fix(build): Fix buildAdvanceCompilationTest

- In build_tasks.js:
  - Replace the old compile() function with a new one factored out of
    buildCompiled().
  - Update buildAdvancedCompilationTest to use the new compile()
    and other helpers created in the meantime.
  - Remove no-longer-used maybeAddClosureLibrary().

- Remove externs/{block,generator,goog}-externs.js, which are no longer
  used by any compile pipeline.

- Update core/blockly.js to fix issue with detection of compiled mode
  when using ADVANCED_OPTIMISATIONS.

- Update only other use of globalThis, in core/utils/xml.js, to
  consistently treat it as a dictionary object.

- Update instructions in tests/compile/index.html.

This commit is sort-of-a-prerequisite to #5602; test:compile:advanced
was previously working but the generated `main_compresed.js` would
throw errors upon loading.

* refactor: Rename `ALIGN` to `Align` and move from `constants.js` to `input.js` (#5742)

This constant is used to specify the alignment of
an Input, so it should live in the same file as the Input class.

I've done this as a separate named export, but it could alternatively
be made a static member of Input (i.e., Input.Align with only Input
being exported by name).

Where mocha tests were referring to Blockly.constants.ALIGN.*
without actually requiring Blockly.constants, I have reverted
them to refer to Blockly.ALIGN_* instead (pending conversion
to named requries).

Part of #5073.

* Migrate `blocks/colour.js` to goog.module syntax (#5738)

* Migrate blocks/colour.js to goog.module

* Migrate blocks/colour.js named requires

This causes an apparently harmless reordering of the files for the
first chunk.

* clang-format blocks/colour.js

* chore(build): Update compiler & linter input language to ES2020 (#5745)

Also:

- Ensure that the `comma-dangle` rule will not be applied to
function parameter lists (even when multi-line).

- Update tests/node/.eslintrc.json to make the environment
node-specific and not pinned to es6.

* refactor: Migrate `blocks/procedures.js` to goog.module syntax (#5736)

* Migrate blocks/procedures.js to goog.module

* Migrate blocks/procedures.js named requires

* clang-format blocks/procedures.js

* chore: Factor common methods out of block definitions

  Addressing comments on PR #5736.

* refactor: Migrate `blocks/lists.js` to `goog.module` syntax (#5746)

* Migrate blocks/lists.js to goog.module

* Migrate blocks/lists.js named requires

* clang-format blocks/lists.js

* chore: fix missing requires in generators (#5744)

* chore: fix some missing requires in generators

* chore: fix missing requires in dart block generators

* chore: replace Blockly.isNumber with Blockly.utils.string.isNumber in generators

* chore: fix more missing requires in block generators

* feat: clarify variable and procedure constants (#5743)

* chore: move dynamic category names into their respective files

* feat: create NameType enum on Names

* chore: use NameType enum for Names helper functions

* docs: update comments for category names

* refactor: Migrate `blocks/logic.js` to `goog.module` syntax (#5748)

* refactor: Migrate blocks/logic.js to goog.module

* refactor: Migrate blocks/logic.js named requires

* chore: clang-format blocks/logic.js

* fix: Prevent error when maxTrashcanContents is 0 (#5739)

* fix: Prevent error when maxTrashcanContents is 0

Resolves #5729.

* Eliminate ’smart’ quotes.

* refactor: migrate `generators/dart.js` to `goog.module` syntax (#5749)

* chore: migrate generators/dart.js to goog.module

* chore: migrate generators/dart.js to named requires

* chore: Update generators/dart.js to alphabetize imports

Co-authored-by: Christopher Allen <cpcallen+github@gmail.com>

Co-authored-by: Christopher Allen <cpcallen+github@gmail.com>

* chore: revert #5730 (#5740)

* chore: revert #5730

* fix: Fix compile failure due to incorrect visibility

The CONTROL_FLOW_IN_LOOP_CHECK_MIXIN is intended to be used outside of
blocks/ (it is, in particular, used in generators/) so it should have
been marked @public from the beginning.

* refactor: convert some js block generators to goog.module (#5750)

* chore: migrate generators/javascript/text.js to goog.module

* chore: convert generators/javascript/text.js to named requires

* refactor: convert generators/javascript/variables.js to goog.module

* refactor: convert generators/javascript/variables_dynamic to goog.module

* refactor: Migrate `blocks/loops.js` to `goog.module` syntax (#5755)

* refactor: Turn .getSurroundLoop into a (Block) method

  This considerably simplifies the code in the genrators, obviating
  the need for generators to import Blockly.Constants.Loops, and
  allowing the compiler to remove blocks/loops.js from the first
  (Blockly) chunk of the compilation.

  (The latter could and should have been arranged by making the
  generator chunks depend on the blocks chunk, but that is no longer
  necessary.)

* refactor: Migrate blocks/loops.js to goog.module

* refactor: Migrate blocks/loops.js named requires

* chore: clang-format blocks/loops.js

* fix: procedure callers now remove inputs properly (#5751)

* refactor: convert generators/javascript/procedures.js to goog.module (#5754)

* refactor: convert generators/javascript/procedures.js to goog.module

* refactor: convert generators/javascript/procedures.js to named requires

* chore: run clang-format

* refactor: convert some js block generators to goog.module (#5756)

* refactor: convert generators/javascript/colour.js to goog.module

* refactor: convert generators/javascript/colour.js to named requires

* chore: run clang-format

* refactor: convert generators/javascript/lists.js to goog.module

* refactor: convert generators/javascript/lists.js to named requires

* chore: run clang-format

* refactor: convert generators/javascript/logic.js to goog.module

* refactor: convert generators/javascript/logic.js to named requires

* chore: run clang-format

* refactor: convert genereators/javascript/math.js to goog.module

* refactor: convert generators/javascript/math.js to named requires

* chore: rebuild deps.js

* refactor: convert generators/javascript/loops.js to goog.module (#5758)

* refactor: convert generators/javascript/loops.js to goog.module

* refactor: convert generators/javascript/loops.js to named requires

* chore: run clang-format

* chore: rebuild deps.js

* refactor: convert some block generators to goog.module (#5762)

* refactor: convert generators/javascript.js to goog.module

* refactor: convert generators/javascript.js to named requires

* chore: run clang-format

* refactor: convert generators/dart/variables.js to goog.module

* refactor: convert generators/dart/variables.js to named requires

* chore: run clang-format

* refactor: convert generators/dart/variables_dynamic.js to goog.module

* refactor: convert generators/dart/variables_dynamic.js to named requires

* refactor: convert generators/dart/text.js to goog.module

* refactor: convert generators/dart/text.js to named requires

* chore: run clang-format

* refactor: convert generators/dart/procedures.js to goog.module

* refactor: convert generators/dart/procedures.js to named requires

* chore: run clang-format

* refactor: convert generators/dart/math.js to goog.module

* refactor: convert generators/dart/math.js to named requires

* chore: run clang-format

* refactor: convert generators/dart/loops.js to goog.module

* refactor: convert generators/dart/loops.js to named requires

* chore: run clang-format

* refactor: convert generators/dart/logic.js to goog.module

* refactor: convert generators/dart/logic.js to named requires

* chore: run clang-format

* refactor: convert generators/dart/lists.js to goog.module

* refactor: convert generators/dart/lists.js to named requires

* chore: run clang-format

* refactor: convert generators/dart/colour.js to goog.module

* refactor: convert generators/dart/colour.js to named requires

* chore: rebuild deps.js

* chore: lint

* refactor: Migrate `blocks/math.js` to `goog.module` syntax (#5765)

* refactor: Migrate blocks/math.js to goog.module

* refactor: Migrate blocks/math.js named requires

* chore: clang-format blocks/math.js

* refactor: convert some block generators to goog.module (#5769)

* refactor: convert generators/lua/colour.js to goog.module

* refactor: convert generators/lua/colour.js to named requires

* chore: run clang-format

* refactor: convert generators/lua/lists.js to goog.module

* refactor: convert generators/lua/lists.js to named requires

* chore: run clang-format

* fix: use getListIndex helper function in lua list generators

* refactor: convert generators/lua/logic.js to goog.module

* refactor: convert generators/lua/logic.js to named requires

* chore: run clang-format

* refactor: convert generators/lua/loops.js to goog.module

* refactor: convert generators/lua/loops.js to named requires

* chore: run clang-format

* refactor: convert generators/lua/math.js to goog.module

* refactor: convert generators/lua/math.js to named requires

* chore: run clang-format

* refcator: convert generators/lua/procedures.js to goog.module

* refactor: convert generators/lua/procedures.js to named requires

* chore: run clang-format

* chore: rebuild deps.js

* refactor: convert generators/lua/text.js to goog.module

* refactor: convert generators/lua/text.js to named requires

* refactor: convert generators/lua/variables_dynamic.js to goog.module

* refactor: convert generators/lua/variables_dynamic.js to named requires

* chore: run clang-format on text.js

* refactor: convert generators/lua/variables.js to goog.module

* refactor: convert generators/lua/variables.js to named requires

* chore: run clang-format

* chore: make a lua generator function internal

* chore: rebuild deps.js

* refactor: convert some block generators to goog.module (#5770)

* refactor: convert generators/lua.js to goog.module

* refactor: convert generator/lua.js to named requires

* chore: run clang-format

* refactor: convert generators/php/colour.js to goog.module

* refactor: convert generators/php/colour.js to named requires

* chore: run clang-format

* refactor: convert generators/php/lists.js to goog.module

* refactor: convert generators/php/lists.js to named requires

* chore: run clang-format

* refactor: convert generators/php/logic.js to goog.module

* refactor: convert generators/php/logic.js to named requires

* chore: run clang-format

* refactor: convert generators/php/loops.js to goog.module

* refactor: convert generators/php/loops.js to named requires

* chore: run clang-format

* refactor: convert generators/php/math.js to goog.module

* refactor: convert generators/php/math.js to named requires

* chore: run clang-format

* refactor: convert generators/php/procedures.js to goog.module

* refactor: convert generators/php/procedures.js to named requires

* chore: run clang-format

* refactor: convert generators/php/text.js to goog.module

* refactor: convert generators/php/text.js to named requires

* chore: run clang-format

* refactor: convert generators/php/variables.js to goog.module

* refactor: convert generators/php/variables.js to named requires

* chore: run clang-format

* refactor: convert generators/php/variables_dynamic.js to goog.module

* refactor: convert generators/php/variables_dynamic.js to named requires

* refactor: convert generators/php.js to goog.module

* refactor: convert generators/php.js to named requires

* chore: run clang-format

* chore: rebuild deps.js

* refactor: convert python block generators to goog.module (#5771)

* refactor: convert generators/python/colour.js to goog.module

* refactor: convert generators/python/colour.js to named requires

* chore: run clang-format

* refactor: convert generators/python/lists.js to goog.module

* refactor: convert generators/python/lists.js to named requires

* chore: run clang-format

* refactor: convert generators/python/logic.js to goog.module

* refactor: convert generators/python/logic.js to named requires

* chore: run clang-format

* refactor: convert generators/python/loops.js to goog.module

* refactor: convert generators/python/loops.js to named requires

* chore: run clang-format

* refactor: convert generators/python/math.js to goog.module

* refactor: convert generators/python/math.js to named requires

* chore: run clang-format

* refactor: convert generators/python/procedures.js to goog.module

* refactor: convert generators/python/procedures.js to named requires

* chore: run clang-format

* refactor: convert generators/python/text.js to goog.module

* refactor: convert generators/python/text.js to named requires

* chore: run clang-format

* refactor: convert generators/python/variables_dynamic.js to named requires

* refactor: convert generators/python/variables.js to named requires

* chore: run clang-format

* refactor: convert generators/python.js to goog.module

* refactor: convert generators/python.js to named requires

* chore: run clang-format

* chore: remove spurious @private annotations

* chore: rebuild

* refactor: Migrate `blocks/text.js` to `goog.module` syntax (#5766)

* refactor: Migrate blocks/text.js to goog.module

* refactor: Migrate blocks/text.js named requires

* refactor: Factor out common properties of text_prompt* blocks

* clang-format blocks/text.js

* fix: Fix lint warnings for PR #5766

* chore: correctly updates the compiled flag (#5767)

* refactor: msg.js: use named export, remove declareLegacyNamespace (#5768)

* chore: Remove declareLegacyNamespace from serialization folder (#5757)

* refactor: Migrate `blocks/variables.js` to `goog.module` syntax (#5774)

* refactor: Migrate blocks/variables.js to goog.module

* refactor: Migrate blocks/variables.js named requires

* chore: clang-format blocks/variables.js

* chore: JSDoc grammar correction

* feat: make checkAndDelete a public API (#5772)

* fix: the advanced playground to work with dec 2021 release (#5775)

* chore: updates the names for parsing (#5778)

* chore: Simplify NPM package wrappers, improve chunk wrapper generator (#5777)

* chore: Clean up NPM package module wrappers

  - Slightly improve documentation for each file based on helpful
    explanations given by @samelhusseini.

  - Removed redundant code---e.g., loading `javascript_compressed.js`
    creates and sets Blockly.JavaScript as a side effect, so there is
    no need to set `Blockly.JavaScript = BlocklyJavaScript` in
    `dist/javascript.js` (generated from `scripts/package/javascript.js`).
  - Remove possibly harmful code---e.g., `Blockly.Msg` is initialised
    with a null-prototype object in `blockly_compressed.js` and that
    initial object should under no circumstances be replaced.
  - Remvoe downright misleading code---e.g., `dist/blocks.js` previously
    _appeared_ to replace Blockly.Blocks with an empty object, but in
    fact the `Blockly` name referred at that point to the exports object
    from `blocks_compressed.js`, which would randomly get a useless
    `{}`-valued `.Blocks` property tacked on to it; similarly, code in
    `dist/browser.js` (generated from `scripts/package/browser/index.js`)
    appeared to copy definitions from `BlocklyBlocks` to `Blockly.Blocks`,
    but the former would always be (the aforementioned) empty object,
    making this code ineffective.

* chore: Improve chunk definition / UMD generation

  Make several improvements to the chunks global and chunkWrapper
  function:

  - Document chunk definition format (and improve the names of
    of the documented properties).

  - Replace the chunk `.namespace` property with two others:
    - `.exports` names the variable/property to be returned by the
      factory function, and which will be set on the global object if
      the module is loaded in a browser.
    - `.importAs` names the parameter that this chunk's exports value
      is to be passed to the factory function of other chunks which
      depend on this one.  (This needs to be different because e.g.
      `Blockly.blocks` is not a valid parameter name.)

  - Change the definition for the blocks chunk to export Blockly.Blocks
    (i.e., the block definition dictionary) as blocks_compressed.js
    did previous to PR #5721 (chunked compilation), rather than the
    (empty and soon to vanish) Blockly.blocks namespace object.

    This is a win for backwards compatibility, though it does mean that
   …
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cla: yes Used by Google's CLA checker.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants