The script loader will use load metadata to set script properties. This allows what is in the script tag to be set in meta.
There are two primary use cases: CSP nonce and subresource integrity.
Users of SystemJS wanting to take advantage of CSP can set a "nonce" value in their CSP config. Setting the meta attribute "nonce" for plugins and formats that cannot use CSP allows safely bypassing CSP. Note that this will only work in places where "document" is available. See the test-csp-inline.html file for a full example.
In addition, subresource checking mentions in #639 is also implemented. In the same way setting "integrity" in the meta should make this possible. See test-csp.html for a full example.
Post Rebase Notes:
* Corrected indention.
* Fix load.metadata issue.
* Fixed test-csp-inline.html stuff.
* White-list correct properties.
* Reword error messages.
The "pluginFirst" is a boolean property of loader similar to defaultJSExensions. Setting it to true causes SystemJS to follow the plugin syntax of AMD and webpack, where the plugin name comes before the resource identifier. Old syntax was [resource ID]![plugin module ID]. With pluginFirst turned on, [plugin module ID]![resource ID]. See https://github.com/amdjs/amdjs-api/blob/master/LoaderPlugins.md for exact details. Should resolve issue #549.
so require('./index.coffee!coffee')
becomes require('coffee!./index.coffee")
Note that the old anonymous plugin support like require("file.coffee!") which is short for require("file.coffee!coffee") is not enabled. require("!file.coffee") doesn't make as much sense but if necessary it can certainly be enabled.
SystemJS builder may also need to be updated for complete support for this option.