* feat(build): Make build tasks invoke their prerequisites
- Divide gulp targets into three kinds: main sequence,
manually invokable, and script-only. The first two categories
automatically invoke their prerequisites.
- Give (most of) the affected gulp targets shorter and more memorable
names that could become their npm script names in future.
* feat(build): Make package tasks invoke their prerequisites
Have the package task invoke the cleanBuildDir (as well as
cleanPackageDir) and build tasks. Remove the checkBuildDir
task as it is now redundant since a fresh build is done every
time.
* feat(build): Make git tasks invoke their prerequisites
* feat(build): Make cleanup, license [sic] tasks invoke their prerequisites
Turns out they don't have any, so this commit just classifies
their gulp targets according to the established scheme.
* feat(build): Make appengine tasks invoke their prerequisites
In this case prepareDeployDir will eventually depend on package
but does not for now.
* feat(build): Have npm scripts run npm ci first where applicable
Have any npm script that have external effects (e.g. publishing an
npm package, pushing a new version to appengine, or updating GitHub
Pages) start by running npm ci to ensure that all dependencies are
up-to-date with respect to package-lock.json.
(This is done by npm and not a gulp script because gulp itself
might need updating. So might npm, but that is less likely to
make any difference to what gets published/pushed.)
* chore(build): have tests use package target
Have the tests just run the package target (with debug flags)
since that runs the the build target automatically.
* feat(tests): Write Closure Compiler output directly to dist/
Since they are already UMD-wrapped, have Closure Compiler write
output chunks directly to RELEASE_DIR, i.e. dist/.
* chore(tests): Use freshly-build files in compressed mode.
Use the freshly-built build/*_compresssed.js files when bootstrapping
in compressed mode, rather than using the checked-in files in the
repository root.
This helps ensure that compressed and uncompressed mode will be
testing (as closely as possible) the same code.
Obsoletes #6218 (though the issues discussed there have not actually
yet been addressed in this branch).
* chore(build): Write intermediate langfiles to build/msg
Write the results of create_messages.py to build/msg instead of
build/msg/js.
* fix(build): Use build/msg/en.js instead of msg/messages.js in tests
This has no direct effect but fixes a long-standing misdesign
where we are testing against the input to, rather than the output
of, the language file processing pipeline.
* feat(demos): Use freshly-built files
Use the freshly-built dist/*_compresssed.js and build/msg/* files
rather than using the checked-in files in the repository root.
This helps ensure that these demos are using the most recent
version of Blockly (even in the develop branch).
* fix(build): Update appengine deployment to include built files
Modify the prepareDemos task as follows:
- Use the git index instead of HEAD, so that most local changes
will be applied (without copying whatever .gitignored cruft
might be in the local directory).
- Run clean and build and then copy build/msg and
dist/*_compressed.js* to the deploy directory.
This fixes the problem created by the previous commit, wherein the
demos relied on built files that were not being deployed to
appengine.
* fix(build): Update GitHub Pages deployment to include built files
Modify the updateGithubPages task to run clean and build and
then git add build/msg dist/*_compressed.js*, so that they will
be included in the deployed pages.
This fixes the problem created by the previous^2 commit,
wherein the demos relied on built files that were not being
deployed to GitHub Pages.
* chore(build): Remove build products from repository
Remove *_compressed.js* and msg/js/* from the blockly repository.
Also remove the now-obsolete checkinBuilt gulp task.
* chore(build): Apply relevant changes to test_tasks.js
Apply changes made to run_all_tests.sh and check_metadata.sh to
the corresponding parts of their JS replacements in
test_tasks.js.
* chore(build): Make updates suggested in PR #6475
- Remove `clean:builddir` and `clean:releasedir` - `clean`
is sufficient.
- Remove duplicate `require` from `appengine_tasks.js`.
* feat(build): Use shorter npm script names
Since scripts that run build tasks now automatically run their
prerequisite tasks, the previous naming scheme of task `build`
running all the `build:subtask`s no longe really makes very
much sense.
Additionally, following a chat discussion, there seems to be a
rough consensus to use "messages" to refer to the .json input
files, and "langfiles" to the generated .js output files.
Consequently, simplify npm script names by renaming as follows:
- "generate:langfiles" -> "messages"
- "build:langfiles" -> "langfiles"
- "build:js" -> "tsc"
- "build:deps" -> "deps"
- "build:compiled" -> "minify"
- "build:compressed": delete this synonym for "build:compiled",
("minify" was chosen as agnostic to Closure Compiler vs. WebPack.)
* chores(build): Add deprecation notice for old scripts
To reduce potential confusion/frustration, restore the previous
npm scripts but have them display a deprecation notice instead
(note that npm prints the script contents before running it, so
echo is not needed).
* docs(build): Add comments distinguishing 'messages' from 'langfiles'
* chore: remove underscores from properties and methods in comment.ts
* chore: remove some underscores from icon-related classes
* chore: cleanup
* chore: respond to PR feedback
* chore: catch one more bit of PR feedback
* chore: restructure constructor to improve annotations
* chore: clean up scrollbar disposal
* chore: remove underscores from private properties and methods in scrollbar
* chore: clean up comment
* build: build/test on windows
* chore(deps): bump @hyperjump/json-schema from 0.18.4 to 0.18.5
* chore(deps): add gulp-gzip 1.4.2
* build: migrate test scripts to gulp task (test_tasks.js)
* build: not to use the grep command
* build: normalize path
* fix: Modified based on review suggestions.
* Add JSDoc comment
* Line length <= 80 characters.
* Formatting test output as previously.
* Always continue even if a test unit fails.
* Suppress the gulp messages.
* Fix test_tasks.js to pass eslint.
* fix: Modified based on review suggestions.
* Change generator test output directory.
* Formatting test output as previously.
* fix: Formatting test output as previously.
* fix: Modified based on review suggestions.
* fix: expand the IParameterModel interface
* fix: remove support for return types from the concrete procedure model
* feat: add an interface for the procedure map, and add getting procedures
* fix: add procedure map to workspace
* chore: format
* fix: add name parameter to procedure model to match parameter model
* chore: format
* chore: fix comments
Merge changes made in the master branch since the v9.0.0 release
(specifically, updating the version number to 9.0.1 and correcting an
error in renamings.json5) so as to reduce the liklihood of merge
conflicts when we next release (by merging from develop to master).
There were conflicts in
* core/field_angle.ts
* core/field_dropdown.ts
* core/field_variable.ts
that were due to having cherry-picked changes from develop into master for
the 9.0.1 release; these were "resolved" by resetting those files to the
develop version, since the "changes" thereby lost were just adapting the
cherry-picks to fit code in master that had not had various intermediate
PRs applied to it yet.
Similarly, conflicts in blockly_compressed.js and .js.map were "resolved"
by restting those files; I note that we could do a rebuild to update
the pre-built files in develop but they will soon be deleted anyway,
and in any case rebuilding them would not make them the same as the
9.0.1 release as many other PRs have landed in the meantime.
A conflict in package-lock.json was resolved by resetting that file to the
develop version and then running npm install to update package-lock.json
with the change to the blockly version number.
* chore: add tests for the backing variable of parameter models
* chore: update existing procedure map tests
* chore: update block update tests to use refactored API
* chore: update tests to actually use fluent API
* chore: format
* chore: fix tests
* chore: reorganize tests
* chore: format
* chore: add comment
* chore: added generator type to `core/field_dropdown.ts` and updated affected files
* chore: added type to ARROW_CHAR in `core/field_dropdown.ts`
* chore: cleaned up misc 'AnyDuringMigration' cases and related comments
* fix: misc adjustments from PR feedback
* Fix: simplified `getOptions`
* fix: removed outdated arrow and cleaned up formatting
* fix: cleanup format after rebase
* fix: make getSourceBlock nullable again
* chore: format
* chore: move to a specific error
* chore: also update procedures with new error
* chore: format
* fix: feedback on procedure model implementations
* chore: format
* chore: add tests for the backing variable of parameter models
* chore: update existing procedure map tests
* chore: update block update tests to use refactored API
* chore: update tests to actually use fluent API
* chore: format
* chore: fix tests
* chore: reorganize tests
* chore: format
* chore: add comment
* fix: make getSourceBlock nullable again
* chore: format
* chore: move to a specific error
* chore: also update procedures with new error
* chore: format
* feat: implement basic observable procedure model
* feat: implement basic observable procedure model
* feat: implement basic observable parameter model
* feat: implement basic observable procedure map
* chore: format
* chore: refactor parameter model
* chore: update the observable procedure model to match interface
* chore: update the observable parameter model to match interface
* chore: update the observable procedure map
* chore: update concrete implementations to use this return type
* chore: format
* chore: remove legacy module IDs
* chore: fix typo
* feat: add interface definitions for procedure stuff
* fix: signature of insertParameter
* fix: remove declareModuleId
* fix: remove variable-ness from the parameter interface
* chore: types -> type
* chore: PR comments
* fix: update interfaces to use this return type
* chore: format
* Remove usages of utils.dom.add/removeClass from Blockly Factory
* Use template strings for error messages.
(Random stuff found while working on something larger.)
* chore: rename properties to remove underscores in zoom_controls.ts
* chore: remove underscores from private methods in zoom_controls.ts
* chore: fix underscores in private property names in ws_svg
* chore: format