Commit Graph

444 Commits

Author SHA1 Message Date
Christopher Allen
307ff71c21 refactor(build): Preparation for building TypeScript (#6205)
* chore(deps): Update closure/goog/base.js, add goog.js

  - Update base.js from the latest version (20220502.0.0).
  - Also copy over goog.js, which provides access to a suitable subset
    of goog.* via an importable module).

* chore(build): Split gulpfiles/config.js exports object

  This makes it possible for entries to depend on each other.

* chore(build): build config consistency

  - Reorder entries in gulpfiles.config.js to better match order they
    are used.
  - Have update_metadata.sh reference config.js and vice versa.

* refactor(build): Move deps.js (+ deps.mocha.js) from test/ to build/

  Once we start using tsc, deps.js will be created based on the ouptut
  of tsc rather than the raw source in core/.  Since tsc will need to
  be run before running closure-make-deps and also before trying to
  load blockly_uncompressed.js, it doesn't really make sense to check
  in deps.js; it's better to re-create as needed.

  To reduce inconvenience, a new "prepare" script is added to
  package.json which will run the buildDeps gulp target automaticaly
  when one runs npm install.

* refactor(build): Always build from TypeScript sources

  - Add buildJavaScript gulp task to use tsc to compile any .ts files
    in core/ into build/src/core/ (and also copy any .js files that
    are not yet migrated to TypeScript, which for now is all of them.
  - Remove closure/goog from explicit inputs to tsc; it will find
    the files it needs (e.g., goog.js) automatically.
  - Have buildDeps, the playground, and all the tests that run in
    uncompiled mode use build/src/core/ instead of core/ as their
    input directory.

* feat(build): Add buildJavaScriptAndDeps gulp task

  Have npm run build:deps (and npm run prepare) use a new gulp task,
  buildJavaScriptAndDeps, to run tsc followed by closure-make-deps,
  ensuring that deps.js is calculated based on the most recent code
  in core/.

* fix(build): Fix implementation of flattenCorePaths

  Even though this function is going away I want to remove it in
  a separate PR so that we can revert easily if desired.  But the
  previous checked-in code was totally wrong.  This version works.

* fix(build): Don't let checkinBuilt copy build/src/**

  Now that we are putting a lot more stuff in build/ (specifically,
  all the tsc output in build/src/), modify checkinBuilt so that it
  only copies the specific things we want to check in (for now):

  - _compressed.js build artifacts and their accompanying .js.maps
  - the generated build/msg/js/*.js language files.

  Unrelatedly, also fix safety-quoting of arguments for one execSync
  call.
2022-06-14 22:20:42 +01:00
gregdyke
8b69b61c56 fix: json hooks for lists blocks not needing extra state (#6177) 2022-06-03 11:37:21 -07:00
gregdyke
0afff23d49 fix: json serialize lists_getIndex with json extraState (#6136) (#6170)
* fix: json serialize lists_getIndex with json extraState (#6136)

* address review comments

* fix: move block tests to mocha/block folder
2022-05-24 19:12:03 -07:00
alschmiedt
adb5ad1f3f feat: creates a new way to add shortcut key mappings (#6122) 2022-05-13 10:43:20 -07:00
Neil Fraser
63ca83b545 chore: Make startsWith faster (#6118)
by using built-in function (polyfill will handle IE).
2022-04-27 15:25:07 -07:00
Tobias Weinert
45c36f8982 fix: JSON deserialization fails (bug #6091) (collapsed procedure call… (#6103)
* fix: JSON deserialization fails (bug #6091) (collapsed procedure call blocks)

* fix: JSON deserialization fails (bug #6091) changed fix, added tests (collapsed procedure call blocks)
2022-04-27 08:00:47 -07:00
Aaron Dodson
edc2a5cd0c fix: Fix compilation errors under Closure's strict mode (#6073)
* fix: Fix errors under strict compilation.

* fix: Fix tests that referenced properties converted to data attributes.

* fix: Incorporate feedback on resolving compiler errors.

* refactor: Revert changes to skew and translate attributes.

* refactor: Introduce LegacyContextMenuOption type to correspond to documented fields.

* refactor: Introduce PathLeftShape and PathDownShape vs casting to PuzzleTab/Notch.

* chore: Added nullability modifiers to type annotations.

* refactor: Export FlyoutItem directly.

* chore: clang-format renderers/zelos/drawer.js.
2022-04-19 14:17:17 -07:00
Beka Westberg
c4a25eb3c4 fix: revert "Delete events should animate when played (#5919)" (#6031)
* Revert "Delete events should animate when played (#5919)"

This reverts commit bce4c5e2c6.

* fix: lint in screenshot
2022-03-29 11:47:50 -07:00
Beka Westberg
c4308007bc fix: always rename caller to legal name (#6014)
* fix: always rename caller to legal name

* fix: enable tests for non-matching callers which overlap names getting renamed

* fix: remove TODOs
2022-03-21 15:38:23 -07:00
YAMADA Yutaka
85ce3b82c6 fix: comments not being restored when dragging (#6011)
* fix comment deserialization

* add restore comment test

* Fix comment.

* fix: Modify test structure.
2022-03-21 07:51:51 -07:00
Maribeth Bottorff
0b2bf3ae9d feat: make mocha fail if it encounters 0 tests (#5981) 2022-03-16 17:16:06 -07:00
Beka Westberg
01d45972d4 fix: revert converting test helpers to es modules (#5982)
* Revert "fix: lint"

This reverts commit 050956d105.

* Revert "fix: run mocha as a module"

This reverts commit 4dac25ae99.

* Revert "move to modules, but break mocha"

This reverts commit 220d7bbd1d.
2022-03-09 07:38:37 -08:00
Maribeth Bottorff
7d250fa9cf feat: add mocha failure messages to console output (#5984)
* feat: add mocha failure messages to console output

* fix: line up the messages
2022-03-07 18:55:11 -08:00
Beka Westberg
2edd228117 fix: move test helpers from samples into core (#5969)
* fix: move core test helpers into new directory

* fix: add test helpers to core and convert to goog modules

* fix: change tests to use local helpers

* fix: change local tests to use chai asserts

* fix: skip field tests in serializer b/c test blocks are unavailable

* fix: rename some helper files

* fix: rename some helper modules

* fix: split block helpers into code gen and serialization

* fix: split block defs into new helper file

* fix: split warning helpers into new file

* fix: split user input helpers into new file

* fix: split event helpers into a new file

* fix: split variable helper into new file

* fix: move remaining test helpers to new setup-teardown file

* fix: rename setup and teardown module

* fix: cleanup from rebase

* fix: undo accidental rename

* fix: lint?

* fix: bad toolbox definitions namespace

* fix: fixup warning helpers

* fix: remove inclusion of dev-tools in mocha tests

* move to modules, but break mocha

* fix: run mocha as a module

* fix: lint
2022-03-04 13:10:03 -08:00
Maribeth Bottorff
6841ccc99f feat: Allow developers to set a custom tooltip rendering function. (#5956)
* refactor: refactor tooltip show method

* refactor: make Tooltip a class that is accessed via a singleton

* revert: "refactor: make Tooltip a class that is accessed via a singleton"

This reverts commit b3d543cc35.

* feat: add the ability to set a custom tooltip function

* fix: check for null where it matters for types

* feat: Add a test for the custom tooltip function

* fix: fix formatting

* fix: format test

* fix: remove unnecessary teardown call in test
2022-03-03 17:23:02 -08:00
Beka Westberg
fa14e9d6de refactor: convert blocksvg and block to ES6 classes (#5952)
* refact: move super call to top of block svg

* refact: run conversion script on block svg and block

* fix: make debug build happy

* fix: tests

* style: format

* fix: cleanup from rebase

* fix: use new.target instead of a new parameter

* fix: add more overridden casted methods to BlockSvg

* style: fix typos

* style: move override tags to the end of JSDoc

* fix: cleanup from rebase
2022-02-28 09:48:37 -08:00
Beka Westberg
cb4521b645 refactor: Convert fields to ES6 classes (#5943)
* refactor: Initial test at refactoring fields to ES6

* refact: reorganize text input and descendants to call super first

* refact: run conversion script on text input field and subclasses

* clean: cleanup fields post-conversion script

* refact: reorganize dropdown and variable fields to call super first

* refact: run class conversion script on dropdown and variable

* clean: clean fields post conversion script

* refact: reorganize misc fields to call super first

* refact: run conversion script on misc fields

* clean: cleanup misc fields after conversion

* fix: add setting the value and whatnot back to the base field. Pass sentinel conistently

* format

* refact: work on making debug compiler happy

* clean: finish making debug build happy

* fix: work on making tests happy

* fix: finish making tests happy

* Fix: fixup angle and multiline fields

* clean: format

* fix: move default value back to DEFAULT_VALUE

* fix: change SENTINEL to SKIP_SETUP

* fix: inline docs

* fix: some misc PR comments

* fix: format

* fix: make compiler hapy with new.target

* fix: types in FieldDropdown

* fix: add @final annotations to Field

* feat: move Sentinel to a utils file

* fix: remove ImageProperties from external API

* clean: cleanup chunks and deps
2022-02-28 08:59:33 -08:00
Christopher Allen
5078dcbc6d refactor(blocks)!: Rename Blockly.blocks.* modules to Blockly.libraryBlocks.* (#5953)
...and rename Blockly.blocks.all (blocks/all.js) to
Blockly.libraryBlocks (blocks/blocks.js

BREAKING CHANGE: (only) because the exports object from the
`blocks_compressed.js` chunk will be accessed as
`Blockly.libraryBlocks` instead of `Blockly.blocks.all` when the
chunk is loaded in a browser via a `<script>` tag.  There will
be no changes visible when the chunk is loaded via ES module
`import` or CJS `require`.
2022-02-23 21:25:52 +00:00
Rachel Fenichel
f1148f1732 refactor: convert registry files to es6 classes (#5940)
* refactor: convert shortcut registry to es6 class

* refactor: convert context menu registry to es6 class

* refactor: convert registry type to es6 class

* chore: format

* chore: respond to PR comments
2022-02-18 11:36:41 -08:00
Neil Fraser
bce4c5e2c6 Delete events should animate when played (#5919)
Same as PR #5640, except for the addition of a parameter in the JSON to turn this on or off.  While one would normally want animations/sounds on (e.g. undo/redo stack) sometimes they'd be annoying (e.g. events from realtime collaborators).
2022-02-11 14:20:10 -08:00
Rachel Fenichel
29fb7b7893 refactor: convert leaf event classes to es6 classes (#5870)
* chore(tests): update event assert functions to pass in types directly

* refactor: move event types from prototypes to constructors

* refactor: convert events/events_block_change.js to ES6 class

* refactor: convert events/events_block_create.js to ES6 class

* refactor: convert events/events_block_delete.js to ES6 class

* refactor: convert events/events_block_drag.js to ES6 class

* refactor: convert events/events_block_move.js to ES6 class

* refactor: convert events/events_click.js to ES6 class

* refactor: convert events/events_comment_change.js to ES6 class

* refactor: convert events/events_comment_create.js to ES6 class

* refactor: convert events/events_comment_delete.js to ES6 class

* refactor: convert events/events_comment_move.js to ES6 class

* refactor: convert events/events_marker_move.js to ES6 class

* refactor: convert events/events_selected.js to ES6 class

* refactor: convert events/events_theme_change.js to ES6 class

* refactor: convert events/events_toolbox_item_select.js to ES6 class

* refactor: convert events/events_trashcan_open.js to ES6 class

* refactor: convert events/events_ui.js to ES6 class

* refactor: convert events/events_var_create.js to ES6 class

* refactor: convert events/events_var_delete.js to ES6 class

* refactor: convert events/events_var_rename.js to ES6 class

* refactor: convert events/events_viewport.js to ES6 class

* chore: rebuild

* chore: run clang-format
2022-01-12 09:29:30 -08:00
Christopher Allen
ec6bf32ade chore(deps): Remove dependency on babel-eslint; simplify eslintrc for mocha tests (#5794)
* chore(deps): Remove deprecated babel-lint package

  When dependabot submitted PR #5791, it became apparent that eslint
  version >= 8 is incompatible with babel-eslint v10.1.0 despite the
  latter not having a version restriction against it.  This is probably
  because v10.1.0 is the last version of the package before it was
  deprecated and renamed @babel/eslint-parser.

  A little more investigation determined that there is no longer any
  need to have eslint use a non-default parser for tests/mocha/**/*.js,
  so the most straight forward solution is just to remove the dependency
  entirely.

* refactor(tests): Simplify tests/mocha/.eslintrc.json

  Remove all rules that seem to be redundant with our top-level
  .eslintrc.json.

  This finishes reverting most of the changes made in PR #4062.
2021-12-10 10:08:39 +00:00
Maribeth Bottorff
7784eac9be chore!: Add deprecation notices to values in blockly.js (#5555)
* Add deprecation warnings and reorganize blockly.js

* Update usages of deprecated properties

* chore: make dates consistent, remove extra function

* chore: run clang-format and fix lint

* chore: add more  tags

* chore: fix updated location of Align types

* chore: fix deprecated usages in tests

* chore: rebuild deps

* chore: fix moved Align types in demos and tests

* chore: update which properties are actually deprecated

* chore: don't deprecate Blockly.selected.
2021-12-08 18:16:13 -08:00
alschmiedt
c93e1dfd30 deprecate!: removes deprecated connection functions (#5713) 2021-12-02 18:21:21 -08:00
Christopher Allen
c0d22f2002 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.
2021-11-29 21:59:48 +00:00
Mark Friedman
da3df70f6f 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
2021-11-24 17:03:21 -08:00
Rachel Fenichel
5deed5a194 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
2021-11-17 08:39:00 -08:00
Christopher Allen
335ff199d7 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
2021-11-17 00:04:45 +00:00
Rachel Fenichel
969fcac455 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
2021-11-15 15:59:27 -08:00
Rachel Fenichel
d11cc047a4 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
2021-11-10 10:18:36 -08:00
Rachel Fenichel
1ebec55393 chore: apply prefer-const rule fixes in mocha tests (#5682) 2021-11-05 14:25:33 -07:00
Rachel Fenichel
3eb5c95478 fix: bad order of checks for setting flyout visibility (#5681)
* chore: fix redeclares in tests

* fix: bad order of checks for setting flyout visibility
2021-11-05 12:07:38 -07:00
Tim Gates
6c0c81d2f8 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`.
2021-11-02 17:44:40 -07:00
Rachel Fenichel
0ae10fe516 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
2021-10-26 11:02:36 -07:00
Rachel Fenichel
52c0427d85 chore: run eslint--fix for no-var rule in tests/mocha (#5637) 2021-10-25 11:37:23 -07:00
Aaron Dodson
3851b14627 refactor: Migrate to named exports (#5623)
* refactor: Migrate to named exports

* fix: Sort requires

* fix: Remove duplicate deps
2021-10-20 15:53:23 -07:00
alschmiedt
2b34748e0e chore: remove declareLegacyNamespace from events (#5532)
- Adds an extra events/utils.js file to hold helper methods related to events.
2021-09-24 14:20:32 -07:00
Christopher Allen
16b6d4526a 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.
2021-09-24 19:12:03 +01:00
kozbial
57ccb1e14a Remove unecessary block variable block definition 2021-09-23 12:31:55 -07:00
kozbial
e2e8ece9ae Update test block in trashcan_test to not trigger warning log 2021-09-23 12:31:55 -07:00
kozbial
4efdd72a24 Update captureWarnings usages to assertWarnings 2021-09-23 12:31:55 -07:00
kozbial
b331d780d1 Initialize generators in generator tests 2021-09-23 12:31:55 -07:00
kozbial
f3e8c25a50 Catch warnings logged during registry test 2021-09-23 12:31:55 -07:00
kozbial
5f72a61b2d Remove unecessary deprecation warnings stubs 2021-09-23 12:31:55 -07:00
Neil Fraser
fd917f42b8 Migrate core/field_angle.js to to goog.module syntax (#5521)
Move angle picker field to goog module and ES6.
2021-09-23 09:37:23 -07:00
alschmiedt
73580b0ddb chore: named exports for keyboard_nav* files (#5517) 2021-09-22 11:25:38 -07:00
alschmiedt
cf091351d8 chore: remove deprecateLegacyNamespace from keyboard nav files
* chore: Remove deprecateLegacyNamespace & fix tests

* chore: export from the blockly file
2021-09-21 17:18:34 -07:00
Aaron Dodson
66e6b6218a Make several exported private fields/methods TEST_ONLY (#5479) 2021-09-21 08:13:38 -07:00
Beka Westberg
e954193009 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
2021-09-20 13:08:35 -07:00
Beka Westberg
0e0c5fea0e 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
2021-09-20 13:08:35 -07:00