Attempt at a reasonable build system for P2B
-JavaScript third-party dependencies (e.g. npm:event-stream, npm:buffer,
etc..) now are managed by jspm. jspm can manage mixed dependencies tree
of CJS, ES6, AMD modules and uses browser version of the modules like
Browserify does.
-jspm is used to bundle all of the app's JS and third-party into a single
build.js. All of ES6 is transpiled to ES5 using traceur by jspm behind
the scene.
-polymer is downloaded and installed by bower (They only support bower or
git cloning, I opted for bower)
-vulcanize is used to bundle all of the app's web components and third-party
web-components into a single index.html file
expected flow:
make #downloads and builds everything
make daemons #runs the needed daemons
make start #starts the web server at :8080
sadness:
-I was forced to change all import paths of polymer elements to relative
util fix in https://github.com/Polymer/vulcanize/pull/36 is merged
otherwise they won't get vulcanized
-jspm does not seem to support installing from local filesystem
otherwise I could have used Veyron as an CJS instead of UMD.
Change-Id: I54a868e457ea3c7adf88e506ddb6cdcc71529b36
diff --git a/examples/pipetobrowser/.gitignore b/examples/pipetobrowser/.gitignore
index 1505d62..4cf7941 100644
--- a/examples/pipetobrowser/.gitignore
+++ b/examples/pipetobrowser/.gitignore
@@ -1,2 +1,4 @@
-browser/libs/vendor/veyron
-browser/libs/vendor/polymer
\ No newline at end of file
+browser/index.html
+browser/build.js
+browser/third-party
+node_modules
\ No newline at end of file
diff --git a/examples/pipetobrowser/Makefile b/examples/pipetobrowser/Makefile
index 22c9feb..474caf5 100644
--- a/examples/pipetobrowser/Makefile
+++ b/examples/pipetobrowser/Makefile
@@ -1,37 +1,77 @@
-#
-# TODO(aghassemi) These commands are just for convenience.
-# Remove this file and references to it from README before release.
-#
-
+PATH:=$(PATH):node_modules/.bin
PATH:=$(PATH):$(VEYRON_ROOT)/environment/cout/node/bin
-VEYRON_MOUNTTABLE=$(VEYRON_ROOT)/veyron/go/bin/mounttabled
-VEYRON_WSPR=$(VEYRON_ROOT)/veyron/go/bin/wsprd
-VEYRON_PROXY=$(VEYRON_ROOT)/veyron/go/bin/proxyd
-VEYRON_IDENT=$(VEYRON_ROOT)/veyron/go/bin/identity
-VEYRON_IDENTITYD=$(VEYRON_ROOT)/veyron/go/bin/identityd
-VEYRON_MOUNTTABLE=$(VEYRON_ROOT)/veyron/go/bin/mounttabled
+PATH:=$(PATH):$(VEYRON_ROOT)/veyron/go/bin
+
VEYRON_PROXY_PORT=5164
VEYRON_MOUNTTABLE_PORT=5167
VEYRON_PROXY_ADDR=127.0.0.1:$(VEYRON_PROXY_PORT)
VEYRON_WSPR_PORT=5165
VEYRON_IDENTITY_PORT=5163
VEYRON_JS_API=$(VEYRON_ROOT)/veyron/javascript/api
+VEYRON_BUILD_SCRIPT=$(VEYRON_ROOT)/veyron/scripts/build/go
VEYRON_IDENTITY_PATH=/tmp/p2b_identity
+# All JS files except build.js and third party
+JS_FILES = $(shell find browser -name "*.js" -a -not -name "build.js" -a -not -path "*third-party*")
+# All HTML/CSS files except index.html and third party
+HTML_FILES = $(shell find browser -name "*.css" -a -not -path "*third-party*" -o -name "*.html" -a -not -name "index.html" -a -not -path "*third-party*")
+
# Builds everything
-all: browser/libs/vendor/polymer browser/libs/vendor/veyron
+all: node_modules browser/third-party browser/third-party/veyron browser/build.js browser/index.html $(VEYRON_ROOT)/veyron/go/bin
-browser/libs/vendor/polymer:
- cp -rf $(VEYRON_ROOT)/third_party/javascript/polymer ./browser/libs/vendor/polymer
+# Build p2b cli binary
+$(VEYRON_ROOT)/veyron/go/bin: cli/main.go
+ $(VEYRON_BUILD_SCRIPT) install veyron/examples/pipetobrowser/...
-browser/libs/vendor/veyron:
- (cd $(VEYRON_JS_API) && ./vgrunt build) && \
- mkdir -p ./browser/libs/vendor/veyron && \
- cp -rf $(VEYRON_JS_API)/dist/*.* ./browser/libs/vendor/veyron
+# Install what we need from NPM, tools such as jspm, serve, etc...
+node_modules: package.json
+ npm prune
+ npm install
+ touch node_modules
+# Build and copies Veyron from local source
+browser/third-party/veyron: $(VEYRON_JS_API)
+ mkdir browser/third-party -p
+ (cd $(VEYRON_JS_API) && ./vgrunt build)
+ mkdir browser/third-party/veyron -p
+ cp -rf $(VEYRON_JS_API)/dist/*.* browser/third-party/veyron
+
+# Install JSPM and Bower packages as listed in browser/package.json from JSPM and browser/bower.json from bower
+browser/third-party: browser/package.json browser/bower.json
+ cd browser; \
+ jspm prune; \
+ jspm install -h; \
+ bower prune; \
+ bower install
+ touch browser/third-party
+
+# Bundle whole app and third-party JavaScript into a single build.js
+browser/build.js: $(JS_FILES)
+ cd browser; \
+ jspm setmode local; \
+ jspm bundle app build.js
+ touch browser/third-party
+
+# Bundle all app web components and third-party web components into a single index.html
+browser/index.html: $(HTML_FILES)
+ cd browser; \
+ vulcanize -o index.html app.html
+
+# Serve the files
+start:
+ serve browser/. --port 8080 --compress
+
+# Continuously watch for changes to .js, .html or .css files.
+# Rebundle the appropriate file (build.js and/or index.html) when local files change
+watch:
+ watch -n 1 make
+
+# Clean all build artifacts
clean:
- rm -rf ./browser/libs/vendor/polymer
- rm -rf browser/libs/vendor/veyron
+ rm -rf browser/third-party
+ rm -rf node_modules
+ rm -f browser/index.html
+ rm -f browser/build.js
# Deploys Veyron daemons
daemons:
@@ -39,22 +79,21 @@
echo "Veyron proxy could not be found in $(VEYRON_PROXY). Please build and install veyron2 and services first"; \
exit 1; \
fi
-
- $(VEYRON_IDENT) --name=veyron_p2b_identity > $(VEYRON_IDENTITY_PATH)
-
+ identity --name=veyron_p2b_identity > $(VEYRON_IDENTITY_PATH)
export VEYRON_IDENTITY=$(VEYRON_IDENTITY_PATH) ; \
- $(VEYRON_IDENTITYD) --address=:$(VEYRON_IDENTITY_PORT) & \
- $(VEYRON_MOUNTTABLE) --address=:$(VEYRON_MOUNTTABLE_PORT) & \
+ identityd --address=:$(VEYRON_IDENTITY_PORT) & \
+ mounttabled --address=:$(VEYRON_MOUNTTABLE_PORT) & \
export NAMESPACE_ROOT=/localhost:$(VEYRON_MOUNTTABLE_PORT) ; \
- $(VEYRON_PROXY) -address=$(VEYRON_PROXY_ADDR) & \
- $(VEYRON_WSPR) --v=1 -logtostderr=true -vproxy=$(VEYRON_PROXY_ADDR) --port $(VEYRON_WSPR_PORT) & \
+ proxyd -address=$(VEYRON_PROXY_ADDR) & \
+ wsprd --v=1 -logtostderr=true -vproxy=$(VEYRON_PROXY_ADDR) --port $(VEYRON_WSPR_PORT) & \
$(VEYRON_STORE) --address=:$(VEYRON_STORE_PORT) --name=global/$(USER)/store &
-killdaemons:
+# Kills the running daemons
+clean-daemons:
kill `lsof -t -i:$(VEYRON_MOUNTTABLE_PORT)`; \
kill `lsof -t -i:$(VEYRON_IDENTITY_PORT)`; \
kill `lsof -t -i:$(VEYRON_WSPR_PORT)`; \
kill `lsof -t -i:$(VEYRON_PROXY_PORT)`; \
kill `lsof -t -i:$(VEYRON_STORE_PORT)`
-.PHONY: all clean daemons killdaemons browser/libs/vendor/polymer browser/libs/vendor/veyron
\ No newline at end of file
+.PHONY: start clean daemons clean-daemons watch
\ No newline at end of file
diff --git a/examples/pipetobrowser/README.md b/examples/pipetobrowser/README.md
index 5cf4547..2eedc9e 100644
--- a/examples/pipetobrowser/README.md
+++ b/examples/pipetobrowser/README.md
@@ -18,7 +18,21 @@
where **google/p2b/jane** is the Object name where p2b service is running in the browser. The suffix **console** or **image** specifies what viewer should be used to display the data.
## Building and Running
-TODO
+To build
+``
+make
+``
+To run
+``
+make daemons #Runs the required Veyron daemons
+make start #Starts a web server at 8080
+``
+and then navigate to http://localhost:8080
+
+To clean
+``
+make clean
+``
## Built-in Viewers
TODO
diff --git a/examples/pipetobrowser/browser/.bowerrc b/examples/pipetobrowser/browser/.bowerrc
new file mode 100644
index 0000000..779273b
--- /dev/null
+++ b/examples/pipetobrowser/browser/.bowerrc
@@ -0,0 +1,3 @@
+{
+ "directory" : "third-party"
+}
\ No newline at end of file
diff --git a/examples/pipetobrowser/browser/actions/add-pipe-viewer.js b/examples/pipetobrowser/browser/actions/add-pipe-viewer.js
index ae07987..419d70d 100644
--- a/examples/pipetobrowser/browser/actions/add-pipe-viewer.js
+++ b/examples/pipetobrowser/browser/actions/add-pipe-viewer.js
@@ -21,7 +21,7 @@
import { pipesViewInstance } from 'runtime/context'
var log = new Logger('actions/add-pipe-viewer');
-const ACTION_NAME = 'addPipeViewer';
+var ACTION_NAME = 'addPipeViewer';
var pipesPerNameCounter = {};
/*
diff --git a/examples/pipetobrowser/browser/actions/display-error.js b/examples/pipetobrowser/browser/actions/display-error.js
index 89c6b98..bc2695b 100644
--- a/examples/pipetobrowser/browser/actions/display-error.js
+++ b/examples/pipetobrowser/browser/actions/display-error.js
@@ -11,7 +11,7 @@
import { page } from 'runtime/context'
var log = new Logger('actions/display-error');
-const ACTION_NAME = 'error';
+var ACTION_NAME = 'error';
/*
* Registers the error action
diff --git a/examples/pipetobrowser/browser/actions/navigate-home-page.js b/examples/pipetobrowser/browser/actions/navigate-home-page.js
index ea90138..888e5d1 100644
--- a/examples/pipetobrowser/browser/actions/navigate-home-page.js
+++ b/examples/pipetobrowser/browser/actions/navigate-home-page.js
@@ -18,7 +18,7 @@
import { page } from 'runtime/context'
var log = new Logger('actions/navigate-home-page');
-const ACTION_NAME = 'home';
+var ACTION_NAME = 'home';
/*
* Registers the home action
diff --git a/examples/pipetobrowser/browser/actions/navigate-neighborhood.js b/examples/pipetobrowser/browser/actions/navigate-neighborhood.js
index 998e345..fc8c979 100644
--- a/examples/pipetobrowser/browser/actions/navigate-neighborhood.js
+++ b/examples/pipetobrowser/browser/actions/navigate-neighborhood.js
@@ -13,7 +13,7 @@
import { getAll as getAllPublishedP2BNames } from 'services/pipe-to-browser-namespace'
var log = new Logger('actions/navigate-neighborhood');
-const ACTION_NAME = 'neighborhood';
+var ACTION_NAME = 'neighborhood';
/*
* Registers the action
diff --git a/examples/pipetobrowser/browser/actions/navigate-pipes-page.js b/examples/pipetobrowser/browser/actions/navigate-pipes-page.js
index 179725f..4d8d3c3 100644
--- a/examples/pipetobrowser/browser/actions/navigate-pipes-page.js
+++ b/examples/pipetobrowser/browser/actions/navigate-pipes-page.js
@@ -10,7 +10,7 @@
import { page, pipesViewInstance } from 'runtime/context'
var log = new Logger('actions/navigate-pipes-page');
-const ACTION_NAME = 'pipes';
+var ACTION_NAME = 'pipes';
/*
* Registers the pipes action
diff --git a/examples/pipetobrowser/browser/actions/redirect-pipe.js b/examples/pipetobrowser/browser/actions/redirect-pipe.js
index 5d37832..4d92d73 100644
--- a/examples/pipetobrowser/browser/actions/redirect-pipe.js
+++ b/examples/pipetobrowser/browser/actions/redirect-pipe.js
@@ -14,7 +14,7 @@
import { getAll as getAllPublishedP2BNames } from 'services/pipe-to-browser-namespace'
var log = new Logger('actions/redirect-pipe');
-const ACTION_NAME = 'redirect-pipe';
+var ACTION_NAME = 'redirect-pipe';
/*
* Registers the redirect pipe action
diff --git a/examples/pipetobrowser/browser/app.html b/examples/pipetobrowser/browser/app.html
new file mode 100644
index 0000000..c592cb2
--- /dev/null
+++ b/examples/pipetobrowser/browser/app.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
+ <meta name="mobile-web-app-capable" content="yes">
+ <meta name="apple-mobile-web-app-capable" content="yes">
+ <meta name="description" content="Pipe To Browser (p2b) is a utility built with veyron technology that allows piping of stdout and std from console into local or remote browser windows. Different plugins exist to format the incoming data and display them in an appropriate and interactive format.">
+ <title>Pipe To Browser - because life is too short to stare at unformatted stdout text, and is hard enough already not to have a spell-checker for stdin</title>
+
+ <script src="third-party/platform/platform.js"></script>
+ <link rel="import" href="views/page/component.html"/>
+
+ <style type="text/css">
+ body {
+ font-family: 'Roboto', sans-serif;
+ color: rgba(0,0,0,0.87);
+ }
+ </style>
+</head>
+<body>
+ <!-- TODO(aghassemi) use CJS version of Veyron and provide an ES6 shim -->
+ <script src="third-party/veyron/veyron.js"></script>
+
+ <script src="third-party/traceur-runtime@0.0.49.js"></script>
+ <script src="third-party/system@0.6.js"></script>
+ <script src="config.js"></script>
+ <script src="build.js"></script>
+
+ <script>
+ window.addEventListener('polymer-ready', function(e) {
+ System.import('app').then(function(app) {
+ app.start();
+ }).catch(function(e) {
+ console.error(e);
+ });
+ });
+ </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/examples/pipetobrowser/browser/runtime/app.js b/examples/pipetobrowser/browser/app.js
similarity index 99%
rename from examples/pipetobrowser/browser/runtime/app.js
rename to examples/pipetobrowser/browser/app.js
index 59e6b55..9718f47 100644
--- a/examples/pipetobrowser/browser/runtime/app.js
+++ b/examples/pipetobrowser/browser/app.js
@@ -15,7 +15,6 @@
var log = new Logger('app');
export function start() {
-
log.debug('start called');
// Initialize a new page, sets up toolbar and action bar for the app
diff --git a/examples/pipetobrowser/browser/bower.json b/examples/pipetobrowser/browser/bower.json
new file mode 100644
index 0000000..6ebd373
--- /dev/null
+++ b/examples/pipetobrowser/browser/bower.json
@@ -0,0 +1,9 @@
+{
+ "name": "pipe-to-browser",
+ "version": "0.0.1",
+ "dependencies": {
+ "polymer": "Polymer/polymer#~0.3.2",
+ "core-elements": "Polymer/core-elements#~0.3.2",
+ "paper-elements": "Polymer/paper-elements#~0.3.2"
+ }
+}
diff --git a/examples/pipetobrowser/browser/config.js b/examples/pipetobrowser/browser/config.js
index 2fcb266..2e7b142 100644
--- a/examples/pipetobrowser/browser/config.js
+++ b/examples/pipetobrowser/browser/config.js
@@ -1,16 +1,82 @@
-/*
- * App configuration
- * @fileoverview
- */
+System.config({
+ "paths": {
+ "*": "*.js",
+ "pipe-viewer": "pipe-viewers/pipe-viewer.js",
+ "pipe-viewer-delegation": "pipe-viewers/pipe-viewer-delegation.js",
+ "view": "libs/mvc/view.js",
+ "logger": "libs/logs/logger.js",
+ "stream-helpers": "libs/utils/stream-helpers.js",
+ "npm:*": "third-party/npm/*.js",
+ "github:*": "third-party/github/*.js"
+ }
+});
-var veyronLogLevels = Veyron.logLevels;
+System.config({
+ "map": {
+ "npm:event-stream": "npm:event-stream@^3.1.5",
+ "nodelibs": "github:jspm/nodelibs@master",
+ "npm:event-stream@3.1.5": {
+ "through": "npm:through@^2.3.1",
+ "pause-stream": "npm:pause-stream@0.0.11",
+ "from": "npm:from@0",
+ "stream-combiner": "npm:stream-combiner@^0.0.4",
+ "map-stream": "npm:map-stream@0.1",
+ "duplexer": "npm:duplexer@^0.1.1",
+ "split": "npm:split@0.2"
+ },
+ "npm:stream-combiner@0.0.4": {
+ "duplexer": "npm:duplexer@^0.1.1"
+ },
+ "npm:pause-stream@0.0.11": {
+ "through": "npm:through@2.3"
+ },
+ "npm:from@0.1.3": {},
+ "npm:through@2.3.4": {},
+ "npm:duplexer@0.1.1": {},
+ "npm:split@0.2.10": {
+ "through": "npm:through@2"
+ },
+ "npm:map-stream@0.1.0": {},
+ "github:jspm/nodelibs@0.0.2": {
+ "base64-js": "npm:base64-js@^0.0.4",
+ "ieee754": "npm:ieee754@^1.1.1",
+ "inherits": "npm:inherits@^2.0.1",
+ "Base64": "npm:Base64@0.2",
+ "json": "github:systemjs/plugin-json@master"
+ },
+ "npm:base64-js@0.0.4": {},
+ "npm:Base64@0.2.1": {},
+ "npm:inherits@2.0.1": {},
+ "npm:ieee754@1.1.3": {},
+ "github:jspm/nodelibs@master": {
+ "Base64": "npm:Base64@0.2",
+ "base64-js": "npm:base64-js@^0.0.4",
+ "ieee754": "npm:ieee754@^1.1.1",
+ "inherits": "npm:inherits@^2.0.1",
+ "json": "github:systemjs/plugin-json@master"
+ }
+ }
+});
-export var config = {
- veyron: {
- identityServer: 'http://localhost:5163/random/',
- proxy: 'http://localhost:5165',
- logLevel: veyronLogLevels.INFO
- },
- namespaceRoot: '/localhost:5167',
- publishNamePrefix: 'google/p2b'
-}
\ No newline at end of file
+System.config({
+ "versions": {
+ "npm:event-stream": "3.1.5",
+ "npm:through": "2.3.4",
+ "npm:pause-stream": "0.0.11",
+ "npm:from": "0.1.3",
+ "npm:stream-combiner": "0.0.4",
+ "npm:map-stream": "0.1.0",
+ "npm:duplexer": "0.1.1",
+ "npm:split": "0.2.10",
+ "github:jspm/nodelibs": [
+ "master",
+ "0.0.2"
+ ],
+ "npm:base64-js": "0.0.4",
+ "npm:ieee754": "1.1.3",
+ "npm:inherits": "2.0.1",
+ "npm:Base64": "0.2.1",
+ "github:systemjs/plugin-json": "master"
+ }
+});
+
diff --git a/examples/pipetobrowser/browser/config/config.js b/examples/pipetobrowser/browser/config/config.js
new file mode 100644
index 0000000..de4cd2e
--- /dev/null
+++ b/examples/pipetobrowser/browser/config/config.js
@@ -0,0 +1,15 @@
+/*
+ * App configuration
+ * @fileoverview
+ */
+var veyronLogLevels = Veyron.logLevels;
+
+export var config = {
+ veyron: {
+ identityServer: 'http://localhost:5163/random/',
+ proxy: 'http://localhost:5165',
+ logLevel: veyronLogLevels.INFO
+ },
+ namespaceRoot: '/localhost:5167',
+ publishNamePrefix: 'google/p2b'
+}
\ No newline at end of file
diff --git a/examples/pipetobrowser/browser/index.css b/examples/pipetobrowser/browser/index.css
deleted file mode 100644
index 3b0dd96..0000000
--- a/examples/pipetobrowser/browser/index.css
+++ /dev/null
@@ -1,4 +0,0 @@
-body {
- font-family: 'Roboto', sans-serif;
- color: rgba(0,0,0,0.87);
-}
\ No newline at end of file
diff --git a/examples/pipetobrowser/browser/index.html b/examples/pipetobrowser/browser/index.html
deleted file mode 100644
index a73e258..0000000
--- a/examples/pipetobrowser/browser/index.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
- <meta name="mobile-web-app-capable" content="yes">
- <meta name="apple-mobile-web-app-capable" content="yes">
- <meta name="description" content="Pipe To Browser (p2b) is a utility built with veyron technology that allows piping of stdout and std from console into local or remote browser windows. Different plugins exist to format the incoming data and display them in an appropriate and interactive format.">
- <title>Pipe To Browser - because life is too short to stare at unformatted stdout text, and is hard enough already not to have a spell-checker for stdin</title>
-
- <script src="libs/vendor/polymer/platform/platform.js"></script>
-
- <link rel="stylesheet" type="text/css" href="index.css"/>
-
- <!-- TODO(aghassemi) For Production - Use Volcanize to combine all components into a single import at build time -->
- <link rel="import" href="views/page/component.html"/>
- <link rel="import" href="views/publish/component.html"/>
- <link rel="import" href="views/status/component.html"/>
- <link rel="import" href="views/error/component.html"/>
- <link rel="import" href="views/loading/component.html"/>
- <link rel="import" href="views/pipes/component.html"/>
- <link rel="import" href="views/redirect-pipe-dialog/component.html"/>
- <link rel="import" href="views/neighborhood/component.html"/>
- <link rel="import" href="views/help/component.html"/>
-
- <link rel="import" href="libs/ui-components/blackhole/component.html"/>
-
- <!-- TODO(aghassemi) Dynamic loading of plugins. Plugins should be able to use a provided module to load web components if they need to. We don't want to load all plugins for no reason! There could be hundreds of them -->
- <link rel="import" href="pipe-viewers/builtin/console/component.html"/>
- <link rel="import" href="pipe-viewers/builtin/git/status/component.html"/>
- <link rel="import" href="pipe-viewers/builtin/vlog/component.html"/>
-
-</head>
-<body>
-
- <!-- TODO(aghassemi) These are Browserified NodeJS modules. Bundle at build time into a single file and move to package.json -->
- <script src="libs/vendor/veyron/veyron.js"></script>
- <script src="libs/vendor/nodejs/buffer.js"></script>
- <script src="libs/vendor/nodejs/stream.js"></script>
- <script src="libs/vendor/nodejs/event-stream.js"></script>
-
- <!-- TODO(aghassemi) For Production - Use traceur at build time for ES6 instead -->
- <script src="libs/vendor/traceur/traceur.js"></script>
- <script>traceur.options.experimental = true;</script>
- <script src="libs/vendor/es6-module-loader/es6-module-loader.js"></script>
-
- <script src="runtime/init.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/examples/pipetobrowser/browser/libs/ui-components/blackhole/component.html b/examples/pipetobrowser/browser/libs/ui-components/blackhole/component.html
index 58a9cc6..f3c26d5 100644
--- a/examples/pipetobrowser/browser/libs/ui-components/blackhole/component.html
+++ b/examples/pipetobrowser/browser/libs/ui-components/blackhole/component.html
@@ -1,11 +1,11 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
+<link rel="import" href="../../../third-party/polymer/polymer.html">
<!--
p2b-ui-components-blackhole is a simple image of a blackhole in the middle of a galaxy
when blackhole is running, a spinner gif is displayed in the middle of the blackhole.
-->
<polymer-element name="p2b-blackhole">
<template>
- <link rel="stylesheet" href="/libs/css/common-style.css">
+ <link rel="stylesheet" href="../../css/common-style.css">
<link rel="stylesheet" href="component.css">
<img class="spinner {{ !running ? 'hidden' : '' }}" src="{{ running ? 'libs/ui-components/common/spinner.gif' : '' }}" alt="Represents a blackhole destroying objects falling into it."/>
<cite class="attribution">Photo from Wikipedia <a target="_blank" href="http://en.wikipedia.org/wiki/Black_hole#mediaviewer/File:BH_LMC.png">by Alan R</a> (CC BY-SA 2.5)</cite>
diff --git a/examples/pipetobrowser/browser/libs/ui-components/data-grid/filter/select/component.html b/examples/pipetobrowser/browser/libs/ui-components/data-grid/filter/select/component.html
index 7419829..e7c3b41 100644
--- a/examples/pipetobrowser/browser/libs/ui-components/data-grid/filter/select/component.html
+++ b/examples/pipetobrowser/browser/libs/ui-components/data-grid/filter/select/component.html
@@ -1,7 +1,7 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
-<link rel="import" href="/libs/vendor/polymer/paper-checkbox/paper-checkbox.html">
-<link rel="import" href="/libs/vendor/polymer/paper-radio-button/paper-radio-button.html">
-<link rel="import" href="/libs/vendor/polymer/paper-radio-group/paper-radio-group.html">
+<link rel="import" href="../../../../../third-party/polymer/polymer.html">
+<link rel="import" href="../../../../../third-party/paper-checkbox/paper-checkbox.html">
+<link rel="import" href="../../../../../third-party/paper-radio-button/paper-radio-button.html">
+<link rel="import" href="../../../../../third-party/paper-radio-group/paper-radio-group.html">
<polymer-element name="p2b-grid-filter-select" attributes="multiple key label" grid-filter expects-grid-state>
<template>
<link rel="stylesheet" href="component.css">
diff --git a/examples/pipetobrowser/browser/libs/ui-components/data-grid/filter/select/item/component.html b/examples/pipetobrowser/browser/libs/ui-components/data-grid/filter/select/item/component.html
index e338bd9..7d46b8f 100644
--- a/examples/pipetobrowser/browser/libs/ui-components/data-grid/filter/select/item/component.html
+++ b/examples/pipetobrowser/browser/libs/ui-components/data-grid/filter/select/item/component.html
@@ -1,4 +1,4 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
+<link rel="import" href="../../../../../../third-party/polymer/polymer.html">
<polymer-element name="p2b-grid-filter-select-item" attributes="label checked value">
<script>
Polymer('p2b-grid-filter-select-item', {
diff --git a/examples/pipetobrowser/browser/libs/ui-components/data-grid/filter/toggle/component.html b/examples/pipetobrowser/browser/libs/ui-components/data-grid/filter/toggle/component.html
index dabe0bc..a7c9414 100644
--- a/examples/pipetobrowser/browser/libs/ui-components/data-grid/filter/toggle/component.html
+++ b/examples/pipetobrowser/browser/libs/ui-components/data-grid/filter/toggle/component.html
@@ -1,5 +1,5 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
-<link rel="import" href="/libs/vendor/polymer/paper-toggle-button/paper-toggle-button.html">
+<link rel="import" href="../../../../../third-party/polymer/polymer.html">
+<link rel="import" href="../../../../../third-party/paper-toggle-button/paper-toggle-button.html">
<polymer-element name="p2b-grid-filter-toggle" attributes="key checked label" grid-filter expects-grid-state>
<template>
<link rel="stylesheet" href="component.css">
diff --git a/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/cell/renderer.html b/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/cell/renderer.html
index 200c998..514bebe 100644
--- a/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/cell/renderer.html
+++ b/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/cell/renderer.html
@@ -1,8 +1,8 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
+<link rel="import" href="../../../../../third-party/polymer/polymer.html">
<polymer-element name="p2b-grid-cell-renderer" extends="td" attributes="data">
<template>
<link rel="stylesheet" href="renderer.css">
- <link rel="stylesheet" href="/libs/css/common-style.css">
+ <link rel="stylesheet" href="../../../../css/common-style.css">
<div class="cell {{ {'secondary-text': !data.primary, 'no-wrap': !data.wrap} | tokenList }}">
<content></content>
</div>
diff --git a/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/column/component.html b/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/column/component.html
index 40e87d2..cbb8052 100644
--- a/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/column/component.html
+++ b/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/column/component.html
@@ -1,4 +1,4 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
+<link rel="import" href="../../../../../third-party/polymer/polymer.html">
<polymer-element name="p2b-grid-column" grid-column attributes="label sortable key primary wrap flex minFlex priority">
<script>
Polymer('p2b-grid-column', {
diff --git a/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/column/renderer.html b/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/column/renderer.html
index 5a70ce6..cb2f8c9 100644
--- a/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/column/renderer.html
+++ b/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/column/renderer.html
@@ -1,5 +1,5 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
-<link rel="import" href="/libs/vendor/polymer/paper-button/paper-button.html">
+<link rel="import" href="../../../../../third-party/polymer/polymer.html">
+<link rel="import" href="../../../../../third-party/paper-button/paper-button.html">
<polymer-element name="p2b-grid-column-renderer" extends="th" attributes="data gridState" expects-grid-state>
<template>
<link rel="stylesheet" href="renderer.css">
diff --git a/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/component.html b/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/component.html
index 0824c37..a67f7dd 100644
--- a/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/component.html
+++ b/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/component.html
@@ -1,16 +1,16 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
-<link rel="import" href="/libs/vendor/polymer/paper-icon-button/paper-icon-button.html">
-<link rel="import" href="/libs/vendor/polymer/paper-dialog/paper-dialog.html">
-<link rel="import" href="/libs/vendor/polymer/paper-dialog/paper-dialog-transition.html">
-<link rel="import" href="/libs/vendor/polymer/paper-fab/paper-fab.html">
-<link rel="import" href="/libs/vendor/polymer/core-collapse/core-collapse.html">
-<link rel="import" href="/libs/ui-components/data-grid/grid/row/renderer.html">
-<link rel="import" href="/libs/ui-components/data-grid/grid/cell/renderer.html">
-<link rel="import" href="/libs/ui-components/data-grid/grid/column/renderer.html">
+<link rel="import" href="../../../../third-party/polymer/polymer.html">
+<link rel="import" href="../../../../third-party/paper-icon-button/paper-icon-button.html">
+<link rel="import" href="../../../../third-party/paper-dialog/paper-dialog.html">
+<link rel="import" href="../../../../third-party/paper-dialog/paper-dialog-transition.html">
+<link rel="import" href="../../../../third-party/paper-fab/paper-fab.html">
+<link rel="import" href="../../../../third-party/core-collapse/core-collapse.html">
+<link rel="import" href="row/renderer.html">
+<link rel="import" href="cell/renderer.html">
+<link rel="import" href="column/renderer.html">
<polymer-element name="p2b-grid" attributes="summary dataSource defaultSortKey defaultSortAscending pageSize">
<template>
- <link rel="stylesheet" href="/libs/css/common-style.css">
+ <link rel="stylesheet" href="../../../css/common-style.css">
<link rel="stylesheet" href="component.css">
<div id="templates"></div>
<core-collapse id="searchTools">
diff --git a/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/row/renderer.html b/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/row/renderer.html
index e6ad86f..02c8c02 100644
--- a/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/row/renderer.html
+++ b/examples/pipetobrowser/browser/libs/ui-components/data-grid/grid/row/renderer.html
@@ -1,4 +1,4 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
+<link rel="import" href="../../../../../third-party/polymer/polymer.html">
<polymer-element name="p2b-grid-row-renderer" extends="tr">
<template>
<link rel="stylesheet" href="renderer.css">
diff --git a/examples/pipetobrowser/browser/libs/ui-components/data-grid/search/component.html b/examples/pipetobrowser/browser/libs/ui-components/data-grid/search/component.html
index 0418d40..93b51db 100644
--- a/examples/pipetobrowser/browser/libs/ui-components/data-grid/search/component.html
+++ b/examples/pipetobrowser/browser/libs/ui-components/data-grid/search/component.html
@@ -1,5 +1,5 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
-<link rel="import" href="/libs/vendor/polymer/paper-input/paper-input.html">
+<link rel="import" href="../../../../third-party/polymer/polymer.html">
+<link rel="import" href="../../../../third-party/paper-input/paper-input.html">
<polymer-element name="p2b-grid-search" grid-search expects-grid-state attributes="label">
<template>
<link rel="stylesheet" href="component.css">
diff --git a/examples/pipetobrowser/browser/libs/utils/byte-object-stream-adapter.js b/examples/pipetobrowser/browser/libs/utils/byte-object-stream-adapter.js
index 2484212..d12c998 100644
--- a/examples/pipetobrowser/browser/libs/utils/byte-object-stream-adapter.js
+++ b/examples/pipetobrowser/browser/libs/utils/byte-object-stream-adapter.js
@@ -1,5 +1,8 @@
-var Transform = require('stream').Transform;
-var Buffer = require('buffer').Buffer;
+import { default as Stream } from "nodelibs/stream"
+import { default as buffer } from "nodelibs/buffer"
+
+var Transform = Stream.Transform;
+var Buffer = buffer.Buffer;
// TODO(aghassemi) doesn't look like ES6 and CommonJS modules can use the same
// syntax to be referenced, but research more, maybe something can be done at
// built time.
diff --git a/examples/pipetobrowser/browser/libs/utils/stream-byte-counter.js b/examples/pipetobrowser/browser/libs/utils/stream-byte-counter.js
index bf2b442..eef02ee 100644
--- a/examples/pipetobrowser/browser/libs/utils/stream-byte-counter.js
+++ b/examples/pipetobrowser/browser/libs/utils/stream-byte-counter.js
@@ -1,5 +1,6 @@
-var Transform = require('stream').Transform;
+import { default as Stream } from "nodelibs/stream"
+var Transform = Stream.Transform;
/*
* A through transform stream that counts number of bytes being piped to it
* @param {function} onUpdate Callback function that gets called with number of
diff --git a/examples/pipetobrowser/browser/libs/utils/stream-copy.js b/examples/pipetobrowser/browser/libs/utils/stream-copy.js
index 7e1a38e..4b7e386 100644
--- a/examples/pipetobrowser/browser/libs/utils/stream-copy.js
+++ b/examples/pipetobrowser/browser/libs/utils/stream-copy.js
@@ -1,6 +1,9 @@
-var Transform = require('stream').Transform;
-var PassThrough = require('stream').PassThrough;
-var Buffer = require('buffer').Buffer;
+import { default as Stream } from "nodelibs/stream"
+import { default as buffer } from "nodelibs/buffer"
+
+var Transform = Stream.Transform;
+var PassThrough = Stream.PassThrough;
+var Buffer = buffer.Buffer;
/*
* A through transform stream keep a copy of the data piped to it and provides
* functions to create new copies of the stream on-demand
diff --git a/examples/pipetobrowser/browser/libs/utils/stream-helpers.js b/examples/pipetobrowser/browser/libs/utils/stream-helpers.js
index cbf95b9..5ce53a3 100644
--- a/examples/pipetobrowser/browser/libs/utils/stream-helpers.js
+++ b/examples/pipetobrowser/browser/libs/utils/stream-helpers.js
@@ -1,4 +1,5 @@
-var es = require('event-stream');
+import { default as es } from "npm:event-stream"
+
export var streamUtil = {
split: es.split,
map: es.map,
diff --git a/examples/pipetobrowser/browser/libs/vendor/README b/examples/pipetobrowser/browser/libs/vendor/README
deleted file mode 100644
index 57f6ac5..0000000
--- a/examples/pipetobrowser/browser/libs/vendor/README
+++ /dev/null
@@ -1 +0,0 @@
-third-party modules
\ No newline at end of file
diff --git a/examples/pipetobrowser/browser/libs/vendor/es6-module-loader/es6-module-loader.js b/examples/pipetobrowser/browser/libs/vendor/es6-module-loader/es6-module-loader.js
deleted file mode 100644
index 1052275..0000000
--- a/examples/pipetobrowser/browser/libs/vendor/es6-module-loader/es6-module-loader.js
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
- * es6-module-loader v0.5.4
- * https://github.com/ModuleLoader/es6-module-loader
- * Implemented to the 2013-12-02 ES6 module specification draft
- * Copyright (c) 2014 Guy Bedford, Luke Hoban, Addy Osmani; Licensed MIT
- */
-/*
- * ES6 Promises shim from when.js, Copyright (c) 2010-2014 Brian Cavalier, John Hann, MIT License
- */
-!function(){return"undefined"!=typeof Promise&&Promise.all&&Promise.resolve&&Promise.reject}()&&!function(a){"object"==typeof exports?module.exports=a():"function"==typeof define&&define.amd?define(a):"undefined"!=typeof window?window.Promise=a():"undefined"!=typeof global?global.Promise=a():"undefined"!=typeof self&&(self.Promise=a())}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};a[g][0].call(j.exports,function(b){var c=a[g][1][b];return e(c?c:b)},j,j.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b){var c=b.exports=a("../lib/Promise"),d="undefined"!=typeof global&&global||"undefined"!=typeof window&&window||"undefined"!=typeof self&&self;"undefined"!=typeof d&&"undefined"==typeof d.Promise&&(d.Promise=c)},{"../lib/Promise":2}],2:[function(b,c){!function(a){"use strict";a(function(a){var b=a("./makePromise"),c=a("./scheduler"),d=a("./async");return b({scheduler:new c(d),monitor:"undefined"!=typeof console?console:void 0})})}("function"==typeof a&&a.amd?a:function(a){c.exports=a(b)})},{"./async":4,"./makePromise":5,"./scheduler":6}],3:[function(b,c){!function(a){"use strict";a(function(){function a(a){this.head=this.tail=this.length=0,this.buffer=new Array(1<<a)}return a.prototype.push=function(a){return this.length===this.buffer.length&&this._ensureCapacity(2*this.length),this.buffer[this.tail]=a,this.tail=this.tail+1&this.buffer.length-1,++this.length,this.length},a.prototype.shift=function(){var a=this.buffer[this.head];return this.buffer[this.head]=void 0,this.head=this.head+1&this.buffer.length-1,--this.length,a},a.prototype._ensureCapacity=function(a){var b,c=this.head,d=this.buffer,e=new Array(a),f=0;if(0===c)for(b=this.length;b>f;++f)e[f]=d[f];else{for(a=d.length,b=this.tail;a>c;++f,++c)e[f]=d[c];for(c=0;b>c;++f,++c)e[f]=d[c]}this.buffer=e,this.head=0,this.tail=this.length},a})}("function"==typeof a&&a.amd?a:function(a){c.exports=a()})},{}],4:[function(b,c){!function(a){"use strict";a(function(a){var b,c;return b="undefined"!=typeof process&&null!==process&&"function"==typeof process.nextTick?function(a){process.nextTick(a)}:(c="function"==typeof MutationObserver&&MutationObserver||"function"==typeof WebKitMutationObserver&&WebKitMutationObserver)?function(a,b){function c(){var a=d;d=void 0,a()}var d,e=a.createElement("div"),f=new b(c);return f.observe(e,{attributes:!0}),function(a){d=a,e.setAttribute("class","x")}}(document,c):function(a){try{return a("vertx").runOnLoop||a("vertx").runOnContext}catch(b){}var c=setTimeout;return function(a){c(a,0)}}(a)})}("function"==typeof a&&a.amd?a:function(a){c.exports=a(b)})},{}],5:[function(b,c){!function(a){"use strict";a(function(){return function(a){function b(a){function b(a){f._handler.resolve(a)}function d(a){f._handler.reject(a)}function e(a){f._handler.notify(a)}var f=this;this._handler=new q,c(a,b,d,e)}function c(a,b,c,d){try{a(b,c,d)}catch(e){c(e)}}function d(a){return a instanceof b?a:new j(new r(k(a)))}function e(a){return new j(new r(new v(a)))}function f(){return G}function g(){return new j(new q)}function h(a){function b(a,b,c,d){c.when(F,F,void 0,a,function(a){b[d]=a,0===--g&&this.resolve(b)},a.reject,a.notify)}var c,d,e=new q,f=a.length>>>0,g=f,h=[];for(c=0;f>c;++c)c in a?(d=a[c],C(d)?b(e,h,l(d),c):(h[c]=d,--g)):--g;return 0===g&&e.resolve(h),new j(e)}function i(a){if(Object(a)===a&&0===a.length)return f();for(var b=new q,c=0;c<a.length;++c)k(a[c]).when(F,F,void 0,b,b.resolve,b.reject);return new j(b)}function j(a){this._handler=a}function k(a,c){return a instanceof b?m(a,c):C(a)?n(a):new u(a)}function l(a){return a instanceof b?a._handler.join():n(a)}function m(a,b){var c=a._handler.join();return b===c?w():c}function n(a){try{var b=a.then;return"function"==typeof b?new t(b,a):new u(a)}catch(c){return new v(c)}}function o(){}function p(a){if(this.handler=a,this._isMonitored()){var b=this._env.promiseMonitor.captureStack();this.trace=a._addTrace(b)}}function q(a){this.consumers=[],this.receiver=a,this.handler=void 0,this.resolved=!1,this._isMonitored()&&(this.trace=this._env.promiseMonitor.captureStack())}function r(a){p.call(this,a)}function s(a,b){p.call(this,a),this.receiver=b}function t(a,b){q.call(this),this.assimilated=!1,this.untrustedThen=a,this.thenable=b}function u(a){this.value=a}function v(a){this.value=a,this.observed=!1,this._isMonitored()&&(this.key=this._env.promiseMonitor.startTrace(a))}function w(){return new v(new TypeError("Promise cycle"))}function x(a){return{state:"fulfilled",value:a}}function y(a){return{state:"rejected",reason:a}}function z(){return{state:"pending"}}function A(a,b,c,d,e,f,g,h){this.a=a,this.b=b,this.c=c,this.d=d,this.e=e,this.f=f,this.g=g,this.handler=h}function B(a,b){this.q=a,this.value=b}function C(a){return("object"==typeof a||"function"==typeof a)&&null!==a}function D(a,b,c){try{return a.call(c,b)}catch(d){return e(d)}}function E(a,b,c){try{return a.call(c,b)}catch(d){return d}}function F(){}var G,H=a.scheduler,I=Object.create||function(a){function b(){}return b.prototype=a,new b};return b.resolve=d,b.reject=e,b.never=f,b._defer=g,b.prototype.then=function(a,b,c){var d=this._handler,e=new q(d.receiver);return d.when(e.resolve,e.notify,e,d.receiver,a,b,c),new j(e)},b.prototype["catch"]=b.prototype.otherwise=function(a){return this.then(void 0,a)},b.prototype._bindContext=function(a){return new j(new s(this._handler,a))},b.all=h,b.race=i,j.prototype=I(b.prototype),o.prototype.inspect=z,o.prototype.when=F,o.prototype.resolve=F,o.prototype.reject=F,o.prototype.notify=F,o.prototype.join=function(){return this},o.prototype._env=a.monitor||b,o.prototype._addTrace=F,o.prototype._isMonitored=function(){return"undefined"!=typeof this._env.promiseMonitor},p.prototype=I(o.prototype),p.prototype.join=function(){return this.handler.join()},p.prototype.inspect=function(){return this.handler.inspect()},p.prototype._addTrace=function(a){return this.handler._addTrace(a)},q.prototype=I(o.prototype),q.prototype.inspect=function(){return this.resolved?this.handler.join().inspect():z()},q.prototype.resolve=function(a){this._join(k(a,this))},q.prototype.reject=function(a){this._join(new v(a))},q.prototype.join=function(){return this.resolved?this.handler.join():this},q.prototype.run=function(){var a=this.consumers,b=this.handler=this.handler.join();this.consumers=void 0;for(var c=0;c<a.length;c+=7)b.when(a[c],a[c+1],a[c+2],a[c+3],a[c+4],a[c+5],a[c+6])},q.prototype._join=function(a){this.resolved||(this.resolved=!0,this.handler=a,H.enqueue(this),this._isMonitored()&&(this.trace=a._addTrace(this.trace)))},q.prototype.when=function(a,b,c,d,e,f,g){this.resolved?H.enqueue(new A(a,b,c,d,e,f,g,this.handler.join())):this.consumers.push(a,b,c,d,e,f,g)},q.prototype.notify=function(a){this.resolved||H.enqueue(new B(this.consumers,a))},q.prototype._addTrace=function(a){return this.resolved?this.handler._addTrace(a):a},r.prototype=I(p.prototype),r.prototype.when=function(a,b,c,d,e,f,g){H.enqueue(new A(a,b,c,d,e,f,g,this.join()))},s.prototype=I(p.prototype),s.prototype.when=function(a,b,c,d,e,f,g){void 0!==this.receiver&&(d=this.receiver),this.join().when(a,b,c,d,e,f,g)},t.prototype=I(q.prototype),t.prototype.when=function(a,b,c,d,e,f,g){this.assimilated||(this.assimilated=!0,this._assimilate()),q.prototype.when.call(this,a,b,c,d,e,f,g)},t.prototype._assimilate=function(){function a(a){d.resolve(a)}function b(a){d.reject(a)}function c(a){d.notify(a)}var d=this;this._try(this.untrustedThen,this.thenable,a,b,c)},t.prototype._try=function(a,b,c,d,e){try{a.call(b,c,d,e)}catch(f){d(f)}},u.prototype=I(o.prototype),u.prototype.inspect=function(){return x(this.value)},u.prototype.when=function(a,b,c,d,e){var f="function"==typeof e?D(e,this.value,d):this.value;a.call(c,f)},v.prototype=I(o.prototype),v.prototype.inspect=function(){return y(this.value)},v.prototype.when=function(a,b,c,d,f,g){this._isMonitored()&&!this.observed&&this._env.promiseMonitor.removeTrace(this.key),this.observed=!0;var h="function"==typeof g?D(g,this.value,d):e(this.value);a.call(c,h)},v.prototype._addTrace=function(a){this.observed||this._env.promiseMonitor.updateTrace(this.key,a)},G=new j(new o),A.prototype.run=function(){this.handler.when(this.a,this.b,this.c,this.d,this.e,this.f,this.g)},B.prototype.run=function(){for(var a=this.q,b=1;b<a.length;b+=7)this._notify(a[b],a[b+1],a[b+2],a[b+5])},B.prototype._notify=function(a,b,c,d){var e="function"==typeof d?E(d,this.value,c):this.value;a.call(b,e)},b}})}("function"==typeof a&&a.amd?a:function(a){c.exports=a()})},{}],6:[function(b,c){!function(a){"use strict";a(function(a){function b(a){this._enqueue=a,this._handlerQueue=new c(15);var b=this;this.drainQueue=function(){b._drainQueue()}}var c=a("./Queue");return b.prototype.enqueue=function(a){1===this._handlerQueue.push(a)&&this._enqueue(this.drainQueue)},b.prototype._drainQueue=function(){for(var a=this._handlerQueue;a.length>0;)a.shift().run()},b})}("function"==typeof a&&a.amd?a:function(a){c.exports=a(b)})},{"./Queue":3}]},{},[1])(1)}),function(global){function __eval(__source,global,__sourceURL,__moduleName){try{eval('var __moduleName = "'+(__moduleName||"").replace('"','"')+'"; with(global) { (function() { '+__source+" \n }).call(global); }"+(__sourceURL&&!__source.match(/\/\/[@#] ?(sourceURL|sourceMappingURL)=([^\n]+)/)?"\n//# sourceURL="+__sourceURL:""))}catch(e){throw"SyntaxError"==e.name&&(e.message="Evaluating "+__sourceURL+"\n "+e.message),e}}!function(){function a(a){return{status:"loading",name:a,metadata:{},linkSets:[]}}function b(b,d,e,f){return new v(function(a){a(b.normalize(d,e,f))}).then(function(d){var e;if(b._modules[d])return e=a(d),e.status="linked",e;for(var f=0,g=b._loads.length;g>f;f++)if(e=b._loads[f],e.name==d)return e;return e=a(d),b._loads.push(e),c(b,e),e})}function c(a,b){d(a,b,v.resolve().then(function(){return a.locate({name:b.name,metadata:b.metadata})}))}function d(a,b,c){e(a,b,c.then(function(c){return"failed"==b.status?void 0:(b.address=c,a.fetch({name:b.name,metadata:b.metadata,address:c}))}))}function e(a,c,d){d.then(function(b){return"failed"==c.status?void 0:a.translate({name:c.name,metadata:c.metadata,address:c.address,source:b})}).then(function(b){return"failed"==c.status?void 0:(c.source=b,a.instantiate({name:c.name,metadata:c.metadata,address:c.address,source:b}))}).then(function(d){if("failed"==c.status)return void 0;var e;if(void 0===d){if(!global.traceur)throw new TypeError("Include Traceur for module syntax support");t||(t=global.traceur,$traceurRuntime.ModuleStore.get=$traceurRuntime.getModuleImpl=function(a){return System.get(a)}),c.address=c.address||"anon"+ ++z;var f=new t.syntax.Parser(new t.syntax.SourceFile(c.address,c.source));c.body=f.parseModule(),e=r(c.body),c.kind="declarative"}else{if("object"!=typeof d)throw TypeError("Invalid instantiate return value");e=d.deps||[],c.execute=d.execute,c.kind="dynamic"}c.dependencies={},c.depsList=e;for(var h=[],i=0,j=e.length;j>i;i++)(function(d){var e=b(a,d,c.name,c.address);e.then(function(a){if(c.dependencies[d]=a.name,"linked"!=a.status)for(var b=c.linkSets.concat([]),e=0,f=b.length;f>e;e++)g(b[e],a)}),h.push(e)})(e[i]);return v.all(h)}).then(function(){c.status="loaded";for(var a=c.linkSets.concat([]),b=0,d=a.length;d>b;b++)h(a[b],c)},function(a){c.status="failed",c.exception=a;for(var b=0,d=c.linkSets.length;d>b;b++)i(c.linkSets[b],a)})}function f(a,b){var c,d,e=new v(function(a,b){c=a,d=b}),f={loader:a,loads:[],done:e,resolve:c,reject:d,loadingCount:0};return g(f,b),f}function g(a,b){for(var c=0,d=a.loads.length;d>c;c++)if(a.loads[c]==b)return;a.loads.push(b),b.linkSets.push(a),"loaded"!=b.status&&a.loadingCount++;var e=a.loader;for(var f in b.dependencies){var h=b.dependencies[f];if(!e._modules[h])for(var c=0,d=e._loads.length;d>c;c++)if(e._loads[c].name==h){g(a,e._loads[c]);break}}}function h(a,b){if(a.loadingCount--,!(a.loadingCount>0)){var c=a.loads[0];try{o(a.loads,a.loader)}catch(d){return i(a,d)}a.resolve(c)}}function i(a,b){for(var c=a.loads.concat([]),d=0,e=c.length;e>d;d++){var f=c[d],g=x.call(f.linkSets,a);if(f.linkSets.splice(g,1),0==f.linkSets.length){var h=x.call(a.loader._loads,f);-1!=h&&a.loader._loads.splice(h,1)}}a.reject(b)}function j(a,b){b.name&&(a._modules[b.name]=b.module);var c=x.call(a._loads,b);-1!=c&&a._loads.splice(c,1);for(var d=0,e=b.linkSets.length;e>d;d++)c=x.call(b.linkSets[d].loads,b),b.linkSets[d].loads.splice(c,1);b.linkSets=[]}function k(a,b,c){return new v(l(a,b,c&&c.address?"fetch":"locate",void 0,c&&c.address,void 0)).then(function(a){return a})}function l(b,g,h,i,j,k){return function(l,m){if(b._modules[g])throw new TypeError('Module "'+g+'" already exists in the module table');for(var n=0,o=b._loads.length;o>n;n++)if(b._loads[n].name==g)throw new TypeError('Module "'+g+'" is already loading');var p=a(g);i&&(p.metadata=i);var q=f(b,p);b._loads.push(p),q.done.then(l,m),"locate"==h?c(b,p):"fetch"==h?d(b,p,v.resolve(j)):(p.address=j,e(b,p,v.resolve(k)))}}function m(a,b){return n(b.module,a),b.module.module}function n(a,b){if(a.module)return a.module;for(var c in a.dependencies){var d=a.dependencies[c];b._modules[d].module||n(b._modules[d],b)}t.options.sourceMaps=!0,t.options.modules="instantiate";var e=new t.util.ErrorReporter;e.reportMessageInternal=function(a,b){throw b+"\n"+a};var f=global.System;global.System=global.traceurSystem;var g=new t.codegeneration.module.AttachModuleNameTransformer(a.name).transformAny(a.body);g=new t.codegeneration.FromOptionsTransformer(e).transform(g),global.System=f,delete a.body;var h=new t.outputgeneration.SourceMapGenerator({file:a.address}),i={sourceMapGenerator:h},j=t.outputgeneration.TreeWriter.write(g,i);global.btoa&&(j+="\n//# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(i.sourceMap)))+"\n");var k=System.register;System.register=function(b,c,d){for(var e=0;e<c.length;e++)c[e]=a.dependencies[c[e]];a.module=new s(d.apply(global,c))},__eval(j,global,a.address,a.name),System.register=k}function o(a,b){for(var c=!1;a.length;){c=!0;a:for(var d=0;d<a.length;d++){var e=a[d],f=[];for(var g in e.dependencies){var h=e.dependencies[g];if(!b._modules[h])continue a;var i=x.call(e.depsList,g);f[i]=h}if(c=!1,"declarative"==e.kind)e.module={name:e.name,dependencies:e.dependencies,body:e.body};else{var k=e.execute.apply(null,f);if(!(k instanceof s))throw new TypeError("Execution must define a Module instance");e.module={module:k}}e.status="linked",j(b,e)}if(c)throw new TypeError("Circular dependencies not supported by the polyfill")}}function p(a){if("object"!=typeof a)throw new TypeError("Options must be an object");a.normalize&&(this.normalize=a.normalize),a.locate&&(this.locate=a.locate),a.fetch&&(this.fetch=a.fetch),a.translate&&(this.translate=a.translate),a.instantiate&&(this.instantiate=a.instantiate),u(this,"global",{get:function(){throw new TypeError("global accessor not provided by polyfill")}}),u(this,"realm",{get:function(){throw new TypeError("Realms not implemented in polyfill")}}),this._modules={},this._loads=[]}function q(a,b,c,d){var e,f;if(b(a,c,d)!==!1)for(e in a)a.hasOwnProperty(e)&&"location"!=e&&"type"!=e&&(f=a[e],"object"==typeof f&&null!==f&&q(f,b,a,e))}function r(a){function b(a){-1==x.call(c,a)&&c.push(a)}var c=[];return q(a,function(a){"EXPORT_DECLARATION"==a.type?a.declaration.moduleSpecifier&&b(a.declaration.moduleSpecifier.token.processedValue):"IMPORT_DECLARATION"==a.type?b(a.moduleSpecifier.token.processedValue):"MODULE_DECLARATION"==a.type&&b(a.expression.token.processedValue)}),c}function s(a){if("object"!=typeof a)throw new TypeError("Expected object");if(!(this instanceof s))return new s(a);var b=this;for(var c in a)!function(a,c){u(b,a,{configurable:!1,enumerable:!0,get:function(){return c}})}(c,a[c]);Object.preventExtensions&&Object.preventExtensions(this)}var t,u,v=global.Promise||require("./promise");try{Object.defineProperty({},"a",{})&&(u=Object.defineProperty)}catch(w){u=function(a,b,c){try{a[b]=c.value||c.get.call(a)}catch(d){}}}console.assert=console.assert||function(){};var x=Array.prototype.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},y={};p.prototype={define:function(a,b,c){if(y[a])throw new TypeError("Module is already loading.");return y[a]=new v(l(this,a,c&&c.address?"fetch":"translate",c&&c.meta||{},c&&c.address,b)),y[a].then(function(){delete y[a]})},load:function(a,b){return this._modules[a]?(n(this._modules[a],this),v.resolve(this._modules[a].module)):y[a]?y[a]:(y[a]=k(this,a,b),y[a].then(function(){delete y[a]}))},module:function(b,c){var d=a();d.address=c&&c.address;var g=f(this,d),h=v.resolve(b),i=this,j=g.done.then(function(){return m(i,d)});return e(this,d,h),j},"import":function(a,b){if(this._modules[a])return n(this._modules[a],this),v.resolve(this._modules[a].module);var c=this;return(y[a]||(y[a]=k(this,a,b))).then(function(b){return delete y[a],m(c,b)})},eval:function(){throw new TypeError("Eval not implemented in polyfill")},get:function(a){return n(this._modules[a],this),this._modules[a].module},has:function(a){return!!this._modules[a]},set:function(a,b){if(!(b instanceof s))throw new TypeError("Set must be a module");this._modules[a]={module:b}},"delete":function(a){return this._modules[a]?delete this._modules[a]:!1},entries:function(){throw new TypeError("Iteration not yet implemented in the polyfill")},keys:function(){throw new TypeError("Iteration not yet implemented in the polyfill")},values:function(){throw new TypeError("Iteration not yet implemented in the polyfill")},normalize:function(a){return a},locate:function(a){return a.name},fetch:function(){throw new TypeError("Fetch not implemented")},translate:function(a){return a.source},instantiate:function(){}};var z=0;"object"==typeof exports&&(module.exports=p),global.Loader||(global.Loader=p),global.LoaderPolyfill=p,global.Module=s}()}("undefined"!=typeof global?global:this),function(a){function b(a){var b=String(a).replace(/^\s+|\s+$/g,"").match(/^([^:\/?#]+:)?(\/\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/);return b?{href:b[0]||"",protocol:b[1]||"",authority:b[2]||"",host:b[3]||"",hostname:b[4]||"",port:b[5]||"",pathname:b[6]||"",search:b[7]||"",hash:b[8]||""}:null}function c(a,c){function d(a){var b=[];return a.replace(/^(\.\.?(\/|$))+/,"").replace(/\/(\.(\/|$))+/g,"/").replace(/\/\.\.$/,"/../").replace(/\/?[^\/]*/g,function(a){"/.."===a?b.pop():b.push(a)}),b.join("").replace(/^\//,"/"===a.charAt(0)?"/":"")}return c=b(c||""),a=b(a||""),c&&a?(c.protocol||a.protocol)+(c.protocol||c.authority?c.authority:a.authority)+d(c.protocol||c.authority||"/"===c.pathname.charAt(0)?c.pathname:c.pathname?(a.authority&&!a.pathname?"/":"")+a.pathname.slice(0,a.pathname.lastIndexOf("/")+1)+c.pathname:a.pathname)+(c.protocol||c.authority||c.pathname?c.search:c.search||a.search)+c.hash:null}function d(){document.removeEventListener("DOMContentLoaded",d,!1),window.removeEventListener("load",d,!1),e()}function e(){for(var a=document.getElementsByTagName("script"),b=0;b<a.length;b++){var c=a[b];if("module"==c.type){var d=c.getAttribute("name"),e=c.getAttribute("src"),f=c.innerHTML;(d?k.define(d,f,{address:e}):k.module(f,{address:e})).then(function(){},function(a){nextTick(function(){throw a})})}}}var f,g="undefined"!=typeof window,h=a.Loader||require("./loader"),i=a.Promise||require("./promise");if(g)f=function(a,b,c){function d(){b(f.responseText)}function e(){c(f.statusText+": "+a||"XHR error")}var f=new XMLHttpRequest,g=!0;if(!("withCredentials"in f)){var h=/^(\w+:)?\/\/([^\/]+)/.exec(a);h&&(g=h[2]===window.location.host,h[1]&&(g&=h[1]===window.location.protocol))}g||(f=new XDomainRequest,f.onload=d,f.onerror=e,f.ontimeout=e),f.onreadystatechange=function(){4===f.readyState&&(200===f.status||0==f.status&&f.responseText?d():e())},f.open("GET",a,!0),f.send(null)};else{var j=require("fs");f=function(a,b,c){return j.readFile(a,function(a,d){return a?c(a):(b(d+""),void 0)})}}var k=new h({global:g?window:a,strict:!0,normalize:function(a,b){if("string"!=typeof a)throw new TypeError("Module name must be a string");var c=a.split("/");if(0==c.length)throw new TypeError("No module name provided");var d=0,e=!1,f=0;if("."==c[0]){if(d++,d==c.length)throw new TypeError('Illegal module name "'+a+'"');e=!0}else{for(;".."==c[d];)if(d++,d==c.length)throw new TypeError('Illegal module name "'+a+'"');d&&(e=!0),f=d}for(var g=d;g<c.length;g++){var h=c[g];if(""==h||"."==h||".."==h)throw new TypeError('Illegal module name"'+a+'"')}if(!e)return a;{var i=[],j=(b||"").split("/");j.length-1-f}return i=i.concat(j.splice(0,j.length-1-f)),i=i.concat(c.splice(d,c.length-d)),i.join("/")},locate:function(a){var b,d=a.name,e="";for(var f in this.paths){var g=f.split("*");if(g.length>2)throw new TypeError("Only one wildcard in a path is permitted");1==g.length?d==f&&f.length>e.length&&(e=f):d.substr(0,g[0].length)==g[0]&&d.substr(d.length-g[1].length)==g[1]&&(e=f,b=d.substr(g[0].length,d.length-g[1].length-g[0].length))}var h=this.paths[e];return b&&(h=h.replace("*",b)),c(this.baseURL,h)},fetch:function(a){var b,d,e=new i(function(a,c){b=a,d=c});return f(c(this.baseURL,a.address),function(a){b(a)},d),e}});if(g){var l=window.location.href.split("#")[0].split("?")[0];k.baseURL=l.substring(0,l.lastIndexOf("/")+1)}else k.baseURL="./";if(k.paths={"*":"*.js"},a.System&&a.traceur&&(a.traceurSystem=a.System),a.System=k,g){var m=document.getElementsByTagName("script");m=m[m.length-1],"complete"===document.readyState?setTimeout(e):document.addEventListener&&(document.addEventListener("DOMContentLoaded",d,!1),window.addEventListener("load",d,!1)),m.getAttribute("data-init")&&window[m.getAttribute("data-init")]()}"object"==typeof exports&&(module.exports=k)}("undefined"!=typeof global?global:this);
\ No newline at end of file
diff --git a/examples/pipetobrowser/browser/libs/vendor/nodejs/buffer.js b/examples/pipetobrowser/browser/libs/vendor/nodejs/buffer.js
deleted file mode 100644
index 5bbd6b3..0000000
--- a/examples/pipetobrowser/browser/libs/vendor/nodejs/buffer.js
+++ /dev/null
@@ -1,1362 +0,0 @@
-require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"buffer":[function(require,module,exports){
-module.exports=require('hpAyWD');
-},{}],"hpAyWD":[function(require,module,exports){
-/*!
- * The buffer module from node.js, for the browser.
- *
- * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
- * @license MIT
- */
-
-var base64 = require('base64-js')
-var ieee754 = require('ieee754')
-
-exports.Buffer = Buffer
-exports.SlowBuffer = Buffer
-exports.INSPECT_MAX_BYTES = 50
-Buffer.poolSize = 8192
-
-/**
- * If `Buffer._useTypedArrays`:
- * === true Use Uint8Array implementation (fastest)
- * === false Use Object implementation (compatible down to IE6)
- */
-Buffer._useTypedArrays = (function () {
- // Detect if browser supports Typed Arrays. Supported browsers are IE 10+, Firefox 4+,
- // Chrome 7+, Safari 5.1+, Opera 11.6+, iOS 4.2+. If the browser does not support adding
- // properties to `Uint8Array` instances, then that's the same as no `Uint8Array` support
- // because we need to be able to add all the node Buffer API methods. This is an issue
- // in Firefox 4-29. Now fixed: https://bugzilla.mozilla.org/show_bug.cgi?id=695438
- try {
- var buf = new ArrayBuffer(0)
- var arr = new Uint8Array(buf)
- arr.foo = function () { return 42 }
- return 42 === arr.foo() &&
- typeof arr.subarray === 'function' // Chrome 9-10 lack `subarray`
- } catch (e) {
- return false
- }
-})()
-
-/**
- * Class: Buffer
- * =============
- *
- * The Buffer constructor returns instances of `Uint8Array` that are augmented
- * with function properties for all the node `Buffer` API functions. We use
- * `Uint8Array` so that square bracket notation works as expected -- it returns
- * a single octet.
- *
- * By augmenting the instances, we can avoid modifying the `Uint8Array`
- * prototype.
- */
-function Buffer (subject, encoding, noZero) {
- if (!(this instanceof Buffer))
- return new Buffer(subject, encoding, noZero)
-
- var type = typeof subject
-
- // Workaround: node's base64 implementation allows for non-padded strings
- // while base64-js does not.
- if (encoding === 'base64' && type === 'string') {
- subject = stringtrim(subject)
- while (subject.length % 4 !== 0) {
- subject = subject + '='
- }
- }
-
- // Find the length
- var length
- if (type === 'number')
- length = coerce(subject)
- else if (type === 'string')
- length = Buffer.byteLength(subject, encoding)
- else if (type === 'object')
- length = coerce(subject.length) // assume that object is array-like
- else
- throw new Error('First argument needs to be a number, array or string.')
-
- var buf
- if (Buffer._useTypedArrays) {
- // Preferred: Return an augmented `Uint8Array` instance for best performance
- buf = Buffer._augment(new Uint8Array(length))
- } else {
- // Fallback: Return THIS instance of Buffer (created by `new`)
- buf = this
- buf.length = length
- buf._isBuffer = true
- }
-
- var i
- if (Buffer._useTypedArrays && typeof subject.byteLength === 'number') {
- // Speed optimization -- use set if we're copying from a typed array
- buf._set(subject)
- } else if (isArrayish(subject)) {
- // Treat array-ish objects as a byte array
- if (Buffer.isBuffer(subject)) {
- for (i = 0; i < length; i++)
- buf[i] = subject.readUInt8(i)
- } else {
- for (i = 0; i < length; i++)
- buf[i] = ((subject[i] % 256) + 256) % 256
- }
- } else if (type === 'string') {
- buf.write(subject, 0, encoding)
- } else if (type === 'number' && !Buffer._useTypedArrays && !noZero) {
- for (i = 0; i < length; i++) {
- buf[i] = 0
- }
- }
-
- return buf
-}
-
-// STATIC METHODS
-// ==============
-
-Buffer.isEncoding = function (encoding) {
- switch (String(encoding).toLowerCase()) {
- case 'hex':
- case 'utf8':
- case 'utf-8':
- case 'ascii':
- case 'binary':
- case 'base64':
- case 'raw':
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return true
- default:
- return false
- }
-}
-
-Buffer.isBuffer = function (b) {
- return !!(b !== null && b !== undefined && b._isBuffer)
-}
-
-Buffer.byteLength = function (str, encoding) {
- var ret
- str = str.toString()
- switch (encoding || 'utf8') {
- case 'hex':
- ret = str.length / 2
- break
- case 'utf8':
- case 'utf-8':
- ret = utf8ToBytes(str).length
- break
- case 'ascii':
- case 'binary':
- case 'raw':
- ret = str.length
- break
- case 'base64':
- ret = base64ToBytes(str).length
- break
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- ret = str.length * 2
- break
- default:
- throw new Error('Unknown encoding')
- }
- return ret
-}
-
-Buffer.concat = function (list, totalLength) {
- assert(isArray(list), 'Usage: Buffer.concat(list[, length])')
-
- if (list.length === 0) {
- return new Buffer(0)
- } else if (list.length === 1) {
- return list[0]
- }
-
- var i
- if (totalLength === undefined) {
- totalLength = 0
- for (i = 0; i < list.length; i++) {
- totalLength += list[i].length
- }
- }
-
- var buf = new Buffer(totalLength)
- var pos = 0
- for (i = 0; i < list.length; i++) {
- var item = list[i]
- item.copy(buf, pos)
- pos += item.length
- }
- return buf
-}
-
-Buffer.compare = function (a, b) {
- assert(Buffer.isBuffer(a) && Buffer.isBuffer(b), 'Arguments must be Buffers')
- var x = a.length
- var y = b.length
- for (var i = 0, len = Math.min(x, y); i < len && a[i] === b[i]; i++) {}
- if (i !== len) {
- x = a[i]
- y = b[i]
- }
- if (x < y) {
- return -1
- }
- if (y < x) {
- return 1
- }
- return 0
-}
-
-// BUFFER INSTANCE METHODS
-// =======================
-
-function hexWrite (buf, string, offset, length) {
- offset = Number(offset) || 0
- var remaining = buf.length - offset
- if (!length) {
- length = remaining
- } else {
- length = Number(length)
- if (length > remaining) {
- length = remaining
- }
- }
-
- // must be an even number of digits
- var strLen = string.length
- assert(strLen % 2 === 0, 'Invalid hex string')
-
- if (length > strLen / 2) {
- length = strLen / 2
- }
- for (var i = 0; i < length; i++) {
- var byte = parseInt(string.substr(i * 2, 2), 16)
- assert(!isNaN(byte), 'Invalid hex string')
- buf[offset + i] = byte
- }
- return i
-}
-
-function utf8Write (buf, string, offset, length) {
- var charsWritten = blitBuffer(utf8ToBytes(string), buf, offset, length)
- return charsWritten
-}
-
-function asciiWrite (buf, string, offset, length) {
- var charsWritten = blitBuffer(asciiToBytes(string), buf, offset, length)
- return charsWritten
-}
-
-function binaryWrite (buf, string, offset, length) {
- return asciiWrite(buf, string, offset, length)
-}
-
-function base64Write (buf, string, offset, length) {
- var charsWritten = blitBuffer(base64ToBytes(string), buf, offset, length)
- return charsWritten
-}
-
-function utf16leWrite (buf, string, offset, length) {
- var charsWritten = blitBuffer(utf16leToBytes(string), buf, offset, length)
- return charsWritten
-}
-
-Buffer.prototype.write = function (string, offset, length, encoding) {
- // Support both (string, offset, length, encoding)
- // and the legacy (string, encoding, offset, length)
- if (isFinite(offset)) {
- if (!isFinite(length)) {
- encoding = length
- length = undefined
- }
- } else { // legacy
- var swap = encoding
- encoding = offset
- offset = length
- length = swap
- }
-
- offset = Number(offset) || 0
- var remaining = this.length - offset
- if (!length) {
- length = remaining
- } else {
- length = Number(length)
- if (length > remaining) {
- length = remaining
- }
- }
- encoding = String(encoding || 'utf8').toLowerCase()
-
- var ret
- switch (encoding) {
- case 'hex':
- ret = hexWrite(this, string, offset, length)
- break
- case 'utf8':
- case 'utf-8':
- ret = utf8Write(this, string, offset, length)
- break
- case 'ascii':
- ret = asciiWrite(this, string, offset, length)
- break
- case 'binary':
- ret = binaryWrite(this, string, offset, length)
- break
- case 'base64':
- ret = base64Write(this, string, offset, length)
- break
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- ret = utf16leWrite(this, string, offset, length)
- break
- default:
- throw new Error('Unknown encoding')
- }
- return ret
-}
-
-Buffer.prototype.toString = function (encoding, start, end) {
- var self = this
-
- encoding = String(encoding || 'utf8').toLowerCase()
- start = Number(start) || 0
- end = (end === undefined) ? self.length : Number(end)
-
- // Fastpath empty strings
- if (end === start)
- return ''
-
- var ret
- switch (encoding) {
- case 'hex':
- ret = hexSlice(self, start, end)
- break
- case 'utf8':
- case 'utf-8':
- ret = utf8Slice(self, start, end)
- break
- case 'ascii':
- ret = asciiSlice(self, start, end)
- break
- case 'binary':
- ret = binarySlice(self, start, end)
- break
- case 'base64':
- ret = base64Slice(self, start, end)
- break
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- ret = utf16leSlice(self, start, end)
- break
- default:
- throw new Error('Unknown encoding')
- }
- return ret
-}
-
-Buffer.prototype.toJSON = function () {
- return {
- type: 'Buffer',
- data: Array.prototype.slice.call(this._arr || this, 0)
- }
-}
-
-Buffer.prototype.equals = function (b) {
- assert(Buffer.isBuffer(b), 'Argument must be a Buffer')
- return Buffer.compare(this, b) === 0
-}
-
-Buffer.prototype.compare = function (b) {
- assert(Buffer.isBuffer(b), 'Argument must be a Buffer')
- return Buffer.compare(this, b)
-}
-
-// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
-Buffer.prototype.copy = function (target, target_start, start, end) {
- var source = this
-
- if (!start) start = 0
- if (!end && end !== 0) end = this.length
- if (!target_start) target_start = 0
-
- // Copy 0 bytes; we're done
- if (end === start) return
- if (target.length === 0 || source.length === 0) return
-
- // Fatal error conditions
- assert(end >= start, 'sourceEnd < sourceStart')
- assert(target_start >= 0 && target_start < target.length,
- 'targetStart out of bounds')
- assert(start >= 0 && start < source.length, 'sourceStart out of bounds')
- assert(end >= 0 && end <= source.length, 'sourceEnd out of bounds')
-
- // Are we oob?
- if (end > this.length)
- end = this.length
- if (target.length - target_start < end - start)
- end = target.length - target_start + start
-
- var len = end - start
-
- if (len < 100 || !Buffer._useTypedArrays) {
- for (var i = 0; i < len; i++) {
- target[i + target_start] = this[i + start]
- }
- } else {
- target._set(this.subarray(start, start + len), target_start)
- }
-}
-
-function base64Slice (buf, start, end) {
- if (start === 0 && end === buf.length) {
- return base64.fromByteArray(buf)
- } else {
- return base64.fromByteArray(buf.slice(start, end))
- }
-}
-
-function utf8Slice (buf, start, end) {
- var res = ''
- var tmp = ''
- end = Math.min(buf.length, end)
-
- for (var i = start; i < end; i++) {
- if (buf[i] <= 0x7F) {
- res += decodeUtf8Char(tmp) + String.fromCharCode(buf[i])
- tmp = ''
- } else {
- tmp += '%' + buf[i].toString(16)
- }
- }
-
- return res + decodeUtf8Char(tmp)
-}
-
-function asciiSlice (buf, start, end) {
- var ret = ''
- end = Math.min(buf.length, end)
-
- for (var i = start; i < end; i++) {
- ret += String.fromCharCode(buf[i])
- }
- return ret
-}
-
-function binarySlice (buf, start, end) {
- return asciiSlice(buf, start, end)
-}
-
-function hexSlice (buf, start, end) {
- var len = buf.length
-
- if (!start || start < 0) start = 0
- if (!end || end < 0 || end > len) end = len
-
- var out = ''
- for (var i = start; i < end; i++) {
- out += toHex(buf[i])
- }
- return out
-}
-
-function utf16leSlice (buf, start, end) {
- var bytes = buf.slice(start, end)
- var res = ''
- for (var i = 0; i < bytes.length; i += 2) {
- res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
- }
- return res
-}
-
-Buffer.prototype.slice = function (start, end) {
- var len = this.length
- start = clamp(start, len, 0)
- end = clamp(end, len, len)
-
- if (Buffer._useTypedArrays) {
- return Buffer._augment(this.subarray(start, end))
- } else {
- var sliceLen = end - start
- var newBuf = new Buffer(sliceLen, undefined, true)
- for (var i = 0; i < sliceLen; i++) {
- newBuf[i] = this[i + start]
- }
- return newBuf
- }
-}
-
-// `get` will be removed in Node 0.13+
-Buffer.prototype.get = function (offset) {
- console.log('.get() is deprecated. Access using array indexes instead.')
- return this.readUInt8(offset)
-}
-
-// `set` will be removed in Node 0.13+
-Buffer.prototype.set = function (v, offset) {
- console.log('.set() is deprecated. Access using array indexes instead.')
- return this.writeUInt8(v, offset)
-}
-
-Buffer.prototype.readUInt8 = function (offset, noAssert) {
- if (!noAssert) {
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset < this.length, 'Trying to read beyond buffer length')
- }
-
- if (offset >= this.length)
- return
-
- return this[offset]
-}
-
-function readUInt16 (buf, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 1 < buf.length, 'Trying to read beyond buffer length')
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- var val
- if (littleEndian) {
- val = buf[offset]
- if (offset + 1 < len)
- val |= buf[offset + 1] << 8
- } else {
- val = buf[offset] << 8
- if (offset + 1 < len)
- val |= buf[offset + 1]
- }
- return val
-}
-
-Buffer.prototype.readUInt16LE = function (offset, noAssert) {
- return readUInt16(this, offset, true, noAssert)
-}
-
-Buffer.prototype.readUInt16BE = function (offset, noAssert) {
- return readUInt16(this, offset, false, noAssert)
-}
-
-function readUInt32 (buf, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 3 < buf.length, 'Trying to read beyond buffer length')
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- var val
- if (littleEndian) {
- if (offset + 2 < len)
- val = buf[offset + 2] << 16
- if (offset + 1 < len)
- val |= buf[offset + 1] << 8
- val |= buf[offset]
- if (offset + 3 < len)
- val = val + (buf[offset + 3] << 24 >>> 0)
- } else {
- if (offset + 1 < len)
- val = buf[offset + 1] << 16
- if (offset + 2 < len)
- val |= buf[offset + 2] << 8
- if (offset + 3 < len)
- val |= buf[offset + 3]
- val = val + (buf[offset] << 24 >>> 0)
- }
- return val
-}
-
-Buffer.prototype.readUInt32LE = function (offset, noAssert) {
- return readUInt32(this, offset, true, noAssert)
-}
-
-Buffer.prototype.readUInt32BE = function (offset, noAssert) {
- return readUInt32(this, offset, false, noAssert)
-}
-
-Buffer.prototype.readInt8 = function (offset, noAssert) {
- if (!noAssert) {
- assert(offset !== undefined && offset !== null,
- 'missing offset')
- assert(offset < this.length, 'Trying to read beyond buffer length')
- }
-
- if (offset >= this.length)
- return
-
- var neg = this[offset] & 0x80
- if (neg)
- return (0xff - this[offset] + 1) * -1
- else
- return this[offset]
-}
-
-function readInt16 (buf, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 1 < buf.length, 'Trying to read beyond buffer length')
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- var val = readUInt16(buf, offset, littleEndian, true)
- var neg = val & 0x8000
- if (neg)
- return (0xffff - val + 1) * -1
- else
- return val
-}
-
-Buffer.prototype.readInt16LE = function (offset, noAssert) {
- return readInt16(this, offset, true, noAssert)
-}
-
-Buffer.prototype.readInt16BE = function (offset, noAssert) {
- return readInt16(this, offset, false, noAssert)
-}
-
-function readInt32 (buf, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 3 < buf.length, 'Trying to read beyond buffer length')
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- var val = readUInt32(buf, offset, littleEndian, true)
- var neg = val & 0x80000000
- if (neg)
- return (0xffffffff - val + 1) * -1
- else
- return val
-}
-
-Buffer.prototype.readInt32LE = function (offset, noAssert) {
- return readInt32(this, offset, true, noAssert)
-}
-
-Buffer.prototype.readInt32BE = function (offset, noAssert) {
- return readInt32(this, offset, false, noAssert)
-}
-
-function readFloat (buf, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset + 3 < buf.length, 'Trying to read beyond buffer length')
- }
-
- return ieee754.read(buf, offset, littleEndian, 23, 4)
-}
-
-Buffer.prototype.readFloatLE = function (offset, noAssert) {
- return readFloat(this, offset, true, noAssert)
-}
-
-Buffer.prototype.readFloatBE = function (offset, noAssert) {
- return readFloat(this, offset, false, noAssert)
-}
-
-function readDouble (buf, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset + 7 < buf.length, 'Trying to read beyond buffer length')
- }
-
- return ieee754.read(buf, offset, littleEndian, 52, 8)
-}
-
-Buffer.prototype.readDoubleLE = function (offset, noAssert) {
- return readDouble(this, offset, true, noAssert)
-}
-
-Buffer.prototype.readDoubleBE = function (offset, noAssert) {
- return readDouble(this, offset, false, noAssert)
-}
-
-Buffer.prototype.writeUInt8 = function (value, offset, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset < this.length, 'trying to write beyond buffer length')
- verifuint(value, 0xff)
- }
-
- if (offset >= this.length) return
-
- this[offset] = value
- return offset + 1
-}
-
-function writeUInt16 (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 1 < buf.length, 'trying to write beyond buffer length')
- verifuint(value, 0xffff)
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- for (var i = 0, j = Math.min(len - offset, 2); i < j; i++) {
- buf[offset + i] =
- (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
- (littleEndian ? i : 1 - i) * 8
- }
- return offset + 2
-}
-
-Buffer.prototype.writeUInt16LE = function (value, offset, noAssert) {
- return writeUInt16(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeUInt16BE = function (value, offset, noAssert) {
- return writeUInt16(this, value, offset, false, noAssert)
-}
-
-function writeUInt32 (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 3 < buf.length, 'trying to write beyond buffer length')
- verifuint(value, 0xffffffff)
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- for (var i = 0, j = Math.min(len - offset, 4); i < j; i++) {
- buf[offset + i] =
- (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
- }
- return offset + 4
-}
-
-Buffer.prototype.writeUInt32LE = function (value, offset, noAssert) {
- return writeUInt32(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeUInt32BE = function (value, offset, noAssert) {
- return writeUInt32(this, value, offset, false, noAssert)
-}
-
-Buffer.prototype.writeInt8 = function (value, offset, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset < this.length, 'Trying to write beyond buffer length')
- verifsint(value, 0x7f, -0x80)
- }
-
- if (offset >= this.length)
- return
-
- if (value >= 0)
- this.writeUInt8(value, offset, noAssert)
- else
- this.writeUInt8(0xff + value + 1, offset, noAssert)
- return offset + 1
-}
-
-function writeInt16 (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 1 < buf.length, 'Trying to write beyond buffer length')
- verifsint(value, 0x7fff, -0x8000)
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- if (value >= 0)
- writeUInt16(buf, value, offset, littleEndian, noAssert)
- else
- writeUInt16(buf, 0xffff + value + 1, offset, littleEndian, noAssert)
- return offset + 2
-}
-
-Buffer.prototype.writeInt16LE = function (value, offset, noAssert) {
- return writeInt16(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeInt16BE = function (value, offset, noAssert) {
- return writeInt16(this, value, offset, false, noAssert)
-}
-
-function writeInt32 (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 3 < buf.length, 'Trying to write beyond buffer length')
- verifsint(value, 0x7fffffff, -0x80000000)
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- if (value >= 0)
- writeUInt32(buf, value, offset, littleEndian, noAssert)
- else
- writeUInt32(buf, 0xffffffff + value + 1, offset, littleEndian, noAssert)
- return offset + 4
-}
-
-Buffer.prototype.writeInt32LE = function (value, offset, noAssert) {
- return writeInt32(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeInt32BE = function (value, offset, noAssert) {
- return writeInt32(this, value, offset, false, noAssert)
-}
-
-function writeFloat (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 3 < buf.length, 'Trying to write beyond buffer length')
- verifIEEE754(value, 3.4028234663852886e+38, -3.4028234663852886e+38)
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- ieee754.write(buf, value, offset, littleEndian, 23, 4)
- return offset + 4
-}
-
-Buffer.prototype.writeFloatLE = function (value, offset, noAssert) {
- return writeFloat(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeFloatBE = function (value, offset, noAssert) {
- return writeFloat(this, value, offset, false, noAssert)
-}
-
-function writeDouble (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 7 < buf.length,
- 'Trying to write beyond buffer length')
- verifIEEE754(value, 1.7976931348623157E+308, -1.7976931348623157E+308)
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- ieee754.write(buf, value, offset, littleEndian, 52, 8)
- return offset + 8
-}
-
-Buffer.prototype.writeDoubleLE = function (value, offset, noAssert) {
- return writeDouble(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeDoubleBE = function (value, offset, noAssert) {
- return writeDouble(this, value, offset, false, noAssert)
-}
-
-// fill(value, start=0, end=buffer.length)
-Buffer.prototype.fill = function (value, start, end) {
- if (!value) value = 0
- if (!start) start = 0
- if (!end) end = this.length
-
- assert(end >= start, 'end < start')
-
- // Fill 0 bytes; we're done
- if (end === start) return
- if (this.length === 0) return
-
- assert(start >= 0 && start < this.length, 'start out of bounds')
- assert(end >= 0 && end <= this.length, 'end out of bounds')
-
- var i
- if (typeof value === 'number') {
- for (i = start; i < end; i++) {
- this[i] = value
- }
- } else {
- var bytes = utf8ToBytes(value.toString())
- var len = bytes.length
- for (i = start; i < end; i++) {
- this[i] = bytes[i % len]
- }
- }
-
- return this
-}
-
-Buffer.prototype.inspect = function () {
- var out = []
- var len = this.length
- for (var i = 0; i < len; i++) {
- out[i] = toHex(this[i])
- if (i === exports.INSPECT_MAX_BYTES) {
- out[i + 1] = '...'
- break
- }
- }
- return '<Buffer ' + out.join(' ') + '>'
-}
-
-/**
- * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.
- * Added in Node 0.12. Only available in browsers that support ArrayBuffer.
- */
-Buffer.prototype.toArrayBuffer = function () {
- if (typeof Uint8Array !== 'undefined') {
- if (Buffer._useTypedArrays) {
- return (new Buffer(this)).buffer
- } else {
- var buf = new Uint8Array(this.length)
- for (var i = 0, len = buf.length; i < len; i += 1) {
- buf[i] = this[i]
- }
- return buf.buffer
- }
- } else {
- throw new Error('Buffer.toArrayBuffer not supported in this browser')
- }
-}
-
-// HELPER FUNCTIONS
-// ================
-
-var BP = Buffer.prototype
-
-/**
- * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods
- */
-Buffer._augment = function (arr) {
- arr._isBuffer = true
-
- // save reference to original Uint8Array get/set methods before overwriting
- arr._get = arr.get
- arr._set = arr.set
-
- // deprecated, will be removed in node 0.13+
- arr.get = BP.get
- arr.set = BP.set
-
- arr.write = BP.write
- arr.toString = BP.toString
- arr.toLocaleString = BP.toString
- arr.toJSON = BP.toJSON
- arr.equals = BP.equals
- arr.compare = BP.compare
- arr.copy = BP.copy
- arr.slice = BP.slice
- arr.readUInt8 = BP.readUInt8
- arr.readUInt16LE = BP.readUInt16LE
- arr.readUInt16BE = BP.readUInt16BE
- arr.readUInt32LE = BP.readUInt32LE
- arr.readUInt32BE = BP.readUInt32BE
- arr.readInt8 = BP.readInt8
- arr.readInt16LE = BP.readInt16LE
- arr.readInt16BE = BP.readInt16BE
- arr.readInt32LE = BP.readInt32LE
- arr.readInt32BE = BP.readInt32BE
- arr.readFloatLE = BP.readFloatLE
- arr.readFloatBE = BP.readFloatBE
- arr.readDoubleLE = BP.readDoubleLE
- arr.readDoubleBE = BP.readDoubleBE
- arr.writeUInt8 = BP.writeUInt8
- arr.writeUInt16LE = BP.writeUInt16LE
- arr.writeUInt16BE = BP.writeUInt16BE
- arr.writeUInt32LE = BP.writeUInt32LE
- arr.writeUInt32BE = BP.writeUInt32BE
- arr.writeInt8 = BP.writeInt8
- arr.writeInt16LE = BP.writeInt16LE
- arr.writeInt16BE = BP.writeInt16BE
- arr.writeInt32LE = BP.writeInt32LE
- arr.writeInt32BE = BP.writeInt32BE
- arr.writeFloatLE = BP.writeFloatLE
- arr.writeFloatBE = BP.writeFloatBE
- arr.writeDoubleLE = BP.writeDoubleLE
- arr.writeDoubleBE = BP.writeDoubleBE
- arr.fill = BP.fill
- arr.inspect = BP.inspect
- arr.toArrayBuffer = BP.toArrayBuffer
-
- return arr
-}
-
-function stringtrim (str) {
- if (str.trim) return str.trim()
- return str.replace(/^\s+|\s+$/g, '')
-}
-
-// slice(start, end)
-function clamp (index, len, defaultValue) {
- if (typeof index !== 'number') return defaultValue
- index = ~~index; // Coerce to integer.
- if (index >= len) return len
- if (index >= 0) return index
- index += len
- if (index >= 0) return index
- return 0
-}
-
-function coerce (length) {
- // Coerce length to a number (possibly NaN), round up
- // in case it's fractional (e.g. 123.456) then do a
- // double negate to coerce a NaN to 0. Easy, right?
- length = ~~Math.ceil(+length)
- return length < 0 ? 0 : length
-}
-
-function isArray (subject) {
- return (Array.isArray || function (subject) {
- return Object.prototype.toString.call(subject) === '[object Array]'
- })(subject)
-}
-
-function isArrayish (subject) {
- return isArray(subject) || Buffer.isBuffer(subject) ||
- subject && typeof subject === 'object' &&
- typeof subject.length === 'number'
-}
-
-function toHex (n) {
- if (n < 16) return '0' + n.toString(16)
- return n.toString(16)
-}
-
-function utf8ToBytes (str) {
- var byteArray = []
- for (var i = 0; i < str.length; i++) {
- var b = str.charCodeAt(i)
- if (b <= 0x7F) {
- byteArray.push(b)
- } else {
- var start = i
- if (b >= 0xD800 && b <= 0xDFFF) i++
- var h = encodeURIComponent(str.slice(start, i+1)).substr(1).split('%')
- for (var j = 0; j < h.length; j++) {
- byteArray.push(parseInt(h[j], 16))
- }
- }
- }
- return byteArray
-}
-
-function asciiToBytes (str) {
- var byteArray = []
- for (var i = 0; i < str.length; i++) {
- // Node's code seems to be doing this and not & 0x7F..
- byteArray.push(str.charCodeAt(i) & 0xFF)
- }
- return byteArray
-}
-
-function utf16leToBytes (str) {
- var c, hi, lo
- var byteArray = []
- for (var i = 0; i < str.length; i++) {
- c = str.charCodeAt(i)
- hi = c >> 8
- lo = c % 256
- byteArray.push(lo)
- byteArray.push(hi)
- }
-
- return byteArray
-}
-
-function base64ToBytes (str) {
- return base64.toByteArray(str)
-}
-
-function blitBuffer (src, dst, offset, length) {
- for (var i = 0; i < length; i++) {
- if ((i + offset >= dst.length) || (i >= src.length))
- break
- dst[i + offset] = src[i]
- }
- return i
-}
-
-function decodeUtf8Char (str) {
- try {
- return decodeURIComponent(str)
- } catch (err) {
- return String.fromCharCode(0xFFFD) // UTF 8 invalid char
- }
-}
-
-/*
- * We have to make sure that the value is a valid integer. This means that it
- * is non-negative. It has no fractional component and that it does not
- * exceed the maximum allowed value.
- */
-function verifuint (value, max) {
- assert(typeof value === 'number', 'cannot write a non-number as a number')
- assert(value >= 0, 'specified a negative value for writing an unsigned value')
- assert(value <= max, 'value is larger than maximum value for type')
- assert(Math.floor(value) === value, 'value has a fractional component')
-}
-
-function verifsint (value, max, min) {
- assert(typeof value === 'number', 'cannot write a non-number as a number')
- assert(value <= max, 'value larger than maximum allowed value')
- assert(value >= min, 'value smaller than minimum allowed value')
- assert(Math.floor(value) === value, 'value has a fractional component')
-}
-
-function verifIEEE754 (value, max, min) {
- assert(typeof value === 'number', 'cannot write a non-number as a number')
- assert(value <= max, 'value larger than maximum allowed value')
- assert(value >= min, 'value smaller than minimum allowed value')
-}
-
-function assert (test, message) {
- if (!test) throw new Error(message || 'Failed assertion')
-}
-
-},{"base64-js":3,"ieee754":4}],3:[function(require,module,exports){
-var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
-
-;(function (exports) {
- 'use strict';
-
- var Arr = (typeof Uint8Array !== 'undefined')
- ? Uint8Array
- : Array
-
- var PLUS = '+'.charCodeAt(0)
- var SLASH = '/'.charCodeAt(0)
- var NUMBER = '0'.charCodeAt(0)
- var LOWER = 'a'.charCodeAt(0)
- var UPPER = 'A'.charCodeAt(0)
-
- function decode (elt) {
- var code = elt.charCodeAt(0)
- if (code === PLUS)
- return 62 // '+'
- if (code === SLASH)
- return 63 // '/'
- if (code < NUMBER)
- return -1 //no match
- if (code < NUMBER + 10)
- return code - NUMBER + 26 + 26
- if (code < UPPER + 26)
- return code - UPPER
- if (code < LOWER + 26)
- return code - LOWER + 26
- }
-
- function b64ToByteArray (b64) {
- var i, j, l, tmp, placeHolders, arr
-
- if (b64.length % 4 > 0) {
- throw new Error('Invalid string. Length must be a multiple of 4')
- }
-
- // the number of equal signs (place holders)
- // if there are two placeholders, than the two characters before it
- // represent one byte
- // if there is only one, then the three characters before it represent 2 bytes
- // this is just a cheap hack to not do indexOf twice
- var len = b64.length
- placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0
-
- // base64 is 4/3 + up to two characters of the original data
- arr = new Arr(b64.length * 3 / 4 - placeHolders)
-
- // if there are placeholders, only get up to the last complete 4 chars
- l = placeHolders > 0 ? b64.length - 4 : b64.length
-
- var L = 0
-
- function push (v) {
- arr[L++] = v
- }
-
- for (i = 0, j = 0; i < l; i += 4, j += 3) {
- tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))
- push((tmp & 0xFF0000) >> 16)
- push((tmp & 0xFF00) >> 8)
- push(tmp & 0xFF)
- }
-
- if (placeHolders === 2) {
- tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)
- push(tmp & 0xFF)
- } else if (placeHolders === 1) {
- tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)
- push((tmp >> 8) & 0xFF)
- push(tmp & 0xFF)
- }
-
- return arr
- }
-
- function uint8ToBase64 (uint8) {
- var i,
- extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
- output = "",
- temp, length
-
- function encode (num) {
- return lookup.charAt(num)
- }
-
- function tripletToBase64 (num) {
- return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)
- }
-
- // go through the array every three bytes, we'll deal with trailing stuff later
- for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
- temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
- output += tripletToBase64(temp)
- }
-
- // pad the end with zeros, but make sure to not forget the extra bytes
- switch (extraBytes) {
- case 1:
- temp = uint8[uint8.length - 1]
- output += encode(temp >> 2)
- output += encode((temp << 4) & 0x3F)
- output += '=='
- break
- case 2:
- temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])
- output += encode(temp >> 10)
- output += encode((temp >> 4) & 0x3F)
- output += encode((temp << 2) & 0x3F)
- output += '='
- break
- }
-
- return output
- }
-
- exports.toByteArray = b64ToByteArray
- exports.fromByteArray = uint8ToBase64
-}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))
-
-},{}],4:[function(require,module,exports){
-exports.read = function(buffer, offset, isLE, mLen, nBytes) {
- var e, m,
- eLen = nBytes * 8 - mLen - 1,
- eMax = (1 << eLen) - 1,
- eBias = eMax >> 1,
- nBits = -7,
- i = isLE ? (nBytes - 1) : 0,
- d = isLE ? -1 : 1,
- s = buffer[offset + i];
-
- i += d;
-
- e = s & ((1 << (-nBits)) - 1);
- s >>= (-nBits);
- nBits += eLen;
- for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8);
-
- m = e & ((1 << (-nBits)) - 1);
- e >>= (-nBits);
- nBits += mLen;
- for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8);
-
- if (e === 0) {
- e = 1 - eBias;
- } else if (e === eMax) {
- return m ? NaN : ((s ? -1 : 1) * Infinity);
- } else {
- m = m + Math.pow(2, mLen);
- e = e - eBias;
- }
- return (s ? -1 : 1) * m * Math.pow(2, e - mLen);
-};
-
-exports.write = function(buffer, value, offset, isLE, mLen, nBytes) {
- var e, m, c,
- eLen = nBytes * 8 - mLen - 1,
- eMax = (1 << eLen) - 1,
- eBias = eMax >> 1,
- rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),
- i = isLE ? 0 : (nBytes - 1),
- d = isLE ? 1 : -1,
- s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;
-
- value = Math.abs(value);
-
- if (isNaN(value) || value === Infinity) {
- m = isNaN(value) ? 1 : 0;
- e = eMax;
- } else {
- e = Math.floor(Math.log(value) / Math.LN2);
- if (value * (c = Math.pow(2, -e)) < 1) {
- e--;
- c *= 2;
- }
- if (e + eBias >= 1) {
- value += rt / c;
- } else {
- value += rt * Math.pow(2, 1 - eBias);
- }
- if (value * c >= 2) {
- e++;
- c /= 2;
- }
-
- if (e + eBias >= eMax) {
- m = 0;
- e = eMax;
- } else if (e + eBias >= 1) {
- m = (value * c - 1) * Math.pow(2, mLen);
- e = e + eBias;
- } else {
- m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
- e = 0;
- }
- }
-
- for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8);
-
- e = (e << mLen) | m;
- eLen += mLen;
- for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8);
-
- buffer[offset + i - d] |= s * 128;
-};
-
-},{}]},{},[])
\ No newline at end of file
diff --git a/examples/pipetobrowser/browser/libs/vendor/nodejs/event-stream.js b/examples/pipetobrowser/browser/libs/vendor/nodejs/event-stream.js
deleted file mode 100644
index db4a68e..0000000
--- a/examples/pipetobrowser/browser/libs/vendor/nodejs/event-stream.js
+++ /dev/null
@@ -1,4960 +0,0 @@
-require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
-/*!
- * The buffer module from node.js, for the browser.
- *
- * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
- * @license MIT
- */
-
-var base64 = require('base64-js')
-var ieee754 = require('ieee754')
-
-exports.Buffer = Buffer
-exports.SlowBuffer = Buffer
-exports.INSPECT_MAX_BYTES = 50
-Buffer.poolSize = 8192
-
-/**
- * If `Buffer._useTypedArrays`:
- * === true Use Uint8Array implementation (fastest)
- * === false Use Object implementation (compatible down to IE6)
- */
-Buffer._useTypedArrays = (function () {
- // Detect if browser supports Typed Arrays. Supported browsers are IE 10+, Firefox 4+,
- // Chrome 7+, Safari 5.1+, Opera 11.6+, iOS 4.2+. If the browser does not support adding
- // properties to `Uint8Array` instances, then that's the same as no `Uint8Array` support
- // because we need to be able to add all the node Buffer API methods. This is an issue
- // in Firefox 4-29. Now fixed: https://bugzilla.mozilla.org/show_bug.cgi?id=695438
- try {
- var buf = new ArrayBuffer(0)
- var arr = new Uint8Array(buf)
- arr.foo = function () { return 42 }
- return 42 === arr.foo() &&
- typeof arr.subarray === 'function' // Chrome 9-10 lack `subarray`
- } catch (e) {
- return false
- }
-})()
-
-/**
- * Class: Buffer
- * =============
- *
- * The Buffer constructor returns instances of `Uint8Array` that are augmented
- * with function properties for all the node `Buffer` API functions. We use
- * `Uint8Array` so that square bracket notation works as expected -- it returns
- * a single octet.
- *
- * By augmenting the instances, we can avoid modifying the `Uint8Array`
- * prototype.
- */
-function Buffer (subject, encoding, noZero) {
- if (!(this instanceof Buffer))
- return new Buffer(subject, encoding, noZero)
-
- var type = typeof subject
-
- // Workaround: node's base64 implementation allows for non-padded strings
- // while base64-js does not.
- if (encoding === 'base64' && type === 'string') {
- subject = stringtrim(subject)
- while (subject.length % 4 !== 0) {
- subject = subject + '='
- }
- }
-
- // Find the length
- var length
- if (type === 'number')
- length = coerce(subject)
- else if (type === 'string')
- length = Buffer.byteLength(subject, encoding)
- else if (type === 'object')
- length = coerce(subject.length) // assume that object is array-like
- else
- throw new Error('First argument needs to be a number, array or string.')
-
- var buf
- if (Buffer._useTypedArrays) {
- // Preferred: Return an augmented `Uint8Array` instance for best performance
- buf = Buffer._augment(new Uint8Array(length))
- } else {
- // Fallback: Return THIS instance of Buffer (created by `new`)
- buf = this
- buf.length = length
- buf._isBuffer = true
- }
-
- var i
- if (Buffer._useTypedArrays && typeof subject.byteLength === 'number') {
- // Speed optimization -- use set if we're copying from a typed array
- buf._set(subject)
- } else if (isArrayish(subject)) {
- // Treat array-ish objects as a byte array
- if (Buffer.isBuffer(subject)) {
- for (i = 0; i < length; i++)
- buf[i] = subject.readUInt8(i)
- } else {
- for (i = 0; i < length; i++)
- buf[i] = ((subject[i] % 256) + 256) % 256
- }
- } else if (type === 'string') {
- buf.write(subject, 0, encoding)
- } else if (type === 'number' && !Buffer._useTypedArrays && !noZero) {
- for (i = 0; i < length; i++) {
- buf[i] = 0
- }
- }
-
- return buf
-}
-
-// STATIC METHODS
-// ==============
-
-Buffer.isEncoding = function (encoding) {
- switch (String(encoding).toLowerCase()) {
- case 'hex':
- case 'utf8':
- case 'utf-8':
- case 'ascii':
- case 'binary':
- case 'base64':
- case 'raw':
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return true
- default:
- return false
- }
-}
-
-Buffer.isBuffer = function (b) {
- return !!(b !== null && b !== undefined && b._isBuffer)
-}
-
-Buffer.byteLength = function (str, encoding) {
- var ret
- str = str.toString()
- switch (encoding || 'utf8') {
- case 'hex':
- ret = str.length / 2
- break
- case 'utf8':
- case 'utf-8':
- ret = utf8ToBytes(str).length
- break
- case 'ascii':
- case 'binary':
- case 'raw':
- ret = str.length
- break
- case 'base64':
- ret = base64ToBytes(str).length
- break
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- ret = str.length * 2
- break
- default:
- throw new Error('Unknown encoding')
- }
- return ret
-}
-
-Buffer.concat = function (list, totalLength) {
- assert(isArray(list), 'Usage: Buffer.concat(list[, length])')
-
- if (list.length === 0) {
- return new Buffer(0)
- } else if (list.length === 1) {
- return list[0]
- }
-
- var i
- if (totalLength === undefined) {
- totalLength = 0
- for (i = 0; i < list.length; i++) {
- totalLength += list[i].length
- }
- }
-
- var buf = new Buffer(totalLength)
- var pos = 0
- for (i = 0; i < list.length; i++) {
- var item = list[i]
- item.copy(buf, pos)
- pos += item.length
- }
- return buf
-}
-
-Buffer.compare = function (a, b) {
- assert(Buffer.isBuffer(a) && Buffer.isBuffer(b), 'Arguments must be Buffers')
- var x = a.length
- var y = b.length
- for (var i = 0, len = Math.min(x, y); i < len && a[i] === b[i]; i++) {}
- if (i !== len) {
- x = a[i]
- y = b[i]
- }
- if (x < y) {
- return -1
- }
- if (y < x) {
- return 1
- }
- return 0
-}
-
-// BUFFER INSTANCE METHODS
-// =======================
-
-function hexWrite (buf, string, offset, length) {
- offset = Number(offset) || 0
- var remaining = buf.length - offset
- if (!length) {
- length = remaining
- } else {
- length = Number(length)
- if (length > remaining) {
- length = remaining
- }
- }
-
- // must be an even number of digits
- var strLen = string.length
- assert(strLen % 2 === 0, 'Invalid hex string')
-
- if (length > strLen / 2) {
- length = strLen / 2
- }
- for (var i = 0; i < length; i++) {
- var byte = parseInt(string.substr(i * 2, 2), 16)
- assert(!isNaN(byte), 'Invalid hex string')
- buf[offset + i] = byte
- }
- return i
-}
-
-function utf8Write (buf, string, offset, length) {
- var charsWritten = blitBuffer(utf8ToBytes(string), buf, offset, length)
- return charsWritten
-}
-
-function asciiWrite (buf, string, offset, length) {
- var charsWritten = blitBuffer(asciiToBytes(string), buf, offset, length)
- return charsWritten
-}
-
-function binaryWrite (buf, string, offset, length) {
- return asciiWrite(buf, string, offset, length)
-}
-
-function base64Write (buf, string, offset, length) {
- var charsWritten = blitBuffer(base64ToBytes(string), buf, offset, length)
- return charsWritten
-}
-
-function utf16leWrite (buf, string, offset, length) {
- var charsWritten = blitBuffer(utf16leToBytes(string), buf, offset, length)
- return charsWritten
-}
-
-Buffer.prototype.write = function (string, offset, length, encoding) {
- // Support both (string, offset, length, encoding)
- // and the legacy (string, encoding, offset, length)
- if (isFinite(offset)) {
- if (!isFinite(length)) {
- encoding = length
- length = undefined
- }
- } else { // legacy
- var swap = encoding
- encoding = offset
- offset = length
- length = swap
- }
-
- offset = Number(offset) || 0
- var remaining = this.length - offset
- if (!length) {
- length = remaining
- } else {
- length = Number(length)
- if (length > remaining) {
- length = remaining
- }
- }
- encoding = String(encoding || 'utf8').toLowerCase()
-
- var ret
- switch (encoding) {
- case 'hex':
- ret = hexWrite(this, string, offset, length)
- break
- case 'utf8':
- case 'utf-8':
- ret = utf8Write(this, string, offset, length)
- break
- case 'ascii':
- ret = asciiWrite(this, string, offset, length)
- break
- case 'binary':
- ret = binaryWrite(this, string, offset, length)
- break
- case 'base64':
- ret = base64Write(this, string, offset, length)
- break
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- ret = utf16leWrite(this, string, offset, length)
- break
- default:
- throw new Error('Unknown encoding')
- }
- return ret
-}
-
-Buffer.prototype.toString = function (encoding, start, end) {
- var self = this
-
- encoding = String(encoding || 'utf8').toLowerCase()
- start = Number(start) || 0
- end = (end === undefined) ? self.length : Number(end)
-
- // Fastpath empty strings
- if (end === start)
- return ''
-
- var ret
- switch (encoding) {
- case 'hex':
- ret = hexSlice(self, start, end)
- break
- case 'utf8':
- case 'utf-8':
- ret = utf8Slice(self, start, end)
- break
- case 'ascii':
- ret = asciiSlice(self, start, end)
- break
- case 'binary':
- ret = binarySlice(self, start, end)
- break
- case 'base64':
- ret = base64Slice(self, start, end)
- break
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- ret = utf16leSlice(self, start, end)
- break
- default:
- throw new Error('Unknown encoding')
- }
- return ret
-}
-
-Buffer.prototype.toJSON = function () {
- return {
- type: 'Buffer',
- data: Array.prototype.slice.call(this._arr || this, 0)
- }
-}
-
-Buffer.prototype.equals = function (b) {
- assert(Buffer.isBuffer(b), 'Argument must be a Buffer')
- return Buffer.compare(this, b) === 0
-}
-
-Buffer.prototype.compare = function (b) {
- assert(Buffer.isBuffer(b), 'Argument must be a Buffer')
- return Buffer.compare(this, b)
-}
-
-// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
-Buffer.prototype.copy = function (target, target_start, start, end) {
- var source = this
-
- if (!start) start = 0
- if (!end && end !== 0) end = this.length
- if (!target_start) target_start = 0
-
- // Copy 0 bytes; we're done
- if (end === start) return
- if (target.length === 0 || source.length === 0) return
-
- // Fatal error conditions
- assert(end >= start, 'sourceEnd < sourceStart')
- assert(target_start >= 0 && target_start < target.length,
- 'targetStart out of bounds')
- assert(start >= 0 && start < source.length, 'sourceStart out of bounds')
- assert(end >= 0 && end <= source.length, 'sourceEnd out of bounds')
-
- // Are we oob?
- if (end > this.length)
- end = this.length
- if (target.length - target_start < end - start)
- end = target.length - target_start + start
-
- var len = end - start
-
- if (len < 100 || !Buffer._useTypedArrays) {
- for (var i = 0; i < len; i++) {
- target[i + target_start] = this[i + start]
- }
- } else {
- target._set(this.subarray(start, start + len), target_start)
- }
-}
-
-function base64Slice (buf, start, end) {
- if (start === 0 && end === buf.length) {
- return base64.fromByteArray(buf)
- } else {
- return base64.fromByteArray(buf.slice(start, end))
- }
-}
-
-function utf8Slice (buf, start, end) {
- var res = ''
- var tmp = ''
- end = Math.min(buf.length, end)
-
- for (var i = start; i < end; i++) {
- if (buf[i] <= 0x7F) {
- res += decodeUtf8Char(tmp) + String.fromCharCode(buf[i])
- tmp = ''
- } else {
- tmp += '%' + buf[i].toString(16)
- }
- }
-
- return res + decodeUtf8Char(tmp)
-}
-
-function asciiSlice (buf, start, end) {
- var ret = ''
- end = Math.min(buf.length, end)
-
- for (var i = start; i < end; i++) {
- ret += String.fromCharCode(buf[i])
- }
- return ret
-}
-
-function binarySlice (buf, start, end) {
- return asciiSlice(buf, start, end)
-}
-
-function hexSlice (buf, start, end) {
- var len = buf.length
-
- if (!start || start < 0) start = 0
- if (!end || end < 0 || end > len) end = len
-
- var out = ''
- for (var i = start; i < end; i++) {
- out += toHex(buf[i])
- }
- return out
-}
-
-function utf16leSlice (buf, start, end) {
- var bytes = buf.slice(start, end)
- var res = ''
- for (var i = 0; i < bytes.length; i += 2) {
- res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
- }
- return res
-}
-
-Buffer.prototype.slice = function (start, end) {
- var len = this.length
- start = clamp(start, len, 0)
- end = clamp(end, len, len)
-
- if (Buffer._useTypedArrays) {
- return Buffer._augment(this.subarray(start, end))
- } else {
- var sliceLen = end - start
- var newBuf = new Buffer(sliceLen, undefined, true)
- for (var i = 0; i < sliceLen; i++) {
- newBuf[i] = this[i + start]
- }
- return newBuf
- }
-}
-
-// `get` will be removed in Node 0.13+
-Buffer.prototype.get = function (offset) {
- console.log('.get() is deprecated. Access using array indexes instead.')
- return this.readUInt8(offset)
-}
-
-// `set` will be removed in Node 0.13+
-Buffer.prototype.set = function (v, offset) {
- console.log('.set() is deprecated. Access using array indexes instead.')
- return this.writeUInt8(v, offset)
-}
-
-Buffer.prototype.readUInt8 = function (offset, noAssert) {
- if (!noAssert) {
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset < this.length, 'Trying to read beyond buffer length')
- }
-
- if (offset >= this.length)
- return
-
- return this[offset]
-}
-
-function readUInt16 (buf, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 1 < buf.length, 'Trying to read beyond buffer length')
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- var val
- if (littleEndian) {
- val = buf[offset]
- if (offset + 1 < len)
- val |= buf[offset + 1] << 8
- } else {
- val = buf[offset] << 8
- if (offset + 1 < len)
- val |= buf[offset + 1]
- }
- return val
-}
-
-Buffer.prototype.readUInt16LE = function (offset, noAssert) {
- return readUInt16(this, offset, true, noAssert)
-}
-
-Buffer.prototype.readUInt16BE = function (offset, noAssert) {
- return readUInt16(this, offset, false, noAssert)
-}
-
-function readUInt32 (buf, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 3 < buf.length, 'Trying to read beyond buffer length')
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- var val
- if (littleEndian) {
- if (offset + 2 < len)
- val = buf[offset + 2] << 16
- if (offset + 1 < len)
- val |= buf[offset + 1] << 8
- val |= buf[offset]
- if (offset + 3 < len)
- val = val + (buf[offset + 3] << 24 >>> 0)
- } else {
- if (offset + 1 < len)
- val = buf[offset + 1] << 16
- if (offset + 2 < len)
- val |= buf[offset + 2] << 8
- if (offset + 3 < len)
- val |= buf[offset + 3]
- val = val + (buf[offset] << 24 >>> 0)
- }
- return val
-}
-
-Buffer.prototype.readUInt32LE = function (offset, noAssert) {
- return readUInt32(this, offset, true, noAssert)
-}
-
-Buffer.prototype.readUInt32BE = function (offset, noAssert) {
- return readUInt32(this, offset, false, noAssert)
-}
-
-Buffer.prototype.readInt8 = function (offset, noAssert) {
- if (!noAssert) {
- assert(offset !== undefined && offset !== null,
- 'missing offset')
- assert(offset < this.length, 'Trying to read beyond buffer length')
- }
-
- if (offset >= this.length)
- return
-
- var neg = this[offset] & 0x80
- if (neg)
- return (0xff - this[offset] + 1) * -1
- else
- return this[offset]
-}
-
-function readInt16 (buf, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 1 < buf.length, 'Trying to read beyond buffer length')
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- var val = readUInt16(buf, offset, littleEndian, true)
- var neg = val & 0x8000
- if (neg)
- return (0xffff - val + 1) * -1
- else
- return val
-}
-
-Buffer.prototype.readInt16LE = function (offset, noAssert) {
- return readInt16(this, offset, true, noAssert)
-}
-
-Buffer.prototype.readInt16BE = function (offset, noAssert) {
- return readInt16(this, offset, false, noAssert)
-}
-
-function readInt32 (buf, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 3 < buf.length, 'Trying to read beyond buffer length')
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- var val = readUInt32(buf, offset, littleEndian, true)
- var neg = val & 0x80000000
- if (neg)
- return (0xffffffff - val + 1) * -1
- else
- return val
-}
-
-Buffer.prototype.readInt32LE = function (offset, noAssert) {
- return readInt32(this, offset, true, noAssert)
-}
-
-Buffer.prototype.readInt32BE = function (offset, noAssert) {
- return readInt32(this, offset, false, noAssert)
-}
-
-function readFloat (buf, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset + 3 < buf.length, 'Trying to read beyond buffer length')
- }
-
- return ieee754.read(buf, offset, littleEndian, 23, 4)
-}
-
-Buffer.prototype.readFloatLE = function (offset, noAssert) {
- return readFloat(this, offset, true, noAssert)
-}
-
-Buffer.prototype.readFloatBE = function (offset, noAssert) {
- return readFloat(this, offset, false, noAssert)
-}
-
-function readDouble (buf, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset + 7 < buf.length, 'Trying to read beyond buffer length')
- }
-
- return ieee754.read(buf, offset, littleEndian, 52, 8)
-}
-
-Buffer.prototype.readDoubleLE = function (offset, noAssert) {
- return readDouble(this, offset, true, noAssert)
-}
-
-Buffer.prototype.readDoubleBE = function (offset, noAssert) {
- return readDouble(this, offset, false, noAssert)
-}
-
-Buffer.prototype.writeUInt8 = function (value, offset, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset < this.length, 'trying to write beyond buffer length')
- verifuint(value, 0xff)
- }
-
- if (offset >= this.length) return
-
- this[offset] = value
- return offset + 1
-}
-
-function writeUInt16 (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 1 < buf.length, 'trying to write beyond buffer length')
- verifuint(value, 0xffff)
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- for (var i = 0, j = Math.min(len - offset, 2); i < j; i++) {
- buf[offset + i] =
- (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
- (littleEndian ? i : 1 - i) * 8
- }
- return offset + 2
-}
-
-Buffer.prototype.writeUInt16LE = function (value, offset, noAssert) {
- return writeUInt16(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeUInt16BE = function (value, offset, noAssert) {
- return writeUInt16(this, value, offset, false, noAssert)
-}
-
-function writeUInt32 (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 3 < buf.length, 'trying to write beyond buffer length')
- verifuint(value, 0xffffffff)
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- for (var i = 0, j = Math.min(len - offset, 4); i < j; i++) {
- buf[offset + i] =
- (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
- }
- return offset + 4
-}
-
-Buffer.prototype.writeUInt32LE = function (value, offset, noAssert) {
- return writeUInt32(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeUInt32BE = function (value, offset, noAssert) {
- return writeUInt32(this, value, offset, false, noAssert)
-}
-
-Buffer.prototype.writeInt8 = function (value, offset, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset < this.length, 'Trying to write beyond buffer length')
- verifsint(value, 0x7f, -0x80)
- }
-
- if (offset >= this.length)
- return
-
- if (value >= 0)
- this.writeUInt8(value, offset, noAssert)
- else
- this.writeUInt8(0xff + value + 1, offset, noAssert)
- return offset + 1
-}
-
-function writeInt16 (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 1 < buf.length, 'Trying to write beyond buffer length')
- verifsint(value, 0x7fff, -0x8000)
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- if (value >= 0)
- writeUInt16(buf, value, offset, littleEndian, noAssert)
- else
- writeUInt16(buf, 0xffff + value + 1, offset, littleEndian, noAssert)
- return offset + 2
-}
-
-Buffer.prototype.writeInt16LE = function (value, offset, noAssert) {
- return writeInt16(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeInt16BE = function (value, offset, noAssert) {
- return writeInt16(this, value, offset, false, noAssert)
-}
-
-function writeInt32 (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 3 < buf.length, 'Trying to write beyond buffer length')
- verifsint(value, 0x7fffffff, -0x80000000)
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- if (value >= 0)
- writeUInt32(buf, value, offset, littleEndian, noAssert)
- else
- writeUInt32(buf, 0xffffffff + value + 1, offset, littleEndian, noAssert)
- return offset + 4
-}
-
-Buffer.prototype.writeInt32LE = function (value, offset, noAssert) {
- return writeInt32(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeInt32BE = function (value, offset, noAssert) {
- return writeInt32(this, value, offset, false, noAssert)
-}
-
-function writeFloat (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 3 < buf.length, 'Trying to write beyond buffer length')
- verifIEEE754(value, 3.4028234663852886e+38, -3.4028234663852886e+38)
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- ieee754.write(buf, value, offset, littleEndian, 23, 4)
- return offset + 4
-}
-
-Buffer.prototype.writeFloatLE = function (value, offset, noAssert) {
- return writeFloat(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeFloatBE = function (value, offset, noAssert) {
- return writeFloat(this, value, offset, false, noAssert)
-}
-
-function writeDouble (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 7 < buf.length,
- 'Trying to write beyond buffer length')
- verifIEEE754(value, 1.7976931348623157E+308, -1.7976931348623157E+308)
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- ieee754.write(buf, value, offset, littleEndian, 52, 8)
- return offset + 8
-}
-
-Buffer.prototype.writeDoubleLE = function (value, offset, noAssert) {
- return writeDouble(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeDoubleBE = function (value, offset, noAssert) {
- return writeDouble(this, value, offset, false, noAssert)
-}
-
-// fill(value, start=0, end=buffer.length)
-Buffer.prototype.fill = function (value, start, end) {
- if (!value) value = 0
- if (!start) start = 0
- if (!end) end = this.length
-
- assert(end >= start, 'end < start')
-
- // Fill 0 bytes; we're done
- if (end === start) return
- if (this.length === 0) return
-
- assert(start >= 0 && start < this.length, 'start out of bounds')
- assert(end >= 0 && end <= this.length, 'end out of bounds')
-
- var i
- if (typeof value === 'number') {
- for (i = start; i < end; i++) {
- this[i] = value
- }
- } else {
- var bytes = utf8ToBytes(value.toString())
- var len = bytes.length
- for (i = start; i < end; i++) {
- this[i] = bytes[i % len]
- }
- }
-
- return this
-}
-
-Buffer.prototype.inspect = function () {
- var out = []
- var len = this.length
- for (var i = 0; i < len; i++) {
- out[i] = toHex(this[i])
- if (i === exports.INSPECT_MAX_BYTES) {
- out[i + 1] = '...'
- break
- }
- }
- return '<Buffer ' + out.join(' ') + '>'
-}
-
-/**
- * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.
- * Added in Node 0.12. Only available in browsers that support ArrayBuffer.
- */
-Buffer.prototype.toArrayBuffer = function () {
- if (typeof Uint8Array !== 'undefined') {
- if (Buffer._useTypedArrays) {
- return (new Buffer(this)).buffer
- } else {
- var buf = new Uint8Array(this.length)
- for (var i = 0, len = buf.length; i < len; i += 1) {
- buf[i] = this[i]
- }
- return buf.buffer
- }
- } else {
- throw new Error('Buffer.toArrayBuffer not supported in this browser')
- }
-}
-
-// HELPER FUNCTIONS
-// ================
-
-var BP = Buffer.prototype
-
-/**
- * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods
- */
-Buffer._augment = function (arr) {
- arr._isBuffer = true
-
- // save reference to original Uint8Array get/set methods before overwriting
- arr._get = arr.get
- arr._set = arr.set
-
- // deprecated, will be removed in node 0.13+
- arr.get = BP.get
- arr.set = BP.set
-
- arr.write = BP.write
- arr.toString = BP.toString
- arr.toLocaleString = BP.toString
- arr.toJSON = BP.toJSON
- arr.equals = BP.equals
- arr.compare = BP.compare
- arr.copy = BP.copy
- arr.slice = BP.slice
- arr.readUInt8 = BP.readUInt8
- arr.readUInt16LE = BP.readUInt16LE
- arr.readUInt16BE = BP.readUInt16BE
- arr.readUInt32LE = BP.readUInt32LE
- arr.readUInt32BE = BP.readUInt32BE
- arr.readInt8 = BP.readInt8
- arr.readInt16LE = BP.readInt16LE
- arr.readInt16BE = BP.readInt16BE
- arr.readInt32LE = BP.readInt32LE
- arr.readInt32BE = BP.readInt32BE
- arr.readFloatLE = BP.readFloatLE
- arr.readFloatBE = BP.readFloatBE
- arr.readDoubleLE = BP.readDoubleLE
- arr.readDoubleBE = BP.readDoubleBE
- arr.writeUInt8 = BP.writeUInt8
- arr.writeUInt16LE = BP.writeUInt16LE
- arr.writeUInt16BE = BP.writeUInt16BE
- arr.writeUInt32LE = BP.writeUInt32LE
- arr.writeUInt32BE = BP.writeUInt32BE
- arr.writeInt8 = BP.writeInt8
- arr.writeInt16LE = BP.writeInt16LE
- arr.writeInt16BE = BP.writeInt16BE
- arr.writeInt32LE = BP.writeInt32LE
- arr.writeInt32BE = BP.writeInt32BE
- arr.writeFloatLE = BP.writeFloatLE
- arr.writeFloatBE = BP.writeFloatBE
- arr.writeDoubleLE = BP.writeDoubleLE
- arr.writeDoubleBE = BP.writeDoubleBE
- arr.fill = BP.fill
- arr.inspect = BP.inspect
- arr.toArrayBuffer = BP.toArrayBuffer
-
- return arr
-}
-
-function stringtrim (str) {
- if (str.trim) return str.trim()
- return str.replace(/^\s+|\s+$/g, '')
-}
-
-// slice(start, end)
-function clamp (index, len, defaultValue) {
- if (typeof index !== 'number') return defaultValue
- index = ~~index; // Coerce to integer.
- if (index >= len) return len
- if (index >= 0) return index
- index += len
- if (index >= 0) return index
- return 0
-}
-
-function coerce (length) {
- // Coerce length to a number (possibly NaN), round up
- // in case it's fractional (e.g. 123.456) then do a
- // double negate to coerce a NaN to 0. Easy, right?
- length = ~~Math.ceil(+length)
- return length < 0 ? 0 : length
-}
-
-function isArray (subject) {
- return (Array.isArray || function (subject) {
- return Object.prototype.toString.call(subject) === '[object Array]'
- })(subject)
-}
-
-function isArrayish (subject) {
- return isArray(subject) || Buffer.isBuffer(subject) ||
- subject && typeof subject === 'object' &&
- typeof subject.length === 'number'
-}
-
-function toHex (n) {
- if (n < 16) return '0' + n.toString(16)
- return n.toString(16)
-}
-
-function utf8ToBytes (str) {
- var byteArray = []
- for (var i = 0; i < str.length; i++) {
- var b = str.charCodeAt(i)
- if (b <= 0x7F) {
- byteArray.push(b)
- } else {
- var start = i
- if (b >= 0xD800 && b <= 0xDFFF) i++
- var h = encodeURIComponent(str.slice(start, i+1)).substr(1).split('%')
- for (var j = 0; j < h.length; j++) {
- byteArray.push(parseInt(h[j], 16))
- }
- }
- }
- return byteArray
-}
-
-function asciiToBytes (str) {
- var byteArray = []
- for (var i = 0; i < str.length; i++) {
- // Node's code seems to be doing this and not & 0x7F..
- byteArray.push(str.charCodeAt(i) & 0xFF)
- }
- return byteArray
-}
-
-function utf16leToBytes (str) {
- var c, hi, lo
- var byteArray = []
- for (var i = 0; i < str.length; i++) {
- c = str.charCodeAt(i)
- hi = c >> 8
- lo = c % 256
- byteArray.push(lo)
- byteArray.push(hi)
- }
-
- return byteArray
-}
-
-function base64ToBytes (str) {
- return base64.toByteArray(str)
-}
-
-function blitBuffer (src, dst, offset, length) {
- for (var i = 0; i < length; i++) {
- if ((i + offset >= dst.length) || (i >= src.length))
- break
- dst[i + offset] = src[i]
- }
- return i
-}
-
-function decodeUtf8Char (str) {
- try {
- return decodeURIComponent(str)
- } catch (err) {
- return String.fromCharCode(0xFFFD) // UTF 8 invalid char
- }
-}
-
-/*
- * We have to make sure that the value is a valid integer. This means that it
- * is non-negative. It has no fractional component and that it does not
- * exceed the maximum allowed value.
- */
-function verifuint (value, max) {
- assert(typeof value === 'number', 'cannot write a non-number as a number')
- assert(value >= 0, 'specified a negative value for writing an unsigned value')
- assert(value <= max, 'value is larger than maximum value for type')
- assert(Math.floor(value) === value, 'value has a fractional component')
-}
-
-function verifsint (value, max, min) {
- assert(typeof value === 'number', 'cannot write a non-number as a number')
- assert(value <= max, 'value larger than maximum allowed value')
- assert(value >= min, 'value smaller than minimum allowed value')
- assert(Math.floor(value) === value, 'value has a fractional component')
-}
-
-function verifIEEE754 (value, max, min) {
- assert(typeof value === 'number', 'cannot write a non-number as a number')
- assert(value <= max, 'value larger than maximum allowed value')
- assert(value >= min, 'value smaller than minimum allowed value')
-}
-
-function assert (test, message) {
- if (!test) throw new Error(message || 'Failed assertion')
-}
-
-},{"base64-js":2,"ieee754":3}],2:[function(require,module,exports){
-var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
-
-;(function (exports) {
- 'use strict';
-
- var Arr = (typeof Uint8Array !== 'undefined')
- ? Uint8Array
- : Array
-
- var PLUS = '+'.charCodeAt(0)
- var SLASH = '/'.charCodeAt(0)
- var NUMBER = '0'.charCodeAt(0)
- var LOWER = 'a'.charCodeAt(0)
- var UPPER = 'A'.charCodeAt(0)
-
- function decode (elt) {
- var code = elt.charCodeAt(0)
- if (code === PLUS)
- return 62 // '+'
- if (code === SLASH)
- return 63 // '/'
- if (code < NUMBER)
- return -1 //no match
- if (code < NUMBER + 10)
- return code - NUMBER + 26 + 26
- if (code < UPPER + 26)
- return code - UPPER
- if (code < LOWER + 26)
- return code - LOWER + 26
- }
-
- function b64ToByteArray (b64) {
- var i, j, l, tmp, placeHolders, arr
-
- if (b64.length % 4 > 0) {
- throw new Error('Invalid string. Length must be a multiple of 4')
- }
-
- // the number of equal signs (place holders)
- // if there are two placeholders, than the two characters before it
- // represent one byte
- // if there is only one, then the three characters before it represent 2 bytes
- // this is just a cheap hack to not do indexOf twice
- var len = b64.length
- placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0
-
- // base64 is 4/3 + up to two characters of the original data
- arr = new Arr(b64.length * 3 / 4 - placeHolders)
-
- // if there are placeholders, only get up to the last complete 4 chars
- l = placeHolders > 0 ? b64.length - 4 : b64.length
-
- var L = 0
-
- function push (v) {
- arr[L++] = v
- }
-
- for (i = 0, j = 0; i < l; i += 4, j += 3) {
- tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))
- push((tmp & 0xFF0000) >> 16)
- push((tmp & 0xFF00) >> 8)
- push(tmp & 0xFF)
- }
-
- if (placeHolders === 2) {
- tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)
- push(tmp & 0xFF)
- } else if (placeHolders === 1) {
- tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)
- push((tmp >> 8) & 0xFF)
- push(tmp & 0xFF)
- }
-
- return arr
- }
-
- function uint8ToBase64 (uint8) {
- var i,
- extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
- output = "",
- temp, length
-
- function encode (num) {
- return lookup.charAt(num)
- }
-
- function tripletToBase64 (num) {
- return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)
- }
-
- // go through the array every three bytes, we'll deal with trailing stuff later
- for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
- temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
- output += tripletToBase64(temp)
- }
-
- // pad the end with zeros, but make sure to not forget the extra bytes
- switch (extraBytes) {
- case 1:
- temp = uint8[uint8.length - 1]
- output += encode(temp >> 2)
- output += encode((temp << 4) & 0x3F)
- output += '=='
- break
- case 2:
- temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])
- output += encode(temp >> 10)
- output += encode((temp >> 4) & 0x3F)
- output += encode((temp << 2) & 0x3F)
- output += '='
- break
- }
-
- return output
- }
-
- exports.toByteArray = b64ToByteArray
- exports.fromByteArray = uint8ToBase64
-}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))
-
-},{}],3:[function(require,module,exports){
-exports.read = function(buffer, offset, isLE, mLen, nBytes) {
- var e, m,
- eLen = nBytes * 8 - mLen - 1,
- eMax = (1 << eLen) - 1,
- eBias = eMax >> 1,
- nBits = -7,
- i = isLE ? (nBytes - 1) : 0,
- d = isLE ? -1 : 1,
- s = buffer[offset + i];
-
- i += d;
-
- e = s & ((1 << (-nBits)) - 1);
- s >>= (-nBits);
- nBits += eLen;
- for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8);
-
- m = e & ((1 << (-nBits)) - 1);
- e >>= (-nBits);
- nBits += mLen;
- for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8);
-
- if (e === 0) {
- e = 1 - eBias;
- } else if (e === eMax) {
- return m ? NaN : ((s ? -1 : 1) * Infinity);
- } else {
- m = m + Math.pow(2, mLen);
- e = e - eBias;
- }
- return (s ? -1 : 1) * m * Math.pow(2, e - mLen);
-};
-
-exports.write = function(buffer, value, offset, isLE, mLen, nBytes) {
- var e, m, c,
- eLen = nBytes * 8 - mLen - 1,
- eMax = (1 << eLen) - 1,
- eBias = eMax >> 1,
- rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),
- i = isLE ? 0 : (nBytes - 1),
- d = isLE ? 1 : -1,
- s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;
-
- value = Math.abs(value);
-
- if (isNaN(value) || value === Infinity) {
- m = isNaN(value) ? 1 : 0;
- e = eMax;
- } else {
- e = Math.floor(Math.log(value) / Math.LN2);
- if (value * (c = Math.pow(2, -e)) < 1) {
- e--;
- c *= 2;
- }
- if (e + eBias >= 1) {
- value += rt / c;
- } else {
- value += rt * Math.pow(2, 1 - eBias);
- }
- if (value * c >= 2) {
- e++;
- c /= 2;
- }
-
- if (e + eBias >= eMax) {
- m = 0;
- e = eMax;
- } else if (e + eBias >= 1) {
- m = (value * c - 1) * Math.pow(2, mLen);
- e = e + eBias;
- } else {
- m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
- e = 0;
- }
- }
-
- for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8);
-
- e = (e << mLen) | m;
- eLen += mLen;
- for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8);
-
- buffer[offset + i - d] |= s * 128;
-};
-
-},{}],4:[function(require,module,exports){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-function EventEmitter() {
- this._events = this._events || {};
- this._maxListeners = this._maxListeners || undefined;
-}
-module.exports = EventEmitter;
-
-// Backwards-compat with node 0.10.x
-EventEmitter.EventEmitter = EventEmitter;
-
-EventEmitter.prototype._events = undefined;
-EventEmitter.prototype._maxListeners = undefined;
-
-// By default EventEmitters will print a warning if more than 10 listeners are
-// added to it. This is a useful default which helps finding memory leaks.
-EventEmitter.defaultMaxListeners = 10;
-
-// Obviously not all Emitters should be limited to 10. This function allows
-// that to be increased. Set to zero for unlimited.
-EventEmitter.prototype.setMaxListeners = function(n) {
- if (!isNumber(n) || n < 0 || isNaN(n))
- throw TypeError('n must be a positive number');
- this._maxListeners = n;
- return this;
-};
-
-EventEmitter.prototype.emit = function(type) {
- var er, handler, len, args, i, listeners;
-
- if (!this._events)
- this._events = {};
-
- // If there is no 'error' event listener then throw.
- if (type === 'error') {
- if (!this._events.error ||
- (isObject(this._events.error) && !this._events.error.length)) {
- er = arguments[1];
- if (er instanceof Error) {
- throw er; // Unhandled 'error' event
- } else {
- throw TypeError('Uncaught, unspecified "error" event.');
- }
- return false;
- }
- }
-
- handler = this._events[type];
-
- if (isUndefined(handler))
- return false;
-
- if (isFunction(handler)) {
- switch (arguments.length) {
- // fast cases
- case 1:
- handler.call(this);
- break;
- case 2:
- handler.call(this, arguments[1]);
- break;
- case 3:
- handler.call(this, arguments[1], arguments[2]);
- break;
- // slower
- default:
- len = arguments.length;
- args = new Array(len - 1);
- for (i = 1; i < len; i++)
- args[i - 1] = arguments[i];
- handler.apply(this, args);
- }
- } else if (isObject(handler)) {
- len = arguments.length;
- args = new Array(len - 1);
- for (i = 1; i < len; i++)
- args[i - 1] = arguments[i];
-
- listeners = handler.slice();
- len = listeners.length;
- for (i = 0; i < len; i++)
- listeners[i].apply(this, args);
- }
-
- return true;
-};
-
-EventEmitter.prototype.addListener = function(type, listener) {
- var m;
-
- if (!isFunction(listener))
- throw TypeError('listener must be a function');
-
- if (!this._events)
- this._events = {};
-
- // To avoid recursion in the case that type === "newListener"! Before
- // adding it to the listeners, first emit "newListener".
- if (this._events.newListener)
- this.emit('newListener', type,
- isFunction(listener.listener) ?
- listener.listener : listener);
-
- if (!this._events[type])
- // Optimize the case of one listener. Don't need the extra array object.
- this._events[type] = listener;
- else if (isObject(this._events[type]))
- // If we've already got an array, just append.
- this._events[type].push(listener);
- else
- // Adding the second element, need to change to array.
- this._events[type] = [this._events[type], listener];
-
- // Check for listener leak
- if (isObject(this._events[type]) && !this._events[type].warned) {
- var m;
- if (!isUndefined(this._maxListeners)) {
- m = this._maxListeners;
- } else {
- m = EventEmitter.defaultMaxListeners;
- }
-
- if (m && m > 0 && this._events[type].length > m) {
- this._events[type].warned = true;
- console.error('(node) warning: possible EventEmitter memory ' +
- 'leak detected. %d listeners added. ' +
- 'Use emitter.setMaxListeners() to increase limit.',
- this._events[type].length);
- if (typeof console.trace === 'function') {
- // not supported in IE 10
- console.trace();
- }
- }
- }
-
- return this;
-};
-
-EventEmitter.prototype.on = EventEmitter.prototype.addListener;
-
-EventEmitter.prototype.once = function(type, listener) {
- if (!isFunction(listener))
- throw TypeError('listener must be a function');
-
- var fired = false;
-
- function g() {
- this.removeListener(type, g);
-
- if (!fired) {
- fired = true;
- listener.apply(this, arguments);
- }
- }
-
- g.listener = listener;
- this.on(type, g);
-
- return this;
-};
-
-// emits a 'removeListener' event iff the listener was removed
-EventEmitter.prototype.removeListener = function(type, listener) {
- var list, position, length, i;
-
- if (!isFunction(listener))
- throw TypeError('listener must be a function');
-
- if (!this._events || !this._events[type])
- return this;
-
- list = this._events[type];
- length = list.length;
- position = -1;
-
- if (list === listener ||
- (isFunction(list.listener) && list.listener === listener)) {
- delete this._events[type];
- if (this._events.removeListener)
- this.emit('removeListener', type, listener);
-
- } else if (isObject(list)) {
- for (i = length; i-- > 0;) {
- if (list[i] === listener ||
- (list[i].listener && list[i].listener === listener)) {
- position = i;
- break;
- }
- }
-
- if (position < 0)
- return this;
-
- if (list.length === 1) {
- list.length = 0;
- delete this._events[type];
- } else {
- list.splice(position, 1);
- }
-
- if (this._events.removeListener)
- this.emit('removeListener', type, listener);
- }
-
- return this;
-};
-
-EventEmitter.prototype.removeAllListeners = function(type) {
- var key, listeners;
-
- if (!this._events)
- return this;
-
- // not listening for removeListener, no need to emit
- if (!this._events.removeListener) {
- if (arguments.length === 0)
- this._events = {};
- else if (this._events[type])
- delete this._events[type];
- return this;
- }
-
- // emit removeListener for all listeners on all events
- if (arguments.length === 0) {
- for (key in this._events) {
- if (key === 'removeListener') continue;
- this.removeAllListeners(key);
- }
- this.removeAllListeners('removeListener');
- this._events = {};
- return this;
- }
-
- listeners = this._events[type];
-
- if (isFunction(listeners)) {
- this.removeListener(type, listeners);
- } else {
- // LIFO order
- while (listeners.length)
- this.removeListener(type, listeners[listeners.length - 1]);
- }
- delete this._events[type];
-
- return this;
-};
-
-EventEmitter.prototype.listeners = function(type) {
- var ret;
- if (!this._events || !this._events[type])
- ret = [];
- else if (isFunction(this._events[type]))
- ret = [this._events[type]];
- else
- ret = this._events[type].slice();
- return ret;
-};
-
-EventEmitter.listenerCount = function(emitter, type) {
- var ret;
- if (!emitter._events || !emitter._events[type])
- ret = 0;
- else if (isFunction(emitter._events[type]))
- ret = 1;
- else
- ret = emitter._events[type].length;
- return ret;
-};
-
-function isFunction(arg) {
- return typeof arg === 'function';
-}
-
-function isNumber(arg) {
- return typeof arg === 'number';
-}
-
-function isObject(arg) {
- return typeof arg === 'object' && arg !== null;
-}
-
-function isUndefined(arg) {
- return arg === void 0;
-}
-
-},{}],5:[function(require,module,exports){
-if (typeof Object.create === 'function') {
- // implementation from standard node.js 'util' module
- module.exports = function inherits(ctor, superCtor) {
- ctor.super_ = superCtor
- ctor.prototype = Object.create(superCtor.prototype, {
- constructor: {
- value: ctor,
- enumerable: false,
- writable: true,
- configurable: true
- }
- });
- };
-} else {
- // old school shim for old browsers
- module.exports = function inherits(ctor, superCtor) {
- ctor.super_ = superCtor
- var TempCtor = function () {}
- TempCtor.prototype = superCtor.prototype
- ctor.prototype = new TempCtor()
- ctor.prototype.constructor = ctor
- }
-}
-
-},{}],6:[function(require,module,exports){
-// shim for using process in browser
-
-var process = module.exports = {};
-
-process.nextTick = (function () {
- var canSetImmediate = typeof window !== 'undefined'
- && window.setImmediate;
- var canPost = typeof window !== 'undefined'
- && window.postMessage && window.addEventListener
- ;
-
- if (canSetImmediate) {
- return function (f) { return window.setImmediate(f) };
- }
-
- if (canPost) {
- var queue = [];
- window.addEventListener('message', function (ev) {
- var source = ev.source;
- if ((source === window || source === null) && ev.data === 'process-tick') {
- ev.stopPropagation();
- if (queue.length > 0) {
- var fn = queue.shift();
- fn();
- }
- }
- }, true);
-
- return function nextTick(fn) {
- queue.push(fn);
- window.postMessage('process-tick', '*');
- };
- }
-
- return function nextTick(fn) {
- setTimeout(fn, 0);
- };
-})();
-
-process.title = 'browser';
-process.browser = true;
-process.env = {};
-process.argv = [];
-
-function noop() {}
-
-process.on = noop;
-process.addListener = noop;
-process.once = noop;
-process.off = noop;
-process.removeListener = noop;
-process.removeAllListeners = noop;
-process.emit = noop;
-
-process.binding = function (name) {
- throw new Error('process.binding is not supported');
-}
-
-// TODO(shtylman)
-process.cwd = function () { return '/' };
-process.chdir = function (dir) {
- throw new Error('process.chdir is not supported');
-};
-
-},{}],7:[function(require,module,exports){
-module.exports = require("./lib/_stream_duplex.js")
-
-},{"./lib/_stream_duplex.js":8}],8:[function(require,module,exports){
-(function (process){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// a duplex stream is just a stream that is both readable and writable.
-// Since JS doesn't have multiple prototypal inheritance, this class
-// prototypally inherits from Readable, and then parasitically from
-// Writable.
-
-module.exports = Duplex;
-
-/*<replacement>*/
-var objectKeys = Object.keys || function (obj) {
- var keys = [];
- for (var key in obj) keys.push(key);
- return keys;
-}
-/*</replacement>*/
-
-
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
-
-var Readable = require('./_stream_readable');
-var Writable = require('./_stream_writable');
-
-util.inherits(Duplex, Readable);
-
-forEach(objectKeys(Writable.prototype), function(method) {
- if (!Duplex.prototype[method])
- Duplex.prototype[method] = Writable.prototype[method];
-});
-
-function Duplex(options) {
- if (!(this instanceof Duplex))
- return new Duplex(options);
-
- Readable.call(this, options);
- Writable.call(this, options);
-
- if (options && options.readable === false)
- this.readable = false;
-
- if (options && options.writable === false)
- this.writable = false;
-
- this.allowHalfOpen = true;
- if (options && options.allowHalfOpen === false)
- this.allowHalfOpen = false;
-
- this.once('end', onend);
-}
-
-// the no-half-open enforcer
-function onend() {
- // if we allow half-open state, or if the writable side ended,
- // then we're ok.
- if (this.allowHalfOpen || this._writableState.ended)
- return;
-
- // no more data can be written.
- // But allow more writes to happen in this tick.
- process.nextTick(this.end.bind(this));
-}
-
-function forEach (xs, f) {
- for (var i = 0, l = xs.length; i < l; i++) {
- f(xs[i], i);
- }
-}
-
-}).call(this,require("4dON6Z"))
-},{"./_stream_readable":10,"./_stream_writable":12,"4dON6Z":6,"core-util-is":13,"inherits":5}],9:[function(require,module,exports){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// a passthrough stream.
-// basically just the most minimal sort of Transform stream.
-// Every written chunk gets output as-is.
-
-module.exports = PassThrough;
-
-var Transform = require('./_stream_transform');
-
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
-
-util.inherits(PassThrough, Transform);
-
-function PassThrough(options) {
- if (!(this instanceof PassThrough))
- return new PassThrough(options);
-
- Transform.call(this, options);
-}
-
-PassThrough.prototype._transform = function(chunk, encoding, cb) {
- cb(null, chunk);
-};
-
-},{"./_stream_transform":11,"core-util-is":13,"inherits":5}],10:[function(require,module,exports){
-(function (process){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-module.exports = Readable;
-
-/*<replacement>*/
-var isArray = require('isarray');
-/*</replacement>*/
-
-
-/*<replacement>*/
-var Buffer = require('buffer').Buffer;
-/*</replacement>*/
-
-Readable.ReadableState = ReadableState;
-
-var EE = require('events').EventEmitter;
-
-/*<replacement>*/
-if (!EE.listenerCount) EE.listenerCount = function(emitter, type) {
- return emitter.listeners(type).length;
-};
-/*</replacement>*/
-
-var Stream = require('stream');
-
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
-
-var StringDecoder;
-
-util.inherits(Readable, Stream);
-
-function ReadableState(options, stream) {
- options = options || {};
-
- // the point at which it stops calling _read() to fill the buffer
- // Note: 0 is a valid value, means "don't call _read preemptively ever"
- var hwm = options.highWaterMark;
- this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024;
-
- // cast to ints.
- this.highWaterMark = ~~this.highWaterMark;
-
- this.buffer = [];
- this.length = 0;
- this.pipes = null;
- this.pipesCount = 0;
- this.flowing = false;
- this.ended = false;
- this.endEmitted = false;
- this.reading = false;
-
- // In streams that never have any data, and do push(null) right away,
- // the consumer can miss the 'end' event if they do some I/O before
- // consuming the stream. So, we don't emit('end') until some reading
- // happens.
- this.calledRead = false;
-
- // a flag to be able to tell if the onwrite cb is called immediately,
- // or on a later tick. We set this to true at first, becuase any
- // actions that shouldn't happen until "later" should generally also
- // not happen before the first write call.
- this.sync = true;
-
- // whenever we return null, then we set a flag to say
- // that we're awaiting a 'readable' event emission.
- this.needReadable = false;
- this.emittedReadable = false;
- this.readableListening = false;
-
-
- // object stream flag. Used to make read(n) ignore n and to
- // make all the buffer merging and length checks go away
- this.objectMode = !!options.objectMode;
-
- // Crypto is kind of old and crusty. Historically, its default string
- // encoding is 'binary' so we have to make this configurable.
- // Everything else in the universe uses 'utf8', though.
- this.defaultEncoding = options.defaultEncoding || 'utf8';
-
- // when piping, we only care about 'readable' events that happen
- // after read()ing all the bytes and not getting any pushback.
- this.ranOut = false;
-
- // the number of writers that are awaiting a drain event in .pipe()s
- this.awaitDrain = 0;
-
- // if true, a maybeReadMore has been scheduled
- this.readingMore = false;
-
- this.decoder = null;
- this.encoding = null;
- if (options.encoding) {
- if (!StringDecoder)
- StringDecoder = require('string_decoder/').StringDecoder;
- this.decoder = new StringDecoder(options.encoding);
- this.encoding = options.encoding;
- }
-}
-
-function Readable(options) {
- if (!(this instanceof Readable))
- return new Readable(options);
-
- this._readableState = new ReadableState(options, this);
-
- // legacy
- this.readable = true;
-
- Stream.call(this);
-}
-
-// Manually shove something into the read() buffer.
-// This returns true if the highWaterMark has not been hit yet,
-// similar to how Writable.write() returns true if you should
-// write() some more.
-Readable.prototype.push = function(chunk, encoding) {
- var state = this._readableState;
-
- if (typeof chunk === 'string' && !state.objectMode) {
- encoding = encoding || state.defaultEncoding;
- if (encoding !== state.encoding) {
- chunk = new Buffer(chunk, encoding);
- encoding = '';
- }
- }
-
- return readableAddChunk(this, state, chunk, encoding, false);
-};
-
-// Unshift should *always* be something directly out of read()
-Readable.prototype.unshift = function(chunk) {
- var state = this._readableState;
- return readableAddChunk(this, state, chunk, '', true);
-};
-
-function readableAddChunk(stream, state, chunk, encoding, addToFront) {
- var er = chunkInvalid(state, chunk);
- if (er) {
- stream.emit('error', er);
- } else if (chunk === null || chunk === undefined) {
- state.reading = false;
- if (!state.ended)
- onEofChunk(stream, state);
- } else if (state.objectMode || chunk && chunk.length > 0) {
- if (state.ended && !addToFront) {
- var e = new Error('stream.push() after EOF');
- stream.emit('error', e);
- } else if (state.endEmitted && addToFront) {
- var e = new Error('stream.unshift() after end event');
- stream.emit('error', e);
- } else {
- if (state.decoder && !addToFront && !encoding)
- chunk = state.decoder.write(chunk);
-
- // update the buffer info.
- state.length += state.objectMode ? 1 : chunk.length;
- if (addToFront) {
- state.buffer.unshift(chunk);
- } else {
- state.reading = false;
- state.buffer.push(chunk);
- }
-
- if (state.needReadable)
- emitReadable(stream);
-
- maybeReadMore(stream, state);
- }
- } else if (!addToFront) {
- state.reading = false;
- }
-
- return needMoreData(state);
-}
-
-
-
-// if it's past the high water mark, we can push in some more.
-// Also, if we have no data yet, we can stand some
-// more bytes. This is to work around cases where hwm=0,
-// such as the repl. Also, if the push() triggered a
-// readable event, and the user called read(largeNumber) such that
-// needReadable was set, then we ought to push more, so that another
-// 'readable' event will be triggered.
-function needMoreData(state) {
- return !state.ended &&
- (state.needReadable ||
- state.length < state.highWaterMark ||
- state.length === 0);
-}
-
-// backwards compatibility.
-Readable.prototype.setEncoding = function(enc) {
- if (!StringDecoder)
- StringDecoder = require('string_decoder/').StringDecoder;
- this._readableState.decoder = new StringDecoder(enc);
- this._readableState.encoding = enc;
-};
-
-// Don't raise the hwm > 128MB
-var MAX_HWM = 0x800000;
-function roundUpToNextPowerOf2(n) {
- if (n >= MAX_HWM) {
- n = MAX_HWM;
- } else {
- // Get the next highest power of 2
- n--;
- for (var p = 1; p < 32; p <<= 1) n |= n >> p;
- n++;
- }
- return n;
-}
-
-function howMuchToRead(n, state) {
- if (state.length === 0 && state.ended)
- return 0;
-
- if (state.objectMode)
- return n === 0 ? 0 : 1;
-
- if (isNaN(n) || n === null) {
- // only flow one buffer at a time
- if (state.flowing && state.buffer.length)
- return state.buffer[0].length;
- else
- return state.length;
- }
-
- if (n <= 0)
- return 0;
-
- // If we're asking for more than the target buffer level,
- // then raise the water mark. Bump up to the next highest
- // power of 2, to prevent increasing it excessively in tiny
- // amounts.
- if (n > state.highWaterMark)
- state.highWaterMark = roundUpToNextPowerOf2(n);
-
- // don't have that much. return null, unless we've ended.
- if (n > state.length) {
- if (!state.ended) {
- state.needReadable = true;
- return 0;
- } else
- return state.length;
- }
-
- return n;
-}
-
-// you can override either this method, or the async _read(n) below.
-Readable.prototype.read = function(n) {
- var state = this._readableState;
- state.calledRead = true;
- var nOrig = n;
-
- if (typeof n !== 'number' || n > 0)
- state.emittedReadable = false;
-
- // if we're doing read(0) to trigger a readable event, but we
- // already have a bunch of data in the buffer, then just trigger
- // the 'readable' event and move on.
- if (n === 0 &&
- state.needReadable &&
- (state.length >= state.highWaterMark || state.ended)) {
- emitReadable(this);
- return null;
- }
-
- n = howMuchToRead(n, state);
-
- // if we've ended, and we're now clear, then finish it up.
- if (n === 0 && state.ended) {
- if (state.length === 0)
- endReadable(this);
- return null;
- }
-
- // All the actual chunk generation logic needs to be
- // *below* the call to _read. The reason is that in certain
- // synthetic stream cases, such as passthrough streams, _read
- // may be a completely synchronous operation which may change
- // the state of the read buffer, providing enough data when
- // before there was *not* enough.
- //
- // So, the steps are:
- // 1. Figure out what the state of things will be after we do
- // a read from the buffer.
- //
- // 2. If that resulting state will trigger a _read, then call _read.
- // Note that this may be asynchronous, or synchronous. Yes, it is
- // deeply ugly to write APIs this way, but that still doesn't mean
- // that the Readable class should behave improperly, as streams are
- // designed to be sync/async agnostic.
- // Take note if the _read call is sync or async (ie, if the read call
- // has returned yet), so that we know whether or not it's safe to emit
- // 'readable' etc.
- //
- // 3. Actually pull the requested chunks out of the buffer and return.
-
- // if we need a readable event, then we need to do some reading.
- var doRead = state.needReadable;
-
- // if we currently have less than the highWaterMark, then also read some
- if (state.length - n <= state.highWaterMark)
- doRead = true;
-
- // however, if we've ended, then there's no point, and if we're already
- // reading, then it's unnecessary.
- if (state.ended || state.reading)
- doRead = false;
-
- if (doRead) {
- state.reading = true;
- state.sync = true;
- // if the length is currently zero, then we *need* a readable event.
- if (state.length === 0)
- state.needReadable = true;
- // call internal read method
- this._read(state.highWaterMark);
- state.sync = false;
- }
-
- // If _read called its callback synchronously, then `reading`
- // will be false, and we need to re-evaluate how much data we
- // can return to the user.
- if (doRead && !state.reading)
- n = howMuchToRead(nOrig, state);
-
- var ret;
- if (n > 0)
- ret = fromList(n, state);
- else
- ret = null;
-
- if (ret === null) {
- state.needReadable = true;
- n = 0;
- }
-
- state.length -= n;
-
- // If we have nothing in the buffer, then we want to know
- // as soon as we *do* get something into the buffer.
- if (state.length === 0 && !state.ended)
- state.needReadable = true;
-
- // If we happened to read() exactly the remaining amount in the
- // buffer, and the EOF has been seen at this point, then make sure
- // that we emit 'end' on the very next tick.
- if (state.ended && !state.endEmitted && state.length === 0)
- endReadable(this);
-
- return ret;
-};
-
-function chunkInvalid(state, chunk) {
- var er = null;
- if (!Buffer.isBuffer(chunk) &&
- 'string' !== typeof chunk &&
- chunk !== null &&
- chunk !== undefined &&
- !state.objectMode &&
- !er) {
- er = new TypeError('Invalid non-string/buffer chunk');
- }
- return er;
-}
-
-
-function onEofChunk(stream, state) {
- if (state.decoder && !state.ended) {
- var chunk = state.decoder.end();
- if (chunk && chunk.length) {
- state.buffer.push(chunk);
- state.length += state.objectMode ? 1 : chunk.length;
- }
- }
- state.ended = true;
-
- // if we've ended and we have some data left, then emit
- // 'readable' now to make sure it gets picked up.
- if (state.length > 0)
- emitReadable(stream);
- else
- endReadable(stream);
-}
-
-// Don't emit readable right away in sync mode, because this can trigger
-// another read() call => stack overflow. This way, it might trigger
-// a nextTick recursion warning, but that's not so bad.
-function emitReadable(stream) {
- var state = stream._readableState;
- state.needReadable = false;
- if (state.emittedReadable)
- return;
-
- state.emittedReadable = true;
- if (state.sync)
- process.nextTick(function() {
- emitReadable_(stream);
- });
- else
- emitReadable_(stream);
-}
-
-function emitReadable_(stream) {
- stream.emit('readable');
-}
-
-
-// at this point, the user has presumably seen the 'readable' event,
-// and called read() to consume some data. that may have triggered
-// in turn another _read(n) call, in which case reading = true if
-// it's in progress.
-// However, if we're not ended, or reading, and the length < hwm,
-// then go ahead and try to read some more preemptively.
-function maybeReadMore(stream, state) {
- if (!state.readingMore) {
- state.readingMore = true;
- process.nextTick(function() {
- maybeReadMore_(stream, state);
- });
- }
-}
-
-function maybeReadMore_(stream, state) {
- var len = state.length;
- while (!state.reading && !state.flowing && !state.ended &&
- state.length < state.highWaterMark) {
- stream.read(0);
- if (len === state.length)
- // didn't get any data, stop spinning.
- break;
- else
- len = state.length;
- }
- state.readingMore = false;
-}
-
-// abstract method. to be overridden in specific implementation classes.
-// call cb(er, data) where data is <= n in length.
-// for virtual (non-string, non-buffer) streams, "length" is somewhat
-// arbitrary, and perhaps not very meaningful.
-Readable.prototype._read = function(n) {
- this.emit('error', new Error('not implemented'));
-};
-
-Readable.prototype.pipe = function(dest, pipeOpts) {
- var src = this;
- var state = this._readableState;
-
- switch (state.pipesCount) {
- case 0:
- state.pipes = dest;
- break;
- case 1:
- state.pipes = [state.pipes, dest];
- break;
- default:
- state.pipes.push(dest);
- break;
- }
- state.pipesCount += 1;
-
- var doEnd = (!pipeOpts || pipeOpts.end !== false) &&
- dest !== process.stdout &&
- dest !== process.stderr;
-
- var endFn = doEnd ? onend : cleanup;
- if (state.endEmitted)
- process.nextTick(endFn);
- else
- src.once('end', endFn);
-
- dest.on('unpipe', onunpipe);
- function onunpipe(readable) {
- if (readable !== src) return;
- cleanup();
- }
-
- function onend() {
- dest.end();
- }
-
- // when the dest drains, it reduces the awaitDrain counter
- // on the source. This would be more elegant with a .once()
- // handler in flow(), but adding and removing repeatedly is
- // too slow.
- var ondrain = pipeOnDrain(src);
- dest.on('drain', ondrain);
-
- function cleanup() {
- // cleanup event handlers once the pipe is broken
- dest.removeListener('close', onclose);
- dest.removeListener('finish', onfinish);
- dest.removeListener('drain', ondrain);
- dest.removeListener('error', onerror);
- dest.removeListener('unpipe', onunpipe);
- src.removeListener('end', onend);
- src.removeListener('end', cleanup);
-
- // if the reader is waiting for a drain event from this
- // specific writer, then it would cause it to never start
- // flowing again.
- // So, if this is awaiting a drain, then we just call it now.
- // If we don't know, then assume that we are waiting for one.
- if (!dest._writableState || dest._writableState.needDrain)
- ondrain();
- }
-
- // if the dest has an error, then stop piping into it.
- // however, don't suppress the throwing behavior for this.
- function onerror(er) {
- unpipe();
- dest.removeListener('error', onerror);
- if (EE.listenerCount(dest, 'error') === 0)
- dest.emit('error', er);
- }
- // This is a brutally ugly hack to make sure that our error handler
- // is attached before any userland ones. NEVER DO THIS.
- if (!dest._events || !dest._events.error)
- dest.on('error', onerror);
- else if (isArray(dest._events.error))
- dest._events.error.unshift(onerror);
- else
- dest._events.error = [onerror, dest._events.error];
-
-
-
- // Both close and finish should trigger unpipe, but only once.
- function onclose() {
- dest.removeListener('finish', onfinish);
- unpipe();
- }
- dest.once('close', onclose);
- function onfinish() {
- dest.removeListener('close', onclose);
- unpipe();
- }
- dest.once('finish', onfinish);
-
- function unpipe() {
- src.unpipe(dest);
- }
-
- // tell the dest that it's being piped to
- dest.emit('pipe', src);
-
- // start the flow if it hasn't been started already.
- if (!state.flowing) {
- // the handler that waits for readable events after all
- // the data gets sucked out in flow.
- // This would be easier to follow with a .once() handler
- // in flow(), but that is too slow.
- this.on('readable', pipeOnReadable);
-
- state.flowing = true;
- process.nextTick(function() {
- flow(src);
- });
- }
-
- return dest;
-};
-
-function pipeOnDrain(src) {
- return function() {
- var dest = this;
- var state = src._readableState;
- state.awaitDrain--;
- if (state.awaitDrain === 0)
- flow(src);
- };
-}
-
-function flow(src) {
- var state = src._readableState;
- var chunk;
- state.awaitDrain = 0;
-
- function write(dest, i, list) {
- var written = dest.write(chunk);
- if (false === written) {
- state.awaitDrain++;
- }
- }
-
- while (state.pipesCount && null !== (chunk = src.read())) {
-
- if (state.pipesCount === 1)
- write(state.pipes, 0, null);
- else
- forEach(state.pipes, write);
-
- src.emit('data', chunk);
-
- // if anyone needs a drain, then we have to wait for that.
- if (state.awaitDrain > 0)
- return;
- }
-
- // if every destination was unpiped, either before entering this
- // function, or in the while loop, then stop flowing.
- //
- // NB: This is a pretty rare edge case.
- if (state.pipesCount === 0) {
- state.flowing = false;
-
- // if there were data event listeners added, then switch to old mode.
- if (EE.listenerCount(src, 'data') > 0)
- emitDataEvents(src);
- return;
- }
-
- // at this point, no one needed a drain, so we just ran out of data
- // on the next readable event, start it over again.
- state.ranOut = true;
-}
-
-function pipeOnReadable() {
- if (this._readableState.ranOut) {
- this._readableState.ranOut = false;
- flow(this);
- }
-}
-
-
-Readable.prototype.unpipe = function(dest) {
- var state = this._readableState;
-
- // if we're not piping anywhere, then do nothing.
- if (state.pipesCount === 0)
- return this;
-
- // just one destination. most common case.
- if (state.pipesCount === 1) {
- // passed in one, but it's not the right one.
- if (dest && dest !== state.pipes)
- return this;
-
- if (!dest)
- dest = state.pipes;
-
- // got a match.
- state.pipes = null;
- state.pipesCount = 0;
- this.removeListener('readable', pipeOnReadable);
- state.flowing = false;
- if (dest)
- dest.emit('unpipe', this);
- return this;
- }
-
- // slow case. multiple pipe destinations.
-
- if (!dest) {
- // remove all.
- var dests = state.pipes;
- var len = state.pipesCount;
- state.pipes = null;
- state.pipesCount = 0;
- this.removeListener('readable', pipeOnReadable);
- state.flowing = false;
-
- for (var i = 0; i < len; i++)
- dests[i].emit('unpipe', this);
- return this;
- }
-
- // try to find the right one.
- var i = indexOf(state.pipes, dest);
- if (i === -1)
- return this;
-
- state.pipes.splice(i, 1);
- state.pipesCount -= 1;
- if (state.pipesCount === 1)
- state.pipes = state.pipes[0];
-
- dest.emit('unpipe', this);
-
- return this;
-};
-
-// set up data events if they are asked for
-// Ensure readable listeners eventually get something
-Readable.prototype.on = function(ev, fn) {
- var res = Stream.prototype.on.call(this, ev, fn);
-
- if (ev === 'data' && !this._readableState.flowing)
- emitDataEvents(this);
-
- if (ev === 'readable' && this.readable) {
- var state = this._readableState;
- if (!state.readableListening) {
- state.readableListening = true;
- state.emittedReadable = false;
- state.needReadable = true;
- if (!state.reading) {
- this.read(0);
- } else if (state.length) {
- emitReadable(this, state);
- }
- }
- }
-
- return res;
-};
-Readable.prototype.addListener = Readable.prototype.on;
-
-// pause() and resume() are remnants of the legacy readable stream API
-// If the user uses them, then switch into old mode.
-Readable.prototype.resume = function() {
- emitDataEvents(this);
- this.read(0);
- this.emit('resume');
-};
-
-Readable.prototype.pause = function() {
- emitDataEvents(this, true);
- this.emit('pause');
-};
-
-function emitDataEvents(stream, startPaused) {
- var state = stream._readableState;
-
- if (state.flowing) {
- // https://github.com/isaacs/readable-stream/issues/16
- throw new Error('Cannot switch to old mode now.');
- }
-
- var paused = startPaused || false;
- var readable = false;
-
- // convert to an old-style stream.
- stream.readable = true;
- stream.pipe = Stream.prototype.pipe;
- stream.on = stream.addListener = Stream.prototype.on;
-
- stream.on('readable', function() {
- readable = true;
-
- var c;
- while (!paused && (null !== (c = stream.read())))
- stream.emit('data', c);
-
- if (c === null) {
- readable = false;
- stream._readableState.needReadable = true;
- }
- });
-
- stream.pause = function() {
- paused = true;
- this.emit('pause');
- };
-
- stream.resume = function() {
- paused = false;
- if (readable)
- process.nextTick(function() {
- stream.emit('readable');
- });
- else
- this.read(0);
- this.emit('resume');
- };
-
- // now make it start, just in case it hadn't already.
- stream.emit('readable');
-}
-
-// wrap an old-style stream as the async data source.
-// This is *not* part of the readable stream interface.
-// It is an ugly unfortunate mess of history.
-Readable.prototype.wrap = function(stream) {
- var state = this._readableState;
- var paused = false;
-
- var self = this;
- stream.on('end', function() {
- if (state.decoder && !state.ended) {
- var chunk = state.decoder.end();
- if (chunk && chunk.length)
- self.push(chunk);
- }
-
- self.push(null);
- });
-
- stream.on('data', function(chunk) {
- if (state.decoder)
- chunk = state.decoder.write(chunk);
- if (!chunk || !state.objectMode && !chunk.length)
- return;
-
- var ret = self.push(chunk);
- if (!ret) {
- paused = true;
- stream.pause();
- }
- });
-
- // proxy all the other methods.
- // important when wrapping filters and duplexes.
- for (var i in stream) {
- if (typeof stream[i] === 'function' &&
- typeof this[i] === 'undefined') {
- this[i] = function(method) { return function() {
- return stream[method].apply(stream, arguments);
- }}(i);
- }
- }
-
- // proxy certain important events.
- var events = ['error', 'close', 'destroy', 'pause', 'resume'];
- forEach(events, function(ev) {
- stream.on(ev, self.emit.bind(self, ev));
- });
-
- // when we try to consume some more bytes, simply unpause the
- // underlying stream.
- self._read = function(n) {
- if (paused) {
- paused = false;
- stream.resume();
- }
- };
-
- return self;
-};
-
-
-
-// exposed for testing purposes only.
-Readable._fromList = fromList;
-
-// Pluck off n bytes from an array of buffers.
-// Length is the combined lengths of all the buffers in the list.
-function fromList(n, state) {
- var list = state.buffer;
- var length = state.length;
- var stringMode = !!state.decoder;
- var objectMode = !!state.objectMode;
- var ret;
-
- // nothing in the list, definitely empty.
- if (list.length === 0)
- return null;
-
- if (length === 0)
- ret = null;
- else if (objectMode)
- ret = list.shift();
- else if (!n || n >= length) {
- // read it all, truncate the array.
- if (stringMode)
- ret = list.join('');
- else
- ret = Buffer.concat(list, length);
- list.length = 0;
- } else {
- // read just some of it.
- if (n < list[0].length) {
- // just take a part of the first list item.
- // slice is the same for buffers and strings.
- var buf = list[0];
- ret = buf.slice(0, n);
- list[0] = buf.slice(n);
- } else if (n === list[0].length) {
- // first list is a perfect match
- ret = list.shift();
- } else {
- // complex case.
- // we have enough to cover it, but it spans past the first buffer.
- if (stringMode)
- ret = '';
- else
- ret = new Buffer(n);
-
- var c = 0;
- for (var i = 0, l = list.length; i < l && c < n; i++) {
- var buf = list[0];
- var cpy = Math.min(n - c, buf.length);
-
- if (stringMode)
- ret += buf.slice(0, cpy);
- else
- buf.copy(ret, c, 0, cpy);
-
- if (cpy < buf.length)
- list[0] = buf.slice(cpy);
- else
- list.shift();
-
- c += cpy;
- }
- }
- }
-
- return ret;
-}
-
-function endReadable(stream) {
- var state = stream._readableState;
-
- // If we get here before consuming all the bytes, then that is a
- // bug in node. Should never happen.
- if (state.length > 0)
- throw new Error('endReadable called on non-empty stream');
-
- if (!state.endEmitted && state.calledRead) {
- state.ended = true;
- process.nextTick(function() {
- // Check that we didn't get one last unshift.
- if (!state.endEmitted && state.length === 0) {
- state.endEmitted = true;
- stream.readable = false;
- stream.emit('end');
- }
- });
- }
-}
-
-function forEach (xs, f) {
- for (var i = 0, l = xs.length; i < l; i++) {
- f(xs[i], i);
- }
-}
-
-function indexOf (xs, x) {
- for (var i = 0, l = xs.length; i < l; i++) {
- if (xs[i] === x) return i;
- }
- return -1;
-}
-
-}).call(this,require("4dON6Z"))
-},{"4dON6Z":6,"buffer":1,"core-util-is":13,"events":4,"inherits":5,"isarray":14,"stream":20,"string_decoder/":15}],11:[function(require,module,exports){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-// a transform stream is a readable/writable stream where you do
-// something with the data. Sometimes it's called a "filter",
-// but that's not a great name for it, since that implies a thing where
-// some bits pass through, and others are simply ignored. (That would
-// be a valid example of a transform, of course.)
-//
-// While the output is causally related to the input, it's not a
-// necessarily symmetric or synchronous transformation. For example,
-// a zlib stream might take multiple plain-text writes(), and then
-// emit a single compressed chunk some time in the future.
-//
-// Here's how this works:
-//
-// The Transform stream has all the aspects of the readable and writable
-// stream classes. When you write(chunk), that calls _write(chunk,cb)
-// internally, and returns false if there's a lot of pending writes
-// buffered up. When you call read(), that calls _read(n) until
-// there's enough pending readable data buffered up.
-//
-// In a transform stream, the written data is placed in a buffer. When
-// _read(n) is called, it transforms the queued up data, calling the
-// buffered _write cb's as it consumes chunks. If consuming a single
-// written chunk would result in multiple output chunks, then the first
-// outputted bit calls the readcb, and subsequent chunks just go into
-// the read buffer, and will cause it to emit 'readable' if necessary.
-//
-// This way, back-pressure is actually determined by the reading side,
-// since _read has to be called to start processing a new chunk. However,
-// a pathological inflate type of transform can cause excessive buffering
-// here. For example, imagine a stream where every byte of input is
-// interpreted as an integer from 0-255, and then results in that many
-// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
-// 1kb of data being output. In this case, you could write a very small
-// amount of input, and end up with a very large amount of output. In
-// such a pathological inflating mechanism, there'd be no way to tell
-// the system to stop doing the transform. A single 4MB write could
-// cause the system to run out of memory.
-//
-// However, even in such a pathological case, only a single written chunk
-// would be consumed, and then the rest would wait (un-transformed) until
-// the results of the previous transformed chunk were consumed.
-
-module.exports = Transform;
-
-var Duplex = require('./_stream_duplex');
-
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
-
-util.inherits(Transform, Duplex);
-
-
-function TransformState(options, stream) {
- this.afterTransform = function(er, data) {
- return afterTransform(stream, er, data);
- };
-
- this.needTransform = false;
- this.transforming = false;
- this.writecb = null;
- this.writechunk = null;
-}
-
-function afterTransform(stream, er, data) {
- var ts = stream._transformState;
- ts.transforming = false;
-
- var cb = ts.writecb;
-
- if (!cb)
- return stream.emit('error', new Error('no writecb in Transform class'));
-
- ts.writechunk = null;
- ts.writecb = null;
-
- if (data !== null && data !== undefined)
- stream.push(data);
-
- if (cb)
- cb(er);
-
- var rs = stream._readableState;
- rs.reading = false;
- if (rs.needReadable || rs.length < rs.highWaterMark) {
- stream._read(rs.highWaterMark);
- }
-}
-
-
-function Transform(options) {
- if (!(this instanceof Transform))
- return new Transform(options);
-
- Duplex.call(this, options);
-
- var ts = this._transformState = new TransformState(options, this);
-
- // when the writable side finishes, then flush out anything remaining.
- var stream = this;
-
- // start out asking for a readable event once data is transformed.
- this._readableState.needReadable = true;
-
- // we have implemented the _read method, and done the other things
- // that Readable wants before the first _read call, so unset the
- // sync guard flag.
- this._readableState.sync = false;
-
- this.once('finish', function() {
- if ('function' === typeof this._flush)
- this._flush(function(er) {
- done(stream, er);
- });
- else
- done(stream);
- });
-}
-
-Transform.prototype.push = function(chunk, encoding) {
- this._transformState.needTransform = false;
- return Duplex.prototype.push.call(this, chunk, encoding);
-};
-
-// This is the part where you do stuff!
-// override this function in implementation classes.
-// 'chunk' is an input chunk.
-//
-// Call `push(newChunk)` to pass along transformed output
-// to the readable side. You may call 'push' zero or more times.
-//
-// Call `cb(err)` when you are done with this chunk. If you pass
-// an error, then that'll put the hurt on the whole operation. If you
-// never call cb(), then you'll never get another chunk.
-Transform.prototype._transform = function(chunk, encoding, cb) {
- throw new Error('not implemented');
-};
-
-Transform.prototype._write = function(chunk, encoding, cb) {
- var ts = this._transformState;
- ts.writecb = cb;
- ts.writechunk = chunk;
- ts.writeencoding = encoding;
- if (!ts.transforming) {
- var rs = this._readableState;
- if (ts.needTransform ||
- rs.needReadable ||
- rs.length < rs.highWaterMark)
- this._read(rs.highWaterMark);
- }
-};
-
-// Doesn't matter what the args are here.
-// _transform does all the work.
-// That we got here means that the readable side wants more data.
-Transform.prototype._read = function(n) {
- var ts = this._transformState;
-
- if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
- ts.transforming = true;
- this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
- } else {
- // mark that we need a transform, so that any data that comes in
- // will get processed, now that we've asked for it.
- ts.needTransform = true;
- }
-};
-
-
-function done(stream, er) {
- if (er)
- return stream.emit('error', er);
-
- // if there's nothing in the write buffer, then that means
- // that nothing more will ever be provided
- var ws = stream._writableState;
- var rs = stream._readableState;
- var ts = stream._transformState;
-
- if (ws.length)
- throw new Error('calling transform done when ws.length != 0');
-
- if (ts.transforming)
- throw new Error('calling transform done when still transforming');
-
- return stream.push(null);
-}
-
-},{"./_stream_duplex":8,"core-util-is":13,"inherits":5}],12:[function(require,module,exports){
-(function (process){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// A bit simpler than readable streams.
-// Implement an async ._write(chunk, cb), and it'll handle all
-// the drain event emission and buffering.
-
-module.exports = Writable;
-
-/*<replacement>*/
-var Buffer = require('buffer').Buffer;
-/*</replacement>*/
-
-Writable.WritableState = WritableState;
-
-
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
-
-
-var Stream = require('stream');
-
-util.inherits(Writable, Stream);
-
-function WriteReq(chunk, encoding, cb) {
- this.chunk = chunk;
- this.encoding = encoding;
- this.callback = cb;
-}
-
-function WritableState(options, stream) {
- options = options || {};
-
- // the point at which write() starts returning false
- // Note: 0 is a valid value, means that we always return false if
- // the entire buffer is not flushed immediately on write()
- var hwm = options.highWaterMark;
- this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024;
-
- // object stream flag to indicate whether or not this stream
- // contains buffers or objects.
- this.objectMode = !!options.objectMode;
-
- // cast to ints.
- this.highWaterMark = ~~this.highWaterMark;
-
- this.needDrain = false;
- // at the start of calling end()
- this.ending = false;
- // when end() has been called, and returned
- this.ended = false;
- // when 'finish' is emitted
- this.finished = false;
-
- // should we decode strings into buffers before passing to _write?
- // this is here so that some node-core streams can optimize string
- // handling at a lower level.
- var noDecode = options.decodeStrings === false;
- this.decodeStrings = !noDecode;
-
- // Crypto is kind of old and crusty. Historically, its default string
- // encoding is 'binary' so we have to make this configurable.
- // Everything else in the universe uses 'utf8', though.
- this.defaultEncoding = options.defaultEncoding || 'utf8';
-
- // not an actual buffer we keep track of, but a measurement
- // of how much we're waiting to get pushed to some underlying
- // socket or file.
- this.length = 0;
-
- // a flag to see when we're in the middle of a write.
- this.writing = false;
-
- // a flag to be able to tell if the onwrite cb is called immediately,
- // or on a later tick. We set this to true at first, becuase any
- // actions that shouldn't happen until "later" should generally also
- // not happen before the first write call.
- this.sync = true;
-
- // a flag to know if we're processing previously buffered items, which
- // may call the _write() callback in the same tick, so that we don't
- // end up in an overlapped onwrite situation.
- this.bufferProcessing = false;
-
- // the callback that's passed to _write(chunk,cb)
- this.onwrite = function(er) {
- onwrite(stream, er);
- };
-
- // the callback that the user supplies to write(chunk,encoding,cb)
- this.writecb = null;
-
- // the amount that is being written when _write is called.
- this.writelen = 0;
-
- this.buffer = [];
-
- // True if the error was already emitted and should not be thrown again
- this.errorEmitted = false;
-}
-
-function Writable(options) {
- var Duplex = require('./_stream_duplex');
-
- // Writable ctor is applied to Duplexes, though they're not
- // instanceof Writable, they're instanceof Readable.
- if (!(this instanceof Writable) && !(this instanceof Duplex))
- return new Writable(options);
-
- this._writableState = new WritableState(options, this);
-
- // legacy.
- this.writable = true;
-
- Stream.call(this);
-}
-
-// Otherwise people can pipe Writable streams, which is just wrong.
-Writable.prototype.pipe = function() {
- this.emit('error', new Error('Cannot pipe. Not readable.'));
-};
-
-
-function writeAfterEnd(stream, state, cb) {
- var er = new Error('write after end');
- // TODO: defer error events consistently everywhere, not just the cb
- stream.emit('error', er);
- process.nextTick(function() {
- cb(er);
- });
-}
-
-// If we get something that is not a buffer, string, null, or undefined,
-// and we're not in objectMode, then that's an error.
-// Otherwise stream chunks are all considered to be of length=1, and the
-// watermarks determine how many objects to keep in the buffer, rather than
-// how many bytes or characters.
-function validChunk(stream, state, chunk, cb) {
- var valid = true;
- if (!Buffer.isBuffer(chunk) &&
- 'string' !== typeof chunk &&
- chunk !== null &&
- chunk !== undefined &&
- !state.objectMode) {
- var er = new TypeError('Invalid non-string/buffer chunk');
- stream.emit('error', er);
- process.nextTick(function() {
- cb(er);
- });
- valid = false;
- }
- return valid;
-}
-
-Writable.prototype.write = function(chunk, encoding, cb) {
- var state = this._writableState;
- var ret = false;
-
- if (typeof encoding === 'function') {
- cb = encoding;
- encoding = null;
- }
-
- if (Buffer.isBuffer(chunk))
- encoding = 'buffer';
- else if (!encoding)
- encoding = state.defaultEncoding;
-
- if (typeof cb !== 'function')
- cb = function() {};
-
- if (state.ended)
- writeAfterEnd(this, state, cb);
- else if (validChunk(this, state, chunk, cb))
- ret = writeOrBuffer(this, state, chunk, encoding, cb);
-
- return ret;
-};
-
-function decodeChunk(state, chunk, encoding) {
- if (!state.objectMode &&
- state.decodeStrings !== false &&
- typeof chunk === 'string') {
- chunk = new Buffer(chunk, encoding);
- }
- return chunk;
-}
-
-// if we're already writing something, then just put this
-// in the queue, and wait our turn. Otherwise, call _write
-// If we return false, then we need a drain event, so set that flag.
-function writeOrBuffer(stream, state, chunk, encoding, cb) {
- chunk = decodeChunk(state, chunk, encoding);
- if (Buffer.isBuffer(chunk))
- encoding = 'buffer';
- var len = state.objectMode ? 1 : chunk.length;
-
- state.length += len;
-
- var ret = state.length < state.highWaterMark;
- // we must ensure that previous needDrain will not be reset to false.
- if (!ret)
- state.needDrain = true;
-
- if (state.writing)
- state.buffer.push(new WriteReq(chunk, encoding, cb));
- else
- doWrite(stream, state, len, chunk, encoding, cb);
-
- return ret;
-}
-
-function doWrite(stream, state, len, chunk, encoding, cb) {
- state.writelen = len;
- state.writecb = cb;
- state.writing = true;
- state.sync = true;
- stream._write(chunk, encoding, state.onwrite);
- state.sync = false;
-}
-
-function onwriteError(stream, state, sync, er, cb) {
- if (sync)
- process.nextTick(function() {
- cb(er);
- });
- else
- cb(er);
-
- stream._writableState.errorEmitted = true;
- stream.emit('error', er);
-}
-
-function onwriteStateUpdate(state) {
- state.writing = false;
- state.writecb = null;
- state.length -= state.writelen;
- state.writelen = 0;
-}
-
-function onwrite(stream, er) {
- var state = stream._writableState;
- var sync = state.sync;
- var cb = state.writecb;
-
- onwriteStateUpdate(state);
-
- if (er)
- onwriteError(stream, state, sync, er, cb);
- else {
- // Check if we're actually ready to finish, but don't emit yet
- var finished = needFinish(stream, state);
-
- if (!finished && !state.bufferProcessing && state.buffer.length)
- clearBuffer(stream, state);
-
- if (sync) {
- process.nextTick(function() {
- afterWrite(stream, state, finished, cb);
- });
- } else {
- afterWrite(stream, state, finished, cb);
- }
- }
-}
-
-function afterWrite(stream, state, finished, cb) {
- if (!finished)
- onwriteDrain(stream, state);
- cb();
- if (finished)
- finishMaybe(stream, state);
-}
-
-// Must force callback to be called on nextTick, so that we don't
-// emit 'drain' before the write() consumer gets the 'false' return
-// value, and has a chance to attach a 'drain' listener.
-function onwriteDrain(stream, state) {
- if (state.length === 0 && state.needDrain) {
- state.needDrain = false;
- stream.emit('drain');
- }
-}
-
-
-// if there's something in the buffer waiting, then process it
-function clearBuffer(stream, state) {
- state.bufferProcessing = true;
-
- for (var c = 0; c < state.buffer.length; c++) {
- var entry = state.buffer[c];
- var chunk = entry.chunk;
- var encoding = entry.encoding;
- var cb = entry.callback;
- var len = state.objectMode ? 1 : chunk.length;
-
- doWrite(stream, state, len, chunk, encoding, cb);
-
- // if we didn't call the onwrite immediately, then
- // it means that we need to wait until it does.
- // also, that means that the chunk and cb are currently
- // being processed, so move the buffer counter past them.
- if (state.writing) {
- c++;
- break;
- }
- }
-
- state.bufferProcessing = false;
- if (c < state.buffer.length)
- state.buffer = state.buffer.slice(c);
- else
- state.buffer.length = 0;
-}
-
-Writable.prototype._write = function(chunk, encoding, cb) {
- cb(new Error('not implemented'));
-};
-
-Writable.prototype.end = function(chunk, encoding, cb) {
- var state = this._writableState;
-
- if (typeof chunk === 'function') {
- cb = chunk;
- chunk = null;
- encoding = null;
- } else if (typeof encoding === 'function') {
- cb = encoding;
- encoding = null;
- }
-
- if (typeof chunk !== 'undefined' && chunk !== null)
- this.write(chunk, encoding);
-
- // ignore unnecessary end() calls.
- if (!state.ending && !state.finished)
- endWritable(this, state, cb);
-};
-
-
-function needFinish(stream, state) {
- return (state.ending &&
- state.length === 0 &&
- !state.finished &&
- !state.writing);
-}
-
-function finishMaybe(stream, state) {
- var need = needFinish(stream, state);
- if (need) {
- state.finished = true;
- stream.emit('finish');
- }
- return need;
-}
-
-function endWritable(stream, state, cb) {
- state.ending = true;
- finishMaybe(stream, state);
- if (cb) {
- if (state.finished)
- process.nextTick(cb);
- else
- stream.once('finish', cb);
- }
- state.ended = true;
-}
-
-}).call(this,require("4dON6Z"))
-},{"./_stream_duplex":8,"4dON6Z":6,"buffer":1,"core-util-is":13,"inherits":5,"stream":20}],13:[function(require,module,exports){
-(function (Buffer){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// NOTE: These type checking functions intentionally don't use `instanceof`
-// because it is fragile and can be easily faked with `Object.create()`.
-function isArray(ar) {
- return Array.isArray(ar);
-}
-exports.isArray = isArray;
-
-function isBoolean(arg) {
- return typeof arg === 'boolean';
-}
-exports.isBoolean = isBoolean;
-
-function isNull(arg) {
- return arg === null;
-}
-exports.isNull = isNull;
-
-function isNullOrUndefined(arg) {
- return arg == null;
-}
-exports.isNullOrUndefined = isNullOrUndefined;
-
-function isNumber(arg) {
- return typeof arg === 'number';
-}
-exports.isNumber = isNumber;
-
-function isString(arg) {
- return typeof arg === 'string';
-}
-exports.isString = isString;
-
-function isSymbol(arg) {
- return typeof arg === 'symbol';
-}
-exports.isSymbol = isSymbol;
-
-function isUndefined(arg) {
- return arg === void 0;
-}
-exports.isUndefined = isUndefined;
-
-function isRegExp(re) {
- return isObject(re) && objectToString(re) === '[object RegExp]';
-}
-exports.isRegExp = isRegExp;
-
-function isObject(arg) {
- return typeof arg === 'object' && arg !== null;
-}
-exports.isObject = isObject;
-
-function isDate(d) {
- return isObject(d) && objectToString(d) === '[object Date]';
-}
-exports.isDate = isDate;
-
-function isError(e) {
- return isObject(e) &&
- (objectToString(e) === '[object Error]' || e instanceof Error);
-}
-exports.isError = isError;
-
-function isFunction(arg) {
- return typeof arg === 'function';
-}
-exports.isFunction = isFunction;
-
-function isPrimitive(arg) {
- return arg === null ||
- typeof arg === 'boolean' ||
- typeof arg === 'number' ||
- typeof arg === 'string' ||
- typeof arg === 'symbol' || // ES6 symbol
- typeof arg === 'undefined';
-}
-exports.isPrimitive = isPrimitive;
-
-function isBuffer(arg) {
- return Buffer.isBuffer(arg);
-}
-exports.isBuffer = isBuffer;
-
-function objectToString(o) {
- return Object.prototype.toString.call(o);
-}
-}).call(this,require("buffer").Buffer)
-},{"buffer":1}],14:[function(require,module,exports){
-module.exports = Array.isArray || function (arr) {
- return Object.prototype.toString.call(arr) == '[object Array]';
-};
-
-},{}],15:[function(require,module,exports){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var Buffer = require('buffer').Buffer;
-
-var isBufferEncoding = Buffer.isEncoding
- || function(encoding) {
- switch (encoding && encoding.toLowerCase()) {
- case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;
- default: return false;
- }
- }
-
-
-function assertEncoding(encoding) {
- if (encoding && !isBufferEncoding(encoding)) {
- throw new Error('Unknown encoding: ' + encoding);
- }
-}
-
-var StringDecoder = exports.StringDecoder = function(encoding) {
- this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
- assertEncoding(encoding);
- switch (this.encoding) {
- case 'utf8':
- // CESU-8 represents each of Surrogate Pair by 3-bytes
- this.surrogateSize = 3;
- break;
- case 'ucs2':
- case 'utf16le':
- // UTF-16 represents each of Surrogate Pair by 2-bytes
- this.surrogateSize = 2;
- this.detectIncompleteChar = utf16DetectIncompleteChar;
- break;
- case 'base64':
- // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
- this.surrogateSize = 3;
- this.detectIncompleteChar = base64DetectIncompleteChar;
- break;
- default:
- this.write = passThroughWrite;
- return;
- }
-
- this.charBuffer = new Buffer(6);
- this.charReceived = 0;
- this.charLength = 0;
-};
-
-
-StringDecoder.prototype.write = function(buffer) {
- var charStr = '';
- var offset = 0;
-
- // if our last write ended with an incomplete multibyte character
- while (this.charLength) {
- // determine how many remaining bytes this buffer has to offer for this char
- var i = (buffer.length >= this.charLength - this.charReceived) ?
- this.charLength - this.charReceived :
- buffer.length;
-
- // add the new bytes to the char buffer
- buffer.copy(this.charBuffer, this.charReceived, offset, i);
- this.charReceived += (i - offset);
- offset = i;
-
- if (this.charReceived < this.charLength) {
- // still not enough chars in this buffer? wait for more ...
- return '';
- }
-
- // get the character that was split
- charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
-
- // lead surrogate (D800-DBFF) is also the incomplete character
- var charCode = charStr.charCodeAt(charStr.length - 1);
- if (charCode >= 0xD800 && charCode <= 0xDBFF) {
- this.charLength += this.surrogateSize;
- charStr = '';
- continue;
- }
- this.charReceived = this.charLength = 0;
-
- // if there are no more bytes in this buffer, just emit our char
- if (i == buffer.length) return charStr;
-
- // otherwise cut off the characters end from the beginning of this buffer
- buffer = buffer.slice(i, buffer.length);
- break;
- }
-
- var lenIncomplete = this.detectIncompleteChar(buffer);
-
- var end = buffer.length;
- if (this.charLength) {
- // buffer the incomplete character bytes we got
- buffer.copy(this.charBuffer, 0, buffer.length - lenIncomplete, end);
- this.charReceived = lenIncomplete;
- end -= lenIncomplete;
- }
-
- charStr += buffer.toString(this.encoding, 0, end);
-
- var end = charStr.length - 1;
- var charCode = charStr.charCodeAt(end);
- // lead surrogate (D800-DBFF) is also the incomplete character
- if (charCode >= 0xD800 && charCode <= 0xDBFF) {
- var size = this.surrogateSize;
- this.charLength += size;
- this.charReceived += size;
- this.charBuffer.copy(this.charBuffer, size, 0, size);
- this.charBuffer.write(charStr.charAt(charStr.length - 1), this.encoding);
- return charStr.substring(0, end);
- }
-
- // or just emit the charStr
- return charStr;
-};
-
-StringDecoder.prototype.detectIncompleteChar = function(buffer) {
- // determine how many bytes we have to check at the end of this buffer
- var i = (buffer.length >= 3) ? 3 : buffer.length;
-
- // Figure out if one of the last i bytes of our buffer announces an
- // incomplete char.
- for (; i > 0; i--) {
- var c = buffer[buffer.length - i];
-
- // See http://en.wikipedia.org/wiki/UTF-8#Description
-
- // 110XXXXX
- if (i == 1 && c >> 5 == 0x06) {
- this.charLength = 2;
- break;
- }
-
- // 1110XXXX
- if (i <= 2 && c >> 4 == 0x0E) {
- this.charLength = 3;
- break;
- }
-
- // 11110XXX
- if (i <= 3 && c >> 3 == 0x1E) {
- this.charLength = 4;
- break;
- }
- }
-
- return i;
-};
-
-StringDecoder.prototype.end = function(buffer) {
- var res = '';
- if (buffer && buffer.length)
- res = this.write(buffer);
-
- if (this.charReceived) {
- var cr = this.charReceived;
- var buf = this.charBuffer;
- var enc = this.encoding;
- res += buf.slice(0, cr).toString(enc);
- }
-
- return res;
-};
-
-function passThroughWrite(buffer) {
- return buffer.toString(this.encoding);
-}
-
-function utf16DetectIncompleteChar(buffer) {
- var incomplete = this.charReceived = buffer.length % 2;
- this.charLength = incomplete ? 2 : 0;
- return incomplete;
-}
-
-function base64DetectIncompleteChar(buffer) {
- var incomplete = this.charReceived = buffer.length % 3;
- this.charLength = incomplete ? 3 : 0;
- return incomplete;
-}
-
-},{"buffer":1}],16:[function(require,module,exports){
-module.exports = require("./lib/_stream_passthrough.js")
-
-},{"./lib/_stream_passthrough.js":9}],17:[function(require,module,exports){
-exports = module.exports = require('./lib/_stream_readable.js');
-exports.Readable = exports;
-exports.Writable = require('./lib/_stream_writable.js');
-exports.Duplex = require('./lib/_stream_duplex.js');
-exports.Transform = require('./lib/_stream_transform.js');
-exports.PassThrough = require('./lib/_stream_passthrough.js');
-
-},{"./lib/_stream_duplex.js":8,"./lib/_stream_passthrough.js":9,"./lib/_stream_readable.js":10,"./lib/_stream_transform.js":11,"./lib/_stream_writable.js":12}],18:[function(require,module,exports){
-module.exports = require("./lib/_stream_transform.js")
-
-},{"./lib/_stream_transform.js":11}],19:[function(require,module,exports){
-module.exports = require("./lib/_stream_writable.js")
-
-},{"./lib/_stream_writable.js":12}],20:[function(require,module,exports){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-module.exports = Stream;
-
-var EE = require('events').EventEmitter;
-var inherits = require('inherits');
-
-inherits(Stream, EE);
-Stream.Readable = require('readable-stream/readable.js');
-Stream.Writable = require('readable-stream/writable.js');
-Stream.Duplex = require('readable-stream/duplex.js');
-Stream.Transform = require('readable-stream/transform.js');
-Stream.PassThrough = require('readable-stream/passthrough.js');
-
-// Backwards-compat with node 0.4.x
-Stream.Stream = Stream;
-
-
-
-// old-style streams. Note that the pipe method (the only relevant
-// part of this class) is overridden in the Readable class.
-
-function Stream() {
- EE.call(this);
-}
-
-Stream.prototype.pipe = function(dest, options) {
- var source = this;
-
- function ondata(chunk) {
- if (dest.writable) {
- if (false === dest.write(chunk) && source.pause) {
- source.pause();
- }
- }
- }
-
- source.on('data', ondata);
-
- function ondrain() {
- if (source.readable && source.resume) {
- source.resume();
- }
- }
-
- dest.on('drain', ondrain);
-
- // If the 'end' option is not supplied, dest.end() will be called when
- // source gets the 'end' or 'close' events. Only dest.end() once.
- if (!dest._isStdio && (!options || options.end !== false)) {
- source.on('end', onend);
- source.on('close', onclose);
- }
-
- var didOnEnd = false;
- function onend() {
- if (didOnEnd) return;
- didOnEnd = true;
-
- dest.end();
- }
-
-
- function onclose() {
- if (didOnEnd) return;
- didOnEnd = true;
-
- if (typeof dest.destroy === 'function') dest.destroy();
- }
-
- // don't leave dangling pipes when there are errors.
- function onerror(er) {
- cleanup();
- if (EE.listenerCount(this, 'error') === 0) {
- throw er; // Unhandled stream error in pipe.
- }
- }
-
- source.on('error', onerror);
- dest.on('error', onerror);
-
- // remove all the event listeners that were added.
- function cleanup() {
- source.removeListener('data', ondata);
- dest.removeListener('drain', ondrain);
-
- source.removeListener('end', onend);
- source.removeListener('close', onclose);
-
- source.removeListener('error', onerror);
- dest.removeListener('error', onerror);
-
- source.removeListener('end', cleanup);
- source.removeListener('close', cleanup);
-
- dest.removeListener('close', cleanup);
- }
-
- source.on('end', cleanup);
- source.on('close', cleanup);
-
- dest.on('close', cleanup);
-
- dest.emit('pipe', source);
-
- // Allow for unix-like usage: A.pipe(B).pipe(C)
- return dest;
-};
-
-},{"events":4,"inherits":5,"readable-stream/duplex.js":7,"readable-stream/passthrough.js":16,"readable-stream/readable.js":17,"readable-stream/transform.js":18,"readable-stream/writable.js":19}],21:[function(require,module,exports){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var Buffer = require('buffer').Buffer;
-
-function assertEncoding(encoding) {
- if (encoding && !Buffer.isEncoding(encoding)) {
- throw new Error('Unknown encoding: ' + encoding);
- }
-}
-
-var StringDecoder = exports.StringDecoder = function(encoding) {
- this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
- assertEncoding(encoding);
- switch (this.encoding) {
- case 'utf8':
- // CESU-8 represents each of Surrogate Pair by 3-bytes
- this.surrogateSize = 3;
- break;
- case 'ucs2':
- case 'utf16le':
- // UTF-16 represents each of Surrogate Pair by 2-bytes
- this.surrogateSize = 2;
- this.detectIncompleteChar = utf16DetectIncompleteChar;
- break;
- case 'base64':
- // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
- this.surrogateSize = 3;
- this.detectIncompleteChar = base64DetectIncompleteChar;
- break;
- default:
- this.write = passThroughWrite;
- return;
- }
-
- this.charBuffer = new Buffer(6);
- this.charReceived = 0;
- this.charLength = 0;
-};
-
-
-StringDecoder.prototype.write = function(buffer) {
- var charStr = '';
- var offset = 0;
-
- // if our last write ended with an incomplete multibyte character
- while (this.charLength) {
- // determine how many remaining bytes this buffer has to offer for this char
- var i = (buffer.length >= this.charLength - this.charReceived) ?
- this.charLength - this.charReceived :
- buffer.length;
-
- // add the new bytes to the char buffer
- buffer.copy(this.charBuffer, this.charReceived, offset, i);
- this.charReceived += (i - offset);
- offset = i;
-
- if (this.charReceived < this.charLength) {
- // still not enough chars in this buffer? wait for more ...
- return '';
- }
-
- // get the character that was split
- charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
-
- // lead surrogate (D800-DBFF) is also the incomplete character
- var charCode = charStr.charCodeAt(charStr.length - 1);
- if (charCode >= 0xD800 && charCode <= 0xDBFF) {
- this.charLength += this.surrogateSize;
- charStr = '';
- continue;
- }
- this.charReceived = this.charLength = 0;
-
- // if there are no more bytes in this buffer, just emit our char
- if (i == buffer.length) return charStr;
-
- // otherwise cut off the characters end from the beginning of this buffer
- buffer = buffer.slice(i, buffer.length);
- break;
- }
-
- var lenIncomplete = this.detectIncompleteChar(buffer);
-
- var end = buffer.length;
- if (this.charLength) {
- // buffer the incomplete character bytes we got
- buffer.copy(this.charBuffer, 0, buffer.length - lenIncomplete, end);
- this.charReceived = lenIncomplete;
- end -= lenIncomplete;
- }
-
- charStr += buffer.toString(this.encoding, 0, end);
-
- var end = charStr.length - 1;
- var charCode = charStr.charCodeAt(end);
- // lead surrogate (D800-DBFF) is also the incomplete character
- if (charCode >= 0xD800 && charCode <= 0xDBFF) {
- var size = this.surrogateSize;
- this.charLength += size;
- this.charReceived += size;
- this.charBuffer.copy(this.charBuffer, size, 0, size);
- this.charBuffer.write(charStr.charAt(charStr.length - 1), this.encoding);
- return charStr.substring(0, end);
- }
-
- // or just emit the charStr
- return charStr;
-};
-
-StringDecoder.prototype.detectIncompleteChar = function(buffer) {
- // determine how many bytes we have to check at the end of this buffer
- var i = (buffer.length >= 3) ? 3 : buffer.length;
-
- // Figure out if one of the last i bytes of our buffer announces an
- // incomplete char.
- for (; i > 0; i--) {
- var c = buffer[buffer.length - i];
-
- // See http://en.wikipedia.org/wiki/UTF-8#Description
-
- // 110XXXXX
- if (i == 1 && c >> 5 == 0x06) {
- this.charLength = 2;
- break;
- }
-
- // 1110XXXX
- if (i <= 2 && c >> 4 == 0x0E) {
- this.charLength = 3;
- break;
- }
-
- // 11110XXX
- if (i <= 3 && c >> 3 == 0x1E) {
- this.charLength = 4;
- break;
- }
- }
-
- return i;
-};
-
-StringDecoder.prototype.end = function(buffer) {
- var res = '';
- if (buffer && buffer.length)
- res = this.write(buffer);
-
- if (this.charReceived) {
- var cr = this.charReceived;
- var buf = this.charBuffer;
- var enc = this.encoding;
- res += buf.slice(0, cr).toString(enc);
- }
-
- return res;
-};
-
-function passThroughWrite(buffer) {
- return buffer.toString(this.encoding);
-}
-
-function utf16DetectIncompleteChar(buffer) {
- var incomplete = this.charReceived = buffer.length % 2;
- this.charLength = incomplete ? 2 : 0;
- return incomplete;
-}
-
-function base64DetectIncompleteChar(buffer) {
- var incomplete = this.charReceived = buffer.length % 3;
- this.charLength = incomplete ? 3 : 0;
- return incomplete;
-}
-
-},{"buffer":1}],"event-stream":[function(require,module,exports){
-module.exports=require('ut3LTG');
-},{}],"ut3LTG":[function(require,module,exports){
-(function (process,global){
-//filter will reemit the data if cb(err,pass) pass is truthy
-
-// reduce is more tricky
-// maybe we want to group the reductions or emit progress updates occasionally
-// the most basic reduce just emits one 'data' event after it has recieved 'end'
-
-var Stream = require('stream').Stream
- , es = exports
- , through = require('through')
- , from = require('from')
- , duplex = require('duplexer')
- , map = require('map-stream')
- , pause = require('pause-stream')
- , split = require('split')
- , pipeline = require('stream-combiner')
- , immediately = global.setImmediate || process.nextTick;
-
-es.Stream = Stream //re-export Stream from core
-es.through = through
-es.from = from
-es.duplex = duplex
-es.map = map
-es.pause = pause
-es.split = split
-es.pipeline = es.connect = es.pipe = pipeline
-// merge / concat
-//
-// combine multiple streams into a single stream.
-// will emit end only once
-
-es.concat = //actually this should be called concat
-es.merge = function (/*streams...*/) {
- var toMerge = [].slice.call(arguments)
- var stream = new Stream()
- stream.setMaxListeners(0) // allow adding more than 11 streams
- var endCount = 0
- stream.writable = stream.readable = true
-
- toMerge.forEach(function (e) {
- e.pipe(stream, {end: false})
- var ended = false
- e.on('end', function () {
- if(ended) return
- ended = true
- endCount ++
- if(endCount == toMerge.length)
- stream.emit('end')
- })
- })
- stream.write = function (data) {
- this.emit('data', data)
- }
- stream.destroy = function () {
- toMerge.forEach(function (e) {
- if(e.destroy) e.destroy()
- })
- }
- return stream
-}
-
-
-// writable stream, collects all events into an array
-// and calls back when 'end' occurs
-// mainly I'm using this to test the other functions
-
-es.writeArray = function (done) {
- if ('function' !== typeof done)
- throw new Error('function writeArray (done): done must be function')
-
- var a = new Stream ()
- , array = [], isDone = false
- a.write = function (l) {
- array.push(l)
- }
- a.end = function () {
- isDone = true
- done(null, array)
- }
- a.writable = true
- a.readable = false
- a.destroy = function () {
- a.writable = a.readable = false
- if(isDone) return
- done(new Error('destroyed before end'), array)
- }
- return a
-}
-
-//return a Stream that reads the properties of an object
-//respecting pause() and resume()
-
-es.readArray = function (array) {
- var stream = new Stream()
- , i = 0
- , paused = false
- , ended = false
-
- stream.readable = true
- stream.writable = false
-
- if(!Array.isArray(array))
- throw new Error('event-stream.read expects an array')
-
- stream.resume = function () {
- if(ended) return
- paused = false
- var l = array.length
- while(i < l && !paused && !ended) {
- stream.emit('data', array[i++])
- }
- if(i == l && !ended)
- ended = true, stream.readable = false, stream.emit('end')
- }
- process.nextTick(stream.resume)
- stream.pause = function () {
- paused = true
- }
- stream.destroy = function () {
- ended = true
- stream.emit('close')
- }
- return stream
-}
-
-//
-// readable (asyncFunction)
-// return a stream that calls an async function while the stream is not paused.
-//
-// the function must take: (count, callback) {...
-//
-
-es.readable =
-function (func, continueOnError) {
- var stream = new Stream()
- , i = 0
- , paused = false
- , ended = false
- , reading = false
-
- stream.readable = true
- stream.writable = false
-
- if('function' !== typeof func)
- throw new Error('event-stream.readable expects async function')
-
- stream.on('end', function () { ended = true })
-
- function get (err, data) {
-
- if(err) {
- stream.emit('error', err)
- if(!continueOnError) stream.emit('end')
- } else if (arguments.length > 1)
- stream.emit('data', data)
-
- immediately(function () {
- if(ended || paused || reading) return
- try {
- reading = true
- func.call(stream, i++, function () {
- reading = false
- get.apply(null, arguments)
- })
- } catch (err) {
- stream.emit('error', err)
- }
- })
- }
- stream.resume = function () {
- paused = false
- get()
- }
- process.nextTick(get)
- stream.pause = function () {
- paused = true
- }
- stream.destroy = function () {
- stream.emit('end')
- stream.emit('close')
- ended = true
- }
- return stream
-}
-
-
-//
-// map sync
-//
-
-es.mapSync = function (sync) {
- return es.through(function write(data) {
- var mappedData = sync(data)
- if (typeof mappedData !== 'undefined')
- this.emit('data', mappedData)
- })
-}
-
-//
-// log just print out what is coming through the stream, for debugging
-//
-
-es.log = function (name) {
- return es.through(function (data) {
- var args = [].slice.call(arguments)
- if(name) console.error(name, data)
- else console.error(data)
- this.emit('data', data)
- })
-}
-
-
-//
-// child -- pipe through a child process
-//
-
-es.child = function (child) {
-
- return es.duplex(child.stdin, child.stdout)
-
-}
-
-//
-// parse
-//
-// must be used after es.split() to ensure that each chunk represents a line
-// source.pipe(es.split()).pipe(es.parse())
-
-es.parse = function () {
- return es.through(function (data) {
- var obj
- try {
- if(data) //ignore empty lines
- obj = JSON.parse(data.toString())
- } catch (err) {
- return console.error(err, 'attemping to parse:', data)
- }
- //ignore lines that where only whitespace.
- if(obj !== undefined)
- this.emit('data', obj)
- })
-}
-//
-// stringify
-//
-
-es.stringify = function () {
- var Buffer = require('buffer').Buffer
- return es.mapSync(function (e){
- return JSON.stringify(Buffer.isBuffer(e) ? e.toString() : e) + '\n'
- })
-}
-
-//
-// replace a string within a stream.
-//
-// warn: just concatenates the string and then does str.split().join().
-// probably not optimal.
-// for smallish responses, who cares?
-// I need this for shadow-npm so it's only relatively small json files.
-
-es.replace = function (from, to) {
- return es.pipeline(es.split(from), es.join(to))
-}
-
-//
-// join chunks with a joiner. just like Array#join
-// also accepts a callback that is passed the chunks appended together
-// this is still supported for legacy reasons.
-//
-
-es.join = function (str) {
-
- //legacy api
- if('function' === typeof str)
- return es.wait(str)
-
- var first = true
- return es.through(function (data) {
- if(!first)
- this.emit('data', str)
- first = false
- this.emit('data', data)
- return true
- })
-}
-
-
-//
-// wait. callback when 'end' is emitted, with all chunks appended as string.
-//
-
-es.wait = function (callback) {
- var body = ''
- return es.through(function (data) { body += data },
- function () {
- this.emit('data', body)
- this.emit('end')
- if(callback) callback(null, body)
- })
-}
-
-es.pipeable = function () {
- throw new Error('[EVENT-STREAM] es.pipeable is deprecated')
-}
-
-}).call(this,require("4dON6Z"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{"4dON6Z":6,"buffer":1,"duplexer":24,"from":25,"map-stream":26,"pause-stream":27,"split":28,"stream":20,"stream-combiner":29,"through":30}],24:[function(require,module,exports){
-var Stream = require("stream")
-var writeMethods = ["write", "end", "destroy"]
-var readMethods = ["resume", "pause"]
-var readEvents = ["data", "close"]
-var slice = Array.prototype.slice
-
-module.exports = duplex
-
-function forEach (arr, fn) {
- if (arr.forEach) {
- return arr.forEach(fn)
- }
-
- for (var i = 0; i < arr.length; i++) {
- fn(arr[i], i)
- }
-}
-
-function duplex(writer, reader) {
- var stream = new Stream()
- var ended = false
-
- forEach(writeMethods, proxyWriter)
-
- forEach(readMethods, proxyReader)
-
- forEach(readEvents, proxyStream)
-
- reader.on("end", handleEnd)
-
- writer.on("drain", function() {
- stream.emit("drain")
- })
-
- writer.on("error", reemit)
- reader.on("error", reemit)
-
- stream.writable = writer.writable
- stream.readable = reader.readable
-
- return stream
-
- function proxyWriter(methodName) {
- stream[methodName] = method
-
- function method() {
- return writer[methodName].apply(writer, arguments)
- }
- }
-
- function proxyReader(methodName) {
- stream[methodName] = method
-
- function method() {
- stream.emit(methodName)
- var func = reader[methodName]
- if (func) {
- return func.apply(reader, arguments)
- }
- reader.emit(methodName)
- }
- }
-
- function proxyStream(methodName) {
- reader.on(methodName, reemit)
-
- function reemit() {
- var args = slice.call(arguments)
- args.unshift(methodName)
- stream.emit.apply(stream, args)
- }
- }
-
- function handleEnd() {
- if (ended) {
- return
- }
- ended = true
- var args = slice.call(arguments)
- args.unshift("end")
- stream.emit.apply(stream, args)
- }
-
- function reemit(err) {
- stream.emit("error", err)
- }
-}
-
-},{"stream":20}],25:[function(require,module,exports){
-(function (process){
-
-'use strict';
-
-var Stream = require('stream')
-
-// from
-//
-// a stream that reads from an source.
-// source may be an array, or a function.
-// from handles pause behaviour for you.
-
-module.exports =
-function from (source) {
- if(Array.isArray(source)) {
- source = source.slice()
- return from (function (i) {
- if(source.length)
- this.emit('data', source.shift())
- else
- this.emit('end')
- return true
- })
- }
- var s = new Stream(), i = 0
- s.ended = false
- s.started = false
- s.readable = true
- s.writable = false
- s.paused = false
- s.ended = false
- s.pause = function () {
- s.started = true
- s.paused = true
- }
- function next () {
- s.started = true
- if(s.ended) return
- while(!s.ended && !s.paused && source.call(s, i++, function () {
- if(!s.ended && !s.paused)
- next()
- }))
- ;
- }
- s.resume = function () {
- s.started = true
- s.paused = false
- next()
- }
- s.on('end', function () {
- s.ended = true
- s.readable = false
- process.nextTick(s.destroy)
- })
- s.destroy = function () {
- s.ended = true
- s.emit('close')
- }
- /*
- by default, the stream will start emitting at nextTick
- if you want, you can pause it, after pipeing.
- you can also resume before next tick, and that will also
- work.
- */
- process.nextTick(function () {
- if(!s.started) s.resume()
- })
- return s
-}
-
-}).call(this,require("4dON6Z"))
-},{"4dON6Z":6,"stream":20}],26:[function(require,module,exports){
-(function (process){
-//filter will reemit the data if cb(err,pass) pass is truthy
-
-// reduce is more tricky
-// maybe we want to group the reductions or emit progress updates occasionally
-// the most basic reduce just emits one 'data' event after it has recieved 'end'
-
-
-var Stream = require('stream').Stream
-
-
-//create an event stream and apply function to each .write
-//emitting each response as data
-//unless it's an empty callback
-
-module.exports = function (mapper, opts) {
-
- var stream = new Stream()
- , self = this
- , inputs = 0
- , outputs = 0
- , ended = false
- , paused = false
- , destroyed = false
- , lastWritten = 0
- , inNext = false
-
- this.opts = opts || {};
- var errorEventName = this.opts.failures ? 'failure' : 'error';
-
- // Items that are not ready to be written yet (because they would come out of
- // order) get stuck in a queue for later.
- var writeQueue = {}
-
- stream.writable = true
- stream.readable = true
-
- function queueData (data, number) {
- var nextToWrite = lastWritten + 1
-
- if (number === nextToWrite) {
- // If it's next, and its not undefined write it
- if (data !== undefined) {
- stream.emit.apply(stream, ['data', data])
- }
- lastWritten ++
- nextToWrite ++
- } else {
- // Otherwise queue it for later.
- writeQueue[number] = data
- }
-
- // If the next value is in the queue, write it
- if (writeQueue.hasOwnProperty(nextToWrite)) {
- var dataToWrite = writeQueue[nextToWrite]
- delete writeQueue[nextToWrite]
- return queueData(dataToWrite, nextToWrite)
- }
-
- outputs ++
- if(inputs === outputs) {
- if(paused) paused = false, stream.emit('drain') //written all the incoming events
- if(ended) end()
- }
- }
-
- function next (err, data, number) {
- if(destroyed) return
- inNext = true
-
- if (!err || self.opts.failures) {
- queueData(data, number)
- }
-
- if (err) {
- stream.emit.apply(stream, [ errorEventName, err ]);
- }
-
- inNext = false;
- }
-
- // Wrap the mapper function by calling its callback with the order number of
- // the item in the stream.
- function wrappedMapper (input, number, callback) {
- return mapper.call(null, input, function(err, data){
- callback(err, data, number)
- })
- }
-
- stream.write = function (data) {
- if(ended) throw new Error('map stream is not writable')
- inNext = false
- inputs ++
-
- try {
- //catch sync errors and handle them like async errors
- var written = wrappedMapper(data, inputs, next)
- paused = (written === false)
- return !paused
- } catch (err) {
- //if the callback has been called syncronously, and the error
- //has occured in an listener, throw it again.
- if(inNext)
- throw err
- next(err)
- return !paused
- }
- }
-
- function end (data) {
- //if end was called with args, write it,
- ended = true //write will emit 'end' if ended is true
- stream.writable = false
- if(data !== undefined) {
- return queueData(data, inputs)
- } else if (inputs == outputs) { //wait for processing
- stream.readable = false, stream.emit('end'), stream.destroy()
- }
- }
-
- stream.end = function (data) {
- if(ended) return
- end()
- }
-
- stream.destroy = function () {
- ended = destroyed = true
- stream.writable = stream.readable = paused = false
- process.nextTick(function () {
- stream.emit('close')
- })
- }
- stream.pause = function () {
- paused = true
- }
-
- stream.resume = function () {
- paused = false
- }
-
- return stream
-}
-
-
-
-
-
-}).call(this,require("4dON6Z"))
-},{"4dON6Z":6,"stream":20}],27:[function(require,module,exports){
-//through@2 handles this by default!
-module.exports = require('through')
-
-
-},{"through":30}],28:[function(require,module,exports){
-//filter will reemit the data if cb(err,pass) pass is truthy
-
-// reduce is more tricky
-// maybe we want to group the reductions or emit progress updates occasionally
-// the most basic reduce just emits one 'data' event after it has recieved 'end'
-
-
-var through = require('through')
-var Decoder = require('string_decoder').StringDecoder
-
-module.exports = split
-
-//TODO pass in a function to map across the lines.
-
-function split (matcher, mapper) {
- var decoder = new Decoder()
- var soFar = ''
- if('function' === typeof matcher)
- mapper = matcher, matcher = null
- if (!matcher)
- matcher = /\r?\n/
-
- function emit(stream, piece) {
- if(mapper) {
- try {
- piece = mapper(piece)
- }
- catch (err) {
- return stream.emit('error', err)
- }
- if('undefined' !== typeof piece)
- stream.queue(piece)
- }
- else
- stream.queue(piece)
- }
-
- function next (stream, buffer) {
- var pieces = (soFar + buffer).split(matcher)
- soFar = pieces.pop()
-
- for (var i = 0; i < pieces.length; i++) {
- var piece = pieces[i]
- emit(stream, piece)
- }
- }
-
- return through(function (b) {
- next(this, decoder.write(b))
- },
- function () {
- if(decoder.end)
- next(this, decoder.end())
- if(soFar != null)
- emit(this, soFar)
- this.queue(null)
- })
-}
-
-
-},{"string_decoder":21,"through":30}],29:[function(require,module,exports){
-var duplexer = require('duplexer')
-
-module.exports = function () {
-
- var streams = [].slice.call(arguments)
- , first = streams[0]
- , last = streams[streams.length - 1]
- , thepipe = duplexer(first, last)
-
- if(streams.length == 1)
- return streams[0]
- else if (!streams.length)
- throw new Error('connect called with empty args')
-
- //pipe all the streams together
-
- function recurse (streams) {
- if(streams.length < 2)
- return
- streams[0].pipe(streams[1])
- recurse(streams.slice(1))
- }
-
- recurse(streams)
-
- function onerror () {
- var args = [].slice.call(arguments)
- args.unshift('error')
- thepipe.emit.apply(thepipe, args)
- }
-
- //es.duplex already reemits the error from the first and last stream.
- //add a listener for the inner streams in the pipeline.
- for(var i = 1; i < streams.length - 1; i ++)
- streams[i].on('error', onerror)
-
- return thepipe
-}
-
-
-},{"duplexer":24}],30:[function(require,module,exports){
-(function (process){
-var Stream = require('stream')
-
-// through
-//
-// a stream that does nothing but re-emit the input.
-// useful for aggregating a series of changing but not ending streams into one stream)
-
-exports = module.exports = through
-through.through = through
-
-//create a readable writable stream.
-
-function through (write, end, opts) {
- write = write || function (data) { this.queue(data) }
- end = end || function () { this.queue(null) }
-
- var ended = false, destroyed = false, buffer = [], _ended = false
- var stream = new Stream()
- stream.readable = stream.writable = true
- stream.paused = false
-
-// stream.autoPause = !(opts && opts.autoPause === false)
- stream.autoDestroy = !(opts && opts.autoDestroy === false)
-
- stream.write = function (data) {
- write.call(this, data)
- return !stream.paused
- }
-
- function drain() {
- while(buffer.length && !stream.paused) {
- var data = buffer.shift()
- if(null === data)
- return stream.emit('end')
- else
- stream.emit('data', data)
- }
- }
-
- stream.queue = stream.push = function (data) {
-// console.error(ended)
- if(_ended) return stream
- if(data == null) _ended = true
- buffer.push(data)
- drain()
- return stream
- }
-
- //this will be registered as the first 'end' listener
- //must call destroy next tick, to make sure we're after any
- //stream piped from here.
- //this is only a problem if end is not emitted synchronously.
- //a nicer way to do this is to make sure this is the last listener for 'end'
-
- stream.on('end', function () {
- stream.readable = false
- if(!stream.writable && stream.autoDestroy)
- process.nextTick(function () {
- stream.destroy()
- })
- })
-
- function _end () {
- stream.writable = false
- end.call(stream)
- if(!stream.readable && stream.autoDestroy)
- stream.destroy()
- }
-
- stream.end = function (data) {
- if(ended) return
- ended = true
- if(arguments.length) stream.write(data)
- _end() // will emit or queue
- return stream
- }
-
- stream.destroy = function () {
- if(destroyed) return
- destroyed = true
- ended = true
- buffer.length = 0
- stream.writable = stream.readable = false
- stream.emit('close')
- return stream
- }
-
- stream.pause = function () {
- if(stream.paused) return
- stream.paused = true
- return stream
- }
-
- stream.resume = function () {
- if(stream.paused) {
- stream.paused = false
- stream.emit('resume')
- }
- drain()
- //may have become paused again,
- //as drain emits 'data'.
- if(!stream.paused)
- stream.emit('drain')
- return stream
- }
- return stream
-}
-
-
-}).call(this,require("4dON6Z"))
-},{"4dON6Z":6,"stream":20}]},{},[])
\ No newline at end of file
diff --git a/examples/pipetobrowser/browser/libs/vendor/nodejs/stream.js b/examples/pipetobrowser/browser/libs/vendor/nodejs/stream.js
deleted file mode 100644
index 890bedb..0000000
--- a/examples/pipetobrowser/browser/libs/vendor/nodejs/stream.js
+++ /dev/null
@@ -1,3930 +0,0 @@
-require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
-/*!
- * The buffer module from node.js, for the browser.
- *
- * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
- * @license MIT
- */
-
-var base64 = require('base64-js')
-var ieee754 = require('ieee754')
-
-exports.Buffer = Buffer
-exports.SlowBuffer = Buffer
-exports.INSPECT_MAX_BYTES = 50
-Buffer.poolSize = 8192
-
-/**
- * If `Buffer._useTypedArrays`:
- * === true Use Uint8Array implementation (fastest)
- * === false Use Object implementation (compatible down to IE6)
- */
-Buffer._useTypedArrays = (function () {
- // Detect if browser supports Typed Arrays. Supported browsers are IE 10+, Firefox 4+,
- // Chrome 7+, Safari 5.1+, Opera 11.6+, iOS 4.2+. If the browser does not support adding
- // properties to `Uint8Array` instances, then that's the same as no `Uint8Array` support
- // because we need to be able to add all the node Buffer API methods. This is an issue
- // in Firefox 4-29. Now fixed: https://bugzilla.mozilla.org/show_bug.cgi?id=695438
- try {
- var buf = new ArrayBuffer(0)
- var arr = new Uint8Array(buf)
- arr.foo = function () { return 42 }
- return 42 === arr.foo() &&
- typeof arr.subarray === 'function' // Chrome 9-10 lack `subarray`
- } catch (e) {
- return false
- }
-})()
-
-/**
- * Class: Buffer
- * =============
- *
- * The Buffer constructor returns instances of `Uint8Array` that are augmented
- * with function properties for all the node `Buffer` API functions. We use
- * `Uint8Array` so that square bracket notation works as expected -- it returns
- * a single octet.
- *
- * By augmenting the instances, we can avoid modifying the `Uint8Array`
- * prototype.
- */
-function Buffer (subject, encoding, noZero) {
- if (!(this instanceof Buffer))
- return new Buffer(subject, encoding, noZero)
-
- var type = typeof subject
-
- // Workaround: node's base64 implementation allows for non-padded strings
- // while base64-js does not.
- if (encoding === 'base64' && type === 'string') {
- subject = stringtrim(subject)
- while (subject.length % 4 !== 0) {
- subject = subject + '='
- }
- }
-
- // Find the length
- var length
- if (type === 'number')
- length = coerce(subject)
- else if (type === 'string')
- length = Buffer.byteLength(subject, encoding)
- else if (type === 'object')
- length = coerce(subject.length) // assume that object is array-like
- else
- throw new Error('First argument needs to be a number, array or string.')
-
- var buf
- if (Buffer._useTypedArrays) {
- // Preferred: Return an augmented `Uint8Array` instance for best performance
- buf = Buffer._augment(new Uint8Array(length))
- } else {
- // Fallback: Return THIS instance of Buffer (created by `new`)
- buf = this
- buf.length = length
- buf._isBuffer = true
- }
-
- var i
- if (Buffer._useTypedArrays && typeof subject.byteLength === 'number') {
- // Speed optimization -- use set if we're copying from a typed array
- buf._set(subject)
- } else if (isArrayish(subject)) {
- // Treat array-ish objects as a byte array
- if (Buffer.isBuffer(subject)) {
- for (i = 0; i < length; i++)
- buf[i] = subject.readUInt8(i)
- } else {
- for (i = 0; i < length; i++)
- buf[i] = ((subject[i] % 256) + 256) % 256
- }
- } else if (type === 'string') {
- buf.write(subject, 0, encoding)
- } else if (type === 'number' && !Buffer._useTypedArrays && !noZero) {
- for (i = 0; i < length; i++) {
- buf[i] = 0
- }
- }
-
- return buf
-}
-
-// STATIC METHODS
-// ==============
-
-Buffer.isEncoding = function (encoding) {
- switch (String(encoding).toLowerCase()) {
- case 'hex':
- case 'utf8':
- case 'utf-8':
- case 'ascii':
- case 'binary':
- case 'base64':
- case 'raw':
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return true
- default:
- return false
- }
-}
-
-Buffer.isBuffer = function (b) {
- return !!(b !== null && b !== undefined && b._isBuffer)
-}
-
-Buffer.byteLength = function (str, encoding) {
- var ret
- str = str.toString()
- switch (encoding || 'utf8') {
- case 'hex':
- ret = str.length / 2
- break
- case 'utf8':
- case 'utf-8':
- ret = utf8ToBytes(str).length
- break
- case 'ascii':
- case 'binary':
- case 'raw':
- ret = str.length
- break
- case 'base64':
- ret = base64ToBytes(str).length
- break
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- ret = str.length * 2
- break
- default:
- throw new Error('Unknown encoding')
- }
- return ret
-}
-
-Buffer.concat = function (list, totalLength) {
- assert(isArray(list), 'Usage: Buffer.concat(list[, length])')
-
- if (list.length === 0) {
- return new Buffer(0)
- } else if (list.length === 1) {
- return list[0]
- }
-
- var i
- if (totalLength === undefined) {
- totalLength = 0
- for (i = 0; i < list.length; i++) {
- totalLength += list[i].length
- }
- }
-
- var buf = new Buffer(totalLength)
- var pos = 0
- for (i = 0; i < list.length; i++) {
- var item = list[i]
- item.copy(buf, pos)
- pos += item.length
- }
- return buf
-}
-
-Buffer.compare = function (a, b) {
- assert(Buffer.isBuffer(a) && Buffer.isBuffer(b), 'Arguments must be Buffers')
- var x = a.length
- var y = b.length
- for (var i = 0, len = Math.min(x, y); i < len && a[i] === b[i]; i++) {}
- if (i !== len) {
- x = a[i]
- y = b[i]
- }
- if (x < y) {
- return -1
- }
- if (y < x) {
- return 1
- }
- return 0
-}
-
-// BUFFER INSTANCE METHODS
-// =======================
-
-function hexWrite (buf, string, offset, length) {
- offset = Number(offset) || 0
- var remaining = buf.length - offset
- if (!length) {
- length = remaining
- } else {
- length = Number(length)
- if (length > remaining) {
- length = remaining
- }
- }
-
- // must be an even number of digits
- var strLen = string.length
- assert(strLen % 2 === 0, 'Invalid hex string')
-
- if (length > strLen / 2) {
- length = strLen / 2
- }
- for (var i = 0; i < length; i++) {
- var byte = parseInt(string.substr(i * 2, 2), 16)
- assert(!isNaN(byte), 'Invalid hex string')
- buf[offset + i] = byte
- }
- return i
-}
-
-function utf8Write (buf, string, offset, length) {
- var charsWritten = blitBuffer(utf8ToBytes(string), buf, offset, length)
- return charsWritten
-}
-
-function asciiWrite (buf, string, offset, length) {
- var charsWritten = blitBuffer(asciiToBytes(string), buf, offset, length)
- return charsWritten
-}
-
-function binaryWrite (buf, string, offset, length) {
- return asciiWrite(buf, string, offset, length)
-}
-
-function base64Write (buf, string, offset, length) {
- var charsWritten = blitBuffer(base64ToBytes(string), buf, offset, length)
- return charsWritten
-}
-
-function utf16leWrite (buf, string, offset, length) {
- var charsWritten = blitBuffer(utf16leToBytes(string), buf, offset, length)
- return charsWritten
-}
-
-Buffer.prototype.write = function (string, offset, length, encoding) {
- // Support both (string, offset, length, encoding)
- // and the legacy (string, encoding, offset, length)
- if (isFinite(offset)) {
- if (!isFinite(length)) {
- encoding = length
- length = undefined
- }
- } else { // legacy
- var swap = encoding
- encoding = offset
- offset = length
- length = swap
- }
-
- offset = Number(offset) || 0
- var remaining = this.length - offset
- if (!length) {
- length = remaining
- } else {
- length = Number(length)
- if (length > remaining) {
- length = remaining
- }
- }
- encoding = String(encoding || 'utf8').toLowerCase()
-
- var ret
- switch (encoding) {
- case 'hex':
- ret = hexWrite(this, string, offset, length)
- break
- case 'utf8':
- case 'utf-8':
- ret = utf8Write(this, string, offset, length)
- break
- case 'ascii':
- ret = asciiWrite(this, string, offset, length)
- break
- case 'binary':
- ret = binaryWrite(this, string, offset, length)
- break
- case 'base64':
- ret = base64Write(this, string, offset, length)
- break
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- ret = utf16leWrite(this, string, offset, length)
- break
- default:
- throw new Error('Unknown encoding')
- }
- return ret
-}
-
-Buffer.prototype.toString = function (encoding, start, end) {
- var self = this
-
- encoding = String(encoding || 'utf8').toLowerCase()
- start = Number(start) || 0
- end = (end === undefined) ? self.length : Number(end)
-
- // Fastpath empty strings
- if (end === start)
- return ''
-
- var ret
- switch (encoding) {
- case 'hex':
- ret = hexSlice(self, start, end)
- break
- case 'utf8':
- case 'utf-8':
- ret = utf8Slice(self, start, end)
- break
- case 'ascii':
- ret = asciiSlice(self, start, end)
- break
- case 'binary':
- ret = binarySlice(self, start, end)
- break
- case 'base64':
- ret = base64Slice(self, start, end)
- break
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- ret = utf16leSlice(self, start, end)
- break
- default:
- throw new Error('Unknown encoding')
- }
- return ret
-}
-
-Buffer.prototype.toJSON = function () {
- return {
- type: 'Buffer',
- data: Array.prototype.slice.call(this._arr || this, 0)
- }
-}
-
-Buffer.prototype.equals = function (b) {
- assert(Buffer.isBuffer(b), 'Argument must be a Buffer')
- return Buffer.compare(this, b) === 0
-}
-
-Buffer.prototype.compare = function (b) {
- assert(Buffer.isBuffer(b), 'Argument must be a Buffer')
- return Buffer.compare(this, b)
-}
-
-// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
-Buffer.prototype.copy = function (target, target_start, start, end) {
- var source = this
-
- if (!start) start = 0
- if (!end && end !== 0) end = this.length
- if (!target_start) target_start = 0
-
- // Copy 0 bytes; we're done
- if (end === start) return
- if (target.length === 0 || source.length === 0) return
-
- // Fatal error conditions
- assert(end >= start, 'sourceEnd < sourceStart')
- assert(target_start >= 0 && target_start < target.length,
- 'targetStart out of bounds')
- assert(start >= 0 && start < source.length, 'sourceStart out of bounds')
- assert(end >= 0 && end <= source.length, 'sourceEnd out of bounds')
-
- // Are we oob?
- if (end > this.length)
- end = this.length
- if (target.length - target_start < end - start)
- end = target.length - target_start + start
-
- var len = end - start
-
- if (len < 100 || !Buffer._useTypedArrays) {
- for (var i = 0; i < len; i++) {
- target[i + target_start] = this[i + start]
- }
- } else {
- target._set(this.subarray(start, start + len), target_start)
- }
-}
-
-function base64Slice (buf, start, end) {
- if (start === 0 && end === buf.length) {
- return base64.fromByteArray(buf)
- } else {
- return base64.fromByteArray(buf.slice(start, end))
- }
-}
-
-function utf8Slice (buf, start, end) {
- var res = ''
- var tmp = ''
- end = Math.min(buf.length, end)
-
- for (var i = start; i < end; i++) {
- if (buf[i] <= 0x7F) {
- res += decodeUtf8Char(tmp) + String.fromCharCode(buf[i])
- tmp = ''
- } else {
- tmp += '%' + buf[i].toString(16)
- }
- }
-
- return res + decodeUtf8Char(tmp)
-}
-
-function asciiSlice (buf, start, end) {
- var ret = ''
- end = Math.min(buf.length, end)
-
- for (var i = start; i < end; i++) {
- ret += String.fromCharCode(buf[i])
- }
- return ret
-}
-
-function binarySlice (buf, start, end) {
- return asciiSlice(buf, start, end)
-}
-
-function hexSlice (buf, start, end) {
- var len = buf.length
-
- if (!start || start < 0) start = 0
- if (!end || end < 0 || end > len) end = len
-
- var out = ''
- for (var i = start; i < end; i++) {
- out += toHex(buf[i])
- }
- return out
-}
-
-function utf16leSlice (buf, start, end) {
- var bytes = buf.slice(start, end)
- var res = ''
- for (var i = 0; i < bytes.length; i += 2) {
- res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
- }
- return res
-}
-
-Buffer.prototype.slice = function (start, end) {
- var len = this.length
- start = clamp(start, len, 0)
- end = clamp(end, len, len)
-
- if (Buffer._useTypedArrays) {
- return Buffer._augment(this.subarray(start, end))
- } else {
- var sliceLen = end - start
- var newBuf = new Buffer(sliceLen, undefined, true)
- for (var i = 0; i < sliceLen; i++) {
- newBuf[i] = this[i + start]
- }
- return newBuf
- }
-}
-
-// `get` will be removed in Node 0.13+
-Buffer.prototype.get = function (offset) {
- console.log('.get() is deprecated. Access using array indexes instead.')
- return this.readUInt8(offset)
-}
-
-// `set` will be removed in Node 0.13+
-Buffer.prototype.set = function (v, offset) {
- console.log('.set() is deprecated. Access using array indexes instead.')
- return this.writeUInt8(v, offset)
-}
-
-Buffer.prototype.readUInt8 = function (offset, noAssert) {
- if (!noAssert) {
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset < this.length, 'Trying to read beyond buffer length')
- }
-
- if (offset >= this.length)
- return
-
- return this[offset]
-}
-
-function readUInt16 (buf, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 1 < buf.length, 'Trying to read beyond buffer length')
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- var val
- if (littleEndian) {
- val = buf[offset]
- if (offset + 1 < len)
- val |= buf[offset + 1] << 8
- } else {
- val = buf[offset] << 8
- if (offset + 1 < len)
- val |= buf[offset + 1]
- }
- return val
-}
-
-Buffer.prototype.readUInt16LE = function (offset, noAssert) {
- return readUInt16(this, offset, true, noAssert)
-}
-
-Buffer.prototype.readUInt16BE = function (offset, noAssert) {
- return readUInt16(this, offset, false, noAssert)
-}
-
-function readUInt32 (buf, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 3 < buf.length, 'Trying to read beyond buffer length')
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- var val
- if (littleEndian) {
- if (offset + 2 < len)
- val = buf[offset + 2] << 16
- if (offset + 1 < len)
- val |= buf[offset + 1] << 8
- val |= buf[offset]
- if (offset + 3 < len)
- val = val + (buf[offset + 3] << 24 >>> 0)
- } else {
- if (offset + 1 < len)
- val = buf[offset + 1] << 16
- if (offset + 2 < len)
- val |= buf[offset + 2] << 8
- if (offset + 3 < len)
- val |= buf[offset + 3]
- val = val + (buf[offset] << 24 >>> 0)
- }
- return val
-}
-
-Buffer.prototype.readUInt32LE = function (offset, noAssert) {
- return readUInt32(this, offset, true, noAssert)
-}
-
-Buffer.prototype.readUInt32BE = function (offset, noAssert) {
- return readUInt32(this, offset, false, noAssert)
-}
-
-Buffer.prototype.readInt8 = function (offset, noAssert) {
- if (!noAssert) {
- assert(offset !== undefined && offset !== null,
- 'missing offset')
- assert(offset < this.length, 'Trying to read beyond buffer length')
- }
-
- if (offset >= this.length)
- return
-
- var neg = this[offset] & 0x80
- if (neg)
- return (0xff - this[offset] + 1) * -1
- else
- return this[offset]
-}
-
-function readInt16 (buf, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 1 < buf.length, 'Trying to read beyond buffer length')
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- var val = readUInt16(buf, offset, littleEndian, true)
- var neg = val & 0x8000
- if (neg)
- return (0xffff - val + 1) * -1
- else
- return val
-}
-
-Buffer.prototype.readInt16LE = function (offset, noAssert) {
- return readInt16(this, offset, true, noAssert)
-}
-
-Buffer.prototype.readInt16BE = function (offset, noAssert) {
- return readInt16(this, offset, false, noAssert)
-}
-
-function readInt32 (buf, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 3 < buf.length, 'Trying to read beyond buffer length')
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- var val = readUInt32(buf, offset, littleEndian, true)
- var neg = val & 0x80000000
- if (neg)
- return (0xffffffff - val + 1) * -1
- else
- return val
-}
-
-Buffer.prototype.readInt32LE = function (offset, noAssert) {
- return readInt32(this, offset, true, noAssert)
-}
-
-Buffer.prototype.readInt32BE = function (offset, noAssert) {
- return readInt32(this, offset, false, noAssert)
-}
-
-function readFloat (buf, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset + 3 < buf.length, 'Trying to read beyond buffer length')
- }
-
- return ieee754.read(buf, offset, littleEndian, 23, 4)
-}
-
-Buffer.prototype.readFloatLE = function (offset, noAssert) {
- return readFloat(this, offset, true, noAssert)
-}
-
-Buffer.prototype.readFloatBE = function (offset, noAssert) {
- return readFloat(this, offset, false, noAssert)
-}
-
-function readDouble (buf, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset + 7 < buf.length, 'Trying to read beyond buffer length')
- }
-
- return ieee754.read(buf, offset, littleEndian, 52, 8)
-}
-
-Buffer.prototype.readDoubleLE = function (offset, noAssert) {
- return readDouble(this, offset, true, noAssert)
-}
-
-Buffer.prototype.readDoubleBE = function (offset, noAssert) {
- return readDouble(this, offset, false, noAssert)
-}
-
-Buffer.prototype.writeUInt8 = function (value, offset, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset < this.length, 'trying to write beyond buffer length')
- verifuint(value, 0xff)
- }
-
- if (offset >= this.length) return
-
- this[offset] = value
- return offset + 1
-}
-
-function writeUInt16 (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 1 < buf.length, 'trying to write beyond buffer length')
- verifuint(value, 0xffff)
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- for (var i = 0, j = Math.min(len - offset, 2); i < j; i++) {
- buf[offset + i] =
- (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
- (littleEndian ? i : 1 - i) * 8
- }
- return offset + 2
-}
-
-Buffer.prototype.writeUInt16LE = function (value, offset, noAssert) {
- return writeUInt16(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeUInt16BE = function (value, offset, noAssert) {
- return writeUInt16(this, value, offset, false, noAssert)
-}
-
-function writeUInt32 (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 3 < buf.length, 'trying to write beyond buffer length')
- verifuint(value, 0xffffffff)
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- for (var i = 0, j = Math.min(len - offset, 4); i < j; i++) {
- buf[offset + i] =
- (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
- }
- return offset + 4
-}
-
-Buffer.prototype.writeUInt32LE = function (value, offset, noAssert) {
- return writeUInt32(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeUInt32BE = function (value, offset, noAssert) {
- return writeUInt32(this, value, offset, false, noAssert)
-}
-
-Buffer.prototype.writeInt8 = function (value, offset, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset < this.length, 'Trying to write beyond buffer length')
- verifsint(value, 0x7f, -0x80)
- }
-
- if (offset >= this.length)
- return
-
- if (value >= 0)
- this.writeUInt8(value, offset, noAssert)
- else
- this.writeUInt8(0xff + value + 1, offset, noAssert)
- return offset + 1
-}
-
-function writeInt16 (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 1 < buf.length, 'Trying to write beyond buffer length')
- verifsint(value, 0x7fff, -0x8000)
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- if (value >= 0)
- writeUInt16(buf, value, offset, littleEndian, noAssert)
- else
- writeUInt16(buf, 0xffff + value + 1, offset, littleEndian, noAssert)
- return offset + 2
-}
-
-Buffer.prototype.writeInt16LE = function (value, offset, noAssert) {
- return writeInt16(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeInt16BE = function (value, offset, noAssert) {
- return writeInt16(this, value, offset, false, noAssert)
-}
-
-function writeInt32 (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 3 < buf.length, 'Trying to write beyond buffer length')
- verifsint(value, 0x7fffffff, -0x80000000)
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- if (value >= 0)
- writeUInt32(buf, value, offset, littleEndian, noAssert)
- else
- writeUInt32(buf, 0xffffffff + value + 1, offset, littleEndian, noAssert)
- return offset + 4
-}
-
-Buffer.prototype.writeInt32LE = function (value, offset, noAssert) {
- return writeInt32(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeInt32BE = function (value, offset, noAssert) {
- return writeInt32(this, value, offset, false, noAssert)
-}
-
-function writeFloat (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 3 < buf.length, 'Trying to write beyond buffer length')
- verifIEEE754(value, 3.4028234663852886e+38, -3.4028234663852886e+38)
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- ieee754.write(buf, value, offset, littleEndian, 23, 4)
- return offset + 4
-}
-
-Buffer.prototype.writeFloatLE = function (value, offset, noAssert) {
- return writeFloat(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeFloatBE = function (value, offset, noAssert) {
- return writeFloat(this, value, offset, false, noAssert)
-}
-
-function writeDouble (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- assert(value !== undefined && value !== null, 'missing value')
- assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
- assert(offset !== undefined && offset !== null, 'missing offset')
- assert(offset + 7 < buf.length,
- 'Trying to write beyond buffer length')
- verifIEEE754(value, 1.7976931348623157E+308, -1.7976931348623157E+308)
- }
-
- var len = buf.length
- if (offset >= len)
- return
-
- ieee754.write(buf, value, offset, littleEndian, 52, 8)
- return offset + 8
-}
-
-Buffer.prototype.writeDoubleLE = function (value, offset, noAssert) {
- return writeDouble(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeDoubleBE = function (value, offset, noAssert) {
- return writeDouble(this, value, offset, false, noAssert)
-}
-
-// fill(value, start=0, end=buffer.length)
-Buffer.prototype.fill = function (value, start, end) {
- if (!value) value = 0
- if (!start) start = 0
- if (!end) end = this.length
-
- assert(end >= start, 'end < start')
-
- // Fill 0 bytes; we're done
- if (end === start) return
- if (this.length === 0) return
-
- assert(start >= 0 && start < this.length, 'start out of bounds')
- assert(end >= 0 && end <= this.length, 'end out of bounds')
-
- var i
- if (typeof value === 'number') {
- for (i = start; i < end; i++) {
- this[i] = value
- }
- } else {
- var bytes = utf8ToBytes(value.toString())
- var len = bytes.length
- for (i = start; i < end; i++) {
- this[i] = bytes[i % len]
- }
- }
-
- return this
-}
-
-Buffer.prototype.inspect = function () {
- var out = []
- var len = this.length
- for (var i = 0; i < len; i++) {
- out[i] = toHex(this[i])
- if (i === exports.INSPECT_MAX_BYTES) {
- out[i + 1] = '...'
- break
- }
- }
- return '<Buffer ' + out.join(' ') + '>'
-}
-
-/**
- * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.
- * Added in Node 0.12. Only available in browsers that support ArrayBuffer.
- */
-Buffer.prototype.toArrayBuffer = function () {
- if (typeof Uint8Array !== 'undefined') {
- if (Buffer._useTypedArrays) {
- return (new Buffer(this)).buffer
- } else {
- var buf = new Uint8Array(this.length)
- for (var i = 0, len = buf.length; i < len; i += 1) {
- buf[i] = this[i]
- }
- return buf.buffer
- }
- } else {
- throw new Error('Buffer.toArrayBuffer not supported in this browser')
- }
-}
-
-// HELPER FUNCTIONS
-// ================
-
-var BP = Buffer.prototype
-
-/**
- * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods
- */
-Buffer._augment = function (arr) {
- arr._isBuffer = true
-
- // save reference to original Uint8Array get/set methods before overwriting
- arr._get = arr.get
- arr._set = arr.set
-
- // deprecated, will be removed in node 0.13+
- arr.get = BP.get
- arr.set = BP.set
-
- arr.write = BP.write
- arr.toString = BP.toString
- arr.toLocaleString = BP.toString
- arr.toJSON = BP.toJSON
- arr.equals = BP.equals
- arr.compare = BP.compare
- arr.copy = BP.copy
- arr.slice = BP.slice
- arr.readUInt8 = BP.readUInt8
- arr.readUInt16LE = BP.readUInt16LE
- arr.readUInt16BE = BP.readUInt16BE
- arr.readUInt32LE = BP.readUInt32LE
- arr.readUInt32BE = BP.readUInt32BE
- arr.readInt8 = BP.readInt8
- arr.readInt16LE = BP.readInt16LE
- arr.readInt16BE = BP.readInt16BE
- arr.readInt32LE = BP.readInt32LE
- arr.readInt32BE = BP.readInt32BE
- arr.readFloatLE = BP.readFloatLE
- arr.readFloatBE = BP.readFloatBE
- arr.readDoubleLE = BP.readDoubleLE
- arr.readDoubleBE = BP.readDoubleBE
- arr.writeUInt8 = BP.writeUInt8
- arr.writeUInt16LE = BP.writeUInt16LE
- arr.writeUInt16BE = BP.writeUInt16BE
- arr.writeUInt32LE = BP.writeUInt32LE
- arr.writeUInt32BE = BP.writeUInt32BE
- arr.writeInt8 = BP.writeInt8
- arr.writeInt16LE = BP.writeInt16LE
- arr.writeInt16BE = BP.writeInt16BE
- arr.writeInt32LE = BP.writeInt32LE
- arr.writeInt32BE = BP.writeInt32BE
- arr.writeFloatLE = BP.writeFloatLE
- arr.writeFloatBE = BP.writeFloatBE
- arr.writeDoubleLE = BP.writeDoubleLE
- arr.writeDoubleBE = BP.writeDoubleBE
- arr.fill = BP.fill
- arr.inspect = BP.inspect
- arr.toArrayBuffer = BP.toArrayBuffer
-
- return arr
-}
-
-function stringtrim (str) {
- if (str.trim) return str.trim()
- return str.replace(/^\s+|\s+$/g, '')
-}
-
-// slice(start, end)
-function clamp (index, len, defaultValue) {
- if (typeof index !== 'number') return defaultValue
- index = ~~index; // Coerce to integer.
- if (index >= len) return len
- if (index >= 0) return index
- index += len
- if (index >= 0) return index
- return 0
-}
-
-function coerce (length) {
- // Coerce length to a number (possibly NaN), round up
- // in case it's fractional (e.g. 123.456) then do a
- // double negate to coerce a NaN to 0. Easy, right?
- length = ~~Math.ceil(+length)
- return length < 0 ? 0 : length
-}
-
-function isArray (subject) {
- return (Array.isArray || function (subject) {
- return Object.prototype.toString.call(subject) === '[object Array]'
- })(subject)
-}
-
-function isArrayish (subject) {
- return isArray(subject) || Buffer.isBuffer(subject) ||
- subject && typeof subject === 'object' &&
- typeof subject.length === 'number'
-}
-
-function toHex (n) {
- if (n < 16) return '0' + n.toString(16)
- return n.toString(16)
-}
-
-function utf8ToBytes (str) {
- var byteArray = []
- for (var i = 0; i < str.length; i++) {
- var b = str.charCodeAt(i)
- if (b <= 0x7F) {
- byteArray.push(b)
- } else {
- var start = i
- if (b >= 0xD800 && b <= 0xDFFF) i++
- var h = encodeURIComponent(str.slice(start, i+1)).substr(1).split('%')
- for (var j = 0; j < h.length; j++) {
- byteArray.push(parseInt(h[j], 16))
- }
- }
- }
- return byteArray
-}
-
-function asciiToBytes (str) {
- var byteArray = []
- for (var i = 0; i < str.length; i++) {
- // Node's code seems to be doing this and not & 0x7F..
- byteArray.push(str.charCodeAt(i) & 0xFF)
- }
- return byteArray
-}
-
-function utf16leToBytes (str) {
- var c, hi, lo
- var byteArray = []
- for (var i = 0; i < str.length; i++) {
- c = str.charCodeAt(i)
- hi = c >> 8
- lo = c % 256
- byteArray.push(lo)
- byteArray.push(hi)
- }
-
- return byteArray
-}
-
-function base64ToBytes (str) {
- return base64.toByteArray(str)
-}
-
-function blitBuffer (src, dst, offset, length) {
- for (var i = 0; i < length; i++) {
- if ((i + offset >= dst.length) || (i >= src.length))
- break
- dst[i + offset] = src[i]
- }
- return i
-}
-
-function decodeUtf8Char (str) {
- try {
- return decodeURIComponent(str)
- } catch (err) {
- return String.fromCharCode(0xFFFD) // UTF 8 invalid char
- }
-}
-
-/*
- * We have to make sure that the value is a valid integer. This means that it
- * is non-negative. It has no fractional component and that it does not
- * exceed the maximum allowed value.
- */
-function verifuint (value, max) {
- assert(typeof value === 'number', 'cannot write a non-number as a number')
- assert(value >= 0, 'specified a negative value for writing an unsigned value')
- assert(value <= max, 'value is larger than maximum value for type')
- assert(Math.floor(value) === value, 'value has a fractional component')
-}
-
-function verifsint (value, max, min) {
- assert(typeof value === 'number', 'cannot write a non-number as a number')
- assert(value <= max, 'value larger than maximum allowed value')
- assert(value >= min, 'value smaller than minimum allowed value')
- assert(Math.floor(value) === value, 'value has a fractional component')
-}
-
-function verifIEEE754 (value, max, min) {
- assert(typeof value === 'number', 'cannot write a non-number as a number')
- assert(value <= max, 'value larger than maximum allowed value')
- assert(value >= min, 'value smaller than minimum allowed value')
-}
-
-function assert (test, message) {
- if (!test) throw new Error(message || 'Failed assertion')
-}
-
-},{"base64-js":2,"ieee754":3}],2:[function(require,module,exports){
-var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
-
-;(function (exports) {
- 'use strict';
-
- var Arr = (typeof Uint8Array !== 'undefined')
- ? Uint8Array
- : Array
-
- var PLUS = '+'.charCodeAt(0)
- var SLASH = '/'.charCodeAt(0)
- var NUMBER = '0'.charCodeAt(0)
- var LOWER = 'a'.charCodeAt(0)
- var UPPER = 'A'.charCodeAt(0)
-
- function decode (elt) {
- var code = elt.charCodeAt(0)
- if (code === PLUS)
- return 62 // '+'
- if (code === SLASH)
- return 63 // '/'
- if (code < NUMBER)
- return -1 //no match
- if (code < NUMBER + 10)
- return code - NUMBER + 26 + 26
- if (code < UPPER + 26)
- return code - UPPER
- if (code < LOWER + 26)
- return code - LOWER + 26
- }
-
- function b64ToByteArray (b64) {
- var i, j, l, tmp, placeHolders, arr
-
- if (b64.length % 4 > 0) {
- throw new Error('Invalid string. Length must be a multiple of 4')
- }
-
- // the number of equal signs (place holders)
- // if there are two placeholders, than the two characters before it
- // represent one byte
- // if there is only one, then the three characters before it represent 2 bytes
- // this is just a cheap hack to not do indexOf twice
- var len = b64.length
- placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0
-
- // base64 is 4/3 + up to two characters of the original data
- arr = new Arr(b64.length * 3 / 4 - placeHolders)
-
- // if there are placeholders, only get up to the last complete 4 chars
- l = placeHolders > 0 ? b64.length - 4 : b64.length
-
- var L = 0
-
- function push (v) {
- arr[L++] = v
- }
-
- for (i = 0, j = 0; i < l; i += 4, j += 3) {
- tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))
- push((tmp & 0xFF0000) >> 16)
- push((tmp & 0xFF00) >> 8)
- push(tmp & 0xFF)
- }
-
- if (placeHolders === 2) {
- tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)
- push(tmp & 0xFF)
- } else if (placeHolders === 1) {
- tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)
- push((tmp >> 8) & 0xFF)
- push(tmp & 0xFF)
- }
-
- return arr
- }
-
- function uint8ToBase64 (uint8) {
- var i,
- extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
- output = "",
- temp, length
-
- function encode (num) {
- return lookup.charAt(num)
- }
-
- function tripletToBase64 (num) {
- return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)
- }
-
- // go through the array every three bytes, we'll deal with trailing stuff later
- for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
- temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
- output += tripletToBase64(temp)
- }
-
- // pad the end with zeros, but make sure to not forget the extra bytes
- switch (extraBytes) {
- case 1:
- temp = uint8[uint8.length - 1]
- output += encode(temp >> 2)
- output += encode((temp << 4) & 0x3F)
- output += '=='
- break
- case 2:
- temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])
- output += encode(temp >> 10)
- output += encode((temp >> 4) & 0x3F)
- output += encode((temp << 2) & 0x3F)
- output += '='
- break
- }
-
- return output
- }
-
- exports.toByteArray = b64ToByteArray
- exports.fromByteArray = uint8ToBase64
-}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))
-
-},{}],3:[function(require,module,exports){
-exports.read = function(buffer, offset, isLE, mLen, nBytes) {
- var e, m,
- eLen = nBytes * 8 - mLen - 1,
- eMax = (1 << eLen) - 1,
- eBias = eMax >> 1,
- nBits = -7,
- i = isLE ? (nBytes - 1) : 0,
- d = isLE ? -1 : 1,
- s = buffer[offset + i];
-
- i += d;
-
- e = s & ((1 << (-nBits)) - 1);
- s >>= (-nBits);
- nBits += eLen;
- for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8);
-
- m = e & ((1 << (-nBits)) - 1);
- e >>= (-nBits);
- nBits += mLen;
- for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8);
-
- if (e === 0) {
- e = 1 - eBias;
- } else if (e === eMax) {
- return m ? NaN : ((s ? -1 : 1) * Infinity);
- } else {
- m = m + Math.pow(2, mLen);
- e = e - eBias;
- }
- return (s ? -1 : 1) * m * Math.pow(2, e - mLen);
-};
-
-exports.write = function(buffer, value, offset, isLE, mLen, nBytes) {
- var e, m, c,
- eLen = nBytes * 8 - mLen - 1,
- eMax = (1 << eLen) - 1,
- eBias = eMax >> 1,
- rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),
- i = isLE ? 0 : (nBytes - 1),
- d = isLE ? 1 : -1,
- s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;
-
- value = Math.abs(value);
-
- if (isNaN(value) || value === Infinity) {
- m = isNaN(value) ? 1 : 0;
- e = eMax;
- } else {
- e = Math.floor(Math.log(value) / Math.LN2);
- if (value * (c = Math.pow(2, -e)) < 1) {
- e--;
- c *= 2;
- }
- if (e + eBias >= 1) {
- value += rt / c;
- } else {
- value += rt * Math.pow(2, 1 - eBias);
- }
- if (value * c >= 2) {
- e++;
- c /= 2;
- }
-
- if (e + eBias >= eMax) {
- m = 0;
- e = eMax;
- } else if (e + eBias >= 1) {
- m = (value * c - 1) * Math.pow(2, mLen);
- e = e + eBias;
- } else {
- m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
- e = 0;
- }
- }
-
- for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8);
-
- e = (e << mLen) | m;
- eLen += mLen;
- for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8);
-
- buffer[offset + i - d] |= s * 128;
-};
-
-},{}],4:[function(require,module,exports){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-function EventEmitter() {
- this._events = this._events || {};
- this._maxListeners = this._maxListeners || undefined;
-}
-module.exports = EventEmitter;
-
-// Backwards-compat with node 0.10.x
-EventEmitter.EventEmitter = EventEmitter;
-
-EventEmitter.prototype._events = undefined;
-EventEmitter.prototype._maxListeners = undefined;
-
-// By default EventEmitters will print a warning if more than 10 listeners are
-// added to it. This is a useful default which helps finding memory leaks.
-EventEmitter.defaultMaxListeners = 10;
-
-// Obviously not all Emitters should be limited to 10. This function allows
-// that to be increased. Set to zero for unlimited.
-EventEmitter.prototype.setMaxListeners = function(n) {
- if (!isNumber(n) || n < 0 || isNaN(n))
- throw TypeError('n must be a positive number');
- this._maxListeners = n;
- return this;
-};
-
-EventEmitter.prototype.emit = function(type) {
- var er, handler, len, args, i, listeners;
-
- if (!this._events)
- this._events = {};
-
- // If there is no 'error' event listener then throw.
- if (type === 'error') {
- if (!this._events.error ||
- (isObject(this._events.error) && !this._events.error.length)) {
- er = arguments[1];
- if (er instanceof Error) {
- throw er; // Unhandled 'error' event
- } else {
- throw TypeError('Uncaught, unspecified "error" event.');
- }
- return false;
- }
- }
-
- handler = this._events[type];
-
- if (isUndefined(handler))
- return false;
-
- if (isFunction(handler)) {
- switch (arguments.length) {
- // fast cases
- case 1:
- handler.call(this);
- break;
- case 2:
- handler.call(this, arguments[1]);
- break;
- case 3:
- handler.call(this, arguments[1], arguments[2]);
- break;
- // slower
- default:
- len = arguments.length;
- args = new Array(len - 1);
- for (i = 1; i < len; i++)
- args[i - 1] = arguments[i];
- handler.apply(this, args);
- }
- } else if (isObject(handler)) {
- len = arguments.length;
- args = new Array(len - 1);
- for (i = 1; i < len; i++)
- args[i - 1] = arguments[i];
-
- listeners = handler.slice();
- len = listeners.length;
- for (i = 0; i < len; i++)
- listeners[i].apply(this, args);
- }
-
- return true;
-};
-
-EventEmitter.prototype.addListener = function(type, listener) {
- var m;
-
- if (!isFunction(listener))
- throw TypeError('listener must be a function');
-
- if (!this._events)
- this._events = {};
-
- // To avoid recursion in the case that type === "newListener"! Before
- // adding it to the listeners, first emit "newListener".
- if (this._events.newListener)
- this.emit('newListener', type,
- isFunction(listener.listener) ?
- listener.listener : listener);
-
- if (!this._events[type])
- // Optimize the case of one listener. Don't need the extra array object.
- this._events[type] = listener;
- else if (isObject(this._events[type]))
- // If we've already got an array, just append.
- this._events[type].push(listener);
- else
- // Adding the second element, need to change to array.
- this._events[type] = [this._events[type], listener];
-
- // Check for listener leak
- if (isObject(this._events[type]) && !this._events[type].warned) {
- var m;
- if (!isUndefined(this._maxListeners)) {
- m = this._maxListeners;
- } else {
- m = EventEmitter.defaultMaxListeners;
- }
-
- if (m && m > 0 && this._events[type].length > m) {
- this._events[type].warned = true;
- console.error('(node) warning: possible EventEmitter memory ' +
- 'leak detected. %d listeners added. ' +
- 'Use emitter.setMaxListeners() to increase limit.',
- this._events[type].length);
- if (typeof console.trace === 'function') {
- // not supported in IE 10
- console.trace();
- }
- }
- }
-
- return this;
-};
-
-EventEmitter.prototype.on = EventEmitter.prototype.addListener;
-
-EventEmitter.prototype.once = function(type, listener) {
- if (!isFunction(listener))
- throw TypeError('listener must be a function');
-
- var fired = false;
-
- function g() {
- this.removeListener(type, g);
-
- if (!fired) {
- fired = true;
- listener.apply(this, arguments);
- }
- }
-
- g.listener = listener;
- this.on(type, g);
-
- return this;
-};
-
-// emits a 'removeListener' event iff the listener was removed
-EventEmitter.prototype.removeListener = function(type, listener) {
- var list, position, length, i;
-
- if (!isFunction(listener))
- throw TypeError('listener must be a function');
-
- if (!this._events || !this._events[type])
- return this;
-
- list = this._events[type];
- length = list.length;
- position = -1;
-
- if (list === listener ||
- (isFunction(list.listener) && list.listener === listener)) {
- delete this._events[type];
- if (this._events.removeListener)
- this.emit('removeListener', type, listener);
-
- } else if (isObject(list)) {
- for (i = length; i-- > 0;) {
- if (list[i] === listener ||
- (list[i].listener && list[i].listener === listener)) {
- position = i;
- break;
- }
- }
-
- if (position < 0)
- return this;
-
- if (list.length === 1) {
- list.length = 0;
- delete this._events[type];
- } else {
- list.splice(position, 1);
- }
-
- if (this._events.removeListener)
- this.emit('removeListener', type, listener);
- }
-
- return this;
-};
-
-EventEmitter.prototype.removeAllListeners = function(type) {
- var key, listeners;
-
- if (!this._events)
- return this;
-
- // not listening for removeListener, no need to emit
- if (!this._events.removeListener) {
- if (arguments.length === 0)
- this._events = {};
- else if (this._events[type])
- delete this._events[type];
- return this;
- }
-
- // emit removeListener for all listeners on all events
- if (arguments.length === 0) {
- for (key in this._events) {
- if (key === 'removeListener') continue;
- this.removeAllListeners(key);
- }
- this.removeAllListeners('removeListener');
- this._events = {};
- return this;
- }
-
- listeners = this._events[type];
-
- if (isFunction(listeners)) {
- this.removeListener(type, listeners);
- } else {
- // LIFO order
- while (listeners.length)
- this.removeListener(type, listeners[listeners.length - 1]);
- }
- delete this._events[type];
-
- return this;
-};
-
-EventEmitter.prototype.listeners = function(type) {
- var ret;
- if (!this._events || !this._events[type])
- ret = [];
- else if (isFunction(this._events[type]))
- ret = [this._events[type]];
- else
- ret = this._events[type].slice();
- return ret;
-};
-
-EventEmitter.listenerCount = function(emitter, type) {
- var ret;
- if (!emitter._events || !emitter._events[type])
- ret = 0;
- else if (isFunction(emitter._events[type]))
- ret = 1;
- else
- ret = emitter._events[type].length;
- return ret;
-};
-
-function isFunction(arg) {
- return typeof arg === 'function';
-}
-
-function isNumber(arg) {
- return typeof arg === 'number';
-}
-
-function isObject(arg) {
- return typeof arg === 'object' && arg !== null;
-}
-
-function isUndefined(arg) {
- return arg === void 0;
-}
-
-},{}],5:[function(require,module,exports){
-if (typeof Object.create === 'function') {
- // implementation from standard node.js 'util' module
- module.exports = function inherits(ctor, superCtor) {
- ctor.super_ = superCtor
- ctor.prototype = Object.create(superCtor.prototype, {
- constructor: {
- value: ctor,
- enumerable: false,
- writable: true,
- configurable: true
- }
- });
- };
-} else {
- // old school shim for old browsers
- module.exports = function inherits(ctor, superCtor) {
- ctor.super_ = superCtor
- var TempCtor = function () {}
- TempCtor.prototype = superCtor.prototype
- ctor.prototype = new TempCtor()
- ctor.prototype.constructor = ctor
- }
-}
-
-},{}],6:[function(require,module,exports){
-// shim for using process in browser
-
-var process = module.exports = {};
-
-process.nextTick = (function () {
- var canSetImmediate = typeof window !== 'undefined'
- && window.setImmediate;
- var canPost = typeof window !== 'undefined'
- && window.postMessage && window.addEventListener
- ;
-
- if (canSetImmediate) {
- return function (f) { return window.setImmediate(f) };
- }
-
- if (canPost) {
- var queue = [];
- window.addEventListener('message', function (ev) {
- var source = ev.source;
- if ((source === window || source === null) && ev.data === 'process-tick') {
- ev.stopPropagation();
- if (queue.length > 0) {
- var fn = queue.shift();
- fn();
- }
- }
- }, true);
-
- return function nextTick(fn) {
- queue.push(fn);
- window.postMessage('process-tick', '*');
- };
- }
-
- return function nextTick(fn) {
- setTimeout(fn, 0);
- };
-})();
-
-process.title = 'browser';
-process.browser = true;
-process.env = {};
-process.argv = [];
-
-function noop() {}
-
-process.on = noop;
-process.addListener = noop;
-process.once = noop;
-process.off = noop;
-process.removeListener = noop;
-process.removeAllListeners = noop;
-process.emit = noop;
-
-process.binding = function (name) {
- throw new Error('process.binding is not supported');
-}
-
-// TODO(shtylman)
-process.cwd = function () { return '/' };
-process.chdir = function (dir) {
- throw new Error('process.chdir is not supported');
-};
-
-},{}],7:[function(require,module,exports){
-module.exports = require("./lib/_stream_duplex.js")
-
-},{"./lib/_stream_duplex.js":8}],8:[function(require,module,exports){
-(function (process){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// a duplex stream is just a stream that is both readable and writable.
-// Since JS doesn't have multiple prototypal inheritance, this class
-// prototypally inherits from Readable, and then parasitically from
-// Writable.
-
-module.exports = Duplex;
-
-/*<replacement>*/
-var objectKeys = Object.keys || function (obj) {
- var keys = [];
- for (var key in obj) keys.push(key);
- return keys;
-}
-/*</replacement>*/
-
-
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
-
-var Readable = require('./_stream_readable');
-var Writable = require('./_stream_writable');
-
-util.inherits(Duplex, Readable);
-
-forEach(objectKeys(Writable.prototype), function(method) {
- if (!Duplex.prototype[method])
- Duplex.prototype[method] = Writable.prototype[method];
-});
-
-function Duplex(options) {
- if (!(this instanceof Duplex))
- return new Duplex(options);
-
- Readable.call(this, options);
- Writable.call(this, options);
-
- if (options && options.readable === false)
- this.readable = false;
-
- if (options && options.writable === false)
- this.writable = false;
-
- this.allowHalfOpen = true;
- if (options && options.allowHalfOpen === false)
- this.allowHalfOpen = false;
-
- this.once('end', onend);
-}
-
-// the no-half-open enforcer
-function onend() {
- // if we allow half-open state, or if the writable side ended,
- // then we're ok.
- if (this.allowHalfOpen || this._writableState.ended)
- return;
-
- // no more data can be written.
- // But allow more writes to happen in this tick.
- process.nextTick(this.end.bind(this));
-}
-
-function forEach (xs, f) {
- for (var i = 0, l = xs.length; i < l; i++) {
- f(xs[i], i);
- }
-}
-
-}).call(this,require("Vms28V"))
-},{"./_stream_readable":10,"./_stream_writable":12,"Vms28V":6,"core-util-is":13,"inherits":5}],9:[function(require,module,exports){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// a passthrough stream.
-// basically just the most minimal sort of Transform stream.
-// Every written chunk gets output as-is.
-
-module.exports = PassThrough;
-
-var Transform = require('./_stream_transform');
-
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
-
-util.inherits(PassThrough, Transform);
-
-function PassThrough(options) {
- if (!(this instanceof PassThrough))
- return new PassThrough(options);
-
- Transform.call(this, options);
-}
-
-PassThrough.prototype._transform = function(chunk, encoding, cb) {
- cb(null, chunk);
-};
-
-},{"./_stream_transform":11,"core-util-is":13,"inherits":5}],10:[function(require,module,exports){
-(function (process){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-module.exports = Readable;
-
-/*<replacement>*/
-var isArray = require('isarray');
-/*</replacement>*/
-
-
-/*<replacement>*/
-var Buffer = require('buffer').Buffer;
-/*</replacement>*/
-
-Readable.ReadableState = ReadableState;
-
-var EE = require('events').EventEmitter;
-
-/*<replacement>*/
-if (!EE.listenerCount) EE.listenerCount = function(emitter, type) {
- return emitter.listeners(type).length;
-};
-/*</replacement>*/
-
-var Stream = require('stream');
-
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
-
-var StringDecoder;
-
-util.inherits(Readable, Stream);
-
-function ReadableState(options, stream) {
- options = options || {};
-
- // the point at which it stops calling _read() to fill the buffer
- // Note: 0 is a valid value, means "don't call _read preemptively ever"
- var hwm = options.highWaterMark;
- this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024;
-
- // cast to ints.
- this.highWaterMark = ~~this.highWaterMark;
-
- this.buffer = [];
- this.length = 0;
- this.pipes = null;
- this.pipesCount = 0;
- this.flowing = false;
- this.ended = false;
- this.endEmitted = false;
- this.reading = false;
-
- // In streams that never have any data, and do push(null) right away,
- // the consumer can miss the 'end' event if they do some I/O before
- // consuming the stream. So, we don't emit('end') until some reading
- // happens.
- this.calledRead = false;
-
- // a flag to be able to tell if the onwrite cb is called immediately,
- // or on a later tick. We set this to true at first, becuase any
- // actions that shouldn't happen until "later" should generally also
- // not happen before the first write call.
- this.sync = true;
-
- // whenever we return null, then we set a flag to say
- // that we're awaiting a 'readable' event emission.
- this.needReadable = false;
- this.emittedReadable = false;
- this.readableListening = false;
-
-
- // object stream flag. Used to make read(n) ignore n and to
- // make all the buffer merging and length checks go away
- this.objectMode = !!options.objectMode;
-
- // Crypto is kind of old and crusty. Historically, its default string
- // encoding is 'binary' so we have to make this configurable.
- // Everything else in the universe uses 'utf8', though.
- this.defaultEncoding = options.defaultEncoding || 'utf8';
-
- // when piping, we only care about 'readable' events that happen
- // after read()ing all the bytes and not getting any pushback.
- this.ranOut = false;
-
- // the number of writers that are awaiting a drain event in .pipe()s
- this.awaitDrain = 0;
-
- // if true, a maybeReadMore has been scheduled
- this.readingMore = false;
-
- this.decoder = null;
- this.encoding = null;
- if (options.encoding) {
- if (!StringDecoder)
- StringDecoder = require('string_decoder/').StringDecoder;
- this.decoder = new StringDecoder(options.encoding);
- this.encoding = options.encoding;
- }
-}
-
-function Readable(options) {
- if (!(this instanceof Readable))
- return new Readable(options);
-
- this._readableState = new ReadableState(options, this);
-
- // legacy
- this.readable = true;
-
- Stream.call(this);
-}
-
-// Manually shove something into the read() buffer.
-// This returns true if the highWaterMark has not been hit yet,
-// similar to how Writable.write() returns true if you should
-// write() some more.
-Readable.prototype.push = function(chunk, encoding) {
- var state = this._readableState;
-
- if (typeof chunk === 'string' && !state.objectMode) {
- encoding = encoding || state.defaultEncoding;
- if (encoding !== state.encoding) {
- chunk = new Buffer(chunk, encoding);
- encoding = '';
- }
- }
-
- return readableAddChunk(this, state, chunk, encoding, false);
-};
-
-// Unshift should *always* be something directly out of read()
-Readable.prototype.unshift = function(chunk) {
- var state = this._readableState;
- return readableAddChunk(this, state, chunk, '', true);
-};
-
-function readableAddChunk(stream, state, chunk, encoding, addToFront) {
- var er = chunkInvalid(state, chunk);
- if (er) {
- stream.emit('error', er);
- } else if (chunk === null || chunk === undefined) {
- state.reading = false;
- if (!state.ended)
- onEofChunk(stream, state);
- } else if (state.objectMode || chunk && chunk.length > 0) {
- if (state.ended && !addToFront) {
- var e = new Error('stream.push() after EOF');
- stream.emit('error', e);
- } else if (state.endEmitted && addToFront) {
- var e = new Error('stream.unshift() after end event');
- stream.emit('error', e);
- } else {
- if (state.decoder && !addToFront && !encoding)
- chunk = state.decoder.write(chunk);
-
- // update the buffer info.
- state.length += state.objectMode ? 1 : chunk.length;
- if (addToFront) {
- state.buffer.unshift(chunk);
- } else {
- state.reading = false;
- state.buffer.push(chunk);
- }
-
- if (state.needReadable)
- emitReadable(stream);
-
- maybeReadMore(stream, state);
- }
- } else if (!addToFront) {
- state.reading = false;
- }
-
- return needMoreData(state);
-}
-
-
-
-// if it's past the high water mark, we can push in some more.
-// Also, if we have no data yet, we can stand some
-// more bytes. This is to work around cases where hwm=0,
-// such as the repl. Also, if the push() triggered a
-// readable event, and the user called read(largeNumber) such that
-// needReadable was set, then we ought to push more, so that another
-// 'readable' event will be triggered.
-function needMoreData(state) {
- return !state.ended &&
- (state.needReadable ||
- state.length < state.highWaterMark ||
- state.length === 0);
-}
-
-// backwards compatibility.
-Readable.prototype.setEncoding = function(enc) {
- if (!StringDecoder)
- StringDecoder = require('string_decoder/').StringDecoder;
- this._readableState.decoder = new StringDecoder(enc);
- this._readableState.encoding = enc;
-};
-
-// Don't raise the hwm > 128MB
-var MAX_HWM = 0x800000;
-function roundUpToNextPowerOf2(n) {
- if (n >= MAX_HWM) {
- n = MAX_HWM;
- } else {
- // Get the next highest power of 2
- n--;
- for (var p = 1; p < 32; p <<= 1) n |= n >> p;
- n++;
- }
- return n;
-}
-
-function howMuchToRead(n, state) {
- if (state.length === 0 && state.ended)
- return 0;
-
- if (state.objectMode)
- return n === 0 ? 0 : 1;
-
- if (isNaN(n) || n === null) {
- // only flow one buffer at a time
- if (state.flowing && state.buffer.length)
- return state.buffer[0].length;
- else
- return state.length;
- }
-
- if (n <= 0)
- return 0;
-
- // If we're asking for more than the target buffer level,
- // then raise the water mark. Bump up to the next highest
- // power of 2, to prevent increasing it excessively in tiny
- // amounts.
- if (n > state.highWaterMark)
- state.highWaterMark = roundUpToNextPowerOf2(n);
-
- // don't have that much. return null, unless we've ended.
- if (n > state.length) {
- if (!state.ended) {
- state.needReadable = true;
- return 0;
- } else
- return state.length;
- }
-
- return n;
-}
-
-// you can override either this method, or the async _read(n) below.
-Readable.prototype.read = function(n) {
- var state = this._readableState;
- state.calledRead = true;
- var nOrig = n;
-
- if (typeof n !== 'number' || n > 0)
- state.emittedReadable = false;
-
- // if we're doing read(0) to trigger a readable event, but we
- // already have a bunch of data in the buffer, then just trigger
- // the 'readable' event and move on.
- if (n === 0 &&
- state.needReadable &&
- (state.length >= state.highWaterMark || state.ended)) {
- emitReadable(this);
- return null;
- }
-
- n = howMuchToRead(n, state);
-
- // if we've ended, and we're now clear, then finish it up.
- if (n === 0 && state.ended) {
- if (state.length === 0)
- endReadable(this);
- return null;
- }
-
- // All the actual chunk generation logic needs to be
- // *below* the call to _read. The reason is that in certain
- // synthetic stream cases, such as passthrough streams, _read
- // may be a completely synchronous operation which may change
- // the state of the read buffer, providing enough data when
- // before there was *not* enough.
- //
- // So, the steps are:
- // 1. Figure out what the state of things will be after we do
- // a read from the buffer.
- //
- // 2. If that resulting state will trigger a _read, then call _read.
- // Note that this may be asynchronous, or synchronous. Yes, it is
- // deeply ugly to write APIs this way, but that still doesn't mean
- // that the Readable class should behave improperly, as streams are
- // designed to be sync/async agnostic.
- // Take note if the _read call is sync or async (ie, if the read call
- // has returned yet), so that we know whether or not it's safe to emit
- // 'readable' etc.
- //
- // 3. Actually pull the requested chunks out of the buffer and return.
-
- // if we need a readable event, then we need to do some reading.
- var doRead = state.needReadable;
-
- // if we currently have less than the highWaterMark, then also read some
- if (state.length - n <= state.highWaterMark)
- doRead = true;
-
- // however, if we've ended, then there's no point, and if we're already
- // reading, then it's unnecessary.
- if (state.ended || state.reading)
- doRead = false;
-
- if (doRead) {
- state.reading = true;
- state.sync = true;
- // if the length is currently zero, then we *need* a readable event.
- if (state.length === 0)
- state.needReadable = true;
- // call internal read method
- this._read(state.highWaterMark);
- state.sync = false;
- }
-
- // If _read called its callback synchronously, then `reading`
- // will be false, and we need to re-evaluate how much data we
- // can return to the user.
- if (doRead && !state.reading)
- n = howMuchToRead(nOrig, state);
-
- var ret;
- if (n > 0)
- ret = fromList(n, state);
- else
- ret = null;
-
- if (ret === null) {
- state.needReadable = true;
- n = 0;
- }
-
- state.length -= n;
-
- // If we have nothing in the buffer, then we want to know
- // as soon as we *do* get something into the buffer.
- if (state.length === 0 && !state.ended)
- state.needReadable = true;
-
- // If we happened to read() exactly the remaining amount in the
- // buffer, and the EOF has been seen at this point, then make sure
- // that we emit 'end' on the very next tick.
- if (state.ended && !state.endEmitted && state.length === 0)
- endReadable(this);
-
- return ret;
-};
-
-function chunkInvalid(state, chunk) {
- var er = null;
- if (!Buffer.isBuffer(chunk) &&
- 'string' !== typeof chunk &&
- chunk !== null &&
- chunk !== undefined &&
- !state.objectMode &&
- !er) {
- er = new TypeError('Invalid non-string/buffer chunk');
- }
- return er;
-}
-
-
-function onEofChunk(stream, state) {
- if (state.decoder && !state.ended) {
- var chunk = state.decoder.end();
- if (chunk && chunk.length) {
- state.buffer.push(chunk);
- state.length += state.objectMode ? 1 : chunk.length;
- }
- }
- state.ended = true;
-
- // if we've ended and we have some data left, then emit
- // 'readable' now to make sure it gets picked up.
- if (state.length > 0)
- emitReadable(stream);
- else
- endReadable(stream);
-}
-
-// Don't emit readable right away in sync mode, because this can trigger
-// another read() call => stack overflow. This way, it might trigger
-// a nextTick recursion warning, but that's not so bad.
-function emitReadable(stream) {
- var state = stream._readableState;
- state.needReadable = false;
- if (state.emittedReadable)
- return;
-
- state.emittedReadable = true;
- if (state.sync)
- process.nextTick(function() {
- emitReadable_(stream);
- });
- else
- emitReadable_(stream);
-}
-
-function emitReadable_(stream) {
- stream.emit('readable');
-}
-
-
-// at this point, the user has presumably seen the 'readable' event,
-// and called read() to consume some data. that may have triggered
-// in turn another _read(n) call, in which case reading = true if
-// it's in progress.
-// However, if we're not ended, or reading, and the length < hwm,
-// then go ahead and try to read some more preemptively.
-function maybeReadMore(stream, state) {
- if (!state.readingMore) {
- state.readingMore = true;
- process.nextTick(function() {
- maybeReadMore_(stream, state);
- });
- }
-}
-
-function maybeReadMore_(stream, state) {
- var len = state.length;
- while (!state.reading && !state.flowing && !state.ended &&
- state.length < state.highWaterMark) {
- stream.read(0);
- if (len === state.length)
- // didn't get any data, stop spinning.
- break;
- else
- len = state.length;
- }
- state.readingMore = false;
-}
-
-// abstract method. to be overridden in specific implementation classes.
-// call cb(er, data) where data is <= n in length.
-// for virtual (non-string, non-buffer) streams, "length" is somewhat
-// arbitrary, and perhaps not very meaningful.
-Readable.prototype._read = function(n) {
- this.emit('error', new Error('not implemented'));
-};
-
-Readable.prototype.pipe = function(dest, pipeOpts) {
- var src = this;
- var state = this._readableState;
-
- switch (state.pipesCount) {
- case 0:
- state.pipes = dest;
- break;
- case 1:
- state.pipes = [state.pipes, dest];
- break;
- default:
- state.pipes.push(dest);
- break;
- }
- state.pipesCount += 1;
-
- var doEnd = (!pipeOpts || pipeOpts.end !== false) &&
- dest !== process.stdout &&
- dest !== process.stderr;
-
- var endFn = doEnd ? onend : cleanup;
- if (state.endEmitted)
- process.nextTick(endFn);
- else
- src.once('end', endFn);
-
- dest.on('unpipe', onunpipe);
- function onunpipe(readable) {
- if (readable !== src) return;
- cleanup();
- }
-
- function onend() {
- dest.end();
- }
-
- // when the dest drains, it reduces the awaitDrain counter
- // on the source. This would be more elegant with a .once()
- // handler in flow(), but adding and removing repeatedly is
- // too slow.
- var ondrain = pipeOnDrain(src);
- dest.on('drain', ondrain);
-
- function cleanup() {
- // cleanup event handlers once the pipe is broken
- dest.removeListener('close', onclose);
- dest.removeListener('finish', onfinish);
- dest.removeListener('drain', ondrain);
- dest.removeListener('error', onerror);
- dest.removeListener('unpipe', onunpipe);
- src.removeListener('end', onend);
- src.removeListener('end', cleanup);
-
- // if the reader is waiting for a drain event from this
- // specific writer, then it would cause it to never start
- // flowing again.
- // So, if this is awaiting a drain, then we just call it now.
- // If we don't know, then assume that we are waiting for one.
- if (!dest._writableState || dest._writableState.needDrain)
- ondrain();
- }
-
- // if the dest has an error, then stop piping into it.
- // however, don't suppress the throwing behavior for this.
- function onerror(er) {
- unpipe();
- dest.removeListener('error', onerror);
- if (EE.listenerCount(dest, 'error') === 0)
- dest.emit('error', er);
- }
- // This is a brutally ugly hack to make sure that our error handler
- // is attached before any userland ones. NEVER DO THIS.
- if (!dest._events || !dest._events.error)
- dest.on('error', onerror);
- else if (isArray(dest._events.error))
- dest._events.error.unshift(onerror);
- else
- dest._events.error = [onerror, dest._events.error];
-
-
-
- // Both close and finish should trigger unpipe, but only once.
- function onclose() {
- dest.removeListener('finish', onfinish);
- unpipe();
- }
- dest.once('close', onclose);
- function onfinish() {
- dest.removeListener('close', onclose);
- unpipe();
- }
- dest.once('finish', onfinish);
-
- function unpipe() {
- src.unpipe(dest);
- }
-
- // tell the dest that it's being piped to
- dest.emit('pipe', src);
-
- // start the flow if it hasn't been started already.
- if (!state.flowing) {
- // the handler that waits for readable events after all
- // the data gets sucked out in flow.
- // This would be easier to follow with a .once() handler
- // in flow(), but that is too slow.
- this.on('readable', pipeOnReadable);
-
- state.flowing = true;
- process.nextTick(function() {
- flow(src);
- });
- }
-
- return dest;
-};
-
-function pipeOnDrain(src) {
- return function() {
- var dest = this;
- var state = src._readableState;
- state.awaitDrain--;
- if (state.awaitDrain === 0)
- flow(src);
- };
-}
-
-function flow(src) {
- var state = src._readableState;
- var chunk;
- state.awaitDrain = 0;
-
- function write(dest, i, list) {
- var written = dest.write(chunk);
- if (false === written) {
- state.awaitDrain++;
- }
- }
-
- while (state.pipesCount && null !== (chunk = src.read())) {
-
- if (state.pipesCount === 1)
- write(state.pipes, 0, null);
- else
- forEach(state.pipes, write);
-
- src.emit('data', chunk);
-
- // if anyone needs a drain, then we have to wait for that.
- if (state.awaitDrain > 0)
- return;
- }
-
- // if every destination was unpiped, either before entering this
- // function, or in the while loop, then stop flowing.
- //
- // NB: This is a pretty rare edge case.
- if (state.pipesCount === 0) {
- state.flowing = false;
-
- // if there were data event listeners added, then switch to old mode.
- if (EE.listenerCount(src, 'data') > 0)
- emitDataEvents(src);
- return;
- }
-
- // at this point, no one needed a drain, so we just ran out of data
- // on the next readable event, start it over again.
- state.ranOut = true;
-}
-
-function pipeOnReadable() {
- if (this._readableState.ranOut) {
- this._readableState.ranOut = false;
- flow(this);
- }
-}
-
-
-Readable.prototype.unpipe = function(dest) {
- var state = this._readableState;
-
- // if we're not piping anywhere, then do nothing.
- if (state.pipesCount === 0)
- return this;
-
- // just one destination. most common case.
- if (state.pipesCount === 1) {
- // passed in one, but it's not the right one.
- if (dest && dest !== state.pipes)
- return this;
-
- if (!dest)
- dest = state.pipes;
-
- // got a match.
- state.pipes = null;
- state.pipesCount = 0;
- this.removeListener('readable', pipeOnReadable);
- state.flowing = false;
- if (dest)
- dest.emit('unpipe', this);
- return this;
- }
-
- // slow case. multiple pipe destinations.
-
- if (!dest) {
- // remove all.
- var dests = state.pipes;
- var len = state.pipesCount;
- state.pipes = null;
- state.pipesCount = 0;
- this.removeListener('readable', pipeOnReadable);
- state.flowing = false;
-
- for (var i = 0; i < len; i++)
- dests[i].emit('unpipe', this);
- return this;
- }
-
- // try to find the right one.
- var i = indexOf(state.pipes, dest);
- if (i === -1)
- return this;
-
- state.pipes.splice(i, 1);
- state.pipesCount -= 1;
- if (state.pipesCount === 1)
- state.pipes = state.pipes[0];
-
- dest.emit('unpipe', this);
-
- return this;
-};
-
-// set up data events if they are asked for
-// Ensure readable listeners eventually get something
-Readable.prototype.on = function(ev, fn) {
- var res = Stream.prototype.on.call(this, ev, fn);
-
- if (ev === 'data' && !this._readableState.flowing)
- emitDataEvents(this);
-
- if (ev === 'readable' && this.readable) {
- var state = this._readableState;
- if (!state.readableListening) {
- state.readableListening = true;
- state.emittedReadable = false;
- state.needReadable = true;
- if (!state.reading) {
- this.read(0);
- } else if (state.length) {
- emitReadable(this, state);
- }
- }
- }
-
- return res;
-};
-Readable.prototype.addListener = Readable.prototype.on;
-
-// pause() and resume() are remnants of the legacy readable stream API
-// If the user uses them, then switch into old mode.
-Readable.prototype.resume = function() {
- emitDataEvents(this);
- this.read(0);
- this.emit('resume');
-};
-
-Readable.prototype.pause = function() {
- emitDataEvents(this, true);
- this.emit('pause');
-};
-
-function emitDataEvents(stream, startPaused) {
- var state = stream._readableState;
-
- if (state.flowing) {
- // https://github.com/isaacs/readable-stream/issues/16
- throw new Error('Cannot switch to old mode now.');
- }
-
- var paused = startPaused || false;
- var readable = false;
-
- // convert to an old-style stream.
- stream.readable = true;
- stream.pipe = Stream.prototype.pipe;
- stream.on = stream.addListener = Stream.prototype.on;
-
- stream.on('readable', function() {
- readable = true;
-
- var c;
- while (!paused && (null !== (c = stream.read())))
- stream.emit('data', c);
-
- if (c === null) {
- readable = false;
- stream._readableState.needReadable = true;
- }
- });
-
- stream.pause = function() {
- paused = true;
- this.emit('pause');
- };
-
- stream.resume = function() {
- paused = false;
- if (readable)
- process.nextTick(function() {
- stream.emit('readable');
- });
- else
- this.read(0);
- this.emit('resume');
- };
-
- // now make it start, just in case it hadn't already.
- stream.emit('readable');
-}
-
-// wrap an old-style stream as the async data source.
-// This is *not* part of the readable stream interface.
-// It is an ugly unfortunate mess of history.
-Readable.prototype.wrap = function(stream) {
- var state = this._readableState;
- var paused = false;
-
- var self = this;
- stream.on('end', function() {
- if (state.decoder && !state.ended) {
- var chunk = state.decoder.end();
- if (chunk && chunk.length)
- self.push(chunk);
- }
-
- self.push(null);
- });
-
- stream.on('data', function(chunk) {
- if (state.decoder)
- chunk = state.decoder.write(chunk);
- if (!chunk || !state.objectMode && !chunk.length)
- return;
-
- var ret = self.push(chunk);
- if (!ret) {
- paused = true;
- stream.pause();
- }
- });
-
- // proxy all the other methods.
- // important when wrapping filters and duplexes.
- for (var i in stream) {
- if (typeof stream[i] === 'function' &&
- typeof this[i] === 'undefined') {
- this[i] = function(method) { return function() {
- return stream[method].apply(stream, arguments);
- }}(i);
- }
- }
-
- // proxy certain important events.
- var events = ['error', 'close', 'destroy', 'pause', 'resume'];
- forEach(events, function(ev) {
- stream.on(ev, self.emit.bind(self, ev));
- });
-
- // when we try to consume some more bytes, simply unpause the
- // underlying stream.
- self._read = function(n) {
- if (paused) {
- paused = false;
- stream.resume();
- }
- };
-
- return self;
-};
-
-
-
-// exposed for testing purposes only.
-Readable._fromList = fromList;
-
-// Pluck off n bytes from an array of buffers.
-// Length is the combined lengths of all the buffers in the list.
-function fromList(n, state) {
- var list = state.buffer;
- var length = state.length;
- var stringMode = !!state.decoder;
- var objectMode = !!state.objectMode;
- var ret;
-
- // nothing in the list, definitely empty.
- if (list.length === 0)
- return null;
-
- if (length === 0)
- ret = null;
- else if (objectMode)
- ret = list.shift();
- else if (!n || n >= length) {
- // read it all, truncate the array.
- if (stringMode)
- ret = list.join('');
- else
- ret = Buffer.concat(list, length);
- list.length = 0;
- } else {
- // read just some of it.
- if (n < list[0].length) {
- // just take a part of the first list item.
- // slice is the same for buffers and strings.
- var buf = list[0];
- ret = buf.slice(0, n);
- list[0] = buf.slice(n);
- } else if (n === list[0].length) {
- // first list is a perfect match
- ret = list.shift();
- } else {
- // complex case.
- // we have enough to cover it, but it spans past the first buffer.
- if (stringMode)
- ret = '';
- else
- ret = new Buffer(n);
-
- var c = 0;
- for (var i = 0, l = list.length; i < l && c < n; i++) {
- var buf = list[0];
- var cpy = Math.min(n - c, buf.length);
-
- if (stringMode)
- ret += buf.slice(0, cpy);
- else
- buf.copy(ret, c, 0, cpy);
-
- if (cpy < buf.length)
- list[0] = buf.slice(cpy);
- else
- list.shift();
-
- c += cpy;
- }
- }
- }
-
- return ret;
-}
-
-function endReadable(stream) {
- var state = stream._readableState;
-
- // If we get here before consuming all the bytes, then that is a
- // bug in node. Should never happen.
- if (state.length > 0)
- throw new Error('endReadable called on non-empty stream');
-
- if (!state.endEmitted && state.calledRead) {
- state.ended = true;
- process.nextTick(function() {
- // Check that we didn't get one last unshift.
- if (!state.endEmitted && state.length === 0) {
- state.endEmitted = true;
- stream.readable = false;
- stream.emit('end');
- }
- });
- }
-}
-
-function forEach (xs, f) {
- for (var i = 0, l = xs.length; i < l; i++) {
- f(xs[i], i);
- }
-}
-
-function indexOf (xs, x) {
- for (var i = 0, l = xs.length; i < l; i++) {
- if (xs[i] === x) return i;
- }
- return -1;
-}
-
-}).call(this,require("Vms28V"))
-},{"Vms28V":6,"buffer":1,"core-util-is":13,"events":4,"inherits":5,"isarray":14,"stream":"IIQG84","string_decoder/":15}],11:[function(require,module,exports){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-// a transform stream is a readable/writable stream where you do
-// something with the data. Sometimes it's called a "filter",
-// but that's not a great name for it, since that implies a thing where
-// some bits pass through, and others are simply ignored. (That would
-// be a valid example of a transform, of course.)
-//
-// While the output is causally related to the input, it's not a
-// necessarily symmetric or synchronous transformation. For example,
-// a zlib stream might take multiple plain-text writes(), and then
-// emit a single compressed chunk some time in the future.
-//
-// Here's how this works:
-//
-// The Transform stream has all the aspects of the readable and writable
-// stream classes. When you write(chunk), that calls _write(chunk,cb)
-// internally, and returns false if there's a lot of pending writes
-// buffered up. When you call read(), that calls _read(n) until
-// there's enough pending readable data buffered up.
-//
-// In a transform stream, the written data is placed in a buffer. When
-// _read(n) is called, it transforms the queued up data, calling the
-// buffered _write cb's as it consumes chunks. If consuming a single
-// written chunk would result in multiple output chunks, then the first
-// outputted bit calls the readcb, and subsequent chunks just go into
-// the read buffer, and will cause it to emit 'readable' if necessary.
-//
-// This way, back-pressure is actually determined by the reading side,
-// since _read has to be called to start processing a new chunk. However,
-// a pathological inflate type of transform can cause excessive buffering
-// here. For example, imagine a stream where every byte of input is
-// interpreted as an integer from 0-255, and then results in that many
-// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
-// 1kb of data being output. In this case, you could write a very small
-// amount of input, and end up with a very large amount of output. In
-// such a pathological inflating mechanism, there'd be no way to tell
-// the system to stop doing the transform. A single 4MB write could
-// cause the system to run out of memory.
-//
-// However, even in such a pathological case, only a single written chunk
-// would be consumed, and then the rest would wait (un-transformed) until
-// the results of the previous transformed chunk were consumed.
-
-module.exports = Transform;
-
-var Duplex = require('./_stream_duplex');
-
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
-
-util.inherits(Transform, Duplex);
-
-
-function TransformState(options, stream) {
- this.afterTransform = function(er, data) {
- return afterTransform(stream, er, data);
- };
-
- this.needTransform = false;
- this.transforming = false;
- this.writecb = null;
- this.writechunk = null;
-}
-
-function afterTransform(stream, er, data) {
- var ts = stream._transformState;
- ts.transforming = false;
-
- var cb = ts.writecb;
-
- if (!cb)
- return stream.emit('error', new Error('no writecb in Transform class'));
-
- ts.writechunk = null;
- ts.writecb = null;
-
- if (data !== null && data !== undefined)
- stream.push(data);
-
- if (cb)
- cb(er);
-
- var rs = stream._readableState;
- rs.reading = false;
- if (rs.needReadable || rs.length < rs.highWaterMark) {
- stream._read(rs.highWaterMark);
- }
-}
-
-
-function Transform(options) {
- if (!(this instanceof Transform))
- return new Transform(options);
-
- Duplex.call(this, options);
-
- var ts = this._transformState = new TransformState(options, this);
-
- // when the writable side finishes, then flush out anything remaining.
- var stream = this;
-
- // start out asking for a readable event once data is transformed.
- this._readableState.needReadable = true;
-
- // we have implemented the _read method, and done the other things
- // that Readable wants before the first _read call, so unset the
- // sync guard flag.
- this._readableState.sync = false;
-
- this.once('finish', function() {
- if ('function' === typeof this._flush)
- this._flush(function(er) {
- done(stream, er);
- });
- else
- done(stream);
- });
-}
-
-Transform.prototype.push = function(chunk, encoding) {
- this._transformState.needTransform = false;
- return Duplex.prototype.push.call(this, chunk, encoding);
-};
-
-// This is the part where you do stuff!
-// override this function in implementation classes.
-// 'chunk' is an input chunk.
-//
-// Call `push(newChunk)` to pass along transformed output
-// to the readable side. You may call 'push' zero or more times.
-//
-// Call `cb(err)` when you are done with this chunk. If you pass
-// an error, then that'll put the hurt on the whole operation. If you
-// never call cb(), then you'll never get another chunk.
-Transform.prototype._transform = function(chunk, encoding, cb) {
- throw new Error('not implemented');
-};
-
-Transform.prototype._write = function(chunk, encoding, cb) {
- var ts = this._transformState;
- ts.writecb = cb;
- ts.writechunk = chunk;
- ts.writeencoding = encoding;
- if (!ts.transforming) {
- var rs = this._readableState;
- if (ts.needTransform ||
- rs.needReadable ||
- rs.length < rs.highWaterMark)
- this._read(rs.highWaterMark);
- }
-};
-
-// Doesn't matter what the args are here.
-// _transform does all the work.
-// That we got here means that the readable side wants more data.
-Transform.prototype._read = function(n) {
- var ts = this._transformState;
-
- if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
- ts.transforming = true;
- this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
- } else {
- // mark that we need a transform, so that any data that comes in
- // will get processed, now that we've asked for it.
- ts.needTransform = true;
- }
-};
-
-
-function done(stream, er) {
- if (er)
- return stream.emit('error', er);
-
- // if there's nothing in the write buffer, then that means
- // that nothing more will ever be provided
- var ws = stream._writableState;
- var rs = stream._readableState;
- var ts = stream._transformState;
-
- if (ws.length)
- throw new Error('calling transform done when ws.length != 0');
-
- if (ts.transforming)
- throw new Error('calling transform done when still transforming');
-
- return stream.push(null);
-}
-
-},{"./_stream_duplex":8,"core-util-is":13,"inherits":5}],12:[function(require,module,exports){
-(function (process){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// A bit simpler than readable streams.
-// Implement an async ._write(chunk, cb), and it'll handle all
-// the drain event emission and buffering.
-
-module.exports = Writable;
-
-/*<replacement>*/
-var Buffer = require('buffer').Buffer;
-/*</replacement>*/
-
-Writable.WritableState = WritableState;
-
-
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
-
-
-var Stream = require('stream');
-
-util.inherits(Writable, Stream);
-
-function WriteReq(chunk, encoding, cb) {
- this.chunk = chunk;
- this.encoding = encoding;
- this.callback = cb;
-}
-
-function WritableState(options, stream) {
- options = options || {};
-
- // the point at which write() starts returning false
- // Note: 0 is a valid value, means that we always return false if
- // the entire buffer is not flushed immediately on write()
- var hwm = options.highWaterMark;
- this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024;
-
- // object stream flag to indicate whether or not this stream
- // contains buffers or objects.
- this.objectMode = !!options.objectMode;
-
- // cast to ints.
- this.highWaterMark = ~~this.highWaterMark;
-
- this.needDrain = false;
- // at the start of calling end()
- this.ending = false;
- // when end() has been called, and returned
- this.ended = false;
- // when 'finish' is emitted
- this.finished = false;
-
- // should we decode strings into buffers before passing to _write?
- // this is here so that some node-core streams can optimize string
- // handling at a lower level.
- var noDecode = options.decodeStrings === false;
- this.decodeStrings = !noDecode;
-
- // Crypto is kind of old and crusty. Historically, its default string
- // encoding is 'binary' so we have to make this configurable.
- // Everything else in the universe uses 'utf8', though.
- this.defaultEncoding = options.defaultEncoding || 'utf8';
-
- // not an actual buffer we keep track of, but a measurement
- // of how much we're waiting to get pushed to some underlying
- // socket or file.
- this.length = 0;
-
- // a flag to see when we're in the middle of a write.
- this.writing = false;
-
- // a flag to be able to tell if the onwrite cb is called immediately,
- // or on a later tick. We set this to true at first, becuase any
- // actions that shouldn't happen until "later" should generally also
- // not happen before the first write call.
- this.sync = true;
-
- // a flag to know if we're processing previously buffered items, which
- // may call the _write() callback in the same tick, so that we don't
- // end up in an overlapped onwrite situation.
- this.bufferProcessing = false;
-
- // the callback that's passed to _write(chunk,cb)
- this.onwrite = function(er) {
- onwrite(stream, er);
- };
-
- // the callback that the user supplies to write(chunk,encoding,cb)
- this.writecb = null;
-
- // the amount that is being written when _write is called.
- this.writelen = 0;
-
- this.buffer = [];
-
- // True if the error was already emitted and should not be thrown again
- this.errorEmitted = false;
-}
-
-function Writable(options) {
- var Duplex = require('./_stream_duplex');
-
- // Writable ctor is applied to Duplexes, though they're not
- // instanceof Writable, they're instanceof Readable.
- if (!(this instanceof Writable) && !(this instanceof Duplex))
- return new Writable(options);
-
- this._writableState = new WritableState(options, this);
-
- // legacy.
- this.writable = true;
-
- Stream.call(this);
-}
-
-// Otherwise people can pipe Writable streams, which is just wrong.
-Writable.prototype.pipe = function() {
- this.emit('error', new Error('Cannot pipe. Not readable.'));
-};
-
-
-function writeAfterEnd(stream, state, cb) {
- var er = new Error('write after end');
- // TODO: defer error events consistently everywhere, not just the cb
- stream.emit('error', er);
- process.nextTick(function() {
- cb(er);
- });
-}
-
-// If we get something that is not a buffer, string, null, or undefined,
-// and we're not in objectMode, then that's an error.
-// Otherwise stream chunks are all considered to be of length=1, and the
-// watermarks determine how many objects to keep in the buffer, rather than
-// how many bytes or characters.
-function validChunk(stream, state, chunk, cb) {
- var valid = true;
- if (!Buffer.isBuffer(chunk) &&
- 'string' !== typeof chunk &&
- chunk !== null &&
- chunk !== undefined &&
- !state.objectMode) {
- var er = new TypeError('Invalid non-string/buffer chunk');
- stream.emit('error', er);
- process.nextTick(function() {
- cb(er);
- });
- valid = false;
- }
- return valid;
-}
-
-Writable.prototype.write = function(chunk, encoding, cb) {
- var state = this._writableState;
- var ret = false;
-
- if (typeof encoding === 'function') {
- cb = encoding;
- encoding = null;
- }
-
- if (Buffer.isBuffer(chunk))
- encoding = 'buffer';
- else if (!encoding)
- encoding = state.defaultEncoding;
-
- if (typeof cb !== 'function')
- cb = function() {};
-
- if (state.ended)
- writeAfterEnd(this, state, cb);
- else if (validChunk(this, state, chunk, cb))
- ret = writeOrBuffer(this, state, chunk, encoding, cb);
-
- return ret;
-};
-
-function decodeChunk(state, chunk, encoding) {
- if (!state.objectMode &&
- state.decodeStrings !== false &&
- typeof chunk === 'string') {
- chunk = new Buffer(chunk, encoding);
- }
- return chunk;
-}
-
-// if we're already writing something, then just put this
-// in the queue, and wait our turn. Otherwise, call _write
-// If we return false, then we need a drain event, so set that flag.
-function writeOrBuffer(stream, state, chunk, encoding, cb) {
- chunk = decodeChunk(state, chunk, encoding);
- if (Buffer.isBuffer(chunk))
- encoding = 'buffer';
- var len = state.objectMode ? 1 : chunk.length;
-
- state.length += len;
-
- var ret = state.length < state.highWaterMark;
- // we must ensure that previous needDrain will not be reset to false.
- if (!ret)
- state.needDrain = true;
-
- if (state.writing)
- state.buffer.push(new WriteReq(chunk, encoding, cb));
- else
- doWrite(stream, state, len, chunk, encoding, cb);
-
- return ret;
-}
-
-function doWrite(stream, state, len, chunk, encoding, cb) {
- state.writelen = len;
- state.writecb = cb;
- state.writing = true;
- state.sync = true;
- stream._write(chunk, encoding, state.onwrite);
- state.sync = false;
-}
-
-function onwriteError(stream, state, sync, er, cb) {
- if (sync)
- process.nextTick(function() {
- cb(er);
- });
- else
- cb(er);
-
- stream._writableState.errorEmitted = true;
- stream.emit('error', er);
-}
-
-function onwriteStateUpdate(state) {
- state.writing = false;
- state.writecb = null;
- state.length -= state.writelen;
- state.writelen = 0;
-}
-
-function onwrite(stream, er) {
- var state = stream._writableState;
- var sync = state.sync;
- var cb = state.writecb;
-
- onwriteStateUpdate(state);
-
- if (er)
- onwriteError(stream, state, sync, er, cb);
- else {
- // Check if we're actually ready to finish, but don't emit yet
- var finished = needFinish(stream, state);
-
- if (!finished && !state.bufferProcessing && state.buffer.length)
- clearBuffer(stream, state);
-
- if (sync) {
- process.nextTick(function() {
- afterWrite(stream, state, finished, cb);
- });
- } else {
- afterWrite(stream, state, finished, cb);
- }
- }
-}
-
-function afterWrite(stream, state, finished, cb) {
- if (!finished)
- onwriteDrain(stream, state);
- cb();
- if (finished)
- finishMaybe(stream, state);
-}
-
-// Must force callback to be called on nextTick, so that we don't
-// emit 'drain' before the write() consumer gets the 'false' return
-// value, and has a chance to attach a 'drain' listener.
-function onwriteDrain(stream, state) {
- if (state.length === 0 && state.needDrain) {
- state.needDrain = false;
- stream.emit('drain');
- }
-}
-
-
-// if there's something in the buffer waiting, then process it
-function clearBuffer(stream, state) {
- state.bufferProcessing = true;
-
- for (var c = 0; c < state.buffer.length; c++) {
- var entry = state.buffer[c];
- var chunk = entry.chunk;
- var encoding = entry.encoding;
- var cb = entry.callback;
- var len = state.objectMode ? 1 : chunk.length;
-
- doWrite(stream, state, len, chunk, encoding, cb);
-
- // if we didn't call the onwrite immediately, then
- // it means that we need to wait until it does.
- // also, that means that the chunk and cb are currently
- // being processed, so move the buffer counter past them.
- if (state.writing) {
- c++;
- break;
- }
- }
-
- state.bufferProcessing = false;
- if (c < state.buffer.length)
- state.buffer = state.buffer.slice(c);
- else
- state.buffer.length = 0;
-}
-
-Writable.prototype._write = function(chunk, encoding, cb) {
- cb(new Error('not implemented'));
-};
-
-Writable.prototype.end = function(chunk, encoding, cb) {
- var state = this._writableState;
-
- if (typeof chunk === 'function') {
- cb = chunk;
- chunk = null;
- encoding = null;
- } else if (typeof encoding === 'function') {
- cb = encoding;
- encoding = null;
- }
-
- if (typeof chunk !== 'undefined' && chunk !== null)
- this.write(chunk, encoding);
-
- // ignore unnecessary end() calls.
- if (!state.ending && !state.finished)
- endWritable(this, state, cb);
-};
-
-
-function needFinish(stream, state) {
- return (state.ending &&
- state.length === 0 &&
- !state.finished &&
- !state.writing);
-}
-
-function finishMaybe(stream, state) {
- var need = needFinish(stream, state);
- if (need) {
- state.finished = true;
- stream.emit('finish');
- }
- return need;
-}
-
-function endWritable(stream, state, cb) {
- state.ending = true;
- finishMaybe(stream, state);
- if (cb) {
- if (state.finished)
- process.nextTick(cb);
- else
- stream.once('finish', cb);
- }
- state.ended = true;
-}
-
-}).call(this,require("Vms28V"))
-},{"./_stream_duplex":8,"Vms28V":6,"buffer":1,"core-util-is":13,"inherits":5,"stream":"IIQG84"}],13:[function(require,module,exports){
-(function (Buffer){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-// NOTE: These type checking functions intentionally don't use `instanceof`
-// because it is fragile and can be easily faked with `Object.create()`.
-function isArray(ar) {
- return Array.isArray(ar);
-}
-exports.isArray = isArray;
-
-function isBoolean(arg) {
- return typeof arg === 'boolean';
-}
-exports.isBoolean = isBoolean;
-
-function isNull(arg) {
- return arg === null;
-}
-exports.isNull = isNull;
-
-function isNullOrUndefined(arg) {
- return arg == null;
-}
-exports.isNullOrUndefined = isNullOrUndefined;
-
-function isNumber(arg) {
- return typeof arg === 'number';
-}
-exports.isNumber = isNumber;
-
-function isString(arg) {
- return typeof arg === 'string';
-}
-exports.isString = isString;
-
-function isSymbol(arg) {
- return typeof arg === 'symbol';
-}
-exports.isSymbol = isSymbol;
-
-function isUndefined(arg) {
- return arg === void 0;
-}
-exports.isUndefined = isUndefined;
-
-function isRegExp(re) {
- return isObject(re) && objectToString(re) === '[object RegExp]';
-}
-exports.isRegExp = isRegExp;
-
-function isObject(arg) {
- return typeof arg === 'object' && arg !== null;
-}
-exports.isObject = isObject;
-
-function isDate(d) {
- return isObject(d) && objectToString(d) === '[object Date]';
-}
-exports.isDate = isDate;
-
-function isError(e) {
- return isObject(e) &&
- (objectToString(e) === '[object Error]' || e instanceof Error);
-}
-exports.isError = isError;
-
-function isFunction(arg) {
- return typeof arg === 'function';
-}
-exports.isFunction = isFunction;
-
-function isPrimitive(arg) {
- return arg === null ||
- typeof arg === 'boolean' ||
- typeof arg === 'number' ||
- typeof arg === 'string' ||
- typeof arg === 'symbol' || // ES6 symbol
- typeof arg === 'undefined';
-}
-exports.isPrimitive = isPrimitive;
-
-function isBuffer(arg) {
- return Buffer.isBuffer(arg);
-}
-exports.isBuffer = isBuffer;
-
-function objectToString(o) {
- return Object.prototype.toString.call(o);
-}
-}).call(this,require("buffer").Buffer)
-},{"buffer":1}],14:[function(require,module,exports){
-module.exports = Array.isArray || function (arr) {
- return Object.prototype.toString.call(arr) == '[object Array]';
-};
-
-},{}],15:[function(require,module,exports){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var Buffer = require('buffer').Buffer;
-
-var isBufferEncoding = Buffer.isEncoding
- || function(encoding) {
- switch (encoding && encoding.toLowerCase()) {
- case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;
- default: return false;
- }
- }
-
-
-function assertEncoding(encoding) {
- if (encoding && !isBufferEncoding(encoding)) {
- throw new Error('Unknown encoding: ' + encoding);
- }
-}
-
-var StringDecoder = exports.StringDecoder = function(encoding) {
- this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
- assertEncoding(encoding);
- switch (this.encoding) {
- case 'utf8':
- // CESU-8 represents each of Surrogate Pair by 3-bytes
- this.surrogateSize = 3;
- break;
- case 'ucs2':
- case 'utf16le':
- // UTF-16 represents each of Surrogate Pair by 2-bytes
- this.surrogateSize = 2;
- this.detectIncompleteChar = utf16DetectIncompleteChar;
- break;
- case 'base64':
- // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
- this.surrogateSize = 3;
- this.detectIncompleteChar = base64DetectIncompleteChar;
- break;
- default:
- this.write = passThroughWrite;
- return;
- }
-
- this.charBuffer = new Buffer(6);
- this.charReceived = 0;
- this.charLength = 0;
-};
-
-
-StringDecoder.prototype.write = function(buffer) {
- var charStr = '';
- var offset = 0;
-
- // if our last write ended with an incomplete multibyte character
- while (this.charLength) {
- // determine how many remaining bytes this buffer has to offer for this char
- var i = (buffer.length >= this.charLength - this.charReceived) ?
- this.charLength - this.charReceived :
- buffer.length;
-
- // add the new bytes to the char buffer
- buffer.copy(this.charBuffer, this.charReceived, offset, i);
- this.charReceived += (i - offset);
- offset = i;
-
- if (this.charReceived < this.charLength) {
- // still not enough chars in this buffer? wait for more ...
- return '';
- }
-
- // get the character that was split
- charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
-
- // lead surrogate (D800-DBFF) is also the incomplete character
- var charCode = charStr.charCodeAt(charStr.length - 1);
- if (charCode >= 0xD800 && charCode <= 0xDBFF) {
- this.charLength += this.surrogateSize;
- charStr = '';
- continue;
- }
- this.charReceived = this.charLength = 0;
-
- // if there are no more bytes in this buffer, just emit our char
- if (i == buffer.length) return charStr;
-
- // otherwise cut off the characters end from the beginning of this buffer
- buffer = buffer.slice(i, buffer.length);
- break;
- }
-
- var lenIncomplete = this.detectIncompleteChar(buffer);
-
- var end = buffer.length;
- if (this.charLength) {
- // buffer the incomplete character bytes we got
- buffer.copy(this.charBuffer, 0, buffer.length - lenIncomplete, end);
- this.charReceived = lenIncomplete;
- end -= lenIncomplete;
- }
-
- charStr += buffer.toString(this.encoding, 0, end);
-
- var end = charStr.length - 1;
- var charCode = charStr.charCodeAt(end);
- // lead surrogate (D800-DBFF) is also the incomplete character
- if (charCode >= 0xD800 && charCode <= 0xDBFF) {
- var size = this.surrogateSize;
- this.charLength += size;
- this.charReceived += size;
- this.charBuffer.copy(this.charBuffer, size, 0, size);
- this.charBuffer.write(charStr.charAt(charStr.length - 1), this.encoding);
- return charStr.substring(0, end);
- }
-
- // or just emit the charStr
- return charStr;
-};
-
-StringDecoder.prototype.detectIncompleteChar = function(buffer) {
- // determine how many bytes we have to check at the end of this buffer
- var i = (buffer.length >= 3) ? 3 : buffer.length;
-
- // Figure out if one of the last i bytes of our buffer announces an
- // incomplete char.
- for (; i > 0; i--) {
- var c = buffer[buffer.length - i];
-
- // See http://en.wikipedia.org/wiki/UTF-8#Description
-
- // 110XXXXX
- if (i == 1 && c >> 5 == 0x06) {
- this.charLength = 2;
- break;
- }
-
- // 1110XXXX
- if (i <= 2 && c >> 4 == 0x0E) {
- this.charLength = 3;
- break;
- }
-
- // 11110XXX
- if (i <= 3 && c >> 3 == 0x1E) {
- this.charLength = 4;
- break;
- }
- }
-
- return i;
-};
-
-StringDecoder.prototype.end = function(buffer) {
- var res = '';
- if (buffer && buffer.length)
- res = this.write(buffer);
-
- if (this.charReceived) {
- var cr = this.charReceived;
- var buf = this.charBuffer;
- var enc = this.encoding;
- res += buf.slice(0, cr).toString(enc);
- }
-
- return res;
-};
-
-function passThroughWrite(buffer) {
- return buffer.toString(this.encoding);
-}
-
-function utf16DetectIncompleteChar(buffer) {
- var incomplete = this.charReceived = buffer.length % 2;
- this.charLength = incomplete ? 2 : 0;
- return incomplete;
-}
-
-function base64DetectIncompleteChar(buffer) {
- var incomplete = this.charReceived = buffer.length % 3;
- this.charLength = incomplete ? 3 : 0;
- return incomplete;
-}
-
-},{"buffer":1}],16:[function(require,module,exports){
-module.exports = require("./lib/_stream_passthrough.js")
-
-},{"./lib/_stream_passthrough.js":9}],17:[function(require,module,exports){
-exports = module.exports = require('./lib/_stream_readable.js');
-exports.Readable = exports;
-exports.Writable = require('./lib/_stream_writable.js');
-exports.Duplex = require('./lib/_stream_duplex.js');
-exports.Transform = require('./lib/_stream_transform.js');
-exports.PassThrough = require('./lib/_stream_passthrough.js');
-
-},{"./lib/_stream_duplex.js":8,"./lib/_stream_passthrough.js":9,"./lib/_stream_readable.js":10,"./lib/_stream_transform.js":11,"./lib/_stream_writable.js":12}],18:[function(require,module,exports){
-module.exports = require("./lib/_stream_transform.js")
-
-},{"./lib/_stream_transform.js":11}],19:[function(require,module,exports){
-module.exports = require("./lib/_stream_writable.js")
-
-},{"./lib/_stream_writable.js":12}],"IIQG84":[function(require,module,exports){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-module.exports = Stream;
-
-var EE = require('events').EventEmitter;
-var inherits = require('inherits');
-
-inherits(Stream, EE);
-Stream.Readable = require('readable-stream/readable.js');
-Stream.Writable = require('readable-stream/writable.js');
-Stream.Duplex = require('readable-stream/duplex.js');
-Stream.Transform = require('readable-stream/transform.js');
-Stream.PassThrough = require('readable-stream/passthrough.js');
-
-// Backwards-compat with node 0.4.x
-Stream.Stream = Stream;
-
-
-
-// old-style streams. Note that the pipe method (the only relevant
-// part of this class) is overridden in the Readable class.
-
-function Stream() {
- EE.call(this);
-}
-
-Stream.prototype.pipe = function(dest, options) {
- var source = this;
-
- function ondata(chunk) {
- if (dest.writable) {
- if (false === dest.write(chunk) && source.pause) {
- source.pause();
- }
- }
- }
-
- source.on('data', ondata);
-
- function ondrain() {
- if (source.readable && source.resume) {
- source.resume();
- }
- }
-
- dest.on('drain', ondrain);
-
- // If the 'end' option is not supplied, dest.end() will be called when
- // source gets the 'end' or 'close' events. Only dest.end() once.
- if (!dest._isStdio && (!options || options.end !== false)) {
- source.on('end', onend);
- source.on('close', onclose);
- }
-
- var didOnEnd = false;
- function onend() {
- if (didOnEnd) return;
- didOnEnd = true;
-
- dest.end();
- }
-
-
- function onclose() {
- if (didOnEnd) return;
- didOnEnd = true;
-
- if (typeof dest.destroy === 'function') dest.destroy();
- }
-
- // don't leave dangling pipes when there are errors.
- function onerror(er) {
- cleanup();
- if (EE.listenerCount(this, 'error') === 0) {
- throw er; // Unhandled stream error in pipe.
- }
- }
-
- source.on('error', onerror);
- dest.on('error', onerror);
-
- // remove all the event listeners that were added.
- function cleanup() {
- source.removeListener('data', ondata);
- dest.removeListener('drain', ondrain);
-
- source.removeListener('end', onend);
- source.removeListener('close', onclose);
-
- source.removeListener('error', onerror);
- dest.removeListener('error', onerror);
-
- source.removeListener('end', cleanup);
- source.removeListener('close', cleanup);
-
- dest.removeListener('close', cleanup);
- }
-
- source.on('end', cleanup);
- source.on('close', cleanup);
-
- dest.on('close', cleanup);
-
- dest.emit('pipe', source);
-
- // Allow for unix-like usage: A.pipe(B).pipe(C)
- return dest;
-};
-
-},{"events":4,"inherits":5,"readable-stream/duplex.js":7,"readable-stream/passthrough.js":16,"readable-stream/readable.js":17,"readable-stream/transform.js":18,"readable-stream/writable.js":19}],"stream":[function(require,module,exports){
-module.exports=require('IIQG84');
-},{}]},{},[])
\ No newline at end of file
diff --git a/examples/pipetobrowser/browser/libs/vendor/traceur/traceur.js b/examples/pipetobrowser/browser/libs/vendor/traceur/traceur.js
deleted file mode 100644
index 6542e3a..0000000
--- a/examples/pipetobrowser/browser/libs/vendor/traceur/traceur.js
+++ /dev/null
@@ -1,21801 +0,0 @@
-(function(global) {
- 'use strict';
- if (global.$traceurRuntime) {
- return;
- }
- var $Object = Object;
- var $TypeError = TypeError;
- var $create = $Object.create;
- var $defineProperties = $Object.defineProperties;
- var $defineProperty = $Object.defineProperty;
- var $freeze = $Object.freeze;
- var $getOwnPropertyDescriptor = $Object.getOwnPropertyDescriptor;
- var $getOwnPropertyNames = $Object.getOwnPropertyNames;
- var $getPrototypeOf = $Object.getPrototypeOf;
- var $hasOwnProperty = $Object.prototype.hasOwnProperty;
- var $toString = $Object.prototype.toString;
- function nonEnum(value) {
- return {
- configurable: true,
- enumerable: false,
- value: value,
- writable: true
- };
- }
- var types = {
- void: function voidType() {},
- any: function any() {},
- string: function string() {},
- number: function number() {},
- boolean: function boolean() {}
- };
- var method = nonEnum;
- var counter = 0;
- function newUniqueString() {
- return '__$' + Math.floor(Math.random() * 1e9) + '$' + ++counter + '$__';
- }
- var symbolInternalProperty = newUniqueString();
- var symbolDescriptionProperty = newUniqueString();
- var symbolDataProperty = newUniqueString();
- var symbolValues = $create(null);
- function isSymbol(symbol) {
- return typeof symbol === 'object' && symbol instanceof SymbolValue;
- }
- function typeOf(v) {
- if (isSymbol(v))
- return 'symbol';
- return typeof v;
- }
- function Symbol(description) {
- var value = new SymbolValue(description);
- if (!(this instanceof Symbol))
- return value;
- throw new TypeError('Symbol cannot be new\'ed');
- }
- $defineProperty(Symbol.prototype, 'constructor', nonEnum(Symbol));
- $defineProperty(Symbol.prototype, 'toString', method(function() {
- var symbolValue = this[symbolDataProperty];
- if (!getOption('symbols'))
- return symbolValue[symbolInternalProperty];
- if (!symbolValue)
- throw TypeError('Conversion from symbol to string');
- var desc = symbolValue[symbolDescriptionProperty];
- if (desc === undefined)
- desc = '';
- return 'Symbol(' + desc + ')';
- }));
- $defineProperty(Symbol.prototype, 'valueOf', method(function() {
- var symbolValue = this[symbolDataProperty];
- if (!symbolValue)
- throw TypeError('Conversion from symbol to string');
- if (!getOption('symbols'))
- return symbolValue[symbolInternalProperty];
- return symbolValue;
- }));
- function SymbolValue(description) {
- var key = newUniqueString();
- $defineProperty(this, symbolDataProperty, {value: this});
- $defineProperty(this, symbolInternalProperty, {value: key});
- $defineProperty(this, symbolDescriptionProperty, {value: description});
- $freeze(this);
- symbolValues[key] = this;
- }
- $defineProperty(SymbolValue.prototype, 'constructor', nonEnum(Symbol));
- $defineProperty(SymbolValue.prototype, 'toString', {
- value: Symbol.prototype.toString,
- enumerable: false
- });
- $defineProperty(SymbolValue.prototype, 'valueOf', {
- value: Symbol.prototype.valueOf,
- enumerable: false
- });
- $freeze(SymbolValue.prototype);
- Symbol.iterator = Symbol();
- function toProperty(name) {
- if (isSymbol(name))
- return name[symbolInternalProperty];
- return name;
- }
- function getOwnPropertyNames(object) {
- var rv = [];
- var names = $getOwnPropertyNames(object);
- for (var i = 0; i < names.length; i++) {
- var name = names[i];
- if (!symbolValues[name])
- rv.push(name);
- }
- return rv;
- }
- function getOwnPropertyDescriptor(object, name) {
- return $getOwnPropertyDescriptor(object, toProperty(name));
- }
- function getOwnPropertySymbols(object) {
- var rv = [];
- var names = $getOwnPropertyNames(object);
- for (var i = 0; i < names.length; i++) {
- var symbol = symbolValues[names[i]];
- if (symbol)
- rv.push(symbol);
- }
- return rv;
- }
- function hasOwnProperty(name) {
- return $hasOwnProperty.call(this, toProperty(name));
- }
- function getOption(name) {
- return global.traceur && global.traceur.options[name];
- }
- function setProperty(object, name, value) {
- var sym,
- desc;
- if (isSymbol(name)) {
- sym = name;
- name = name[symbolInternalProperty];
- }
- object[name] = value;
- if (sym && (desc = $getOwnPropertyDescriptor(object, name)))
- $defineProperty(object, name, {enumerable: false});
- return value;
- }
- function defineProperty(object, name, descriptor) {
- if (isSymbol(name)) {
- if (descriptor.enumerable) {
- descriptor = $create(descriptor, {enumerable: {value: false}});
- }
- name = name[symbolInternalProperty];
- }
- $defineProperty(object, name, descriptor);
- return object;
- }
- function polyfillObject(Object) {
- $defineProperty(Object, 'defineProperty', {value: defineProperty});
- $defineProperty(Object, 'getOwnPropertyNames', {value: getOwnPropertyNames});
- $defineProperty(Object, 'getOwnPropertyDescriptor', {value: getOwnPropertyDescriptor});
- $defineProperty(Object.prototype, 'hasOwnProperty', {value: hasOwnProperty});
- Object.getOwnPropertySymbols = getOwnPropertySymbols;
- function is(left, right) {
- if (left === right)
- return left !== 0 || 1 / left === 1 / right;
- return left !== left && right !== right;
- }
- $defineProperty(Object, 'is', method(is));
- function assign(target, source) {
- var props = $getOwnPropertyNames(source);
- var p,
- length = props.length;
- for (p = 0; p < length; p++) {
- target[props[p]] = source[props[p]];
- }
- return target;
- }
- $defineProperty(Object, 'assign', method(assign));
- function mixin(target, source) {
- var props = $getOwnPropertyNames(source);
- var p,
- descriptor,
- length = props.length;
- for (p = 0; p < length; p++) {
- descriptor = $getOwnPropertyDescriptor(source, props[p]);
- $defineProperty(target, props[p], descriptor);
- }
- return target;
- }
- $defineProperty(Object, 'mixin', method(mixin));
- }
- function exportStar(object) {
- for (var i = 1; i < arguments.length; i++) {
- var names = $getOwnPropertyNames(arguments[i]);
- for (var j = 0; j < names.length; j++) {
- (function(mod, name) {
- $defineProperty(object, name, {
- get: function() {
- return mod[name];
- },
- enumerable: true
- });
- })(arguments[i], names[j]);
- }
- }
- return object;
- }
- function toObject(value) {
- if (value == null)
- throw $TypeError();
- return $Object(value);
- }
- function spread() {
- var rv = [],
- k = 0;
- for (var i = 0; i < arguments.length; i++) {
- var valueToSpread = toObject(arguments[i]);
- for (var j = 0; j < valueToSpread.length; j++) {
- rv[k++] = valueToSpread[j];
- }
- }
- return rv;
- }
- function getPropertyDescriptor(object, name) {
- while (object !== null) {
- var result = $getOwnPropertyDescriptor(object, name);
- if (result)
- return result;
- object = $getPrototypeOf(object);
- }
- return undefined;
- }
- function superDescriptor(homeObject, name) {
- var proto = $getPrototypeOf(homeObject);
- if (!proto)
- throw $TypeError('super is null');
- return getPropertyDescriptor(proto, name);
- }
- function superCall(self, homeObject, name, args) {
- var descriptor = superDescriptor(homeObject, name);
- if (descriptor) {
- if ('value' in descriptor)
- return descriptor.value.apply(self, args);
- if (descriptor.get)
- return descriptor.get.call(self).apply(self, args);
- }
- throw $TypeError("super has no method '" + name + "'.");
- }
- function superGet(self, homeObject, name) {
- var descriptor = superDescriptor(homeObject, name);
- if (descriptor) {
- if (descriptor.get)
- return descriptor.get.call(self);
- else if ('value' in descriptor)
- return descriptor.value;
- }
- return undefined;
- }
- function superSet(self, homeObject, name, value) {
- var descriptor = superDescriptor(homeObject, name);
- if (descriptor && descriptor.set) {
- descriptor.set.call(self, value);
- return value;
- }
- throw $TypeError("super has no setter '" + name + "'.");
- }
- function getDescriptors(object) {
- var descriptors = {},
- name,
- names = $getOwnPropertyNames(object);
- for (var i = 0; i < names.length; i++) {
- var name = names[i];
- descriptors[name] = $getOwnPropertyDescriptor(object, name);
- }
- return descriptors;
- }
- function createClass(ctor, object, staticObject, superClass) {
- $defineProperty(object, 'constructor', {
- value: ctor,
- configurable: true,
- enumerable: false,
- writable: true
- });
- if (arguments.length > 3) {
- if (typeof superClass === 'function')
- ctor.__proto__ = superClass;
- ctor.prototype = $create(getProtoParent(superClass), getDescriptors(object));
- } else {
- ctor.prototype = object;
- }
- $defineProperty(ctor, 'prototype', {
- configurable: false,
- writable: false
- });
- return $defineProperties(ctor, getDescriptors(staticObject));
- }
- function getProtoParent(superClass) {
- if (typeof superClass === 'function') {
- var prototype = superClass.prototype;
- if ($Object(prototype) === prototype || prototype === null)
- return superClass.prototype;
- }
- if (superClass === null)
- return null;
- throw new TypeError();
- }
- function defaultSuperCall(self, homeObject, args) {
- if ($getPrototypeOf(homeObject) !== null)
- superCall(self, homeObject, 'constructor', args);
- }
- var ST_NEWBORN = 0;
- var ST_EXECUTING = 1;
- var ST_SUSPENDED = 2;
- var ST_CLOSED = 3;
- var END_STATE = -2;
- var RETHROW_STATE = -3;
- function addIterator(object) {
- return defineProperty(object, Symbol.iterator, nonEnum(function() {
- return this;
- }));
- }
- function getInternalError(state) {
- return new Error('Traceur compiler bug: invalid state in state machine: ' + state);
- }
- function GeneratorContext() {
- this.state = 0;
- this.GState = ST_NEWBORN;
- this.storedException = undefined;
- this.finallyFallThrough = undefined;
- this.sent_ = undefined;
- this.returnValue = undefined;
- this.tryStack_ = [];
- }
- GeneratorContext.prototype = {
- pushTry: function(catchState, finallyState) {
- if (finallyState !== null) {
- var finallyFallThrough = null;
- for (var i = this.tryStack_.length - 1; i >= 0; i--) {
- if (this.tryStack_[i].catch !== undefined) {
- finallyFallThrough = this.tryStack_[i].catch;
- break;
- }
- }
- if (finallyFallThrough === null)
- finallyFallThrough = RETHROW_STATE;
- this.tryStack_.push({
- finally: finallyState,
- finallyFallThrough: finallyFallThrough
- });
- }
- if (catchState !== null) {
- this.tryStack_.push({catch: catchState});
- }
- },
- popTry: function() {
- this.tryStack_.pop();
- },
- get sent() {
- this.maybeThrow();
- return this.sent_;
- },
- set sent(v) {
- this.sent_ = v;
- },
- get sentIgnoreThrow() {
- return this.sent_;
- },
- maybeThrow: function() {
- if (this.action === 'throw') {
- this.action = 'next';
- throw this.sent_;
- }
- },
- end: function() {
- switch (this.state) {
- case END_STATE:
- return this;
- case RETHROW_STATE:
- throw this.storedException;
- default:
- throw getInternalError(this.state);
- }
- }
- };
- function getNextOrThrow(ctx, moveNext, action) {
- return function(x) {
- switch (ctx.GState) {
- case ST_EXECUTING:
- throw new Error(("\"" + action + "\" on executing generator"));
- case ST_CLOSED:
- throw new Error(("\"" + action + "\" on closed generator"));
- case ST_NEWBORN:
- if (action === 'throw') {
- ctx.GState = ST_CLOSED;
- throw x;
- }
- if (x !== undefined)
- throw $TypeError('Sent value to newborn generator');
- case ST_SUSPENDED:
- ctx.GState = ST_EXECUTING;
- ctx.action = action;
- ctx.sent = x;
- var value = moveNext(ctx);
- var done = value === ctx;
- if (done)
- value = ctx.returnValue;
- ctx.GState = done ? ST_CLOSED : ST_SUSPENDED;
- return {
- value: value,
- done: done
- };
- }
- };
- }
- function generatorWrap(innerFunction, self) {
- var moveNext = getMoveNext(innerFunction, self);
- var ctx = new GeneratorContext();
- return addIterator({
- next: getNextOrThrow(ctx, moveNext, 'next'),
- throw: getNextOrThrow(ctx, moveNext, 'throw')
- });
- }
- function AsyncFunctionContext() {
- GeneratorContext.call(this);
- this.err = undefined;
- var ctx = this;
- ctx.result = new Promise(function(resolve, reject) {
- ctx.resolve = resolve;
- ctx.reject = reject;
- });
- }
- AsyncFunctionContext.prototype = Object.create(GeneratorContext.prototype);
- AsyncFunctionContext.prototype.end = function() {
- switch (this.state) {
- case END_STATE:
- return;
- case RETHROW_STATE:
- this.reject(this.storedException);
- default:
- this.reject(getInternalError(this.state));
- }
- };
- function asyncWrap(innerFunction, self) {
- var moveNext = getMoveNext(innerFunction, self);
- var ctx = new AsyncFunctionContext();
- ctx.createCallback = function(newState) {
- return function(value) {
- ctx.state = newState;
- ctx.value = value;
- moveNext(ctx);
- };
- };
- ctx.createErrback = function(newState) {
- return function(err) {
- ctx.state = newState;
- ctx.err = err;
- moveNext(ctx);
- };
- };
- moveNext(ctx);
- return ctx.result;
- }
- function getMoveNext(innerFunction, self) {
- return function(ctx) {
- while (true) {
- try {
- return innerFunction.call(self, ctx);
- } catch (ex) {
- ctx.storedException = ex;
- var last = ctx.tryStack_[ctx.tryStack_.length - 1];
- if (!last) {
- ctx.GState = ST_CLOSED;
- ctx.state = END_STATE;
- throw ex;
- }
- ctx.state = last.catch !== undefined ? last.catch : last.finally;
- if (last.finallyFallThrough !== undefined)
- ctx.finallyFallThrough = last.finallyFallThrough;
- }
- }
- };
- }
- function setupGlobals(global) {
- global.Symbol = Symbol;
- polyfillObject(global.Object);
- }
- setupGlobals(global);
- global.$traceurRuntime = {
- asyncWrap: asyncWrap,
- createClass: createClass,
- defaultSuperCall: defaultSuperCall,
- exportStar: exportStar,
- generatorWrap: generatorWrap,
- setProperty: setProperty,
- setupGlobals: setupGlobals,
- spread: spread,
- superCall: superCall,
- superGet: superGet,
- superSet: superSet,
- toObject: toObject,
- toProperty: toProperty,
- type: types,
- typeof: typeOf
- };
-})(typeof global !== 'undefined' ? global : this);
-(function() {
- function buildFromEncodedParts(opt_scheme, opt_userInfo, opt_domain, opt_port, opt_path, opt_queryData, opt_fragment) {
- var out = [];
- if (opt_scheme) {
- out.push(opt_scheme, ':');
- }
- if (opt_domain) {
- out.push('//');
- if (opt_userInfo) {
- out.push(opt_userInfo, '@');
- }
- out.push(opt_domain);
- if (opt_port) {
- out.push(':', opt_port);
- }
- }
- if (opt_path) {
- out.push(opt_path);
- }
- if (opt_queryData) {
- out.push('?', opt_queryData);
- }
- if (opt_fragment) {
- out.push('#', opt_fragment);
- }
- return out.join('');
- }
- ;
- var splitRe = new RegExp('^' + '(?:' + '([^:/?#.]+)' + ':)?' + '(?://' + '(?:([^/?#]*)@)?' + '([\\w\\d\\-\\u0100-\\uffff.%]*)' + '(?::([0-9]+))?' + ')?' + '([^?#]+)?' + '(?:\\?([^#]*))?' + '(?:#(.*))?' + '$');
- var ComponentIndex = {
- SCHEME: 1,
- USER_INFO: 2,
- DOMAIN: 3,
- PORT: 4,
- PATH: 5,
- QUERY_DATA: 6,
- FRAGMENT: 7
- };
- function split(uri) {
- return (uri.match(splitRe));
- }
- function removeDotSegments(path) {
- if (path === '/')
- return '/';
- var leadingSlash = path[0] === '/' ? '/' : '';
- var trailingSlash = path.slice(-1) === '/' ? '/' : '';
- var segments = path.split('/');
- var out = [];
- var up = 0;
- for (var pos = 0; pos < segments.length; pos++) {
- var segment = segments[pos];
- switch (segment) {
- case '':
- case '.':
- break;
- case '..':
- if (out.length)
- out.pop();
- else
- up++;
- break;
- default:
- out.push(segment);
- }
- }
- if (!leadingSlash) {
- while (up-- > 0) {
- out.unshift('..');
- }
- if (out.length === 0)
- out.push('.');
- }
- return leadingSlash + out.join('/') + trailingSlash;
- }
- function joinAndCanonicalizePath(parts) {
- var path = parts[ComponentIndex.PATH] || '';
- path = removeDotSegments(path);
- parts[ComponentIndex.PATH] = path;
- return buildFromEncodedParts(parts[ComponentIndex.SCHEME], parts[ComponentIndex.USER_INFO], parts[ComponentIndex.DOMAIN], parts[ComponentIndex.PORT], parts[ComponentIndex.PATH], parts[ComponentIndex.QUERY_DATA], parts[ComponentIndex.FRAGMENT]);
- }
- function canonicalizeUrl(url) {
- var parts = split(url);
- return joinAndCanonicalizePath(parts);
- }
- function resolveUrl(base, url) {
- var parts = split(url);
- var baseParts = split(base);
- if (parts[ComponentIndex.SCHEME]) {
- return joinAndCanonicalizePath(parts);
- } else {
- parts[ComponentIndex.SCHEME] = baseParts[ComponentIndex.SCHEME];
- }
- for (var i = ComponentIndex.SCHEME; i <= ComponentIndex.PORT; i++) {
- if (!parts[i]) {
- parts[i] = baseParts[i];
- }
- }
- if (parts[ComponentIndex.PATH][0] == '/') {
- return joinAndCanonicalizePath(parts);
- }
- var path = baseParts[ComponentIndex.PATH];
- var index = path.lastIndexOf('/');
- path = path.slice(0, index + 1) + parts[ComponentIndex.PATH];
- parts[ComponentIndex.PATH] = path;
- return joinAndCanonicalizePath(parts);
- }
- function isAbsolute(name) {
- if (!name)
- return false;
- if (name[0] === '/')
- return true;
- var parts = split(name);
- if (parts[ComponentIndex.SCHEME])
- return true;
- return false;
- }
- $traceurRuntime.canonicalizeUrl = canonicalizeUrl;
- $traceurRuntime.isAbsolute = isAbsolute;
- $traceurRuntime.removeDotSegments = removeDotSegments;
- $traceurRuntime.resolveUrl = resolveUrl;
-})();
-(function(global) {
- 'use strict';
- var $__2 = $traceurRuntime,
- canonicalizeUrl = $__2.canonicalizeUrl,
- resolveUrl = $__2.resolveUrl,
- isAbsolute = $__2.isAbsolute;
- var moduleInstantiators = Object.create(null);
- var baseURL;
- if (global.location && global.location.href)
- baseURL = resolveUrl(global.location.href, './');
- else
- baseURL = '';
- var UncoatedModuleEntry = function UncoatedModuleEntry(url, uncoatedModule) {
- this.url = url;
- this.value_ = uncoatedModule;
- };
- ($traceurRuntime.createClass)(UncoatedModuleEntry, {}, {});
- var UncoatedModuleInstantiator = function UncoatedModuleInstantiator(url, func) {
- $traceurRuntime.superCall(this, $UncoatedModuleInstantiator.prototype, "constructor", [url, null]);
- this.func = func;
- };
- var $UncoatedModuleInstantiator = UncoatedModuleInstantiator;
- ($traceurRuntime.createClass)(UncoatedModuleInstantiator, {getUncoatedModule: function() {
- if (this.value_)
- return this.value_;
- return this.value_ = this.func.call(global);
- }}, {}, UncoatedModuleEntry);
- function getUncoatedModuleInstantiator(name) {
- if (!name)
- return;
- var url = ModuleStore.normalize(name);
- return moduleInstantiators[url];
- }
- ;
- var moduleInstances = Object.create(null);
- var liveModuleSentinel = {};
- function Module(uncoatedModule) {
- var isLive = arguments[1];
- var coatedModule = Object.create(null);
- Object.getOwnPropertyNames(uncoatedModule).forEach((function(name) {
- var getter,
- value;
- if (isLive === liveModuleSentinel) {
- var descr = Object.getOwnPropertyDescriptor(uncoatedModule, name);
- if (descr.get)
- getter = descr.get;
- }
- if (!getter) {
- value = uncoatedModule[name];
- getter = function() {
- return value;
- };
- }
- Object.defineProperty(coatedModule, name, {
- get: getter,
- enumerable: true
- });
- }));
- Object.preventExtensions(coatedModule);
- return coatedModule;
- }
- var ModuleStore = {
- normalize: function(name, refererName, refererAddress) {
- if (typeof name !== "string")
- throw new TypeError("module name must be a string, not " + typeof name);
- if (isAbsolute(name))
- return canonicalizeUrl(name);
- if (/[^\.]\/\.\.\//.test(name)) {
- throw new Error('module name embeds /../: ' + name);
- }
- if (name[0] === '.' && refererName)
- return resolveUrl(refererName, name);
- return canonicalizeUrl(name);
- },
- get: function(normalizedName) {
- var m = getUncoatedModuleInstantiator(normalizedName);
- if (!m)
- return undefined;
- var moduleInstance = moduleInstances[m.url];
- if (moduleInstance)
- return moduleInstance;
- moduleInstance = Module(m.getUncoatedModule(), liveModuleSentinel);
- return moduleInstances[m.url] = moduleInstance;
- },
- set: function(normalizedName, module) {
- normalizedName = String(normalizedName);
- moduleInstantiators[normalizedName] = new UncoatedModuleInstantiator(normalizedName, (function() {
- return module;
- }));
- moduleInstances[normalizedName] = module;
- },
- get baseURL() {
- return baseURL;
- },
- set baseURL(v) {
- baseURL = String(v);
- },
- registerModule: function(name, func) {
- var normalizedName = ModuleStore.normalize(name);
- if (moduleInstantiators[normalizedName])
- throw new Error('duplicate module named ' + normalizedName);
- moduleInstantiators[normalizedName] = new UncoatedModuleInstantiator(normalizedName, func);
- },
- bundleStore: Object.create(null),
- register: function(name, deps, func) {
- if (!deps || !deps.length) {
- this.registerModule(name, func);
- } else {
- this.bundleStore[name] = {
- deps: deps,
- execute: func
- };
- }
- },
- getAnonymousModule: function(func) {
- return new Module(func.call(global), liveModuleSentinel);
- },
- getForTesting: function(name) {
- var $__0 = this;
- if (!this.testingPrefix_) {
- Object.keys(moduleInstances).some((function(key) {
- var m = /(traceur@[^\/]*\/)/.exec(key);
- if (m) {
- $__0.testingPrefix_ = m[1];
- return true;
- }
- }));
- }
- return this.get(this.testingPrefix_ + name);
- }
- };
- ModuleStore.set('@traceur/src/runtime/ModuleStore', new Module({ModuleStore: ModuleStore}));
- var setupGlobals = $traceurRuntime.setupGlobals;
- $traceurRuntime.setupGlobals = function(global) {
- setupGlobals(global);
- };
- $traceurRuntime.ModuleStore = ModuleStore;
- global.System = {
- register: ModuleStore.register.bind(ModuleStore),
- get: ModuleStore.get,
- set: ModuleStore.set,
- normalize: ModuleStore.normalize
- };
- $traceurRuntime.getModuleImpl = function(name) {
- var instantiator = getUncoatedModuleInstantiator(name);
- return instantiator && instantiator.getUncoatedModule();
- };
-})(typeof global !== 'undefined' ? global : this);
-System.register("traceur@0.0.32/src/runtime/polyfills/utils", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/runtime/polyfills/utils";
- var toObject = $traceurRuntime.toObject;
- function toUint32(x) {
- return x | 0;
- }
- return {
- get toObject() {
- return toObject;
- },
- get toUint32() {
- return toUint32;
- }
- };
-});
-System.register("traceur@0.0.32/src/runtime/polyfills/ArrayIterator", [], function() {
- "use strict";
- var $__4;
- var __moduleName = "traceur@0.0.32/src/runtime/polyfills/ArrayIterator";
- var $__5 = System.get("traceur@0.0.32/src/runtime/polyfills/utils"),
- toObject = $__5.toObject,
- toUint32 = $__5.toUint32;
- var ARRAY_ITERATOR_KIND_KEYS = 1;
- var ARRAY_ITERATOR_KIND_VALUES = 2;
- var ARRAY_ITERATOR_KIND_ENTRIES = 3;
- var ArrayIterator = function ArrayIterator() {};
- ($traceurRuntime.createClass)(ArrayIterator, ($__4 = {}, Object.defineProperty($__4, "next", {
- value: function() {
- var iterator = toObject(this);
- var array = iterator.iteratorObject_;
- if (!array) {
- throw new TypeError('Object is not an ArrayIterator');
- }
- var index = iterator.arrayIteratorNextIndex_;
- var itemKind = iterator.arrayIterationKind_;
- var length = toUint32(array.length);
- if (index >= length) {
- iterator.arrayIteratorNextIndex_ = Infinity;
- return createIteratorResultObject(undefined, true);
- }
- iterator.arrayIteratorNextIndex_ = index + 1;
- if (itemKind == ARRAY_ITERATOR_KIND_VALUES)
- return createIteratorResultObject(array[index], false);
- if (itemKind == ARRAY_ITERATOR_KIND_ENTRIES)
- return createIteratorResultObject([index, array[index]], false);
- return createIteratorResultObject(index, false);
- },
- configurable: true,
- enumerable: true,
- writable: true
- }), Object.defineProperty($__4, Symbol.iterator, {
- value: function() {
- return this;
- },
- configurable: true,
- enumerable: true,
- writable: true
- }), $__4), {});
- function createArrayIterator(array, kind) {
- var object = toObject(array);
- var iterator = new ArrayIterator;
- iterator.iteratorObject_ = object;
- iterator.arrayIteratorNextIndex_ = 0;
- iterator.arrayIterationKind_ = kind;
- return iterator;
- }
- function createIteratorResultObject(value, done) {
- return {
- value: value,
- done: done
- };
- }
- function entries() {
- return createArrayIterator(this, ARRAY_ITERATOR_KIND_ENTRIES);
- }
- function keys() {
- return createArrayIterator(this, ARRAY_ITERATOR_KIND_KEYS);
- }
- function values() {
- return createArrayIterator(this, ARRAY_ITERATOR_KIND_VALUES);
- }
- return {
- get entries() {
- return entries;
- },
- get keys() {
- return keys;
- },
- get values() {
- return values;
- }
- };
-});
-System.register("traceur@0.0.32/node_modules/rsvp/lib/rsvp/asap", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/node_modules/rsvp/lib/rsvp/asap";
- var $__default = function asap(callback, arg) {
- var length = queue.push([callback, arg]);
- if (length === 1) {
- scheduleFlush();
- }
- };
- var browserGlobal = (typeof window !== 'undefined') ? window : {};
- var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;
- function useNextTick() {
- return function() {
- process.nextTick(flush);
- };
- }
- function useMutationObserver() {
- var iterations = 0;
- var observer = new BrowserMutationObserver(flush);
- var node = document.createTextNode('');
- observer.observe(node, {characterData: true});
- return function() {
- node.data = (iterations = ++iterations % 2);
- };
- }
- function useSetTimeout() {
- return function() {
- setTimeout(flush, 1);
- };
- }
- var queue = [];
- function flush() {
- for (var i = 0; i < queue.length; i++) {
- var tuple = queue[i];
- var callback = tuple[0],
- arg = tuple[1];
- callback(arg);
- }
- queue = [];
- }
- var scheduleFlush;
- if (typeof process !== 'undefined' && {}.toString.call(process) === '[object process]') {
- scheduleFlush = useNextTick();
- } else if (BrowserMutationObserver) {
- scheduleFlush = useMutationObserver();
- } else {
- scheduleFlush = useSetTimeout();
- }
- return {get default() {
- return $__default;
- }};
-});
-System.register("traceur@0.0.32/src/runtime/polyfills/Promise", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/runtime/polyfills/Promise";
- var async = System.get("traceur@0.0.32/node_modules/rsvp/lib/rsvp/asap").default;
- function isPromise(x) {
- return x && typeof x === 'object' && x.status_ !== undefined;
- }
- function chain(promise) {
- var onResolve = arguments[1] !== (void 0) ? arguments[1] : (function(x) {
- return x;
- });
- var onReject = arguments[2] !== (void 0) ? arguments[2] : (function(e) {
- throw e;
- });
- var deferred = getDeferred(promise.constructor);
- switch (promise.status_) {
- case undefined:
- throw TypeError;
- case 'pending':
- promise.onResolve_.push([deferred, onResolve]);
- promise.onReject_.push([deferred, onReject]);
- break;
- case 'resolved':
- promiseReact(deferred, onResolve, promise.value_);
- break;
- case 'rejected':
- promiseReact(deferred, onReject, promise.value_);
- break;
- }
- return deferred.promise;
- }
- function getDeferred(C) {
- var result = {};
- result.promise = new C((function(resolve, reject) {
- result.resolve = resolve;
- result.reject = reject;
- }));
- return result;
- }
- var Promise = function Promise(resolver) {
- var $__6 = this;
- this.status_ = 'pending';
- this.onResolve_ = [];
- this.onReject_ = [];
- resolver((function(x) {
- promiseResolve($__6, x);
- }), (function(r) {
- promiseReject($__6, r);
- }));
- };
- ($traceurRuntime.createClass)(Promise, {
- catch: function(onReject) {
- return this.then(undefined, onReject);
- },
- then: function() {
- var onResolve = arguments[0] !== (void 0) ? arguments[0] : (function(x) {
- return x;
- });
- var onReject = arguments[1];
- var $__6 = this;
- var constructor = this.constructor;
- return chain(this, (function(x) {
- x = promiseCoerce(constructor, x);
- return x === $__6 ? onReject(new TypeError) : isPromise(x) ? x.then(onResolve, onReject) : onResolve(x);
- }), onReject);
- }
- }, {
- resolve: function(x) {
- return new this((function(resolve, reject) {
- resolve(x);
- }));
- },
- reject: function(r) {
- return new this((function(resolve, reject) {
- reject(r);
- }));
- },
- cast: function(x) {
- if (x instanceof this)
- return x;
- if (isPromise(x)) {
- var result = getDeferred(this);
- chain(x, result.resolve, result.reject);
- return result.promise;
- }
- return this.resolve(x);
- },
- all: function(values) {
- var deferred = getDeferred(this);
- var count = 0;
- var resolutions = [];
- try {
- for (var i = 0; i < values.length; i++) {
- ++count;
- this.cast(values[i]).then(function(i, x) {
- resolutions[i] = x;
- if (--count === 0)
- deferred.resolve(resolutions);
- }.bind(undefined, i), (function(r) {
- if (count > 0)
- count = 0;
- deferred.reject(r);
- }));
- }
- if (count === 0)
- deferred.resolve(resolutions);
- } catch (e) {
- deferred.reject(e);
- }
- return deferred.promise;
- },
- race: function(values) {
- var deferred = getDeferred(this);
- try {
- for (var i = 0; i < values.length; i++) {
- this.cast(values[i]).then((function(x) {
- deferred.resolve(x);
- }), (function(r) {
- deferred.reject(r);
- }));
- }
- } catch (e) {
- deferred.reject(e);
- }
- return deferred.promise;
- }
- });
- function promiseResolve(promise, x) {
- promiseDone(promise, 'resolved', x, promise.onResolve_);
- }
- function promiseReject(promise, r) {
- promiseDone(promise, 'rejected', r, promise.onReject_);
- }
- function promiseDone(promise, status, value, reactions) {
- if (promise.status_ !== 'pending')
- return;
- for (var i = 0; i < reactions.length; i++) {
- promiseReact(reactions[i][0], reactions[i][1], value);
- }
- promise.status_ = status;
- promise.value_ = value;
- promise.onResolve_ = promise.onReject_ = undefined;
- }
- function promiseReact(deferred, handler, x) {
- async((function() {
- try {
- var y = handler(x);
- if (y === deferred.promise)
- throw new TypeError;
- else if (isPromise(y))
- chain(y, deferred.resolve, deferred.reject);
- else
- deferred.resolve(y);
- } catch (e) {
- deferred.reject(e);
- }
- }));
- }
- var thenableSymbol = '@@thenable';
- function promiseCoerce(constructor, x) {
- if (isPromise(x)) {
- return x;
- } else if (x && typeof x.then === 'function') {
- var p = x[thenableSymbol];
- if (p) {
- return p;
- } else {
- var deferred = getDeferred(constructor);
- x[thenableSymbol] = deferred.promise;
- try {
- x.then(deferred.resolve, deferred.reject);
- } catch (e) {
- deferred.reject(e);
- }
- return deferred.promise;
- }
- } else {
- return x;
- }
- }
- return {get Promise() {
- return Promise;
- }};
-});
-System.register("traceur@0.0.32/src/runtime/polyfills/String", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/runtime/polyfills/String";
- var $toString = Object.prototype.toString;
- var $indexOf = String.prototype.indexOf;
- var $lastIndexOf = String.prototype.lastIndexOf;
- function startsWith(search) {
- var string = String(this);
- if (this == null || $toString.call(search) == '[object RegExp]') {
- throw TypeError();
- }
- var stringLength = string.length;
- var searchString = String(search);
- var searchLength = searchString.length;
- var position = arguments.length > 1 ? arguments[1] : undefined;
- var pos = position ? Number(position) : 0;
- if (isNaN(pos)) {
- pos = 0;
- }
- var start = Math.min(Math.max(pos, 0), stringLength);
- return $indexOf.call(string, searchString, pos) == start;
- }
- function endsWith(search) {
- var string = String(this);
- if (this == null || $toString.call(search) == '[object RegExp]') {
- throw TypeError();
- }
- var stringLength = string.length;
- var searchString = String(search);
- var searchLength = searchString.length;
- var pos = stringLength;
- if (arguments.length > 1) {
- var position = arguments[1];
- if (position !== undefined) {
- pos = position ? Number(position) : 0;
- if (isNaN(pos)) {
- pos = 0;
- }
- }
- }
- var end = Math.min(Math.max(pos, 0), stringLength);
- var start = end - searchLength;
- if (start < 0) {
- return false;
- }
- return $lastIndexOf.call(string, searchString, start) == start;
- }
- function contains(search) {
- if (this == null) {
- throw TypeError();
- }
- var string = String(this);
- var stringLength = string.length;
- var searchString = String(search);
- var searchLength = searchString.length;
- var position = arguments.length > 1 ? arguments[1] : undefined;
- var pos = position ? Number(position) : 0;
- if (isNaN(pos)) {
- pos = 0;
- }
- var start = Math.min(Math.max(pos, 0), stringLength);
- return $indexOf.call(string, searchString, pos) != -1;
- }
- function repeat(count) {
- if (this == null) {
- throw TypeError();
- }
- var string = String(this);
- var n = count ? Number(count) : 0;
- if (isNaN(n)) {
- n = 0;
- }
- if (n < 0 || n == Infinity) {
- throw RangeError();
- }
- if (n == 0) {
- return '';
- }
- var result = '';
- while (n--) {
- result += string;
- }
- return result;
- }
- function codePointAt(position) {
- if (this == null) {
- throw TypeError();
- }
- var string = String(this);
- var size = string.length;
- var index = position ? Number(position) : 0;
- if (isNaN(index)) {
- index = 0;
- }
- if (index < 0 || index >= size) {
- return undefined;
- }
- var first = string.charCodeAt(index);
- var second;
- if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {
- second = string.charCodeAt(index + 1);
- if (second >= 0xDC00 && second <= 0xDFFF) {
- return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
- }
- }
- return first;
- }
- function raw(callsite) {
- var raw = callsite.raw;
- var len = raw.length >>> 0;
- if (len === 0)
- return '';
- var s = '';
- var i = 0;
- while (true) {
- s += raw[i];
- if (i + 1 === len)
- return s;
- s += arguments[++i];
- }
- }
- function fromCodePoint() {
- var codeUnits = [];
- var floor = Math.floor;
- var highSurrogate;
- var lowSurrogate;
- var index = -1;
- var length = arguments.length;
- if (!length) {
- return '';
- }
- while (++index < length) {
- var codePoint = Number(arguments[index]);
- if (!isFinite(codePoint) || codePoint < 0 || codePoint > 0x10FFFF || floor(codePoint) != codePoint) {
- throw RangeError('Invalid code point: ' + codePoint);
- }
- if (codePoint <= 0xFFFF) {
- codeUnits.push(codePoint);
- } else {
- codePoint -= 0x10000;
- highSurrogate = (codePoint >> 10) + 0xD800;
- lowSurrogate = (codePoint % 0x400) + 0xDC00;
- codeUnits.push(highSurrogate, lowSurrogate);
- }
- }
- return String.fromCharCode.apply(null, codeUnits);
- }
- return {
- get startsWith() {
- return startsWith;
- },
- get endsWith() {
- return endsWith;
- },
- get contains() {
- return contains;
- },
- get repeat() {
- return repeat;
- },
- get codePointAt() {
- return codePointAt;
- },
- get raw() {
- return raw;
- },
- get fromCodePoint() {
- return fromCodePoint;
- }
- };
-});
-System.register("traceur@0.0.32/src/runtime/polyfills/polyfills", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/runtime/polyfills/polyfills";
- var Promise = System.get("traceur@0.0.32/src/runtime/polyfills/Promise").Promise;
- var $__9 = System.get("traceur@0.0.32/src/runtime/polyfills/String"),
- codePointAt = $__9.codePointAt,
- contains = $__9.contains,
- endsWith = $__9.endsWith,
- fromCodePoint = $__9.fromCodePoint,
- repeat = $__9.repeat,
- raw = $__9.raw,
- startsWith = $__9.startsWith;
- var $__9 = System.get("traceur@0.0.32/src/runtime/polyfills/ArrayIterator"),
- entries = $__9.entries,
- keys = $__9.keys,
- values = $__9.values;
- function maybeDefineMethod(object, name, value) {
- if (!(name in object)) {
- Object.defineProperty(object, name, {
- value: value,
- configurable: true,
- enumerable: false,
- writable: true
- });
- }
- }
- function maybeAddFunctions(object, functions) {
- for (var i = 0; i < functions.length; i += 2) {
- var name = functions[i];
- var value = functions[i + 1];
- maybeDefineMethod(object, name, value);
- }
- }
- function polyfillPromise(global) {
- if (!global.Promise)
- global.Promise = Promise;
- }
- function polyfillString(String) {
- maybeAddFunctions(String.prototype, ['codePointAt', codePointAt, 'contains', contains, 'endsWith', endsWith, 'startsWith', startsWith, 'repeat', repeat]);
- maybeAddFunctions(String, ['fromCodePoint', fromCodePoint, 'raw', raw]);
- }
- function polyfillArray(Array, Symbol) {
- maybeAddFunctions(Array.prototype, ['entries', entries, 'keys', keys, 'values', values]);
- if (Symbol && Symbol.iterator) {
- Object.defineProperty(Array.prototype, Symbol.iterator, {
- value: values,
- configurable: true,
- enumerable: false,
- writable: true
- });
- }
- }
- function polyfill(global) {
- polyfillPromise(global);
- polyfillString(global.String);
- polyfillArray(global.Array, global.Symbol);
- }
- polyfill(this);
- var setupGlobals = $traceurRuntime.setupGlobals;
- $traceurRuntime.setupGlobals = function(global) {
- setupGlobals(global);
- polyfill(global);
- };
- return {};
-});
-System.register("traceur@0.0.32/src/runtime/polyfill-import", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/runtime/polyfill-import";
- var $__11 = System.get("traceur@0.0.32/src/runtime/polyfills/polyfills");
- return {};
-});
-System.get("traceur@0.0.32/src/runtime/polyfill-import" + '');
-System.register("traceur@0.0.32/src/options", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/options";
- var parseOptions = Object.create(null);
- var transformOptions = Object.create(null);
- var defaultValues = Object.create(null);
- var experimentalOptions = Object.create(null);
- var options = {
- set experimental(v) {
- v = coerceOptionValue(v);
- Object.keys(experimentalOptions).forEach((function(name) {
- options[name] = v;
- }));
- },
- get experimental() {
- var value;
- Object.keys(experimentalOptions).every((function(name) {
- var currentValue = options[name];
- if (value === undefined) {
- value = currentValue;
- return true;
- }
- if (currentValue !== value) {
- value = null;
- return false;
- }
- return true;
- }));
- return value;
- },
- scripts: []
- };
- var descriptions = {experimental: 'Turns on all experimental features'};
- function reset() {
- var allOff = arguments[0];
- var useDefault = allOff === undefined;
- Object.keys(options).forEach((function(name) {
- options[name] = useDefault && defaultValues[name];
- }));
- }
- function fromString(s) {
- fromArgv(s.split(/\s+/));
- }
- function fromArgv(args) {
- args.forEach(parseCommand);
- }
- function setFromObject(object) {
- Object.keys(object).forEach((function(name) {
- options[name] = object[name];
- }));
- }
- function coerceOptionValue(v) {
- switch (v) {
- case 'false':
- return false;
- case 'true':
- case true:
- return true;
- default:
- return !!v && String(v);
- }
- }
- function setOption(name, value) {
- name = toCamelCase(name);
- value = coerceOptionValue(value);
- if (name in options) {
- options[name] = value;
- } else {
- throw Error('Unknown option: ' + name);
- }
- }
- function addOptions(flags) {
- Object.keys(options).forEach(function(name) {
- var dashedName = toDashCase(name);
- if ((name in parseOptions) && (name in transformOptions)) {
- flags.option('--' + dashedName + ' [true|false|parse]', descriptions[name]);
- flags.on(dashedName, (function(value) {
- return setOption(dashedName, value);
- }));
- } else if (options[name] !== null) {
- flags.option('--' + dashedName, descriptions[name]);
- flags.on(dashedName, (function() {
- return setOption(dashedName, true);
- }));
- }
- });
- flags.option('--referrer <name>', 'Bracket output code with System.referrerName=<name>', (function(name) {
- setOption('referrer', name);
- return name;
- }));
- flags.option('--type-assertion-module <path>', 'Absolute path to the type assertion module.', (function(path) {
- setOption('type-assertion-module', path);
- return path;
- }));
- flags.option('--script <fileName>', 'Parse as Script (must precede modules)', (function(fileName) {
- options.scripts.push(fileName);
- }));
- }
- function filterOption(dashedName) {
- var name = toCamelCase(dashedName);
- return name === 'experimental' || !(name in options);
- }
- Object.defineProperties(options, {
- reset: {value: reset},
- fromString: {value: fromString},
- fromArgv: {value: fromArgv},
- setFromObject: {value: setFromObject},
- addOptions: {value: addOptions},
- filterOption: {value: filterOption}
- });
- function parseCommand(s) {
- var re = /--([^=]+)(?:=(.+))?/;
- var m = re.exec(s);
- if (m)
- setOption(m[1], m[2] || true);
- }
- function toCamelCase(s) {
- return s.replace(/-\w/g, function(ch) {
- return ch[1].toUpperCase();
- });
- }
- function toDashCase(s) {
- return s.replace(/[A-W]/g, function(ch) {
- return '-' + ch.toLowerCase();
- });
- }
- var EXPERIMENTAL = 0;
- var ON_BY_DEFAULT = 1;
- function addFeatureOption(name, kind) {
- if (kind === EXPERIMENTAL)
- experimentalOptions[name] = true;
- Object.defineProperty(parseOptions, name, {
- get: function() {
- return !!options[name];
- },
- enumerable: true,
- configurable: true
- });
- Object.defineProperty(transformOptions, name, {
- get: function() {
- var v = options[name];
- if (v === 'parse')
- return false;
- return v;
- },
- enumerable: true,
- configurable: true
- });
- var defaultValue = kind === ON_BY_DEFAULT;
- options[name] = defaultValue;
- defaultValues[name] = defaultValue;
- }
- function addBoolOption(name) {
- defaultValues[name] = false;
- options[name] = false;
- }
- addFeatureOption('arrayComprehension', ON_BY_DEFAULT);
- addFeatureOption('arrowFunctions', ON_BY_DEFAULT);
- addFeatureOption('classes', ON_BY_DEFAULT);
- addFeatureOption('computedPropertyNames', ON_BY_DEFAULT);
- addFeatureOption('defaultParameters', ON_BY_DEFAULT);
- addFeatureOption('destructuring', ON_BY_DEFAULT);
- addFeatureOption('forOf', ON_BY_DEFAULT);
- addFeatureOption('generatorComprehension', ON_BY_DEFAULT);
- addFeatureOption('generators', ON_BY_DEFAULT);
- addFeatureOption('modules', ON_BY_DEFAULT);
- addFeatureOption('numericLiterals', ON_BY_DEFAULT);
- addFeatureOption('propertyMethods', ON_BY_DEFAULT);
- addFeatureOption('propertyNameShorthand', ON_BY_DEFAULT);
- addFeatureOption('restParameters', ON_BY_DEFAULT);
- addFeatureOption('spread', ON_BY_DEFAULT);
- addFeatureOption('templateLiterals', ON_BY_DEFAULT);
- addFeatureOption('blockBinding', EXPERIMENTAL);
- addFeatureOption('symbols', EXPERIMENTAL);
- addFeatureOption('deferredFunctions', EXPERIMENTAL);
- addFeatureOption('types', EXPERIMENTAL);
- addFeatureOption('annotations', EXPERIMENTAL);
- addBoolOption('commentCallback');
- addBoolOption('debug');
- addBoolOption('freeVariableChecker');
- addBoolOption('sourceMaps');
- addBoolOption('typeAssertions');
- addBoolOption('validate');
- defaultValues.referrer = '';
- options.referrer = null;
- defaultValues.typeAssertionModule = null;
- options.typeAssertionModule = null;
- return {
- get parseOptions() {
- return parseOptions;
- },
- get transformOptions() {
- return transformOptions;
- },
- get options() {
- return options;
- }
- };
-});
-System.register("traceur@0.0.32/src/syntax/TokenType", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/syntax/TokenType";
- var AMPERSAND = '&';
- var AMPERSAND_EQUAL = '&=';
- var AND = '&&';
- var ARROW = '=>';
- var AT = '@';
- var AWAIT = 'await';
- var BACK_QUOTE = '`';
- var BANG = '!';
- var BAR = '|';
- var BAR_EQUAL = '|=';
- var BREAK = 'break';
- var CARET = '^';
- var CARET_EQUAL = '^=';
- var CASE = 'case';
- var CATCH = 'catch';
- var CLASS = 'class';
- var CLOSE_ANGLE = '>';
- var CLOSE_CURLY = '}';
- var CLOSE_PAREN = ')';
- var CLOSE_SQUARE = ']';
- var COLON = ':';
- var COMMA = ',';
- var CONST = 'const';
- var CONTINUE = 'continue';
- var DEBUGGER = 'debugger';
- var DEFAULT = 'default';
- var DELETE = 'delete';
- var DO = 'do';
- var DOT_DOT_DOT = '...';
- var ELSE = 'else';
- var END_OF_FILE = 'End of File';
- var ENUM = 'enum';
- var EQUAL = '=';
- var EQUAL_EQUAL = '==';
- var EQUAL_EQUAL_EQUAL = '===';
- var ERROR = 'error';
- var EXPORT = 'export';
- var EXTENDS = 'extends';
- var FALSE = 'false';
- var FINALLY = 'finally';
- var FOR = 'for';
- var FUNCTION = 'function';
- var GREATER_EQUAL = '>=';
- var IDENTIFIER = 'identifier';
- var IF = 'if';
- var IMPLEMENTS = 'implements';
- var IMPORT = 'import';
- var IN = 'in';
- var INSTANCEOF = 'instanceof';
- var INTERFACE = 'interface';
- var LEFT_SHIFT = '<<';
- var LEFT_SHIFT_EQUAL = '<<=';
- var LESS_EQUAL = '<=';
- var LET = 'let';
- var MINUS = '-';
- var MINUS_EQUAL = '-=';
- var MINUS_MINUS = '--';
- var NEW = 'new';
- var NO_SUBSTITUTION_TEMPLATE = 'no substitution template';
- var NOT_EQUAL = '!=';
- var NOT_EQUAL_EQUAL = '!==';
- var NULL = 'null';
- var NUMBER = 'number literal';
- var OPEN_ANGLE = '<';
- var OPEN_CURLY = '{';
- var OPEN_PAREN = '(';
- var OPEN_SQUARE = '[';
- var OR = '||';
- var PACKAGE = 'package';
- var PERCENT = '%';
- var PERCENT_EQUAL = '%=';
- var PERIOD = '.';
- var PLUS = '+';
- var PLUS_EQUAL = '+=';
- var PLUS_PLUS = '++';
- var PRIVATE = 'private';
- var PROTECTED = 'protected';
- var PUBLIC = 'public';
- var QUESTION = '?';
- var REGULAR_EXPRESSION = 'regular expression literal';
- var RETURN = 'return';
- var RIGHT_SHIFT = '>>';
- var RIGHT_SHIFT_EQUAL = '>>=';
- var SEMI_COLON = ';';
- var SLASH = '/';
- var SLASH_EQUAL = '/=';
- var STAR = '*';
- var STAR_EQUAL = '*=';
- var STATIC = 'static';
- var STRING = 'string literal';
- var SUPER = 'super';
- var SWITCH = 'switch';
- var TEMPLATE_HEAD = 'template head';
- var TEMPLATE_MIDDLE = 'template middle';
- var TEMPLATE_TAIL = 'template tail';
- var THIS = 'this';
- var THROW = 'throw';
- var TILDE = '~';
- var TRUE = 'true';
- var TRY = 'try';
- var TYPEOF = 'typeof';
- var UNSIGNED_RIGHT_SHIFT = '>>>';
- var UNSIGNED_RIGHT_SHIFT_EQUAL = '>>>=';
- var VAR = 'var';
- var VOID = 'void';
- var WHILE = 'while';
- var WITH = 'with';
- var YIELD = 'yield';
- return {
- get AMPERSAND() {
- return AMPERSAND;
- },
- get AMPERSAND_EQUAL() {
- return AMPERSAND_EQUAL;
- },
- get AND() {
- return AND;
- },
- get ARROW() {
- return ARROW;
- },
- get AT() {
- return AT;
- },
- get AWAIT() {
- return AWAIT;
- },
- get BACK_QUOTE() {
- return BACK_QUOTE;
- },
- get BANG() {
- return BANG;
- },
- get BAR() {
- return BAR;
- },
- get BAR_EQUAL() {
- return BAR_EQUAL;
- },
- get BREAK() {
- return BREAK;
- },
- get CARET() {
- return CARET;
- },
- get CARET_EQUAL() {
- return CARET_EQUAL;
- },
- get CASE() {
- return CASE;
- },
- get CATCH() {
- return CATCH;
- },
- get CLASS() {
- return CLASS;
- },
- get CLOSE_ANGLE() {
- return CLOSE_ANGLE;
- },
- get CLOSE_CURLY() {
- return CLOSE_CURLY;
- },
- get CLOSE_PAREN() {
- return CLOSE_PAREN;
- },
- get CLOSE_SQUARE() {
- return CLOSE_SQUARE;
- },
- get COLON() {
- return COLON;
- },
- get COMMA() {
- return COMMA;
- },
- get CONST() {
- return CONST;
- },
- get CONTINUE() {
- return CONTINUE;
- },
- get DEBUGGER() {
- return DEBUGGER;
- },
- get DEFAULT() {
- return DEFAULT;
- },
- get DELETE() {
- return DELETE;
- },
- get DO() {
- return DO;
- },
- get DOT_DOT_DOT() {
- return DOT_DOT_DOT;
- },
- get ELSE() {
- return ELSE;
- },
- get END_OF_FILE() {
- return END_OF_FILE;
- },
- get ENUM() {
- return ENUM;
- },
- get EQUAL() {
- return EQUAL;
- },
- get EQUAL_EQUAL() {
- return EQUAL_EQUAL;
- },
- get EQUAL_EQUAL_EQUAL() {
- return EQUAL_EQUAL_EQUAL;
- },
- get ERROR() {
- return ERROR;
- },
- get EXPORT() {
- return EXPORT;
- },
- get EXTENDS() {
- return EXTENDS;
- },
- get FALSE() {
- return FALSE;
- },
- get FINALLY() {
- return FINALLY;
- },
- get FOR() {
- return FOR;
- },
- get FUNCTION() {
- return FUNCTION;
- },
- get GREATER_EQUAL() {
- return GREATER_EQUAL;
- },
- get IDENTIFIER() {
- return IDENTIFIER;
- },
- get IF() {
- return IF;
- },
- get IMPLEMENTS() {
- return IMPLEMENTS;
- },
- get IMPORT() {
- return IMPORT;
- },
- get IN() {
- return IN;
- },
- get INSTANCEOF() {
- return INSTANCEOF;
- },
- get INTERFACE() {
- return INTERFACE;
- },
- get LEFT_SHIFT() {
- return LEFT_SHIFT;
- },
- get LEFT_SHIFT_EQUAL() {
- return LEFT_SHIFT_EQUAL;
- },
- get LESS_EQUAL() {
- return LESS_EQUAL;
- },
- get LET() {
- return LET;
- },
- get MINUS() {
- return MINUS;
- },
- get MINUS_EQUAL() {
- return MINUS_EQUAL;
- },
- get MINUS_MINUS() {
- return MINUS_MINUS;
- },
- get NEW() {
- return NEW;
- },
- get NO_SUBSTITUTION_TEMPLATE() {
- return NO_SUBSTITUTION_TEMPLATE;
- },
- get NOT_EQUAL() {
- return NOT_EQUAL;
- },
- get NOT_EQUAL_EQUAL() {
- return NOT_EQUAL_EQUAL;
- },
- get NULL() {
- return NULL;
- },
- get NUMBER() {
- return NUMBER;
- },
- get OPEN_ANGLE() {
- return OPEN_ANGLE;
- },
- get OPEN_CURLY() {
- return OPEN_CURLY;
- },
- get OPEN_PAREN() {
- return OPEN_PAREN;
- },
- get OPEN_SQUARE() {
- return OPEN_SQUARE;
- },
- get OR() {
- return OR;
- },
- get PACKAGE() {
- return PACKAGE;
- },
- get PERCENT() {
- return PERCENT;
- },
- get PERCENT_EQUAL() {
- return PERCENT_EQUAL;
- },
- get PERIOD() {
- return PERIOD;
- },
- get PLUS() {
- return PLUS;
- },
- get PLUS_EQUAL() {
- return PLUS_EQUAL;
- },
- get PLUS_PLUS() {
- return PLUS_PLUS;
- },
- get PRIVATE() {
- return PRIVATE;
- },
- get PROTECTED() {
- return PROTECTED;
- },
- get PUBLIC() {
- return PUBLIC;
- },
- get QUESTION() {
- return QUESTION;
- },
- get REGULAR_EXPRESSION() {
- return REGULAR_EXPRESSION;
- },
- get RETURN() {
- return RETURN;
- },
- get RIGHT_SHIFT() {
- return RIGHT_SHIFT;
- },
- get RIGHT_SHIFT_EQUAL() {
- return RIGHT_SHIFT_EQUAL;
- },
- get SEMI_COLON() {
- return SEMI_COLON;
- },
- get SLASH() {
- return SLASH;
- },
- get SLASH_EQUAL() {
- return SLASH_EQUAL;
- },
- get STAR() {
- return STAR;
- },
- get STAR_EQUAL() {
- return STAR_EQUAL;
- },
- get STATIC() {
- return STATIC;
- },
- get STRING() {
- return STRING;
- },
- get SUPER() {
- return SUPER;
- },
- get SWITCH() {
- return SWITCH;
- },
- get TEMPLATE_HEAD() {
- return TEMPLATE_HEAD;
- },
- get TEMPLATE_MIDDLE() {
- return TEMPLATE_MIDDLE;
- },
- get TEMPLATE_TAIL() {
- return TEMPLATE_TAIL;
- },
- get THIS() {
- return THIS;
- },
- get THROW() {
- return THROW;
- },
- get TILDE() {
- return TILDE;
- },
- get TRUE() {
- return TRUE;
- },
- get TRY() {
- return TRY;
- },
- get TYPEOF() {
- return TYPEOF;
- },
- get UNSIGNED_RIGHT_SHIFT() {
- return UNSIGNED_RIGHT_SHIFT;
- },
- get UNSIGNED_RIGHT_SHIFT_EQUAL() {
- return UNSIGNED_RIGHT_SHIFT_EQUAL;
- },
- get VAR() {
- return VAR;
- },
- get VOID() {
- return VOID;
- },
- get WHILE() {
- return WHILE;
- },
- get WITH() {
- return WITH;
- },
- get YIELD() {
- return YIELD;
- }
- };
-});
-System.register("traceur@0.0.32/src/syntax/Token", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/syntax/Token";
- var $__13 = System.get("traceur@0.0.32/src/syntax/TokenType"),
- AMPERSAND_EQUAL = $__13.AMPERSAND_EQUAL,
- BAR_EQUAL = $__13.BAR_EQUAL,
- CARET_EQUAL = $__13.CARET_EQUAL,
- EQUAL = $__13.EQUAL,
- LEFT_SHIFT_EQUAL = $__13.LEFT_SHIFT_EQUAL,
- MINUS_EQUAL = $__13.MINUS_EQUAL,
- PERCENT_EQUAL = $__13.PERCENT_EQUAL,
- PLUS_EQUAL = $__13.PLUS_EQUAL,
- RIGHT_SHIFT_EQUAL = $__13.RIGHT_SHIFT_EQUAL,
- SLASH_EQUAL = $__13.SLASH_EQUAL,
- STAR_EQUAL = $__13.STAR_EQUAL,
- UNSIGNED_RIGHT_SHIFT_EQUAL = $__13.UNSIGNED_RIGHT_SHIFT_EQUAL;
- var Token = function Token(type, location) {
- this.type = type;
- this.location = location;
- };
- ($traceurRuntime.createClass)(Token, {
- toString: function() {
- return this.type;
- },
- isAssignmentOperator: function() {
- return isAssignmentOperator(this.type);
- },
- isKeyword: function() {
- return false;
- },
- isStrictKeyword: function() {
- return false;
- }
- }, {});
- function isAssignmentOperator(type) {
- switch (type) {
- case AMPERSAND_EQUAL:
- case BAR_EQUAL:
- case CARET_EQUAL:
- case EQUAL:
- case LEFT_SHIFT_EQUAL:
- case MINUS_EQUAL:
- case PERCENT_EQUAL:
- case PLUS_EQUAL:
- case RIGHT_SHIFT_EQUAL:
- case SLASH_EQUAL:
- case STAR_EQUAL:
- case UNSIGNED_RIGHT_SHIFT_EQUAL:
- return true;
- }
- return false;
- }
- return {
- get Token() {
- return Token;
- },
- get isAssignmentOperator() {
- return isAssignmentOperator;
- }
- };
-});
-System.register("traceur@0.0.32/src/syntax/IdentifierToken", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/syntax/IdentifierToken";
- var Token = System.get("traceur@0.0.32/src/syntax/Token").Token;
- var IDENTIFIER = System.get("traceur@0.0.32/src/syntax/TokenType").IDENTIFIER;
- var IdentifierToken = function IdentifierToken(location, value) {
- this.location = location;
- this.value = value;
- };
- ($traceurRuntime.createClass)(IdentifierToken, {
- toString: function() {
- return this.value;
- },
- get type() {
- return IDENTIFIER;
- }
- }, {}, Token);
- return {get IdentifierToken() {
- return IdentifierToken;
- }};
-});
-System.register("traceur@0.0.32/src/syntax/ParseTreeVisitor", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/syntax/ParseTreeVisitor";
- var ParseTreeVisitor = function ParseTreeVisitor() {};
- ($traceurRuntime.createClass)(ParseTreeVisitor, {
- visitAny: function(tree) {
- tree && tree.visit(this);
- },
- visit: function(tree) {
- this.visitAny(tree);
- },
- visitList: function(list) {
- if (list) {
- for (var i = 0; i < list.length; i++) {
- this.visitAny(list[i]);
- }
- }
- },
- visitStateMachine: function(tree) {
- throw Error('State machines should not live outside of the GeneratorTransformer.');
- },
- visitAnnotation: function(tree) {
- this.visitAny(tree.name);
- this.visitAny(tree.args);
- },
- visitAnonBlock: function(tree) {
- this.visitList(tree.statements);
- },
- visitArgumentList: function(tree) {
- this.visitList(tree.args);
- },
- visitArrayComprehension: function(tree) {
- this.visitList(tree.comprehensionList);
- this.visitAny(tree.expression);
- },
- visitArrayLiteralExpression: function(tree) {
- this.visitList(tree.elements);
- },
- visitArrayPattern: function(tree) {
- this.visitList(tree.elements);
- },
- visitArrowFunctionExpression: function(tree) {
- this.visitAny(tree.formalParameters);
- this.visitAny(tree.functionBody);
- },
- visitAwaitStatement: function(tree) {
- this.visitAny(tree.expression);
- },
- visitBinaryOperator: function(tree) {
- this.visitAny(tree.left);
- this.visitAny(tree.right);
- },
- visitBindingElement: function(tree) {
- this.visitAny(tree.binding);
- this.visitAny(tree.initialiser);
- },
- visitBindingIdentifier: function(tree) {},
- visitBlock: function(tree) {
- this.visitList(tree.statements);
- },
- visitBreakStatement: function(tree) {},
- visitCallExpression: function(tree) {
- this.visitAny(tree.operand);
- this.visitAny(tree.args);
- },
- visitCaseClause: function(tree) {
- this.visitAny(tree.expression);
- this.visitList(tree.statements);
- },
- visitCatch: function(tree) {
- this.visitAny(tree.binding);
- this.visitAny(tree.catchBody);
- },
- visitClassDeclaration: function(tree) {
- this.visitAny(tree.name);
- this.visitAny(tree.superClass);
- this.visitList(tree.elements);
- this.visitList(tree.annotations);
- },
- visitClassExpression: function(tree) {
- this.visitAny(tree.name);
- this.visitAny(tree.superClass);
- this.visitList(tree.elements);
- this.visitList(tree.annotations);
- },
- visitCommaExpression: function(tree) {
- this.visitList(tree.expressions);
- },
- visitComprehensionFor: function(tree) {
- this.visitAny(tree.left);
- this.visitAny(tree.iterator);
- },
- visitComprehensionIf: function(tree) {
- this.visitAny(tree.expression);
- },
- visitComputedPropertyName: function(tree) {
- this.visitAny(tree.expression);
- },
- visitConditionalExpression: function(tree) {
- this.visitAny(tree.condition);
- this.visitAny(tree.left);
- this.visitAny(tree.right);
- },
- visitContinueStatement: function(tree) {},
- visitCoverFormals: function(tree) {
- this.visitList(tree.expressions);
- },
- visitCoverInitialisedName: function(tree) {
- this.visitAny(tree.initialiser);
- },
- visitDebuggerStatement: function(tree) {},
- visitDefaultClause: function(tree) {
- this.visitList(tree.statements);
- },
- visitDoWhileStatement: function(tree) {
- this.visitAny(tree.body);
- this.visitAny(tree.condition);
- },
- visitEmptyStatement: function(tree) {},
- visitExportDeclaration: function(tree) {
- this.visitAny(tree.declaration);
- this.visitList(tree.annotations);
- },
- visitExportDefault: function(tree) {
- this.visitAny(tree.expression);
- },
- visitExportSpecifier: function(tree) {},
- visitExportSpecifierSet: function(tree) {
- this.visitList(tree.specifiers);
- },
- visitExportStar: function(tree) {},
- visitExpressionStatement: function(tree) {
- this.visitAny(tree.expression);
- },
- visitFinally: function(tree) {
- this.visitAny(tree.block);
- },
- visitForInStatement: function(tree) {
- this.visitAny(tree.initialiser);
- this.visitAny(tree.collection);
- this.visitAny(tree.body);
- },
- visitForOfStatement: function(tree) {
- this.visitAny(tree.initialiser);
- this.visitAny(tree.collection);
- this.visitAny(tree.body);
- },
- visitForStatement: function(tree) {
- this.visitAny(tree.initialiser);
- this.visitAny(tree.condition);
- this.visitAny(tree.increment);
- this.visitAny(tree.body);
- },
- visitFormalParameter: function(tree) {
- this.visitAny(tree.parameter);
- this.visitAny(tree.typeAnnotation);
- this.visitList(tree.annotations);
- },
- visitFormalParameterList: function(tree) {
- this.visitList(tree.parameters);
- },
- visitFunctionBody: function(tree) {
- this.visitList(tree.statements);
- },
- visitFunctionDeclaration: function(tree) {
- this.visitAny(tree.name);
- this.visitAny(tree.formalParameterList);
- this.visitAny(tree.typeAnnotation);
- this.visitList(tree.annotations);
- this.visitAny(tree.functionBody);
- },
- visitFunctionExpression: function(tree) {
- this.visitAny(tree.name);
- this.visitAny(tree.formalParameterList);
- this.visitAny(tree.typeAnnotation);
- this.visitList(tree.annotations);
- this.visitAny(tree.functionBody);
- },
- visitGeneratorComprehension: function(tree) {
- this.visitList(tree.comprehensionList);
- this.visitAny(tree.expression);
- },
- visitGetAccessor: function(tree) {
- this.visitAny(tree.name);
- this.visitAny(tree.typeAnnotation);
- this.visitList(tree.annotations);
- this.visitAny(tree.body);
- },
- visitIdentifierExpression: function(tree) {},
- visitIfStatement: function(tree) {
- this.visitAny(tree.condition);
- this.visitAny(tree.ifClause);
- this.visitAny(tree.elseClause);
- },
- visitImportedBinding: function(tree) {
- this.visitAny(tree.binding);
- },
- visitImportDeclaration: function(tree) {
- this.visitAny(tree.importClause);
- this.visitAny(tree.moduleSpecifier);
- },
- visitImportSpecifier: function(tree) {},
- visitImportSpecifierSet: function(tree) {
- this.visitList(tree.specifiers);
- },
- visitLabelledStatement: function(tree) {
- this.visitAny(tree.statement);
- },
- visitLiteralExpression: function(tree) {},
- visitLiteralPropertyName: function(tree) {},
- visitMemberExpression: function(tree) {
- this.visitAny(tree.operand);
- },
- visitMemberLookupExpression: function(tree) {
- this.visitAny(tree.operand);
- this.visitAny(tree.memberExpression);
- },
- visitModule: function(tree) {
- this.visitList(tree.scriptItemList);
- },
- visitModuleDeclaration: function(tree) {
- this.visitAny(tree.expression);
- },
- visitModuleSpecifier: function(tree) {},
- visitNamedExport: function(tree) {
- this.visitAny(tree.moduleSpecifier);
- this.visitAny(tree.specifierSet);
- },
- visitNewExpression: function(tree) {
- this.visitAny(tree.operand);
- this.visitAny(tree.args);
- },
- visitObjectLiteralExpression: function(tree) {
- this.visitList(tree.propertyNameAndValues);
- },
- visitObjectPattern: function(tree) {
- this.visitList(tree.fields);
- },
- visitObjectPatternField: function(tree) {
- this.visitAny(tree.name);
- this.visitAny(tree.element);
- },
- visitParenExpression: function(tree) {
- this.visitAny(tree.expression);
- },
- visitPostfixExpression: function(tree) {
- this.visitAny(tree.operand);
- },
- visitPredefinedType: function(tree) {},
- visitScript: function(tree) {
- this.visitList(tree.scriptItemList);
- },
- visitPropertyMethodAssignment: function(tree) {
- this.visitAny(tree.name);
- this.visitAny(tree.formalParameterList);
- this.visitAny(tree.typeAnnotation);
- this.visitList(tree.annotations);
- this.visitAny(tree.functionBody);
- },
- visitPropertyNameAssignment: function(tree) {
- this.visitAny(tree.name);
- this.visitAny(tree.value);
- },
- visitPropertyNameShorthand: function(tree) {},
- visitRestParameter: function(tree) {
- this.visitAny(tree.identifier);
- },
- visitReturnStatement: function(tree) {
- this.visitAny(tree.expression);
- },
- visitSetAccessor: function(tree) {
- this.visitAny(tree.name);
- this.visitAny(tree.parameter);
- this.visitList(tree.annotations);
- this.visitAny(tree.body);
- },
- visitSpreadExpression: function(tree) {
- this.visitAny(tree.expression);
- },
- visitSpreadPatternElement: function(tree) {
- this.visitAny(tree.lvalue);
- },
- visitSuperExpression: function(tree) {},
- visitSwitchStatement: function(tree) {
- this.visitAny(tree.expression);
- this.visitList(tree.caseClauses);
- },
- visitSyntaxErrorTree: function(tree) {},
- visitTemplateLiteralExpression: function(tree) {
- this.visitAny(tree.operand);
- this.visitList(tree.elements);
- },
- visitTemplateLiteralPortion: function(tree) {},
- visitTemplateSubstitution: function(tree) {
- this.visitAny(tree.expression);
- },
- visitThisExpression: function(tree) {},
- visitThrowStatement: function(tree) {
- this.visitAny(tree.value);
- },
- visitTryStatement: function(tree) {
- this.visitAny(tree.body);
- this.visitAny(tree.catchBlock);
- this.visitAny(tree.finallyBlock);
- },
- visitTypeName: function(tree) {
- this.visitAny(tree.moduleName);
- },
- visitUnaryExpression: function(tree) {
- this.visitAny(tree.operand);
- },
- visitVariableDeclaration: function(tree) {
- this.visitAny(tree.lvalue);
- this.visitAny(tree.typeAnnotation);
- this.visitAny(tree.initialiser);
- },
- visitVariableDeclarationList: function(tree) {
- this.visitList(tree.declarations);
- },
- visitVariableStatement: function(tree) {
- this.visitAny(tree.declarations);
- },
- visitWhileStatement: function(tree) {
- this.visitAny(tree.condition);
- this.visitAny(tree.body);
- },
- visitWithStatement: function(tree) {
- this.visitAny(tree.expression);
- this.visitAny(tree.body);
- },
- visitYieldExpression: function(tree) {
- this.visitAny(tree.expression);
- }
- }, {});
- return {get ParseTreeVisitor() {
- return ParseTreeVisitor;
- }};
-});
-System.register("traceur@0.0.32/src/syntax/PredefinedName", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/syntax/PredefinedName";
- var ANY = 'any';
- var $ARGUMENTS = '$arguments';
- var APPLY = 'apply';
- var ARGUMENTS = 'arguments';
- var ARRAY = 'Array';
- var AS = 'as';
- var BIND = 'bind';
- var CALL = 'call';
- var CONFIGURABLE = 'configurable';
- var CONSTRUCTOR = 'constructor';
- var CREATE = 'create';
- var CURRENT = 'current';
- var DEFINE_PROPERTIES = 'defineProperties';
- var DEFINE_PROPERTY = 'defineProperty';
- var ENUMERABLE = 'enumerable';
- var FREEZE = 'freeze';
- var FROM = 'from';
- var FUNCTION = 'Function';
- var GET = 'get';
- var HAS = 'has';
- var LENGTH = 'length';
- var MODULE = 'module';
- var NEW = 'new';
- var OBJECT = 'Object';
- var OBJECT_NAME = 'Object';
- var OF = 'of';
- var PREVENT_EXTENSIONS = 'preventExtensions';
- var PROTOTYPE = 'prototype';
- var PUSH = 'push';
- var RAW = 'raw';
- var SET = 'set';
- var SLICE = 'slice';
- var THIS = 'this';
- var TRACEUR_RUNTIME = '$traceurRuntime';
- var UNDEFINED = 'undefined';
- var WRITABLE = 'writable';
- function getParameterName(index) {
- return '$' + index;
- }
- ;
- return {
- get ANY() {
- return ANY;
- },
- get $ARGUMENTS() {
- return $ARGUMENTS;
- },
- get APPLY() {
- return APPLY;
- },
- get ARGUMENTS() {
- return ARGUMENTS;
- },
- get ARRAY() {
- return ARRAY;
- },
- get AS() {
- return AS;
- },
- get BIND() {
- return BIND;
- },
- get CALL() {
- return CALL;
- },
- get CONFIGURABLE() {
- return CONFIGURABLE;
- },
- get CONSTRUCTOR() {
- return CONSTRUCTOR;
- },
- get CREATE() {
- return CREATE;
- },
- get CURRENT() {
- return CURRENT;
- },
- get DEFINE_PROPERTIES() {
- return DEFINE_PROPERTIES;
- },
- get DEFINE_PROPERTY() {
- return DEFINE_PROPERTY;
- },
- get ENUMERABLE() {
- return ENUMERABLE;
- },
- get FREEZE() {
- return FREEZE;
- },
- get FROM() {
- return FROM;
- },
- get FUNCTION() {
- return FUNCTION;
- },
- get GET() {
- return GET;
- },
- get HAS() {
- return HAS;
- },
- get LENGTH() {
- return LENGTH;
- },
- get MODULE() {
- return MODULE;
- },
- get NEW() {
- return NEW;
- },
- get OBJECT() {
- return OBJECT;
- },
- get OBJECT_NAME() {
- return OBJECT_NAME;
- },
- get OF() {
- return OF;
- },
- get PREVENT_EXTENSIONS() {
- return PREVENT_EXTENSIONS;
- },
- get PROTOTYPE() {
- return PROTOTYPE;
- },
- get PUSH() {
- return PUSH;
- },
- get RAW() {
- return RAW;
- },
- get SET() {
- return SET;
- },
- get SLICE() {
- return SLICE;
- },
- get THIS() {
- return THIS;
- },
- get TRACEUR_RUNTIME() {
- return TRACEUR_RUNTIME;
- },
- get UNDEFINED() {
- return UNDEFINED;
- },
- get WRITABLE() {
- return WRITABLE;
- },
- get getParameterName() {
- return getParameterName;
- }
- };
-});
-System.register("traceur@0.0.32/src/syntax/trees/ParseTreeType", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/syntax/trees/ParseTreeType";
- var ANNOTATION = 'ANNOTATION';
- var ANON_BLOCK = 'ANON_BLOCK';
- var ARGUMENT_LIST = 'ARGUMENT_LIST';
- var ARRAY_COMPREHENSION = 'ARRAY_COMPREHENSION';
- var ARRAY_LITERAL_EXPRESSION = 'ARRAY_LITERAL_EXPRESSION';
- var ARRAY_PATTERN = 'ARRAY_PATTERN';
- var ARROW_FUNCTION_EXPRESSION = 'ARROW_FUNCTION_EXPRESSION';
- var AWAIT_STATEMENT = 'AWAIT_STATEMENT';
- var BINARY_OPERATOR = 'BINARY_OPERATOR';
- var BINDING_ELEMENT = 'BINDING_ELEMENT';
- var BINDING_IDENTIFIER = 'BINDING_IDENTIFIER';
- var BLOCK = 'BLOCK';
- var BREAK_STATEMENT = 'BREAK_STATEMENT';
- var CALL_EXPRESSION = 'CALL_EXPRESSION';
- var CASE_CLAUSE = 'CASE_CLAUSE';
- var CATCH = 'CATCH';
- var CLASS_DECLARATION = 'CLASS_DECLARATION';
- var CLASS_EXPRESSION = 'CLASS_EXPRESSION';
- var COMMA_EXPRESSION = 'COMMA_EXPRESSION';
- var COMPREHENSION_FOR = 'COMPREHENSION_FOR';
- var COMPREHENSION_IF = 'COMPREHENSION_IF';
- var COMPUTED_PROPERTY_NAME = 'COMPUTED_PROPERTY_NAME';
- var CONDITIONAL_EXPRESSION = 'CONDITIONAL_EXPRESSION';
- var CONTINUE_STATEMENT = 'CONTINUE_STATEMENT';
- var COVER_FORMALS = 'COVER_FORMALS';
- var COVER_INITIALISED_NAME = 'COVER_INITIALISED_NAME';
- var DEBUGGER_STATEMENT = 'DEBUGGER_STATEMENT';
- var DEFAULT_CLAUSE = 'DEFAULT_CLAUSE';
- var DO_WHILE_STATEMENT = 'DO_WHILE_STATEMENT';
- var EMPTY_STATEMENT = 'EMPTY_STATEMENT';
- var EXPORT_DECLARATION = 'EXPORT_DECLARATION';
- var EXPORT_DEFAULT = 'EXPORT_DEFAULT';
- var EXPORT_SPECIFIER = 'EXPORT_SPECIFIER';
- var EXPORT_SPECIFIER_SET = 'EXPORT_SPECIFIER_SET';
- var EXPORT_STAR = 'EXPORT_STAR';
- var EXPRESSION_STATEMENT = 'EXPRESSION_STATEMENT';
- var FINALLY = 'FINALLY';
- var FOR_IN_STATEMENT = 'FOR_IN_STATEMENT';
- var FOR_OF_STATEMENT = 'FOR_OF_STATEMENT';
- var FOR_STATEMENT = 'FOR_STATEMENT';
- var FORMAL_PARAMETER = 'FORMAL_PARAMETER';
- var FORMAL_PARAMETER_LIST = 'FORMAL_PARAMETER_LIST';
- var FUNCTION_BODY = 'FUNCTION_BODY';
- var FUNCTION_DECLARATION = 'FUNCTION_DECLARATION';
- var FUNCTION_EXPRESSION = 'FUNCTION_EXPRESSION';
- var GENERATOR_COMPREHENSION = 'GENERATOR_COMPREHENSION';
- var GET_ACCESSOR = 'GET_ACCESSOR';
- var IDENTIFIER_EXPRESSION = 'IDENTIFIER_EXPRESSION';
- var IF_STATEMENT = 'IF_STATEMENT';
- var IMPORT_DECLARATION = 'IMPORT_DECLARATION';
- var IMPORT_SPECIFIER = 'IMPORT_SPECIFIER';
- var IMPORT_SPECIFIER_SET = 'IMPORT_SPECIFIER_SET';
- var IMPORTED_BINDING = 'IMPORTED_BINDING';
- var LABELLED_STATEMENT = 'LABELLED_STATEMENT';
- var LITERAL_EXPRESSION = 'LITERAL_EXPRESSION';
- var LITERAL_PROPERTY_NAME = 'LITERAL_PROPERTY_NAME';
- var MEMBER_EXPRESSION = 'MEMBER_EXPRESSION';
- var MEMBER_LOOKUP_EXPRESSION = 'MEMBER_LOOKUP_EXPRESSION';
- var MODULE = 'MODULE';
- var MODULE_DECLARATION = 'MODULE_DECLARATION';
- var MODULE_SPECIFIER = 'MODULE_SPECIFIER';
- var NAMED_EXPORT = 'NAMED_EXPORT';
- var NEW_EXPRESSION = 'NEW_EXPRESSION';
- var OBJECT_LITERAL_EXPRESSION = 'OBJECT_LITERAL_EXPRESSION';
- var OBJECT_PATTERN = 'OBJECT_PATTERN';
- var OBJECT_PATTERN_FIELD = 'OBJECT_PATTERN_FIELD';
- var PAREN_EXPRESSION = 'PAREN_EXPRESSION';
- var POSTFIX_EXPRESSION = 'POSTFIX_EXPRESSION';
- var PREDEFINED_TYPE = 'PREDEFINED_TYPE';
- var PROPERTY_METHOD_ASSIGNMENT = 'PROPERTY_METHOD_ASSIGNMENT';
- var PROPERTY_NAME_ASSIGNMENT = 'PROPERTY_NAME_ASSIGNMENT';
- var PROPERTY_NAME_SHORTHAND = 'PROPERTY_NAME_SHORTHAND';
- var REST_PARAMETER = 'REST_PARAMETER';
- var RETURN_STATEMENT = 'RETURN_STATEMENT';
- var SCRIPT = 'SCRIPT';
- var SET_ACCESSOR = 'SET_ACCESSOR';
- var SPREAD_EXPRESSION = 'SPREAD_EXPRESSION';
- var SPREAD_PATTERN_ELEMENT = 'SPREAD_PATTERN_ELEMENT';
- var STATE_MACHINE = 'STATE_MACHINE';
- var SUPER_EXPRESSION = 'SUPER_EXPRESSION';
- var SWITCH_STATEMENT = 'SWITCH_STATEMENT';
- var SYNTAX_ERROR_TREE = 'SYNTAX_ERROR_TREE';
- var TEMPLATE_LITERAL_EXPRESSION = 'TEMPLATE_LITERAL_EXPRESSION';
- var TEMPLATE_LITERAL_PORTION = 'TEMPLATE_LITERAL_PORTION';
- var TEMPLATE_SUBSTITUTION = 'TEMPLATE_SUBSTITUTION';
- var THIS_EXPRESSION = 'THIS_EXPRESSION';
- var THROW_STATEMENT = 'THROW_STATEMENT';
- var TRY_STATEMENT = 'TRY_STATEMENT';
- var TYPE_NAME = 'TYPE_NAME';
- var UNARY_EXPRESSION = 'UNARY_EXPRESSION';
- var VARIABLE_DECLARATION = 'VARIABLE_DECLARATION';
- var VARIABLE_DECLARATION_LIST = 'VARIABLE_DECLARATION_LIST';
- var VARIABLE_STATEMENT = 'VARIABLE_STATEMENT';
- var WHILE_STATEMENT = 'WHILE_STATEMENT';
- var WITH_STATEMENT = 'WITH_STATEMENT';
- var YIELD_EXPRESSION = 'YIELD_EXPRESSION';
- return {
- get ANNOTATION() {
- return ANNOTATION;
- },
- get ANON_BLOCK() {
- return ANON_BLOCK;
- },
- get ARGUMENT_LIST() {
- return ARGUMENT_LIST;
- },
- get ARRAY_COMPREHENSION() {
- return ARRAY_COMPREHENSION;
- },
- get ARRAY_LITERAL_EXPRESSION() {
- return ARRAY_LITERAL_EXPRESSION;
- },
- get ARRAY_PATTERN() {
- return ARRAY_PATTERN;
- },
- get ARROW_FUNCTION_EXPRESSION() {
- return ARROW_FUNCTION_EXPRESSION;
- },
- get AWAIT_STATEMENT() {
- return AWAIT_STATEMENT;
- },
- get BINARY_OPERATOR() {
- return BINARY_OPERATOR;
- },
- get BINDING_ELEMENT() {
- return BINDING_ELEMENT;
- },
- get BINDING_IDENTIFIER() {
- return BINDING_IDENTIFIER;
- },
- get BLOCK() {
- return BLOCK;
- },
- get BREAK_STATEMENT() {
- return BREAK_STATEMENT;
- },
- get CALL_EXPRESSION() {
- return CALL_EXPRESSION;
- },
- get CASE_CLAUSE() {
- return CASE_CLAUSE;
- },
- get CATCH() {
- return CATCH;
- },
- get CLASS_DECLARATION() {
- return CLASS_DECLARATION;
- },
- get CLASS_EXPRESSION() {
- return CLASS_EXPRESSION;
- },
- get COMMA_EXPRESSION() {
- return COMMA_EXPRESSION;
- },
- get COMPREHENSION_FOR() {
- return COMPREHENSION_FOR;
- },
- get COMPREHENSION_IF() {
- return COMPREHENSION_IF;
- },
- get COMPUTED_PROPERTY_NAME() {
- return COMPUTED_PROPERTY_NAME;
- },
- get CONDITIONAL_EXPRESSION() {
- return CONDITIONAL_EXPRESSION;
- },
- get CONTINUE_STATEMENT() {
- return CONTINUE_STATEMENT;
- },
- get COVER_FORMALS() {
- return COVER_FORMALS;
- },
- get COVER_INITIALISED_NAME() {
- return COVER_INITIALISED_NAME;
- },
- get DEBUGGER_STATEMENT() {
- return DEBUGGER_STATEMENT;
- },
- get DEFAULT_CLAUSE() {
- return DEFAULT_CLAUSE;
- },
- get DO_WHILE_STATEMENT() {
- return DO_WHILE_STATEMENT;
- },
- get EMPTY_STATEMENT() {
- return EMPTY_STATEMENT;
- },
- get EXPORT_DECLARATION() {
- return EXPORT_DECLARATION;
- },
- get EXPORT_DEFAULT() {
- return EXPORT_DEFAULT;
- },
- get EXPORT_SPECIFIER() {
- return EXPORT_SPECIFIER;
- },
- get EXPORT_SPECIFIER_SET() {
- return EXPORT_SPECIFIER_SET;
- },
- get EXPORT_STAR() {
- return EXPORT_STAR;
- },
- get EXPRESSION_STATEMENT() {
- return EXPRESSION_STATEMENT;
- },
- get FINALLY() {
- return FINALLY;
- },
- get FOR_IN_STATEMENT() {
- return FOR_IN_STATEMENT;
- },
- get FOR_OF_STATEMENT() {
- return FOR_OF_STATEMENT;
- },
- get FOR_STATEMENT() {
- return FOR_STATEMENT;
- },
- get FORMAL_PARAMETER() {
- return FORMAL_PARAMETER;
- },
- get FORMAL_PARAMETER_LIST() {
- return FORMAL_PARAMETER_LIST;
- },
- get FUNCTION_BODY() {
- return FUNCTION_BODY;
- },
- get FUNCTION_DECLARATION() {
- return FUNCTION_DECLARATION;
- },
- get FUNCTION_EXPRESSION() {
- return FUNCTION_EXPRESSION;
- },
- get GENERATOR_COMPREHENSION() {
- return GENERATOR_COMPREHENSION;
- },
- get GET_ACCESSOR() {
- return GET_ACCESSOR;
- },
- get IDENTIFIER_EXPRESSION() {
- return IDENTIFIER_EXPRESSION;
- },
- get IF_STATEMENT() {
- return IF_STATEMENT;
- },
- get IMPORT_DECLARATION() {
- return IMPORT_DECLARATION;
- },
- get IMPORT_SPECIFIER() {
- return IMPORT_SPECIFIER;
- },
- get IMPORT_SPECIFIER_SET() {
- return IMPORT_SPECIFIER_SET;
- },
- get IMPORTED_BINDING() {
- return IMPORTED_BINDING;
- },
- get LABELLED_STATEMENT() {
- return LABELLED_STATEMENT;
- },
- get LITERAL_EXPRESSION() {
- return LITERAL_EXPRESSION;
- },
- get LITERAL_PROPERTY_NAME() {
- return LITERAL_PROPERTY_NAME;
- },
- get MEMBER_EXPRESSION() {
- return MEMBER_EXPRESSION;
- },
- get MEMBER_LOOKUP_EXPRESSION() {
- return MEMBER_LOOKUP_EXPRESSION;
- },
- get MODULE() {
- return MODULE;
- },
- get MODULE_DECLARATION() {
- return MODULE_DECLARATION;
- },
- get MODULE_SPECIFIER() {
- return MODULE_SPECIFIER;
- },
- get NAMED_EXPORT() {
- return NAMED_EXPORT;
- },
- get NEW_EXPRESSION() {
- return NEW_EXPRESSION;
- },
- get OBJECT_LITERAL_EXPRESSION() {
- return OBJECT_LITERAL_EXPRESSION;
- },
- get OBJECT_PATTERN() {
- return OBJECT_PATTERN;
- },
- get OBJECT_PATTERN_FIELD() {
- return OBJECT_PATTERN_FIELD;
- },
- get PAREN_EXPRESSION() {
- return PAREN_EXPRESSION;
- },
- get POSTFIX_EXPRESSION() {
- return POSTFIX_EXPRESSION;
- },
- get PREDEFINED_TYPE() {
- return PREDEFINED_TYPE;
- },
- get PROPERTY_METHOD_ASSIGNMENT() {
- return PROPERTY_METHOD_ASSIGNMENT;
- },
- get PROPERTY_NAME_ASSIGNMENT() {
- return PROPERTY_NAME_ASSIGNMENT;
- },
- get PROPERTY_NAME_SHORTHAND() {
- return PROPERTY_NAME_SHORTHAND;
- },
- get REST_PARAMETER() {
- return REST_PARAMETER;
- },
- get RETURN_STATEMENT() {
- return RETURN_STATEMENT;
- },
- get SCRIPT() {
- return SCRIPT;
- },
- get SET_ACCESSOR() {
- return SET_ACCESSOR;
- },
- get SPREAD_EXPRESSION() {
- return SPREAD_EXPRESSION;
- },
- get SPREAD_PATTERN_ELEMENT() {
- return SPREAD_PATTERN_ELEMENT;
- },
- get STATE_MACHINE() {
- return STATE_MACHINE;
- },
- get SUPER_EXPRESSION() {
- return SUPER_EXPRESSION;
- },
- get SWITCH_STATEMENT() {
- return SWITCH_STATEMENT;
- },
- get SYNTAX_ERROR_TREE() {
- return SYNTAX_ERROR_TREE;
- },
- get TEMPLATE_LITERAL_EXPRESSION() {
- return TEMPLATE_LITERAL_EXPRESSION;
- },
- get TEMPLATE_LITERAL_PORTION() {
- return TEMPLATE_LITERAL_PORTION;
- },
- get TEMPLATE_SUBSTITUTION() {
- return TEMPLATE_SUBSTITUTION;
- },
- get THIS_EXPRESSION() {
- return THIS_EXPRESSION;
- },
- get THROW_STATEMENT() {
- return THROW_STATEMENT;
- },
- get TRY_STATEMENT() {
- return TRY_STATEMENT;
- },
- get TYPE_NAME() {
- return TYPE_NAME;
- },
- get UNARY_EXPRESSION() {
- return UNARY_EXPRESSION;
- },
- get VARIABLE_DECLARATION() {
- return VARIABLE_DECLARATION;
- },
- get VARIABLE_DECLARATION_LIST() {
- return VARIABLE_DECLARATION_LIST;
- },
- get VARIABLE_STATEMENT() {
- return VARIABLE_STATEMENT;
- },
- get WHILE_STATEMENT() {
- return WHILE_STATEMENT;
- },
- get WITH_STATEMENT() {
- return WITH_STATEMENT;
- },
- get YIELD_EXPRESSION() {
- return YIELD_EXPRESSION;
- }
- };
-});
-System.register("traceur@0.0.32/src/util/JSON", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/util/JSON";
- function transform(v) {
- var replacer = arguments[1] !== (void 0) ? arguments[1] : (function(k, v) {
- return v;
- });
- return transform_(replacer('', v), replacer);
- }
- function transform_(v, replacer) {
- var rv,
- tv;
- if (Array.isArray(v)) {
- var len = v.length;
- rv = Array(len);
- for (var i = 0; i < len; i++) {
- tv = transform_(replacer(String(i), v[i]), replacer);
- rv[i] = tv === undefined ? null : tv;
- }
- return rv;
- }
- if (v instanceof Object) {
- rv = {};
- Object.keys(v).forEach((function(k) {
- tv = transform_(replacer(k, v[k]), replacer);
- if (tv !== undefined) {
- rv[k] = tv;
- }
- }));
- return rv;
- }
- return v;
- }
- return {get transform() {
- return transform;
- }};
-});
-System.register("traceur@0.0.32/src/syntax/trees/ParseTree", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/syntax/trees/ParseTree";
- var ParseTreeType = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType");
- var $__18 = System.get("traceur@0.0.32/src/syntax/TokenType"),
- STRING = $__18.STRING,
- VAR = $__18.VAR;
- var Token = System.get("traceur@0.0.32/src/syntax/Token").Token;
- var utilJSON = System.get("traceur@0.0.32/src/util/JSON");
- var $__18 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- ARGUMENT_LIST = $__18.ARGUMENT_LIST,
- ARRAY_COMPREHENSION = $__18.ARRAY_COMPREHENSION,
- ARRAY_LITERAL_EXPRESSION = $__18.ARRAY_LITERAL_EXPRESSION,
- ARRAY_PATTERN = $__18.ARRAY_PATTERN,
- ARROW_FUNCTION_EXPRESSION = $__18.ARROW_FUNCTION_EXPRESSION,
- AWAIT_STATEMENT = $__18.AWAIT_STATEMENT,
- BINARY_OPERATOR = $__18.BINARY_OPERATOR,
- BINDING_ELEMENT = $__18.BINDING_ELEMENT,
- BINDING_IDENTIFIER = $__18.BINDING_IDENTIFIER,
- BLOCK = $__18.BLOCK,
- BREAK_STATEMENT = $__18.BREAK_STATEMENT,
- CALL_EXPRESSION = $__18.CALL_EXPRESSION,
- CASE_CLAUSE = $__18.CASE_CLAUSE,
- CATCH = $__18.CATCH,
- CLASS_DECLARATION = $__18.CLASS_DECLARATION,
- CLASS_EXPRESSION = $__18.CLASS_EXPRESSION,
- COMMA_EXPRESSION = $__18.COMMA_EXPRESSION,
- COMPREHENSION_FOR = $__18.COMPREHENSION_FOR,
- COMPREHENSION_IF = $__18.COMPREHENSION_IF,
- COMPUTED_PROPERTY_NAME = $__18.COMPUTED_PROPERTY_NAME,
- CONDITIONAL_EXPRESSION = $__18.CONDITIONAL_EXPRESSION,
- CONTINUE_STATEMENT = $__18.CONTINUE_STATEMENT,
- COVER_FORMALS = $__18.COVER_FORMALS,
- COVER_INITIALISED_NAME = $__18.COVER_INITIALISED_NAME,
- DEBUGGER_STATEMENT = $__18.DEBUGGER_STATEMENT,
- DEFAULT_CLAUSE = $__18.DEFAULT_CLAUSE,
- DO_WHILE_STATEMENT = $__18.DO_WHILE_STATEMENT,
- EMPTY_STATEMENT = $__18.EMPTY_STATEMENT,
- EXPORT_DECLARATION = $__18.EXPORT_DECLARATION,
- EXPORT_SPECIFIER = $__18.EXPORT_SPECIFIER,
- EXPORT_SPECIFIER_SET = $__18.EXPORT_SPECIFIER_SET,
- EXPORT_STAR = $__18.EXPORT_STAR,
- EXPRESSION_STATEMENT = $__18.EXPRESSION_STATEMENT,
- FINALLY = $__18.FINALLY,
- FOR_IN_STATEMENT = $__18.FOR_IN_STATEMENT,
- FOR_OF_STATEMENT = $__18.FOR_OF_STATEMENT,
- FOR_STATEMENT = $__18.FOR_STATEMENT,
- FORMAL_PARAMETER = $__18.FORMAL_PARAMETER,
- FORMAL_PARAMETER_LIST = $__18.FORMAL_PARAMETER_LIST,
- FUNCTION_BODY = $__18.FUNCTION_BODY,
- FUNCTION_DECLARATION = $__18.FUNCTION_DECLARATION,
- FUNCTION_EXPRESSION = $__18.FUNCTION_EXPRESSION,
- GENERATOR_COMPREHENSION = $__18.GENERATOR_COMPREHENSION,
- GET_ACCESSOR = $__18.GET_ACCESSOR,
- IDENTIFIER_EXPRESSION = $__18.IDENTIFIER_EXPRESSION,
- IF_STATEMENT = $__18.IF_STATEMENT,
- IMPORT_DECLARATION = $__18.IMPORT_DECLARATION,
- IMPORT_SPECIFIER = $__18.IMPORT_SPECIFIER,
- IMPORT_SPECIFIER_SET = $__18.IMPORT_SPECIFIER_SET,
- LABELLED_STATEMENT = $__18.LABELLED_STATEMENT,
- LITERAL_EXPRESSION = $__18.LITERAL_EXPRESSION,
- LITERAL_PROPERTY_NAME = $__18.LITERAL_PROPERTY_NAME,
- MEMBER_EXPRESSION = $__18.MEMBER_EXPRESSION,
- MEMBER_LOOKUP_EXPRESSION = $__18.MEMBER_LOOKUP_EXPRESSION,
- MODULE = $__18.MODULE,
- MODULE_DECLARATION = $__18.MODULE_DECLARATION,
- MODULE_SPECIFIER = $__18.MODULE_SPECIFIER,
- NAMED_EXPORT = $__18.NAMED_EXPORT,
- NEW_EXPRESSION = $__18.NEW_EXPRESSION,
- OBJECT_LITERAL_EXPRESSION = $__18.OBJECT_LITERAL_EXPRESSION,
- OBJECT_PATTERN = $__18.OBJECT_PATTERN,
- OBJECT_PATTERN_FIELD = $__18.OBJECT_PATTERN_FIELD,
- PAREN_EXPRESSION = $__18.PAREN_EXPRESSION,
- POSTFIX_EXPRESSION = $__18.POSTFIX_EXPRESSION,
- PREDEFINED_TYPE = $__18.PREDEFINED_TYPE,
- PROPERTY_METHOD_ASSIGNMENT = $__18.PROPERTY_METHOD_ASSIGNMENT,
- PROPERTY_NAME_ASSIGNMENT = $__18.PROPERTY_NAME_ASSIGNMENT,
- PROPERTY_NAME_SHORTHAND = $__18.PROPERTY_NAME_SHORTHAND,
- REST_PARAMETER = $__18.REST_PARAMETER,
- RETURN_STATEMENT = $__18.RETURN_STATEMENT,
- SCRIPT = $__18.SCRIPT,
- SET_ACCESSOR = $__18.SET_ACCESSOR,
- SPREAD_EXPRESSION = $__18.SPREAD_EXPRESSION,
- SPREAD_PATTERN_ELEMENT = $__18.SPREAD_PATTERN_ELEMENT,
- STATE_MACHINE = $__18.STATE_MACHINE,
- SUPER_EXPRESSION = $__18.SUPER_EXPRESSION,
- SWITCH_STATEMENT = $__18.SWITCH_STATEMENT,
- SYNTAX_ERROR_TREE = $__18.SYNTAX_ERROR_TREE,
- TEMPLATE_LITERAL_EXPRESSION = $__18.TEMPLATE_LITERAL_EXPRESSION,
- TEMPLATE_LITERAL_PORTION = $__18.TEMPLATE_LITERAL_PORTION,
- TEMPLATE_SUBSTITUTION = $__18.TEMPLATE_SUBSTITUTION,
- THIS_EXPRESSION = $__18.THIS_EXPRESSION,
- THROW_STATEMENT = $__18.THROW_STATEMENT,
- TRY_STATEMENT = $__18.TRY_STATEMENT,
- TYPE_NAME = $__18.TYPE_NAME,
- UNARY_EXPRESSION = $__18.UNARY_EXPRESSION,
- VARIABLE_DECLARATION = $__18.VARIABLE_DECLARATION,
- VARIABLE_DECLARATION_LIST = $__18.VARIABLE_DECLARATION_LIST,
- VARIABLE_STATEMENT = $__18.VARIABLE_STATEMENT,
- WHILE_STATEMENT = $__18.WHILE_STATEMENT,
- WITH_STATEMENT = $__18.WITH_STATEMENT,
- YIELD_EXPRESSION = $__18.YIELD_EXPRESSION;
- ;
- var ParseTree = function ParseTree(type, location) {
- throw new Error("Don't use for now. 'super' is currently very slow.");
- this.type = type;
- this.location = location;
- };
- var $ParseTree = ParseTree;
- ($traceurRuntime.createClass)(ParseTree, {
- isPattern: function() {
- switch (this.type) {
- case ARRAY_PATTERN:
- case OBJECT_PATTERN:
- return true;
- case PAREN_EXPRESSION:
- return this.expression.isPattern();
- default:
- return false;
- }
- },
- isLeftHandSideExpression: function() {
- switch (this.type) {
- case THIS_EXPRESSION:
- case CLASS_EXPRESSION:
- case SUPER_EXPRESSION:
- case IDENTIFIER_EXPRESSION:
- case LITERAL_EXPRESSION:
- case ARRAY_LITERAL_EXPRESSION:
- case OBJECT_LITERAL_EXPRESSION:
- case NEW_EXPRESSION:
- case MEMBER_EXPRESSION:
- case MEMBER_LOOKUP_EXPRESSION:
- case CALL_EXPRESSION:
- case FUNCTION_EXPRESSION:
- case TEMPLATE_LITERAL_EXPRESSION:
- return true;
- case PAREN_EXPRESSION:
- return this.expression.isLeftHandSideExpression();
- default:
- return false;
- }
- },
- isArrowFunctionExpression: function() {
- switch (this.type) {
- case ARRAY_COMPREHENSION:
- case ARRAY_LITERAL_EXPRESSION:
- case ARROW_FUNCTION_EXPRESSION:
- case BINARY_OPERATOR:
- case CALL_EXPRESSION:
- case CLASS_EXPRESSION:
- case CONDITIONAL_EXPRESSION:
- case FUNCTION_EXPRESSION:
- case GENERATOR_COMPREHENSION:
- case IDENTIFIER_EXPRESSION:
- case LITERAL_EXPRESSION:
- case MEMBER_EXPRESSION:
- case MEMBER_LOOKUP_EXPRESSION:
- case NEW_EXPRESSION:
- case OBJECT_LITERAL_EXPRESSION:
- case PAREN_EXPRESSION:
- case POSTFIX_EXPRESSION:
- case TEMPLATE_LITERAL_EXPRESSION:
- case SUPER_EXPRESSION:
- case THIS_EXPRESSION:
- case UNARY_EXPRESSION:
- case YIELD_EXPRESSION:
- return true;
- default:
- return false;
- }
- },
- isMemberExpression: function() {
- switch (this.type) {
- case THIS_EXPRESSION:
- case CLASS_EXPRESSION:
- case SUPER_EXPRESSION:
- case IDENTIFIER_EXPRESSION:
- case LITERAL_EXPRESSION:
- case ARRAY_LITERAL_EXPRESSION:
- case OBJECT_LITERAL_EXPRESSION:
- case PAREN_EXPRESSION:
- case TEMPLATE_LITERAL_EXPRESSION:
- case FUNCTION_EXPRESSION:
- case MEMBER_LOOKUP_EXPRESSION:
- case MEMBER_EXPRESSION:
- case CALL_EXPRESSION:
- return true;
- case NEW_EXPRESSION:
- return this.args != null;
- }
- return false;
- },
- isExpression: function() {
- return this.isArrowFunctionExpression() || this.type == COMMA_EXPRESSION;
- },
- isAssignmentOrSpread: function() {
- return this.isArrowFunctionExpression() || this.type == SPREAD_EXPRESSION;
- },
- isRestParameter: function() {
- return this.type == REST_PARAMETER || (this.type == FORMAL_PARAMETER && this.parameter.isRestParameter());
- },
- isSpreadPatternElement: function() {
- return this.type == SPREAD_PATTERN_ELEMENT;
- },
- isStatementListItem: function() {
- return this.isStatement() || this.isDeclaration();
- },
- isStatement: function() {
- switch (this.type) {
- case BLOCK:
- case VARIABLE_STATEMENT:
- case EMPTY_STATEMENT:
- case EXPRESSION_STATEMENT:
- case IF_STATEMENT:
- case CONTINUE_STATEMENT:
- case BREAK_STATEMENT:
- case RETURN_STATEMENT:
- case WITH_STATEMENT:
- case LABELLED_STATEMENT:
- case THROW_STATEMENT:
- case TRY_STATEMENT:
- case DEBUGGER_STATEMENT:
- case AWAIT_STATEMENT:
- return true;
- }
- return this.isBreakableStatement();
- },
- isDeclaration: function() {
- switch (this.type) {
- case FUNCTION_DECLARATION:
- case CLASS_DECLARATION:
- return true;
- }
- return this.isLexicalDeclaration();
- },
- isLexicalDeclaration: function() {
- switch (this.type) {
- case VARIABLE_STATEMENT:
- return this.declarations.declarationType !== VAR;
- }
- return false;
- },
- isBreakableStatement: function() {
- switch (this.type) {
- case SWITCH_STATEMENT:
- return true;
- }
- return this.isIterationStatement();
- },
- isIterationStatement: function() {
- switch (this.type) {
- case DO_WHILE_STATEMENT:
- case FOR_IN_STATEMENT:
- case FOR_OF_STATEMENT:
- case FOR_STATEMENT:
- case WHILE_STATEMENT:
- return true;
- }
- return false;
- },
- isScriptElement: function() {
- switch (this.type) {
- case CLASS_DECLARATION:
- case EXPORT_DECLARATION:
- case FUNCTION_DECLARATION:
- case IMPORT_DECLARATION:
- case MODULE_DECLARATION:
- case VARIABLE_DECLARATION:
- return true;
- }
- return this.isStatement();
- },
- getDirectivePrologueStringToken_: function() {
- var tree = this;
- if (tree.type !== EXPRESSION_STATEMENT || !(tree = tree.expression))
- return null;
- if (tree.type !== LITERAL_EXPRESSION || !(tree = tree.literalToken))
- return null;
- if (tree.type !== STRING)
- return null;
- return tree;
- },
- isDirectivePrologue: function() {
- return this.getDirectivePrologueStringToken_() !== null;
- },
- isUseStrictDirective: function() {
- var token = this.getDirectivePrologueStringToken_();
- if (!token)
- return false;
- var v = token.value;
- return v === '"use strict"' || v === "'use strict'";
- },
- toJSON: function() {
- return utilJSON.transform(this, $ParseTree.replacer);
- },
- stringify: function() {
- var indent = arguments[0] !== (void 0) ? arguments[0] : 2;
- return JSON.stringify(this, $ParseTree.replacer, indent);
- }
- }, {
- stripLocation: function(key, value) {
- if (key === 'location') {
- return undefined;
- }
- return value;
- },
- replacer: function(k, v) {
- if (v instanceof $ParseTree || v instanceof Token) {
- var rv = {type: v.type};
- Object.keys(v).forEach(function(name) {
- if (name !== 'location')
- rv[name] = v[name];
- });
- return rv;
- }
- return v;
- }
- });
- return {
- get ParseTreeType() {
- return ParseTreeType;
- },
- get ParseTree() {
- return ParseTree;
- }
- };
-});
-System.register("traceur@0.0.32/src/syntax/trees/ParseTrees", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/syntax/trees/ParseTrees";
- var ParseTree = System.get("traceur@0.0.32/src/syntax/trees/ParseTree").ParseTree;
- var ParseTreeType = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType");
- var ANNOTATION = ParseTreeType.ANNOTATION;
- var Annotation = function Annotation(location, name, args) {
- this.location = location;
- this.name = name;
- this.args = args;
- };
- ($traceurRuntime.createClass)(Annotation, {
- transform: function(transformer) {
- return transformer.transformAnnotation(this);
- },
- visit: function(visitor) {
- visitor.visitAnnotation(this);
- },
- get type() {
- return ANNOTATION;
- }
- }, {}, ParseTree);
- var ANON_BLOCK = ParseTreeType.ANON_BLOCK;
- var AnonBlock = function AnonBlock(location, statements) {
- this.location = location;
- this.statements = statements;
- };
- ($traceurRuntime.createClass)(AnonBlock, {
- transform: function(transformer) {
- return transformer.transformAnonBlock(this);
- },
- visit: function(visitor) {
- visitor.visitAnonBlock(this);
- },
- get type() {
- return ANON_BLOCK;
- }
- }, {}, ParseTree);
- var ARGUMENT_LIST = ParseTreeType.ARGUMENT_LIST;
- var ArgumentList = function ArgumentList(location, args) {
- this.location = location;
- this.args = args;
- };
- ($traceurRuntime.createClass)(ArgumentList, {
- transform: function(transformer) {
- return transformer.transformArgumentList(this);
- },
- visit: function(visitor) {
- visitor.visitArgumentList(this);
- },
- get type() {
- return ARGUMENT_LIST;
- }
- }, {}, ParseTree);
- var ARRAY_COMPREHENSION = ParseTreeType.ARRAY_COMPREHENSION;
- var ArrayComprehension = function ArrayComprehension(location, comprehensionList, expression) {
- this.location = location;
- this.comprehensionList = comprehensionList;
- this.expression = expression;
- };
- ($traceurRuntime.createClass)(ArrayComprehension, {
- transform: function(transformer) {
- return transformer.transformArrayComprehension(this);
- },
- visit: function(visitor) {
- visitor.visitArrayComprehension(this);
- },
- get type() {
- return ARRAY_COMPREHENSION;
- }
- }, {}, ParseTree);
- var ARRAY_LITERAL_EXPRESSION = ParseTreeType.ARRAY_LITERAL_EXPRESSION;
- var ArrayLiteralExpression = function ArrayLiteralExpression(location, elements) {
- this.location = location;
- this.elements = elements;
- };
- ($traceurRuntime.createClass)(ArrayLiteralExpression, {
- transform: function(transformer) {
- return transformer.transformArrayLiteralExpression(this);
- },
- visit: function(visitor) {
- visitor.visitArrayLiteralExpression(this);
- },
- get type() {
- return ARRAY_LITERAL_EXPRESSION;
- }
- }, {}, ParseTree);
- var ARRAY_PATTERN = ParseTreeType.ARRAY_PATTERN;
- var ArrayPattern = function ArrayPattern(location, elements) {
- this.location = location;
- this.elements = elements;
- };
- ($traceurRuntime.createClass)(ArrayPattern, {
- transform: function(transformer) {
- return transformer.transformArrayPattern(this);
- },
- visit: function(visitor) {
- visitor.visitArrayPattern(this);
- },
- get type() {
- return ARRAY_PATTERN;
- }
- }, {}, ParseTree);
- var ARROW_FUNCTION_EXPRESSION = ParseTreeType.ARROW_FUNCTION_EXPRESSION;
- var ArrowFunctionExpression = function ArrowFunctionExpression(location, formalParameters, functionBody) {
- this.location = location;
- this.formalParameters = formalParameters;
- this.functionBody = functionBody;
- };
- ($traceurRuntime.createClass)(ArrowFunctionExpression, {
- transform: function(transformer) {
- return transformer.transformArrowFunctionExpression(this);
- },
- visit: function(visitor) {
- visitor.visitArrowFunctionExpression(this);
- },
- get type() {
- return ARROW_FUNCTION_EXPRESSION;
- }
- }, {}, ParseTree);
- var AWAIT_STATEMENT = ParseTreeType.AWAIT_STATEMENT;
- var AwaitStatement = function AwaitStatement(location, identifier, expression) {
- this.location = location;
- this.identifier = identifier;
- this.expression = expression;
- };
- ($traceurRuntime.createClass)(AwaitStatement, {
- transform: function(transformer) {
- return transformer.transformAwaitStatement(this);
- },
- visit: function(visitor) {
- visitor.visitAwaitStatement(this);
- },
- get type() {
- return AWAIT_STATEMENT;
- }
- }, {}, ParseTree);
- var BINARY_OPERATOR = ParseTreeType.BINARY_OPERATOR;
- var BinaryOperator = function BinaryOperator(location, left, operator, right) {
- this.location = location;
- this.left = left;
- this.operator = operator;
- this.right = right;
- };
- ($traceurRuntime.createClass)(BinaryOperator, {
- transform: function(transformer) {
- return transformer.transformBinaryOperator(this);
- },
- visit: function(visitor) {
- visitor.visitBinaryOperator(this);
- },
- get type() {
- return BINARY_OPERATOR;
- }
- }, {}, ParseTree);
- var BINDING_ELEMENT = ParseTreeType.BINDING_ELEMENT;
- var BindingElement = function BindingElement(location, binding, initialiser) {
- this.location = location;
- this.binding = binding;
- this.initialiser = initialiser;
- };
- ($traceurRuntime.createClass)(BindingElement, {
- transform: function(transformer) {
- return transformer.transformBindingElement(this);
- },
- visit: function(visitor) {
- visitor.visitBindingElement(this);
- },
- get type() {
- return BINDING_ELEMENT;
- }
- }, {}, ParseTree);
- var BINDING_IDENTIFIER = ParseTreeType.BINDING_IDENTIFIER;
- var BindingIdentifier = function BindingIdentifier(location, identifierToken) {
- this.location = location;
- this.identifierToken = identifierToken;
- };
- ($traceurRuntime.createClass)(BindingIdentifier, {
- transform: function(transformer) {
- return transformer.transformBindingIdentifier(this);
- },
- visit: function(visitor) {
- visitor.visitBindingIdentifier(this);
- },
- get type() {
- return BINDING_IDENTIFIER;
- }
- }, {}, ParseTree);
- var BLOCK = ParseTreeType.BLOCK;
- var Block = function Block(location, statements) {
- this.location = location;
- this.statements = statements;
- };
- ($traceurRuntime.createClass)(Block, {
- transform: function(transformer) {
- return transformer.transformBlock(this);
- },
- visit: function(visitor) {
- visitor.visitBlock(this);
- },
- get type() {
- return BLOCK;
- }
- }, {}, ParseTree);
- var BREAK_STATEMENT = ParseTreeType.BREAK_STATEMENT;
- var BreakStatement = function BreakStatement(location, name) {
- this.location = location;
- this.name = name;
- };
- ($traceurRuntime.createClass)(BreakStatement, {
- transform: function(transformer) {
- return transformer.transformBreakStatement(this);
- },
- visit: function(visitor) {
- visitor.visitBreakStatement(this);
- },
- get type() {
- return BREAK_STATEMENT;
- }
- }, {}, ParseTree);
- var CALL_EXPRESSION = ParseTreeType.CALL_EXPRESSION;
- var CallExpression = function CallExpression(location, operand, args) {
- this.location = location;
- this.operand = operand;
- this.args = args;
- };
- ($traceurRuntime.createClass)(CallExpression, {
- transform: function(transformer) {
- return transformer.transformCallExpression(this);
- },
- visit: function(visitor) {
- visitor.visitCallExpression(this);
- },
- get type() {
- return CALL_EXPRESSION;
- }
- }, {}, ParseTree);
- var CASE_CLAUSE = ParseTreeType.CASE_CLAUSE;
- var CaseClause = function CaseClause(location, expression, statements) {
- this.location = location;
- this.expression = expression;
- this.statements = statements;
- };
- ($traceurRuntime.createClass)(CaseClause, {
- transform: function(transformer) {
- return transformer.transformCaseClause(this);
- },
- visit: function(visitor) {
- visitor.visitCaseClause(this);
- },
- get type() {
- return CASE_CLAUSE;
- }
- }, {}, ParseTree);
- var CATCH = ParseTreeType.CATCH;
- var Catch = function Catch(location, binding, catchBody) {
- this.location = location;
- this.binding = binding;
- this.catchBody = catchBody;
- };
- ($traceurRuntime.createClass)(Catch, {
- transform: function(transformer) {
- return transformer.transformCatch(this);
- },
- visit: function(visitor) {
- visitor.visitCatch(this);
- },
- get type() {
- return CATCH;
- }
- }, {}, ParseTree);
- var CLASS_DECLARATION = ParseTreeType.CLASS_DECLARATION;
- var ClassDeclaration = function ClassDeclaration(location, name, superClass, elements, annotations) {
- this.location = location;
- this.name = name;
- this.superClass = superClass;
- this.elements = elements;
- this.annotations = annotations;
- };
- ($traceurRuntime.createClass)(ClassDeclaration, {
- transform: function(transformer) {
- return transformer.transformClassDeclaration(this);
- },
- visit: function(visitor) {
- visitor.visitClassDeclaration(this);
- },
- get type() {
- return CLASS_DECLARATION;
- }
- }, {}, ParseTree);
- var CLASS_EXPRESSION = ParseTreeType.CLASS_EXPRESSION;
- var ClassExpression = function ClassExpression(location, name, superClass, elements, annotations) {
- this.location = location;
- this.name = name;
- this.superClass = superClass;
- this.elements = elements;
- this.annotations = annotations;
- };
- ($traceurRuntime.createClass)(ClassExpression, {
- transform: function(transformer) {
- return transformer.transformClassExpression(this);
- },
- visit: function(visitor) {
- visitor.visitClassExpression(this);
- },
- get type() {
- return CLASS_EXPRESSION;
- }
- }, {}, ParseTree);
- var COMMA_EXPRESSION = ParseTreeType.COMMA_EXPRESSION;
- var CommaExpression = function CommaExpression(location, expressions) {
- this.location = location;
- this.expressions = expressions;
- };
- ($traceurRuntime.createClass)(CommaExpression, {
- transform: function(transformer) {
- return transformer.transformCommaExpression(this);
- },
- visit: function(visitor) {
- visitor.visitCommaExpression(this);
- },
- get type() {
- return COMMA_EXPRESSION;
- }
- }, {}, ParseTree);
- var COMPREHENSION_FOR = ParseTreeType.COMPREHENSION_FOR;
- var ComprehensionFor = function ComprehensionFor(location, left, iterator) {
- this.location = location;
- this.left = left;
- this.iterator = iterator;
- };
- ($traceurRuntime.createClass)(ComprehensionFor, {
- transform: function(transformer) {
- return transformer.transformComprehensionFor(this);
- },
- visit: function(visitor) {
- visitor.visitComprehensionFor(this);
- },
- get type() {
- return COMPREHENSION_FOR;
- }
- }, {}, ParseTree);
- var COMPREHENSION_IF = ParseTreeType.COMPREHENSION_IF;
- var ComprehensionIf = function ComprehensionIf(location, expression) {
- this.location = location;
- this.expression = expression;
- };
- ($traceurRuntime.createClass)(ComprehensionIf, {
- transform: function(transformer) {
- return transformer.transformComprehensionIf(this);
- },
- visit: function(visitor) {
- visitor.visitComprehensionIf(this);
- },
- get type() {
- return COMPREHENSION_IF;
- }
- }, {}, ParseTree);
- var COMPUTED_PROPERTY_NAME = ParseTreeType.COMPUTED_PROPERTY_NAME;
- var ComputedPropertyName = function ComputedPropertyName(location, expression) {
- this.location = location;
- this.expression = expression;
- };
- ($traceurRuntime.createClass)(ComputedPropertyName, {
- transform: function(transformer) {
- return transformer.transformComputedPropertyName(this);
- },
- visit: function(visitor) {
- visitor.visitComputedPropertyName(this);
- },
- get type() {
- return COMPUTED_PROPERTY_NAME;
- }
- }, {}, ParseTree);
- var CONDITIONAL_EXPRESSION = ParseTreeType.CONDITIONAL_EXPRESSION;
- var ConditionalExpression = function ConditionalExpression(location, condition, left, right) {
- this.location = location;
- this.condition = condition;
- this.left = left;
- this.right = right;
- };
- ($traceurRuntime.createClass)(ConditionalExpression, {
- transform: function(transformer) {
- return transformer.transformConditionalExpression(this);
- },
- visit: function(visitor) {
- visitor.visitConditionalExpression(this);
- },
- get type() {
- return CONDITIONAL_EXPRESSION;
- }
- }, {}, ParseTree);
- var CONTINUE_STATEMENT = ParseTreeType.CONTINUE_STATEMENT;
- var ContinueStatement = function ContinueStatement(location, name) {
- this.location = location;
- this.name = name;
- };
- ($traceurRuntime.createClass)(ContinueStatement, {
- transform: function(transformer) {
- return transformer.transformContinueStatement(this);
- },
- visit: function(visitor) {
- visitor.visitContinueStatement(this);
- },
- get type() {
- return CONTINUE_STATEMENT;
- }
- }, {}, ParseTree);
- var COVER_FORMALS = ParseTreeType.COVER_FORMALS;
- var CoverFormals = function CoverFormals(location, expressions) {
- this.location = location;
- this.expressions = expressions;
- };
- ($traceurRuntime.createClass)(CoverFormals, {
- transform: function(transformer) {
- return transformer.transformCoverFormals(this);
- },
- visit: function(visitor) {
- visitor.visitCoverFormals(this);
- },
- get type() {
- return COVER_FORMALS;
- }
- }, {}, ParseTree);
- var COVER_INITIALISED_NAME = ParseTreeType.COVER_INITIALISED_NAME;
- var CoverInitialisedName = function CoverInitialisedName(location, name, equalToken, initialiser) {
- this.location = location;
- this.name = name;
- this.equalToken = equalToken;
- this.initialiser = initialiser;
- };
- ($traceurRuntime.createClass)(CoverInitialisedName, {
- transform: function(transformer) {
- return transformer.transformCoverInitialisedName(this);
- },
- visit: function(visitor) {
- visitor.visitCoverInitialisedName(this);
- },
- get type() {
- return COVER_INITIALISED_NAME;
- }
- }, {}, ParseTree);
- var DEBUGGER_STATEMENT = ParseTreeType.DEBUGGER_STATEMENT;
- var DebuggerStatement = function DebuggerStatement(location) {
- this.location = location;
- };
- ($traceurRuntime.createClass)(DebuggerStatement, {
- transform: function(transformer) {
- return transformer.transformDebuggerStatement(this);
- },
- visit: function(visitor) {
- visitor.visitDebuggerStatement(this);
- },
- get type() {
- return DEBUGGER_STATEMENT;
- }
- }, {}, ParseTree);
- var DEFAULT_CLAUSE = ParseTreeType.DEFAULT_CLAUSE;
- var DefaultClause = function DefaultClause(location, statements) {
- this.location = location;
- this.statements = statements;
- };
- ($traceurRuntime.createClass)(DefaultClause, {
- transform: function(transformer) {
- return transformer.transformDefaultClause(this);
- },
- visit: function(visitor) {
- visitor.visitDefaultClause(this);
- },
- get type() {
- return DEFAULT_CLAUSE;
- }
- }, {}, ParseTree);
- var DO_WHILE_STATEMENT = ParseTreeType.DO_WHILE_STATEMENT;
- var DoWhileStatement = function DoWhileStatement(location, body, condition) {
- this.location = location;
- this.body = body;
- this.condition = condition;
- };
- ($traceurRuntime.createClass)(DoWhileStatement, {
- transform: function(transformer) {
- return transformer.transformDoWhileStatement(this);
- },
- visit: function(visitor) {
- visitor.visitDoWhileStatement(this);
- },
- get type() {
- return DO_WHILE_STATEMENT;
- }
- }, {}, ParseTree);
- var EMPTY_STATEMENT = ParseTreeType.EMPTY_STATEMENT;
- var EmptyStatement = function EmptyStatement(location) {
- this.location = location;
- };
- ($traceurRuntime.createClass)(EmptyStatement, {
- transform: function(transformer) {
- return transformer.transformEmptyStatement(this);
- },
- visit: function(visitor) {
- visitor.visitEmptyStatement(this);
- },
- get type() {
- return EMPTY_STATEMENT;
- }
- }, {}, ParseTree);
- var EXPORT_DECLARATION = ParseTreeType.EXPORT_DECLARATION;
- var ExportDeclaration = function ExportDeclaration(location, declaration, annotations) {
- this.location = location;
- this.declaration = declaration;
- this.annotations = annotations;
- };
- ($traceurRuntime.createClass)(ExportDeclaration, {
- transform: function(transformer) {
- return transformer.transformExportDeclaration(this);
- },
- visit: function(visitor) {
- visitor.visitExportDeclaration(this);
- },
- get type() {
- return EXPORT_DECLARATION;
- }
- }, {}, ParseTree);
- var EXPORT_DEFAULT = ParseTreeType.EXPORT_DEFAULT;
- var ExportDefault = function ExportDefault(location, expression) {
- this.location = location;
- this.expression = expression;
- };
- ($traceurRuntime.createClass)(ExportDefault, {
- transform: function(transformer) {
- return transformer.transformExportDefault(this);
- },
- visit: function(visitor) {
- visitor.visitExportDefault(this);
- },
- get type() {
- return EXPORT_DEFAULT;
- }
- }, {}, ParseTree);
- var EXPORT_SPECIFIER = ParseTreeType.EXPORT_SPECIFIER;
- var ExportSpecifier = function ExportSpecifier(location, lhs, rhs) {
- this.location = location;
- this.lhs = lhs;
- this.rhs = rhs;
- };
- ($traceurRuntime.createClass)(ExportSpecifier, {
- transform: function(transformer) {
- return transformer.transformExportSpecifier(this);
- },
- visit: function(visitor) {
- visitor.visitExportSpecifier(this);
- },
- get type() {
- return EXPORT_SPECIFIER;
- }
- }, {}, ParseTree);
- var EXPORT_SPECIFIER_SET = ParseTreeType.EXPORT_SPECIFIER_SET;
- var ExportSpecifierSet = function ExportSpecifierSet(location, specifiers) {
- this.location = location;
- this.specifiers = specifiers;
- };
- ($traceurRuntime.createClass)(ExportSpecifierSet, {
- transform: function(transformer) {
- return transformer.transformExportSpecifierSet(this);
- },
- visit: function(visitor) {
- visitor.visitExportSpecifierSet(this);
- },
- get type() {
- return EXPORT_SPECIFIER_SET;
- }
- }, {}, ParseTree);
- var EXPORT_STAR = ParseTreeType.EXPORT_STAR;
- var ExportStar = function ExportStar(location) {
- this.location = location;
- };
- ($traceurRuntime.createClass)(ExportStar, {
- transform: function(transformer) {
- return transformer.transformExportStar(this);
- },
- visit: function(visitor) {
- visitor.visitExportStar(this);
- },
- get type() {
- return EXPORT_STAR;
- }
- }, {}, ParseTree);
- var EXPRESSION_STATEMENT = ParseTreeType.EXPRESSION_STATEMENT;
- var ExpressionStatement = function ExpressionStatement(location, expression) {
- this.location = location;
- this.expression = expression;
- };
- ($traceurRuntime.createClass)(ExpressionStatement, {
- transform: function(transformer) {
- return transformer.transformExpressionStatement(this);
- },
- visit: function(visitor) {
- visitor.visitExpressionStatement(this);
- },
- get type() {
- return EXPRESSION_STATEMENT;
- }
- }, {}, ParseTree);
- var FINALLY = ParseTreeType.FINALLY;
- var Finally = function Finally(location, block) {
- this.location = location;
- this.block = block;
- };
- ($traceurRuntime.createClass)(Finally, {
- transform: function(transformer) {
- return transformer.transformFinally(this);
- },
- visit: function(visitor) {
- visitor.visitFinally(this);
- },
- get type() {
- return FINALLY;
- }
- }, {}, ParseTree);
- var FOR_IN_STATEMENT = ParseTreeType.FOR_IN_STATEMENT;
- var ForInStatement = function ForInStatement(location, initialiser, collection, body) {
- this.location = location;
- this.initialiser = initialiser;
- this.collection = collection;
- this.body = body;
- };
- ($traceurRuntime.createClass)(ForInStatement, {
- transform: function(transformer) {
- return transformer.transformForInStatement(this);
- },
- visit: function(visitor) {
- visitor.visitForInStatement(this);
- },
- get type() {
- return FOR_IN_STATEMENT;
- }
- }, {}, ParseTree);
- var FOR_OF_STATEMENT = ParseTreeType.FOR_OF_STATEMENT;
- var ForOfStatement = function ForOfStatement(location, initialiser, collection, body) {
- this.location = location;
- this.initialiser = initialiser;
- this.collection = collection;
- this.body = body;
- };
- ($traceurRuntime.createClass)(ForOfStatement, {
- transform: function(transformer) {
- return transformer.transformForOfStatement(this);
- },
- visit: function(visitor) {
- visitor.visitForOfStatement(this);
- },
- get type() {
- return FOR_OF_STATEMENT;
- }
- }, {}, ParseTree);
- var FOR_STATEMENT = ParseTreeType.FOR_STATEMENT;
- var ForStatement = function ForStatement(location, initialiser, condition, increment, body) {
- this.location = location;
- this.initialiser = initialiser;
- this.condition = condition;
- this.increment = increment;
- this.body = body;
- };
- ($traceurRuntime.createClass)(ForStatement, {
- transform: function(transformer) {
- return transformer.transformForStatement(this);
- },
- visit: function(visitor) {
- visitor.visitForStatement(this);
- },
- get type() {
- return FOR_STATEMENT;
- }
- }, {}, ParseTree);
- var FORMAL_PARAMETER = ParseTreeType.FORMAL_PARAMETER;
- var FormalParameter = function FormalParameter(location, parameter, typeAnnotation, annotations) {
- this.location = location;
- this.parameter = parameter;
- this.typeAnnotation = typeAnnotation;
- this.annotations = annotations;
- };
- ($traceurRuntime.createClass)(FormalParameter, {
- transform: function(transformer) {
- return transformer.transformFormalParameter(this);
- },
- visit: function(visitor) {
- visitor.visitFormalParameter(this);
- },
- get type() {
- return FORMAL_PARAMETER;
- }
- }, {}, ParseTree);
- var FORMAL_PARAMETER_LIST = ParseTreeType.FORMAL_PARAMETER_LIST;
- var FormalParameterList = function FormalParameterList(location, parameters) {
- this.location = location;
- this.parameters = parameters;
- };
- ($traceurRuntime.createClass)(FormalParameterList, {
- transform: function(transformer) {
- return transformer.transformFormalParameterList(this);
- },
- visit: function(visitor) {
- visitor.visitFormalParameterList(this);
- },
- get type() {
- return FORMAL_PARAMETER_LIST;
- }
- }, {}, ParseTree);
- var FUNCTION_BODY = ParseTreeType.FUNCTION_BODY;
- var FunctionBody = function FunctionBody(location, statements) {
- this.location = location;
- this.statements = statements;
- };
- ($traceurRuntime.createClass)(FunctionBody, {
- transform: function(transformer) {
- return transformer.transformFunctionBody(this);
- },
- visit: function(visitor) {
- visitor.visitFunctionBody(this);
- },
- get type() {
- return FUNCTION_BODY;
- }
- }, {}, ParseTree);
- var FUNCTION_DECLARATION = ParseTreeType.FUNCTION_DECLARATION;
- var FunctionDeclaration = function FunctionDeclaration(location, name, isGenerator, formalParameterList, typeAnnotation, annotations, functionBody) {
- this.location = location;
- this.name = name;
- this.isGenerator = isGenerator;
- this.formalParameterList = formalParameterList;
- this.typeAnnotation = typeAnnotation;
- this.annotations = annotations;
- this.functionBody = functionBody;
- };
- ($traceurRuntime.createClass)(FunctionDeclaration, {
- transform: function(transformer) {
- return transformer.transformFunctionDeclaration(this);
- },
- visit: function(visitor) {
- visitor.visitFunctionDeclaration(this);
- },
- get type() {
- return FUNCTION_DECLARATION;
- }
- }, {}, ParseTree);
- var FUNCTION_EXPRESSION = ParseTreeType.FUNCTION_EXPRESSION;
- var FunctionExpression = function FunctionExpression(location, name, isGenerator, formalParameterList, typeAnnotation, annotations, functionBody) {
- this.location = location;
- this.name = name;
- this.isGenerator = isGenerator;
- this.formalParameterList = formalParameterList;
- this.typeAnnotation = typeAnnotation;
- this.annotations = annotations;
- this.functionBody = functionBody;
- };
- ($traceurRuntime.createClass)(FunctionExpression, {
- transform: function(transformer) {
- return transformer.transformFunctionExpression(this);
- },
- visit: function(visitor) {
- visitor.visitFunctionExpression(this);
- },
- get type() {
- return FUNCTION_EXPRESSION;
- }
- }, {}, ParseTree);
- var GENERATOR_COMPREHENSION = ParseTreeType.GENERATOR_COMPREHENSION;
- var GeneratorComprehension = function GeneratorComprehension(location, comprehensionList, expression) {
- this.location = location;
- this.comprehensionList = comprehensionList;
- this.expression = expression;
- };
- ($traceurRuntime.createClass)(GeneratorComprehension, {
- transform: function(transformer) {
- return transformer.transformGeneratorComprehension(this);
- },
- visit: function(visitor) {
- visitor.visitGeneratorComprehension(this);
- },
- get type() {
- return GENERATOR_COMPREHENSION;
- }
- }, {}, ParseTree);
- var GET_ACCESSOR = ParseTreeType.GET_ACCESSOR;
- var GetAccessor = function GetAccessor(location, isStatic, name, typeAnnotation, annotations, body) {
- this.location = location;
- this.isStatic = isStatic;
- this.name = name;
- this.typeAnnotation = typeAnnotation;
- this.annotations = annotations;
- this.body = body;
- };
- ($traceurRuntime.createClass)(GetAccessor, {
- transform: function(transformer) {
- return transformer.transformGetAccessor(this);
- },
- visit: function(visitor) {
- visitor.visitGetAccessor(this);
- },
- get type() {
- return GET_ACCESSOR;
- }
- }, {}, ParseTree);
- var IDENTIFIER_EXPRESSION = ParseTreeType.IDENTIFIER_EXPRESSION;
- var IdentifierExpression = function IdentifierExpression(location, identifierToken) {
- this.location = location;
- this.identifierToken = identifierToken;
- };
- ($traceurRuntime.createClass)(IdentifierExpression, {
- transform: function(transformer) {
- return transformer.transformIdentifierExpression(this);
- },
- visit: function(visitor) {
- visitor.visitIdentifierExpression(this);
- },
- get type() {
- return IDENTIFIER_EXPRESSION;
- }
- }, {}, ParseTree);
- var IF_STATEMENT = ParseTreeType.IF_STATEMENT;
- var IfStatement = function IfStatement(location, condition, ifClause, elseClause) {
- this.location = location;
- this.condition = condition;
- this.ifClause = ifClause;
- this.elseClause = elseClause;
- };
- ($traceurRuntime.createClass)(IfStatement, {
- transform: function(transformer) {
- return transformer.transformIfStatement(this);
- },
- visit: function(visitor) {
- visitor.visitIfStatement(this);
- },
- get type() {
- return IF_STATEMENT;
- }
- }, {}, ParseTree);
- var IMPORTED_BINDING = ParseTreeType.IMPORTED_BINDING;
- var ImportedBinding = function ImportedBinding(location, binding) {
- this.location = location;
- this.binding = binding;
- };
- ($traceurRuntime.createClass)(ImportedBinding, {
- transform: function(transformer) {
- return transformer.transformImportedBinding(this);
- },
- visit: function(visitor) {
- visitor.visitImportedBinding(this);
- },
- get type() {
- return IMPORTED_BINDING;
- }
- }, {}, ParseTree);
- var IMPORT_DECLARATION = ParseTreeType.IMPORT_DECLARATION;
- var ImportDeclaration = function ImportDeclaration(location, importClause, moduleSpecifier) {
- this.location = location;
- this.importClause = importClause;
- this.moduleSpecifier = moduleSpecifier;
- };
- ($traceurRuntime.createClass)(ImportDeclaration, {
- transform: function(transformer) {
- return transformer.transformImportDeclaration(this);
- },
- visit: function(visitor) {
- visitor.visitImportDeclaration(this);
- },
- get type() {
- return IMPORT_DECLARATION;
- }
- }, {}, ParseTree);
- var IMPORT_SPECIFIER = ParseTreeType.IMPORT_SPECIFIER;
- var ImportSpecifier = function ImportSpecifier(location, lhs, rhs) {
- this.location = location;
- this.lhs = lhs;
- this.rhs = rhs;
- };
- ($traceurRuntime.createClass)(ImportSpecifier, {
- transform: function(transformer) {
- return transformer.transformImportSpecifier(this);
- },
- visit: function(visitor) {
- visitor.visitImportSpecifier(this);
- },
- get type() {
- return IMPORT_SPECIFIER;
- }
- }, {}, ParseTree);
- var IMPORT_SPECIFIER_SET = ParseTreeType.IMPORT_SPECIFIER_SET;
- var ImportSpecifierSet = function ImportSpecifierSet(location, specifiers) {
- this.location = location;
- this.specifiers = specifiers;
- };
- ($traceurRuntime.createClass)(ImportSpecifierSet, {
- transform: function(transformer) {
- return transformer.transformImportSpecifierSet(this);
- },
- visit: function(visitor) {
- visitor.visitImportSpecifierSet(this);
- },
- get type() {
- return IMPORT_SPECIFIER_SET;
- }
- }, {}, ParseTree);
- var LABELLED_STATEMENT = ParseTreeType.LABELLED_STATEMENT;
- var LabelledStatement = function LabelledStatement(location, name, statement) {
- this.location = location;
- this.name = name;
- this.statement = statement;
- };
- ($traceurRuntime.createClass)(LabelledStatement, {
- transform: function(transformer) {
- return transformer.transformLabelledStatement(this);
- },
- visit: function(visitor) {
- visitor.visitLabelledStatement(this);
- },
- get type() {
- return LABELLED_STATEMENT;
- }
- }, {}, ParseTree);
- var LITERAL_EXPRESSION = ParseTreeType.LITERAL_EXPRESSION;
- var LiteralExpression = function LiteralExpression(location, literalToken) {
- this.location = location;
- this.literalToken = literalToken;
- };
- ($traceurRuntime.createClass)(LiteralExpression, {
- transform: function(transformer) {
- return transformer.transformLiteralExpression(this);
- },
- visit: function(visitor) {
- visitor.visitLiteralExpression(this);
- },
- get type() {
- return LITERAL_EXPRESSION;
- }
- }, {}, ParseTree);
- var LITERAL_PROPERTY_NAME = ParseTreeType.LITERAL_PROPERTY_NAME;
- var LiteralPropertyName = function LiteralPropertyName(location, literalToken) {
- this.location = location;
- this.literalToken = literalToken;
- };
- ($traceurRuntime.createClass)(LiteralPropertyName, {
- transform: function(transformer) {
- return transformer.transformLiteralPropertyName(this);
- },
- visit: function(visitor) {
- visitor.visitLiteralPropertyName(this);
- },
- get type() {
- return LITERAL_PROPERTY_NAME;
- }
- }, {}, ParseTree);
- var MEMBER_EXPRESSION = ParseTreeType.MEMBER_EXPRESSION;
- var MemberExpression = function MemberExpression(location, operand, memberName) {
- this.location = location;
- this.operand = operand;
- this.memberName = memberName;
- };
- ($traceurRuntime.createClass)(MemberExpression, {
- transform: function(transformer) {
- return transformer.transformMemberExpression(this);
- },
- visit: function(visitor) {
- visitor.visitMemberExpression(this);
- },
- get type() {
- return MEMBER_EXPRESSION;
- }
- }, {}, ParseTree);
- var MEMBER_LOOKUP_EXPRESSION = ParseTreeType.MEMBER_LOOKUP_EXPRESSION;
- var MemberLookupExpression = function MemberLookupExpression(location, operand, memberExpression) {
- this.location = location;
- this.operand = operand;
- this.memberExpression = memberExpression;
- };
- ($traceurRuntime.createClass)(MemberLookupExpression, {
- transform: function(transformer) {
- return transformer.transformMemberLookupExpression(this);
- },
- visit: function(visitor) {
- visitor.visitMemberLookupExpression(this);
- },
- get type() {
- return MEMBER_LOOKUP_EXPRESSION;
- }
- }, {}, ParseTree);
- var MODULE = ParseTreeType.MODULE;
- var Module = function Module(location, scriptItemList, moduleName) {
- this.location = location;
- this.scriptItemList = scriptItemList;
- this.moduleName = moduleName;
- };
- ($traceurRuntime.createClass)(Module, {
- transform: function(transformer) {
- return transformer.transformModule(this);
- },
- visit: function(visitor) {
- visitor.visitModule(this);
- },
- get type() {
- return MODULE;
- }
- }, {}, ParseTree);
- var MODULE_DECLARATION = ParseTreeType.MODULE_DECLARATION;
- var ModuleDeclaration = function ModuleDeclaration(location, identifier, expression) {
- this.location = location;
- this.identifier = identifier;
- this.expression = expression;
- };
- ($traceurRuntime.createClass)(ModuleDeclaration, {
- transform: function(transformer) {
- return transformer.transformModuleDeclaration(this);
- },
- visit: function(visitor) {
- visitor.visitModuleDeclaration(this);
- },
- get type() {
- return MODULE_DECLARATION;
- }
- }, {}, ParseTree);
- var MODULE_SPECIFIER = ParseTreeType.MODULE_SPECIFIER;
- var ModuleSpecifier = function ModuleSpecifier(location, token) {
- this.location = location;
- this.token = token;
- };
- ($traceurRuntime.createClass)(ModuleSpecifier, {
- transform: function(transformer) {
- return transformer.transformModuleSpecifier(this);
- },
- visit: function(visitor) {
- visitor.visitModuleSpecifier(this);
- },
- get type() {
- return MODULE_SPECIFIER;
- }
- }, {}, ParseTree);
- var NAMED_EXPORT = ParseTreeType.NAMED_EXPORT;
- var NamedExport = function NamedExport(location, moduleSpecifier, specifierSet) {
- this.location = location;
- this.moduleSpecifier = moduleSpecifier;
- this.specifierSet = specifierSet;
- };
- ($traceurRuntime.createClass)(NamedExport, {
- transform: function(transformer) {
- return transformer.transformNamedExport(this);
- },
- visit: function(visitor) {
- visitor.visitNamedExport(this);
- },
- get type() {
- return NAMED_EXPORT;
- }
- }, {}, ParseTree);
- var NEW_EXPRESSION = ParseTreeType.NEW_EXPRESSION;
- var NewExpression = function NewExpression(location, operand, args) {
- this.location = location;
- this.operand = operand;
- this.args = args;
- };
- ($traceurRuntime.createClass)(NewExpression, {
- transform: function(transformer) {
- return transformer.transformNewExpression(this);
- },
- visit: function(visitor) {
- visitor.visitNewExpression(this);
- },
- get type() {
- return NEW_EXPRESSION;
- }
- }, {}, ParseTree);
- var OBJECT_LITERAL_EXPRESSION = ParseTreeType.OBJECT_LITERAL_EXPRESSION;
- var ObjectLiteralExpression = function ObjectLiteralExpression(location, propertyNameAndValues) {
- this.location = location;
- this.propertyNameAndValues = propertyNameAndValues;
- };
- ($traceurRuntime.createClass)(ObjectLiteralExpression, {
- transform: function(transformer) {
- return transformer.transformObjectLiteralExpression(this);
- },
- visit: function(visitor) {
- visitor.visitObjectLiteralExpression(this);
- },
- get type() {
- return OBJECT_LITERAL_EXPRESSION;
- }
- }, {}, ParseTree);
- var OBJECT_PATTERN = ParseTreeType.OBJECT_PATTERN;
- var ObjectPattern = function ObjectPattern(location, fields) {
- this.location = location;
- this.fields = fields;
- };
- ($traceurRuntime.createClass)(ObjectPattern, {
- transform: function(transformer) {
- return transformer.transformObjectPattern(this);
- },
- visit: function(visitor) {
- visitor.visitObjectPattern(this);
- },
- get type() {
- return OBJECT_PATTERN;
- }
- }, {}, ParseTree);
- var OBJECT_PATTERN_FIELD = ParseTreeType.OBJECT_PATTERN_FIELD;
- var ObjectPatternField = function ObjectPatternField(location, name, element) {
- this.location = location;
- this.name = name;
- this.element = element;
- };
- ($traceurRuntime.createClass)(ObjectPatternField, {
- transform: function(transformer) {
- return transformer.transformObjectPatternField(this);
- },
- visit: function(visitor) {
- visitor.visitObjectPatternField(this);
- },
- get type() {
- return OBJECT_PATTERN_FIELD;
- }
- }, {}, ParseTree);
- var PAREN_EXPRESSION = ParseTreeType.PAREN_EXPRESSION;
- var ParenExpression = function ParenExpression(location, expression) {
- this.location = location;
- this.expression = expression;
- };
- ($traceurRuntime.createClass)(ParenExpression, {
- transform: function(transformer) {
- return transformer.transformParenExpression(this);
- },
- visit: function(visitor) {
- visitor.visitParenExpression(this);
- },
- get type() {
- return PAREN_EXPRESSION;
- }
- }, {}, ParseTree);
- var POSTFIX_EXPRESSION = ParseTreeType.POSTFIX_EXPRESSION;
- var PostfixExpression = function PostfixExpression(location, operand, operator) {
- this.location = location;
- this.operand = operand;
- this.operator = operator;
- };
- ($traceurRuntime.createClass)(PostfixExpression, {
- transform: function(transformer) {
- return transformer.transformPostfixExpression(this);
- },
- visit: function(visitor) {
- visitor.visitPostfixExpression(this);
- },
- get type() {
- return POSTFIX_EXPRESSION;
- }
- }, {}, ParseTree);
- var PREDEFINED_TYPE = ParseTreeType.PREDEFINED_TYPE;
- var PredefinedType = function PredefinedType(location, typeToken) {
- this.location = location;
- this.typeToken = typeToken;
- };
- ($traceurRuntime.createClass)(PredefinedType, {
- transform: function(transformer) {
- return transformer.transformPredefinedType(this);
- },
- visit: function(visitor) {
- visitor.visitPredefinedType(this);
- },
- get type() {
- return PREDEFINED_TYPE;
- }
- }, {}, ParseTree);
- var SCRIPT = ParseTreeType.SCRIPT;
- var Script = function Script(location, scriptItemList, moduleName) {
- this.location = location;
- this.scriptItemList = scriptItemList;
- this.moduleName = moduleName;
- };
- ($traceurRuntime.createClass)(Script, {
- transform: function(transformer) {
- return transformer.transformScript(this);
- },
- visit: function(visitor) {
- visitor.visitScript(this);
- },
- get type() {
- return SCRIPT;
- }
- }, {}, ParseTree);
- var PROPERTY_METHOD_ASSIGNMENT = ParseTreeType.PROPERTY_METHOD_ASSIGNMENT;
- var PropertyMethodAssignment = function PropertyMethodAssignment(location, isStatic, isGenerator, name, formalParameterList, typeAnnotation, annotations, functionBody) {
- this.location = location;
- this.isStatic = isStatic;
- this.isGenerator = isGenerator;
- this.name = name;
- this.formalParameterList = formalParameterList;
- this.typeAnnotation = typeAnnotation;
- this.annotations = annotations;
- this.functionBody = functionBody;
- };
- ($traceurRuntime.createClass)(PropertyMethodAssignment, {
- transform: function(transformer) {
- return transformer.transformPropertyMethodAssignment(this);
- },
- visit: function(visitor) {
- visitor.visitPropertyMethodAssignment(this);
- },
- get type() {
- return PROPERTY_METHOD_ASSIGNMENT;
- }
- }, {}, ParseTree);
- var PROPERTY_NAME_ASSIGNMENT = ParseTreeType.PROPERTY_NAME_ASSIGNMENT;
- var PropertyNameAssignment = function PropertyNameAssignment(location, name, value) {
- this.location = location;
- this.name = name;
- this.value = value;
- };
- ($traceurRuntime.createClass)(PropertyNameAssignment, {
- transform: function(transformer) {
- return transformer.transformPropertyNameAssignment(this);
- },
- visit: function(visitor) {
- visitor.visitPropertyNameAssignment(this);
- },
- get type() {
- return PROPERTY_NAME_ASSIGNMENT;
- }
- }, {}, ParseTree);
- var PROPERTY_NAME_SHORTHAND = ParseTreeType.PROPERTY_NAME_SHORTHAND;
- var PropertyNameShorthand = function PropertyNameShorthand(location, name) {
- this.location = location;
- this.name = name;
- };
- ($traceurRuntime.createClass)(PropertyNameShorthand, {
- transform: function(transformer) {
- return transformer.transformPropertyNameShorthand(this);
- },
- visit: function(visitor) {
- visitor.visitPropertyNameShorthand(this);
- },
- get type() {
- return PROPERTY_NAME_SHORTHAND;
- }
- }, {}, ParseTree);
- var REST_PARAMETER = ParseTreeType.REST_PARAMETER;
- var RestParameter = function RestParameter(location, identifier) {
- this.location = location;
- this.identifier = identifier;
- };
- ($traceurRuntime.createClass)(RestParameter, {
- transform: function(transformer) {
- return transformer.transformRestParameter(this);
- },
- visit: function(visitor) {
- visitor.visitRestParameter(this);
- },
- get type() {
- return REST_PARAMETER;
- }
- }, {}, ParseTree);
- var RETURN_STATEMENT = ParseTreeType.RETURN_STATEMENT;
- var ReturnStatement = function ReturnStatement(location, expression) {
- this.location = location;
- this.expression = expression;
- };
- ($traceurRuntime.createClass)(ReturnStatement, {
- transform: function(transformer) {
- return transformer.transformReturnStatement(this);
- },
- visit: function(visitor) {
- visitor.visitReturnStatement(this);
- },
- get type() {
- return RETURN_STATEMENT;
- }
- }, {}, ParseTree);
- var SET_ACCESSOR = ParseTreeType.SET_ACCESSOR;
- var SetAccessor = function SetAccessor(location, isStatic, name, parameter, annotations, body) {
- this.location = location;
- this.isStatic = isStatic;
- this.name = name;
- this.parameter = parameter;
- this.annotations = annotations;
- this.body = body;
- };
- ($traceurRuntime.createClass)(SetAccessor, {
- transform: function(transformer) {
- return transformer.transformSetAccessor(this);
- },
- visit: function(visitor) {
- visitor.visitSetAccessor(this);
- },
- get type() {
- return SET_ACCESSOR;
- }
- }, {}, ParseTree);
- var SPREAD_EXPRESSION = ParseTreeType.SPREAD_EXPRESSION;
- var SpreadExpression = function SpreadExpression(location, expression) {
- this.location = location;
- this.expression = expression;
- };
- ($traceurRuntime.createClass)(SpreadExpression, {
- transform: function(transformer) {
- return transformer.transformSpreadExpression(this);
- },
- visit: function(visitor) {
- visitor.visitSpreadExpression(this);
- },
- get type() {
- return SPREAD_EXPRESSION;
- }
- }, {}, ParseTree);
- var SPREAD_PATTERN_ELEMENT = ParseTreeType.SPREAD_PATTERN_ELEMENT;
- var SpreadPatternElement = function SpreadPatternElement(location, lvalue) {
- this.location = location;
- this.lvalue = lvalue;
- };
- ($traceurRuntime.createClass)(SpreadPatternElement, {
- transform: function(transformer) {
- return transformer.transformSpreadPatternElement(this);
- },
- visit: function(visitor) {
- visitor.visitSpreadPatternElement(this);
- },
- get type() {
- return SPREAD_PATTERN_ELEMENT;
- }
- }, {}, ParseTree);
- var SUPER_EXPRESSION = ParseTreeType.SUPER_EXPRESSION;
- var SuperExpression = function SuperExpression(location) {
- this.location = location;
- };
- ($traceurRuntime.createClass)(SuperExpression, {
- transform: function(transformer) {
- return transformer.transformSuperExpression(this);
- },
- visit: function(visitor) {
- visitor.visitSuperExpression(this);
- },
- get type() {
- return SUPER_EXPRESSION;
- }
- }, {}, ParseTree);
- var SWITCH_STATEMENT = ParseTreeType.SWITCH_STATEMENT;
- var SwitchStatement = function SwitchStatement(location, expression, caseClauses) {
- this.location = location;
- this.expression = expression;
- this.caseClauses = caseClauses;
- };
- ($traceurRuntime.createClass)(SwitchStatement, {
- transform: function(transformer) {
- return transformer.transformSwitchStatement(this);
- },
- visit: function(visitor) {
- visitor.visitSwitchStatement(this);
- },
- get type() {
- return SWITCH_STATEMENT;
- }
- }, {}, ParseTree);
- var SYNTAX_ERROR_TREE = ParseTreeType.SYNTAX_ERROR_TREE;
- var SyntaxErrorTree = function SyntaxErrorTree(location, nextToken, message) {
- this.location = location;
- this.nextToken = nextToken;
- this.message = message;
- };
- ($traceurRuntime.createClass)(SyntaxErrorTree, {
- transform: function(transformer) {
- return transformer.transformSyntaxErrorTree(this);
- },
- visit: function(visitor) {
- visitor.visitSyntaxErrorTree(this);
- },
- get type() {
- return SYNTAX_ERROR_TREE;
- }
- }, {}, ParseTree);
- var TEMPLATE_LITERAL_EXPRESSION = ParseTreeType.TEMPLATE_LITERAL_EXPRESSION;
- var TemplateLiteralExpression = function TemplateLiteralExpression(location, operand, elements) {
- this.location = location;
- this.operand = operand;
- this.elements = elements;
- };
- ($traceurRuntime.createClass)(TemplateLiteralExpression, {
- transform: function(transformer) {
- return transformer.transformTemplateLiteralExpression(this);
- },
- visit: function(visitor) {
- visitor.visitTemplateLiteralExpression(this);
- },
- get type() {
- return TEMPLATE_LITERAL_EXPRESSION;
- }
- }, {}, ParseTree);
- var TEMPLATE_LITERAL_PORTION = ParseTreeType.TEMPLATE_LITERAL_PORTION;
- var TemplateLiteralPortion = function TemplateLiteralPortion(location, value) {
- this.location = location;
- this.value = value;
- };
- ($traceurRuntime.createClass)(TemplateLiteralPortion, {
- transform: function(transformer) {
- return transformer.transformTemplateLiteralPortion(this);
- },
- visit: function(visitor) {
- visitor.visitTemplateLiteralPortion(this);
- },
- get type() {
- return TEMPLATE_LITERAL_PORTION;
- }
- }, {}, ParseTree);
- var TEMPLATE_SUBSTITUTION = ParseTreeType.TEMPLATE_SUBSTITUTION;
- var TemplateSubstitution = function TemplateSubstitution(location, expression) {
- this.location = location;
- this.expression = expression;
- };
- ($traceurRuntime.createClass)(TemplateSubstitution, {
- transform: function(transformer) {
- return transformer.transformTemplateSubstitution(this);
- },
- visit: function(visitor) {
- visitor.visitTemplateSubstitution(this);
- },
- get type() {
- return TEMPLATE_SUBSTITUTION;
- }
- }, {}, ParseTree);
- var THIS_EXPRESSION = ParseTreeType.THIS_EXPRESSION;
- var ThisExpression = function ThisExpression(location) {
- this.location = location;
- };
- ($traceurRuntime.createClass)(ThisExpression, {
- transform: function(transformer) {
- return transformer.transformThisExpression(this);
- },
- visit: function(visitor) {
- visitor.visitThisExpression(this);
- },
- get type() {
- return THIS_EXPRESSION;
- }
- }, {}, ParseTree);
- var THROW_STATEMENT = ParseTreeType.THROW_STATEMENT;
- var ThrowStatement = function ThrowStatement(location, value) {
- this.location = location;
- this.value = value;
- };
- ($traceurRuntime.createClass)(ThrowStatement, {
- transform: function(transformer) {
- return transformer.transformThrowStatement(this);
- },
- visit: function(visitor) {
- visitor.visitThrowStatement(this);
- },
- get type() {
- return THROW_STATEMENT;
- }
- }, {}, ParseTree);
- var TRY_STATEMENT = ParseTreeType.TRY_STATEMENT;
- var TryStatement = function TryStatement(location, body, catchBlock, finallyBlock) {
- this.location = location;
- this.body = body;
- this.catchBlock = catchBlock;
- this.finallyBlock = finallyBlock;
- };
- ($traceurRuntime.createClass)(TryStatement, {
- transform: function(transformer) {
- return transformer.transformTryStatement(this);
- },
- visit: function(visitor) {
- visitor.visitTryStatement(this);
- },
- get type() {
- return TRY_STATEMENT;
- }
- }, {}, ParseTree);
- var TYPE_NAME = ParseTreeType.TYPE_NAME;
- var TypeName = function TypeName(location, moduleName, name) {
- this.location = location;
- this.moduleName = moduleName;
- this.name = name;
- };
- ($traceurRuntime.createClass)(TypeName, {
- transform: function(transformer) {
- return transformer.transformTypeName(this);
- },
- visit: function(visitor) {
- visitor.visitTypeName(this);
- },
- get type() {
- return TYPE_NAME;
- }
- }, {}, ParseTree);
- var UNARY_EXPRESSION = ParseTreeType.UNARY_EXPRESSION;
- var UnaryExpression = function UnaryExpression(location, operator, operand) {
- this.location = location;
- this.operator = operator;
- this.operand = operand;
- };
- ($traceurRuntime.createClass)(UnaryExpression, {
- transform: function(transformer) {
- return transformer.transformUnaryExpression(this);
- },
- visit: function(visitor) {
- visitor.visitUnaryExpression(this);
- },
- get type() {
- return UNARY_EXPRESSION;
- }
- }, {}, ParseTree);
- var VARIABLE_DECLARATION = ParseTreeType.VARIABLE_DECLARATION;
- var VariableDeclaration = function VariableDeclaration(location, lvalue, typeAnnotation, initialiser) {
- this.location = location;
- this.lvalue = lvalue;
- this.typeAnnotation = typeAnnotation;
- this.initialiser = initialiser;
- };
- ($traceurRuntime.createClass)(VariableDeclaration, {
- transform: function(transformer) {
- return transformer.transformVariableDeclaration(this);
- },
- visit: function(visitor) {
- visitor.visitVariableDeclaration(this);
- },
- get type() {
- return VARIABLE_DECLARATION;
- }
- }, {}, ParseTree);
- var VARIABLE_DECLARATION_LIST = ParseTreeType.VARIABLE_DECLARATION_LIST;
- var VariableDeclarationList = function VariableDeclarationList(location, declarationType, declarations) {
- this.location = location;
- this.declarationType = declarationType;
- this.declarations = declarations;
- };
- ($traceurRuntime.createClass)(VariableDeclarationList, {
- transform: function(transformer) {
- return transformer.transformVariableDeclarationList(this);
- },
- visit: function(visitor) {
- visitor.visitVariableDeclarationList(this);
- },
- get type() {
- return VARIABLE_DECLARATION_LIST;
- }
- }, {}, ParseTree);
- var VARIABLE_STATEMENT = ParseTreeType.VARIABLE_STATEMENT;
- var VariableStatement = function VariableStatement(location, declarations) {
- this.location = location;
- this.declarations = declarations;
- };
- ($traceurRuntime.createClass)(VariableStatement, {
- transform: function(transformer) {
- return transformer.transformVariableStatement(this);
- },
- visit: function(visitor) {
- visitor.visitVariableStatement(this);
- },
- get type() {
- return VARIABLE_STATEMENT;
- }
- }, {}, ParseTree);
- var WHILE_STATEMENT = ParseTreeType.WHILE_STATEMENT;
- var WhileStatement = function WhileStatement(location, condition, body) {
- this.location = location;
- this.condition = condition;
- this.body = body;
- };
- ($traceurRuntime.createClass)(WhileStatement, {
- transform: function(transformer) {
- return transformer.transformWhileStatement(this);
- },
- visit: function(visitor) {
- visitor.visitWhileStatement(this);
- },
- get type() {
- return WHILE_STATEMENT;
- }
- }, {}, ParseTree);
- var WITH_STATEMENT = ParseTreeType.WITH_STATEMENT;
- var WithStatement = function WithStatement(location, expression, body) {
- this.location = location;
- this.expression = expression;
- this.body = body;
- };
- ($traceurRuntime.createClass)(WithStatement, {
- transform: function(transformer) {
- return transformer.transformWithStatement(this);
- },
- visit: function(visitor) {
- visitor.visitWithStatement(this);
- },
- get type() {
- return WITH_STATEMENT;
- }
- }, {}, ParseTree);
- var YIELD_EXPRESSION = ParseTreeType.YIELD_EXPRESSION;
- var YieldExpression = function YieldExpression(location, expression, isYieldFor) {
- this.location = location;
- this.expression = expression;
- this.isYieldFor = isYieldFor;
- };
- ($traceurRuntime.createClass)(YieldExpression, {
- transform: function(transformer) {
- return transformer.transformYieldExpression(this);
- },
- visit: function(visitor) {
- visitor.visitYieldExpression(this);
- },
- get type() {
- return YIELD_EXPRESSION;
- }
- }, {}, ParseTree);
- return {
- get Annotation() {
- return Annotation;
- },
- get AnonBlock() {
- return AnonBlock;
- },
- get ArgumentList() {
- return ArgumentList;
- },
- get ArrayComprehension() {
- return ArrayComprehension;
- },
- get ArrayLiteralExpression() {
- return ArrayLiteralExpression;
- },
- get ArrayPattern() {
- return ArrayPattern;
- },
- get ArrowFunctionExpression() {
- return ArrowFunctionExpression;
- },
- get AwaitStatement() {
- return AwaitStatement;
- },
- get BinaryOperator() {
- return BinaryOperator;
- },
- get BindingElement() {
- return BindingElement;
- },
- get BindingIdentifier() {
- return BindingIdentifier;
- },
- get Block() {
- return Block;
- },
- get BreakStatement() {
- return BreakStatement;
- },
- get CallExpression() {
- return CallExpression;
- },
- get CaseClause() {
- return CaseClause;
- },
- get Catch() {
- return Catch;
- },
- get ClassDeclaration() {
- return ClassDeclaration;
- },
- get ClassExpression() {
- return ClassExpression;
- },
- get CommaExpression() {
- return CommaExpression;
- },
- get ComprehensionFor() {
- return ComprehensionFor;
- },
- get ComprehensionIf() {
- return ComprehensionIf;
- },
- get ComputedPropertyName() {
- return ComputedPropertyName;
- },
- get ConditionalExpression() {
- return ConditionalExpression;
- },
- get ContinueStatement() {
- return ContinueStatement;
- },
- get CoverFormals() {
- return CoverFormals;
- },
- get CoverInitialisedName() {
- return CoverInitialisedName;
- },
- get DebuggerStatement() {
- return DebuggerStatement;
- },
- get DefaultClause() {
- return DefaultClause;
- },
- get DoWhileStatement() {
- return DoWhileStatement;
- },
- get EmptyStatement() {
- return EmptyStatement;
- },
- get ExportDeclaration() {
- return ExportDeclaration;
- },
- get ExportDefault() {
- return ExportDefault;
- },
- get ExportSpecifier() {
- return ExportSpecifier;
- },
- get ExportSpecifierSet() {
- return ExportSpecifierSet;
- },
- get ExportStar() {
- return ExportStar;
- },
- get ExpressionStatement() {
- return ExpressionStatement;
- },
- get Finally() {
- return Finally;
- },
- get ForInStatement() {
- return ForInStatement;
- },
- get ForOfStatement() {
- return ForOfStatement;
- },
- get ForStatement() {
- return ForStatement;
- },
- get FormalParameter() {
- return FormalParameter;
- },
- get FormalParameterList() {
- return FormalParameterList;
- },
- get FunctionBody() {
- return FunctionBody;
- },
- get FunctionDeclaration() {
- return FunctionDeclaration;
- },
- get FunctionExpression() {
- return FunctionExpression;
- },
- get GeneratorComprehension() {
- return GeneratorComprehension;
- },
- get GetAccessor() {
- return GetAccessor;
- },
- get IdentifierExpression() {
- return IdentifierExpression;
- },
- get IfStatement() {
- return IfStatement;
- },
- get ImportedBinding() {
- return ImportedBinding;
- },
- get ImportDeclaration() {
- return ImportDeclaration;
- },
- get ImportSpecifier() {
- return ImportSpecifier;
- },
- get ImportSpecifierSet() {
- return ImportSpecifierSet;
- },
- get LabelledStatement() {
- return LabelledStatement;
- },
- get LiteralExpression() {
- return LiteralExpression;
- },
- get LiteralPropertyName() {
- return LiteralPropertyName;
- },
- get MemberExpression() {
- return MemberExpression;
- },
- get MemberLookupExpression() {
- return MemberLookupExpression;
- },
- get Module() {
- return Module;
- },
- get ModuleDeclaration() {
- return ModuleDeclaration;
- },
- get ModuleSpecifier() {
- return ModuleSpecifier;
- },
- get NamedExport() {
- return NamedExport;
- },
- get NewExpression() {
- return NewExpression;
- },
- get ObjectLiteralExpression() {
- return ObjectLiteralExpression;
- },
- get ObjectPattern() {
- return ObjectPattern;
- },
- get ObjectPatternField() {
- return ObjectPatternField;
- },
- get ParenExpression() {
- return ParenExpression;
- },
- get PostfixExpression() {
- return PostfixExpression;
- },
- get PredefinedType() {
- return PredefinedType;
- },
- get Script() {
- return Script;
- },
- get PropertyMethodAssignment() {
- return PropertyMethodAssignment;
- },
- get PropertyNameAssignment() {
- return PropertyNameAssignment;
- },
- get PropertyNameShorthand() {
- return PropertyNameShorthand;
- },
- get RestParameter() {
- return RestParameter;
- },
- get ReturnStatement() {
- return ReturnStatement;
- },
- get SetAccessor() {
- return SetAccessor;
- },
- get SpreadExpression() {
- return SpreadExpression;
- },
- get SpreadPatternElement() {
- return SpreadPatternElement;
- },
- get SuperExpression() {
- return SuperExpression;
- },
- get SwitchStatement() {
- return SwitchStatement;
- },
- get SyntaxErrorTree() {
- return SyntaxErrorTree;
- },
- get TemplateLiteralExpression() {
- return TemplateLiteralExpression;
- },
- get TemplateLiteralPortion() {
- return TemplateLiteralPortion;
- },
- get TemplateSubstitution() {
- return TemplateSubstitution;
- },
- get ThisExpression() {
- return ThisExpression;
- },
- get ThrowStatement() {
- return ThrowStatement;
- },
- get TryStatement() {
- return TryStatement;
- },
- get TypeName() {
- return TypeName;
- },
- get UnaryExpression() {
- return UnaryExpression;
- },
- get VariableDeclaration() {
- return VariableDeclaration;
- },
- get VariableDeclarationList() {
- return VariableDeclarationList;
- },
- get VariableStatement() {
- return VariableStatement;
- },
- get WhileStatement() {
- return WhileStatement;
- },
- get WithStatement() {
- return WithStatement;
- },
- get YieldExpression() {
- return YieldExpression;
- }
- };
-});
-System.register("traceur@0.0.32/src/semantics/FreeVariableChecker", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/semantics/FreeVariableChecker";
- var ARGUMENTS = System.get("traceur@0.0.32/src/syntax/PredefinedName").ARGUMENTS;
- var $__23 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- BindingIdentifier = $__23.BindingIdentifier,
- IdentifierExpression = $__23.IdentifierExpression;
- var IdentifierToken = System.get("traceur@0.0.32/src/syntax/IdentifierToken").IdentifierToken;
- var IDENTIFIER_EXPRESSION = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType").IDENTIFIER_EXPRESSION;
- var ParseTreeVisitor = System.get("traceur@0.0.32/src/syntax/ParseTreeVisitor").ParseTreeVisitor;
- var TYPEOF = System.get("traceur@0.0.32/src/syntax/TokenType").TYPEOF;
- var global = this;
- var Scope = function Scope(parent) {
- this.parent = parent;
- this.references = Object.create(null);
- this.declarations = Object.create(null);
- };
- ($traceurRuntime.createClass)(Scope, {}, {});
- function getVariableName(name) {
- if (name instanceof IdentifierExpression) {
- name = name.identifierToken;
- } else if (name instanceof BindingIdentifier) {
- name = name.identifierToken;
- }
- if (name instanceof IdentifierToken) {
- name = name.value;
- }
- return name;
- }
- var FreeVariableChecker = function FreeVariableChecker(reporter) {
- $traceurRuntime.superCall(this, $FreeVariableChecker.prototype, "constructor", []);
- this.reporter_ = reporter;
- this.scope_ = null;
- this.disableChecksLevel_ = 0;
- };
- var $FreeVariableChecker = FreeVariableChecker;
- ($traceurRuntime.createClass)(FreeVariableChecker, {
- pushScope_: function() {
- return this.scope_ = new Scope(this.scope_);
- },
- pop_: function(scope) {
- if (this.scope_ != scope) {
- throw new Error('FreeVariableChecker scope mismatch');
- }
- this.validateScope_();
- this.scope_ = scope.parent;
- },
- visitScript: function(tree, global) {
- var scope = this.pushScope_();
- var object = global;
- while (object) {
- Object.getOwnPropertyNames(object).forEach(this.declareVariable_, this);
- object = Object.getPrototypeOf(object);
- }
- this.visitList(tree.scriptItemList);
- this.pop_(scope);
- },
- visitFunction_: function(name, formalParameterList, body) {
- var scope = this.pushScope_();
- this.visitAny(name);
- this.declareVariable_(ARGUMENTS);
- this.visitAny(formalParameterList);
- this.visitAny(body);
- this.pop_(scope);
- },
- visitFunctionDeclaration: function(tree) {
- this.declareVariable_(tree.name);
- this.visitFunction_(null, tree.formalParameterList, tree.functionBody);
- },
- visitFunctionExpression: function(tree) {
- this.visitFunction_(tree.name, tree.formalParameterList, tree.functionBody);
- },
- visitArrowFunctionExpression: function(tree) {
- this.visitFunction_(null, tree.formalParameters, tree.functionBody);
- },
- visitGetAccessor: function(tree) {
- var scope = this.pushScope_();
- $traceurRuntime.superCall(this, $FreeVariableChecker.prototype, "visitGetAccessor", [tree]);
- this.pop_(scope);
- },
- visitSetAccessor: function(tree) {
- var scope = this.pushScope_();
- $traceurRuntime.superCall(this, $FreeVariableChecker.prototype, "visitSetAccessor", [tree]);
- this.pop_(scope);
- },
- visitCatch: function(tree) {
- var scope = this.pushScope_();
- $traceurRuntime.superCall(this, $FreeVariableChecker.prototype, "visitCatch", [tree]);
- this.pop_(scope);
- },
- visitBindingIdentifier: function(tree) {
- this.declareVariable_(tree);
- },
- visitIdentifierExpression: function(tree) {
- if (this.disableChecksLevel_)
- return;
- var name = getVariableName(tree);
- var scope = this.scope_;
- if (!(name in scope.references)) {
- scope.references[name] = tree.location;
- }
- },
- visitUnaryExpression: function(tree) {
- if (tree.operator.type === TYPEOF && tree.operand.type === IDENTIFIER_EXPRESSION) {
- this.declareVariable_(tree.operand);
- } else {
- $traceurRuntime.superCall(this, $FreeVariableChecker.prototype, "visitUnaryExpression", [tree]);
- }
- },
- visitWithStatement: function(tree) {
- this.visitAny(tree.expression);
- this.disableChecksLevel_++;
- this.visitAny(tree.body);
- this.disableChecksLevel_--;
- },
- declareVariable_: function(tree) {
- var name = getVariableName(tree);
- if (name) {
- var scope = this.scope_;
- if (!(name in scope.declarations)) {
- scope.declarations[name] = tree.location;
- }
- }
- },
- validateScope_: function() {
- var $__21 = this;
- if (this.disableChecksLevel_)
- return;
- var scope = this.scope_;
- var errors = [];
- for (var name in scope.references) {
- if (!(name in scope.declarations)) {
- var location = scope.references[name];
- if (!scope.parent) {
- if (!location) {
- throw new Error(("generated variable " + name + " is not defined"));
- }
- errors.push([location.start, (name + " is not defined")]);
- } else if (!(name in scope.parent.references)) {
- scope.parent.references[name] = location;
- }
- }
- }
- if (errors.length) {
- errors.sort((function(x, y) {
- return x[0].offset - y[0].offset;
- }));
- errors.forEach((function(args) {
- var $__24;
- ($__24 = $__21).reportError_.apply($__24, $traceurRuntime.toObject(args));
- }));
- }
- },
- reportError_: function(location, message) {
- this.reporter_.reportError(location, message);
- }
- }, {checkScript: function(reporter, tree) {
- new $FreeVariableChecker(reporter).visitScript(tree, global);
- }}, ParseTreeVisitor);
- return {
- get getVariableName() {
- return getVariableName;
- },
- get FreeVariableChecker() {
- return FreeVariableChecker;
- }
- };
-});
-System.register("traceur@0.0.32/src/syntax/Keywords", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/syntax/Keywords";
- var keywords = ['break', 'case', 'catch', 'class', 'const', 'continue', 'debugger', 'default', 'delete', 'do', 'else', 'export', 'finally', 'for', 'function', 'if', 'import', 'in', 'instanceof', 'let', 'new', 'return', 'super', 'switch', 'this', 'throw', 'try', 'typeof', 'var', 'void', 'while', 'with', 'enum', 'extends', 'null', 'true', 'false', 'await'];
- var strictKeywords = ['implements', 'interface', 'package', 'private', 'protected', 'public', 'static', 'yield'];
- var keywordsByName = Object.create(null);
- var NORMAL_KEYWORD = 1;
- var STRICT_KEYWORD = 2;
- keywords.forEach((function(value) {
- keywordsByName[value] = NORMAL_KEYWORD;
- }));
- strictKeywords.forEach((function(value) {
- keywordsByName[value] = STRICT_KEYWORD;
- }));
- function getKeywordType(value) {
- return keywordsByName[value];
- }
- function isStrictKeyword(value) {
- return getKeywordType(value) === STRICT_KEYWORD;
- }
- return {
- get NORMAL_KEYWORD() {
- return NORMAL_KEYWORD;
- },
- get STRICT_KEYWORD() {
- return STRICT_KEYWORD;
- },
- get getKeywordType() {
- return getKeywordType;
- },
- get isStrictKeyword() {
- return isStrictKeyword;
- }
- };
-});
-System.register("traceur@0.0.32/src/syntax/KeywordToken", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/syntax/KeywordToken";
- var STRICT_KEYWORD = System.get("traceur@0.0.32/src/syntax/Keywords").STRICT_KEYWORD;
- var Token = System.get("traceur@0.0.32/src/syntax/Token").Token;
- var KeywordToken = function KeywordToken(type, keywordType, location) {
- this.type = type;
- this.location = location;
- this.isStrictKeyword_ = keywordType === STRICT_KEYWORD;
- };
- ($traceurRuntime.createClass)(KeywordToken, {
- isKeyword: function() {
- return true;
- },
- isStrictKeyword: function() {
- return this.isStrictKeyword_;
- }
- }, {}, Token);
- return {get KeywordToken() {
- return KeywordToken;
- }};
-});
-System.register("traceur@0.0.32/src/syntax/LiteralToken", [], function() {
- "use strict";
- var $__28;
- var __moduleName = "traceur@0.0.32/src/syntax/LiteralToken";
- var Token = System.get("traceur@0.0.32/src/syntax/Token").Token;
- var $__31 = System.get("traceur@0.0.32/src/syntax/TokenType"),
- NULL = $__31.NULL,
- NUMBER = $__31.NUMBER,
- STRING = $__31.STRING;
- var StringParser = function StringParser(value) {
- this.value = value;
- this.index = 0;
- };
- ($traceurRuntime.createClass)(StringParser, ($__28 = {}, Object.defineProperty($__28, Symbol.iterator, {
- value: function() {
- return this;
- },
- configurable: true,
- enumerable: true,
- writable: true
- }), Object.defineProperty($__28, "next", {
- value: function() {
- if (++this.index >= this.value.length - 1)
- return {
- value: undefined,
- done: true
- };
- return {
- value: this.value[this.index],
- done: false
- };
- },
- configurable: true,
- enumerable: true,
- writable: true
- }), Object.defineProperty($__28, "parse", {
- value: function() {
- if (this.value.indexOf('\\') === -1)
- return this.value.slice(1, -1);
- var result = '';
- for (var $__29 = this[Symbol.iterator](),
- $__30; !($__30 = $__29.next()).done; ) {
- var ch = $__30.value;
- {
- result += ch === '\\' ? this.parseEscapeSequence() : ch;
- }
- }
- return result;
- },
- configurable: true,
- enumerable: true,
- writable: true
- }), Object.defineProperty($__28, "parseEscapeSequence", {
- value: function() {
- var ch = this.next();
- switch (ch) {
- case '\n':
- case '\r':
- case '\u2028':
- case '\u2029':
- return '';
- case '0':
- return '\0';
- case 'b':
- return '\b';
- case 'f':
- return '\f';
- case 'n':
- return '\n';
- case 'r':
- return '\r';
- case 't':
- return '\t';
- case 'v':
- return '\v';
- case 'x':
- return String.fromCharCode(parseInt(this.next() + this.next(), 16));
- case 'u':
- return String.fromCharCode(parseInt(this.next() + this.next() + this.next() + this.next(), 16));
- default:
- if (Number(ch) < 8)
- throw new Error('Octal literals are not supported');
- return ch;
- }
- },
- configurable: true,
- enumerable: true,
- writable: true
- }), $__28), {});
- var LiteralToken = function LiteralToken(type, value, location) {
- this.type = type;
- this.location = location;
- this.value = value;
- };
- ($traceurRuntime.createClass)(LiteralToken, {
- toString: function() {
- return this.value;
- },
- get processedValue() {
- switch (this.type) {
- case NULL:
- return null;
- case NUMBER:
- var value = this.value;
- if (value.charCodeAt(0) === 48) {
- switch (value.charCodeAt(1)) {
- case 66:
- case 98:
- return parseInt(this.value.slice(2), 2);
- case 79:
- case 111:
- return parseInt(this.value.slice(2), 8);
- }
- }
- return Number(this.value);
- case STRING:
- var parser = new StringParser(this.value);
- return parser.parse();
- default:
- throw new Error('Not implemented');
- }
- }
- }, {}, Token);
- return {get LiteralToken() {
- return LiteralToken;
- }};
-});
-System.register("traceur@0.0.32/src/syntax/unicode-tables", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/syntax/unicode-tables";
- var idStartTable = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 442, 443, 443, 444, 447, 448, 451, 452, 659, 660, 660, 661, 687, 688, 705, 710, 721, 736, 740, 748, 748, 750, 750, 880, 883, 884, 884, 886, 887, 890, 890, 891, 893, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, 1520, 1522, 1568, 1599, 1600, 1600, 1601, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2208, 2208, 2210, 2220, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2417, 2418, 2423, 2425, 2431, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3133, 3160, 3161, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296, 3297, 3313, 3314, 3333, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3424, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3653, 3654, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4348, 4349, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6210, 6211, 6211, 6212, 6263, 6272, 6312, 6314, 6314, 6320, 6389, 6400, 6428, 6480, 6509, 6512, 6516, 6528, 6571, 6593, 6599, 6656, 6678, 6688, 6740, 6823, 6823, 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7287, 7288, 7293, 7401, 7404, 7406, 7409, 7413, 7414, 7424, 7467, 7468, 7530, 7531, 7543, 7544, 7544, 7545, 7578, 7579, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8472, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8494, 8494, 8495, 8500, 8501, 8504, 8505, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8578, 8579, 8580, 8581, 8584, 11264, 11310, 11312, 11358, 11360, 11387, 11388, 11389, 11390, 11492, 11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 12293, 12293, 12294, 12294, 12295, 12295, 12321, 12329, 12337, 12341, 12344, 12346, 12347, 12347, 12348, 12348, 12353, 12438, 12443, 12444, 12445, 12446, 12447, 12447, 12449, 12538, 12540, 12542, 12543, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, 19968, 40908, 40960, 40980, 40981, 40981, 40982, 42124, 42192, 42231, 42232, 42237, 42240, 42507, 42508, 42508, 42512, 42527, 42538, 42539, 42560, 42605, 42606, 42606, 42623, 42623, 42624, 42647, 42656, 42725, 42726, 42735, 42775, 42783, 42786, 42863, 42864, 42864, 42865, 42887, 42888, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43001, 43002, 43002, 43003, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43631, 43632, 43632, 43633, 43638, 43642, 43642, 43648, 43695, 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43740, 43741, 43741, 43744, 43754, 43762, 43762, 43763, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43968, 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65391, 65392, 65392, 65393, 65437, 65438, 65439, 65440, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66176, 66204, 66208, 66256, 66304, 66334, 66352, 66368, 66369, 66369, 66370, 66377, 66378, 66378, 66432, 66461, 66464, 66499, 66504, 66511, 66513, 66517, 66560, 66639, 66640, 66717, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67840, 67861, 67872, 67897, 67968, 68023, 68030, 68031, 68096, 68096, 68112, 68115, 68117, 68119, 68121, 68147, 68192, 68220, 68352, 68405, 68416, 68437, 68448, 68466, 68608, 68680, 69635, 69687, 69763, 69807, 69840, 69864, 69891, 69926, 70019, 70066, 70081, 70084, 71296, 71338, 73728, 74606, 74752, 74850, 77824, 78894, 92160, 92728, 93952, 94020, 94032, 94032, 94099, 94111, 110592, 110593, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 131072, 173782, 173824, 177972, 177984, 178205, 194560, 195101];
- var idContinueTable = [183, 183, 768, 879, 903, 903, 1155, 1159, 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1552, 1562, 1611, 1631, 1632, 1641, 1648, 1648, 1750, 1756, 1759, 1764, 1767, 1768, 1770, 1773, 1776, 1785, 1809, 1809, 1840, 1866, 1958, 1968, 1984, 1993, 2027, 2035, 2070, 2073, 2075, 2083, 2085, 2087, 2089, 2093, 2137, 2139, 2276, 2302, 2304, 2306, 2307, 2307, 2362, 2362, 2363, 2363, 2364, 2364, 2366, 2368, 2369, 2376, 2377, 2380, 2381, 2381, 2382, 2383, 2385, 2391, 2402, 2403, 2406, 2415, 2433, 2433, 2434, 2435, 2492, 2492, 2494, 2496, 2497, 2500, 2503, 2504, 2507, 2508, 2509, 2509, 2519, 2519, 2530, 2531, 2534, 2543, 2561, 2562, 2563, 2563, 2620, 2620, 2622, 2624, 2625, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2662, 2671, 2672, 2673, 2677, 2677, 2689, 2690, 2691, 2691, 2748, 2748, 2750, 2752, 2753, 2757, 2759, 2760, 2761, 2761, 2763, 2764, 2765, 2765, 2786, 2787, 2790, 2799, 2817, 2817, 2818, 2819, 2876, 2876, 2878, 2878, 2879, 2879, 2880, 2880, 2881, 2884, 2887, 2888, 2891, 2892, 2893, 2893, 2902, 2902, 2903, 2903, 2914, 2915, 2918, 2927, 2946, 2946, 3006, 3007, 3008, 3008, 3009, 3010, 3014, 3016, 3018, 3020, 3021, 3021, 3031, 3031, 3046, 3055, 3073, 3075, 3134, 3136, 3137, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3170, 3171, 3174, 3183, 3202, 3203, 3260, 3260, 3262, 3262, 3263, 3263, 3264, 3268, 3270, 3270, 3271, 3272, 3274, 3275, 3276, 3277, 3285, 3286, 3298, 3299, 3302, 3311, 3330, 3331, 3390, 3392, 3393, 3396, 3398, 3400, 3402, 3404, 3405, 3405, 3415, 3415, 3426, 3427, 3430, 3439, 3458, 3459, 3530, 3530, 3535, 3537, 3538, 3540, 3542, 3542, 3544, 3551, 3570, 3571, 3633, 3633, 3636, 3642, 3655, 3662, 3664, 3673, 3761, 3761, 3764, 3769, 3771, 3772, 3784, 3789, 3792, 3801, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3903, 3953, 3966, 3967, 3967, 3968, 3972, 3974, 3975, 3981, 3991, 3993, 4028, 4038, 4038, 4139, 4140, 4141, 4144, 4145, 4145, 4146, 4151, 4152, 4152, 4153, 4154, 4155, 4156, 4157, 4158, 4160, 4169, 4182, 4183, 4184, 4185, 4190, 4192, 4194, 4196, 4199, 4205, 4209, 4212, 4226, 4226, 4227, 4228, 4229, 4230, 4231, 4236, 4237, 4237, 4239, 4239, 4240, 4249, 4250, 4252, 4253, 4253, 4957, 4959, 4969, 4977, 5906, 5908, 5938, 5940, 5970, 5971, 6002, 6003, 6068, 6069, 6070, 6070, 6071, 6077, 6078, 6085, 6086, 6086, 6087, 6088, 6089, 6099, 6109, 6109, 6112, 6121, 6155, 6157, 6160, 6169, 6313, 6313, 6432, 6434, 6435, 6438, 6439, 6440, 6441, 6443, 6448, 6449, 6450, 6450, 6451, 6456, 6457, 6459, 6470, 6479, 6576, 6592, 6600, 6601, 6608, 6617, 6618, 6618, 6679, 6680, 6681, 6683, 6741, 6741, 6742, 6742, 6743, 6743, 6744, 6750, 6752, 6752, 6753, 6753, 6754, 6754, 6755, 6756, 6757, 6764, 6765, 6770, 6771, 6780, 6783, 6783, 6784, 6793, 6800, 6809, 6912, 6915, 6916, 6916, 6964, 6964, 6965, 6965, 6966, 6970, 6971, 6971, 6972, 6972, 6973, 6977, 6978, 6978, 6979, 6980, 6992, 7001, 7019, 7027, 7040, 7041, 7042, 7042, 7073, 7073, 7074, 7077, 7078, 7079, 7080, 7081, 7082, 7082, 7083, 7083, 7084, 7085, 7088, 7097, 7142, 7142, 7143, 7143, 7144, 7145, 7146, 7148, 7149, 7149, 7150, 7150, 7151, 7153, 7154, 7155, 7204, 7211, 7212, 7219, 7220, 7221, 7222, 7223, 7232, 7241, 7248, 7257, 7376, 7378, 7380, 7392, 7393, 7393, 7394, 7400, 7405, 7405, 7410, 7411, 7412, 7412, 7616, 7654, 7676, 7679, 8255, 8256, 8276, 8276, 8400, 8412, 8417, 8417, 8421, 8432, 11503, 11505, 11647, 11647, 11744, 11775, 12330, 12333, 12334, 12335, 12441, 12442, 42528, 42537, 42607, 42607, 42612, 42621, 42655, 42655, 42736, 42737, 43010, 43010, 43014, 43014, 43019, 43019, 43043, 43044, 43045, 43046, 43047, 43047, 43136, 43137, 43188, 43203, 43204, 43204, 43216, 43225, 43232, 43249, 43264, 43273, 43302, 43309, 43335, 43345, 43346, 43347, 43392, 43394, 43395, 43395, 43443, 43443, 43444, 43445, 43446, 43449, 43450, 43451, 43452, 43452, 43453, 43456, 43472, 43481, 43561, 43566, 43567, 43568, 43569, 43570, 43571, 43572, 43573, 43574, 43587, 43587, 43596, 43596, 43597, 43597, 43600, 43609, 43643, 43643, 43696, 43696, 43698, 43700, 43703, 43704, 43710, 43711, 43713, 43713, 43755, 43755, 43756, 43757, 43758, 43759, 43765, 43765, 43766, 43766, 44003, 44004, 44005, 44005, 44006, 44007, 44008, 44008, 44009, 44010, 44012, 44012, 44013, 44013, 44016, 44025, 64286, 64286, 65024, 65039, 65056, 65062, 65075, 65076, 65101, 65103, 65296, 65305, 65343, 65343, 66045, 66045, 66720, 66729, 68097, 68099, 68101, 68102, 68108, 68111, 68152, 68154, 68159, 68159, 69632, 69632, 69633, 69633, 69634, 69634, 69688, 69702, 69734, 69743, 69760, 69761, 69762, 69762, 69808, 69810, 69811, 69814, 69815, 69816, 69817, 69818, 69872, 69881, 69888, 69890, 69927, 69931, 69932, 69932, 69933, 69940, 69942, 69951, 70016, 70017, 70018, 70018, 70067, 70069, 70070, 70078, 70079, 70080, 70096, 70105, 71339, 71339, 71340, 71340, 71341, 71341, 71342, 71343, 71344, 71349, 71350, 71350, 71351, 71351, 71360, 71369, 94033, 94078, 94095, 94098, 119141, 119142, 119143, 119145, 119149, 119154, 119163, 119170, 119173, 119179, 119210, 119213, 119362, 119364, 120782, 120831, 917760, 917999];
- return {
- get idStartTable() {
- return idStartTable;
- },
- get idContinueTable() {
- return idContinueTable;
- }
- };
-});
-System.register("traceur@0.0.32/src/syntax/Scanner", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/syntax/Scanner";
- var IdentifierToken = System.get("traceur@0.0.32/src/syntax/IdentifierToken").IdentifierToken;
- var KeywordToken = System.get("traceur@0.0.32/src/syntax/KeywordToken").KeywordToken;
- var LiteralToken = System.get("traceur@0.0.32/src/syntax/LiteralToken").LiteralToken;
- var Token = System.get("traceur@0.0.32/src/syntax/Token").Token;
- var getKeywordType = System.get("traceur@0.0.32/src/syntax/Keywords").getKeywordType;
- var $__33 = System.get("traceur@0.0.32/src/syntax/unicode-tables"),
- idContinueTable = $__33.idContinueTable,
- idStartTable = $__33.idStartTable;
- var $__33 = System.get("traceur@0.0.32/src/options"),
- options = $__33.options,
- parseOptions = $__33.parseOptions;
- var $__33 = System.get("traceur@0.0.32/src/syntax/TokenType"),
- AMPERSAND = $__33.AMPERSAND,
- AMPERSAND_EQUAL = $__33.AMPERSAND_EQUAL,
- AND = $__33.AND,
- ARROW = $__33.ARROW,
- AT = $__33.AT,
- AWAIT = $__33.AWAIT,
- BACK_QUOTE = $__33.BACK_QUOTE,
- BANG = $__33.BANG,
- BAR = $__33.BAR,
- BAR_EQUAL = $__33.BAR_EQUAL,
- BREAK = $__33.BREAK,
- CARET = $__33.CARET,
- CARET_EQUAL = $__33.CARET_EQUAL,
- CASE = $__33.CASE,
- CATCH = $__33.CATCH,
- CLASS = $__33.CLASS,
- CLOSE_ANGLE = $__33.CLOSE_ANGLE,
- CLOSE_CURLY = $__33.CLOSE_CURLY,
- CLOSE_PAREN = $__33.CLOSE_PAREN,
- CLOSE_SQUARE = $__33.CLOSE_SQUARE,
- COLON = $__33.COLON,
- COMMA = $__33.COMMA,
- CONST = $__33.CONST,
- CONTINUE = $__33.CONTINUE,
- DEBUGGER = $__33.DEBUGGER,
- DEFAULT = $__33.DEFAULT,
- DELETE = $__33.DELETE,
- DO = $__33.DO,
- DOT_DOT_DOT = $__33.DOT_DOT_DOT,
- ELSE = $__33.ELSE,
- END_OF_FILE = $__33.END_OF_FILE,
- ENUM = $__33.ENUM,
- EQUAL = $__33.EQUAL,
- EQUAL_EQUAL = $__33.EQUAL_EQUAL,
- EQUAL_EQUAL_EQUAL = $__33.EQUAL_EQUAL_EQUAL,
- ERROR = $__33.ERROR,
- EXPORT = $__33.EXPORT,
- EXTENDS = $__33.EXTENDS,
- FALSE = $__33.FALSE,
- FINALLY = $__33.FINALLY,
- FOR = $__33.FOR,
- FUNCTION = $__33.FUNCTION,
- GREATER_EQUAL = $__33.GREATER_EQUAL,
- IDENTIFIER = $__33.IDENTIFIER,
- IF = $__33.IF,
- IMPLEMENTS = $__33.IMPLEMENTS,
- IMPORT = $__33.IMPORT,
- IN = $__33.IN,
- INSTANCEOF = $__33.INSTANCEOF,
- INTERFACE = $__33.INTERFACE,
- LEFT_SHIFT = $__33.LEFT_SHIFT,
- LEFT_SHIFT_EQUAL = $__33.LEFT_SHIFT_EQUAL,
- LESS_EQUAL = $__33.LESS_EQUAL,
- LET = $__33.LET,
- MINUS = $__33.MINUS,
- MINUS_EQUAL = $__33.MINUS_EQUAL,
- MINUS_MINUS = $__33.MINUS_MINUS,
- NEW = $__33.NEW,
- NO_SUBSTITUTION_TEMPLATE = $__33.NO_SUBSTITUTION_TEMPLATE,
- NOT_EQUAL = $__33.NOT_EQUAL,
- NOT_EQUAL_EQUAL = $__33.NOT_EQUAL_EQUAL,
- NULL = $__33.NULL,
- NUMBER = $__33.NUMBER,
- OPEN_ANGLE = $__33.OPEN_ANGLE,
- OPEN_CURLY = $__33.OPEN_CURLY,
- OPEN_PAREN = $__33.OPEN_PAREN,
- OPEN_SQUARE = $__33.OPEN_SQUARE,
- OR = $__33.OR,
- PACKAGE = $__33.PACKAGE,
- PERCENT = $__33.PERCENT,
- PERCENT_EQUAL = $__33.PERCENT_EQUAL,
- PERIOD = $__33.PERIOD,
- PLUS = $__33.PLUS,
- PLUS_EQUAL = $__33.PLUS_EQUAL,
- PLUS_PLUS = $__33.PLUS_PLUS,
- PRIVATE = $__33.PRIVATE,
- PROTECTED = $__33.PROTECTED,
- PUBLIC = $__33.PUBLIC,
- QUESTION = $__33.QUESTION,
- REGULAR_EXPRESSION = $__33.REGULAR_EXPRESSION,
- RETURN = $__33.RETURN,
- RIGHT_SHIFT = $__33.RIGHT_SHIFT,
- RIGHT_SHIFT_EQUAL = $__33.RIGHT_SHIFT_EQUAL,
- SEMI_COLON = $__33.SEMI_COLON,
- SLASH = $__33.SLASH,
- SLASH_EQUAL = $__33.SLASH_EQUAL,
- STAR = $__33.STAR,
- STAR_EQUAL = $__33.STAR_EQUAL,
- STATIC = $__33.STATIC,
- STRING = $__33.STRING,
- SUPER = $__33.SUPER,
- SWITCH = $__33.SWITCH,
- TEMPLATE_HEAD = $__33.TEMPLATE_HEAD,
- TEMPLATE_MIDDLE = $__33.TEMPLATE_MIDDLE,
- TEMPLATE_TAIL = $__33.TEMPLATE_TAIL,
- THIS = $__33.THIS,
- THROW = $__33.THROW,
- TILDE = $__33.TILDE,
- TRUE = $__33.TRUE,
- TRY = $__33.TRY,
- TYPEOF = $__33.TYPEOF,
- UNSIGNED_RIGHT_SHIFT = $__33.UNSIGNED_RIGHT_SHIFT,
- UNSIGNED_RIGHT_SHIFT_EQUAL = $__33.UNSIGNED_RIGHT_SHIFT_EQUAL,
- VAR = $__33.VAR,
- VOID = $__33.VOID,
- WHILE = $__33.WHILE,
- WITH = $__33.WITH,
- YIELD = $__33.YIELD;
- var isWhitespaceArray = [];
- for (var i = 0; i < 128; i++) {
- isWhitespaceArray[i] = i >= 9 && i <= 13 || i === 0x20;
- }
- var isWhitespaceArray = [];
- for (var i = 0; i < 128; i++) {
- isWhitespaceArray[i] = i >= 9 && i <= 13 || i === 0x20;
- }
- function isWhitespace(code) {
- if (code < 128)
- return isWhitespaceArray[code];
- switch (code) {
- case 0xA0:
- case 0xFEFF:
- case 0x2028:
- case 0x2029:
- return true;
- }
- return false;
- }
- function isLineTerminator(code) {
- switch (code) {
- case 10:
- case 13:
- case 0x2028:
- case 0x2029:
- return true;
- }
- return false;
- }
- function isDecimalDigit(code) {
- return code >= 48 && code <= 57;
- }
- var isHexDigitArray = [];
- for (var i = 0; i < 128; i++) {
- isHexDigitArray[i] = i >= 48 && i <= 57 || i >= 65 && i <= 70 || i >= 97 && i <= 102;
- }
- function isHexDigit(code) {
- return code < 128 && isHexDigitArray[code];
- }
- function isBinaryDigit(code) {
- return code === 48 || code === 49;
- }
- function isOctalDigit(code) {
- return code >= 48 && code <= 55;
- }
- var isIdentifierStartArray = [];
- for (var i = 0; i < 128; i++) {
- isIdentifierStartArray[i] = i === 36 || i >= 65 && i <= 90 || i === 95 || i >= 97 && i <= 122;
- }
- function isIdentifierStart(code) {
- return code < 128 ? isIdentifierStartArray[code] : inTable(idStartTable, code);
- }
- var isIdentifierPartArray = [];
- for (var i = 0; i < 128; i++) {
- isIdentifierPartArray[i] = isIdentifierStart(i) || isDecimalDigit(i);
- }
- function isIdentifierPart(code) {
- return code < 128 ? isIdentifierPartArray[code] : inTable(idStartTable, code) || inTable(idContinueTable, code) || code === 8204 || code === 8205;
- }
- function inTable(table, code) {
- for (var i = 0; i < table.length; ) {
- if (code < table[i++])
- return false;
- if (code <= table[i++])
- return true;
- }
- return false;
- }
- function isRegularExpressionChar(code) {
- switch (code) {
- case 47:
- return false;
- case 91:
- case 92:
- return true;
- }
- return !isLineTerminator(code);
- }
- function isRegularExpressionFirstChar(code) {
- return isRegularExpressionChar(code) && code !== 42;
- }
- var index,
- input,
- length,
- token,
- lastToken,
- lookaheadToken,
- currentCharCode,
- lineNumberTable,
- errorReporter,
- currentParser;
- var Scanner = function Scanner(reporter, file, parser) {
- errorReporter = reporter;
- lineNumberTable = file.lineNumberTable;
- input = file.contents;
- length = file.contents.length;
- index = 0;
- lastToken = null;
- token = null;
- lookaheadToken = null;
- updateCurrentCharCode();
- currentParser = parser;
- };
- ($traceurRuntime.createClass)(Scanner, {
- get lastToken() {
- return lastToken;
- },
- getPosition: function() {
- return getPosition(getOffset());
- },
- nextRegularExpressionLiteralToken: function() {
- lastToken = nextRegularExpressionLiteralToken();
- token = scanToken();
- return lastToken;
- },
- nextTemplateLiteralToken: function() {
- var t = nextTemplateLiteralToken();
- token = scanToken();
- return t;
- },
- nextToken: function() {
- return nextToken();
- },
- peekToken: function(opt_index) {
- return opt_index ? peekTokenLookahead() : peekToken();
- },
- peekTokenNoLineTerminator: function() {
- return peekTokenNoLineTerminator();
- },
- isAtEnd: function() {
- return isAtEnd();
- }
- }, {});
- function getPosition(offset) {
- return lineNumberTable.getSourcePosition(offset);
- }
- function getTokenRange(startOffset) {
- return lineNumberTable.getSourceRange(startOffset, index);
- }
- function getOffset() {
- return token ? token.location.start.offset : index;
- }
- function nextRegularExpressionLiteralToken() {
- var beginIndex = index - token.toString().length;
- if (!skipRegularExpressionBody()) {
- return new LiteralToken(REGULAR_EXPRESSION, getTokenString(beginIndex), getTokenRange(beginIndex));
- }
- if (currentCharCode !== 47) {
- reportError('Expected \'/\' in regular expression literal');
- return new LiteralToken(REGULAR_EXPRESSION, getTokenString(beginIndex), getTokenRange(beginIndex));
- }
- next();
- while (isIdentifierPart(currentCharCode)) {
- next();
- }
- return new LiteralToken(REGULAR_EXPRESSION, getTokenString(beginIndex), getTokenRange(beginIndex));
- }
- function skipRegularExpressionBody() {
- if (!isRegularExpressionFirstChar(currentCharCode)) {
- reportError('Expected regular expression first char');
- return false;
- }
- while (!isAtEnd() && isRegularExpressionChar(currentCharCode)) {
- if (!skipRegularExpressionChar())
- return false;
- }
- return true;
- }
- function skipRegularExpressionChar() {
- switch (currentCharCode) {
- case 92:
- return skipRegularExpressionBackslashSequence();
- case 91:
- return skipRegularExpressionClass();
- default:
- next();
- return true;
- }
- }
- function skipRegularExpressionBackslashSequence() {
- next();
- if (isLineTerminator(currentCharCode) || isAtEnd()) {
- reportError('New line not allowed in regular expression literal');
- return false;
- }
- next();
- return true;
- }
- function skipRegularExpressionClass() {
- next();
- while (!isAtEnd() && peekRegularExpressionClassChar()) {
- if (!skipRegularExpressionClassChar()) {
- return false;
- }
- }
- if (currentCharCode !== 93) {
- reportError('\']\' expected');
- return false;
- }
- next();
- return true;
- }
- function peekRegularExpressionClassChar() {
- return currentCharCode !== 93 && !isLineTerminator(currentCharCode);
- }
- function skipRegularExpressionClassChar() {
- if (currentCharCode === 92) {
- return skipRegularExpressionBackslashSequence();
- }
- next();
- return true;
- }
- function skipTemplateCharacter() {
- while (!isAtEnd()) {
- switch (currentCharCode) {
- case 96:
- return;
- case 92:
- skipStringLiteralEscapeSequence();
- break;
- case 36:
- var code = input.charCodeAt(index + 1);
- if (code === 123)
- return;
- default:
- next();
- }
- }
- }
- function scanTemplateStart(beginIndex) {
- if (isAtEnd()) {
- reportError('Unterminated template literal');
- return lastToken = createToken(END_OF_FILE, beginIndex);
- }
- return nextTemplateLiteralTokenShared(NO_SUBSTITUTION_TEMPLATE, TEMPLATE_HEAD);
- }
- function nextTemplateLiteralToken() {
- if (isAtEnd()) {
- reportError('Expected \'}\' after expression in template literal');
- return createToken(END_OF_FILE, index);
- }
- if (token.type !== CLOSE_CURLY) {
- reportError('Expected \'}\' after expression in template literal');
- return createToken(ERROR, index);
- }
- return nextTemplateLiteralTokenShared(TEMPLATE_TAIL, TEMPLATE_MIDDLE);
- }
- function nextTemplateLiteralTokenShared(endType, middleType) {
- var beginIndex = index;
- skipTemplateCharacter();
- if (isAtEnd()) {
- reportError('Unterminated template literal');
- return createToken(ERROR, beginIndex);
- }
- var value = getTokenString(beginIndex);
- switch (currentCharCode) {
- case 96:
- next();
- return lastToken = new LiteralToken(endType, value, getTokenRange(beginIndex - 1));
- case 36:
- next();
- next();
- return lastToken = new LiteralToken(middleType, value, getTokenRange(beginIndex - 1));
- }
- }
- function nextToken() {
- var t = peekToken();
- token = lookaheadToken || scanToken();
- lookaheadToken = null;
- lastToken = t;
- return t;
- }
- function peekTokenNoLineTerminator() {
- var t = peekToken();
- var start = lastToken.location.end.offset;
- var end = t.location.start.offset;
- for (var i = start; i < end; i++) {
- var code = input.charCodeAt(i);
- if (isLineTerminator(code))
- return null;
- if (code === 47) {
- code = input.charCodeAt(++i);
- if (code === 47)
- return null;
- i = input.indexOf('*/', i) + 2;
- }
- }
- return t;
- }
- function peekToken() {
- return token || (token = scanToken());
- }
- function peekTokenLookahead() {
- if (!token)
- token = scanToken();
- if (!lookaheadToken)
- lookaheadToken = scanToken();
- return lookaheadToken;
- }
- function skipWhitespace() {
- while (!isAtEnd() && peekWhitespace()) {
- next();
- }
- }
- function peekWhitespace() {
- return isWhitespace(currentCharCode);
- }
- function skipComments() {
- while (skipComment()) {}
- }
- function skipComment() {
- skipWhitespace();
- var code = currentCharCode;
- if (code === 47) {
- code = input.charCodeAt(index + 1);
- switch (code) {
- case 47:
- skipSingleLineComment();
- return true;
- case 42:
- skipMultiLineComment();
- return true;
- }
- }
- return false;
- }
- function commentCallback(start, index) {
- if (options.commentCallback)
- currentParser.handleComment(lineNumberTable.getSourceRange(start, index));
- }
- function skipSingleLineComment() {
- var start = index;
- index += 2;
- while (!isAtEnd() && !isLineTerminator(input.charCodeAt(index++))) {}
- updateCurrentCharCode();
- commentCallback(start, index);
- }
- function skipMultiLineComment() {
- var start = index;
- var i = input.indexOf('*/', index + 2);
- if (i !== -1)
- index = i + 2;
- else
- index = length;
- updateCurrentCharCode();
- commentCallback(start, index);
- }
- function scanToken() {
- skipComments();
- var beginIndex = index;
- if (isAtEnd())
- return createToken(END_OF_FILE, beginIndex);
- var code = currentCharCode;
- next();
- switch (code) {
- case 123:
- return createToken(OPEN_CURLY, beginIndex);
- case 125:
- return createToken(CLOSE_CURLY, beginIndex);
- case 40:
- return createToken(OPEN_PAREN, beginIndex);
- case 41:
- return createToken(CLOSE_PAREN, beginIndex);
- case 91:
- return createToken(OPEN_SQUARE, beginIndex);
- case 93:
- return createToken(CLOSE_SQUARE, beginIndex);
- case 46:
- switch (currentCharCode) {
- case 46:
- if (input.charCodeAt(index + 1) === 46) {
- next();
- next();
- return createToken(DOT_DOT_DOT, beginIndex);
- }
- break;
- default:
- if (isDecimalDigit(currentCharCode))
- return scanNumberPostPeriod(beginIndex);
- }
- return createToken(PERIOD, beginIndex);
- case 59:
- return createToken(SEMI_COLON, beginIndex);
- case 44:
- return createToken(COMMA, beginIndex);
- case 126:
- return createToken(TILDE, beginIndex);
- case 63:
- return createToken(QUESTION, beginIndex);
- case 58:
- return createToken(COLON, beginIndex);
- case 60:
- switch (currentCharCode) {
- case 60:
- next();
- if (currentCharCode === 61) {
- next();
- return createToken(LEFT_SHIFT_EQUAL, beginIndex);
- }
- return createToken(LEFT_SHIFT, beginIndex);
- case 61:
- next();
- return createToken(LESS_EQUAL, beginIndex);
- default:
- return createToken(OPEN_ANGLE, beginIndex);
- }
- case 62:
- switch (currentCharCode) {
- case 62:
- next();
- switch (currentCharCode) {
- case 61:
- next();
- return createToken(RIGHT_SHIFT_EQUAL, beginIndex);
- case 62:
- next();
- if (currentCharCode === 61) {
- next();
- return createToken(UNSIGNED_RIGHT_SHIFT_EQUAL, beginIndex);
- }
- return createToken(UNSIGNED_RIGHT_SHIFT, beginIndex);
- default:
- return createToken(RIGHT_SHIFT, beginIndex);
- }
- case 61:
- next();
- return createToken(GREATER_EQUAL, beginIndex);
- default:
- return createToken(CLOSE_ANGLE, beginIndex);
- }
- case 61:
- if (currentCharCode === 61) {
- next();
- if (currentCharCode === 61) {
- next();
- return createToken(EQUAL_EQUAL_EQUAL, beginIndex);
- }
- return createToken(EQUAL_EQUAL, beginIndex);
- }
- if (currentCharCode === 62) {
- next();
- return createToken(ARROW, beginIndex);
- }
- return createToken(EQUAL, beginIndex);
- case 33:
- if (currentCharCode === 61) {
- next();
- if (currentCharCode === 61) {
- next();
- return createToken(NOT_EQUAL_EQUAL, beginIndex);
- }
- return createToken(NOT_EQUAL, beginIndex);
- }
- return createToken(BANG, beginIndex);
- case 42:
- if (currentCharCode === 61) {
- next();
- return createToken(STAR_EQUAL, beginIndex);
- }
- return createToken(STAR, beginIndex);
- case 37:
- if (currentCharCode === 61) {
- next();
- return createToken(PERCENT_EQUAL, beginIndex);
- }
- return createToken(PERCENT, beginIndex);
- case 94:
- if (currentCharCode === 61) {
- next();
- return createToken(CARET_EQUAL, beginIndex);
- }
- return createToken(CARET, beginIndex);
- case 47:
- if (currentCharCode === 61) {
- next();
- return createToken(SLASH_EQUAL, beginIndex);
- }
- return createToken(SLASH, beginIndex);
- case 43:
- switch (currentCharCode) {
- case 43:
- next();
- return createToken(PLUS_PLUS, beginIndex);
- case 61:
- next();
- return createToken(PLUS_EQUAL, beginIndex);
- default:
- return createToken(PLUS, beginIndex);
- }
- case 45:
- switch (currentCharCode) {
- case 45:
- next();
- return createToken(MINUS_MINUS, beginIndex);
- case 61:
- next();
- return createToken(MINUS_EQUAL, beginIndex);
- default:
- return createToken(MINUS, beginIndex);
- }
- case 38:
- switch (currentCharCode) {
- case 38:
- next();
- return createToken(AND, beginIndex);
- case 61:
- next();
- return createToken(AMPERSAND_EQUAL, beginIndex);
- default:
- return createToken(AMPERSAND, beginIndex);
- }
- case 124:
- switch (currentCharCode) {
- case 124:
- next();
- return createToken(OR, beginIndex);
- case 61:
- next();
- return createToken(BAR_EQUAL, beginIndex);
- default:
- return createToken(BAR, beginIndex);
- }
- case 96:
- return scanTemplateStart(beginIndex);
- case 64:
- return createToken(AT, beginIndex);
- case 48:
- return scanPostZero(beginIndex);
- case 49:
- case 50:
- case 51:
- case 52:
- case 53:
- case 54:
- case 55:
- case 56:
- case 57:
- return scanPostDigit(beginIndex);
- case 34:
- case 39:
- return scanStringLiteral(beginIndex, code);
- default:
- return scanIdentifierOrKeyword(beginIndex, code);
- }
- }
- function scanNumberPostPeriod(beginIndex) {
- skipDecimalDigits();
- return scanExponentOfNumericLiteral(beginIndex);
- }
- function scanPostDigit(beginIndex) {
- skipDecimalDigits();
- return scanFractionalNumericLiteral(beginIndex);
- }
- function scanPostZero(beginIndex) {
- switch (currentCharCode) {
- case 46:
- return scanFractionalNumericLiteral(beginIndex);
- case 88:
- case 120:
- next();
- if (!isHexDigit(currentCharCode)) {
- reportError('Hex Integer Literal must contain at least one digit');
- }
- skipHexDigits();
- return new LiteralToken(NUMBER, getTokenString(beginIndex), getTokenRange(beginIndex));
- case 66:
- case 98:
- if (!parseOptions.numericLiterals)
- break;
- next();
- if (!isBinaryDigit(currentCharCode)) {
- reportError('Binary Integer Literal must contain at least one digit');
- }
- skipBinaryDigits();
- return new LiteralToken(NUMBER, getTokenString(beginIndex), getTokenRange(beginIndex));
- case 79:
- case 111:
- if (!parseOptions.numericLiterals)
- break;
- next();
- if (!isOctalDigit(currentCharCode)) {
- reportError('Octal Integer Literal must contain at least one digit');
- }
- skipOctalDigits();
- return new LiteralToken(NUMBER, getTokenString(beginIndex), getTokenRange(beginIndex));
- case 48:
- case 49:
- case 50:
- case 51:
- case 52:
- case 53:
- case 54:
- case 55:
- case 56:
- case 57:
- return scanPostDigit(beginIndex);
- }
- return new LiteralToken(NUMBER, getTokenString(beginIndex), getTokenRange(beginIndex));
- }
- function createToken(type, beginIndex) {
- return new Token(type, getTokenRange(beginIndex));
- }
- function readUnicodeEscapeSequence() {
- var beginIndex = index;
- if (currentCharCode === 117) {
- next();
- if (skipHexDigit() && skipHexDigit() && skipHexDigit() && skipHexDigit()) {
- return parseInt(getTokenString(beginIndex + 1), 16);
- }
- }
- reportError('Invalid unicode escape sequence in identifier', beginIndex - 1);
- return 0;
- }
- function scanIdentifierOrKeyword(beginIndex, code) {
- var escapedCharCodes;
- if (code === 92) {
- code = readUnicodeEscapeSequence();
- escapedCharCodes = [code];
- }
- if (!isIdentifierStart(code)) {
- reportError(("Character code '" + code + "' is not a valid identifier start char"), beginIndex);
- return createToken(ERROR, beginIndex);
- }
- for (; ; ) {
- code = currentCharCode;
- if (isIdentifierPart(code)) {
- next();
- } else if (code === 92) {
- next();
- code = readUnicodeEscapeSequence();
- if (!escapedCharCodes)
- escapedCharCodes = [];
- escapedCharCodes.push(code);
- if (!isIdentifierPart(code))
- return createToken(ERROR, beginIndex);
- } else {
- break;
- }
- }
- var value = input.slice(beginIndex, index);
- var keywordType = getKeywordType(value);
- if (keywordType)
- return new KeywordToken(value, keywordType, getTokenRange(beginIndex));
- if (escapedCharCodes) {
- var i = 0;
- value = value.replace(/\\u..../g, function(s) {
- return String.fromCharCode(escapedCharCodes[i++]);
- });
- }
- return new IdentifierToken(getTokenRange(beginIndex), value);
- }
- function scanStringLiteral(beginIndex, terminator) {
- while (peekStringLiteralChar(terminator)) {
- if (!skipStringLiteralChar()) {
- return new LiteralToken(STRING, getTokenString(beginIndex), getTokenRange(beginIndex));
- }
- }
- if (currentCharCode !== terminator) {
- reportError('Unterminated String Literal', beginIndex);
- } else {
- next();
- }
- return new LiteralToken(STRING, getTokenString(beginIndex), getTokenRange(beginIndex));
- }
- function getTokenString(beginIndex) {
- return input.substring(beginIndex, index);
- }
- function peekStringLiteralChar(terminator) {
- return !isAtEnd() && currentCharCode !== terminator && !isLineTerminator(currentCharCode);
- }
- function skipStringLiteralChar() {
- if (currentCharCode === 92) {
- return skipStringLiteralEscapeSequence();
- }
- next();
- return true;
- }
- function skipStringLiteralEscapeSequence() {
- next();
- if (isAtEnd()) {
- reportError('Unterminated string literal escape sequence');
- return false;
- }
- if (isLineTerminator(currentCharCode)) {
- skipLineTerminator();
- return true;
- }
- var code = currentCharCode;
- next();
- switch (code) {
- case 39:
- case 34:
- case 92:
- case 98:
- case 102:
- case 110:
- case 114:
- case 116:
- case 118:
- case 48:
- return true;
- case 120:
- return skipHexDigit() && skipHexDigit();
- case 117:
- return skipHexDigit() && skipHexDigit() && skipHexDigit() && skipHexDigit();
- default:
- return true;
- }
- }
- function skipHexDigit() {
- if (!isHexDigit(currentCharCode)) {
- reportError('Hex digit expected');
- return false;
- }
- next();
- return true;
- }
- function skipLineTerminator() {
- var first = currentCharCode;
- next();
- if (first === 13 && currentCharCode === 10) {
- next();
- }
- }
- function scanFractionalNumericLiteral(beginIndex) {
- if (currentCharCode === 46) {
- next();
- skipDecimalDigits();
- }
- return scanExponentOfNumericLiteral(beginIndex);
- }
- function scanExponentOfNumericLiteral(beginIndex) {
- switch (currentCharCode) {
- case 101:
- case 69:
- next();
- switch (currentCharCode) {
- case 43:
- case 45:
- next();
- break;
- }
- if (!isDecimalDigit(currentCharCode)) {
- reportError('Exponent part must contain at least one digit');
- }
- skipDecimalDigits();
- break;
- default:
- break;
- }
- return new LiteralToken(NUMBER, getTokenString(beginIndex), getTokenRange(beginIndex));
- }
- function skipDecimalDigits() {
- while (isDecimalDigit(currentCharCode)) {
- next();
- }
- }
- function skipHexDigits() {
- while (isHexDigit(currentCharCode)) {
- next();
- }
- }
- function skipBinaryDigits() {
- while (isBinaryDigit(currentCharCode)) {
- next();
- }
- }
- function skipOctalDigits() {
- while (isOctalDigit(currentCharCode)) {
- next();
- }
- }
- function isAtEnd() {
- return index === length;
- }
- function next() {
- index++;
- updateCurrentCharCode();
- }
- function updateCurrentCharCode() {
- currentCharCode = input.charCodeAt(index);
- }
- function reportError(message) {
- var indexArg = arguments[1] !== (void 0) ? arguments[1] : index;
- var position = getPosition(indexArg);
- errorReporter.reportError(position, message);
- }
- return {
- get isWhitespace() {
- return isWhitespace;
- },
- get isLineTerminator() {
- return isLineTerminator;
- },
- get isIdentifierPart() {
- return isIdentifierPart;
- },
- get Scanner() {
- return Scanner;
- }
- };
-});
-System.register("traceur@0.0.32/src/outputgeneration/ParseTreeWriter", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/outputgeneration/ParseTreeWriter";
- var $__35 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- BLOCK = $__35.BLOCK,
- IF_STATEMENT = $__35.IF_STATEMENT,
- LITERAL_EXPRESSION = $__35.LITERAL_EXPRESSION,
- POSTFIX_EXPRESSION = $__35.POSTFIX_EXPRESSION,
- UNARY_EXPRESSION = $__35.UNARY_EXPRESSION;
- var ParseTreeVisitor = System.get("traceur@0.0.32/src/syntax/ParseTreeVisitor").ParseTreeVisitor;
- var $__35 = System.get("traceur@0.0.32/src/syntax/PredefinedName"),
- AS = $__35.AS,
- FROM = $__35.FROM,
- GET = $__35.GET,
- OF = $__35.OF,
- MODULE = $__35.MODULE,
- SET = $__35.SET;
- var Token = System.get("traceur@0.0.32/src/syntax/Token").Token;
- var getKeywordType = System.get("traceur@0.0.32/src/syntax/Keywords").getKeywordType;
- var $__35 = System.get("traceur@0.0.32/src/syntax/Scanner"),
- isIdentifierPart = $__35.isIdentifierPart,
- isWhitespace = $__35.isWhitespace;
- var $__35 = System.get("traceur@0.0.32/src/syntax/TokenType"),
- AMPERSAND = $__35.AMPERSAND,
- AMPERSAND_EQUAL = $__35.AMPERSAND_EQUAL,
- AND = $__35.AND,
- ARROW = $__35.ARROW,
- AT = $__35.AT,
- AWAIT = $__35.AWAIT,
- BACK_QUOTE = $__35.BACK_QUOTE,
- BANG = $__35.BANG,
- BAR = $__35.BAR,
- BAR_EQUAL = $__35.BAR_EQUAL,
- BREAK = $__35.BREAK,
- CARET = $__35.CARET,
- CARET_EQUAL = $__35.CARET_EQUAL,
- CASE = $__35.CASE,
- CATCH = $__35.CATCH,
- CLASS = $__35.CLASS,
- CLOSE_ANGLE = $__35.CLOSE_ANGLE,
- CLOSE_CURLY = $__35.CLOSE_CURLY,
- CLOSE_PAREN = $__35.CLOSE_PAREN,
- CLOSE_SQUARE = $__35.CLOSE_SQUARE,
- COLON = $__35.COLON,
- COMMA = $__35.COMMA,
- CONST = $__35.CONST,
- CONTINUE = $__35.CONTINUE,
- DEBUGGER = $__35.DEBUGGER,
- DEFAULT = $__35.DEFAULT,
- DELETE = $__35.DELETE,
- DO = $__35.DO,
- DOT_DOT_DOT = $__35.DOT_DOT_DOT,
- ELSE = $__35.ELSE,
- END_OF_FILE = $__35.END_OF_FILE,
- ENUM = $__35.ENUM,
- EQUAL = $__35.EQUAL,
- EQUAL_EQUAL = $__35.EQUAL_EQUAL,
- EQUAL_EQUAL_EQUAL = $__35.EQUAL_EQUAL_EQUAL,
- ERROR = $__35.ERROR,
- EXPORT = $__35.EXPORT,
- EXTENDS = $__35.EXTENDS,
- FALSE = $__35.FALSE,
- FINALLY = $__35.FINALLY,
- FOR = $__35.FOR,
- FUNCTION = $__35.FUNCTION,
- GREATER_EQUAL = $__35.GREATER_EQUAL,
- IDENTIFIER = $__35.IDENTIFIER,
- IF = $__35.IF,
- IMPLEMENTS = $__35.IMPLEMENTS,
- IMPORT = $__35.IMPORT,
- IN = $__35.IN,
- INSTANCEOF = $__35.INSTANCEOF,
- INTERFACE = $__35.INTERFACE,
- LEFT_SHIFT = $__35.LEFT_SHIFT,
- LEFT_SHIFT_EQUAL = $__35.LEFT_SHIFT_EQUAL,
- LESS_EQUAL = $__35.LESS_EQUAL,
- LET = $__35.LET,
- MINUS = $__35.MINUS,
- MINUS_EQUAL = $__35.MINUS_EQUAL,
- MINUS_MINUS = $__35.MINUS_MINUS,
- NEW = $__35.NEW,
- NO_SUBSTITUTION_TEMPLATE = $__35.NO_SUBSTITUTION_TEMPLATE,
- NOT_EQUAL = $__35.NOT_EQUAL,
- NOT_EQUAL_EQUAL = $__35.NOT_EQUAL_EQUAL,
- NULL = $__35.NULL,
- NUMBER = $__35.NUMBER,
- OPEN_ANGLE = $__35.OPEN_ANGLE,
- OPEN_CURLY = $__35.OPEN_CURLY,
- OPEN_PAREN = $__35.OPEN_PAREN,
- OPEN_SQUARE = $__35.OPEN_SQUARE,
- OR = $__35.OR,
- PACKAGE = $__35.PACKAGE,
- PERCENT = $__35.PERCENT,
- PERCENT_EQUAL = $__35.PERCENT_EQUAL,
- PERIOD = $__35.PERIOD,
- PLUS = $__35.PLUS,
- PLUS_EQUAL = $__35.PLUS_EQUAL,
- PLUS_PLUS = $__35.PLUS_PLUS,
- PRIVATE = $__35.PRIVATE,
- PROTECTED = $__35.PROTECTED,
- PUBLIC = $__35.PUBLIC,
- QUESTION = $__35.QUESTION,
- REGULAR_EXPRESSION = $__35.REGULAR_EXPRESSION,
- RETURN = $__35.RETURN,
- RIGHT_SHIFT = $__35.RIGHT_SHIFT,
- RIGHT_SHIFT_EQUAL = $__35.RIGHT_SHIFT_EQUAL,
- SEMI_COLON = $__35.SEMI_COLON,
- SLASH = $__35.SLASH,
- SLASH_EQUAL = $__35.SLASH_EQUAL,
- STAR = $__35.STAR,
- STAR_EQUAL = $__35.STAR_EQUAL,
- STATIC = $__35.STATIC,
- STRING = $__35.STRING,
- SUPER = $__35.SUPER,
- SWITCH = $__35.SWITCH,
- TEMPLATE_HEAD = $__35.TEMPLATE_HEAD,
- TEMPLATE_MIDDLE = $__35.TEMPLATE_MIDDLE,
- TEMPLATE_TAIL = $__35.TEMPLATE_TAIL,
- THIS = $__35.THIS,
- THROW = $__35.THROW,
- TILDE = $__35.TILDE,
- TRUE = $__35.TRUE,
- TRY = $__35.TRY,
- TYPEOF = $__35.TYPEOF,
- UNSIGNED_RIGHT_SHIFT = $__35.UNSIGNED_RIGHT_SHIFT,
- UNSIGNED_RIGHT_SHIFT_EQUAL = $__35.UNSIGNED_RIGHT_SHIFT_EQUAL,
- VAR = $__35.VAR,
- VOID = $__35.VOID,
- WHILE = $__35.WHILE,
- WITH = $__35.WITH,
- YIELD = $__35.YIELD;
- var NEW_LINE = '\n';
- var LINE_LENGTH = 80;
- var ParseTreeWriter = function ParseTreeWriter() {
- var $__35 = arguments[0] !== (void 0) ? arguments[0] : {},
- highlighted = "highlighted" in $__35 ? $__35.highlighted : false,
- showLineNumbers = "showLineNumbers" in $__35 ? $__35.showLineNumbers : false,
- prettyPrint = "prettyPrint" in $__35 ? $__35.prettyPrint : true;
- $traceurRuntime.superCall(this, $ParseTreeWriter.prototype, "constructor", []);
- this.highlighted_ = highlighted;
- this.showLineNumbers_ = showLineNumbers;
- this.prettyPrint_ = prettyPrint;
- this.result_ = '';
- this.currentLine_ = '';
- this.currentLineComment_ = null;
- this.indentDepth_ = 0;
- this.currentParameterTypeAnnotation_ = null;
- };
- var $ParseTreeWriter = ParseTreeWriter;
- ($traceurRuntime.createClass)(ParseTreeWriter, {
- toString: function() {
- if (this.currentLine_.length > 0) {
- this.result_ += this.currentLine_;
- this.currentLine_ = '';
- }
- return this.result_;
- },
- visitAny: function(tree) {
- if (!tree) {
- return;
- }
- if (tree === this.highlighted_) {
- this.write_('\x1B[41m');
- }
- if (tree.location !== null && tree.location.start !== null && this.showLineNumbers_) {
- var line = tree.location.start.line + 1;
- var column = tree.location.start.column;
- this.currentLineComment_ = ("Line: " + line + "." + column);
- }
- $traceurRuntime.superCall(this, $ParseTreeWriter.prototype, "visitAny", [tree]);
- if (tree === this.highlighted_) {
- this.write_('\x1B[0m');
- }
- },
- visitAnnotation: function(tree) {
- this.write_(AT);
- this.visitAny(tree.name);
- if (tree.args !== null) {
- this.write_(OPEN_PAREN);
- this.writeList_(tree.args, COMMA, false);
- this.write_(CLOSE_PAREN);
- }
- },
- visitArgumentList: function(tree) {
- this.write_(OPEN_PAREN);
- this.writeList_(tree.args, COMMA, false);
- this.write_(CLOSE_PAREN);
- },
- visitArrayComprehension: function(tree) {
- this.write_(OPEN_SQUARE);
- this.visitList(tree.comprehensionList);
- this.visitAny(tree.expression);
- this.write_(CLOSE_SQUARE);
- },
- visitArrayLiteralExpression: function(tree) {
- this.write_(OPEN_SQUARE);
- this.writeList_(tree.elements, COMMA, false);
- this.write_(CLOSE_SQUARE);
- },
- visitArrayPattern: function(tree) {
- this.write_(OPEN_SQUARE);
- this.writeList_(tree.elements, COMMA, false);
- this.write_(CLOSE_SQUARE);
- },
- visitArrowFunctionExpression: function(tree) {
- this.write_(OPEN_PAREN);
- this.visitAny(tree.formalParameters);
- this.write_(CLOSE_PAREN);
- this.writeSpace_();
- this.write_(ARROW);
- this.writeSpace_();
- this.visitAny(tree.functionBody);
- },
- visitAwaitStatement: function(tree) {
- this.write_(AWAIT);
- if (tree.identifier !== null) {
- this.writeSpace_();
- this.write_(tree.identifier);
- this.writeSpace_();
- this.write_(EQUAL);
- }
- this.writeSpace_();
- this.visitAny(tree.expression);
- this.write_(SEMI_COLON);
- },
- visitBinaryOperator: function(tree) {
- var left = tree.left;
- this.visitAny(left);
- var operator = tree.operator;
- if (left.type === POSTFIX_EXPRESSION && requiresSpaceBetween(left.operator.type, operator.type)) {
- this.writeRequiredSpace_();
- } else {
- this.writeSpace_();
- }
- this.write_(operator);
- var right = tree.right;
- if (right.type === UNARY_EXPRESSION && requiresSpaceBetween(operator.type, right.operator.type)) {
- this.writeRequiredSpace_();
- } else {
- this.writeSpace_();
- }
- this.visitAny(right);
- },
- visitBindingElement: function(tree) {
- var typeAnnotation = this.currentParameterTypeAnnotation_;
- this.currentParameterTypeAnnotation_ = null;
- this.visitAny(tree.binding);
- this.writeTypeAnnotation_(typeAnnotation);
- if (tree.initialiser) {
- this.writeSpace_();
- this.write_(EQUAL);
- this.writeSpace_();
- this.visitAny(tree.initialiser);
- }
- },
- visitBindingIdentifier: function(tree) {
- this.write_(tree.identifierToken);
- },
- visitBlock: function(tree) {
- this.write_(OPEN_CURLY);
- this.writelnList_(tree.statements);
- this.write_(CLOSE_CURLY);
- },
- visitBreakStatement: function(tree) {
- this.write_(BREAK);
- if (tree.name !== null) {
- this.writeSpace_();
- this.write_(tree.name);
- }
- this.write_(SEMI_COLON);
- },
- visitCallExpression: function(tree) {
- this.visitAny(tree.operand);
- this.visitAny(tree.args);
- },
- visitCaseClause: function(tree) {
- this.write_(CASE);
- this.writeSpace_();
- this.visitAny(tree.expression);
- this.write_(COLON);
- this.indentDepth_++;
- this.writelnList_(tree.statements);
- this.indentDepth_--;
- },
- visitCatch: function(tree) {
- this.write_(CATCH);
- this.writeSpace_();
- this.write_(OPEN_PAREN);
- this.visitAny(tree.binding);
- this.write_(CLOSE_PAREN);
- this.writeSpace_();
- this.visitAny(tree.catchBody);
- },
- visitClassShared_: function(tree) {
- this.writeAnnotations_(tree.annotations);
- this.write_(CLASS);
- this.writeSpace_();
- this.visitAny(tree.name);
- if (tree.superClass !== null) {
- this.writeSpace_();
- this.write_(EXTENDS);
- this.writeSpace_();
- this.visitAny(tree.superClass);
- }
- this.writeSpace_();
- this.write_(OPEN_CURLY);
- this.writelnList_(tree.elements);
- this.write_(CLOSE_CURLY);
- },
- visitClassDeclaration: function(tree) {
- this.visitClassShared_(tree);
- },
- visitClassExpression: function(tree) {
- this.visitClassShared_(tree);
- },
- visitCommaExpression: function(tree) {
- this.writeList_(tree.expressions, COMMA, false);
- },
- visitComprehensionFor: function(tree) {
- this.write_(FOR);
- this.writeSpace_();
- this.write_(OPEN_PAREN);
- this.visitAny(tree.left);
- this.writeSpace_();
- this.write_(OF);
- this.writeSpace_();
- this.visitAny(tree.iterator);
- this.write_(CLOSE_PAREN);
- this.writeSpace_();
- },
- visitComprehensionIf: function(tree) {
- this.write_(IF);
- this.writeSpace_();
- this.write_(OPEN_PAREN);
- this.visitAny(tree.expression);
- this.write_(CLOSE_PAREN);
- this.writeSpace_();
- },
- visitComputedPropertyName: function(tree) {
- this.write_(OPEN_SQUARE);
- this.visitAny(tree.expression);
- this.write_(CLOSE_SQUARE);
- },
- visitConditionalExpression: function(tree) {
- this.visitAny(tree.condition);
- this.writeSpace_();
- this.write_(QUESTION);
- this.writeSpace_();
- this.visitAny(tree.left);
- this.writeSpace_();
- this.write_(COLON);
- this.writeSpace_();
- this.visitAny(tree.right);
- },
- visitContinueStatement: function(tree) {
- this.write_(CONTINUE);
- if (tree.name !== null) {
- this.writeSpace_();
- this.write_(tree.name);
- }
- this.write_(SEMI_COLON);
- },
- visitDebuggerStatement: function(tree) {
- this.write_(DEBUGGER);
- this.write_(SEMI_COLON);
- },
- visitDefaultClause: function(tree) {
- this.write_(DEFAULT);
- this.write_(COLON);
- this.indentDepth_++;
- this.writelnList_(tree.statements);
- this.indentDepth_--;
- },
- visitDoWhileStatement: function(tree) {
- this.write_(DO);
- this.visitAnyBlockOrIndent_(tree.body);
- this.writeSpace_();
- this.write_(WHILE);
- this.writeSpace_();
- this.write_(OPEN_PAREN);
- this.visitAny(tree.condition);
- this.write_(CLOSE_PAREN);
- this.write_(SEMI_COLON);
- },
- visitEmptyStatement: function(tree) {
- this.write_(SEMI_COLON);
- },
- visitExportDeclaration: function(tree) {
- this.writeAnnotations_(tree.annotations);
- this.write_(EXPORT);
- this.writeSpace_();
- this.visitAny(tree.declaration);
- },
- visitExportDefault: function(tree) {
- this.write_(DEFAULT);
- this.writeSpace_();
- this.visitAny(tree.expression);
- this.write_(SEMI_COLON);
- },
- visitNamedExport: function(tree) {
- this.visitAny(tree.specifierSet);
- if (tree.moduleSpecifier) {
- this.writeSpace_();
- this.write_(FROM);
- this.writeSpace_();
- this.visitAny(tree.moduleSpecifier);
- }
- this.write_(SEMI_COLON);
- },
- visitExportSpecifier: function(tree) {
- this.write_(tree.lhs);
- if (tree.rhs) {
- this.writeSpace_();
- this.write_(AS);
- this.writeSpace_();
- this.write_(tree.rhs);
- }
- },
- visitExportSpecifierSet: function(tree) {
- this.write_(OPEN_CURLY);
- this.writeList_(tree.specifiers, COMMA, false);
- this.write_(CLOSE_CURLY);
- },
- visitExportStar: function(tree) {
- this.write_(STAR);
- },
- visitExpressionStatement: function(tree) {
- this.visitAny(tree.expression);
- this.write_(SEMI_COLON);
- },
- visitFinally: function(tree) {
- this.write_(FINALLY);
- this.writeSpace_();
- this.visitAny(tree.block);
- },
- visitForOfStatement: function(tree) {
- this.write_(FOR);
- this.writeSpace_();
- this.write_(OPEN_PAREN);
- this.visitAny(tree.initialiser);
- this.writeSpace_();
- this.write_(OF);
- this.writeSpace_();
- this.visitAny(tree.collection);
- this.write_(CLOSE_PAREN);
- this.visitAnyBlockOrIndent_(tree.body);
- },
- visitForInStatement: function(tree) {
- this.write_(FOR);
- this.writeSpace_();
- this.write_(OPEN_PAREN);
- this.visitAny(tree.initialiser);
- this.writeSpace_();
- this.write_(IN);
- this.writeSpace_();
- this.visitAny(tree.collection);
- this.write_(CLOSE_PAREN);
- this.visitAnyBlockOrIndent_(tree.body);
- },
- visitForStatement: function(tree) {
- this.write_(FOR);
- this.writeSpace_();
- this.write_(OPEN_PAREN);
- this.visitAny(tree.initialiser);
- this.write_(SEMI_COLON);
- this.writeSpace_();
- this.visitAny(tree.condition);
- this.write_(SEMI_COLON);
- this.writeSpace_();
- this.visitAny(tree.increment);
- this.write_(CLOSE_PAREN);
- this.visitAnyBlockOrIndent_(tree.body);
- },
- visitFormalParameterList: function(tree) {
- var first = true;
- for (var i = 0; i < tree.parameters.length; i++) {
- var parameter = tree.parameters[i];
- if (first) {
- first = false;
- } else {
- this.write_(COMMA);
- this.writeSpace_();
- }
- this.visitAny(parameter);
- }
- },
- visitFormalParameter: function(tree) {
- this.writeAnnotations_(tree.annotations, false);
- this.currentParameterTypeAnnotation_ = tree.typeAnnotation;
- this.visitAny(tree.parameter);
- this.currentParameterTypeAnnotation_ = null;
- },
- visitFunctionBody: function(tree) {
- this.write_(OPEN_CURLY);
- this.writelnList_(tree.statements);
- this.write_(CLOSE_CURLY);
- },
- visitFunctionDeclaration: function(tree) {
- this.visitFunction_(tree);
- },
- visitFunctionExpression: function(tree) {
- this.visitFunction_(tree);
- },
- visitFunction_: function(tree) {
- this.writeAnnotations_(tree.annotations);
- this.write_(FUNCTION);
- if (tree.isGenerator)
- this.write_(STAR);
- if (tree.name) {
- this.writeSpace_();
- this.visitAny(tree.name);
- }
- this.write_(OPEN_PAREN);
- this.visitAny(tree.formalParameterList);
- this.write_(CLOSE_PAREN);
- this.writeTypeAnnotation_(tree.typeAnnotation);
- this.writeSpace_();
- this.visitAny(tree.functionBody);
- },
- visitGeneratorComprehension: function(tree) {
- this.write_(OPEN_PAREN);
- this.visitList(tree.comprehensionList);
- this.visitAny(tree.expression);
- this.write_(CLOSE_PAREN);
- },
- visitGetAccessor: function(tree) {
- this.writeAnnotations_(tree.annotations);
- if (tree.isStatic) {
- this.write_(STATIC);
- this.writeSpace_();
- }
- this.write_(GET);
- this.writeSpace_();
- this.visitAny(tree.name);
- this.write_(OPEN_PAREN);
- this.write_(CLOSE_PAREN);
- this.writeSpace_();
- this.writeTypeAnnotation_(tree.typeAnnotation);
- this.visitAny(tree.body);
- },
- visitIdentifierExpression: function(tree) {
- this.write_(tree.identifierToken);
- },
- visitIfStatement: function(tree) {
- this.write_(IF);
- this.writeSpace_();
- this.write_(OPEN_PAREN);
- this.visitAny(tree.condition);
- this.write_(CLOSE_PAREN);
- this.visitAnyBlockOrIndent_(tree.ifClause);
- if (tree.elseClause) {
- if (tree.ifClause.type === BLOCK)
- this.writeSpace_();
- this.write_(ELSE);
- if (tree.elseClause.type === IF_STATEMENT) {
- this.writeSpace_();
- this.visitAny(tree.elseClause);
- } else {
- this.visitAnyBlockOrIndent_(tree.elseClause);
- }
- }
- },
- visitAnyBlockOrIndent_: function(tree) {
- if (tree.type === BLOCK) {
- this.writeSpace_();
- this.visitAny(tree);
- } else {
- this.visitAnyIndented_(tree);
- }
- },
- visitAnyIndented_: function(tree) {
- var indent = arguments[1] !== (void 0) ? arguments[1] : 1;
- if (this.prettyPrint_) {
- this.indentDepth_ += indent;
- this.writeln_();
- }
- this.visitAny(tree);
- if (this.prettyPrint_) {
- this.indentDepth_ -= indent;
- this.writeln_();
- }
- },
- visitImportDeclaration: function(tree) {
- this.write_(IMPORT);
- this.writeSpace_();
- if (this.importClause) {
- this.visitAny(tree.importClause);
- this.writeSpace_();
- this.write_(FROM);
- this.writeSpace_();
- }
- this.visitAny(tree.moduleSpecifier);
- this.write_(SEMI_COLON);
- },
- visitImportSpecifier: function(tree) {
- this.write_(tree.lhs);
- if (tree.rhs !== null) {
- this.writeSpace_();
- this.write_(AS);
- this.writeSpace_();
- this.write_(tree.rhs);
- }
- },
- visitImportSpecifierSet: function(tree) {
- if (tree.specifiers.type == STAR) {
- this.write_(STAR);
- } else {
- this.write_(OPEN_CURLY);
- this.writelnList_(tree.specifiers, COMMA);
- this.write_(CLOSE_CURLY);
- }
- },
- visitLabelledStatement: function(tree) {
- this.write_(tree.name);
- this.write_(COLON);
- this.writeSpace_();
- this.visitAny(tree.statement);
- },
- visitLiteralExpression: function(tree) {
- this.write_(tree.literalToken);
- },
- visitLiteralPropertyName: function(tree) {
- this.write_(tree.literalToken);
- },
- visitMemberExpression: function(tree) {
- this.visitAny(tree.operand);
- if (tree.operand.type === LITERAL_EXPRESSION && tree.operand.literalToken.type === NUMBER) {
- if (!/\.|e|E/.test(tree.operand.literalToken.value))
- this.writeRequiredSpace_();
- }
- this.write_(PERIOD);
- this.write_(tree.memberName);
- },
- visitMemberLookupExpression: function(tree) {
- this.visitAny(tree.operand);
- this.write_(OPEN_SQUARE);
- this.visitAny(tree.memberExpression);
- this.write_(CLOSE_SQUARE);
- },
- visitSyntaxErrorTree: function(tree) {
- this.write_('(function() {' + ("throw SyntaxError(" + JSON.stringify(tree.message) + ");") + '})()');
- },
- visitModule: function(tree) {
- this.writelnList_(tree.scriptItemList, null);
- },
- visitModuleSpecifier: function(tree) {
- this.write_(tree.token);
- },
- visitModuleDeclaration: function(tree) {
- this.write_(MODULE);
- this.writeSpace_();
- this.write_(tree.identifier);
- this.writeSpace_();
- this.write_(FROM);
- this.writeSpace_();
- this.visitAny(tree.expression);
- this.write_(SEMI_COLON);
- },
- visitNewExpression: function(tree) {
- this.write_(NEW);
- this.writeSpace_();
- this.visitAny(tree.operand);
- this.visitAny(tree.args);
- },
- visitObjectLiteralExpression: function(tree) {
- this.write_(OPEN_CURLY);
- if (tree.propertyNameAndValues.length > 1)
- this.writeln_();
- this.writelnList_(tree.propertyNameAndValues, COMMA);
- if (tree.propertyNameAndValues.length > 1)
- this.writeln_();
- this.write_(CLOSE_CURLY);
- },
- visitObjectPattern: function(tree) {
- this.write_(OPEN_CURLY);
- this.writelnList_(tree.fields, COMMA);
- this.write_(CLOSE_CURLY);
- },
- visitObjectPatternField: function(tree) {
- this.visitAny(tree.name);
- if (tree.element !== null) {
- this.write_(COLON);
- this.writeSpace_();
- this.visitAny(tree.element);
- }
- },
- visitParenExpression: function(tree) {
- this.write_(OPEN_PAREN);
- $traceurRuntime.superCall(this, $ParseTreeWriter.prototype, "visitParenExpression", [tree]);
- this.write_(CLOSE_PAREN);
- },
- visitPostfixExpression: function(tree) {
- this.visitAny(tree.operand);
- if (tree.operand.type === POSTFIX_EXPRESSION && tree.operand.operator.type === tree.operator.type) {
- this.writeRequiredSpace_();
- }
- this.write_(tree.operator);
- },
- visitPredefinedType: function(tree) {
- this.write_(tree.typeToken);
- },
- visitScript: function(tree) {
- this.writelnList_(tree.scriptItemList, null);
- },
- visitPropertyMethodAssignment: function(tree) {
- this.writeAnnotations_(tree.annotations);
- if (tree.isStatic) {
- this.write_(STATIC);
- this.writeSpace_();
- }
- if (tree.isGenerator)
- this.write_(STAR);
- this.visitAny(tree.name);
- this.write_(OPEN_PAREN);
- this.visitAny(tree.formalParameterList);
- this.write_(CLOSE_PAREN);
- this.writeSpace_();
- this.writeTypeAnnotation_(tree.typeAnnotation);
- this.visitAny(tree.functionBody);
- },
- visitPropertyNameAssignment: function(tree) {
- this.visitAny(tree.name);
- this.write_(COLON);
- this.writeSpace_();
- this.visitAny(tree.value);
- },
- visitPropertyNameShorthand: function(tree) {
- this.write_(tree.name);
- },
- visitTemplateLiteralExpression: function(tree) {
- if (tree.operand) {
- this.visitAny(tree.operand);
- this.writeSpace_();
- }
- this.writeRaw_(BACK_QUOTE);
- this.visitList(tree.elements);
- this.writeRaw_(BACK_QUOTE);
- },
- visitTemplateLiteralPortion: function(tree) {
- this.writeRaw_(tree.value);
- },
- visitTemplateSubstitution: function(tree) {
- this.writeRaw_('$');
- this.writeRaw_(OPEN_CURLY);
- this.visitAny(tree.expression);
- this.writeRaw_(CLOSE_CURLY);
- },
- visitReturnStatement: function(tree) {
- this.write_(RETURN);
- this.writeSpace_(tree.expression);
- this.visitAny(tree.expression);
- this.write_(SEMI_COLON);
- },
- visitRestParameter: function(tree) {
- this.write_(DOT_DOT_DOT);
- this.write_(tree.identifier.identifierToken);
- this.writeTypeAnnotation_(this.currentParameterTypeAnnotation_);
- },
- visitSetAccessor: function(tree) {
- this.writeAnnotations_(tree.annotations);
- if (tree.isStatic) {
- this.write_(STATIC);
- this.writeSpace_();
- }
- this.write_(SET);
- this.writeSpace_();
- this.visitAny(tree.name);
- this.write_(OPEN_PAREN);
- this.visitAny(tree.parameter);
- this.write_(CLOSE_PAREN);
- this.writeSpace_();
- this.visitAny(tree.body);
- },
- visitSpreadExpression: function(tree) {
- this.write_(DOT_DOT_DOT);
- this.visitAny(tree.expression);
- },
- visitSpreadPatternElement: function(tree) {
- this.write_(DOT_DOT_DOT);
- this.visitAny(tree.lvalue);
- },
- visitStateMachine: function(tree) {
- throw new Error('State machines cannot be converted to source');
- },
- visitSuperExpression: function(tree) {
- this.write_(SUPER);
- },
- visitSwitchStatement: function(tree) {
- this.write_(SWITCH);
- this.writeSpace_();
- this.write_(OPEN_PAREN);
- this.visitAny(tree.expression);
- this.write_(CLOSE_PAREN);
- this.writeSpace_();
- this.write_(OPEN_CURLY);
- this.writelnList_(tree.caseClauses);
- this.write_(CLOSE_CURLY);
- },
- visitThisExpression: function(tree) {
- this.write_(THIS);
- },
- visitThrowStatement: function(tree) {
- this.write_(THROW);
- this.writeSpace_();
- this.visitAny(tree.value);
- this.write_(SEMI_COLON);
- },
- visitTryStatement: function(tree) {
- this.write_(TRY);
- this.writeSpace_();
- this.visitAny(tree.body);
- if (tree.catchBlock) {
- this.writeSpace_();
- this.visitAny(tree.catchBlock);
- }
- if (tree.finallyBlock) {
- this.writeSpace_();
- this.visitAny(tree.finallyBlock);
- }
- },
- visitTypeName: function(tree) {
- if (tree.moduleName) {
- this.visitAny(tree.moduleName);
- this.write_(PERIOD);
- }
- this.write_(tree.name);
- },
- visitUnaryExpression: function(tree) {
- var op = tree.operator;
- this.write_(op);
- var operand = tree.operand;
- if (operand.type === UNARY_EXPRESSION && requiresSpaceBetween(op.type, operand.operator.type)) {
- this.writeRequiredSpace_();
- }
- this.visitAny(operand);
- },
- visitVariableDeclarationList: function(tree) {
- this.write_(tree.declarationType);
- this.writeSpace_();
- this.writeList_(tree.declarations, COMMA, true, 2);
- },
- visitVariableDeclaration: function(tree) {
- this.visitAny(tree.lvalue);
- this.writeTypeAnnotation_(tree.typeAnnotation);
- if (tree.initialiser !== null) {
- this.writeSpace_();
- this.write_(EQUAL);
- this.writeSpace_();
- this.visitAny(tree.initialiser);
- }
- },
- visitVariableStatement: function(tree) {
- $traceurRuntime.superCall(this, $ParseTreeWriter.prototype, "visitVariableStatement", [tree]);
- this.write_(SEMI_COLON);
- },
- visitWhileStatement: function(tree) {
- this.write_(WHILE);
- this.writeSpace_();
- this.write_(OPEN_PAREN);
- this.visitAny(tree.condition);
- this.write_(CLOSE_PAREN);
- this.visitAnyBlockOrIndent_(tree.body);
- },
- visitWithStatement: function(tree) {
- this.write_(WITH);
- this.writeSpace_();
- this.write_(OPEN_PAREN);
- this.visitAny(tree.expression);
- this.write_(CLOSE_PAREN);
- this.writeSpace_();
- this.visitAny(tree.body);
- },
- visitYieldExpression: function(tree) {
- this.write_(YIELD);
- if (tree.isYieldFor)
- this.write_(STAR);
- if (tree.expression) {
- this.writeSpace_();
- this.visitAny(tree.expression);
- }
- },
- writeCurrentln_: function() {
- this.result_ += this.currentLine_ + NEW_LINE;
- },
- writeln_: function() {
- if (this.currentLineComment_) {
- while (this.currentLine_.length < LINE_LENGTH) {
- this.currentLine_ += ' ';
- }
- this.currentLine_ += ' // ' + this.currentLineComment_;
- this.currentLineComment_ = null;
- }
- if (this.currentLine_)
- this.writeCurrentln_();
- this.currentLine_ = '';
- },
- writelnList_: function(list, delimiter) {
- if (delimiter) {
- this.writeList_(list, delimiter, true);
- } else {
- if (list.length > 0)
- this.writeln_();
- this.writeList_(list, null, true);
- if (list.length > 0)
- this.writeln_();
- }
- },
- writeList_: function(list, delimiter, writeNewLine) {
- var indent = arguments[3] !== (void 0) ? arguments[3] : 0;
- var first = true;
- for (var i = 0; i < list.length; i++) {
- var element = list[i];
- if (first) {
- first = false;
- } else {
- if (delimiter !== null) {
- this.write_(delimiter);
- if (!writeNewLine)
- this.writeSpace_();
- }
- if (writeNewLine) {
- if (i === 1)
- this.indentDepth_ += indent;
- this.writeln_();
- }
- }
- this.visitAny(element);
- }
- if (writeNewLine && list.length > 1)
- this.indentDepth_ -= indent;
- },
- writeRaw_: function(value) {
- this.currentLine_ += value;
- },
- write_: function(value) {
- if (value === CLOSE_CURLY)
- this.indentDepth_--;
- if (value !== null) {
- if (this.prettyPrint_) {
- if (!this.currentLine_) {
- for (var i = 0,
- indent = this.indentDepth_; i < indent; i++) {
- this.currentLine_ += ' ';
- }
- }
- }
- if (this.needsSpace_(value))
- this.currentLine_ += ' ';
- this.currentLine_ += value;
- }
- if (value === OPEN_CURLY)
- this.indentDepth_++;
- },
- writeSpace_: function() {
- var useSpace = arguments[0] !== (void 0) ? arguments[0] : this.prettyPrint_;
- if (useSpace && !endsWithSpace(this.currentLine_))
- this.currentLine_ += ' ';
- },
- writeRequiredSpace_: function() {
- this.writeSpace_(true);
- },
- writeTypeAnnotation_: function(typeAnnotation) {
- if (typeAnnotation !== null) {
- this.write_(COLON);
- this.writeSpace_();
- this.visitAny(typeAnnotation);
- }
- },
- writeAnnotations_: function(annotations) {
- var writeNewLine = arguments[1] !== (void 0) ? arguments[1] : this.prettyPrint_;
- if (annotations.length > 0) {
- this.writeList_(annotations, null, writeNewLine);
- if (writeNewLine)
- this.writeln_();
- }
- },
- needsSpace_: function(token) {
- var line = this.currentLine_;
- if (!line)
- return false;
- var lastCode = line.charCodeAt(line.length - 1);
- if (isWhitespace(lastCode))
- return false;
- var firstCode = token.toString().charCodeAt(0);
- return isIdentifierPart(firstCode) && (isIdentifierPart(lastCode) || lastCode === 47);
- }
- }, {}, ParseTreeVisitor);
- function requiresSpaceBetween(first, second) {
- return (first === MINUS || first === MINUS_MINUS) && (second === MINUS || second === MINUS_MINUS) || (first === PLUS || first === PLUS_PLUS) && (second === PLUS || second === PLUS_PLUS);
- }
- function endsWithSpace(s) {
- return isWhitespace(s.charCodeAt(s.length - 1));
- }
- return {get ParseTreeWriter() {
- return ParseTreeWriter;
- }};
-});
-System.register("traceur@0.0.32/src/outputgeneration/ParseTreeMapWriter", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/outputgeneration/ParseTreeMapWriter";
- var ParseTreeWriter = System.get("traceur@0.0.32/src/outputgeneration/ParseTreeWriter").ParseTreeWriter;
- var ParseTreeMapWriter = function ParseTreeMapWriter(sourceMapGenerator) {
- var options = arguments[1];
- $traceurRuntime.superCall(this, $ParseTreeMapWriter.prototype, "constructor", [options]);
- this.sourceMapGenerator_ = sourceMapGenerator;
- this.outputLineCount_ = 1;
- this.isFirstMapping_ = true;
- };
- var $ParseTreeMapWriter = ParseTreeMapWriter;
- ($traceurRuntime.createClass)(ParseTreeMapWriter, {
- visitAny: function(tree) {
- if (!tree) {
- return;
- }
- if (tree.location)
- this.enterBranch(tree.location);
- $traceurRuntime.superCall(this, $ParseTreeMapWriter.prototype, "visitAny", [tree]);
- if (tree.location)
- this.exitBranch(tree.location);
- },
- writeCurrentln_: function() {
- $traceurRuntime.superCall(this, $ParseTreeMapWriter.prototype, "writeCurrentln_", []);
- this.flushMappings();
- this.outputLineCount_++;
- this.generated_ = {
- line: this.outputLineCount_,
- column: 1
- };
- this.flushMappings();
- },
- write_: function(value) {
- if (this.entered_) {
- this.generate();
- $traceurRuntime.superCall(this, $ParseTreeMapWriter.prototype, "write_", [value]);
- this.generate();
- } else {
- this.generate();
- $traceurRuntime.superCall(this, $ParseTreeMapWriter.prototype, "write_", [value]);
- this.generate();
- }
- },
- generate: function() {
- this.generated_ = {
- line: this.outputLineCount_,
- column: this.currentLine_.length
- };
- this.flushMappings();
- },
- enterBranch: function(location) {
- this.originate(location.start);
- this.entered_ = true;
- },
- exitBranch: function(location) {
- this.originate(location.end);
- this.entered_ = false;
- },
- originate: function(position) {
- var line = position.line + 1;
- if (this.original_ && this.original_.line !== line)
- this.flushMappings();
- this.original_ = {
- line: line,
- column: position.column || 0
- };
- if (position.source.name !== this.sourceName_) {
- this.sourceName_ = position.source.name;
- this.sourceMapGenerator_.setSourceContent(position.source.name, position.source.contents);
- }
- this.flushMappings();
- },
- flushMappings: function() {
- if (this.original_ && this.generated_) {
- this.addMapping();
- this.original_ = null;
- this.generated_ = null;
- }
- },
- isSame: function(lhs, rhs) {
- return lhs.line === rhs.line && lhs.column === rhs.column;
- },
- isSameMapping: function() {
- if (!this.previousMapping_)
- return false;
- if (this.isSame(this.previousMapping_.generated, this.generated_) && this.isSame(this.previousMapping_.original, this.original_))
- return true;
- ;
- },
- addMapping: function() {
- if (this.isSameMapping())
- return;
- var mapping = {
- generated: this.generated_,
- original: this.original_,
- source: this.sourceName_
- };
- this.sourceMapGenerator_.addMapping(mapping);
- this.previousMapping_ = mapping;
- }
- }, {}, ParseTreeWriter);
- return {get ParseTreeMapWriter() {
- return ParseTreeMapWriter;
- }};
-});
-System.register("traceur@0.0.32/src/outputgeneration/SourceMapIntegration", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/outputgeneration/SourceMapIntegration";
- function makeDefine(mapping, id) {
- var require = function(id) {
- return mapping[id];
- };
- var exports = mapping[id] = {};
- var module = null;
- return function(factory) {
- factory(require, exports, module);
- };
- }
- var define,
- m = {};
- define = makeDefine(m, './util');
- if (typeof define !== 'function') {
- var define = require('amdefine')(module, require);
- }
- define(function(require, exports, module) {
- function getArg(aArgs, aName, aDefaultValue) {
- if (aName in aArgs) {
- return aArgs[aName];
- } else if (arguments.length === 3) {
- return aDefaultValue;
- } else {
- throw new Error('"' + aName + '" is a required argument.');
- }
- }
- exports.getArg = getArg;
- var urlRegexp = /([\w+\-.]+):\/\/((\w+:\w+)@)?([\w.]+)?(:(\d+))?(\S+)?/;
- var dataUrlRegexp = /^data:.+\,.+/;
- function urlParse(aUrl) {
- var match = aUrl.match(urlRegexp);
- if (!match) {
- return null;
- }
- return {
- scheme: match[1],
- auth: match[3],
- host: match[4],
- port: match[6],
- path: match[7]
- };
- }
- exports.urlParse = urlParse;
- function urlGenerate(aParsedUrl) {
- var url = aParsedUrl.scheme + "://";
- if (aParsedUrl.auth) {
- url += aParsedUrl.auth + "@";
- }
- if (aParsedUrl.host) {
- url += aParsedUrl.host;
- }
- if (aParsedUrl.port) {
- url += ":" + aParsedUrl.port;
- }
- if (aParsedUrl.path) {
- url += aParsedUrl.path;
- }
- return url;
- }
- exports.urlGenerate = urlGenerate;
- function join(aRoot, aPath) {
- var url;
- if (aPath.match(urlRegexp) || aPath.match(dataUrlRegexp)) {
- return aPath;
- }
- if (aPath.charAt(0) === '/' && (url = urlParse(aRoot))) {
- url.path = aPath;
- return urlGenerate(url);
- }
- return aRoot.replace(/\/$/, '') + '/' + aPath;
- }
- exports.join = join;
- function toSetString(aStr) {
- return '$' + aStr;
- }
- exports.toSetString = toSetString;
- function fromSetString(aStr) {
- return aStr.substr(1);
- }
- exports.fromSetString = fromSetString;
- function relative(aRoot, aPath) {
- aRoot = aRoot.replace(/\/$/, '');
- var url = urlParse(aRoot);
- if (aPath.charAt(0) == "/" && url && url.path == "/") {
- return aPath.slice(1);
- }
- return aPath.indexOf(aRoot + '/') === 0 ? aPath.substr(aRoot.length + 1) : aPath;
- }
- exports.relative = relative;
- function strcmp(aStr1, aStr2) {
- var s1 = aStr1 || "";
- var s2 = aStr2 || "";
- return (s1 > s2) - (s1 < s2);
- }
- function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
- var cmp;
- cmp = strcmp(mappingA.source, mappingB.source);
- if (cmp) {
- return cmp;
- }
- cmp = mappingA.originalLine - mappingB.originalLine;
- if (cmp) {
- return cmp;
- }
- cmp = mappingA.originalColumn - mappingB.originalColumn;
- if (cmp || onlyCompareOriginal) {
- return cmp;
- }
- cmp = strcmp(mappingA.name, mappingB.name);
- if (cmp) {
- return cmp;
- }
- cmp = mappingA.generatedLine - mappingB.generatedLine;
- if (cmp) {
- return cmp;
- }
- return mappingA.generatedColumn - mappingB.generatedColumn;
- }
- ;
- exports.compareByOriginalPositions = compareByOriginalPositions;
- function compareByGeneratedPositions(mappingA, mappingB, onlyCompareGenerated) {
- var cmp;
- cmp = mappingA.generatedLine - mappingB.generatedLine;
- if (cmp) {
- return cmp;
- }
- cmp = mappingA.generatedColumn - mappingB.generatedColumn;
- if (cmp || onlyCompareGenerated) {
- return cmp;
- }
- cmp = strcmp(mappingA.source, mappingB.source);
- if (cmp) {
- return cmp;
- }
- cmp = mappingA.originalLine - mappingB.originalLine;
- if (cmp) {
- return cmp;
- }
- cmp = mappingA.originalColumn - mappingB.originalColumn;
- if (cmp) {
- return cmp;
- }
- return strcmp(mappingA.name, mappingB.name);
- }
- ;
- exports.compareByGeneratedPositions = compareByGeneratedPositions;
- });
- define = makeDefine(m, './array-set');
- if (typeof define !== 'function') {
- var define = require('amdefine')(module, require);
- }
- define(function(require, exports, module) {
- var util = require('./util');
- function ArraySet() {
- this._array = [];
- this._set = {};
- }
- ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
- var set = new ArraySet();
- for (var i = 0,
- len = aArray.length; i < len; i++) {
- set.add(aArray[i], aAllowDuplicates);
- }
- return set;
- };
- ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
- var isDuplicate = this.has(aStr);
- var idx = this._array.length;
- if (!isDuplicate || aAllowDuplicates) {
- this._array.push(aStr);
- }
- if (!isDuplicate) {
- this._set[util.toSetString(aStr)] = idx;
- }
- };
- ArraySet.prototype.has = function ArraySet_has(aStr) {
- return Object.prototype.hasOwnProperty.call(this._set, util.toSetString(aStr));
- };
- ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
- if (this.has(aStr)) {
- return this._set[util.toSetString(aStr)];
- }
- throw new Error('"' + aStr + '" is not in the set.');
- };
- ArraySet.prototype.at = function ArraySet_at(aIdx) {
- if (aIdx >= 0 && aIdx < this._array.length) {
- return this._array[aIdx];
- }
- throw new Error('No element indexed by ' + aIdx);
- };
- ArraySet.prototype.toArray = function ArraySet_toArray() {
- return this._array.slice();
- };
- exports.ArraySet = ArraySet;
- });
- define = makeDefine(m, './base64');
- if (typeof define !== 'function') {
- var define = require('amdefine')(module, require);
- }
- define(function(require, exports, module) {
- var charToIntMap = {};
- var intToCharMap = {};
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('').forEach(function(ch, index) {
- charToIntMap[ch] = index;
- intToCharMap[index] = ch;
- });
- exports.encode = function base64_encode(aNumber) {
- if (aNumber in intToCharMap) {
- return intToCharMap[aNumber];
- }
- throw new TypeError("Must be between 0 and 63: " + aNumber);
- };
- exports.decode = function base64_decode(aChar) {
- if (aChar in charToIntMap) {
- return charToIntMap[aChar];
- }
- throw new TypeError("Not a valid base 64 digit: " + aChar);
- };
- });
- define = makeDefine(m, './base64-vlq');
- if (typeof define !== 'function') {
- var define = require('amdefine')(module, require);
- }
- define(function(require, exports, module) {
- var base64 = require('./base64');
- var VLQ_BASE_SHIFT = 5;
- var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
- var VLQ_BASE_MASK = VLQ_BASE - 1;
- var VLQ_CONTINUATION_BIT = VLQ_BASE;
- function toVLQSigned(aValue) {
- return aValue < 0 ? ((-aValue) << 1) + 1 : (aValue << 1) + 0;
- }
- function fromVLQSigned(aValue) {
- var isNegative = (aValue & 1) === 1;
- var shifted = aValue >> 1;
- return isNegative ? -shifted : shifted;
- }
- exports.encode = function base64VLQ_encode(aValue) {
- var encoded = "";
- var digit;
- var vlq = toVLQSigned(aValue);
- do {
- digit = vlq & VLQ_BASE_MASK;
- vlq >>>= VLQ_BASE_SHIFT;
- if (vlq > 0) {
- digit |= VLQ_CONTINUATION_BIT;
- }
- encoded += base64.encode(digit);
- } while (vlq > 0);
- return encoded;
- };
- exports.decode = function base64VLQ_decode(aStr) {
- var i = 0;
- var strLen = aStr.length;
- var result = 0;
- var shift = 0;
- var continuation,
- digit;
- do {
- if (i >= strLen) {
- throw new Error("Expected more digits in base 64 VLQ value.");
- }
- digit = base64.decode(aStr.charAt(i++));
- continuation = !!(digit & VLQ_CONTINUATION_BIT);
- digit &= VLQ_BASE_MASK;
- result = result + (digit << shift);
- shift += VLQ_BASE_SHIFT;
- } while (continuation);
- return {
- value: fromVLQSigned(result),
- rest: aStr.slice(i)
- };
- };
- });
- define = makeDefine(m, './binary-search');
- if (typeof define !== 'function') {
- var define = require('amdefine')(module, require);
- }
- define(function(require, exports, module) {
- function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare) {
- var mid = Math.floor((aHigh - aLow) / 2) + aLow;
- var cmp = aCompare(aNeedle, aHaystack[mid], true);
- if (cmp === 0) {
- return aHaystack[mid];
- } else if (cmp > 0) {
- if (aHigh - mid > 1) {
- return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare);
- }
- return aHaystack[mid];
- } else {
- if (mid - aLow > 1) {
- return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare);
- }
- return aLow < 0 ? null : aHaystack[aLow];
- }
- }
- exports.search = function search(aNeedle, aHaystack, aCompare) {
- return aHaystack.length > 0 ? recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare) : null;
- };
- });
- define = makeDefine(m, './source-map-generator');
- if (typeof define !== 'function') {
- var define = require('amdefine')(module, require);
- }
- define(function(require, exports, module) {
- var base64VLQ = require('./base64-vlq');
- var util = require('./util');
- var ArraySet = require('./array-set').ArraySet;
- function SourceMapGenerator(aArgs) {
- this._file = util.getArg(aArgs, 'file');
- this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);
- this._sources = new ArraySet();
- this._names = new ArraySet();
- this._mappings = [];
- this._sourcesContents = null;
- }
- SourceMapGenerator.prototype._version = 3;
- SourceMapGenerator.fromSourceMap = function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {
- var sourceRoot = aSourceMapConsumer.sourceRoot;
- var generator = new SourceMapGenerator({
- file: aSourceMapConsumer.file,
- sourceRoot: sourceRoot
- });
- aSourceMapConsumer.eachMapping(function(mapping) {
- var newMapping = {generated: {
- line: mapping.generatedLine,
- column: mapping.generatedColumn
- }};
- if (mapping.source) {
- newMapping.source = mapping.source;
- if (sourceRoot) {
- newMapping.source = util.relative(sourceRoot, newMapping.source);
- }
- newMapping.original = {
- line: mapping.originalLine,
- column: mapping.originalColumn
- };
- if (mapping.name) {
- newMapping.name = mapping.name;
- }
- }
- generator.addMapping(newMapping);
- });
- aSourceMapConsumer.sources.forEach(function(sourceFile) {
- var content = aSourceMapConsumer.sourceContentFor(sourceFile);
- if (content) {
- generator.setSourceContent(sourceFile, content);
- }
- });
- return generator;
- };
- SourceMapGenerator.prototype.addMapping = function SourceMapGenerator_addMapping(aArgs) {
- var generated = util.getArg(aArgs, 'generated');
- var original = util.getArg(aArgs, 'original', null);
- var source = util.getArg(aArgs, 'source', null);
- var name = util.getArg(aArgs, 'name', null);
- this._validateMapping(generated, original, source, name);
- if (source && !this._sources.has(source)) {
- this._sources.add(source);
- }
- if (name && !this._names.has(name)) {
- this._names.add(name);
- }
- this._mappings.push({
- generatedLine: generated.line,
- generatedColumn: generated.column,
- originalLine: original != null && original.line,
- originalColumn: original != null && original.column,
- source: source,
- name: name
- });
- };
- SourceMapGenerator.prototype.setSourceContent = function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
- var source = aSourceFile;
- if (this._sourceRoot) {
- source = util.relative(this._sourceRoot, source);
- }
- if (aSourceContent !== null) {
- if (!this._sourcesContents) {
- this._sourcesContents = {};
- }
- this._sourcesContents[util.toSetString(source)] = aSourceContent;
- } else {
- delete this._sourcesContents[util.toSetString(source)];
- if (Object.keys(this._sourcesContents).length === 0) {
- this._sourcesContents = null;
- }
- }
- };
- SourceMapGenerator.prototype.applySourceMap = function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile) {
- if (!aSourceFile) {
- aSourceFile = aSourceMapConsumer.file;
- }
- var sourceRoot = this._sourceRoot;
- if (sourceRoot) {
- aSourceFile = util.relative(sourceRoot, aSourceFile);
- }
- var newSources = new ArraySet();
- var newNames = new ArraySet();
- this._mappings.forEach(function(mapping) {
- if (mapping.source === aSourceFile && mapping.originalLine) {
- var original = aSourceMapConsumer.originalPositionFor({
- line: mapping.originalLine,
- column: mapping.originalColumn
- });
- if (original.source !== null) {
- if (sourceRoot) {
- mapping.source = util.relative(sourceRoot, original.source);
- } else {
- mapping.source = original.source;
- }
- mapping.originalLine = original.line;
- mapping.originalColumn = original.column;
- if (original.name !== null && mapping.name !== null) {
- mapping.name = original.name;
- }
- }
- }
- var source = mapping.source;
- if (source && !newSources.has(source)) {
- newSources.add(source);
- }
- var name = mapping.name;
- if (name && !newNames.has(name)) {
- newNames.add(name);
- }
- }, this);
- this._sources = newSources;
- this._names = newNames;
- aSourceMapConsumer.sources.forEach(function(sourceFile) {
- var content = aSourceMapConsumer.sourceContentFor(sourceFile);
- if (content) {
- if (sourceRoot) {
- sourceFile = util.relative(sourceRoot, sourceFile);
- }
- this.setSourceContent(sourceFile, content);
- }
- }, this);
- };
- SourceMapGenerator.prototype._validateMapping = function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, aName) {
- if (aGenerated && 'line' in aGenerated && 'column' in aGenerated && aGenerated.line > 0 && aGenerated.column >= 0 && !aOriginal && !aSource && !aName) {
- return;
- } else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated && aOriginal && 'line' in aOriginal && 'column' in aOriginal && aGenerated.line > 0 && aGenerated.column >= 0 && aOriginal.line > 0 && aOriginal.column >= 0 && aSource) {
- return;
- } else {
- throw new Error('Invalid mapping: ' + JSON.stringify({
- generated: aGenerated,
- source: aSource,
- orginal: aOriginal,
- name: aName
- }));
- }
- };
- SourceMapGenerator.prototype._serializeMappings = function SourceMapGenerator_serializeMappings() {
- var previousGeneratedColumn = 0;
- var previousGeneratedLine = 1;
- var previousOriginalColumn = 0;
- var previousOriginalLine = 0;
- var previousName = 0;
- var previousSource = 0;
- var result = '';
- var mapping;
- this._mappings.sort(util.compareByGeneratedPositions);
- for (var i = 0,
- len = this._mappings.length; i < len; i++) {
- mapping = this._mappings[i];
- if (mapping.generatedLine !== previousGeneratedLine) {
- previousGeneratedColumn = 0;
- while (mapping.generatedLine !== previousGeneratedLine) {
- result += ';';
- previousGeneratedLine++;
- }
- } else {
- if (i > 0) {
- if (!util.compareByGeneratedPositions(mapping, this._mappings[i - 1])) {
- continue;
- }
- result += ',';
- }
- }
- result += base64VLQ.encode(mapping.generatedColumn - previousGeneratedColumn);
- previousGeneratedColumn = mapping.generatedColumn;
- if (mapping.source) {
- result += base64VLQ.encode(this._sources.indexOf(mapping.source) - previousSource);
- previousSource = this._sources.indexOf(mapping.source);
- result += base64VLQ.encode(mapping.originalLine - 1 - previousOriginalLine);
- previousOriginalLine = mapping.originalLine - 1;
- result += base64VLQ.encode(mapping.originalColumn - previousOriginalColumn);
- previousOriginalColumn = mapping.originalColumn;
- if (mapping.name) {
- result += base64VLQ.encode(this._names.indexOf(mapping.name) - previousName);
- previousName = this._names.indexOf(mapping.name);
- }
- }
- }
- return result;
- };
- SourceMapGenerator.prototype._generateSourcesContent = function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
- return aSources.map(function(source) {
- if (!this._sourcesContents) {
- return null;
- }
- if (aSourceRoot) {
- source = util.relative(aSourceRoot, source);
- }
- var key = util.toSetString(source);
- return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) ? this._sourcesContents[key] : null;
- }, this);
- };
- SourceMapGenerator.prototype.toJSON = function SourceMapGenerator_toJSON() {
- var map = {
- version: this._version,
- file: this._file,
- sources: this._sources.toArray(),
- names: this._names.toArray(),
- mappings: this._serializeMappings()
- };
- if (this._sourceRoot) {
- map.sourceRoot = this._sourceRoot;
- }
- if (this._sourcesContents) {
- map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
- }
- return map;
- };
- SourceMapGenerator.prototype.toString = function SourceMapGenerator_toString() {
- return JSON.stringify(this);
- };
- exports.SourceMapGenerator = SourceMapGenerator;
- });
- define = makeDefine(m, './source-map-consumer');
- if (typeof define !== 'function') {
- var define = require('amdefine')(module, require);
- }
- define(function(require, exports, module) {
- var util = require('./util');
- var binarySearch = require('./binary-search');
- var ArraySet = require('./array-set').ArraySet;
- var base64VLQ = require('./base64-vlq');
- function SourceMapConsumer(aSourceMap) {
- var sourceMap = aSourceMap;
- if (typeof aSourceMap === 'string') {
- sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
- }
- var version = util.getArg(sourceMap, 'version');
- var sources = util.getArg(sourceMap, 'sources');
- var names = util.getArg(sourceMap, 'names');
- var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);
- var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);
- var mappings = util.getArg(sourceMap, 'mappings');
- var file = util.getArg(sourceMap, 'file', null);
- if (version !== this._version) {
- throw new Error('Unsupported version: ' + version);
- }
- this._names = ArraySet.fromArray(names, true);
- this._sources = ArraySet.fromArray(sources, true);
- this.sourceRoot = sourceRoot;
- this.sourcesContent = sourcesContent;
- this.file = file;
- this._generatedMappings = [];
- this._originalMappings = [];
- this._parseMappings(mappings, sourceRoot);
- }
- SourceMapConsumer.fromSourceMap = function SourceMapConsumer_fromSourceMap(aSourceMap) {
- var smc = Object.create(SourceMapConsumer.prototype);
- smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
- smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
- smc.sourceRoot = aSourceMap._sourceRoot;
- smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), smc.sourceRoot);
- smc.file = aSourceMap._file;
- smc._generatedMappings = aSourceMap._mappings.slice().sort(util.compareByGeneratedPositions);
- smc._originalMappings = aSourceMap._mappings.slice().sort(util.compareByOriginalPositions);
- return smc;
- };
- SourceMapConsumer.prototype._version = 3;
- Object.defineProperty(SourceMapConsumer.prototype, 'sources', {get: function() {
- return this._sources.toArray().map(function(s) {
- return this.sourceRoot ? util.join(this.sourceRoot, s) : s;
- }, this);
- }});
- SourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
- var generatedLine = 1;
- var previousGeneratedColumn = 0;
- var previousOriginalLine = 0;
- var previousOriginalColumn = 0;
- var previousSource = 0;
- var previousName = 0;
- var mappingSeparator = /^[,;]/;
- var str = aStr;
- var mapping;
- var temp;
- while (str.length > 0) {
- if (str.charAt(0) === ';') {
- generatedLine++;
- str = str.slice(1);
- previousGeneratedColumn = 0;
- } else if (str.charAt(0) === ',') {
- str = str.slice(1);
- } else {
- mapping = {};
- mapping.generatedLine = generatedLine;
- temp = base64VLQ.decode(str);
- mapping.generatedColumn = previousGeneratedColumn + temp.value;
- previousGeneratedColumn = mapping.generatedColumn;
- str = temp.rest;
- if (str.length > 0 && !mappingSeparator.test(str.charAt(0))) {
- temp = base64VLQ.decode(str);
- mapping.source = this._sources.at(previousSource + temp.value);
- previousSource += temp.value;
- str = temp.rest;
- if (str.length === 0 || mappingSeparator.test(str.charAt(0))) {
- throw new Error('Found a source, but no line and column');
- }
- temp = base64VLQ.decode(str);
- mapping.originalLine = previousOriginalLine + temp.value;
- previousOriginalLine = mapping.originalLine;
- mapping.originalLine += 1;
- str = temp.rest;
- if (str.length === 0 || mappingSeparator.test(str.charAt(0))) {
- throw new Error('Found a source and line, but no column');
- }
- temp = base64VLQ.decode(str);
- mapping.originalColumn = previousOriginalColumn + temp.value;
- previousOriginalColumn = mapping.originalColumn;
- str = temp.rest;
- if (str.length > 0 && !mappingSeparator.test(str.charAt(0))) {
- temp = base64VLQ.decode(str);
- mapping.name = this._names.at(previousName + temp.value);
- previousName += temp.value;
- str = temp.rest;
- }
- }
- this._generatedMappings.push(mapping);
- if (typeof mapping.originalLine === 'number') {
- this._originalMappings.push(mapping);
- }
- }
- }
- this._originalMappings.sort(util.compareByOriginalPositions);
- };
- SourceMapConsumer.prototype._findMapping = function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, aColumnName, aComparator) {
- if (aNeedle[aLineName] <= 0) {
- throw new TypeError('Line must be greater than or equal to 1, got ' + aNeedle[aLineName]);
- }
- if (aNeedle[aColumnName] < 0) {
- throw new TypeError('Column must be greater than or equal to 0, got ' + aNeedle[aColumnName]);
- }
- return binarySearch.search(aNeedle, aMappings, aComparator);
- };
- SourceMapConsumer.prototype.originalPositionFor = function SourceMapConsumer_originalPositionFor(aArgs) {
- var needle = {
- generatedLine: util.getArg(aArgs, 'line'),
- generatedColumn: util.getArg(aArgs, 'column')
- };
- var mapping = this._findMapping(needle, this._generatedMappings, "generatedLine", "generatedColumn", util.compareByGeneratedPositions);
- if (mapping) {
- var source = util.getArg(mapping, 'source', null);
- if (source && this.sourceRoot) {
- source = util.join(this.sourceRoot, source);
- }
- return {
- source: source,
- line: util.getArg(mapping, 'originalLine', null),
- column: util.getArg(mapping, 'originalColumn', null),
- name: util.getArg(mapping, 'name', null)
- };
- }
- return {
- source: null,
- line: null,
- column: null,
- name: null
- };
- };
- SourceMapConsumer.prototype.sourceContentFor = function SourceMapConsumer_sourceContentFor(aSource) {
- if (!this.sourcesContent) {
- return null;
- }
- if (this.sourceRoot) {
- aSource = util.relative(this.sourceRoot, aSource);
- }
- if (this._sources.has(aSource)) {
- return this.sourcesContent[this._sources.indexOf(aSource)];
- }
- var url;
- if (this.sourceRoot && (url = util.urlParse(this.sourceRoot))) {
- var fileUriAbsPath = aSource.replace(/^file:\/\//, "");
- if (url.scheme == "file" && this._sources.has(fileUriAbsPath)) {
- return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)];
- }
- if ((!url.path || url.path == "/") && this._sources.has("/" + aSource)) {
- return this.sourcesContent[this._sources.indexOf("/" + aSource)];
- }
- }
- throw new Error('"' + aSource + '" is not in the SourceMap.');
- };
- SourceMapConsumer.prototype.generatedPositionFor = function SourceMapConsumer_generatedPositionFor(aArgs) {
- var needle = {
- source: util.getArg(aArgs, 'source'),
- originalLine: util.getArg(aArgs, 'line'),
- originalColumn: util.getArg(aArgs, 'column')
- };
- if (this.sourceRoot) {
- needle.source = util.relative(this.sourceRoot, needle.source);
- }
- var mapping = this._findMapping(needle, this._originalMappings, "originalLine", "originalColumn", util.compareByOriginalPositions);
- if (mapping) {
- return {
- line: util.getArg(mapping, 'generatedLine', null),
- column: util.getArg(mapping, 'generatedColumn', null)
- };
- }
- return {
- line: null,
- column: null
- };
- };
- SourceMapConsumer.GENERATED_ORDER = 1;
- SourceMapConsumer.ORIGINAL_ORDER = 2;
- SourceMapConsumer.prototype.eachMapping = function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
- var context = aContext || null;
- var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
- var mappings;
- switch (order) {
- case SourceMapConsumer.GENERATED_ORDER:
- mappings = this._generatedMappings;
- break;
- case SourceMapConsumer.ORIGINAL_ORDER:
- mappings = this._originalMappings;
- break;
- default:
- throw new Error("Unknown order of iteration.");
- }
- var sourceRoot = this.sourceRoot;
- mappings.map(function(mapping) {
- var source = mapping.source;
- if (source && sourceRoot) {
- source = util.join(sourceRoot, source);
- }
- return {
- source: source,
- generatedLine: mapping.generatedLine,
- generatedColumn: mapping.generatedColumn,
- originalLine: mapping.originalLine,
- originalColumn: mapping.originalColumn,
- name: mapping.name
- };
- }).forEach(aCallback, context);
- };
- exports.SourceMapConsumer = SourceMapConsumer;
- });
- define = makeDefine(m, './source-node');
- if (typeof define !== 'function') {
- var define = require('amdefine')(module, require);
- }
- define(function(require, exports, module) {
- var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;
- var util = require('./util');
- function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
- this.children = [];
- this.sourceContents = {};
- this.line = aLine === undefined ? null : aLine;
- this.column = aColumn === undefined ? null : aColumn;
- this.source = aSource === undefined ? null : aSource;
- this.name = aName === undefined ? null : aName;
- if (aChunks != null)
- this.add(aChunks);
- }
- SourceNode.fromStringWithSourceMap = function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer) {
- var node = new SourceNode();
- var remainingLines = aGeneratedCode.split('\n');
- var lastGeneratedLine = 1,
- lastGeneratedColumn = 0;
- var lastMapping = null;
- aSourceMapConsumer.eachMapping(function(mapping) {
- if (lastMapping === null) {
- while (lastGeneratedLine < mapping.generatedLine) {
- node.add(remainingLines.shift() + "\n");
- lastGeneratedLine++;
- }
- if (lastGeneratedColumn < mapping.generatedColumn) {
- var nextLine = remainingLines[0];
- node.add(nextLine.substr(0, mapping.generatedColumn));
- remainingLines[0] = nextLine.substr(mapping.generatedColumn);
- lastGeneratedColumn = mapping.generatedColumn;
- }
- } else {
- if (lastGeneratedLine < mapping.generatedLine) {
- var code = "";
- do {
- code += remainingLines.shift() + "\n";
- lastGeneratedLine++;
- lastGeneratedColumn = 0;
- } while (lastGeneratedLine < mapping.generatedLine);
- if (lastGeneratedColumn < mapping.generatedColumn) {
- var nextLine = remainingLines[0];
- code += nextLine.substr(0, mapping.generatedColumn);
- remainingLines[0] = nextLine.substr(mapping.generatedColumn);
- lastGeneratedColumn = mapping.generatedColumn;
- }
- addMappingWithCode(lastMapping, code);
- } else {
- var nextLine = remainingLines[0];
- var code = nextLine.substr(0, mapping.generatedColumn - lastGeneratedColumn);
- remainingLines[0] = nextLine.substr(mapping.generatedColumn - lastGeneratedColumn);
- lastGeneratedColumn = mapping.generatedColumn;
- addMappingWithCode(lastMapping, code);
- }
- }
- lastMapping = mapping;
- }, this);
- addMappingWithCode(lastMapping, remainingLines.join("\n"));
- aSourceMapConsumer.sources.forEach(function(sourceFile) {
- var content = aSourceMapConsumer.sourceContentFor(sourceFile);
- if (content) {
- node.setSourceContent(sourceFile, content);
- }
- });
- return node;
- function addMappingWithCode(mapping, code) {
- if (mapping === null || mapping.source === undefined) {
- node.add(code);
- } else {
- node.add(new SourceNode(mapping.originalLine, mapping.originalColumn, mapping.source, code, mapping.name));
- }
- }
- };
- SourceNode.prototype.add = function SourceNode_add(aChunk) {
- if (Array.isArray(aChunk)) {
- aChunk.forEach(function(chunk) {
- this.add(chunk);
- }, this);
- } else if (aChunk instanceof SourceNode || typeof aChunk === "string") {
- if (aChunk) {
- this.children.push(aChunk);
- }
- } else {
- throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk);
- }
- return this;
- };
- SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
- if (Array.isArray(aChunk)) {
- for (var i = aChunk.length - 1; i >= 0; i--) {
- this.prepend(aChunk[i]);
- }
- } else if (aChunk instanceof SourceNode || typeof aChunk === "string") {
- this.children.unshift(aChunk);
- } else {
- throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk);
- }
- return this;
- };
- SourceNode.prototype.walk = function SourceNode_walk(aFn) {
- var chunk;
- for (var i = 0,
- len = this.children.length; i < len; i++) {
- chunk = this.children[i];
- if (chunk instanceof SourceNode) {
- chunk.walk(aFn);
- } else {
- if (chunk !== '') {
- aFn(chunk, {
- source: this.source,
- line: this.line,
- column: this.column,
- name: this.name
- });
- }
- }
- }
- };
- SourceNode.prototype.join = function SourceNode_join(aSep) {
- var newChildren;
- var i;
- var len = this.children.length;
- if (len > 0) {
- newChildren = [];
- for (i = 0; i < len - 1; i++) {
- newChildren.push(this.children[i]);
- newChildren.push(aSep);
- }
- newChildren.push(this.children[i]);
- this.children = newChildren;
- }
- return this;
- };
- SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
- var lastChild = this.children[this.children.length - 1];
- if (lastChild instanceof SourceNode) {
- lastChild.replaceRight(aPattern, aReplacement);
- } else if (typeof lastChild === 'string') {
- this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
- } else {
- this.children.push(''.replace(aPattern, aReplacement));
- }
- return this;
- };
- SourceNode.prototype.setSourceContent = function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
- this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
- };
- SourceNode.prototype.walkSourceContents = function SourceNode_walkSourceContents(aFn) {
- for (var i = 0,
- len = this.children.length; i < len; i++) {
- if (this.children[i] instanceof SourceNode) {
- this.children[i].walkSourceContents(aFn);
- }
- }
- var sources = Object.keys(this.sourceContents);
- for (var i = 0,
- len = sources.length; i < len; i++) {
- aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
- }
- };
- SourceNode.prototype.toString = function SourceNode_toString() {
- var str = "";
- this.walk(function(chunk) {
- str += chunk;
- });
- return str;
- };
- SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
- var generated = {
- code: "",
- line: 1,
- column: 0
- };
- var map = new SourceMapGenerator(aArgs);
- var sourceMappingActive = false;
- var lastOriginalSource = null;
- var lastOriginalLine = null;
- var lastOriginalColumn = null;
- var lastOriginalName = null;
- this.walk(function(chunk, original) {
- generated.code += chunk;
- if (original.source !== null && original.line !== null && original.column !== null) {
- if (lastOriginalSource !== original.source || lastOriginalLine !== original.line || lastOriginalColumn !== original.column || lastOriginalName !== original.name) {
- map.addMapping({
- source: original.source,
- original: {
- line: original.line,
- column: original.column
- },
- generated: {
- line: generated.line,
- column: generated.column
- },
- name: original.name
- });
- }
- lastOriginalSource = original.source;
- lastOriginalLine = original.line;
- lastOriginalColumn = original.column;
- lastOriginalName = original.name;
- sourceMappingActive = true;
- } else if (sourceMappingActive) {
- map.addMapping({generated: {
- line: generated.line,
- column: generated.column
- }});
- lastOriginalSource = null;
- sourceMappingActive = false;
- }
- chunk.split('').forEach(function(ch) {
- if (ch === '\n') {
- generated.line++;
- generated.column = 0;
- } else {
- generated.column++;
- }
- });
- });
- this.walkSourceContents(function(sourceFile, sourceContent) {
- map.setSourceContent(sourceFile, sourceContent);
- });
- return {
- code: generated.code,
- map: map
- };
- };
- exports.SourceNode = SourceNode;
- });
- var SourceMapGenerator = m['./source-map-generator'].SourceMapGenerator;
- var SourceMapConsumer = m['./source-map-consumer'].SourceMapConsumer;
- var SourceNode = m['./source-node'].SourceNode;
- return {
- get SourceMapGenerator() {
- return SourceMapGenerator;
- },
- get SourceMapConsumer() {
- return SourceMapConsumer;
- },
- get SourceNode() {
- return SourceNode;
- }
- };
-});
-System.register("traceur@0.0.32/src/outputgeneration/toSource", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/outputgeneration/toSource";
- var ParseTreeMapWriter = System.get("traceur@0.0.32/src/outputgeneration/ParseTreeMapWriter").ParseTreeMapWriter;
- var ParseTreeWriter = System.get("traceur@0.0.32/src/outputgeneration/ParseTreeWriter").ParseTreeWriter;
- var SourceMapGenerator = System.get("traceur@0.0.32/src/outputgeneration/SourceMapIntegration").SourceMapGenerator;
- function toSource(tree) {
- var options = arguments[1];
- var sourceMapGenerator = options && options.sourceMapGenerator;
- if (!sourceMapGenerator && options && options.sourceMaps) {
- sourceMapGenerator = new SourceMapGenerator({
- file: options.filename,
- sourceRoot: null
- });
- }
- var writer;
- if (sourceMapGenerator)
- writer = new ParseTreeMapWriter(sourceMapGenerator, options);
- else
- writer = new ParseTreeWriter(options);
- writer.visitAny(tree);
- return [writer.toString(), sourceMapGenerator && sourceMapGenerator.toString()];
- }
- return {get toSource() {
- return toSource;
- }};
-});
-System.register("traceur@0.0.32/src/outputgeneration/TreeWriter", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/outputgeneration/TreeWriter";
- var toSource = System.get("traceur@0.0.32/src/outputgeneration/toSource").toSource;
- function write(tree) {
- var options = arguments[1];
- var $__39 = toSource(tree, options),
- result = $__39[0],
- sourceMap = $__39[1];
- if (sourceMap)
- options.sourceMap = sourceMap;
- return result;
- }
- var TreeWriter = function TreeWriter() {};
- ($traceurRuntime.createClass)(TreeWriter, {}, {});
- TreeWriter.write = write;
- return {
- get write() {
- return write;
- },
- get TreeWriter() {
- return TreeWriter;
- }
- };
-});
-System.register("traceur@0.0.32/src/util/assert", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/util/assert";
- var options = System.get("traceur@0.0.32/src/options").options;
- function assert(b) {
- if (!b && options.debug)
- throw Error('Assertion failed');
- }
- return {get assert() {
- return assert;
- }};
-});
-System.register("traceur@0.0.32/src/syntax/ParseTreeValidator", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/syntax/ParseTreeValidator";
- var NewExpression = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees").NewExpression;
- var ParseTreeVisitor = System.get("traceur@0.0.32/src/syntax/ParseTreeVisitor").ParseTreeVisitor;
- var TreeWriter = System.get("traceur@0.0.32/src/outputgeneration/TreeWriter").TreeWriter;
- var $__42 = System.get("traceur@0.0.32/src/syntax/TokenType"),
- AMPERSAND = $__42.AMPERSAND,
- AMPERSAND_EQUAL = $__42.AMPERSAND_EQUAL,
- AND = $__42.AND,
- BAR = $__42.BAR,
- BAR_EQUAL = $__42.BAR_EQUAL,
- CARET = $__42.CARET,
- CARET_EQUAL = $__42.CARET_EQUAL,
- CLOSE_ANGLE = $__42.CLOSE_ANGLE,
- EQUAL = $__42.EQUAL,
- EQUAL_EQUAL = $__42.EQUAL_EQUAL,
- EQUAL_EQUAL_EQUAL = $__42.EQUAL_EQUAL_EQUAL,
- GREATER_EQUAL = $__42.GREATER_EQUAL,
- IDENTIFIER = $__42.IDENTIFIER,
- IN = $__42.IN,
- INSTANCEOF = $__42.INSTANCEOF,
- LEFT_SHIFT = $__42.LEFT_SHIFT,
- LEFT_SHIFT_EQUAL = $__42.LEFT_SHIFT_EQUAL,
- LESS_EQUAL = $__42.LESS_EQUAL,
- MINUS = $__42.MINUS,
- MINUS_EQUAL = $__42.MINUS_EQUAL,
- NOT_EQUAL = $__42.NOT_EQUAL,
- NOT_EQUAL_EQUAL = $__42.NOT_EQUAL_EQUAL,
- NUMBER = $__42.NUMBER,
- OPEN_ANGLE = $__42.OPEN_ANGLE,
- OR = $__42.OR,
- PERCENT = $__42.PERCENT,
- PERCENT_EQUAL = $__42.PERCENT_EQUAL,
- PLUS = $__42.PLUS,
- PLUS_EQUAL = $__42.PLUS_EQUAL,
- RIGHT_SHIFT = $__42.RIGHT_SHIFT,
- RIGHT_SHIFT_EQUAL = $__42.RIGHT_SHIFT_EQUAL,
- SLASH = $__42.SLASH,
- SLASH_EQUAL = $__42.SLASH_EQUAL,
- STAR = $__42.STAR,
- STAR_EQUAL = $__42.STAR_EQUAL,
- STRING = $__42.STRING,
- UNSIGNED_RIGHT_SHIFT = $__42.UNSIGNED_RIGHT_SHIFT,
- UNSIGNED_RIGHT_SHIFT_EQUAL = $__42.UNSIGNED_RIGHT_SHIFT_EQUAL;
- var $__42 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- ARRAY_PATTERN = $__42.ARRAY_PATTERN,
- BINDING_ELEMENT = $__42.BINDING_ELEMENT,
- BINDING_IDENTIFIER = $__42.BINDING_IDENTIFIER,
- BLOCK = $__42.BLOCK,
- CASE_CLAUSE = $__42.CASE_CLAUSE,
- CATCH = $__42.CATCH,
- CLASS_DECLARATION = $__42.CLASS_DECLARATION,
- COMPUTED_PROPERTY_NAME = $__42.COMPUTED_PROPERTY_NAME,
- DEFAULT_CLAUSE = $__42.DEFAULT_CLAUSE,
- EXPORT_DECLARATION = $__42.EXPORT_DECLARATION,
- EXPORT_DEFAULT = $__42.EXPORT_DEFAULT,
- EXPORT_SPECIFIER = $__42.EXPORT_SPECIFIER,
- EXPORT_SPECIFIER_SET = $__42.EXPORT_SPECIFIER_SET,
- EXPORT_STAR = $__42.EXPORT_STAR,
- FINALLY = $__42.FINALLY,
- FORMAL_PARAMETER = $__42.FORMAL_PARAMETER,
- FORMAL_PARAMETER_LIST = $__42.FORMAL_PARAMETER_LIST,
- FUNCTION_BODY = $__42.FUNCTION_BODY,
- FUNCTION_DECLARATION = $__42.FUNCTION_DECLARATION,
- GET_ACCESSOR = $__42.GET_ACCESSOR,
- IDENTIFIER_EXPRESSION = $__42.IDENTIFIER_EXPRESSION,
- IMPORT_DECLARATION = $__42.IMPORT_DECLARATION,
- LITERAL_PROPERTY_NAME = $__42.LITERAL_PROPERTY_NAME,
- MODULE_DECLARATION = $__42.MODULE_DECLARATION,
- MODULE_SPECIFIER = $__42.MODULE_SPECIFIER,
- NAMED_EXPORT = $__42.NAMED_EXPORT,
- OBJECT_PATTERN = $__42.OBJECT_PATTERN,
- OBJECT_PATTERN_FIELD = $__42.OBJECT_PATTERN_FIELD,
- PROPERTY_METHOD_ASSIGNMENT = $__42.PROPERTY_METHOD_ASSIGNMENT,
- PROPERTY_NAME_ASSIGNMENT = $__42.PROPERTY_NAME_ASSIGNMENT,
- PROPERTY_NAME_SHORTHAND = $__42.PROPERTY_NAME_SHORTHAND,
- REST_PARAMETER = $__42.REST_PARAMETER,
- SET_ACCESSOR = $__42.SET_ACCESSOR,
- TEMPLATE_LITERAL_PORTION = $__42.TEMPLATE_LITERAL_PORTION,
- TEMPLATE_SUBSTITUTION = $__42.TEMPLATE_SUBSTITUTION,
- VARIABLE_DECLARATION_LIST = $__42.VARIABLE_DECLARATION_LIST,
- VARIABLE_STATEMENT = $__42.VARIABLE_STATEMENT;
- var assert = System.get("traceur@0.0.32/src/util/assert").assert;
- var ValidationError = function ValidationError(tree, message) {
- this.tree = tree;
- this.message = message;
- };
- ($traceurRuntime.createClass)(ValidationError, {}, {}, Error);
- var ParseTreeValidator = function ParseTreeValidator() {
- $traceurRuntime.defaultSuperCall(this, $ParseTreeValidator.prototype, arguments);
- };
- var $ParseTreeValidator = ParseTreeValidator;
- ($traceurRuntime.createClass)(ParseTreeValidator, {
- fail_: function(tree, message) {
- throw new ValidationError(tree, message);
- },
- check_: function(condition, tree, message) {
- if (!condition) {
- this.fail_(tree, message);
- }
- },
- checkVisit_: function(condition, tree, message) {
- this.check_(condition, tree, message);
- this.visitAny(tree);
- },
- checkType_: function(type, tree, message) {
- this.checkVisit_(tree.type === type, tree, message);
- },
- visitArgumentList: function(tree) {
- for (var i = 0; i < tree.args.length; i++) {
- var argument = tree.args[i];
- this.checkVisit_(argument.isAssignmentOrSpread(), argument, 'assignment or spread expected');
- }
- },
- visitArrayLiteralExpression: function(tree) {
- for (var i = 0; i < tree.elements.length; i++) {
- var element = tree.elements[i];
- this.checkVisit_(element === null || element.isAssignmentOrSpread(), element, 'assignment or spread expected');
- }
- },
- visitArrayPattern: function(tree) {
- for (var i = 0; i < tree.elements.length; i++) {
- var element = tree.elements[i];
- this.checkVisit_(element === null || element.type === BINDING_ELEMENT || element.type == IDENTIFIER_EXPRESSION || element.isLeftHandSideExpression() || element.isPattern() || element.isSpreadPatternElement(), element, 'null, sub pattern, left hand side expression or spread expected');
- if (element && element.isSpreadPatternElement()) {
- this.check_(i === (tree.elements.length - 1), element, 'spread in array patterns must be the last element');
- }
- }
- },
- visitAwaitStatement: function(tree) {
- this.checkVisit_(tree.expression.isExpression(), tree.expression, 'await must be expression');
- },
- visitBinaryOperator: function(tree) {
- switch (tree.operator.type) {
- case EQUAL:
- case STAR_EQUAL:
- case SLASH_EQUAL:
- case PERCENT_EQUAL:
- case PLUS_EQUAL:
- case MINUS_EQUAL:
- case LEFT_SHIFT_EQUAL:
- case RIGHT_SHIFT_EQUAL:
- case UNSIGNED_RIGHT_SHIFT_EQUAL:
- case AMPERSAND_EQUAL:
- case CARET_EQUAL:
- case BAR_EQUAL:
- this.check_(tree.left.isLeftHandSideExpression() || tree.left.isPattern(), tree.left, 'left hand side expression or pattern expected');
- this.check_(tree.right.isArrowFunctionExpression(), tree.right, 'assignment expression expected');
- break;
- case AND:
- case OR:
- case BAR:
- case CARET:
- case AMPERSAND:
- case EQUAL_EQUAL:
- case NOT_EQUAL:
- case EQUAL_EQUAL_EQUAL:
- case NOT_EQUAL_EQUAL:
- case OPEN_ANGLE:
- case CLOSE_ANGLE:
- case GREATER_EQUAL:
- case LESS_EQUAL:
- case INSTANCEOF:
- case IN:
- case LEFT_SHIFT:
- case RIGHT_SHIFT:
- case UNSIGNED_RIGHT_SHIFT:
- case PLUS:
- case MINUS:
- case STAR:
- case SLASH:
- case PERCENT:
- this.check_(tree.left.isArrowFunctionExpression(), tree.left, 'assignment expression expected');
- this.check_(tree.right.isArrowFunctionExpression(), tree.right, 'assignment expression expected');
- break;
- default:
- this.fail_(tree, 'unexpected binary operator');
- }
- this.visitAny(tree.left);
- this.visitAny(tree.right);
- },
- visitBindingElement: function(tree) {
- var binding = tree.binding;
- this.checkVisit_(binding.type == BINDING_IDENTIFIER || binding.type == OBJECT_PATTERN || binding.type == ARRAY_PATTERN, binding, 'expected valid binding element');
- this.visitAny(tree.initialiser);
- },
- visitBlock: function(tree) {
- for (var i = 0; i < tree.statements.length; i++) {
- var statement = tree.statements[i];
- this.checkVisit_(statement.isStatementListItem(), statement, 'statement or function declaration expected');
- }
- },
- visitCallExpression: function(tree) {
- this.check_(tree.operand.isMemberExpression(), tree.operand, 'member expression expected');
- if (tree.operand instanceof NewExpression) {
- this.check_(tree.operand.args !== null, tree.operand, 'new args expected');
- }
- this.visitAny(tree.operand);
- this.visitAny(tree.args);
- },
- visitCaseClause: function(tree) {
- this.checkVisit_(tree.expression.isExpression(), tree.expression, 'expression expected');
- for (var i = 0; i < tree.statements.length; i++) {
- var statement = tree.statements[i];
- this.checkVisit_(statement.isStatement(), statement, 'statement expected');
- }
- },
- visitCatch: function(tree) {
- this.checkVisit_(tree.binding.isPattern() || tree.binding.type == BINDING_IDENTIFIER, tree.binding, 'binding identifier expected');
- this.checkVisit_(tree.catchBody.type === BLOCK, tree.catchBody, 'block expected');
- },
- visitClassDeclaration: function(tree) {
- for (var i = 0; i < tree.elements.length; i++) {
- var element = tree.elements[i];
- switch (element.type) {
- case GET_ACCESSOR:
- case SET_ACCESSOR:
- case PROPERTY_METHOD_ASSIGNMENT:
- break;
- default:
- this.fail_(element, 'class element expected');
- }
- this.visitAny(element);
- }
- },
- visitCommaExpression: function(tree) {
- for (var i = 0; i < tree.expressions.length; i++) {
- var expression = tree.expressions[i];
- this.checkVisit_(expression.isArrowFunctionExpression(), expression, 'expression expected');
- }
- },
- visitConditionalExpression: function(tree) {
- this.checkVisit_(tree.condition.isArrowFunctionExpression(), tree.condition, 'expression expected');
- this.checkVisit_(tree.left.isArrowFunctionExpression(), tree.left, 'expression expected');
- this.checkVisit_(tree.right.isArrowFunctionExpression(), tree.right, 'expression expected');
- },
- visitCoverFormals: function(tree) {
- this.fail_(tree, 'CoverFormals should have been removed');
- },
- visitCoverInitialisedName: function(tree) {
- this.fail_(tree, 'CoverInitialisedName should have been removed');
- },
- visitDefaultClause: function(tree) {
- for (var i = 0; i < tree.statements.length; i++) {
- var statement = tree.statements[i];
- this.checkVisit_(statement.isStatement(), statement, 'statement expected');
- }
- },
- visitDoWhileStatement: function(tree) {
- this.checkVisit_(tree.body.isStatement(), tree.body, 'statement expected');
- this.checkVisit_(tree.condition.isExpression(), tree.condition, 'expression expected');
- },
- visitExportDeclaration: function(tree) {
- var declType = tree.declaration.type;
- this.checkVisit_(declType == VARIABLE_STATEMENT || declType == FUNCTION_DECLARATION || declType == MODULE_DECLARATION || declType == CLASS_DECLARATION || declType == NAMED_EXPORT || declType == EXPORT_DEFAULT, tree.declaration, 'expected valid export tree');
- },
- visitNamedExport: function(tree) {
- if (tree.moduleSpecifier) {
- this.checkVisit_(tree.moduleSpecifier.type == MODULE_SPECIFIER, tree.moduleSpecifier, 'module expression expected');
- }
- var specifierType = tree.specifierSet.type;
- this.checkVisit_(specifierType == EXPORT_SPECIFIER_SET || specifierType == EXPORT_STAR, tree.specifierSet, 'specifier set or identifier expected');
- },
- visitExportSpecifierSet: function(tree) {
- this.check_(tree.specifiers.length > 0, tree, 'expected at least one identifier');
- for (var i = 0; i < tree.specifiers.length; i++) {
- var specifier = tree.specifiers[i];
- this.checkVisit_(specifier.type == EXPORT_SPECIFIER || specifier.type == IDENTIFIER_EXPRESSION, specifier, 'expected valid export specifier');
- }
- },
- visitExpressionStatement: function(tree) {
- this.checkVisit_(tree.expression.isExpression(), tree.expression, 'expression expected');
- },
- visitFinally: function(tree) {
- this.checkVisit_(tree.block.type === BLOCK, tree.block, 'block expected');
- },
- visitForOfStatement: function(tree) {
- this.checkVisit_(tree.initialiser.isPattern() || tree.initialiser.type === IDENTIFIER_EXPRESSION || tree.initialiser.type === VARIABLE_DECLARATION_LIST && tree.initialiser.declarations.length === 1, tree.initialiser, 'for-each statement may not have more than one variable declaration');
- this.checkVisit_(tree.collection.isExpression(), tree.collection, 'expression expected');
- this.checkVisit_(tree.body.isStatement(), tree.body, 'statement expected');
- },
- visitForInStatement: function(tree) {
- if (tree.initialiser.type === VARIABLE_DECLARATION_LIST) {
- this.checkVisit_(tree.initialiser.declarations.length <= 1, tree.initialiser, 'for-in statement may not have more than one variable declaration');
- } else {
- this.checkVisit_(tree.initialiser.isPattern() || tree.initialiser.isExpression(), tree.initialiser, 'variable declaration, expression or ' + 'pattern expected');
- }
- this.checkVisit_(tree.collection.isExpression(), tree.collection, 'expression expected');
- this.checkVisit_(tree.body.isStatement(), tree.body, 'statement expected');
- },
- visitFormalParameterList: function(tree) {
- for (var i = 0; i < tree.parameters.length; i++) {
- var parameter = tree.parameters[i];
- assert(parameter.type === FORMAL_PARAMETER);
- parameter = parameter.parameter;
- switch (parameter.type) {
- case BINDING_ELEMENT:
- break;
- case REST_PARAMETER:
- this.checkVisit_(i === tree.parameters.length - 1, parameter, 'rest parameters must be the last parameter in a parameter list');
- this.checkType_(BINDING_IDENTIFIER, parameter.identifier, 'binding identifier expected');
- break;
- default:
- this.fail_(parameter, 'parameters must be identifiers or rest' + (" parameters. Found: " + parameter.type));
- break;
- }
- this.visitAny(parameter);
- }
- },
- visitForStatement: function(tree) {
- if (tree.initialiser !== null) {
- this.checkVisit_(tree.initialiser.isExpression() || tree.initialiser.type === VARIABLE_DECLARATION_LIST, tree.initialiser, 'variable declaration list or expression expected');
- }
- if (tree.condition !== null) {
- this.checkVisit_(tree.condition.isExpression(), tree.condition, 'expression expected');
- }
- if (tree.increment !== null) {
- this.checkVisit_(tree.increment.isExpression(), tree.increment, 'expression expected');
- }
- this.checkVisit_(tree.body.isStatement(), tree.body, 'statement expected');
- },
- visitFunctionBody: function(tree) {
- for (var i = 0; i < tree.statements.length; i++) {
- var statement = tree.statements[i];
- this.checkVisit_(statement.isStatementListItem(), statement, 'statement expected');
- }
- },
- visitFunctionDeclaration: function(tree) {
- this.checkType_(BINDING_IDENTIFIER, tree.name, 'binding identifier expected');
- this.visitFunction_(tree);
- },
- visitFunctionExpression: function(tree) {
- if (tree.name !== null) {
- this.checkType_(BINDING_IDENTIFIER, tree.name, 'binding identifier expected');
- }
- this.visitFunction_(tree);
- },
- visitFunction_: function(tree) {
- this.checkType_(FORMAL_PARAMETER_LIST, tree.formalParameterList, 'formal parameters expected');
- this.checkType_(FUNCTION_BODY, tree.functionBody, 'function body expected');
- },
- visitGetAccessor: function(tree) {
- this.checkPropertyName_(tree.name);
- this.checkType_(FUNCTION_BODY, tree.body, 'function body expected');
- },
- visitIfStatement: function(tree) {
- this.checkVisit_(tree.condition.isExpression(), tree.condition, 'expression expected');
- this.checkVisit_(tree.ifClause.isStatement(), tree.ifClause, 'statement expected');
- if (tree.elseClause !== null) {
- this.checkVisit_(tree.elseClause.isStatement(), tree.elseClause, 'statement expected');
- }
- },
- visitLabelledStatement: function(tree) {
- this.checkVisit_(tree.statement.isStatement(), tree.statement, 'statement expected');
- },
- visitMemberExpression: function(tree) {
- this.check_(tree.operand.isMemberExpression(), tree.operand, 'member expression expected');
- if (tree.operand instanceof NewExpression) {
- this.check_(tree.operand.args !== null, tree.operand, 'new args expected');
- }
- this.visitAny(tree.operand);
- },
- visitMemberLookupExpression: function(tree) {
- this.check_(tree.operand.isMemberExpression(), tree.operand, 'member expression expected');
- if (tree.operand instanceof NewExpression) {
- this.check_(tree.operand.args !== null, tree.operand, 'new args expected');
- }
- this.visitAny(tree.operand);
- },
- visitSyntaxErrorTree: function(tree) {
- this.fail_(tree, ("parse tree contains SyntaxError: " + tree.message));
- },
- visitModuleSpecifier: function(tree) {
- this.check_(tree.token.type == STRING || tree.moduleName, 'string or identifier expected');
- },
- visitModuleDeclaration: function(tree) {
- this.checkType_(MODULE_SPECIFIER, tree.expression, 'module expression expected');
- },
- visitNewExpression: function(tree) {
- this.checkVisit_(tree.operand.isMemberExpression(), tree.operand, 'member expression expected');
- this.visitAny(tree.args);
- },
- visitObjectLiteralExpression: function(tree) {
- for (var i = 0; i < tree.propertyNameAndValues.length; i++) {
- var propertyNameAndValue = tree.propertyNameAndValues[i];
- switch (propertyNameAndValue.type) {
- case GET_ACCESSOR:
- case SET_ACCESSOR:
- case PROPERTY_METHOD_ASSIGNMENT:
- this.check_(!propertyNameAndValue.isStatic, propertyNameAndValue, 'static is not allowed in object literal expression');
- case PROPERTY_NAME_ASSIGNMENT:
- case PROPERTY_NAME_SHORTHAND:
- break;
- default:
- this.fail_(propertyNameAndValue, 'accessor, property name ' + 'assignment or property method assigment expected');
- }
- this.visitAny(propertyNameAndValue);
- }
- },
- visitObjectPattern: function(tree) {
- for (var i = 0; i < tree.fields.length; i++) {
- var field = tree.fields[i];
- this.checkVisit_(field.type === OBJECT_PATTERN_FIELD || field.type === BINDING_ELEMENT || field.type === IDENTIFIER_EXPRESSION, field, 'object pattern field expected');
- }
- },
- visitObjectPatternField: function(tree) {
- this.checkPropertyName_(tree.name);
- this.checkVisit_(tree.element.type === BINDING_ELEMENT || tree.element.isPattern() || tree.element.isLeftHandSideExpression(), tree.element, 'binding element expected');
- },
- visitParenExpression: function(tree) {
- if (tree.expression.isPattern()) {
- this.visitAny(tree.expression);
- } else {
- this.checkVisit_(tree.expression.isExpression(), tree.expression, 'expression expected');
- }
- },
- visitPostfixExpression: function(tree) {
- this.checkVisit_(tree.operand.isArrowFunctionExpression(), tree.operand, 'assignment expression expected');
- },
- visitPredefinedType: function(tree) {},
- visitScript: function(tree) {
- for (var i = 0; i < tree.scriptItemList.length; i++) {
- var scriptItemList = tree.scriptItemList[i];
- this.checkVisit_(scriptItemList.isScriptElement(), scriptItemList, 'global script item expected');
- }
- },
- checkPropertyName_: function(tree) {
- this.checkVisit_(tree.type === LITERAL_PROPERTY_NAME || tree.type === COMPUTED_PROPERTY_NAME, tree, 'property name expected');
- },
- visitPropertyNameAssignment: function(tree) {
- this.checkPropertyName_(tree.name);
- this.checkVisit_(tree.value.isArrowFunctionExpression(), tree.value, 'assignment expression expected');
- },
- visitPropertyNameShorthand: function(tree) {
- this.check_(tree.name.type === IDENTIFIER, tree, 'identifier token expected');
- },
- visitLiteralPropertyName: function(tree) {
- var type = tree.literalToken.type;
- this.check_(tree.literalToken.isKeyword() || type === IDENTIFIER || type === NUMBER || type === STRING, tree, 'Unexpected token in literal property name');
- },
- visitTemplateLiteralExpression: function(tree) {
- if (tree.operand) {
- this.checkVisit_(tree.operand.isMemberExpression(), tree.operand, 'member or call expression expected');
- }
- for (var i = 0; i < tree.elements.length; i++) {
- var element = tree.elements[i];
- if (i % 2) {
- this.checkType_(TEMPLATE_SUBSTITUTION, element, 'Template literal substitution expected');
- } else {
- this.checkType_(TEMPLATE_LITERAL_PORTION, element, 'Template literal portion expected');
- }
- }
- },
- visitReturnStatement: function(tree) {
- if (tree.expression !== null) {
- this.checkVisit_(tree.expression.isExpression(), tree.expression, 'expression expected');
- }
- },
- visitSetAccessor: function(tree) {
- this.checkPropertyName_(tree.name);
- this.checkType_(FUNCTION_BODY, tree.body, 'function body expected');
- },
- visitSpreadExpression: function(tree) {
- this.checkVisit_(tree.expression.isArrowFunctionExpression(), tree.expression, 'assignment expression expected');
- },
- visitStateMachine: function(tree) {
- this.fail_(tree, 'State machines are never valid outside of the ' + 'GeneratorTransformer pass.');
- },
- visitSwitchStatement: function(tree) {
- this.checkVisit_(tree.expression.isExpression(), tree.expression, 'expression expected');
- var defaultCount = 0;
- for (var i = 0; i < tree.caseClauses.length; i++) {
- var caseClause = tree.caseClauses[i];
- if (caseClause.type === DEFAULT_CLAUSE) {
- ++defaultCount;
- this.checkVisit_(defaultCount <= 1, caseClause, 'no more than one default clause allowed');
- } else {
- this.checkType_(CASE_CLAUSE, caseClause, 'case or default clause expected');
- }
- }
- },
- visitThrowStatement: function(tree) {
- if (tree.value === null) {
- return;
- }
- this.checkVisit_(tree.value.isExpression(), tree.value, 'expression expected');
- },
- visitTryStatement: function(tree) {
- this.checkType_(BLOCK, tree.body, 'block expected');
- if (tree.catchBlock !== null) {
- this.checkType_(CATCH, tree.catchBlock, 'catch block expected');
- }
- if (tree.finallyBlock !== null) {
- this.checkType_(FINALLY, tree.finallyBlock, 'finally block expected');
- }
- if (tree.catchBlock === null && tree.finallyBlock === null) {
- this.fail_(tree, 'either catch or finally must be present');
- }
- },
- visitTypeName: function(tree) {},
- visitUnaryExpression: function(tree) {
- this.checkVisit_(tree.operand.isArrowFunctionExpression(), tree.operand, 'assignment expression expected');
- },
- visitVariableDeclaration: function(tree) {
- this.checkVisit_(tree.lvalue.isPattern() || tree.lvalue.type == BINDING_IDENTIFIER, tree.lvalue, 'binding identifier expected, found: ' + tree.lvalue.type);
- if (tree.initialiser !== null) {
- this.checkVisit_(tree.initialiser.isArrowFunctionExpression(), tree.initialiser, 'assignment expression expected');
- }
- },
- visitWhileStatement: function(tree) {
- this.checkVisit_(tree.condition.isExpression(), tree.condition, 'expression expected');
- this.checkVisit_(tree.body.isStatement(), tree.body, 'statement expected');
- },
- visitWithStatement: function(tree) {
- this.checkVisit_(tree.expression.isExpression(), tree.expression, 'expression expected');
- this.checkVisit_(tree.body.isStatement(), tree.body, 'statement expected');
- },
- visitYieldExpression: function(tree) {
- if (tree.expression !== null) {
- this.checkVisit_(tree.expression.isExpression(), tree.expression, 'expression expected');
- }
- }
- }, {}, ParseTreeVisitor);
- ParseTreeValidator.validate = function(tree) {
- var validator = new ParseTreeValidator();
- try {
- validator.visitAny(tree);
- } catch (e) {
- if (!(e instanceof ValidationError)) {
- throw e;
- }
- var location = null;
- if (e.tree !== null) {
- location = e.tree.location;
- }
- if (location === null) {
- location = tree.location;
- }
- var locationString = location !== null ? location.start.toString() : '(unknown)';
- throw new Error(("Parse tree validation failure '" + e.message + "' at " + locationString + ":") + '\n\n' + TreeWriter.write(tree, {
- highlighted: e.tree,
- showLineNumbers: true
- }) + '\n');
- }
- };
- return {get ParseTreeValidator() {
- return ParseTreeValidator;
- }};
-});
-System.register("traceur@0.0.32/src/util/ObjectMap", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/util/ObjectMap";
- var ObjectMap = function ObjectMap() {
- this.keys_ = Object.create(null);
- this.values_ = Object.create(null);
- };
- ($traceurRuntime.createClass)(ObjectMap, {
- set: function(key, value) {
- var uid = key.uid;
- this.keys_[uid] = key;
- this.values_[uid] = value;
- },
- get: function(key) {
- return this.values_[key.uid];
- },
- has: function(key) {
- return key.uid in this.keys_;
- },
- addAll: function(other) {
- for (var uid in other.keys_) {
- this.keys_[uid] = other.keys_[uid];
- this.values_[uid] = other.values_[uid];
- }
- },
- keys: function() {
- var $__43 = this;
- return Object.keys(this.keys_).map((function(uid) {
- return $__43.keys_[uid];
- }));
- },
- values: function() {
- var $__43 = this;
- return Object.keys(this.values_).map((function(uid) {
- return $__43.values_[uid];
- }));
- },
- remove: function(key) {
- var uid = key.uid;
- delete this.keys_[uid];
- delete this.values_[uid];
- }
- }, {});
- return {get ObjectMap() {
- return ObjectMap;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/ParseTreeFactory", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/ParseTreeFactory";
- var IdentifierToken = System.get("traceur@0.0.32/src/syntax/IdentifierToken").IdentifierToken;
- var LiteralToken = System.get("traceur@0.0.32/src/syntax/LiteralToken").LiteralToken;
- var $__47 = System.get("traceur@0.0.32/src/syntax/trees/ParseTree"),
- ParseTree = $__47.ParseTree,
- ParseTreeType = $__47.ParseTreeType;
- var $__47 = System.get("traceur@0.0.32/src/syntax/PredefinedName"),
- BIND = $__47.BIND,
- CALL = $__47.CALL,
- CREATE = $__47.CREATE,
- DEFINE_PROPERTY = $__47.DEFINE_PROPERTY,
- FREEZE = $__47.FREEZE,
- OBJECT = $__47.OBJECT,
- PREVENT_EXTENSIONS = $__47.PREVENT_EXTENSIONS,
- UNDEFINED = $__47.UNDEFINED,
- getParameterName = $__47.getParameterName;
- var Token = System.get("traceur@0.0.32/src/syntax/Token").Token;
- var $__47 = System.get("traceur@0.0.32/src/syntax/TokenType"),
- EQUAL = $__47.EQUAL,
- FALSE = $__47.FALSE,
- NULL = $__47.NULL,
- NUMBER = $__47.NUMBER,
- STRING = $__47.STRING,
- TRUE = $__47.TRUE,
- VOID = $__47.VOID;
- var assert = System.get("traceur@0.0.32/src/util/assert").assert;
- var $__47 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- ArgumentList = $__47.ArgumentList,
- ArrayComprehension = $__47.ArrayComprehension,
- ArrayLiteralExpression = $__47.ArrayLiteralExpression,
- ArrayPattern = $__47.ArrayPattern,
- ArrowFunctionExpression = $__47.ArrowFunctionExpression,
- AwaitStatement = $__47.AwaitStatement,
- BinaryOperator = $__47.BinaryOperator,
- BindingElement = $__47.BindingElement,
- BindingIdentifier = $__47.BindingIdentifier,
- Block = $__47.Block,
- BreakStatement = $__47.BreakStatement,
- CallExpression = $__47.CallExpression,
- CaseClause = $__47.CaseClause,
- Catch = $__47.Catch,
- ClassDeclaration = $__47.ClassDeclaration,
- ClassExpression = $__47.ClassExpression,
- CommaExpression = $__47.CommaExpression,
- ComprehensionFor = $__47.ComprehensionFor,
- ComprehensionIf = $__47.ComprehensionIf,
- ComputedPropertyName = $__47.ComputedPropertyName,
- ConditionalExpression = $__47.ConditionalExpression,
- ContinueStatement = $__47.ContinueStatement,
- CoverFormals = $__47.CoverFormals,
- CoverInitialisedName = $__47.CoverInitialisedName,
- DebuggerStatement = $__47.DebuggerStatement,
- DefaultClause = $__47.DefaultClause,
- DoWhileStatement = $__47.DoWhileStatement,
- EmptyStatement = $__47.EmptyStatement,
- ExportDeclaration = $__47.ExportDeclaration,
- ExportSpecifier = $__47.ExportSpecifier,
- ExportSpecifierSet = $__47.ExportSpecifierSet,
- ExportStar = $__47.ExportStar,
- ExpressionStatement = $__47.ExpressionStatement,
- Finally = $__47.Finally,
- ForInStatement = $__47.ForInStatement,
- ForOfStatement = $__47.ForOfStatement,
- ForStatement = $__47.ForStatement,
- FormalParameter = $__47.FormalParameter,
- FormalParameterList = $__47.FormalParameterList,
- FunctionBody = $__47.FunctionBody,
- FunctionDeclaration = $__47.FunctionDeclaration,
- FunctionExpression = $__47.FunctionExpression,
- GeneratorComprehension = $__47.GeneratorComprehension,
- GetAccessor = $__47.GetAccessor,
- IdentifierExpression = $__47.IdentifierExpression,
- IfStatement = $__47.IfStatement,
- ImportDeclaration = $__47.ImportDeclaration,
- ImportSpecifier = $__47.ImportSpecifier,
- ImportSpecifierSet = $__47.ImportSpecifierSet,
- LabelledStatement = $__47.LabelledStatement,
- LiteralExpression = $__47.LiteralExpression,
- LiteralPropertyName = $__47.LiteralPropertyName,
- MemberExpression = $__47.MemberExpression,
- MemberLookupExpression = $__47.MemberLookupExpression,
- Module = $__47.Module,
- ModuleDeclaration = $__47.ModuleDeclaration,
- ModuleSpecifier = $__47.ModuleSpecifier,
- NamedExport = $__47.NamedExport,
- NewExpression = $__47.NewExpression,
- ObjectLiteralExpression = $__47.ObjectLiteralExpression,
- ObjectPattern = $__47.ObjectPattern,
- ObjectPatternField = $__47.ObjectPatternField,
- ParenExpression = $__47.ParenExpression,
- PostfixExpression = $__47.PostfixExpression,
- PredefinedType = $__47.PredefinedType,
- Script = $__47.Script,
- PropertyMethodAssignment = $__47.PropertyMethodAssignment,
- PropertyNameAssignment = $__47.PropertyNameAssignment,
- PropertyNameShorthand = $__47.PropertyNameShorthand,
- RestParameter = $__47.RestParameter,
- ReturnStatement = $__47.ReturnStatement,
- SetAccessor = $__47.SetAccessor,
- SpreadExpression = $__47.SpreadExpression,
- SpreadPatternElement = $__47.SpreadPatternElement,
- SuperExpression = $__47.SuperExpression,
- SwitchStatement = $__47.SwitchStatement,
- SyntaxErrorTree = $__47.SyntaxErrorTree,
- TemplateLiteralExpression = $__47.TemplateLiteralExpression,
- TemplateLiteralPortion = $__47.TemplateLiteralPortion,
- TemplateSubstitution = $__47.TemplateSubstitution,
- ThisExpression = $__47.ThisExpression,
- ThrowStatement = $__47.ThrowStatement,
- TryStatement = $__47.TryStatement,
- TypeName = $__47.TypeName,
- UnaryExpression = $__47.UnaryExpression,
- VariableDeclaration = $__47.VariableDeclaration,
- VariableDeclarationList = $__47.VariableDeclarationList,
- VariableStatement = $__47.VariableStatement,
- WhileStatement = $__47.WhileStatement,
- WithStatement = $__47.WithStatement,
- YieldExpression = $__47.YieldExpression;
- var slice = Array.prototype.slice.call.bind(Array.prototype.slice);
- var map = Array.prototype.map.call.bind(Array.prototype.map);
- function createOperatorToken(operator) {
- return new Token(operator, null);
- }
- function createIdentifierToken(identifier) {
- return new IdentifierToken(null, identifier);
- }
- function createPropertyNameToken(name) {
- return createIdentifierToken(name);
- }
- function createStringLiteralToken(value) {
- return new LiteralToken(STRING, JSON.stringify(value), null);
- }
- function createBooleanLiteralToken(value) {
- return new Token(value ? TRUE : FALSE, null);
- }
- function createNullLiteralToken() {
- return new LiteralToken(NULL, 'null', null);
- }
- function createNumberLiteralToken(value) {
- return new LiteralToken(NUMBER, String(value), null);
- }
- function createEmptyParameters() {
- return [];
- }
- function createStatementList(statementsOrHead) {
- for (var args = [],
- $__45 = 1; $__45 < arguments.length; $__45++)
- args[$__45 - 1] = arguments[$__45];
- if (statementsOrHead instanceof Array)
- return $traceurRuntime.spread(statementsOrHead, args);
- return slice(arguments);
- }
- function createBindingElement(arg) {
- var binding = createBindingIdentifier(arg);
- return new BindingElement(null, binding, null);
- }
- function createFormalParameter(arg) {
- return new FormalParameter(null, createBindingElement(arg), null, []);
- }
- function createParameterList(arg0, var_args) {
- if (typeof arg0 == 'string') {
- var parameterList = map(arguments, createFormalParameter);
- return new FormalParameterList(null, parameterList);
- }
- if (typeof arg0 == 'number')
- return createParameterListHelper(arg0, false);
- if (arg0 instanceof IdentifierToken) {
- return new FormalParameterList(null, [createFormalParameter(arg0)]);
- }
- var builder = arg0.map(createFormalParameter);
- return new FormalParameterList(null, builder);
- }
- function createParameterListHelper(numberOfParameters, hasRestParams) {
- var builder = [];
- for (var index = 0; index < numberOfParameters; index++) {
- var parameterName = getParameterName(index);
- var isRestParameter = index == numberOfParameters - 1 && hasRestParams;
- builder.push(isRestParameter ? new FormalParameter(null, createRestParameter(parameterName), null, []) : createFormalParameter(parameterName));
- }
- return new FormalParameterList(null, builder);
- }
- function createParameterListWithRestParams(numberOfParameters) {
- return createParameterListHelper(numberOfParameters, true);
- }
- function createParameterReference(index) {
- return createIdentifierExpression(getParameterName(index));
- }
- function createEmptyParameterList() {
- return new FormalParameterList(null, []);
- }
- function createEmptyList() {
- return [];
- }
- function createArgumentList(numberListOrFirst, var_args) {
- if (typeof numberListOrFirst == 'number') {
- return createArgumentListFromParameterList(createParameterList(numberListOrFirst));
- }
- var list;
- if (numberListOrFirst instanceof Array)
- list = numberListOrFirst;
- else
- list = slice(arguments);
- return new ArgumentList(null, list);
- }
- function createArgumentListFromParameterList(formalParameterList) {
- var builder = formalParameterList.parameters.map(function(parameter) {
- if (parameter.isRestParameter()) {
- return createSpreadExpression(createIdentifierExpression(parameter.identifier));
- } else {
- return parameter;
- }
- });
- return new ArgumentList(null, builder);
- }
- function createEmptyArgumentList() {
- return new ArgumentList(null, createEmptyList());
- }
- function createArrayLiteralExpression(list) {
- return new ArrayLiteralExpression(null, list);
- }
- function createEmptyArrayLiteralExpression() {
- return createArrayLiteralExpression(createEmptyList());
- }
- function createArrayPattern(list) {
- return new ArrayPattern(null, list);
- }
- function createAssignmentExpression(lhs, rhs) {
- return new BinaryOperator(null, lhs, createOperatorToken(EQUAL), rhs);
- }
- function createBinaryOperator(left, operator, right) {
- return new BinaryOperator(null, left, operator, right);
- }
- function createBindingIdentifier(identifier) {
- if (typeof identifier === 'string')
- identifier = createIdentifierToken(identifier);
- else if (identifier.type === ParseTreeType.BINDING_IDENTIFIER)
- return identifier;
- else if (identifier.type === ParseTreeType.IDENTIFIER_EXPRESSION)
- return new BindingIdentifier(identifier.location, identifier.identifierToken);
- return new BindingIdentifier(null, identifier);
- }
- function createEmptyStatement() {
- return new EmptyStatement(null);
- }
- function createEmptyBlock() {
- return createBlock(createEmptyList());
- }
- function createBlock(statements) {
- if (statements instanceof ParseTree)
- statements = slice(arguments);
- return new Block(null, statements);
- }
- function createFunctionBody(statements) {
- return new FunctionBody(null, statements);
- }
- function createScopedExpression(body) {
- var scope = arguments[1] !== (void 0) ? arguments[1] : createThisExpression();
- assert(body.type === 'FUNCTION_BODY');
- return createCallCall(createParenExpression(createFunctionExpression(createEmptyParameterList(), body)), scope);
- }
- function createImmediatelyInvokedFunctionExpression(body) {
- assert(body.type === 'FUNCTION_BODY');
- return createCallExpression(createParenExpression(createFunctionExpression(createEmptyParameterList(), body)));
- }
- function createCallExpression(operand) {
- var args = arguments[1] !== (void 0) ? arguments[1] : createEmptyArgumentList();
- return new CallExpression(null, operand, args);
- }
- function createBoundCall(func, thisTree) {
- return createCallExpression(createMemberExpression(func.type == ParseTreeType.FUNCTION_EXPRESSION ? createParenExpression(func) : func, BIND), createArgumentList(thisTree));
- }
- function createBreakStatement() {
- var name = arguments[0] !== (void 0) ? arguments[0] : null;
- return new BreakStatement(null, name);
- }
- function createCallCall(func, thisExpression, args, var_args) {
- var $__48;
- if (args instanceof ParseTree)
- args = slice(arguments, 2);
- var builder = [thisExpression];
- if (args)
- ($__48 = builder).push.apply($__48, $traceurRuntime.toObject(args));
- return createCallExpression(createMemberExpression(func, CALL), createArgumentList(builder));
- }
- function createCallCallStatement(func, thisExpression) {
- for (var args = [],
- $__46 = 2; $__46 < arguments.length; $__46++)
- args[$__46 - 2] = arguments[$__46];
- return createExpressionStatement(createCallCall(func, thisExpression, args));
- }
- function createCaseClause(expression, statements) {
- return new CaseClause(null, expression, statements);
- }
- function createCatch(identifier, catchBody) {
- identifier = createBindingIdentifier(identifier);
- return new Catch(null, identifier, catchBody);
- }
- function createClassDeclaration(name, superClass, elements) {
- return new ClassDeclaration(null, name, superClass, elements, []);
- }
- function createCommaExpression(expressions) {
- return new CommaExpression(null, expressions);
- }
- function createConditionalExpression(condition, left, right) {
- return new ConditionalExpression(null, condition, left, right);
- }
- function createContinueStatement() {
- var name = arguments[0] !== (void 0) ? arguments[0] : null;
- return new ContinueStatement(null, name);
- }
- function createDefaultClause(statements) {
- return new DefaultClause(null, statements);
- }
- function createDoWhileStatement(body, condition) {
- return new DoWhileStatement(null, body, condition);
- }
- function createAssignmentStatement(lhs, rhs) {
- return createExpressionStatement(createAssignmentExpression(lhs, rhs));
- }
- function createCallStatement(operand) {
- var args = arguments[1];
- return createExpressionStatement(createCallExpression(operand, args));
- }
- function createExpressionStatement(expression) {
- return new ExpressionStatement(null, expression);
- }
- function createFinally(block) {
- return new Finally(null, block);
- }
- function createForOfStatement(initialiser, collection, body) {
- return new ForOfStatement(null, initialiser, collection, body);
- }
- function createForInStatement(initialiser, collection, body) {
- return new ForInStatement(null, initialiser, collection, body);
- }
- function createForStatement(variables, condition, increment, body) {
- return new ForStatement(null, variables, condition, increment, body);
- }
- function createFunctionExpression(formalParameterList, body) {
- assert(body.type === 'FUNCTION_BODY');
- return new FunctionExpression(null, null, false, formalParameterList, null, [], body);
- }
- function createGetAccessor(name, body) {
- if (typeof name == 'string')
- name = createPropertyNameToken(name);
- var isStatic = false;
- return new GetAccessor(null, isStatic, name, null, [], body);
- }
- function createIdentifierExpression(identifier) {
- if (typeof identifier == 'string')
- identifier = createIdentifierToken(identifier);
- else if (identifier instanceof BindingIdentifier)
- identifier = identifier.identifierToken;
- return new IdentifierExpression(null, identifier);
- }
- function createUndefinedExpression() {
- return createIdentifierExpression(UNDEFINED);
- }
- function createIfStatement(condition, ifClause) {
- var elseClause = arguments[2] !== (void 0) ? arguments[2] : null;
- return new IfStatement(null, condition, ifClause, elseClause);
- }
- function createLabelledStatement(name, statement) {
- return new LabelledStatement(null, name, statement);
- }
- function createStringLiteral(value) {
- return new LiteralExpression(null, createStringLiteralToken(value));
- }
- function createBooleanLiteral(value) {
- return new LiteralExpression(null, createBooleanLiteralToken(value));
- }
- function createTrueLiteral() {
- return createBooleanLiteral(true);
- }
- function createFalseLiteral() {
- return createBooleanLiteral(false);
- }
- function createNullLiteral() {
- return new LiteralExpression(null, createNullLiteralToken());
- }
- function createNumberLiteral(value) {
- return new LiteralExpression(null, createNumberLiteralToken(value));
- }
- function createMemberExpression(operand, memberName, memberNames) {
- if (typeof operand == 'string' || operand instanceof IdentifierToken)
- operand = createIdentifierExpression(operand);
- if (typeof memberName == 'string')
- memberName = createIdentifierToken(memberName);
- if (memberName instanceof LiteralToken)
- memberName = new LiteralExpression(null, memberName);
- var tree = memberName instanceof LiteralExpression ? new MemberLookupExpression(null, operand, memberName) : new MemberExpression(null, operand, memberName);
- for (var i = 2; i < arguments.length; i++) {
- tree = createMemberExpression(tree, arguments[i]);
- }
- return tree;
- }
- function createMemberLookupExpression(operand, memberExpression) {
- return new MemberLookupExpression(null, operand, memberExpression);
- }
- function createThisExpression() {
- var memberName = arguments[0];
- var result = new ThisExpression(null);
- if (memberName) {
- result = createMemberExpression(result, memberName);
- }
- return result;
- }
- function createNewExpression(operand, args) {
- return new NewExpression(null, operand, args);
- }
- function createObjectFreeze(value) {
- return createCallExpression(createMemberExpression(OBJECT, FREEZE), createArgumentList(value));
- }
- function createObjectPreventExtensions(value) {
- return createCallExpression(createMemberExpression(OBJECT, PREVENT_EXTENSIONS), createArgumentList(value));
- }
- function createObjectCreate(protoExpression, descriptors) {
- var argumentList = [protoExpression];
- if (descriptors)
- argumentList.push(descriptors);
- return createCallExpression(createMemberExpression(OBJECT, CREATE), createArgumentList(argumentList));
- }
- function createPropertyDescriptor(descr) {
- var propertyNameAndValues = Object.keys(descr).map(function(name) {
- var value = descr[name];
- if (!(value instanceof ParseTree))
- value = createBooleanLiteral(!!value);
- return createPropertyNameAssignment(name, value);
- });
- return createObjectLiteralExpression(propertyNameAndValues);
- }
- function createDefineProperty(tree, name, descr) {
- if (typeof name === 'string')
- name = createStringLiteral(name);
- return createCallExpression(createMemberExpression(OBJECT, DEFINE_PROPERTY), createArgumentList(tree, name, createPropertyDescriptor(descr)));
- }
- function createObjectLiteralExpression(propertyNameAndValues) {
- if (propertyNameAndValues instanceof ParseTree)
- propertyNameAndValues = slice(arguments);
- return new ObjectLiteralExpression(null, propertyNameAndValues);
- }
- function createObjectPattern(list) {
- return new ObjectPattern(null, list);
- }
- function createObjectPatternField(identifier, element) {
- identifier = createBindingIdentifier(identifier);
- return new ObjectPatternField(null, identifier, element);
- }
- function createParenExpression(expression) {
- return new ParenExpression(null, expression);
- }
- function createPostfixExpression(operand, operator) {
- return new PostfixExpression(null, operand, operator);
- }
- function createScript(scriptItemList) {
- return new Script(null, scriptItemList);
- }
- function createPropertyNameAssignment(identifier, value) {
- if (typeof identifier == 'string')
- identifier = createLiteralPropertyName(identifier);
- return new PropertyNameAssignment(null, identifier, value);
- }
- function createLiteralPropertyName(name) {
- return new LiteralPropertyName(null, createIdentifierToken(name));
- }
- function createRestParameter(identifier) {
- return new RestParameter(null, createBindingIdentifier(identifier));
- }
- function createReturnStatement(expression) {
- return new ReturnStatement(null, expression);
- }
- function createYieldStatement(expression, isYieldFor) {
- return createExpressionStatement(new YieldExpression(null, expression, isYieldFor));
- }
- function createSetAccessor(name, parameter, body) {
- if (typeof name == 'string')
- name = createPropertyNameToken(name);
- if (typeof parameter == 'string')
- parameter = createIdentifierToken(parameter);
- var isStatic = false;
- return new SetAccessor(null, isStatic, name, parameter, [], body);
- }
- function createSpreadExpression(expression) {
- return new SpreadExpression(null, expression);
- }
- function createSpreadPatternElement(lvalue) {
- return new SpreadPatternElement(null, lvalue);
- }
- function createSwitchStatement(expression, caseClauses) {
- return new SwitchStatement(null, expression, caseClauses);
- }
- function createThrowStatement(value) {
- return new ThrowStatement(null, value);
- }
- function createTryStatement(body, catchBlock) {
- var finallyBlock = arguments[2] !== (void 0) ? arguments[2] : null;
- return new TryStatement(null, body, catchBlock, finallyBlock);
- }
- function createUnaryExpression(operator, operand) {
- return new UnaryExpression(null, operator, operand);
- }
- function createUseStrictDirective() {
- return createExpressionStatement(createStringLiteral('use strict'));
- }
- function createVariableDeclarationList(binding, identifierOrDeclarations, initialiser) {
- if (identifierOrDeclarations instanceof Array) {
- var declarations = identifierOrDeclarations;
- return new VariableDeclarationList(null, binding, declarations);
- }
- var identifier = identifierOrDeclarations;
- return createVariableDeclarationList(binding, [createVariableDeclaration(identifier, initialiser)]);
- }
- function createVariableDeclaration(identifier, initialiser) {
- if (!(identifier instanceof ParseTree) || identifier.type !== ParseTreeType.BINDING_IDENTIFIER && identifier.type !== ParseTreeType.OBJECT_PATTERN && identifier.type !== ParseTreeType.ARRAY_PATTERN) {
- identifier = createBindingIdentifier(identifier);
- }
- return new VariableDeclaration(null, identifier, null, initialiser);
- }
- function createVariableStatement(listOrBinding, identifier, initialiser) {
- if (listOrBinding instanceof VariableDeclarationList)
- return new VariableStatement(null, listOrBinding);
- var binding = listOrBinding;
- var list = createVariableDeclarationList(binding, identifier, initialiser);
- return createVariableStatement(list);
- }
- function createVoid0() {
- return createParenExpression(createUnaryExpression(createOperatorToken(VOID), createNumberLiteral(0)));
- }
- function createWhileStatement(condition, body) {
- return new WhileStatement(null, condition, body);
- }
- function createWithStatement(expression, body) {
- return new WithStatement(null, expression, body);
- }
- function createAssignStateStatement(state) {
- return createAssignmentStatement(createMemberExpression('$ctx', 'state'), createNumberLiteral(state));
- }
- return {
- get createOperatorToken() {
- return createOperatorToken;
- },
- get createIdentifierToken() {
- return createIdentifierToken;
- },
- get createPropertyNameToken() {
- return createPropertyNameToken;
- },
- get createStringLiteralToken() {
- return createStringLiteralToken;
- },
- get createBooleanLiteralToken() {
- return createBooleanLiteralToken;
- },
- get createNullLiteralToken() {
- return createNullLiteralToken;
- },
- get createNumberLiteralToken() {
- return createNumberLiteralToken;
- },
- get createEmptyParameters() {
- return createEmptyParameters;
- },
- get createStatementList() {
- return createStatementList;
- },
- get createBindingElement() {
- return createBindingElement;
- },
- get createFormalParameter() {
- return createFormalParameter;
- },
- get createParameterList() {
- return createParameterList;
- },
- get createParameterListWithRestParams() {
- return createParameterListWithRestParams;
- },
- get createParameterReference() {
- return createParameterReference;
- },
- get createEmptyParameterList() {
- return createEmptyParameterList;
- },
- get createEmptyList() {
- return createEmptyList;
- },
- get createArgumentList() {
- return createArgumentList;
- },
- get createArgumentListFromParameterList() {
- return createArgumentListFromParameterList;
- },
- get createEmptyArgumentList() {
- return createEmptyArgumentList;
- },
- get createArrayLiteralExpression() {
- return createArrayLiteralExpression;
- },
- get createEmptyArrayLiteralExpression() {
- return createEmptyArrayLiteralExpression;
- },
- get createArrayPattern() {
- return createArrayPattern;
- },
- get createAssignmentExpression() {
- return createAssignmentExpression;
- },
- get createBinaryOperator() {
- return createBinaryOperator;
- },
- get createBindingIdentifier() {
- return createBindingIdentifier;
- },
- get createEmptyStatement() {
- return createEmptyStatement;
- },
- get createEmptyBlock() {
- return createEmptyBlock;
- },
- get createBlock() {
- return createBlock;
- },
- get createFunctionBody() {
- return createFunctionBody;
- },
- get createScopedExpression() {
- return createScopedExpression;
- },
- get createImmediatelyInvokedFunctionExpression() {
- return createImmediatelyInvokedFunctionExpression;
- },
- get createCallExpression() {
- return createCallExpression;
- },
- get createBoundCall() {
- return createBoundCall;
- },
- get createBreakStatement() {
- return createBreakStatement;
- },
- get createCallCall() {
- return createCallCall;
- },
- get createCallCallStatement() {
- return createCallCallStatement;
- },
- get createCaseClause() {
- return createCaseClause;
- },
- get createCatch() {
- return createCatch;
- },
- get createClassDeclaration() {
- return createClassDeclaration;
- },
- get createCommaExpression() {
- return createCommaExpression;
- },
- get createConditionalExpression() {
- return createConditionalExpression;
- },
- get createContinueStatement() {
- return createContinueStatement;
- },
- get createDefaultClause() {
- return createDefaultClause;
- },
- get createDoWhileStatement() {
- return createDoWhileStatement;
- },
- get createAssignmentStatement() {
- return createAssignmentStatement;
- },
- get createCallStatement() {
- return createCallStatement;
- },
- get createExpressionStatement() {
- return createExpressionStatement;
- },
- get createFinally() {
- return createFinally;
- },
- get createForOfStatement() {
- return createForOfStatement;
- },
- get createForInStatement() {
- return createForInStatement;
- },
- get createForStatement() {
- return createForStatement;
- },
- get createFunctionExpression() {
- return createFunctionExpression;
- },
- get createGetAccessor() {
- return createGetAccessor;
- },
- get createIdentifierExpression() {
- return createIdentifierExpression;
- },
- get createUndefinedExpression() {
- return createUndefinedExpression;
- },
- get createIfStatement() {
- return createIfStatement;
- },
- get createLabelledStatement() {
- return createLabelledStatement;
- },
- get createStringLiteral() {
- return createStringLiteral;
- },
- get createBooleanLiteral() {
- return createBooleanLiteral;
- },
- get createTrueLiteral() {
- return createTrueLiteral;
- },
- get createFalseLiteral() {
- return createFalseLiteral;
- },
- get createNullLiteral() {
- return createNullLiteral;
- },
- get createNumberLiteral() {
- return createNumberLiteral;
- },
- get createMemberExpression() {
- return createMemberExpression;
- },
- get createMemberLookupExpression() {
- return createMemberLookupExpression;
- },
- get createThisExpression() {
- return createThisExpression;
- },
- get createNewExpression() {
- return createNewExpression;
- },
- get createObjectFreeze() {
- return createObjectFreeze;
- },
- get createObjectPreventExtensions() {
- return createObjectPreventExtensions;
- },
- get createObjectCreate() {
- return createObjectCreate;
- },
- get createPropertyDescriptor() {
- return createPropertyDescriptor;
- },
- get createDefineProperty() {
- return createDefineProperty;
- },
- get createObjectLiteralExpression() {
- return createObjectLiteralExpression;
- },
- get createObjectPattern() {
- return createObjectPattern;
- },
- get createObjectPatternField() {
- return createObjectPatternField;
- },
- get createParenExpression() {
- return createParenExpression;
- },
- get createPostfixExpression() {
- return createPostfixExpression;
- },
- get createScript() {
- return createScript;
- },
- get createPropertyNameAssignment() {
- return createPropertyNameAssignment;
- },
- get createLiteralPropertyName() {
- return createLiteralPropertyName;
- },
- get createRestParameter() {
- return createRestParameter;
- },
- get createReturnStatement() {
- return createReturnStatement;
- },
- get createYieldStatement() {
- return createYieldStatement;
- },
- get createSetAccessor() {
- return createSetAccessor;
- },
- get createSpreadExpression() {
- return createSpreadExpression;
- },
- get createSpreadPatternElement() {
- return createSpreadPatternElement;
- },
- get createSwitchStatement() {
- return createSwitchStatement;
- },
- get createThrowStatement() {
- return createThrowStatement;
- },
- get createTryStatement() {
- return createTryStatement;
- },
- get createUnaryExpression() {
- return createUnaryExpression;
- },
- get createUseStrictDirective() {
- return createUseStrictDirective;
- },
- get createVariableDeclarationList() {
- return createVariableDeclarationList;
- },
- get createVariableDeclaration() {
- return createVariableDeclaration;
- },
- get createVariableStatement() {
- return createVariableStatement;
- },
- get createVoid0() {
- return createVoid0;
- },
- get createWhileStatement() {
- return createWhileStatement;
- },
- get createWithStatement() {
- return createWithStatement;
- },
- get createAssignStateStatement() {
- return createAssignStateStatement;
- }
- };
-});
-System.register("traceur@0.0.32/src/codegeneration/ParseTreeTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/ParseTreeTransformer";
- var $__50 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- Annotation = $__50.Annotation,
- AnonBlock = $__50.AnonBlock,
- ArgumentList = $__50.ArgumentList,
- ArrayComprehension = $__50.ArrayComprehension,
- ArrayLiteralExpression = $__50.ArrayLiteralExpression,
- ArrayPattern = $__50.ArrayPattern,
- ArrowFunctionExpression = $__50.ArrowFunctionExpression,
- AwaitStatement = $__50.AwaitStatement,
- BinaryOperator = $__50.BinaryOperator,
- BindingElement = $__50.BindingElement,
- BindingIdentifier = $__50.BindingIdentifier,
- Block = $__50.Block,
- BreakStatement = $__50.BreakStatement,
- CallExpression = $__50.CallExpression,
- CaseClause = $__50.CaseClause,
- Catch = $__50.Catch,
- ClassDeclaration = $__50.ClassDeclaration,
- ClassExpression = $__50.ClassExpression,
- CommaExpression = $__50.CommaExpression,
- ComprehensionFor = $__50.ComprehensionFor,
- ComprehensionIf = $__50.ComprehensionIf,
- ComputedPropertyName = $__50.ComputedPropertyName,
- ConditionalExpression = $__50.ConditionalExpression,
- ContinueStatement = $__50.ContinueStatement,
- CoverFormals = $__50.CoverFormals,
- CoverInitialisedName = $__50.CoverInitialisedName,
- DebuggerStatement = $__50.DebuggerStatement,
- DefaultClause = $__50.DefaultClause,
- DoWhileStatement = $__50.DoWhileStatement,
- EmptyStatement = $__50.EmptyStatement,
- ExportDeclaration = $__50.ExportDeclaration,
- ExportDefault = $__50.ExportDefault,
- ExportSpecifier = $__50.ExportSpecifier,
- ExportSpecifierSet = $__50.ExportSpecifierSet,
- ExportStar = $__50.ExportStar,
- ExpressionStatement = $__50.ExpressionStatement,
- Finally = $__50.Finally,
- ForInStatement = $__50.ForInStatement,
- ForOfStatement = $__50.ForOfStatement,
- ForStatement = $__50.ForStatement,
- FormalParameter = $__50.FormalParameter,
- FormalParameterList = $__50.FormalParameterList,
- FunctionBody = $__50.FunctionBody,
- FunctionDeclaration = $__50.FunctionDeclaration,
- FunctionExpression = $__50.FunctionExpression,
- GeneratorComprehension = $__50.GeneratorComprehension,
- GetAccessor = $__50.GetAccessor,
- IdentifierExpression = $__50.IdentifierExpression,
- IfStatement = $__50.IfStatement,
- ImportedBinding = $__50.ImportedBinding,
- ImportDeclaration = $__50.ImportDeclaration,
- ImportSpecifier = $__50.ImportSpecifier,
- ImportSpecifierSet = $__50.ImportSpecifierSet,
- LabelledStatement = $__50.LabelledStatement,
- LiteralExpression = $__50.LiteralExpression,
- LiteralPropertyName = $__50.LiteralPropertyName,
- MemberExpression = $__50.MemberExpression,
- MemberLookupExpression = $__50.MemberLookupExpression,
- Module = $__50.Module,
- ModuleDeclaration = $__50.ModuleDeclaration,
- ModuleSpecifier = $__50.ModuleSpecifier,
- NamedExport = $__50.NamedExport,
- NewExpression = $__50.NewExpression,
- ObjectLiteralExpression = $__50.ObjectLiteralExpression,
- ObjectPattern = $__50.ObjectPattern,
- ObjectPatternField = $__50.ObjectPatternField,
- ParenExpression = $__50.ParenExpression,
- PostfixExpression = $__50.PostfixExpression,
- PredefinedType = $__50.PredefinedType,
- Script = $__50.Script,
- PropertyMethodAssignment = $__50.PropertyMethodAssignment,
- PropertyNameAssignment = $__50.PropertyNameAssignment,
- PropertyNameShorthand = $__50.PropertyNameShorthand,
- RestParameter = $__50.RestParameter,
- ReturnStatement = $__50.ReturnStatement,
- SetAccessor = $__50.SetAccessor,
- SpreadExpression = $__50.SpreadExpression,
- SpreadPatternElement = $__50.SpreadPatternElement,
- SuperExpression = $__50.SuperExpression,
- SwitchStatement = $__50.SwitchStatement,
- SyntaxErrorTree = $__50.SyntaxErrorTree,
- TemplateLiteralExpression = $__50.TemplateLiteralExpression,
- TemplateLiteralPortion = $__50.TemplateLiteralPortion,
- TemplateSubstitution = $__50.TemplateSubstitution,
- ThisExpression = $__50.ThisExpression,
- ThrowStatement = $__50.ThrowStatement,
- TryStatement = $__50.TryStatement,
- TypeName = $__50.TypeName,
- UnaryExpression = $__50.UnaryExpression,
- VariableDeclaration = $__50.VariableDeclaration,
- VariableDeclarationList = $__50.VariableDeclarationList,
- VariableStatement = $__50.VariableStatement,
- WhileStatement = $__50.WhileStatement,
- WithStatement = $__50.WithStatement,
- YieldExpression = $__50.YieldExpression;
- var ParseTreeTransformer = function ParseTreeTransformer() {};
- ($traceurRuntime.createClass)(ParseTreeTransformer, {
- transformAny: function(tree) {
- return tree && tree.transform(this);
- },
- transformList: function(list) {
- var $__51;
- var builder = null;
- for (var index = 0; index < list.length; index++) {
- var element = list[index];
- var transformed = this.transformAny(element);
- if (builder != null || element != transformed) {
- if (builder == null) {
- builder = list.slice(0, index);
- }
- if (transformed instanceof AnonBlock)
- ($__51 = builder).push.apply($__51, $traceurRuntime.toObject(transformed.statements));
- else
- builder.push(transformed);
- }
- }
- return builder || list;
- },
- transformStateMachine: function(tree) {
- throw Error('State machines should not live outside of the GeneratorTransformer.');
- },
- transformAnnotation: function(tree) {
- var name = this.transformAny(tree.name);
- var args = this.transformAny(tree.args);
- if (name === tree.name && args === tree.args) {
- return tree;
- }
- return new Annotation(tree.location, name, args);
- },
- transformAnonBlock: function(tree) {
- var statements = this.transformList(tree.statements);
- if (statements === tree.statements) {
- return tree;
- }
- return new AnonBlock(tree.location, statements);
- },
- transformArgumentList: function(tree) {
- var args = this.transformList(tree.args);
- if (args === tree.args) {
- return tree;
- }
- return new ArgumentList(tree.location, args);
- },
- transformArrayComprehension: function(tree) {
- var comprehensionList = this.transformList(tree.comprehensionList);
- var expression = this.transformAny(tree.expression);
- if (comprehensionList === tree.comprehensionList && expression === tree.expression) {
- return tree;
- }
- return new ArrayComprehension(tree.location, comprehensionList, expression);
- },
- transformArrayLiteralExpression: function(tree) {
- var elements = this.transformList(tree.elements);
- if (elements === tree.elements) {
- return tree;
- }
- return new ArrayLiteralExpression(tree.location, elements);
- },
- transformArrayPattern: function(tree) {
- var elements = this.transformList(tree.elements);
- if (elements === tree.elements) {
- return tree;
- }
- return new ArrayPattern(tree.location, elements);
- },
- transformArrowFunctionExpression: function(tree) {
- var formalParameters = this.transformAny(tree.formalParameters);
- var functionBody = this.transformAny(tree.functionBody);
- if (formalParameters === tree.formalParameters && functionBody === tree.functionBody) {
- return tree;
- }
- return new ArrowFunctionExpression(tree.location, formalParameters, functionBody);
- },
- transformAwaitStatement: function(tree) {
- var expression = this.transformAny(tree.expression);
- if (expression === tree.expression) {
- return tree;
- }
- return new AwaitStatement(tree.location, tree.identifier, expression);
- },
- transformBinaryOperator: function(tree) {
- var left = this.transformAny(tree.left);
- var right = this.transformAny(tree.right);
- if (left === tree.left && right === tree.right) {
- return tree;
- }
- return new BinaryOperator(tree.location, left, tree.operator, right);
- },
- transformBindingElement: function(tree) {
- var binding = this.transformAny(tree.binding);
- var initialiser = this.transformAny(tree.initialiser);
- if (binding === tree.binding && initialiser === tree.initialiser) {
- return tree;
- }
- return new BindingElement(tree.location, binding, initialiser);
- },
- transformBindingIdentifier: function(tree) {
- return tree;
- },
- transformBlock: function(tree) {
- var statements = this.transformList(tree.statements);
- if (statements === tree.statements) {
- return tree;
- }
- return new Block(tree.location, statements);
- },
- transformBreakStatement: function(tree) {
- return tree;
- },
- transformCallExpression: function(tree) {
- var operand = this.transformAny(tree.operand);
- var args = this.transformAny(tree.args);
- if (operand === tree.operand && args === tree.args) {
- return tree;
- }
- return new CallExpression(tree.location, operand, args);
- },
- transformCaseClause: function(tree) {
- var expression = this.transformAny(tree.expression);
- var statements = this.transformList(tree.statements);
- if (expression === tree.expression && statements === tree.statements) {
- return tree;
- }
- return new CaseClause(tree.location, expression, statements);
- },
- transformCatch: function(tree) {
- var binding = this.transformAny(tree.binding);
- var catchBody = this.transformAny(tree.catchBody);
- if (binding === tree.binding && catchBody === tree.catchBody) {
- return tree;
- }
- return new Catch(tree.location, binding, catchBody);
- },
- transformClassDeclaration: function(tree) {
- var name = this.transformAny(tree.name);
- var superClass = this.transformAny(tree.superClass);
- var elements = this.transformList(tree.elements);
- var annotations = this.transformList(tree.annotations);
- if (name === tree.name && superClass === tree.superClass && elements === tree.elements && annotations === tree.annotations) {
- return tree;
- }
- return new ClassDeclaration(tree.location, name, superClass, elements, annotations);
- },
- transformClassExpression: function(tree) {
- var name = this.transformAny(tree.name);
- var superClass = this.transformAny(tree.superClass);
- var elements = this.transformList(tree.elements);
- var annotations = this.transformList(tree.annotations);
- if (name === tree.name && superClass === tree.superClass && elements === tree.elements && annotations === tree.annotations) {
- return tree;
- }
- return new ClassExpression(tree.location, name, superClass, elements, annotations);
- },
- transformCommaExpression: function(tree) {
- var expressions = this.transformList(tree.expressions);
- if (expressions === tree.expressions) {
- return tree;
- }
- return new CommaExpression(tree.location, expressions);
- },
- transformComprehensionFor: function(tree) {
- var left = this.transformAny(tree.left);
- var iterator = this.transformAny(tree.iterator);
- if (left === tree.left && iterator === tree.iterator) {
- return tree;
- }
- return new ComprehensionFor(tree.location, left, iterator);
- },
- transformComprehensionIf: function(tree) {
- var expression = this.transformAny(tree.expression);
- if (expression === tree.expression) {
- return tree;
- }
- return new ComprehensionIf(tree.location, expression);
- },
- transformComputedPropertyName: function(tree) {
- var expression = this.transformAny(tree.expression);
- if (expression === tree.expression) {
- return tree;
- }
- return new ComputedPropertyName(tree.location, expression);
- },
- transformConditionalExpression: function(tree) {
- var condition = this.transformAny(tree.condition);
- var left = this.transformAny(tree.left);
- var right = this.transformAny(tree.right);
- if (condition === tree.condition && left === tree.left && right === tree.right) {
- return tree;
- }
- return new ConditionalExpression(tree.location, condition, left, right);
- },
- transformContinueStatement: function(tree) {
- return tree;
- },
- transformCoverFormals: function(tree) {
- var expressions = this.transformList(tree.expressions);
- if (expressions === tree.expressions) {
- return tree;
- }
- return new CoverFormals(tree.location, expressions);
- },
- transformCoverInitialisedName: function(tree) {
- var initialiser = this.transformAny(tree.initialiser);
- if (initialiser === tree.initialiser) {
- return tree;
- }
- return new CoverInitialisedName(tree.location, tree.name, tree.equalToken, initialiser);
- },
- transformDebuggerStatement: function(tree) {
- return tree;
- },
- transformDefaultClause: function(tree) {
- var statements = this.transformList(tree.statements);
- if (statements === tree.statements) {
- return tree;
- }
- return new DefaultClause(tree.location, statements);
- },
- transformDoWhileStatement: function(tree) {
- var body = this.transformAny(tree.body);
- var condition = this.transformAny(tree.condition);
- if (body === tree.body && condition === tree.condition) {
- return tree;
- }
- return new DoWhileStatement(tree.location, body, condition);
- },
- transformEmptyStatement: function(tree) {
- return tree;
- },
- transformExportDeclaration: function(tree) {
- var declaration = this.transformAny(tree.declaration);
- var annotations = this.transformList(tree.annotations);
- if (declaration === tree.declaration && annotations === tree.annotations) {
- return tree;
- }
- return new ExportDeclaration(tree.location, declaration, annotations);
- },
- transformExportDefault: function(tree) {
- var expression = this.transformAny(tree.expression);
- if (expression === tree.expression) {
- return tree;
- }
- return new ExportDefault(tree.location, expression);
- },
- transformExportSpecifier: function(tree) {
- return tree;
- },
- transformExportSpecifierSet: function(tree) {
- var specifiers = this.transformList(tree.specifiers);
- if (specifiers === tree.specifiers) {
- return tree;
- }
- return new ExportSpecifierSet(tree.location, specifiers);
- },
- transformExportStar: function(tree) {
- return tree;
- },
- transformExpressionStatement: function(tree) {
- var expression = this.transformAny(tree.expression);
- if (expression === tree.expression) {
- return tree;
- }
- return new ExpressionStatement(tree.location, expression);
- },
- transformFinally: function(tree) {
- var block = this.transformAny(tree.block);
- if (block === tree.block) {
- return tree;
- }
- return new Finally(tree.location, block);
- },
- transformForInStatement: function(tree) {
- var initialiser = this.transformAny(tree.initialiser);
- var collection = this.transformAny(tree.collection);
- var body = this.transformAny(tree.body);
- if (initialiser === tree.initialiser && collection === tree.collection && body === tree.body) {
- return tree;
- }
- return new ForInStatement(tree.location, initialiser, collection, body);
- },
- transformForOfStatement: function(tree) {
- var initialiser = this.transformAny(tree.initialiser);
- var collection = this.transformAny(tree.collection);
- var body = this.transformAny(tree.body);
- if (initialiser === tree.initialiser && collection === tree.collection && body === tree.body) {
- return tree;
- }
- return new ForOfStatement(tree.location, initialiser, collection, body);
- },
- transformForStatement: function(tree) {
- var initialiser = this.transformAny(tree.initialiser);
- var condition = this.transformAny(tree.condition);
- var increment = this.transformAny(tree.increment);
- var body = this.transformAny(tree.body);
- if (initialiser === tree.initialiser && condition === tree.condition && increment === tree.increment && body === tree.body) {
- return tree;
- }
- return new ForStatement(tree.location, initialiser, condition, increment, body);
- },
- transformFormalParameter: function(tree) {
- var parameter = this.transformAny(tree.parameter);
- var typeAnnotation = this.transformAny(tree.typeAnnotation);
- var annotations = this.transformList(tree.annotations);
- if (parameter === tree.parameter && typeAnnotation === tree.typeAnnotation && annotations === tree.annotations) {
- return tree;
- }
- return new FormalParameter(tree.location, parameter, typeAnnotation, annotations);
- },
- transformFormalParameterList: function(tree) {
- var parameters = this.transformList(tree.parameters);
- if (parameters === tree.parameters) {
- return tree;
- }
- return new FormalParameterList(tree.location, parameters);
- },
- transformFunctionBody: function(tree) {
- var statements = this.transformList(tree.statements);
- if (statements === tree.statements) {
- return tree;
- }
- return new FunctionBody(tree.location, statements);
- },
- transformFunctionDeclaration: function(tree) {
- var name = this.transformAny(tree.name);
- var formalParameterList = this.transformAny(tree.formalParameterList);
- var typeAnnotation = this.transformAny(tree.typeAnnotation);
- var annotations = this.transformList(tree.annotations);
- var functionBody = this.transformAny(tree.functionBody);
- if (name === tree.name && formalParameterList === tree.formalParameterList && typeAnnotation === tree.typeAnnotation && annotations === tree.annotations && functionBody === tree.functionBody) {
- return tree;
- }
- return new FunctionDeclaration(tree.location, name, tree.isGenerator, formalParameterList, typeAnnotation, annotations, functionBody);
- },
- transformFunctionExpression: function(tree) {
- var name = this.transformAny(tree.name);
- var formalParameterList = this.transformAny(tree.formalParameterList);
- var typeAnnotation = this.transformAny(tree.typeAnnotation);
- var annotations = this.transformList(tree.annotations);
- var functionBody = this.transformAny(tree.functionBody);
- if (name === tree.name && formalParameterList === tree.formalParameterList && typeAnnotation === tree.typeAnnotation && annotations === tree.annotations && functionBody === tree.functionBody) {
- return tree;
- }
- return new FunctionExpression(tree.location, name, tree.isGenerator, formalParameterList, typeAnnotation, annotations, functionBody);
- },
- transformGeneratorComprehension: function(tree) {
- var comprehensionList = this.transformList(tree.comprehensionList);
- var expression = this.transformAny(tree.expression);
- if (comprehensionList === tree.comprehensionList && expression === tree.expression) {
- return tree;
- }
- return new GeneratorComprehension(tree.location, comprehensionList, expression);
- },
- transformGetAccessor: function(tree) {
- var name = this.transformAny(tree.name);
- var typeAnnotation = this.transformAny(tree.typeAnnotation);
- var annotations = this.transformList(tree.annotations);
- var body = this.transformAny(tree.body);
- if (name === tree.name && typeAnnotation === tree.typeAnnotation && annotations === tree.annotations && body === tree.body) {
- return tree;
- }
- return new GetAccessor(tree.location, tree.isStatic, name, typeAnnotation, annotations, body);
- },
- transformIdentifierExpression: function(tree) {
- return tree;
- },
- transformIfStatement: function(tree) {
- var condition = this.transformAny(tree.condition);
- var ifClause = this.transformAny(tree.ifClause);
- var elseClause = this.transformAny(tree.elseClause);
- if (condition === tree.condition && ifClause === tree.ifClause && elseClause === tree.elseClause) {
- return tree;
- }
- return new IfStatement(tree.location, condition, ifClause, elseClause);
- },
- transformImportedBinding: function(tree) {
- var binding = this.transformAny(tree.binding);
- if (binding === tree.binding) {
- return tree;
- }
- return new ImportedBinding(tree.location, binding);
- },
- transformImportDeclaration: function(tree) {
- var importClause = this.transformAny(tree.importClause);
- var moduleSpecifier = this.transformAny(tree.moduleSpecifier);
- if (importClause === tree.importClause && moduleSpecifier === tree.moduleSpecifier) {
- return tree;
- }
- return new ImportDeclaration(tree.location, importClause, moduleSpecifier);
- },
- transformImportSpecifier: function(tree) {
- return tree;
- },
- transformImportSpecifierSet: function(tree) {
- var specifiers = this.transformList(tree.specifiers);
- if (specifiers === tree.specifiers) {
- return tree;
- }
- return new ImportSpecifierSet(tree.location, specifiers);
- },
- transformLabelledStatement: function(tree) {
- var statement = this.transformAny(tree.statement);
- if (statement === tree.statement) {
- return tree;
- }
- return new LabelledStatement(tree.location, tree.name, statement);
- },
- transformLiteralExpression: function(tree) {
- return tree;
- },
- transformLiteralPropertyName: function(tree) {
- return tree;
- },
- transformMemberExpression: function(tree) {
- var operand = this.transformAny(tree.operand);
- if (operand === tree.operand) {
- return tree;
- }
- return new MemberExpression(tree.location, operand, tree.memberName);
- },
- transformMemberLookupExpression: function(tree) {
- var operand = this.transformAny(tree.operand);
- var memberExpression = this.transformAny(tree.memberExpression);
- if (operand === tree.operand && memberExpression === tree.memberExpression) {
- return tree;
- }
- return new MemberLookupExpression(tree.location, operand, memberExpression);
- },
- transformModule: function(tree) {
- var scriptItemList = this.transformList(tree.scriptItemList);
- if (scriptItemList === tree.scriptItemList) {
- return tree;
- }
- return new Module(tree.location, scriptItemList, tree.moduleName);
- },
- transformModuleDeclaration: function(tree) {
- var expression = this.transformAny(tree.expression);
- if (expression === tree.expression) {
- return tree;
- }
- return new ModuleDeclaration(tree.location, tree.identifier, expression);
- },
- transformModuleSpecifier: function(tree) {
- return tree;
- },
- transformNamedExport: function(tree) {
- var moduleSpecifier = this.transformAny(tree.moduleSpecifier);
- var specifierSet = this.transformAny(tree.specifierSet);
- if (moduleSpecifier === tree.moduleSpecifier && specifierSet === tree.specifierSet) {
- return tree;
- }
- return new NamedExport(tree.location, moduleSpecifier, specifierSet);
- },
- transformNewExpression: function(tree) {
- var operand = this.transformAny(tree.operand);
- var args = this.transformAny(tree.args);
- if (operand === tree.operand && args === tree.args) {
- return tree;
- }
- return new NewExpression(tree.location, operand, args);
- },
- transformObjectLiteralExpression: function(tree) {
- var propertyNameAndValues = this.transformList(tree.propertyNameAndValues);
- if (propertyNameAndValues === tree.propertyNameAndValues) {
- return tree;
- }
- return new ObjectLiteralExpression(tree.location, propertyNameAndValues);
- },
- transformObjectPattern: function(tree) {
- var fields = this.transformList(tree.fields);
- if (fields === tree.fields) {
- return tree;
- }
- return new ObjectPattern(tree.location, fields);
- },
- transformObjectPatternField: function(tree) {
- var name = this.transformAny(tree.name);
- var element = this.transformAny(tree.element);
- if (name === tree.name && element === tree.element) {
- return tree;
- }
- return new ObjectPatternField(tree.location, name, element);
- },
- transformParenExpression: function(tree) {
- var expression = this.transformAny(tree.expression);
- if (expression === tree.expression) {
- return tree;
- }
- return new ParenExpression(tree.location, expression);
- },
- transformPostfixExpression: function(tree) {
- var operand = this.transformAny(tree.operand);
- if (operand === tree.operand) {
- return tree;
- }
- return new PostfixExpression(tree.location, operand, tree.operator);
- },
- transformPredefinedType: function(tree) {
- return tree;
- },
- transformScript: function(tree) {
- var scriptItemList = this.transformList(tree.scriptItemList);
- if (scriptItemList === tree.scriptItemList) {
- return tree;
- }
- return new Script(tree.location, scriptItemList, tree.moduleName);
- },
- transformPropertyMethodAssignment: function(tree) {
- var name = this.transformAny(tree.name);
- var formalParameterList = this.transformAny(tree.formalParameterList);
- var typeAnnotation = this.transformAny(tree.typeAnnotation);
- var annotations = this.transformList(tree.annotations);
- var functionBody = this.transformAny(tree.functionBody);
- if (name === tree.name && formalParameterList === tree.formalParameterList && typeAnnotation === tree.typeAnnotation && annotations === tree.annotations && functionBody === tree.functionBody) {
- return tree;
- }
- return new PropertyMethodAssignment(tree.location, tree.isStatic, tree.isGenerator, name, formalParameterList, typeAnnotation, annotations, functionBody);
- },
- transformPropertyNameAssignment: function(tree) {
- var name = this.transformAny(tree.name);
- var value = this.transformAny(tree.value);
- if (name === tree.name && value === tree.value) {
- return tree;
- }
- return new PropertyNameAssignment(tree.location, name, value);
- },
- transformPropertyNameShorthand: function(tree) {
- return tree;
- },
- transformRestParameter: function(tree) {
- var identifier = this.transformAny(tree.identifier);
- if (identifier === tree.identifier) {
- return tree;
- }
- return new RestParameter(tree.location, identifier);
- },
- transformReturnStatement: function(tree) {
- var expression = this.transformAny(tree.expression);
- if (expression === tree.expression) {
- return tree;
- }
- return new ReturnStatement(tree.location, expression);
- },
- transformSetAccessor: function(tree) {
- var name = this.transformAny(tree.name);
- var parameter = this.transformAny(tree.parameter);
- var annotations = this.transformList(tree.annotations);
- var body = this.transformAny(tree.body);
- if (name === tree.name && parameter === tree.parameter && annotations === tree.annotations && body === tree.body) {
- return tree;
- }
- return new SetAccessor(tree.location, tree.isStatic, name, parameter, annotations, body);
- },
- transformSpreadExpression: function(tree) {
- var expression = this.transformAny(tree.expression);
- if (expression === tree.expression) {
- return tree;
- }
- return new SpreadExpression(tree.location, expression);
- },
- transformSpreadPatternElement: function(tree) {
- var lvalue = this.transformAny(tree.lvalue);
- if (lvalue === tree.lvalue) {
- return tree;
- }
- return new SpreadPatternElement(tree.location, lvalue);
- },
- transformSuperExpression: function(tree) {
- return tree;
- },
- transformSwitchStatement: function(tree) {
- var expression = this.transformAny(tree.expression);
- var caseClauses = this.transformList(tree.caseClauses);
- if (expression === tree.expression && caseClauses === tree.caseClauses) {
- return tree;
- }
- return new SwitchStatement(tree.location, expression, caseClauses);
- },
- transformSyntaxErrorTree: function(tree) {
- return tree;
- },
- transformTemplateLiteralExpression: function(tree) {
- var operand = this.transformAny(tree.operand);
- var elements = this.transformList(tree.elements);
- if (operand === tree.operand && elements === tree.elements) {
- return tree;
- }
- return new TemplateLiteralExpression(tree.location, operand, elements);
- },
- transformTemplateLiteralPortion: function(tree) {
- return tree;
- },
- transformTemplateSubstitution: function(tree) {
- var expression = this.transformAny(tree.expression);
- if (expression === tree.expression) {
- return tree;
- }
- return new TemplateSubstitution(tree.location, expression);
- },
- transformThisExpression: function(tree) {
- return tree;
- },
- transformThrowStatement: function(tree) {
- var value = this.transformAny(tree.value);
- if (value === tree.value) {
- return tree;
- }
- return new ThrowStatement(tree.location, value);
- },
- transformTryStatement: function(tree) {
- var body = this.transformAny(tree.body);
- var catchBlock = this.transformAny(tree.catchBlock);
- var finallyBlock = this.transformAny(tree.finallyBlock);
- if (body === tree.body && catchBlock === tree.catchBlock && finallyBlock === tree.finallyBlock) {
- return tree;
- }
- return new TryStatement(tree.location, body, catchBlock, finallyBlock);
- },
- transformTypeName: function(tree) {
- var moduleName = this.transformAny(tree.moduleName);
- if (moduleName === tree.moduleName) {
- return tree;
- }
- return new TypeName(tree.location, moduleName, tree.name);
- },
- transformUnaryExpression: function(tree) {
- var operand = this.transformAny(tree.operand);
- if (operand === tree.operand) {
- return tree;
- }
- return new UnaryExpression(tree.location, tree.operator, operand);
- },
- transformVariableDeclaration: function(tree) {
- var lvalue = this.transformAny(tree.lvalue);
- var typeAnnotation = this.transformAny(tree.typeAnnotation);
- var initialiser = this.transformAny(tree.initialiser);
- if (lvalue === tree.lvalue && typeAnnotation === tree.typeAnnotation && initialiser === tree.initialiser) {
- return tree;
- }
- return new VariableDeclaration(tree.location, lvalue, typeAnnotation, initialiser);
- },
- transformVariableDeclarationList: function(tree) {
- var declarations = this.transformList(tree.declarations);
- if (declarations === tree.declarations) {
- return tree;
- }
- return new VariableDeclarationList(tree.location, tree.declarationType, declarations);
- },
- transformVariableStatement: function(tree) {
- var declarations = this.transformAny(tree.declarations);
- if (declarations === tree.declarations) {
- return tree;
- }
- return new VariableStatement(tree.location, declarations);
- },
- transformWhileStatement: function(tree) {
- var condition = this.transformAny(tree.condition);
- var body = this.transformAny(tree.body);
- if (condition === tree.condition && body === tree.body) {
- return tree;
- }
- return new WhileStatement(tree.location, condition, body);
- },
- transformWithStatement: function(tree) {
- var expression = this.transformAny(tree.expression);
- var body = this.transformAny(tree.body);
- if (expression === tree.expression && body === tree.body) {
- return tree;
- }
- return new WithStatement(tree.location, expression, body);
- },
- transformYieldExpression: function(tree) {
- var expression = this.transformAny(tree.expression);
- if (expression === tree.expression) {
- return tree;
- }
- return new YieldExpression(tree.location, expression, tree.isYieldFor);
- }
- }, {});
- return {get ParseTreeTransformer() {
- return ParseTreeTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/AssignmentPatternTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/AssignmentPatternTransformer";
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var $__53 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- ArrayPattern = $__53.ArrayPattern,
- BindingElement = $__53.BindingElement,
- BindingIdentifier = $__53.BindingIdentifier,
- IdentifierExpression = $__53.IdentifierExpression,
- ObjectPattern = $__53.ObjectPattern,
- ObjectPatternField = $__53.ObjectPatternField,
- SpreadPatternElement = $__53.SpreadPatternElement;
- var EQUAL = System.get("traceur@0.0.32/src/syntax/TokenType").EQUAL;
- var AssignmentPatternTransformerError = function AssignmentPatternTransformerError() {
- $traceurRuntime.defaultSuperCall(this, $AssignmentPatternTransformerError.prototype, arguments);
- };
- var $AssignmentPatternTransformerError = AssignmentPatternTransformerError;
- ($traceurRuntime.createClass)(AssignmentPatternTransformerError, {}, {}, Error);
- var AssignmentPatternTransformer = function AssignmentPatternTransformer() {
- $traceurRuntime.defaultSuperCall(this, $AssignmentPatternTransformer.prototype, arguments);
- };
- var $AssignmentPatternTransformer = AssignmentPatternTransformer;
- ($traceurRuntime.createClass)(AssignmentPatternTransformer, {
- transformBinaryOperator: function(tree) {
- if (tree.operator.type !== EQUAL)
- throw new AssignmentPatternTransformerError();
- var bindingElement = this.transformAny(tree.left);
- if (bindingElement instanceof BindingElement)
- bindingElement = bindingElement.binding;
- return new BindingElement(tree.location, bindingElement, tree.right);
- },
- transformArrayLiteralExpression: function(tree) {
- var elements = this.transformList(tree.elements);
- return new ArrayPattern(tree.location, elements);
- },
- transformCoverInitialisedName: function(tree) {
- return new BindingElement(tree.location, new BindingIdentifier(tree.name.location, tree.name), this.transformAny(tree.initialiser));
- },
- transformObjectLiteralExpression: function(tree) {
- var propertyNameAndValues = this.transformList(tree.propertyNameAndValues);
- return new ObjectPattern(tree.location, propertyNameAndValues);
- },
- transformPropertyNameAssignment: function(tree) {
- return new ObjectPatternField(tree.location, tree.name, this.transformAny(tree.value));
- },
- transformPropertyNameShorthand: function(tree) {
- return new IdentifierExpression(tree.location, tree.name);
- },
- transformSpreadExpression: function(tree) {
- return new SpreadPatternElement(tree.location, tree.expression);
- },
- transformSyntaxErrorTree: function(tree) {
- throw new AssignmentPatternTransformerError();
- }
- }, {}, ParseTreeTransformer);
- return {
- get AssignmentPatternTransformerError() {
- return AssignmentPatternTransformerError;
- },
- get AssignmentPatternTransformer() {
- return AssignmentPatternTransformer;
- }
- };
-});
-System.register("traceur@0.0.32/src/codegeneration/CoverFormalsTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/CoverFormalsTransformer";
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var $__55 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- ArrayPattern = $__55.ArrayPattern,
- BindingElement = $__55.BindingElement,
- BindingIdentifier = $__55.BindingIdentifier,
- CommaExpression = $__55.CommaExpression,
- FormalParameter = $__55.FormalParameter,
- FormalParameterList = $__55.FormalParameterList,
- ObjectPattern = $__55.ObjectPattern,
- ObjectPatternField = $__55.ObjectPatternField,
- ParenExpression = $__55.ParenExpression,
- RestParameter = $__55.RestParameter,
- SpreadPatternElement = $__55.SpreadPatternElement;
- var EQUAL = System.get("traceur@0.0.32/src/syntax/TokenType").EQUAL;
- var IDENTIFIER_EXPRESSION = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType").IDENTIFIER_EXPRESSION;
- var AssignmentPatternTransformerError = System.get("traceur@0.0.32/src/codegeneration/AssignmentPatternTransformer").AssignmentPatternTransformerError;
- var CoverFormalsTransformerError = function CoverFormalsTransformerError(location, message) {
- this.location = location;
- this.message = message;
- };
- ($traceurRuntime.createClass)(CoverFormalsTransformerError, {}, {}, Error);
- var ToFormalParametersTransformer = function ToFormalParametersTransformer() {
- this.isValid = true;
- this.inArrayPattern_ = false;
- };
- ($traceurRuntime.createClass)(ToFormalParametersTransformer, {
- transformCoverFormals: function(tree) {
- var expressions = this.transformList(tree.expressions).map((function(expression) {
- return new FormalParameter(expression.location, expression, null, []);
- }));
- return new FormalParameterList(tree.location, expressions);
- },
- transformIdentifierExpression: function(tree) {
- return new BindingElement(tree.location, new BindingIdentifier(tree.location, tree.identifierToken), null);
- },
- transformBinaryOperator: function(tree) {
- if (tree.operator.type !== EQUAL)
- throw new CoverFormalsTransformerError(tree.operator, ("Unexpected token " + tree.operator));
- var bindingElement = this.transformAny(tree.left);
- if (bindingElement instanceof BindingElement)
- bindingElement = bindingElement.binding;
- return new BindingElement(tree.location, bindingElement, tree.right);
- },
- transformArrayLiteralExpression: function(tree) {
- var wasInArrayPattern = this.inArrayPattern_;
- this.inArrayPattern_ = true;
- var elements = this.transformList(tree.elements);
- this.inArrayPattern_ = wasInArrayPattern;
- var okIndex = elements.length - 1;
- for (var i = 0; i < okIndex; i++) {
- if (elements[i] instanceof SpreadPatternElement)
- throw new CoverFormalsTransformerError(elements[i].location, 'Unexpected token ...');
- }
- return new BindingElement(tree.location, new ArrayPattern(tree.location, elements), null);
- },
- transformObjectLiteralExpression: function(tree) {
- var propertyNameAndValues = this.transformList(tree.propertyNameAndValues);
- return new BindingElement(tree.location, new ObjectPattern(tree.location, propertyNameAndValues), null);
- },
- transformCoverInitialisedName: function(tree) {
- return new BindingElement(tree.location, new BindingIdentifier(tree.location, tree.name), tree.initialiser);
- },
- transformPropertyNameAssignment: function(tree) {
- return new ObjectPatternField(tree.location, tree.name, this.transformAny(tree.value));
- },
- transformPropertyNameShorthand: function(tree) {
- return new BindingElement(tree.location, new BindingIdentifier(tree.location, tree.name), null);
- },
- transformSpreadExpression: function(tree) {
- if (tree.expression.type !== IDENTIFIER_EXPRESSION)
- throw new CoverFormalsTransformerError(tree.expression.location, 'identifier expected');
- var bindingIdentifier = new BindingIdentifier(tree.expression.location, tree.expression.identifierToken);
- if (this.inArrayPattern_)
- return new SpreadPatternElement(tree.location, bindingIdentifier);
- return new RestParameter(tree.location, bindingIdentifier);
- },
- transformSyntaxErrorTree: function(tree) {
- throw new AssignmentPatternTransformerError();
- }
- }, {}, ParseTreeTransformer);
- function toParenExpression(tree) {
- var expressions = tree.expressions;
- var length = expressions.length;
- if (length === 0)
- throw new CoverFormalsTransformerError(tree.location, 'Unexpected token )');
- for (var i = 0; i < length; i++) {
- if (expressions[i].isRestParameter())
- throw new CoverFormalsTransformerError(expressions[i].location, 'Unexpected token ...');
- }
- var expression;
- if (expressions.length > 1) {
- expression = new CommaExpression(expressions[0].location, expressions);
- } else {
- expression = expressions[0];
- }
- return new ParenExpression(tree.location, expression);
- }
- function toFormalParameters(tree) {
- var transformer = new ToFormalParametersTransformer();
- return transformer.transformAny(tree);
- }
- return {
- get CoverFormalsTransformerError() {
- return CoverFormalsTransformerError;
- },
- get toParenExpression() {
- return toParenExpression;
- },
- get toFormalParameters() {
- return toFormalParameters;
- }
- };
-});
-System.register("traceur@0.0.32/src/staticsemantics/StrictParams", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/staticsemantics/StrictParams";
- var ParseTreeVisitor = System.get("traceur@0.0.32/src/syntax/ParseTreeVisitor").ParseTreeVisitor;
- var isStrictKeyword = System.get("traceur@0.0.32/src/syntax/Keywords").isStrictKeyword;
- var StrictParams = function StrictParams(errorReporter) {
- $traceurRuntime.superCall(this, $StrictParams.prototype, "constructor", []);
- this.errorReporter = errorReporter;
- };
- var $StrictParams = StrictParams;
- ($traceurRuntime.createClass)(StrictParams, {visitBindingIdentifier: function(tree) {
- var name = tree.identifierToken.toString();
- if (isStrictKeyword(name)) {
- this.errorReporter.reportError(tree.location.start, (name + " is a reserved identifier"));
- }
- }}, {visit: function(tree, errorReporter) {
- new $StrictParams(errorReporter).visitAny(tree);
- }}, ParseTreeVisitor);
- return {get StrictParams() {
- return StrictParams;
- }};
-});
-System.register("traceur@0.0.32/src/util/SourceRange", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/util/SourceRange";
- var SourceRange = function SourceRange(start, end) {
- this.start = start;
- this.end = end;
- };
- ($traceurRuntime.createClass)(SourceRange, {toString: function() {
- var str = this.start.source.contents;
- return str.slice(this.start.offset, this.end.offset);
- }}, {});
- return {get SourceRange() {
- return SourceRange;
- }};
-});
-System.register("traceur@0.0.32/src/util/ErrorReporter", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/util/ErrorReporter";
- var ErrorReporter = function ErrorReporter() {
- this.hadError_ = false;
- };
- ($traceurRuntime.createClass)(ErrorReporter, {
- reportError: function(location, message) {
- this.hadError_ = true;
- this.reportMessageInternal(location, message);
- },
- reportMessageInternal: function(location, message) {
- if (location)
- message = (location + ": " + message);
- console.error(message);
- },
- hadError: function() {
- return this.hadError_;
- },
- clearError: function() {
- this.hadError_ = false;
- }
- }, {});
- function format(location, text) {
- var args = arguments[2];
- var i = 0;
- text = text.replace(/%./g, function(s) {
- switch (s) {
- case '%s':
- return args && args[i++];
- case '%%':
- return '%';
- }
- return s;
- });
- if (location)
- text = (location + ": " + text);
- return text;
- }
- ;
- ErrorReporter.format = format;
- return {
- get ErrorReporter() {
- return ErrorReporter;
- },
- get format() {
- return format;
- }
- };
-});
-System.register("traceur@0.0.32/src/util/SyntaxErrorReporter", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/util/SyntaxErrorReporter";
- var $__61 = System.get("traceur@0.0.32/src/util/ErrorReporter"),
- ErrorReporter = $__61.ErrorReporter,
- format = $__61.format;
- var SyntaxErrorReporter = function SyntaxErrorReporter() {
- $traceurRuntime.defaultSuperCall(this, $SyntaxErrorReporter.prototype, arguments);
- };
- var $SyntaxErrorReporter = SyntaxErrorReporter;
- ($traceurRuntime.createClass)(SyntaxErrorReporter, {reportMessageInternal: function(location, message) {
- var s = format(location, message);
- throw new SyntaxError(s);
- }}, {}, ErrorReporter);
- return {get SyntaxErrorReporter() {
- return SyntaxErrorReporter;
- }};
-});
-System.register("traceur@0.0.32/src/syntax/Parser", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/syntax/Parser";
- var $__65 = System.get("traceur@0.0.32/src/codegeneration/AssignmentPatternTransformer"),
- AssignmentPatternTransformer = $__65.AssignmentPatternTransformer,
- AssignmentPatternTransformerError = $__65.AssignmentPatternTransformerError;
- var $__65 = System.get("traceur@0.0.32/src/codegeneration/CoverFormalsTransformer"),
- toFormalParameters = $__65.toFormalParameters,
- toParenExpression = $__65.toParenExpression,
- CoverFormalsTransformerError = $__65.CoverFormalsTransformerError;
- var IdentifierToken = System.get("traceur@0.0.32/src/syntax/IdentifierToken").IdentifierToken;
- var $__65 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- ARRAY_LITERAL_EXPRESSION = $__65.ARRAY_LITERAL_EXPRESSION,
- BINARY_OPERATOR = $__65.BINARY_OPERATOR,
- CALL_EXPRESSION = $__65.CALL_EXPRESSION,
- CLASS_DECLARATION = $__65.CLASS_DECLARATION,
- COMMA_EXPRESSION = $__65.COMMA_EXPRESSION,
- COMPUTED_PROPERTY_NAME = $__65.COMPUTED_PROPERTY_NAME,
- COVER_FORMALS = $__65.COVER_FORMALS,
- FORMAL_PARAMETER_LIST = $__65.FORMAL_PARAMETER_LIST,
- FUNCTION_DECLARATION = $__65.FUNCTION_DECLARATION,
- IDENTIFIER_EXPRESSION = $__65.IDENTIFIER_EXPRESSION,
- LITERAL_PROPERTY_NAME = $__65.LITERAL_PROPERTY_NAME,
- MEMBER_EXPRESSION = $__65.MEMBER_EXPRESSION,
- MEMBER_LOOKUP_EXPRESSION = $__65.MEMBER_LOOKUP_EXPRESSION,
- OBJECT_LITERAL_EXPRESSION = $__65.OBJECT_LITERAL_EXPRESSION,
- PAREN_EXPRESSION = $__65.PAREN_EXPRESSION,
- PROPERTY_NAME_ASSIGNMENT = $__65.PROPERTY_NAME_ASSIGNMENT,
- REST_PARAMETER = $__65.REST_PARAMETER,
- SYNTAX_ERROR_TREE = $__65.SYNTAX_ERROR_TREE;
- var $__65 = System.get("traceur@0.0.32/src/syntax/PredefinedName"),
- AS = $__65.AS,
- FROM = $__65.FROM,
- GET = $__65.GET,
- MODULE = $__65.MODULE,
- OF = $__65.OF,
- SET = $__65.SET;
- var SyntaxErrorReporter = System.get("traceur@0.0.32/src/util/SyntaxErrorReporter").SyntaxErrorReporter;
- var Scanner = System.get("traceur@0.0.32/src/syntax/Scanner").Scanner;
- var SourceRange = System.get("traceur@0.0.32/src/util/SourceRange").SourceRange;
- var StrictParams = System.get("traceur@0.0.32/src/staticsemantics/StrictParams").StrictParams;
- var $__65 = System.get("traceur@0.0.32/src/syntax/Token"),
- Token = $__65.Token,
- isAssignmentOperator = $__65.isAssignmentOperator;
- var $__65 = System.get("traceur@0.0.32/src/options"),
- parseOptions = $__65.parseOptions,
- options = $__65.options;
- var $__65 = System.get("traceur@0.0.32/src/syntax/TokenType"),
- AMPERSAND = $__65.AMPERSAND,
- AMPERSAND_EQUAL = $__65.AMPERSAND_EQUAL,
- AND = $__65.AND,
- ARROW = $__65.ARROW,
- AT = $__65.AT,
- AWAIT = $__65.AWAIT,
- BACK_QUOTE = $__65.BACK_QUOTE,
- BANG = $__65.BANG,
- BAR = $__65.BAR,
- BAR_EQUAL = $__65.BAR_EQUAL,
- BREAK = $__65.BREAK,
- CARET = $__65.CARET,
- CARET_EQUAL = $__65.CARET_EQUAL,
- CASE = $__65.CASE,
- CATCH = $__65.CATCH,
- CLASS = $__65.CLASS,
- CLOSE_ANGLE = $__65.CLOSE_ANGLE,
- CLOSE_CURLY = $__65.CLOSE_CURLY,
- CLOSE_PAREN = $__65.CLOSE_PAREN,
- CLOSE_SQUARE = $__65.CLOSE_SQUARE,
- COLON = $__65.COLON,
- COMMA = $__65.COMMA,
- CONST = $__65.CONST,
- CONTINUE = $__65.CONTINUE,
- DEBUGGER = $__65.DEBUGGER,
- DEFAULT = $__65.DEFAULT,
- DELETE = $__65.DELETE,
- DO = $__65.DO,
- DOT_DOT_DOT = $__65.DOT_DOT_DOT,
- ELSE = $__65.ELSE,
- END_OF_FILE = $__65.END_OF_FILE,
- ENUM = $__65.ENUM,
- EQUAL = $__65.EQUAL,
- EQUAL_EQUAL = $__65.EQUAL_EQUAL,
- EQUAL_EQUAL_EQUAL = $__65.EQUAL_EQUAL_EQUAL,
- ERROR = $__65.ERROR,
- EXPORT = $__65.EXPORT,
- EXTENDS = $__65.EXTENDS,
- FALSE = $__65.FALSE,
- FINALLY = $__65.FINALLY,
- FOR = $__65.FOR,
- FUNCTION = $__65.FUNCTION,
- GREATER_EQUAL = $__65.GREATER_EQUAL,
- IDENTIFIER = $__65.IDENTIFIER,
- IF = $__65.IF,
- IMPLEMENTS = $__65.IMPLEMENTS,
- IMPORT = $__65.IMPORT,
- IN = $__65.IN,
- INSTANCEOF = $__65.INSTANCEOF,
- INTERFACE = $__65.INTERFACE,
- LEFT_SHIFT = $__65.LEFT_SHIFT,
- LEFT_SHIFT_EQUAL = $__65.LEFT_SHIFT_EQUAL,
- LESS_EQUAL = $__65.LESS_EQUAL,
- LET = $__65.LET,
- MINUS = $__65.MINUS,
- MINUS_EQUAL = $__65.MINUS_EQUAL,
- MINUS_MINUS = $__65.MINUS_MINUS,
- NEW = $__65.NEW,
- NO_SUBSTITUTION_TEMPLATE = $__65.NO_SUBSTITUTION_TEMPLATE,
- NOT_EQUAL = $__65.NOT_EQUAL,
- NOT_EQUAL_EQUAL = $__65.NOT_EQUAL_EQUAL,
- NULL = $__65.NULL,
- NUMBER = $__65.NUMBER,
- OPEN_ANGLE = $__65.OPEN_ANGLE,
- OPEN_CURLY = $__65.OPEN_CURLY,
- OPEN_PAREN = $__65.OPEN_PAREN,
- OPEN_SQUARE = $__65.OPEN_SQUARE,
- OR = $__65.OR,
- PACKAGE = $__65.PACKAGE,
- PERCENT = $__65.PERCENT,
- PERCENT_EQUAL = $__65.PERCENT_EQUAL,
- PERIOD = $__65.PERIOD,
- PLUS = $__65.PLUS,
- PLUS_EQUAL = $__65.PLUS_EQUAL,
- PLUS_PLUS = $__65.PLUS_PLUS,
- PRIVATE = $__65.PRIVATE,
- PROTECTED = $__65.PROTECTED,
- PUBLIC = $__65.PUBLIC,
- QUESTION = $__65.QUESTION,
- REGULAR_EXPRESSION = $__65.REGULAR_EXPRESSION,
- RETURN = $__65.RETURN,
- RIGHT_SHIFT = $__65.RIGHT_SHIFT,
- RIGHT_SHIFT_EQUAL = $__65.RIGHT_SHIFT_EQUAL,
- SEMI_COLON = $__65.SEMI_COLON,
- SLASH = $__65.SLASH,
- SLASH_EQUAL = $__65.SLASH_EQUAL,
- STAR = $__65.STAR,
- STAR_EQUAL = $__65.STAR_EQUAL,
- STATIC = $__65.STATIC,
- STRING = $__65.STRING,
- SUPER = $__65.SUPER,
- SWITCH = $__65.SWITCH,
- TEMPLATE_HEAD = $__65.TEMPLATE_HEAD,
- TEMPLATE_MIDDLE = $__65.TEMPLATE_MIDDLE,
- TEMPLATE_TAIL = $__65.TEMPLATE_TAIL,
- THIS = $__65.THIS,
- THROW = $__65.THROW,
- TILDE = $__65.TILDE,
- TRUE = $__65.TRUE,
- TRY = $__65.TRY,
- TYPEOF = $__65.TYPEOF,
- UNSIGNED_RIGHT_SHIFT = $__65.UNSIGNED_RIGHT_SHIFT,
- UNSIGNED_RIGHT_SHIFT_EQUAL = $__65.UNSIGNED_RIGHT_SHIFT_EQUAL,
- VAR = $__65.VAR,
- VOID = $__65.VOID,
- WHILE = $__65.WHILE,
- WITH = $__65.WITH,
- YIELD = $__65.YIELD;
- var $__65 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- ArgumentList = $__65.ArgumentList,
- ArrayComprehension = $__65.ArrayComprehension,
- ArrayLiteralExpression = $__65.ArrayLiteralExpression,
- ArrayPattern = $__65.ArrayPattern,
- ArrowFunctionExpression = $__65.ArrowFunctionExpression,
- AwaitStatement = $__65.AwaitStatement,
- BinaryOperator = $__65.BinaryOperator,
- BindingElement = $__65.BindingElement,
- BindingIdentifier = $__65.BindingIdentifier,
- Block = $__65.Block,
- BreakStatement = $__65.BreakStatement,
- CallExpression = $__65.CallExpression,
- CaseClause = $__65.CaseClause,
- Catch = $__65.Catch,
- ClassDeclaration = $__65.ClassDeclaration,
- ClassExpression = $__65.ClassExpression,
- CommaExpression = $__65.CommaExpression,
- ComprehensionFor = $__65.ComprehensionFor,
- ComprehensionIf = $__65.ComprehensionIf,
- ComputedPropertyName = $__65.ComputedPropertyName,
- ConditionalExpression = $__65.ConditionalExpression,
- ContinueStatement = $__65.ContinueStatement,
- CoverFormals = $__65.CoverFormals,
- CoverInitialisedName = $__65.CoverInitialisedName,
- DebuggerStatement = $__65.DebuggerStatement,
- Annotation = $__65.Annotation,
- DefaultClause = $__65.DefaultClause,
- DoWhileStatement = $__65.DoWhileStatement,
- EmptyStatement = $__65.EmptyStatement,
- ExportDeclaration = $__65.ExportDeclaration,
- ExportDefault = $__65.ExportDefault,
- ExportSpecifier = $__65.ExportSpecifier,
- ExportSpecifierSet = $__65.ExportSpecifierSet,
- ExportStar = $__65.ExportStar,
- ExpressionStatement = $__65.ExpressionStatement,
- Finally = $__65.Finally,
- ForInStatement = $__65.ForInStatement,
- ForOfStatement = $__65.ForOfStatement,
- ForStatement = $__65.ForStatement,
- FormalParameter = $__65.FormalParameter,
- FormalParameterList = $__65.FormalParameterList,
- FunctionBody = $__65.FunctionBody,
- FunctionDeclaration = $__65.FunctionDeclaration,
- FunctionExpression = $__65.FunctionExpression,
- GeneratorComprehension = $__65.GeneratorComprehension,
- GetAccessor = $__65.GetAccessor,
- IdentifierExpression = $__65.IdentifierExpression,
- IfStatement = $__65.IfStatement,
- ImportDeclaration = $__65.ImportDeclaration,
- ImportSpecifier = $__65.ImportSpecifier,
- ImportSpecifierSet = $__65.ImportSpecifierSet,
- ImportedBinding = $__65.ImportedBinding,
- LabelledStatement = $__65.LabelledStatement,
- LiteralExpression = $__65.LiteralExpression,
- LiteralPropertyName = $__65.LiteralPropertyName,
- MemberExpression = $__65.MemberExpression,
- MemberLookupExpression = $__65.MemberLookupExpression,
- Module = $__65.Module,
- ModuleDeclaration = $__65.ModuleDeclaration,
- ModuleSpecifier = $__65.ModuleSpecifier,
- NamedExport = $__65.NamedExport,
- NewExpression = $__65.NewExpression,
- ObjectLiteralExpression = $__65.ObjectLiteralExpression,
- ObjectPattern = $__65.ObjectPattern,
- ObjectPatternField = $__65.ObjectPatternField,
- ParenExpression = $__65.ParenExpression,
- PostfixExpression = $__65.PostfixExpression,
- PredefinedType = $__65.PredefinedType,
- Script = $__65.Script,
- PropertyMethodAssignment = $__65.PropertyMethodAssignment,
- PropertyNameAssignment = $__65.PropertyNameAssignment,
- PropertyNameShorthand = $__65.PropertyNameShorthand,
- RestParameter = $__65.RestParameter,
- ReturnStatement = $__65.ReturnStatement,
- SetAccessor = $__65.SetAccessor,
- SpreadExpression = $__65.SpreadExpression,
- SpreadPatternElement = $__65.SpreadPatternElement,
- SuperExpression = $__65.SuperExpression,
- SwitchStatement = $__65.SwitchStatement,
- SyntaxErrorTree = $__65.SyntaxErrorTree,
- TemplateLiteralExpression = $__65.TemplateLiteralExpression,
- TemplateLiteralPortion = $__65.TemplateLiteralPortion,
- TemplateSubstitution = $__65.TemplateSubstitution,
- ThisExpression = $__65.ThisExpression,
- ThrowStatement = $__65.ThrowStatement,
- TryStatement = $__65.TryStatement,
- TypeName = $__65.TypeName,
- UnaryExpression = $__65.UnaryExpression,
- VariableDeclaration = $__65.VariableDeclaration,
- VariableDeclarationList = $__65.VariableDeclarationList,
- VariableStatement = $__65.VariableStatement,
- WhileStatement = $__65.WhileStatement,
- WithStatement = $__65.WithStatement,
- YieldExpression = $__65.YieldExpression;
- var Expression = {
- NO_IN: 'NO_IN',
- NORMAL: 'NORMAL'
- };
- var DestructuringInitialiser = {
- REQUIRED: 'REQUIRED',
- OPTIONAL: 'OPTIONAL'
- };
- var Initialiser = {
- ALLOWED: 'ALLOWED',
- REQUIRED: 'REQUIRED'
- };
- var Parser = function Parser(file) {
- var errorReporter = arguments[1] !== (void 0) ? arguments[1] : new SyntaxErrorReporter();
- this.errorReporter_ = errorReporter;
- this.scanner_ = new Scanner(errorReporter, file, this);
- this.allowYield_ = false;
- this.strictMode_ = false;
- this.coverInitialisedName_ = null;
- this.annotations_ = [];
- };
- ($traceurRuntime.createClass)(Parser, {
- parseScript: function() {
- this.strictMode_ = false;
- var start = this.getTreeStartLocation_();
- var scriptItemList = this.parseScriptItemList_();
- this.eat_(END_OF_FILE);
- return new Script(this.getTreeLocation_(start), scriptItemList);
- },
- parseScriptItemList_: function() {
- var result = [];
- var type;
- var checkUseStrictDirective = true;
- while ((type = this.peekType_()) !== END_OF_FILE) {
- var scriptItem = this.parseScriptItem_(type, false);
- if (checkUseStrictDirective) {
- if (!scriptItem.isDirectivePrologue()) {
- checkUseStrictDirective = false;
- } else if (scriptItem.isUseStrictDirective()) {
- this.strictMode_ = true;
- checkUseStrictDirective = false;
- }
- }
- result.push(scriptItem);
- }
- return result;
- },
- parseScriptItem_: function(type, allowModuleItem) {
- return this.parseStatement_(type, allowModuleItem, true);
- },
- parseModule: function() {
- var start = this.getTreeStartLocation_();
- var scriptItemList = this.parseModuleItemList_();
- this.eat_(END_OF_FILE);
- return new Module(this.getTreeLocation_(start), scriptItemList);
- },
- parseModuleItemList_: function() {
- this.strictMode_ = true;
- var result = [];
- var type;
- while ((type = this.peekType_()) !== END_OF_FILE) {
- var scriptItem = this.parseScriptItem_(type, true);
- result.push(scriptItem);
- }
- return result;
- },
- parseModuleSpecifier_: function() {
- var start = this.getTreeStartLocation_();
- var token = this.eat_(STRING);
- return new ModuleSpecifier(this.getTreeLocation_(start), token);
- },
- parseImportDeclaration_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(IMPORT);
- var importClause = null;
- if (this.peekImportClause_(this.peekType_())) {
- importClause = this.parseImportClause_();
- this.eatId_(FROM);
- }
- var moduleSpecifier = this.parseModuleSpecifier_();
- this.eatPossibleImplicitSemiColon_();
- return new ImportDeclaration(this.getTreeLocation_(start), importClause, moduleSpecifier);
- },
- peekImportClause_: function(type) {
- return type === OPEN_CURLY || this.peekBindingIdentifier_(type);
- },
- parseImportClause_: function() {
- var start = this.getTreeStartLocation_();
- if (this.eatIf_(OPEN_CURLY)) {
- var specifiers = [];
- while (!this.peek_(CLOSE_CURLY) && !this.isAtEnd()) {
- specifiers.push(this.parseImportSpecifier_());
- if (!this.eatIf_(COMMA))
- break;
- }
- this.eat_(CLOSE_CURLY);
- return new ImportSpecifierSet(this.getTreeLocation_(start), specifiers);
- }
- var binding = this.parseBindingIdentifier_();
- return new ImportedBinding(this.getTreeLocation_(start), binding);
- },
- parseImportSpecifier_: function() {
- var start = this.getTreeStartLocation_();
- var token = this.peekToken_();
- var isKeyword = token.isKeyword();
- var lhs = this.eatIdName_();
- var rhs = null;
- if (isKeyword || this.peekPredefinedString_(AS)) {
- this.eatId_(AS);
- rhs = this.eatId_();
- }
- return new ImportSpecifier(this.getTreeLocation_(start), lhs, rhs);
- },
- parseExportDeclaration_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(EXPORT);
- var exportTree;
- var annotations = this.popAnnotations_();
- var type = this.peekType_();
- switch (type) {
- case CONST:
- case LET:
- case VAR:
- exportTree = this.parseVariableStatement_();
- break;
- case FUNCTION:
- exportTree = this.parseFunctionDeclaration_();
- break;
- case CLASS:
- exportTree = this.parseClassDeclaration_();
- break;
- case DEFAULT:
- exportTree = this.parseExportDefault_();
- break;
- case OPEN_CURLY:
- case STAR:
- exportTree = this.parseNamedExport_();
- break;
- default:
- return this.parseUnexpectedToken_(type);
- }
- return new ExportDeclaration(this.getTreeLocation_(start), exportTree, annotations);
- },
- parseExportDefault_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(DEFAULT);
- var expression = this.parseAssignmentExpression();
- this.eatPossibleImplicitSemiColon_();
- return new ExportDefault(this.getTreeLocation_(start), expression);
- },
- parseNamedExport_: function() {
- var start = this.getTreeStartLocation_();
- var specifierSet,
- expression;
- if (this.peek_(OPEN_CURLY)) {
- specifierSet = this.parseExportSpecifierSet_();
- expression = this.parseFromModuleSpecifierOpt_(false);
- } else {
- this.eat_(STAR);
- specifierSet = new ExportStar(this.getTreeLocation_(start));
- expression = this.parseFromModuleSpecifierOpt_(true);
- }
- this.eatPossibleImplicitSemiColon_();
- return new NamedExport(this.getTreeLocation_(start), expression, specifierSet);
- },
- parseFromModuleSpecifierOpt_: function(required) {
- if (required || this.peekPredefinedString_(FROM)) {
- this.eatId_(FROM);
- return this.parseModuleSpecifier_();
- }
- return null;
- },
- parseExportSpecifierSet_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(OPEN_CURLY);
- var specifiers = [this.parseExportSpecifier_()];
- while (this.eatIf_(COMMA)) {
- if (this.peek_(CLOSE_CURLY))
- break;
- specifiers.push(this.parseExportSpecifier_());
- }
- this.eat_(CLOSE_CURLY);
- return new ExportSpecifierSet(this.getTreeLocation_(start), specifiers);
- },
- parseExportSpecifier_: function() {
- var start = this.getTreeStartLocation_();
- var lhs = this.eatId_();
- var rhs = null;
- if (this.peekPredefinedString_(AS)) {
- this.eatId_(AS);
- rhs = this.eatIdName_();
- }
- return new ExportSpecifier(this.getTreeLocation_(start), lhs, rhs);
- },
- peekId_: function(type) {
- if (type === IDENTIFIER)
- return true;
- if (this.strictMode_)
- return false;
- return this.peekToken_().isStrictKeyword();
- },
- peekIdName_: function(token) {
- return token.type === IDENTIFIER || token.isKeyword();
- },
- parseClassShared_: function(constr) {
- var start = this.getTreeStartLocation_();
- var strictMode = this.strictMode_;
- this.strictMode_ = true;
- this.eat_(CLASS);
- var name = null;
- var annotations = [];
- if (constr == ClassDeclaration || !this.peek_(EXTENDS) && !this.peek_(OPEN_CURLY)) {
- name = this.parseBindingIdentifier_();
- annotations = this.popAnnotations_();
- }
- var superClass = null;
- if (this.eatIf_(EXTENDS)) {
- superClass = this.parseAssignmentExpression();
- }
- this.eat_(OPEN_CURLY);
- var elements = this.parseClassElements_();
- this.eat_(CLOSE_CURLY);
- this.strictMode_ = strictMode;
- return new constr(this.getTreeLocation_(start), name, superClass, elements, annotations);
- },
- parseClassDeclaration_: function() {
- return this.parseClassShared_(ClassDeclaration);
- },
- parseClassExpression_: function() {
- return this.parseClassShared_(ClassExpression);
- },
- parseClassElements_: function() {
- var result = [];
- while (true) {
- var type = this.peekType_();
- if (type === SEMI_COLON) {
- this.nextToken_();
- } else if (this.peekClassElement_(this.peekType_())) {
- result.push(this.parseClassElement_());
- } else {
- break;
- }
- }
- return result;
- },
- peekClassElement_: function(type) {
- return this.peekPropertyName_(type) || type === STAR && parseOptions.generators || type === AT && parseOptions.annotations;
- },
- parsePropertyName_: function() {
- if (this.peek_(OPEN_SQUARE))
- return this.parseComputedPropertyName_();
- return this.parseLiteralPropertyName_();
- },
- parseLiteralPropertyName_: function() {
- var start = this.getTreeStartLocation_();
- var token = this.nextToken_();
- return new LiteralPropertyName(this.getTreeLocation_(start), token);
- },
- parseComputedPropertyName_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(OPEN_SQUARE);
- var expression = this.parseAssignmentExpression();
- this.eat_(CLOSE_SQUARE);
- return new ComputedPropertyName(this.getTreeLocation_(start), expression);
- },
- parseStatement: function() {
- return this.parseStatement_(this.peekType_(), false, false);
- },
- parseStatement_: function(type, allowModuleItem, allowScriptItem) {
- switch (type) {
- case RETURN:
- return this.parseReturnStatement_();
- case CONST:
- case LET:
- if (!parseOptions.blockBinding)
- break;
- case VAR:
- return this.parseVariableStatement_();
- case IF:
- return this.parseIfStatement_();
- case FOR:
- return this.parseForStatement_();
- case BREAK:
- return this.parseBreakStatement_();
- case SWITCH:
- return this.parseSwitchStatement_();
- case THROW:
- return this.parseThrowStatement_();
- case WHILE:
- return this.parseWhileStatement_();
- case FUNCTION:
- return this.parseFunctionDeclaration_();
- case AT:
- if (parseOptions.annotations)
- return this.parseAnnotatedDeclarations_(allowModuleItem, allowScriptItem);
- break;
- case AWAIT:
- if (parseOptions.deferredFunctions)
- return this.parseAwaitStatement_();
- break;
- case CLASS:
- if (parseOptions.classes)
- return this.parseClassDeclaration_();
- break;
- case CONTINUE:
- return this.parseContinueStatement_();
- case DEBUGGER:
- return this.parseDebuggerStatement_();
- case DO:
- return this.parseDoWhileStatement_();
- case EXPORT:
- if (allowModuleItem && parseOptions.modules)
- return this.parseExportDeclaration_();
- break;
- case IMPORT:
- if (allowScriptItem && parseOptions.modules)
- return this.parseImportDeclaration_();
- break;
- case OPEN_CURLY:
- return this.parseBlock_();
- case SEMI_COLON:
- return this.parseEmptyStatement_();
- case TRY:
- return this.parseTryStatement_();
- case WITH:
- return this.parseWithStatement_();
- }
- return this.parseFallThroughStatement_(allowScriptItem);
- },
- parseFunctionDeclaration_: function() {
- return this.parseFunction_(FunctionDeclaration);
- },
- parseFunctionExpression_: function() {
- return this.parseFunction_(FunctionExpression);
- },
- parseFunction_: function(ctor) {
- var start = this.getTreeStartLocation_();
- this.eat_(FUNCTION);
- var isGenerator = parseOptions.generators && this.eatIf_(STAR);
- var name = null;
- var annotations = [];
- if (ctor === FunctionDeclaration || this.peekBindingIdentifier_(this.peekType_())) {
- name = this.parseBindingIdentifier_();
- annotations = this.popAnnotations_();
- }
- this.eat_(OPEN_PAREN);
- var formalParameterList = this.parseFormalParameterList_();
- this.eat_(CLOSE_PAREN);
- var typeAnnotation = this.parseTypeAnnotationOpt_();
- var functionBody = this.parseFunctionBody_(isGenerator, formalParameterList);
- return new ctor(this.getTreeLocation_(start), name, isGenerator, formalParameterList, typeAnnotation, annotations, functionBody);
- },
- peekRest_: function(type) {
- return type === DOT_DOT_DOT && parseOptions.restParameters;
- },
- parseFormalParameterList_: function() {
- var start = this.getTreeStartLocation_();
- var formals = [];
- this.pushAnnotations_();
- var type = this.peekType_();
- if (this.peekRest_(type)) {
- formals.push(this.parseFormalRestParameter_());
- } else {
- if (this.peekFormalParameter_(this.peekType_()))
- formals.push(this.parseFormalParameter_());
- while (this.eatIf_(COMMA)) {
- this.pushAnnotations_();
- if (this.peekRest_(this.peekType_())) {
- formals.push(this.parseFormalRestParameter_());
- break;
- }
- formals.push(this.parseFormalParameter_());
- }
- }
- return new FormalParameterList(this.getTreeLocation_(start), formals);
- },
- peekFormalParameter_: function(type) {
- return this.peekBindingElement_(type);
- },
- parseFormalParameter_: function() {
- var initialiserAllowed = arguments[0];
- var start = this.getTreeStartLocation_();
- var binding = this.parseBindingElementBinding_();
- var typeAnnotation = this.parseTypeAnnotationOpt_();
- var initialiser = this.parseBindingElementInitialiser_(initialiserAllowed);
- return new FormalParameter(this.getTreeLocation_(start), new BindingElement(this.getTreeLocation_(start), binding, initialiser), typeAnnotation, this.popAnnotations_());
- },
- parseFormalRestParameter_: function() {
- var start = this.getTreeStartLocation_();
- var restParameter = this.parseRestParameter_();
- var typeAnnotation = this.parseTypeAnnotationOpt_();
- return new FormalParameter(this.getTreeLocation_(start), restParameter, typeAnnotation, this.popAnnotations_());
- },
- parseRestParameter_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(DOT_DOT_DOT);
- var id = this.parseBindingIdentifier_();
- return new RestParameter(this.getTreeLocation_(start), id);
- },
- parseFunctionBody_: function(isGenerator, params) {
- var start = this.getTreeStartLocation_();
- this.eat_(OPEN_CURLY);
- var allowYield = this.allowYield_;
- var strictMode = this.strictMode_;
- this.allowYield_ = isGenerator;
- var result = this.parseStatementList_(!strictMode);
- if (!strictMode && this.strictMode_ && params)
- StrictParams.visit(params, this.errorReporter_);
- this.strictMode_ = strictMode;
- this.allowYield_ = allowYield;
- this.eat_(CLOSE_CURLY);
- return new FunctionBody(this.getTreeLocation_(start), result);
- },
- parseStatements: function() {
- return this.parseStatementList_(false);
- },
- parseStatementList_: function(checkUseStrictDirective) {
- var result = [];
- var type;
- while ((type = this.peekType_()) !== CLOSE_CURLY && type !== END_OF_FILE) {
- var statement = this.parseStatement_(type, false, false);
- if (checkUseStrictDirective) {
- if (!statement.isDirectivePrologue()) {
- checkUseStrictDirective = false;
- } else if (statement.isUseStrictDirective()) {
- this.strictMode_ = true;
- checkUseStrictDirective = false;
- }
- }
- result.push(statement);
- }
- return result;
- },
- parseSpreadExpression_: function() {
- if (!parseOptions.spread)
- return this.parseUnexpectedToken_(DOT_DOT_DOT);
- var start = this.getTreeStartLocation_();
- this.eat_(DOT_DOT_DOT);
- var operand = this.parseAssignmentExpression();
- return new SpreadExpression(this.getTreeLocation_(start), operand);
- },
- parseBlock_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(OPEN_CURLY);
- var result = this.parseStatementList_(false);
- this.eat_(CLOSE_CURLY);
- return new Block(this.getTreeLocation_(start), result);
- },
- parseVariableStatement_: function() {
- var start = this.getTreeStartLocation_();
- var declarations = this.parseVariableDeclarationList_();
- this.checkInitialisers_(declarations);
- this.eatPossibleImplicitSemiColon_();
- return new VariableStatement(this.getTreeLocation_(start), declarations);
- },
- parseVariableDeclarationList_: function() {
- var expressionIn = arguments[0] !== (void 0) ? arguments[0] : Expression.NORMAL;
- var initialiser = arguments[1] !== (void 0) ? arguments[1] : DestructuringInitialiser.REQUIRED;
- var type = this.peekType_();
- switch (type) {
- case CONST:
- case LET:
- if (!parseOptions.blockBinding)
- debugger;
- case VAR:
- this.nextToken_();
- break;
- default:
- throw Error('unreachable');
- }
- var start = this.getTreeStartLocation_();
- var declarations = [];
- declarations.push(this.parseVariableDeclaration_(type, expressionIn, initialiser));
- while (this.eatIf_(COMMA)) {
- declarations.push(this.parseVariableDeclaration_(type, expressionIn, initialiser));
- }
- return new VariableDeclarationList(this.getTreeLocation_(start), type, declarations);
- },
- parseVariableDeclaration_: function(binding, expressionIn) {
- var initialiser = arguments[2] !== (void 0) ? arguments[2] : DestructuringInitialiser.REQUIRED;
- var initRequired = initialiser !== DestructuringInitialiser.OPTIONAL;
- var start = this.getTreeStartLocation_();
- var lvalue;
- var typeAnnotation;
- if (this.peekPattern_(this.peekType_())) {
- lvalue = this.parseBindingPattern_();
- typeAnnotation = null;
- } else {
- lvalue = this.parseBindingIdentifier_();
- typeAnnotation = this.parseTypeAnnotationOpt_();
- }
- var initialiser = null;
- if (this.peek_(EQUAL))
- initialiser = this.parseInitialiser_(expressionIn);
- else if (lvalue.isPattern() && initRequired)
- this.reportError_('destructuring must have an initialiser');
- return new VariableDeclaration(this.getTreeLocation_(start), lvalue, typeAnnotation, initialiser);
- },
- parseInitialiser_: function(expressionIn) {
- this.eat_(EQUAL);
- return this.parseAssignmentExpression(expressionIn);
- },
- parseEmptyStatement_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(SEMI_COLON);
- return new EmptyStatement(this.getTreeLocation_(start));
- },
- parseFallThroughStatement_: function(allowScriptItem) {
- var start = this.getTreeStartLocation_();
- var expression = this.parseExpression();
- if (expression.type === IDENTIFIER_EXPRESSION) {
- var nameToken = expression.identifierToken;
- if (this.eatIf_(COLON)) {
- var statement = this.parseStatement();
- return new LabelledStatement(this.getTreeLocation_(start), nameToken, statement);
- }
- if (allowScriptItem && nameToken.value === MODULE && parseOptions.modules) {
- var token = this.peekTokenNoLineTerminator_();
- if (token !== null && token.type === IDENTIFIER) {
- var name = this.eatId_();
- this.eatId_(FROM);
- var moduleSpecifier = this.parseModuleSpecifier_();
- this.eatPossibleImplicitSemiColon_();
- return new ModuleDeclaration(this.getTreeLocation_(start), name, moduleSpecifier);
- }
- }
- }
- this.eatPossibleImplicitSemiColon_();
- return new ExpressionStatement(this.getTreeLocation_(start), expression);
- },
- parseIfStatement_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(IF);
- this.eat_(OPEN_PAREN);
- var condition = this.parseExpression();
- this.eat_(CLOSE_PAREN);
- var ifClause = this.parseStatement();
- var elseClause = null;
- if (this.eatIf_(ELSE)) {
- elseClause = this.parseStatement();
- }
- return new IfStatement(this.getTreeLocation_(start), condition, ifClause, elseClause);
- },
- parseDoWhileStatement_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(DO);
- var body = this.parseStatement();
- this.eat_(WHILE);
- this.eat_(OPEN_PAREN);
- var condition = this.parseExpression();
- this.eat_(CLOSE_PAREN);
- this.eatPossibleImplicitSemiColon_();
- return new DoWhileStatement(this.getTreeLocation_(start), body, condition);
- },
- parseWhileStatement_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(WHILE);
- this.eat_(OPEN_PAREN);
- var condition = this.parseExpression();
- this.eat_(CLOSE_PAREN);
- var body = this.parseStatement();
- return new WhileStatement(this.getTreeLocation_(start), condition, body);
- },
- parseForStatement_: function() {
- var $__62 = this;
- var start = this.getTreeStartLocation_();
- this.eat_(FOR);
- this.eat_(OPEN_PAREN);
- var validate = (function(variables, kind) {
- if (variables.declarations.length > 1) {
- $__62.reportError_(kind + ' statement may not have more than one variable declaration');
- }
- var declaration = variables.declarations[0];
- if (declaration.lvalue.isPattern() && declaration.initialiser) {
- $__62.reportError_(declaration.initialiser.location, ("initialiser is not allowed in " + kind + " loop with pattern"));
- }
- });
- var type = this.peekType_();
- if (this.peekVariableDeclarationList_(type)) {
- var variables = this.parseVariableDeclarationList_(Expression.NO_IN, DestructuringInitialiser.OPTIONAL);
- type = this.peekType_();
- if (type === IN) {
- validate(variables, 'for-in');
- var declaration = variables.declarations[0];
- if (parseOptions.blockBinding && (variables.declarationType == LET || variables.declarationType == CONST)) {
- if (declaration.initialiser != null) {
- this.reportError_('let/const in for-in statement may not have initialiser');
- }
- }
- return this.parseForInStatement_(start, variables);
- } else if (this.peekOf_(type)) {
- validate(variables, 'for-of');
- var declaration = variables.declarations[0];
- if (declaration.initialiser != null) {
- this.reportError_('for-of statement may not have initialiser');
- }
- return this.parseForOfStatement_(start, variables);
- } else {
- this.checkInitialisers_(variables);
- return this.parseForStatement2_(start, variables);
- }
- }
- if (type === SEMI_COLON) {
- return this.parseForStatement2_(start, null);
- }
- var initialiser = this.parseExpression(Expression.NO_IN);
- type = this.peekType_();
- if (initialiser.isLeftHandSideExpression() && (type === IN || this.peekOf_(type))) {
- initialiser = this.transformLeftHandSideExpression_(initialiser);
- if (this.peekOf_(type))
- return this.parseForOfStatement_(start, initialiser);
- return this.parseForInStatement_(start, initialiser);
- }
- return this.parseForStatement2_(start, initialiser);
- },
- peekOf_: function(type) {
- return type === IDENTIFIER && parseOptions.forOf && this.peekToken_().value === OF;
- },
- parseForOfStatement_: function(start, initialiser) {
- this.eatId_();
- var collection = this.parseExpression();
- this.eat_(CLOSE_PAREN);
- var body = this.parseStatement();
- return new ForOfStatement(this.getTreeLocation_(start), initialiser, collection, body);
- },
- checkInitialisers_: function(variables) {
- if (parseOptions.blockBinding && variables.declarationType == CONST) {
- var type = variables.declarationType;
- for (var i = 0; i < variables.declarations.length; i++) {
- if (!this.checkInitialiser_(type, variables.declarations[i])) {
- break;
- }
- }
- }
- },
- checkInitialiser_: function(type, declaration) {
- if (parseOptions.blockBinding && type == CONST && declaration.initialiser == null) {
- this.reportError_('const variables must have an initialiser');
- return false;
- }
- return true;
- },
- peekVariableDeclarationList_: function(type) {
- switch (type) {
- case VAR:
- return true;
- case CONST:
- case LET:
- return parseOptions.blockBinding;
- default:
- return false;
- }
- },
- parseForStatement2_: function(start, initialiser) {
- this.eat_(SEMI_COLON);
- var condition = null;
- if (!this.peek_(SEMI_COLON)) {
- condition = this.parseExpression();
- }
- this.eat_(SEMI_COLON);
- var increment = null;
- if (!this.peek_(CLOSE_PAREN)) {
- increment = this.parseExpression();
- }
- this.eat_(CLOSE_PAREN);
- var body = this.parseStatement();
- return new ForStatement(this.getTreeLocation_(start), initialiser, condition, increment, body);
- },
- parseForInStatement_: function(start, initialiser) {
- this.eat_(IN);
- var collection = this.parseExpression();
- this.eat_(CLOSE_PAREN);
- var body = this.parseStatement();
- return new ForInStatement(this.getTreeLocation_(start), initialiser, collection, body);
- },
- parseContinueStatement_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(CONTINUE);
- var name = null;
- if (!this.peekImplicitSemiColon_(this.peekType_())) {
- name = this.eatIdOpt_();
- }
- this.eatPossibleImplicitSemiColon_();
- return new ContinueStatement(this.getTreeLocation_(start), name);
- },
- parseBreakStatement_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(BREAK);
- var name = null;
- if (!this.peekImplicitSemiColon_(this.peekType_())) {
- name = this.eatIdOpt_();
- }
- this.eatPossibleImplicitSemiColon_();
- return new BreakStatement(this.getTreeLocation_(start), name);
- },
- parseReturnStatement_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(RETURN);
- var expression = null;
- if (!this.peekImplicitSemiColon_(this.peekType_())) {
- expression = this.parseExpression();
- }
- this.eatPossibleImplicitSemiColon_();
- return new ReturnStatement(this.getTreeLocation_(start), expression);
- },
- parseYieldExpression_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(YIELD);
- var expression = null;
- var isYieldFor = false;
- if (!this.peekImplicitSemiColon_(this.peekType_())) {
- isYieldFor = this.eatIf_(STAR);
- expression = this.parseAssignmentExpression();
- }
- return new YieldExpression(this.getTreeLocation_(start), expression, isYieldFor);
- },
- parseAwaitStatement_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(AWAIT);
- var identifier = null;
- if (this.peek_(IDENTIFIER) && this.peek_(EQUAL, 1)) {
- identifier = this.eatId_();
- this.eat_(EQUAL);
- }
- var expression = this.parseExpression();
- this.eatPossibleImplicitSemiColon_();
- return new AwaitStatement(this.getTreeLocation_(start), identifier, expression);
- },
- parseWithStatement_: function() {
- if (this.strictMode_)
- this.reportError_('Strict mode code may not include a with statement');
- var start = this.getTreeStartLocation_();
- this.eat_(WITH);
- this.eat_(OPEN_PAREN);
- var expression = this.parseExpression();
- this.eat_(CLOSE_PAREN);
- var body = this.parseStatement();
- return new WithStatement(this.getTreeLocation_(start), expression, body);
- },
- parseSwitchStatement_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(SWITCH);
- this.eat_(OPEN_PAREN);
- var expression = this.parseExpression();
- this.eat_(CLOSE_PAREN);
- this.eat_(OPEN_CURLY);
- var caseClauses = this.parseCaseClauses_();
- this.eat_(CLOSE_CURLY);
- return new SwitchStatement(this.getTreeLocation_(start), expression, caseClauses);
- },
- parseCaseClauses_: function() {
- var foundDefaultClause = false;
- var result = [];
- while (true) {
- var start = this.getTreeStartLocation_();
- switch (this.peekType_()) {
- case CASE:
- this.nextToken_();
- var expression = this.parseExpression();
- this.eat_(COLON);
- var statements = this.parseCaseStatementsOpt_();
- result.push(new CaseClause(this.getTreeLocation_(start), expression, statements));
- break;
- case DEFAULT:
- if (foundDefaultClause) {
- this.reportError_('Switch statements may have at most one default clause');
- } else {
- foundDefaultClause = true;
- }
- this.nextToken_();
- this.eat_(COLON);
- result.push(new DefaultClause(this.getTreeLocation_(start), this.parseCaseStatementsOpt_()));
- break;
- default:
- return result;
- }
- }
- },
- parseCaseStatementsOpt_: function() {
- var result = [];
- var type;
- while (true) {
- switch (type = this.peekType_()) {
- case CASE:
- case DEFAULT:
- case CLOSE_CURLY:
- case END_OF_FILE:
- return result;
- }
- result.push(this.parseStatement_(type, false, false));
- }
- },
- parseThrowStatement_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(THROW);
- var value = null;
- if (!this.peekImplicitSemiColon_(this.peekType_())) {
- value = this.parseExpression();
- }
- this.eatPossibleImplicitSemiColon_();
- return new ThrowStatement(this.getTreeLocation_(start), value);
- },
- parseTryStatement_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(TRY);
- var body = this.parseBlock_();
- var catchBlock = null;
- if (this.peek_(CATCH)) {
- catchBlock = this.parseCatch_();
- }
- var finallyBlock = null;
- if (this.peek_(FINALLY)) {
- finallyBlock = this.parseFinallyBlock_();
- }
- if (catchBlock == null && finallyBlock == null) {
- this.reportError_("'catch' or 'finally' expected.");
- }
- return new TryStatement(this.getTreeLocation_(start), body, catchBlock, finallyBlock);
- },
- parseCatch_: function() {
- var start = this.getTreeStartLocation_();
- var catchBlock;
- this.eat_(CATCH);
- this.eat_(OPEN_PAREN);
- var binding;
- if (this.peekPattern_(this.peekType_()))
- binding = this.parseBindingPattern_();
- else
- binding = this.parseBindingIdentifier_();
- this.eat_(CLOSE_PAREN);
- var catchBody = this.parseBlock_();
- catchBlock = new Catch(this.getTreeLocation_(start), binding, catchBody);
- return catchBlock;
- },
- parseFinallyBlock_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(FINALLY);
- var finallyBlock = this.parseBlock_();
- return new Finally(this.getTreeLocation_(start), finallyBlock);
- },
- parseDebuggerStatement_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(DEBUGGER);
- this.eatPossibleImplicitSemiColon_();
- return new DebuggerStatement(this.getTreeLocation_(start));
- },
- parsePrimaryExpression_: function() {
- switch (this.peekType_()) {
- case CLASS:
- return parseOptions.classes ? this.parseClassExpression_() : this.parseSyntaxError_('Unexpected reserved word');
- case THIS:
- return this.parseThisExpression_();
- case IDENTIFIER:
- return this.parseIdentifierExpression_();
- case NUMBER:
- case STRING:
- case TRUE:
- case FALSE:
- case NULL:
- return this.parseLiteralExpression_();
- case OPEN_SQUARE:
- return this.parseArrayLiteral_();
- case OPEN_CURLY:
- return this.parseObjectLiteral_();
- case OPEN_PAREN:
- return this.parsePrimaryExpressionStartingWithParen_();
- case SLASH:
- case SLASH_EQUAL:
- return this.parseRegularExpressionLiteral_();
- case NO_SUBSTITUTION_TEMPLATE:
- case TEMPLATE_HEAD:
- return this.parseTemplateLiteral_(null);
- case IMPLEMENTS:
- case INTERFACE:
- case PACKAGE:
- case PRIVATE:
- case PROTECTED:
- case PUBLIC:
- case STATIC:
- case YIELD:
- if (!this.strictMode_)
- return this.parseIdentifierExpression_();
- this.reportReservedIdentifier_(this.nextToken_());
- case END_OF_FILE:
- return this.parseSyntaxError_('Unexpected end of input');
- default:
- return this.parseUnexpectedToken_(this.peekToken_());
- }
- },
- parseSuperExpression_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(SUPER);
- return new SuperExpression(this.getTreeLocation_(start));
- },
- parseThisExpression_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(THIS);
- return new ThisExpression(this.getTreeLocation_(start));
- },
- peekBindingIdentifier_: function(type) {
- return this.peekId_(type);
- },
- parseBindingIdentifier_: function() {
- var start = this.getTreeStartLocation_();
- var identifier = this.eatId_();
- return new BindingIdentifier(this.getTreeLocation_(start), identifier);
- },
- parseIdentifierExpression_: function() {
- var start = this.getTreeStartLocation_();
- var identifier = this.eatId_();
- return new IdentifierExpression(this.getTreeLocation_(start), identifier);
- },
- parseIdentifierNameExpression_: function() {
- var start = this.getTreeStartLocation_();
- var identifier = this.eatIdName_();
- return new IdentifierExpression(this.getTreeLocation_(start), identifier);
- },
- parseLiteralExpression_: function() {
- var start = this.getTreeStartLocation_();
- var literal = this.nextLiteralToken_();
- return new LiteralExpression(this.getTreeLocation_(start), literal);
- },
- nextLiteralToken_: function() {
- return this.nextToken_();
- },
- parseRegularExpressionLiteral_: function() {
- var start = this.getTreeStartLocation_();
- var literal = this.nextRegularExpressionLiteralToken_();
- return new LiteralExpression(this.getTreeLocation_(start), literal);
- },
- peekSpread_: function(type) {
- return type === DOT_DOT_DOT && parseOptions.spread;
- },
- parseArrayLiteral_: function() {
- var start = this.getTreeStartLocation_();
- var expression;
- var elements = [];
- this.eat_(OPEN_SQUARE);
- var type = this.peekType_();
- if (type === FOR && parseOptions.arrayComprehension)
- return this.parseArrayComprehension_(start);
- while (true) {
- type = this.peekType_();
- if (type === COMMA) {
- expression = null;
- } else if (this.peekSpread_(type)) {
- expression = this.parseSpreadExpression_();
- } else if (this.peekAssignmentExpression_(type)) {
- expression = this.parseAssignmentExpression();
- } else {
- break;
- }
- elements.push(expression);
- type = this.peekType_();
- if (type !== CLOSE_SQUARE)
- this.eat_(COMMA);
- }
- this.eat_(CLOSE_SQUARE);
- return new ArrayLiteralExpression(this.getTreeLocation_(start), elements);
- },
- parseArrayComprehension_: function(start) {
- var list = this.parseComprehensionList_();
- var expression = this.parseAssignmentExpression();
- this.eat_(CLOSE_SQUARE);
- return new ArrayComprehension(this.getTreeLocation_(start), list, expression);
- },
- parseComprehensionList_: function() {
- var list = [this.parseComprehensionFor_()];
- while (true) {
- var type = this.peekType_();
- switch (type) {
- case FOR:
- list.push(this.parseComprehensionFor_());
- break;
- case IF:
- list.push(this.parseComprehensionIf_());
- break;
- default:
- return list;
- }
- }
- },
- parseComprehensionFor_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(FOR);
- this.eat_(OPEN_PAREN);
- var left = this.parseForBinding_();
- this.eatId_(OF);
- var iterator = this.parseExpression();
- this.eat_(CLOSE_PAREN);
- return new ComprehensionFor(this.getTreeLocation_(start), left, iterator);
- },
- parseComprehensionIf_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(IF);
- this.eat_(OPEN_PAREN);
- var expression = this.parseExpression();
- this.eat_(CLOSE_PAREN);
- return new ComprehensionIf(this.getTreeLocation_(start), expression);
- },
- parseObjectLiteral_: function() {
- var start = this.getTreeStartLocation_();
- var result = [];
- this.eat_(OPEN_CURLY);
- while (this.peekPropertyDefinition_(this.peekType_())) {
- var propertyDefinition = this.parsePropertyDefinition();
- result.push(propertyDefinition);
- if (!this.eatIf_(COMMA))
- break;
- }
- this.eat_(CLOSE_CURLY);
- return new ObjectLiteralExpression(this.getTreeLocation_(start), result);
- },
- parsePropertyDefinition: function() {
- var start = this.getTreeStartLocation_();
- var isGenerator = false;
- var isStatic = false;
- if (parseOptions.generators && parseOptions.propertyMethods && this.peek_(STAR)) {
- return this.parseGeneratorMethod_(start, isStatic, []);
- }
- var token = this.peekToken_();
- var name = this.parsePropertyName_();
- if (parseOptions.propertyMethods && this.peek_(OPEN_PAREN))
- return this.parseMethod_(start, isStatic, isGenerator, name, []);
- if (this.eatIf_(COLON)) {
- var value = this.parseAssignmentExpression();
- return new PropertyNameAssignment(this.getTreeLocation_(start), name, value);
- }
- var type = this.peekType_();
- if (name.type === LITERAL_PROPERTY_NAME) {
- var nameLiteral = name.literalToken;
- if (nameLiteral.value === GET && this.peekPropertyName_(type)) {
- return this.parseGetAccessor_(start, isStatic, []);
- }
- if (nameLiteral.value === SET && this.peekPropertyName_(type)) {
- return this.parseSetAccessor_(start, isStatic, []);
- }
- if (parseOptions.propertyNameShorthand && nameLiteral.type === IDENTIFIER || !this.strictMode_ && nameLiteral.type === YIELD) {
- if (this.peek_(EQUAL)) {
- token = this.nextToken_();
- var expr = this.parseAssignmentExpression();
- return this.coverInitialisedName_ = new CoverInitialisedName(this.getTreeLocation_(start), nameLiteral, token, expr);
- }
- if (nameLiteral.type === YIELD)
- nameLiteral = new IdentifierToken(nameLiteral.location, YIELD);
- return new PropertyNameShorthand(this.getTreeLocation_(start), nameLiteral);
- }
- if (this.strictMode_ && nameLiteral.isStrictKeyword())
- this.reportReservedIdentifier_(nameLiteral);
- }
- if (name.type === COMPUTED_PROPERTY_NAME)
- token = this.peekToken_();
- return this.parseUnexpectedToken_(token);
- },
- parseClassElement_: function() {
- var start = this.getTreeStartLocation_();
- var annotations = this.parseAnnotations_();
- var type = this.peekType_();
- var isStatic = false,
- isGenerator = false;
- switch (type) {
- case STATIC:
- var staticToken = this.nextToken_();
- type = this.peekType_();
- switch (type) {
- case OPEN_PAREN:
- var name = new LiteralPropertyName(start, staticToken);
- return this.parseMethod_(start, isStatic, isGenerator, name, annotations);
- default:
- isStatic = true;
- if (type === STAR && parseOptions.generators)
- return this.parseGeneratorMethod_(start, true, annotations);
- return this.parseGetSetOrMethod_(start, isStatic, annotations);
- }
- break;
- case STAR:
- return this.parseGeneratorMethod_(start, isStatic, annotations);
- default:
- return this.parseGetSetOrMethod_(start, isStatic, annotations);
- }
- },
- parseGeneratorMethod_: function(start, isStatic, annotations) {
- var isGenerator = true;
- this.eat_(STAR);
- var name = this.parsePropertyName_();
- return this.parseMethod_(start, isStatic, isGenerator, name, annotations);
- },
- parseMethod_: function(start, isStatic, isGenerator, name, annotations) {
- this.eat_(OPEN_PAREN);
- var formalParameterList = this.parseFormalParameterList_();
- this.eat_(CLOSE_PAREN);
- var typeAnnotation = this.parseTypeAnnotationOpt_();
- var functionBody = this.parseFunctionBody_(isGenerator, formalParameterList);
- return new PropertyMethodAssignment(this.getTreeLocation_(start), isStatic, isGenerator, name, formalParameterList, typeAnnotation, annotations, functionBody);
- },
- parseGetSetOrMethod_: function(start, isStatic, annotations) {
- var isGenerator = false;
- var name = this.parsePropertyName_();
- var type = this.peekType_();
- if (name.type === LITERAL_PROPERTY_NAME && name.literalToken.value === GET && this.peekPropertyName_(type)) {
- return this.parseGetAccessor_(start, isStatic, annotations);
- }
- if (name.type === LITERAL_PROPERTY_NAME && name.literalToken.value === SET && this.peekPropertyName_(type)) {
- return this.parseSetAccessor_(start, isStatic, annotations);
- }
- return this.parseMethod_(start, isStatic, isGenerator, name, annotations);
- },
- parseGetAccessor_: function(start, isStatic, annotations) {
- var isGenerator = false;
- var name = this.parsePropertyName_();
- this.eat_(OPEN_PAREN);
- this.eat_(CLOSE_PAREN);
- var typeAnnotation = this.parseTypeAnnotationOpt_();
- var body = this.parseFunctionBody_(isGenerator, null);
- return new GetAccessor(this.getTreeLocation_(start), isStatic, name, typeAnnotation, annotations, body);
- },
- parseSetAccessor_: function(start, isStatic, annotations) {
- var isGenerator = false;
- var name = this.parsePropertyName_();
- this.eat_(OPEN_PAREN);
- var parameter = this.parsePropertySetParameterList_();
- this.eat_(CLOSE_PAREN);
- var body = this.parseFunctionBody_(isGenerator, parameter);
- return new SetAccessor(this.getTreeLocation_(start), isStatic, name, parameter, annotations, body);
- },
- peekPropertyDefinition_: function(type) {
- return this.peekPropertyName_(type) || type == STAR && parseOptions.propertyMethods && parseOptions.generators;
- },
- peekPropertyName_: function(type) {
- switch (type) {
- case IDENTIFIER:
- case STRING:
- case NUMBER:
- return true;
- case OPEN_SQUARE:
- return parseOptions.computedPropertyNames;
- default:
- return this.peekToken_().isKeyword();
- }
- },
- peekPredefinedString_: function(string) {
- var token = this.peekToken_();
- return token.type === IDENTIFIER && token.value === string;
- },
- parsePropertySetParameterList_: function() {
- var start = this.getTreeStartLocation_();
- var binding;
- this.pushAnnotations_();
- if (this.peekPattern_(this.peekType_()))
- binding = this.parseBindingPattern_();
- else
- binding = this.parseBindingIdentifier_();
- var typeAnnotation = this.parseTypeAnnotationOpt_();
- return new FormalParameter(this.getTreeLocation_(start), new BindingElement(this.getTreeLocation_(start), binding, null), typeAnnotation, this.popAnnotations_());
- },
- parsePrimaryExpressionStartingWithParen_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(OPEN_PAREN);
- if (this.peek_(FOR) && parseOptions.generatorComprehension)
- return this.parseGeneratorComprehension_(start);
- return this.parseCoverFormals_(start);
- },
- parseSyntaxError_: function(message) {
- var start = this.getTreeStartLocation_();
- this.reportError_(message);
- var token = this.nextToken_();
- return new SyntaxErrorTree(this.getTreeLocation_(start), token, message);
- },
- parseUnexpectedToken_: function(name) {
- return this.parseSyntaxError_(("Unexpected token " + name));
- },
- peekExpression_: function(type) {
- switch (type) {
- case NO_SUBSTITUTION_TEMPLATE:
- case TEMPLATE_HEAD:
- return parseOptions.templateLiterals;
- case BANG:
- case CLASS:
- case DELETE:
- case FALSE:
- case FUNCTION:
- case IDENTIFIER:
- case MINUS:
- case MINUS_MINUS:
- case NEW:
- case NULL:
- case NUMBER:
- case OPEN_CURLY:
- case OPEN_PAREN:
- case OPEN_SQUARE:
- case PLUS:
- case PLUS_PLUS:
- case SLASH:
- case SLASH_EQUAL:
- case STRING:
- case SUPER:
- case THIS:
- case TILDE:
- case TRUE:
- case TYPEOF:
- case VOID:
- case YIELD:
- return true;
- default:
- return false;
- }
- },
- parseExpression: function() {
- var expressionIn = arguments[0] !== (void 0) ? arguments[0] : Expression.IN;
- var start = this.getTreeStartLocation_();
- var result = this.parseAssignmentExpression(expressionIn);
- if (this.peek_(COMMA)) {
- var exprs = [result];
- while (this.eatIf_(COMMA)) {
- exprs.push(this.parseAssignmentExpression(expressionIn));
- }
- return new CommaExpression(this.getTreeLocation_(start), exprs);
- }
- return result;
- },
- peekAssignmentExpression_: function(type) {
- return this.peekExpression_(type);
- },
- parseAssignmentExpression: function() {
- var expressionIn = arguments[0] !== (void 0) ? arguments[0] : Expression.NORMAL;
- var allowCoverGrammar = arguments[1];
- if (this.allowYield_ && this.peek_(YIELD))
- return this.parseYieldExpression_();
- var start = this.getTreeStartLocation_();
- var left = this.parseConditional_(expressionIn);
- var type = this.peekType_();
- if (type === ARROW && (left.type === COVER_FORMALS || left.type === IDENTIFIER_EXPRESSION)) {
- return this.parseArrowFunction_(start, left);
- }
- if (this.peekAssignmentOperator_(type)) {
- if (type === EQUAL)
- left = this.transformLeftHandSideExpression_(left);
- else
- left = this.toParenExpression_(left);
- if (!allowCoverGrammar)
- this.ensureAssignmenExpression_();
- if (!left.isLeftHandSideExpression() && !left.isPattern()) {
- this.reportError_('Left hand side of assignment must be new, call, member, function, primary expressions or destructuring pattern');
- }
- var operator = this.nextToken_();
- var right = this.parseAssignmentExpression(expressionIn);
- return new BinaryOperator(this.getTreeLocation_(start), left, operator, right);
- }
- left = this.toParenExpression_(left);
- if (!allowCoverGrammar)
- this.ensureAssignmenExpression_();
- return left;
- },
- ensureAssignmenExpression_: function() {
- if (this.coverInitialisedName_) {
- var token = this.coverInitialisedName_.equalToken;
- this.reportError_(token.location, ("Unexpected token '" + token + "'"));
- this.coverInitialisedName_ = null;
- }
- },
- transformLeftHandSideExpression_: function(tree) {
- switch (tree.type) {
- case ARRAY_LITERAL_EXPRESSION:
- case OBJECT_LITERAL_EXPRESSION:
- var transformer = new AssignmentPatternTransformer();
- var transformedTree;
- try {
- transformedTree = transformer.transformAny(tree);
- } catch (ex) {
- if (!(ex instanceof AssignmentPatternTransformerError))
- throw ex;
- }
- if (transformedTree) {
- this.coverInitialisedName_ = null;
- return transformedTree;
- }
- break;
- case PAREN_EXPRESSION:
- var expression = this.transformLeftHandSideExpression_(tree.expression);
- if (expression !== tree.expression)
- return new ParenExpression(tree.location, expression);
- }
- return tree;
- },
- peekAssignmentOperator_: function(type) {
- return isAssignmentOperator(type);
- },
- parseConditional_: function(expressionIn) {
- var start = this.getTreeStartLocation_();
- var condition = this.parseLogicalOR_(expressionIn);
- if (this.eatIf_(QUESTION)) {
- condition = this.toParenExpression_(condition);
- var left = this.parseAssignmentExpression();
- this.eat_(COLON);
- var right = this.parseAssignmentExpression(expressionIn);
- return new ConditionalExpression(this.getTreeLocation_(start), condition, left, right);
- }
- return condition;
- },
- newBinaryOperator_: function(start, left, operator, right) {
- left = this.toParenExpression_(left);
- right = this.toParenExpression_(right);
- return new BinaryOperator(this.getTreeLocation_(start), left, operator, right);
- },
- parseLogicalOR_: function(expressionIn) {
- var start = this.getTreeStartLocation_();
- var left = this.parseLogicalAND_(expressionIn);
- var operator;
- while (operator = this.eatOpt_(OR)) {
- var right = this.parseLogicalAND_(expressionIn);
- left = this.newBinaryOperator_(start, left, operator, right);
- }
- return left;
- },
- parseLogicalAND_: function(expressionIn) {
- var start = this.getTreeStartLocation_();
- var left = this.parseBitwiseOR_(expressionIn);
- var operator;
- while (operator = this.eatOpt_(AND)) {
- var right = this.parseBitwiseOR_(expressionIn);
- left = this.newBinaryOperator_(start, left, operator, right);
- }
- return left;
- },
- parseBitwiseOR_: function(expressionIn) {
- var start = this.getTreeStartLocation_();
- var left = this.parseBitwiseXOR_(expressionIn);
- var operator;
- while (operator = this.eatOpt_(BAR)) {
- var right = this.parseBitwiseXOR_(expressionIn);
- left = this.newBinaryOperator_(start, left, operator, right);
- }
- return left;
- },
- parseBitwiseXOR_: function(expressionIn) {
- var start = this.getTreeStartLocation_();
- var left = this.parseBitwiseAND_(expressionIn);
- var operator;
- while (operator = this.eatOpt_(CARET)) {
- var right = this.parseBitwiseAND_(expressionIn);
- left = this.newBinaryOperator_(start, left, operator, right);
- }
- return left;
- },
- parseBitwiseAND_: function(expressionIn) {
- var start = this.getTreeStartLocation_();
- var left = this.parseEquality_(expressionIn);
- var operator;
- while (operator = this.eatOpt_(AMPERSAND)) {
- var right = this.parseEquality_(expressionIn);
- left = this.newBinaryOperator_(start, left, operator, right);
- }
- return left;
- },
- parseEquality_: function(expressionIn) {
- var start = this.getTreeStartLocation_();
- var left = this.parseRelational_(expressionIn);
- while (this.peekEqualityOperator_(this.peekType_())) {
- var operator = this.nextToken_();
- var right = this.parseRelational_(expressionIn);
- left = this.newBinaryOperator_(start, left, operator, right);
- }
- return left;
- },
- peekEqualityOperator_: function(type) {
- switch (type) {
- case EQUAL_EQUAL:
- case NOT_EQUAL:
- case EQUAL_EQUAL_EQUAL:
- case NOT_EQUAL_EQUAL:
- return true;
- }
- return false;
- },
- parseRelational_: function(expressionIn) {
- var start = this.getTreeStartLocation_();
- var left = this.parseShiftExpression_();
- while (this.peekRelationalOperator_(expressionIn)) {
- var operator = this.nextToken_();
- var right = this.parseShiftExpression_();
- left = this.newBinaryOperator_(start, left, operator, right);
- }
- return left;
- },
- peekRelationalOperator_: function(expressionIn) {
- switch (this.peekType_()) {
- case OPEN_ANGLE:
- case CLOSE_ANGLE:
- case GREATER_EQUAL:
- case LESS_EQUAL:
- case INSTANCEOF:
- return true;
- case IN:
- return expressionIn == Expression.NORMAL;
- default:
- return false;
- }
- },
- parseShiftExpression_: function() {
- var start = this.getTreeStartLocation_();
- var left = this.parseAdditiveExpression_();
- while (this.peekShiftOperator_(this.peekType_())) {
- var operator = this.nextToken_();
- var right = this.parseAdditiveExpression_();
- left = this.newBinaryOperator_(start, left, operator, right);
- }
- return left;
- },
- peekShiftOperator_: function(type) {
- switch (type) {
- case LEFT_SHIFT:
- case RIGHT_SHIFT:
- case UNSIGNED_RIGHT_SHIFT:
- return true;
- default:
- return false;
- }
- },
- parseAdditiveExpression_: function() {
- var start = this.getTreeStartLocation_();
- var left = this.parseMultiplicativeExpression_();
- while (this.peekAdditiveOperator_(this.peekType_())) {
- var operator = this.nextToken_();
- var right = this.parseMultiplicativeExpression_();
- left = this.newBinaryOperator_(start, left, operator, right);
- }
- return left;
- },
- peekAdditiveOperator_: function(type) {
- switch (type) {
- case PLUS:
- case MINUS:
- return true;
- default:
- return false;
- }
- },
- parseMultiplicativeExpression_: function() {
- var start = this.getTreeStartLocation_();
- var left = this.parseUnaryExpression_();
- while (this.peekMultiplicativeOperator_(this.peekType_())) {
- var operator = this.nextToken_();
- var right = this.parseUnaryExpression_();
- left = this.newBinaryOperator_(start, left, operator, right);
- }
- return left;
- },
- peekMultiplicativeOperator_: function(type) {
- switch (type) {
- case STAR:
- case SLASH:
- case PERCENT:
- return true;
- default:
- return false;
- }
- },
- parseUnaryExpression_: function() {
- var start = this.getTreeStartLocation_();
- if (this.peekUnaryOperator_(this.peekType_())) {
- var operator = this.nextToken_();
- var operand = this.parseUnaryExpression_();
- operand = this.toParenExpression_(operand);
- return new UnaryExpression(this.getTreeLocation_(start), operator, operand);
- }
- return this.parsePostfixExpression_();
- },
- peekUnaryOperator_: function(type) {
- switch (type) {
- case DELETE:
- case VOID:
- case TYPEOF:
- case PLUS_PLUS:
- case MINUS_MINUS:
- case PLUS:
- case MINUS:
- case TILDE:
- case BANG:
- return true;
- default:
- return false;
- }
- },
- parsePostfixExpression_: function() {
- var start = this.getTreeStartLocation_();
- var operand = this.parseLeftHandSideExpression_();
- while (this.peekPostfixOperator_(this.peekType_())) {
- operand = this.toParenExpression_(operand);
- var operator = this.nextToken_();
- operand = new PostfixExpression(this.getTreeLocation_(start), operand, operator);
- }
- return operand;
- },
- peekPostfixOperator_: function(type) {
- switch (type) {
- case PLUS_PLUS:
- case MINUS_MINUS:
- var token = this.peekTokenNoLineTerminator_();
- return token !== null;
- }
- return false;
- },
- parseLeftHandSideExpression_: function() {
- var start = this.getTreeStartLocation_();
- var operand = this.parseNewExpression_();
- if (!(operand instanceof NewExpression) || operand.args != null) {
- loop: while (true) {
- switch (this.peekType_()) {
- case OPEN_PAREN:
- operand = this.toParenExpression_(operand);
- operand = this.parseCallExpression_(start, operand);
- break;
- case OPEN_SQUARE:
- operand = this.toParenExpression_(operand);
- operand = this.parseMemberLookupExpression_(start, operand);
- break;
- case PERIOD:
- operand = this.toParenExpression_(operand);
- operand = this.parseMemberExpression_(start, operand);
- break;
- case NO_SUBSTITUTION_TEMPLATE:
- case TEMPLATE_HEAD:
- if (!parseOptions.templateLiterals)
- break loop;
- operand = this.toParenExpression_(operand);
- operand = this.parseTemplateLiteral_(operand);
- break;
- default:
- break loop;
- }
- }
- }
- return operand;
- },
- parseMemberExpressionNoNew_: function() {
- var start = this.getTreeStartLocation_();
- var operand;
- if (this.peekType_() === FUNCTION) {
- operand = this.parseFunctionExpression_();
- } else {
- operand = this.parsePrimaryExpression_();
- }
- loop: while (true) {
- switch (this.peekType_()) {
- case OPEN_SQUARE:
- operand = this.toParenExpression_(operand);
- operand = this.parseMemberLookupExpression_(start, operand);
- break;
- case PERIOD:
- operand = this.toParenExpression_(operand);
- operand = this.parseMemberExpression_(start, operand);
- break;
- case NO_SUBSTITUTION_TEMPLATE:
- case TEMPLATE_HEAD:
- if (!parseOptions.templateLiterals)
- break loop;
- operand = this.toParenExpression_(operand);
- operand = this.parseTemplateLiteral_(operand);
- break;
- default:
- break loop;
- }
- }
- return operand;
- },
- parseMemberExpression_: function(start, operand) {
- this.nextToken_();
- var name = this.eatIdName_();
- return new MemberExpression(this.getTreeLocation_(start), operand, name);
- },
- parseMemberLookupExpression_: function(start, operand) {
- this.nextToken_();
- var member = this.parseExpression();
- this.eat_(CLOSE_SQUARE);
- return new MemberLookupExpression(this.getTreeLocation_(start), operand, member);
- },
- parseCallExpression_: function(start, operand) {
- var args = this.parseArguments_();
- return new CallExpression(this.getTreeLocation_(start), operand, args);
- },
- parseNewExpression_: function() {
- var operand;
- switch (this.peekType_()) {
- case NEW:
- var start = this.getTreeStartLocation_();
- this.eat_(NEW);
- if (this.peek_(SUPER))
- operand = this.parseSuperExpression_();
- else
- operand = this.toParenExpression_(this.parseNewExpression_());
- var args = null;
- if (this.peek_(OPEN_PAREN)) {
- args = this.parseArguments_();
- }
- return new NewExpression(this.getTreeLocation_(start), operand, args);
- case SUPER:
- operand = this.parseSuperExpression_();
- var type = this.peekType_();
- switch (type) {
- case OPEN_SQUARE:
- return this.parseMemberLookupExpression_(start, operand);
- case PERIOD:
- return this.parseMemberExpression_(start, operand);
- case OPEN_PAREN:
- return this.parseCallExpression_(start, operand);
- default:
- return this.parseUnexpectedToken_(type);
- }
- break;
- default:
- return this.parseMemberExpressionNoNew_();
- }
- },
- parseArguments_: function() {
- var start = this.getTreeStartLocation_();
- var args = [];
- this.eat_(OPEN_PAREN);
- if (!this.peek_(CLOSE_PAREN)) {
- args.push(this.parseArgument_());
- while (this.eatIf_(COMMA)) {
- args.push(this.parseArgument_());
- }
- }
- this.eat_(CLOSE_PAREN);
- return new ArgumentList(this.getTreeLocation_(start), args);
- },
- parseArgument_: function() {
- if (this.peekSpread_(this.peekType_()))
- return this.parseSpreadExpression_();
- return this.parseAssignmentExpression();
- },
- parseArrowFunction_: function(start, tree) {
- var formals;
- if (tree.type === IDENTIFIER_EXPRESSION) {
- var id = new BindingIdentifier(tree.location, tree.identifierToken);
- var formals = new FormalParameterList(this.getTreeLocation_(start), [new FormalParameter(id.location, new BindingElement(id.location, id, null), null, [])]);
- } else {
- formals = this.toFormalParameters_(tree);
- }
- this.eat_(ARROW);
- var body = this.parseConciseBody_();
- return new ArrowFunctionExpression(this.getTreeLocation_(start), formals, body);
- },
- parseCoverFormals_: function(start) {
- var expressions = [];
- if (!this.peek_(CLOSE_PAREN)) {
- do {
- var type = this.peekType_();
- if (this.peekRest_(type)) {
- expressions.push(this.parseRestParameter_());
- break;
- } else {
- expressions.push(this.parseAssignmentExpression(Expression.NORMAL, true));
- }
- if (this.eatIf_(COMMA))
- continue;
- } while (!this.peek_(CLOSE_PAREN) && !this.isAtEnd());
- }
- this.eat_(CLOSE_PAREN);
- return new CoverFormals(this.getTreeLocation_(start), expressions);
- },
- transformCoverFormals_: function(f, tree) {
- try {
- return f(tree);
- } catch (ex) {
- if (!(ex instanceof CoverFormalsTransformerError))
- throw ex;
- this.reportError_(ex.location, ex.message);
- return new SyntaxErrorTree(ex.location, null, ex.message);
- }
- },
- toParenExpression_: function(tree) {
- if (tree.type !== COVER_FORMALS)
- return tree;
- return this.transformCoverFormals_(toParenExpression, tree);
- },
- toFormalParameters_: function(tree) {
- if (tree.type !== COVER_FORMALS)
- return tree;
- var transformed = this.transformCoverFormals_(toFormalParameters, tree);
- this.coverInitialisedName_ = null;
- return transformed;
- },
- transformCoverFormalsToArrowFormals_: function(coverFormals) {
- var formals = null;
- try {
- formals = toFormalParameters(coverFormals);
- } catch (ex) {
- if (!(ex instanceof CoverFormalsTransformerError))
- throw ex;
- }
- return formals;
- },
- peekArrow_: function(type) {
- return type === ARROW && parseOptions.arrowFunctions;
- },
- parseConciseBody_: function() {
- if (this.peek_(OPEN_CURLY))
- return this.parseFunctionBody_();
- return this.parseAssignmentExpression();
- },
- parseGeneratorComprehension_: function(start) {
- var comprehensionList = this.parseComprehensionList_();
- var expression = this.parseAssignmentExpression();
- this.eat_(CLOSE_PAREN);
- return new GeneratorComprehension(this.getTreeLocation_(start), comprehensionList, expression);
- },
- parseForBinding_: function() {
- if (this.peekPattern_(this.peekType_()))
- return this.parseBindingPattern_();
- return this.parseBindingIdentifier_();
- },
- peekPattern_: function(type) {
- return parseOptions.destructuring && (this.peekObjectPattern_(type) || this.peekArrayPattern_(type));
- },
- peekArrayPattern_: function(type) {
- return type === OPEN_SQUARE;
- },
- peekObjectPattern_: function(type) {
- return type === OPEN_CURLY;
- },
- parseBindingPattern_: function() {
- if (this.peekArrayPattern_(this.peekType_()))
- return this.parseArrayBindingPattern_();
- return this.parseObjectBindingPattern_();
- },
- parseArrayBindingPattern_: function() {
- var start = this.getTreeStartLocation_();
- var elements = [];
- this.eat_(OPEN_SQUARE);
- var type;
- while ((type = this.peekType_()) === COMMA || this.peekBindingElement_(type) || this.peekRest_(type)) {
- this.parseElisionOpt_(elements);
- if (this.peekRest_(this.peekType_())) {
- elements.push(this.parseBindingRestElement_());
- break;
- } else {
- elements.push(this.parseBindingElement_());
- if (this.peek_(COMMA) && !this.peek_(CLOSE_SQUARE, 1)) {
- this.nextToken_();
- }
- }
- }
- this.eat_(CLOSE_SQUARE);
- return new ArrayPattern(this.getTreeLocation_(start), elements);
- },
- parseBindingElementList_: function(elements) {
- this.parseElisionOpt_(elements);
- elements.push(this.parseBindingElement_());
- while (this.eatIf_(COMMA)) {
- this.parseElisionOpt_(elements);
- elements.push(this.parseBindingElement_());
- }
- },
- parseElisionOpt_: function(elements) {
- while (this.eatIf_(COMMA)) {
- elements.push(null);
- }
- },
- peekBindingElement_: function(type) {
- return this.peekBindingIdentifier_(type) || this.peekPattern_(type);
- },
- parseBindingElement_: function() {
- var initialiser = arguments[0] !== (void 0) ? arguments[0] : Initialiser.OPTIONAL;
- var start = this.getTreeStartLocation_();
- var binding = this.parseBindingElementBinding_();
- var initialiser = this.parseBindingElementInitialiser_(initialiser);
- return new BindingElement(this.getTreeLocation_(start), binding, initialiser);
- },
- parseBindingElementBinding_: function() {
- if (this.peekPattern_(this.peekType_()))
- return this.parseBindingPattern_();
- return this.parseBindingIdentifier_();
- },
- parseBindingElementInitialiser_: function() {
- var initialiser = arguments[0] !== (void 0) ? arguments[0] : Initialiser.OPTIONAL;
- if (this.peek_(EQUAL) || initialiser === Initialiser.REQUIRED) {
- return this.parseInitialiser_();
- }
- return null;
- },
- parseBindingRestElement_: function() {
- var start = this.getTreeStartLocation_();
- this.eat_(DOT_DOT_DOT);
- var identifier = this.parseBindingIdentifier_();
- return new SpreadPatternElement(this.getTreeLocation_(start), identifier);
- },
- parseObjectBindingPattern_: function() {
- var start = this.getTreeStartLocation_();
- var elements = [];
- this.eat_(OPEN_CURLY);
- while (this.peekBindingProperty_(this.peekType_())) {
- elements.push(this.parseBindingProperty_());
- if (!this.eatIf_(COMMA))
- break;
- }
- this.eat_(CLOSE_CURLY);
- return new ObjectPattern(this.getTreeLocation_(start), elements);
- },
- peekBindingProperty_: function(type) {
- return this.peekBindingIdentifier_(type) || this.peekPropertyName_(type);
- },
- parseBindingProperty_: function() {
- var start = this.getTreeStartLocation_();
- var name = this.parsePropertyName_();
- var requireColon = name.type !== LITERAL_PROPERTY_NAME || !name.literalToken.isStrictKeyword() && name.literalToken.type !== IDENTIFIER;
- if (requireColon || this.peek_(COLON)) {
- this.eat_(COLON);
- var binding = this.parseBindingElement_();
- return new ObjectPatternField(this.getTreeLocation_(start), name, binding);
- }
- var token = name.literalToken;
- if (this.strictMode_ && token.isStrictKeyword())
- this.reportReservedIdentifier_(token);
- var binding = new BindingIdentifier(name.location, token);
- var initialiser = null;
- if (this.peek_(EQUAL))
- initialiser = this.parseInitialiser_();
- return new BindingElement(this.getTreeLocation_(start), binding, initialiser);
- },
- parseTemplateLiteral_: function(operand) {
- if (!parseOptions.templateLiterals)
- return this.parseUnexpectedToken_('`');
- var start = operand ? operand.location.start : this.getTreeStartLocation_();
- var token = this.nextToken_();
- var elements = [new TemplateLiteralPortion(token.location, token)];
- if (token.type === NO_SUBSTITUTION_TEMPLATE) {
- return new TemplateLiteralExpression(this.getTreeLocation_(start), operand, elements);
- }
- var expression = this.parseExpression();
- elements.push(new TemplateSubstitution(expression.location, expression));
- while (expression.type !== SYNTAX_ERROR_TREE) {
- token = this.nextTemplateLiteralToken_();
- if (token.type === ERROR || token.type === END_OF_FILE)
- break;
- elements.push(new TemplateLiteralPortion(token.location, token));
- if (token.type === TEMPLATE_TAIL)
- break;
- expression = this.parseExpression();
- elements.push(new TemplateSubstitution(expression.location, expression));
- }
- return new TemplateLiteralExpression(this.getTreeLocation_(start), operand, elements);
- },
- parseTypeAnnotationOpt_: function() {
- if (parseOptions.types && this.eatOpt_(COLON)) {
- return this.parseType_();
- }
- return null;
- },
- parseType_: function() {
- var start = this.getTreeStartLocation_();
- var elementType;
- switch (this.peekType_()) {
- case IDENTIFIER:
- elementType = this.parseNamedOrPredefinedType_();
- break;
- case NEW:
- elementType = this.parseConstructorType_();
- break;
- case OPEN_CURLY:
- elementType = this.parseObjectType_();
- break;
- case OPEN_PAREN:
- elementType = this.parseFunctionType_();
- break;
- case VOID:
- var token = this.nextToken_();
- return new PredefinedType(this.getTreeLocation_(start), token);
- default:
- return this.parseUnexpectedToken_(this.peekToken_());
- }
- return this.parseArrayTypeSuffix_(start, elementType);
- },
- parseArrayTypeSuffix_: function(start, elementType) {
- return elementType;
- },
- parseConstructorType_: function() {
- throw 'NYI';
- },
- parseObjectType_: function() {
- throw 'NYI';
- },
- parseFunctionType_: function() {
- throw 'NYI';
- },
- parseNamedOrPredefinedType_: function() {
- var start = this.getTreeStartLocation_();
- switch (this.peekToken_().value) {
- case 'any':
- case 'number':
- case 'boolean':
- case 'string':
- var token = this.nextToken_();
- return new PredefinedType(this.getTreeLocation_(start), token);
- default:
- return this.parseTypeName_();
- }
- },
- parseTypeName_: function() {
- var start = this.getTreeStartLocation_();
- var typeName = new TypeName(this.getTreeLocation_(start), null, this.eatId_());
- while (this.eatIf_(PERIOD)) {
- var memberName = this.eatIdName_();
- typeName = new TypeName(this.getTreeLocation_(start), typeName, memberName);
- }
- return typeName;
- },
- parseAnnotatedDeclarations_: function(allowModuleItem, allowScriptItem) {
- this.pushAnnotations_();
- var declaration = this.parseStatement_(this.peekType_(), allowModuleItem, allowScriptItem);
- if (this.annotations_.length > 0)
- return this.parseSyntaxError_('Unsupported annotated expression');
- return declaration;
- },
- parseAnnotations_: function() {
- var annotations = [];
- while (this.eatIf_(AT)) {
- annotations.push(this.parseAnnotation_());
- }
- return annotations;
- },
- pushAnnotations_: function() {
- this.annotations_ = this.parseAnnotations_();
- },
- popAnnotations_: function() {
- var annotations = this.annotations_;
- this.annotations_ = [];
- return annotations;
- },
- parseAnnotation_: function() {
- var start = this.getTreeStartLocation_();
- var expression = this.parseMemberExpressionNoNew_();
- var args = null;
- if (this.peek_(OPEN_PAREN))
- args = this.parseArguments_();
- return new Annotation(this.getTreeLocation_(start), expression, args);
- },
- eatPossibleImplicitSemiColon_: function() {
- var token = this.peekTokenNoLineTerminator_();
- if (!token)
- return;
- switch (token.type) {
- case SEMI_COLON:
- this.nextToken_();
- return;
- case END_OF_FILE:
- case CLOSE_CURLY:
- return;
- }
- this.reportError_('Semi-colon expected');
- },
- peekImplicitSemiColon_: function() {
- switch (this.peekType_()) {
- case SEMI_COLON:
- case CLOSE_CURLY:
- case END_OF_FILE:
- return true;
- }
- var token = this.peekTokenNoLineTerminator_();
- return token === null;
- },
- eatOpt_: function(expectedTokenType) {
- if (this.peek_(expectedTokenType))
- return this.nextToken_();
- return null;
- },
- eatIdOpt_: function() {
- return this.peek_(IDENTIFIER) ? this.eatId_() : null;
- },
- eatId_: function() {
- var expected = arguments[0];
- var token = this.nextToken_();
- if (!token) {
- if (expected)
- this.reportError_(this.peekToken_(), ("expected '" + expected + "'"));
- return null;
- }
- if (token.type === IDENTIFIER)
- return token;
- if (token.isStrictKeyword()) {
- if (this.strictMode_) {
- this.reportReservedIdentifier_(token);
- } else {
- return new IdentifierToken(token.location, token.type);
- }
- } else {
- this.reportExpectedError_(token, expected || 'identifier');
- }
- return token;
- },
- eatIdName_: function() {
- var t = this.nextToken_();
- if (t.type != IDENTIFIER) {
- if (!t.isKeyword()) {
- this.reportExpectedError_(t, 'identifier');
- return null;
- }
- return new IdentifierToken(t.location, t.type);
- }
- return t;
- },
- eat_: function(expectedTokenType) {
- var token = this.nextToken_();
- if (token.type != expectedTokenType) {
- this.reportExpectedError_(token, expectedTokenType);
- return null;
- }
- return token;
- },
- eatIf_: function(expectedTokenType) {
- if (this.peek_(expectedTokenType)) {
- this.nextToken_();
- return true;
- }
- return false;
- },
- reportExpectedError_: function(token, expected) {
- this.reportError_(token, "'" + expected + "' expected");
- },
- getTreeStartLocation_: function() {
- return this.peekToken_().location.start;
- },
- getTreeEndLocation_: function() {
- return this.scanner_.lastToken.location.end;
- },
- getTreeLocation_: function(start) {
- return new SourceRange(start, this.getTreeEndLocation_());
- },
- handleComment: function(range) {},
- nextToken_: function() {
- return this.scanner_.nextToken();
- },
- nextRegularExpressionLiteralToken_: function() {
- return this.scanner_.nextRegularExpressionLiteralToken();
- },
- nextTemplateLiteralToken_: function() {
- return this.scanner_.nextTemplateLiteralToken();
- },
- isAtEnd: function() {
- return this.scanner_.isAtEnd();
- },
- peek_: function(expectedType, opt_index) {
- return this.peekToken_(opt_index).type === expectedType;
- },
- peekType_: function() {
- return this.peekToken_().type;
- },
- peekToken_: function(opt_index) {
- return this.scanner_.peekToken(opt_index);
- },
- peekTokenNoLineTerminator_: function() {
- return this.scanner_.peekTokenNoLineTerminator();
- },
- reportError_: function() {
- for (var args = [],
- $__64 = 0; $__64 < arguments.length; $__64++)
- args[$__64] = arguments[$__64];
- if (args.length == 1) {
- this.errorReporter_.reportError(this.scanner_.getPosition(), args[0]);
- } else {
- var location = args[0];
- if (location instanceof Token) {
- location = location.location;
- }
- this.errorReporter_.reportError(location.start, args[1]);
- }
- },
- reportReservedIdentifier_: function(token) {
- this.reportError_(token, (token.type + " is a reserved identifier"));
- }
- }, {});
- return {get Parser() {
- return Parser;
- }};
-});
-System.register("traceur@0.0.32/src/util/uid", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/util/uid";
- var uidCounter = 0;
- function getUid() {
- return uidCounter++;
- }
- return {get getUid() {
- return getUid;
- }};
-});
-System.register("traceur@0.0.32/src/util/SourcePosition", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/util/SourcePosition";
- var SourcePosition = function SourcePosition(source, offset) {
- this.source = source;
- this.offset = offset;
- this.line_ = -1;
- this.column_ = -1;
- };
- ($traceurRuntime.createClass)(SourcePosition, {
- get line() {
- if (this.line_ === -1)
- this.line_ = this.source.lineNumberTable.getLine(this.offset);
- return this.line_;
- },
- get column() {
- if (this.column_ === -1)
- this.column_ = this.source.lineNumberTable.getColumn(this.offset);
- return this.column_;
- },
- toString: function() {
- var name = this.source ? this.source.name : '';
- return (name + ":" + (this.line + 1) + ":" + (this.column + 1));
- }
- }, {});
- return {get SourcePosition() {
- return SourcePosition;
- }};
-});
-System.register("traceur@0.0.32/src/syntax/LineNumberTable", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/syntax/LineNumberTable";
- var SourcePosition = System.get("traceur@0.0.32/src/util/SourcePosition").SourcePosition;
- var SourceRange = System.get("traceur@0.0.32/src/util/SourceRange").SourceRange;
- var isLineTerminator = System.get("traceur@0.0.32/src/syntax/Scanner").isLineTerminator;
- var MAX_INT_REPRESENTATION = 9007199254740992;
- function computeLineStartOffsets(source) {
- var lineStartOffsets = [0];
- var k = 1;
- for (var index = 0; index < source.length; index++) {
- var code = source.charCodeAt(index);
- if (isLineTerminator(code)) {
- if (code === 13 && source.charCodeAt(index + 1) === 10) {
- index++;
- }
- lineStartOffsets[k++] = index + 1;
- }
- }
- lineStartOffsets[k++] = MAX_INT_REPRESENTATION;
- return lineStartOffsets;
- }
- var LineNumberTable = function LineNumberTable(sourceFile) {
- this.sourceFile_ = sourceFile;
- this.lineStartOffsets_ = null;
- this.lastLine_ = 0;
- this.lastOffset_ = -1;
- };
- ($traceurRuntime.createClass)(LineNumberTable, {
- ensureLineStartOffsets_: function() {
- if (!this.lineStartOffsets_) {
- this.lineStartOffsets_ = computeLineStartOffsets(this.sourceFile_.contents);
- }
- },
- getSourcePosition: function(offset) {
- return new SourcePosition(this.sourceFile_, offset);
- },
- getLine: function(offset) {
- if (offset === this.lastOffset_)
- return this.lastLine_;
- this.ensureLineStartOffsets_();
- if (offset < 0)
- return 0;
- var line;
- if (offset < this.lastOffset_) {
- for (var i = this.lastLine_; i >= 0; i--) {
- if (this.lineStartOffsets_[i] <= offset) {
- line = i;
- break;
- }
- }
- } else {
- for (var i = this.lastLine_; true; i++) {
- if (this.lineStartOffsets_[i] > offset) {
- line = i - 1;
- break;
- }
- }
- }
- this.lastLine_ = line;
- this.lastOffset_ = offset;
- return line;
- },
- offsetOfLine: function(line) {
- this.ensureLineStartOffsets_();
- return this.lineStartOffsets_[line];
- },
- getColumn: function(offset) {
- var line = this.getLine(offset);
- return offset - this.lineStartOffsets_[line];
- },
- getSourceRange: function(startOffset, endOffset) {
- return new SourceRange(this.getSourcePosition(startOffset), this.getSourcePosition(endOffset));
- }
- }, {});
- return {get LineNumberTable() {
- return LineNumberTable;
- }};
-});
-System.register("traceur@0.0.32/src/syntax/SourceFile", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/syntax/SourceFile";
- var LineNumberTable = System.get("traceur@0.0.32/src/syntax/LineNumberTable").LineNumberTable;
- var getUid = System.get("traceur@0.0.32/src/util/uid").getUid;
- var SourceFile = function SourceFile(name, contents) {
- this.name = name;
- this.contents = contents;
- this.lineNumberTable = new LineNumberTable(this);
- this.uid = getUid();
- };
- ($traceurRuntime.createClass)(SourceFile, {}, {});
- return {get SourceFile() {
- return SourceFile;
- }};
-});
-System.register("traceur@0.0.32/src/util/ArrayMap", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/util/ArrayMap";
- var ArrayMap = function ArrayMap() {
- this.values_ = [];
- this.keys_ = [];
- };
- ($traceurRuntime.createClass)(ArrayMap, {
- has: function(key) {
- return this.keys_.indexOf(key) != -1;
- },
- get: function(key) {
- var index = this.keys_.indexOf(key);
- if (index == -1) {
- return undefined;
- }
- return this.values_[index];
- },
- set: function(key, value) {
- var index = this.keys_.indexOf(key);
- if (index == -1) {
- this.keys_.push(key);
- this.values_.push(value);
- } else {
- this.values_[index] = value;
- }
- },
- addAll: function(other) {
- var keys = other.keys();
- var values = other.values();
- for (var i = 0; i < keys.length; i++) {
- this.set(keys[i], values[i]);
- }
- },
- remove: function(key) {
- var index = this.keys_.indexOf(key);
- if (index == -1) {
- return;
- }
- this.keys_.splice(index, 1);
- this.values_.splice(index, 1);
- },
- keys: function() {
- return this.keys_.concat();
- },
- values: function() {
- return this.values_.concat();
- }
- }, {});
- return {get ArrayMap() {
- return ArrayMap;
- }};
-});
-System.register("traceur@0.0.32/src/util/MutedErrorReporter", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/util/MutedErrorReporter";
- var ErrorReporter = System.get("traceur@0.0.32/src/util/ErrorReporter").ErrorReporter;
- var MutedErrorReporter = function MutedErrorReporter() {
- $traceurRuntime.defaultSuperCall(this, $MutedErrorReporter.prototype, arguments);
- };
- var $MutedErrorReporter = MutedErrorReporter;
- ($traceurRuntime.createClass)(MutedErrorReporter, {reportMessageInternal: function(location, format, args) {}}, {}, ErrorReporter);
- return {get MutedErrorReporter() {
- return MutedErrorReporter;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/PlaceholderParser", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/PlaceholderParser";
- var ArrayMap = System.get("traceur@0.0.32/src/util/ArrayMap").ArrayMap;
- var $__79 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- ARGUMENT_LIST = $__79.ARGUMENT_LIST,
- BLOCK = $__79.BLOCK,
- EXPRESSION_STATEMENT = $__79.EXPRESSION_STATEMENT,
- IDENTIFIER_EXPRESSION = $__79.IDENTIFIER_EXPRESSION;
- var IdentifierToken = System.get("traceur@0.0.32/src/syntax/IdentifierToken").IdentifierToken;
- var LiteralToken = System.get("traceur@0.0.32/src/syntax/LiteralToken").LiteralToken;
- var MutedErrorReporter = System.get("traceur@0.0.32/src/util/MutedErrorReporter").MutedErrorReporter;
- var ParseTree = System.get("traceur@0.0.32/src/syntax/trees/ParseTree").ParseTree;
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var Parser = System.get("traceur@0.0.32/src/syntax/Parser").Parser;
- var $__79 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- LiteralExpression = $__79.LiteralExpression,
- LiteralPropertyName = $__79.LiteralPropertyName,
- PropertyMethodAssignment = $__79.PropertyMethodAssignment,
- PropertyNameAssignment = $__79.PropertyNameAssignment,
- PropertyNameShorthand = $__79.PropertyNameShorthand;
- var SourceFile = System.get("traceur@0.0.32/src/syntax/SourceFile").SourceFile;
- var IDENTIFIER = System.get("traceur@0.0.32/src/syntax/TokenType").IDENTIFIER;
- var $__79 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createArrayLiteralExpression = $__79.createArrayLiteralExpression,
- createBindingIdentifier = $__79.createBindingIdentifier,
- createBlock = $__79.createBlock,
- createBooleanLiteral = $__79.createBooleanLiteral,
- createCommaExpression = $__79.createCommaExpression,
- createExpressionStatement = $__79.createExpressionStatement,
- createFunctionBody = $__79.createFunctionBody,
- createGetAccessor = $__79.createGetAccessor,
- createIdentifierExpression = $__79.createIdentifierExpression,
- createIdentifierToken = $__79.createIdentifierToken,
- createMemberExpression = $__79.createMemberExpression,
- createNullLiteral = $__79.createNullLiteral,
- createNumberLiteral = $__79.createNumberLiteral,
- createParenExpression = $__79.createParenExpression,
- createSetAccessor = $__79.createSetAccessor,
- createStringLiteral = $__79.createStringLiteral,
- createVoid0 = $__79.createVoid0;
- var NOT_FOUND = {};
- var PREFIX = '$__placeholder__';
- var cache = new ArrayMap();
- function parseExpression(sourceLiterals) {
- for (var values = [],
- $__75 = 1; $__75 < arguments.length; $__75++)
- values[$__75 - 1] = arguments[$__75];
- return parse(sourceLiterals, values, (function() {
- return new PlaceholderParser().parseExpression(sourceLiterals);
- }));
- }
- function parseStatement(sourceLiterals) {
- for (var values = [],
- $__76 = 1; $__76 < arguments.length; $__76++)
- values[$__76 - 1] = arguments[$__76];
- return parse(sourceLiterals, values, (function() {
- return new PlaceholderParser().parseStatement(sourceLiterals);
- }));
- }
- function parseStatements(sourceLiterals) {
- for (var values = [],
- $__77 = 1; $__77 < arguments.length; $__77++)
- values[$__77 - 1] = arguments[$__77];
- return parse(sourceLiterals, values, (function() {
- return new PlaceholderParser().parseStatements(sourceLiterals);
- }));
- }
- function parsePropertyDefinition(sourceLiterals) {
- for (var values = [],
- $__78 = 1; $__78 < arguments.length; $__78++)
- values[$__78 - 1] = arguments[$__78];
- return parse(sourceLiterals, values, (function() {
- return new PlaceholderParser().parsePropertyDefinition(sourceLiterals);
- }));
- }
- function parse(sourceLiterals, values, doParse) {
- var tree = cache.get(sourceLiterals);
- if (!tree) {
- tree = doParse();
- cache.set(sourceLiterals, tree);
- }
- if (!values.length)
- return tree;
- if (tree instanceof ParseTree)
- return new PlaceholderTransformer(values).transformAny(tree);
- return new PlaceholderTransformer(values).transformList(tree);
- }
- var counter = 0;
- var PlaceholderParser = function PlaceholderParser() {};
- ($traceurRuntime.createClass)(PlaceholderParser, {
- parseExpression: function(sourceLiterals) {
- return this.parse_(sourceLiterals, (function(p) {
- return p.parseExpression();
- }));
- },
- parseStatement: function(sourceLiterals) {
- return this.parse_(sourceLiterals, (function(p) {
- return p.parseStatement();
- }));
- },
- parseStatements: function(sourceLiterals) {
- return this.parse_(sourceLiterals, (function(p) {
- return p.parseStatements();
- }));
- },
- parsePropertyDefinition: function(sourceLiterals) {
- return this.parse_(sourceLiterals, (function(p) {
- return p.parsePropertyDefinition();
- }));
- },
- parse_: function(sourceLiterals, doParse) {
- var source = sourceLiterals[0];
- for (var i = 1; i < sourceLiterals.length; i++) {
- source += PREFIX + (i - 1) + sourceLiterals[i];
- }
- var file = new SourceFile('@traceur/generated/TemplateParser/' + counter++, source);
- var errorReporter = new MutedErrorReporter();
- var parser = new Parser(file, errorReporter);
- var tree = doParse(parser);
- if (errorReporter.hadError() || !tree || !parser.isAtEnd())
- throw new Error(("Internal error trying to parse:\n\n" + source));
- return tree;
- }
- }, {});
- function convertValueToExpression(value) {
- if (value instanceof ParseTree)
- return value;
- if (value instanceof IdentifierToken)
- return createIdentifierExpression(value);
- if (value instanceof LiteralToken)
- return new LiteralExpression(value.location, value);
- if (Array.isArray(value)) {
- if (value[0] instanceof ParseTree) {
- if (value.length === 1)
- return value[0];
- if (value[0].isStatement())
- return createBlock(value);
- else
- return createParenExpression(createCommaExpression(value));
- }
- return createArrayLiteralExpression(value.map(convertValueToExpression));
- }
- if (value === null)
- return createNullLiteral();
- if (value === undefined)
- return createVoid0();
- switch (typeof value) {
- case 'string':
- return createStringLiteral(value);
- case 'boolean':
- return createBooleanLiteral(value);
- case 'number':
- return createNumberLiteral(value);
- }
- throw new Error('Not implemented');
- }
- function convertValueToIdentifierToken(value) {
- if (value instanceof IdentifierToken)
- return value;
- return createIdentifierToken(value);
- }
- var PlaceholderTransformer = function PlaceholderTransformer(values) {
- $traceurRuntime.superCall(this, $PlaceholderTransformer.prototype, "constructor", []);
- this.values = values;
- };
- var $PlaceholderTransformer = PlaceholderTransformer;
- ($traceurRuntime.createClass)(PlaceholderTransformer, {
- getValueAt: function(index) {
- return this.values[index];
- },
- getValue_: function(str) {
- if (str.indexOf(PREFIX) !== 0)
- return NOT_FOUND;
- return this.getValueAt(Number(str.slice(PREFIX.length)));
- },
- transformIdentifierExpression: function(tree) {
- var value = this.getValue_(tree.identifierToken.value);
- if (value === NOT_FOUND)
- return tree;
- return convertValueToExpression(value);
- },
- transformBindingIdentifier: function(tree) {
- var value = this.getValue_(tree.identifierToken.value);
- if (value === NOT_FOUND)
- return tree;
- return createBindingIdentifier(value);
- },
- transformExpressionStatement: function(tree) {
- if (tree.expression.type === IDENTIFIER_EXPRESSION) {
- var transformedExpression = this.transformIdentifierExpression(tree.expression);
- if (transformedExpression === tree.expression)
- return tree;
- if (transformedExpression.isStatement())
- return transformedExpression;
- return createExpressionStatement(transformedExpression);
- }
- return $traceurRuntime.superCall(this, $PlaceholderTransformer.prototype, "transformExpressionStatement", [tree]);
- },
- transformBlock: function(tree) {
- if (tree.statements.length === 1 && tree.statements[0].type === EXPRESSION_STATEMENT) {
- var transformedStatement = this.transformExpressionStatement(tree.statements[0]);
- if (transformedStatement === tree.statements[0])
- return tree;
- if (transformedStatement.type === BLOCK)
- return transformedStatement;
- }
- return $traceurRuntime.superCall(this, $PlaceholderTransformer.prototype, "transformBlock", [tree]);
- },
- transformFunctionBody: function(tree) {
- if (tree.statements.length === 1 && tree.statements[0].type === EXPRESSION_STATEMENT) {
- var transformedStatement = this.transformExpressionStatement(tree.statements[0]);
- if (transformedStatement === tree.statements[0])
- return tree;
- if (transformedStatement.type === BLOCK)
- return createFunctionBody(transformedStatement.statements);
- }
- return $traceurRuntime.superCall(this, $PlaceholderTransformer.prototype, "transformFunctionBody", [tree]);
- },
- transformMemberExpression: function(tree) {
- var value = this.getValue_(tree.memberName.value);
- if (value === NOT_FOUND)
- return $traceurRuntime.superCall(this, $PlaceholderTransformer.prototype, "transformMemberExpression", [tree]);
- var operand = this.transformAny(tree.operand);
- return createMemberExpression(operand, value);
- },
- transformLiteralPropertyName: function(tree) {
- if (tree.literalToken.type === IDENTIFIER) {
- var value = this.getValue_(tree.literalToken.value);
- if (value !== NOT_FOUND) {
- return new LiteralPropertyName(null, convertValueToIdentifierToken(value));
- }
- }
- return $traceurRuntime.superCall(this, $PlaceholderTransformer.prototype, "transformLiteralPropertyName", [tree]);
- },
- transformArgumentList: function(tree) {
- if (tree.args.length === 1 && tree.args[0].type === IDENTIFIER_EXPRESSION) {
- var arg0 = this.transformAny(tree.args[0]);
- if (arg0 === tree.args[0])
- return tree;
- if (arg0.type === ARGUMENT_LIST)
- return arg0;
- }
- return $traceurRuntime.superCall(this, $PlaceholderTransformer.prototype, "transformArgumentList", [tree]);
- }
- }, {}, ParseTreeTransformer);
- return {
- get parseExpression() {
- return parseExpression;
- },
- get parseStatement() {
- return parseStatement;
- },
- get parseStatements() {
- return parseStatements;
- },
- get parsePropertyDefinition() {
- return parsePropertyDefinition;
- },
- get PlaceholderParser() {
- return PlaceholderParser;
- },
- get PlaceholderTransformer() {
- return PlaceholderTransformer;
- }
- };
-});
-System.register("traceur@0.0.32/src/codegeneration/PrependStatements", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/PrependStatements";
- var $__81 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- EXPRESSION_STATEMENT = $__81.EXPRESSION_STATEMENT,
- LITERAL_EXPRESSION = $__81.LITERAL_EXPRESSION;
- var STRING = System.get("traceur@0.0.32/src/syntax/TokenType").STRING;
- function isStringExpressionStatement(tree) {
- return tree.type === EXPRESSION_STATEMENT && tree.expression.type === LITERAL_EXPRESSION && tree.expression.literalToken.type === STRING;
- }
- function prependStatements(statements) {
- for (var statementsToPrepend = [],
- $__80 = 1; $__80 < arguments.length; $__80++)
- statementsToPrepend[$__80 - 1] = arguments[$__80];
- if (!statements.length)
- return statementsToPrepend;
- if (!statementsToPrepend.length)
- return statements;
- var transformed = [];
- var inProlog = true;
- statements.forEach((function(statement) {
- var $__82;
- if (inProlog && !isStringExpressionStatement(statement)) {
- ($__82 = transformed).push.apply($__82, $traceurRuntime.toObject(statementsToPrepend));
- inProlog = false;
- }
- transformed.push(statement);
- }));
- return transformed;
- }
- return {get prependStatements() {
- return prependStatements;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/TempVarTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/TempVarTransformer";
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var $__84 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- Module = $__84.Module,
- Script = $__84.Script;
- var ARGUMENTS = System.get("traceur@0.0.32/src/syntax/PredefinedName").ARGUMENTS;
- var VAR = System.get("traceur@0.0.32/src/syntax/TokenType").VAR;
- var $__84 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createFunctionBody = $__84.createFunctionBody,
- createThisExpression = $__84.createThisExpression,
- createIdentifierExpression = $__84.createIdentifierExpression,
- createVariableDeclaration = $__84.createVariableDeclaration,
- createVariableDeclarationList = $__84.createVariableDeclarationList,
- createVariableStatement = $__84.createVariableStatement;
- var prependStatements = System.get("traceur@0.0.32/src/codegeneration/PrependStatements").prependStatements;
- function getVars(self) {
- var vars = self.tempVarStack_[self.tempVarStack_.length - 1];
- if (!vars)
- throw new Error('Invalid use of addTempVar');
- return vars;
- }
- var TempVarStatement = function TempVarStatement(name, initialiser) {
- this.name = name;
- this.initialiser = initialiser;
- };
- ($traceurRuntime.createClass)(TempVarStatement, {}, {});
- var TempScope = function TempScope() {
- this.thisName = null;
- this.argumentName = null;
- this.identifiers = [];
- };
- ($traceurRuntime.createClass)(TempScope, {
- push: function(identifier) {
- this.identifiers.push(identifier);
- },
- pop: function() {
- return this.identifiers.pop();
- },
- release: function(obj) {
- for (var i = this.identifiers.length - 1; i >= 0; i--) {
- obj.release_(this.identifiers[i]);
- }
- }
- }, {});
- var TempVarTransformer = function TempVarTransformer(identifierGenerator) {
- $traceurRuntime.superCall(this, $TempVarTransformer.prototype, "constructor", []);
- this.identifierGenerator = identifierGenerator;
- this.tempVarStack_ = [[]];
- this.tempScopeStack_ = [new TempScope()];
- this.namePool_ = [];
- };
- var $TempVarTransformer = TempVarTransformer;
- ($traceurRuntime.createClass)(TempVarTransformer, {
- transformStatements_: function(statements) {
- this.tempVarStack_.push([]);
- var transformedStatements = this.transformList(statements);
- var vars = this.tempVarStack_.pop();
- if (!vars.length)
- return transformedStatements;
- var seenNames = Object.create(null);
- vars = vars.filter((function(tempVarStatement) {
- var $__84 = tempVarStatement,
- name = $__84.name,
- initialiser = $__84.initialiser;
- if (name in seenNames) {
- if (seenNames[name].initialiser || initialiser)
- throw new Error('Invalid use of TempVarTransformer');
- return false;
- }
- seenNames[name] = tempVarStatement;
- return true;
- }));
- var variableStatement = createVariableStatement(createVariableDeclarationList(VAR, vars.map((function($__84) {
- var name = $__84.name,
- initialiser = $__84.initialiser;
- return createVariableDeclaration(name, initialiser);
- }))));
- return prependStatements(transformedStatements, variableStatement);
- },
- transformScript: function(tree) {
- var scriptItemList = this.transformStatements_(tree.scriptItemList);
- if (scriptItemList == tree.scriptItemList) {
- return tree;
- }
- return new Script(tree.location, scriptItemList, tree.moduleName);
- },
- transformModule: function(tree) {
- var scriptItemList = this.transformStatements_(tree.scriptItemList);
- if (scriptItemList == tree.scriptItemList) {
- return tree;
- }
- return new Module(tree.location, scriptItemList, tree.moduleName);
- },
- transformFunctionBody: function(tree) {
- this.pushTempVarState();
- var statements = this.transformStatements_(tree.statements);
- this.popTempVarState();
- if (statements == tree.statements)
- return tree;
- return createFunctionBody(statements);
- },
- getTempIdentifier: function() {
- var name = this.namePool_.length ? this.namePool_.pop() : this.identifierGenerator.generateUniqueIdentifier();
- this.tempScopeStack_[this.tempScopeStack_.length - 1].push(name);
- return name;
- },
- addTempVar: function() {
- var initialiser = arguments[0] !== (void 0) ? arguments[0] : null;
- var vars = getVars(this);
- var uid = this.getTempIdentifier();
- vars.push(new TempVarStatement(uid, initialiser));
- return uid;
- },
- addTempVarForThis: function() {
- var tempScope = this.tempScopeStack_[this.tempScopeStack_.length - 1];
- return tempScope.thisName || (tempScope.thisName = this.addTempVar(createThisExpression()));
- },
- addTempVarForArguments: function() {
- var tempScope = this.tempScopeStack_[this.tempScopeStack_.length - 1];
- return tempScope.argumentName || (tempScope.argumentName = this.addTempVar(createIdentifierExpression(ARGUMENTS)));
- },
- pushTempVarState: function() {
- this.tempScopeStack_.push(new TempScope());
- },
- popTempVarState: function() {
- this.tempScopeStack_.pop().release(this);
- },
- release_: function(name) {
- this.namePool_.push(name);
- }
- }, {}, ParseTreeTransformer);
- return {get TempVarTransformer() {
- return TempVarTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/module/ModuleSymbol", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/module/ModuleSymbol";
- var assert = System.get("traceur@0.0.32/src/util/assert").assert;
- var ExportsList = function ExportsList(normalizedName) {
- this.exports_ = Object.create(null);
- if (normalizedName !== null)
- this.normalizedName = normalizedName.replace(/\\/g, '/');
- else
- this.normalizedName = null;
- };
- ($traceurRuntime.createClass)(ExportsList, {
- addExport: function(name, tree) {
- assert(!this.exports_[name]);
- this.exports_[name] = tree;
- },
- getExport: function(name) {
- return this.exports_[name];
- },
- getExports: function() {
- return Object.keys(this.exports_);
- }
- }, {});
- var ModuleDescription = function ModuleDescription(normalizedName, module) {
- var $__85 = this;
- $traceurRuntime.superCall(this, $ModuleDescription.prototype, "constructor", [normalizedName]);
- Object.getOwnPropertyNames(module).forEach((function(name) {
- $__85.addExport(name, true);
- }));
- };
- var $ModuleDescription = ModuleDescription;
- ($traceurRuntime.createClass)(ModuleDescription, {}, {}, ExportsList);
- var ModuleSymbol = function ModuleSymbol(tree, normalizedName) {
- $traceurRuntime.superCall(this, $ModuleSymbol.prototype, "constructor", [normalizedName]);
- this.tree = tree;
- this.imports_ = Object.create(null);
- };
- var $ModuleSymbol = ModuleSymbol;
- ($traceurRuntime.createClass)(ModuleSymbol, {
- addImport: function(name, tree) {
- assert(!this.imports_[name]);
- this.imports_[name] = tree;
- },
- getImport: function(name) {
- return this.imports_[name];
- }
- }, {}, ExportsList);
- return {
- get ModuleDescription() {
- return ModuleDescription;
- },
- get ModuleSymbol() {
- return ModuleSymbol;
- }
- };
-});
-System.register("traceur@0.0.32/src/codegeneration/module/ModuleVisitor", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/module/ModuleVisitor";
- var ModuleDescription = System.get("traceur@0.0.32/src/codegeneration/module/ModuleSymbol").ModuleDescription;
- var ParseTree = System.get("traceur@0.0.32/src/syntax/trees/ParseTree").ParseTree;
- var ParseTreeVisitor = System.get("traceur@0.0.32/src/syntax/ParseTreeVisitor").ParseTreeVisitor;
- var $__89 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- MODULE_DECLARATION = $__89.MODULE_DECLARATION,
- EXPORT_DECLARATION = $__89.EXPORT_DECLARATION,
- IMPORT_DECLARATION = $__89.IMPORT_DECLARATION;
- var ModuleVisitor = function ModuleVisitor(reporter, loader, moduleSymbol) {
- this.reporter = reporter;
- this.loader_ = loader;
- this.moduleSymbol = moduleSymbol;
- };
- ($traceurRuntime.createClass)(ModuleVisitor, {
- getModuleDescriptionFromCodeUnit_: function(name, codeUnitToModuleInfo) {
- var referrer = this.moduleSymbol.normalizedName;
- var codeUnit = this.loader_.getCodeUnitForModuleSpecifier(name, referrer);
- var moduleDescription = codeUnitToModuleInfo(codeUnit);
- if (!moduleDescription) {
- var msg = (name + " is not a module, required by " + referrer);
- this.reportError(codeUnit.metadata.tree, msg);
- return null;
- }
- return moduleDescription;
- },
- getModuleSymbolForModuleSpecifier: function(name) {
- return this.getModuleDescriptionFromCodeUnit_(name, (function(codeUnit) {
- return codeUnit.metadata.moduleSymbol;
- }));
- },
- getModuleDescriptionForModuleSpecifier: function(name) {
- return this.getModuleDescriptionFromCodeUnit_(name, (function(codeUnit) {
- var moduleDescription = codeUnit.metadata.moduleSymbol;
- if (!moduleDescription && codeUnit.result) {
- moduleDescription = new ModuleDescription(codeUnit.normalizedName, codeUnit.result);
- }
- return moduleDescription;
- }));
- },
- visitFunctionDeclaration: function(tree) {},
- visitFunctionExpression: function(tree) {},
- visitFunctionBody: function(tree) {},
- visitBlock: function(tree) {},
- visitClassDeclaration: function(tree) {},
- visitClassExpression: function(tree) {},
- visitModuleElement_: function(element) {
- switch (element.type) {
- case MODULE_DECLARATION:
- case EXPORT_DECLARATION:
- case IMPORT_DECLARATION:
- this.visitAny(element);
- }
- },
- visitScript: function(tree) {
- tree.scriptItemList.forEach(this.visitModuleElement_, this);
- },
- visitModule: function(tree) {
- tree.scriptItemList.forEach(this.visitModuleElement_, this);
- },
- reportError: function(tree, message) {
- this.reporter.reportError(tree.location.start, message);
- }
- }, {}, ParseTreeVisitor);
- return {get ModuleVisitor() {
- return ModuleVisitor;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/module/ExportVisitor", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/module/ExportVisitor";
- var ModuleVisitor = System.get("traceur@0.0.32/src/codegeneration/module/ModuleVisitor").ModuleVisitor;
- var assert = System.get("traceur@0.0.32/src/util/assert").assert;
- var ExportVisitor = function ExportVisitor(reporter, loaderHooks, moduleSymbol) {
- $traceurRuntime.superCall(this, $ExportVisitor.prototype, "constructor", [reporter, loaderHooks, moduleSymbol]);
- this.inExport_ = false;
- this.moduleSpecifier = null;
- };
- var $ExportVisitor = ExportVisitor;
- ($traceurRuntime.createClass)(ExportVisitor, {
- addExport_: function(name, tree) {
- assert(typeof name == 'string');
- if (this.inExport_)
- this.addExport(name, tree);
- },
- addExport: function(name, tree) {
- var moduleSymbol = this.moduleSymbol;
- var existingExport = moduleSymbol.getExport(name);
- if (existingExport) {
- this.reportError(tree, ("Duplicate export. '" + name + "' was previously ") + ("exported at " + existingExport.location.start));
- } else {
- moduleSymbol.addExport(name, tree);
- }
- },
- visitClassDeclaration: function(tree) {
- this.addExport_(tree.name.identifierToken.value, tree);
- },
- visitExportDeclaration: function(tree) {
- this.inExport_ = true;
- this.visitAny(tree.declaration);
- this.inExport_ = false;
- },
- visitNamedExport: function(tree) {
- this.moduleSpecifier = tree.moduleSpecifier;
- this.visitAny(tree.specifierSet);
- this.moduleSpecifier = null;
- },
- visitExportDefault: function(tree) {
- this.addExport_('default', tree);
- },
- visitExportSpecifier: function(tree) {
- this.addExport_((tree.rhs || tree.lhs).value, tree);
- },
- visitExportStar: function(tree) {
- var $__90 = this;
- var name = this.moduleSpecifier.token.processedValue;
- var moduleDescription = this.getModuleDescriptionForModuleSpecifier(name);
- if (moduleDescription) {
- moduleDescription.getExports().forEach((function(name) {
- $__90.addExport(name, tree);
- }));
- }
- },
- visitFunctionDeclaration: function(tree) {
- this.addExport_(tree.name.identifierToken.value, tree);
- },
- visitModuleDeclaration: function(tree) {
- this.addExport_(tree.identifier.value, tree);
- },
- visitVariableDeclaration: function(tree) {
- this.addExport_(tree.lvalue.identifierToken.value, tree);
- }
- }, {}, ModuleVisitor);
- return {get ExportVisitor() {
- return ExportVisitor;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/module/DirectExportVisitor", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/module/DirectExportVisitor";
- var ExportVisitor = System.get("traceur@0.0.32/src/codegeneration/module/ExportVisitor").ExportVisitor;
- var DirectExportVisitor = function DirectExportVisitor() {
- $traceurRuntime.superCall(this, $DirectExportVisitor.prototype, "constructor", [null, null, null]);
- this.namedExports = [];
- this.starExports = [];
- };
- var $DirectExportVisitor = DirectExportVisitor;
- ($traceurRuntime.createClass)(DirectExportVisitor, {
- addExport: function(name, tree) {
- this.namedExports.push({
- name: name,
- tree: tree,
- moduleSpecifier: this.moduleSpecifier
- });
- },
- visitExportStar: function(tree) {
- this.starExports.push(this.moduleSpecifier);
- },
- hasExports: function() {
- return this.namedExports.length != 0 || this.starExports.length != 0;
- }
- }, {}, ExportVisitor);
- return {get DirectExportVisitor() {
- return DirectExportVisitor;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/ModuleTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/ModuleTransformer";
- var $__95 = Object.freeze(Object.defineProperties(["var __moduleName = ", ";"], {raw: {value: Object.freeze(["var __moduleName = ", ";"])}})),
- $__96 = Object.freeze(Object.defineProperties(["function() {\n ", "\n }"], {raw: {value: Object.freeze(["function() {\n ", "\n }"])}})),
- $__97 = Object.freeze(Object.defineProperties(["$traceurRuntime.ModuleStore.getAnonymousModule(\n ", ");"], {raw: {value: Object.freeze(["$traceurRuntime.ModuleStore.getAnonymousModule(\n ", ");"])}})),
- $__98 = Object.freeze(Object.defineProperties(["System.register(", ", [], ", ");"], {raw: {value: Object.freeze(["System.register(", ", [], ", ");"])}})),
- $__99 = Object.freeze(Object.defineProperties(["get ", "() { return ", "; }"], {raw: {value: Object.freeze(["get ", "() { return ", "; }"])}})),
- $__100 = Object.freeze(Object.defineProperties(["return $traceurRuntime.exportStar(", ")"], {raw: {value: Object.freeze(["return $traceurRuntime.exportStar(", ")"])}})),
- $__101 = Object.freeze(Object.defineProperties(["return ", ""], {raw: {value: Object.freeze(["return ", ""])}})),
- $__102 = Object.freeze(Object.defineProperties(["var $__default = ", ""], {raw: {value: Object.freeze(["var $__default = ", ""])}})),
- $__103 = Object.freeze(Object.defineProperties(["System.get(", ")"], {raw: {value: Object.freeze(["System.get(", ")"])}}));
- var $__106 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- BindingElement = $__106.BindingElement,
- BindingIdentifier = $__106.BindingIdentifier,
- EmptyStatement = $__106.EmptyStatement,
- LiteralPropertyName = $__106.LiteralPropertyName,
- ObjectPattern = $__106.ObjectPattern,
- ObjectPatternField = $__106.ObjectPatternField,
- Script = $__106.Script;
- var DirectExportVisitor = System.get("traceur@0.0.32/src/codegeneration/module/DirectExportVisitor").DirectExportVisitor;
- var TempVarTransformer = System.get("traceur@0.0.32/src/codegeneration/TempVarTransformer").TempVarTransformer;
- var $__106 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- EXPORT_DEFAULT = $__106.EXPORT_DEFAULT,
- EXPORT_SPECIFIER = $__106.EXPORT_SPECIFIER;
- var VAR = System.get("traceur@0.0.32/src/syntax/TokenType").VAR;
- var assert = System.get("traceur@0.0.32/src/util/assert").assert;
- var $__106 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createArgumentList = $__106.createArgumentList,
- createBindingIdentifier = $__106.createBindingIdentifier,
- createExpressionStatement = $__106.createExpressionStatement,
- createIdentifierExpression = $__106.createIdentifierExpression,
- createIdentifierToken = $__106.createIdentifierToken,
- createMemberExpression = $__106.createMemberExpression,
- createObjectLiteralExpression = $__106.createObjectLiteralExpression,
- createUseStrictDirective = $__106.createUseStrictDirective,
- createVariableStatement = $__106.createVariableStatement;
- var $__106 = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser"),
- parseExpression = $__106.parseExpression,
- parsePropertyDefinition = $__106.parsePropertyDefinition,
- parseStatement = $__106.parseStatement,
- parseStatements = $__106.parseStatements;
- var ModuleTransformer = function ModuleTransformer(identifierGenerator) {
- $traceurRuntime.superCall(this, $ModuleTransformer.prototype, "constructor", [identifierGenerator]);
- this.exportVisitor_ = new DirectExportVisitor();
- this.moduleSpecifierKind_ = null;
- this.moduleName = null;
- };
- var $ModuleTransformer = ModuleTransformer;
- ($traceurRuntime.createClass)(ModuleTransformer, {
- getTempVarNameForModuleName: function(moduleName) {
- return '$__' + moduleName.replace(/[^a-zA-Z0-9$]/g, function(c) {
- return '_' + c.charCodeAt(0) + '_';
- }) + '__';
- },
- getTempVarNameForModuleSpecifier: function(moduleSpecifier) {
- var normalizedName = System.normalize(moduleSpecifier.token.processedValue, this.moduleName);
- return this.getTempVarNameForModuleName(normalizedName);
- },
- transformScript: function(tree) {
- this.moduleName = tree.moduleName;
- return $traceurRuntime.superCall(this, $ModuleTransformer.prototype, "transformScript", [tree]);
- },
- transformModule: function(tree) {
- this.moduleName = tree.moduleName;
- this.pushTempVarState();
- var statements = $traceurRuntime.spread(this.transformList(tree.scriptItemList), [this.createExportStatement()]);
- this.popTempVarState();
- statements = this.wrapModule(this.moduleProlog().concat(statements));
- return new Script(tree.location, statements);
- },
- moduleProlog: function() {
- var statements = [createUseStrictDirective()];
- if (this.moduleName)
- statements.push(parseStatement($__95, this.moduleName));
- return statements;
- },
- wrapModule: function(statements) {
- var functionExpression = parseExpression($__96, statements);
- if (this.moduleName === null) {
- return parseStatements($__97, functionExpression);
- }
- return parseStatements($__98, this.moduleName, functionExpression);
- },
- getGetterExport: function($__106) {
- var name = $__106.name,
- tree = $__106.tree,
- moduleSpecifier = $__106.moduleSpecifier;
- var returnExpression;
- switch (tree.type) {
- case EXPORT_DEFAULT:
- returnExpression = createIdentifierExpression('$__default');
- break;
- case EXPORT_SPECIFIER:
- if (moduleSpecifier) {
- var idName = this.getTempVarNameForModuleSpecifier(moduleSpecifier);
- returnExpression = createMemberExpression(idName, tree.lhs);
- } else {
- returnExpression = createIdentifierExpression(tree.lhs);
- }
- break;
- default:
- returnExpression = createIdentifierExpression(name);
- break;
- }
- return parsePropertyDefinition($__99, name, returnExpression);
- },
- getExportProperties: function() {
- var $__104 = this;
- return this.exportVisitor_.namedExports.map((function(exp) {
- return $__104.getGetterExport(exp);
- }));
- },
- createExportStatement: function() {
- var $__104 = this;
- var object = createObjectLiteralExpression(this.getExportProperties());
- if (this.exportVisitor_.starExports.length) {
- var starExports = this.exportVisitor_.starExports;
- var starIdents = starExports.map((function(moduleSpecifier) {
- return createIdentifierExpression($__104.getTempVarNameForModuleSpecifier(moduleSpecifier));
- }));
- var args = createArgumentList.apply(null, $traceurRuntime.spread([object], starIdents));
- return parseStatement($__100, args);
- }
- return parseStatement($__101, object);
- },
- hasExports: function() {
- return this.exportVisitor_.hasExports();
- },
- transformExportDeclaration: function(tree) {
- this.exportVisitor_.visitAny(tree);
- return this.transformAny(tree.declaration);
- },
- transformExportDefault: function(tree) {
- return parseStatement($__102, tree.expression);
- },
- transformNamedExport: function(tree) {
- var moduleSpecifier = tree.moduleSpecifier;
- if (moduleSpecifier) {
- var expression = this.transformAny(moduleSpecifier);
- var idName = this.getTempVarNameForModuleSpecifier(moduleSpecifier);
- return createVariableStatement(VAR, idName, expression);
- }
- return new EmptyStatement(null);
- },
- transformModuleSpecifier: function(tree) {
- assert(this.moduleName);
- var name = tree.token.processedValue;
- var normalizedName = System.normalize(name, this.moduleName);
- return parseExpression($__103, normalizedName);
- },
- transformModuleDeclaration: function(tree) {
- this.moduleSpecifierKind_ = 'module';
- var initialiser = this.transformAny(tree.expression);
- return createVariableStatement(VAR, tree.identifier, initialiser);
- },
- transformImportedBinding: function(tree) {
- var bindingElement = new BindingElement(tree.location, tree.binding, null);
- var name = new LiteralPropertyName(null, createIdentifierToken('default'));
- return new ObjectPattern(null, [new ObjectPatternField(null, name, bindingElement)]);
- },
- transformImportDeclaration: function(tree) {
- this.moduleSpecifierKind_ = 'import';
- if (!tree.importClause)
- return createExpressionStatement(this.transformAny(tree.moduleSpecifier));
- var binding = this.transformAny(tree.importClause);
- var initialiser = this.transformAny(tree.moduleSpecifier);
- return createVariableStatement(VAR, binding, initialiser);
- },
- transformImportSpecifierSet: function(tree) {
- var fields = this.transformList(tree.specifiers);
- return new ObjectPattern(null, fields);
- },
- transformImportSpecifier: function(tree) {
- if (tree.rhs) {
- var binding = new BindingIdentifier(tree.location, tree.rhs);
- var bindingElement = new BindingElement(tree.location, binding, null);
- var name = new LiteralPropertyName(tree.lhs.location, tree.lhs);
- return new ObjectPatternField(tree.location, name, bindingElement);
- }
- return new BindingElement(tree.location, createBindingIdentifier(tree.lhs), null);
- }
- }, {}, TempVarTransformer);
- return {get ModuleTransformer() {
- return ModuleTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/globalThis", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/globalThis";
- var $__107 = Object.freeze(Object.defineProperties(["typeof global !== 'undefined' ? global : this"], {raw: {value: Object.freeze(["typeof global !== 'undefined' ? global : this"])}}));
- var parseExpression = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser").parseExpression;
- var expr;
- function globalThis() {
- if (!expr)
- expr = parseExpression($__107);
- return expr;
- }
- var $__default = globalThis;
- return {get default() {
- return $__default;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/FindVisitor", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/FindVisitor";
- var ParseTreeVisitor = System.get("traceur@0.0.32/src/syntax/ParseTreeVisitor").ParseTreeVisitor;
- var foundSentinel = {};
- var FindVisitor = function FindVisitor(tree) {
- var keepOnGoing = arguments[1];
- this.found_ = false;
- this.keepOnGoing_ = keepOnGoing;
- try {
- this.visitAny(tree);
- } catch (ex) {
- if (ex !== foundSentinel)
- throw ex;
- }
- };
- ($traceurRuntime.createClass)(FindVisitor, {
- get found() {
- return this.found_;
- },
- set found(v) {
- if (v) {
- this.found_ = true;
- if (!this.keepOnGoing_)
- throw foundSentinel;
- }
- }
- }, {}, ParseTreeVisitor);
- return {get FindVisitor() {
- return FindVisitor;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/FindInFunctionScope", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/FindInFunctionScope";
- var FindVisitor = System.get("traceur@0.0.32/src/codegeneration/FindVisitor").FindVisitor;
- var FindInFunctionScope = function FindInFunctionScope() {
- $traceurRuntime.defaultSuperCall(this, $FindInFunctionScope.prototype, arguments);
- };
- var $FindInFunctionScope = FindInFunctionScope;
- ($traceurRuntime.createClass)(FindInFunctionScope, {
- visitFunctionDeclaration: function(tree) {},
- visitFunctionExpression: function(tree) {},
- visitSetAccessor: function(tree) {},
- visitGetAccessor: function(tree) {},
- visitPropertyMethodAssignment: function(tree) {}
- }, {}, FindVisitor);
- return {get FindInFunctionScope() {
- return FindInFunctionScope;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/scopeContainsThis", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/scopeContainsThis";
- var FindInFunctionScope = System.get("traceur@0.0.32/src/codegeneration/FindInFunctionScope").FindInFunctionScope;
- var FindThis = function FindThis() {
- $traceurRuntime.defaultSuperCall(this, $FindThis.prototype, arguments);
- };
- var $FindThis = FindThis;
- ($traceurRuntime.createClass)(FindThis, {visitThisExpression: function(tree) {
- this.found = true;
- }}, {}, FindInFunctionScope);
- function scopeContainsThis(tree) {
- var visitor = new FindThis(tree);
- return visitor.found;
- }
- var $__default = scopeContainsThis;
- return {get default() {
- return $__default;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/AmdTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/AmdTransformer";
- var $__115 = Object.freeze(Object.defineProperties(["__esModule: true"], {raw: {value: Object.freeze(["__esModule: true"])}})),
- $__116 = Object.freeze(Object.defineProperties(["if (!", " || !", ".__esModule)\n ", " = { 'default': ", " }"], {raw: {value: Object.freeze(["if (!", " || !", ".__esModule)\n ", " = { 'default': ", " }"])}})),
- $__117 = Object.freeze(Object.defineProperties(["function(", ") {\n ", "\n }"], {raw: {value: Object.freeze(["function(", ") {\n ", "\n }"])}})),
- $__118 = Object.freeze(Object.defineProperties(["", ".bind(", ")"], {raw: {value: Object.freeze(["", ".bind(", ")"])}})),
- $__119 = Object.freeze(Object.defineProperties(["define(", ", ", ");"], {raw: {value: Object.freeze(["define(", ", ", ");"])}}));
- var ModuleTransformer = System.get("traceur@0.0.32/src/codegeneration/ModuleTransformer").ModuleTransformer;
- var VAR = System.get("traceur@0.0.32/src/syntax/TokenType").VAR;
- var $__121 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createBindingIdentifier = $__121.createBindingIdentifier,
- createIdentifierExpression = $__121.createIdentifierExpression;
- var globalThis = System.get("traceur@0.0.32/src/codegeneration/globalThis").default;
- var $__121 = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser"),
- parseExpression = $__121.parseExpression,
- parseStatement = $__121.parseStatement,
- parseStatements = $__121.parseStatements,
- parsePropertyDefinition = $__121.parsePropertyDefinition;
- var scopeContainsThis = System.get("traceur@0.0.32/src/codegeneration/scopeContainsThis").default;
- var AmdTransformer = function AmdTransformer(identifierGenerator) {
- $traceurRuntime.superCall(this, $AmdTransformer.prototype, "constructor", [identifierGenerator]);
- this.dependencies = [];
- };
- var $AmdTransformer = AmdTransformer;
- ($traceurRuntime.createClass)(AmdTransformer, {
- getExportProperties: function() {
- var properties = $traceurRuntime.superCall(this, $AmdTransformer.prototype, "getExportProperties", []);
- if (this.exportVisitor_.hasExports())
- properties.push(parsePropertyDefinition($__115));
- return properties;
- },
- moduleProlog: function() {
- var locals = this.dependencies.map((function(dep) {
- var local = createIdentifierExpression(dep.local);
- return parseStatement($__116, local, local, local, local);
- }));
- return $traceurRuntime.superCall(this, $AmdTransformer.prototype, "moduleProlog", []).concat(locals);
- },
- wrapModule: function(statements) {
- var depPaths = this.dependencies.map((function(dep) {
- return dep.path;
- }));
- var depLocals = this.dependencies.map((function(dep) {
- return dep.local;
- }));
- var hasTopLevelThis = statements.some(scopeContainsThis);
- var func = parseExpression($__117, depLocals, statements);
- if (hasTopLevelThis)
- func = parseExpression($__118, func, globalThis());
- return parseStatements($__119, depPaths, func);
- },
- transformModuleSpecifier: function(tree) {
- var localName = this.getTempIdentifier();
- this.dependencies.push({
- path: tree.token,
- local: localName
- });
- return createBindingIdentifier(localName);
- }
- }, {}, ModuleTransformer);
- return {get AmdTransformer() {
- return AmdTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/staticsemantics/PropName", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/staticsemantics/PropName";
- var $__122 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- COMPUTED_PROPERTY_NAME = $__122.COMPUTED_PROPERTY_NAME,
- GET_ACCESSOR = $__122.GET_ACCESSOR,
- LITERAL_PROPERTY_NAME = $__122.LITERAL_PROPERTY_NAME,
- PROPERTY_METHOD_ASSIGNMENT = $__122.PROPERTY_METHOD_ASSIGNMENT,
- PROPERTY_NAME_ASSIGNMENT = $__122.PROPERTY_NAME_ASSIGNMENT,
- PROPERTY_NAME_SHORTHAND = $__122.PROPERTY_NAME_SHORTHAND,
- SET_ACCESSOR = $__122.SET_ACCESSOR;
- var IDENTIFIER = System.get("traceur@0.0.32/src/syntax/TokenType").IDENTIFIER;
- function propName(tree) {
- switch (tree.type) {
- case LITERAL_PROPERTY_NAME:
- var token = tree.literalToken;
- if (token.isKeyword() || token.type === IDENTIFIER)
- return token.toString();
- return String(tree.literalToken.processedValue);
- case COMPUTED_PROPERTY_NAME:
- return '';
- case PROPERTY_NAME_SHORTHAND:
- return tree.name.toString();
- case PROPERTY_METHOD_ASSIGNMENT:
- case PROPERTY_NAME_ASSIGNMENT:
- case GET_ACCESSOR:
- case SET_ACCESSOR:
- return propName(tree.name);
- }
- }
- return {get propName() {
- return propName;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/AnnotationsTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/AnnotationsTransformer";
- var $__123 = Object.freeze(Object.defineProperties(["Object.getOwnPropertyDescriptor(", ")"], {raw: {value: Object.freeze(["Object.getOwnPropertyDescriptor(", ")"])}}));
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var CONSTRUCTOR = System.get("traceur@0.0.32/src/syntax/PredefinedName").CONSTRUCTOR;
- var $__126 = System.get("traceur@0.0.32/src/syntax/TokenType"),
- IDENTIFIER = $__126.IDENTIFIER,
- STRING = $__126.STRING;
- var $__126 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- AnonBlock = $__126.AnonBlock,
- ClassDeclaration = $__126.ClassDeclaration,
- ExportDeclaration = $__126.ExportDeclaration,
- FormalParameter = $__126.FormalParameter,
- FunctionDeclaration = $__126.FunctionDeclaration,
- GetAccessor = $__126.GetAccessor,
- LiteralExpression = $__126.LiteralExpression,
- PropertyMethodAssignment = $__126.PropertyMethodAssignment,
- SetAccessor = $__126.SetAccessor;
- var $__126 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- BINDING_IDENTIFIER = $__126.BINDING_IDENTIFIER,
- IDENTIFIER_EXPRESSION = $__126.IDENTIFIER_EXPRESSION;
- var propName = System.get("traceur@0.0.32/src/staticsemantics/PropName").propName;
- var $__126 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createArgumentList = $__126.createArgumentList,
- createArrayLiteralExpression = $__126.createArrayLiteralExpression,
- createAssignmentStatement = $__126.createAssignmentStatement,
- createIdentifierExpression = $__126.createIdentifierExpression,
- createMemberExpression = $__126.createMemberExpression,
- createNewExpression = $__126.createNewExpression,
- createStatementList = $__126.createStatementList,
- createStringLiteralToken = $__126.createStringLiteralToken;
- var parseExpression = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser").parseExpression;
- var AnnotationsScope = function AnnotationsScope() {
- this.className = null;
- this.isExport = false;
- this.constructorParameters = [];
- this.annotations = [];
- this.metadata = [];
- };
- ($traceurRuntime.createClass)(AnnotationsScope, {get inClassScope() {
- return this.className !== null;
- }}, {});
- var AnnotationsTransformer = function AnnotationsTransformer() {
- this.stack_ = [new AnnotationsScope()];
- };
- var $AnnotationsTransformer = AnnotationsTransformer;
- ($traceurRuntime.createClass)(AnnotationsTransformer, {
- transformExportDeclaration: function(tree) {
- var $__127;
- var scope = this.pushAnnotationScope_();
- scope.isExport = true;
- ($__127 = scope.annotations).push.apply($__127, $traceurRuntime.toObject(tree.annotations));
- var declaration = this.transformAny(tree.declaration);
- if (declaration !== tree.declaration || tree.annotations.length > 0)
- tree = new ExportDeclaration(tree.location, declaration, []);
- return this.appendMetadata_(tree);
- },
- transformClassDeclaration: function(tree) {
- var $__127;
- var elementsChanged = false;
- var exportAnnotations = this.scope.isExport ? this.scope.annotations : [];
- var scope = this.pushAnnotationScope_();
- scope.className = tree.name;
- ($__127 = scope.annotations).push.apply($__127, $traceurRuntime.spread(exportAnnotations, tree.annotations));
- tree = $traceurRuntime.superCall(this, $AnnotationsTransformer.prototype, "transformClassDeclaration", [tree]);
- ($__127 = scope.metadata).unshift.apply($__127, $traceurRuntime.toObject(this.transformMetadata_(createIdentifierExpression(tree.name), scope.annotations, scope.constructorParameters)));
- if (tree.annotations.length > 0) {
- tree = new ClassDeclaration(tree.location, tree.name, tree.superClass, tree.elements, []);
- }
- return this.appendMetadata_(tree);
- },
- transformFunctionDeclaration: function(tree) {
- var $__127;
- var exportAnnotations = this.scope.isExport ? this.scope.annotations : [];
- var scope = this.pushAnnotationScope_();
- ($__127 = scope.annotations).push.apply($__127, $traceurRuntime.spread(exportAnnotations, tree.annotations));
- ($__127 = scope.metadata).push.apply($__127, $traceurRuntime.toObject(this.transformMetadata_(createIdentifierExpression(tree.name), scope.annotations, tree.formalParameterList.parameters)));
- tree = $traceurRuntime.superCall(this, $AnnotationsTransformer.prototype, "transformFunctionDeclaration", [tree]);
- if (tree.annotations.length > 0) {
- tree = new FunctionDeclaration(tree.location, tree.name, tree.isGenerator, tree.formalParameterList, tree.typeAnnotation, [], tree.functionBody);
- }
- return this.appendMetadata_(tree);
- },
- transformFormalParameter: function(tree) {
- if (tree.annotations.length > 0) {
- tree = new FormalParameter(tree.location, tree.parameter, tree.typeAnnotation, []);
- }
- return $traceurRuntime.superCall(this, $AnnotationsTransformer.prototype, "transformFormalParameter", [tree]);
- },
- transformGetAccessor: function(tree) {
- var $__127;
- if (!this.scope.inClassScope)
- return $traceurRuntime.superCall(this, $AnnotationsTransformer.prototype, "transformGetAccessor", [tree]);
- ($__127 = this.scope.metadata).push.apply($__127, $traceurRuntime.toObject(this.transformMetadata_(this.transformAccessor_(tree, this.scope.className, 'get'), tree.annotations, [])));
- if (tree.annotations.length > 0) {
- tree = new GetAccessor(tree.location, tree.isStatic, tree.name, tree.typeAnnotation, [], tree.body);
- }
- return $traceurRuntime.superCall(this, $AnnotationsTransformer.prototype, "transformGetAccessor", [tree]);
- },
- transformSetAccessor: function(tree) {
- var $__127;
- if (!this.scope.inClassScope)
- return $traceurRuntime.superCall(this, $AnnotationsTransformer.prototype, "transformSetAccessor", [tree]);
- ($__127 = this.scope.metadata).push.apply($__127, $traceurRuntime.toObject(this.transformMetadata_(this.transformAccessor_(tree, this.scope.className, 'set'), tree.annotations, [tree.parameter])));
- var parameter = this.transformAny(tree.parameter);
- if (parameter !== tree.parameter || tree.annotations.length > 0) {
- tree = new SetAccessor(tree.location, tree.isStatic, tree.name, parameter, [], tree.body);
- }
- return $traceurRuntime.superCall(this, $AnnotationsTransformer.prototype, "transformSetAccessor", [tree]);
- },
- transformPropertyMethodAssignment: function(tree) {
- var $__127;
- if (!this.scope.inClassScope)
- return $traceurRuntime.superCall(this, $AnnotationsTransformer.prototype, "transformPropertyMethodAssignment", [tree]);
- if (!tree.isStatic && propName(tree) === CONSTRUCTOR) {
- ($__127 = this.scope.annotations).push.apply($__127, $traceurRuntime.toObject(tree.annotations));
- this.scope.constructorParameters = tree.formalParameterList.parameters;
- } else {
- ($__127 = this.scope.metadata).push.apply($__127, $traceurRuntime.toObject(this.transformMetadata_(this.transformPropertyMethod_(tree, this.scope.className), tree.annotations, tree.formalParameterList.parameters)));
- }
- var formalParameters = this.transformAny(tree.formalParameterList);
- if (formalParameters !== tree.formalParameterList || tree.annotations.length > 0) {
- tree = new PropertyMethodAssignment(tree.location, tree.isStatic, tree.isGenerator, tree.name, formalParameters, tree.typeAnnotation, [], tree.functionBody);
- }
- return $traceurRuntime.superCall(this, $AnnotationsTransformer.prototype, "transformPropertyMethodAssignment", [tree]);
- },
- appendMetadata_: function(tree) {
- var $__127;
- var metadata = this.stack_.pop().metadata;
- if (metadata.length > 0) {
- if (this.scope.isExport) {
- ($__127 = this.scope.metadata).push.apply($__127, $traceurRuntime.toObject(metadata));
- } else {
- tree = new AnonBlock(null, $traceurRuntime.spread([tree], metadata));
- }
- }
- return tree;
- },
- transformClassReference_: function(tree, className) {
- var parent = createIdentifierExpression(className);
- if (!tree.isStatic)
- parent = createMemberExpression(parent, 'prototype');
- return parent;
- },
- transformPropertyMethod_: function(tree, className) {
- return createMemberExpression(this.transformClassReference_(tree, className), tree.name.literalToken);
- },
- transformAccessor_: function(tree, className, accessor) {
- var args = createArgumentList([this.transformClassReference_(tree, className), this.createLiteralStringExpression_(tree.name)]);
- var descriptor = parseExpression($__123, args);
- return createMemberExpression(descriptor, accessor);
- },
- transformParameters_: function(parameters) {
- var $__124 = this;
- var hasParameterMetadata = false;
- parameters = parameters.map((function(param) {
- var $__127;
- var metadata = [];
- if (param.typeAnnotation)
- metadata.push($__124.transformAny(param.typeAnnotation));
- if (param.annotations && param.annotations.length > 0)
- ($__127 = metadata).push.apply($__127, $traceurRuntime.toObject($__124.transformAnnotations_(param.annotations)));
- if (metadata.length > 0) {
- hasParameterMetadata = true;
- return createArrayLiteralExpression(metadata);
- }
- return createArrayLiteralExpression([]);
- }));
- return hasParameterMetadata ? parameters : [];
- },
- transformAnnotations_: function(annotations) {
- return annotations.map((function(annotation) {
- return createNewExpression(annotation.name, annotation.args);
- }));
- },
- transformMetadata_: function(target, annotations, parameters) {
- var metadataStatements = [];
- if (annotations !== null) {
- annotations = this.transformAnnotations_(annotations);
- if (annotations.length > 0) {
- metadataStatements.push(createAssignmentStatement(createMemberExpression(target, 'annotations'), createArrayLiteralExpression(annotations)));
- }
- }
- if (parameters !== null) {
- parameters = this.transformParameters_(parameters);
- if (parameters.length > 0) {
- metadataStatements.push(createAssignmentStatement(createMemberExpression(target, 'parameters'), createArrayLiteralExpression(parameters)));
- }
- }
- return metadataStatements;
- },
- createLiteralStringExpression_: function(tree) {
- var token = tree.literalToken;
- if (tree.literalToken.type !== STRING)
- token = createStringLiteralToken(tree.literalToken.value);
- return new LiteralExpression(null, token);
- },
- get scope() {
- return this.stack_[this.stack_.length - 1];
- },
- pushAnnotationScope_: function() {
- var scope = new AnnotationsScope();
- this.stack_.push(scope);
- return scope;
- }
- }, {}, ParseTreeTransformer);
- return {get AnnotationsTransformer() {
- return AnnotationsTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/semantics/VariableBinder", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/semantics/VariableBinder";
- var $__129 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- ARRAY_PATTERN = $__129.ARRAY_PATTERN,
- BINDING_ELEMENT = $__129.BINDING_ELEMENT,
- BINDING_IDENTIFIER = $__129.BINDING_IDENTIFIER,
- FORMAL_PARAMETER = $__129.FORMAL_PARAMETER,
- OBJECT_PATTERN = $__129.OBJECT_PATTERN,
- OBJECT_PATTERN_FIELD = $__129.OBJECT_PATTERN_FIELD,
- PAREN_EXPRESSION = $__129.PAREN_EXPRESSION,
- SPREAD_PATTERN_ELEMENT = $__129.SPREAD_PATTERN_ELEMENT;
- var ParseTreeVisitor = System.get("traceur@0.0.32/src/syntax/ParseTreeVisitor").ParseTreeVisitor;
- var VAR = System.get("traceur@0.0.32/src/syntax/TokenType").VAR;
- var assert = System.get("traceur@0.0.32/src/util/assert").assert;
- function variablesInBlock(tree, includeFunctionScope) {
- var binder = new VariableBinder(includeFunctionScope, tree);
- binder.visitAny(tree);
- return binder.identifiers_;
- }
- ;
- function variablesInFunction(tree) {
- var binder = new VariableBinder(true, tree.functionBody);
- binder.bindVariablesInFunction_(tree);
- return binder.identifiers_;
- }
- ;
- var VariableBinder = function VariableBinder(includeFunctionScope, scope) {
- $traceurRuntime.superCall(this, $VariableBinder.prototype, "constructor", []);
- this.includeFunctionScope_ = includeFunctionScope;
- this.scope_ = scope || null;
- this.block_ = null;
- this.identifiers_ = Object.create(null);
- };
- var $VariableBinder = VariableBinder;
- ($traceurRuntime.createClass)(VariableBinder, {
- bindVariablesInFunction_: function(tree) {
- var parameters = tree.formalParameterList.parameters;
- for (var i = 0; i < parameters.length; i++) {
- this.bindParameter_(parameters[i]);
- }
- this.visitAny(tree.functionBody);
- },
- visitBlock: function(tree) {
- var parentBlock = this.block_;
- this.block_ = tree;
- this.visitList(tree.statements);
- this.block_ = parentBlock;
- },
- visitFunctionDeclaration: function(tree) {
- if (this.block_ == this.scope_)
- this.bind_(tree.name.identifierToken);
- },
- visitFunctionExpression: function(tree) {},
- visitVariableDeclarationList: function(tree) {
- if ((tree.declarationType == VAR && this.includeFunctionScope_) || (tree.declarationType != VAR && this.block_ == this.scope_)) {
- $traceurRuntime.superCall(this, $VariableBinder.prototype, "visitVariableDeclarationList", [tree]);
- } else {
- var decls = tree.declarations;
- for (var i = 0; i < decls.length; i++) {
- this.visitAny(decls[i].initialiser);
- }
- }
- },
- visitVariableDeclaration: function(tree) {
- this.bindVariableDeclaration_(tree.lvalue);
- $traceurRuntime.superCall(this, $VariableBinder.prototype, "visitVariableDeclaration", [tree]);
- },
- bind_: function(identifier) {
- assert(typeof identifier.value == 'string');
- this.identifiers_[identifier.value] = true;
- },
- bindParameter_: function(parameter) {
- if (parameter.type === FORMAL_PARAMETER)
- parameter = parameter.parameter;
- if (parameter.isRestParameter()) {
- this.bind_(parameter.identifier);
- } else {
- this.bindVariableDeclaration_(parameter.binding);
- }
- },
- bindVariableDeclaration_: function(tree) {
- switch (tree.type) {
- case BINDING_ELEMENT:
- this.bindVariableDeclaration_(tree.binding);
- break;
- case BINDING_IDENTIFIER:
- this.bind_(tree.identifierToken);
- break;
- case ARRAY_PATTERN:
- var elements = tree.elements;
- for (var i = 0; i < elements.length; i++) {
- this.bindVariableDeclaration_(elements[i]);
- }
- break;
- case SPREAD_PATTERN_ELEMENT:
- this.bindVariableDeclaration_(tree.lvalue);
- break;
- case OBJECT_PATTERN:
- var fields = tree.fields;
- for (var i = 0; i < fields.length; i++) {
- this.bindVariableDeclaration_(fields[i]);
- }
- break;
- case OBJECT_PATTERN_FIELD:
- var field = tree;
- if (field.element == null) {
- this.bind_(field.name);
- } else {
- this.bindVariableDeclaration_(field.element);
- }
- break;
- case PAREN_EXPRESSION:
- this.bindVariableDeclaration_(tree.expression);
- break;
- default:
- throw new Error('unreachable');
- }
- }
- }, {}, ParseTreeVisitor);
- return {
- get variablesInBlock() {
- return variablesInBlock;
- },
- get variablesInFunction() {
- return variablesInFunction;
- },
- get VariableBinder() {
- return VariableBinder;
- }
- };
-});
-System.register("traceur@0.0.32/src/codegeneration/AlphaRenamer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/AlphaRenamer";
- var $__131 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- FunctionDeclaration = $__131.FunctionDeclaration,
- FunctionExpression = $__131.FunctionExpression;
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var $__131 = System.get("traceur@0.0.32/src/syntax/PredefinedName"),
- ARGUMENTS = $__131.ARGUMENTS,
- THIS = $__131.THIS;
- var createIdentifierExpression = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory").createIdentifierExpression;
- var $__131 = System.get("traceur@0.0.32/src/semantics/VariableBinder"),
- variablesInBlock = $__131.variablesInBlock,
- variablesInFunction = $__131.variablesInFunction;
- var AlphaRenamer = function AlphaRenamer(oldName, newName) {
- $traceurRuntime.superCall(this, $AlphaRenamer.prototype, "constructor", []);
- this.oldName_ = oldName;
- this.newName_ = newName;
- };
- var $AlphaRenamer = AlphaRenamer;
- ($traceurRuntime.createClass)(AlphaRenamer, {
- transformBlock: function(tree) {
- if (this.oldName_ in variablesInBlock(tree)) {
- return tree;
- } else {
- return $traceurRuntime.superCall(this, $AlphaRenamer.prototype, "transformBlock", [tree]);
- }
- },
- transformIdentifierExpression: function(tree) {
- if (this.oldName_ == tree.identifierToken.value) {
- return createIdentifierExpression(this.newName_);
- } else {
- return tree;
- }
- },
- transformThisExpression: function(tree) {
- if (this.oldName_ !== THIS)
- return tree;
- return createIdentifierExpression(this.newName_);
- },
- transformFunctionDeclaration: function(tree) {
- if (this.oldName_ === tree.name) {
- tree = new FunctionDeclaration(tree.location, this.newName_, tree.isGenerator, tree.formalParameterList, tree.typeAnnotation, tree.annotations, tree.functionBody);
- }
- if (this.getDoNotRecurse(tree))
- return tree;
- return $traceurRuntime.superCall(this, $AlphaRenamer.prototype, "transformFunctionDeclaration", [tree]);
- },
- transformFunctionExpression: function(tree) {
- if (this.oldName_ === tree.name) {
- tree = new FunctionExpression(tree.location, this.newName_, tree.isGenerator, tree.formalParameterList, tree.typeAnnotation, tree.annotations, tree.functionBody);
- }
- if (this.getDoNotRecurse(tree))
- return tree;
- return $traceurRuntime.superCall(this, $AlphaRenamer.prototype, "transformFunctionExpression", [tree]);
- },
- getDoNotRecurse: function(tree) {
- return this.oldName_ === ARGUMENTS || this.oldName_ === THIS || this.oldName_ in variablesInFunction(tree);
- },
- transformCatch: function(tree) {
- if (!tree.binding.isPattern() && this.oldName_ === tree.binding.identifierToken.value) {
- return tree;
- }
- return $traceurRuntime.superCall(this, $AlphaRenamer.prototype, "transformCatch", [tree]);
- }
- }, {rename: function(tree, oldName, newName) {
- return new $AlphaRenamer(oldName, newName).transformAny(tree);
- }}, ParseTreeTransformer);
- return {get AlphaRenamer() {
- return AlphaRenamer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/alphaRenameThisAndArguments", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/alphaRenameThisAndArguments";
- var $__133 = System.get("traceur@0.0.32/src/syntax/PredefinedName"),
- ARGUMENTS = $__133.ARGUMENTS,
- THIS = $__133.THIS;
- var AlphaRenamer = System.get("traceur@0.0.32/src/codegeneration/AlphaRenamer").AlphaRenamer;
- var FindInFunctionScope = System.get("traceur@0.0.32/src/codegeneration/FindInFunctionScope").FindInFunctionScope;
- var FindThisOrArguments = function FindThisOrArguments(tree) {
- this.foundThis = false;
- this.foundArguments = false;
- $traceurRuntime.superCall(this, $FindThisOrArguments.prototype, "constructor", [tree]);
- };
- var $FindThisOrArguments = FindThisOrArguments;
- ($traceurRuntime.createClass)(FindThisOrArguments, {
- visitThisExpression: function(tree) {
- this.foundThis = true;
- this.found = this.foundArguments;
- },
- visitIdentifierExpression: function(tree) {
- if (tree.identifierToken.value === ARGUMENTS) {
- this.foundArguments = true;
- this.found = this.foundThis;
- }
- }
- }, {}, FindInFunctionScope);
- var $__default = function alphaRenameThisAndArguments(tempVarTransformer, tree) {
- var finder = new FindThisOrArguments(tree);
- if (finder.foundArguments) {
- var argumentsTempName = tempVarTransformer.addTempVarForArguments();
- tree = AlphaRenamer.rename(tree, ARGUMENTS, argumentsTempName);
- }
- if (finder.foundThis) {
- var thisTempName = tempVarTransformer.addTempVarForThis();
- tree = AlphaRenamer.rename(tree, THIS, thisTempName);
- }
- return tree;
- };
- return {get default() {
- return $__default;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/ComprehensionTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/ComprehensionTransformer";
- var alphaRenameThisAndArguments = System.get("traceur@0.0.32/src/codegeneration/alphaRenameThisAndArguments").default;
- var FunctionExpression = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees").FunctionExpression;
- var TempVarTransformer = System.get("traceur@0.0.32/src/codegeneration/TempVarTransformer").TempVarTransformer;
- var $__135 = System.get("traceur@0.0.32/src/syntax/TokenType"),
- LET = $__135.LET,
- VAR = $__135.VAR;
- var $__135 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- COMPREHENSION_FOR = $__135.COMPREHENSION_FOR,
- COMPREHENSION_IF = $__135.COMPREHENSION_IF;
- var $__135 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createCallExpression = $__135.createCallExpression,
- createEmptyParameterList = $__135.createEmptyParameterList,
- createForOfStatement = $__135.createForOfStatement,
- createFunctionBody = $__135.createFunctionBody,
- createIfStatement = $__135.createIfStatement,
- createParenExpression = $__135.createParenExpression,
- createVariableDeclarationList = $__135.createVariableDeclarationList;
- var options = System.get("traceur@0.0.32/src/options").options;
- var ComprehensionTransformer = function ComprehensionTransformer() {
- $traceurRuntime.defaultSuperCall(this, $ComprehensionTransformer.prototype, arguments);
- };
- var $ComprehensionTransformer = ComprehensionTransformer;
- ($traceurRuntime.createClass)(ComprehensionTransformer, {transformComprehension: function(tree, statement, isGenerator) {
- var prefix = arguments[3];
- var suffix = arguments[4];
- var bindingKind = isGenerator || !options.blockBinding ? VAR : LET;
- var statements = prefix ? [prefix] : [];
- for (var i = tree.comprehensionList.length - 1; i >= 0; i--) {
- var item = tree.comprehensionList[i];
- switch (item.type) {
- case COMPREHENSION_IF:
- var expression = this.transformAny(item.expression);
- statement = createIfStatement(expression, statement);
- break;
- case COMPREHENSION_FOR:
- var left = this.transformAny(item.left);
- var iterator = this.transformAny(item.iterator);
- var initialiser = createVariableDeclarationList(bindingKind, left, null);
- statement = createForOfStatement(initialiser, iterator, statement);
- break;
- default:
- throw new Error('Unreachable.');
- }
- }
- statement = alphaRenameThisAndArguments(this, statement);
- statements.push(statement);
- if (suffix)
- statements.push(suffix);
- var func = new FunctionExpression(null, null, isGenerator, createEmptyParameterList(), null, [], createFunctionBody(statements));
- return createParenExpression(createCallExpression(func));
- }}, {}, TempVarTransformer);
- return {get ComprehensionTransformer() {
- return ComprehensionTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/ArrayComprehensionTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/ArrayComprehensionTransformer";
- var $__136 = Object.freeze(Object.defineProperties(["var ", " = 0, ", " = [];"], {raw: {value: Object.freeze(["var ", " = 0, ", " = [];"])}})),
- $__137 = Object.freeze(Object.defineProperties(["", "[", "++] = ", ";"], {raw: {value: Object.freeze(["", "[", "++] = ", ";"])}})),
- $__138 = Object.freeze(Object.defineProperties(["return ", ";"], {raw: {value: Object.freeze(["return ", ";"])}}));
- var ComprehensionTransformer = System.get("traceur@0.0.32/src/codegeneration/ComprehensionTransformer").ComprehensionTransformer;
- var createIdentifierExpression = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory").createIdentifierExpression;
- var parseStatement = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser").parseStatement;
- var ArrayComprehensionTransformer = function ArrayComprehensionTransformer() {
- $traceurRuntime.defaultSuperCall(this, $ArrayComprehensionTransformer.prototype, arguments);
- };
- var $ArrayComprehensionTransformer = ArrayComprehensionTransformer;
- ($traceurRuntime.createClass)(ArrayComprehensionTransformer, {transformArrayComprehension: function(tree) {
- this.pushTempVarState();
- var expression = this.transformAny(tree.expression);
- var index = createIdentifierExpression(this.getTempIdentifier());
- var result = createIdentifierExpression(this.getTempIdentifier());
- var tempVarsStatatement = parseStatement($__136, index, result);
- var statement = parseStatement($__137, result, index, expression);
- var returnStatement = parseStatement($__138, result);
- var isGenerator = false;
- var result = this.transformComprehension(tree, statement, isGenerator, tempVarsStatatement, returnStatement);
- this.popTempVarState();
- return result;
- }}, {}, ComprehensionTransformer);
- return {get ArrayComprehensionTransformer() {
- return ArrayComprehensionTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/ArrowFunctionTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/ArrowFunctionTransformer";
- var FormalParameterList = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees").FormalParameterList;
- var TempVarTransformer = System.get("traceur@0.0.32/src/codegeneration/TempVarTransformer").TempVarTransformer;
- var $__142 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- FUNCTION_BODY = $__142.FUNCTION_BODY,
- FUNCTION_EXPRESSION = $__142.FUNCTION_EXPRESSION;
- var alphaRenameThisAndArguments = System.get("traceur@0.0.32/src/codegeneration/alphaRenameThisAndArguments").default;
- var $__142 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createFunctionBody = $__142.createFunctionBody,
- createFunctionExpression = $__142.createFunctionExpression,
- createParenExpression = $__142.createParenExpression,
- createReturnStatement = $__142.createReturnStatement;
- var ArrowFunctionTransformer = function ArrowFunctionTransformer() {
- $traceurRuntime.defaultSuperCall(this, $ArrowFunctionTransformer.prototype, arguments);
- };
- var $ArrowFunctionTransformer = ArrowFunctionTransformer;
- ($traceurRuntime.createClass)(ArrowFunctionTransformer, {transformArrowFunctionExpression: function(tree) {
- var parameters;
- if (tree.formalParameters) {
- parameters = this.transformAny(tree.formalParameters).parameters;
- } else {
- parameters = [];
- }
- var alphaRenamed = alphaRenameThisAndArguments(this, tree);
- var functionBody = this.transformAny(alphaRenamed.functionBody);
- if (functionBody.type != FUNCTION_BODY) {
- functionBody = createFunctionBody([createReturnStatement(functionBody)]);
- }
- return createParenExpression(createFunctionExpression(new FormalParameterList(null, parameters), functionBody));
- }}, {}, TempVarTransformer);
- return {get ArrowFunctionTransformer() {
- return ArrowFunctionTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/BlockBindingTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/BlockBindingTransformer";
- var AlphaRenamer = System.get("traceur@0.0.32/src/codegeneration/AlphaRenamer").AlphaRenamer;
- var $__145 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- BINDING_IDENTIFIER = $__145.BINDING_IDENTIFIER,
- BLOCK = $__145.BLOCK,
- VARIABLE_DECLARATION_LIST = $__145.VARIABLE_DECLARATION_LIST;
- var $__145 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- FunctionDeclaration = $__145.FunctionDeclaration,
- FunctionExpression = $__145.FunctionExpression;
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var $__145 = System.get("traceur@0.0.32/src/syntax/TokenType"),
- CONST = $__145.CONST,
- LET = $__145.LET,
- VAR = $__145.VAR;
- var $__145 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createAssignmentExpression = $__145.createAssignmentExpression,
- createBindingIdentifier = $__145.createBindingIdentifier,
- createBlock = $__145.createBlock,
- createCatch = $__145.createCatch,
- createEmptyStatement = $__145.createEmptyStatement,
- createExpressionStatement = $__145.createExpressionStatement,
- createFinally = $__145.createFinally,
- createForInStatement = $__145.createForInStatement,
- createForStatement = $__145.createForStatement,
- createFunctionBody = $__145.createFunctionBody,
- createIdentifierExpression = $__145.createIdentifierExpression,
- createIdentifierToken = $__145.createIdentifierToken,
- createThrowStatement = $__145.createThrowStatement,
- createTryStatement = $__145.createTryStatement,
- createUndefinedExpression = $__145.createUndefinedExpression,
- createVariableDeclaration = $__145.createVariableDeclaration,
- createVariableDeclarationList = $__145.createVariableDeclarationList,
- createVariableStatement = $__145.createVariableStatement;
- var ScopeType = {
- SCRIPT: 'SCRIPT',
- FUNCTION: 'FUNCTION',
- BLOCK: 'BLOCK'
- };
- var Scope = function Scope(parent, type) {
- this.parent = parent;
- this.type = type;
- this.blockVariables = null;
- };
- ($traceurRuntime.createClass)(Scope, {addBlockScopedVariable: function(value) {
- if (!this.blockVariables) {
- this.blockVariables = Object.create(null);
- }
- this.blockVariables[value] = true;
- }}, {});
- ;
- var Rename = function Rename(oldName, newName) {
- this.oldName = oldName;
- this.newName = newName;
- };
- ($traceurRuntime.createClass)(Rename, {}, {});
- function renameAll(renames, tree) {
- renames.forEach((function(rename) {
- tree = AlphaRenamer.rename(tree, rename.oldName, rename.newName);
- }));
- return tree;
- }
- function toBlock(statement) {
- return statement.type == BLOCK ? statement : createBlock(statement);
- }
- var BlockBindingTransformer = function BlockBindingTransformer(stateAllocator) {
- $traceurRuntime.superCall(this, $BlockBindingTransformer.prototype, "constructor", []);
- this.scope_ = null;
- };
- var $BlockBindingTransformer = BlockBindingTransformer;
- ($traceurRuntime.createClass)(BlockBindingTransformer, {
- createScriptScope_: function() {
- return new Scope(this.scope_, ScopeType.SCRIPT);
- },
- createFunctionScope_: function() {
- if (this.scope_ == null) {
- throw new Error('Top level function scope found.');
- }
- return new Scope(this.scope_, ScopeType.FUNCTION);
- },
- createBlockScope_: function() {
- if (this.scope_ == null) {
- throw new Error('Top level block scope found.');
- }
- return new Scope(this.scope_, ScopeType.BLOCK);
- },
- push_: function(scope) {
- this.scope_ = scope;
- return scope;
- },
- pop_: function(scope) {
- if (this.scope_ != scope) {
- throw new Error('BlockBindingTransformer scope mismatch');
- }
- this.scope_ = scope.parent;
- },
- transformBlock: function(tree) {
- var scope = this.push_(this.createBlockScope_());
- var statements = this.transformList(tree.statements);
- if (scope.blockVariables != null) {
- tree = toBlock(this.rewriteAsCatch_(scope.blockVariables, createBlock(statements)));
- } else if (statements != tree.statements) {
- tree = createBlock(statements);
- }
- this.pop_(scope);
- return tree;
- },
- rewriteAsCatch_: function(blockVariables, statement) {
- for (var variable in blockVariables) {
- statement = createTryStatement(createBlock(createThrowStatement(createUndefinedExpression())), createCatch(createBindingIdentifier(variable), toBlock(statement)), null);
- }
- return statement;
- },
- transformClassDeclaration: function(tree) {
- throw new Error('ClassDeclaration should be transformed away.');
- },
- transformForInStatement: function(tree) {
- var treeBody = tree.body;
- var initialiser;
- if (tree.initialiser != null && tree.initialiser.type == VARIABLE_DECLARATION_LIST) {
- var variables = tree.initialiser;
- if (variables.declarations.length != 1) {
- throw new Error('for .. in has != 1 variables');
- }
- var variable = variables.declarations[0];
- var variableName = this.getVariableName_(variable);
- switch (variables.declarationType) {
- case LET:
- case CONST:
- {
- if (variable.initialiser != null) {
- throw new Error('const/let in for-in may not have an initialiser');
- }
- initialiser = createVariableDeclarationList(VAR, ("$" + variableName), null);
- treeBody = this.prependToBlock_(createVariableStatement(LET, variableName, createIdentifierExpression(("$" + variableName))), treeBody);
- break;
- }
- case VAR:
- initialiser = this.transformVariables_(variables);
- break;
- default:
- throw new Error('Unreachable.');
- }
- } else {
- initialiser = this.transformAny(tree.initialiser);
- }
- var result = tree;
- var collection = this.transformAny(tree.collection);
- var body = this.transformAny(treeBody);
- if (initialiser != tree.initialiser || collection != tree.collection || body != tree.body) {
- result = createForInStatement(initialiser, collection, body);
- }
- return result;
- },
- prependToBlock_: function(statement, body) {
- if (body.type == BLOCK) {
- var block = body;
- var list = $traceurRuntime.spread([statement], block.statements);
- return createBlock(list);
- } else {
- return createBlock(statement, body);
- }
- },
- transformForStatement: function(tree) {
- var initialiser;
- if (tree.initialiser != null && tree.initialiser.type == VARIABLE_DECLARATION_LIST) {
- var variables = tree.initialiser;
- switch (variables.declarationType) {
- case LET:
- case CONST:
- return this.transformForLet_(tree, variables);
- case VAR:
- initialiser = this.transformVariables_(variables);
- break;
- default:
- throw new Error('Reached unreachable.');
- }
- } else {
- initialiser = this.transformAny(tree.initialiser);
- }
- var condition = this.transformAny(tree.condition);
- var increment = this.transformAny(tree.increment);
- var body = this.transformAny(tree.body);
- var result = tree;
- if (initialiser != tree.initialiser || condition != tree.condition || increment != tree.increment || body != tree.body) {
- result = createForStatement(initialiser, condition, increment, body);
- }
- return result;
- },
- transformForLet_: function(tree, variables) {
- var $__143 = this;
- var copyFwd = [];
- var copyBak = [];
- var hoisted = [];
- var renames = [];
- variables.declarations.forEach((function(variable) {
- var variableName = $__143.getVariableName_(variable);
- var hoistedName = ("$" + variableName);
- var initialiser = renameAll(renames, variable.initialiser);
- hoisted.push(createVariableDeclaration(hoistedName, initialiser));
- copyFwd.push(createVariableDeclaration(variableName, createIdentifierExpression(hoistedName)));
- copyBak.push(createExpressionStatement(createAssignmentExpression(createIdentifierExpression(hoistedName), createIdentifierExpression(variableName))));
- renames.push(new Rename(variableName, hoistedName));
- }));
- var condition = renameAll(renames, tree.condition);
- var increment = renameAll(renames, tree.increment);
- var transformedForLoop = createBlock(createVariableStatement(createVariableDeclarationList(LET, hoisted)), createForStatement(null, condition, increment, createBlock(createVariableStatement(createVariableDeclarationList(LET, copyFwd)), createTryStatement(toBlock(tree.body), null, createFinally(createBlock(copyBak))))));
- return this.transformAny(transformedForLoop);
- },
- transformFunctionDeclaration: function(tree) {
- var body = this.transformFunctionBody(tree.functionBody);
- var formalParameterList = this.transformAny(tree.formalParameterList);
- if (this.scope_.type === ScopeType.BLOCK) {
- this.scope_.addBlockScopedVariable(tree.name.identifierToken.value);
- return createExpressionStatement(createAssignmentExpression(createIdentifierExpression(tree.name.identifierToken), new FunctionExpression(tree.location, null, tree.isGenerator, formalParameterList, tree.typeAnnotation, tree.annotations, body)));
- }
- if (body === tree.functionBody && formalParameterList === tree.formalParameterList) {
- return tree;
- }
- return new FunctionDeclaration(tree.location, tree.name, tree.isGenerator, formalParameterList, tree.typeAnnotation, tree.annotations, body);
- },
- transformScript: function(tree) {
- var scope = this.push_(this.createScriptScope_());
- var result = $traceurRuntime.superCall(this, $BlockBindingTransformer.prototype, "transformScript", [tree]);
- this.pop_(scope);
- return result;
- },
- transformVariableDeclaration: function(tree) {
- throw new Error('Should never see variable declaration tree.');
- },
- transformVariableDeclarationList: function(tree) {
- throw new Error('Should never see variable declaration list.');
- },
- transformVariableStatement: function(tree) {
- if (this.scope_.type == ScopeType.BLOCK) {
- switch (tree.declarations.declarationType) {
- case CONST:
- case LET:
- return this.transformBlockVariables_(tree.declarations);
- default:
- break;
- }
- }
- var variables = this.transformVariables_(tree.declarations);
- if (variables != tree.declarations) {
- tree = createVariableStatement(variables);
- }
- return tree;
- },
- transformBlockVariables_: function(tree) {
- var $__143 = this;
- var variables = tree.declarations;
- var comma = [];
- variables.forEach((function(variable) {
- switch (tree.declarationType) {
- case LET:
- case CONST:
- break;
- default:
- throw new Error('Only let/const allowed here.');
- }
- var variableName = $__143.getVariableName_(variable);
- $__143.scope_.addBlockScopedVariable(variableName);
- var initialiser = $__143.transformAny(variable.initialiser);
- if (initialiser != null) {
- comma.push(createAssignmentExpression(createIdentifierExpression(variableName), initialiser));
- }
- }));
- switch (comma.length) {
- case 0:
- return createEmptyStatement();
- case 1:
- return createExpressionStatement(comma[0]);
- default:
- for (var i = 0; i < comma.length; i++) {
- comma[i] = createExpressionStatement(comma[i]);
- }
- return createBlock(comma);
- }
- },
- transformVariables_: function(tree) {
- var variables = tree.declarations;
- var transformed = null;
- for (var index = 0; index < variables.length; index++) {
- var variable = variables[index];
- var variableName = this.getVariableName_(variable);
- var initialiser = this.transformAny(variable.initialiser);
- if (transformed != null || initialiser != variable.initialiser) {
- if (transformed == null) {
- transformed = variables.slice(0, index);
- }
- transformed.push(createVariableDeclaration(createIdentifierToken(variableName), initialiser));
- }
- }
- if (transformed != null || tree.declarationType != VAR) {
- var declarations = transformed != null ? transformed : tree.declarations;
- var declarationType = tree.declarationType != VAR ? VAR : tree.declarationType;
- tree = createVariableDeclarationList(declarationType, declarations);
- }
- return tree;
- },
- transformFunctionBody: function(body) {
- var scope = this.push_(this.createFunctionScope_());
- body = this.transformFunctionBodyStatements_(body);
- this.pop_(scope);
- return body;
- },
- transformFunctionBodyStatements_: function(tree) {
- var statements = this.transformList(tree.statements);
- if (this.scope_.blockVariables != null) {
- tree = this.rewriteAsCatch_(this.scope_.blockVariables, createBlock(statements));
- } else if (statements != tree.statements) {
- tree = createFunctionBody(statements);
- }
- return tree;
- },
- getVariableName_: function(variable) {
- var lvalue = variable.lvalue;
- if (lvalue.type == BINDING_IDENTIFIER) {
- return lvalue.identifierToken.value;
- }
- throw new Error('Unexpected destructuring declaration found.');
- }
- }, {}, ParseTreeTransformer);
- return {get BlockBindingTransformer() {
- return BlockBindingTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/semantics/util", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/semantics/util";
- var $__146 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- IDENTIFIER_EXPRESSION = $__146.IDENTIFIER_EXPRESSION,
- LITERAL_EXPRESSION = $__146.LITERAL_EXPRESSION,
- PAREN_EXPRESSION = $__146.PAREN_EXPRESSION,
- UNARY_EXPRESSION = $__146.UNARY_EXPRESSION;
- var UNDEFINED = System.get("traceur@0.0.32/src/syntax/PredefinedName").UNDEFINED;
- var VOID = System.get("traceur@0.0.32/src/syntax/TokenType").VOID;
- function hasUseStrict(list) {
- for (var i = 0; i < list.length; i++) {
- if (!list[i].isDirectivePrologue())
- return false;
- if (list[i].isUseStrictDirective())
- return true;
- }
- return false;
- }
- function isUndefined(tree) {
- if (tree.type === PAREN_EXPRESSION)
- return isUndefined(tree.expression);
- return tree.type === IDENTIFIER_EXPRESSION && tree.identifierToken.value === UNDEFINED;
- }
- function isVoidExpression(tree) {
- if (tree.type === PAREN_EXPRESSION)
- return isVoidExpression(tree.expression);
- return tree.type === UNARY_EXPRESSION && tree.operator.type === VOID && isLiteralExpression(tree.operand);
- }
- function isLiteralExpression(tree) {
- if (tree.type === PAREN_EXPRESSION)
- return isLiteralExpression(tree.expression);
- return tree.type === LITERAL_EXPRESSION;
- }
- return {
- get hasUseStrict() {
- return hasUseStrict;
- },
- get isUndefined() {
- return isUndefined;
- },
- get isVoidExpression() {
- return isVoidExpression;
- },
- get isLiteralExpression() {
- return isLiteralExpression;
- }
- };
-});
-System.register("traceur@0.0.32/src/codegeneration/MakeStrictTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/MakeStrictTransformer";
- var $__148 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- FunctionBody = $__148.FunctionBody,
- Script = $__148.Script;
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var createUseStrictDirective = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory").createUseStrictDirective;
- var hasUseStrict = System.get("traceur@0.0.32/src/semantics/util").hasUseStrict;
- function prepend(statements) {
- return $traceurRuntime.spread([createUseStrictDirective()], statements);
- }
- var MakeStrictTransformer = function MakeStrictTransformer() {
- $traceurRuntime.defaultSuperCall(this, $MakeStrictTransformer.prototype, arguments);
- };
- var $MakeStrictTransformer = MakeStrictTransformer;
- ($traceurRuntime.createClass)(MakeStrictTransformer, {
- transformScript: function(tree) {
- if (hasUseStrict(tree.scriptItemList))
- return tree;
- return new Script(tree.location, prepend(tree.scriptItemList));
- },
- transformFunctionBody: function(tree) {
- if (hasUseStrict(tree.statements))
- return tree;
- return new FunctionBody(tree.location, prepend(tree.statements));
- }
- }, {transformTree: function(tree) {
- return new $MakeStrictTransformer().transformAny(tree);
- }}, ParseTreeTransformer);
- return {get MakeStrictTransformer() {
- return MakeStrictTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/assignmentOperatorToBinaryOperator", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/assignmentOperatorToBinaryOperator";
- var $__149 = System.get("traceur@0.0.32/src/syntax/TokenType"),
- AMPERSAND = $__149.AMPERSAND,
- AMPERSAND_EQUAL = $__149.AMPERSAND_EQUAL,
- BAR = $__149.BAR,
- BAR_EQUAL = $__149.BAR_EQUAL,
- CARET = $__149.CARET,
- CARET_EQUAL = $__149.CARET_EQUAL,
- LEFT_SHIFT = $__149.LEFT_SHIFT,
- LEFT_SHIFT_EQUAL = $__149.LEFT_SHIFT_EQUAL,
- MINUS = $__149.MINUS,
- MINUS_EQUAL = $__149.MINUS_EQUAL,
- PERCENT = $__149.PERCENT,
- PERCENT_EQUAL = $__149.PERCENT_EQUAL,
- PLUS = $__149.PLUS,
- PLUS_EQUAL = $__149.PLUS_EQUAL,
- RIGHT_SHIFT = $__149.RIGHT_SHIFT,
- RIGHT_SHIFT_EQUAL = $__149.RIGHT_SHIFT_EQUAL,
- SLASH = $__149.SLASH,
- SLASH_EQUAL = $__149.SLASH_EQUAL,
- STAR = $__149.STAR,
- STAR_EQUAL = $__149.STAR_EQUAL,
- UNSIGNED_RIGHT_SHIFT = $__149.UNSIGNED_RIGHT_SHIFT,
- UNSIGNED_RIGHT_SHIFT_EQUAL = $__149.UNSIGNED_RIGHT_SHIFT_EQUAL;
- function assignmentOperatorToBinaryOperator(type) {
- switch (type) {
- case STAR_EQUAL:
- return STAR;
- case SLASH_EQUAL:
- return SLASH;
- case PERCENT_EQUAL:
- return PERCENT;
- case PLUS_EQUAL:
- return PLUS;
- case MINUS_EQUAL:
- return MINUS;
- case LEFT_SHIFT_EQUAL:
- return LEFT_SHIFT;
- case RIGHT_SHIFT_EQUAL:
- return RIGHT_SHIFT;
- case UNSIGNED_RIGHT_SHIFT_EQUAL:
- return UNSIGNED_RIGHT_SHIFT;
- case AMPERSAND_EQUAL:
- return AMPERSAND;
- case CARET_EQUAL:
- return CARET;
- case BAR_EQUAL:
- return BAR;
- default:
- throw Error('unreachable');
- }
- }
- var $__default = assignmentOperatorToBinaryOperator;
- return {get default() {
- return $__default;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/ExplodeExpressionTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/ExplodeExpressionTransformer";
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var $__151 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createAssignmentExpression = $__151.createAssignmentExpression,
- createCommaExpression = $__151.createCommaExpression,
- id = $__151.createIdentifierExpression,
- createMemberExpression = $__151.createMemberExpression,
- createNumberLiteral = $__151.createNumberLiteral,
- createOperatorToken = $__151.createOperatorToken,
- createParenExpression = $__151.createParenExpression;
- var $__151 = System.get("traceur@0.0.32/src/syntax/TokenType"),
- AND = $__151.AND,
- EQUAL = $__151.EQUAL,
- MINUS = $__151.MINUS,
- MINUS_EQUAL = $__151.MINUS_EQUAL,
- MINUS_MINUS = $__151.MINUS_MINUS,
- OR = $__151.OR,
- PLUS = $__151.PLUS,
- PLUS_EQUAL = $__151.PLUS_EQUAL,
- PLUS_PLUS = $__151.PLUS_PLUS;
- var $__151 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- COMMA_EXPRESSION = $__151.COMMA_EXPRESSION,
- IDENTIFIER_EXPRESSION = $__151.IDENTIFIER_EXPRESSION,
- LITERAL_EXPRESSION = $__151.LITERAL_EXPRESSION,
- MEMBER_EXPRESSION = $__151.MEMBER_EXPRESSION,
- MEMBER_LOOKUP_EXPRESSION = $__151.MEMBER_LOOKUP_EXPRESSION,
- PROPERTY_NAME_ASSIGNMENT = $__151.PROPERTY_NAME_ASSIGNMENT,
- SPREAD_EXPRESSION = $__151.SPREAD_EXPRESSION,
- TEMPLATE_LITERAL_PORTION = $__151.TEMPLATE_LITERAL_PORTION;
- var $__151 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- ArgumentList = $__151.ArgumentList,
- ArrayLiteralExpression = $__151.ArrayLiteralExpression,
- BinaryOperator = $__151.BinaryOperator,
- CallExpression = $__151.CallExpression,
- ConditionalExpression = $__151.ConditionalExpression,
- MemberExpression = $__151.MemberExpression,
- MemberLookupExpression = $__151.MemberLookupExpression,
- NewExpression = $__151.NewExpression,
- ObjectLiteralExpression = $__151.ObjectLiteralExpression,
- PropertyNameAssignment = $__151.PropertyNameAssignment,
- SpreadExpression = $__151.SpreadExpression,
- TemplateLiteralExpression = $__151.TemplateLiteralExpression,
- TemplateSubstitution = $__151.TemplateSubstitution,
- UnaryExpression = $__151.UnaryExpression,
- YieldExpression = $__151.YieldExpression;
- var assert = System.get("traceur@0.0.32/src/util/assert").assert;
- var assignmentOperatorToBinaryOperator = System.get("traceur@0.0.32/src/codegeneration/assignmentOperatorToBinaryOperator").default;
- var CommaExpressionBuilder = function CommaExpressionBuilder(tempVar) {
- this.tempVar = tempVar;
- this.expressions = [];
- };
- ($traceurRuntime.createClass)(CommaExpressionBuilder, {
- add: function(tree) {
- var $__152;
- if (tree.type === COMMA_EXPRESSION)
- ($__152 = this.expressions).push.apply($__152, $traceurRuntime.toObject(getExpressions(tree)));
- return this;
- },
- build: function(tree) {
- var tempVar = this.tempVar;
- this.expressions.push(createAssignmentExpression(tempVar, tree), tempVar);
- return createCommaExpression(this.expressions);
- }
- }, {});
- function getResult(tree) {
- if (tree.type === COMMA_EXPRESSION)
- return tree.expressions[tree.expressions.length - 1];
- return tree;
- }
- function getExpressions(tree) {
- if (tree.type === COMMA_EXPRESSION)
- return tree.expressions.slice(0, -1);
- return [];
- }
- var ExplodeExpressionTransformer = function ExplodeExpressionTransformer(tempVarTransformer) {
- $traceurRuntime.superCall(this, $ExplodeExpressionTransformer.prototype, "constructor", []);
- this.tempVarTransformer_ = tempVarTransformer;
- };
- var $ExplodeExpressionTransformer = ExplodeExpressionTransformer;
- ($traceurRuntime.createClass)(ExplodeExpressionTransformer, {
- addTempVar: function() {
- var tmpId = this.tempVarTransformer_.addTempVar();
- return id(tmpId);
- },
- transformUnaryExpression: function(tree) {
- if (tree.operator.type == PLUS_PLUS)
- return this.transformUnaryNumeric(tree, PLUS_EQUAL);
- if (tree.operator.type == MINUS_MINUS)
- return this.transformUnaryNumeric(tree, MINUS_EQUAL);
- var operand = this.transformAny(tree.operand);
- if (operand === tree.operand)
- return tree;
- var expressions = $traceurRuntime.spread(getExpressions(operand), [new UnaryExpression(tree.location, tree.operator, getResult(operand))]);
- return createCommaExpression(expressions);
- },
- transformUnaryNumeric: function(tree, operator) {
- return this.transformAny(new BinaryOperator(tree.location, tree.operand, createOperatorToken(operator), createNumberLiteral(1)));
- },
- transformPostfixExpression: function(tree) {
- if (tree.operand.type === MEMBER_EXPRESSION)
- return this.transformPostfixMemberExpression(tree);
- if (tree.operand.type === MEMBER_LOOKUP_EXPRESSION)
- return this.transformPostfixMemberLookupExpression(tree);
- assert(tree.operand.type === IDENTIFIER_EXPRESSION);
- var operand = tree.operand;
- var tmp = this.addTempVar();
- var operator = tree.operator.type === PLUS_PLUS ? PLUS : MINUS;
- var expressions = [createAssignmentExpression(tmp, operand), createAssignmentExpression(operand, new BinaryOperator(tree.location, tmp, createOperatorToken(operator), createNumberLiteral(1))), tmp];
- return createCommaExpression(expressions);
- },
- transformPostfixMemberExpression: function(tree) {
- var memberName = tree.operand.memberName;
- var operand = this.transformAny(tree.operand.operand);
- var tmp = this.addTempVar();
- var memberExpression = new MemberExpression(tree.operand.location, getResult(operand), memberName);
- var operator = tree.operator.type === PLUS_PLUS ? PLUS : MINUS;
- var expressions = $traceurRuntime.spread(getExpressions(operand), [createAssignmentExpression(tmp, memberExpression), createAssignmentExpression(memberExpression, new BinaryOperator(tree.location, tmp, createOperatorToken(operator), createNumberLiteral(1))), tmp]);
- return createCommaExpression(expressions);
- },
- transformPostfixMemberLookupExpression: function(tree) {
- var memberExpression = this.transformAny(tree.operand.memberExpression);
- var operand = this.transformAny(tree.operand.operand);
- var tmp = this.addTempVar();
- var memberLookupExpression = new MemberLookupExpression(null, getResult(operand), getResult(memberExpression));
- var operator = tree.operator.type === PLUS_PLUS ? PLUS : MINUS;
- var expressions = $traceurRuntime.spread(getExpressions(operand), getExpressions(memberExpression), [createAssignmentExpression(tmp, memberLookupExpression), createAssignmentExpression(memberLookupExpression, new BinaryOperator(tree.location, tmp, createOperatorToken(operator), createNumberLiteral(1))), tmp]);
- return createCommaExpression(expressions);
- },
- transformYieldExpression: function(tree) {
- var expression = this.transformAny(tree.expression);
- return this.createCommaExpressionBuilder().add(expression).build(new YieldExpression(tree.location, getResult(expression), tree.isYieldFor));
- },
- transformParenExpression: function(tree) {
- var expression = this.transformAny(tree.expression);
- if (expression === tree.expression)
- return tree;
- var result = getResult(expression);
- if (result.type === IDENTIFIER_EXPRESSION)
- return expression;
- return this.createCommaExpressionBuilder().add(expression).build(result);
- },
- transformCommaExpression: function(tree) {
- var expressions = this.transformList(tree.expressions);
- if (expressions === tree.expressions)
- return tree;
- var builder = new CommaExpressionBuilder(null);
- for (var i = 0; i < expressions.length; i++) {
- builder.add(expressions[i]);
- }
- return createCommaExpression($traceurRuntime.spread(builder.expressions, [getResult(expressions[expressions.length - 1])]));
- },
- transformMemberExpression: function(tree) {
- var operand = this.transformAny(tree.operand);
- return this.createCommaExpressionBuilder().add(operand).build(new MemberExpression(tree.location, getResult(operand), tree.memberName));
- },
- transformMemberLookupExpression: function(tree) {
- var operand = this.transformAny(tree.operand);
- var memberExpression = this.transformAny(tree.memberExpression);
- return this.createCommaExpressionBuilder().add(operand).add(memberExpression).build(new MemberLookupExpression(tree.location, getResult(operand), getResult(memberExpression)));
- },
- transformBinaryOperator: function(tree) {
- if (tree.operator.isAssignmentOperator())
- return this.transformAssignmentExpression(tree);
- var left = this.transformAny(tree.left);
- var right = this.transformAny(tree.right);
- if (left === tree.left && right === tree.right)
- return tree;
- if (tree.operator.type === OR)
- return this.transformOr(left, right);
- if (tree.operator.type === AND)
- return this.transformAnd(left, right);
- var expressions = $traceurRuntime.spread(getExpressions(left), getExpressions(right), [new BinaryOperator(tree.location, getResult(left), tree.operator, getResult(right))]);
- return createCommaExpression(expressions);
- },
- transformAssignmentExpression: function(tree) {
- var left = tree.left;
- if (left.type === MEMBER_EXPRESSION)
- return this.transformAssignMemberExpression(tree);
- if (left.type === MEMBER_LOOKUP_EXPRESSION)
- return this.transformAssignMemberLookupExpression(tree);
- assert(tree.left.type === IDENTIFIER_EXPRESSION);
- if (tree.operator.type === EQUAL) {
- var left = this.transformAny(left);
- var right = this.transformAny(tree.right);
- var expressions = $traceurRuntime.spread(getExpressions(right), [createAssignmentExpression(left, getResult(right)), getResult(right)]);
- return createCommaExpression(expressions);
- }
- var right = this.transformAny(tree.right);
- var tmp = this.addTempVar();
- var binop = createOperatorToken(assignmentOperatorToBinaryOperator(tree.operator.type));
- var expressions = $traceurRuntime.spread(getExpressions(right), [createAssignmentExpression(tmp, new BinaryOperator(tree.location, left, binop, getResult(right))), createAssignmentExpression(left, tmp), tmp]);
- return createCommaExpression(expressions);
- },
- transformAssignMemberExpression: function(tree) {
- var left = tree.left;
- if (tree.operator.type === EQUAL) {
- var operand = this.transformAny(left.operand);
- var right = this.transformAny(tree.right);
- var expressions = $traceurRuntime.spread(getExpressions(operand), getExpressions(right), [new BinaryOperator(tree.location, new MemberExpression(left.location, getResult(operand), left.memberName), tree.operator, getResult(right)), getResult(right)]);
- return createCommaExpression(expressions);
- }
- var operand = this.transformAny(left.operand);
- var right = this.transformAny(tree.right);
- var tmp = this.addTempVar();
- var memberExpression = new MemberExpression(left.location, getResult(operand), left.memberName);
- var tmp2 = this.addTempVar();
- var binop = createOperatorToken(assignmentOperatorToBinaryOperator(tree.operator.type));
- var expressions = $traceurRuntime.spread(getExpressions(operand), getExpressions(right), [createAssignmentExpression(tmp, memberExpression), createAssignmentExpression(tmp2, new BinaryOperator(tree.location, tmp, binop, getResult(right))), createAssignmentExpression(memberExpression, tmp2), tmp2]);
- return createCommaExpression(expressions);
- },
- transformAssignMemberLookupExpression: function(tree) {
- var left = tree.left;
- if (tree.operator.type === EQUAL) {
- var operand = this.transformAny(left.operand);
- var memberExpression = this.transformAny(left.memberExpression);
- var right = this.transformAny(tree.right);
- var expressions = $traceurRuntime.spread(getExpressions(operand), getExpressions(memberExpression), getExpressions(right), [new BinaryOperator(tree.location, new MemberLookupExpression(left.location, getResult(operand), getResult(memberExpression)), tree.operator, getResult(right)), getResult(right)]);
- return createCommaExpression(expressions);
- }
- var operand = this.transformAny(left.operand);
- var memberExpression = this.transformAny(left.memberExpression);
- var right = this.transformAny(tree.right);
- var tmp = this.addTempVar();
- var memberLookupExpression = new MemberLookupExpression(left.location, getResult(operand), getResult(memberExpression));
- var tmp2 = this.addTempVar();
- var binop = createOperatorToken(assignmentOperatorToBinaryOperator(tree.operator.type));
- var expressions = $traceurRuntime.spread(getExpressions(operand), getExpressions(memberExpression), getExpressions(right), [createAssignmentExpression(tmp, memberLookupExpression), createAssignmentExpression(tmp2, new BinaryOperator(tree.location, tmp, binop, getResult(right))), createAssignmentExpression(memberLookupExpression, tmp2), tmp2]);
- return createCommaExpression(expressions);
- },
- transformArrayLiteralExpression: function(tree) {
- var elements = this.transformList(tree.elements);
- if (elements === tree.elements)
- return tree;
- var builder = this.createCommaExpressionBuilder();
- var results = [];
- for (var i = 0; i < elements.length; i++) {
- builder.add(elements[i]);
- results.push(getResult(elements[i]));
- }
- return builder.build(new ArrayLiteralExpression(tree.location, results));
- },
- transformObjectLiteralExpression: function(tree) {
- var propertyNameAndValues = this.transformList(tree.propertyNameAndValues);
- if (propertyNameAndValues === tree.propertyNameAndValues)
- return tree;
- var builder = this.createCommaExpressionBuilder();
- var results = [];
- for (var i = 0; i < propertyNameAndValues.length; i++) {
- if (propertyNameAndValues[i].type === PROPERTY_NAME_ASSIGNMENT) {
- builder.add(propertyNameAndValues[i].value);
- results.push(new PropertyNameAssignment(propertyNameAndValues[i].location, propertyNameAndValues[i].name, getResult(propertyNameAndValues[i].value)));
- } else {
- results.push(propertyNameAndValues[i]);
- }
- }
- return builder.build(new ObjectLiteralExpression(tree.location, results));
- },
- transformTemplateLiteralExpression: function(tree) {
- var operand = this.transformAny(tree.operand);
- var elements = this.transformList(tree.elements);
- if (!operand && operand === tree.operand && elements === tree.elements)
- return tree;
- var builder = this.createCommaExpressionBuilder();
- if (operand)
- builder.add(operand);
- var results = [];
- for (var i = 0; i < elements.length; i++) {
- if (elements[i].type === TEMPLATE_LITERAL_PORTION) {
- results.push(elements[i]);
- } else {
- var expression = elements[i].expression;
- builder.add(expression);
- var result = getResult(expression);
- results.push(new TemplateSubstitution(expression.location, result));
- }
- }
- return builder.build(new TemplateLiteralExpression(tree.location, operand && getResult(operand), results));
- },
- transformCallExpression: function(tree) {
- if (tree.operand.type === MEMBER_EXPRESSION)
- return this.transformCallMemberExpression(tree);
- if (tree.operand.type === MEMBER_LOOKUP_EXPRESSION)
- return this.transformCallMemberLookupExpression(tree);
- return this.transformCallAndNew_(tree, CallExpression);
- },
- transformNewExpression: function(tree) {
- return this.transformCallAndNew_(tree, NewExpression);
- },
- transformCallAndNew_: function(tree, ctor) {
- var operand = this.transformAny(tree.operand);
- var args = this.transformAny(tree.args);
- var builder = this.createCommaExpressionBuilder().add(operand);
- var argResults = [];
- args.args.forEach((function(arg) {
- builder.add(arg);
- argResults.push(getResult(arg));
- }));
- return builder.build(new ctor(tree.location, getResult(operand), new ArgumentList(args.location, argResults)));
- },
- transformCallMemberExpression: function(tree) {
- var memberName = tree.operand.memberName;
- var operand = this.transformAny(tree.operand.operand);
- var tmp = this.addTempVar();
- var memberExpresssion = new MemberExpression(tree.operand.location, getResult(operand), memberName);
- var args = this.transformAny(tree.args);
- var expressions = $traceurRuntime.spread(getExpressions(operand), [createAssignmentExpression(tmp, memberExpresssion)]);
- var argResults = [getResult(operand)];
- args.args.forEach((function(arg) {
- var $__152;
- ($__152 = expressions).push.apply($__152, $traceurRuntime.toObject(getExpressions(arg)));
- argResults.push(getResult(arg));
- }));
- var callExpression = new CallExpression(tree.location, createMemberExpression(tmp, 'call'), new ArgumentList(args.location, argResults));
- var tmp2 = this.addTempVar();
- expressions.push(createAssignmentExpression(tmp2, callExpression), tmp2);
- return createCommaExpression(expressions);
- },
- transformCallMemberLookupExpression: function(tree) {
- var operand = this.transformAny(tree.operand.operand);
- var memberExpression = this.transformAny(tree.operand.memberExpression);
- var tmp = this.addTempVar();
- var lookupExpresssion = new MemberLookupExpression(tree.operand.location, getResult(operand), getResult(memberExpression));
- var args = this.transformAny(tree.args);
- var expressions = $traceurRuntime.spread(getExpressions(operand), getExpressions(memberExpression), [createAssignmentExpression(tmp, lookupExpresssion)]);
- var argResults = [getResult(operand)];
- args.args.forEach((function(arg, i) {
- var $__152;
- ($__152 = expressions).push.apply($__152, $traceurRuntime.toObject(getExpressions(arg)));
- var result = getResult(arg);
- if (tree.args.args[i].type === SPREAD_EXPRESSION)
- result = new SpreadExpression(arg.location, result);
- argResults.push(result);
- }));
- var callExpression = new CallExpression(tree.location, createMemberExpression(tmp, 'call'), new ArgumentList(args.location, argResults));
- var tmp2 = this.addTempVar();
- expressions.push(createAssignmentExpression(tmp2, callExpression), tmp2);
- return createCommaExpression(expressions);
- },
- transformConditionalExpression: function(tree) {
- var condition = this.transformAny(tree.condition);
- var left = this.transformAny(tree.left);
- var right = this.transformAny(tree.right);
- if (condition === tree.condition && left === tree.left && right === tree.right)
- return tree;
- var res = this.addTempVar();
- var leftTree = createCommaExpression($traceurRuntime.spread(getExpressions(left), [createAssignmentExpression(res, getResult(left))]));
- var rightTree = createCommaExpression($traceurRuntime.spread(getExpressions(right), [createAssignmentExpression(res, getResult(right))]));
- var expressions = $traceurRuntime.spread(getExpressions(condition), [new ConditionalExpression(tree.location, getResult(condition), createParenExpression(leftTree), createParenExpression(rightTree)), res]);
- return createCommaExpression(expressions);
- },
- transformOr: function(left, right) {
- var res = this.addTempVar();
- var leftTree = createCommaExpression([createAssignmentExpression(res, getResult(left))]);
- var rightTree = createCommaExpression($traceurRuntime.spread(getExpressions(right), [createAssignmentExpression(res, getResult(right))]));
- var expressions = $traceurRuntime.spread(getExpressions(left), [new ConditionalExpression(left.location, getResult(left), createParenExpression(leftTree), createParenExpression(rightTree)), res]);
- return createCommaExpression(expressions);
- },
- transformAnd: function(left, right) {
- var res = this.addTempVar();
- var leftTree = createCommaExpression($traceurRuntime.spread(getExpressions(right), [createAssignmentExpression(res, getResult(right))]));
- var rightTree = createCommaExpression([createAssignmentExpression(res, getResult(left))]);
- var expressions = $traceurRuntime.spread(getExpressions(left), [new ConditionalExpression(left.location, getResult(left), createParenExpression(leftTree), createParenExpression(rightTree)), res]);
- return createCommaExpression(expressions);
- },
- transformSpreadExpression: function(tree) {
- var expression = this.transformAny(tree.expression);
- if (expression === tree.expression)
- return tree;
- var result = getResult(expression);
- if (result.type !== SPREAD_EXPRESSION)
- result = new SpreadExpression(result.location, result);
- var expressions = $traceurRuntime.spread(getExpressions(expression), [result]);
- return createCommaExpression(expressions);
- },
- createCommaExpressionBuilder: function() {
- return new CommaExpressionBuilder(this.addTempVar());
- }
- }, {}, ParseTreeTransformer);
- return {get ExplodeExpressionTransformer() {
- return ExplodeExpressionTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/SuperTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/SuperTransformer";
- var $__153 = Object.freeze(Object.defineProperties(["$traceurRuntime.superCall(", ", ", ", ", ",\n ", ")"], {raw: {value: Object.freeze(["$traceurRuntime.superCall(", ", ", ", ", ",\n ", ")"])}})),
- $__154 = Object.freeze(Object.defineProperties(["$traceurRuntime.superGet(", ", ", ", ", ")"], {raw: {value: Object.freeze(["$traceurRuntime.superGet(", ", ", ", ", ")"])}})),
- $__155 = Object.freeze(Object.defineProperties(["$traceurRuntime.superSet(", ", ", ", ", ",\n ", ")"], {raw: {value: Object.freeze(["$traceurRuntime.superSet(", ", ", ", ", ",\n ", ")"])}}));
- var ExplodeExpressionTransformer = System.get("traceur@0.0.32/src/codegeneration/ExplodeExpressionTransformer").ExplodeExpressionTransformer;
- var $__157 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- FunctionDeclaration = $__157.FunctionDeclaration,
- FunctionExpression = $__157.FunctionExpression;
- var $__157 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- LITERAL_PROPERTY_NAME = $__157.LITERAL_PROPERTY_NAME,
- MEMBER_EXPRESSION = $__157.MEMBER_EXPRESSION,
- MEMBER_LOOKUP_EXPRESSION = $__157.MEMBER_LOOKUP_EXPRESSION,
- SUPER_EXPRESSION = $__157.SUPER_EXPRESSION;
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var $__157 = System.get("traceur@0.0.32/src/syntax/TokenType"),
- EQUAL = $__157.EQUAL,
- MINUS_MINUS = $__157.MINUS_MINUS,
- PLUS_PLUS = $__157.PLUS_PLUS;
- var assert = System.get("traceur@0.0.32/src/util/assert").assert;
- var $__157 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createArrayLiteralExpression = $__157.createArrayLiteralExpression,
- createIdentifierExpression = $__157.createIdentifierExpression,
- createParenExpression = $__157.createParenExpression,
- createStringLiteral = $__157.createStringLiteral,
- createThisExpression = $__157.createThisExpression;
- var parseExpression = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser").parseExpression;
- var ExplodeSuperExpression = function ExplodeSuperExpression() {
- $traceurRuntime.defaultSuperCall(this, $ExplodeSuperExpression.prototype, arguments);
- };
- var $ExplodeSuperExpression = ExplodeSuperExpression;
- ($traceurRuntime.createClass)(ExplodeSuperExpression, {
- transformArrowFunctionExpression: function(tree) {
- return tree;
- },
- transformClassExpression: function(tree) {
- return tree;
- },
- transformFunctionBody: function(tree) {
- return tree;
- }
- }, {}, ExplodeExpressionTransformer);
- var SuperTransformer = function SuperTransformer(tempVarTransformer, protoName, methodTree, thisName) {
- this.tempVarTransformer_ = tempVarTransformer;
- this.protoName_ = protoName;
- this.method_ = methodTree;
- this.superCount_ = 0;
- this.thisVar_ = createIdentifierExpression(thisName);
- this.inNestedFunc_ = 0;
- this.nestedSuperCount_ = 0;
- };
- var $SuperTransformer = SuperTransformer;
- ($traceurRuntime.createClass)(SuperTransformer, {
- get hasSuper() {
- return this.superCount_ > 0;
- },
- get nestedSuper() {
- return this.nestedSuperCount_ > 0;
- },
- transformFunctionDeclaration: function(tree) {
- return this.transformFunction_(tree, FunctionDeclaration);
- },
- transformFunctionExpression: function(tree) {
- return this.transformFunction_(tree, FunctionExpression);
- },
- transformFunction_: function(tree, constructor) {
- var oldSuperCount = this.superCount_;
- this.inNestedFunc_++;
- var transformedTree = constructor === FunctionExpression ? $traceurRuntime.superCall(this, $SuperTransformer.prototype, "transformFunctionExpression", [tree]) : $traceurRuntime.superCall(this, $SuperTransformer.prototype, "transformFunctionDeclaration", [tree]);
- this.inNestedFunc_--;
- if (oldSuperCount !== this.superCount_)
- this.nestedSuperCount_ += this.superCount_ - oldSuperCount;
- return transformedTree;
- },
- transformGetAccessor: function(tree) {
- return tree;
- },
- transformSetAccessor: function(tree) {
- return tree;
- },
- transformPropertyMethodAssignMent: function(tree) {
- return tree;
- },
- transformCallExpression: function(tree) {
- if (this.method_ && tree.operand.type == SUPER_EXPRESSION) {
- this.superCount_++;
- assert(this.method_.name.type === LITERAL_PROPERTY_NAME);
- var methodName = this.method_.name.literalToken.value;
- return this.createSuperCallExpression_(methodName, tree);
- }
- if (hasSuperMemberExpression(tree.operand)) {
- this.superCount_++;
- var name;
- if (tree.operand.type == MEMBER_EXPRESSION)
- name = tree.operand.memberName.value;
- else
- name = tree.operand.memberExpression;
- return this.createSuperCallExpression_(name, tree);
- }
- return $traceurRuntime.superCall(this, $SuperTransformer.prototype, "transformCallExpression", [tree]);
- },
- createSuperCallExpression_: function(methodName, tree) {
- var thisExpr = this.inNestedFunc_ ? this.thisVar_ : createThisExpression();
- var args = createArrayLiteralExpression(tree.args.args);
- return this.createSuperCallExpression(thisExpr, this.protoName_, methodName, args);
- },
- createSuperCallExpression: function(thisExpr, protoName, methodName, args) {
- return parseExpression($__153, thisExpr, protoName, methodName, args);
- },
- transformMemberShared_: function(tree, name) {
- var thisExpr = this.inNestedFunc_ ? this.thisVar_ : createThisExpression();
- return parseExpression($__154, thisExpr, this.protoName_, name);
- },
- transformMemberExpression: function(tree) {
- if (tree.operand.type === SUPER_EXPRESSION) {
- this.superCount_++;
- return this.transformMemberShared_(tree, createStringLiteral(tree.memberName.value));
- }
- return $traceurRuntime.superCall(this, $SuperTransformer.prototype, "transformMemberExpression", [tree]);
- },
- transformMemberLookupExpression: function(tree) {
- if (tree.operand.type === SUPER_EXPRESSION)
- return this.transformMemberShared_(tree, tree.memberExpression);
- return $traceurRuntime.superCall(this, $SuperTransformer.prototype, "transformMemberLookupExpression", [tree]);
- },
- transformBinaryOperator: function(tree) {
- if (tree.operator.isAssignmentOperator() && hasSuperMemberExpression(tree.left)) {
- if (tree.operator.type !== EQUAL) {
- var exploded = new ExplodeSuperExpression(this.tempVarTransformer_).transformAny(tree);
- return this.transformAny(createParenExpression(exploded));
- }
- this.superCount_++;
- var name = tree.left.type === MEMBER_LOOKUP_EXPRESSION ? tree.left.memberExpression : createStringLiteral(tree.left.memberName.value);
- var thisExpr = this.inNestedFunc_ ? this.thisVar_ : createThisExpression();
- var right = this.transformAny(tree.right);
- return parseExpression($__155, thisExpr, this.protoName_, name, right);
- }
- return $traceurRuntime.superCall(this, $SuperTransformer.prototype, "transformBinaryOperator", [tree]);
- },
- transformUnaryExpression: function(tree) {
- var transformed = this.transformIncrementDecrement_(tree);
- if (transformed)
- return transformed;
- return $traceurRuntime.superCall(this, $SuperTransformer.prototype, "transformUnaryExpression", [tree]);
- },
- transformPostfixExpression: function(tree) {
- var transformed = this.transformIncrementDecrement_(tree);
- if (transformed)
- return transformed;
- return $traceurRuntime.superCall(this, $SuperTransformer.prototype, "transformPostfixExpression", [tree]);
- },
- transformIncrementDecrement_: function(tree) {
- var operator = tree.operator;
- var operand = tree.operand;
- if ((operator.type === PLUS_PLUS || operator.type === MINUS_MINUS) && hasSuperMemberExpression(operand)) {
- var exploded = new ExplodeSuperExpression(this.tempVarTransformer_).transformAny(tree);
- if (exploded !== tree)
- exploded = createParenExpression(exploded);
- return this.transformAny(exploded);
- }
- return null;
- }
- }, {}, ParseTreeTransformer);
- function hasSuperMemberExpression(tree) {
- if (tree.type !== MEMBER_EXPRESSION && tree.type !== MEMBER_LOOKUP_EXPRESSION)
- return false;
- return tree.operand.type === SUPER_EXPRESSION;
- }
- return {get SuperTransformer() {
- return SuperTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/ClassTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/ClassTransformer";
- var $__158 = Object.freeze(Object.defineProperties(["($traceurRuntime.createClass)(", ", ", ", ", ",\n ", ")"], {raw: {value: Object.freeze(["($traceurRuntime.createClass)(", ", ", ", ", ",\n ", ")"])}})),
- $__159 = Object.freeze(Object.defineProperties(["($traceurRuntime.createClass)(", ", ", ", ", ")"], {raw: {value: Object.freeze(["($traceurRuntime.createClass)(", ", ", ", ", ")"])}})),
- $__160 = Object.freeze(Object.defineProperties(["var ", " = ", ""], {raw: {value: Object.freeze(["var ", " = ", ""])}})),
- $__161 = Object.freeze(Object.defineProperties(["var ", " = ", ""], {raw: {value: Object.freeze(["var ", " = ", ""])}})),
- $__162 = Object.freeze(Object.defineProperties(["function($__super) {\n var ", " = ", ";\n return ($traceurRuntime.createClass)(", ", ", ",\n ", ", $__super);\n }(", ")"], {raw: {value: Object.freeze(["function($__super) {\n var ", " = ", ";\n return ($traceurRuntime.createClass)(", ", ", ",\n ", ", $__super);\n }(", ")"])}})),
- $__163 = Object.freeze(Object.defineProperties(["function() {\n var ", " = ", ";\n return ($traceurRuntime.createClass)(", ", ", ",\n ", ");\n }()"], {raw: {value: Object.freeze(["function() {\n var ", " = ", ";\n return ($traceurRuntime.createClass)(", ", ", ",\n ", ");\n }()"])}})),
- $__164 = Object.freeze(Object.defineProperties(["$traceurRuntime.defaultSuperCall(this,\n ", ".prototype, arguments)"], {raw: {value: Object.freeze(["$traceurRuntime.defaultSuperCall(this,\n ", ".prototype, arguments)"])}}));
- var AlphaRenamer = System.get("traceur@0.0.32/src/codegeneration/AlphaRenamer").AlphaRenamer;
- var CONSTRUCTOR = System.get("traceur@0.0.32/src/syntax/PredefinedName").CONSTRUCTOR;
- var $__167 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- AnonBlock = $__167.AnonBlock,
- ExportDeclaration = $__167.ExportDeclaration,
- FunctionExpression = $__167.FunctionExpression,
- GetAccessor = $__167.GetAccessor,
- PropertyMethodAssignment = $__167.PropertyMethodAssignment,
- SetAccessor = $__167.SetAccessor;
- var $__167 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- GET_ACCESSOR = $__167.GET_ACCESSOR,
- PROPERTY_METHOD_ASSIGNMENT = $__167.PROPERTY_METHOD_ASSIGNMENT,
- SET_ACCESSOR = $__167.SET_ACCESSOR;
- var SuperTransformer = System.get("traceur@0.0.32/src/codegeneration/SuperTransformer").SuperTransformer;
- var TempVarTransformer = System.get("traceur@0.0.32/src/codegeneration/TempVarTransformer").TempVarTransformer;
- var VAR = System.get("traceur@0.0.32/src/syntax/TokenType").VAR;
- var MakeStrictTransformer = System.get("traceur@0.0.32/src/codegeneration/MakeStrictTransformer").MakeStrictTransformer;
- var $__167 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createEmptyParameterList = $__167.createEmptyParameterList,
- createExpressionStatement = $__167.createExpressionStatement,
- createFunctionBody = $__167.createFunctionBody,
- id = $__167.createIdentifierExpression,
- createMemberExpression = $__167.createMemberExpression,
- createObjectLiteralExpression = $__167.createObjectLiteralExpression,
- createParenExpression = $__167.createParenExpression,
- createThisExpression = $__167.createThisExpression,
- createVariableStatement = $__167.createVariableStatement;
- var hasUseStrict = System.get("traceur@0.0.32/src/semantics/util").hasUseStrict;
- var parseOptions = System.get("traceur@0.0.32/src/options").parseOptions;
- var $__167 = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser"),
- parseExpression = $__167.parseExpression,
- parseStatement = $__167.parseStatement,
- parseStatements = $__167.parseStatements;
- var propName = System.get("traceur@0.0.32/src/staticsemantics/PropName").propName;
- function classCall(func, object, staticObject, superClass) {
- if (superClass) {
- return parseExpression($__158, func, object, staticObject, superClass);
- }
- return parseExpression($__159, func, object, staticObject);
- }
- var ClassTransformer = function ClassTransformer(identifierGenerator) {
- $traceurRuntime.superCall(this, $ClassTransformer.prototype, "constructor", [identifierGenerator]);
- this.strictCount_ = 0;
- this.state_ = null;
- };
- var $ClassTransformer = ClassTransformer;
- ($traceurRuntime.createClass)(ClassTransformer, {
- transformExportDeclaration: function(tree) {
- var transformed = $traceurRuntime.superCall(this, $ClassTransformer.prototype, "transformExportDeclaration", [tree]);
- if (transformed === tree)
- return tree;
- var declaration = transformed.declaration;
- if (declaration instanceof AnonBlock) {
- var statements = $traceurRuntime.spread([new ExportDeclaration(null, declaration.statements[0], [])], declaration.statements.slice(1));
- return new AnonBlock(null, statements);
- }
- return transformed;
- },
- transformModule: function(tree) {
- this.strictCount_ = 1;
- return $traceurRuntime.superCall(this, $ClassTransformer.prototype, "transformModule", [tree]);
- },
- transformScript: function(tree) {
- this.strictCount_ = +hasUseStrict(tree.scriptItemList);
- return $traceurRuntime.superCall(this, $ClassTransformer.prototype, "transformScript", [tree]);
- },
- transformFunctionBody: function(tree) {
- var useStrict = +hasUseStrict(tree.statements);
- this.strictCount_ += useStrict;
- var result = $traceurRuntime.superCall(this, $ClassTransformer.prototype, "transformFunctionBody", [tree]);
- this.strictCount_ -= useStrict;
- return result;
- },
- makeStrict_: function(tree) {
- if (this.strictCount_)
- return tree;
- return MakeStrictTransformer.transformTree(tree);
- },
- transformClassElements_: function(tree, internalName) {
- var $__165 = this;
- var oldState = this.state_;
- this.state_ = {hasSuper: false};
- var superClass = this.transformAny(tree.superClass);
- var hasConstructor = false;
- var protoElements = [],
- staticElements = [];
- var constructorBody,
- constructorParams;
- tree.elements.forEach((function(tree) {
- var elements,
- homeObject;
- if (tree.isStatic) {
- elements = staticElements;
- homeObject = internalName;
- } else {
- elements = protoElements;
- homeObject = createMemberExpression(internalName, 'prototype');
- }
- switch (tree.type) {
- case GET_ACCESSOR:
- elements.push($__165.transformGetAccessor_(tree, homeObject));
- break;
- case SET_ACCESSOR:
- elements.push($__165.transformSetAccessor_(tree, homeObject));
- break;
- case PROPERTY_METHOD_ASSIGNMENT:
- var transformed = $__165.transformPropertyMethodAssignment_(tree, homeObject);
- if (!tree.isStatic && propName(tree) === CONSTRUCTOR) {
- hasConstructor = true;
- constructorParams = transformed.formalParameterList;
- constructorBody = transformed.functionBody;
- } else {
- elements.push(transformed);
- }
- break;
- default:
- throw new Error(("Unexpected class element: " + tree.type));
- }
- }));
- var object = createObjectLiteralExpression(protoElements);
- var staticObject = createObjectLiteralExpression(staticElements);
- var func;
- if (!hasConstructor) {
- func = this.getDefaultConstructor_(tree, internalName);
- } else {
- func = new FunctionExpression(tree.location, tree.name, false, constructorParams, null, [], constructorBody);
- }
- var state = this.state_;
- this.state_ = oldState;
- return {
- func: func,
- superClass: superClass,
- object: object,
- staticObject: staticObject,
- hasSuper: state.hasSuper
- };
- },
- transformClassDeclaration: function(tree) {
- var name = tree.name.identifierToken;
- var internalName = id(("$" + name));
- var renamed = AlphaRenamer.rename(tree, name.value, internalName.identifierToken.value);
- var referencesClassName = renamed !== tree;
- var tree = renamed;
- var $__167 = this.transformClassElements_(tree, internalName),
- func = $__167.func,
- hasSuper = $__167.hasSuper,
- object = $__167.object,
- staticObject = $__167.staticObject,
- superClass = $__167.superClass;
- var statements = parseStatements($__160, name, func);
- var expr = classCall(name, object, staticObject, superClass);
- if (hasSuper || referencesClassName) {
- statements.push(parseStatement($__161, internalName, name));
- }
- statements.push(createExpressionStatement(expr));
- var anonBlock = new AnonBlock(null, statements);
- return this.makeStrict_(anonBlock);
- },
- transformClassExpression: function(tree) {
- this.pushTempVarState();
- var name;
- if (tree.name)
- name = tree.name.identifierToken;
- else
- name = id(this.getTempIdentifier());
- var $__167 = this.transformClassElements_(tree, name),
- func = $__167.func,
- hasSuper = $__167.hasSuper,
- object = $__167.object,
- staticObject = $__167.staticObject,
- superClass = $__167.superClass;
- var expression;
- if (hasSuper) {
- expression = parseExpression($__162, name, func, name, object, staticObject, superClass);
- } else if (tree.name) {
- expression = parseExpression($__163, name, func, name, object, staticObject);
- } else {
- expression = classCall(func, object, staticObject, superClass);
- }
- this.popTempVarState();
- return createParenExpression(this.makeStrict_(expression));
- },
- transformPropertyMethodAssignment_: function(tree, internalName) {
- var formalParameterList = this.transformAny(tree.formalParameterList);
- var functionBody = this.transformSuperInFunctionBody_(tree, tree.functionBody, internalName);
- if (!tree.isStatic && formalParameterList === tree.formalParameterList && functionBody === tree.functionBody) {
- return tree;
- }
- var isStatic = false;
- return new PropertyMethodAssignment(tree.location, isStatic, tree.isGenerator, tree.name, formalParameterList, tree.typeAnnotation, tree.annotations, functionBody);
- },
- transformGetAccessor_: function(tree, internalName) {
- var body = this.transformSuperInFunctionBody_(tree, tree.body, internalName);
- if (!tree.isStatic && body === tree.body)
- return tree;
- return new GetAccessor(tree.location, false, tree.name, tree.typeAnnotation, tree.annotations, body);
- },
- transformSetAccessor_: function(tree, internalName) {
- var parameter = this.transformAny(tree.parameter);
- var body = this.transformSuperInFunctionBody_(tree, tree.body, internalName);
- if (!tree.isStatic && body === tree.body)
- return tree;
- return new SetAccessor(tree.location, false, tree.name, parameter, tree.annotations, body);
- },
- transformSuperInFunctionBody_: function(methodTree, tree, internalName) {
- this.pushTempVarState();
- var thisName = this.getTempIdentifier();
- var thisDecl = createVariableStatement(VAR, thisName, createThisExpression());
- var superTransformer = new SuperTransformer(this, internalName, methodTree, thisName);
- var transformedTree = superTransformer.transformFunctionBody(this.transformFunctionBody(tree));
- if (superTransformer.hasSuper)
- this.state_.hasSuper = true;
- this.popTempVarState();
- if (superTransformer.nestedSuper)
- return createFunctionBody([thisDecl].concat(transformedTree.statements));
- return transformedTree;
- },
- getDefaultConstructor_: function(tree, internalName) {
- var constructorParams = createEmptyParameterList();
- var constructorBody;
- if (tree.superClass) {
- var statement = parseStatement($__164, internalName);
- constructorBody = createFunctionBody([statement]);
- this.state_.hasSuper = true;
- } else {
- constructorBody = createFunctionBody([]);
- }
- return new FunctionExpression(tree.location, tree.name, false, constructorParams, null, [], constructorBody);
- }
- }, {}, TempVarTransformer);
- return {get ClassTransformer() {
- return ClassTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/CommonJsModuleTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/CommonJsModuleTransformer";
- var $__168 = Object.freeze(Object.defineProperties(["module.exports = function() {\n ", "\n }.call(", ");"], {raw: {value: Object.freeze(["module.exports = function() {\n ", "\n }.call(", ");"])}})),
- $__169 = Object.freeze(Object.defineProperties(["module.exports = ", ";"], {raw: {value: Object.freeze(["module.exports = ", ";"])}})),
- $__170 = Object.freeze(Object.defineProperties(["require(", ")"], {raw: {value: Object.freeze(["require(", ")"])}})),
- $__171 = Object.freeze(Object.defineProperties(["__esModule: true"], {raw: {value: Object.freeze(["__esModule: true"])}}));
- var ModuleTransformer = System.get("traceur@0.0.32/src/codegeneration/ModuleTransformer").ModuleTransformer;
- var RETURN_STATEMENT = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType").RETURN_STATEMENT;
- var assert = System.get("traceur@0.0.32/src/util/assert").assert;
- var globalThis = System.get("traceur@0.0.32/src/codegeneration/globalThis").default;
- var $__173 = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser"),
- parseExpression = $__173.parseExpression,
- parsePropertyDefinition = $__173.parsePropertyDefinition,
- parseStatement = $__173.parseStatement,
- parseStatements = $__173.parseStatements;
- var scopeContainsThis = System.get("traceur@0.0.32/src/codegeneration/scopeContainsThis").default;
- var CommonJsModuleTransformer = function CommonJsModuleTransformer() {
- $traceurRuntime.defaultSuperCall(this, $CommonJsModuleTransformer.prototype, arguments);
- };
- var $CommonJsModuleTransformer = CommonJsModuleTransformer;
- ($traceurRuntime.createClass)(CommonJsModuleTransformer, {
- wrapModule: function(statements) {
- var needsIife = statements.some(scopeContainsThis);
- if (needsIife) {
- return parseStatements($__168, statements, globalThis());
- }
- var last = statements[statements.length - 1];
- statements = statements.slice(0, -1);
- assert(last.type === RETURN_STATEMENT);
- var exportObject = last.expression;
- if (this.hasExports()) {
- statements.push(parseStatement($__169, exportObject));
- }
- return statements;
- },
- transformModuleSpecifier: function(tree) {
- return parseExpression($__170, tree.token);
- },
- getExportProperties: function() {
- var properties = $traceurRuntime.superCall(this, $CommonJsModuleTransformer.prototype, "getExportProperties", []);
- if (this.exportVisitor_.hasExports())
- properties.push(parsePropertyDefinition($__171));
- return properties;
- }
- }, {}, ModuleTransformer);
- return {get CommonJsModuleTransformer() {
- return CommonJsModuleTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/ParameterTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/ParameterTransformer";
- var FunctionBody = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees").FunctionBody;
- var TempVarTransformer = System.get("traceur@0.0.32/src/codegeneration/TempVarTransformer").TempVarTransformer;
- var prependStatements = System.get("traceur@0.0.32/src/codegeneration/PrependStatements").prependStatements;
- var stack = [];
- var ParameterTransformer = function ParameterTransformer() {
- $traceurRuntime.defaultSuperCall(this, $ParameterTransformer.prototype, arguments);
- };
- var $ParameterTransformer = ParameterTransformer;
- ($traceurRuntime.createClass)(ParameterTransformer, {
- transformArrowFunctionExpression: function(tree) {
- stack.push([]);
- return $traceurRuntime.superCall(this, $ParameterTransformer.prototype, "transformArrowFunctionExpression", [tree]);
- },
- transformFunctionDeclaration: function(tree) {
- stack.push([]);
- return $traceurRuntime.superCall(this, $ParameterTransformer.prototype, "transformFunctionDeclaration", [tree]);
- },
- transformFunctionExpression: function(tree) {
- stack.push([]);
- return $traceurRuntime.superCall(this, $ParameterTransformer.prototype, "transformFunctionExpression", [tree]);
- },
- transformGetAccessor: function(tree) {
- stack.push([]);
- return $traceurRuntime.superCall(this, $ParameterTransformer.prototype, "transformGetAccessor", [tree]);
- },
- transformSetAccessor: function(tree) {
- stack.push([]);
- return $traceurRuntime.superCall(this, $ParameterTransformer.prototype, "transformSetAccessor", [tree]);
- },
- transformPropertyMethodAssignment: function(tree) {
- stack.push([]);
- return $traceurRuntime.superCall(this, $ParameterTransformer.prototype, "transformPropertyMethodAssignment", [tree]);
- },
- transformFunctionBody: function(tree) {
- var transformedTree = $traceurRuntime.superCall(this, $ParameterTransformer.prototype, "transformFunctionBody", [tree]);
- var statements = stack.pop();
- if (!statements.length)
- return transformedTree;
- statements = prependStatements.apply(null, $traceurRuntime.spread([transformedTree.statements], statements));
- return new FunctionBody(transformedTree.location, statements);
- },
- get parameterStatements() {
- return stack[stack.length - 1];
- }
- }, {}, TempVarTransformer);
- return {get ParameterTransformer() {
- return ParameterTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/DefaultParametersTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/DefaultParametersTransformer";
- var $__177 = System.get("traceur@0.0.32/src/semantics/util"),
- isUndefined = $__177.isUndefined,
- isVoidExpression = $__177.isVoidExpression;
- var FormalParameterList = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees").FormalParameterList;
- var ParameterTransformer = System.get("traceur@0.0.32/src/codegeneration/ParameterTransformer").ParameterTransformer;
- var ARGUMENTS = System.get("traceur@0.0.32/src/syntax/PredefinedName").ARGUMENTS;
- var $__177 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- FORMAL_PARAMETER = $__177.FORMAL_PARAMETER,
- REST_PARAMETER = $__177.REST_PARAMETER;
- var $__177 = System.get("traceur@0.0.32/src/syntax/TokenType"),
- NOT_EQUAL_EQUAL = $__177.NOT_EQUAL_EQUAL,
- VAR = $__177.VAR;
- var $__177 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createBinaryOperator = $__177.createBinaryOperator,
- createConditionalExpression = $__177.createConditionalExpression,
- createIdentifierExpression = $__177.createIdentifierExpression,
- createMemberLookupExpression = $__177.createMemberLookupExpression,
- createNumberLiteral = $__177.createNumberLiteral,
- createOperatorToken = $__177.createOperatorToken,
- createVariableStatement = $__177.createVariableStatement,
- createVoid0 = $__177.createVoid0;
- var prependStatements = System.get("traceur@0.0.32/src/codegeneration/PrependStatements").prependStatements;
- function createDefaultAssignment(index, binding, initialiser) {
- var argumentsExpression = createMemberLookupExpression(createIdentifierExpression(ARGUMENTS), createNumberLiteral(index));
- var assignmentExpression;
- if (initialiser === null || isUndefined(initialiser) || isVoidExpression(initialiser)) {
- assignmentExpression = argumentsExpression;
- } else {
- assignmentExpression = createConditionalExpression(createBinaryOperator(argumentsExpression, createOperatorToken(NOT_EQUAL_EQUAL), createVoid0()), argumentsExpression, initialiser);
- }
- return createVariableStatement(VAR, binding, assignmentExpression);
- }
- var DefaultParametersTransformer = function DefaultParametersTransformer() {
- $traceurRuntime.defaultSuperCall(this, $DefaultParametersTransformer.prototype, arguments);
- };
- var $DefaultParametersTransformer = DefaultParametersTransformer;
- ($traceurRuntime.createClass)(DefaultParametersTransformer, {transformFormalParameterList: function(tree) {
- var parameters = [];
- var changed = false;
- var defaultToUndefined = false;
- for (var i = 0; i < tree.parameters.length; i++) {
- var param = this.transformAny(tree.parameters[i]);
- if (param !== tree.parameters[i])
- changed = true;
- if (param.isRestParameter() || !param.parameter.initialiser && !defaultToUndefined) {
- parameters.push(param);
- } else {
- defaultToUndefined = true;
- changed = true;
- this.parameterStatements.push(createDefaultAssignment(i, param.parameter.binding, param.parameter.initialiser));
- }
- }
- if (!changed)
- return tree;
- return new FormalParameterList(tree.location, parameters);
- }}, {}, ParameterTransformer);
- return {get DefaultParametersTransformer() {
- return DefaultParametersTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/DestructuringTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/DestructuringTransformer";
- var $__180 = System.get("traceur@0.0.32/src/syntax/PredefinedName"),
- ARRAY = $__180.ARRAY,
- CALL = $__180.CALL,
- PROTOTYPE = $__180.PROTOTYPE,
- SLICE = $__180.SLICE;
- var $__180 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- ARRAY_LITERAL_EXPRESSION = $__180.ARRAY_LITERAL_EXPRESSION,
- ARRAY_PATTERN = $__180.ARRAY_PATTERN,
- BINDING_ELEMENT = $__180.BINDING_ELEMENT,
- BINDING_IDENTIFIER = $__180.BINDING_IDENTIFIER,
- BLOCK = $__180.BLOCK,
- CALL_EXPRESSION = $__180.CALL_EXPRESSION,
- COMPUTED_PROPERTY_NAME = $__180.COMPUTED_PROPERTY_NAME,
- IDENTIFIER_EXPRESSION = $__180.IDENTIFIER_EXPRESSION,
- LITERAL_EXPRESSION = $__180.LITERAL_EXPRESSION,
- MEMBER_EXPRESSION = $__180.MEMBER_EXPRESSION,
- MEMBER_LOOKUP_EXPRESSION = $__180.MEMBER_LOOKUP_EXPRESSION,
- OBJECT_LITERAL_EXPRESSION = $__180.OBJECT_LITERAL_EXPRESSION,
- OBJECT_PATTERN = $__180.OBJECT_PATTERN,
- OBJECT_PATTERN_FIELD = $__180.OBJECT_PATTERN_FIELD,
- PAREN_EXPRESSION = $__180.PAREN_EXPRESSION,
- VARIABLE_DECLARATION_LIST = $__180.VARIABLE_DECLARATION_LIST;
- var $__180 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- BindingElement = $__180.BindingElement,
- Catch = $__180.Catch,
- ForInStatement = $__180.ForInStatement,
- ForOfStatement = $__180.ForOfStatement,
- LiteralExpression = $__180.LiteralExpression;
- var ParameterTransformer = System.get("traceur@0.0.32/src/codegeneration/ParameterTransformer").ParameterTransformer;
- var $__180 = System.get("traceur@0.0.32/src/syntax/TokenType"),
- EQUAL = $__180.EQUAL,
- IDENTIFIER = $__180.IDENTIFIER,
- IN = $__180.IN,
- LET = $__180.LET,
- VAR = $__180.VAR;
- var $__180 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createArgumentList = $__180.createArgumentList,
- createAssignmentExpression = $__180.createAssignmentExpression,
- createBinaryOperator = $__180.createBinaryOperator,
- createBindingIdentifier = $__180.createBindingIdentifier,
- createBlock = $__180.createBlock,
- createCallExpression = $__180.createCallExpression,
- createCommaExpression = $__180.createCommaExpression,
- createConditionalExpression = $__180.createConditionalExpression,
- createExpressionStatement = $__180.createExpressionStatement,
- createIdentifierExpression = $__180.createIdentifierExpression,
- createMemberExpression = $__180.createMemberExpression,
- createMemberLookupExpression = $__180.createMemberLookupExpression,
- createNumberLiteral = $__180.createNumberLiteral,
- createOperatorToken = $__180.createOperatorToken,
- createParenExpression = $__180.createParenExpression,
- createStringLiteral = $__180.createStringLiteral,
- createVariableDeclaration = $__180.createVariableDeclaration,
- createVariableDeclarationList = $__180.createVariableDeclarationList,
- createVariableStatement = $__180.createVariableStatement;
- var options = System.get("traceur@0.0.32/src/options").options;
- var Desugaring = function Desugaring(rvalue) {
- this.rvalue = rvalue;
- };
- ($traceurRuntime.createClass)(Desugaring, {}, {});
- var AssignmentExpressionDesugaring = function AssignmentExpressionDesugaring(rvalue) {
- $traceurRuntime.superCall(this, $AssignmentExpressionDesugaring.prototype, "constructor", [rvalue]);
- this.expressions = [];
- };
- var $AssignmentExpressionDesugaring = AssignmentExpressionDesugaring;
- ($traceurRuntime.createClass)(AssignmentExpressionDesugaring, {assign: function(lvalue, rvalue) {
- lvalue = lvalue instanceof BindingElement ? lvalue.binding : lvalue;
- this.expressions.push(createAssignmentExpression(lvalue, rvalue));
- }}, {}, Desugaring);
- var VariableDeclarationDesugaring = function VariableDeclarationDesugaring(rvalue) {
- $traceurRuntime.superCall(this, $VariableDeclarationDesugaring.prototype, "constructor", [rvalue]);
- this.declarations = [];
- };
- var $VariableDeclarationDesugaring = VariableDeclarationDesugaring;
- ($traceurRuntime.createClass)(VariableDeclarationDesugaring, {assign: function(lvalue, rvalue) {
- if (lvalue instanceof BindingElement) {
- this.declarations.push(createVariableDeclaration(lvalue.binding, rvalue));
- return;
- }
- if (lvalue.type == IDENTIFIER_EXPRESSION)
- lvalue = createBindingIdentifier(lvalue);
- this.declarations.push(createVariableDeclaration(lvalue, rvalue));
- }}, {}, Desugaring);
- function createConditionalMemberExpression(rvalue, name, initialiser) {
- if (name.type === COMPUTED_PROPERTY_NAME) {
- return createConditionalMemberLookupExpression(rvalue, name.expression, initialiser);
- }
- var token;
- if (name.type == BINDING_IDENTIFIER) {
- token = name.identifierToken;
- } else {
- token = name.literalToken;
- if (!token.isKeyword() && token.type !== IDENTIFIER) {
- return createConditionalMemberLookupExpression(rvalue, new LiteralExpression(null, token), initialiser);
- }
- }
- if (!initialiser)
- return createMemberExpression(rvalue, token);
- return createConditionalExpression(createBinaryOperator(createStringLiteral(token.toString()), createOperatorToken(IN), rvalue), createMemberExpression(rvalue, token), initialiser);
- }
- function createConditionalMemberLookupExpression(rvalue, index, initialiser) {
- if (!initialiser)
- return createMemberLookupExpression(rvalue, index);
- return createConditionalExpression(createBinaryOperator(index, createOperatorToken(IN), rvalue), createMemberLookupExpression(rvalue, index), initialiser);
- }
- var DestructuringTransformer = function DestructuringTransformer() {
- $traceurRuntime.defaultSuperCall(this, $DestructuringTransformer.prototype, arguments);
- };
- var $DestructuringTransformer = DestructuringTransformer;
- ($traceurRuntime.createClass)(DestructuringTransformer, {
- transformArrayPattern: function(tree) {
- throw new Error('unreachable');
- },
- transformObjectPattern: function(tree) {
- throw new Error('unreachable');
- },
- transformBinaryOperator: function(tree) {
- if (tree.operator.type == EQUAL && tree.left.isPattern()) {
- return this.transformAny(this.desugarAssignment_(tree.left, tree.right));
- } else {
- return $traceurRuntime.superCall(this, $DestructuringTransformer.prototype, "transformBinaryOperator", [tree]);
- }
- },
- desugarAssignment_: function(lvalue, rvalue) {
- var tempIdent = createIdentifierExpression(this.addTempVar());
- var desugaring = new AssignmentExpressionDesugaring(tempIdent);
- this.desugarPattern_(desugaring, lvalue);
- desugaring.expressions.unshift(createAssignmentExpression(tempIdent, rvalue));
- desugaring.expressions.push(tempIdent);
- return createParenExpression(createCommaExpression(desugaring.expressions));
- },
- transformVariableDeclarationList: function(tree) {
- var $__178 = this;
- if (!this.destructuringInDeclaration_(tree)) {
- return $traceurRuntime.superCall(this, $DestructuringTransformer.prototype, "transformVariableDeclarationList", [tree]);
- }
- this.pushTempVarState();
- var desugaredDeclarations = [];
- tree.declarations.forEach((function(declaration) {
- var $__181;
- if (declaration.lvalue.isPattern()) {
- ($__181 = desugaredDeclarations).push.apply($__181, $traceurRuntime.toObject($__178.desugarVariableDeclaration_(declaration)));
- } else {
- desugaredDeclarations.push(declaration);
- }
- }));
- var transformedTree = this.transformVariableDeclarationList(createVariableDeclarationList(tree.declarationType, desugaredDeclarations));
- this.popTempVarState();
- return transformedTree;
- },
- transformForInStatement: function(tree) {
- return this.transformForInOrOf_(tree, $traceurRuntime.superGet(this, $DestructuringTransformer.prototype, "transformForInStatement"), ForInStatement);
- },
- transformForOfStatement: function(tree) {
- return this.transformForInOrOf_(tree, $traceurRuntime.superGet(this, $DestructuringTransformer.prototype, "transformForOfStatement"), ForOfStatement);
- },
- transformForInOrOf_: function(tree, superMethod, constr) {
- var $__181;
- if (!tree.initialiser.isPattern() && (tree.initialiser.type !== VARIABLE_DECLARATION_LIST || !this.destructuringInDeclaration_(tree.initialiser))) {
- return superMethod.call(this, tree);
- }
- this.pushTempVarState();
- var declarationType,
- lvalue;
- if (tree.initialiser.isPattern()) {
- declarationType = null;
- lvalue = tree.initialiser;
- } else {
- declarationType = tree.initialiser.declarationType;
- lvalue = tree.initialiser.declarations[0].lvalue;
- }
- var statements = [];
- var binding = this.desugarBinding_(lvalue, statements, declarationType);
- var initialiser = createVariableDeclarationList(VAR, binding, null);
- var collection = this.transformAny(tree.collection);
- var body = this.transformAny(tree.body);
- if (body.type !== BLOCK)
- body = createBlock(body);
- ($__181 = statements).push.apply($__181, $traceurRuntime.toObject(body.statements));
- body = createBlock(statements);
- this.popTempVarState();
- return new constr(tree.location, initialiser, collection, body);
- },
- transformBindingElement: function(tree) {
- if (!tree.binding.isPattern() || tree.initialiser)
- return tree;
- var statements = this.parameterStatements;
- var binding = this.desugarBinding_(tree.binding, statements, VAR);
- return new BindingElement(null, binding, null);
- },
- transformCatch: function(tree) {
- var $__181;
- if (!tree.binding.isPattern())
- return $traceurRuntime.superCall(this, $DestructuringTransformer.prototype, "transformCatch", [tree]);
- var body = this.transformAny(tree.catchBody);
- var statements = [];
- var kind = options.blockBinding ? LET : VAR;
- var binding = this.desugarBinding_(tree.binding, statements, kind);
- ($__181 = statements).push.apply($__181, $traceurRuntime.toObject(body.statements));
- return new Catch(tree.location, binding, createBlock(statements));
- },
- desugarBinding_: function(bindingTree, statements, declarationType) {
- var varName = this.getTempIdentifier();
- var binding = createBindingIdentifier(varName);
- var idExpr = createIdentifierExpression(varName);
- var desugaring;
- if (declarationType === null)
- desugaring = new AssignmentExpressionDesugaring(idExpr);
- else
- desugaring = new VariableDeclarationDesugaring(idExpr);
- this.desugarPattern_(desugaring, bindingTree);
- if (declarationType === null) {
- statements.push(createExpressionStatement(createCommaExpression(desugaring.expressions)));
- } else {
- statements.push(createVariableStatement(this.transformVariableDeclarationList(createVariableDeclarationList(declarationType, desugaring.declarations))));
- }
- return binding;
- },
- destructuringInDeclaration_: function(tree) {
- return tree.declarations.some((function(declaration) {
- return declaration.lvalue.isPattern();
- }));
- },
- desugarVariableDeclaration_: function(tree) {
- var tempRValueName = this.getTempIdentifier();
- var tempRValueIdent = createIdentifierExpression(tempRValueName);
- var desugaring;
- var initialiser;
- switch (tree.initialiser.type) {
- case ARRAY_LITERAL_EXPRESSION:
- case CALL_EXPRESSION:
- case IDENTIFIER_EXPRESSION:
- case LITERAL_EXPRESSION:
- case MEMBER_EXPRESSION:
- case MEMBER_LOOKUP_EXPRESSION:
- case OBJECT_LITERAL_EXPRESSION:
- case PAREN_EXPRESSION:
- initialiser = tree.initialiser;
- default:
- desugaring = new VariableDeclarationDesugaring(tempRValueIdent);
- desugaring.assign(desugaring.rvalue, tree.initialiser);
- var initialiserFound = this.desugarPattern_(desugaring, tree.lvalue);
- if (initialiserFound || desugaring.declarations.length > 2)
- return desugaring.declarations;
- initialiser = initialiser || createParenExpression(tree.initialiser);
- desugaring = new VariableDeclarationDesugaring(initialiser);
- this.desugarPattern_(desugaring, tree.lvalue);
- return desugaring.declarations;
- }
- },
- desugarPattern_: function(desugaring, tree) {
- var initialiserFound = false;
- switch (tree.type) {
- case ARRAY_PATTERN:
- {
- var pattern = tree;
- for (var i = 0; i < pattern.elements.length; i++) {
- var lvalue = pattern.elements[i];
- if (lvalue === null) {
- continue;
- } else if (lvalue.isSpreadPatternElement()) {
- desugaring.assign(lvalue.lvalue, createCallExpression(createMemberExpression(ARRAY, PROTOTYPE, SLICE, CALL), createArgumentList(desugaring.rvalue, createNumberLiteral(i))));
- } else {
- if (lvalue.initialiser)
- initialiserFound = true;
- desugaring.assign(lvalue, createConditionalMemberLookupExpression(desugaring.rvalue, createNumberLiteral(i), lvalue.initialiser));
- }
- }
- break;
- }
- case OBJECT_PATTERN:
- {
- var pattern = tree;
- pattern.fields.forEach((function(field) {
- var lookup;
- switch (field.type) {
- case BINDING_ELEMENT:
- if (field.initialiser)
- initialiserFound = true;
- lookup = createConditionalMemberExpression(desugaring.rvalue, field.binding, field.initialiser);
- desugaring.assign(createIdentifierExpression(field.binding), lookup);
- break;
- case OBJECT_PATTERN_FIELD:
- if (field.element.initialiser)
- initialiserFound = true;
- var name = field.name;
- lookup = createConditionalMemberExpression(desugaring.rvalue, name, field.element.initialiser);
- desugaring.assign(field.element, lookup);
- break;
- case IDENTIFIER_EXPRESSION:
- lookup = createMemberExpression(desugaring.rvalue, field.identifierToken);
- desugaring.assign(field, lookup);
- break;
- default:
- throw Error('unreachable');
- }
- }));
- break;
- }
- case PAREN_EXPRESSION:
- return this.desugarPattern_(desugaring, tree.expression);
- default:
- throw new Error('unreachable');
- }
- if (desugaring instanceof VariableDeclarationDesugaring && desugaring.declarations.length === 0) {
- desugaring.assign(createBindingIdentifier(this.getTempIdentifier()), desugaring.rvalue);
- }
- return initialiserFound;
- }
- }, {}, ParameterTransformer);
- return {get DestructuringTransformer() {
- return DestructuringTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/ForOfTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/ForOfTransformer";
- var $__182 = Object.freeze(Object.defineProperties(["", " = ", ".value;"], {raw: {value: Object.freeze(["", " = ", ".value;"])}})),
- $__183 = Object.freeze(Object.defineProperties(["\n for (var ", " =\n ", "[Symbol.iterator](),\n ", ";\n !(", " = ", ".next()).done; ) {\n ", ";\n ", ";\n }"], {raw: {value: Object.freeze(["\n for (var ", " =\n ", "[Symbol.iterator](),\n ", ";\n !(", " = ", ".next()).done; ) {\n ", ";\n ", ";\n }"])}}));
- var VARIABLE_DECLARATION_LIST = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType").VARIABLE_DECLARATION_LIST;
- var TempVarTransformer = System.get("traceur@0.0.32/src/codegeneration/TempVarTransformer").TempVarTransformer;
- var $__185 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- id = $__185.createIdentifierExpression,
- createMemberExpression = $__185.createMemberExpression,
- createVariableStatement = $__185.createVariableStatement;
- var parseStatement = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser").parseStatement;
- var ForOfTransformer = function ForOfTransformer() {
- $traceurRuntime.defaultSuperCall(this, $ForOfTransformer.prototype, arguments);
- };
- var $ForOfTransformer = ForOfTransformer;
- ($traceurRuntime.createClass)(ForOfTransformer, {transformForOfStatement: function(original) {
- var tree = $traceurRuntime.superCall(this, $ForOfTransformer.prototype, "transformForOfStatement", [original]);
- var iter = id(this.getTempIdentifier());
- var result = id(this.getTempIdentifier());
- var assignment;
- if (tree.initialiser.type === VARIABLE_DECLARATION_LIST) {
- assignment = createVariableStatement(tree.initialiser.declarationType, tree.initialiser.declarations[0].lvalue, createMemberExpression(result, 'value'));
- } else {
- assignment = parseStatement($__182, tree.initialiser, result);
- }
- return parseStatement($__183, iter, tree.collection, result, result, iter, assignment, tree.body);
- }}, {}, TempVarTransformer);
- return {get ForOfTransformer() {
- return ForOfTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/GeneratorComprehensionTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/GeneratorComprehensionTransformer";
- var ComprehensionTransformer = System.get("traceur@0.0.32/src/codegeneration/ComprehensionTransformer").ComprehensionTransformer;
- var createYieldStatement = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory").createYieldStatement;
- var GeneratorComprehensionTransformer = function GeneratorComprehensionTransformer() {
- $traceurRuntime.defaultSuperCall(this, $GeneratorComprehensionTransformer.prototype, arguments);
- };
- var $GeneratorComprehensionTransformer = GeneratorComprehensionTransformer;
- ($traceurRuntime.createClass)(GeneratorComprehensionTransformer, {transformGeneratorComprehension: function(tree) {
- var expression = this.transformAny(tree.expression);
- var statement = createYieldStatement(expression);
- var isGenerator = true;
- return this.transformComprehension(tree, statement, isGenerator);
- }}, {}, ComprehensionTransformer);
- return {get GeneratorComprehensionTransformer() {
- return GeneratorComprehensionTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/State", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/State";
- var $__188 = Object.freeze(Object.defineProperties(["$ctx.finallyFallThrough = ", ""], {raw: {value: Object.freeze(["$ctx.finallyFallThrough = ", ""])}}));
- var $__190 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createAssignStateStatement = $__190.createAssignStateStatement,
- createAssignmentStatement = $__190.createAssignmentStatement,
- createBreakStatement = $__190.createBreakStatement,
- createCaseClause = $__190.createCaseClause,
- createIdentifierExpression = $__190.createIdentifierExpression,
- createNumberLiteral = $__190.createNumberLiteral,
- createStatementList = $__190.createStatementList;
- var parseStatement = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser").parseStatement;
- var State = function State(id) {
- this.id = id;
- };
- ($traceurRuntime.createClass)(State, {
- transformMachineState: function(enclosingFinally, machineEndState, reporter) {
- return createCaseClause(createNumberLiteral(this.id), this.transform(enclosingFinally, machineEndState, reporter));
- },
- transformBreak: function(labelSet, breakState) {
- return this;
- },
- transformBreakOrContinue: function(labelSet) {
- var breakState = arguments[1];
- var continueState = arguments[2];
- return this;
- }
- }, {});
- State.START_STATE = 0;
- State.INVALID_STATE = -1;
- State.END_STATE = -2;
- State.RETHROW_STATE = -3;
- State.generateJump = function(enclosingFinally, fallThroughState) {
- return createStatementList(State.generateAssignState(enclosingFinally, fallThroughState), createBreakStatement());
- };
- State.generateAssignState = function(enclosingFinally, fallThroughState) {
- var assignState;
- if (State.isFinallyExit(enclosingFinally, fallThroughState)) {
- assignState = generateAssignStateOutOfFinally(enclosingFinally, fallThroughState);
- } else {
- assignState = createStatementList(createAssignStateStatement(fallThroughState));
- }
- return assignState;
- };
- State.isFinallyExit = function(enclosingFinally, destination) {
- return enclosingFinally != null && enclosingFinally.tryStates.indexOf(destination) < 0;
- };
- function generateAssignStateOutOfFinally(enclosingFinally, destination) {
- var finallyState = enclosingFinally.finallyState;
- return createStatementList(createAssignStateStatement(finallyState), parseStatement($__188, destination));
- }
- State.replaceStateList = function(oldStates, oldState, newState) {
- var states = [];
- for (var i = 0; i < oldStates.length; i++) {
- states.push(State.replaceStateId(oldStates[i], oldState, newState));
- }
- return states;
- };
- State.replaceStateId = function(current, oldState, newState) {
- return current == oldState ? newState : current;
- };
- State.replaceAllStates = function(exceptionBlocks, oldState, newState) {
- var result = [];
- for (var i = 0; i < exceptionBlocks.length; i++) {
- result.push(exceptionBlocks[i].replaceState(oldState, newState));
- }
- return result;
- };
- return {get State() {
- return State;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/TryState", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/TryState";
- var State = System.get("traceur@0.0.32/src/codegeneration/generator/State").State;
- var Kind = {
- CATCH: 'catch',
- FINALLY: 'finally'
- };
- var TryState = function TryState(kind, tryStates, nestedTrys) {
- this.kind = kind;
- this.tryStates = tryStates;
- this.nestedTrys = nestedTrys;
- };
- ($traceurRuntime.createClass)(TryState, {
- replaceAllStates: function(oldState, newState) {
- return State.replaceStateList(this.tryStates, oldState, newState);
- },
- replaceNestedTrys: function(oldState, newState) {
- var states = [];
- for (var i = 0; i < this.nestedTrys.length; i++) {
- states.push(this.nestedTrys[i].replaceState(oldState, newState));
- }
- return states;
- }
- }, {});
- TryState.Kind = Kind;
- return {get TryState() {
- return TryState;
- }};
-});
-System.register("traceur@0.0.32/src/syntax/trees/StateMachine", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/syntax/trees/StateMachine";
- var ParseTree = System.get("traceur@0.0.32/src/syntax/trees/ParseTree").ParseTree;
- var STATE_MACHINE = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType").STATE_MACHINE;
- var State = System.get("traceur@0.0.32/src/codegeneration/generator/State").State;
- var TryState = System.get("traceur@0.0.32/src/codegeneration/generator/TryState").TryState;
- function addCatchOrFinallyStates(kind, enclosingMap, tryStates) {
- for (var i = 0; i < tryStates.length; i++) {
- var tryState = tryStates[i];
- if (tryState.kind == kind) {
- for (var j = 0; j < tryState.tryStates.length; j++) {
- var id = tryState.tryStates[j];
- enclosingMap[id] = tryState;
- }
- }
- addCatchOrFinallyStates(kind, enclosingMap, tryState.nestedTrys);
- }
- }
- function addAllCatchStates(tryStates, catches) {
- for (var i = 0; i < tryStates.length; i++) {
- var tryState = tryStates[i];
- if (tryState.kind == TryState.Kind.CATCH) {
- catches.push(tryState);
- }
- addAllCatchStates(tryState.nestedTrys, catches);
- }
- }
- var StateMachine = function StateMachine(startState, fallThroughState, states, exceptionBlocks) {
- this.location = null;
- this.startState = startState;
- this.fallThroughState = fallThroughState;
- this.states = states;
- this.exceptionBlocks = exceptionBlocks;
- };
- var $StateMachine = StateMachine;
- ($traceurRuntime.createClass)(StateMachine, {
- get type() {
- return STATE_MACHINE;
- },
- transform: function(transformer) {
- return transformer.transformStateMachine(this);
- },
- visit: function(visitor) {
- visitor.visitStateMachine(this);
- },
- getAllStateIDs: function() {
- var result = [];
- for (var i = 0; i < this.states.length; i++) {
- result.push(this.states[i].id);
- }
- return result;
- },
- getEnclosingFinallyMap: function() {
- var enclosingMap = Object.create(null);
- addCatchOrFinallyStates(TryState.Kind.FINALLY, enclosingMap, this.exceptionBlocks);
- return enclosingMap;
- },
- allCatchStates: function() {
- var catches = [];
- addAllCatchStates(this.exceptionBlocks, catches);
- return catches;
- },
- replaceStateId: function(oldState, newState) {
- return new $StateMachine(State.replaceStateId(this.startState, oldState, newState), State.replaceStateId(this.fallThroughState, oldState, newState), State.replaceAllStates(this.states, oldState, newState), State.replaceAllStates(this.exceptionBlocks, oldState, newState));
- },
- replaceStartState: function(newState) {
- return this.replaceStateId(this.startState, newState);
- },
- replaceFallThroughState: function(newState) {
- return this.replaceStateId(this.fallThroughState, newState);
- },
- append: function(nextMachine) {
- var states = $traceurRuntime.spread(this.states);
- for (var i = 0; i < nextMachine.states.length; i++) {
- var otherState = nextMachine.states[i];
- states.push(otherState.replaceState(nextMachine.startState, this.fallThroughState));
- }
- var exceptionBlocks = $traceurRuntime.spread(this.exceptionBlocks);
- for (var i = 0; i < nextMachine.exceptionBlocks.length; i++) {
- var tryState = nextMachine.exceptionBlocks[i];
- exceptionBlocks.push(tryState.replaceState(nextMachine.startState, this.fallThroughState));
- }
- return new $StateMachine(this.startState, nextMachine.fallThroughState, states, exceptionBlocks);
- }
- }, {}, ParseTree);
- return {get StateMachine() {
- return StateMachine;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/AwaitState", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/AwaitState";
- var $__195 = Object.freeze(Object.defineProperties(["(", ").then($ctx.createCallback(", "),\n $ctx.createErrback(", "));\n return"], {raw: {value: Object.freeze(["(", ").then($ctx.createCallback(", "),\n $ctx.createErrback(", "));\n return"])}}));
- var State = System.get("traceur@0.0.32/src/codegeneration/generator/State").State;
- var parseStatements = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser").parseStatements;
- var AwaitState = function AwaitState(id, callbackState, errbackState, expression) {
- $traceurRuntime.superCall(this, $AwaitState.prototype, "constructor", [id]), this.callbackState = callbackState;
- this.errbackState = errbackState;
- this.expression = expression;
- this.statements_ = null;
- };
- var $AwaitState = AwaitState;
- ($traceurRuntime.createClass)(AwaitState, {
- get statements() {
- if (!this.statements_) {
- this.statements_ = parseStatements($__195, this.expression, this.callbackState, this.errbackState);
- }
- return this.statements_;
- },
- replaceState: function(oldState, newState) {
- return new $AwaitState(State.replaceStateId(this.id, oldState, newState), State.replaceStateId(this.callbackState, oldState, newState), State.replaceStateId(this.errbackState, oldState, newState), this.expression);
- },
- transform: function(enclosingFinally, machineEndState, reporter) {
- return this.statements;
- }
- }, {}, State);
- return {get AwaitState() {
- return AwaitState;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/HoistVariablesTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/HoistVariablesTransformer";
- var $__199 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- AnonBlock = $__199.AnonBlock,
- FunctionBody = $__199.FunctionBody,
- ForInStatement = $__199.ForInStatement,
- ForOfStatement = $__199.ForOfStatement,
- VariableDeclarationList = $__199.VariableDeclarationList,
- VariableStatement = $__199.VariableStatement;
- var $__199 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- BINDING_IDENTIFIER = $__199.BINDING_IDENTIFIER,
- VARIABLE_DECLARATION_LIST = $__199.VARIABLE_DECLARATION_LIST;
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var VAR = System.get("traceur@0.0.32/src/syntax/TokenType").VAR;
- var assert = System.get("traceur@0.0.32/src/util/assert").assert;
- var $__199 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createAssignmentExpression = $__199.createAssignmentExpression,
- createCommaExpression = $__199.createCommaExpression,
- createExpressionStatement = $__199.createExpressionStatement,
- id = $__199.createIdentifierExpression,
- createVariableDeclaration = $__199.createVariableDeclaration;
- var prependStatements = System.get("traceur@0.0.32/src/codegeneration/PrependStatements").prependStatements;
- var HoistVariablesTransformer = function HoistVariablesTransformer() {
- $traceurRuntime.superCall(this, $HoistVariablesTransformer.prototype, "constructor", []);
- this.hoistedVariables_ = Object.create(null);
- };
- var $HoistVariablesTransformer = HoistVariablesTransformer;
- ($traceurRuntime.createClass)(HoistVariablesTransformer, {
- transformFunctionBody: function(tree) {
- var statements = this.transformList(tree.statements);
- if (statements === tree.statements)
- return tree;
- var prepended = this.prependVariables(statements);
- return new FunctionBody(tree.location, prepended);
- },
- addVariable: function(name) {
- this.hoistedVariables_[name] = true;
- },
- hasVariables: function() {
- for (var key in this.hoistedVariables_) {
- return true;
- }
- return false;
- },
- getVariableNames: function() {
- return Object.keys(this.hoistedVariables_);
- },
- getVariableStatement: function() {
- if (!this.hasVariables())
- return null;
- var declarations = this.getVariableNames().map((function(name) {
- return createVariableDeclaration(name, null);
- }));
- return new VariableStatement(null, new VariableDeclarationList(null, VAR, declarations));
- },
- prependVariables: function(statements) {
- if (!this.hasVariables())
- return statements;
- return prependStatements(statements, this.getVariableStatement());
- },
- transformVariableStatement: function(tree) {
- var declarations = this.transformAny(tree.declarations);
- if (declarations == tree.declarations)
- return tree;
- if (declarations === null)
- return new AnonBlock(null, []);
- if (declarations.type === VARIABLE_DECLARATION_LIST)
- return new VariableStatement(tree.location, declarations);
- return createExpressionStatement(declarations);
- },
- transformVariableDeclarationList: function(tree) {
- if (tree.declarationType == VAR) {
- var expressions = [];
- var declarations = this.transformList(tree.declarations);
- for (var i = 0; i < declarations.length; i++) {
- var declaration = declarations[i];
- assert(declaration.lvalue.type === BINDING_IDENTIFIER);
- var idToken = declaration.lvalue.identifierToken;
- this.addVariable(idToken.value);
- if (declaration.initialiser !== null) {
- expressions.push(createAssignmentExpression(id(idToken), declaration.initialiser));
- }
- }
- if (expressions.length === 0)
- return null;
- if (expressions.length == 1)
- return expressions[0];
- return createCommaExpression(expressions);
- }
- return $traceurRuntime.superCall(this, $HoistVariablesTransformer.prototype, "transformVariableDeclarationList", [tree]);
- },
- transformForInStatement: function(tree) {
- return this.transformLoop_(tree, ForInStatement);
- },
- transformForOfStatement: function(tree) {
- return this.transformLoop_(tree, ForOfStatement);
- },
- transformLoop_: function(tree, ctor) {
- var initialiser = this.transformLoopIninitaliser_(tree.initialiser);
- var collection = this.transformAny(tree.collection);
- var body = this.transformAny(tree.body);
- if (initialiser === tree.initialiser && collection === tree.collection && body === tree.body) {
- return tree;
- }
- return new ctor(tree.location, initialiser, collection, body);
- },
- transformLoopIninitaliser_: function(tree) {
- if (tree.type !== VARIABLE_DECLARATION_LIST)
- return tree;
- var token = tree.declarations[0].lvalue.identifierToken;
- this.addVariable(token.value);
- return id(token);
- },
- addMachineVariable: function(name) {
- this.machineVariables_[name] = true;
- },
- transformFunctionDeclaration: function(tree) {
- return tree;
- },
- transformFunctionExpression: function(tree) {
- return tree;
- },
- transformGetAccessor: function(tree) {
- return tree;
- },
- transformSetAccessor: function(tree) {
- return tree;
- }
- }, {}, ParseTreeTransformer);
- var $__default = HoistVariablesTransformer;
- return {get default() {
- return $__default;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/FallThroughState", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/FallThroughState";
- var State = System.get("traceur@0.0.32/src/codegeneration/generator/State").State;
- var FallThroughState = function FallThroughState(id, fallThroughState, statements) {
- $traceurRuntime.superCall(this, $FallThroughState.prototype, "constructor", [id]);
- this.fallThroughState = fallThroughState;
- this.statements = statements;
- };
- var $FallThroughState = FallThroughState;
- ($traceurRuntime.createClass)(FallThroughState, {
- replaceState: function(oldState, newState) {
- return new $FallThroughState(State.replaceStateId(this.id, oldState, newState), State.replaceStateId(this.fallThroughState, oldState, newState), this.statements);
- },
- transform: function(enclosingFinally, machineEndState, reporter) {
- return $traceurRuntime.spread(this.statements, State.generateJump(enclosingFinally, this.fallThroughState));
- }
- }, {}, State);
- return {get FallThroughState() {
- return FallThroughState;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/BreakState", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/BreakState";
- var FallThroughState = System.get("traceur@0.0.32/src/codegeneration/generator/FallThroughState").FallThroughState;
- var State = System.get("traceur@0.0.32/src/codegeneration/generator/State").State;
- var createStatementList = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory").createStatementList;
- var BreakState = function BreakState(id, label) {
- $traceurRuntime.superCall(this, $BreakState.prototype, "constructor", [id]);
- this.label = label;
- };
- var $BreakState = BreakState;
- ($traceurRuntime.createClass)(BreakState, {
- replaceState: function(oldState, newState) {
- return new $BreakState(State.replaceStateId(this.id, oldState, newState), this.label);
- },
- transform: function(enclosingFinally, machineEndState, reporter) {
- throw new Error('These should be removed before the transform step');
- },
- transformBreak: function(labelSet) {
- var breakState = arguments[1];
- if (this.label == null)
- return new FallThroughState(this.id, breakState, []);
- if (this.label in labelSet) {
- return new FallThroughState(this.id, labelSet[this.label].fallThroughState, []);
- }
- return this;
- },
- transformBreakOrContinue: function(labelSet) {
- var breakState = arguments[1];
- var continueState = arguments[2];
- return this.transformBreak(labelSet, breakState);
- }
- }, {}, State);
- return {get BreakState() {
- return BreakState;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/ContinueState", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/ContinueState";
- var FallThroughState = System.get("traceur@0.0.32/src/codegeneration/generator/FallThroughState").FallThroughState;
- var State = System.get("traceur@0.0.32/src/codegeneration/generator/State").State;
- var createStatementList = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory").createStatementList;
- var ContinueState = function ContinueState(id, label) {
- $traceurRuntime.superCall(this, $ContinueState.prototype, "constructor", [id]);
- this.label = label;
- };
- var $ContinueState = ContinueState;
- ($traceurRuntime.createClass)(ContinueState, {
- replaceState: function(oldState, newState) {
- return new $ContinueState(State.replaceStateId(this.id, oldState, newState), this.label);
- },
- transform: function(enclosingFinally, machineEndState, reporter) {
- throw new Error('These should be removed before the transform step');
- },
- transformBreakOrContinue: function(labelSet) {
- var breakState = arguments[1];
- var continueState = arguments[2];
- if (this.label == null)
- return new FallThroughState(this.id, continueState, []);
- if (this.label in labelSet) {
- return new FallThroughState(this.id, labelSet[this.label].continueState, []);
- }
- return this;
- }
- }, {}, State);
- return {get ContinueState() {
- return ContinueState;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/BreakContinueTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/BreakContinueTransformer";
- var BreakState = System.get("traceur@0.0.32/src/codegeneration/generator/BreakState").BreakState;
- var ContinueState = System.get("traceur@0.0.32/src/codegeneration/generator/ContinueState").ContinueState;
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var StateMachine = System.get("traceur@0.0.32/src/syntax/trees/StateMachine").StateMachine;
- function safeGetLabel(tree) {
- return tree.name ? tree.name.value : null;
- }
- var BreakContinueTransformer = function BreakContinueTransformer(stateAllocator) {
- $traceurRuntime.superCall(this, $BreakContinueTransformer.prototype, "constructor", []);
- this.transformBreaks_ = true;
- this.stateAllocator_ = stateAllocator;
- };
- var $BreakContinueTransformer = BreakContinueTransformer;
- ($traceurRuntime.createClass)(BreakContinueTransformer, {
- allocateState_: function() {
- return this.stateAllocator_.allocateState();
- },
- stateToStateMachine_: function(newState) {
- var fallThroughState = this.allocateState_();
- return new StateMachine(newState.id, fallThroughState, [newState], []);
- },
- transformBreakStatement: function(tree) {
- return this.transformBreaks_ || tree.name ? this.stateToStateMachine_(new BreakState(this.allocateState_(), safeGetLabel(tree))) : tree;
- },
- transformContinueStatement: function(tree) {
- return this.stateToStateMachine_(new ContinueState(this.allocateState_(), safeGetLabel(tree)));
- },
- transformDoWhileStatement: function(tree) {
- return tree;
- },
- transformForOfStatement: function(tree) {
- return tree;
- },
- transformForStatement: function(tree) {
- return tree;
- },
- transformFunctionDeclaration: function(tree) {
- return tree;
- },
- transformFunctionExpression: function(tree) {
- return tree;
- },
- transformStateMachine: function(tree) {
- return tree;
- },
- transformSwitchStatement: function(tree) {
- var oldState = this.transformBreaks_;
- this.transformBreaks_ = false;
- var result = $traceurRuntime.superCall(this, $BreakContinueTransformer.prototype, "transformSwitchStatement", [tree]);
- this.transformBreaks_ = oldState;
- return result;
- },
- transformWhileStatement: function(tree) {
- return tree;
- }
- }, {}, ParseTreeTransformer);
- return {get BreakContinueTransformer() {
- return BreakContinueTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/CatchState", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/CatchState";
- var State = System.get("traceur@0.0.32/src/codegeneration/generator/State").State;
- var TryState = System.get("traceur@0.0.32/src/codegeneration/generator/TryState").TryState;
- var CatchState = function CatchState(identifier, catchState, fallThroughState, allStates, nestedTrys) {
- $traceurRuntime.superCall(this, $CatchState.prototype, "constructor", [TryState.Kind.CATCH, allStates, nestedTrys]);
- this.identifier = identifier;
- this.catchState = catchState;
- this.fallThroughState = fallThroughState;
- };
- var $CatchState = CatchState;
- ($traceurRuntime.createClass)(CatchState, {replaceState: function(oldState, newState) {
- return new $CatchState(this.identifier, State.replaceStateId(this.catchState, oldState, newState), State.replaceStateId(this.fallThroughState, oldState, newState), this.replaceAllStates(oldState, newState), this.replaceNestedTrys(oldState, newState));
- }}, {}, TryState);
- return {get CatchState() {
- return CatchState;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/ConditionalState", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/ConditionalState";
- var $__210 = Object.freeze(Object.defineProperties(["$ctx.state = (", ") ? ", " : ", ";\n break"], {raw: {value: Object.freeze(["$ctx.state = (", ") ? ", " : ", ";\n break"])}}));
- var State = System.get("traceur@0.0.32/src/codegeneration/generator/State").State;
- var $__212 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createBlock = $__212.createBlock,
- createIfStatement = $__212.createIfStatement;
- var parseStatements = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser").parseStatements;
- var ConditionalState = function ConditionalState(id, ifState, elseState, condition) {
- $traceurRuntime.superCall(this, $ConditionalState.prototype, "constructor", [id]);
- this.ifState = ifState;
- this.elseState = elseState;
- this.condition = condition;
- };
- var $ConditionalState = ConditionalState;
- ($traceurRuntime.createClass)(ConditionalState, {
- replaceState: function(oldState, newState) {
- return new $ConditionalState(State.replaceStateId(this.id, oldState, newState), State.replaceStateId(this.ifState, oldState, newState), State.replaceStateId(this.elseState, oldState, newState), this.condition);
- },
- transform: function(enclosingFinally, machineEndState, reporter) {
- if (State.isFinallyExit(enclosingFinally, this.ifState) || State.isFinallyExit(enclosingFinally, this.elseState)) {
- return [createIfStatement(this.condition, createBlock(State.generateJump(enclosingFinally, this.ifState)), createBlock(State.generateJump(enclosingFinally, this.elseState)))];
- }
- return parseStatements($__210, this.condition, this.ifState, this.elseState);
- }
- }, {}, State);
- return {get ConditionalState() {
- return ConditionalState;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/FinallyFallThroughState", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/FinallyFallThroughState";
- var State = System.get("traceur@0.0.32/src/codegeneration/generator/State").State;
- var FinallyFallThroughState = function FinallyFallThroughState() {
- $traceurRuntime.defaultSuperCall(this, $FinallyFallThroughState.prototype, arguments);
- };
- var $FinallyFallThroughState = FinallyFallThroughState;
- ($traceurRuntime.createClass)(FinallyFallThroughState, {
- replaceState: function(oldState, newState) {
- return new $FinallyFallThroughState(State.replaceStateId(this.id, oldState, newState));
- },
- transformMachineState: function(enclosingFinally, machineEndState, reporter) {
- return null;
- },
- transform: function(enclosingFinally, machineEndState, reporter) {
- throw new Error('these are generated in addFinallyFallThroughDispatches');
- }
- }, {}, State);
- return {get FinallyFallThroughState() {
- return FinallyFallThroughState;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/FinallyState", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/FinallyState";
- var State = System.get("traceur@0.0.32/src/codegeneration/generator/State").State;
- var TryState = System.get("traceur@0.0.32/src/codegeneration/generator/TryState").TryState;
- var FinallyState = function FinallyState(finallyState, fallThroughState, allStates, nestedTrys) {
- $traceurRuntime.superCall(this, $FinallyState.prototype, "constructor", [TryState.Kind.FINALLY, allStates, nestedTrys]);
- this.finallyState = finallyState;
- this.fallThroughState = fallThroughState;
- };
- var $FinallyState = FinallyState;
- ($traceurRuntime.createClass)(FinallyState, {replaceState: function(oldState, newState) {
- return new $FinallyState(State.replaceStateId(this.finallyState, oldState, newState), State.replaceStateId(this.fallThroughState, oldState, newState), this.replaceAllStates(oldState, newState), this.replaceNestedTrys(oldState, newState));
- }}, {}, TryState);
- return {get FinallyState() {
- return FinallyState;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/StateAllocator", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/StateAllocator";
- var State = System.get("traceur@0.0.32/src/codegeneration/generator/State").State;
- var StateAllocator = function StateAllocator() {
- this.nextState_ = State.START_STATE + 1;
- };
- ($traceurRuntime.createClass)(StateAllocator, {allocateState: function() {
- return this.nextState_++;
- }}, {});
- return {get StateAllocator() {
- return StateAllocator;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/SwitchState", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/SwitchState";
- var $__220 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- CaseClause = $__220.CaseClause,
- DefaultClause = $__220.DefaultClause,
- SwitchStatement = $__220.SwitchStatement;
- var State = System.get("traceur@0.0.32/src/codegeneration/generator/State").State;
- var $__220 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createBreakStatement = $__220.createBreakStatement,
- createStatementList = $__220.createStatementList;
- var SwitchClause = function SwitchClause(first, second) {
- this.first = first;
- this.second = second;
- };
- ($traceurRuntime.createClass)(SwitchClause, {}, {});
- var SwitchState = function SwitchState(id, expression, clauses) {
- $traceurRuntime.superCall(this, $SwitchState.prototype, "constructor", [id]);
- this.expression = expression;
- this.clauses = clauses;
- };
- var $SwitchState = SwitchState;
- ($traceurRuntime.createClass)(SwitchState, {
- replaceState: function(oldState, newState) {
- var clauses = this.clauses.map((function(clause) {
- return new SwitchClause(clause.first, State.replaceStateId(clause.second, oldState, newState));
- }));
- return new $SwitchState(State.replaceStateId(this.id, oldState, newState), this.expression, clauses);
- },
- transform: function(enclosingFinally, machineEndState, reporter) {
- var clauses = [];
- for (var i = 0; i < this.clauses.length; i++) {
- var clause = this.clauses[i];
- if (clause.first == null) {
- clauses.push(new DefaultClause(null, State.generateJump(enclosingFinally, clause.second)));
- } else {
- clauses.push(new CaseClause(null, clause.first, State.generateJump(enclosingFinally, clause.second)));
- }
- }
- return createStatementList(new SwitchStatement(null, this.expression, clauses), createBreakStatement());
- }
- }, {}, State);
- return {
- get SwitchClause() {
- return SwitchClause;
- },
- get SwitchState() {
- return SwitchState;
- }
- };
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/CPSTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/CPSTransformer";
- var $__221 = Object.freeze(Object.defineProperties(["$ctx.pushTry(\n ", ",\n ", ");"], {raw: {value: Object.freeze(["$ctx.pushTry(\n ", ",\n ", ");"])}})),
- $__222 = Object.freeze(Object.defineProperties(["$ctx.popTry();"], {raw: {value: Object.freeze(["$ctx.popTry();"])}})),
- $__223 = Object.freeze(Object.defineProperties(["\n $ctx.popTry();\n ", " = $ctx.storedException;"], {raw: {value: Object.freeze(["\n $ctx.popTry();\n ", " = $ctx.storedException;"])}})),
- $__224 = Object.freeze(Object.defineProperties(["$ctx.popTry();"], {raw: {value: Object.freeze(["$ctx.popTry();"])}})),
- $__225 = Object.freeze(Object.defineProperties(["function($ctx) {\n while (true) ", "\n }"], {raw: {value: Object.freeze(["function($ctx) {\n while (true) ", "\n }"])}})),
- $__226 = Object.freeze(Object.defineProperties(["var $arguments = arguments;"], {raw: {value: Object.freeze(["var $arguments = arguments;"])}})),
- $__227 = Object.freeze(Object.defineProperties(["return ", "(\n ", ",\n this);"], {raw: {value: Object.freeze(["return ", "(\n ", ",\n this);"])}})),
- $__228 = Object.freeze(Object.defineProperties(["return $ctx.end()"], {raw: {value: Object.freeze(["return $ctx.end()"])}})),
- $__229 = Object.freeze(Object.defineProperties(["\n $ctx.state = $ctx.finallyFallThrough;\n $ctx.finallyFallThrough = ", ";\n break;"], {raw: {value: Object.freeze(["\n $ctx.state = $ctx.finallyFallThrough;\n $ctx.finallyFallThrough = ", ";\n break;"])}})),
- $__230 = Object.freeze(Object.defineProperties(["\n $ctx.state = $ctx.finallyFallThrough;\n break;"], {raw: {value: Object.freeze(["\n $ctx.state = $ctx.finallyFallThrough;\n break;"])}}));
- var AlphaRenamer = System.get("traceur@0.0.32/src/codegeneration/AlphaRenamer").AlphaRenamer;
- var BreakContinueTransformer = System.get("traceur@0.0.32/src/codegeneration/generator/BreakContinueTransformer").BreakContinueTransformer;
- var $__233 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- BLOCK = $__233.BLOCK,
- BREAK_STATEMENT = $__233.BREAK_STATEMENT,
- CASE_CLAUSE = $__233.CASE_CLAUSE,
- CONDITIONAL_EXPRESSION = $__233.CONDITIONAL_EXPRESSION,
- CONTINUE_STATEMENT = $__233.CONTINUE_STATEMENT,
- EXPRESSION_STATEMENT = $__233.EXPRESSION_STATEMENT,
- PAREN_EXPRESSION = $__233.PAREN_EXPRESSION,
- STATE_MACHINE = $__233.STATE_MACHINE;
- var $__233 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- AnonBlock = $__233.AnonBlock,
- Block = $__233.Block,
- CaseClause = $__233.CaseClause,
- IfStatement = $__233.IfStatement,
- SwitchStatement = $__233.SwitchStatement;
- var CatchState = System.get("traceur@0.0.32/src/codegeneration/generator/CatchState").CatchState;
- var ConditionalState = System.get("traceur@0.0.32/src/codegeneration/generator/ConditionalState").ConditionalState;
- var ExplodeExpressionTransformer = System.get("traceur@0.0.32/src/codegeneration/ExplodeExpressionTransformer").ExplodeExpressionTransformer;
- var FallThroughState = System.get("traceur@0.0.32/src/codegeneration/generator/FallThroughState").FallThroughState;
- var FinallyFallThroughState = System.get("traceur@0.0.32/src/codegeneration/generator/FinallyFallThroughState").FinallyFallThroughState;
- var FinallyState = System.get("traceur@0.0.32/src/codegeneration/generator/FinallyState").FinallyState;
- var FindInFunctionScope = System.get("traceur@0.0.32/src/codegeneration/FindInFunctionScope").FindInFunctionScope;
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var TempVarTransformer = System.get("traceur@0.0.32/src/codegeneration/TempVarTransformer").TempVarTransformer;
- var assert = System.get("traceur@0.0.32/src/util/assert").assert;
- var $__233 = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser"),
- parseExpression = $__233.parseExpression,
- parseStatement = $__233.parseStatement,
- parseStatements = $__233.parseStatements;
- var State = System.get("traceur@0.0.32/src/codegeneration/generator/State").State;
- var StateAllocator = System.get("traceur@0.0.32/src/codegeneration/generator/StateAllocator").StateAllocator;
- var StateMachine = System.get("traceur@0.0.32/src/syntax/trees/StateMachine").StateMachine;
- var $__233 = System.get("traceur@0.0.32/src/codegeneration/generator/SwitchState"),
- SwitchClause = $__233.SwitchClause,
- SwitchState = $__233.SwitchState;
- var TryState = System.get("traceur@0.0.32/src/codegeneration/generator/TryState").TryState;
- var $__233 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createAssignStateStatement = $__233.createAssignStateStatement,
- createBreakStatement = $__233.createBreakStatement,
- createCaseClause = $__233.createCaseClause,
- createDefaultClause = $__233.createDefaultClause,
- createExpressionStatement = $__233.createExpressionStatement,
- createFunctionBody = $__233.createFunctionBody,
- id = $__233.createIdentifierExpression,
- createMemberExpression = $__233.createMemberExpression,
- createNumberLiteral = $__233.createNumberLiteral,
- createStatementList = $__233.createStatementList,
- createSwitchStatement = $__233.createSwitchStatement;
- var HoistVariablesTransformer = System.get("traceur@0.0.32/src/codegeneration/HoistVariablesTransformer").default;
- var LabelState = function LabelState(name, continueState, fallThroughState) {
- this.name = name;
- this.continueState = continueState;
- this.fallThroughState = fallThroughState;
- };
- ($traceurRuntime.createClass)(LabelState, {}, {});
- var NeedsStateMachine = function NeedsStateMachine() {
- $traceurRuntime.defaultSuperCall(this, $NeedsStateMachine.prototype, arguments);
- };
- var $NeedsStateMachine = NeedsStateMachine;
- ($traceurRuntime.createClass)(NeedsStateMachine, {
- visitBreakStatement: function(tree) {
- this.found = true;
- },
- visitContinueStatement: function(tree) {
- this.found = true;
- },
- visitStateMachine: function(tree) {
- this.found = true;
- },
- visitYieldExpression: function(tee) {
- this.found = true;
- }
- }, {}, FindInFunctionScope);
- function needsStateMachine(tree) {
- var visitor = new NeedsStateMachine(tree);
- return visitor.found;
- }
- var HoistVariables = function HoistVariables() {
- $traceurRuntime.defaultSuperCall(this, $HoistVariables.prototype, arguments);
- };
- var $HoistVariables = HoistVariables;
- ($traceurRuntime.createClass)(HoistVariables, {prependVariables: function(statements) {
- return statements;
- }}, {}, HoistVariablesTransformer);
- var CPSTransformer = function CPSTransformer(identifierGenerator, reporter) {
- $traceurRuntime.superCall(this, $CPSTransformer.prototype, "constructor", [identifierGenerator]);
- this.reporter = reporter;
- this.stateAllocator_ = new StateAllocator();
- this.labelSet_ = Object.create(null);
- this.currentLabel_ = null;
- this.hoistVariablesTransformer_ = new HoistVariables();
- };
- var $CPSTransformer = CPSTransformer;
- ($traceurRuntime.createClass)(CPSTransformer, {
- expressionNeedsStateMachine: function(tree) {
- return false;
- },
- allocateState: function() {
- return this.stateAllocator_.allocateState();
- },
- transformBlock: function(tree) {
- var labels = this.getLabels_();
- var label = this.clearCurrentLabel_();
- var transformedTree = $traceurRuntime.superCall(this, $CPSTransformer.prototype, "transformBlock", [tree]);
- var machine = this.transformStatementList_(transformedTree.statements);
- if (machine === null)
- return transformedTree;
- if (label) {
- var states = [];
- for (var i = 0; i < machine.states.length; i++) {
- var state = machine.states[i];
- states.push(state.transformBreakOrContinue(labels));
- }
- machine = new StateMachine(machine.startState, machine.fallThroughState, states, machine.exceptionBlocks);
- }
- return machine;
- },
- transformFunctionBody: function(tree) {
- this.pushTempVarState();
- var oldLabels = this.clearLabels_();
- var transformedTree = $traceurRuntime.superCall(this, $CPSTransformer.prototype, "transformFunctionBody", [tree]);
- var machine = this.transformStatementList_(transformedTree.statements);
- this.restoreLabels_(oldLabels);
- this.popTempVarState();
- return machine == null ? transformedTree : machine;
- },
- transformStatementList_: function(trees) {
- var groups = [];
- var newMachine;
- for (var i = 0; i < trees.length; i++) {
- if (trees[i].type === STATE_MACHINE) {
- groups.push(trees[i]);
- } else if (needsStateMachine(trees[i])) {
- newMachine = this.ensureTransformed_(trees[i]);
- groups.push(newMachine);
- } else {
- var last = groups[groups.length - 1];
- if (!(last instanceof Array))
- groups.push(last = []);
- last.push(trees[i]);
- }
- }
- if (groups.length === 1 && groups[0] instanceof Array)
- return null;
- var machine = null;
- for (var i = 0; i < groups.length; i++) {
- if (groups[i] instanceof Array) {
- newMachine = this.statementsToStateMachine_(groups[i]);
- } else {
- newMachine = groups[i];
- }
- if (i === 0)
- machine = newMachine;
- else
- machine = machine.append(newMachine);
- }
- return machine;
- },
- needsStateMachine_: function(statements) {
- if (statements instanceof Array) {
- for (var i = 0; i < statements.length; i++) {
- if (needsStateMachine(statements[i]))
- return true;
- }
- return false;
- }
- assert(statements instanceof SwitchStatement);
- return needsStateMachine(statements);
- },
- transformCaseClause: function(tree) {
- var result = $traceurRuntime.superCall(this, $CPSTransformer.prototype, "transformCaseClause", [tree]);
- var machine = this.transformStatementList_(result.statements);
- return machine == null ? result : new CaseClause(null, result.expression, createStatementList(machine));
- },
- transformDoWhileStatement: function(tree) {
- var $__235;
- var $__233,
- $__234;
- var labels = this.getLabels_();
- var label = this.clearCurrentLabel_();
- var machine,
- condition,
- body;
- if (this.expressionNeedsStateMachine(tree.condition)) {
- (($__233 = this.expressionToStateMachine(tree.condition), machine = $__233.machine, condition = $__233.expression, $__233));
- body = this.transformAny(tree.body);
- } else {
- var result = $traceurRuntime.superCall(this, $CPSTransformer.prototype, "transformDoWhileStatement", [tree]);
- (($__234 = result, condition = $__234.condition, body = $__234.body, $__234));
- if (body.type != STATE_MACHINE)
- return result;
- }
- var loopBodyMachine = this.ensureTransformed_(body);
- var startState = loopBodyMachine.startState;
- var conditionState = loopBodyMachine.fallThroughState;
- var fallThroughState = this.allocateState();
- var states = [];
- this.addLoopBodyStates_(loopBodyMachine, conditionState, fallThroughState, labels, states);
- if (machine) {
- machine = machine.replaceStartState(conditionState);
- conditionState = machine.fallThroughState;
- ($__235 = states).push.apply($__235, $traceurRuntime.toObject(machine.states));
- }
- states.push(new ConditionalState(conditionState, startState, fallThroughState, condition));
- var machine = new StateMachine(startState, fallThroughState, states, loopBodyMachine.exceptionBlocks);
- if (label)
- machine = machine.replaceStateId(conditionState, label.continueState);
- return machine;
- },
- addLoopBodyStates_: function(loopBodyMachine, continueState, breakState, labels, states) {
- for (var i = 0; i < loopBodyMachine.states.length; i++) {
- var state = loopBodyMachine.states[i];
- states.push(state.transformBreakOrContinue(labels, breakState, continueState));
- }
- },
- transformForStatement: function(tree) {
- var $__235;
- var labels = this.getLabels_();
- var label = this.clearCurrentLabel_();
- var tmp;
- var initialiser = null,
- initialiserMachine;
- if (tree.initialiser) {
- if (this.expressionNeedsStateMachine(tree.initialiser)) {
- tmp = this.expressionToStateMachine(tree.initialiser);
- initialiser = tmp.expression;
- initialiserMachine = tmp.machine;
- } else {
- initialiser = this.transformAny(tree.initialiser);
- }
- }
- var condition = null,
- conditionMachine;
- if (tree.condition) {
- if (this.expressionNeedsStateMachine(tree.condition)) {
- tmp = this.expressionToStateMachine(tree.condition);
- condition = tmp.expression;
- conditionMachine = tmp.machine;
- } else {
- condition = this.transformAny(tree.condition);
- }
- }
- var increment = null,
- incrementMachine;
- if (tree.increment) {
- if (this.expressionNeedsStateMachine(tree.increment)) {
- tmp = this.expressionToStateMachine(tree.increment);
- increment = tmp.expression;
- incrementMachine = tmp.machine;
- } else {
- increment = this.transformAny(tree.increment);
- }
- }
- var body = this.transformAny(tree.body);
- if (initialiser === tree.initialiser && condition === tree.condition && increment === tree.increment && body === tree.body) {
- return tree;
- }
- if (!initialiserMachine && !conditionMachine && !incrementMachine && body.type !== STATE_MACHINE) {
- return new ForStatement(tree.location, initialiser, condition, increment, body);
- }
- var loopBodyMachine = this.ensureTransformed_(body);
- var bodyFallThroughId = loopBodyMachine.fallThroughState;
- var fallThroughId = this.allocateState();
- var startId;
- var initialiserStartId = initialiser ? this.allocateState() : State.INVALID_STATE;
- var conditionStartId = increment ? this.allocateState() : bodyFallThroughId;
- var loopStartId = loopBodyMachine.startState;
- var incrementStartId = bodyFallThroughId;
- var states = [];
- if (initialiser) {
- startId = initialiserStartId;
- var initialiserFallThroughId;
- if (condition)
- initialiserFallThroughId = conditionStartId;
- else
- initialiserFallThroughId = loopStartId;
- var tmpId = initialiserStartId;
- if (initialiserMachine) {
- initialiserMachine = initialiserMachine.replaceStartState(initialiserStartId);
- tmpId = initialiserMachine.fallThroughState;
- ($__235 = states).push.apply($__235, $traceurRuntime.toObject(initialiserMachine.states));
- }
- states.push(new FallThroughState(tmpId, initialiserFallThroughId, createStatementList(createExpressionStatement(initialiser))));
- }
- if (condition) {
- if (!initialiser)
- startId = conditionStartId;
- var tmpId = conditionStartId;
- if (conditionMachine) {
- conditionMachine = conditionMachine.replaceStartState(conditionStartId);
- tmpId = conditionMachine.fallThroughState;
- ($__235 = states).push.apply($__235, $traceurRuntime.toObject(conditionMachine.states));
- }
- states.push(new ConditionalState(tmpId, loopStartId, fallThroughId, condition));
- }
- if (increment) {
- var incrementFallThroughId;
- if (condition)
- incrementFallThroughId = conditionStartId;
- else
- incrementFallThroughId = loopStartId;
- var tmpId = incrementStartId;
- if (incrementMachine) {
- incrementMachine = incrementMachine.replaceStartState(incrementStartId);
- tmpId = incrementMachine.fallThroughState;
- ($__235 = states).push.apply($__235, $traceurRuntime.toObject(incrementMachine.states));
- }
- states.push(new FallThroughState(tmpId, incrementFallThroughId, createStatementList(createExpressionStatement(increment))));
- }
- if (!initialiser && !condition)
- startId = loopStartId;
- var continueId;
- if (increment)
- continueId = incrementStartId;
- else if (condition)
- continueId = conditionStartId;
- else
- continueId = loopStartId;
- if (!increment && !condition) {
- loopBodyMachine = loopBodyMachine.replaceFallThroughState(loopBodyMachine.startState);
- }
- this.addLoopBodyStates_(loopBodyMachine, continueId, fallThroughId, labels, states);
- var machine = new StateMachine(startId, fallThroughId, states, loopBodyMachine.exceptionBlocks);
- if (label)
- machine = machine.replaceStateId(continueId, label.continueState);
- return machine;
- },
- transformForInStatement: function(tree) {
- return tree;
- },
- transformForOfStatement: function(tree) {
- throw new Error('for of statements should be transformed before this pass');
- },
- transformIfStatement: function(tree) {
- var $__235;
- var $__233,
- $__234;
- var machine,
- condition,
- ifClause,
- elseClause;
- if (this.expressionNeedsStateMachine(tree.condition)) {
- (($__233 = this.expressionToStateMachine(tree.condition), machine = $__233.machine, condition = $__233.expression, $__233));
- ifClause = this.transformAny(tree.ifClause);
- elseClause = this.transformAny(tree.elseClause);
- } else {
- var result = $traceurRuntime.superCall(this, $CPSTransformer.prototype, "transformIfStatement", [tree]);
- (($__234 = result, condition = $__234.condition, ifClause = $__234.ifClause, elseClause = $__234.elseClause, $__234));
- if (ifClause.type !== STATE_MACHINE && (elseClause === null || elseClause.type !== STATE_MACHINE)) {
- return result;
- }
- }
- ifClause = this.ensureTransformed_(ifClause);
- elseClause = this.ensureTransformed_(elseClause);
- var startState = this.allocateState();
- var fallThroughState = ifClause.fallThroughState;
- var ifState = ifClause.startState;
- var elseState = elseClause == null ? fallThroughState : elseClause.startState;
- var states = [];
- var exceptionBlocks = [];
- states.push(new ConditionalState(startState, ifState, elseState, condition));
- ($__235 = states).push.apply($__235, $traceurRuntime.toObject(ifClause.states));
- ($__235 = exceptionBlocks).push.apply($__235, $traceurRuntime.toObject(ifClause.exceptionBlocks));
- if (elseClause != null) {
- this.replaceAndAddStates_(elseClause.states, elseClause.fallThroughState, fallThroughState, states);
- ($__235 = exceptionBlocks).push.apply($__235, $traceurRuntime.toObject(State.replaceAllStates(elseClause.exceptionBlocks, elseClause.fallThroughState, fallThroughState)));
- }
- var ifMachine = new StateMachine(startState, fallThroughState, states, exceptionBlocks);
- if (machine)
- ifMachine = machine.append(ifMachine);
- return ifMachine;
- },
- removeEmptyStates: function(oldStates) {
- var emptyStates = [],
- newStates = [];
- for (var i = 0; i < oldStates.length; i++) {
- if (oldStates[i] instanceof FallThroughState && oldStates[i].statements.length === 0) {
- emptyStates.push(oldStates[i]);
- } else {
- newStates.push(oldStates[i]);
- }
- }
- for (i = 0; i < newStates.length; i++) {
- newStates[i] = emptyStates.reduce((function(state, $__233) {
- var id = $__233.id,
- fallThroughState = $__233.fallThroughState;
- return state.replaceState(id, fallThroughState);
- }), newStates[i]);
- }
- return newStates;
- },
- replaceAndAddStates_: function(oldStates, oldState, newState, newStates) {
- for (var i = 0; i < oldStates.length; i++) {
- newStates.push(oldStates[i].replaceState(oldState, newState));
- }
- },
- transformLabelledStatement: function(tree) {
- var startState = this.allocateState();
- var continueState = this.allocateState();
- var fallThroughState = this.allocateState();
- var label = new LabelState(tree.name.value, continueState, fallThroughState);
- var oldLabels = this.addLabel_(label);
- this.currentLabel_ = label;
- var result = this.transformAny(tree.statement);
- if (result === tree.statement) {
- result = tree;
- } else if (result.type === STATE_MACHINE) {
- result = result.replaceStartState(startState);
- result = result.replaceFallThroughState(fallThroughState);
- }
- this.restoreLabels_(oldLabels);
- return result;
- },
- getLabels_: function() {
- return this.labelSet_;
- },
- restoreLabels_: function(oldLabels) {
- this.labelSet_ = oldLabels;
- },
- addLabel_: function(label) {
- var oldLabels = this.labelSet_;
- var labelSet = Object.create(null);
- for (var k in this.labelSet_) {
- labelSet[k] = this.labelSet_[k];
- }
- labelSet[label.name] = label;
- this.labelSet_ = labelSet;
- return oldLabels;
- },
- clearLabels_: function() {
- var result = this.labelSet_;
- this.labelSet_ = Object.create(null);
- return result;
- },
- clearCurrentLabel_: function() {
- var result = this.currentLabel_;
- this.currentLabel_ = null;
- return result;
- },
- transformSwitchStatement: function(tree) {
- var $__233,
- $__234;
- var labels = this.getLabels_();
- var expression,
- machine,
- caseClauses;
- if (this.expressionNeedsStateMachine(tree.expression)) {
- (($__233 = this.expressionToStateMachine(tree.expression), expression = $__233.expression, machine = $__233.machine, $__233));
- caseClauses = this.transformList(tree.caseClauses);
- } else {
- var result = $traceurRuntime.superCall(this, $CPSTransformer.prototype, "transformSwitchStatement", [tree]);
- if (!needsStateMachine(result))
- return result;
- (($__234 = result, expression = $__234.expression, caseClauses = $__234.caseClauses, $__234));
- }
- var startState = this.allocateState();
- var fallThroughState = this.allocateState();
- var nextState = fallThroughState;
- var states = [];
- var clauses = [];
- var tryStates = [];
- var hasDefault = false;
- for (var index = caseClauses.length - 1; index >= 0; index--) {
- var clause = caseClauses[index];
- if (clause.type == CASE_CLAUSE) {
- var caseClause = clause;
- nextState = this.addSwitchClauseStates_(nextState, fallThroughState, labels, caseClause.statements, states, tryStates);
- clauses.push(new SwitchClause(caseClause.expression, nextState));
- } else {
- hasDefault = true;
- var defaultClause = clause;
- nextState = this.addSwitchClauseStates_(nextState, fallThroughState, labels, defaultClause.statements, states, tryStates);
- clauses.push(new SwitchClause(null, nextState));
- }
- }
- if (!hasDefault) {
- clauses.push(new SwitchClause(null, fallThroughState));
- }
- states.push(new SwitchState(startState, expression, clauses.reverse()));
- var switchMachine = new StateMachine(startState, fallThroughState, states.reverse(), tryStates);
- if (machine)
- switchMachine = machine.append(switchMachine);
- return switchMachine;
- },
- addSwitchClauseStates_: function(nextState, fallThroughState, labels, statements, states, tryStates) {
- var $__235;
- var machine = this.ensureTransformedList_(statements);
- for (var i = 0; i < machine.states.length; i++) {
- var state = machine.states[i];
- var transformedState = state.transformBreak(labels, fallThroughState);
- states.push(transformedState.replaceState(machine.fallThroughState, nextState));
- }
- ($__235 = tryStates).push.apply($__235, $traceurRuntime.toObject(machine.exceptionBlocks));
- return machine.startState;
- },
- transformTryStatement: function(tree) {
- var result = $traceurRuntime.superCall(this, $CPSTransformer.prototype, "transformTryStatement", [tree]);
- var $__233 = result,
- body = $__233.body,
- catchBlock = $__233.catchBlock,
- finallyBlock = $__233.finallyBlock;
- if (body.type != STATE_MACHINE && (catchBlock == null || catchBlock.catchBody.type != STATE_MACHINE) && (finallyBlock == null || finallyBlock.block.type != STATE_MACHINE)) {
- return result;
- }
- var outerCatchState = this.allocateState();
- var outerFinallyState = this.allocateState();
- var pushTryState = this.statementToStateMachine_(parseStatement($__221, (catchBlock && outerCatchState), (finallyBlock && outerFinallyState)));
- var tryMachine = this.ensureTransformed_(body);
- tryMachine = pushTryState.append(tryMachine);
- if (catchBlock !== null) {
- var popTry = this.statementToStateMachine_(parseStatement($__222));
- tryMachine = tryMachine.append(popTry);
- var exceptionName = catchBlock.binding.identifierToken.value;
- var catchMachine = this.ensureTransformed_(catchBlock.catchBody);
- var catchStart = this.allocateState();
- this.addMachineVariable(exceptionName);
- var states = $traceurRuntime.spread(tryMachine.states, [new FallThroughState(catchStart, catchMachine.startState, parseStatements($__223, id(exceptionName)))]);
- this.replaceAndAddStates_(catchMachine.states, catchMachine.fallThroughState, tryMachine.fallThroughState, states);
- tryMachine = new StateMachine(tryMachine.startState, tryMachine.fallThroughState, states, [new CatchState(exceptionName, catchStart, tryMachine.fallThroughState, tryMachine.getAllStateIDs(), tryMachine.exceptionBlocks)]);
- tryMachine = tryMachine.replaceStateId(catchStart, outerCatchState);
- }
- if (finallyBlock != null) {
- var finallyMachine = this.ensureTransformed_(finallyBlock.block);
- var popTry = this.statementToStateMachine_(parseStatement($__224));
- finallyMachine = popTry.append(finallyMachine);
- var states = $traceurRuntime.spread(tryMachine.states, finallyMachine.states, [new FinallyFallThroughState(finallyMachine.fallThroughState)]);
- tryMachine = new StateMachine(tryMachine.startState, tryMachine.fallThroughState, states, [new FinallyState(finallyMachine.startState, finallyMachine.fallThroughState, tryMachine.getAllStateIDs(), tryMachine.exceptionBlocks)]);
- tryMachine = tryMachine.replaceStateId(finallyMachine.startState, outerFinallyState);
- }
- return tryMachine;
- },
- transformWhileStatement: function(tree) {
- var $__235;
- var $__233,
- $__234;
- var labels = this.getLabels_();
- var label = this.clearCurrentLabel_();
- var condition,
- machine,
- body;
- if (this.expressionNeedsStateMachine(tree.condition)) {
- (($__233 = this.expressionToStateMachine(tree.condition), machine = $__233.machine, condition = $__233.expression, $__233));
- body = this.transformAny(tree.body);
- } else {
- var result = $traceurRuntime.superCall(this, $CPSTransformer.prototype, "transformWhileStatement", [tree]);
- (($__234 = result, condition = $__234.condition, body = $__234.body, $__234));
- if (body.type !== STATE_MACHINE)
- return result;
- }
- var loopBodyMachine = this.ensureTransformed_(body);
- var startState = loopBodyMachine.fallThroughState;
- var fallThroughState = this.allocateState();
- var states = [];
- var conditionStart = startState;
- if (machine) {
- machine = machine.replaceStartState(startState);
- conditionStart = machine.fallThroughState;
- ($__235 = states).push.apply($__235, $traceurRuntime.toObject(machine.states));
- }
- states.push(new ConditionalState(conditionStart, loopBodyMachine.startState, fallThroughState, condition));
- this.addLoopBodyStates_(loopBodyMachine, startState, fallThroughState, labels, states);
- var machine = new StateMachine(startState, fallThroughState, states, loopBodyMachine.exceptionBlocks);
- if (label)
- machine = machine.replaceStateId(startState, label.continueState);
- return machine;
- },
- transformWithStatement: function(tree) {
- var result = $traceurRuntime.superCall(this, $CPSTransformer.prototype, "transformWithStatement", [tree]);
- if (result.body.type != STATE_MACHINE) {
- return result;
- }
- throw new Error('Unreachable - with statement not allowed in strict mode/harmony');
- },
- generateMachineInnerFunction: function(machine) {
- var enclosingFinallyState = machine.getEnclosingFinallyMap();
- var SwitchStatement = createSwitchStatement(createMemberExpression('$ctx', 'state'), this.transformMachineStates(machine, State.END_STATE, State.RETHROW_STATE, enclosingFinallyState));
- return parseExpression($__225, SwitchStatement);
- },
- addTempVar: function() {
- var name = this.getTempIdentifier();
- this.addMachineVariable(name);
- return name;
- },
- addMachineVariable: function(name) {
- this.hoistVariablesTransformer_.addVariable(name);
- },
- transformCpsFunctionBody: function(tree, runtimeMethod) {
- var alphaRenamedTree = AlphaRenamer.rename(tree, 'arguments', '$arguments');
- var hasArguments = alphaRenamedTree !== tree;
- var hoistedTree = this.hoistVariablesTransformer_.transformAny(alphaRenamedTree);
- var maybeMachine = this.transformAny(hoistedTree);
- if (this.reporter.hadError())
- return tree;
- var machine;
- if (maybeMachine.type !== STATE_MACHINE) {
- machine = this.statementsToStateMachine_(maybeMachine.statements);
- } else {
- machine = new StateMachine(maybeMachine.startState, maybeMachine.fallThroughState, this.removeEmptyStates(maybeMachine.states), maybeMachine.exceptionBlocks);
- }
- machine = machine.replaceFallThroughState(State.END_STATE).replaceStartState(State.START_STATE);
- var statements = [];
- if (this.hoistVariablesTransformer_.hasVariables())
- statements.push(this.hoistVariablesTransformer_.getVariableStatement());
- if (hasArguments)
- statements.push(parseStatement($__226));
- statements.push(parseStatement($__227, runtimeMethod, this.generateMachineInnerFunction(machine)));
- return createFunctionBody(statements);
- },
- transformFunctionDeclaration: function(tree) {
- return tree;
- },
- transformFunctionExpression: function(tree) {
- return tree;
- },
- transformGetAccessor: function(tree) {
- return tree;
- },
- transformSetAccessor: function(tree) {
- return tree;
- },
- transformStateMachine: function(tree) {
- return tree;
- },
- statementToStateMachine_: function(statement) {
- var statements;
- if (statement.type === BLOCK)
- statements = statement.statements;
- else
- statements = [statement];
- return this.statementsToStateMachine_(statements);
- },
- statementsToStateMachine_: function(statements) {
- var startState = this.allocateState();
- var fallThroughState = this.allocateState();
- return this.stateToStateMachine_(new FallThroughState(startState, fallThroughState, statements), fallThroughState);
- },
- stateToStateMachine_: function(newState, fallThroughState) {
- return new StateMachine(newState.id, fallThroughState, [newState], []);
- },
- transformMachineStates: function(machine, machineEndState, rethrowState, enclosingFinallyState) {
- var cases = [];
- for (var i = 0; i < machine.states.length; i++) {
- var state = machine.states[i];
- var stateCase = state.transformMachineState(enclosingFinallyState[state.id], machineEndState, this.reporter);
- if (stateCase != null) {
- cases.push(stateCase);
- }
- }
- this.addFinallyFallThroughDispatches(null, machine.exceptionBlocks, cases);
- cases.push(createDefaultClause(parseStatements($__228)));
- return cases;
- },
- addFinallyFallThroughDispatches: function(enclosingFinallyState, tryStates, cases) {
- for (var i = 0; i < tryStates.length; i++) {
- var tryState = tryStates[i];
- if (tryState.kind == TryState.Kind.FINALLY) {
- var finallyState = tryState;
- if (enclosingFinallyState != null) {
- var caseClauses = [];
- var index = 0;
- for (var j = 0; j < enclosingFinallyState.tryStates.length; j++) {
- var destination = enclosingFinallyState.tryStates[j];
- index++;
- var statements;
- if (index < enclosingFinallyState.tryStates.length) {
- statements = createStatementList();
- } else {
- statements = parseStatements($__229, State.INVALID_STATE);
- }
- caseClauses.push(createCaseClause(createNumberLiteral(destination), statements));
- }
- caseClauses.push(createDefaultClause(createStatementList(createAssignStateStatement(enclosingFinallyState.finallyState), createBreakStatement())));
- cases.push(createCaseClause(createNumberLiteral(finallyState.fallThroughState), createStatementList(createSwitchStatement(createMemberExpression('$ctx', 'finallyFallThrough'), caseClauses), createBreakStatement())));
- } else {
- cases.push(createCaseClause(createNumberLiteral(finallyState.fallThroughState), parseStatements($__230)));
- }
- this.addFinallyFallThroughDispatches(finallyState, finallyState.nestedTrys, cases);
- } else {
- this.addFinallyFallThroughDispatches(enclosingFinallyState, tryState.nestedTrys, cases);
- }
- }
- },
- transformVariableDeclarationList: function(tree) {
- this.reporter.reportError(tree.location && tree.location.start, 'Traceur: const/let declarations in a block containing a yield are ' + 'not yet implemented');
- return tree;
- },
- maybeTransformStatement_: function(maybeTransformedStatement) {
- var breakContinueTransformed = new BreakContinueTransformer(this.stateAllocator_).transformAny(maybeTransformedStatement);
- if (breakContinueTransformed != maybeTransformedStatement) {
- breakContinueTransformed = this.transformAny(breakContinueTransformed);
- }
- return breakContinueTransformed;
- },
- ensureTransformed_: function(statement) {
- if (statement == null) {
- return null;
- }
- var maybeTransformed = this.maybeTransformStatement_(statement);
- return maybeTransformed.type == STATE_MACHINE ? maybeTransformed : this.statementToStateMachine_(maybeTransformed);
- },
- ensureTransformedList_: function(statements) {
- var maybeTransformedStatements = [];
- var foundMachine = false;
- for (var i = 0; i < statements.length; i++) {
- var statement = statements[i];
- var maybeTransformedStatement = this.maybeTransformStatement_(statement);
- maybeTransformedStatements.push(maybeTransformedStatement);
- if (maybeTransformedStatement.type == STATE_MACHINE) {
- foundMachine = true;
- }
- }
- if (!foundMachine) {
- return this.statementsToStateMachine_(statements);
- }
- return this.transformStatementList_(maybeTransformedStatements);
- },
- expressionToStateMachine: function(tree) {
- var commaExpression = new ExplodeExpressionTransformer(this).transformAny(tree);
- var statements = new NormalizeCommaExpressionToStatementTransformer().transformAny(commaExpression).statements;
- var lastStatement = statements.pop();
- assert(lastStatement.type === EXPRESSION_STATEMENT);
- var expression = lastStatement.expression;
- statements = $traceurRuntime.superCall(this, $CPSTransformer.prototype, "transformList", [statements]);
- var machine = this.transformStatementList_(statements);
- return {
- expression: expression,
- machine: machine
- };
- }
- }, {}, TempVarTransformer);
- var NormalizeCommaExpressionToStatementTransformer = function NormalizeCommaExpressionToStatementTransformer() {
- $traceurRuntime.defaultSuperCall(this, $NormalizeCommaExpressionToStatementTransformer.prototype, arguments);
- };
- var $NormalizeCommaExpressionToStatementTransformer = NormalizeCommaExpressionToStatementTransformer;
- ($traceurRuntime.createClass)(NormalizeCommaExpressionToStatementTransformer, {
- transformCommaExpression: function(tree) {
- var $__231 = this;
- var statements = tree.expressions.map((function(expr) {
- if (expr.type === CONDITIONAL_EXPRESSION)
- return $__231.transformAny(expr);
- return createExpressionStatement(expr);
- }));
- return new AnonBlock(tree.location, statements);
- },
- transformConditionalExpression: function(tree) {
- var ifBlock = this.transformAny(tree.left);
- var elseBlock = this.transformAny(tree.right);
- return new IfStatement(tree.location, tree.condition, anonBlockToBlock(ifBlock), anonBlockToBlock(elseBlock));
- }
- }, {}, ParseTreeTransformer);
- function anonBlockToBlock(tree) {
- if (tree.type === PAREN_EXPRESSION)
- return anonBlockToBlock(tree.expression);
- return new Block(tree.location, tree.statements);
- }
- return {get CPSTransformer() {
- return CPSTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/EndState", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/EndState";
- var State = System.get("traceur@0.0.32/src/codegeneration/generator/State").State;
- var EndState = function EndState() {
- $traceurRuntime.defaultSuperCall(this, $EndState.prototype, arguments);
- };
- var $EndState = EndState;
- ($traceurRuntime.createClass)(EndState, {
- replaceState: function(oldState, newState) {
- return new $EndState(State.replaceStateId(this.id, oldState, newState));
- },
- transform: function(enclosingFinally, machineEndState, reporter) {
- return State.generateJump(enclosingFinally, machineEndState);
- }
- }, {}, State);
- return {get EndState() {
- return EndState;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/AsyncTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/AsyncTransformer";
- var $__238 = Object.freeze(Object.defineProperties(["", " = $ctx.value"], {raw: {value: Object.freeze(["", " = $ctx.value"])}})),
- $__239 = Object.freeze(Object.defineProperties(["throw $ctx.err"], {raw: {value: Object.freeze(["throw $ctx.err"])}})),
- $__240 = Object.freeze(Object.defineProperties(["$ctx.resolve(", ")"], {raw: {value: Object.freeze(["$ctx.resolve(", ")"])}})),
- $__241 = Object.freeze(Object.defineProperties(["$traceurRuntime.asyncWrap"], {raw: {value: Object.freeze(["$traceurRuntime.asyncWrap"])}}));
- var AwaitState = System.get("traceur@0.0.32/src/codegeneration/generator/AwaitState").AwaitState;
- var CPSTransformer = System.get("traceur@0.0.32/src/codegeneration/generator/CPSTransformer").CPSTransformer;
- var EndState = System.get("traceur@0.0.32/src/codegeneration/generator/EndState").EndState;
- var FallThroughState = System.get("traceur@0.0.32/src/codegeneration/generator/FallThroughState").FallThroughState;
- var STATE_MACHINE = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType").STATE_MACHINE;
- var $__243 = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser"),
- parseExpression = $__243.parseExpression,
- parseStatement = $__243.parseStatement,
- parseStatements = $__243.parseStatements;
- var State = System.get("traceur@0.0.32/src/codegeneration/generator/State").State;
- var StateMachine = System.get("traceur@0.0.32/src/syntax/trees/StateMachine").StateMachine;
- var VAR = System.get("traceur@0.0.32/src/syntax/TokenType").VAR;
- var $__243 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createAssignStateStatement = $__243.createAssignStateStatement,
- createBreakStatement = $__243.createBreakStatement,
- createStatementList = $__243.createStatementList,
- createUndefinedExpression = $__243.createUndefinedExpression;
- var AsyncTransformer = function AsyncTransformer() {
- $traceurRuntime.defaultSuperCall(this, $AsyncTransformer.prototype, arguments);
- };
- var $AsyncTransformer = AsyncTransformer;
- ($traceurRuntime.createClass)(AsyncTransformer, {
- transformYieldExpression: function(tree) {
- this.reporter.reportError(tree.location.start, 'Async function may not have a yield expression.');
- return tree;
- },
- transformAwaitStatement: function(tree) {
- var createTaskState = this.allocateState();
- var callbackState = this.allocateState();
- var errbackState = this.allocateState();
- var fallThroughState = this.allocateState();
- var states = [];
- var expression = this.transformAny(tree.expression);
- states.push(new AwaitState(createTaskState, callbackState, errbackState, expression));
- var assignment;
- if (tree.identifier != null)
- assignment = parseStatements($__238, tree.identifier);
- else
- assignment = createStatementList();
- states.push(new FallThroughState(callbackState, fallThroughState, assignment));
- states.push(new FallThroughState(errbackState, fallThroughState, createStatementList(parseStatement($__239))));
- return new StateMachine(createTaskState, fallThroughState, states, []);
- },
- transformFinally: function(tree) {
- var result = $traceurRuntime.superCall(this, $AsyncTransformer.prototype, "transformFinally", [tree]);
- if (result.block.type != STATE_MACHINE) {
- return result;
- }
- this.reporter.reportError(tree.location.start, 'await not permitted within a finally block.');
- return result;
- },
- transformReturnStatement: function(tree) {
- var result = tree.expression;
- if (result == null) {
- result = createUndefinedExpression();
- }
- var startState = this.allocateState();
- var endState = this.allocateState();
- var completeState = new FallThroughState(startState, endState, createStatementList(this.createCompleteTask_(result)));
- var end = new EndState(endState);
- return new StateMachine(startState, this.allocateState(), [completeState, end], []);
- },
- createCompleteTask_: function(result) {
- return parseStatement($__240, result);
- },
- transformAsyncBody: function(tree) {
- var runtimeFunction = parseExpression($__241);
- return this.transformCpsFunctionBody(tree, runtimeFunction);
- },
- machineFallThroughStatements: function(machineEndState) {
- return createStatementList(this.createCompleteTask_(createUndefinedExpression()), createAssignStateStatement(machineEndState), createBreakStatement());
- }
- }, {transformAsyncBody: function(identifierGenerator, reporter, body) {
- return new $AsyncTransformer(identifierGenerator, reporter).transformAsyncBody(body);
- }}, CPSTransformer);
- ;
- return {get AsyncTransformer() {
- return AsyncTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/ForInTransformPass", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/ForInTransformPass";
- var $__245 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- BLOCK = $__245.BLOCK,
- VARIABLE_DECLARATION_LIST = $__245.VARIABLE_DECLARATION_LIST,
- IDENTIFIER_EXPRESSION = $__245.IDENTIFIER_EXPRESSION;
- var $__245 = System.get("traceur@0.0.32/src/syntax/PredefinedName"),
- LENGTH = $__245.LENGTH,
- PUSH = $__245.PUSH;
- var TempVarTransformer = System.get("traceur@0.0.32/src/codegeneration/TempVarTransformer").TempVarTransformer;
- var $__245 = System.get("traceur@0.0.32/src/syntax/TokenType"),
- BANG = $__245.BANG,
- IN = $__245.IN,
- OPEN_ANGLE = $__245.OPEN_ANGLE,
- PLUS_PLUS = $__245.PLUS_PLUS,
- VAR = $__245.VAR;
- var $__245 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createArgumentList = $__245.createArgumentList,
- createAssignmentStatement = $__245.createAssignmentStatement,
- createBinaryOperator = $__245.createBinaryOperator,
- createBlock = $__245.createBlock,
- createCallStatement = $__245.createCallStatement,
- createContinueStatement = $__245.createContinueStatement,
- createEmptyArrayLiteralExpression = $__245.createEmptyArrayLiteralExpression,
- createForInStatement = $__245.createForInStatement,
- createForStatement = $__245.createForStatement,
- createIdentifierExpression = $__245.createIdentifierExpression,
- createIfStatement = $__245.createIfStatement,
- createMemberExpression = $__245.createMemberExpression,
- createMemberLookupExpression = $__245.createMemberLookupExpression,
- createNumberLiteral = $__245.createNumberLiteral,
- createOperatorToken = $__245.createOperatorToken,
- createParenExpression = $__245.createParenExpression,
- createPostfixExpression = $__245.createPostfixExpression,
- createUnaryExpression = $__245.createUnaryExpression,
- createVariableDeclarationList = $__245.createVariableDeclarationList,
- createVariableStatement = $__245.createVariableStatement;
- var ForInTransformPass = function ForInTransformPass() {
- $traceurRuntime.defaultSuperCall(this, $ForInTransformPass.prototype, arguments);
- };
- var $ForInTransformPass = ForInTransformPass;
- ($traceurRuntime.createClass)(ForInTransformPass, {transformForInStatement: function(original) {
- var $__246;
- var tree = original;
- var bodyStatements = [];
- var body = this.transformAny(tree.body);
- if (body.type == BLOCK) {
- ($__246 = bodyStatements).push.apply($__246, $traceurRuntime.toObject(body.statements));
- } else {
- bodyStatements.push(body);
- }
- var elements = [];
- var keys = this.getTempIdentifier();
- elements.push(createVariableStatement(VAR, keys, createEmptyArrayLiteralExpression()));
- var collection = this.getTempIdentifier();
- elements.push(createVariableStatement(VAR, collection, tree.collection));
- var p = this.getTempIdentifier();
- elements.push(createForInStatement(createVariableDeclarationList(VAR, p, null), createIdentifierExpression(collection), createCallStatement(createMemberExpression(keys, PUSH), createArgumentList(createIdentifierExpression(p)))));
- var i = this.getTempIdentifier();
- var lookup = createMemberLookupExpression(createIdentifierExpression(keys), createIdentifierExpression(i));
- var originalKey,
- assignOriginalKey;
- if (tree.initialiser.type == VARIABLE_DECLARATION_LIST) {
- var decList = tree.initialiser;
- originalKey = createIdentifierExpression(decList.declarations[0].lvalue);
- assignOriginalKey = createVariableStatement(decList.declarationType, originalKey.identifierToken, lookup);
- } else if (tree.initialiser.type == IDENTIFIER_EXPRESSION) {
- originalKey = tree.initialiser;
- assignOriginalKey = createAssignmentStatement(tree.initialiser, lookup);
- } else {
- throw new Error('Invalid left hand side of for in loop');
- }
- var innerBlock = [];
- innerBlock.push(assignOriginalKey);
- innerBlock.push(createIfStatement(createUnaryExpression(createOperatorToken(BANG), createParenExpression(createBinaryOperator(originalKey, createOperatorToken(IN), createIdentifierExpression(collection)))), createContinueStatement(), null));
- ($__246 = innerBlock).push.apply($__246, $traceurRuntime.toObject(bodyStatements));
- elements.push(createForStatement(createVariableDeclarationList(VAR, i, createNumberLiteral(0)), createBinaryOperator(createIdentifierExpression(i), createOperatorToken(OPEN_ANGLE), createMemberExpression(keys, LENGTH)), createPostfixExpression(createIdentifierExpression(i), createOperatorToken(PLUS_PLUS)), createBlock(innerBlock)));
- return createBlock(elements);
- }}, {}, TempVarTransformer);
- return {get ForInTransformPass() {
- return ForInTransformPass;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/YieldState", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/YieldState";
- var $__247 = Object.freeze(Object.defineProperties(["return ", ""], {raw: {value: Object.freeze(["return ", ""])}}));
- var CURRENT = System.get("traceur@0.0.32/src/syntax/PredefinedName").CURRENT;
- var State = System.get("traceur@0.0.32/src/codegeneration/generator/State").State;
- var $__249 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createAssignmentStatement = $__249.createAssignmentStatement,
- createIdentifierExpression = $__249.createIdentifierExpression,
- createMemberExpression = $__249.createMemberExpression,
- createReturnStatement = $__249.createReturnStatement,
- createThisExpression = $__249.createThisExpression,
- createTrueLiteral = $__249.createTrueLiteral;
- var parseStatement = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser").parseStatement;
- var YieldState = function YieldState(id, fallThroughState, expression) {
- $traceurRuntime.superCall(this, $YieldState.prototype, "constructor", [id]);
- this.fallThroughState = fallThroughState;
- this.expression = expression;
- };
- var $YieldState = YieldState;
- ($traceurRuntime.createClass)(YieldState, {
- replaceState: function(oldState, newState) {
- return new this.constructor(State.replaceStateId(this.id, oldState, newState), State.replaceStateId(this.fallThroughState, oldState, newState), this.expression);
- },
- transform: function(enclosingFinally, machineEndState, reporter) {
- return $traceurRuntime.spread(State.generateAssignState(enclosingFinally, this.fallThroughState), [parseStatement($__247, this.expression)]);
- }
- }, {}, State);
- return {get YieldState() {
- return YieldState;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/ReturnState", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/ReturnState";
- var $__250 = Object.freeze(Object.defineProperties(["$ctx.returnValue = ", ""], {raw: {value: Object.freeze(["$ctx.returnValue = ", ""])}}));
- var $__252 = System.get("traceur@0.0.32/src/semantics/util"),
- isUndefined = $__252.isUndefined,
- isVoidExpression = $__252.isVoidExpression;
- var YieldState = System.get("traceur@0.0.32/src/codegeneration/generator/YieldState").YieldState;
- var State = System.get("traceur@0.0.32/src/codegeneration/generator/State").State;
- var $__252 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createAssignmentStatement = $__252.createAssignmentStatement,
- createMemberExpression = $__252.createMemberExpression,
- createThisExpression = $__252.createThisExpression;
- var parseStatement = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser").parseStatement;
- var ReturnState = function ReturnState() {
- $traceurRuntime.defaultSuperCall(this, $ReturnState.prototype, arguments);
- };
- var $ReturnState = ReturnState;
- ($traceurRuntime.createClass)(ReturnState, {transform: function(enclosingFinally, machineEndState, reporter) {
- var $__253;
- var e = this.expression;
- var statements = [];
- if (e && !isUndefined(e) && !isVoidExpression(e))
- statements.push(parseStatement($__250, this.expression));
- ($__253 = statements).push.apply($__253, $traceurRuntime.toObject(State.generateJump(enclosingFinally, machineEndState)));
- return statements;
- }}, {}, YieldState);
- return {get ReturnState() {
- return ReturnState;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/isYieldAssign", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/isYieldAssign";
- var $__254 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- BINARY_OPERATOR = $__254.BINARY_OPERATOR,
- YIELD_EXPRESSION = $__254.YIELD_EXPRESSION;
- function isYieldAssign(tree) {
- return tree.type === BINARY_OPERATOR && tree.operator.isAssignmentOperator() && tree.right.type === YIELD_EXPRESSION && tree.left.isLeftHandSideExpression();
- }
- var $__default = isYieldAssign;
- return {get default() {
- return $__default;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/YieldFinder", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/YieldFinder";
- var ParseTreeVisitor = System.get("traceur@0.0.32/src/syntax/ParseTreeVisitor").ParseTreeVisitor;
- var YieldFinder = function YieldFinder(tree) {
- this.hasYield = false;
- this.hasYieldFor = false;
- this.hasForIn = false;
- this.hasAwait = false;
- this.visitAny(tree);
- };
- var $YieldFinder = YieldFinder;
- ($traceurRuntime.createClass)(YieldFinder, {
- hasAnyGenerator: function() {
- return this.hasYield || this.hasAwait;
- },
- visitYieldExpression: function(tree) {
- this.hasYield = true;
- this.hasYieldFor = tree.isYieldFor;
- },
- visitAwaitStatement: function(tree) {
- this.hasAwait = true;
- },
- visitForInStatement: function(tree) {
- this.hasForIn = true;
- $traceurRuntime.superCall(this, $YieldFinder.prototype, "visitForInStatement", [tree]);
- },
- visitFunctionDeclaration: function(tree) {},
- visitFunctionExpression: function(tree) {},
- visitSetAccessor: function(tree) {},
- visitGetAccessor: function(tree) {}
- }, {}, ParseTreeVisitor);
- return {get YieldFinder() {
- return YieldFinder;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/scopeContainsYield", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/scopeContainsYield";
- var YieldFinder = System.get("traceur@0.0.32/src/codegeneration/generator/YieldFinder").YieldFinder;
- function scopeContainsYield(tree) {
- var visitor = new YieldFinder(tree);
- return visitor.hasYield || visitor.hasYieldFor || visitor.hasAwait;
- }
- var $__default = scopeContainsYield;
- return {get default() {
- return $__default;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/generator/GeneratorTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/generator/GeneratorTransformer";
- var $__258 = Object.freeze(Object.defineProperties(["\n ", " = ", "[Symbol.iterator]();\n // received = void 0;\n $ctx.sent = void 0;\n // send = true; // roughly equivalent\n $ctx.action = 'next';\n\n for (;;) {\n ", " = ", "[$ctx.action]($ctx.sentIgnoreThrow);\n if (", ".done) {\n $ctx.sent = ", ".value;\n break;\n }\n ", ";\n }"], {raw: {value: Object.freeze(["\n ", " = ", "[Symbol.iterator]();\n // received = void 0;\n $ctx.sent = void 0;\n // send = true; // roughly equivalent\n $ctx.action = 'next';\n\n for (;;) {\n ", " = ", "[$ctx.action]($ctx.sentIgnoreThrow);\n if (", ".done) {\n $ctx.sent = ", ".value;\n break;\n }\n ", ";\n }"])}})),
- $__259 = Object.freeze(Object.defineProperties(["$ctx.sentIgnoreThrow"], {raw: {value: Object.freeze(["$ctx.sentIgnoreThrow"])}})),
- $__260 = Object.freeze(Object.defineProperties(["$ctx.sent"], {raw: {value: Object.freeze(["$ctx.sent"])}})),
- $__261 = Object.freeze(Object.defineProperties(["$ctx.maybeThrow()"], {raw: {value: Object.freeze(["$ctx.maybeThrow()"])}})),
- $__262 = Object.freeze(Object.defineProperties(["$traceurRuntime.generatorWrap"], {raw: {value: Object.freeze(["$traceurRuntime.generatorWrap"])}}));
- var CPSTransformer = System.get("traceur@0.0.32/src/codegeneration/generator/CPSTransformer").CPSTransformer;
- var $__264 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- STATE_MACHINE = $__264.STATE_MACHINE,
- YIELD_EXPRESSION = $__264.YIELD_EXPRESSION;
- var $__264 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- BinaryOperator = $__264.BinaryOperator,
- ExpressionStatement = $__264.ExpressionStatement;
- var ExplodeExpressionTransformer = System.get("traceur@0.0.32/src/codegeneration/ExplodeExpressionTransformer").ExplodeExpressionTransformer;
- var FallThroughState = System.get("traceur@0.0.32/src/codegeneration/generator/FallThroughState").FallThroughState;
- var ReturnState = System.get("traceur@0.0.32/src/codegeneration/generator/ReturnState").ReturnState;
- var State = System.get("traceur@0.0.32/src/codegeneration/generator/State").State;
- var StateMachine = System.get("traceur@0.0.32/src/syntax/trees/StateMachine").StateMachine;
- var YieldState = System.get("traceur@0.0.32/src/codegeneration/generator/YieldState").YieldState;
- var $__264 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createAssignStateStatement = $__264.createAssignStateStatement,
- createFunctionBody = $__264.createFunctionBody,
- id = $__264.createIdentifierExpression,
- createMemberExpression = $__264.createMemberExpression,
- createStatementList = $__264.createStatementList,
- createUndefinedExpression = $__264.createUndefinedExpression,
- createYieldStatement = $__264.createYieldStatement;
- var isYieldAssign = System.get("traceur@0.0.32/src/codegeneration/generator/isYieldAssign").default;
- var $__264 = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser"),
- parseExpression = $__264.parseExpression,
- parseStatement = $__264.parseStatement,
- parseStatements = $__264.parseStatements;
- var scopeContainsYield = System.get("traceur@0.0.32/src/codegeneration/generator/scopeContainsYield").default;
- var GeneratorTransformer = function GeneratorTransformer(identifierGenerator, reporter) {
- $traceurRuntime.superCall(this, $GeneratorTransformer.prototype, "constructor", [identifierGenerator, reporter]);
- this.shouldAppendThrowCloseState_ = true;
- };
- var $GeneratorTransformer = GeneratorTransformer;
- ($traceurRuntime.createClass)(GeneratorTransformer, {
- expressionNeedsStateMachine: function(tree) {
- if (tree === null)
- return false;
- return scopeContainsYield(tree);
- },
- transformYieldExpression_: function(tree) {
- var $__264;
- var expression,
- machine;
- if (this.expressionNeedsStateMachine(tree.expression)) {
- (($__264 = this.expressionToStateMachine(tree.expression), expression = $__264.expression, machine = $__264.machine, $__264));
- } else {
- expression = this.transformAny(tree.expression);
- if (!expression)
- expression = createUndefinedExpression();
- }
- if (tree.isYieldFor)
- return this.transformYieldForExpression_(expression, machine);
- var startState = this.allocateState();
- var fallThroughState = this.allocateState();
- var yieldMachine = this.stateToStateMachine_(new YieldState(startState, fallThroughState, this.transformAny(expression)), fallThroughState);
- if (machine)
- yieldMachine = machine.append(yieldMachine);
- if (this.shouldAppendThrowCloseState_)
- yieldMachine = yieldMachine.append(this.createThrowCloseState_());
- return yieldMachine;
- },
- transformYieldForExpression_: function(expression) {
- var machine = arguments[1];
- var gName = this.getTempIdentifier();
- this.addMachineVariable(gName);
- var g = id(gName);
- var nextName = this.getTempIdentifier();
- this.addMachineVariable(nextName);
- var next = id(nextName);
- var statements = parseStatements($__258, g, expression, next, g, next, next, createYieldStatement(createMemberExpression(next, 'value')));
- var shouldAppendThrowCloseState = this.shouldAppendThrowCloseState_;
- this.shouldAppendThrowCloseState_ = false;
- statements = this.transformList(statements);
- var yieldMachine = this.transformStatementList_(statements);
- this.shouldAppendThrowCloseState_ = shouldAppendThrowCloseState;
- if (machine)
- yieldMachine = machine.append(yieldMachine);
- return yieldMachine;
- },
- transformYieldExpression: function(tree) {
- this.reporter.reportError(tree.location.start, 'Only \'a = yield b\' and \'var a = yield b\' currently supported.');
- return tree;
- },
- transformYieldAssign_: function(tree) {
- var shouldAppendThrowCloseState = this.shouldAppendThrowCloseState_;
- this.shouldAppendThrowCloseState_ = false;
- var machine = this.transformYieldExpression_(tree.right);
- var left = this.transformAny(tree.left);
- var sentExpression = tree.right.isYieldFor ? parseExpression($__259) : parseExpression($__260);
- var statement = new ExpressionStatement(tree.location, new BinaryOperator(tree.location, left, tree.operator, sentExpression));
- var assignMachine = this.statementToStateMachine_(statement);
- this.shouldAppendThrowCloseState_ = shouldAppendThrowCloseState;
- return machine.append(assignMachine);
- },
- createThrowCloseState_: function() {
- return this.statementToStateMachine_(parseStatement($__261));
- },
- transformExpressionStatement: function(tree) {
- var expression = tree.expression;
- if (expression.type === YIELD_EXPRESSION)
- return this.transformYieldExpression_(expression);
- if (isYieldAssign(expression))
- return this.transformYieldAssign_(expression);
- if (this.expressionNeedsStateMachine(expression)) {
- return this.expressionToStateMachine(expression).machine;
- }
- return $traceurRuntime.superCall(this, $GeneratorTransformer.prototype, "transformExpressionStatement", [tree]);
- },
- transformAwaitStatement: function(tree) {
- this.reporter.reportError(tree.location.start, 'Generator function may not have an await statement.');
- return tree;
- },
- transformReturnStatement: function(tree) {
- var $__264;
- var expression,
- machine;
- if (this.expressionNeedsStateMachine(tree.expression))
- (($__264 = this.expressionToStateMachine(tree.expression), expression = $__264.expression, machine = $__264.machine, $__264));
- else
- expression = tree.expression;
- var startState = this.allocateState();
- var fallThroughState = this.allocateState();
- var returnMachine = this.stateToStateMachine_(new ReturnState(startState, fallThroughState, this.transformAny(expression)), fallThroughState);
- if (machine)
- return machine.append(returnMachine);
- return returnMachine;
- },
- transformGeneratorBody: function(tree) {
- var runtimeFunction = parseExpression($__262);
- return this.transformCpsFunctionBody(tree, runtimeFunction);
- },
- machineFallThroughStatements: function(machineEndState) {
- return createStatementList(createAssignStateStatement(machineEndState));
- }
- }, {transformGeneratorBody: function(identifierGenerator, reporter, body) {
- return new $GeneratorTransformer(identifierGenerator, reporter).transformGeneratorBody(body);
- }}, CPSTransformer);
- ;
- return {get GeneratorTransformer() {
- return GeneratorTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/GeneratorTransformPass", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/GeneratorTransformPass";
- var AsyncTransformer = System.get("traceur@0.0.32/src/codegeneration/generator/AsyncTransformer").AsyncTransformer;
- var ForInTransformPass = System.get("traceur@0.0.32/src/codegeneration/generator/ForInTransformPass").ForInTransformPass;
- var $__266 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- GetAccessor = $__266.GetAccessor,
- SetAccessor = $__266.SetAccessor;
- var GeneratorTransformer = System.get("traceur@0.0.32/src/codegeneration/generator/GeneratorTransformer").GeneratorTransformer;
- var ParseTreeVisitor = System.get("traceur@0.0.32/src/syntax/ParseTreeVisitor").ParseTreeVisitor;
- var parseStatement = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser").parseStatement;
- var TempVarTransformer = System.get("traceur@0.0.32/src/codegeneration/TempVarTransformer").TempVarTransformer;
- var EQUAL = System.get("traceur@0.0.32/src/syntax/TokenType").EQUAL;
- var $__266 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- BINARY_OPERATOR = $__266.BINARY_OPERATOR,
- COMMA_EXPRESSION = $__266.COMMA_EXPRESSION,
- PAREN_EXPRESSION = $__266.PAREN_EXPRESSION,
- YIELD_EXPRESSION = $__266.YIELD_EXPRESSION;
- var $__266 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- FunctionDeclaration = $__266.FunctionDeclaration,
- FunctionExpression = $__266.FunctionExpression;
- var YieldFinder = System.get("traceur@0.0.32/src/codegeneration/generator/YieldFinder").YieldFinder;
- var $__266 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createAssignmentExpression = $__266.createAssignmentExpression,
- createAssignmentStatement = $__266.createAssignmentStatement,
- createBlock = $__266.createBlock,
- createCommaExpression = $__266.createCommaExpression,
- createExpressionStatement = $__266.createExpressionStatement,
- id = $__266.createIdentifierExpression,
- createMemberExpression = $__266.createMemberExpression,
- createVariableDeclaration = $__266.createVariableDeclaration,
- createVariableDeclarationList = $__266.createVariableDeclarationList,
- createVariableStatement = $__266.createVariableStatement,
- createYieldStatement = $__266.createYieldStatement;
- var isYieldAssign = System.get("traceur@0.0.32/src/codegeneration/generator/isYieldAssign").default;
- var $__266 = System.get("traceur@0.0.32/src/options"),
- transformOptions = $__266.transformOptions,
- options = $__266.options;
- var GeneratorTransformPass = function GeneratorTransformPass(identifierGenerator, reporter) {
- $traceurRuntime.superCall(this, $GeneratorTransformPass.prototype, "constructor", [identifierGenerator]);
- this.reporter_ = reporter;
- };
- var $GeneratorTransformPass = GeneratorTransformPass;
- ($traceurRuntime.createClass)(GeneratorTransformPass, {
- transformFunctionDeclaration: function(tree) {
- return this.transformFunction_(tree, FunctionDeclaration);
- },
- transformFunctionExpression: function(tree) {
- return this.transformFunction_(tree, FunctionExpression);
- },
- transformFunction_: function(tree, constructor) {
- var body = this.transformBody_(tree.functionBody, tree.isGenerator);
- if (body === tree.functionBody)
- return tree;
- var isGenerator = false;
- return new constructor(null, tree.name, isGenerator, tree.formalParameterList, tree.typeAnnotation, tree.annotations, body);
- },
- transformBody_: function(tree, isGenerator) {
- var finder;
- var body = $traceurRuntime.superCall(this, $GeneratorTransformPass.prototype, "transformFunctionBody", [tree]);
- if (isGenerator || transformOptions.deferredFunctions) {
- finder = new YieldFinder(tree);
- if (!(finder.hasYield || isGenerator || finder.hasAwait))
- return body;
- } else if (!isGenerator) {
- return body;
- }
- if (finder.hasForIn && (transformOptions.generators || transformOptions.deferredFunctions)) {
- body = new ForInTransformPass(this.identifierGenerator).transformAny(body);
- }
- if (finder.hasYield || isGenerator) {
- if (transformOptions.generators) {
- body = GeneratorTransformer.transformGeneratorBody(this.identifierGenerator, this.reporter_, body);
- }
- } else if (transformOptions.deferredFunctions) {
- body = AsyncTransformer.transformAsyncBody(this.identifierGenerator, this.reporter_, body);
- }
- return body;
- },
- transformGetAccessor: function(tree) {
- var body = this.transformBody_(tree.body);
- if (body === tree.body)
- return tree;
- return new GetAccessor(tree.location, tree.isStatic, tree.name, tree.typeAnnotation, tree.annotations, body);
- },
- transformSetAccessor: function(tree) {
- var body = this.transformBody_(tree.body);
- if (body === tree.body)
- return tree;
- return new SetAccessor(tree.location, tree.isStatic, tree.name, tree.parameter, tree.annotations, body);
- }
- }, {}, TempVarTransformer);
- return {get GeneratorTransformPass() {
- return GeneratorTransformPass;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/InlineModuleTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/InlineModuleTransformer";
- var VAR = System.get("traceur@0.0.32/src/syntax/TokenType").VAR;
- var assert = System.get("traceur@0.0.32/src/util/assert").assert;
- var ModuleTransformer = System.get("traceur@0.0.32/src/codegeneration/ModuleTransformer").ModuleTransformer;
- var $__268 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createBindingIdentifier = $__268.createBindingIdentifier,
- createEmptyStatement = $__268.createEmptyStatement,
- createFunctionBody = $__268.createFunctionBody,
- createImmediatelyInvokedFunctionExpression = $__268.createImmediatelyInvokedFunctionExpression,
- createScopedExpression = $__268.createScopedExpression,
- createVariableStatement = $__268.createVariableStatement;
- var globalThis = System.get("traceur@0.0.32/src/codegeneration/globalThis").default;
- var scopeContainsThis = System.get("traceur@0.0.32/src/codegeneration/scopeContainsThis").default;
- var InlineModuleTransformer = function InlineModuleTransformer() {
- $traceurRuntime.defaultSuperCall(this, $InlineModuleTransformer.prototype, arguments);
- };
- var $InlineModuleTransformer = InlineModuleTransformer;
- ($traceurRuntime.createClass)(InlineModuleTransformer, {
- wrapModule: function(statements) {
- assert(this.moduleName);
- var idName = this.getTempVarNameForModuleName(this.moduleName);
- var body = createFunctionBody(statements);
- var moduleExpression;
- if (statements.some(scopeContainsThis)) {
- moduleExpression = createScopedExpression(body, globalThis());
- } else {
- moduleExpression = createImmediatelyInvokedFunctionExpression(body);
- }
- return [createVariableStatement(VAR, idName, moduleExpression)];
- },
- transformNamedExport: function(tree) {
- return createEmptyStatement();
- },
- transformModuleSpecifier: function(tree) {
- return createBindingIdentifier(this.getTempVarNameForModuleSpecifier(tree));
- }
- }, {}, ModuleTransformer);
- return {get InlineModuleTransformer() {
- return InlineModuleTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/InstantiateModuleTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/InstantiateModuleTransformer";
- var $__269 = Object.freeze(Object.defineProperties(["function(", ") {\n ", "\n }"], {raw: {value: Object.freeze(["function(", ") {\n ", "\n }"])}})),
- $__270 = Object.freeze(Object.defineProperties(["", ".bind(", ")"], {raw: {value: Object.freeze(["", ".bind(", ")"])}})),
- $__271 = Object.freeze(Object.defineProperties(["System.register(", ", ", ", ", ");"], {raw: {value: Object.freeze(["System.register(", ", ", ", ", ");"])}})),
- $__272 = Object.freeze(Object.defineProperties(["System.get(", ")"], {raw: {value: Object.freeze(["System.get(", ")"])}}));
- var assert = System.get("traceur@0.0.32/src/util/assert").assert;
- var createIdentifierExpression = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory").createIdentifierExpression;
- var globalThis = System.get("traceur@0.0.32/src/codegeneration/globalThis").default;
- var ModuleTransformer = System.get("traceur@0.0.32/src/codegeneration/ModuleTransformer").ModuleTransformer;
- var $__274 = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser"),
- parseExpression = $__274.parseExpression,
- parseStatements = $__274.parseStatements;
- var scopeContainsThis = System.get("traceur@0.0.32/src/codegeneration/scopeContainsThis").default;
- var InstantiateModuleTransformer = function InstantiateModuleTransformer(identifierGenerator) {
- $traceurRuntime.superCall(this, $InstantiateModuleTransformer.prototype, "constructor", [identifierGenerator]);
- this.dependencies = [];
- };
- var $InstantiateModuleTransformer = InstantiateModuleTransformer;
- ($traceurRuntime.createClass)(InstantiateModuleTransformer, {
- wrapModule: function(statements) {
- var depPaths = this.dependencies.map((function(dep) {
- return dep.path;
- }));
- var depLocals = this.dependencies.map((function(dep) {
- return dep.local;
- }));
- var hasTopLevelThis = statements.some(scopeContainsThis);
- var func = parseExpression($__269, depLocals, statements);
- if (hasTopLevelThis)
- func = parseExpression($__270, func, globalThis());
- return parseStatements($__271, this.moduleName, depPaths, func);
- },
- transformModuleSpecifier: function(tree) {
- assert(this.moduleName);
- var name = tree.token.processedValue;
- var localName = this.getTempIdentifier();
- this.dependencies.push({
- path: tree.token,
- local: localName
- });
- var localIdentifier = createIdentifierExpression(localName);
- return parseExpression($__272, localIdentifier);
- }
- }, {}, ModuleTransformer);
- return {get InstantiateModuleTransformer() {
- return InstantiateModuleTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/MultiTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/MultiTransformer";
- var ParseTreeValidator = System.get("traceur@0.0.32/src/syntax/ParseTreeValidator").ParseTreeValidator;
- var MultiTransformer = function MultiTransformer(reporter, validate) {
- this.reporter_ = reporter;
- this.validate_ = validate;
- this.treeTransformers_ = [];
- };
- ($traceurRuntime.createClass)(MultiTransformer, {
- append: function(treeTransformer) {
- this.treeTransformers_.push(treeTransformer);
- },
- transform: function(tree) {
- var reporter = this.reporter_;
- var validate = this.validate_;
- this.treeTransformers_.every((function(transformTree) {
- tree = transformTree(tree);
- if (reporter.hadError())
- return false;
- if (validate)
- ParseTreeValidator.validate(tree);
- return true;
- }));
- return tree;
- }
- }, {});
- return {get MultiTransformer() {
- return MultiTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/NumericLiteralTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/NumericLiteralTransformer";
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var $__278 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- LiteralExpression = $__278.LiteralExpression,
- LiteralPropertyName = $__278.LiteralPropertyName;
- var LiteralToken = System.get("traceur@0.0.32/src/syntax/LiteralToken").LiteralToken;
- var NUMBER = System.get("traceur@0.0.32/src/syntax/TokenType").NUMBER;
- function needsTransform(token) {
- return token.type === NUMBER && /^0[bBoO]/.test(token.value);
- }
- function transformToken(token) {
- return new LiteralToken(NUMBER, String(token.processedValue), token.location);
- }
- var NumericLiteralTransformer = function NumericLiteralTransformer() {
- $traceurRuntime.defaultSuperCall(this, $NumericLiteralTransformer.prototype, arguments);
- };
- var $NumericLiteralTransformer = NumericLiteralTransformer;
- ($traceurRuntime.createClass)(NumericLiteralTransformer, {
- transformLiteralExpression: function(tree) {
- var token = tree.literalToken;
- if (needsTransform(token))
- return new LiteralExpression(tree.location, transformToken(token));
- return tree;
- },
- transformLiteralPropertyName: function(tree) {
- var token = tree.literalToken;
- if (needsTransform(token))
- return new LiteralPropertyName(tree.location, transformToken(token));
- return tree;
- }
- }, {}, ParseTreeTransformer);
- return {get NumericLiteralTransformer() {
- return NumericLiteralTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/ObjectLiteralTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/ObjectLiteralTransformer";
- var FindVisitor = System.get("traceur@0.0.32/src/codegeneration/FindVisitor").FindVisitor;
- var $__280 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- FormalParameterList = $__280.FormalParameterList,
- FunctionExpression = $__280.FunctionExpression,
- IdentifierExpression = $__280.IdentifierExpression,
- LiteralExpression = $__280.LiteralExpression;
- var TempVarTransformer = System.get("traceur@0.0.32/src/codegeneration/TempVarTransformer").TempVarTransformer;
- var $__280 = System.get("traceur@0.0.32/src/syntax/TokenType"),
- IDENTIFIER = $__280.IDENTIFIER,
- STRING = $__280.STRING;
- var $__280 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- COMPUTED_PROPERTY_NAME = $__280.COMPUTED_PROPERTY_NAME,
- LITERAL_PROPERTY_NAME = $__280.LITERAL_PROPERTY_NAME;
- var $__280 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createAssignmentExpression = $__280.createAssignmentExpression,
- createCommaExpression = $__280.createCommaExpression,
- createDefineProperty = $__280.createDefineProperty,
- createEmptyParameterList = $__280.createEmptyParameterList,
- createFunctionExpression = $__280.createFunctionExpression,
- createIdentifierExpression = $__280.createIdentifierExpression,
- createObjectCreate = $__280.createObjectCreate,
- createObjectLiteralExpression = $__280.createObjectLiteralExpression,
- createParenExpression = $__280.createParenExpression,
- createPropertyNameAssignment = $__280.createPropertyNameAssignment,
- createStringLiteral = $__280.createStringLiteral;
- var propName = System.get("traceur@0.0.32/src/staticsemantics/PropName").propName;
- var transformOptions = System.get("traceur@0.0.32/src/options").transformOptions;
- var FindAdvancedProperty = function FindAdvancedProperty(tree) {
- this.protoExpression = null;
- $traceurRuntime.superCall(this, $FindAdvancedProperty.prototype, "constructor", [tree, true]);
- };
- var $FindAdvancedProperty = FindAdvancedProperty;
- ($traceurRuntime.createClass)(FindAdvancedProperty, {
- visitPropertyNameAssignment: function(tree) {
- if (isProtoName(tree.name))
- this.protoExpression = tree.value;
- else
- $traceurRuntime.superCall(this, $FindAdvancedProperty.prototype, "visitPropertyNameAssignment", [tree]);
- },
- visitComputedPropertyName: function(tree) {
- if (transformOptions.computedPropertyNames)
- this.found = true;
- }
- }, {}, FindVisitor);
- function isProtoName(tree) {
- return propName(tree) === '__proto__';
- }
- var ObjectLiteralTransformer = function ObjectLiteralTransformer(identifierGenerator) {
- $traceurRuntime.superCall(this, $ObjectLiteralTransformer.prototype, "constructor", [identifierGenerator]);
- this.protoExpression = null;
- this.needsAdvancedTransform = false;
- this.seenAccessors = null;
- };
- var $ObjectLiteralTransformer = ObjectLiteralTransformer;
- ($traceurRuntime.createClass)(ObjectLiteralTransformer, {
- findSeenAccessor_: function(name) {
- if (name.type === COMPUTED_PROPERTY_NAME)
- return null;
- var s = propName(name);
- return this.seenAccessors[s];
- },
- removeSeenAccessor_: function(name) {
- if (name.type === COMPUTED_PROPERTY_NAME)
- return;
- var s = propName(name);
- delete this.seenAccessors[s];
- },
- addSeenAccessor_: function(name, descr) {
- if (name.type === COMPUTED_PROPERTY_NAME)
- return;
- var s = propName(name);
- this.seenAccessors[s] = descr;
- },
- createProperty_: function(name, descr) {
- var expression;
- if (name.type === LITERAL_PROPERTY_NAME) {
- if (this.needsAdvancedTransform)
- expression = this.getPropertyName_(name);
- else
- expression = name;
- } else {
- expression = name.expression;
- }
- if (descr.get || descr.set) {
- var oldAccessor = this.findSeenAccessor_(name);
- if (oldAccessor) {
- oldAccessor.get = descr.get || oldAccessor.get;
- oldAccessor.set = descr.set || oldAccessor.set;
- this.removeSeenAccessor_(name);
- return null;
- } else {
- this.addSeenAccessor_(name, descr);
- }
- }
- return [expression, descr];
- },
- getPropertyName_: function(nameTree) {
- var token = nameTree.literalToken;
- switch (token.type) {
- case IDENTIFIER:
- return createStringLiteral(token.value);
- default:
- if (token.isKeyword())
- return createStringLiteral(token.type);
- return new LiteralExpression(token.location, token);
- }
- },
- transformClassDeclaration: function(tree) {
- return tree;
- },
- transformClassExpression: function(tree) {
- return tree;
- },
- transformObjectLiteralExpression: function(tree) {
- var oldNeedsTransform = this.needsAdvancedTransform;
- var oldSeenAccessors = this.seenAccessors;
- try {
- var finder = new FindAdvancedProperty(tree);
- if (!finder.found) {
- this.needsAdvancedTransform = false;
- return $traceurRuntime.superCall(this, $ObjectLiteralTransformer.prototype, "transformObjectLiteralExpression", [tree]);
- }
- this.needsAdvancedTransform = true;
- this.seenAccessors = Object.create(null);
- var properties = this.transformList(tree.propertyNameAndValues);
- properties = properties.filter((function(tree) {
- return tree;
- }));
- var tempVar = this.addTempVar();
- var tempVarIdentifierExpression = createIdentifierExpression(tempVar);
- var expressions = properties.map((function(property) {
- var expression = property[0];
- var descr = property[1];
- return createDefineProperty(tempVarIdentifierExpression, expression, descr);
- }));
- var protoExpression = this.transformAny(finder.protoExpression);
- var objectExpression;
- if (protoExpression)
- objectExpression = createObjectCreate(protoExpression);
- else
- objectExpression = createObjectLiteralExpression([]);
- expressions.unshift(createAssignmentExpression(tempVarIdentifierExpression, objectExpression));
- expressions.push(tempVarIdentifierExpression);
- return createParenExpression(createCommaExpression(expressions));
- } finally {
- this.needsAdvancedTransform = oldNeedsTransform;
- this.seenAccessors = oldSeenAccessors;
- }
- },
- transformPropertyNameAssignment: function(tree) {
- if (!this.needsAdvancedTransform)
- return $traceurRuntime.superCall(this, $ObjectLiteralTransformer.prototype, "transformPropertyNameAssignment", [tree]);
- if (isProtoName(tree.name))
- return null;
- return this.createProperty_(tree.name, {
- value: this.transformAny(tree.value),
- configurable: true,
- enumerable: true,
- writable: true
- });
- },
- transformGetAccessor: function(tree) {
- if (!this.needsAdvancedTransform)
- return $traceurRuntime.superCall(this, $ObjectLiteralTransformer.prototype, "transformGetAccessor", [tree]);
- var body = this.transformAny(tree.body);
- var func = createFunctionExpression(createEmptyParameterList(), body);
- return this.createProperty_(tree.name, {
- get: func,
- configurable: true,
- enumerable: true
- });
- },
- transformSetAccessor: function(tree) {
- if (!this.needsAdvancedTransform)
- return $traceurRuntime.superCall(this, $ObjectLiteralTransformer.prototype, "transformSetAccessor", [tree]);
- var body = this.transformAny(tree.body);
- var parameter = this.transformAny(tree.parameter);
- var parameterList = new FormalParameterList(parameter.location, [parameter]);
- var func = createFunctionExpression(parameterList, body);
- return this.createProperty_(tree.name, {
- set: func,
- configurable: true,
- enumerable: true
- });
- },
- transformPropertyMethodAssignment: function(tree) {
- var func = new FunctionExpression(tree.location, null, tree.isGenerator, this.transformAny(tree.formalParameterList), tree.typeAnnotation, [], this.transformAny(tree.functionBody));
- if (!this.needsAdvancedTransform) {
- return createPropertyNameAssignment(tree.name, func);
- }
- var expression = this.transformAny(tree.name);
- return this.createProperty_(tree.name, {
- value: func,
- configurable: true,
- enumerable: true,
- writable: true
- });
- },
- transformPropertyNameShorthand: function(tree) {
- if (!this.needsAdvancedTransform)
- return $traceurRuntime.superCall(this, $ObjectLiteralTransformer.prototype, "transformPropertyNameShorthand", [tree]);
- var expression = this.transformAny(tree.name);
- return this.createProperty_(tree.name, {
- value: new IdentifierExpression(tree.location, tree.name.identifierToken),
- configurable: true,
- enumerable: false,
- writable: true
- });
- }
- }, {}, TempVarTransformer);
- return {get ObjectLiteralTransformer() {
- return ObjectLiteralTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/PropertyNameShorthandTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/PropertyNameShorthandTransformer";
- var $__282 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- IdentifierExpression = $__282.IdentifierExpression,
- LiteralPropertyName = $__282.LiteralPropertyName,
- PropertyNameAssignment = $__282.PropertyNameAssignment;
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var PropertyNameShorthandTransformer = function PropertyNameShorthandTransformer() {
- $traceurRuntime.defaultSuperCall(this, $PropertyNameShorthandTransformer.prototype, arguments);
- };
- var $PropertyNameShorthandTransformer = PropertyNameShorthandTransformer;
- ($traceurRuntime.createClass)(PropertyNameShorthandTransformer, {transformPropertyNameShorthand: function(tree) {
- return new PropertyNameAssignment(tree.location, new LiteralPropertyName(tree.location, tree.name), new IdentifierExpression(tree.location, tree.name));
- }}, {}, ParseTreeTransformer);
- return {get PropertyNameShorthandTransformer() {
- return PropertyNameShorthandTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/RestParameterTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/RestParameterTransformer";
- var $__283 = Object.freeze(Object.defineProperties(["\n for (var ", " = [], ", " = ", ";\n ", " < arguments.length; ", "++)\n ", "[", " - ", "] = arguments[", "];"], {raw: {value: Object.freeze(["\n for (var ", " = [], ", " = ", ";\n ", " < arguments.length; ", "++)\n ", "[", " - ", "] = arguments[", "];"])}})),
- $__284 = Object.freeze(Object.defineProperties(["\n for (var ", " = [], ", " = 0;\n ", " < arguments.length; ", "++)\n ", "[", "] = arguments[", "];"], {raw: {value: Object.freeze(["\n for (var ", " = [], ", " = 0;\n ", " < arguments.length; ", "++)\n ", "[", "] = arguments[", "];"])}}));
- var FormalParameterList = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees").FormalParameterList;
- var ParameterTransformer = System.get("traceur@0.0.32/src/codegeneration/ParameterTransformer").ParameterTransformer;
- var createIdentifierToken = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory").createIdentifierToken;
- var parseStatement = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser").parseStatement;
- function hasRestParameter(formalParameterList) {
- var parameters = formalParameterList.parameters;
- return parameters.length > 0 && parameters[parameters.length - 1].isRestParameter();
- }
- function getRestParameterLiteralToken(formalParameterList) {
- var parameters = formalParameterList.parameters;
- return parameters[parameters.length - 1].parameter.identifier.identifierToken;
- }
- var RestParameterTransformer = function RestParameterTransformer() {
- $traceurRuntime.defaultSuperCall(this, $RestParameterTransformer.prototype, arguments);
- };
- var $RestParameterTransformer = RestParameterTransformer;
- ($traceurRuntime.createClass)(RestParameterTransformer, {transformFormalParameterList: function(tree) {
- var transformed = $traceurRuntime.superCall(this, $RestParameterTransformer.prototype, "transformFormalParameterList", [tree]);
- if (hasRestParameter(transformed)) {
- var parametersWithoutRestParam = new FormalParameterList(transformed.location, transformed.parameters.slice(0, -1));
- var startIndex = transformed.parameters.length - 1;
- var i = createIdentifierToken(this.getTempIdentifier());
- var name = getRestParameterLiteralToken(transformed);
- var loop;
- if (startIndex) {
- loop = parseStatement($__283, name, i, startIndex, i, i, name, i, startIndex, i);
- } else {
- loop = parseStatement($__284, name, i, i, i, name, i, i);
- }
- this.parameterStatements.push(loop);
- return parametersWithoutRestParam;
- }
- return transformed;
- }}, {}, ParameterTransformer);
- return {get RestParameterTransformer() {
- return RestParameterTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/SpreadTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/SpreadTransformer";
- var $__287 = Object.freeze(Object.defineProperties(["$traceurRuntime.toObject(", ")"], {raw: {value: Object.freeze(["$traceurRuntime.toObject(", ")"])}})),
- $__288 = Object.freeze(Object.defineProperties(["$traceurRuntime.spread(", ")"], {raw: {value: Object.freeze(["$traceurRuntime.spread(", ")"])}}));
- var $__290 = System.get("traceur@0.0.32/src/syntax/PredefinedName"),
- APPLY = $__290.APPLY,
- BIND = $__290.BIND,
- FUNCTION = $__290.FUNCTION,
- PROTOTYPE = $__290.PROTOTYPE;
- var $__290 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- MEMBER_EXPRESSION = $__290.MEMBER_EXPRESSION,
- MEMBER_LOOKUP_EXPRESSION = $__290.MEMBER_LOOKUP_EXPRESSION,
- SPREAD_EXPRESSION = $__290.SPREAD_EXPRESSION;
- var TempVarTransformer = System.get("traceur@0.0.32/src/codegeneration/TempVarTransformer").TempVarTransformer;
- var $__290 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createArgumentList = $__290.createArgumentList,
- createArrayLiteralExpression = $__290.createArrayLiteralExpression,
- createAssignmentExpression = $__290.createAssignmentExpression,
- createCallExpression = $__290.createCallExpression,
- createEmptyArgumentList = $__290.createEmptyArgumentList,
- createIdentifierExpression = $__290.createIdentifierExpression,
- createMemberExpression = $__290.createMemberExpression,
- createMemberLookupExpression = $__290.createMemberLookupExpression,
- createNewExpression = $__290.createNewExpression,
- createNullLiteral = $__290.createNullLiteral,
- createParenExpression = $__290.createParenExpression;
- var parseExpression = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser").parseExpression;
- function hasSpreadMember(trees) {
- return trees.some((function(tree) {
- return tree && tree.type == SPREAD_EXPRESSION;
- }));
- }
- var SpreadTransformer = function SpreadTransformer() {
- $traceurRuntime.defaultSuperCall(this, $SpreadTransformer.prototype, arguments);
- };
- var $SpreadTransformer = SpreadTransformer;
- ($traceurRuntime.createClass)(SpreadTransformer, {
- createArrayFromElements_: function(elements, needsNewArray) {
- var length = elements.length;
- if (length === 1 && !needsNewArray) {
- var args = createArgumentList(this.transformAny(elements[0].expression));
- return parseExpression($__287, args);
- }
- var args = [];
- var lastArray;
- for (var i = 0; i < length; i++) {
- if (elements[i] && elements[i].type === SPREAD_EXPRESSION) {
- if (lastArray) {
- args.push(createArrayLiteralExpression(lastArray));
- lastArray = null;
- }
- args.push(this.transformAny(elements[i].expression));
- } else {
- if (!lastArray)
- lastArray = [];
- lastArray.push(this.transformAny(elements[i]));
- }
- }
- if (lastArray)
- args.push(createArrayLiteralExpression(lastArray));
- return parseExpression($__288, createArgumentList(args));
- },
- desugarCallSpread_: function(tree) {
- var operand = this.transformAny(tree.operand);
- var functionObject,
- contextObject;
- this.pushTempVarState();
- if (operand.type == MEMBER_EXPRESSION) {
- var tempIdent = createIdentifierExpression(this.addTempVar());
- var parenExpression = createParenExpression(createAssignmentExpression(tempIdent, operand.operand));
- var memberName = operand.memberName;
- contextObject = tempIdent;
- functionObject = createMemberExpression(parenExpression, memberName);
- } else if (tree.operand.type == MEMBER_LOOKUP_EXPRESSION) {
- var tempIdent = createIdentifierExpression(this.addTempVar());
- var parenExpression = createParenExpression(createAssignmentExpression(tempIdent, operand.operand));
- var memberExpression = this.transformAny(operand.memberExpression);
- contextObject = tempIdent;
- functionObject = createMemberLookupExpression(parenExpression, memberExpression);
- } else {
- contextObject = createNullLiteral();
- functionObject = operand;
- }
- this.popTempVarState();
- var arrayExpression = this.createArrayFromElements_(tree.args.args, false);
- return createCallExpression(createMemberExpression(functionObject, APPLY), createArgumentList(contextObject, arrayExpression));
- },
- desugarNewSpread_: function(tree) {
- var arrayExpression = $traceurRuntime.spread([createNullLiteral()], tree.args.args);
- arrayExpression = this.createArrayFromElements_(arrayExpression, false);
- return createNewExpression(createParenExpression(createCallExpression(createMemberExpression(FUNCTION, PROTOTYPE, BIND, APPLY), createArgumentList(this.transformAny(tree.operand), arrayExpression))), createEmptyArgumentList());
- },
- transformArrayLiteralExpression: function(tree) {
- if (hasSpreadMember(tree.elements)) {
- return this.createArrayFromElements_(tree.elements, true);
- }
- return $traceurRuntime.superCall(this, $SpreadTransformer.prototype, "transformArrayLiteralExpression", [tree]);
- },
- transformCallExpression: function(tree) {
- if (hasSpreadMember(tree.args.args)) {
- return this.desugarCallSpread_(tree);
- }
- return $traceurRuntime.superCall(this, $SpreadTransformer.prototype, "transformCallExpression", [tree]);
- },
- transformNewExpression: function(tree) {
- if (tree.args != null && hasSpreadMember(tree.args.args)) {
- return this.desugarNewSpread_(tree);
- }
- return $traceurRuntime.superCall(this, $SpreadTransformer.prototype, "transformNewExpression", [tree]);
- }
- }, {}, TempVarTransformer);
- return {get SpreadTransformer() {
- return SpreadTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/SymbolTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/SymbolTransformer";
- var $__291 = Object.freeze(Object.defineProperties(["$traceurRuntime.toProperty(", ") in ", ""], {raw: {value: Object.freeze(["$traceurRuntime.toProperty(", ") in ", ""])}})),
- $__292 = Object.freeze(Object.defineProperties(["$traceurRuntime.setProperty(", ",\n ", ", ", ")"], {raw: {value: Object.freeze(["$traceurRuntime.setProperty(", ",\n ", ", ", ")"])}})),
- $__293 = Object.freeze(Object.defineProperties(["", "[$traceurRuntime.toProperty(", ")]"], {raw: {value: Object.freeze(["", "[$traceurRuntime.toProperty(", ")]"])}})),
- $__294 = Object.freeze(Object.defineProperties(["$traceurRuntime.typeof(", ")"], {raw: {value: Object.freeze(["$traceurRuntime.typeof(", ")"])}})),
- $__295 = Object.freeze(Object.defineProperties(["(typeof ", " === 'undefined' ?\n 'undefined' : ", ")"], {raw: {value: Object.freeze(["(typeof ", " === 'undefined' ?\n 'undefined' : ", ")"])}}));
- var $__297 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- BinaryOperator = $__297.BinaryOperator,
- MemberLookupExpression = $__297.MemberLookupExpression,
- UnaryExpression = $__297.UnaryExpression;
- var ExplodeExpressionTransformer = System.get("traceur@0.0.32/src/codegeneration/ExplodeExpressionTransformer").ExplodeExpressionTransformer;
- var $__297 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- IDENTIFIER_EXPRESSION = $__297.IDENTIFIER_EXPRESSION,
- LITERAL_EXPRESSION = $__297.LITERAL_EXPRESSION,
- MEMBER_LOOKUP_EXPRESSION = $__297.MEMBER_LOOKUP_EXPRESSION,
- UNARY_EXPRESSION = $__297.UNARY_EXPRESSION;
- var TempVarTransformer = System.get("traceur@0.0.32/src/codegeneration/TempVarTransformer").TempVarTransformer;
- var $__297 = System.get("traceur@0.0.32/src/syntax/TokenType"),
- EQUAL = $__297.EQUAL,
- EQUAL_EQUAL = $__297.EQUAL_EQUAL,
- EQUAL_EQUAL_EQUAL = $__297.EQUAL_EQUAL_EQUAL,
- IN = $__297.IN,
- NOT_EQUAL = $__297.NOT_EQUAL,
- NOT_EQUAL_EQUAL = $__297.NOT_EQUAL_EQUAL,
- STRING = $__297.STRING,
- TYPEOF = $__297.TYPEOF;
- var createParenExpression = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory").createParenExpression;
- var parseExpression = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser").parseExpression;
- var ExplodeSymbolExpression = function ExplodeSymbolExpression() {
- $traceurRuntime.defaultSuperCall(this, $ExplodeSymbolExpression.prototype, arguments);
- };
- var $ExplodeSymbolExpression = ExplodeSymbolExpression;
- ($traceurRuntime.createClass)(ExplodeSymbolExpression, {
- transformArrowFunctionExpression: function(tree) {
- return tree;
- },
- transformClassExpression: function(tree) {
- return tree;
- },
- transformFunctionBody: function(tree) {
- return tree;
- }
- }, {}, ExplodeExpressionTransformer);
- function isEqualityExpression(tree) {
- switch (tree.operator.type) {
- case EQUAL_EQUAL:
- case EQUAL_EQUAL_EQUAL:
- case NOT_EQUAL:
- case NOT_EQUAL_EQUAL:
- return true;
- }
- return false;
- }
- function isTypeof(tree) {
- return tree.type === UNARY_EXPRESSION && tree.operator.type === TYPEOF;
- }
- function isSafeTypeofString(tree) {
- if (tree.type !== LITERAL_EXPRESSION)
- return false;
- var value = tree.literalToken.processedValue;
- switch (value) {
- case 'symbol':
- case 'object':
- return false;
- }
- return true;
- }
- var SymbolTransformer = function SymbolTransformer() {
- $traceurRuntime.defaultSuperCall(this, $SymbolTransformer.prototype, arguments);
- };
- var $SymbolTransformer = SymbolTransformer;
- ($traceurRuntime.createClass)(SymbolTransformer, {
- transformTypeofOperand_: function(tree) {
- var operand = this.transformAny(tree.operand);
- return new UnaryExpression(tree.location, tree.operator, operand);
- },
- transformBinaryOperator: function(tree) {
- if (tree.operator.type === IN) {
- var name = this.transformAny(tree.left);
- var object = this.transformAny(tree.right);
- if (name.type === LITERAL_EXPRESSION)
- return new BinaryOperator(tree.location, name, tree.operator, object);
- return parseExpression($__291, name, object);
- }
- if (isEqualityExpression(tree)) {
- if (isTypeof(tree.left) && isSafeTypeofString(tree.right)) {
- var left = this.transformTypeofOperand_(tree.left);
- var right = tree.right;
- return new BinaryOperator(tree.location, left, tree.operator, right);
- }
- if (isTypeof(tree.right) && isSafeTypeofString(tree.left)) {
- var left = tree.left;
- var right = this.transformTypeofOperand_(tree.right);
- return new BinaryOperator(tree.location, left, tree.operator, right);
- }
- }
- if (tree.left.type === MEMBER_LOOKUP_EXPRESSION && tree.operator.isAssignmentOperator()) {
- if (tree.operator.type !== EQUAL) {
- var exploded = new ExplodeSymbolExpression(this).transformAny(tree);
- return this.transformAny(createParenExpression(exploded));
- }
- var operand = this.transformAny(tree.left.operand);
- var memberExpression = this.transformAny(tree.left.memberExpression);
- var value = this.transformAny(tree.right);
- return parseExpression($__292, operand, memberExpression, value);
- }
- return $traceurRuntime.superCall(this, $SymbolTransformer.prototype, "transformBinaryOperator", [tree]);
- },
- transformMemberLookupExpression: function(tree) {
- var operand = this.transformAny(tree.operand);
- var memberExpression = this.transformAny(tree.memberExpression);
- if (memberExpression.type === LITERAL_EXPRESSION && memberExpression.literalToken.type !== STRING) {
- return new MemberLookupExpression(tree.location, operand, memberExpression);
- }
- return parseExpression($__293, operand, memberExpression);
- },
- transformUnaryExpression: function(tree) {
- if (tree.operator.type !== TYPEOF)
- return $traceurRuntime.superCall(this, $SymbolTransformer.prototype, "transformUnaryExpression", [tree]);
- var operand = this.transformAny(tree.operand);
- var expression = parseExpression($__294, operand);
- if (operand.type === IDENTIFIER_EXPRESSION) {
- return parseExpression($__295, operand, expression);
- }
- return expression;
- }
- }, {}, TempVarTransformer);
- return {get SymbolTransformer() {
- return SymbolTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/TemplateLiteralTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/TemplateLiteralTransformer";
- var $__299 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- BINARY_OPERATOR = $__299.BINARY_OPERATOR,
- COMMA_EXPRESSION = $__299.COMMA_EXPRESSION,
- CONDITIONAL_EXPRESSION = $__299.CONDITIONAL_EXPRESSION,
- TEMPLATE_LITERAL_PORTION = $__299.TEMPLATE_LITERAL_PORTION;
- var $__299 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- LiteralExpression = $__299.LiteralExpression,
- ParenExpression = $__299.ParenExpression;
- var LiteralToken = System.get("traceur@0.0.32/src/syntax/LiteralToken").LiteralToken;
- var $__299 = System.get("traceur@0.0.32/src/syntax/PredefinedName"),
- DEFINE_PROPERTIES = $__299.DEFINE_PROPERTIES,
- OBJECT = $__299.OBJECT,
- RAW = $__299.RAW;
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var TempVarTransformer = System.get("traceur@0.0.32/src/codegeneration/TempVarTransformer").TempVarTransformer;
- var $__299 = System.get("traceur@0.0.32/src/syntax/TokenType"),
- PERCENT = $__299.PERCENT,
- PLUS = $__299.PLUS,
- SLASH = $__299.SLASH,
- STAR = $__299.STAR,
- STRING = $__299.STRING;
- var $__299 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createArgumentList = $__299.createArgumentList,
- createArrayLiteralExpression = $__299.createArrayLiteralExpression,
- createBinaryOperator = $__299.createBinaryOperator,
- createCallExpression = $__299.createCallExpression,
- createIdentifierExpression = $__299.createIdentifierExpression,
- createMemberExpression = $__299.createMemberExpression,
- createObjectFreeze = $__299.createObjectFreeze,
- createObjectLiteralExpression = $__299.createObjectLiteralExpression,
- createOperatorToken = $__299.createOperatorToken,
- createPropertyDescriptor = $__299.createPropertyDescriptor,
- createPropertyNameAssignment = $__299.createPropertyNameAssignment,
- createStringLiteral = $__299.createStringLiteral;
- function createCallSiteIdObject(tree) {
- var elements = tree.elements;
- return createObjectFreeze(createCallExpression(createMemberExpression(OBJECT, DEFINE_PROPERTIES), createArgumentList(createCookedStringArray(elements), createObjectLiteralExpression(createPropertyNameAssignment(RAW, createPropertyDescriptor({value: createObjectFreeze(createRawStringArray(elements))}))))));
- }
- function maybeAddEmptyStringAtEnd(elements, items) {
- var length = elements.length;
- if (!length || elements[length - 1].type !== TEMPLATE_LITERAL_PORTION)
- items.push(createStringLiteral(''));
- }
- function createRawStringArray(elements) {
- var items = [];
- for (var i = 0; i < elements.length; i += 2) {
- var str = replaceRaw(JSON.stringify(elements[i].value.value));
- var loc = elements[i].location;
- var expr = new LiteralExpression(loc, new LiteralToken(STRING, str, loc));
- items.push(expr);
- }
- maybeAddEmptyStringAtEnd(elements, items);
- return createArrayLiteralExpression(items);
- }
- function createCookedStringLiteralExpression(tree) {
- var str = cookString(tree.value.value);
- var loc = tree.location;
- return new LiteralExpression(loc, new LiteralToken(STRING, str, loc));
- }
- function createCookedStringArray(elements) {
- var items = [];
- for (var i = 0; i < elements.length; i += 2) {
- items.push(createCookedStringLiteralExpression(elements[i]));
- }
- maybeAddEmptyStringAtEnd(elements, items);
- return createArrayLiteralExpression(items);
- }
- function replaceRaw(s) {
- return s.replace(/\u2028|\u2029/g, function(c) {
- switch (c) {
- case '\u2028':
- return '\\u2028';
- case '\u2029':
- return '\\u2029';
- default:
- throw Error('Not reachable');
- }
- });
- }
- function cookString(s) {
- var sb = ['"'];
- var i = 0,
- k = 1,
- c,
- c2;
- while (i < s.length) {
- c = s[i++];
- switch (c) {
- case '\\':
- c2 = s[i++];
- switch (c2) {
- case '\n':
- case '\u2028':
- case '\u2029':
- break;
- case '\r':
- if (s[i + 1] === '\n') {
- i++;
- }
- break;
- default:
- sb[k++] = c;
- sb[k++] = c2;
- }
- break;
- case '"':
- sb[k++] = '\\"';
- break;
- case '\n':
- sb[k++] = '\\n';
- break;
- case '\r':
- sb[k++] = '\\r';
- break;
- case '\t':
- sb[k++] = '\\t';
- break;
- case '\f':
- sb[k++] = '\\f';
- break;
- case '\b':
- sb[k++] = '\\b';
- break;
- case '\u2028':
- sb[k++] = '\\u2028';
- break;
- case '\u2029':
- sb[k++] = '\\u2029';
- break;
- default:
- sb[k++] = c;
- }
- }
- sb[k++] = '"';
- return sb.join('');
- }
- var TemplateLiteralTransformer = function TemplateLiteralTransformer() {
- $traceurRuntime.defaultSuperCall(this, $TemplateLiteralTransformer.prototype, arguments);
- };
- var $TemplateLiteralTransformer = TemplateLiteralTransformer;
- ($traceurRuntime.createClass)(TemplateLiteralTransformer, {
- transformFunctionBody: function(tree) {
- return ParseTreeTransformer.prototype.transformFunctionBody.call(this, tree);
- },
- transformTemplateLiteralExpression: function(tree) {
- if (!tree.operand)
- return this.createDefaultTemplateLiteral(tree);
- var operand = this.transformAny(tree.operand);
- var elements = tree.elements;
- var callsiteIdObject = createCallSiteIdObject(tree);
- var idName = this.addTempVar(callsiteIdObject);
- var args = [createIdentifierExpression(idName)];
- for (var i = 1; i < elements.length; i += 2) {
- args.push(this.transformAny(elements[i]));
- }
- return createCallExpression(operand, createArgumentList(args));
- },
- transformTemplateSubstitution: function(tree) {
- var transformedTree = this.transformAny(tree.expression);
- switch (transformedTree.type) {
- case BINARY_OPERATOR:
- switch (transformedTree.operator.type) {
- case STAR:
- case PERCENT:
- case SLASH:
- return transformedTree;
- }
- case COMMA_EXPRESSION:
- case CONDITIONAL_EXPRESSION:
- return new ParenExpression(null, transformedTree);
- }
- return transformedTree;
- },
- transformTemplateLiteralPortion: function(tree) {
- return createCookedStringLiteralExpression(tree);
- },
- createDefaultTemplateLiteral: function(tree) {
- var length = tree.elements.length;
- if (length === 0) {
- var loc = tree.location;
- return new LiteralExpression(loc, new LiteralToken(STRING, '""', loc));
- }
- var firstNonEmpty = tree.elements[0].value.value === '' ? -1 : 0;
- var binaryExpression = this.transformAny(tree.elements[0]);
- if (length == 1)
- return binaryExpression;
- var plusToken = createOperatorToken(PLUS);
- for (var i = 1; i < length; i++) {
- var element = tree.elements[i];
- if (element.type === TEMPLATE_LITERAL_PORTION) {
- if (element.value.value === '')
- continue;
- else if (firstNonEmpty < 0 && i === 2)
- binaryExpression = binaryExpression.right;
- }
- var transformedTree = this.transformAny(tree.elements[i]);
- binaryExpression = createBinaryOperator(binaryExpression, plusToken, transformedTree);
- }
- return new ParenExpression(null, binaryExpression);
- }
- }, {}, TempVarTransformer);
- return {get TemplateLiteralTransformer() {
- return TemplateLiteralTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/TypeAssertionTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/TypeAssertionTransformer";
- var $__300 = Object.freeze(Object.defineProperties(["assert.type(", ", ", ")"], {raw: {value: Object.freeze(["assert.type(", ", ", ")"])}})),
- $__301 = Object.freeze(Object.defineProperties(["assert.argumentTypes(", ")"], {raw: {value: Object.freeze(["assert.argumentTypes(", ")"])}})),
- $__302 = Object.freeze(Object.defineProperties(["return assert.returnType((", "), ", ")"], {raw: {value: Object.freeze(["return assert.returnType((", "), ", ")"])}})),
- $__303 = Object.freeze(Object.defineProperties(["$traceurRuntime.type.any"], {raw: {value: Object.freeze(["$traceurRuntime.type.any"])}}));
- var $__305 = System.get("traceur@0.0.32/src/syntax/trees/ParseTreeType"),
- BINDING_ELEMENT = $__305.BINDING_ELEMENT,
- REST_PARAMETER = $__305.REST_PARAMETER;
- var $__305 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- ImportDeclaration = $__305.ImportDeclaration,
- ImportSpecifier = $__305.ImportSpecifier,
- ImportSpecifierSet = $__305.ImportSpecifierSet,
- Module = $__305.Module,
- ModuleSpecifier = $__305.ModuleSpecifier,
- ReturnStatement = $__305.ReturnStatement,
- Script = $__305.Script,
- VariableDeclaration = $__305.VariableDeclaration;
- var $__305 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createArgumentList = $__305.createArgumentList,
- createExpressionStatement = $__305.createExpressionStatement,
- createIdentifierExpression = $__305.createIdentifierExpression,
- createIdentifierToken = $__305.createIdentifierToken,
- createStringLiteralToken = $__305.createStringLiteralToken;
- var $__305 = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser"),
- parseExpression = $__305.parseExpression,
- parseStatement = $__305.parseStatement;
- var ParameterTransformer = System.get("traceur@0.0.32/src/codegeneration/ParameterTransformer").ParameterTransformer;
- var options = System.get("traceur@0.0.32/src/options").options;
- var TypeAssertionTransformer = function TypeAssertionTransformer(identifierGenerator) {
- $traceurRuntime.superCall(this, $TypeAssertionTransformer.prototype, "constructor", [identifierGenerator]);
- this.returnTypeStack_ = [];
- this.parametersStack_ = [];
- this.assertionAdded_ = false;
- };
- var $TypeAssertionTransformer = TypeAssertionTransformer;
- ($traceurRuntime.createClass)(TypeAssertionTransformer, {
- transformScript: function(tree) {
- return this.prependAssertionImport_($traceurRuntime.superCall(this, $TypeAssertionTransformer.prototype, "transformScript", [tree]), Script);
- },
- transformModule: function(tree) {
- return this.prependAssertionImport_($traceurRuntime.superCall(this, $TypeAssertionTransformer.prototype, "transformModule", [tree]), Module);
- },
- transformVariableDeclaration: function(tree) {
- if (tree.typeAnnotation && tree.initialiser) {
- var assert = parseExpression($__300, tree.initialiser, tree.typeAnnotation);
- tree = new VariableDeclaration(tree.location, tree.lvalue, tree.typeAnnotation, assert);
- this.assertionAdded_ = true;
- }
- return $traceurRuntime.superCall(this, $TypeAssertionTransformer.prototype, "transformVariableDeclaration", [tree]);
- },
- transformFormalParameterList: function(tree) {
- this.parametersStack_.push({
- atLeastOneParameterTyped: false,
- arguments: []
- });
- var transformed = $traceurRuntime.superCall(this, $TypeAssertionTransformer.prototype, "transformFormalParameterList", [tree]);
- var params = this.parametersStack_.pop();
- if (params.atLeastOneParameterTyped) {
- var argumentList = createArgumentList(params.arguments);
- var assertStatement = parseStatement($__301, argumentList);
- this.parameterStatements.push(assertStatement);
- this.assertionAdded_ = true;
- }
- return transformed;
- },
- transformFormalParameter: function(tree) {
- var transformed = $traceurRuntime.superCall(this, $TypeAssertionTransformer.prototype, "transformFormalParameter", [tree]);
- switch (transformed.parameter.type) {
- case BINDING_ELEMENT:
- this.transformBindingElementParameter_(transformed.parameter, transformed.typeAnnotation);
- break;
- case REST_PARAMETER:
- break;
- }
- return transformed;
- },
- transformGetAccessor: function(tree) {
- this.pushReturnType_(tree.typeAnnotation);
- tree = $traceurRuntime.superCall(this, $TypeAssertionTransformer.prototype, "transformGetAccessor", [tree]);
- this.popReturnType_();
- return tree;
- },
- transformPropertyMethodAssignment: function(tree) {
- this.pushReturnType_(tree.typeAnnotation);
- tree = $traceurRuntime.superCall(this, $TypeAssertionTransformer.prototype, "transformPropertyMethodAssignment", [tree]);
- this.popReturnType_();
- return tree;
- },
- transformFunctionDeclaration: function(tree) {
- this.pushReturnType_(tree.typeAnnotation);
- tree = $traceurRuntime.superCall(this, $TypeAssertionTransformer.prototype, "transformFunctionDeclaration", [tree]);
- this.popReturnType_();
- return tree;
- },
- transformFunctionExpression: function(tree) {
- this.pushReturnType_(tree.typeAnnotation);
- tree = $traceurRuntime.superCall(this, $TypeAssertionTransformer.prototype, "transformFunctionExpression", [tree]);
- this.popReturnType_();
- return tree;
- },
- transformReturnStatement: function(tree) {
- tree = $traceurRuntime.superCall(this, $TypeAssertionTransformer.prototype, "transformReturnStatement", [tree]);
- if (this.returnType_ && tree.expression) {
- this.assertionAdded_ = true;
- return parseStatement($__302, tree.expression, this.returnType_);
- }
- return tree;
- },
- transformBindingElementParameter_: function(element, typeAnnotation) {
- if (!element.binding.isPattern()) {
- if (typeAnnotation) {
- this.paramTypes_.atLeastOneParameterTyped = true;
- } else {
- typeAnnotation = parseExpression($__303);
- }
- this.paramTypes_.arguments.push(createIdentifierExpression(element.binding.identifierToken), typeAnnotation);
- return;
- }
- },
- pushReturnType_: function(typeAnnotation) {
- this.returnTypeStack_.push(this.transformAny(typeAnnotation));
- },
- prependAssertionImport_: function(tree, Ctor) {
- if (!this.assertionAdded_ || options.typeAssertionModule === null)
- return tree;
- var importStatement = new ImportDeclaration(null, new ImportSpecifierSet(null, [new ImportSpecifier(null, createIdentifierToken('assert'), null)]), new ModuleSpecifier(null, createStringLiteralToken(options.typeAssertionModule)));
- tree = new Ctor(tree.location, $traceurRuntime.spread([importStatement], tree.scriptItemList), tree.moduleName);
- return tree;
- },
- popReturnType_: function() {
- return this.returnTypeStack_.pop();
- },
- get returnType_() {
- return this.returnTypeStack_.length > 0 ? this.returnTypeStack_[this.returnTypeStack_.length - 1] : null;
- },
- get paramTypes_() {
- return this.parametersStack_[this.parametersStack_.length - 1];
- }
- }, {}, ParameterTransformer);
- return {get TypeAssertionTransformer() {
- return TypeAssertionTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/TypeToExpressionTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/TypeToExpressionTransformer";
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var $__307 = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory"),
- createIdentifierExpression = $__307.createIdentifierExpression,
- createMemberExpression = $__307.createMemberExpression;
- var TypeToExpressionTransformer = function TypeToExpressionTransformer() {
- $traceurRuntime.defaultSuperCall(this, $TypeToExpressionTransformer.prototype, arguments);
- };
- var $TypeToExpressionTransformer = TypeToExpressionTransformer;
- ($traceurRuntime.createClass)(TypeToExpressionTransformer, {
- transformTypeName: function(tree) {
- return createIdentifierExpression(tree.name);
- },
- transformPredefinedType: function(tree) {
- return createMemberExpression('$traceurRuntime', 'type', tree.typeToken);
- }
- }, {}, ParseTreeTransformer);
- return {get TypeToExpressionTransformer() {
- return TypeToExpressionTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/TypeTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/TypeTransformer";
- var $__309 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- FormalParameter = $__309.FormalParameter,
- FunctionDeclaration = $__309.FunctionDeclaration,
- FunctionExpression = $__309.FunctionExpression,
- GetAccessor = $__309.GetAccessor,
- PropertyMethodAssignment = $__309.PropertyMethodAssignment,
- VariableDeclaration = $__309.VariableDeclaration;
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var TypeTransformer = function TypeTransformer() {
- $traceurRuntime.defaultSuperCall(this, $TypeTransformer.prototype, arguments);
- };
- var $TypeTransformer = TypeTransformer;
- ($traceurRuntime.createClass)(TypeTransformer, {
- transformVariableDeclaration: function(tree) {
- if (tree.typeAnnotation) {
- tree = new VariableDeclaration(tree.location, tree.lvalue, null, tree.initialiser);
- }
- return $traceurRuntime.superCall(this, $TypeTransformer.prototype, "transformVariableDeclaration", [tree]);
- },
- transformFormalParameter: function(tree) {
- if (tree.typeAnnotation !== null)
- return new FormalParameter(tree.location, tree.parameter, null, []);
- return tree;
- },
- transformFunctionDeclaration: function(tree) {
- if (tree.typeAnnotation) {
- tree = new FunctionDeclaration(tree.location, tree.name, tree.isGenerator, tree.formalParameterList, null, tree.annotations, tree.functionBody);
- }
- return $traceurRuntime.superCall(this, $TypeTransformer.prototype, "transformFunctionDeclaration", [tree]);
- },
- transformFunctionExpression: function(tree) {
- if (tree.typeAnnotation) {
- tree = new FunctionExpression(tree.location, tree.name, tree.isGenerator, tree.formalParameterList, null, tree.annotations, tree.functionBody);
- }
- return $traceurRuntime.superCall(this, $TypeTransformer.prototype, "transformFunctionExpression", [tree]);
- },
- transformPropertyMethodAssignment: function(tree) {
- if (tree.typeAnnotation) {
- tree = new PropertyMethodAssignment(tree.location, tree.isStatic, tree.isGenerator, tree.name, tree.formalParameterList, null, tree.annotations, tree.functionBody);
- }
- return $traceurRuntime.superCall(this, $TypeTransformer.prototype, "transformPropertyMethodAssignment", [tree]);
- },
- transformGetAccessor: function(tree) {
- if (tree.typeAnnotation) {
- tree = new GetAccessor(tree.location, tree.isStatic, tree.name, null, tree.annotations, tree.body);
- }
- return $traceurRuntime.superCall(this, $TypeTransformer.prototype, "transformGetAccessor", [tree]);
- }
- }, {}, ParseTreeTransformer);
- return {get TypeTransformer() {
- return TypeTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/UniqueIdentifierGenerator", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/UniqueIdentifierGenerator";
- var UniqueIdentifierGenerator = function UniqueIdentifierGenerator() {
- this.identifierIndex = 0;
- };
- ($traceurRuntime.createClass)(UniqueIdentifierGenerator, {generateUniqueIdentifier: function() {
- return ("$__" + this.identifierIndex++);
- }}, {});
- return {get UniqueIdentifierGenerator() {
- return UniqueIdentifierGenerator;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/FromOptionsTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/FromOptionsTransformer";
- var AmdTransformer = System.get("traceur@0.0.32/src/codegeneration/AmdTransformer").AmdTransformer;
- var AnnotationsTransformer = System.get("traceur@0.0.32/src/codegeneration/AnnotationsTransformer").AnnotationsTransformer;
- var ArrayComprehensionTransformer = System.get("traceur@0.0.32/src/codegeneration/ArrayComprehensionTransformer").ArrayComprehensionTransformer;
- var ArrowFunctionTransformer = System.get("traceur@0.0.32/src/codegeneration/ArrowFunctionTransformer").ArrowFunctionTransformer;
- var BlockBindingTransformer = System.get("traceur@0.0.32/src/codegeneration/BlockBindingTransformer").BlockBindingTransformer;
- var ClassTransformer = System.get("traceur@0.0.32/src/codegeneration/ClassTransformer").ClassTransformer;
- var CommonJsModuleTransformer = System.get("traceur@0.0.32/src/codegeneration/CommonJsModuleTransformer").CommonJsModuleTransformer;
- var DefaultParametersTransformer = System.get("traceur@0.0.32/src/codegeneration/DefaultParametersTransformer").DefaultParametersTransformer;
- var DestructuringTransformer = System.get("traceur@0.0.32/src/codegeneration/DestructuringTransformer").DestructuringTransformer;
- var ForOfTransformer = System.get("traceur@0.0.32/src/codegeneration/ForOfTransformer").ForOfTransformer;
- var FreeVariableChecker = System.get("traceur@0.0.32/src/semantics/FreeVariableChecker").FreeVariableChecker;
- var GeneratorComprehensionTransformer = System.get("traceur@0.0.32/src/codegeneration/GeneratorComprehensionTransformer").GeneratorComprehensionTransformer;
- var GeneratorTransformPass = System.get("traceur@0.0.32/src/codegeneration/GeneratorTransformPass").GeneratorTransformPass;
- var InlineModuleTransformer = System.get("traceur@0.0.32/src/codegeneration/InlineModuleTransformer").InlineModuleTransformer;
- var ModuleTransformer = System.get("traceur@0.0.32/src/codegeneration/ModuleTransformer").ModuleTransformer;
- var MultiTransformer = System.get("traceur@0.0.32/src/codegeneration/MultiTransformer").MultiTransformer;
- var NumericLiteralTransformer = System.get("traceur@0.0.32/src/codegeneration/NumericLiteralTransformer").NumericLiteralTransformer;
- var ObjectLiteralTransformer = System.get("traceur@0.0.32/src/codegeneration/ObjectLiteralTransformer").ObjectLiteralTransformer;
- var ObjectMap = System.get("traceur@0.0.32/src/util/ObjectMap").ObjectMap;
- var ParseTreeValidator = System.get("traceur@0.0.32/src/syntax/ParseTreeValidator").ParseTreeValidator;
- var PropertyNameShorthandTransformer = System.get("traceur@0.0.32/src/codegeneration/PropertyNameShorthandTransformer").PropertyNameShorthandTransformer;
- var InstantiateModuleTransformer = System.get("traceur@0.0.32/src/codegeneration/InstantiateModuleTransformer").InstantiateModuleTransformer;
- var RestParameterTransformer = System.get("traceur@0.0.32/src/codegeneration/RestParameterTransformer").RestParameterTransformer;
- var SpreadTransformer = System.get("traceur@0.0.32/src/codegeneration/SpreadTransformer").SpreadTransformer;
- var SymbolTransformer = System.get("traceur@0.0.32/src/codegeneration/SymbolTransformer").SymbolTransformer;
- var TemplateLiteralTransformer = System.get("traceur@0.0.32/src/codegeneration/TemplateLiteralTransformer").TemplateLiteralTransformer;
- var TypeTransformer = System.get("traceur@0.0.32/src/codegeneration/TypeTransformer").TypeTransformer;
- var TypeAssertionTransformer = System.get("traceur@0.0.32/src/codegeneration/TypeAssertionTransformer").TypeAssertionTransformer;
- var TypeToExpressionTransformer = System.get("traceur@0.0.32/src/codegeneration/TypeToExpressionTransformer").TypeToExpressionTransformer;
- var UniqueIdentifierGenerator = System.get("traceur@0.0.32/src/codegeneration/UniqueIdentifierGenerator").UniqueIdentifierGenerator;
- var $__313 = System.get("traceur@0.0.32/src/options"),
- options = $__313.options,
- transformOptions = $__313.transformOptions;
- var FromOptionsTransformer = function FromOptionsTransformer(reporter) {
- var idGenerator = arguments[1] !== (void 0) ? arguments[1] : new UniqueIdentifierGenerator();
- var $__311 = this;
- $traceurRuntime.superCall(this, $FromOptionsTransformer.prototype, "constructor", [reporter, options.validate]);
- var append = (function(transformer) {
- $__311.append((function(tree) {
- return new transformer(idGenerator, reporter).transformAny(tree);
- }));
- });
- if (transformOptions.numericLiterals)
- append(NumericLiteralTransformer);
- if (transformOptions.templateLiterals)
- append(TemplateLiteralTransformer);
- if (options.types) {
- append(TypeToExpressionTransformer);
- }
- if (transformOptions.annotations)
- append(AnnotationsTransformer);
- if (options.typeAssertions)
- append(TypeAssertionTransformer);
- if (transformOptions.modules) {
- switch (transformOptions.modules) {
- case 'commonjs':
- append(CommonJsModuleTransformer);
- break;
- case 'amd':
- append(AmdTransformer);
- break;
- case 'inline':
- append(InlineModuleTransformer);
- break;
- case 'instantiate':
- append(InstantiateModuleTransformer);
- break;
- default:
- append(ModuleTransformer);
- }
- }
- if (transformOptions.arrowFunctions)
- append(ArrowFunctionTransformer);
- if (transformOptions.classes)
- append(ClassTransformer);
- if (transformOptions.propertyNameShorthand)
- append(PropertyNameShorthandTransformer);
- if (transformOptions.propertyMethods || transformOptions.computedPropertyNames) {
- append(ObjectLiteralTransformer);
- }
- if (transformOptions.generatorComprehension)
- append(GeneratorComprehensionTransformer);
- if (transformOptions.arrayComprehension)
- append(ArrayComprehensionTransformer);
- if (transformOptions.forOf)
- append(ForOfTransformer);
- if (transformOptions.restParameters)
- append(RestParameterTransformer);
- if (transformOptions.defaultParameters)
- append(DefaultParametersTransformer);
- if (transformOptions.destructuring)
- append(DestructuringTransformer);
- if (transformOptions.types)
- append(TypeTransformer);
- if (transformOptions.spread)
- append(SpreadTransformer);
- if (transformOptions.blockBinding)
- append(BlockBindingTransformer);
- if (transformOptions.generators || transformOptions.deferredFunctions)
- append(GeneratorTransformPass);
- if (transformOptions.symbols)
- append(SymbolTransformer);
- if (options.freeVariableChecker) {
- this.append((function(tree) {
- FreeVariableChecker.checkScript(reporter, tree);
- return tree;
- }));
- }
- };
- var $FromOptionsTransformer = FromOptionsTransformer;
- ($traceurRuntime.createClass)(FromOptionsTransformer, {}, {}, MultiTransformer);
- return {get FromOptionsTransformer() {
- return FromOptionsTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/module/AttachModuleNameTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/module/AttachModuleNameTransformer";
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var $__315 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- Module = $__315.Module,
- Script = $__315.Script;
- var AttachModuleNameTransformer = function AttachModuleNameTransformer(moduleName) {
- this.moduleName_ = moduleName;
- };
- ($traceurRuntime.createClass)(AttachModuleNameTransformer, {
- transformModule: function(tree) {
- return new Module(tree.location, tree.scriptItemList, this.moduleName_);
- },
- transformScript: function(tree) {
- return new Script(tree.location, tree.scriptItemList, this.moduleName_);
- }
- }, {}, ParseTreeTransformer);
- return {get AttachModuleNameTransformer() {
- return AttachModuleNameTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/module/ValidationVisitor", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/module/ValidationVisitor";
- var ModuleVisitor = System.get("traceur@0.0.32/src/codegeneration/module/ModuleVisitor").ModuleVisitor;
- var ValidationVisitor = function ValidationVisitor() {
- $traceurRuntime.defaultSuperCall(this, $ValidationVisitor.prototype, arguments);
- };
- var $ValidationVisitor = ValidationVisitor;
- ($traceurRuntime.createClass)(ValidationVisitor, {
- checkExport_: function(tree, name) {
- var description = this.validatingModuleDescription_;
- if (description && !description.getExport(name)) {
- var moduleName = description.normalizedName;
- this.reportError(tree, ("'" + name + "' is not exported by '" + moduleName + "'"));
- }
- },
- checkImport_: function(tree, name) {
- var existingImport = this.moduleSymbol.getImport(name);
- if (existingImport) {
- this.reportError(tree, ("'" + name + "' was previously imported at " + existingImport.location.start));
- } else {
- this.moduleSymbol.addImport(name, tree);
- }
- },
- visitAndValidate_: function(moduleDescription, tree) {
- var validatingModuleDescription = this.validatingModuleDescription_;
- this.validatingModuleDescription_ = moduleDescription;
- this.visitAny(tree);
- this.validatingModuleDescription_ = validatingModuleDescription;
- },
- visitNamedExport: function(tree) {
- if (tree.moduleSpecifier) {
- var name = tree.moduleSpecifier.token.processedValue;
- var moduleDescription = this.getModuleDescriptionForModuleSpecifier(name);
- this.visitAndValidate_(moduleDescription, tree.specifierSet);
- }
- },
- visitExportSpecifier: function(tree) {
- this.checkExport_(tree, tree.lhs.value);
- },
- visitImportDeclaration: function(tree) {
- var name = tree.moduleSpecifier.token.processedValue;
- var moduleDescription = this.getModuleDescriptionForModuleSpecifier(name);
- this.visitAndValidate_(moduleDescription, tree.importClause);
- },
- visitImportSpecifier: function(tree) {
- var importName = tree.rhs ? tree.rhs.value : tree.lhs.value;
- this.checkImport_(tree, importName);
- this.checkExport_(tree, tree.lhs.value);
- },
- visitImportedBinding: function(tree) {
- var importName = tree.binding.identifierToken.value;
- this.checkImport_(tree, importName);
- this.checkExport_(tree, 'default');
- }
- }, {}, ModuleVisitor);
- return {get ValidationVisitor() {
- return ValidationVisitor;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/module/ExportListBuilder", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/module/ExportListBuilder";
- var ExportVisitor = System.get("traceur@0.0.32/src/codegeneration/module/ExportVisitor").ExportVisitor;
- var ValidationVisitor = System.get("traceur@0.0.32/src/codegeneration/module/ValidationVisitor").ValidationVisitor;
- var transformOptions = System.get("traceur@0.0.32/src/options").transformOptions;
- var ExportListBuilder = function ExportListBuilder(reporter) {
- this.reporter_ = reporter;
- };
- ($traceurRuntime.createClass)(ExportListBuilder, {buildExportList: function(deps, loader) {
- if (!transformOptions.modules)
- return;
- var reporter = this.reporter_;
- function doVisit(ctor) {
- for (var i = 0; i < deps.length; i++) {
- var visitor = new ctor(reporter, loader, deps[i].moduleSymbol);
- visitor.visitAny(deps[i].tree);
- }
- }
- function reverseVisit(ctor) {
- for (var i = deps.length - 1; i >= 0; i--) {
- var visitor = new ctor(reporter, loader, deps[i].moduleSymbol);
- visitor.visitAny(deps[i].tree);
- }
- }
- reverseVisit(ExportVisitor);
- doVisit(ValidationVisitor);
- }}, {});
- return {get ExportListBuilder() {
- return ExportListBuilder;
- }};
-});
-System.register("traceur@0.0.32/src/util/url", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/util/url";
- var canonicalizeUrl = $traceurRuntime.canonicalizeUrl;
- var isAbsolute = $traceurRuntime.isAbsolute;
- var removeDotSegments = $traceurRuntime.removeDotSegments;
- var resolveUrl = $traceurRuntime.resolveUrl;
- return {
- get canonicalizeUrl() {
- return canonicalizeUrl;
- },
- get isAbsolute() {
- return isAbsolute;
- },
- get removeDotSegments() {
- return removeDotSegments;
- },
- get resolveUrl() {
- return resolveUrl;
- }
- };
-});
-System.register("traceur@0.0.32/src/codegeneration/module/ModuleSpecifierVisitor", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/module/ModuleSpecifierVisitor";
- var ParseTreeVisitor = System.get("traceur@0.0.32/src/syntax/ParseTreeVisitor").ParseTreeVisitor;
- var STRING = System.get("traceur@0.0.32/src/syntax/TokenType").STRING;
- var LiteralToken = System.get("traceur@0.0.32/src/syntax/LiteralToken").LiteralToken;
- var canonicalizeUrl = System.get("traceur@0.0.32/src/util/url").canonicalizeUrl;
- var options = System.get("traceur@0.0.32/src/options").options;
- var ModuleSpecifierVisitor = function ModuleSpecifierVisitor(reporter) {
- $traceurRuntime.superCall(this, $ModuleSpecifierVisitor.prototype, "constructor", []);
- this.moduleSpecifiers_ = Object.create(null);
- };
- var $ModuleSpecifierVisitor = ModuleSpecifierVisitor;
- ($traceurRuntime.createClass)(ModuleSpecifierVisitor, {
- get moduleSpecifiers() {
- return Object.keys(this.moduleSpecifiers_);
- },
- visitModuleSpecifier: function(tree) {
- this.moduleSpecifiers_[tree.token.processedValue] = true;
- },
- visitVariableDeclaration: function(tree) {
- this.addTypeAssertionDependency_(tree.typeAnnotation);
- return $traceurRuntime.superCall(this, $ModuleSpecifierVisitor.prototype, "visitVariableDeclaration", [tree]);
- },
- visitFormalParameter: function(tree) {
- this.addTypeAssertionDependency_(tree.typeAnnotation);
- return $traceurRuntime.superCall(this, $ModuleSpecifierVisitor.prototype, "visitFormalParameter", [tree]);
- },
- visitGetAccessor: function(tree) {
- this.addTypeAssertionDependency_(tree.typeAnnotation);
- return $traceurRuntime.superCall(this, $ModuleSpecifierVisitor.prototype, "visitGetAccessor", [tree]);
- },
- visitPropertyMethodAssignment: function(tree) {
- this.addTypeAssertionDependency_(tree.typeAnnotation);
- return $traceurRuntime.superCall(this, $ModuleSpecifierVisitor.prototype, "visitPropertyMethodAssignment", [tree]);
- },
- visitFunctionDeclaration: function(tree) {
- this.addTypeAssertionDependency_(tree.typeAnnotation);
- return $traceurRuntime.superCall(this, $ModuleSpecifierVisitor.prototype, "visitFunctionDeclaration", [tree]);
- },
- visitFunctionExpression: function(tree) {
- this.addTypeAssertionDependency_(tree.typeAnnotation);
- return $traceurRuntime.superCall(this, $ModuleSpecifierVisitor.prototype, "visitFunctionExpression", [tree]);
- },
- addTypeAssertionDependency_: function(typeAnnotation) {
- if (typeAnnotation !== null && options.typeAssertionModule !== null)
- this.moduleSpecifiers_[options.typeAssertionModule] = true;
- }
- }, {}, ParseTreeVisitor);
- return {get ModuleSpecifierVisitor() {
- return ModuleSpecifierVisitor;
- }};
-});
-System.register("traceur@0.0.32/src/runtime/system-map", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/runtime/system-map";
- function prefixMatchLength(name, prefix) {
- var prefixParts = prefix.split('/');
- var nameParts = name.split('/');
- if (prefixParts.length > nameParts.length)
- return 0;
- for (var i = 0; i < prefixParts.length; i++) {
- if (nameParts[i] != prefixParts[i])
- return 0;
- }
- return prefixParts.length;
- }
- function applyMap(map, name, parentName) {
- var curMatch,
- curMatchLength = 0;
- var curParent,
- curParentMatchLength = 0;
- if (parentName) {
- var mappedName;
- Object.getOwnPropertyNames(map).some(function(p) {
- var curMap = map[p];
- if (curMap && typeof curMap === 'object') {
- if (prefixMatchLength(parentName, p) <= curParentMatchLength)
- return;
- Object.getOwnPropertyNames(curMap).forEach(function(q) {
- if (prefixMatchLength(name, q) > curMatchLength) {
- curMatch = q;
- curMatchLength = q.split('/').length;
- curParent = p;
- curParentMatchLength = p.split('/').length;
- }
- });
- }
- if (curMatch) {
- var subPath = name.split('/').splice(curMatchLength).join('/');
- mappedName = map[curParent][curMatch] + (subPath ? '/' + subPath : '');
- return mappedName;
- }
- });
- }
- if (mappedName)
- return mappedName;
- Object.getOwnPropertyNames(map).forEach(function(p) {
- var curMap = map[p];
- if (curMap && typeof curMap === 'string') {
- if (prefixMatchLength(name, p) > curMatchLength) {
- curMatch = p;
- curMatchLength = p.split('/').length;
- }
- }
- });
- if (!curMatch)
- return name;
- var subPath = name.split('/').splice(curMatchLength).join('/');
- return map[curMatch] + (subPath ? '/' + subPath : '');
- }
- var systemjs = {applyMap: applyMap};
- return {get systemjs() {
- return systemjs;
- }};
-});
-System.register("traceur@0.0.32/src/runtime/webLoader", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/runtime/webLoader";
- var webLoader = {load: function(url, callback, errback) {
- var xhr = new XMLHttpRequest();
- xhr.onload = (function() {
- if (xhr.status == 200 || xhr.status == 0) {
- callback(xhr.responseText);
- } else {
- errback();
- }
- xhr = null;
- });
- xhr.onerror = (function(err) {
- errback(err);
- });
- xhr.open('GET', url, true);
- xhr.send();
- return (function() {
- xhr && xhr.abort();
- });
- }};
- return {get webLoader() {
- return webLoader;
- }};
-});
-System.register("traceur@0.0.32/src/runtime/LoaderHooks", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/runtime/LoaderHooks";
- var AttachModuleNameTransformer = System.get("traceur@0.0.32/src/codegeneration/module/AttachModuleNameTransformer").AttachModuleNameTransformer;
- var FromOptionsTransformer = System.get("traceur@0.0.32/src/codegeneration/FromOptionsTransformer").FromOptionsTransformer;
- var ExportListBuilder = System.get("traceur@0.0.32/src/codegeneration/module/ExportListBuilder").ExportListBuilder;
- var ModuleSpecifierVisitor = System.get("traceur@0.0.32/src/codegeneration/module/ModuleSpecifierVisitor").ModuleSpecifierVisitor;
- var ModuleSymbol = System.get("traceur@0.0.32/src/codegeneration/module/ModuleSymbol").ModuleSymbol;
- var Parser = System.get("traceur@0.0.32/src/syntax/Parser").Parser;
- var options = System.get("traceur@0.0.32/src/options").options;
- var SourceFile = System.get("traceur@0.0.32/src/syntax/SourceFile").SourceFile;
- var systemjs = System.get("traceur@0.0.32/src/runtime/system-map").systemjs;
- var UniqueIdentifierGenerator = System.get("traceur@0.0.32/src/codegeneration/UniqueIdentifierGenerator").UniqueIdentifierGenerator;
- var $__324 = System.get("traceur@0.0.32/src/util/url"),
- isAbsolute = $__324.isAbsolute,
- resolveUrl = $__324.resolveUrl;
- var webLoader = System.get("traceur@0.0.32/src/runtime/webLoader").webLoader;
- var assert = System.get("traceur@0.0.32/src/util/assert").assert;
- var NOT_STARTED = 0;
- var LOADING = 1;
- var LOADED = 2;
- var PARSED = 3;
- var TRANSFORMING = 4;
- var TRANSFORMED = 5;
- var COMPLETE = 6;
- var ERROR = 7;
- var identifierGenerator = new UniqueIdentifierGenerator();
- var LoaderHooks = function LoaderHooks(reporter, baseURL) {
- var fileLoader = arguments[2] !== (void 0) ? arguments[2] : webLoader;
- var moduleStore = arguments[3] !== (void 0) ? arguments[3] : $traceurRuntime.ModuleStore;
- this.reporter = reporter;
- this.baseURL_ = baseURL;
- this.moduleStore_ = moduleStore;
- this.fileLoader = fileLoader;
- this.exportListBuilder_ = new ExportListBuilder(this.reporter);
- };
- ($traceurRuntime.createClass)(LoaderHooks, {
- get: function(normalizedName) {
- return this.moduleStore_.get(normalizedName);
- },
- set: function(normalizedName, module) {
- this.moduleStore_.set(normalizedName, module);
- },
- normalize: function(name, referrerName, referrerAddress) {
- var normalizedName = this.moduleStore_.normalize(name, referrerName, referrerAddress);
- if (System.map)
- return systemjs.applyMap(System.map, normalizedName, referrerName);
- else
- return normalizedName;
- },
- get baseURL() {
- return this.baseURL_;
- },
- set baseURL(value) {
- this.baseURL_ = String(value);
- },
- getModuleSpecifiers: function(codeUnit) {
- if (!this.parse(codeUnit))
- return;
- codeUnit.state = PARSED;
- var moduleSpecifierVisitor = new ModuleSpecifierVisitor(this.reporter);
- moduleSpecifierVisitor.visit(codeUnit.metadata.tree);
- return moduleSpecifierVisitor.moduleSpecifiers;
- },
- parse: function(codeUnit) {
- assert(!codeUnit.metadata.tree);
- var reporter = this.reporter;
- var normalizedName = codeUnit.normalizedName;
- var program = codeUnit.source;
- var url = codeUnit.url || normalizedName;
- var file = new SourceFile(url, program);
- var parser = new Parser(file, reporter);
- if (codeUnit.type == 'module')
- codeUnit.metadata.tree = parser.parseModule();
- else
- codeUnit.metadata.tree = parser.parseScript();
- codeUnit.metadata.moduleSymbol = new ModuleSymbol(codeUnit.metadata.tree, normalizedName);
- return !reporter.hadError();
- },
- transform: function(codeUnit) {
- var transformer = new AttachModuleNameTransformer(codeUnit.normalizedName);
- var transformedTree = transformer.transformAny(codeUnit.metadata.tree);
- transformer = new FromOptionsTransformer(this.reporter, identifierGenerator);
- return transformer.transform(transformedTree);
- },
- fetch: function(load) {
- var $__322 = this;
- return new Promise((function(resolve, reject) {
- $__322.fileLoader.load(load.address, resolve, reject);
- }));
- },
- translate: function(load) {
- return new Promise((function(resolve, reject) {
- resolve(load.source);
- }));
- },
- instantiate: function($__324) {
- var name = $__324.name,
- metadata = $__324.metadata,
- address = $__324.address,
- source = $__324.source,
- sourceMap = $__324.sourceMap;
- return new Promise((function(resolve, reject) {
- resolve(undefined);
- }));
- },
- locate: function(load) {
- load.url = this.locate_(load);
- return load.url;
- },
- locate_: function(load) {
- var normalizedModuleName = load.normalizedName;
- var asJS;
- if (load.type === 'script') {
- asJS = normalizedModuleName;
- } else {
- asJS = normalizedModuleName + '.js';
- }
- if (options.referrer) {
- if (asJS.indexOf(options.referrer) === 0) {
- asJS = asJS.slice(options.referrer.length);
- load.metadata.locateMap = {
- pattern: options.referrer,
- replacement: ''
- };
- }
- }
- if (isAbsolute(asJS))
- return asJS;
- var baseURL = load.metadata && load.metadata.baseURL;
- baseURL = baseURL || this.baseURL;
- if (baseURL) {
- load.metadata.baseURL = baseURL;
- return resolveUrl(baseURL, asJS);
- }
- return asJS;
- },
- nameTrace: function(load) {
- var trace = '';
- if (load.metadata.locateMap) {
- trace += this.locateMapTrace(load);
- }
- var base = load.metadata.baseURL || this.baseURL;
- if (base) {
- trace += this.baseURLTrace(base);
- } else {
- trace += 'No baseURL\n';
- }
- return trace;
- },
- locateMapTrace: function(load) {
- var map = load.metadata.locateMap;
- return ("LoaderHooks.locate found \'" + map.pattern + "\' -> \'" + map.replacement + "\'\n");
- },
- baseURLTrace: function(base) {
- return 'LoaderHooks.locate resolved against base \'' + base + '\'\n';
- },
- evaluateCodeUnit: function(codeUnit) {
- var result = ('global', eval)(codeUnit.metadata.transcoded);
- codeUnit.metadata.transformedTree = null;
- return result;
- },
- analyzeDependencies: function(dependencies, loader) {
- var deps = [];
- for (var i = 0; i < dependencies.length; i++) {
- var codeUnit = dependencies[i];
- assert(codeUnit.state >= PARSED);
- if (codeUnit.state == PARSED) {
- deps.push(codeUnit.metadata);
- }
- }
- this.exportListBuilder_.buildExportList(deps, loader);
- },
- get options() {
- return options;
- },
- bundledModule: function(name) {
- return this.moduleStore_.bundleStore[name];
- }
- }, {});
- return {get LoaderHooks() {
- return LoaderHooks;
- }};
-});
-System.register("traceur@0.0.32/src/runtime/InterceptOutputLoaderHooks", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/runtime/InterceptOutputLoaderHooks";
- var LoaderHooks = System.get("traceur@0.0.32/src/runtime/LoaderHooks").LoaderHooks;
- var InterceptOutputLoaderHooks = function InterceptOutputLoaderHooks() {
- for (var args = [],
- $__326 = 0; $__326 < arguments.length; $__326++)
- args[$__326] = arguments[$__326];
- $traceurRuntime.superCall(this, $InterceptOutputLoaderHooks.prototype, "constructor", $traceurRuntime.spread(args));
- this.sourceMap = null;
- this.transcoded = null;
- this.onTranscoded = (function() {});
- };
- var $InterceptOutputLoaderHooks = InterceptOutputLoaderHooks;
- ($traceurRuntime.createClass)(InterceptOutputLoaderHooks, {instantiate: function($__327) {
- var metadata = $__327.metadata,
- url = $__327.url;
- this.sourceMap = metadata.sourceMap;
- this.transcoded = metadata.transcoded;
- this.onTranscoded(metadata, url);
- return undefined;
- }}, {}, LoaderHooks);
- return {get InterceptOutputLoaderHooks() {
- return InterceptOutputLoaderHooks;
- }};
-});
-System.register("traceur@0.0.32/src/runtime/InternalLoader", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/runtime/InternalLoader";
- var ArrayMap = System.get("traceur@0.0.32/src/util/ArrayMap").ArrayMap;
- var LoaderHooks = System.get("traceur@0.0.32/src/runtime/LoaderHooks").LoaderHooks;
- var ObjectMap = System.get("traceur@0.0.32/src/util/ObjectMap").ObjectMap;
- var $__330 = System.get("traceur@0.0.32/src/util/url"),
- canonicalizeUrl = $__330.canonicalizeUrl,
- isAbsolute = $__330.isAbsolute,
- resolveUrl = $__330.resolveUrl;
- var getUid = System.get("traceur@0.0.32/src/util/uid").getUid;
- var toSource = System.get("traceur@0.0.32/src/outputgeneration/toSource").toSource;
- var NOT_STARTED = 0;
- var LOADING = 1;
- var LOADED = 2;
- var PARSED = 3;
- var TRANSFORMING = 4;
- var TRANSFORMED = 5;
- var COMPLETE = 6;
- var ERROR = 7;
- var global = this;
- var CodeUnit = function CodeUnit(loaderHooks, normalizedName, type, state, name, referrerName, address) {
- var $__328 = this;
- this.loaderHooks = loaderHooks;
- this.normalizedName = normalizedName;
- this.type = type;
- this.name_ = name;
- this.referrerName_ = referrerName;
- this.address_ = address;
- this.url = InternalLoader.uniqueName(normalizedName, address);
- this.uid = getUid();
- this.state_ = state || NOT_STARTED;
- this.error = null;
- this.result = null;
- this.data_ = {};
- this.dependencies = [];
- this.promise = new Promise((function(res, rej) {
- $__328.resolve = res;
- $__328.reject = rej;
- }));
- };
- ($traceurRuntime.createClass)(CodeUnit, {
- get state() {
- return this.state_;
- },
- set state(state) {
- if (state < this.state_) {
- throw new Error('Invalid state change');
- }
- this.state_ = state;
- },
- get metadata() {
- return this.data_;
- },
- nameTrace: function() {
- var trace = this.specifiedAs();
- if (isAbsolute(this.name_)) {
- return trace + 'An absolute name.\n';
- }
- if (this.referrerName_) {
- return trace + this.importedBy() + this.normalizesTo();
- }
- return trace + this.normalizesTo();
- },
- specifiedAs: function() {
- return ("Specified as " + this.name_ + ".\n");
- },
- importedBy: function() {
- return ("Imported by " + this.referrerName_ + ".\n");
- },
- normalizesTo: function() {
- return 'Normalizes to ' + this.normalizedName + '\n';
- },
- transform: function() {
- return this.loaderHooks.transform(this);
- },
- instantiate: function(load) {
- return this.loaderHooks.instantiate(this);
- }
- }, {});
- var PreCompiledCodeUnit = function PreCompiledCodeUnit(loaderHooks, normalizedName, name, referrerName, address, module) {
- $traceurRuntime.superCall(this, $PreCompiledCodeUnit.prototype, "constructor", [loaderHooks, normalizedName, 'module', COMPLETE, name, referrerName, address]);
- this.result = module;
- this.resolve(this.result);
- };
- var $PreCompiledCodeUnit = PreCompiledCodeUnit;
- ($traceurRuntime.createClass)(PreCompiledCodeUnit, {}, {}, CodeUnit);
- var BundledCodeUnit = function BundledCodeUnit(loaderHooks, normalizedName, name, referrerName, address, deps, execute) {
- $traceurRuntime.superCall(this, $BundledCodeUnit.prototype, "constructor", [loaderHooks, normalizedName, 'module', TRANSFORMED, name, referrerName, address]);
- this.deps = deps;
- this.execute = execute;
- };
- var $BundledCodeUnit = BundledCodeUnit;
- ($traceurRuntime.createClass)(BundledCodeUnit, {
- getModuleSpecifiers: function() {
- return this.deps;
- },
- evaluate: function() {
- var $__328 = this;
- var normalizedNames = this.deps.map((function(name) {
- return $__328.loaderHooks.normalize(name);
- }));
- var module = this.execute.apply(global, normalizedNames);
- System.set(this.normalizedName, module);
- return module;
- }
- }, {}, CodeUnit);
- var HookedCodeUnit = function HookedCodeUnit() {
- $traceurRuntime.defaultSuperCall(this, $HookedCodeUnit.prototype, arguments);
- };
- var $HookedCodeUnit = HookedCodeUnit;
- ($traceurRuntime.createClass)(HookedCodeUnit, {
- getModuleSpecifiers: function() {
- return this.loaderHooks.getModuleSpecifiers(this);
- },
- evaluate: function() {
- return this.loaderHooks.evaluateCodeUnit(this);
- }
- }, {}, CodeUnit);
- var LoadCodeUnit = function LoadCodeUnit(loaderHooks, normalizedName, name, referrerName, address) {
- $traceurRuntime.superCall(this, $LoadCodeUnit.prototype, "constructor", [loaderHooks, normalizedName, 'module', NOT_STARTED, name, referrerName, address]);
- };
- var $LoadCodeUnit = LoadCodeUnit;
- ($traceurRuntime.createClass)(LoadCodeUnit, {}, {}, HookedCodeUnit);
- var EvalCodeUnit = function EvalCodeUnit(loaderHooks, code) {
- var type = arguments[2] !== (void 0) ? arguments[2] : 'script';
- var normalizedName = arguments[3];
- var referrerName = arguments[4];
- var address = arguments[5];
- $traceurRuntime.superCall(this, $EvalCodeUnit.prototype, "constructor", [loaderHooks, normalizedName, type, LOADED, null, referrerName, address]);
- this.source = code;
- };
- var $EvalCodeUnit = EvalCodeUnit;
- ($traceurRuntime.createClass)(EvalCodeUnit, {}, {}, HookedCodeUnit);
- var uniqueNameCount = 0;
- var InternalLoader = function InternalLoader(loaderHooks) {
- this.loaderHooks = loaderHooks;
- this.reporter = loaderHooks.reporter;
- this.cache = new ArrayMap();
- this.urlToKey = Object.create(null);
- this.sync_ = false;
- };
- ($traceurRuntime.createClass)(InternalLoader, {
- load: function(name) {
- var referrerName = arguments[1] !== (void 0) ? arguments[1] : this.loaderHooks.baseURL;
- var address = arguments[2];
- var type = arguments[3] !== (void 0) ? arguments[3] : 'script';
- var codeUnit = this.load_(name, referrerName, address, type);
- return codeUnit.promise.then((function() {
- return codeUnit;
- }));
- },
- load_: function(name, referrerName, address, type) {
- var $__328 = this;
- var codeUnit = this.getCodeUnit_(name, referrerName, address, type);
- if (codeUnit.state === ERROR) {
- return codeUnit;
- }
- if (codeUnit.state === TRANSFORMED) {
- this.handleCodeUnitLoaded(codeUnit);
- } else {
- if (codeUnit.state !== NOT_STARTED)
- return codeUnit;
- codeUnit.state = LOADING;
- codeUnit.address = this.loaderHooks.locate(codeUnit);
- this.loaderHooks.fetch(codeUnit).then((function(text) {
- codeUnit.source = text;
- return codeUnit;
- })).then(this.loaderHooks.translate.bind(this.loaderHooks)).then((function(source) {
- codeUnit.source = source;
- codeUnit.state = LOADED;
- $__328.handleCodeUnitLoaded(codeUnit);
- return codeUnit;
- })).catch((function(err) {
- codeUnit.state = ERROR;
- codeUnit.abort = function() {};
- $__328.handleCodeUnitLoadError(codeUnit);
- }));
- }
- return codeUnit;
- },
- module: function(code, referrerName, address) {
- var codeUnit = new EvalCodeUnit(this.loaderHooks, code, 'module', null, referrerName, address);
- this.cache.set({}, codeUnit);
- this.handleCodeUnitLoaded(codeUnit);
- return codeUnit.promise;
- },
- define: function(normalizedName, code, address) {
- var codeUnit = new EvalCodeUnit(this.loaderHooks, code, 'module', normalizedName, null, address);
- var key = this.getKey(normalizedName, 'module');
- this.cache.set(key, codeUnit);
- this.handleCodeUnitLoaded(codeUnit);
- return codeUnit.promise;
- },
- script: function(code, name, referrerName, address) {
- var normalizedName = System.normalize(name || '', referrerName, address);
- var codeUnit = new EvalCodeUnit(this.loaderHooks, code, 'script', normalizedName, referrerName, address);
- var key = {};
- if (name)
- key = this.getKey(normalizedName, 'script');
- this.cache.set(key, codeUnit);
- this.handleCodeUnitLoaded(codeUnit);
- return codeUnit.promise;
- },
- get options() {
- return this.loaderHooks.options;
- },
- sourceMapInfo: function(normalizedName, type) {
- var key = this.getKey(normalizedName, type);
- var codeUnit = this.cache.get(key);
- return {
- sourceMap: codeUnit && codeUnit.metadata && codeUnit.metadata.sourceMap,
- url: codeUnit && codeUnit.url
- };
- },
- getKey: function(url, type) {
- var combined = type + ':' + url;
- if (combined in this.urlToKey) {
- return this.urlToKey[combined];
- }
- return this.urlToKey[combined] = {};
- },
- getCodeUnit_: function(name, referrerName, address, type) {
- var normalizedName = System.normalize(name, referrerName, address);
- var key = this.getKey(normalizedName, type);
- var cacheObject = this.cache.get(key);
- if (!cacheObject) {
- var module = this.loaderHooks.get(normalizedName);
- if (module) {
- cacheObject = new PreCompiledCodeUnit(this.loaderHooks, normalizedName, name, referrerName, address, module);
- cacheObject.type = 'module';
- } else {
- var bundledModule = this.loaderHooks.bundledModule(name);
- if (bundledModule) {
- cacheObject = new BundledCodeUnit(this.loaderHooks, normalizedName, name, referrerName, address, bundledModule.deps, bundledModule.execute);
- } else {
- cacheObject = new LoadCodeUnit(this.loaderHooks, normalizedName, name, referrerName, address);
- cacheObject.type = type;
- }
- }
- this.cache.set(key, cacheObject);
- }
- return cacheObject;
- },
- areAll: function(state) {
- return this.cache.values().every((function(codeUnit) {
- return codeUnit.state >= state;
- }));
- },
- getCodeUnitForModuleSpecifier: function(name, referrerName) {
- return this.getCodeUnit_(name, referrerName, null, 'module');
- },
- handleCodeUnitLoaded: function(codeUnit) {
- var $__328 = this;
- var referrerName = codeUnit.normalizedName;
- var moduleSpecifiers = codeUnit.getModuleSpecifiers();
- if (!moduleSpecifiers) {
- this.abortAll(("No module specifiers in " + referrerName));
- return;
- }
- codeUnit.dependencies = moduleSpecifiers.sort().map((function(name) {
- return $__328.getCodeUnit_(name, referrerName, null, 'module');
- }));
- codeUnit.dependencies.forEach((function(dependency) {
- $__328.load(dependency.normalizedName, null, null, 'module');
- }));
- if (this.areAll(PARSED)) {
- this.analyze();
- this.transform();
- this.evaluate();
- }
- },
- handleCodeUnitLoadError: function(codeUnit) {
- var message = ("Failed to load '" + codeUnit.address + "'.\n") + codeUnit.nameTrace() + this.loaderHooks.nameTrace(codeUnit);
- this.reporter.reportError(null, message);
- this.abortAll(message);
- codeUnit.error = message;
- codeUnit.reject(new Error(message));
- },
- abortAll: function(errorMessage) {
- this.cache.values().forEach((function(codeUnit) {
- if (codeUnit.abort) {
- codeUnit.abort();
- codeUnit.state = ERROR;
- }
- }));
- this.cache.values().forEach((function(codeUnit) {
- codeUnit.reject(new Error(codeUnit.error || errorMessage));
- }));
- },
- analyze: function() {
- this.loaderHooks.analyzeDependencies(this.cache.values(), this);
- this.checkForErrors(this.cache.values(), 'build-export-list');
- },
- transform: function() {
- this.transformDependencies(this.cache.values());
- },
- transformDependencies: function(dependencies, dependentName) {
- for (var i = 0; i < dependencies.length; i++) {
- var codeUnit = dependencies[i];
- if (codeUnit.state >= TRANSFORMED) {
- continue;
- }
- if (codeUnit.state === TRANSFORMING) {
- var cir = codeUnit.normalizedName;
- var cle = dependentName;
- this.reporter.reportError(codeUnit.metadata.tree, ("Unsupported circular dependency between " + cir + " and " + cle));
- break;
- }
- codeUnit.state = TRANSFORMING;
- this.transformCodeUnit(codeUnit);
- codeUnit.instantiate();
- }
- this.checkForErrors(dependencies, 'transform');
- },
- transformCodeUnit: function(codeUnit) {
- var $__330;
- this.transformDependencies(codeUnit.dependencies, codeUnit.normalizedName);
- if (codeUnit.state === ERROR)
- return;
- var metadata = codeUnit.metadata;
- metadata.transformedTree = codeUnit.transform();
- codeUnit.state = TRANSFORMED;
- var filename = codeUnit.address || codeUnit.normalizedName;
- ($__330 = toSource(metadata.transformedTree, this.options, filename), metadata.transcoded = $__330[0], metadata.sourceMap = $__330[1], $__330);
- if (codeUnit.address && metadata.transcoded)
- metadata.transcoded += '//# sourceURL=' + codeUnit.address;
- },
- checkForErrors: function(dependencies, phase) {
- if (this.reporter.hadError()) {
- for (var i = 0; i < dependencies.length; i++) {
- var codeUnit = dependencies[i];
- if (codeUnit.state >= COMPLETE) {
- continue;
- }
- codeUnit.state = ERROR;
- }
- for (var i = 0; i < dependencies.length; i++) {
- var codeUnit = dependencies[i];
- if (codeUnit.state == ERROR) {
- codeUnit.reject(phase);
- }
- }
- return true;
- }
- return false;
- },
- orderDependencies: function() {
- var visited = new ObjectMap();
- var ordered = [];
- function orderCodeUnits(codeUnit) {
- if (visited.has(codeUnit)) {
- return;
- }
- visited.set(codeUnit, true);
- codeUnit.dependencies.forEach(orderCodeUnits);
- ordered.push(codeUnit);
- }
- this.cache.values().forEach(orderCodeUnits);
- return ordered;
- },
- evaluate: function() {
- var dependencies = this.orderDependencies();
- for (var i = 0; i < dependencies.length; i++) {
- var codeUnit = dependencies[i];
- if (codeUnit.state >= COMPLETE) {
- continue;
- }
- var result;
- try {
- result = codeUnit.evaluate();
- } catch (ex) {
- codeUnit.error = ex;
- this.reporter.reportError(null, String(ex));
- this.abortAll();
- codeUnit.reject(codeUnit.error);
- return;
- }
- codeUnit.result = result;
- codeUnit.source = null;
- }
- for (var i = 0; i < dependencies.length; i++) {
- var codeUnit = dependencies[i];
- if (codeUnit.state >= COMPLETE) {
- continue;
- }
- codeUnit.state = COMPLETE;
- codeUnit.resolve(codeUnit.result);
- }
- }
- }, {uniqueName: function(normalizedName, referrerAddress) {
- var importerAddress = referrerAddress || System.baseURL;
- if (!importerAddress)
- throw new Error('The System.baseURL is an empty string');
- var path = normalizedName || String(uniqueNameCount++);
- return resolveUrl(importerAddress, path);
- }});
- var SystemLoaderHooks = LoaderHooks;
- var internals = {
- CodeUnit: CodeUnit,
- EvalCodeUnit: EvalCodeUnit,
- LoadCodeUnit: LoadCodeUnit,
- LoaderHooks: LoaderHooks
- };
- return {
- get InternalLoader() {
- return InternalLoader;
- },
- get internals() {
- return internals;
- }
- };
-});
-System.register("traceur@0.0.32/src/runtime/Loader", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/runtime/Loader";
- var InternalLoader = System.get("traceur@0.0.32/src/runtime/InternalLoader").InternalLoader;
- var Loader = function Loader(loaderHooks) {
- this.internalLoader_ = new InternalLoader(loaderHooks);
- this.loaderHooks_ = loaderHooks;
- };
- ($traceurRuntime.createClass)(Loader, {
- import: function(name) {
- var $__333 = arguments[1] !== (void 0) ? arguments[1] : {},
- referrerName = $__333.referrerName,
- address = $__333.address;
- var $__331 = this;
- return this.internalLoader_.load(name, referrerName, address, 'module').then((function(codeUnit) {
- return $__331.get(codeUnit.normalizedName);
- }));
- },
- module: function(source) {
- var $__333 = arguments[1] !== (void 0) ? arguments[1] : {},
- referrerName = $__333.referrerName,
- address = $__333.address;
- return this.internalLoader_.module(source, referrerName, address);
- },
- define: function(normalizedName, source) {
- var $__333 = arguments[2] !== (void 0) ? arguments[2] : {},
- address = $__333.address,
- metadata = $__333.metadata;
- return this.internalLoader_.define(normalizedName, source, address, metadata);
- },
- get: function(normalizedName) {
- return this.loaderHooks_.get(normalizedName);
- },
- set: function(normalizedName, module) {
- this.loaderHooks_.set(normalizedName, module);
- },
- normalize: function(name, referrerName, referrerAddress) {
- return this.loaderHooks_.normalize(name, referrerName, referrerAddress);
- },
- locate: function(load) {
- return this.loaderHooks_.locate(load);
- },
- fetch: function(load) {
- return this.loaderHooks_.fetch(load);
- },
- translate: function(load) {
- return this.loaderHooks_.translate(load);
- },
- instantiate: function(load) {
- return this.loaderHooks_.instantiate(load);
- }
- }, {});
- ;
- return {
- get Loader() {
- return Loader;
- },
- get LoaderHooks() {
- return LoaderHooks;
- }
- };
-});
-System.register("traceur@0.0.32/src/WebPageTranscoder", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/WebPageTranscoder";
- var Loader = System.get("traceur@0.0.32/src/runtime/Loader").Loader;
- var ErrorReporter = System.get("traceur@0.0.32/src/util/ErrorReporter").ErrorReporter;
- var InterceptOutputLoaderHooks = System.get("traceur@0.0.32/src/runtime/InterceptOutputLoaderHooks").InterceptOutputLoaderHooks;
- var webLoader = System.get("traceur@0.0.32/src/runtime/webLoader").webLoader;
- var WebPageTranscoder = function WebPageTranscoder(url) {
- this.url = url;
- this.numPending_ = 0;
- this.numberInlined_ = 0;
- };
- ($traceurRuntime.createClass)(WebPageTranscoder, {
- asyncLoad_: function(url, fncOfContent, onScriptsReady) {
- var $__334 = this;
- this.numPending_++;
- webLoader.load(url, (function(content) {
- if (content)
- fncOfContent(content);
- else
- console.warn('Failed to load', url);
- if (--$__334.numPending_ <= 0)
- onScriptsReady();
- }), (function(error) {
- console.error('WebPageTranscoder FAILED to load ' + url, error);
- }));
- },
- addFileFromScriptElement: function(scriptElement, name, content) {
- this.loader.module(content, name);
- },
- nextInlineScriptName_: function() {
- this.numberInlined_ += 1;
- if (!this.inlineScriptNameBase_) {
- var segments = this.url.split('.');
- segments.pop();
- this.inlineScriptNameBase_ = segments.join('.');
- }
- return this.inlineScriptNameBase_ + '_' + this.numberInlined_ + '.js';
- },
- addFilesFromScriptElements: function(scriptElements, onScriptsReady) {
- for (var i = 0,
- length = scriptElements.length; i < length; i++) {
- var scriptElement = scriptElements[i];
- if (!scriptElement.src) {
- var name = this.nextInlineScriptName_();
- var content = scriptElement.textContent;
- this.addFileFromScriptElement(scriptElement, name, content);
- } else {
- var name = scriptElement.src;
- this.asyncLoad_(name, this.addFileFromScriptElement.bind(this, scriptElement, name), onScriptsReady);
- }
- }
- if (this.numPending_ <= 0)
- onScriptsReady();
- },
- get reporter() {
- if (!this.reporter_) {
- this.reporter_ = new ErrorReporter();
- }
- return this.reporter_;
- },
- get loader() {
- if (!this.loader_) {
- var loaderHooks = new InterceptOutputLoaderHooks(this.reporter, this.url);
- this.loader_ = new Loader(loaderHooks);
- }
- return this.loader_;
- },
- putFile: function(file) {
- var scriptElement = document.createElement('script');
- scriptElement.setAttribute('data-traceur-src-url', file.name);
- scriptElement.textContent = file.generatedSource;
- var parent = file.scriptElement.parentNode;
- parent.insertBefore(scriptElement, file.scriptElement || null);
- },
- selectAndProcessScripts: function(done) {
- var selector = 'script[type="module"]';
- var scripts = document.querySelectorAll(selector);
- if (!scripts.length) {
- done();
- return;
- }
- this.addFilesFromScriptElements(scripts, (function() {
- done();
- }));
- },
- run: function() {
- var done = arguments[0] !== (void 0) ? arguments[0] : (function() {});
- var $__334 = this;
- var ready = document.readyState;
- if (ready === 'complete' || ready === 'loaded') {
- this.selectAndProcessScripts(done);
- } else {
- document.addEventListener('DOMContentLoaded', (function() {
- return $__334.selectAndProcessScripts(done);
- }), false);
- }
- }
- }, {});
- return {get WebPageTranscoder() {
- return WebPageTranscoder;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/CloneTreeTransformer", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/CloneTreeTransformer";
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var $__338 = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees"),
- BindingIdentifier = $__338.BindingIdentifier,
- BreakStatement = $__338.BreakStatement,
- ContinueStatement = $__338.ContinueStatement,
- DebuggerStatement = $__338.DebuggerStatement,
- EmptyStatement = $__338.EmptyStatement,
- ExportSpecifier = $__338.ExportSpecifier,
- ExportStar = $__338.ExportStar,
- IdentifierExpression = $__338.IdentifierExpression,
- ImportSpecifier = $__338.ImportSpecifier,
- LiteralExpression = $__338.LiteralExpression,
- ModuleSpecifier = $__338.ModuleSpecifier,
- PredefinedType = $__338.PredefinedType,
- PropertyNameShorthand = $__338.PropertyNameShorthand,
- TemplateLiteralPortion = $__338.TemplateLiteralPortion,
- RestParameter = $__338.RestParameter,
- SuperExpression = $__338.SuperExpression,
- ThisExpression = $__338.ThisExpression;
- var CloneTreeTransformer = function CloneTreeTransformer() {
- $traceurRuntime.defaultSuperCall(this, $CloneTreeTransformer.prototype, arguments);
- };
- var $CloneTreeTransformer = CloneTreeTransformer;
- ($traceurRuntime.createClass)(CloneTreeTransformer, {
- transformBindingIdentifier: function(tree) {
- return new BindingIdentifier(tree.location, tree.identifierToken);
- },
- transformBreakStatement: function(tree) {
- return new BreakStatement(tree.location, tree.name);
- },
- transformContinueStatement: function(tree) {
- return new ContinueStatement(tree.location, tree.name);
- },
- transformDebuggerStatement: function(tree) {
- return new DebuggerStatement(tree.location);
- },
- transformEmptyStatement: function(tree) {
- return new EmptyStatement(tree.location);
- },
- transformExportSpecifier: function(tree) {
- return new ExportSpecifier(tree.location, tree.lhs, tree.rhs);
- },
- transformExportStar: function(tree) {
- return new ExportStar(tree.location);
- },
- transformIdentifierExpression: function(tree) {
- return new IdentifierExpression(tree.location, tree.identifierToken);
- },
- transformImportSpecifier: function(tree) {
- return new ImportSpecifier(tree.location, tree.lhs, tree.rhs);
- },
- transformList: function(list) {
- if (!list) {
- return null;
- } else if (list.length == 0) {
- return [];
- } else {
- return $traceurRuntime.superCall(this, $CloneTreeTransformer.prototype, "transformList", [list]);
- }
- },
- transformLiteralExpression: function(tree) {
- return new LiteralExpression(tree.location, tree.literalToken);
- },
- transformModuleSpecifier: function(tree) {
- return new ModuleSpecifier(tree.location, tree.token);
- },
- transformPredefinedType: function(tree) {
- return new PredefinedType(tree.location, tree.typeToken);
- },
- transformPropertyNameShorthand: function(tree) {
- return new PropertyNameShorthand(tree.location, tree.name);
- },
- transformTemplateLiteralPortion: function(tree) {
- return new TemplateLiteralPortion(tree.location, tree.value);
- },
- transformSuperExpression: function(tree) {
- return new SuperExpression(tree.location);
- },
- transformThisExpression: function(tree) {
- return new ThisExpression(tree.location);
- }
- }, {}, ParseTreeTransformer);
- CloneTreeTransformer.cloneTree = function(tree) {
- return new CloneTreeTransformer().transformAny(tree);
- };
- return {get CloneTreeTransformer() {
- return CloneTreeTransformer;
- }};
-});
-System.register("traceur@0.0.32/src/codegeneration/module/createModuleEvaluationStatement", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/codegeneration/module/createModuleEvaluationStatement";
- var $__339 = Object.freeze(Object.defineProperties(["System.get(", " +'')"], {raw: {value: Object.freeze(["System.get(", " +'')"])}}));
- var parseStatement = System.get("traceur@0.0.32/src/codegeneration/PlaceholderParser").parseStatement;
- function createModuleEvaluationStatement(normalizedName) {
- return parseStatement($__339, normalizedName);
- }
- return {get createModuleEvaluationStatement() {
- return createModuleEvaluationStatement;
- }};
-});
-System.register("traceur@0.0.32/src/runtime/TraceurLoader", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/runtime/TraceurLoader";
- var InternalLoader = System.get("traceur@0.0.32/src/runtime/InternalLoader").InternalLoader;
- var Loader = System.get("traceur@0.0.32/src/runtime/Loader").Loader;
- var version = __moduleName.slice(0, __moduleName.indexOf('/'));
- var TraceurLoader = function TraceurLoader(loaderHooks) {
- if (loaderHooks.translateSynchronous) {
- loaderHooks.translate = function(load) {
- return new Promise((function(resolve, reject) {
- resolve(loaderHooks.translateSynchronous(load));
- }));
- };
- }
- $traceurRuntime.superCall(this, $TraceurLoader.prototype, "constructor", [loaderHooks]);
- };
- var $TraceurLoader = TraceurLoader;
- ($traceurRuntime.createClass)(TraceurLoader, {
- loadAsScript: function(name) {
- var $__342 = arguments[1] !== (void 0) ? arguments[1] : {},
- referrerName = $__342.referrerName,
- address = $__342.address;
- return this.internalLoader_.load(name, referrerName, address, 'script').then((function(codeUnit) {
- return codeUnit.result;
- }));
- },
- script: function(source) {
- var $__342 = arguments[1] !== (void 0) ? arguments[1] : {},
- name = $__342.name,
- referrerName = $__342.referrerName,
- address = $__342.address;
- return this.internalLoader_.script(source, name, referrerName, address);
- },
- semVerRegExp_: function() {
- return /^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+)?$/;
- },
- semverMap: function(normalizedName) {
- var slash = normalizedName.indexOf('/');
- var version = normalizedName.slice(0, slash);
- var at = version.indexOf('@');
- if (at !== -1) {
- var semver = version.slice(at + 1);
- var m = this.semVerRegExp_().exec(semver);
- if (m) {
- var major = m[1];
- var minor = m[2];
- var packageName = version.slice(0, at);
- var map = Object.create(null);
- map[packageName] = version;
- map[packageName + '@' + major] = version;
- map[packageName + '@' + major + '.' + minor] = version;
- }
- }
- return map;
- },
- get version() {
- return version;
- },
- get options() {
- return this.internalLoader_.options;
- },
- sourceMapInfo: function(normalizedName, type) {
- return this.internalLoader_.sourceMapInfo(normalizedName, type);
- },
- register: function(normalizedName, deps, factoryFunction) {
- $traceurRuntime.ModuleStore.register(normalizedName, deps, factoryFunction);
- },
- get baseURL() {
- return this.loaderHooks_.baseURL;
- },
- set baseURL(value) {
- this.loaderHooks_.baseURL = value;
- }
- }, {}, Loader);
- return {get TraceurLoader() {
- return TraceurLoader;
- }};
-});
-System.register("traceur@0.0.32/src/runtime/System", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/runtime/System";
- var globalThis = System.get("traceur@0.0.32/src/codegeneration/globalThis").default;
- var ErrorReporter = System.get("traceur@0.0.32/src/util/ErrorReporter").ErrorReporter;
- var TraceurLoader = System.get("traceur@0.0.32/src/runtime/TraceurLoader").TraceurLoader;
- var LoaderHooks = System.get("traceur@0.0.32/src/runtime/LoaderHooks").LoaderHooks;
- var options = System.get("traceur@0.0.32/src/options").options;
- var webLoader = System.get("traceur@0.0.32/src/runtime/webLoader").webLoader;
- var url;
- var fileLoader;
- if (typeof window !== 'undefined' && window.location) {
- url = window.location.href;
- fileLoader = webLoader;
- }
- var loaderHooks = new LoaderHooks(new ErrorReporter(), url, fileLoader);
- var traceurLoader = new TraceurLoader(loaderHooks);
- if (typeof window !== 'undefined')
- window.System = traceurLoader;
- if (typeof global !== 'undefined')
- global.System = traceurLoader;
- ;
- traceurLoader.map = traceurLoader.semverMap(__moduleName);
- return {get System() {
- return traceurLoader;
- }};
-});
-System.register("traceur@0.0.32/src/util/TestErrorReporter", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/util/TestErrorReporter";
- var $__345 = System.get("traceur@0.0.32/src/util/ErrorReporter"),
- ErrorReporter = $__345.ErrorReporter,
- format = $__345.format;
- var TestErrorReporter = function TestErrorReporter() {
- this.errors = [];
- };
- ($traceurRuntime.createClass)(TestErrorReporter, {
- reportMessageInternal: function(location, message) {
- this.errors.push(format(location, message));
- },
- hasMatchingError: function(expected) {
- return this.errors.some((function(error) {
- return error.indexOf(expected) !== -1;
- }));
- }
- }, {}, ErrorReporter);
- return {get TestErrorReporter() {
- return TestErrorReporter;
- }};
-});
-System.register("traceur@0.0.32/src/traceur", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/traceur";
- System.get("traceur@0.0.32/src/runtime/System");
- ;
- var ModuleStore = System.get('@traceur/src/runtime/ModuleStore').ModuleStore;
- var $__traceur_64_0_46_0_46_32_47_src_47_options__ = System.get("traceur@0.0.32/src/options");
- var $__traceur_64_0_46_0_46_32_47_src_47_WebPageTranscoder__ = System.get("traceur@0.0.32/src/WebPageTranscoder");
- var ExportListBuilder = System.get("traceur@0.0.32/src/codegeneration/module/ExportListBuilder").ExportListBuilder;
- var semantics = {ExportListBuilder: ExportListBuilder};
- var ErrorReporter = System.get("traceur@0.0.32/src/util/ErrorReporter").ErrorReporter;
- var SourcePosition = System.get("traceur@0.0.32/src/util/SourcePosition").SourcePosition;
- var SyntaxErrorReporter = System.get("traceur@0.0.32/src/util/SyntaxErrorReporter").SyntaxErrorReporter;
- var TestErrorReporter = System.get("traceur@0.0.32/src/util/TestErrorReporter").TestErrorReporter;
- var resolveUrl = System.get("traceur@0.0.32/src/util/url").resolveUrl;
- var util = {
- ErrorReporter: ErrorReporter,
- SourcePosition: SourcePosition,
- SyntaxErrorReporter: SyntaxErrorReporter,
- TestErrorReporter: TestErrorReporter,
- resolveUrl: resolveUrl
- };
- var IdentifierToken = System.get("traceur@0.0.32/src/syntax/IdentifierToken").IdentifierToken;
- var LiteralToken = System.get("traceur@0.0.32/src/syntax/LiteralToken").LiteralToken;
- var Parser = System.get("traceur@0.0.32/src/syntax/Parser").Parser;
- var Scanner = System.get("traceur@0.0.32/src/syntax/Scanner").Scanner;
- var SourceFile = System.get("traceur@0.0.32/src/syntax/SourceFile").SourceFile;
- var Token = System.get("traceur@0.0.32/src/syntax/Token").Token;
- var TokenType = System.get("traceur@0.0.32/src/syntax/TokenType");
- var trees = System.get("traceur@0.0.32/src/syntax/trees/ParseTrees");
- var syntax = {
- IdentifierToken: IdentifierToken,
- LiteralToken: LiteralToken,
- Parser: Parser,
- Scanner: Scanner,
- SourceFile: SourceFile,
- Token: Token,
- TokenType: TokenType,
- trees: trees
- };
- var ParseTreeMapWriter = System.get("traceur@0.0.32/src/outputgeneration/ParseTreeMapWriter").ParseTreeMapWriter;
- var ParseTreeWriter = System.get("traceur@0.0.32/src/outputgeneration/ParseTreeWriter").ParseTreeWriter;
- var SourceMapConsumer = System.get("traceur@0.0.32/src/outputgeneration/SourceMapIntegration").SourceMapConsumer;
- var SourceMapGenerator = System.get("traceur@0.0.32/src/outputgeneration/SourceMapIntegration").SourceMapGenerator;
- var TreeWriter = System.get("traceur@0.0.32/src/outputgeneration/TreeWriter").TreeWriter;
- var outputgeneration = {
- ParseTreeMapWriter: ParseTreeMapWriter,
- ParseTreeWriter: ParseTreeWriter,
- SourceMapConsumer: SourceMapConsumer,
- SourceMapGenerator: SourceMapGenerator,
- TreeWriter: TreeWriter
- };
- var AmdTransformer = System.get("traceur@0.0.32/src/codegeneration/AmdTransformer").AmdTransformer;
- var AttachModuleNameTransformer = System.get("traceur@0.0.32/src/codegeneration/module/AttachModuleNameTransformer").AttachModuleNameTransformer;
- var CloneTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/CloneTreeTransformer").CloneTreeTransformer;
- var CommonJsModuleTransformer = System.get("traceur@0.0.32/src/codegeneration/CommonJsModuleTransformer").CommonJsModuleTransformer;
- var DirectExportVisitor = System.get("traceur@0.0.32/src/codegeneration/module/DirectExportVisitor").DirectExportVisitor;
- var FromOptionsTransformer = System.get("traceur@0.0.32/src/codegeneration/FromOptionsTransformer").FromOptionsTransformer;
- var InlineModuleTransformer = System.get("traceur@0.0.32/src/codegeneration/InlineModuleTransformer").InlineModuleTransformer;
- var ModuleSpecifierVisitor = System.get("traceur@0.0.32/src/codegeneration/module/ModuleSpecifierVisitor").ModuleSpecifierVisitor;
- var ModuleTransformer = System.get("traceur@0.0.32/src/codegeneration/ModuleTransformer").ModuleTransformer;
- var ParseTreeTransformer = System.get("traceur@0.0.32/src/codegeneration/ParseTreeTransformer").ParseTreeTransformer;
- var createModuleEvaluationStatement = System.get("traceur@0.0.32/src/codegeneration/module/createModuleEvaluationStatement").createModuleEvaluationStatement;
- var ParseTreeFactory = System.get("traceur@0.0.32/src/codegeneration/ParseTreeFactory");
- var codegeneration = {
- AmdTransformer: AmdTransformer,
- CloneTreeTransformer: CloneTreeTransformer,
- CommonJsModuleTransformer: CommonJsModuleTransformer,
- FromOptionsTransformer: FromOptionsTransformer,
- InlineModuleTransformer: InlineModuleTransformer,
- ModuleTransformer: ModuleTransformer,
- ParseTreeFactory: ParseTreeFactory,
- ParseTreeTransformer: ParseTreeTransformer,
- module: {
- AttachModuleNameTransformer: AttachModuleNameTransformer,
- DirectExportVisitor: DirectExportVisitor,
- ModuleSpecifierVisitor: ModuleSpecifierVisitor,
- createModuleEvaluationStatement: createModuleEvaluationStatement
- }
- };
- var Loader = System.get("traceur@0.0.32/src/runtime/Loader").Loader;
- var LoaderHooks = System.get("traceur@0.0.32/src/runtime/LoaderHooks").LoaderHooks;
- var InterceptOutputLoaderHooks = System.get("traceur@0.0.32/src/runtime/InterceptOutputLoaderHooks").InterceptOutputLoaderHooks;
- var TraceurLoader = System.get("traceur@0.0.32/src/runtime/TraceurLoader").TraceurLoader;
- var runtime = {
- InterceptOutputLoaderHooks: InterceptOutputLoaderHooks,
- Loader: Loader,
- LoaderHooks: LoaderHooks,
- TraceurLoader: TraceurLoader
- };
- return {
- get System() {
- return System;
- },
- get ModuleStore() {
- return ModuleStore;
- },
- get options() {
- return $__traceur_64_0_46_0_46_32_47_src_47_options__.options;
- },
- get WebPageTranscoder() {
- return $__traceur_64_0_46_0_46_32_47_src_47_WebPageTranscoder__.WebPageTranscoder;
- },
- get semantics() {
- return semantics;
- },
- get util() {
- return util;
- },
- get syntax() {
- return syntax;
- },
- get outputgeneration() {
- return outputgeneration;
- },
- get codegeneration() {
- return codegeneration;
- },
- get runtime() {
- return runtime;
- }
- };
-});
-System.register("traceur@0.0.32/src/traceur-import", [], function() {
- "use strict";
- var __moduleName = "traceur@0.0.32/src/traceur-import";
- var traceur = System.get("traceur@0.0.32/src/traceur");
- this.traceur = traceur;
- $traceurRuntime.ModuleStore.set('traceur@', traceur);
- return {};
-});
-System.get("traceur@0.0.32/src/traceur-import" + '');
diff --git a/examples/pipetobrowser/browser/package.json b/examples/pipetobrowser/browser/package.json
new file mode 100644
index 0000000..773f16f
--- /dev/null
+++ b/examples/pipetobrowser/browser/package.json
@@ -0,0 +1,11 @@
+{
+ "registry": "jspm",
+ "main": "app",
+ "directories": {
+ "jspmPackages": "third-party"
+ },
+ "dependencies": {
+ "npm:event-stream": "^3.1.5",
+ "nodelibs": "master"
+ }
+}
\ No newline at end of file
diff --git a/examples/pipetobrowser/browser/pipe-viewers/builtin/console/component.html b/examples/pipetobrowser/browser/pipe-viewers/builtin/console/component.html
index 1b3732c..d9f773c 100644
--- a/examples/pipetobrowser/browser/pipe-viewers/builtin/console/component.html
+++ b/examples/pipetobrowser/browser/pipe-viewers/builtin/console/component.html
@@ -1,4 +1,4 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
+<link rel="import" href="../../../third-party/polymer/polymer.html">
<polymer-element name="p2b-plugin-console">
<template>
diff --git a/examples/pipetobrowser/browser/pipe-viewers/builtin/git/status/component.html b/examples/pipetobrowser/browser/pipe-viewers/builtin/git/status/component.html
index 05cd8d2..a4db818 100644
--- a/examples/pipetobrowser/browser/pipe-viewers/builtin/git/status/component.html
+++ b/examples/pipetobrowser/browser/pipe-viewers/builtin/git/status/component.html
@@ -1,16 +1,16 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
-<link rel="import" href="/libs/vendor/polymer/core-icon/core-icon.html">
-<link rel="import" href="/libs/ui-components/data-grid/grid/component.html">
-<link rel="import" href="/libs/ui-components/data-grid/grid/column/component.html">
-<link rel="import" href="/libs/ui-components/data-grid/filter/select/component.html">
-<link rel="import" href="/libs/ui-components/data-grid/filter/select/item/component.html">
-<link rel="import" href="/libs/ui-components/data-grid/filter/toggle/component.html">
-<link rel="import" href="/libs/ui-components/data-grid/search/component.html">
+<link rel="import" href="../../../../third-party/polymer/polymer.html">
+<link rel="import" href="../../../../third-party/core-icon/core-icon.html">
+<link rel="import" href="../../../../libs/ui-components/data-grid/grid/component.html">
+<link rel="import" href="../../../../libs/ui-components/data-grid/grid/column/component.html">
+<link rel="import" href="../../../../libs/ui-components/data-grid/filter/select/component.html">
+<link rel="import" href="../../../../libs/ui-components/data-grid/filter/select/item/component.html">
+<link rel="import" href="../../../../libs/ui-components/data-grid/filter/toggle/component.html">
+<link rel="import" href="../../../../libs/ui-components/data-grid/search/component.html">
<polymer-element name="p2b-plugin-git-status">
<template>
- <link rel="stylesheet" href="/libs/css/common-style.css">
+ <link rel="stylesheet" href="../../../../libs/css/common-style.css">
<link rel="stylesheet" href="component.css">
<p2b-grid id="grid" defaultSortKey="state" defaultSortAscending dataSource="{{ dataSource }}" summary="Data Grid displaying status of modified file for the git repository.">
diff --git a/examples/pipetobrowser/browser/pipe-viewers/builtin/vlog/component.html b/examples/pipetobrowser/browser/pipe-viewers/builtin/vlog/component.html
index 196036e..59f4f28 100644
--- a/examples/pipetobrowser/browser/pipe-viewers/builtin/vlog/component.html
+++ b/examples/pipetobrowser/browser/pipe-viewers/builtin/vlog/component.html
@@ -1,15 +1,15 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
-<link rel="import" href="/libs/vendor/polymer/core-icon/core-icon.html">
-<link rel="import" href="/libs/ui-components/data-grid/grid/component.html">
-<link rel="import" href="/libs/ui-components/data-grid/grid/column/component.html">
-<link rel="import" href="/libs/ui-components/data-grid/filter/select/component.html">
-<link rel="import" href="/libs/ui-components/data-grid/filter/select/item/component.html">
-<link rel="import" href="/libs/ui-components/data-grid/filter/toggle/component.html">
-<link rel="import" href="/libs/ui-components/data-grid/search/component.html">
+<link rel="import" href="../../../third-party/polymer/polymer.html">
+<link rel="import" href="../../../third-party/core-icon/core-icon.html">
+<link rel="import" href="../../../libs/ui-components/data-grid/grid/component.html">
+<link rel="import" href="../../../libs/ui-components/data-grid/grid/column/component.html">
+<link rel="import" href="../../../libs/ui-components/data-grid/filter/select/component.html">
+<link rel="import" href="../../../libs/ui-components/data-grid/filter/select/item/component.html">
+<link rel="import" href="../../../libs/ui-components/data-grid/filter/toggle/component.html">
+<link rel="import" href="../../../libs/ui-components/data-grid/search/component.html">
<polymer-element name="p2b-plugin-vlog">
<template>
- <link rel="stylesheet" href="/libs/css/common-style.css">
+ <link rel="stylesheet" href="../../../libs/css/common-style.css">
<link rel="stylesheet" href="component.css">
<p2b-grid id="grid" defaultSortKey="date" defaultSortAscending dataSource="{{ dataSource }}" summary="Data Grid displaying veyron log items in a tabular format with filters and search options.">
diff --git a/examples/pipetobrowser/browser/pipe-viewers/manager.js b/examples/pipetobrowser/browser/pipe-viewers/manager.js
index 086dfc9..d135741 100644
--- a/examples/pipetobrowser/browser/pipe-viewers/manager.js
+++ b/examples/pipetobrowser/browser/pipe-viewers/manager.js
@@ -9,6 +9,17 @@
import { isAbsoulteUrl } from 'libs/utils/url'
import { Logger } from 'libs/logs/logger'
+/*
+ * Preload certain common builtin plugins.
+ * Plugins are normally loaded on demand and this makes the initial bundle larger
+ * but common plugins should be preloaded for better performance.
+ * This is kind of a hack as it simply exposes a path to these
+ * plugins so that build bundler finds them and bundles them with the reset of the app
+ */
+import { default as plugin } from './builtin/vlog/plugin'
+import { default as plugin } from './builtin/image/plugin'
+import { default as plugin } from './builtin/console/plugin'
+
var log = new Logger('pipe-viewer/manager');
// cache loaded viewers
diff --git a/examples/pipetobrowser/browser/runtime/init.js b/examples/pipetobrowser/browser/runtime/init.js
deleted file mode 100644
index 4180417..0000000
--- a/examples/pipetobrowser/browser/runtime/init.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Bootstrapping traceur compiler, polymer, and the app itself.
- * @fileoverview
- */
-
-window.addEventListener('polymer-ready', function(e) {
- // alias view and pipe-viewer so external plugins can just reference it without full path.
- System.paths = {
- '*': '*.js',
- 'pipe-viewer': 'pipe-viewers/pipe-viewer.js',
- 'pipe-viewer-delegation': 'pipe-viewers/pipe-viewer-delegation.js',
- 'view': 'libs/mvc/view.js',
- 'logger': 'libs/logs/logger.js',
- 'stream-helpers': 'libs/utils/stream-helpers.js'
- };
-
- System.import('runtime/app').then(function(app) {
- app.start();
- }).catch(function(e) {
- console.error(e);
- });
-});
diff --git a/examples/pipetobrowser/browser/services/pipe-to-browser-client.js b/examples/pipetobrowser/browser/services/pipe-to-browser-client.js
index c03e780..2af1a17 100644
--- a/examples/pipetobrowser/browser/services/pipe-to-browser-client.js
+++ b/examples/pipetobrowser/browser/services/pipe-to-browser-client.js
@@ -3,7 +3,7 @@
* @fileoverview
*/
import { Logger } from 'libs/logs/logger'
-import { config } from 'config'
+import { config } from 'config/config'
var log = new Logger('services/p2b-client');
var veyron = new Veyron(config.veyron);
diff --git a/examples/pipetobrowser/browser/services/pipe-to-browser-namespace.js b/examples/pipetobrowser/browser/services/pipe-to-browser-namespace.js
index 648a528..6910453 100644
--- a/examples/pipetobrowser/browser/services/pipe-to-browser-namespace.js
+++ b/examples/pipetobrowser/browser/services/pipe-to-browser-namespace.js
@@ -4,7 +4,7 @@
* @fileoverview
*/
import { Logger } from 'libs/logs/logger'
-import { config } from 'config'
+import { config } from 'config/config'
var log = new Logger('services/p2b-namespace');
var veyron = new Veyron(config.veyron);
diff --git a/examples/pipetobrowser/browser/services/pipe-to-browser-server.js b/examples/pipetobrowser/browser/services/pipe-to-browser-server.js
index 16cc738..abf7749 100644
--- a/examples/pipetobrowser/browser/services/pipe-to-browser-server.js
+++ b/examples/pipetobrowser/browser/services/pipe-to-browser-server.js
@@ -5,7 +5,7 @@
* @fileoverview
*/
import { Logger } from 'libs/logs/logger'
-import { config } from 'config'
+import { config } from 'config/config'
import { ByteObjectStreamAdapter } from 'libs/utils/byte-object-stream-adapter'
import { StreamByteCounter } from 'libs/utils/stream-byte-counter'
import { StreamCopy } from 'libs/utils/stream-copy'
diff --git a/examples/pipetobrowser/browser/views/error/component.html b/examples/pipetobrowser/browser/views/error/component.html
index d746a14..8669447 100644
--- a/examples/pipetobrowser/browser/views/error/component.html
+++ b/examples/pipetobrowser/browser/views/error/component.html
@@ -1,4 +1,4 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
+<link rel="import" href="../../third-party/polymer/polymer.html">
<polymer-element name="p2b-error">
<template>
diff --git a/examples/pipetobrowser/browser/views/loading/component.html b/examples/pipetobrowser/browser/views/loading/component.html
index 0483301..77e5a29 100644
--- a/examples/pipetobrowser/browser/views/loading/component.html
+++ b/examples/pipetobrowser/browser/views/loading/component.html
@@ -1,4 +1,4 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
+<link rel="import" href="../../third-party/polymer/polymer.html">
<polymer-element name="p2b-loading">
<template>
diff --git a/examples/pipetobrowser/browser/views/namespace-list/component.html b/examples/pipetobrowser/browser/views/namespace-list/component.html
index e6faa7d..176c7fd 100644
--- a/examples/pipetobrowser/browser/views/namespace-list/component.html
+++ b/examples/pipetobrowser/browser/views/namespace-list/component.html
@@ -1,6 +1,6 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
-<link rel="import" href="/libs/vendor/polymer/core-list/core-list.html">
-<link rel="import" href="/libs/vendor/polymer/core-item/core-item.html">
+<link rel="import" href="../../third-party/polymer/polymer.html">
+<link rel="import" href="../../third-party/core-list/core-list.html">
+<link rel="import" href="../../third-party/core-item/core-item.html">
<polymer-element name="p2b-namespace-list" attributes="names selectable">
<template>
diff --git a/examples/pipetobrowser/browser/views/neighborhood/component.html b/examples/pipetobrowser/browser/views/neighborhood/component.html
index 7c7b797..1b93873 100644
--- a/examples/pipetobrowser/browser/views/neighborhood/component.html
+++ b/examples/pipetobrowser/browser/views/neighborhood/component.html
@@ -1,5 +1,5 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
-<link rel="import" href="/views/namespace-list/component.html">
+<link rel="import" href="../../third-party/polymer/polymer.html">
+<link rel="import" href="../../views/namespace-list/component.html">
<polymer-element name="p2b-neighborhood">
<template>
diff --git a/examples/pipetobrowser/browser/views/page/component.html b/examples/pipetobrowser/browser/views/page/component.html
index 6e6cc54..0993f2a 100644
--- a/examples/pipetobrowser/browser/views/page/component.html
+++ b/examples/pipetobrowser/browser/views/page/component.html
@@ -1,15 +1,28 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
-<link rel="import" href="/libs/vendor/polymer/core-drawer-panel/core-drawer-panel.html">
-<link rel="import" href="/libs/vendor/polymer/core-header-panel/core-header-panel.html">
-<link rel="import" href="/libs/vendor/polymer/core-toolbar/core-toolbar.html">
-<link rel="import" href="/libs/vendor/polymer/core-menu/core-menu.html">
-<link rel="import" href="/libs/vendor/polymer/core-item/core-item.html">
-<link rel="import" href="/libs/vendor/polymer/core-selector/core-selector.html">
-<link rel="import" href="/libs/vendor/polymer/paper-appbar/paper-appbar.html">
-<link rel="import" href="/libs/vendor/polymer/paper-icon-button/paper-icon-button.html">
-<link rel="import" href="/libs/vendor/polymer/paper-toast/paper-toast.html">
-<link rel="import" href="/libs/vendor/polymer/core-icons/iconsets/hardware-icons.html">
-<link rel="import" href="/libs/vendor/polymer/core-icons/iconsets/social-icons.html">
+<!--TODO(aghassemi) These paths needs to be relative until issue:
+https://github.com/Polymer/vulcanize/pull/36 is merged
+otherwise they won't get vulcanized -->
+<link rel="import" href="../../third-party/polymer/polymer.html">
+<link rel="import" href="../../third-party/core-drawer-panel/core-drawer-panel.html">
+<link rel="import" href="../../third-party/core-header-panel/core-header-panel.html">
+<link rel="import" href="../../third-party/core-toolbar/core-toolbar.html">
+<link rel="import" href="../../third-party/core-menu/core-menu.html">
+<link rel="import" href="../../third-party/core-item/core-item.html">
+<link rel="import" href="../../third-party/core-selector/core-selector.html">
+<link rel="import" href="../../third-party/paper-icon-button/paper-icon-button.html">
+<link rel="import" href="../../third-party/paper-toast/paper-toast.html">
+<link rel="import" href="../../third-party/core-icons/iconsets/hardware-icons.html">
+<link rel="import" href="../../third-party/core-icons/iconsets/social-icons.html">
+<link rel="import" href="../../views/publish/component.html"/>
+<link rel="import" href="../../views/status/component.html"/>
+<link rel="import" href="../../views/error/component.html"/>
+<link rel="import" href="../../views/loading/component.html"/>
+<link rel="import" href="../../views/pipes/component.html"/>
+<link rel="import" href="../../views/redirect-pipe-dialog/component.html"/>
+<link rel="import" href="../../views/neighborhood/component.html"/>
+<link rel="import" href="../../pipe-viewers/builtin/console/component.html"/>
+<link rel="import" href="../../pipe-viewers/builtin/git/status/component.html"/>
+<link rel="import" href="../../pipe-viewers/builtin/vlog/component.html"/>
+<link rel="import" href="../../libs/ui-components/blackhole/component.html"/>
<link href='http://fonts.googleapis.com/css?family=Roboto' rel='stylesheet' type='text/css'>
diff --git a/examples/pipetobrowser/browser/views/pipes/component.html b/examples/pipetobrowser/browser/views/pipes/component.html
index ad47a07..9558d16 100644
--- a/examples/pipetobrowser/browser/views/pipes/component.html
+++ b/examples/pipetobrowser/browser/views/pipes/component.html
@@ -1,10 +1,10 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
-<link rel="import" href="/libs/vendor/polymer/core-pages/core-pages.html">
-<link rel="import" href="/libs/vendor/polymer/core-icons/core-icons.html">
-<link rel="import" href="/libs/vendor/polymer/core-icon-button/core-icon-button.html">
-<link rel="import" href="/libs/vendor/polymer/core-toolbar/core-toolbar.html">
-<link rel="import" href="/libs/vendor/polymer/core-selector/core-selector.html">
-<link rel="import" href="/libs/vendor/polymer/paper-tabs/paper-tabs.html">
+<link rel="import" href="../../third-party/polymer/polymer.html">
+<link rel="import" href="../../third-party/core-pages/core-pages.html">
+<link rel="import" href="../../third-party/core-icons/core-icons.html">
+<link rel="import" href="../../third-party/core-icon-button/core-icon-button.html">
+<link rel="import" href="../../third-party/core-toolbar/core-toolbar.html">
+<link rel="import" href="../../third-party/core-selector/core-selector.html">
+<link rel="import" href="../../third-party/paper-tabs/paper-tabs.html">
<link rel="import" href="tab-content/component.html">
<link rel="import" href="tab-toolbar/component.html">
diff --git a/examples/pipetobrowser/browser/views/pipes/tab-content/component.html b/examples/pipetobrowser/browser/views/pipes/tab-content/component.html
index 64810ac..0f18ddd 100644
--- a/examples/pipetobrowser/browser/views/pipes/tab-content/component.html
+++ b/examples/pipetobrowser/browser/views/pipes/tab-content/component.html
@@ -1,5 +1,5 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
-<link rel="import" href="/libs/vendor/polymer/core-toolbar/core-toolbar.html">
+<link rel="import" href="../../../third-party/polymer/polymer.html">
+<link rel="import" href="../../../third-party/core-toolbar/core-toolbar.html">
<polymer-element name="p2b-pipes-tab-content" flex>
<template>
diff --git a/examples/pipetobrowser/browser/views/pipes/tab-toolbar/component.html b/examples/pipetobrowser/browser/views/pipes/tab-toolbar/component.html
index f34f1ee..25799ef 100644
--- a/examples/pipetobrowser/browser/views/pipes/tab-toolbar/component.html
+++ b/examples/pipetobrowser/browser/views/pipes/tab-toolbar/component.html
@@ -1,5 +1,5 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
-<link rel="import" href="/libs/vendor/polymer/paper-icon-button/paper-icon-button.html">
+<link rel="import" href="../../../third-party/polymer/polymer.html">
+<link rel="import" href="../../../third-party/paper-icon-button/paper-icon-button.html">
<polymer-element name="p2b-pipes-tab-toolbar">
<template>
diff --git a/examples/pipetobrowser/browser/views/publish/component.html b/examples/pipetobrowser/browser/views/publish/component.html
index d17b40a..9396a11 100644
--- a/examples/pipetobrowser/browser/views/publish/component.html
+++ b/examples/pipetobrowser/browser/views/publish/component.html
@@ -1,6 +1,6 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
-<link rel="import" href="/libs/vendor/polymer/paper-input/paper-input.html">
-<link rel="import" href="/libs/vendor/polymer/paper-button/paper-button.html">
+<link rel="import" href="../../third-party/polymer/polymer.html">
+<link rel="import" href="../../third-party/paper-input/paper-input.html">
+<link rel="import" href="../../third-party/paper-button/paper-button.html">
<polymer-element name="p2b-publish" attributes="publishState">
diff --git a/examples/pipetobrowser/browser/views/redirect-pipe-dialog/component.html b/examples/pipetobrowser/browser/views/redirect-pipe-dialog/component.html
index d23a326..9ede48c 100644
--- a/examples/pipetobrowser/browser/views/redirect-pipe-dialog/component.html
+++ b/examples/pipetobrowser/browser/views/redirect-pipe-dialog/component.html
@@ -1,9 +1,9 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
-<link rel="import" href="/libs/vendor/polymer/paper-input/paper-input.html">
-<link rel="import" href="/libs/vendor/polymer/paper-button/paper-button.html">
-<link rel="import" href="/libs/vendor/polymer/paper-dialog/paper-dialog.html">
-<link rel="import" href="/libs/vendor/polymer/paper-dialog/paper-dialog-transition.html">
-<link rel="import" href="/views/namespace-list/component.html">
+<link rel="import" href="../../third-party/polymer/polymer.html">
+<link rel="import" href="../../third-party/paper-input/paper-input.html">
+<link rel="import" href="../../third-party/paper-button/paper-button.html">
+<link rel="import" href="../../third-party/paper-dialog/paper-dialog.html">
+<link rel="import" href="../../third-party/paper-dialog/paper-dialog-transition.html">
+<link rel="import" href="../../views/namespace-list/component.html">
<polymer-element name="p2b-redirect-pipe-dialog">
diff --git a/examples/pipetobrowser/browser/views/status/component.html b/examples/pipetobrowser/browser/views/status/component.html
index bee803f..ca511a2 100644
--- a/examples/pipetobrowser/browser/views/status/component.html
+++ b/examples/pipetobrowser/browser/views/status/component.html
@@ -1,4 +1,4 @@
-<link rel="import" href="/libs/vendor/polymer/polymer/polymer.html">
+<link rel="import" href="../../third-party/polymer/polymer.html">
<polymer-element name="p2b-status" attributes="status">
diff --git a/examples/pipetobrowser/p2b/main.go b/examples/pipetobrowser/cli/main.go
similarity index 100%
rename from examples/pipetobrowser/p2b/main.go
rename to examples/pipetobrowser/cli/main.go
diff --git a/examples/pipetobrowser/package.json b/examples/pipetobrowser/package.json
new file mode 100644
index 0000000..8c76a73
--- /dev/null
+++ b/examples/pipetobrowser/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "pipe-to-browser",
+ "version": "0.0.1",
+ "description": "P2B allows one to pipe anything from shell console to the browser. Data being piped to the browser then is displayed in a graphical and formatted way by a 'viewer' Viewers are pluggable pieces of code that know how to handle and display a stream of data.",
+ "devDependencies": {
+ "jspm": "~0.6.7",
+ "vulcanize": "~0.3.0",
+ "serve": "~1.4.0",
+ "bower": "~1.3.7"
+ }
+}