Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

rcu

ractivejs1kMIT0.11.0

Utilities for implementing Ractive.js component loaders

readme

rcu - Ractive.js component utils

These utilities are designed to make it easy to implement Ractive.js component loaders in different environments. If you're not building a component loader, you probably don't need to read this page - you're probably looking for the page on components for authors instead.

For more information about the component specification, visit the page on components for component loader implementers, or see here for a list of existing implementations.

Installation

npm install rcu

...or grab the UMD build or ES2015 build from jsDelivr.

Usage

rcu.init( Ractive )

Before you can use rcu.parse() or rcu.make(), which use Ractive.parse() and Ractive.extend() respectively, you need to 'initialise' rcu by giving it a reference to Ractive.

rcu.parse( source, parseOptions = {} )

This function converts the source - the contents of an HTML component file - into an intermediate representation. Taking the example component, rcu.parse() would return something like this:

{
  imports: [{ href: 'foo.html', name: 'foo' }],
  template: {v:1,t:[ /* template goes here... */] },
  css: 'p { color: red; }',
  script: /* contents of the script tag go here */,
  modules: [ 'myLibrary' ]
}

rcu.make( source, config, callback[, errback ] )

This function converts an HTML file into a constructor that inherits from Ractive. It uses rcu.parse() internally.

  • source - the contents of the HTML file
  • config - an object containing the following properties:
    • url - the URL of the current file
    • require - the function used inside component scripts to load external dependencies
    • loadImport - a function to load child components. It takes four arguments - name (the name of the component), path (corresponds to a <link> tag's href attribute), parentUrl (the URL of the current file, i.e. the value of config.url), and done, which is a function that must be called with the resulting constructor. See here for an example of its use.
    • loadModule (optional) - a function to load external dependencies, if they need to be loaded asynchronously. Has the same signature as loadImport. See here for an example
  • callback - the function that will be called, with the constructor as sole argument, once the component is ready
  • errback (optional) - a function to call if something goes wrong

rcu.getName( path )

Returns a name from a path, e.g. path/to/foo.html becomes foo.

rcu.resolve( relativePath, baseUrl )

Resolves relativePath against baseUrl, e.g.

rcu.resolve( '../bar.html', 'path/to/foo.html' ) === 'path/bar.html'; // true

rcu.generateSourceMap( definition, options )

Generate a v3 sourcemap, with one major assumption: the contents of the component's <script> block are copied directly into the generated code, and we only need to worry about the offset (i.e. the number of non-<script> lines of code, representing the template etc, that exist in the generated code before the <script> tag's contents).

  • definition - the result of rcu.parse()
  • options - an object containing the following properties:
    • source - the name of the original file, e.g. '/path/to/template.html'
    • offset (optional, but recommended) - the number of non-<script> lines before the <script> contents
    • file (optional) - the name of the generated file, e.g. '/path/to/template.js'

License

MIT

changelog

rcu changelog

0.11.0

  • Support Ractive 0.10.0

0.9.0

  • Support Ractive 0.8

0.8.2

  • Update build process to use Bublé
  • Update dependencies

0.8.1

  • Tidy up build slightly

0.8.0

  • Move bundled dependencies to devDependencies (#24)

0.7.0

  • Update dependencies (particularly tippex)

0.6.2

  • Require statements are deduplicated (#18)

0.6.1

  • Add missing development dependency

0.6.0

  • generateSourceMap generates a hires (character-accurate) sourcemap by default
  • Robust dependency detection (#4)

0.5.1

  • Include correct files in package...

0.5.0

  • Allow empty <script> tags (#14)
  • Extensive tidying up

0.4.2

  • Fix schoolboy error

0.4.1

  • Fix rcu.generateSourceMap bug resulting in incorrect sourcemaps

0.4.0

  • Update expected template version to 3, to match Ractive 0.7.0
  • Use esperanto to generate UMD export, and distribute ES6 modules to ES6-aware systems via jsnext:main field in package.json
  • Add rcu.generateSourceMap() method

0.3.0

  • Started maintaining a changelog
  • rcu.parse() will throw an error if called before rcu.init(Ractive)
  • No more than one top-level <script> tag is allowed in a component
  • Parsed component now includes scriptStart and scriptEnd properties if the component definition includes a <script> tag, indicating the character range of the contents
  • Parsed template includes line positions
  • rcu.make() generates a dynamic sourcemap, enabling easier debugging