Socket
Socket
Sign inDemoInstall

es6-module-loader

Package Overview
Dependencies
Maintainers
2
Versions
57
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

es6-module-loader - npm Package Compare versions

Comparing version 0.2.4 to 0.3.0

82

lib/es6-module-loader.js

@@ -16,8 +16,6 @@ /*

var defineProperty = function(obj, prop, opt) {
try {
if (Object.defineProperty)
Object.defineProperty(obj, prop, opt);
}
catch (e) {
else
obj[prop] = opt.value || opt.get.call(obj);
}
};

@@ -51,3 +49,3 @@

this.global = options.global || window;
this._strict = !!options.strict;
this.strict = !!options.strict;
this.normalize = options.normalize || global.System.normalize;

@@ -158,3 +156,3 @@ this.resolve = options.resolve || global.System.resolve;

for (var i = 0; i < name.length; i++) (function(i) {
self['import'](name[i], function(m) {
Loader.prototype['import'].call(self, name[i], function(m) {
modules[i] = m;

@@ -304,3 +302,3 @@ moduleCnt++;

self['import'](imports[i], function (module) {
Loader.prototype['import'].call(self, imports[i], function (module) {
depCnt++;

@@ -311,8 +309,8 @@ deps[i] = module;

var output = execute.apply(self, deps);
callback(output);
}
catch(e) {
errback(e);
errback('Error executing ' + name + '.\n' + e);
return;
}
callback(output);
}

@@ -429,4 +427,4 @@ }, errback, referer);

var absUrlRegEx = /^\/|([^\:\/]*:\/\/)/;
var isUrl = function(name) {
return name.substr(name.length - 3, 3) == '.js' || name.match(absUrlRegEx);
var isAbsoluteUrl = function(name) {
return name.match(absUrlRegEx);
}

@@ -436,3 +434,3 @@ var fetch;

fetch = function(url, fulfill, reject) {
if (window.ActiveXObject && window.location.protocol === 'file:') { // Overcomes IE access complaints for file:
if (window.ActiveXObject) {
var xhr = new ActiveXObject('Microsoft.XMLHTTP');

@@ -508,8 +506,6 @@ }

global: isBrowser ? window : global,
strict: false,
strict: true,
normalize: function(name, referer) {
if (isUrl(name))
if (isAbsoluteUrl(name))
return name;
if (name.substr(name.length - 3, 3) == '.js')
name = name.substr(0, name.length - 3);
if (name.substr(0, 1) == '.')

@@ -523,6 +519,6 @@ return resolvePath(name, referer && referer.name);

if (indexOf.call(this.ondemandTable[r], name) != -1) {
return name;
return r;
}
}
if (isUrl(name))
if (isAbsoluteUrl(name))
return name;

@@ -534,2 +530,27 @@

translate: function (source, options) {
if (!global.traceur)
return source;
var traceur = global.traceur;
var project = new traceur.semantics.symbols.Project(options.address);
traceur.options.sourceMaps = true;
traceur.options.modules = 'parse';
var reporter = new traceur.util.ErrorReporter();
reporter.reportMessageInternal = function(location, kind, format, args) {
throw kind + '\n' + options.address + location;
}
var sourceFile = new traceur.syntax.SourceFile(options.address, source);
project.addFile(sourceFile);
var res = traceur.codegeneration.Compiler.compile(reporter, project, false);
var sourceMapGenerator = new traceur.outputgeneration.SourceMapGenerator({ file: options.address });
var opt = { sourceMapGenerator: sourceMapGenerator };
source = traceur.outputgeneration.ProjectWriter.write(res, opt);
if (isBrowser)
source += '\n//# sourceMappingURL=data:application/json;base64,' + btoa(opt.sourceMap) + '\n';
return source;

@@ -573,5 +594,5 @@ },

// module syntax, before loading esprima for deeper analysis
importRegEx: /^\s*import\s+./m,
exportRegEx: /^\s*export\s+(\{|\*|var|class|function|default)/m,
moduleRegEx: /^\s*module\s+("[^"]+"|'[^']+')\s*\{/m,
importRegEx: /(?:^\s*|[}{\(\);,\n]\s*)import\s+./,
exportRegEx: /(?:^\s*|[}{\(\);,\n]\s*)export\s+(\{|\*|var|class|function|default)/,
moduleRegEx: /(?:^\s*|[}{\(\);,\n]\s*)module\s+("[^"]+"|'[^']+')\s*\{/,
checkModuleSyntax: function(name, source) {

@@ -669,3 +690,3 @@ if (name == null || this.parseNames[name] === undefined)

loader.global.__Loader = loader;
scopedEval((loader._strict ? '"use strict";\n' : '') + source, loader.global, opt.sourceURL);
__scopedEval((loader.strict ? '"use strict";\n' : '') + source, loader.global, opt.sourceURL);
delete loader.global.__Loader;

@@ -767,11 +788,2 @@ return;

// --- Modules ---
else if (node.type == 'ModuleDeclaration' && node.body.type == 'BlockStatement') {
// module 'foo' { ..code.. }
// -> (function() { var __exports = {}; ..code.. __Loader.set("foo", new Module(__exports)); })();
tSource.replace(node.range[0], node.body.range[0] + 1, "(function() { var __exports = {}; ");
tSource.replace(node.body.range[1], node.range[1], " __Loader.set('" + node.id.name + "', new Module(__exports)); })();");
}
// --- Polyfills ---

@@ -787,3 +799,3 @@ else if (self.polyfills.length)

scopedEval((loader._strict ? '"use strict";\n' : '') + tSource.toString(), loader.global, opt.sourceURL);
__scopedEval((loader.strict ? '"use strict";\n' : '') + tSource.toString(), loader.global, opt.sourceURL);

@@ -873,6 +885,8 @@ delete loader.global.__Loader;

// carefully scoped eval with given global
var scopedEval = function(source, global, sourceURL) {
eval('(function(window) { with(global) { ' + source + ' } }).call(global, global);' + (sourceURL ? '\n//# sourceURL=' + sourceURL : ''));
var __scopedEval = function(__source, global, __sourceURL) {
eval('(function(window) { with(global) { ' + __source + ' } }).call(global, global);'
+ (__sourceURL && !__source.match(/\/\/[@#] ?(sourceURL|sourceMappingURL)=(.+)/)
? '\n//# sourceURL=' + __sourceURL : ''));
}
})();
{
"name": "es6-module-loader",
"description": "An ES6 Module Loader shim",
"version": "0.2.4",
"version": "0.3.0",
"homepage": "https://github.com/ModuleLoader/es6-module-loader",

@@ -24,7 +24,9 @@ "author": {

],
"dependencies": {},
"dependencies": {
},
"devDependencies": {
"grunt": "~0.4.1",
"grunt-contrib-uglify": "~0.2.2",
"grunt-contrib-jshint": "~0.6.0"
"grunt-contrib-jshint": "~0.6.0",
"traceur": "0.0.4"
},

@@ -44,3 +46,6 @@ "keywords": [

},
"files": ["lib/es6-module-loader.js", "lib/esprima-es6.min.js"]
"files": [
"lib/es6-module-loader.js",
"lib/esprima-es6.min.js"
]
}
# ES6 Module Loader
An ES6 Module Loader polyfill based on [http://wiki.ecmascript.org/doku.php?id=harmony:module_loaders](http://wiki.ecmascript.org/doku.php?id=harmony:module_loaders) by Luke Hoban, Addy Osmani and Guy Bedford.
ES6 Module Loader polyfill based on [http://wiki.ecmascript.org/doku.php?id=harmony:module_loaders](http://wiki.ecmascript.org/doku.php?id=harmony:module_loaders) by Luke Hoban, Addy Osmani and Guy Bedford.
* [Dynamically load ES6 modules](#getting-started) in all modern browsers including IE8+
* Supports [Traceur](https://github.com/google/traceur) for [compiling ES6 into ES5 in the browser with source map support](#traceur)
* Use as a base for creating [custom spec-compliant module loaders](#creating-a-custom-loader)
Not yet suitable for production use while the specification is still subject to change.
Supports all modern browsers including IE8+.
## Download

@@ -16,11 +18,17 @@

Check-out the [demo](http://moduleloader.github.io/es6-module-loader/demo/index.html) sample to see the project in action.
Include the loader in the page:
```html
<script src="path/to/es6-module-loader.js"></script>
```
Use the System (pre-configured Loader):
```javascript
System.baseURL = '/lib';
System.import('js/test1', function (test1) {
console.log('test1.js loaded', test1);
});
```html
<script>
System.baseURL = '/lib';
System.import('js/test1', function (test1) {
console.log('js/test1.js loaded', test1);
});
</script>
```

@@ -59,2 +67,32 @@

## Integration with Traceur
Include both Traceur and the ES6 module loader in the page:
```html
<script src="path/to/traceur.js"></script>
<script src="path/to/es6-module-loader.js"></script>
```
Load an ES6 module (test.js):
```javascript
export class MyClass {
foo() {
console.log('es6!');
}
}
```
Import the module:
```html
<script>
System.load('test', function(test) {
new test.MyClass();
});
</script>
```
## Creating a Custom Loader
Define a new module Loader instance:

@@ -95,11 +133,3 @@

Define an ES6 module programatically (useful in optimized / production environments):
```javascript
var module = new Module({ test: 'hello' });
System.set('my-module', module);
console.log(System.get('my-module'));
```
## Notes and roadmap

@@ -130,4 +160,2 @@

export * from 'crypto'; // export all exports from another module
module 'crypto' { ... } // define a module
```

@@ -139,3 +167,3 @@

```
```javascript
var System = require('es6-module-loader').System;

@@ -146,2 +174,13 @@

Tracuer support can also be used in NodeJS, allowing ES6 syntax in NodeJS:
```javascript
require('es6-module-loader').traceur = require('traceur');
var System = require('es6-module-loader').System;
System.import('es6-file', function(module) {
module.classMethod();
});
```
### Custom Esprima Location

@@ -172,2 +211,3 @@

* 0.2.4 NodeJS support, relative normalization fixes, IE8 support
* 0.3.0 Traceur support, better error reporting, source maps support, normalization simplifications

@@ -174,0 +214,0 @@ ## License

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc