Skip to content

Releases: RaveJS/rave

0.4.4: Preparation for rave-build

17 Nov 22:30
Compare
Choose a tag to compare

This release contains several updates and bug fixes to prepare for building rave-based projects. Most of the work for builds is happening in the rave-build project. Watch rave-build for more informative updates.

Other fixes and updates:

  • Update the README to better explain rave and its benefits.
  • Add documentation to help folks migrating from curl.js.
  • Fix incorrect case on instantiateJs.js file (thanks @rhmoller!).
  • Remove a potential V8 instability during module type detection (RegExp lastIndex overflow issue).

Fix problem running rave against some web servers

29 Sep 18:44
Compare
Choose a tag to compare

As as version 0.4.2, rave was erroneously inserting an extra slash after the host name in the baseUrl. Many web servers ignore the extra slash, but some don't. Rave no longer inserts the extra slash.

0.4.2: Tweaks to debugging code. Now works in Opera.

27 Sep 20:55
Compare
Choose a tag to compare

Just minor tweaks to debugging code and a small fix to allow rave to work in Opera.

0.4.1: Work around some browser debugger bugs

25 Sep 21:22
Compare
Choose a tag to compare
  • Safari: port numbers in sourceURL prevent Safari from displaying the module in the Resources pane. The port number is now stripped from sourceURL in Safari.
  • node modules: Safari and Firebug do not display node-formatted modules when sourceURL is not at the top scope. SourceURL is now placed at the top scope under all circumstances.

0.4.0: Debug by default

25 Sep 02:38
Compare
Choose a tag to compare

Prior to 0.4.0, rave did not work well with browsers debuggers. Break points didn't always work. In certain cases, whole files wouldn't display at all.

In 0.4+ you can debug node, AMD, and global scripts as easily as <script> tags!

These debugger problems were caused by browser bugs, not rave. However, we replaced the eval-based module evaluation techniques with script injection techniques which eliminated all of the known issues.

Furthermore, debugging is now always on for rave, itself. Debugging is turned on for rave extensions by default, too, but can be turned off via bower.json or package.json configuration. See the docs for more info.

As part of this refactor, debug-related code has been separated. This allowed us to fine-tune the production-related modules to be much faster and leaner. For instance, production code will still use faster, leaner eval-based module evaluation techniques instead of slow, bulky script injection techniques.

0.3.2: Resolve "illegal access" errors in Chrome

16 Sep 18:23
Compare
Choose a tag to compare

Stop setting very high values (i.e. 1e10) to the lastIndex property when attempting to terminate RegExp-based searching early. V8's RegExp engine seems to become permanently confused once lastIndex has been set this high and starts throwing random "illegal access" errors. (HT @briancavalier!)

0.3.1: Fix catastrophic failures in Safari and other miscellaneous bugs

09 Sep 15:58
Compare
Choose a tag to compare
  • Use when.js's promise polyfill*. The current polyfill is buggy and slow.
  • Use window.location instead of document.location to prevent IE and Chrome failures when a user has named an element "location".
  • Use bower's "moduleType" as an override if it exists. Auto-sniff by default.
  • Work-around a V8 optimization bug by reducing the double-eval in AMD and node module evaluation code.
  • First-pass implementation of eager-eval AMD bundle processing algorithm.

* When we update to the latest es6-module-loader, when.js's promise polyfill will already be included.

0.3.0: Better crawling and 100% auto-detection of moduleType

18 Aug 19:40
Compare
Choose a tag to compare
  • Refactored the metadata crawling code (fixes #56 and #54).
  • Handle npm deduped apps, as well as "peerDependencies".
  • Rely on moduleType auto-detection if moduleType not specified explicitly in bower.json or package.json. no more inferences. (fixes #58).
  • Use CommonJS's directories.lib as a way to specify an alternate library root (breaking change for some extensions).
  • overrides and missing config options now use standard metadata properties, not rave-specific properties wherever possible (fixes #55 and #50).
  • Document overrides metadata configuration (fixes #41).
  • Document how to use rave with AngularJS.

0.2.1: Improvements for npm and jQuery

07 Aug 15:45
Compare
Choose a tag to compare

npm improvements

  • Ensure that rave.overrides apply to the correct (versioned) package.
  • Include npm's peerDependencies when crawling for dependencies.
  • Search up the node_modules hierarchy when a dependency's package.json isn't found.
    This could be necessary when a dev uses npm dedupe or a package author has specified a peer dependency.

jQuery improvements

  • Rave now correctly signals an AMD environment to jQuery via the define.amd.jQuery flag (corrected the capitalization of this flag).
  • Throw if AMD define never called.

0.2.0: Compatibility with many more bower and npm packages

11 Jul 14:56
Compare
Choose a tag to compare

What's new

  • Third parties can provide missing metadata values
  • Third parties can override metadata values
  • Module type can be determined at run time as a last resort
  • Bower metadata crawling is more robust
  • The de facto "browser" field in package.json is now supported
  • Miscellaneous code and documentation problems are fixed

Third parties can provide missing metadata values, a.k.a. "rave.missing"

Third-party rave extensions can now provide default values for bower or npm packages that are missing bower.json or package.json properties. This feature, "rave.missing", isn't documented, yet. It can also be applied from the application's top-level bower.json and package.json files.

Third parties can override metadata values, a.k.a. "rave.overrides"

Third-party rave extensions can now override values for bower or npm packages that have erroneous bower.json or package.json properties. This feature, "rave.overrides", isn't documented, yet. It can also be applied from the application's top-level bower.json and package.json files.

Module type can be determined at run time as a last resort

During development when moduleType is not specified for a package, rave now uses fewer heuristics to determine moduleType and instead scans the first module in a package to determine the moduleType. Scanning is expensive, of course, but won't happen in production and can be eliminated with the new "rave.missing" feature (above). Some rave extensions will break due to this change. (Thus the version bump to 0.2.0.)

Bower metadata crawling is more robust

Bower metadata crawling is now more robust (thanks @KidkArolis). Now, the bower crawler will look for bower.json and package.json. Failing to find those, it will create a minimal metadata descriptor that should satisfy the majority of packages that didn't supply metadata. When used in conjunction with moduleType scanning (above), we should be able to correctly guess the correct metadata for the vast majority of bower packages now.

The de facto "browser" field in package.json is now supported

@KidkArolis added support for "browser" field in package.json. When the "browser" field is present in package.json, its values are processed as per the widely supported unofficial spec. This allows package authors to specify different modules to be loaded in the browser, rather than in node. There's a hidden gem in here: @KidkArolis added generic module name mapping as part of this feature. We could leverage this feature in other ways.