diff --git a/.gitignore b/.gitignore index 82756e3..d53c195 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,7 @@ build/Release ehthumbs.db Icon? Thumbs.db +.idea # Node Files # node_modules diff --git a/CHANGELOG.md b/CHANGELOG.md index e69de29..6dd6d87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -0,0 +1,6 @@ +# v0.0.1 - Update to Angular 2 Beta (2016-01-07) + +* Upgraded to work with Angular 2 Beta 0 +* Removed Fetch API in favor of Angular 2 Http +* Included [angular2-jwt](https://github.com/auth0/angular2-jwt) for authenticated API calls + diff --git a/LICENSE b/LICENSE index d7e64a7..569e7a1 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2015 PatrickJS +Copyright (c) 2015-2016 Auth0, Inc. (http://auth0.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -19,4 +19,3 @@ 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. - diff --git a/Readme.md b/Readme.md index 5567d08..a4413c7 100644 --- a/Readme.md +++ b/Readme.md @@ -1,179 +1,34 @@ -

- Webpack and Angular 2 -

+# Angular 2: Authentication sample. -# Angular2 Webpack Starter [![Join the chat at https://gitter.im/angular-class/angular2-webpack-starter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/angular-class/angular2-webpack-starter?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +This sample shows how to create an angular 2 app that: +* Has **lots of different routes** +* Performs **authentication with JWTs** +* **Calls APIs** authenticated and not. +* Extends the **RouterOutlet** for route pipeline changes. -> A starter kit featuring [Angular 2](https://angular.io) ([Router](https://angular.io/docs/js/latest/api/router/), [Forms](https://angular.io/docs/js/latest/api/forms/), [Services](https://gist.github.com/gdi2290/634101fec1671ee12b3e#_follow_@AngularClass_on_twitter)), [TypeScript](http://www.typescriptlang.org/), and [Webpack](http://webpack.github.io/) by [AngularClass](https://angularclass.com). +You can **learn more about how it works in the following blogposts** -> If you're looking for Angular 1.x please use [NG6-starter](https://github.com/angular-class/NG6-starter) +* [Angular 2 Authentication Tutorial](https://auth0.com/blog/angular-2-authentication/) +* [Protecting Routes using Guards in Angular 2](http://blog.thoughtram.io/angular/2016/07/18/guards-in-angular-2.html) +* [Angular 2 authentication revisited](https://medium.com/@blacksonic86/angular-2-authentication-revisited-611bf7373bf9) -This repo serves as an extremely minimal starter for anyone looking to get up and running with Angular 2 and TypeScript. Using a [Webpack](http://webpack.github.io/) for building our files and assisting with boilerplate. -* Best practice in file organization for Angular 2. -* Ready to go build system using Webpack for working with TypeScript. +## Running it -### Quick start -> Clone/Download the repo then edit `app.ts` inside [`/src/app/components/app.ts`](/src/app/components/app.ts) +Clone this repository as well as [the server](https://github.com/auth0/nodejs-jwt-authentication-sample) for this example. -```bash -$ npm start # then open your browser and go to http://localhost:8080 -``` +First, run the server app in the port `3001`. +Then, run `npm install` on this project and run `npm start` to start the app. Then just navigate to [http://localhost:3000](http://localhost:3000) :boom: +Use `npm run server` to run API server. -## File Structure -We use the component approach in our starter. This is the new standard for developing Angular apps and a great way to ensure maintainable code by encapsulation of our behavior logic. A component is basically a self contained app usually in a single file or a folder with each concern as a file: style, template, specs, e2e, and component class. Here's how it looks: -``` -angular2-webpack-starter/ - ├──public/ * static assets are served here - │ ├──lib/ * static libraries - │ │ └──traceur-runtime.min.js * ignore this file. This is needed to polyfill the browser to for ES6 features to similarly - │ │ - │ ├──favicon.ico * replace me with your own favicon.ico - │ ├──service-worker.js * ignore this. Web App service worker that's not complete yet - │ ├──robots.txt * for search engines to crawl your website - │ ├──human.txt * for humans to know who the developers are - │ │ - │ └──index.html * Index.html: where we place our script tags - │ - ├──src/ * our source files that will be compiled to javascript - │ ├──app/ * WebApp folder - │ │ ├──bootstrap.ts * entry file for app - │ │ │ - │ │ ├──components/ * where most of components live - │ │ │ ├──todo.ts * an example of a component using a service and forms - │ │ │ ├──dashboard.ts * a simple Component with a simple Directive example - │ │ │ │ - │ │ │ ├──home/ * example component as a folder - │ │ │ │ ├──home.ts * how you would require your template and style files - │ │ │ │ ├──home.css * simple css file for home styles - │ │ │ │ └──home.html * simple html file for home template - │ │ │ │ - │ │ │ └──app.ts * App.ts: entry file for components - │ │ │ - │ │ ├──services/ * where we keep our services used throughout our app - │ │ │ ├──TodoService.ts * an example of a simple service - │ │ │ └──services.ts * where we gather our injectables from our services - │ │ │ - │ │ └──directives/ * where we keep our directives used throughout our app - │ │ ├──Autofocus.ts * another simple directive to fix a problem with the router - │ │ └──directives.ts * where we gather our directives from our directives - │ │ - │ └──common/ * where common files used throughout our app - │ ├──shadowDomInjectables.ts * determind if the user is on chrome and use ShadowDom - │ ├──jitInjectables.ts * turn on Just-In-Time Change Detection - │ ├──formInjectables.ts * services exported by angular/forms which is the FormBuilder - │ └──BrowserDomAdapter.ts * ignore this. we need to set the DomAdapter to the browser - │ - ├──typings/ * where tsd defines it's types definitions - │ ├──_custom/ * where we define our custom types - │ │ ├──ng2.d.ts * where we patch angular2 types with our own types until it's fixed - │ │ └──custom.d.ts * we include all of our custom types here - │ │ - │ ├──angular2/ - │ │ └──angular2.d.ts * our Angular 2 type definitions - │ │ - │ ├──es6-promise/ - │ │ └──es6-promise.d.ts * ES6 promises type definitions - │ │ - │ ├──rx/ - │ │ ├──rx-lite.d.ts * rx-lite type definitions - │ │ └──rx.d.ts * rx type definitions - │ │ - │ └──tsd.d.ts.ts * our main file for all of our type definitions - │ - ├──tsconfig.json * config that webpack uses for typescript - ├──tsd.json * config that tsd uses for managing it's definitions - ├──package.json * what npm uses to manage it's dependencies - └──webpack.config.js * our webpack config -``` +## Issue Reporting -# Getting Started -## Dependencies -What you need to run this app: -* `node` and `npm` (`brew install node`) -* Ensure you're running the latest versions Node `v0.12.2`+ and NPM `2.10.0`+ +If you have found a bug or if you have a feature request, please report them at this repository issues section. Please do not report security vulnerabilities on the public GitHub issue tracker. The [Responsible Disclosure Program](https://auth0.com/whitehat) details the procedure for disclosing security issues. -Once you have those, you should install these globals with `npm install -global`: -* `webpack` (`npm install -global webpack`) -* `webpack-dev-server` (`npm install -global webpack-dev-server`) +## Author -## Installing -* `fork` this repo -* `clone` your fork -* `npm install` to install all dependencies -* `npm run server` to start the server +[Auth0](auth0.com) -## Running the app -After you have installed all dependencies you can now run the app. Run `npm server` to start a local server using `webpack-dev-server` which will watch, build (in-memory), and reload for you. The port will be displayed to you as `http://localhost:8080`. - -### server -```bash -$ npm run server -``` +## License -### build files -```bash -$ npm run build -``` - -### watch and build files -```bash -$ npm run watch -``` - -# TypeScript -> To take full advantage of TypeScript with autocomplete you would have to install it globally and use an editor with the correct TypeScript plugins. - -## Use latest TypeScript compiler -TypeScript 1.5 beta includes everything you need. Make sure to upgrade, even if you installed TypeScript previously. - - $ npm install -global typescript@^1.5.0-beta - -## .d.ts Typings -The typings in `typings/` are partially autogenerated, partially hand -written. All the symbols should be present, but probably have wrong paramaters -and missing members. Modify them as you go. - - $ npm install -global tsd - > You may need to require `reference path` for your editor to autocomplete correctly - ``` - /// - /// - ``` - Otherwise including them in `tsd.json` is prefered - -## Use a TypeScript-aware editor -We have good experience using these editors: - -* [Visual Studio Code](https://code.visualstudio.com/) -* [Webstorm 10](https://www.jetbrains.com/webstorm/download/) -* [Atom](https://atom.io/) with [TypeScript plugin](https://atom.io/packages/atom-typescript) -* [Sublime Text](http://www.sublimetext.com/3) with [Typescript-Sublime-Plugin](https://github.com/Microsoft/Typescript-Sublime-plugin#installation) - -## Frequently asked questions -* Why we are using traceur? This is due to Angular 2 not being fully migrated to TypeScript and will be removed soon. -* What's the current browser support for Angular 2 Alpha? as of version 2.0.0-alpha.26: Chrome (43, 44, 45), Firefox (37, 39, 40), IE 11, Safari 8, iOS 8, Android 5.1 (Chrome Mobile 39). -* What is the TypeScript warning "Value of type 'typeof Directive' is not callable. Did you mean to include 'new'?"? This is an error with the typings defined in DefinitelyTyped (please ignore until it's fixed) - -### Todo -- [ ] production/development environments -- [ ] testing -- [ ] e2e -- [ ] production services examples -- [ ] hot-component-reloading - -# Starter Kit Support and Questions -> Contact us anytime for anything about this repo - -* [Gitter: angular-class/angular2-webpack-starter](https://gitter.im/angular-class/angular2-webpack-starter) -* [Twitter: @AngularClass](https://twitter.com/AngularClass) - -___ - -enjoy — **AngularClass** - -

- -[![AngularClass](https://angularclass.com/images/ng-crown.svg "Angular Class")](https://angularclass.com) -##[AngularClass](https://angularclass.com) -> Learn Angular in 2 days from the best +This project is licensed under the MIT license. See the [LICENSE](LICENSE) file for more info. diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 0000000..3ec544c --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +.env \ No newline at end of file diff --git a/backend/README.md b/backend/README.md new file mode 100644 index 0000000..5a1ba3f --- /dev/null +++ b/backend/README.md @@ -0,0 +1,50 @@ +# NODE TODO API + +This is a NodeJS full API that you can use to test with your SPAs or Mobile apps. + +## How to use it + +This service is deployed in Heroku and saves the TODOs in memory, so once the dyno dies, all the todos are removed. + +It's deployed on [http://auth0-todo-test-api.herokuapp.com/](http://auth0-todo-test-api.herokuapp.com/) + +## Available APIs + +### Open API + +The Open API lets anyone do CRUD operation on a set of TODOs. This means that you can add a TODO and then John Doe can delete it. + +Available methods: + +* **POST /api/open/todos**: Adds a new TODO +* **PUT /api/open/todos/:id**: Updates the TODO with id `id` +* **GET /api/open/todos/:id**: Returns the TODO with id `id` +* **DELETE /api/open/todos/:id**: Deletes the TODO with id `id` +* **GET /api/open/todos**: Gets all fo the TODOs + +### User based API + +You can use this API to save TODO items for a particular user. For that, you need to use Auth0 to get the `id_token` (JWT) and send it in every request as part of the `Authorization` header. + +This server validates JWT from the following account: + +* **Domain**: `samples.auth0.com` +* **ClientID**: `BUIJSW9x60sIHBw8Kd9EmCbj8eDIFxDC` + +Available methods: + +* **POST /api/todos**: Adds a new TODO +* **PUT /api/todos/:id**: Updates the TODO with id `id` +* **GET /api/todos/:id**: Returns the TODO with id `id` +* **DELETE /api/todos/:id**: Deletes the TODO with id `id` +* **GET /api/todos**: Gets all fo the TODOs + +## Running this for your Auth0 account + +If you want, you can run this server for YOUR Auth0 account. For that, you just need to create a `.env` file and set the `AUTH0_CLIENT_ID` and `AUTH0_CLIENT_SECRET` variables with the information from your account: + +````bash +AUTH0_CLIENT_ID=YourClientId +AUTH0_CLIENT_SECRET=YourClientSecret +```` + diff --git a/backend/anonymous-routes.js b/backend/anonymous-routes.js new file mode 100644 index 0000000..a07deb0 --- /dev/null +++ b/backend/anonymous-routes.js @@ -0,0 +1,8 @@ +var express = require('express'), + quoter = require('./quoter'); + +var app = module.exports = express.Router(); + +app.get('/api/random-quote', function(req, res) { + res.status(200).send(quoter.getRandomOne()); +}); diff --git a/backend/config.json b/backend/config.json new file mode 100644 index 0000000..11652ae --- /dev/null +++ b/backend/config.json @@ -0,0 +1,3 @@ +{ + "secret": "ngEurope rocks!" +} diff --git a/backend/package.json b/backend/package.json new file mode 100644 index 0000000..9323917 --- /dev/null +++ b/backend/package.json @@ -0,0 +1,35 @@ +{ + "name": "chuck-norris-quotes-api", + "version": "0.1.0", + "description": "Chuck Norris Quotes API", + "main": "server.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "https://github.com/auth0/angular2-authentication-sample" + }, + "keywords": [ + "jwt", + "auth0" + ], + "author": "Martin Gontovnikas", + "license": "MIT", + "bugs": { + "url": "https://github.com/auth0/in-memory-todo/issues" + }, + "homepage": "https://github.com/auth0/in-memory-todo", + "dependencies": { + "body-parser": "^1.15.0", + "compression": "^1.6.1", + "cors": "^2.7.1", + "dotenv": "^0.4.0", + "errorhandler": "^1.4.3", + "express": "^4.13.4", + "express-jwt": "^0.3.2", + "jsonwebtoken": "^1.3.0", + "lodash": "^2.4.2", + "morgan": "^1.7.0" + } +} diff --git a/backend/protected-routes.js b/backend/protected-routes.js new file mode 100644 index 0000000..275f469 --- /dev/null +++ b/backend/protected-routes.js @@ -0,0 +1,16 @@ +var express = require('express'), + jwt = require('express-jwt'), + config = require('./config'), + quoter = require('./quoter'); + +var app = module.exports = express.Router(); + +var jwtCheck = jwt({ + secret: config.secret +}); + +app.use('/api/protected', jwtCheck); + +app.get('/api/protected/random-quote', function(req, res) { + res.status(200).send(quoter.getRandomOne()); +}); diff --git a/backend/quoter.js b/backend/quoter.js new file mode 100644 index 0000000..a60872d --- /dev/null +++ b/backend/quoter.js @@ -0,0 +1,7 @@ +var quotes = require('./quotes.json'); + +exports.getRandomOne = function() { + var totalAmount = quotes.length; + var rand = Math.ceil(Math.random() * totalAmount); + return quotes[rand]; +} diff --git a/backend/quotes.json b/backend/quotes.json new file mode 100644 index 0000000..4f806c7 --- /dev/null +++ b/backend/quotes.json @@ -0,0 +1,46 @@ +["Chuck Norris doesn't call the wrong number. You answer the wrong phone.", +"Chuck Norris has already been to Mars; that's why there are no signs of life.", +"Chuck Norris and Superman once fought each other on a bet. The loser had to start wearing his underwear on the outside of his pants.", +"Some magicans can walk on water, Chuck Norris can swim through land.", +"Chuck Norris once urinated in a semi truck's gas tank as a joke....that truck is now known as Optimus Prime.", +"Chuck Norris doesn't flush the toilet, he scares the sh*t out of it", +"Chuck Norris counted to infinity - twice.", +"Chuck Norris can cut through a hot knife with butter", +"Chuck Norris is the reason why Waldo is hiding.", +"Death once had a near-Chuck Norris experience", +"When the Boogeyman goes to sleep every night, he checks his closet for Chuck Norris.", +"Chuck Norris can slam a revolving door.", +"Chuck Norris once kicked a horse in the chin. Its decendants are known today as Giraffes.", +"Chuck Norris will never have a heart attack. His heart isn't nearly foolish enough to attack him.", +"Chuck Norris once got bit by a rattle snake........ After three days of pain and agony ..................the rattle snake died", +"Chuck Norris can win a game of Connect Four in only three moves.", +"When Chuck Norris does a pushup, he isn't lifting himself up, he's pushing the Earth down.", +"There is no theory of evolution. Just a list of animals Chuck Norris allows to live.", +"Chuck Norris can light a fire by rubbing two ice-cubes together.", +"Chuck Norris doesn’t wear a watch. HE decides what time it is.", +"The original title for Alien vs. Predator was Alien and Predator vs Chuck Norris.", +"The film was cancelled shortly after going into preproduction. No one would pay nine dollars to see a movie fourteen seconds long.", +"Chuck Norris doesn't read books. He stares them down until he gets the information he wants.", +"Chuck Norris made a Happy Meal cry.", +"Outer space exists because it's afraid to be on the same planet with Chuck Norris.", +"If you spell Chuck Norris in Scrabble, you win. Forever.", +"Chuck Norris can make snow angels on a concrete slab.", +"Chuck Norris destroyed the periodic table, because Chuck Norris only recognizes the element of surprise.", +"Chuck Norris has to use a stunt double when he does crying scenes.", +"Chuck Norris' hand is the only hand that can beat a Royal Flush.", +"There is no theory of evolution. Just a list of creatures Chuck Norris has allowed to live.", +"Chuck Norris does not sleep. He waits.", +"Chuck Norris tells a GPS which way to go.", +"Some people wear Superman pajamas. Superman wears Chuck Norris pajamas.", +"Chuck Norris's tears cure cancer ..... to bad he has never cried", +"Chuck Norris doesn't breathe, he holds air hostage.", +"Chuck Norris had a staring contest with Medusa, and won.", +"When life hands Chuck Norris lemons, he makes orange juice.", +"When Chuck Norris goes on a picnic, the ants bring him food.", +"Chuck Norris gives Freddy Krueger nightmares.", +"They once made a Chuck Norris toilet paper, but there was a problem: It wouldn't take shit from anybody.", +"Chuck Norris can punch a cyclops between the eyes.", +"Chuck Norris doesn't mow his lawn, he stands on the porch and dares it to grow", +"Chuck Norris put out a forest fire. using only gasoline", +"Chuck Norris CAN believe it's not butter.", +"Custom t-shirts provided by Spreadshirt"] diff --git a/backend/server.js b/backend/server.js new file mode 100644 index 0000000..2eb0e85 --- /dev/null +++ b/backend/server.js @@ -0,0 +1,43 @@ +var logger = require('morgan'), + cors = require('cors'), + http = require('http'), + express = require('express'), + errorhandler = require('errorhandler'), + dotenv = require('dotenv'), + bodyParser = require('body-parser'); + +var app = express(); + +dotenv.load(); + +// Parsers +// old version of line +// app.use(bodyParser.urlencoded()); +// new version of line +app.use(bodyParser.urlencoded({ extended: true })); +app.use(bodyParser.json()); +app.use(cors()); + +app.use(function(err, req, res, next) { + if (err.name === 'StatusError') { + res.send(err.status, err.message); + } else { + next(err); + } +}); + +if (process.env.NODE_ENV === 'development') { + app.use(express.logger('dev')); + app.use(errorhandler()) +} + +app.use(require('./anonymous-routes')); +app.use(require('./protected-routes')); +app.use(require('./user-routes')); + +var port = process.env.PORT || 3001; + +http.createServer(app).listen(port, function (err) { + console.log('listening in http://localhost:' + port); +}); + diff --git a/backend/statusError.js b/backend/statusError.js new file mode 100644 index 0000000..8f1458c --- /dev/null +++ b/backend/statusError.js @@ -0,0 +1,14 @@ +function StatusError(msg, status) { + var err = Error.call(this, msg); + err.status = status; + err.name = 'StatusError'; + return err; +} + + +StatusError.prototype = Object.create(Error.prototype, { + constructor: { value: StatusError } +}); + +module.exports = StatusError; + diff --git a/backend/user-routes.js b/backend/user-routes.js new file mode 100644 index 0000000..54e2b17 --- /dev/null +++ b/backend/user-routes.js @@ -0,0 +1,54 @@ +var express = require('express'), + _ = require('lodash'), + config = require('./config'), + jwt = require('jsonwebtoken'); + +var app = module.exports = express.Router(); + +// XXX: This should be a database of users :). +var users = [{ + id: 1, + username: 'gonto', + password: 'gonto' +}]; + +function createToken(user) { + return jwt.sign(_.omit(user, 'password'), config.secret, { expiresInMinutes: 60*5 }); +} + +app.post('/users', function(req, res) { + if (!req.body.username || !req.body.password) { + return res.status(400).send("You must send the username and the password"); + } + if (_.find(users, {username: req.body.username})) { + return res.status(400).send("A user with that username already exists"); + } + + var profile = _.pick(req.body, 'username', 'password', 'extra'); + profile.id = _.max(users, 'id').id + 1; + + users.push(profile); + + res.status(201).send({ + id_token: createToken(profile) + }); +}); + +app.post('/sessions/create', function(req, res) { + if (!req.body.username || !req.body.password) { + return res.status(400).send("You must send the username and the password"); + } + + var user = _.find(users, {username: req.body.username}); + if (!user) { + return res.status(401).send("The username or password don't match"); + } + + if (!(user.password === req.body.password)) { + return res.status(401).send("The username or password don't match"); + } + + res.status(201).send({ + id_token: createToken(user) + }); +}); diff --git a/index.html b/index.html index 7c4e502..85fd67c 100644 --- a/index.html +++ b/index.html @@ -11,9 +11,7 @@ - - - + @@ -25,7 +23,7 @@ - + diff --git a/lib/traceur-runtime.js b/lib/traceur-runtime.js deleted file mode 100644 index 2b0b35f..0000000 --- a/lib/traceur-runtime.js +++ /dev/null @@ -1,3502 +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 $keys = $Object.keys; - var $hasOwnProperty = $Object.prototype.hasOwnProperty; - var $toString = $Object.prototype.toString; - var $preventExtensions = Object.preventExtensions; - var $seal = Object.seal; - var $isExtensible = Object.isExtensible; - var $apply = Function.prototype.call.bind(Function.prototype.apply); - function $bind(operand, thisArg, args) { - var argArray = [thisArg]; - for (var i = 0; i < args.length; i++) { - argArray[i + 1] = args[i]; - } - var func = $apply(Function.prototype.bind, operand, argArray); - return func; - } - function $construct(func, argArray) { - var object = new ($bind(func, null, argArray)); - return object; - } - var counter = 0; - function newUniqueString() { - return '__$' + Math.floor(Math.random() * 1e9) + '$' + ++counter + '$__'; - } - var privateNames = $create(null); - function isPrivateName(s) { - return privateNames[s]; - } - function createPrivateName() { - var s = newUniqueString(); - privateNames[s] = true; - return s; - } - var CONTINUATION_TYPE = Object.create(null); - function createContinuation(operand, thisArg, argsArray) { - return [CONTINUATION_TYPE, operand, thisArg, argsArray]; - } - function isContinuation(object) { - return object && object[0] === CONTINUATION_TYPE; - } - var isTailRecursiveName = null; - function setupProperTailCalls() { - isTailRecursiveName = createPrivateName(); - Function.prototype.call = initTailRecursiveFunction(function call(thisArg) { - var result = tailCall(function(thisArg) { - var argArray = []; - for (var i = 1; i < arguments.length; ++i) { - argArray[i - 1] = arguments[i]; - } - var continuation = createContinuation(this, thisArg, argArray); - return continuation; - }, this, arguments); - return result; - }); - Function.prototype.apply = initTailRecursiveFunction(function apply(thisArg, argArray) { - var result = tailCall(function(thisArg, argArray) { - var continuation = createContinuation(this, thisArg, argArray); - return continuation; - }, this, arguments); - return result; - }); - } - function initTailRecursiveFunction(func) { - if (isTailRecursiveName === null) { - setupProperTailCalls(); - } - func[isTailRecursiveName] = true; - return func; - } - function isTailRecursive(func) { - return !!func[isTailRecursiveName]; - } - function tailCall(func, thisArg, argArray) { - var continuation = argArray[0]; - if (isContinuation(continuation)) { - continuation = $apply(func, thisArg, continuation[3]); - return continuation; - } - continuation = createContinuation(func, thisArg, argArray); - while (true) { - if (isTailRecursive(func)) { - continuation = $apply(func, continuation[2], [continuation]); - } else { - continuation = $apply(func, continuation[2], continuation[3]); - } - if (!isContinuation(continuation)) { - return continuation; - } - func = continuation[1]; - } - } - function construct() { - var object; - if (isTailRecursive(this)) { - object = $construct(this, [createContinuation(null, null, arguments)]); - } else { - object = $construct(this, arguments); - } - return object; - } - var $traceurRuntime = { - initTailRecursiveFunction: initTailRecursiveFunction, - call: tailCall, - continuation: createContinuation, - construct: construct - }; - (function() { - function nonEnum(value) { - return { - configurable: true, - enumerable: false, - value: value, - writable: true - }; - } - var method = nonEnum; - var symbolInternalProperty = newUniqueString(); - var symbolDescriptionProperty = newUniqueString(); - var symbolDataProperty = newUniqueString(); - var symbolValues = $create(null); - function isShimSymbol(symbol) { - return typeof symbol === 'object' && symbol instanceof SymbolValue; - } - function typeOf(v) { - if (isShimSymbol(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]; - return symbolValue[symbolInternalProperty]; - })); - $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 - }); - var hashProperty = createPrivateName(); - var hashPropertyDescriptor = {value: undefined}; - var hashObjectProperties = { - hash: {value: undefined}, - self: {value: undefined} - }; - var hashCounter = 0; - function getOwnHashObject(object) { - var hashObject = object[hashProperty]; - if (hashObject && hashObject.self === object) - return hashObject; - if ($isExtensible(object)) { - hashObjectProperties.hash.value = hashCounter++; - hashObjectProperties.self.value = object; - hashPropertyDescriptor.value = $create(null, hashObjectProperties); - $defineProperty(object, hashProperty, hashPropertyDescriptor); - return hashPropertyDescriptor.value; - } - return undefined; - } - function freeze(object) { - getOwnHashObject(object); - return $freeze.apply(this, arguments); - } - function preventExtensions(object) { - getOwnHashObject(object); - return $preventExtensions.apply(this, arguments); - } - function seal(object) { - getOwnHashObject(object); - return $seal.apply(this, arguments); - } - freeze(SymbolValue.prototype); - function isSymbolString(s) { - return symbolValues[s] || privateNames[s]; - } - function toProperty(name) { - if (isShimSymbol(name)) - return name[symbolInternalProperty]; - return name; - } - function removeSymbolKeys(array) { - var rv = []; - for (var i = 0; i < array.length; i++) { - if (!isSymbolString(array[i])) { - rv.push(array[i]); - } - } - return rv; - } - function getOwnPropertyNames(object) { - return removeSymbolKeys($getOwnPropertyNames(object)); - } - function keys(object) { - return removeSymbolKeys($keys(object)); - } - 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 getOwnPropertyDescriptor(object, name) { - return $getOwnPropertyDescriptor(object, toProperty(name)); - } - function hasOwnProperty(name) { - return $hasOwnProperty.call(this, toProperty(name)); - } - function getOption(name) { - return global.$traceurRuntime.options[name]; - } - function defineProperty(object, name, descriptor) { - if (isShimSymbol(name)) { - 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}); - $defineProperty(Object, 'freeze', {value: freeze}); - $defineProperty(Object, 'preventExtensions', {value: preventExtensions}); - $defineProperty(Object, 'seal', {value: seal}); - $defineProperty(Object, 'keys', {value: keys}); - } - function exportStar(object) { - for (var i = 1; i < arguments.length; i++) { - var names = $getOwnPropertyNames(arguments[i]); - for (var j = 0; j < names.length; j++) { - var name = names[j]; - if (name === '__esModule' || name === 'default' || isSymbolString(name)) - continue; - (function(mod, name) { - $defineProperty(object, name, { - get: function() { - return mod[name]; - }, - enumerable: true - }); - })(arguments[i], names[j]); - } - } - return object; - } - function isObject(x) { - return x != null && (typeof x === 'object' || typeof x === 'function'); - } - function toObject(x) { - if (x == null) - throw $TypeError(); - return $Object(x); - } - function checkObjectCoercible(argument) { - if (argument == null) { - throw new TypeError('Value cannot be converted to an Object'); - } - return argument; - } - var hasNativeSymbol; - function polyfillSymbol(global, Symbol) { - if (!global.Symbol) { - global.Symbol = Symbol; - Object.getOwnPropertySymbols = getOwnPropertySymbols; - hasNativeSymbol = false; - } else { - hasNativeSymbol = true; - } - if (!global.Symbol.iterator) { - global.Symbol.iterator = Symbol('Symbol.iterator'); - } - if (!global.Symbol.observer) { - global.Symbol.observer = Symbol('Symbol.observer'); - } - } - function hasNativeSymbolFunc() { - return hasNativeSymbol; - } - function setupGlobals(global) { - polyfillSymbol(global, Symbol); - global.Reflect = global.Reflect || {}; - global.Reflect.global = global.Reflect.global || global; - polyfillObject(global.Object); - } - setupGlobals(global); - global.$traceurRuntime = { - call: tailCall, - checkObjectCoercible: checkObjectCoercible, - construct: construct, - continuation: createContinuation, - createPrivateName: createPrivateName, - defineProperties: $defineProperties, - defineProperty: $defineProperty, - exportStar: exportStar, - getOwnHashObject: getOwnHashObject, - getOwnPropertyDescriptor: $getOwnPropertyDescriptor, - getOwnPropertyNames: $getOwnPropertyNames, - hasNativeSymbol: hasNativeSymbolFunc, - initTailRecursiveFunction: initTailRecursiveFunction, - isObject: isObject, - isPrivateName: isPrivateName, - isSymbolString: isSymbolString, - keys: $keys, - options: {}, - setupGlobals: setupGlobals, - toObject: toObject, - toProperty: toProperty, - typeof: typeOf - }; - })(); -})(typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : 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 $__1 = $traceurRuntime, - canonicalizeUrl = $__1.canonicalizeUrl, - resolveUrl = $__1.resolveUrl, - isAbsolute = $__1.isAbsolute; - var moduleInstantiators = Object.create(null); - var baseURL; - if (global.location && global.location.href) - baseURL = resolveUrl(global.location.href, './'); - else - baseURL = ''; - function UncoatedModuleEntry(url, uncoatedModule) { - this.url = url; - this.value_ = uncoatedModule; - } - function ModuleEvaluationError(erroneousModuleName, cause) { - this.message = this.constructor.name + ': ' + this.stripCause(cause) + ' in ' + erroneousModuleName; - if (!(cause instanceof ModuleEvaluationError) && cause.stack) - this.stack = this.stripStack(cause.stack); - else - this.stack = ''; - } - ModuleEvaluationError.prototype = Object.create(Error.prototype); - ModuleEvaluationError.prototype.constructor = ModuleEvaluationError; - ModuleEvaluationError.prototype.stripError = function(message) { - return message.replace(/.*Error:/, this.constructor.name + ':'); - }; - ModuleEvaluationError.prototype.stripCause = function(cause) { - if (!cause) - return ''; - if (!cause.message) - return cause + ''; - return this.stripError(cause.message); - }; - ModuleEvaluationError.prototype.loadedBy = function(moduleName) { - this.stack += '\n loaded by ' + moduleName; - }; - ModuleEvaluationError.prototype.stripStack = function(causeStack) { - var stack = []; - causeStack.split('\n').some(function(frame) { - if (/UncoatedModuleInstantiator/.test(frame)) - return true; - stack.push(frame); - }); - stack[0] = this.stripError(stack[0]); - return stack.join('\n'); - }; - function beforeLines(lines, number) { - var result = []; - var first = number - 3; - if (first < 0) - first = 0; - for (var i = first; i < number; i++) { - result.push(lines[i]); - } - return result; - } - function afterLines(lines, number) { - var last = number + 1; - if (last > lines.length - 1) - last = lines.length - 1; - var result = []; - for (var i = number; i <= last; i++) { - result.push(lines[i]); - } - return result; - } - function columnSpacing(columns) { - var result = ''; - for (var i = 0; i < columns - 1; i++) { - result += '-'; - } - return result; - } - function UncoatedModuleInstantiator(url, func) { - UncoatedModuleEntry.call(this, url, null); - this.func = func; - } - UncoatedModuleInstantiator.prototype = Object.create(UncoatedModuleEntry.prototype); - UncoatedModuleInstantiator.prototype.getUncoatedModule = function() { - var $__0 = this; - if (this.value_) - return this.value_; - try { - var relativeRequire; - if (typeof $traceurRuntime !== undefined && $traceurRuntime.require) { - relativeRequire = $traceurRuntime.require.bind(null, this.url); - } - return this.value_ = this.func.call(global, relativeRequire); - } catch (ex) { - if (ex instanceof ModuleEvaluationError) { - ex.loadedBy(this.url); - throw ex; - } - if (ex.stack) { - var lines = this.func.toString().split('\n'); - var evaled = []; - ex.stack.split('\n').some(function(frame, index) { - if (frame.indexOf('UncoatedModuleInstantiator.getUncoatedModule') > 0) - return true; - var m = /(at\s[^\s]*\s).*>:(\d*):(\d*)\)/.exec(frame); - if (m) { - var line = parseInt(m[2], 10); - evaled = evaled.concat(beforeLines(lines, line)); - if (index === 1) { - evaled.push(columnSpacing(m[3]) + '^ ' + $__0.url); - } else { - evaled.push(columnSpacing(m[3]) + '^'); - } - evaled = evaled.concat(afterLines(lines, line)); - evaled.push('= = = = = = = = ='); - } else { - evaled.push(frame); - } - }); - ex.stack = evaled.join('\n'); - } - throw new ModuleEvaluationError(this.url, ex); - } - }; - 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, deps, 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 && !func.length) { - this.registerModule(name, deps, func); - } else { - this.bundleStore[name] = { - deps: deps, - execute: function() { - var $__0 = arguments; - var depMap = {}; - deps.forEach(function(dep, index) { - return depMap[dep] = $__0[index]; - }); - var registryEntry = func.call(this, depMap); - registryEntry.execute.call(this); - return registryEntry.exports; - } - }; - } - }, - getAnonymousModule: function(func) { - return new Module(func.call(global), liveModuleSentinel); - } - }; - var moduleStoreModule = new Module({ModuleStore: ModuleStore}); - ModuleStore.set('@traceur/src/runtime/ModuleStore.js', moduleStoreModule); - var setupGlobals = $traceurRuntime.setupGlobals; - $traceurRuntime.setupGlobals = function(global) { - setupGlobals(global); - }; - $traceurRuntime.ModuleStore = ModuleStore; - global.System = { - register: ModuleStore.register.bind(ModuleStore), - registerModule: ModuleStore.registerModule.bind(ModuleStore), - get: ModuleStore.get, - set: ModuleStore.set, - normalize: ModuleStore.normalize - }; -})(typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : this); -System.registerModule("traceur-runtime@0.0.90/src/runtime/async.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/async.js"; - if (typeof $traceurRuntime !== 'object') { - throw new Error('traceur runtime not found.'); - } - var $createPrivateName = $traceurRuntime.createPrivateName; - var $defineProperty = $traceurRuntime.defineProperty; - var $defineProperties = $traceurRuntime.defineProperties; - var $create = Object.create; - var thisName = $createPrivateName(); - var argsName = $createPrivateName(); - var observeName = $createPrivateName(); - function AsyncGeneratorFunction() {} - function AsyncGeneratorFunctionPrototype() {} - AsyncGeneratorFunction.prototype = AsyncGeneratorFunctionPrototype; - AsyncGeneratorFunctionPrototype.constructor = AsyncGeneratorFunction; - $defineProperty(AsyncGeneratorFunctionPrototype, 'constructor', {enumerable: false}); - var AsyncGeneratorContext = function() { - function AsyncGeneratorContext(observer) { - var $__0 = this; - this.decoratedObserver = $traceurRuntime.createDecoratedGenerator(observer, function() { - $__0.done = true; - }); - this.done = false; - this.inReturn = false; - } - return ($traceurRuntime.createClass)(AsyncGeneratorContext, { - throw: function(error) { - if (!this.inReturn) { - throw error; - } - }, - yield: function(value) { - if (this.done) { - this.inReturn = true; - throw undefined; - } - var result; - try { - result = this.decoratedObserver.next(value); - } catch (e) { - this.done = true; - throw e; - } - if (result === undefined) { - return; - } - if (result.done) { - this.done = true; - this.inReturn = true; - throw undefined; - } - return result.value; - }, - yieldFor: function(observable) { - var ctx = this; - return $traceurRuntime.observeForEach(observable[$traceurRuntime.toProperty(Symbol.observer)].bind(observable), function(value) { - if (ctx.done) { - this.return(); - return; - } - var result; - try { - result = ctx.decoratedObserver.next(value); - } catch (e) { - ctx.done = true; - throw e; - } - if (result === undefined) { - return; - } - if (result.done) { - ctx.done = true; - } - return result; - }); - } - }, {}); - }(); - AsyncGeneratorFunctionPrototype.prototype[Symbol.observer] = function(observer) { - var observe = this[observeName]; - var ctx = new AsyncGeneratorContext(observer); - $traceurRuntime.schedule(function() { - return observe(ctx); - }).then(function(value) { - if (!ctx.done) { - ctx.decoratedObserver.return(value); - } - }).catch(function(error) { - if (!ctx.done) { - ctx.decoratedObserver.throw(error); - } - }); - return ctx.decoratedObserver; - }; - $defineProperty(AsyncGeneratorFunctionPrototype.prototype, Symbol.observer, {enumerable: false}); - function initAsyncGeneratorFunction(functionObject) { - functionObject.prototype = $create(AsyncGeneratorFunctionPrototype.prototype); - functionObject.__proto__ = AsyncGeneratorFunctionPrototype; - return functionObject; - } - function createAsyncGeneratorInstance(observe, functionObject) { - for (var args = [], - $__9 = 2; $__9 < arguments.length; $__9++) - args[$__9 - 2] = arguments[$__9]; - var object = $create(functionObject.prototype); - object[thisName] = this; - object[argsName] = args; - object[observeName] = observe; - return object; - } - function observeForEach(observe, next) { - return new Promise(function(resolve, reject) { - var generator = observe({ - next: function(value) { - return next.call(generator, value); - }, - throw: function(error) { - reject(error); - }, - return: function(value) { - resolve(value); - } - }); - }); - } - function schedule(asyncF) { - return Promise.resolve().then(asyncF); - } - var generator = Symbol(); - var onDone = Symbol(); - var DecoratedGenerator = function() { - function DecoratedGenerator(_generator, _onDone) { - this[generator] = _generator; - this[onDone] = _onDone; - } - return ($traceurRuntime.createClass)(DecoratedGenerator, { - next: function(value) { - var result = this[generator].next(value); - if (result !== undefined && result.done) { - this[onDone].call(this); - } - return result; - }, - throw: function(error) { - this[onDone].call(this); - return this[generator].throw(error); - }, - return: function(value) { - this[onDone].call(this); - return this[generator].return(value); - } - }, {}); - }(); - function createDecoratedGenerator(generator, onDone) { - return new DecoratedGenerator(generator, onDone); - } - Array.prototype[$traceurRuntime.toProperty(Symbol.observer)] = function(observer) { - var done = false; - var decoratedObserver = createDecoratedGenerator(observer, function() { - return done = true; - }); - var $__5 = true; - var $__6 = false; - var $__7 = undefined; - try { - for (var $__3 = void 0, - $__2 = (this)[$traceurRuntime.toProperty(Symbol.iterator)](); !($__5 = ($__3 = $__2.next()).done); $__5 = true) { - var value = $__3.value; - { - decoratedObserver.next(value); - if (done) { - return; - } - } - } - } catch ($__8) { - $__6 = true; - $__7 = $__8; - } finally { - try { - if (!$__5 && $__2.return != null) { - $__2.return(); - } - } finally { - if ($__6) { - throw $__7; - } - } - } - decoratedObserver.return(); - return decoratedObserver; - }; - $defineProperty(Array.prototype, $traceurRuntime.toProperty(Symbol.observer), {enumerable: false}); - $traceurRuntime.initAsyncGeneratorFunction = initAsyncGeneratorFunction; - $traceurRuntime.createAsyncGeneratorInstance = createAsyncGeneratorInstance; - $traceurRuntime.observeForEach = observeForEach; - $traceurRuntime.schedule = schedule; - $traceurRuntime.createDecoratedGenerator = createDecoratedGenerator; - return {}; -}); -System.registerModule("traceur-runtime@0.0.90/src/runtime/classes.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/classes.js"; - var $Object = Object; - var $TypeError = TypeError; - var $create = $Object.create; - var $defineProperties = $traceurRuntime.defineProperties; - var $defineProperty = $traceurRuntime.defineProperty; - var $getOwnPropertyDescriptor = $traceurRuntime.getOwnPropertyDescriptor; - var $getOwnPropertyNames = $traceurRuntime.getOwnPropertyNames; - var $getPrototypeOf = Object.getPrototypeOf; - var $__0 = Object, - getOwnPropertyNames = $__0.getOwnPropertyNames, - getOwnPropertySymbols = $__0.getOwnPropertySymbols; - function superDescriptor(homeObject, name) { - var proto = $getPrototypeOf(homeObject); - do { - var result = $getOwnPropertyDescriptor(proto, name); - if (result) - return result; - proto = $getPrototypeOf(proto); - } while (proto); - return undefined; - } - function superConstructor(ctor) { - return ctor.__proto__; - } - function superGet(self, homeObject, name) { - var descriptor = superDescriptor(homeObject, name); - if (descriptor) { - var value = descriptor.value; - if (value) - return value; - if (!descriptor.get) - return value; - return descriptor.get.call(self); - } - 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 forEachPropertyKey(object, f) { - getOwnPropertyNames(object).forEach(f); - getOwnPropertySymbols(object).forEach(f); - } - function getDescriptors(object) { - var descriptors = {}; - forEachPropertyKey(object, function(key) { - descriptors[key] = $getOwnPropertyDescriptor(object, key); - descriptors[key].enumerable = false; - }); - return descriptors; - } - var nonEnum = {enumerable: false}; - function makePropertiesNonEnumerable(object) { - forEachPropertyKey(object, function(key) { - $defineProperty(object, key, nonEnum); - }); - } - 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 { - makePropertiesNonEnumerable(object); - 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; - throw new $TypeError('super prototype must be an Object or null'); - } - if (superClass === null) - return null; - throw new $TypeError(("Super expression must either be null or a function, not " + typeof superClass + ".")); - } - $traceurRuntime.createClass = createClass; - $traceurRuntime.superConstructor = superConstructor; - $traceurRuntime.superGet = superGet; - $traceurRuntime.superSet = superSet; - return {}; -}); -System.registerModule("traceur-runtime@0.0.90/src/runtime/destructuring.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/destructuring.js"; - function iteratorToArray(iter) { - var rv = []; - var i = 0; - var tmp; - while (!(tmp = iter.next()).done) { - rv[i++] = tmp.value; - } - return rv; - } - $traceurRuntime.iteratorToArray = iteratorToArray; - return {}; -}); -System.registerModule("traceur-runtime@0.0.90/src/runtime/generators.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/generators.js"; - if (typeof $traceurRuntime !== 'object') { - throw new Error('traceur runtime not found.'); - } - var createPrivateName = $traceurRuntime.createPrivateName; - var $defineProperties = $traceurRuntime.defineProperties; - var $defineProperty = $traceurRuntime.defineProperty; - var $create = Object.create; - var $TypeError = TypeError; - function nonEnum(value) { - return { - configurable: true, - enumerable: false, - value: value, - writable: true - }; - } - 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 getInternalError(state) { - return new Error('Traceur compiler bug: invalid state in state machine: ' + state); - } - var RETURN_SENTINEL = {}; - function GeneratorContext() { - this.state = 0; - this.GState = ST_NEWBORN; - this.storedException = undefined; - this.finallyFallThrough = undefined; - this.sent_ = undefined; - this.returnValue = undefined; - this.oldReturnValue = 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(); - }, - maybeUncatchable: function() { - if (this.storedException === RETURN_SENTINEL) { - throw RETURN_SENTINEL; - } - }, - 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); - } - }, - handleException: function(ex) { - this.GState = ST_CLOSED; - this.state = END_STATE; - throw ex; - }, - wrapYieldStar: function(iterator) { - var ctx = this; - return { - next: function(v) { - return iterator.next(v); - }, - throw: function(e) { - var result; - if (e === RETURN_SENTINEL) { - if (iterator.return) { - result = iterator.return(ctx.returnValue); - if (!result.done) { - ctx.returnValue = ctx.oldReturnValue; - return result; - } - ctx.returnValue = result.value; - } - throw e; - } - if (iterator.throw) { - return iterator.throw(e); - } - iterator.return && iterator.return(); - throw $TypeError('Inner iterator does not have a throw method'); - } - }; - } - }; - function nextOrThrow(ctx, moveNext, action, x) { - switch (ctx.GState) { - case ST_EXECUTING: - throw new Error(("\"" + action + "\" on executing generator")); - case ST_CLOSED: - if (action == 'next') { - return { - value: undefined, - done: true - }; - } - if (x === RETURN_SENTINEL) { - return { - value: ctx.returnValue, - done: true - }; - } - throw x; - case ST_NEWBORN: - if (action === 'throw') { - ctx.GState = ST_CLOSED; - if (x === RETURN_SENTINEL) { - return { - value: ctx.returnValue, - done: true - }; - } - 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; - try { - value = moveNext(ctx); - } catch (ex) { - if (ex === RETURN_SENTINEL) { - value = ctx; - } else { - throw ex; - } - } - var done = value === ctx; - if (done) - value = ctx.returnValue; - ctx.GState = done ? ST_CLOSED : ST_SUSPENDED; - return { - value: value, - done: done - }; - } - } - var ctxName = createPrivateName(); - var moveNextName = createPrivateName(); - function GeneratorFunction() {} - function GeneratorFunctionPrototype() {} - GeneratorFunction.prototype = GeneratorFunctionPrototype; - $defineProperty(GeneratorFunctionPrototype, 'constructor', nonEnum(GeneratorFunction)); - GeneratorFunctionPrototype.prototype = { - constructor: GeneratorFunctionPrototype, - next: function(v) { - return nextOrThrow(this[ctxName], this[moveNextName], 'next', v); - }, - throw: function(v) { - return nextOrThrow(this[ctxName], this[moveNextName], 'throw', v); - }, - return: function(v) { - this[ctxName].oldReturnValue = this[ctxName].returnValue; - this[ctxName].returnValue = v; - return nextOrThrow(this[ctxName], this[moveNextName], 'throw', RETURN_SENTINEL); - } - }; - $defineProperties(GeneratorFunctionPrototype.prototype, { - constructor: {enumerable: false}, - next: {enumerable: false}, - throw: {enumerable: false}, - return: {enumerable: false} - }); - Object.defineProperty(GeneratorFunctionPrototype.prototype, Symbol.iterator, nonEnum(function() { - return this; - })); - function createGeneratorInstance(innerFunction, functionObject, self) { - var moveNext = getMoveNext(innerFunction, self); - var ctx = new GeneratorContext(); - var object = $create(functionObject.prototype); - object[ctxName] = ctx; - object[moveNextName] = moveNext; - return object; - } - function initGeneratorFunction(functionObject) { - functionObject.prototype = $create(GeneratorFunctionPrototype.prototype); - functionObject.__proto__ = GeneratorFunctionPrototype; - return functionObject; - } - 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 = $create(GeneratorContext.prototype); - AsyncFunctionContext.prototype.end = function() { - switch (this.state) { - case END_STATE: - this.resolve(this.returnValue); - break; - case RETHROW_STATE: - this.reject(this.storedException); - break; - default: - this.reject(getInternalError(this.state)); - } - }; - AsyncFunctionContext.prototype.handleException = function() { - this.state = RETHROW_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.errback = function(err) { - handleCatch(ctx, 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) { - handleCatch(ctx, ex); - } - } - }; - } - function handleCatch(ctx, ex) { - ctx.storedException = ex; - var last = ctx.tryStack_[ctx.tryStack_.length - 1]; - if (!last) { - ctx.handleException(ex); - return; - } - ctx.state = last.catch !== undefined ? last.catch : last.finally; - if (last.finallyFallThrough !== undefined) - ctx.finallyFallThrough = last.finallyFallThrough; - } - $traceurRuntime.asyncWrap = asyncWrap; - $traceurRuntime.initGeneratorFunction = initGeneratorFunction; - $traceurRuntime.createGeneratorInstance = createGeneratorInstance; - return {}; -}); -System.registerModule("traceur-runtime@0.0.90/src/runtime/relativeRequire.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/relativeRequire.js"; - var path; - function relativeRequire(callerPath, requiredPath) { - path = path || typeof require !== 'undefined' && require('path'); - function isDirectory(path) { - return path.slice(-1) === '/'; - } - function isAbsolute(path) { - return path[0] === '/'; - } - function isRelative(path) { - return path[0] === '.'; - } - if (isDirectory(requiredPath) || isAbsolute(requiredPath)) - return; - return isRelative(requiredPath) ? require(path.resolve(path.dirname(callerPath), requiredPath)) : require(requiredPath); - } - $traceurRuntime.require = relativeRequire; - return {}; -}); -System.registerModule("traceur-runtime@0.0.90/src/runtime/spread.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/spread.js"; - function spread() { - var rv = [], - j = 0, - iterResult; - for (var i = 0; i < arguments.length; i++) { - var valueToSpread = $traceurRuntime.checkObjectCoercible(arguments[i]); - if (typeof valueToSpread[$traceurRuntime.toProperty(Symbol.iterator)] !== 'function') { - throw new TypeError('Cannot spread non-iterable object.'); - } - var iter = valueToSpread[$traceurRuntime.toProperty(Symbol.iterator)](); - while (!(iterResult = iter.next()).done) { - rv[j++] = iterResult.value; - } - } - return rv; - } - $traceurRuntime.spread = spread; - return {}; -}); -System.registerModule("traceur-runtime@0.0.90/src/runtime/template.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/template.js"; - var $__0 = Object, - defineProperty = $__0.defineProperty, - freeze = $__0.freeze; - var slice = Array.prototype.slice; - var map = Object.create(null); - function getTemplateObject(raw) { - var cooked = arguments[1]; - var key = raw.join('${}'); - var templateObject = map[key]; - if (templateObject) - return templateObject; - if (!cooked) { - cooked = slice.call(raw); - } - return map[key] = freeze(defineProperty(cooked, 'raw', {value: freeze(raw)})); - } - $traceurRuntime.getTemplateObject = getTemplateObject; - return {}; -}); -System.registerModule("traceur-runtime@0.0.90/src/runtime/type-assertions.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/type-assertions.js"; - var types = { - any: {name: 'any'}, - boolean: {name: 'boolean'}, - number: {name: 'number'}, - string: {name: 'string'}, - symbol: {name: 'symbol'}, - void: {name: 'void'} - }; - var GenericType = function() { - function GenericType(type, argumentTypes) { - this.type = type; - this.argumentTypes = argumentTypes; - } - return ($traceurRuntime.createClass)(GenericType, {}, {}); - }(); - var typeRegister = Object.create(null); - function genericType(type) { - for (var argumentTypes = [], - $__1 = 1; $__1 < arguments.length; $__1++) - argumentTypes[$__1 - 1] = arguments[$__1]; - var typeMap = typeRegister; - var key = $traceurRuntime.getOwnHashObject(type).hash; - if (!typeMap[key]) { - typeMap[key] = Object.create(null); - } - typeMap = typeMap[key]; - for (var i = 0; i < argumentTypes.length - 1; i++) { - key = $traceurRuntime.getOwnHashObject(argumentTypes[i]).hash; - if (!typeMap[key]) { - typeMap[key] = Object.create(null); - } - typeMap = typeMap[key]; - } - var tail = argumentTypes[argumentTypes.length - 1]; - key = $traceurRuntime.getOwnHashObject(tail).hash; - if (!typeMap[key]) { - typeMap[key] = new GenericType(type, argumentTypes); - } - return typeMap[key]; - } - $traceurRuntime.GenericType = GenericType; - $traceurRuntime.genericType = genericType; - $traceurRuntime.type = types; - return {}; -}); -System.registerModule("traceur-runtime@0.0.90/src/runtime/runtime-modules.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/runtime-modules.js"; - System.get("traceur-runtime@0.0.90/src/runtime/relativeRequire.js"); - System.get("traceur-runtime@0.0.90/src/runtime/spread.js"); - System.get("traceur-runtime@0.0.90/src/runtime/destructuring.js"); - System.get("traceur-runtime@0.0.90/src/runtime/classes.js"); - System.get("traceur-runtime@0.0.90/src/runtime/async.js"); - System.get("traceur-runtime@0.0.90/src/runtime/generators.js"); - System.get("traceur-runtime@0.0.90/src/runtime/template.js"); - System.get("traceur-runtime@0.0.90/src/runtime/type-assertions.js"); - return {}; -}); -System.get("traceur-runtime@0.0.90/src/runtime/runtime-modules.js" + ''); -System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/utils.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/polyfills/utils.js"; - var $ceil = Math.ceil; - var $floor = Math.floor; - var $isFinite = isFinite; - var $isNaN = isNaN; - var $pow = Math.pow; - var $min = Math.min; - var toObject = $traceurRuntime.toObject; - function toUint32(x) { - return x >>> 0; - } - function isObject(x) { - return x && (typeof x === 'object' || typeof x === 'function'); - } - function isCallable(x) { - return typeof x === 'function'; - } - function isNumber(x) { - return typeof x === 'number'; - } - function toInteger(x) { - x = +x; - if ($isNaN(x)) - return 0; - if (x === 0 || !$isFinite(x)) - return x; - return x > 0 ? $floor(x) : $ceil(x); - } - var MAX_SAFE_LENGTH = $pow(2, 53) - 1; - function toLength(x) { - var len = toInteger(x); - return len < 0 ? 0 : $min(len, MAX_SAFE_LENGTH); - } - function checkIterable(x) { - return !isObject(x) ? undefined : x[Symbol.iterator]; - } - function isConstructor(x) { - return isCallable(x); - } - function createIteratorResultObject(value, done) { - return { - value: value, - done: done - }; - } - function maybeDefine(object, name, descr) { - if (!(name in object)) { - Object.defineProperty(object, name, descr); - } - } - function maybeDefineMethod(object, name, value) { - maybeDefine(object, name, { - value: value, - configurable: true, - enumerable: false, - writable: true - }); - } - function maybeDefineConst(object, name, value) { - maybeDefine(object, name, { - value: value, - configurable: false, - enumerable: false, - writable: false - }); - } - 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 maybeAddConsts(object, consts) { - for (var i = 0; i < consts.length; i += 2) { - var name = consts[i]; - var value = consts[i + 1]; - maybeDefineConst(object, name, value); - } - } - function maybeAddIterator(object, func, Symbol) { - if (!Symbol || !Symbol.iterator || object[Symbol.iterator]) - return; - if (object['@@iterator']) - func = object['@@iterator']; - Object.defineProperty(object, Symbol.iterator, { - value: func, - configurable: true, - enumerable: false, - writable: true - }); - } - var polyfills = []; - function registerPolyfill(func) { - polyfills.push(func); - } - function polyfillAll(global) { - polyfills.forEach(function(f) { - return f(global); - }); - } - return { - get toObject() { - return toObject; - }, - get toUint32() { - return toUint32; - }, - get isObject() { - return isObject; - }, - get isCallable() { - return isCallable; - }, - get isNumber() { - return isNumber; - }, - get toInteger() { - return toInteger; - }, - get toLength() { - return toLength; - }, - get checkIterable() { - return checkIterable; - }, - get isConstructor() { - return isConstructor; - }, - get createIteratorResultObject() { - return createIteratorResultObject; - }, - get maybeDefine() { - return maybeDefine; - }, - get maybeDefineMethod() { - return maybeDefineMethod; - }, - get maybeDefineConst() { - return maybeDefineConst; - }, - get maybeAddFunctions() { - return maybeAddFunctions; - }, - get maybeAddConsts() { - return maybeAddConsts; - }, - get maybeAddIterator() { - return maybeAddIterator; - }, - get registerPolyfill() { - return registerPolyfill; - }, - get polyfillAll() { - return polyfillAll; - } - }; -}); -System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/Map.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/polyfills/Map.js"; - var $__0 = System.get("traceur-runtime@0.0.90/src/runtime/polyfills/utils.js"), - isObject = $__0.isObject, - registerPolyfill = $__0.registerPolyfill; - var $__9 = $traceurRuntime, - getOwnHashObject = $__9.getOwnHashObject, - hasNativeSymbol = $__9.hasNativeSymbol; - var $hasOwnProperty = Object.prototype.hasOwnProperty; - var deletedSentinel = {}; - function lookupIndex(map, key) { - if (isObject(key)) { - var hashObject = getOwnHashObject(key); - return hashObject && map.objectIndex_[hashObject.hash]; - } - if (typeof key === 'string') - return map.stringIndex_[key]; - return map.primitiveIndex_[key]; - } - function initMap(map) { - map.entries_ = []; - map.objectIndex_ = Object.create(null); - map.stringIndex_ = Object.create(null); - map.primitiveIndex_ = Object.create(null); - map.deletedCount_ = 0; - } - var Map = function() { - function Map() { - var $__11, - $__12; - var iterable = arguments[0]; - if (!isObject(this)) - throw new TypeError('Map called on incompatible type'); - if ($hasOwnProperty.call(this, 'entries_')) { - throw new TypeError('Map can not be reentrantly initialised'); - } - initMap(this); - if (iterable !== null && iterable !== undefined) { - var $__5 = true; - var $__6 = false; - var $__7 = undefined; - try { - for (var $__3 = void 0, - $__2 = (iterable)[$traceurRuntime.toProperty(Symbol.iterator)](); !($__5 = ($__3 = $__2.next()).done); $__5 = true) { - var $__10 = $__3.value, - key = ($__11 = $__10[$traceurRuntime.toProperty(Symbol.iterator)](), ($__12 = $__11.next()).done ? void 0 : $__12.value), - value = ($__12 = $__11.next()).done ? void 0 : $__12.value; - { - this.set(key, value); - } - } - } catch ($__8) { - $__6 = true; - $__7 = $__8; - } finally { - try { - if (!$__5 && $__2.return != null) { - $__2.return(); - } - } finally { - if ($__6) { - throw $__7; - } - } - } - } - } - return ($traceurRuntime.createClass)(Map, { - get size() { - return this.entries_.length / 2 - this.deletedCount_; - }, - get: function(key) { - var index = lookupIndex(this, key); - if (index !== undefined) - return this.entries_[index + 1]; - }, - set: function(key, value) { - var objectMode = isObject(key); - var stringMode = typeof key === 'string'; - var index = lookupIndex(this, key); - if (index !== undefined) { - this.entries_[index + 1] = value; - } else { - index = this.entries_.length; - this.entries_[index] = key; - this.entries_[index + 1] = value; - if (objectMode) { - var hashObject = getOwnHashObject(key); - var hash = hashObject.hash; - this.objectIndex_[hash] = index; - } else if (stringMode) { - this.stringIndex_[key] = index; - } else { - this.primitiveIndex_[key] = index; - } - } - return this; - }, - has: function(key) { - return lookupIndex(this, key) !== undefined; - }, - delete: function(key) { - var objectMode = isObject(key); - var stringMode = typeof key === 'string'; - var index; - var hash; - if (objectMode) { - var hashObject = getOwnHashObject(key); - if (hashObject) { - index = this.objectIndex_[hash = hashObject.hash]; - delete this.objectIndex_[hash]; - } - } else if (stringMode) { - index = this.stringIndex_[key]; - delete this.stringIndex_[key]; - } else { - index = this.primitiveIndex_[key]; - delete this.primitiveIndex_[key]; - } - if (index !== undefined) { - this.entries_[index] = deletedSentinel; - this.entries_[index + 1] = undefined; - this.deletedCount_++; - return true; - } - return false; - }, - clear: function() { - initMap(this); - }, - forEach: function(callbackFn) { - var thisArg = arguments[1]; - for (var i = 0; i < this.entries_.length; i += 2) { - var key = this.entries_[i]; - var value = this.entries_[i + 1]; - if (key === deletedSentinel) - continue; - callbackFn.call(thisArg, value, key, this); - } - }, - entries: $traceurRuntime.initGeneratorFunction(function $__13() { - var i, - key, - value; - return $traceurRuntime.createGeneratorInstance(function($ctx) { - while (true) - switch ($ctx.state) { - case 0: - i = 0; - $ctx.state = 12; - break; - case 12: - $ctx.state = (i < this.entries_.length) ? 8 : -2; - break; - case 4: - i += 2; - $ctx.state = 12; - break; - case 8: - key = this.entries_[i]; - value = this.entries_[i + 1]; - $ctx.state = 9; - break; - case 9: - $ctx.state = (key === deletedSentinel) ? 4 : 6; - break; - case 6: - $ctx.state = 2; - return [key, value]; - case 2: - $ctx.maybeThrow(); - $ctx.state = 4; - break; - default: - return $ctx.end(); - } - }, $__13, this); - }), - keys: $traceurRuntime.initGeneratorFunction(function $__14() { - var i, - key, - value; - return $traceurRuntime.createGeneratorInstance(function($ctx) { - while (true) - switch ($ctx.state) { - case 0: - i = 0; - $ctx.state = 12; - break; - case 12: - $ctx.state = (i < this.entries_.length) ? 8 : -2; - break; - case 4: - i += 2; - $ctx.state = 12; - break; - case 8: - key = this.entries_[i]; - value = this.entries_[i + 1]; - $ctx.state = 9; - break; - case 9: - $ctx.state = (key === deletedSentinel) ? 4 : 6; - break; - case 6: - $ctx.state = 2; - return key; - case 2: - $ctx.maybeThrow(); - $ctx.state = 4; - break; - default: - return $ctx.end(); - } - }, $__14, this); - }), - values: $traceurRuntime.initGeneratorFunction(function $__15() { - var i, - key, - value; - return $traceurRuntime.createGeneratorInstance(function($ctx) { - while (true) - switch ($ctx.state) { - case 0: - i = 0; - $ctx.state = 12; - break; - case 12: - $ctx.state = (i < this.entries_.length) ? 8 : -2; - break; - case 4: - i += 2; - $ctx.state = 12; - break; - case 8: - key = this.entries_[i]; - value = this.entries_[i + 1]; - $ctx.state = 9; - break; - case 9: - $ctx.state = (key === deletedSentinel) ? 4 : 6; - break; - case 6: - $ctx.state = 2; - return value; - case 2: - $ctx.maybeThrow(); - $ctx.state = 4; - break; - default: - return $ctx.end(); - } - }, $__15, this); - }) - }, {}); - }(); - Object.defineProperty(Map.prototype, Symbol.iterator, { - configurable: true, - writable: true, - value: Map.prototype.entries - }); - function needsPolyfill(global) { - var $__10 = global, - Map = $__10.Map, - Symbol = $__10.Symbol; - if (!Map || !$traceurRuntime.hasNativeSymbol() || !Map.prototype[Symbol.iterator] || !Map.prototype.entries) { - return true; - } - try { - return new Map([[]]).size !== 1; - } catch (e) { - return false; - } - } - function polyfillMap(global) { - if (needsPolyfill(global)) { - global.Map = Map; - } - } - registerPolyfill(polyfillMap); - return { - get Map() { - return Map; - }, - get polyfillMap() { - return polyfillMap; - } - }; -}); -System.get("traceur-runtime@0.0.90/src/runtime/polyfills/Map.js" + ''); -System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/Set.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/polyfills/Set.js"; - var $__0 = System.get("traceur-runtime@0.0.90/src/runtime/polyfills/utils.js"), - isObject = $__0.isObject, - registerPolyfill = $__0.registerPolyfill; - var Map = System.get("traceur-runtime@0.0.90/src/runtime/polyfills/Map.js").Map; - var getOwnHashObject = $traceurRuntime.getOwnHashObject; - var $hasOwnProperty = Object.prototype.hasOwnProperty; - function initSet(set) { - set.map_ = new Map(); - } - var Set = function() { - function Set() { - var iterable = arguments[0]; - if (!isObject(this)) - throw new TypeError('Set called on incompatible type'); - if ($hasOwnProperty.call(this, 'map_')) { - throw new TypeError('Set can not be reentrantly initialised'); - } - initSet(this); - if (iterable !== null && iterable !== undefined) { - var $__7 = true; - var $__8 = false; - var $__9 = undefined; - try { - for (var $__5 = void 0, - $__4 = (iterable)[$traceurRuntime.toProperty(Symbol.iterator)](); !($__7 = ($__5 = $__4.next()).done); $__7 = true) { - var item = $__5.value; - { - this.add(item); - } - } - } catch ($__10) { - $__8 = true; - $__9 = $__10; - } finally { - try { - if (!$__7 && $__4.return != null) { - $__4.return(); - } - } finally { - if ($__8) { - throw $__9; - } - } - } - } - } - return ($traceurRuntime.createClass)(Set, { - get size() { - return this.map_.size; - }, - has: function(key) { - return this.map_.has(key); - }, - add: function(key) { - this.map_.set(key, key); - return this; - }, - delete: function(key) { - return this.map_.delete(key); - }, - clear: function() { - return this.map_.clear(); - }, - forEach: function(callbackFn) { - var thisArg = arguments[1]; - var $__2 = this; - return this.map_.forEach(function(value, key) { - callbackFn.call(thisArg, key, key, $__2); - }); - }, - values: $traceurRuntime.initGeneratorFunction(function $__12() { - var $__13, - $__14; - return $traceurRuntime.createGeneratorInstance(function($ctx) { - while (true) - switch ($ctx.state) { - case 0: - $__13 = $ctx.wrapYieldStar(this.map_.keys()[Symbol.iterator]()); - $ctx.sent = void 0; - $ctx.action = 'next'; - $ctx.state = 12; - break; - case 12: - $__14 = $__13[$ctx.action]($ctx.sentIgnoreThrow); - $ctx.state = 9; - break; - case 9: - $ctx.state = ($__14.done) ? 3 : 2; - break; - case 3: - $ctx.sent = $__14.value; - $ctx.state = -2; - break; - case 2: - $ctx.state = 12; - return $__14.value; - default: - return $ctx.end(); - } - }, $__12, this); - }), - entries: $traceurRuntime.initGeneratorFunction(function $__15() { - var $__16, - $__17; - return $traceurRuntime.createGeneratorInstance(function($ctx) { - while (true) - switch ($ctx.state) { - case 0: - $__16 = $ctx.wrapYieldStar(this.map_.entries()[Symbol.iterator]()); - $ctx.sent = void 0; - $ctx.action = 'next'; - $ctx.state = 12; - break; - case 12: - $__17 = $__16[$ctx.action]($ctx.sentIgnoreThrow); - $ctx.state = 9; - break; - case 9: - $ctx.state = ($__17.done) ? 3 : 2; - break; - case 3: - $ctx.sent = $__17.value; - $ctx.state = -2; - break; - case 2: - $ctx.state = 12; - return $__17.value; - default: - return $ctx.end(); - } - }, $__15, this); - }) - }, {}); - }(); - Object.defineProperty(Set.prototype, Symbol.iterator, { - configurable: true, - writable: true, - value: Set.prototype.values - }); - Object.defineProperty(Set.prototype, 'keys', { - configurable: true, - writable: true, - value: Set.prototype.values - }); - function needsPolyfill(global) { - var $__11 = global, - Set = $__11.Set, - Symbol = $__11.Symbol; - if (!Set || !$traceurRuntime.hasNativeSymbol() || !Set.prototype[Symbol.iterator] || !Set.prototype.values) { - return true; - } - try { - return new Set([1]).size !== 1; - } catch (e) { - return false; - } - } - function polyfillSet(global) { - if (needsPolyfill(global)) { - global.Set = Set; - } - } - registerPolyfill(polyfillSet); - return { - get Set() { - return Set; - }, - get polyfillSet() { - return polyfillSet; - } - }; -}); -System.get("traceur-runtime@0.0.90/src/runtime/polyfills/Set.js" + ''); -System.registerModule("traceur-runtime@0.0.90/node_modules/rsvp/lib/rsvp/asap.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/node_modules/rsvp/lib/rsvp/asap.js"; - var len = 0; - function asap(callback, arg) { - queue[len] = callback; - queue[len + 1] = arg; - len += 2; - if (len === 2) { - scheduleFlush(); - } - } - var $__default = asap; - var browserGlobal = (typeof window !== 'undefined') ? window : {}; - var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver; - var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined'; - 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 useMessageChannel() { - var channel = new MessageChannel(); - channel.port1.onmessage = flush; - return function() { - channel.port2.postMessage(0); - }; - } - function useSetTimeout() { - return function() { - setTimeout(flush, 1); - }; - } - var queue = new Array(1000); - function flush() { - for (var i = 0; i < len; i += 2) { - var callback = queue[i]; - var arg = queue[i + 1]; - callback(arg); - queue[i] = undefined; - queue[i + 1] = undefined; - } - len = 0; - } - var scheduleFlush; - if (typeof process !== 'undefined' && {}.toString.call(process) === '[object process]') { - scheduleFlush = useNextTick(); - } else if (BrowserMutationObserver) { - scheduleFlush = useMutationObserver(); - } else if (isWorker) { - scheduleFlush = useMessageChannel(); - } else { - scheduleFlush = useSetTimeout(); - } - return {get default() { - return $__default; - }}; -}); -System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/Promise.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/polyfills/Promise.js"; - var async = System.get("traceur-runtime@0.0.90/node_modules/rsvp/lib/rsvp/asap.js").default; - var registerPolyfill = System.get("traceur-runtime@0.0.90/src/runtime/polyfills/utils.js").registerPolyfill; - var promiseRaw = {}; - function isPromise(x) { - return x && typeof x === 'object' && x.status_ !== undefined; - } - function idResolveHandler(x) { - return x; - } - function idRejectHandler(x) { - throw x; - } - function chain(promise) { - var onResolve = arguments[1] !== (void 0) ? arguments[1] : idResolveHandler; - var onReject = arguments[2] !== (void 0) ? arguments[2] : idRejectHandler; - var deferred = getDeferred(promise.constructor); - switch (promise.status_) { - case undefined: - throw TypeError; - case 0: - promise.onResolve_.push(onResolve, deferred); - promise.onReject_.push(onReject, deferred); - break; - case +1: - promiseEnqueue(promise.value_, [onResolve, deferred]); - break; - case -1: - promiseEnqueue(promise.value_, [onReject, deferred]); - break; - } - return deferred.promise; - } - function getDeferred(C) { - if (this === $Promise) { - var promise = promiseInit(new $Promise(promiseRaw)); - return { - promise: promise, - resolve: function(x) { - promiseResolve(promise, x); - }, - reject: function(r) { - promiseReject(promise, r); - } - }; - } else { - var result = {}; - result.promise = new C(function(resolve, reject) { - result.resolve = resolve; - result.reject = reject; - }); - return result; - } - } - function promiseSet(promise, status, value, onResolve, onReject) { - promise.status_ = status; - promise.value_ = value; - promise.onResolve_ = onResolve; - promise.onReject_ = onReject; - return promise; - } - function promiseInit(promise) { - return promiseSet(promise, 0, undefined, [], []); - } - var Promise = function() { - function Promise(resolver) { - if (resolver === promiseRaw) - return; - if (typeof resolver !== 'function') - throw new TypeError; - var promise = promiseInit(this); - try { - resolver(function(x) { - promiseResolve(promise, x); - }, function(r) { - promiseReject(promise, r); - }); - } catch (e) { - promiseReject(promise, e); - } - } - return ($traceurRuntime.createClass)(Promise, { - catch: function(onReject) { - return this.then(undefined, onReject); - }, - then: function(onResolve, onReject) { - if (typeof onResolve !== 'function') - onResolve = idResolveHandler; - if (typeof onReject !== 'function') - onReject = idRejectHandler; - var that = this; - var constructor = this.constructor; - return chain(this, function(x) { - x = promiseCoerce(constructor, x); - return x === that ? onReject(new TypeError) : isPromise(x) ? x.then(onResolve, onReject) : onResolve(x); - }, onReject); - } - }, { - resolve: function(x) { - if (this === $Promise) { - if (isPromise(x)) { - return x; - } - return promiseSet(new $Promise(promiseRaw), +1, x); - } else { - return new this(function(resolve, reject) { - resolve(x); - }); - } - }, - reject: function(r) { - if (this === $Promise) { - return promiseSet(new $Promise(promiseRaw), -1, r); - } else { - return new this(function(resolve, reject) { - reject(r); - }); - } - }, - all: function(values) { - var deferred = getDeferred(this); - var resolutions = []; - try { - var makeCountdownFunction = function(i) { - return function(x) { - resolutions[i] = x; - if (--count === 0) - deferred.resolve(resolutions); - }; - }; - var count = 0; - var i = 0; - var $__6 = true; - var $__7 = false; - var $__8 = undefined; - try { - for (var $__4 = void 0, - $__3 = (values)[$traceurRuntime.toProperty(Symbol.iterator)](); !($__6 = ($__4 = $__3.next()).done); $__6 = true) { - var value = $__4.value; - { - var countdownFunction = makeCountdownFunction(i); - this.resolve(value).then(countdownFunction, function(r) { - deferred.reject(r); - }); - ++i; - ++count; - } - } - } catch ($__9) { - $__7 = true; - $__8 = $__9; - } finally { - try { - if (!$__6 && $__3.return != null) { - $__3.return(); - } - } finally { - if ($__7) { - throw $__8; - } - } - } - 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.resolve(values[i]).then(function(x) { - deferred.resolve(x); - }, function(r) { - deferred.reject(r); - }); - } - } catch (e) { - deferred.reject(e); - } - return deferred.promise; - } - }); - }(); - var $Promise = Promise; - var $PromiseReject = $Promise.reject; - function promiseResolve(promise, x) { - promiseDone(promise, +1, x, promise.onResolve_); - } - function promiseReject(promise, r) { - promiseDone(promise, -1, r, promise.onReject_); - } - function promiseDone(promise, status, value, reactions) { - if (promise.status_ !== 0) - return; - promiseEnqueue(value, reactions); - promiseSet(promise, status, value); - } - function promiseEnqueue(value, tasks) { - async(function() { - for (var i = 0; i < tasks.length; i += 2) { - promiseHandle(value, tasks[i], tasks[i + 1]); - } - }); - } - function promiseHandle(value, handler, deferred) { - try { - var result = handler(value); - if (result === deferred.promise) - throw new TypeError; - else if (isPromise(result)) - chain(result, deferred.resolve, deferred.reject); - else - deferred.resolve(result); - } catch (e) { - try { - deferred.reject(e); - } catch (e) {} - } - } - var thenableSymbol = '@@thenable'; - function isObject(x) { - return x && (typeof x === 'object' || typeof x === 'function'); - } - function promiseCoerce(constructor, x) { - if (!isPromise(x) && isObject(x)) { - var then; - try { - then = x.then; - } catch (r) { - var promise = $PromiseReject.call(constructor, r); - x[thenableSymbol] = promise; - return promise; - } - if (typeof then === 'function') { - var p = x[thenableSymbol]; - if (p) { - return p; - } else { - var deferred = getDeferred(constructor); - x[thenableSymbol] = deferred.promise; - try { - then.call(x, deferred.resolve, deferred.reject); - } catch (r) { - deferred.reject(r); - } - return deferred.promise; - } - } - } - return x; - } - function polyfillPromise(global) { - if (!global.Promise) - global.Promise = Promise; - } - registerPolyfill(polyfillPromise); - return { - get Promise() { - return Promise; - }, - get polyfillPromise() { - return polyfillPromise; - } - }; -}); -System.get("traceur-runtime@0.0.90/src/runtime/polyfills/Promise.js" + ''); -System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/StringIterator.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/polyfills/StringIterator.js"; - var $__0 = System.get("traceur-runtime@0.0.90/src/runtime/polyfills/utils.js"), - createIteratorResultObject = $__0.createIteratorResultObject, - isObject = $__0.isObject; - var toProperty = $traceurRuntime.toProperty; - var hasOwnProperty = Object.prototype.hasOwnProperty; - var iteratedString = Symbol('iteratedString'); - var stringIteratorNextIndex = Symbol('stringIteratorNextIndex'); - var StringIterator = function() { - var $__2; - function StringIterator() {} - return ($traceurRuntime.createClass)(StringIterator, ($__2 = {}, Object.defineProperty($__2, "next", { - value: function() { - var o = this; - if (!isObject(o) || !hasOwnProperty.call(o, iteratedString)) { - throw new TypeError('this must be a StringIterator object'); - } - var s = o[toProperty(iteratedString)]; - if (s === undefined) { - return createIteratorResultObject(undefined, true); - } - var position = o[toProperty(stringIteratorNextIndex)]; - var len = s.length; - if (position >= len) { - o[toProperty(iteratedString)] = undefined; - return createIteratorResultObject(undefined, true); - } - var first = s.charCodeAt(position); - var resultString; - if (first < 0xD800 || first > 0xDBFF || position + 1 === len) { - resultString = String.fromCharCode(first); - } else { - var second = s.charCodeAt(position + 1); - if (second < 0xDC00 || second > 0xDFFF) { - resultString = String.fromCharCode(first); - } else { - resultString = String.fromCharCode(first) + String.fromCharCode(second); - } - } - o[toProperty(stringIteratorNextIndex)] = position + resultString.length; - return createIteratorResultObject(resultString, false); - }, - configurable: true, - enumerable: true, - writable: true - }), Object.defineProperty($__2, Symbol.iterator, { - value: function() { - return this; - }, - configurable: true, - enumerable: true, - writable: true - }), $__2), {}); - }(); - function createStringIterator(string) { - var s = String(string); - var iterator = Object.create(StringIterator.prototype); - iterator[toProperty(iteratedString)] = s; - iterator[toProperty(stringIteratorNextIndex)] = 0; - return iterator; - } - return {get createStringIterator() { - return createStringIterator; - }}; -}); -System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/String.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/polyfills/String.js"; - var createStringIterator = System.get("traceur-runtime@0.0.90/src/runtime/polyfills/StringIterator.js").createStringIterator; - var $__1 = System.get("traceur-runtime@0.0.90/src/runtime/polyfills/utils.js"), - maybeAddFunctions = $__1.maybeAddFunctions, - maybeAddIterator = $__1.maybeAddIterator, - registerPolyfill = $__1.registerPolyfill; - 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 includes(search) { - if (this == null) { - throw TypeError(); - } - var string = String(this); - if (search && $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 (pos != pos) { - pos = 0; - } - var start = Math.min(Math.max(pos, 0), stringLength); - if (searchLength + start > stringLength) { - return false; - } - 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); - } - function stringPrototypeIterator() { - var o = $traceurRuntime.checkObjectCoercible(this); - var s = String(o); - return createStringIterator(s); - } - function polyfillString(global) { - var String = global.String; - maybeAddFunctions(String.prototype, ['codePointAt', codePointAt, 'endsWith', endsWith, 'includes', includes, 'repeat', repeat, 'startsWith', startsWith]); - maybeAddFunctions(String, ['fromCodePoint', fromCodePoint, 'raw', raw]); - maybeAddIterator(String.prototype, stringPrototypeIterator, Symbol); - } - registerPolyfill(polyfillString); - return { - get startsWith() { - return startsWith; - }, - get endsWith() { - return endsWith; - }, - get includes() { - return includes; - }, - get repeat() { - return repeat; - }, - get codePointAt() { - return codePointAt; - }, - get raw() { - return raw; - }, - get fromCodePoint() { - return fromCodePoint; - }, - get stringPrototypeIterator() { - return stringPrototypeIterator; - }, - get polyfillString() { - return polyfillString; - } - }; -}); -System.get("traceur-runtime@0.0.90/src/runtime/polyfills/String.js" + ''); -System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/ArrayIterator.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/polyfills/ArrayIterator.js"; - var $__0 = System.get("traceur-runtime@0.0.90/src/runtime/polyfills/utils.js"), - toObject = $__0.toObject, - toUint32 = $__0.toUint32, - createIteratorResultObject = $__0.createIteratorResultObject; - var ARRAY_ITERATOR_KIND_KEYS = 1; - var ARRAY_ITERATOR_KIND_VALUES = 2; - var ARRAY_ITERATOR_KIND_ENTRIES = 3; - var ArrayIterator = function() { - var $__2; - function ArrayIterator() {} - return ($traceurRuntime.createClass)(ArrayIterator, ($__2 = {}, Object.defineProperty($__2, "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($__2, Symbol.iterator, { - value: function() { - return this; - }, - configurable: true, - enumerable: true, - writable: true - }), $__2), {}); - }(); - function createArrayIterator(array, kind) { - var object = toObject(array); - var iterator = new ArrayIterator; - iterator.iteratorObject_ = object; - iterator.arrayIteratorNextIndex_ = 0; - iterator.arrayIterationKind_ = kind; - return iterator; - } - 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.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/Array.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/polyfills/Array.js"; - var $__0 = System.get("traceur-runtime@0.0.90/src/runtime/polyfills/ArrayIterator.js"), - entries = $__0.entries, - keys = $__0.keys, - jsValues = $__0.values; - var $__1 = System.get("traceur-runtime@0.0.90/src/runtime/polyfills/utils.js"), - checkIterable = $__1.checkIterable, - isCallable = $__1.isCallable, - isConstructor = $__1.isConstructor, - maybeAddFunctions = $__1.maybeAddFunctions, - maybeAddIterator = $__1.maybeAddIterator, - registerPolyfill = $__1.registerPolyfill, - toInteger = $__1.toInteger, - toLength = $__1.toLength, - toObject = $__1.toObject; - function from(arrLike) { - var mapFn = arguments[1]; - var thisArg = arguments[2]; - var C = this; - var items = toObject(arrLike); - var mapping = mapFn !== undefined; - var k = 0; - var arr, - len; - if (mapping && !isCallable(mapFn)) { - throw TypeError(); - } - if (checkIterable(items)) { - arr = isConstructor(C) ? new C() : []; - var $__5 = true; - var $__6 = false; - var $__7 = undefined; - try { - for (var $__3 = void 0, - $__2 = (items)[$traceurRuntime.toProperty(Symbol.iterator)](); !($__5 = ($__3 = $__2.next()).done); $__5 = true) { - var item = $__3.value; - { - if (mapping) { - arr[k] = mapFn.call(thisArg, item, k); - } else { - arr[k] = item; - } - k++; - } - } - } catch ($__8) { - $__6 = true; - $__7 = $__8; - } finally { - try { - if (!$__5 && $__2.return != null) { - $__2.return(); - } - } finally { - if ($__6) { - throw $__7; - } - } - } - arr.length = k; - return arr; - } - len = toLength(items.length); - arr = isConstructor(C) ? new C(len) : new Array(len); - for (; k < len; k++) { - if (mapping) { - arr[k] = typeof thisArg === 'undefined' ? mapFn(items[k], k) : mapFn.call(thisArg, items[k], k); - } else { - arr[k] = items[k]; - } - } - arr.length = len; - return arr; - } - function of() { - for (var items = [], - $__9 = 0; $__9 < arguments.length; $__9++) - items[$__9] = arguments[$__9]; - var C = this; - var len = items.length; - var arr = isConstructor(C) ? new C(len) : new Array(len); - for (var k = 0; k < len; k++) { - arr[k] = items[k]; - } - arr.length = len; - return arr; - } - function fill(value) { - var start = arguments[1] !== (void 0) ? arguments[1] : 0; - var end = arguments[2]; - var object = toObject(this); - var len = toLength(object.length); - var fillStart = toInteger(start); - var fillEnd = end !== undefined ? toInteger(end) : len; - fillStart = fillStart < 0 ? Math.max(len + fillStart, 0) : Math.min(fillStart, len); - fillEnd = fillEnd < 0 ? Math.max(len + fillEnd, 0) : Math.min(fillEnd, len); - while (fillStart < fillEnd) { - object[fillStart] = value; - fillStart++; - } - return object; - } - function find(predicate) { - var thisArg = arguments[1]; - return findHelper(this, predicate, thisArg); - } - function findIndex(predicate) { - var thisArg = arguments[1]; - return findHelper(this, predicate, thisArg, true); - } - function findHelper(self, predicate) { - var thisArg = arguments[2]; - var returnIndex = arguments[3] !== (void 0) ? arguments[3] : false; - var object = toObject(self); - var len = toLength(object.length); - if (!isCallable(predicate)) { - throw TypeError(); - } - for (var i = 0; i < len; i++) { - var value = object[i]; - if (predicate.call(thisArg, value, i, object)) { - return returnIndex ? i : value; - } - } - return returnIndex ? -1 : undefined; - } - function polyfillArray(global) { - var $__10 = global, - Array = $__10.Array, - Object = $__10.Object, - Symbol = $__10.Symbol; - var values = jsValues; - if (Symbol && Symbol.iterator && Array.prototype[Symbol.iterator]) { - values = Array.prototype[Symbol.iterator]; - } - maybeAddFunctions(Array.prototype, ['entries', entries, 'keys', keys, 'values', values, 'fill', fill, 'find', find, 'findIndex', findIndex]); - maybeAddFunctions(Array, ['from', from, 'of', of]); - maybeAddIterator(Array.prototype, values, Symbol); - maybeAddIterator(Object.getPrototypeOf([].values()), function() { - return this; - }, Symbol); - } - registerPolyfill(polyfillArray); - return { - get from() { - return from; - }, - get of() { - return of; - }, - get fill() { - return fill; - }, - get find() { - return find; - }, - get findIndex() { - return findIndex; - }, - get polyfillArray() { - return polyfillArray; - } - }; -}); -System.get("traceur-runtime@0.0.90/src/runtime/polyfills/Array.js" + ''); -System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/Object.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/polyfills/Object.js"; - var $__0 = System.get("traceur-runtime@0.0.90/src/runtime/polyfills/utils.js"), - maybeAddFunctions = $__0.maybeAddFunctions, - registerPolyfill = $__0.registerPolyfill; - var $__1 = $traceurRuntime, - defineProperty = $__1.defineProperty, - getOwnPropertyDescriptor = $__1.getOwnPropertyDescriptor, - getOwnPropertyNames = $__1.getOwnPropertyNames, - isPrivateName = $__1.isPrivateName, - keys = $__1.keys; - function is(left, right) { - if (left === right) - return left !== 0 || 1 / left === 1 / right; - return left !== left && right !== right; - } - function assign(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - var props = source == null ? [] : keys(source); - var p = void 0, - length = props.length; - for (p = 0; p < length; p++) { - var name = props[p]; - if (isPrivateName(name)) - continue; - target[name] = source[name]; - } - } - return target; - } - function mixin(target, source) { - var props = getOwnPropertyNames(source); - var p, - descriptor, - length = props.length; - for (p = 0; p < length; p++) { - var name = props[p]; - if (isPrivateName(name)) - continue; - descriptor = getOwnPropertyDescriptor(source, props[p]); - defineProperty(target, props[p], descriptor); - } - return target; - } - function polyfillObject(global) { - var Object = global.Object; - maybeAddFunctions(Object, ['assign', assign, 'is', is, 'mixin', mixin]); - } - registerPolyfill(polyfillObject); - return { - get is() { - return is; - }, - get assign() { - return assign; - }, - get mixin() { - return mixin; - }, - get polyfillObject() { - return polyfillObject; - } - }; -}); -System.get("traceur-runtime@0.0.90/src/runtime/polyfills/Object.js" + ''); -System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/Number.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/polyfills/Number.js"; - var $__0 = System.get("traceur-runtime@0.0.90/src/runtime/polyfills/utils.js"), - isNumber = $__0.isNumber, - maybeAddConsts = $__0.maybeAddConsts, - maybeAddFunctions = $__0.maybeAddFunctions, - registerPolyfill = $__0.registerPolyfill, - toInteger = $__0.toInteger; - var $abs = Math.abs; - var $isFinite = isFinite; - var $isNaN = isNaN; - var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; - var MIN_SAFE_INTEGER = -Math.pow(2, 53) + 1; - var EPSILON = Math.pow(2, -52); - function NumberIsFinite(number) { - return isNumber(number) && $isFinite(number); - } - function isInteger(number) { - return NumberIsFinite(number) && toInteger(number) === number; - } - function NumberIsNaN(number) { - return isNumber(number) && $isNaN(number); - } - function isSafeInteger(number) { - if (NumberIsFinite(number)) { - var integral = toInteger(number); - if (integral === number) - return $abs(integral) <= MAX_SAFE_INTEGER; - } - return false; - } - function polyfillNumber(global) { - var Number = global.Number; - maybeAddConsts(Number, ['MAX_SAFE_INTEGER', MAX_SAFE_INTEGER, 'MIN_SAFE_INTEGER', MIN_SAFE_INTEGER, 'EPSILON', EPSILON]); - maybeAddFunctions(Number, ['isFinite', NumberIsFinite, 'isInteger', isInteger, 'isNaN', NumberIsNaN, 'isSafeInteger', isSafeInteger]); - } - registerPolyfill(polyfillNumber); - return { - get MAX_SAFE_INTEGER() { - return MAX_SAFE_INTEGER; - }, - get MIN_SAFE_INTEGER() { - return MIN_SAFE_INTEGER; - }, - get EPSILON() { - return EPSILON; - }, - get isFinite() { - return NumberIsFinite; - }, - get isInteger() { - return isInteger; - }, - get isNaN() { - return NumberIsNaN; - }, - get isSafeInteger() { - return isSafeInteger; - }, - get polyfillNumber() { - return polyfillNumber; - } - }; -}); -System.get("traceur-runtime@0.0.90/src/runtime/polyfills/Number.js" + ''); -System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/fround.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/polyfills/fround.js"; - var $isFinite = isFinite; - var $isNaN = isNaN; - var $__0 = Math, - LN2 = $__0.LN2, - abs = $__0.abs, - floor = $__0.floor, - log = $__0.log, - min = $__0.min, - pow = $__0.pow; - function packIEEE754(v, ebits, fbits) { - var bias = (1 << (ebits - 1)) - 1, - s, - e, - f, - ln, - i, - bits, - str, - bytes; - function roundToEven(n) { - var w = floor(n), - f = n - w; - if (f < 0.5) - return w; - if (f > 0.5) - return w + 1; - return w % 2 ? w + 1 : w; - } - if (v !== v) { - e = (1 << ebits) - 1; - f = pow(2, fbits - 1); - s = 0; - } else if (v === Infinity || v === -Infinity) { - e = (1 << ebits) - 1; - f = 0; - s = (v < 0) ? 1 : 0; - } else if (v === 0) { - e = 0; - f = 0; - s = (1 / v === -Infinity) ? 1 : 0; - } else { - s = v < 0; - v = abs(v); - if (v >= pow(2, 1 - bias)) { - e = min(floor(log(v) / LN2), 1023); - f = roundToEven(v / pow(2, e) * pow(2, fbits)); - if (f / pow(2, fbits) >= 2) { - e = e + 1; - f = 1; - } - if (e > bias) { - e = (1 << ebits) - 1; - f = 0; - } else { - e = e + bias; - f = f - pow(2, fbits); - } - } else { - e = 0; - f = roundToEven(v / pow(2, 1 - bias - fbits)); - } - } - bits = []; - for (i = fbits; i; i -= 1) { - bits.push(f % 2 ? 1 : 0); - f = floor(f / 2); - } - for (i = ebits; i; i -= 1) { - bits.push(e % 2 ? 1 : 0); - e = floor(e / 2); - } - bits.push(s ? 1 : 0); - bits.reverse(); - str = bits.join(''); - bytes = []; - while (str.length) { - bytes.push(parseInt(str.substring(0, 8), 2)); - str = str.substring(8); - } - return bytes; - } - function unpackIEEE754(bytes, ebits, fbits) { - var bits = [], - i, - j, - b, - str, - bias, - s, - e, - f; - for (i = bytes.length; i; i -= 1) { - b = bytes[i - 1]; - for (j = 8; j; j -= 1) { - bits.push(b % 2 ? 1 : 0); - b = b >> 1; - } - } - bits.reverse(); - str = bits.join(''); - bias = (1 << (ebits - 1)) - 1; - s = parseInt(str.substring(0, 1), 2) ? -1 : 1; - e = parseInt(str.substring(1, 1 + ebits), 2); - f = parseInt(str.substring(1 + ebits), 2); - if (e === (1 << ebits) - 1) { - return f !== 0 ? NaN : s * Infinity; - } else if (e > 0) { - return s * pow(2, e - bias) * (1 + f / pow(2, fbits)); - } else if (f !== 0) { - return s * pow(2, -(bias - 1)) * (f / pow(2, fbits)); - } else { - return s < 0 ? -0 : 0; - } - } - function unpackF32(b) { - return unpackIEEE754(b, 8, 23); - } - function packF32(v) { - return packIEEE754(v, 8, 23); - } - function fround(x) { - if (x === 0 || !$isFinite(x) || $isNaN(x)) { - return x; - } - return unpackF32(packF32(Number(x))); - } - return {get fround() { - return fround; - }}; -}); -System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/Math.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/polyfills/Math.js"; - var jsFround = System.get("traceur-runtime@0.0.90/src/runtime/polyfills/fround.js").fround; - var $__1 = System.get("traceur-runtime@0.0.90/src/runtime/polyfills/utils.js"), - maybeAddFunctions = $__1.maybeAddFunctions, - registerPolyfill = $__1.registerPolyfill, - toUint32 = $__1.toUint32; - var $isFinite = isFinite; - var $isNaN = isNaN; - var $__2 = Math, - abs = $__2.abs, - ceil = $__2.ceil, - exp = $__2.exp, - floor = $__2.floor, - log = $__2.log, - pow = $__2.pow, - sqrt = $__2.sqrt; - function clz32(x) { - x = toUint32(+x); - if (x == 0) - return 32; - var result = 0; - if ((x & 0xFFFF0000) === 0) { - x <<= 16; - result += 16; - } - ; - if ((x & 0xFF000000) === 0) { - x <<= 8; - result += 8; - } - ; - if ((x & 0xF0000000) === 0) { - x <<= 4; - result += 4; - } - ; - if ((x & 0xC0000000) === 0) { - x <<= 2; - result += 2; - } - ; - if ((x & 0x80000000) === 0) { - x <<= 1; - result += 1; - } - ; - return result; - } - function imul(x, y) { - x = toUint32(+x); - y = toUint32(+y); - var xh = (x >>> 16) & 0xffff; - var xl = x & 0xffff; - var yh = (y >>> 16) & 0xffff; - var yl = y & 0xffff; - return xl * yl + (((xh * yl + xl * yh) << 16) >>> 0) | 0; - } - function sign(x) { - x = +x; - if (x > 0) - return 1; - if (x < 0) - return -1; - return x; - } - function log10(x) { - return log(x) * 0.434294481903251828; - } - function log2(x) { - return log(x) * 1.442695040888963407; - } - function log1p(x) { - x = +x; - if (x < -1 || $isNaN(x)) { - return NaN; - } - if (x === 0 || x === Infinity) { - return x; - } - if (x === -1) { - return -Infinity; - } - var result = 0; - var n = 50; - if (x < 0 || x > 1) { - return log(1 + x); - } - for (var i = 1; i < n; i++) { - if ((i % 2) === 0) { - result -= pow(x, i) / i; - } else { - result += pow(x, i) / i; - } - } - return result; - } - function expm1(x) { - x = +x; - if (x === -Infinity) { - return -1; - } - if (!$isFinite(x) || x === 0) { - return x; - } - return exp(x) - 1; - } - function cosh(x) { - x = +x; - if (x === 0) { - return 1; - } - if ($isNaN(x)) { - return NaN; - } - if (!$isFinite(x)) { - return Infinity; - } - if (x < 0) { - x = -x; - } - if (x > 21) { - return exp(x) / 2; - } - return (exp(x) + exp(-x)) / 2; - } - function sinh(x) { - x = +x; - if (!$isFinite(x) || x === 0) { - return x; - } - return (exp(x) - exp(-x)) / 2; - } - function tanh(x) { - x = +x; - if (x === 0) - return x; - if (!$isFinite(x)) - return sign(x); - var exp1 = exp(x); - var exp2 = exp(-x); - return (exp1 - exp2) / (exp1 + exp2); - } - function acosh(x) { - x = +x; - if (x < 1) - return NaN; - if (!$isFinite(x)) - return x; - return log(x + sqrt(x + 1) * sqrt(x - 1)); - } - function asinh(x) { - x = +x; - if (x === 0 || !$isFinite(x)) - return x; - if (x > 0) - return log(x + sqrt(x * x + 1)); - return -log(-x + sqrt(x * x + 1)); - } - function atanh(x) { - x = +x; - if (x === -1) { - return -Infinity; - } - if (x === 1) { - return Infinity; - } - if (x === 0) { - return x; - } - if ($isNaN(x) || x < -1 || x > 1) { - return NaN; - } - return 0.5 * log((1 + x) / (1 - x)); - } - function hypot(x, y) { - var length = arguments.length; - var args = new Array(length); - var max = 0; - for (var i = 0; i < length; i++) { - var n = arguments[i]; - n = +n; - if (n === Infinity || n === -Infinity) - return Infinity; - n = abs(n); - if (n > max) - max = n; - args[i] = n; - } - if (max === 0) - max = 1; - var sum = 0; - var compensation = 0; - for (var i = 0; i < length; i++) { - var n = args[i] / max; - var summand = n * n - compensation; - var preliminary = sum + summand; - compensation = (preliminary - sum) - summand; - sum = preliminary; - } - return sqrt(sum) * max; - } - function trunc(x) { - x = +x; - if (x > 0) - return floor(x); - if (x < 0) - return ceil(x); - return x; - } - var fround, - f32; - if (typeof Float32Array === 'function') { - f32 = new Float32Array(1); - fround = function(x) { - f32[0] = Number(x); - return f32[0]; - }; - } else { - fround = jsFround; - } - function cbrt(x) { - x = +x; - if (x === 0) - return x; - var negate = x < 0; - if (negate) - x = -x; - var result = pow(x, 1 / 3); - return negate ? -result : result; - } - function polyfillMath(global) { - var Math = global.Math; - maybeAddFunctions(Math, ['acosh', acosh, 'asinh', asinh, 'atanh', atanh, 'cbrt', cbrt, 'clz32', clz32, 'cosh', cosh, 'expm1', expm1, 'fround', fround, 'hypot', hypot, 'imul', imul, 'log10', log10, 'log1p', log1p, 'log2', log2, 'sign', sign, 'sinh', sinh, 'tanh', tanh, 'trunc', trunc]); - } - registerPolyfill(polyfillMath); - return { - get clz32() { - return clz32; - }, - get imul() { - return imul; - }, - get sign() { - return sign; - }, - get log10() { - return log10; - }, - get log2() { - return log2; - }, - get log1p() { - return log1p; - }, - get expm1() { - return expm1; - }, - get cosh() { - return cosh; - }, - get sinh() { - return sinh; - }, - get tanh() { - return tanh; - }, - get acosh() { - return acosh; - }, - get asinh() { - return asinh; - }, - get atanh() { - return atanh; - }, - get hypot() { - return hypot; - }, - get trunc() { - return trunc; - }, - get fround() { - return fround; - }, - get cbrt() { - return cbrt; - }, - get polyfillMath() { - return polyfillMath; - } - }; -}); -System.get("traceur-runtime@0.0.90/src/runtime/polyfills/Math.js" + ''); -System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/polyfills.js", [], function() { - "use strict"; - var __moduleName = "traceur-runtime@0.0.90/src/runtime/polyfills/polyfills.js"; - var polyfillAll = System.get("traceur-runtime@0.0.90/src/runtime/polyfills/utils.js").polyfillAll; - polyfillAll(Reflect.global); - var setupGlobals = $traceurRuntime.setupGlobals; - $traceurRuntime.setupGlobals = function(global) { - setupGlobals(global); - polyfillAll(global); - }; - return {}; -}); -System.get("traceur-runtime@0.0.90/src/runtime/polyfills/polyfills.js" + ''); diff --git a/lib/traceur-runtime.min.js b/lib/traceur-runtime.min.js deleted file mode 100644 index 9dcb6da..0000000 --- a/lib/traceur-runtime.min.js +++ /dev/null @@ -1,3 +0,0 @@ -!function(a){"use strict";function b(a,b,c){for(var d=[b],e=0;e0;)e.unshift("..");0===e.length&&e.push(".")}return b+e.join("/")+c}function d(b){var d=b[i.PATH]||"";return d=c(d),b[i.PATH]=d,a(b[i.SCHEME],b[i.USER_INFO],b[i.DOMAIN],b[i.PORT],b[i.PATH],b[i.QUERY_DATA],b[i.FRAGMENT])}function e(a){var c=b(a);return d(c)}function f(a,c){var e=b(c),f=b(a);if(e[i.SCHEME])return d(e);e[i.SCHEME]=f[i.SCHEME];for(var g=i.SCHEME;g<=i.PORT;g++)e[g]||(e[g]=f[g]);if("/"==e[i.PATH][0])return d(e);var h=f[i.PATH],j=h.lastIndexOf("/");return h=h.slice(0,j+1)+e[i.PATH],e[i.PATH]=h,d(e)}function g(a){if(!a)return!1;if("/"===a[0])return!0;var c=b(a);return c[i.SCHEME]?!0:!1}var h=new RegExp("^(?:([^:/?#.]+):)?(?://(?:([^/?#]*)@)?([\\w\\d\\-\\u0100-\\uffff.%]*)(?::([0-9]+))?)?([^?#]+)?(?:\\?([^#]*))?(?:#(.*))?$"),i={SCHEME:1,USER_INFO:2,DOMAIN:3,PORT:4,PATH:5,QUERY_DATA:6,FRAGMENT:7};$traceurRuntime.canonicalizeUrl=e,$traceurRuntime.isAbsolute=g,$traceurRuntime.removeDotSegments=c,$traceurRuntime.resolveUrl=f}(),function(a){"use strict";function b(a,b){this.url=a,this.value_=b}function c(a,b){this.message=this.constructor.name+": "+this.stripCause(b)+" in "+a,b instanceof c||!b.stack?this.stack="":this.stack=this.stripStack(b.stack)}function d(a,b){var c=[],d=b-3;0>d&&(d=0);for(var e=d;b>e;e++)c.push(a[e]);return c}function e(a,b){var c=b+1;c>a.length-1&&(c=a.length-1);for(var d=[],e=b;c>=e;e++)d.push(a[e]);return d}function f(a){for(var b="",c=0;a-1>c;c++)b+="-";return b}function g(a,c){b.call(this,a,null),this.func=c}function h(a){if(a){var b=r.normalize(a);return o[b]}}function i(a){var b=arguments[1],c=Object.create(null);return Object.getOwnPropertyNames(a).forEach(function(d){var e,f;if(b===q){var g=Object.getOwnPropertyDescriptor(a,d);g.get&&(e=g.get)}e||(f=a[d],e=function(){return f}),Object.defineProperty(c,d,{get:e,enumerable:!0})}),Object.preventExtensions(c),c}var j,k=$traceurRuntime,l=k.canonicalizeUrl,m=k.resolveUrl,n=k.isAbsolute,o=Object.create(null);j=a.location&&a.location.href?m(a.location.href,"./"):"",c.prototype=Object.create(Error.prototype),c.prototype.constructor=c,c.prototype.stripError=function(a){return a.replace(/.*Error:/,this.constructor.name+":")},c.prototype.stripCause=function(a){return a?a.message?this.stripError(a.message):a+"":""},c.prototype.loadedBy=function(a){this.stack+="\n loaded by "+a},c.prototype.stripStack=function(a){var b=[];return a.split("\n").some(function(a){return/UncoatedModuleInstantiator/.test(a)?!0:void b.push(a)}),b[0]=this.stripError(b[0]),b.join("\n")},g.prototype=Object.create(b.prototype),g.prototype.getUncoatedModule=function(){var b=this;if(this.value_)return this.value_;try{var g;return void 0!==typeof $traceurRuntime&&$traceurRuntime.require&&(g=$traceurRuntime.require.bind(null,this.url)),this.value_=this.func.call(a,g)}catch(h){if(h instanceof c)throw h.loadedBy(this.url),h;if(h.stack){var i=this.func.toString().split("\n"),j=[];h.stack.split("\n").some(function(a,c){if(a.indexOf("UncoatedModuleInstantiator.getUncoatedModule")>0)return!0;var g=/(at\s[^\s]*\s).*>:(\d*):(\d*)\)/.exec(a);if(g){var h=parseInt(g[2],10);j=j.concat(d(i,h)),1===c?j.push(f(g[3])+"^ "+b.url):j.push(f(g[3])+"^"),j=j.concat(e(i,h)),j.push("= = = = = = = = =")}else j.push(a)}),h.stack=j.join("\n")}throw new c(this.url,h)}};var p=Object.create(null),q={},r={normalize:function(a,b,c){if("string"!=typeof a)throw new TypeError("module name must be a string, not "+typeof a);if(n(a))return l(a);if(/[^\.]\/\.\.\//.test(a))throw new Error("module name embeds /../: "+a);return"."===a[0]&&b?m(b,a):l(a)},get:function(a){var b=h(a);if(!b)return void 0;var c=p[b.url];return c?c:(c=i(b.getUncoatedModule(),q),p[b.url]=c)},set:function(a,b){a=String(a),o[a]=new g(a,function(){return b}),p[a]=b},get baseURL(){return j},set baseURL(a){j=String(a)},registerModule:function(a,b,c){var d=r.normalize(a);if(o[d])throw new Error("duplicate module named "+d);o[d]=new g(d,c)},bundleStore:Object.create(null),register:function(a,b,c){b&&(b.length||c.length)?this.bundleStore[a]={deps:b,execute:function(){var a=arguments,d={};b.forEach(function(b,c){return d[b]=a[c]});var e=c.call(this,d);return e.execute.call(this),e.exports}}:this.registerModule(a,b,c)},getAnonymousModule:function(b){return new i(b.call(a),q)}},s=new i({ModuleStore:r});r.set("@traceur/src/runtime/ModuleStore.js",s);var t=$traceurRuntime.setupGlobals;$traceurRuntime.setupGlobals=function(a){t(a)},$traceurRuntime.ModuleStore=r,a.System={register:r.register.bind(r),registerModule:r.registerModule.bind(r),get:r.get,set:r.set,normalize:r.normalize}}("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this),System.registerModule("traceur-runtime@0.0.90/src/runtime/async.js",[],function(){"use strict";function a(){}function b(){}function c(a){return a.prototype=j(b.prototype),a.__proto__=b,a}function d(a,b){for(var c=[],d=2;d3?("function"==typeof d&&(a.__proto__=d),a.prototype=l(i(d),f(b))):(g(b),a.prototype=b),n(a,"prototype",{configurable:!1,writable:!1}),m(a,f(c))}function i(a){if("function"==typeof a){var b=a.prototype;if(j(b)===b||null===b)return a.prototype;throw new k("super prototype must be an Object or null")}if(null===a)return null;throw new k("Super expression must either be null or a function, not "+typeof a+".")}var j=Object,k=TypeError,l=j.create,m=$traceurRuntime.defineProperties,n=$traceurRuntime.defineProperty,o=$traceurRuntime.getOwnPropertyDescriptor,p=($traceurRuntime.getOwnPropertyNames,Object.getPrototypeOf),q=Object,r=q.getOwnPropertyNames,s=q.getOwnPropertySymbols,t={enumerable:!1};return $traceurRuntime.createClass=h,$traceurRuntime.superConstructor=b,$traceurRuntime.superGet=c,$traceurRuntime.superSet=d,{}}),System.registerModule("traceur-runtime@0.0.90/src/runtime/destructuring.js",[],function(){"use strict";function a(a){for(var b,c=[],d=0;!(b=a.next()).done;)c[d++]=b.value;return c}return $traceurRuntime.iteratorToArray=a,{}}),System.registerModule("traceur-runtime@0.0.90/src/runtime/generators.js",[],function(){"use strict";function a(a){return{configurable:!0,enumerable:!1,value:a,writable:!0}}function b(a){return new Error("Traceur compiler bug: invalid state in state machine: "+a)}function c(){this.state=0,this.GState=r,this.storedException=void 0,this.finallyFallThrough=void 0,this.sent_=void 0,this.returnValue=void 0,this.oldReturnValue=void 0,this.tryStack_=[]}function d(a,b,c,d){switch(a.GState){case s:throw new Error('"'+c+'" on executing generator');case u:if("next"==c)return{value:void 0,done:!0};if(d===x)return{value:a.returnValue,done:!0};throw d;case r:if("throw"===c){if(a.GState=u,d===x)return{value:a.returnValue,done:!0};throw d}if(void 0!==d)throw q("Sent value to newborn generator");case t:a.GState=s,a.action=c,a.sent=d;var e;try{e=b(a)}catch(f){if(f!==x)throw f;e=a}var g=e===a;return g&&(e=a.returnValue),a.GState=g?u:t,{value:e,done:g}}}function e(){}function f(){}function g(a,b,d){var e=k(a,d),f=new c,g=p(b.prototype);return g[y]=f,g[z]=e,g}function h(a){return a.prototype=p(f.prototype),a.__proto__=f,a}function i(){c.call(this),this.err=void 0;var a=this;a.result=new Promise(function(b,c){a.resolve=b,a.reject=c})}function j(a,b){var c=k(a,b),d=new i;return d.createCallback=function(a){return function(b){d.state=a,d.value=b,c(d)}},d.errback=function(a){l(d,a),c(d)},c(d),d.result}function k(a,b){return function(c){for(;;)try{return a.call(b,c)}catch(d){l(c,d)}}}function l(a,b){a.storedException=b;var c=a.tryStack_[a.tryStack_.length-1];return c?(a.state=void 0!==c["catch"]?c["catch"]:c["finally"],void(void 0!==c.finallyFallThrough&&(a.finallyFallThrough=c.finallyFallThrough))):void a.handleException(b)}if("object"!=typeof $traceurRuntime)throw new Error("traceur runtime not found.");var m=$traceurRuntime.createPrivateName,n=$traceurRuntime.defineProperties,o=$traceurRuntime.defineProperty,p=Object.create,q=TypeError,r=0,s=1,t=2,u=3,v=-2,w=-3,x={};c.prototype={pushTry:function(a,b){if(null!==b){for(var c=null,d=this.tryStack_.length-1;d>=0;d--)if(void 0!==this.tryStack_[d]["catch"]){c=this.tryStack_[d]["catch"];break}null===c&&(c=w),this.tryStack_.push({"finally":b,finallyFallThrough:c})}null!==a&&this.tryStack_.push({"catch":a})},popTry:function(){this.tryStack_.pop()},maybeUncatchable:function(){if(this.storedException===x)throw x},get sent(){return this.maybeThrow(),this.sent_},set sent(a){this.sent_=a},get sentIgnoreThrow(){return this.sent_},maybeThrow:function(){if("throw"===this.action)throw this.action="next",this.sent_},end:function(){switch(this.state){case v:return this;case w:throw this.storedException;default:throw b(this.state)}},handleException:function(a){throw this.GState=u,this.state=v,a},wrapYieldStar:function(a){var b=this;return{next:function(b){return a.next(b)},"throw":function(c){var d;if(c===x){if(a["return"]){if(d=a["return"](b.returnValue),!d.done)return b.returnValue=b.oldReturnValue,d;b.returnValue=d.value}throw c}if(a["throw"])return a["throw"](c);throw a["return"]&&a["return"](),q("Inner iterator does not have a throw method")}}}};var y=m(),z=m();return e.prototype=f,o(f,"constructor",a(e)),f.prototype={constructor:f,next:function(a){return d(this[y],this[z],"next",a)},"throw":function(a){return d(this[y],this[z],"throw",a)},"return":function(a){return this[y].oldReturnValue=this[y].returnValue,this[y].returnValue=a,d(this[y],this[z],"throw",x)}},n(f.prototype,{constructor:{enumerable:!1},next:{enumerable:!1},"throw":{enumerable:!1},"return":{enumerable:!1}}),Object.defineProperty(f.prototype,Symbol.iterator,a(function(){return this})),i.prototype=p(c.prototype),i.prototype.end=function(){switch(this.state){case v:this.resolve(this.returnValue);break;case w:this.reject(this.storedException);break;default:this.reject(b(this.state))}},i.prototype.handleException=function(){this.state=w},$traceurRuntime.asyncWrap=j,$traceurRuntime.initGeneratorFunction=h,$traceurRuntime.createGeneratorInstance=g,{}}),System.registerModule("traceur-runtime@0.0.90/src/runtime/relativeRequire.js",[],function(){"use strict";function a(a,c){function d(a){return"/"===a.slice(-1)}function e(a){return"/"===a[0]}function f(a){return"."===a[0]}return b=b||"undefined"!=typeof require&&require("path"),d(c)||e(c)?void 0:f(c)?require(b.resolve(b.dirname(a),c)):require(c)}var b;return $traceurRuntime.require=a,{}}),System.registerModule("traceur-runtime@0.0.90/src/runtime/spread.js",[],function(){"use strict";function a(){for(var a,b=[],c=0,d=0;d>>0}function b(a){return a&&("object"==typeof a||"function"==typeof a)}function c(a){return"function"==typeof a}function d(a){return"number"==typeof a}function e(a){return a=+a,u(a)?0:0!==a&&t(a)?a>0?s(a):r(a):a}function f(a){var b=e(a);return 0>b?0:w(b,y)}function g(a){return b(a)?a[Symbol.iterator]:void 0}function h(a){return c(a)}function i(a,b){return{value:a,done:b}}function j(a,b,c){b in a||Object.defineProperty(a,b,c)}function k(a,b,c){j(a,b,{value:c,configurable:!0,enumerable:!1,writable:!0})}function l(a,b,c){j(a,b,{value:c,configurable:!1,enumerable:!1,writable:!1})}function m(a,b){for(var c=0;ca;a+=2){var b=m[a],c=m[a+1];b(c),m[a]=void 0,m[a+1]=void 0}h=0}var g,h=0,i=a,j="undefined"!=typeof window?window:{},k=j.MutationObserver||j.WebKitMutationObserver,l="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,m=new Array(1e3);return g="undefined"!=typeof process&&"[object process]"==={}.toString.call(process)?b():k?c():l?d():e(),{get default(){return i}}}),System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/Promise.js",[],function(){"use strict";function a(a){return a&&"object"==typeof a&&void 0!==a.status_}function b(a){return a}function c(a){throw a}function d(a){var d=void 0!==arguments[1]?arguments[1]:b,f=void 0!==arguments[2]?arguments[2]:c,g=e(a.constructor);switch(a.status_){case void 0:throw TypeError;case 0:a.onResolve_.push(d,g),a.onReject_.push(f,g);break;case 1:k(a.value_,[d,g]);break;case-1:k(a.value_,[f,g])}return g.promise}function e(a){if(this===t){var b=g(new t(r));return{promise:b,resolve:function(a){h(b,a)},reject:function(a){i(b,a)}}}var c={};return c.promise=new a(function(a,b){c.resolve=a,c.reject=b}),c}function f(a,b,c,d,e){return a.status_=b,a.value_=c,a.onResolve_=d,a.onReject_=e,a}function g(a){return f(a,0,void 0,[],[])}function h(a,b){j(a,1,b,a.onResolve_)}function i(a,b){j(a,-1,b,a.onReject_)}function j(a,b,c,d){0===a.status_&&(k(c,d),f(a,b,c))}function k(a,b){p(function(){for(var c=0;c=j)return a[e(g)]=void 0,c(void 0,!0);var k,l=b.charCodeAt(i);if(55296>l||l>56319||i+1===j)k=String.fromCharCode(l);else{var m=b.charCodeAt(i+1);k=56320>m||m>57343?String.fromCharCode(l):String.fromCharCode(l)+String.fromCharCode(m)}return a[e(h)]=i+k.length,c(k,!1)},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(b,Symbol.iterator,{value:function(){return this},configurable:!0,enumerable:!0,writable:!0}),b),{})}();return{get createStringIterator(){return a}}}),System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/String.js",[],function(){"use strict";function a(a){var b=String(this);if(null==this||"[object RegExp]"==o.call(a))throw TypeError();var c=b.length,d=String(a),e=(d.length,arguments.length>1?arguments[1]:void 0),f=e?Number(e):0;isNaN(f)&&(f=0);var g=Math.min(Math.max(f,0),c);return p.call(b,d,f)==g}function b(a){var b=String(this);if(null==this||"[object RegExp]"==o.call(a))throw TypeError();var c=b.length,d=String(a),e=d.length,f=c;if(arguments.length>1){var g=arguments[1];void 0!==g&&(f=g?Number(g):0,isNaN(f)&&(f=0))}var h=Math.min(Math.max(f,0),c),i=h-e;return 0>i?!1:q.call(b,d,i)==i}function c(a){if(null==this)throw TypeError();var b=String(this);if(a&&"[object RegExp]"==o.call(a))throw TypeError();var c=b.length,d=String(a),e=d.length,f=arguments.length>1?arguments[1]:void 0,g=f?Number(f):0;g!=g&&(g=0);var h=Math.min(Math.max(g,0),c);return e+h>c?!1:-1!=p.call(b,d,g)}function d(a){if(null==this)throw TypeError();var b=String(this),c=a?Number(a):0;if(isNaN(c)&&(c=0),0>c||c==1/0)throw RangeError();if(0==c)return"";for(var d="";c--;)d+=b;return d}function e(a){if(null==this)throw TypeError();var b=String(this),c=b.length,d=a?Number(a):0;if(isNaN(d)&&(d=0),0>d||d>=c)return void 0;var e,f=b.charCodeAt(d);return f>=55296&&56319>=f&&c>d+1&&(e=b.charCodeAt(d+1),e>=56320&&57343>=e)?1024*(f-55296)+e-56320+65536:f}function f(a){var b=a.raw,c=b.length>>>0;if(0===c)return"";for(var d="",e=0;;){if(d+=b[e],e+1===c)return d;d+=arguments[++e]}}function g(a){var b,c,d=[],e=Math.floor,f=-1,g=arguments.length;if(!g)return"";for(;++fh||h>1114111||e(h)!=h)throw RangeError("Invalid code point: "+h);65535>=h?d.push(h):(h-=65536,b=(h>>10)+55296,c=h%1024+56320,d.push(b,c))}return String.fromCharCode.apply(null,d)}function h(){var a=$traceurRuntime.checkObjectCoercible(this),b=String(a);return j(b)}function i(i){var j=i.String;l(j.prototype,["codePointAt",e,"endsWith",b,"includes",c,"repeat",d,"startsWith",a]),l(j,["fromCodePoint",g,"raw",f]),m(j.prototype,h,Symbol)}var j=System.get("traceur-runtime@0.0.90/src/runtime/polyfills/StringIterator.js").createStringIterator,k=System.get("traceur-runtime@0.0.90/src/runtime/polyfills/utils.js"),l=k.maybeAddFunctions,m=k.maybeAddIterator,n=k.registerPolyfill,o=Object.prototype.toString,p=String.prototype.indexOf,q=String.prototype.lastIndexOf;return n(i),{get startsWith(){return a},get endsWith(){return b},get includes(){return c},get repeat(){return d},get codePointAt(){return e},get raw(){return f},get fromCodePoint(){return g},get stringPrototypeIterator(){return h},get polyfillString(){return i}}}),System.get("traceur-runtime@0.0.90/src/runtime/polyfills/String.js"),System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/ArrayIterator.js",[],function(){"use strict";function a(a,b){var c=f(a),d=new l;return d.iteratorObject_=c,d.arrayIteratorNextIndex_=0,d.arrayIterationKind_=b,d}function b(){return a(this,k)}function c(){return a(this,i)}function d(){return a(this,j)}var e=System.get("traceur-runtime@0.0.90/src/runtime/polyfills/utils.js"),f=e.toObject,g=e.toUint32,h=e.createIteratorResultObject,i=1,j=2,k=3,l=function(){function a(){}var b;return $traceurRuntime.createClass(a,(b={},Object.defineProperty(b,"next",{value:function(){var a=f(this),b=a.iteratorObject_;if(!b)throw new TypeError("Object is not an ArrayIterator");var c=a.arrayIteratorNextIndex_,d=a.arrayIterationKind_,e=g(b.length);return c>=e?(a.arrayIteratorNextIndex_=1/0,h(void 0,!0)):(a.arrayIteratorNextIndex_=c+1,d==j?h(b[c],!1):d==k?h([c,b[c]],!1):h(c,!1))},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(b,Symbol.iterator,{value:function(){return this},configurable:!0,enumerable:!0,writable:!0}),b),{})}();return{get entries(){return b},get keys(){return c},get values(){return d}}}),System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/Array.js",[],function(){"use strict";function a(a){var b,c,d=arguments[1],e=arguments[2],f=this,g=u(a),h=void 0!==d,i=0;if(h&&!n(d))throw TypeError();if(m(g)){b=o(f)?new f:[];var j=!0,k=!1,l=void 0;try{for(var p=void 0,q=g[$traceurRuntime.toProperty(Symbol.iterator)]();!(j=(p=q.next()).done);j=!0){var r=p.value;h?b[i]=d.call(e,r,i):b[i]=r,i++}}catch(s){k=!0,l=s}finally{try{j||null==q["return"]||q["return"]()}finally{if(k)throw l}}return b.length=i,b}for(c=t(g.length),b=o(f)?new f(c):new Array(c);c>i;i++)h?b[i]="undefined"==typeof e?d(g[i],i):d.call(e,g[i],i):b[i]=g[i];return b.length=c,b}function b(){for(var a=[],b=0;bf;f++)e[f]=a[f];return e.length=d,e}function c(a){var b=void 0!==arguments[1]?arguments[1]:0,c=arguments[2],d=u(this),e=t(d.length),f=s(b),g=void 0!==c?s(c):e;for(f=0>f?Math.max(e+f,0):Math.min(f,e),g=0>g?Math.max(e+g,0):Math.min(g,e);g>f;)d[f]=a,f++;return d}function d(a){var b=arguments[1];return f(this,a,b)}function e(a){var b=arguments[1];return f(this,a,b,!0)}function f(a,b){var c=arguments[2],d=void 0!==arguments[3]?arguments[3]:!1,e=u(a),f=t(e.length);if(!n(b))throw TypeError();for(var g=0;f>g;g++){var h=e[g];if(b.call(c,h,g,e))return d?g:h}return d?-1:void 0}function g(f){var g=f,h=g.Array,l=g.Object,m=g.Symbol,n=k;m&&m.iterator&&h.prototype[m.iterator]&&(n=h.prototype[m.iterator]),p(h.prototype,["entries",i,"keys",j,"values",n,"fill",c,"find",d,"findIndex",e]),p(h,["from",a,"of",b]),q(h.prototype,n,m),q(l.getPrototypeOf([].values()),function(){return this},m)}var h=System.get("traceur-runtime@0.0.90/src/runtime/polyfills/ArrayIterator.js"),i=h.entries,j=h.keys,k=h.values,l=System.get("traceur-runtime@0.0.90/src/runtime/polyfills/utils.js"),m=l.checkIterable,n=l.isCallable,o=l.isConstructor,p=l.maybeAddFunctions,q=l.maybeAddIterator,r=l.registerPolyfill,s=l.toInteger,t=l.toLength,u=l.toObject;return r(g),{get from(){return a},get of(){return b},get fill(){return c},get find(){return d},get findIndex(){return e},get polyfillArray(){return g}}}),System.get("traceur-runtime@0.0.90/src/runtime/polyfills/Array.js"),System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/Object.js",[],function(){"use strict";function a(a,b){return a===b?0!==a||1/a===1/b:a!==a&&b!==b}function b(a){for(var b=1;be;e++){var g=d[e];l(g)||(a[g]=c[g])}}return a}function c(a,b){var c,d,e=k(b),f=e.length;for(c=0;f>c;c++){var g=e[c];l(g)||(d=j(b,e[c]),i(a,e[c],d))}return a}function d(d){var e=d.Object;f(e,["assign",b,"is",a,"mixin",c])}var e=System.get("traceur-runtime@0.0.90/src/runtime/polyfills/utils.js"),f=e.maybeAddFunctions,g=e.registerPolyfill,h=$traceurRuntime,i=h.defineProperty,j=h.getOwnPropertyDescriptor,k=h.getOwnPropertyNames,l=h.isPrivateName,m=h.keys;return g(d),{get is(){return a},get assign(){return b},get mixin(){return c},get polyfillObject(){return d}}}),System.get("traceur-runtime@0.0.90/src/runtime/polyfills/Object.js"),System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/Number.js",[],function(){"use strict";function a(a){return g(a)&&m(a)}function b(b){return a(b)&&k(b)===b}function c(a){return g(a)&&n(a)}function d(b){if(a(b)){var c=k(b);if(c===b)return l(c)<=o}return!1}function e(e){var f=e.Number;h(f,["MAX_SAFE_INTEGER",o,"MIN_SAFE_INTEGER",p,"EPSILON",q]),i(f,["isFinite",a,"isInteger",b,"isNaN",c,"isSafeInteger",d])}var f=System.get("traceur-runtime@0.0.90/src/runtime/polyfills/utils.js"),g=f.isNumber,h=f.maybeAddConsts,i=f.maybeAddFunctions,j=f.registerPolyfill,k=f.toInteger,l=Math.abs,m=isFinite,n=isNaN,o=Math.pow(2,53)-1,p=-Math.pow(2,53)+1,q=Math.pow(2,-52);return j(e),{get MAX_SAFE_INTEGER(){return o},get MIN_SAFE_INTEGER(){return p},get EPSILON(){return q},get isFinite(){return a},get isInteger(){return b},get isNaN(){return c},get isSafeInteger(){return d},get polyfillNumber(){return e}}}),System.get("traceur-runtime@0.0.90/src/runtime/polyfills/Number.js"),System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/fround.js",[],function(){"use strict";function a(a,b,c){function d(a){var b=k(a),c=a-b;return.5>c?b:c>.5?b+1:b%2?b+1:b}var e,f,g,h,o,p,q,r=(1<a?1:0):0===a?(f=0,g=0,e=1/a===-(1/0)?1:0):(e=0>a,a=j(a),a>=n(2,1-r)?(f=m(k(l(a)/i),1023),g=d(a/n(2,f)*n(2,c)),g/n(2,c)>=2&&(f+=1,g=1),f>r?(f=(1<>=1;return l.reverse(),g=l.join(""),h=(1<0?i*n(2,j-h)*(1+k/n(2,c)):0!==k?i*n(2,-(h-1))*(k/n(2,c)):0>i?-0:0}function c(a){return b(a,8,23)}function d(b){return a(b,8,23)}function e(a){return 0===a||!f(a)||g(a)?a:c(d(Number(a)))}var f=isFinite,g=isNaN,h=Math,i=h.LN2,j=h.abs,k=h.floor,l=h.log,m=h.min,n=h.pow;return{get fround(){return e}}}),System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/Math.js",[],function(){"use strict";function a(a){if(a=x(+a),0==a)return 32;var b=0;return 0===(4294901760&a)&&(a<<=16,b+=16),0===(4278190080&a)&&(a<<=8,b+=8),0===(4026531840&a)&&(a<<=4,b+=4),0===(3221225472&a)&&(a<<=2,b+=2),0===(2147483648&a)&&(a<<=1,b+=1),b}function b(a,b){a=x(+a),b=x(+b);var c=a>>>16&65535,d=65535&a,e=b>>>16&65535,f=65535&b;return d*f+(c*f+d*e<<16>>>0)|0}function c(a){return a=+a,a>0?1:0>a?-1:a}function d(a){return.4342944819032518*F(a)}function e(a){return 1.4426950408889634*F(a)}function f(a){if(a=+a,-1>a||z(a))return NaN;if(0===a||a===1/0)return a;if(-1===a)return-(1/0);var b=0,c=50;if(0>a||a>1)return F(1+a);for(var d=1;c>d;d++)d%2===0?b-=G(a,d)/d:b+=G(a,d)/d;return b}function g(a){return a=+a,a===-(1/0)?-1:y(a)&&0!==a?D(a)-1:a}function h(a){return a=+a,0===a?1:z(a)?NaN:y(a)?(0>a&&(a=-a),a>21?D(a)/2:(D(a)+D(-a))/2):1/0}function i(a){return a=+a,y(a)&&0!==a?(D(a)-D(-a))/2:a}function j(a){if(a=+a,0===a)return a;if(!y(a))return c(a);var b=D(a),d=D(-a);return(b-d)/(b+d)}function k(a){return a=+a,1>a?NaN:y(a)?F(a+H(a+1)*H(a-1)):a}function l(a){return a=+a,0!==a&&y(a)?a>0?F(a+H(a*a+1)):-F(-a+H(a*a+1)):a}function m(a){return a=+a,-1===a?-(1/0):1===a?1/0:0===a?a:z(a)||-1>a||a>1?NaN:.5*F((1+a)/(1-a))}function n(a,b){for(var c=arguments.length,d=new Array(c),e=0,f=0;c>f;f++){var g=arguments[f];if(g=+g,g===1/0||g===-(1/0))return 1/0;g=B(g),g>e&&(e=g),d[f]=g}0===e&&(e=1);for(var h=0,i=0,f=0;c>f;f++){var g=d[f]/e,j=g*g-i,k=h+j;i=k-h-j,h=k}return H(h)*e}function o(a){return a=+a,a>0?E(a):0>a?C(a):a}function p(a){if(a=+a,0===a)return a;var b=0>a;b&&(a=-a);var c=G(a,1/3);return b?-c:c}function q(q){var s=q.Math;v(s,["acosh",k,"asinh",l,"atanh",m,"cbrt",p,"clz32",a,"cosh",h,"expm1",g,"fround",r,"hypot",n,"imul",b,"log10",d,"log1p",f,"log2",e,"sign",c,"sinh",i,"tanh",j,"trunc",o])}var r,s,t=System.get("traceur-runtime@0.0.90/src/runtime/polyfills/fround.js").fround,u=System.get("traceur-runtime@0.0.90/src/runtime/polyfills/utils.js"),v=u.maybeAddFunctions,w=u.registerPolyfill,x=u.toUint32,y=isFinite,z=isNaN,A=Math,B=A.abs,C=A.ceil,D=A.exp,E=A.floor,F=A.log,G=A.pow,H=A.sqrt;return"function"==typeof Float32Array?(s=new Float32Array(1),r=function(a){return s[0]=Number(a),s[0]}):r=t,w(q),{get clz32(){return a},get imul(){return b},get sign(){return c},get log10(){return d},get log2(){return e},get log1p(){return f},get expm1(){return g},get cosh(){return h},get sinh(){return i},get tanh(){return j},get acosh(){return k},get asinh(){return l},get atanh(){return m},get hypot(){return n},get trunc(){return o},get fround(){return r},get cbrt(){return p},get polyfillMath(){return q}}}),System.get("traceur-runtime@0.0.90/src/runtime/polyfills/Math.js"),System.registerModule("traceur-runtime@0.0.90/src/runtime/polyfills/polyfills.js",[],function(){"use strict";var a=System.get("traceur-runtime@0.0.90/src/runtime/polyfills/utils.js").polyfillAll;a(Reflect.global);var b=$traceurRuntime.setupGlobals;return $traceurRuntime.setupGlobals=function(c){b(c),a(c)},{}}),System.get("traceur-runtime@0.0.90/src/runtime/polyfills/polyfills.js"); -//# sourceMappingURL=traceur-runtime.min.map diff --git a/lib/traceur-runtime.min.map b/lib/traceur-runtime.min.map deleted file mode 100644 index 1c722c1..0000000 --- a/lib/traceur-runtime.min.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"traceur-runtime.min.js","sources":["traceur-runtime.js"],"names":["global","$bind","operand","thisArg","args","argArray","i","length","func","$apply","Function","prototype","bind","$construct","object","newUniqueString","Math","floor","random","counter","isPrivateName","s","privateNames","createPrivateName","createContinuation","argsArray","CONTINUATION_TYPE","isContinuation","setupProperTailCalls","isTailRecursiveName","call","initTailRecursiveFunction","result","tailCall","arguments","continuation","this","apply","isTailRecursive","construct","$traceurRuntime","$Object","Object","$TypeError","TypeError","$create","create","$defineProperties","defineProperties","$defineProperty","defineProperty","$freeze","freeze","$getOwnPropertyDescriptor","getOwnPropertyDescriptor","$getOwnPropertyNames","getOwnPropertyNames","$keys","keys","$hasOwnProperty","hasOwnProperty","$preventExtensions","toString","preventExtensions","$seal","seal","$isExtensible","isExtensible","nonEnum","value","configurable","enumerable","writable","isShimSymbol","symbol","SymbolValue","typeOf","v","Symbol","description","key","symbolDataProperty","symbolInternalProperty","symbolDescriptionProperty","symbolValues","getOwnHashObject","hashObject","hashProperty","self","hashObjectProperties","hash","hashCounter","hashPropertyDescriptor","undefined","isSymbolString","toProperty","name","removeSymbolKeys","array","rv","push","getOwnPropertySymbols","names","getOption","options","descriptor","polyfillObject","exportStar","j","mod","get","isObject","x","toObject","checkObjectCoercible","argument","polyfillSymbol","hasNativeSymbol","iterator","observer","hasNativeSymbolFunc","setupGlobals","Reflect","method","symbolValue","valueOf","typeof","window","buildFromEncodedParts","opt_scheme","opt_userInfo","opt_domain","opt_port","opt_path","opt_queryData","opt_fragment","out","join","split","uri","match","splitRe","removeDotSegments","path","leadingSlash","trailingSlash","slice","segments","up","pos","segment","pop","unshift","joinAndCanonicalizePath","parts","ComponentIndex","PATH","SCHEME","USER_INFO","DOMAIN","PORT","QUERY_DATA","FRAGMENT","canonicalizeUrl","url","resolveUrl","base","baseParts","index","lastIndexOf","isAbsolute","RegExp","UncoatedModuleEntry","uncoatedModule","value_","ModuleEvaluationError","erroneousModuleName","cause","message","constructor","stripCause","stack","stripStack","beforeLines","lines","number","first","afterLines","last","columnSpacing","columns","UncoatedModuleInstantiator","getUncoatedModuleInstantiator","ModuleStore","normalize","moduleInstantiators","Module","isLive","coatedModule","forEach","getter","liveModuleSentinel","descr","baseURL","$__1","location","href","Error","stripError","replace","loadedBy","moduleName","causeStack","some","frame","test","getUncoatedModule","$__0","relativeRequire","require","ex","evaled","indexOf","m","exec","line","parseInt","concat","moduleInstances","refererName","refererAddress","normalizedName","moduleInstance","set","module","String",{"end":{"file":"traceur-runtime.js","comments_before":[],"nlb":false,"endpos":21692,"endcol":15,"endline":661,"pos":21685,"col":8,"line":661,"value":"baseURL","type":"name"},"start":{"file":"traceur-runtime.js","comments_before":[],"nlb":false,"endpos":21692,"endcol":15,"endline":661,"pos":21685,"col":8,"line":661,"value":"baseURL","type":"name"},"name":"baseURL"},"registerModule","deps","bundleStore","register","execute","depMap","dep","registryEntry","exports","getAnonymousModule","moduleStoreModule","System","AsyncGeneratorFunction","AsyncGeneratorFunctionPrototype","initAsyncGeneratorFunction","functionObject","__proto__","createAsyncGeneratorInstance","observe","$__9","thisName","argsName","observeName","observeForEach","next","Promise","resolve","reject","generator","throw","error","return","schedule","asyncF","then","createDecoratedGenerator","onDone","DecoratedGenerator","$createPrivateName","AsyncGeneratorContext","decoratedObserver","done","inReturn","yield","e","yieldFor","observable","ctx","_generator","_onDone","Array","$__5","$__6","$__7","$__3","$__2","$__8","superDescriptor","homeObject","proto","$getPrototypeOf","superConstructor","ctor","superGet","superSet","forEachPropertyKey","f","getDescriptors","descriptors","makePropertiesNonEnumerable","createClass","staticObject","superClass","getProtoParent","getPrototypeOf","iteratorToArray","iter","tmp","getInternalError","state","GeneratorContext","GState","ST_NEWBORN","storedException","finallyFallThrough","sent_","returnValue","oldReturnValue","tryStack_","nextOrThrow","moveNext","action","ST_EXECUTING","ST_CLOSED","RETURN_SENTINEL","ST_SUSPENDED","sent","GeneratorFunction","GeneratorFunctionPrototype","createGeneratorInstance","innerFunction","getMoveNext","ctxName","moveNextName","initGeneratorFunction","AsyncFunctionContext","err","asyncWrap","createCallback","newState","errback","handleCatch","handleException","END_STATE","RETHROW_STATE","pushTry","catchState","finallyState","finally","catch","popTry","maybeUncatchable","maybeThrow","sentIgnoreThrow","end","wrapYieldStar","callerPath","requiredPath","isDirectory","isRelative","dirname","spread","iterResult","valueToSpread","getTemplateObject","raw","cooked","templateObject","map","genericType","type","argumentTypes","typeMap","typeRegister","tail","GenericType","types","any","boolean","string","void","toUint32","isCallable","isNumber","toInteger","$isNaN","$isFinite","$floor","$ceil","toLength","len","$min","MAX_SAFE_LENGTH","checkIterable","isConstructor","createIteratorResultObject","maybeDefine","maybeDefineMethod","maybeDefineConst","maybeAddFunctions","functions","maybeAddConsts","consts","maybeAddIterator","registerPolyfill","polyfills","polyfillAll","ceil","isFinite","isNaN","$pow","pow","min","lookupIndex","objectIndex_","stringIndex_","primitiveIndex_","initMap","entries_","deletedCount_","needsPolyfill","$__10","Map","entries","size","polyfillMap","deletedSentinel","$__11","$__12","iterable","objectMode","stringMode","has","delete","clear","callbackFn","$__13","$ctx","$__14","values","$__15","initSet","map_","Set","polyfillSet","$__4","item","add","$__16","$__17","asap","callback","arg","queue","scheduleFlush","useNextTick","process","nextTick","flush","useMutationObserver","iterations","BrowserMutationObserver","node","document","createTextNode","characterData","data","useMessageChannel","channel","MessageChannel","port1","onmessage","port2","postMessage","useSetTimeout","setTimeout","$__default","browserGlobal","MutationObserver","WebKitMutationObserver","isWorker","Uint8ClampedArray","importScripts","isPromise","status_","idResolveHandler","idRejectHandler","chain","promise","onResolve","onReject","deferred","getDeferred","onResolve_","onReject_","promiseEnqueue","C","$Promise","promiseInit","promiseRaw","promiseResolve","r","promiseReject","promiseSet","status","promiseDone","reactions","tasks","async","promiseHandle","handler","promiseCoerce","$PromiseReject","thenableSymbol","p","polyfillPromise","resolver","that","all","resolutions","makeCountdownFunction","count","countdownFunction","race","createStringIterator","StringIterator","iteratedString","stringIteratorNextIndex","o","position","resultString","charCodeAt","fromCharCode","second","startsWith","search","$toString","stringLength","searchString","Number","start","max","$indexOf","endsWith","searchLength","$lastIndexOf","includes","repeat","n","Infinity","RangeError","codePointAt","callsite","fromCodePoint","_","highSurrogate","lowSurrogate","codeUnits","codePoint","stringPrototypeIterator","polyfillString","createArrayIterator","kind","ArrayIterator","iteratorObject_","arrayIteratorNextIndex_","arrayIterationKind_","ARRAY_ITERATOR_KIND_ENTRIES","ARRAY_ITERATOR_KIND_KEYS","ARRAY_ITERATOR_KIND_VALUES","itemKind","from","arrLike","arr","mapFn","items","mapping","k","of","fill","fillStart","fillEnd","find","predicate","findHelper","findIndex","returnIndex","polyfillArray","jsValues","is","left","right","assign","target","source","props","mixin","NumberIsFinite","isInteger","NumberIsNaN","isSafeInteger","integral","$abs","MAX_SAFE_INTEGER","polyfillNumber","MIN_SAFE_INTEGER","EPSILON","abs","packIEEE754","ebits","fbits","roundToEven","w","bits","str","bytes","bias","log","LN2","reverse","substring","unpackIEEE754","b","NaN","unpackF32","packF32","fround","clz32","imul","y","xh","xl","yh","yl","sign","log10","log2","log1p","expm1","exp","cosh","sinh","tanh","exp1","exp2","acosh","sqrt","asinh","atanh","hypot","sum","compensation","summand","preliminary","trunc","cbrt","negate","polyfillMath","f32","jsFround","Float32Array"],"mappings":"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"} diff --git a/package.json b/package.json index adc7239..41e4e4a 100644 --- a/package.json +++ b/package.json @@ -1,49 +1,63 @@ { - "name": "angular2-full-app-demo", - "version": "0.0.0", + "name": "angular2-authentication-sample", + "version": "0.0.1", "description": "This is a sample that shows how to add authentication to an Angular 2 (ng2) app", "main": "", "scripts": { - "start": "webpack-dev-server --inline -d --colors --display-error-details --display-cached --port 3000", + "server": "cd backend && npm i && node server.js", + "front": "webpack-dev-server --inline -d --colors --display-error-details --display-cached --port 3000", + "start": "npm run front", "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url": "https://github.com/auth0/angular2-authentication-sample.git" }, - "author": "Martin Gontovnikas (http://gon.to) ", + "contributors": [ + "Martin Gontovnikas (http://gon.to) ", + "PatrickJS ", + "Ryan Chenkie " + ], "license": "MIT", "bugs": { "url": "https://github.com/auth0/angular2-authentication-sample/issues" }, "homepage": "https://github.com/auth0/angular2-authentication-sample", "dependencies": { - "angular2": "2.0.0-alpha.26", - "raw-loader": "^0.5.1", - "reflect-metadata": "^0.1.0", - "rtts_assert": "2.0.0-alpha.26", - "rx": "^2.5.3", - "zone.js": "^0.5.0", - "bootstrap": "~3.3.4", - "jwt-decode": "~1.1.0", - "whatwg-fetch": "~0.7.0", - "when": "~3.7.3" + "@angular/common": "2.0.1", + "@angular/compiler": "2.0.1", + "@angular/core": "2.0.1", + "@angular/forms": "2.0.1", + "@angular/http": "2.0.1", + "@angular/platform-browser": "2.0.1", + "@angular/platform-browser-dynamic": "2.0.1", + "@angular/platform-server": "2.0.1", + "@angular/router": "3.0.1", + "angular2-jwt": "0.1.23", + "bootstrap": "^3.3.7", + "core-js": "^2.4.1", + "jwt-decode": "^2.0.1", + "rxjs": "5.0.0-beta.12", + "zone.js": "~0.6.25" }, "devDependencies": { - "css-loader": "^0.14.4", - "xtend": "^4.0.0", - "loader-utils": "^0.2.9", - "exports-loader": "^0.6.2", - "expose-loader": "^0.7.0", - "file-loader": "^0.8.1", - "html-webpack-plugin": "^1.4.0", - "imports-loader": "^0.6.3", - "json-loader": "^0.5.1", - "style-loader": "^0.12.2", - "typescript": "^1.5.0-beta", - "typescript-simple-loader": "^0.1.2", - "url-loader": "^0.5.5", - "webpack": "^1.9.6", - "webpack-dev-server": "^1.8.2" + "css-loader": "^0.25.0", + "exports-loader": "^0.6.3", + "expose-loader": "^0.7.1", + "file-loader": "^0.9.0", + "imports-loader": "^0.6.5", + "json-loader": "^0.5.4", + "raw-loader": "^0.5.1", + "style-loader": "^0.13.1", + "ts-loader": "^0.8.1", + "tsconfig-lint": "^0.12.0", + "tslint": "^3.7.1", + "tslint-loader": "^2.1.3", + "typedoc": "^0.4.3", + "typescript": "~2.0.3", + "typings": "^1.3.0", + "url-loader": "^0.5.7", + "webpack": "^1.13.2", + "webpack-dev-server": "^1.16.1" } } diff --git a/src/app.html b/src/app.html new file mode 100644 index 0000000..ec0f9fa --- /dev/null +++ b/src/app.html @@ -0,0 +1,3 @@ +
+ +
diff --git a/src/app.module.ts b/src/app.module.ts new file mode 100644 index 0000000..7cc1f7c --- /dev/null +++ b/src/app.module.ts @@ -0,0 +1,32 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { RouterModule } from '@angular/router'; +import { HttpModule } from '@angular/http'; +import { FormsModule } from '@angular/forms'; +import { NgModule } from '@angular/core'; + +import { AUTH_PROVIDERS } from 'angular2-jwt'; + +import { AuthGuard } from './common/auth.guard'; +import { Home } from './home'; +import { Login } from './login'; +import { Signup } from './signup'; +import { App } from './app'; + +import { routes } from './app.routes'; + +@NgModule({ + bootstrap: [App], + declarations: [ + Home, Login, Signup, App + ], + imports: [ + HttpModule, BrowserModule, FormsModule, + RouterModule.forRoot(routes, { + useHash: true + }) + ], + providers: [ + AuthGuard, ...AUTH_PROVIDERS + ] +}) +export class AppModule {} diff --git a/src/app.routes.ts b/src/app.routes.ts new file mode 100644 index 0000000..efc3c31 --- /dev/null +++ b/src/app.routes.ts @@ -0,0 +1,13 @@ +import { Routes } from '@angular/router'; +import { Home } from './home'; +import { Login } from './login'; +import { Signup } from './signup'; +import { AuthGuard } from './common/auth.guard'; + +export const routes: Routes = [ + { path: '', component: Login }, + { path: 'login', component: Login }, + { path: 'signup', component: Signup }, + { path: 'home', component: Home, canActivate: [AuthGuard] }, + { path: '**', component: Login }, +]; diff --git a/src/app.ts b/src/app.ts new file mode 100644 index 0000000..16cd47d --- /dev/null +++ b/src/app.ts @@ -0,0 +1,13 @@ +import { Component } from '@angular/core'; +import { Router } from '@angular/router'; + +const template = require('./app.html'); + +@Component({ + selector: 'auth-app', + template: template +}) + +export class App { + constructor(public router: Router) {} +} diff --git a/src/app/LoggedInOutlet.ts b/src/app/LoggedInOutlet.ts deleted file mode 100644 index bfae6b2..0000000 --- a/src/app/LoggedInOutlet.ts +++ /dev/null @@ -1,31 +0,0 @@ -import {Directive, Attribute, ElementRef, DynamicComponentLoader} from 'angular2/angular2'; -import {Router, RouterOutlet} from 'angular2/router'; -import {Injector} from 'angular2/di'; -import {Login} from '../login/login'; - -@Directive({selector: 'router-outlet'}) -export class LoggedInRouterOutlet extends RouterOutlet { - publicRoutes: any - constructor( - elementRef: ElementRef, - _loader: DynamicComponentLoader, - _parentRouter: Router, - _injector: Injector, - @Attribute('name') nameAttr: string) { - - this.publicRoutes = { - '/login': true, - '/signup': true - }; - - super(elementRef, _loader, _parentRouter, _injector, nameAttr); - } - - activate(instruction) { - var url = this._parentRouter.lastNavigationAttempt; - if (!this.publicRoutes[url] && !localStorage.getItem('jwt')) { - instruction.component = Login; - } - super.activate(instruction); - } -} diff --git a/src/app/app.html b/src/app/app.html deleted file mode 100644 index aedcdf3..0000000 --- a/src/app/app.html +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/src/app/app.ts b/src/app/app.ts deleted file mode 100644 index df81abf..0000000 --- a/src/app/app.ts +++ /dev/null @@ -1,47 +0,0 @@ -/// - -import {View, Component} from 'angular2/angular2'; -import {Home} from '../home/home'; -import {Login} from '../login/login'; -import {Signup} from '../signup/signup'; -import {RouteConfig, RouterOutlet, RouterLink, Router} from 'angular2/router'; -import {BrowserLocation} from 'angular2/src/router/browser_location'; -import {LoggedInRouterOutlet} from './LoggedInOutlet'; - -let template = require('./app.html'); - - -@Component({ - selector: 'auth-app' -}) -@View({ - template:`${template}`, - directives: [LoggedInRouterOutlet] -}) -@RouteConfig([ - { path: '/home', as: 'home', component: Home }, - { path: '/login', as: 'login', component: Login }, - { path: '/signup', as: 'signup', component: Signup } -]) -export class App { - router: Router; - constructor(router: Router, browserLocation: BrowserLocation) { - // we need to manually go to the correct uri until the router is fixed - this.router = router; - let uri = browserLocation.path(); - if (uri === '' || uri === '/') { - router.navigate('/home'); - } else { - router.navigate(uri); - } - } - - goTo(event, url) { - event.preventDefault(); - this.router.navigate(url).then(() => { - console.log("Router successfully to", url); - }, () => { - console.log("Error going to URL", url); - }); - } -} diff --git a/src/common/BrowserDomAdapter.ts b/src/common/BrowserDomAdapter.ts deleted file mode 100644 index a451b4a..0000000 --- a/src/common/BrowserDomAdapter.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import {BrowserDomAdapter} from 'angular2/src/dom/browser_adapter'; -BrowserDomAdapter.makeCurrent(); diff --git a/src/common/auth.guard.ts b/src/common/auth.guard.ts new file mode 100644 index 0000000..cc33f3b --- /dev/null +++ b/src/common/auth.guard.ts @@ -0,0 +1,18 @@ +import { Injectable } from '@angular/core'; +import { Router, CanActivate } from '@angular/router'; +import { tokenNotExpired } from 'angular2-jwt'; + + +@Injectable() +export class AuthGuard implements CanActivate { + constructor(private router: Router) {} + + canActivate() { + if (tokenNotExpired()) { + return true; + } + + this.router.navigate(['/login']); + return false; + } +} diff --git a/src/common/formInjectables.ts b/src/common/formInjectables.ts deleted file mode 100644 index d996d92..0000000 --- a/src/common/formInjectables.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// -import {FormBuilder} from 'angular2/forms'; - -export var formInjectables: Array = [ - FormBuilder -]; diff --git a/src/common/headers.ts b/src/common/headers.ts new file mode 100644 index 0000000..4667935 --- /dev/null +++ b/src/common/headers.ts @@ -0,0 +1,5 @@ +import { Headers } from '@angular/http'; + +export const contentHeaders = new Headers(); +contentHeaders.append('Accept', 'application/json'); +contentHeaders.append('Content-Type', 'application/json'); diff --git a/src/common/jitInjectables.ts b/src/common/jitInjectables.ts deleted file mode 100644 index 3453398..0000000 --- a/src/common/jitInjectables.ts +++ /dev/null @@ -1,7 +0,0 @@ -/// -import {ChangeDetection, JitChangeDetection} from 'angular2/change_detection'; -import {bind} from 'angular2/di'; - -export var jitInjectables = [ - bind(ChangeDetection).toClass(JitChangeDetection) -]; diff --git a/src/home/home.html b/src/home/home.html index 1d57940..e336b6d 100644 --- a/src/home/home.html +++ b/src/home/home.html @@ -1,14 +1,14 @@

Welcome to the angular2 authentication sample!

-

Your JWT is:

-
{{ jwt }}
-
{{ decodedJwt | json }}
+

Your JWT is:

+
{{ jwt }}
+
{{ decodedJwt | json }}

Click any of the buttons to call an API and get a response

Call Anonymous API

Call Secure API

Logout

-

The response of calling the {{api}} API is:

-

{{response}}

+

The response of calling the {{ api }} API is:

+

{{ response }}

diff --git a/src/home/home.ts b/src/home/home.ts index 41c11d9..2b13d92 100644 --- a/src/home/home.ts +++ b/src/home/home.ts @@ -1,37 +1,30 @@ -/// - -import {Component, View} from 'angular2/angular2'; -import {coreDirectives} from 'angular2/directives'; -import {status, text} from '../utils/fetch' -import { Router} from 'angular2/router'; - -let styles = require('./home.css'); -let template = require('./home.html'); +import { Component } from '@angular/core'; +import { Http } from '@angular/http'; +import { Router } from '@angular/router'; +import { AuthHttp } from 'angular2-jwt'; +const styles = require('./home.css'); +const template = require('./home.html'); @Component({ - selector: 'home' -}) -@View({ - template:`\n${template}`, - directives: [coreDirectives] + selector: 'home', + template: template, + styles: [ styles ] }) export class Home { jwt: string; decodedJwt: string; - router: Router; response: string; api: string; - constructor(router: Router) { - this.router = router; - this.jwt = localStorage.getItem('jwt'); + constructor(public router: Router, public http: Http, public authHttp: AuthHttp) { + this.jwt = localStorage.getItem('id_token'); this.decodedJwt = this.jwt && window.jwt_decode(this.jwt); } logout() { - localStorage.removeItem('jwt'); - this.router.parent.navigate('/login'); + localStorage.removeItem('id_token'); + this.router.navigate(['login']); } callAnonymousApi() { @@ -41,25 +34,24 @@ export class Home { callSecuredApi() { this._callApi('Secured', 'http://localhost:3001/api/protected/random-quote'); } + _callApi(type, url) { this.response = null; - this.api = type; - window.fetch(url, { - method: 'GET', - headers: { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': 'bearer ' + this.jwt - } - }) - .then(status) - .then(text) - .then((response) => { - this.response = response; - }) - .catch((error) => { - this.response = error.message; - }); + if (type === 'Anonymous') { + // For non-protected routes, just use Http + this.http.get(url) + .subscribe( + response => this.response = response.text(), + error => this.response = error.text() + ); + } + if (type === 'Secured') { + // For protected routes, use AuthHttp + this.authHttp.get(url) + .subscribe( + response => this.response = response.text(), + error => this.response = error.text() + ); + } } - } diff --git a/src/home/index.ts b/src/home/index.ts new file mode 100644 index 0000000..e20557b --- /dev/null +++ b/src/home/index.ts @@ -0,0 +1 @@ +export * from './home'; diff --git a/src/index.ts b/src/index.ts index f9fc1eb..6af7a5b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,17 +1,5 @@ -/// +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; -import {routerInjectables} from 'angular2/router'; -import {formInjectables} from './common/formInjectables'; -import { bootstrap } from 'angular2/angular2'; -import { bind } from 'angular2/di'; -import { PipeRegistry } from 'angular2/change_detection'; +import { AppModule } from './app.module'; -import { App } from './app/app'; - -bootstrap( - App, - [ - formInjectables, - routerInjectables - ] -); +platformBrowserDynamic().bootstrapModule(AppModule); diff --git a/src/login/index.ts b/src/login/index.ts new file mode 100644 index 0000000..6cc1e6e --- /dev/null +++ b/src/login/index.ts @@ -0,0 +1 @@ +export * from './login'; diff --git a/src/login/login.html b/src/login/login.html index 9e456c3..39f2016 100644 --- a/src/login/login.html +++ b/src/login/login.html @@ -10,5 +10,6 @@

Login

+ Click here to Signup diff --git a/src/login/login.ts b/src/login/login.ts index 380f20d..4033e6d 100644 --- a/src/login/login.ts +++ b/src/login/login.ts @@ -1,51 +1,38 @@ -/// - -import {Component, View} from 'angular2/angular2'; -import {status, json} from '../utils/fetch' -import { Router, RouterLink } from 'angular2/router'; - - -let styles = require('./login.css'); -let template = require('./login.html'); +import { Component } from '@angular/core'; +import { Router } from '@angular/router'; +import { Http } from '@angular/http'; +import { contentHeaders } from '../common/headers'; +const styles = require('./login.css'); +const template = require('./login.html'); @Component({ - selector: 'login' -}) -@View({ - template:`\n${template}`, - directives: [RouterLink] + selector: 'login', + template: template, + styles: [ styles ] }) export class Login { - constructor(public router: Router) { + constructor(public router: Router, public http: Http) { } login(event, username, password) { event.preventDefault(); - window.fetch('http://localhost:3001/sessions/create', { - method: 'POST', - headers: { - 'Accept': 'application/json', - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - username, password - }) - }) - .then(status) - .then(json) - .then((response) => { - localStorage.setItem('jwt', response.id_token); - this.router.parent.navigate('/home'); - }) - .catch((error) => { - alert(error.message); - console.log(error.message); - }); + let body = JSON.stringify({ username, password }); + this.http.post('http://localhost:3001/sessions/create', body, { headers: contentHeaders }) + .subscribe( + response => { + localStorage.setItem('id_token', response.json().id_token); + this.router.navigate(['home']); + }, + error => { + alert(error.text()); + console.log(error.text()); + } + ); } signup(event) { event.preventDefault(); - this.router.parent.navigate('/signup'); + this.router.navigate(['signup']); } } diff --git a/src/signup/index.ts b/src/signup/index.ts new file mode 100644 index 0000000..630f027 --- /dev/null +++ b/src/signup/index.ts @@ -0,0 +1 @@ +export * from './signup'; diff --git a/src/signup/signup.html b/src/signup/signup.html index 529fe63..a28e2ba 100644 --- a/src/signup/signup.html +++ b/src/signup/signup.html @@ -1,4 +1,4 @@ -