Commit Graph

37 Commits

Author SHA1 Message Date
Christopher Allen
e11b5834e5 fix(tests): Enable --debug for test:compile:advanced; fix some errors (and demote the rest to warnings) (#5983)
* refactor(tests): Migrate tests/compile/main.js to goog.module

* feat(tests): Enable --debug for test:compile:advanced; demote errors

  * Enable the --debug flag when running the
    buildAdvancedCompilationTest gulp task.
  * Remove partialAlias diagnostic group from `JSC_ERROR`, demoting
    JSC_PARTIAL_NAMESPACE to warning.

  Reverts "Revert 'fix(tests): Enable --debug for test:compile:advanced;
  fix some errors (#5959)'".
2022-03-08 23:20:19 +00:00
Beka Westberg
2a0e54759d Revert "fix(tests): Enable --debug for test:compile:advanced; fix some errors (#5959)"
This reverts commit 88334bea80.
2022-03-01 15:31:44 -08:00
Christopher Allen
88334bea80 fix(tests): Enable --debug for test:compile:advanced; fix some errors (#5959)
* Enable the --debug flag when running the
  buildAdvancedCompilationTest gulp task.
* Migrate test/compile/main.js to goog.module.
  * Use more selective goog.requires.
    * Reduces compiled size from ~400k to ~370k.
  * @suppress "extra" requires needed for side effects.
2022-03-01 16:30:58 +00: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
Christopher Allen
3d7262fed2 fix(tests): Fix & reenable the advanced compilation test (#5781)
* fix(test): Fix advanced compilation test

- Fix loading of blocks in `tests/compile/main.js` caused by
  recent `goog.module`-ification work.
- Fix problem caused by ADVANCED_OPTIMISATIONS renaming the Msg
  property on the fake Blockly object created by the
  translation-loading hack in `blockly.js`.

* chore(build): Reenable advanced compilation test

Fixes #5602.
2021-12-03 10:14:19 -08:00
Christopher Allen
985af10f6e 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.
2021-11-29 17:50:17 +00:00
Christopher Allen
beefe361a3 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.
2021-11-08 18:35:38 +00:00
Rachel Fenichel
e8d95c9137 Remove compile.sh 2021-04-13 14:28:54 -07:00
alschmiedt
9a93ca486f Fix advanced compilation tests for Q1 2021 release (#4709) 2021-03-17 15:46:17 -07:00
Monica Kozbial
408319823e Remove references to removed test_blocks.js (#4173)
* Remove test blocks reference from compile tests.

* Remove test blocks reference from compile script
2020-08-18 16:33:57 -07:00
Sam El-Husseini
02d5f6e4e9 Deprecated advanced compilation script and add deprecation warning (#4021) 2020-07-06 14:09:45 -07:00
Sam El-Husseini
9e7f3b07e9 Advanced compilation fixes (#3995)
* Advanced compilation fixes
2020-06-25 11:59:03 -07:00
Neil Fraser
4e2f8e6e02 Use SPDX licences.
This is a followup to #3127.
At the time, SPDX licenses were pending approval by Google.
2020-02-11 13:27:20 -08:00
alschmiedt
7e34d94610 Fixes blockly games blocks being black (#3579)
* Fixes blockly games blocks being black
2020-01-13 13:34:29 -08:00
Neil Fraser
cd1d18b7a0 STRICT is no longer supported by Closure Compiler
Apparently 'PRUNE' is the new option, but it's undocumented.  More info:
https://github.com/google/blockly-games/issues/176
2020-01-06 11:04:24 -08:00
Neil Fraser
4d25193ead Add extern for goog. (#3417)
As of closure-compiler-v20191027.jar the compile now breaks due to a lack of ‘goog’ being defined.

../../temp_core/constants.js:24: ERROR - [JSC_UNDEFINED_VARIABLE] variable goog is undeclared
goog.provide('Blockly.constants');
^^^^

1 error(s), 0 warning(s)
Compiler exit code: 1
Compilation FAIL.

Upgrade closure compiler to v20191027
2019-11-09 08:10:30 -08:00
Sam El-Husseini
6d8f22f39a Add a lint plugin to ensure we only use ES5 syntax. (#3160)
* Add a lint plugin to ensure we only use ES5 only syntax.
2019-10-21 21:26:26 -04:00
Neil Fraser
3556f69233 Messages are no longer compiled in. 2019-10-20 08:26:35 -07:00
Neil Fraser
b46a4fe286 Bring our license format up to date (#3127)
* Google changed from an Inc to an LLC.

This happened back in 2017 but we didn’t notice.  Officially we should update files from Inc to LLC when they are changed as part of regular edits, but this is a nightmare to remember for the next decade.

* Remove project description/titles from licenses

This is no longer part of Google’s header requirements.  Our existing descriptions were useless (“Visual Blocks Editor”) or grossly obselete (“Visual Blocks Language”).

* License no longer requires URL.

* Fix license regexps.
2019-10-02 14:46:56 -07:00
Neil Fraser
ddb8e46b87 Make flyouts be optional modules.
No Blockly instances need both Horizontal and Vertical flyouts.  Dropping one of these saves 2 KB.  Some don’t need flyouts at all (e.g. Blockly Games Puzzle or readonly documentation blocks).
2019-09-23 22:02:59 -07:00
Neil Fraser
ebdaf4dd46 Remove now unneeded requires from compile test. 2019-09-18 13:38:44 -07:00
Neil Fraser
51fedc6fdb Fix compiled test. (#3030) 2019-09-16 17:05:45 -07:00
Neil Fraser
ff33d923a2 Fix compile test.
(partially)
LGTM in person by Sam.
2019-09-16 16:15:34 -07:00
Neil Fraser
d6cb6b9832 Remove last @export tag (#3010)
* Remove last @export tag
2019-09-12 17:01:51 -07:00
Sam El-Husseini
8ab51c8639 Remove closure base file dependency (#2976)
* Trim down closure's base dependency even further by removing the dependency on closure's base file.
2019-09-11 17:30:51 -07:00
alschmiedt
493470807d Remove check for renderer name from build and compile scripts (#2842) 2019-08-16 11:03:40 -07:00
alschmiedt
579363e67a Fix compile (#2759)
* Adds ability to have multiple folders in core
2019-08-01 09:01:49 -07:00
Sam El-Husseini
8d72f713a5 Fix the local npm compiler build script (#2698)
The google closure compiler has moved the java compiler into it's own package under google-closure-compiler-java. Updating paths to reflect that.
2019-07-24 11:08:54 -07:00
Rachel Fenichel
cd275ca67b Add debug rendering to playground 2019-07-23 16:15:20 -07:00
Neil Fraser
52b6ce18a5 Fix unit tests 2019-07-08 13:29:43 -07:00
Neil Fraser
459961c3cb Replace Element constants with Node constants.
Element constants apparently don’t exist in IE or Edge.  Node constants apparently do.
2019-05-29 10:45:54 -07:00
Neil Fraser
5cf52c566a Fix a dozen compiler warnings. 2019-05-17 16:48:40 -07:00
Andrew n marshall
a3dfd0553d tests/compile/compile.sh improvements (#1874)
tests/compile/compile.sh improvements
 * Allow running from either Blockly root or local dir.
 * Allow the use of npm google-closure-library.
 * Log compiler/library versions
 * Log full *compiler*.jar filename. Limit to one match.
 * Add npm instructions for both compiler and library.
 * Minor stylistic polish.
2018-05-17 12:10:35 -07:00
Andrew n marshall
402f2bc38c Adding all blocks to the compilation. (#1877)
Correct the procedures require listed in the comment.
2018-05-17 11:51:54 -07:00
Andrew n marshall
f2b6c9a948 Work in progress (Needed a Travis run) (#1869)
Fix advanced compilation on Travis
2018-05-16 14:16:02 -07:00
Rachel Fenichel
42cb962cef Apply review feedback. 2018-04-11 15:26:05 -07:00
Neil Fraser
82705923cb Convert compile demo into a unit test. (#1360)
* Intentionally break Travis.

* Alphabetize tests, remove orphaned test, and add fail to test that's running.

* Unbreak test, disable OS X, move scripts, list compiler directory.

* Test Java, break test.

* Unbreak test, call compile script.

* Compile main_compressed.js

* Run test command using bash.

* Fix path.

* Exclude node modules.

* Be more specific about JS files to compile.

* Test failure.

* Restore OSX, undo Blockly failure, remove compilation demo, add compilation test.

* Delete manual test files.

* Ignore downloaded/generated files.

* Whitespace cleanup.
2017-10-12 14:54:57 -07:00