Skip to content

Releases: BladeRunnerJS/brjs

BladeRunnerJS 1.0 Release Candidate 1

05 May 10:45
Compare
Choose a tag to compare

BladeRunnerJS 1.0 Release Candidate 1

BladeRunnerJS 1.0-RC1 is the proposed 1.0 release. It will be released as 1.0 unless any major bugs in existing features are discovered.

1.0 Features and Improvements

1.0-RC1 completes the 1.0 Roadmap which includes:

  • In-built EventHub
  • Node.js style client-side code
  • Modularised application development and workbench developer tools
  • Flat file and WAR deployment
  • Global install
  • A plugin architecture for custom asset types and bundled content

Backwards Compatability

  • The plugin API has changed considerably. Existing plugins will need to be updated to use the new API. This change does not effect application code, only Java plugins.

Other than the above, 1.0-RC1 is compatible with v0.15.4.

Bug fixes and features since v0.15.x

Changes to XML namespaces (xmlns)

The XML namespaces used for BladeRunnerJS XML config has changed to use the schema.bladerunnerjs.org domain - the old and new namespaces are shown below. All instances of the previous namespaces should be replaced with the new namespace. Apps using the old namespace will continue to work, although it has been deprecated and a warning will be logged.

http://schema.caplin.com/CaplinTrader/aliasDefinitions      -> http://schema.bladerunnerjs.org/aliasDefinitions
http://schema.caplin.com/CaplinTrader/aliases               -> http://schema.bladerunnerjs.org/aliases
http://schema.caplin.com/CaplinTrader/bundleConfig          -> http://schema.bladerunnerjs.org/bundleConfig
http://schema.caplin.com/CaplinTrader/presenterComponent    -> http://schema.bladerunnerjs.org/presenterComponent

Reviewed Plugin API

The plugin API has been reviewed and the mechanism for discovering assets has been simplified. For most users of BRJS who haven't written their own plugins this change won't have any affect, however it is a backwards incompatibility for existing plugins.

AssetPlugin

The previous AssetLocation and AssetPlugin interfaces have been replaced by a single new AssetPlugin interface.

The new AssetPlugin interface has a single method:

List<Asset> discoverAssets(AssetContainer assetContainer,
    MemoizedFile dir, String requirePrefix, List<Asset> implicitDependencies,
    AssetRegistry assetRegistry)

The discoverAssets is called by the asset discovery mechanism and is the chance for each plugin to register assets. Assets can be registered using the supplied AssetRegistry which has the following interface.

public void registerSeedAsset(LinkedAsset asset)
public void promoteRegisteredAssetToSeed(LinkedAsset asset)
public void registerAsset(Asset asset)
boolean hasSeedAsset(String requirePath)
boolean hasRegisteredAsset(String requirePath)
public Asset getRegisteredAsset(String requirePath)
public List<Asset> discoverFurtherAssets(MemoizedFile dir, String requirePrefix, List<Asset> implicitDependencies)

This provides the flexibility for each AssetPlugin to register all assets in nested directories at the same time via registerAsset or registering assets for the supplied directory and optionally using discoverFurtherAssets to allow additional directories to be discovered by other plugins that aren't already discovered by the existing BRJS plugin.

An example AssetPlugin is the CssAssetPlugin which discovers all assets in the supplied directory.

if (assetContainer.dir() == dir) {
    return Collections.emptyList();
}
if (!requirePrefix.contains("!")) {
    requirePrefix = "css!"+requirePrefix;
}
for (MemoizedFile cssFile : dir.listFiles(cssFileFilter)) {
    if (!assetRegistry.hasRegisteredAsset(FileAsset.calculateRequirePath(requirePrefix, cssFile))) {
        Asset asset = new FileAsset(cssFile, assetContainer, requirePrefix);
        assetRegistry.registerAsset( asset );
    }
}

Other API changes

There have been several other minor changes to the Plugin API.

  • The abstract class ArgsParsingCommandPlugin has been renamed to JSAPArgsParsingCommandPlugin
  • The method TagHanderPlugin getDependentContentPluginRequestPrefixes() method has been renamed to usedContentPluginRequestPrefixes()
  • All BRJS model interfaces that form the model API have been moved to the org.bladerunnerjs.api package

More information about the API can be found in the JavaDocs, http://apidocs.bladerunnerjs.org/latest/java/index.html.

Plugin Ordering

Plugins were previously ordered by using methods on the Plugin API. This has now been moved to brjs.conf and so is used controllable. The new option in brjs.conf is orderedPlugins which can be used to define the order for any plugins where ordering is important, AssetPlugins and ContentPlugins.

The default ordering config is:

...
orderedPlugins:
    AssetPlugin:
   - ThirdpartyAssetPlugin
   - BrowsableNodeSeedLocator
   - BRJSConformantAssetPlugin
   - '*'
   ContentPlugin:
   - I18nContentPlugin
   - AppMetadataContentPlugin
   - ThirdpartyContentPlugin
   - CommonJsContentPlugin
   - NamespacedJsContentPlugin
   - '*'
...

The name of each plugin should be included in the configuration. '*' can be used to match all other plugins.

HTML service improvements

The HTML service now allows templates to be provided inside <template/> tags, and automatically wraps any templates that aren't inside <template/> tags. Additionally, a fresh element or document fragment is provided when a template is requested, rather than providing the same DOM element each time.

HTML templates can now also be embedded in index.html rather than loading them via a separate XHR request. To do this you'll need to include <@html.bundle@/> in the <head> of the page, but can then continue to use the HTML service as before.

Existing apps and templates will still be compatible with these changes — see #1338 & #1352 for more information.

Apps can now live separate from the toolkit

The current working directory when brjs is executed is now used to detirmine where applications are on disk, meaning they can be placed anywhere and don't have to be placed next to the sdk directory.

Apps should be placed within a brjs-apps directory anywhere on the disk. If commands are executed inside of the brjs-apps directory this directory will be used to locate applications. Commands can also be executed from within an app, in which case the parent directory of the application will be used to locate apps.

This change is backwards compatible with previous app locations. If apps are contained within an apps directory which is next to the sdk directory the previous apps directory will be used and a deprecation warning logged.

Configurable App Version

The app version can now be configured via the serve and build-app commands. With either command the -v or --version flag can be used to provide a custom version, for example brjs build-app myApp -v 1.2.3. The current timestamp will be appended to the version to create a truely unique version in order to provide reliable cache invalidation. require(service!br.app-meta-service).getVersion() can then be used to access the version.

Setting the version via the serve command has the limitation where the version will be set for every app within that BRJS instance. For example if both the foo and bar apps exist and brjs serve --version 1.2.3 is run, 1.2.3 will be the version used for both apps.

Stricter Scope Enforcement

The bundling 'scope' is used to detirmine the valid locations that one asset can require on other assets. For example Blade classes cannot depend on another Blade class. Previously this enforcement was only applied within the Blade workbench, but was not enforced in the app. BladeRunnerJS will now perform additional checks to ensure that although all Blades are loaded within the App each Blade still cannot depend on one another.

This may be an imcompatability for apps written with previous version of BladeRunnerJS if one Blade depends on another Blade. This dependency should be broken by using Services so Blades do not directly depend on another another.

Locale Switching and Detection

The locale detection and redirection mechanism can now be overridden by changing the service implementations used during the locale redirection. This is useful if the users' locale preferences should be loaded from a database rather than be calculated from the browser.

The new locale switching changes has meant the need for the <base> has gone. The <@base.tag@/> plugin has now been deprecated and this line should be removed from index.html.

More information can be found at http://bladerunnerjs.org/docs/use/internationalization.md/multi-locale-apps.

Locale Switching During Tests

The active locale can now be configured during unit and acceptance tests. This can be done by adding the relevant locale requests to your jsTestDriver.conf file and calling require( 'br/I18n' ).setLocale("<locale>") at any point during the test.

For example given the following jsTestDriver.conf file.

server: http://localhost:4224
basepath: .
load:
  - bundles/i18n/de.js
  - bundles/i18n/en.js
  - bundles/js/js.bundle
test:
  - tests/**.js

The default active locale in tests would be en and the following test could be written to exercise the locale switching.

var i18n = require( 'br/I18n' );
assertEquals( 'January', i18n('br.i18n.date.month.january') );
i18n.setLocale("de");
assertEquals( 'Januar', i18n('br.i18n.date.month.january') );
i18n.setLocale("en");
assertEquals( 'January', i18n('br.i18n.date.month.january') );


API Documentation

Travis Build Status for v1.0-RC1:   [![Build Status](https://travis-ci.org/...

Read more

BladeRunnerJS v0.15.4

07 Apr 15:37
Compare
Choose a tag to compare

BladeRunnerJS v0.15.4

v0.15.4 Features and Improvements

  • Fix for a bug introduced in v0.15.2 where some files weren't re-namespaced properly when an App was imported


API Documentation

Travis Build Status for v0.15.4:   Build Status

Closed Issues

The following issues labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport have been closed:

  • Renamespaced content overwrites . seperators with / & doesnt renamespace files with a £ #1315

4 issues closed; 1 labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport from 1 milestones:
https://github.com/BladeRunnerJS/brjs/issues?milestone=34&state=closed

Found an Issue?

Parts of this release note have been auto-generated. If you notice any problems with it tell us

BladeRunnerJS v0.15.3

26 Mar 17:32
Compare
Choose a tag to compare

BladeRunnerJS v0.15.3

v0.15.3 Features and Improvements

  • Fix for an issue where some virus scanners could cause the bundle time for apps to drastically increase when the Java 7 file watcher was used.
    • A polling file change observer can be used by setting the value of 'fileObserver' in brjs.conf to 'polling:X' where X is the poll interval. For example 'polling:1000'.
  • Fixed a bug where an exception was thrown by the MimeMagic library when importing an app.
  • Minor changes to the LocalisedDateParser.
  • Fix a bug where LocaleUtility couldn't change a read-only array in Firefox.


API Documentation

Travis Build Status for v0.15.3:   Build Status

Closed Issues

The following issues labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport have been closed:

  • Add Polling file observer #1306
  • BRLocaleProvider modifying read only array #1304
  • return the input value if the LocalisedDateFormatter input doesn't match the input format #1300
  • import-app throwing jmimemagic exception #1295
  • LocalisedDateParser should not consider locale-specific date formats as ambiguous for parsing to end of unit. #1293
  • McAffee virus scanner makes the app take 20+ mins to load #1283

7 issues closed; 6 labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport from 1 milestones:
https://github.com/BladeRunnerJS/brjs/issues?milestone=33&state=closed

Found an Issue?

Parts of this release note have been auto-generated. If you notice any problems with it tell us

BladeRunnerJS v0.15.2

19 Mar 15:59
Compare
Choose a tag to compare

BladeRunnerJS v0.15.2

v0.15.2 Features and Improvements

v0.15.2 is a patch release with the following changes:

  • Images are no longer corrupted when apps are imported
  • Internationalization has been added to the Presenter jQuery date picker - see #1278
  • The Presenter DateParser and DateFormatter now uses MomentJS to handle localisation - see #1275
  • Other minor fixes and improvements around internationalized date parsing and formatting.
  • Fix for a bug where using bundles/bundle.xml and bundles/bundle.html in jsTestDriver.conf caused an invalid request to be made to the BRJS model.


API Documentation

Travis Build Status for v0.15.2:   Build Status

Closed Issues

The following issues labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport have been closed:

  • fixing bad model paths for xml and html JSTD bundle aliases #1287
  • LocalisedDateParser fix #1286
  • Added internationalization for jQuery datepicker #1278
  • Date parsing does not always work with custom input formats #1270
  • Import app is causing some images to be corrupted #1237

9 issues closed; 5 labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport from 1 milestones:
https://github.com/BladeRunnerJS/brjs/issues?milestone=32&state=closed

Found an Issue?

Parts of this release note have been auto-generated. If you notice any problems with it tell us

BladeRunnerJS v0.15.1

06 Mar 18:16
Compare
Choose a tag to compare

BladeRunnerJS v0.15.1

v0.15.1 Features and Improvements

  • Some minor JavaScript library improvements around Presenter library validators, formatters and parsers to:
    • Support case-insensitive date parsing
    • Optionally parse ambiguous dates to the end of the month or year.
    • Move formatters and validators into their own libraries. This is backwardsly compatible and the old require paths are still valid
  • The CSS filename now precedes the content within the CSS bundle to make it easier to find the file which supplied the content.
  • Fixed a bug where assets within Blades with no BladeSet where not re-namespaced properly when an App was imported.


API Documentation

Travis Build Status for v0.15.1:   Build Status

Closed Issues

The following issues labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport have been closed:

  • Validation interfaces should not be housed within presenter. #1241
  • Date parsing in br/presenter should be case-insensitive. #1240
  • In CSS bundle add comment showing filename of included content #1239
  • br-presenter Parsers cannot be used with EditableProperties #1235

11 issues closed; 4 labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport from 1 milestones:
https://github.com/BladeRunnerJS/brjs/issues?milestone=30&state=closed

Found an Issue?

Parts of this release note have been auto-generated. If you notice any problems with it tell us

BladeRunnerJS v0.15

18 Feb 11:01
Compare
Choose a tag to compare

BladeRunnerJS v0.15

v0.15 Features and Improvements

  • Fixed a bug in IE8 where a dependency tree greater than 12 levels deep causes a stack overflow exception
  • Allowing brjs to be executed from the path and therefore from anywhere within the sdk or app directory tree
  • Adding an optional anonymous stats plugin
  • Fixes to regular expressions used within the acceptance test utility library and using === rather than == for assertions
  • Some changes to the model API in preparation for a 1.0 release and a stable API
  • A fix to NumericValidator so floats and negative numbers are validated correctly
  • Fixes to allow brjs to execute correctly in cygwin
  • Allowing custom templates and for the default templates to be overridden
  • BladeRunnerJS now logs a warning if test classes have not been wrapped in an IIFE
  • Allowing apps to be symlinked or contain symlinks in a unix environment
  • Adding BladeSet level Workbenches
  • The HTMLResourceService now clones HTML template nodes before adding them to the DOM and supports template tags
  • Index pages have full require support and will throw an exception if a 'required' class cannot be found

Anonymous Status Plugin

BladeRunnerJS will now collect anonymous statistics such as OS version; Java version; commands executed; and the size of apps' dependency trees. This data is 100% anonymous and does not contain and source code, names of apps, developer or company information. The data is stored with KeenIO a third-party service and will be used to gather information about the performance of the bundling and how developers use the toolkit.

When brjs is first executed the developer will be asked whether they allow the statistics to be collected, this will then record the choice in conf/brjs.conf. Statistics collection can be turned on or off at any time by changing the value in conf/brjs.conf or by using the --no-stats or --stats flags. When brjs is run via build tools such as Ant, Maven or Gradle and the process input stream is not set brjs will assume that statistics should not be collected.

Allowing brjs to be run from anywhere

brjs can now be executed from any directory either by using a relative path to the 'brjs' executable or by adding the sdk directory to the PATH. For example to run the test command from within an app without adding brjs to the path run ../../sdk/brjs test .. If brjs has been added to the path the command becomes brjs test ..

Note: apps must continue to live within the apps directory which is located next to the sdk directory. Support for apps living separately from the BladeRunnerJS toolkit will be added later ()#1154.

Custom templates

The templates used when creating new nodes such as Aspects or Blades can now be customised. Either a custom template can be used by adding the --template <template_group> to the creation command or the 'default' template group overridden. More information on custom templates can be found at http://bladerunnerjs.org/docs/use/custom_templates/.

BladeSet level Workbenches

BladeSets can now have their own Workbenches. These act the same as Blade workbenches and allow the interaction between several Blades to be tested in isolation without loading them in the app. A skeleton workbench is automatically created for any new BladeSets if the default BladeSet template is used.

Backwards Compatibility Issues

There have been several changes to the Test library which may cause some app tests to fail after an upgrade:

  • In any 'Jasmine BDD' tests the regular expression now enforces a space after '=' in the assertion parameters.
  • '===' is used rather than a '==' to perform assertions. This now means assertion checks are much more strict.
  • In order to check for null values 'null' should be used as the check rather than 'undefined' as was previously allowed.

Additionally, some of the Java package names were renamed in preparation for a post 1.0 clean-up and review of the plug-in API.


API Documentation

Travis Build Status for v0.15:   Build Status

Closed Issues

The following issues labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport have been closed:

  • Removed check for null on property value. #1218
  • Bladeset templating not working #1208
  • Fix all IE8 global recursion bugs (e.g. mergePackageBlock() and requireAll()) #1190
  • NumericValidator does not consider floats or negative numbers as valid #1152
  • in vanilla cygwin "brjs" script does not run #1150
  • Cannot import a blade from another apps default bladeset #1133
  • Allow BRJS to be run from outside of the SDK directory by putting brjs on the PATH #1130
  • brjs test-integration command shows a stack trace when path arg is missing. #1129
  • Log a warning when CommonJs tests aren't wrapped within an IIFE #1091
  • add the (optional) anonymous stats plugin to BRJS core #1084
  • Improve the API for creating bundle requests #1072
  • Latest emitr #1070
  • Remove canonical file usage #1063
  • When writing acceptance tests, it's not possible to use an '=' in the value of an assertion. #1008
  • app-deps, bundle-deps and dep-insight commands fail when aliases are used #958
  • Allow workbenches on the bladeset level #945
  • Fix several bugs in Topiarist #935
  • Locale redirection doesn't work in built app when deployed using Apache Cordova #923
  • brjs.conf is rewritten on disk each time 'brjs serve' is run #884
  • Newly required dependencies not being bundled when apps reside in a directory reference by symbolic link #866
  • workbench-deps errors out when it shouldn't #819
  • re-introduce cloning of HTML templates #799
  • Index Pages Should Have Proper require() Support #720
  • Global configuration files shouldn't need to be specified when creating MemoizedValue instances #616
  • BRJS uses 100% CPU when idle #327
  • allow templates for new apps/blades/libraries to be pluggable to improve scaffolding options #126

63 issues closed; 26 labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport from 1 milestones:
https://github.com/BladeRunnerJS/brjs/issues?milestone=29&state=closed

Found an Issue?

Parts of this release note have been auto-generated. If you notice any problems with it tell us

BladeRunnerJS v0.14.4

22 Jan 14:36
Compare
Choose a tag to compare

BladeRunnerJS v0.14.4

v0.14.4 Features and Improvements

The following changes were made in v0.14.4:

  • Fixed a bug where ASCII characters weren't encoded properly in minified bundles.

Known Issues

BladeRunnerJS has the following known issues:

  • To allow deployment as a set of static files, locale switching was switched from the server to the browser in BladeRunnerJS 0.9, yet only Firefox 32 and Chrome 32 make the full set of ACCEPT_LANGUAGE headers available on the client (other browsers provide only a single language), which may cause a user to see the default language if their preferred language is unavailable, even though one of their secondary preferences may have been available.


API Documentation

Travis Build Status for v0.14.4:   Build Status

Closed Issues

The following issues labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport have been closed:

  • JS bundler fails to encode non ascii characters #1181

2 issues closed; 1 labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport from 1 milestones:
https://github.com/BladeRunnerJS/brjs/issues?milestone=28&state=closed

Found an Issue?

Parts of this release note have been auto-generated. If you notice any problems with it tell us

BladeRunnerJS v0.14.3

09 Dec 13:43
Compare
Choose a tag to compare

BladeRunnerJS v0.14.3

v0.14.3 Features and Improvements

The following changes were made in v0.14.3:

  • Topiarist has been updated to include a bug-fix so topiarist.implement() can be used to implement interfaces that have static constants defined on them.
  • A fix for a ConcurrentModificationException that sometimes occured when creating a new app using the BRJS dashboard.
  • A fix for a known issue in v0.14.2 where switching between a Blade workbench and an App caused the incorrect alias to be loaded in the App.
  • The dashboard's import Motif dialog window now doesn't immediately close if there has been an error.

Known Issues

BladeRunnerJS has the following known issues:

  • To allow deployment as a set of static files, locale switching was switched from the server to the browser in BladeRunnerJS 0.9, yet only Firefox 32 and Chrome 32 make the full set of ACCEPT_LANGUAGE headers available on the client (other browsers provide only a single language), which may cause a user to see the default language if their preferred language is unavailable, even though one of their secondary preferences may have been available.


API Documentation

Travis Build Status for v0.14.3:   Build Status

Closed Issues

The following issues labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport have been closed:

  • Update topiarist #1124
  • Creating an app via the dashboard occasionally fails with a ConcurrentModificationException #1122
  • The use of workbenches breaks subsequent loads of the app #1114

5 issues closed; 3 labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport from 1 milestones:
https://github.com/BladeRunnerJS/brjs/issues?milestone=26&state=closed

Found an Issue?

Parts of this release note have been auto-generated. If you notice any problems with it tell us

BladeRunnerJS v0.14.2

03 Dec 15:40
Compare
Choose a tag to compare

BladeRunnerJS v0.14.2

v0.14.2 Features and Improvements

The following changes were made in 0.14.2:

  • We no longer leave open read-locks on XML and I18N configuration files.
  • We've added backwards compatibility support for the appNamespace property within 'app.conf', so that existing motif zips can continue to be imported into BladeRunnerJS.
  • We fixed a couple of bugs within our client-side locale switching code, so that it now works as best as it can in all browsers.
  • We fixed a regression that was introduced into the ValidSelectionValidator class in 0.14.1.

Known Issues

BladeRunnerJS has the following known issues:

  • When switching between a workbench and an app, the alias blob will occasionally point at an incorrect class. Refreshing the page usually corrects the problem.
  • To allow deployment as a set of static files, locale switching was switched from the server to the browser in BladeRunnerJS 0.9, yet only Firefox 32 and Chrome 32 make the full set of ACCEPT_LANGUAGE headers available on the client (other browsers provide only a single language), which may cause a user to see the default language if their preferred language is unavailable, even though one of their secondary preferences may have been available.


API Documentation

Travis Build Status for v0.14.2:   Build Status

Closed Issues

The following issues labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport have been closed:

  • themes with locale not behaving as expected in Chrome and IE #1108
  • ValidationSelectionValidator throws error if value is undefined #1100
  • BRJS prevents me saving/deleting files (locked files/folders) #446

7 issues closed; 3 labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport from 1 milestones:
https://github.com/BladeRunnerJS/brjs/issues?milestone=25&state=closed

Found an Issue?

Parts of this release note have been auto-generated. If you notice any problems with it tell us

BladeRunnerJS v0.14.1

21 Nov 22:17
Compare
Choose a tag to compare

BladeRunnerJS v0.14.1

v0.14.1 Features and Improvements

The following changes were made in v0.14.1:

  • We now make use of the recursive file-watching support available within Windows to more efficiently watch large directory trees, avoiding the file locking and performance issues encountered when separately listening to each directory. This relies on features available only within the Oracle & OpenJDK implementations of the JRE, if these features are not available BRJS will fall back to the standard method of watching nested directories individually.
  • We now make use of high-sentivity polling for file-watching on Mac OS X, reducing the latency between when a file is changed and when the notification of that file change is received. This relies on features available only within the Oracle & OpenJDK implementations of the JRE, if these features are not available BRJS will fall back to the default sensitivity level with a longer polling interval.
  • Browser modules have been updated so they no longer include their own shims, making it possible for applications to decide on the shims they wish to use.
  • Fixed a recently introduced bug in the test-runner that caused some test names to be incorrectly displayed.
  • A caching bug, introduced in v0.14, that required brjs serve to be restarted if an alias was updated to point to a new class, has now been fixed.

Backwards Compatibility Issues

The following additional backwards compatibility issues have been introduced with the release of v0.14.1:

  • ServiceRegistry.clear() has been renamed to ServiceRegistry.legacyClear(). This prevents it from being automatically invoked before each test is executed and may cause any NamespacedJS style tests to fail.
    • Apps using require(...) for all of their dependencies are not affected by this change.

Clearing the Service Registry within tests

The browser-modules library includes a sub-realms feature that better addresses the need for tests to override module definitions and module state, but which would be too expensive to automatically employ within all tests.

Although we ultimately recommend that tests are migrated to make use of sub-realms where appropriate, particularly as code-bases migrate to CommonJs, for the time being users can work around this restriction by creating a file containing the following code at BRJS_ROOT/js-patches/br/ServiceRegistryClass.js:

ServiceRegistryClass.prototype.clear = ServiceRegistryClass.prototype.legacyClear;

Known Issues

This patch release fixes all four remaining known issues present within v0.14.


API Documentation

Travis Build Status for v0.14.1:   Build Status

Closed Issues

The following issues labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport have been closed:

  • Improved commonjs alias and service support #1087
  • File change watcher refinements #1083
  • Reglobalize source modules after using subrealms #1082
  • Fix service module deps #1080
  • Bugfix jettyenv content not renamed on import #1079
  • Harden CommonJs alias and service support #1078
  • Reflectively use Sun specific packages to fix file-watcher issues #1077
  • Confusing test output when running tests for a bladeset, blade or a user-lib #1042
  • Test bundles are being locked in some environments #968

13 issues closed; 9 labelled bug, feature, enhancement, experience, breaking-change, java-api, js-api or CaplinSupport from 1 milestones:
https://github.com/BladeRunnerJS/brjs/issues?milestone=24&state=closed

Found an Issue?

Parts of this release note have been auto-generated. If you notice any problems with it tell us