Closure Rules v0.4.1
This is a maintenance release (i.e. not tracking HEAD) which upgrades the following components:
- Closure Compiler v20161024 → v20170124 (Release notes)
- Improved optimization of modules with named exports.
- Known issue: Aliased exports need delegate google/closure-compiler#2299
- Several small improvements to compile-time performance.
- Add a check that super() is called before accessing this.
- Make type-based optimizations safer about null/undefined.
- Improved handling of parameterized object types in NTI (Object).
- In NTI, allow any IArrayLike to be used with .apply function calls.
- New type inference supports
@abstract
. - CommonJS modules now use the node module resolution algorithm and support using JSON files as module source.
- Bugfixes in DisambiguateProperties for interface inheritance and implicit use of interfaces.
- Improved optimization of modules with named exports.
- Closure Library v20161024 → v20170124 (Release notes: [1] [2])
- New Additions
- Add goog.dom.safe.setIframeSrcdoc() to set srcdoc from a SafeHtml
- Added getRotation() and setRotation() to goog.style.transform.
- Added clearCache method on goog.ui.ac.CachingMatcher.
- goog.html.SafeHtml.createScript() to create script tags.
- Add goog.testing.MethodMock.fromObjectPropertyString.
- Added goog.Math.Long.isStringInRange that returns boolean value for if string is within bounds of a Long.
- Add site-local and link-local IP checks.
- Added goog.function.rateLimit(), to complement debounce() and throttle().
- Added optional BrowseEvent parameter to constructor of DragDropEvent. This parameter is set within AbstractDragDrop#endDrag.
- Enhance MockIframeIo to simulate response text, and make active state bit and last URI actually work.
- TrustedResourceUrl.format() no longer required a first fixed path component.
- Backwards Incompatible Changes
- goog.messaging.PortChannel now rejects wildcard domains as the peer origin.
- Moved getAllProperties from MockUtil to the Object utility.
- Other Changes
- Fix goog.Uri.resolve so that it doesn't unescape the query parameters.
- Properly pass the supportsCrossDomainXhrs option into WebChannelBase, fixing a bug where withCredentials wasn't being set.
- Support ES6 methods when creating a testSuite.
- labs.testing.Environment: Fixed a bug where an exception thrown in a tearDown method would not cause the test to fail if the exception evaluates to false.
- disabled test that triggers a regression in Chrome.
- Send ANIMATION_END event when click animation ends, no user visible change for sliderbase.
- Minor documentation fix.
- Fix JS errors when a module contains closing script tags with attributes.
- Fixed ErrorHandler in strict mode
- Fix JS errors when a module contains closing script tags.
- The removeformatting plugin no longer captures a keyboard shortcut when both ctrl and cmd are pressed.
- Keep goog.testing.TestCase.currentTestName updated to ease migration to goog.testing.TestCase.
- CLDR 30 locale data update.
- Fix IE11 bugs in goog.dom.selection.
- Stop using HTMLElement.dataset in Safari, because sometimes accessing a value incorrectly returns "undefined".
- Set browserEvent parameter within AbstractDragDrop#endDrag.
- The constructor of goog.net.streams.JsonStreamParser now takes an optional configuration argument.
- Resolve unknown type for property ipStr_
- Updating documentation for clarity.
- goog.module.get tuning
- New Additions
- Closure Templates 2016-07-25 → 2017-02-01 (Release notes)
- Add
new
keyword for proto initialization. Dots are also now allowed in function names, which is needed for proto instantiation. - Improve the performance of constructing a SoyProtoTypeProvider
- Added proto initialization support to Tofu.
- Accept goog.html types as sanitized types. Also support goog.Uri as {uri}.
- Fix bug in the type resolver bug relating to expressions with null type.
- Fix a bug where if a user wrote a {msg} with no content and a genders='...' attribute, the compiler would fail with an IndexOutOfBoundsException.
- Many improvements to error reporting
- Generate
@typedef
for opt_data which can be used in JS code. - Allow trailing comma in expression parser's named param list
- Proto init call accepts null as a param value.
- Replace calls to 'new SoyFileSet.Builder()' with SoyFileSet.builder(). The former has been deprecated for over 2 years and is going away.
- New ProtoUtil.getBuilderMethod() utility method for creating a SoyExpression that calls ProtoMessage.newBuilder().
- Handle proto fields with jstype = STRING. Proto fields that are typed as int64 with jstype = STRING annotation must be handled as strings in Soy code, then converted to int64 for proto init calls.
- Improve ContentSecurityPass escaping to ensure that nonce values are valid base64.
- Soy tofu: Data access on nonexistent key/field returns NullData, not Undefined
- Soy cleanup: Remove SoyAbstractMap, move all code to AbstractDict. Remove SoyAbstractMap, move all code to AbstractDict. Remove SoyAbstractList, move all code to ListBackedList.
- Soy JS codegen: support non-expressions in null coalescing expressions (?:).
- Add
- Incremental DOM 0.5.0 → 0.5.2
- Performance improvements: google/incremental-dom@ac03c59 google/incremental-dom@2b67c5b
- Remove notifications. google/incremental-dom@f7f6b1c
- Fix bug in removeChild. google/incremental-dom@ce2bd2e
- Protobuf 3.1.0 → 3.2.0
- Deserialization of repeated fields no longer has quadratic performance behavior.
- UTF-8 encoding/decoding now properly supports high codepoints.
- Added convenience methods for some well-known types: Any, Struct, and Timestamp. These make it easier to convert data between native JavaScript types and the well-known protobuf types.
- Guava 19.0 → 20.0
- Guice 3.0 → 4.1.0
This release can be used by adding the following to WORKSPACE
:
http_archive(
name = "io_bazel_rules_closure",
strip_prefix = "rules_closure-0.4.1",
sha256 = "ba5e2e10cdc4027702f96e9bdc536c6595decafa94847d08ae28c6cb48225124",
url = "http://bazel-mirror.storage.googleapis.com/github.com/bazelbuild/rules_closure/archive/0.4.1.tar.gz",
)
load("@io_bazel_rules_closure//closure:defs.bzl", "closure_repositories")
closure_repositories()