diff --git a/.gitignore b/.gitignore index ccedfda..c4e7d9e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules -projects \ No newline at end of file +projects +*.tgz \ No newline at end of file diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..5fd0e36 --- /dev/null +++ b/.npmignore @@ -0,0 +1,4 @@ +node_modules +projects +*.tgz +examples \ No newline at end of file diff --git a/LICENCE b/LICENCE new file mode 100644 index 0000000..0a39086 --- /dev/null +++ b/LICENCE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) 2020 Arne van Iterson + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/README.md b/README.md index 4c38088..eb024ef 100644 --- a/README.md +++ b/README.md @@ -6,13 +6,7 @@ Me making games using HTML5 Games: Novice to Ninja by Sitepoint. The projects here are very similar to those featured in the book, and it will take some time before I get to make my own game. To try out asdf library and the projects for yourself, you need to: -* Download node.js -* Clone this repository -* Go the the folder where you cloned this repository -* Run `npm start` or run -```bash -node list.js --dir ./ -``` +* TODO Releases will be featured on [ARNweb Games](https://arnweb.nl/games/) \ No newline at end of file diff --git a/asdf/index.html b/asdf/index.html deleted file mode 100644 index ade551b..0000000 --- a/asdf/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - ASDF Framework - - - -

ASDF JS Framework

-

Nothing to browse here, just some shared files to make these games work.

- - - \ No newline at end of file diff --git a/asdf/index.js b/asdf/index.js deleted file mode 100644 index c589f3d..0000000 --- a/asdf/index.js +++ /dev/null @@ -1,35 +0,0 @@ -import Container from "./Container.js"; -import CanvasRenderer from "./renderer/CanvasRenderer.js"; -import Game from "./Game.js"; - -import math from "./utilities/math.js"; - -import KeyControls from "./controls/KeyControls.js"; -import MouseControls from "./controls/MouseControls.js"; - -import Sprite from "./Sprite.js"; -import TileMap from "./TileMap.js"; -import TileMapXML from "./TileMapXML.js"; -import TileSprite from "./TileSprite.js"; -import TileSpriteXML from "./TileSpriteXML.js"; -import Text from "./Text.js"; -import Texture from "./Texture.js"; - -import SpriteSheetXML from "./SpriteSheetXML.js"; - -export default { - CanvasRenderer, - Container, - Game, - math, - KeyControls, - MouseControls, - Sprite, - TileMap, - TileMapXML, - TileSprite, - SpriteSheetXML, - TileSpriteXML, - Text, - Texture -}; diff --git a/examples/lib-test/bundle.js b/examples/lib-test/bundle.js new file mode 100644 index 0000000..241771f --- /dev/null +++ b/examples/lib-test/bundle.js @@ -0,0 +1,545 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i c !== child); + return child; + } + + map(f) { + return this.children.map(f); + } + + update(dt, t) { + this.children = this.children.filter(child => { + if (child.update) { + child.update(dt, t, this); + } + return child.dead ? false : true; + }); + } +} +module.exports = Container; + +},{}],2:[function(require,module,exports){ +var Container = require("./Container"), + CanvasRenderer = require('./renderer/CanvasRenderer') +; + +const STEP = 1 / 60; +const FRAME_MAX = 5 * STEP; + +class Game { + constructor(w, h, pixelated, parent = "#board") { + this.w = w; + this.h = h; + this.renderer = new CanvasRenderer(w, h); + document.querySelector(parent).appendChild(this.renderer.view); + + if (pixelated) { + this.renderer.setPixelated(); + } + + this.scene = new Container(); + } + + run(gameUpdate = () => { }) { + let dt = 0; + let last = 0; + const loop = ms => { + requestAnimationFrame(loop); + + const t = ms / 1000; + dt = Math.min(t - last, FRAME_MAX); + last = t; + + this.scene.update(dt, t); + gameUpdate(dt, t); + this.renderer.render(this.scene); + }; + requestAnimationFrame(loop); + } +} + +module.exports = Game; +},{"./Container":1,"./renderer/CanvasRenderer":14}],3:[function(require,module,exports){ +class Sprite { + constructor(texture) { + this.texture = texture; + this.pos = { x: 0, y: 0 }; + this.anchor = { x: 0, y: 0 }; + this.scale = { x: 1, y: 1 }; + this.rotation = 0; + } +} +module.exports = Sprite; + +},{}],4:[function(require,module,exports){ +class SpriteSheetXML { + constructor(url) { + this.array = []; + this.fetchXMLtoArray(url); + } + + fetchXMLtoArray(url) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + xhr.send(null); + + if (xhr.status === 200) { + var children = xhr.responseXML.children[0].children; + for (let index = 0; index < children.length; index++) { + const element = children[index]; + this.array.push({ + name: element.attributes.name.nodeValue, + x: element.attributes.x.nodeValue, + y: element.attributes.y.nodeValue, + width: element.attributes.width.nodeValue, + height: element.attributes.height.nodeValue + }); + } + } else { + console.error('XML file cannot be loaded!') + } + } + + findIndex(attribute, value) { + for (let index = 0; index < this.array.length; index++) { + const element = this.array[index]; + if (element[attribute] == value) { + return index; + } + } + } +} + +module.exports = SpriteSheetXML; +},{}],5:[function(require,module,exports){ +class Text { + constructor(text = "", style = {}) { + this.pos = { x: 0, y: 0 }; + this.text = text; + this.style = style; + } +} +module.exports = Text; + +},{}],6:[function(require,module,exports){ +class Texture { + constructor(url) { + this.img = new Image(); + this.img.src = url; + } +} +module.exports = Texture; + +},{}],7:[function(require,module,exports){ +var Container = require("./Container"), + TileSprite = require("./TileSprite") +; + +class TileMap extends Container { + constructor(tiles, mapW, mapH, tileW, tileH, texture) { + super(); + this.mapW = mapW; + this.mapH = mapH; + this.tileW = tileW; + this.tileH = tileH; + this.w = mapW * tileW; + this.h = mapH * tileH; + + this.children = tiles.map((frame, i) => { + const s = new TileSprite(texture, tileW, tileH); + s.frame = frame; + s.pos.x = i % mapW * tileW; + s.pos.y = Math.floor(i / mapW) * tileH; + return s; + }); + } +} + +module.exports = TileMap; +},{"./Container":1,"./TileSprite":9}],8:[function(require,module,exports){ +var Container = require("./Container"), + TileSpriteXML = require("./TileSpriteXML") +; + +class TileMapXML extends Container { + constructor(tiles, mapW, mapH, texture, xml) { + super(texture); + this.mapW = mapW; + this.mapH = mapH; + this.tileW = xml.array[tiles[0]].width; + this.tileH = xml.array[tiles[0]].height; + this.w = mapW * this.tileW; + this.h = mapH * this.tileH; + + this.children = tiles.map((frame, i) => { + const s = new TileSpriteXML(texture, xml, frame); + s.frame = frame; + s.pos.x = i % mapW * this.tileW; + s.pos.y = Math.floor(i / mapW) * this.tileH; + return s; + }); + } +} + +module.exports = TileMapXML; +},{"./Container":1,"./TileSpriteXML":10}],9:[function(require,module,exports){ +var Sprite = require("./Sprite"); + +class TileSprite extends Sprite { + constructor(texture, w, h) { + super(texture); + this.tileW = w; + this.tileH = h; + this.frame = { x: 0, y: 0 }; + } +} + +module.exports = TileSprite; +},{"./Sprite":3}],10:[function(require,module,exports){ +var Sprite = require("./Sprite"); + +class TileSpriteXML extends Sprite { + constructor(texture, xml, index) { + super(texture); + var src = xml.array[index]; + this.imgPos = { x: src['x'], y: src['y'] }; + this.width = src['width']; + this.height = src['height']; + } +} + +module.exports = TileSpriteXML; +},{"./Sprite":3}],11:[function(require,module,exports){ +class KeyControls { + + constructor() { + this.keys = {}; + // Bind event handlers + document.addEventListener("keydown", e => { + if ([37, 38, 39, 40].indexOf(e.which) >= 0) { + e.preventDefault(); + } + this.keys[e.which] = true; + }, false); + document.addEventListener('keyup', e => { + this.keys[e.which] = false; + }, false); + } + + get action() { + // Spacebar + return this.keys[32]; + } + + get x() { + // Arrow Left or A (WASD) + if (this.keys[37] || this.keys[65]) { + return -1; + } + // Arrow Right or D (WASD) + if (this.keys[39] || this.keys[68]) { + return 1; + } + return 0; + } + + get y() { + // Arrow Up or W (WASD) + if (this.keys[38] || this.keys[87]) { + return -1; + } + // Arrow Down or S (WASD) + if (this.keys[40] || this.keys[83]) { + return 1; + } + return 0; + } + + + key(key, value) { + if (value !== undefined) { + this.keys[key] = value; + } + return this.keys[key]; + } + + reset() { + for (let key in this.keys) { + this.keys[key] = false; + } + } + +} + +module.exports = KeyControls; + +},{}],12:[function(require,module,exports){ +class MouseControls { + constructor(container) { + this.el = container || document.body; + // State + this.pos = { x: 0, y: 0 }; + this.isDown = false; + this.pressed = false; + this.released = false; + // Handlers + document.addEventListener('mousemove', this.move.bind(this), false); + document.addEventListener('mousedown', this.down.bind(this), false); + document.addEventListener('mouseup', this.up.bind(this), false); + } + + mousePosFromEvent({ clientX, clientY }) { + const { el, pos } = this; + const rect = el.getBoundingClientRect(); + const xr = el.width / el.clientWidth; + const yr = el.height / el.clientHeight; + pos.x = (clientX - rect.left) * xr; + pos.y = (clientY - rect.top) * yr; + } + + move(e) { + this.mousePosFromEvent(e); + } + + down(e) { + this.isDown = true; + this.pressed = true; + this.mousePosFromEvent(e); + } + + up() { + this.isDown = false; + this.released = true; + } + + update() { + this.released = false; + this.pressed = false; + } +} + +module.exports = MouseControls; + +},{}],13:[function(require,module,exports){ +var Container = require("./Container.js"), + CanvasRenderer = require("./renderer/CanvasRenderer.js"), + Game = require("./Game.js"), + math = require("./utilities/math.js"), + KeyControls = require("./controls/KeyControls.js"), + MouseControls = require("./controls/MouseControls.js"), + Sprite = require("./Sprite.js"), + TileMap = require("./TileMap.js"), + TileMapXML = require("./TileMapXML.js"), + TileSprite = require("./TileSprite.js"), + TileSpriteXML = require("./TileSpriteXML.js"), + Text = require("./Text.js"), + Texture = require("./Texture.js"), + SpriteSheetXML = require("./SpriteSheetXML.js") +; + +module.exports = { + CanvasRenderer, + Container, + Game, + math, + KeyControls, + MouseControls, + Sprite, + TileMap, + TileMapXML, + TileSprite, + SpriteSheetXML, + TileSpriteXML, + Text, + Texture +}; + +},{"./Container.js":1,"./Game.js":2,"./Sprite.js":3,"./SpriteSheetXML.js":4,"./Text.js":5,"./Texture.js":6,"./TileMap.js":7,"./TileMapXML.js":8,"./TileSprite.js":9,"./TileSpriteXML.js":10,"./controls/KeyControls.js":11,"./controls/MouseControls.js":12,"./renderer/CanvasRenderer.js":14,"./utilities/math.js":15}],14:[function(require,module,exports){ +class CanvasRenderer { + + constructor(w, h) { + const canvas = document.createElement("canvas"); + this.w = canvas.width = w; + this.h = canvas.height = h; + this.view = canvas; + this.ctx = canvas.getContext("2d"); + this.ctx.textBaseLine = "top"; + } + + setPixelated() { + this.ctx['imageSmoothingEnabled'] = false; /* standard */ + this.ctx['mozImageSmoothingEnabled'] = false; /* Firefox */ + this.ctx['oImageSmoothingEnabled'] = false; /* Opera */ + this.ctx['webkitImageSmoothingEnabled'] = false; /* Safari */ + this.ctx['msImageSmoothingEnabled'] = false; /* IE */ + } + + render(container, clear = true) { + const { ctx } = this; + function renderRec(container) { + // Render container children + container.children.forEach(child => { + if (child.visible == false) { + return; + } + + ctx.save(); + + if (child.pos) { + ctx.translate(Math.round(child.pos.x), Math.round(child.pos.y)); + } + + if (child.anchor) { + ctx.translate(child.anchor.x, child.anchor.y); + } + + if (child.scale) { + ctx.scale(child.scale.x, child.scale.y); + } + + if (child.rotation) { + const px = child.pivot ? child.pivot.x : 0; + const py = child.pivot ? child.pivot.y : 0; + ctx.translate(px, py); + ctx.rotate(child.rotation); + ctx.translate(-px, -py); + } + + if (child.text) { + const { font, fill, align } = child.style; + if (font) ctx.font = font; + if (fill) ctx.fillStyle = fill; + if (align) ctx.textAlign = align; + ctx.fillText(child.text, 0, 0); + } + + else if (child.texture) { + const img = child.texture.img; + if (child.tileW && child.tileH) { + ctx.drawImage( + img, + child.frame.x * child.tileW, + child.frame.y * child.tileH, + child.tileW, child.tileH, + 0, 0, + child.tileW, child.tileH + ); + } else if (child.imgPos && child.width && child.height) { + ctx.drawImage( + img, + child.imgPos.x, + child.imgPos.y, + child.width, child.height, + 0, 0, + child.width, child.height + ); + } else { + ctx.drawImage(img, 0, 0); + } + } + + // Handle children with children + if (child.children) { + renderRec(child); + } + ctx.restore(); + }) + } + if (clear) { + ctx.clearRect(0, 0, this.w, this.h); + } + renderRec(container); + } +} +module.exports = CanvasRenderer; + +},{}],15:[function(require,module,exports){ +function rand(min, max) { + return Math.floor(randf(min, max)); +} + +function randf(min, max) { + if (max == null) { + max = min || 1; + min = 0; + } + return Math.random() * (max - min) + min; +} + +function randOneFrom(items) { + return items[rand(items.length)]; +} + +function randOneIn(max = 2) { + return rand(0, max) === 0; +} + +module.exports = { + rand, + randf, + randOneFrom, + randOneIn +}; +},{}],16:[function(require,module,exports){ +var asdf = require("../../../asdf/index"); +const { Game, Container, CanvasRenderer, math, KeyControls, MouseControls, Text, Texture, Sprite } = asdf; + +const game = new Game(640, 320, false); +const { scene, w, h } = game; + +const buildings = scene.add(new Container()); +const makeRandom = (b, x) => { + b.scale.x = math.randf(1,3); + b.scale.y = math.randf(1,3); + b.pos.x = x; + b.pos.y = h - b.scale.y * 64; +}; + +for (let x = 0; x < 50; x++) { + const b = buildings.add(new Sprite(new Texture("res/images/building.png"))); + makeRandom(b, math.rand(w)); +} + +var rotation = 0; +const ship = new Sprite(new Texture("res/images/spaceship.png")); +ship.pivot = { x: 16, y: 16 }; +scene.add(ship); + + +game.run((dt ,t) => { + ship.update = function(dt, t) { + const {scale} = this; + scale.x = Math.abs(Math.sin(t)) + 1; + scale.y = Math.abs(Math.sin(t)) + 1; + + rotation = rotation + 0.2; + ship.rotation = rotation; + + ship.pos.y = (Math.abs(Math.sin(t))) * 50 + (h / 2) - 16; + ship.pos.x += dt * 50; + if (ship.pos.x > w) { + ship.pos.x = -32; + } + } + + buildings.map(b => { + b.pos.x -= 100 * dt; + if (b.pos.x < -80) { + makeRandom(b,w); + } + }); +}); + +},{"../../../asdf/index":13}]},{},[16]); diff --git a/examples/lib-test/index.html b/examples/lib-test/index.html index 99632cd..f79df8f 100644 --- a/examples/lib-test/index.html +++ b/examples/lib-test/index.html @@ -8,6 +8,6 @@
- + diff --git a/examples/lib-test/src/main.js b/examples/lib-test/src/main.js index 549a1a9..a88b1c6 100644 --- a/examples/lib-test/src/main.js +++ b/examples/lib-test/src/main.js @@ -1,4 +1,4 @@ -import asdf from "../../../asdf/index.js"; +var asdf = require("../../../lib/index"); const { Game, Container, CanvasRenderer, math, KeyControls, MouseControls, Text, Texture, Sprite } = asdf; const game = new Game(640, 320, false); diff --git a/examples/shooter/bundle.js b/examples/shooter/bundle.js new file mode 100644 index 0000000..336be05 --- /dev/null +++ b/examples/shooter/bundle.js @@ -0,0 +1,675 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i c !== child); + return child; + } + + map(f) { + return this.children.map(f); + } + + update(dt, t) { + this.children = this.children.filter(child => { + if (child.update) { + child.update(dt, t, this); + } + return child.dead ? false : true; + }); + } +} +module.exports = Container; + +},{}],2:[function(require,module,exports){ +var Container = require("./Container"), + CanvasRenderer = require('./renderer/CanvasRenderer') +; + +const STEP = 1 / 60; +const FRAME_MAX = 5 * STEP; + +class Game { + constructor(w, h, pixelated, parent = "#board") { + this.w = w; + this.h = h; + this.renderer = new CanvasRenderer(w, h); + document.querySelector(parent).appendChild(this.renderer.view); + + if (pixelated) { + this.renderer.setPixelated(); + } + + this.scene = new Container(); + } + + run(gameUpdate = () => { }) { + let dt = 0; + let last = 0; + const loop = ms => { + requestAnimationFrame(loop); + + const t = ms / 1000; + dt = Math.min(t - last, FRAME_MAX); + last = t; + + this.scene.update(dt, t); + gameUpdate(dt, t); + this.renderer.render(this.scene); + }; + requestAnimationFrame(loop); + } +} + +module.exports = Game; +},{"./Container":1,"./renderer/CanvasRenderer":14}],3:[function(require,module,exports){ +class Sprite { + constructor(texture) { + this.texture = texture; + this.pos = { x: 0, y: 0 }; + this.anchor = { x: 0, y: 0 }; + this.scale = { x: 1, y: 1 }; + this.rotation = 0; + } +} +module.exports = Sprite; + +},{}],4:[function(require,module,exports){ +class SpriteSheetXML { + constructor(url) { + this.array = []; + this.fetchXMLtoArray(url); + } + + fetchXMLtoArray(url) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + xhr.send(null); + + if (xhr.status === 200) { + var children = xhr.responseXML.children[0].children; + for (let index = 0; index < children.length; index++) { + const element = children[index]; + this.array.push({ + name: element.attributes.name.nodeValue, + x: element.attributes.x.nodeValue, + y: element.attributes.y.nodeValue, + width: element.attributes.width.nodeValue, + height: element.attributes.height.nodeValue + }); + } + } else { + console.error('XML file cannot be loaded!') + } + } + + findIndex(attribute, value) { + for (let index = 0; index < this.array.length; index++) { + const element = this.array[index]; + if (element[attribute] == value) { + return index; + } + } + } +} + +module.exports = SpriteSheetXML; +},{}],5:[function(require,module,exports){ +class Text { + constructor(text = "", style = {}) { + this.pos = { x: 0, y: 0 }; + this.text = text; + this.style = style; + } +} +module.exports = Text; + +},{}],6:[function(require,module,exports){ +class Texture { + constructor(url) { + this.img = new Image(); + this.img.src = url; + } +} +module.exports = Texture; + +},{}],7:[function(require,module,exports){ +var Container = require("./Container"), + TileSprite = require("./TileSprite") +; + +class TileMap extends Container { + constructor(tiles, mapW, mapH, tileW, tileH, texture) { + super(); + this.mapW = mapW; + this.mapH = mapH; + this.tileW = tileW; + this.tileH = tileH; + this.w = mapW * tileW; + this.h = mapH * tileH; + + this.children = tiles.map((frame, i) => { + const s = new TileSprite(texture, tileW, tileH); + s.frame = frame; + s.pos.x = i % mapW * tileW; + s.pos.y = Math.floor(i / mapW) * tileH; + return s; + }); + } +} + +module.exports = TileMap; +},{"./Container":1,"./TileSprite":9}],8:[function(require,module,exports){ +var Container = require("./Container"), + TileSpriteXML = require("./TileSpriteXML") +; + +class TileMapXML extends Container { + constructor(tiles, mapW, mapH, texture, xml) { + super(texture); + this.mapW = mapW; + this.mapH = mapH; + this.tileW = xml.array[tiles[0]].width; + this.tileH = xml.array[tiles[0]].height; + this.w = mapW * this.tileW; + this.h = mapH * this.tileH; + + this.children = tiles.map((frame, i) => { + const s = new TileSpriteXML(texture, xml, frame); + s.frame = frame; + s.pos.x = i % mapW * this.tileW; + s.pos.y = Math.floor(i / mapW) * this.tileH; + return s; + }); + } +} + +module.exports = TileMapXML; +},{"./Container":1,"./TileSpriteXML":10}],9:[function(require,module,exports){ +var Sprite = require("./Sprite"); + +class TileSprite extends Sprite { + constructor(texture, w, h) { + super(texture); + this.tileW = w; + this.tileH = h; + this.frame = { x: 0, y: 0 }; + } +} + +module.exports = TileSprite; +},{"./Sprite":3}],10:[function(require,module,exports){ +var Sprite = require("./Sprite"); + +class TileSpriteXML extends Sprite { + constructor(texture, xml, index) { + super(texture); + var src = xml.array[index]; + this.imgPos = { x: src['x'], y: src['y'] }; + this.width = src['width']; + this.height = src['height']; + } +} + +module.exports = TileSpriteXML; +},{"./Sprite":3}],11:[function(require,module,exports){ +class KeyControls { + + constructor() { + this.keys = {}; + // Bind event handlers + document.addEventListener("keydown", e => { + if ([37, 38, 39, 40].indexOf(e.which) >= 0) { + e.preventDefault(); + } + this.keys[e.which] = true; + }, false); + document.addEventListener('keyup', e => { + this.keys[e.which] = false; + }, false); + } + + get action() { + // Spacebar + return this.keys[32]; + } + + get x() { + // Arrow Left or A (WASD) + if (this.keys[37] || this.keys[65]) { + return -1; + } + // Arrow Right or D (WASD) + if (this.keys[39] || this.keys[68]) { + return 1; + } + return 0; + } + + get y() { + // Arrow Up or W (WASD) + if (this.keys[38] || this.keys[87]) { + return -1; + } + // Arrow Down or S (WASD) + if (this.keys[40] || this.keys[83]) { + return 1; + } + return 0; + } + + + key(key, value) { + if (value !== undefined) { + this.keys[key] = value; + } + return this.keys[key]; + } + + reset() { + for (let key in this.keys) { + this.keys[key] = false; + } + } + +} + +module.exports = KeyControls; + +},{}],12:[function(require,module,exports){ +class MouseControls { + constructor(container) { + this.el = container || document.body; + // State + this.pos = { x: 0, y: 0 }; + this.isDown = false; + this.pressed = false; + this.released = false; + // Handlers + document.addEventListener('mousemove', this.move.bind(this), false); + document.addEventListener('mousedown', this.down.bind(this), false); + document.addEventListener('mouseup', this.up.bind(this), false); + } + + mousePosFromEvent({ clientX, clientY }) { + const { el, pos } = this; + const rect = el.getBoundingClientRect(); + const xr = el.width / el.clientWidth; + const yr = el.height / el.clientHeight; + pos.x = (clientX - rect.left) * xr; + pos.y = (clientY - rect.top) * yr; + } + + move(e) { + this.mousePosFromEvent(e); + } + + down(e) { + this.isDown = true; + this.pressed = true; + this.mousePosFromEvent(e); + } + + up() { + this.isDown = false; + this.released = true; + } + + update() { + this.released = false; + this.pressed = false; + } +} + +module.exports = MouseControls; + +},{}],13:[function(require,module,exports){ +var Container = require("./Container.js"), + CanvasRenderer = require("./renderer/CanvasRenderer.js"), + Game = require("./Game.js"), + math = require("./utilities/math.js"), + KeyControls = require("./controls/KeyControls.js"), + MouseControls = require("./controls/MouseControls.js"), + Sprite = require("./Sprite.js"), + TileMap = require("./TileMap.js"), + TileMapXML = require("./TileMapXML.js"), + TileSprite = require("./TileSprite.js"), + TileSpriteXML = require("./TileSpriteXML.js"), + Text = require("./Text.js"), + Texture = require("./Texture.js"), + SpriteSheetXML = require("./SpriteSheetXML.js") +; + +module.exports = { + CanvasRenderer, + Container, + Game, + math, + KeyControls, + MouseControls, + Sprite, + TileMap, + TileMapXML, + TileSprite, + SpriteSheetXML, + TileSpriteXML, + Text, + Texture +}; + +},{"./Container.js":1,"./Game.js":2,"./Sprite.js":3,"./SpriteSheetXML.js":4,"./Text.js":5,"./Texture.js":6,"./TileMap.js":7,"./TileMapXML.js":8,"./TileSprite.js":9,"./TileSpriteXML.js":10,"./controls/KeyControls.js":11,"./controls/MouseControls.js":12,"./renderer/CanvasRenderer.js":14,"./utilities/math.js":15}],14:[function(require,module,exports){ +class CanvasRenderer { + + constructor(w, h) { + const canvas = document.createElement("canvas"); + this.w = canvas.width = w; + this.h = canvas.height = h; + this.view = canvas; + this.ctx = canvas.getContext("2d"); + this.ctx.textBaseLine = "top"; + } + + setPixelated() { + this.ctx['imageSmoothingEnabled'] = false; /* standard */ + this.ctx['mozImageSmoothingEnabled'] = false; /* Firefox */ + this.ctx['oImageSmoothingEnabled'] = false; /* Opera */ + this.ctx['webkitImageSmoothingEnabled'] = false; /* Safari */ + this.ctx['msImageSmoothingEnabled'] = false; /* IE */ + } + + render(container, clear = true) { + const { ctx } = this; + function renderRec(container) { + // Render container children + container.children.forEach(child => { + if (child.visible == false) { + return; + } + + ctx.save(); + + if (child.pos) { + ctx.translate(Math.round(child.pos.x), Math.round(child.pos.y)); + } + + if (child.anchor) { + ctx.translate(child.anchor.x, child.anchor.y); + } + + if (child.scale) { + ctx.scale(child.scale.x, child.scale.y); + } + + if (child.rotation) { + const px = child.pivot ? child.pivot.x : 0; + const py = child.pivot ? child.pivot.y : 0; + ctx.translate(px, py); + ctx.rotate(child.rotation); + ctx.translate(-px, -py); + } + + if (child.text) { + const { font, fill, align } = child.style; + if (font) ctx.font = font; + if (fill) ctx.fillStyle = fill; + if (align) ctx.textAlign = align; + ctx.fillText(child.text, 0, 0); + } + + else if (child.texture) { + const img = child.texture.img; + if (child.tileW && child.tileH) { + ctx.drawImage( + img, + child.frame.x * child.tileW, + child.frame.y * child.tileH, + child.tileW, child.tileH, + 0, 0, + child.tileW, child.tileH + ); + } else if (child.imgPos && child.width && child.height) { + ctx.drawImage( + img, + child.imgPos.x, + child.imgPos.y, + child.width, child.height, + 0, 0, + child.width, child.height + ); + } else { + ctx.drawImage(img, 0, 0); + } + } + + // Handle children with children + if (child.children) { + renderRec(child); + } + ctx.restore(); + }) + } + if (clear) { + ctx.clearRect(0, 0, this.w, this.h); + } + renderRec(container); + } +} +module.exports = CanvasRenderer; + +},{}],15:[function(require,module,exports){ +function rand(min, max) { + return Math.floor(randf(min, max)); +} + +function randf(min, max) { + if (max == null) { + max = min || 1; + min = 0; + } + return Math.random() * (max - min) + min; +} + +function randOneFrom(items) { + return items[rand(items.length)]; +} + +function randOneIn(max = 2) { + return rand(0, max) === 0; +} + +module.exports = { + rand, + randf, + randOneFrom, + randOneIn +}; +},{}],16:[function(require,module,exports){ +var asdf = require('../../../asdf/index'); +const { Container, CanvasRenderer, KeyControls, MouseControls, Text, Texture, Sprite } = asdf; + +// Board Setup +const w = 640; +const h = 300; +const renderer = new CanvasRenderer(w, h); +document.querySelector("#board").appendChild(renderer.view); + +// Setup game variables +let dt = 0; +let last = 0; +let lastShot = 0; +let lastSpawn = 0; +let spawnSpeed = 1.0; +let scoreAmount = 0; +let gameOver = false; + +// Setup game objects +const scene = new Container(); + +// Load game textures +const textures = { + background: new Texture("./res/images/bg.png"), + spaceship: new Texture("./res/images/spaceship.png"), + bullet: new Texture("./res/images/bullet.png"), + baddie: new Texture("./res/images/baddie.png") +} + +// Spaceship +const controls = new KeyControls(); +const ship = new Sprite(textures.spaceship); +ship.pos.x = 120; +ship.pos.y = h / 2 - 16; +ship.update = function (dt, t) { + const { pos } = this; + pos.x += controls.x * dt * 300; + pos.y += controls.y * dt * 300; + + if (pos.x < 0) pos.x = 0; + if (pos.x > w - 32) pos.x = w - 32; + if (pos.y < 0) pos.y = 0; + if (pos.y > h - 32) pos.y = h - 32; +} + +// Bullets +const bullets = new Container(); +function fireBullet(x, y) { + const bullet = new Sprite(textures.bullet); + bullet.pos.x = x; + bullet.pos.y = y; + bullet.update = function (dt, t) { + bullet.pos.x += 400 * dt; + } + bullets.add(bullet); +} + +// Bad guys +const baddies = new Container(); +function spawnBaddie(x, y, speed) { + const baddie = new Sprite(textures.baddie); + baddie.pos.x = x; + baddie.pos.y = y; + baddie.update = function (dt) { + this.pos.x += speed * dt; + this.pos.y += Math.sin(this.pos.x / 15) * 1; + }; + baddies.add(baddie); +} + +// Show score +const score = new Text(`${scoreAmount}`, { + font: "15pt Visitor", + fill: "#000000", + align: "left" +}); +score.pos.x = 50; +score.pos.y = 15; +score.update = function () { + if (gameOver) { + score.pos.x = w / 2; + score.pos.y = (h / 3) * 2; + score.text = `Score: ` + `${scoreAmount}`; + score.style.align = "center"; + score.style.font = "24pt Visitor" + } else { + score.text = `${scoreAmount}`; + } +} + +// Gameover +function doGameOver() { + const gameOverMessage = new Text(`Game Over`, { + font: "45pt Visitor", + fill: "#000000", + align: "center" + }); + gameOverMessage.pos.x = w / 2; + gameOverMessage.pos.y = h / 3; + + scene.add(gameOverMessage); + scene.remove(ship); + scene.remove(baddies); + scene.remove(bullets); + gameOver = true; +} + +// Add game objects +scene.add(new Sprite(textures.background)); +scene.add(ship); +scene.add(bullets); +scene.add(baddies); +scene.add(score); + + +// Looping Code +function loopme(ms) { + requestAnimationFrame(loopme); + const t = ms / 1000; + dt = t - last; + last = t; + + // Game logic code + if (controls.action && t - lastShot > 0.15) { + lastShot = t; + fireBullet(ship.pos.x + 24, ship.pos.y + 10); + } + + // Spawn bad guys + if (t - lastSpawn > spawnSpeed) { + lastSpawn = t; + const speed = -50 - (Math.random() * Math.random() * 100); + const position = Math.random() * (h - 24); + spawnBaddie(w, position, speed); + + spawnSpeed = spawnSpeed < 0.05 ? 0.6 : spawnSpeed * 0.97 + 0.001; + } + + // Destroy bullets when they go out of the screen + baddies.children.forEach(baddie => { + bullets.children.forEach(bullet => { + let dx_b = baddie.pos.x + 16 - (bullet.pos.x + 8); + let dy_b = baddie.pos.y + 16 - (bullet.pos.y + 8); + if (Math.sqrt(dx_b * dx_b + dy_b * dy_b) < 24) { + bullet.dead = true; + baddie.dead = true; + if (!gameOver) { + scoreAmount += Math.floor(t); + } + } + + if (bullet.pos.x > w + 20) { + bullet.dead = true; + } + }); + let dx_s = baddie.pos.x + 16 - (ship.pos.x + 16) + let dy_s = baddie.pos.y + 16 - (ship.pos.y + 16) + if (Math.sqrt(dx_s * dx_s + dy_s * dy_s) < 32) { + if (!gameOver) { + doGameOver(); + } + baddie.dead = true; + } + + if (baddie.pos.x < -32) { + if (!gameOver) { + doGameOver(); + } + baddie.dead = true; + } + }); + + + + scene.update(dt, t); + renderer.render(scene); +} +requestAnimationFrame(loopme); + +},{"../../../asdf/index":13}]},{},[16]); diff --git a/examples/shooter/index.html b/examples/shooter/index.html index 34330e1..beb1566 100644 --- a/examples/shooter/index.html +++ b/examples/shooter/index.html @@ -15,6 +15,6 @@
_
Shoot - + diff --git a/examples/shooter/src/main.js b/examples/shooter/src/main.js index 1f75955..2b5306a 100644 --- a/examples/shooter/src/main.js +++ b/examples/shooter/src/main.js @@ -1,4 +1,4 @@ -import asdf from "../../../asdf/index.js"; +var asdf = require('../../../lib/index'); const { Container, CanvasRenderer, KeyControls, MouseControls, Text, Texture, Sprite } = asdf; // Board Setup diff --git a/examples/tile-test/bundle.js b/examples/tile-test/bundle.js new file mode 100644 index 0000000..810e08f --- /dev/null +++ b/examples/tile-test/bundle.js @@ -0,0 +1,606 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i rate) { + this.frame = frames[this.curFrame++ % frames.length]; + this.curTime -= rate; + } + + this.pos.x += (dt * this.speed); + if (this.pos.x > 640 + 32) { + this.pos.y = math.rand(-16, 304); + this.pos.x = -32; + } + } +} + +module.exports = King; +},{"../../../lib/index":16}],2:[function(require,module,exports){ +var asdf = require("../../../lib/index"); +const { TileSprite, Texture, math } = asdf; +const texture = new Texture("./res/images/characters.png"); + +class Snake extends TileSprite { + constructor () { + super(texture, 32, 32); + this.scale = { x: 2, y: 2 }; + + this.rate = 0.1; + this.curTime = 0; + this.curFrame = 0; + this.frames = [ + { x: 0, y: 3 }, + { x: 1, y: 3 }, + { x: 2, y: 3 }, + { x: 3, y: 3 } + ]; + this.frame = this.frames[this.curFrame]; + + this.speed = math.rand(50, 100) + this.pos.y = math.rand(0, 320); + this.pos.x = math.rand(-32, 320); + } + update (dt, t) { + const { rate, frames } = this; + this.curTime += dt; + if (this.curTime > rate) { + this.frame = frames[this.curFrame++ % frames.length]; + this.curTime -= rate; + } + + this.pos.x += (dt * this.speed); + if (this.pos.x > 640 + 32) { + this.pos.y = math.rand(-16, 304); + this.pos.x = -32; + } + } +} + +module.exports = Snake; +},{"../../../lib/index":16}],3:[function(require,module,exports){ +var asdf = require('../../../lib/index'); +const { Game, Container, CanvasRenderer, math, KeyControls, MouseControls, Text, Texture, Sprite, TileSprite } = asdf; + +const game = new Game(640, 320, true); +const { scene, w, h } = game; + +var King = require("../entities/King.js"); +var Snake = require("../entities/Snake.js"); + +var snake = new Snake(); +console.log(snake); +scene.add(snake); + + +for (let index = 0; index < 250; index++) { + scene.add(new King()); +} + +const mouseAim = new MouseControls(); + +game.run((dt ,t) => { + if (mouseAim.isDown) { + console.log('cliccccccccccc'); + } +}); + +},{"../../../lib/index":16,"../entities/King.js":1,"../entities/Snake.js":2}],4:[function(require,module,exports){ +class Container { + constructor() { + this.pos = { x: 0, y: 0 }; + this.children = []; + } + + add(child) { + this.children.push(child); + return child; + } + + remove(child) { + this.children = this.children.filter(c => c !== child); + return child; + } + + map(f) { + return this.children.map(f); + } + + update(dt, t) { + this.children = this.children.filter(child => { + if (child.update) { + child.update(dt, t, this); + } + return child.dead ? false : true; + }); + } +} +module.exports = Container; + +},{}],5:[function(require,module,exports){ +var Container = require("./Container"), + CanvasRenderer = require('./renderer/CanvasRenderer') +; + +const STEP = 1 / 60; +const FRAME_MAX = 5 * STEP; + +class Game { + constructor(w, h, pixelated, parent = "#board") { + this.w = w; + this.h = h; + this.renderer = new CanvasRenderer(w, h); + document.querySelector(parent).appendChild(this.renderer.view); + + if (pixelated) { + this.renderer.setPixelated(); + } + + this.scene = new Container(); + } + + run(gameUpdate = () => { }) { + let dt = 0; + let last = 0; + const loop = ms => { + requestAnimationFrame(loop); + + const t = ms / 1000; + dt = Math.min(t - last, FRAME_MAX); + last = t; + + this.scene.update(dt, t); + gameUpdate(dt, t); + this.renderer.render(this.scene); + }; + requestAnimationFrame(loop); + } +} + +module.exports = Game; +},{"./Container":4,"./renderer/CanvasRenderer":17}],6:[function(require,module,exports){ +class Sprite { + constructor(texture) { + this.texture = texture; + this.pos = { x: 0, y: 0 }; + this.anchor = { x: 0, y: 0 }; + this.scale = { x: 1, y: 1 }; + this.rotation = 0; + } +} +module.exports = Sprite; + +},{}],7:[function(require,module,exports){ +class SpriteSheetXML { + constructor(url) { + this.array = []; + this.fetchXMLtoArray(url); + } + + fetchXMLtoArray(url) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + xhr.send(null); + + if (xhr.status === 200) { + var children = xhr.responseXML.children[0].children; + for (let index = 0; index < children.length; index++) { + const element = children[index]; + this.array.push({ + name: element.attributes.name.nodeValue, + x: element.attributes.x.nodeValue, + y: element.attributes.y.nodeValue, + width: element.attributes.width.nodeValue, + height: element.attributes.height.nodeValue + }); + } + } else { + console.error('XML file cannot be loaded!') + } + } + + findIndex(attribute, value) { + for (let index = 0; index < this.array.length; index++) { + const element = this.array[index]; + if (element[attribute] == value) { + return index; + } + } + } +} + +module.exports = SpriteSheetXML; +},{}],8:[function(require,module,exports){ +class Text { + constructor(text = "", style = {}) { + this.pos = { x: 0, y: 0 }; + this.text = text; + this.style = style; + } +} +module.exports = Text; + +},{}],9:[function(require,module,exports){ +class Texture { + constructor(url) { + this.img = new Image(); + this.img.src = url; + } +} +module.exports = Texture; + +},{}],10:[function(require,module,exports){ +var Container = require("./Container"), + TileSprite = require("./TileSprite") +; + +class TileMap extends Container { + constructor(tiles, mapW, mapH, tileW, tileH, texture) { + super(); + this.mapW = mapW; + this.mapH = mapH; + this.tileW = tileW; + this.tileH = tileH; + this.w = mapW * tileW; + this.h = mapH * tileH; + + this.children = tiles.map((frame, i) => { + const s = new TileSprite(texture, tileW, tileH); + s.frame = frame; + s.pos.x = i % mapW * tileW; + s.pos.y = Math.floor(i / mapW) * tileH; + return s; + }); + } +} + +module.exports = TileMap; +},{"./Container":4,"./TileSprite":12}],11:[function(require,module,exports){ +var Container = require("./Container"), + TileSpriteXML = require("./TileSpriteXML") +; + +class TileMapXML extends Container { + constructor(tiles, mapW, mapH, texture, xml) { + super(texture); + this.mapW = mapW; + this.mapH = mapH; + this.tileW = xml.array[tiles[0]].width; + this.tileH = xml.array[tiles[0]].height; + this.w = mapW * this.tileW; + this.h = mapH * this.tileH; + + this.children = tiles.map((frame, i) => { + const s = new TileSpriteXML(texture, xml, frame); + s.frame = frame; + s.pos.x = i % mapW * this.tileW; + s.pos.y = Math.floor(i / mapW) * this.tileH; + return s; + }); + } +} + +module.exports = TileMapXML; +},{"./Container":4,"./TileSpriteXML":13}],12:[function(require,module,exports){ +var Sprite = require("./Sprite"); + +class TileSprite extends Sprite { + constructor(texture, w, h) { + super(texture); + this.tileW = w; + this.tileH = h; + this.frame = { x: 0, y: 0 }; + } +} + +module.exports = TileSprite; +},{"./Sprite":6}],13:[function(require,module,exports){ +var Sprite = require("./Sprite"); + +class TileSpriteXML extends Sprite { + constructor(texture, xml, index) { + super(texture); + var src = xml.array[index]; + this.imgPos = { x: src['x'], y: src['y'] }; + this.width = src['width']; + this.height = src['height']; + } +} + +module.exports = TileSpriteXML; +},{"./Sprite":6}],14:[function(require,module,exports){ +class KeyControls { + + constructor() { + this.keys = {}; + // Bind event handlers + document.addEventListener("keydown", e => { + if ([37, 38, 39, 40].indexOf(e.which) >= 0) { + e.preventDefault(); + } + this.keys[e.which] = true; + }, false); + document.addEventListener('keyup', e => { + this.keys[e.which] = false; + }, false); + } + + get action() { + // Spacebar + return this.keys[32]; + } + + get x() { + // Arrow Left or A (WASD) + if (this.keys[37] || this.keys[65]) { + return -1; + } + // Arrow Right or D (WASD) + if (this.keys[39] || this.keys[68]) { + return 1; + } + return 0; + } + + get y() { + // Arrow Up or W (WASD) + if (this.keys[38] || this.keys[87]) { + return -1; + } + // Arrow Down or S (WASD) + if (this.keys[40] || this.keys[83]) { + return 1; + } + return 0; + } + + + key(key, value) { + if (value !== undefined) { + this.keys[key] = value; + } + return this.keys[key]; + } + + reset() { + for (let key in this.keys) { + this.keys[key] = false; + } + } + +} + +module.exports = KeyControls; + +},{}],15:[function(require,module,exports){ +class MouseControls { + constructor(container) { + this.el = container || document.body; + // State + this.pos = { x: 0, y: 0 }; + this.isDown = false; + this.pressed = false; + this.released = false; + // Handlers + document.addEventListener('mousemove', this.move.bind(this), false); + document.addEventListener('mousedown', this.down.bind(this), false); + document.addEventListener('mouseup', this.up.bind(this), false); + } + + mousePosFromEvent({ clientX, clientY }) { + const { el, pos } = this; + const rect = el.getBoundingClientRect(); + const xr = el.width / el.clientWidth; + const yr = el.height / el.clientHeight; + pos.x = (clientX - rect.left) * xr; + pos.y = (clientY - rect.top) * yr; + } + + move(e) { + this.mousePosFromEvent(e); + } + + down(e) { + this.isDown = true; + this.pressed = true; + this.mousePosFromEvent(e); + } + + up() { + this.isDown = false; + this.released = true; + } + + update() { + this.released = false; + this.pressed = false; + } +} + +module.exports = MouseControls; + +},{}],16:[function(require,module,exports){ +var Container = require("./Container.js"), + CanvasRenderer = require("./renderer/CanvasRenderer.js"), + Game = require("./Game.js"), + math = require("./utilities/math.js"), + KeyControls = require("./controls/KeyControls.js"), + MouseControls = require("./controls/MouseControls.js"), + Sprite = require("./Sprite.js"), + TileMap = require("./TileMap.js"), + TileMapXML = require("./TileMapXML.js"), + TileSprite = require("./TileSprite.js"), + TileSpriteXML = require("./TileSpriteXML.js"), + Text = require("./Text.js"), + Texture = require("./Texture.js"), + SpriteSheetXML = require("./SpriteSheetXML.js") +; + +module.exports = { + CanvasRenderer, + Container, + Game, + math, + KeyControls, + MouseControls, + Sprite, + TileMap, + TileMapXML, + TileSprite, + SpriteSheetXML, + TileSpriteXML, + Text, + Texture +}; + +},{"./Container.js":4,"./Game.js":5,"./Sprite.js":6,"./SpriteSheetXML.js":7,"./Text.js":8,"./Texture.js":9,"./TileMap.js":10,"./TileMapXML.js":11,"./TileSprite.js":12,"./TileSpriteXML.js":13,"./controls/KeyControls.js":14,"./controls/MouseControls.js":15,"./renderer/CanvasRenderer.js":17,"./utilities/math.js":18}],17:[function(require,module,exports){ +class CanvasRenderer { + + constructor(w, h) { + const canvas = document.createElement("canvas"); + this.w = canvas.width = w; + this.h = canvas.height = h; + this.view = canvas; + this.ctx = canvas.getContext("2d"); + this.ctx.textBaseLine = "top"; + } + + setPixelated() { + this.ctx['imageSmoothingEnabled'] = false; /* standard */ + this.ctx['mozImageSmoothingEnabled'] = false; /* Firefox */ + this.ctx['oImageSmoothingEnabled'] = false; /* Opera */ + this.ctx['webkitImageSmoothingEnabled'] = false; /* Safari */ + this.ctx['msImageSmoothingEnabled'] = false; /* IE */ + } + + render(container, clear = true) { + const { ctx } = this; + function renderRec(container) { + // Render container children + container.children.forEach(child => { + if (child.visible == false) { + return; + } + + ctx.save(); + + if (child.pos) { + ctx.translate(Math.round(child.pos.x), Math.round(child.pos.y)); + } + + if (child.anchor) { + ctx.translate(child.anchor.x, child.anchor.y); + } + + if (child.scale) { + ctx.scale(child.scale.x, child.scale.y); + } + + if (child.rotation) { + const px = child.pivot ? child.pivot.x : 0; + const py = child.pivot ? child.pivot.y : 0; + ctx.translate(px, py); + ctx.rotate(child.rotation); + ctx.translate(-px, -py); + } + + if (child.text) { + const { font, fill, align } = child.style; + if (font) ctx.font = font; + if (fill) ctx.fillStyle = fill; + if (align) ctx.textAlign = align; + ctx.fillText(child.text, 0, 0); + } + + else if (child.texture) { + const img = child.texture.img; + if (child.tileW && child.tileH) { + ctx.drawImage( + img, + child.frame.x * child.tileW, + child.frame.y * child.tileH, + child.tileW, child.tileH, + 0, 0, + child.tileW, child.tileH + ); + } else if (child.imgPos && child.width && child.height) { + ctx.drawImage( + img, + child.imgPos.x, + child.imgPos.y, + child.width, child.height, + 0, 0, + child.width, child.height + ); + } else { + ctx.drawImage(img, 0, 0); + } + } + + // Handle children with children + if (child.children) { + renderRec(child); + } + ctx.restore(); + }) + } + if (clear) { + ctx.clearRect(0, 0, this.w, this.h); + } + renderRec(container); + } +} +module.exports = CanvasRenderer; + +},{}],18:[function(require,module,exports){ +function rand(min, max) { + return Math.floor(randf(min, max)); +} + +function randf(min, max) { + if (max == null) { + max = min || 1; + min = 0; + } + return Math.random() * (max - min) + min; +} + +function randOneFrom(items) { + return items[rand(items.length)]; +} + +function randOneIn(max = 2) { + return rand(0, max) === 0; +} + +module.exports = { + rand, + randf, + randOneFrom, + randOneIn +}; +},{}]},{},[3]); diff --git a/examples/tile-test/entities/King.js b/examples/tile-test/entities/King.js index 0c8c360..23a6a21 100644 --- a/examples/tile-test/entities/King.js +++ b/examples/tile-test/entities/King.js @@ -1,4 +1,4 @@ -import asdf from "../../../asdf/index.js"; +var asdf = require("../../../lib/index"); const { TileSprite, Texture, math } = asdf; const texture = new Texture("./res/images/characters.png"); @@ -38,4 +38,4 @@ class King extends TileSprite { } } -export default King; \ No newline at end of file +module.exports = King; \ No newline at end of file diff --git a/examples/tile-test/entities/Snake.js b/examples/tile-test/entities/Snake.js index bff3f20..0e2740e 100644 --- a/examples/tile-test/entities/Snake.js +++ b/examples/tile-test/entities/Snake.js @@ -1,4 +1,4 @@ -import asdf from "../../../asdf/index.js"; +var asdf = require("../../../lib/index"); const { TileSprite, Texture, math } = asdf; const texture = new Texture("./res/images/characters.png"); @@ -38,4 +38,4 @@ class Snake extends TileSprite { } } -export default Snake; \ No newline at end of file +module.exports = Snake; \ No newline at end of file diff --git a/examples/tile-test/index.html b/examples/tile-test/index.html index 99632cd..f79df8f 100644 --- a/examples/tile-test/index.html +++ b/examples/tile-test/index.html @@ -8,6 +8,6 @@
- + diff --git a/examples/tile-test/src/main.js b/examples/tile-test/src/main.js index 369d1fe..abe5934 100644 --- a/examples/tile-test/src/main.js +++ b/examples/tile-test/src/main.js @@ -1,11 +1,11 @@ -import asdf from "../../../asdf/index.js"; +var asdf = require('../../../lib/index'); const { Game, Container, CanvasRenderer, math, KeyControls, MouseControls, Text, Texture, Sprite, TileSprite } = asdf; const game = new Game(640, 320, true); const { scene, w, h } = game; -import King from "../entities/King.js"; -import Snake from "../entities/Snake.js"; +var King = require("../entities/King.js"); +var Snake = require("../entities/Snake.js"); var snake = new Snake(); console.log(snake); diff --git a/examples/tilemap-test/bundle.js b/examples/tilemap-test/bundle.js new file mode 100644 index 0000000..dcf6ef8 --- /dev/null +++ b/examples/tilemap-test/bundle.js @@ -0,0 +1,525 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i c !== child); + return child; + } + + map(f) { + return this.children.map(f); + } + + update(dt, t) { + this.children = this.children.filter(child => { + if (child.update) { + child.update(dt, t, this); + } + return child.dead ? false : true; + }); + } +} +module.exports = Container; + +},{}],2:[function(require,module,exports){ +var Container = require("./Container"), + CanvasRenderer = require('./renderer/CanvasRenderer') +; + +const STEP = 1 / 60; +const FRAME_MAX = 5 * STEP; + +class Game { + constructor(w, h, pixelated, parent = "#board") { + this.w = w; + this.h = h; + this.renderer = new CanvasRenderer(w, h); + document.querySelector(parent).appendChild(this.renderer.view); + + if (pixelated) { + this.renderer.setPixelated(); + } + + this.scene = new Container(); + } + + run(gameUpdate = () => { }) { + let dt = 0; + let last = 0; + const loop = ms => { + requestAnimationFrame(loop); + + const t = ms / 1000; + dt = Math.min(t - last, FRAME_MAX); + last = t; + + this.scene.update(dt, t); + gameUpdate(dt, t); + this.renderer.render(this.scene); + }; + requestAnimationFrame(loop); + } +} + +module.exports = Game; +},{"./Container":1,"./renderer/CanvasRenderer":14}],3:[function(require,module,exports){ +class Sprite { + constructor(texture) { + this.texture = texture; + this.pos = { x: 0, y: 0 }; + this.anchor = { x: 0, y: 0 }; + this.scale = { x: 1, y: 1 }; + this.rotation = 0; + } +} +module.exports = Sprite; + +},{}],4:[function(require,module,exports){ +class SpriteSheetXML { + constructor(url) { + this.array = []; + this.fetchXMLtoArray(url); + } + + fetchXMLtoArray(url) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + xhr.send(null); + + if (xhr.status === 200) { + var children = xhr.responseXML.children[0].children; + for (let index = 0; index < children.length; index++) { + const element = children[index]; + this.array.push({ + name: element.attributes.name.nodeValue, + x: element.attributes.x.nodeValue, + y: element.attributes.y.nodeValue, + width: element.attributes.width.nodeValue, + height: element.attributes.height.nodeValue + }); + } + } else { + console.error('XML file cannot be loaded!') + } + } + + findIndex(attribute, value) { + for (let index = 0; index < this.array.length; index++) { + const element = this.array[index]; + if (element[attribute] == value) { + return index; + } + } + } +} + +module.exports = SpriteSheetXML; +},{}],5:[function(require,module,exports){ +class Text { + constructor(text = "", style = {}) { + this.pos = { x: 0, y: 0 }; + this.text = text; + this.style = style; + } +} +module.exports = Text; + +},{}],6:[function(require,module,exports){ +class Texture { + constructor(url) { + this.img = new Image(); + this.img.src = url; + } +} +module.exports = Texture; + +},{}],7:[function(require,module,exports){ +var Container = require("./Container"), + TileSprite = require("./TileSprite") +; + +class TileMap extends Container { + constructor(tiles, mapW, mapH, tileW, tileH, texture) { + super(); + this.mapW = mapW; + this.mapH = mapH; + this.tileW = tileW; + this.tileH = tileH; + this.w = mapW * tileW; + this.h = mapH * tileH; + + this.children = tiles.map((frame, i) => { + const s = new TileSprite(texture, tileW, tileH); + s.frame = frame; + s.pos.x = i % mapW * tileW; + s.pos.y = Math.floor(i / mapW) * tileH; + return s; + }); + } +} + +module.exports = TileMap; +},{"./Container":1,"./TileSprite":9}],8:[function(require,module,exports){ +var Container = require("./Container"), + TileSpriteXML = require("./TileSpriteXML") +; + +class TileMapXML extends Container { + constructor(tiles, mapW, mapH, texture, xml) { + super(texture); + this.mapW = mapW; + this.mapH = mapH; + this.tileW = xml.array[tiles[0]].width; + this.tileH = xml.array[tiles[0]].height; + this.w = mapW * this.tileW; + this.h = mapH * this.tileH; + + this.children = tiles.map((frame, i) => { + const s = new TileSpriteXML(texture, xml, frame); + s.frame = frame; + s.pos.x = i % mapW * this.tileW; + s.pos.y = Math.floor(i / mapW) * this.tileH; + return s; + }); + } +} + +module.exports = TileMapXML; +},{"./Container":1,"./TileSpriteXML":10}],9:[function(require,module,exports){ +var Sprite = require("./Sprite"); + +class TileSprite extends Sprite { + constructor(texture, w, h) { + super(texture); + this.tileW = w; + this.tileH = h; + this.frame = { x: 0, y: 0 }; + } +} + +module.exports = TileSprite; +},{"./Sprite":3}],10:[function(require,module,exports){ +var Sprite = require("./Sprite"); + +class TileSpriteXML extends Sprite { + constructor(texture, xml, index) { + super(texture); + var src = xml.array[index]; + this.imgPos = { x: src['x'], y: src['y'] }; + this.width = src['width']; + this.height = src['height']; + } +} + +module.exports = TileSpriteXML; +},{"./Sprite":3}],11:[function(require,module,exports){ +class KeyControls { + + constructor() { + this.keys = {}; + // Bind event handlers + document.addEventListener("keydown", e => { + if ([37, 38, 39, 40].indexOf(e.which) >= 0) { + e.preventDefault(); + } + this.keys[e.which] = true; + }, false); + document.addEventListener('keyup', e => { + this.keys[e.which] = false; + }, false); + } + + get action() { + // Spacebar + return this.keys[32]; + } + + get x() { + // Arrow Left or A (WASD) + if (this.keys[37] || this.keys[65]) { + return -1; + } + // Arrow Right or D (WASD) + if (this.keys[39] || this.keys[68]) { + return 1; + } + return 0; + } + + get y() { + // Arrow Up or W (WASD) + if (this.keys[38] || this.keys[87]) { + return -1; + } + // Arrow Down or S (WASD) + if (this.keys[40] || this.keys[83]) { + return 1; + } + return 0; + } + + + key(key, value) { + if (value !== undefined) { + this.keys[key] = value; + } + return this.keys[key]; + } + + reset() { + for (let key in this.keys) { + this.keys[key] = false; + } + } + +} + +module.exports = KeyControls; + +},{}],12:[function(require,module,exports){ +class MouseControls { + constructor(container) { + this.el = container || document.body; + // State + this.pos = { x: 0, y: 0 }; + this.isDown = false; + this.pressed = false; + this.released = false; + // Handlers + document.addEventListener('mousemove', this.move.bind(this), false); + document.addEventListener('mousedown', this.down.bind(this), false); + document.addEventListener('mouseup', this.up.bind(this), false); + } + + mousePosFromEvent({ clientX, clientY }) { + const { el, pos } = this; + const rect = el.getBoundingClientRect(); + const xr = el.width / el.clientWidth; + const yr = el.height / el.clientHeight; + pos.x = (clientX - rect.left) * xr; + pos.y = (clientY - rect.top) * yr; + } + + move(e) { + this.mousePosFromEvent(e); + } + + down(e) { + this.isDown = true; + this.pressed = true; + this.mousePosFromEvent(e); + } + + up() { + this.isDown = false; + this.released = true; + } + + update() { + this.released = false; + this.pressed = false; + } +} + +module.exports = MouseControls; + +},{}],13:[function(require,module,exports){ +var Container = require("./Container.js"), + CanvasRenderer = require("./renderer/CanvasRenderer.js"), + Game = require("./Game.js"), + math = require("./utilities/math.js"), + KeyControls = require("./controls/KeyControls.js"), + MouseControls = require("./controls/MouseControls.js"), + Sprite = require("./Sprite.js"), + TileMap = require("./TileMap.js"), + TileMapXML = require("./TileMapXML.js"), + TileSprite = require("./TileSprite.js"), + TileSpriteXML = require("./TileSpriteXML.js"), + Text = require("./Text.js"), + Texture = require("./Texture.js"), + SpriteSheetXML = require("./SpriteSheetXML.js") +; + +module.exports = { + CanvasRenderer, + Container, + Game, + math, + KeyControls, + MouseControls, + Sprite, + TileMap, + TileMapXML, + TileSprite, + SpriteSheetXML, + TileSpriteXML, + Text, + Texture +}; + +},{"./Container.js":1,"./Game.js":2,"./Sprite.js":3,"./SpriteSheetXML.js":4,"./Text.js":5,"./Texture.js":6,"./TileMap.js":7,"./TileMapXML.js":8,"./TileSprite.js":9,"./TileSpriteXML.js":10,"./controls/KeyControls.js":11,"./controls/MouseControls.js":12,"./renderer/CanvasRenderer.js":14,"./utilities/math.js":15}],14:[function(require,module,exports){ +class CanvasRenderer { + + constructor(w, h) { + const canvas = document.createElement("canvas"); + this.w = canvas.width = w; + this.h = canvas.height = h; + this.view = canvas; + this.ctx = canvas.getContext("2d"); + this.ctx.textBaseLine = "top"; + } + + setPixelated() { + this.ctx['imageSmoothingEnabled'] = false; /* standard */ + this.ctx['mozImageSmoothingEnabled'] = false; /* Firefox */ + this.ctx['oImageSmoothingEnabled'] = false; /* Opera */ + this.ctx['webkitImageSmoothingEnabled'] = false; /* Safari */ + this.ctx['msImageSmoothingEnabled'] = false; /* IE */ + } + + render(container, clear = true) { + const { ctx } = this; + function renderRec(container) { + // Render container children + container.children.forEach(child => { + if (child.visible == false) { + return; + } + + ctx.save(); + + if (child.pos) { + ctx.translate(Math.round(child.pos.x), Math.round(child.pos.y)); + } + + if (child.anchor) { + ctx.translate(child.anchor.x, child.anchor.y); + } + + if (child.scale) { + ctx.scale(child.scale.x, child.scale.y); + } + + if (child.rotation) { + const px = child.pivot ? child.pivot.x : 0; + const py = child.pivot ? child.pivot.y : 0; + ctx.translate(px, py); + ctx.rotate(child.rotation); + ctx.translate(-px, -py); + } + + if (child.text) { + const { font, fill, align } = child.style; + if (font) ctx.font = font; + if (fill) ctx.fillStyle = fill; + if (align) ctx.textAlign = align; + ctx.fillText(child.text, 0, 0); + } + + else if (child.texture) { + const img = child.texture.img; + if (child.tileW && child.tileH) { + ctx.drawImage( + img, + child.frame.x * child.tileW, + child.frame.y * child.tileH, + child.tileW, child.tileH, + 0, 0, + child.tileW, child.tileH + ); + } else if (child.imgPos && child.width && child.height) { + ctx.drawImage( + img, + child.imgPos.x, + child.imgPos.y, + child.width, child.height, + 0, 0, + child.width, child.height + ); + } else { + ctx.drawImage(img, 0, 0); + } + } + + // Handle children with children + if (child.children) { + renderRec(child); + } + ctx.restore(); + }) + } + if (clear) { + ctx.clearRect(0, 0, this.w, this.h); + } + renderRec(container); + } +} +module.exports = CanvasRenderer; + +},{}],15:[function(require,module,exports){ +function rand(min, max) { + return Math.floor(randf(min, max)); +} + +function randf(min, max) { + if (max == null) { + max = min || 1; + min = 0; + } + return Math.random() * (max - min) + min; +} + +function randOneFrom(items) { + return items[rand(items.length)]; +} + +function randOneIn(max = 2) { + return rand(0, max) === 0; +} + +module.exports = { + rand, + randf, + randOneFrom, + randOneIn +}; +},{}],16:[function(require,module,exports){ +var asdf = require('../../../asdf/index'); +const { Game, Container, CanvasRenderer, math, KeyControls, MouseControls, Text, Texture, Sprite, TileSprite, TileMap, TileMapXML, SpriteSheetXML } = asdf; + +const game = new Game(640, 320, true); +const { scene, w, h } = game; + +const mouseAim = new MouseControls(); + +const tanksTexture = new Texture("./res/images/allSprites_default.png") +const tanksXml = new SpriteSheetXML("./res/images/allSprites_default.xml"); +const map = { x: 640 / 64, y: 320 / 64 }; + +// Make a random level of tile indexes +const level = [ + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, +]; + +scene.add(new TileMapXML(level, map.x, map.y, tanksTexture, tanksXml)); + +game.run((dt, t) => { + if (mouseAim.isDown) { + console.log('cliccccccccccc'); + } +}); + +},{"../../../asdf/index":13}]},{},[16]); diff --git a/examples/tilemap-test/index.html b/examples/tilemap-test/index.html index 99632cd..f79df8f 100644 --- a/examples/tilemap-test/index.html +++ b/examples/tilemap-test/index.html @@ -8,6 +8,6 @@
- + diff --git a/examples/tilemap-test/src/main.js b/examples/tilemap-test/src/main.js index 434bd84..51c9cdd 100644 --- a/examples/tilemap-test/src/main.js +++ b/examples/tilemap-test/src/main.js @@ -1,4 +1,4 @@ -import asdf from "../../../asdf/index.js"; +var asdf = require('../../../lib/index'); const { Game, Container, CanvasRenderer, math, KeyControls, MouseControls, Text, Texture, Sprite, TileSprite, TileMap, TileMapXML, SpriteSheetXML } = asdf; const game = new Game(640, 320, true); diff --git a/asdf/Container.js b/lib/Container.js similarity index 94% rename from asdf/Container.js rename to lib/Container.js index a1d90cd..64357c9 100644 --- a/asdf/Container.js +++ b/lib/Container.js @@ -27,4 +27,4 @@ class Container { }); } } -export default Container; +module.exports = Container; diff --git a/asdf/Game.js b/lib/Game.js similarity index 87% rename from asdf/Game.js rename to lib/Game.js index d441542..d9d9c40 100644 --- a/asdf/Game.js +++ b/lib/Game.js @@ -1,5 +1,6 @@ -import Container from "./Container.js"; -import CanvasRenderer from "./renderer/CanvasRenderer.js"; +var Container = require("./Container"), + CanvasRenderer = require('./renderer/CanvasRenderer') +; const STEP = 1 / 60; const FRAME_MAX = 5 * STEP; @@ -36,4 +37,4 @@ class Game { } } -export default Game; \ No newline at end of file +module.exports = Game; \ No newline at end of file diff --git a/asdf/Sprite.js b/lib/Sprite.js similarity index 88% rename from asdf/Sprite.js rename to lib/Sprite.js index 1a0b06b..99a6beb 100644 --- a/asdf/Sprite.js +++ b/lib/Sprite.js @@ -7,4 +7,4 @@ class Sprite { this.rotation = 0; } } -export default Sprite; +module.exports = Sprite; diff --git a/asdf/SpriteSheetXML.js b/lib/SpriteSheetXML.js similarity index 97% rename from asdf/SpriteSheetXML.js rename to lib/SpriteSheetXML.js index 64ef6b7..8dd0887 100644 --- a/asdf/SpriteSheetXML.js +++ b/lib/SpriteSheetXML.js @@ -36,4 +36,4 @@ class SpriteSheetXML { } } -export default SpriteSheetXML; \ No newline at end of file +module.exports = SpriteSheetXML; \ No newline at end of file diff --git a/asdf/Text.js b/lib/Text.js similarity index 85% rename from asdf/Text.js rename to lib/Text.js index de3fddb..8533f91 100644 --- a/asdf/Text.js +++ b/lib/Text.js @@ -5,4 +5,4 @@ class Text { this.style = style; } } -export default Text; +module.exports = Text; diff --git a/asdf/Texture.js b/lib/Texture.js similarity index 78% rename from asdf/Texture.js rename to lib/Texture.js index eb70fbe..6d8810d 100644 --- a/asdf/Texture.js +++ b/lib/Texture.js @@ -4,4 +4,4 @@ class Texture { this.img.src = url; } } -export default Texture; +module.exports = Texture; diff --git a/asdf/TileMap.js b/lib/TileMap.js similarity index 81% rename from asdf/TileMap.js rename to lib/TileMap.js index ec60783..099c677 100644 --- a/asdf/TileMap.js +++ b/lib/TileMap.js @@ -1,5 +1,6 @@ -import Container from "./Container.js"; -import TileSprite from "./TileSprite.js"; +var Container = require("./Container"), + TileSprite = require("./TileSprite") +; class TileMap extends Container { constructor(tiles, mapW, mapH, tileW, tileH, texture) { @@ -21,4 +22,4 @@ class TileMap extends Container { } } -export default TileMap; \ No newline at end of file +module.exports = TileMap; \ No newline at end of file diff --git a/asdf/TileMapXML.js b/lib/TileMapXML.js similarity index 84% rename from asdf/TileMapXML.js rename to lib/TileMapXML.js index f77f928..d140f62 100644 --- a/asdf/TileMapXML.js +++ b/lib/TileMapXML.js @@ -1,5 +1,6 @@ -import Container from "./Container.js"; -import TileSpriteXML from "./TileSpriteXML.js"; +var Container = require("./Container"), + TileSpriteXML = require("./TileSpriteXML") +; class TileMapXML extends Container { constructor(tiles, mapW, mapH, texture, xml) { @@ -21,4 +22,4 @@ class TileMapXML extends Container { } } -export default TileMapXML; \ No newline at end of file +module.exports = TileMapXML; \ No newline at end of file diff --git a/asdf/TileSprite.js b/lib/TileSprite.js similarity index 75% rename from asdf/TileSprite.js rename to lib/TileSprite.js index 4065663..9fddcaa 100644 --- a/asdf/TileSprite.js +++ b/lib/TileSprite.js @@ -1,4 +1,4 @@ -import Sprite from "./Sprite.js"; +var Sprite = require("./Sprite"); class TileSprite extends Sprite { constructor(texture, w, h) { @@ -9,4 +9,4 @@ class TileSprite extends Sprite { } } -export default TileSprite; \ No newline at end of file +module.exports = TileSprite; \ No newline at end of file diff --git a/asdf/TileSpriteXML.js b/lib/TileSpriteXML.js similarity index 80% rename from asdf/TileSpriteXML.js rename to lib/TileSpriteXML.js index 1727bb2..2cc1e6e 100644 --- a/asdf/TileSpriteXML.js +++ b/lib/TileSpriteXML.js @@ -1,4 +1,4 @@ -import Sprite from "./Sprite.js"; +var Sprite = require("./Sprite"); class TileSpriteXML extends Sprite { constructor(texture, xml, index) { @@ -10,4 +10,4 @@ class TileSpriteXML extends Sprite { } } -export default TileSpriteXML; \ No newline at end of file +module.exports = TileSpriteXML; \ No newline at end of file diff --git a/asdf/controls/KeyControls.js b/lib/controls/KeyControls.js similarity index 97% rename from asdf/controls/KeyControls.js rename to lib/controls/KeyControls.js index 36b3969..bf8e683 100644 --- a/asdf/controls/KeyControls.js +++ b/lib/controls/KeyControls.js @@ -1,4 +1,3 @@ - class KeyControls { constructor() { @@ -59,4 +58,5 @@ class KeyControls { } } -export default KeyControls; + +module.exports = KeyControls; diff --git a/asdf/controls/MouseControls.js b/lib/controls/MouseControls.js similarity index 96% rename from asdf/controls/MouseControls.js rename to lib/controls/MouseControls.js index a085cd5..7c20b36 100644 --- a/asdf/controls/MouseControls.js +++ b/lib/controls/MouseControls.js @@ -42,4 +42,4 @@ class MouseControls { } } -export default MouseControls; +module.exports = MouseControls; diff --git a/asdf/index.d.ts b/lib/index.d.ts similarity index 100% rename from asdf/index.d.ts rename to lib/index.d.ts diff --git a/lib/index.js b/lib/index.js new file mode 100644 index 0000000..3298502 --- /dev/null +++ b/lib/index.js @@ -0,0 +1,32 @@ +var Container = require("./Container.js"), + CanvasRenderer = require("./renderer/CanvasRenderer.js"), + Game = require("./Game.js"), + math = require("./utilities/math.js"), + KeyControls = require("./controls/KeyControls.js"), + MouseControls = require("./controls/MouseControls.js"), + Sprite = require("./Sprite.js"), + TileMap = require("./TileMap.js"), + TileMapXML = require("./TileMapXML.js"), + TileSprite = require("./TileSprite.js"), + TileSpriteXML = require("./TileSpriteXML.js"), + Text = require("./Text.js"), + Texture = require("./Texture.js"), + SpriteSheetXML = require("./SpriteSheetXML.js") +; + +module.exports = { + CanvasRenderer, + Container, + Game, + math, + KeyControls, + MouseControls, + Sprite, + TileMap, + TileMapXML, + TileSprite, + SpriteSheetXML, + TileSpriteXML, + Text, + Texture +}; diff --git a/asdf/renderer/CanvasRenderer.js b/lib/renderer/CanvasRenderer.js similarity index 98% rename from asdf/renderer/CanvasRenderer.js rename to lib/renderer/CanvasRenderer.js index 11f4811..1867e11 100644 --- a/asdf/renderer/CanvasRenderer.js +++ b/lib/renderer/CanvasRenderer.js @@ -1,4 +1,3 @@ - class CanvasRenderer { constructor(w, h) { @@ -95,4 +94,4 @@ class CanvasRenderer { renderRec(container); } } -export default CanvasRenderer; +module.exports = CanvasRenderer; diff --git a/asdf/utilities/math.js b/lib/utilities/math.js similarity index 95% rename from asdf/utilities/math.js rename to lib/utilities/math.js index 6b96652..dbcbdd3 100644 --- a/asdf/utilities/math.js +++ b/lib/utilities/math.js @@ -18,7 +18,7 @@ function randOneIn(max = 2) { return rand(0, max) === 0; } -export default { +module.exports = { rand, randf, randOneFrom, diff --git a/list.js b/list.js deleted file mode 100644 index 49764de..0000000 --- a/list.js +++ /dev/null @@ -1,5 +0,0 @@ -var serveIndex = require('serve-index') - -require('budo').cli(process.argv.slice(2), { - middleware: serveIndex(__dirname) -}) \ No newline at end of file diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index a4f5847..0000000 --- a/package-lock.json +++ /dev/null @@ -1,3975 +0,0 @@ -{ - "name": "asdf-games", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dev": true, - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "ansi-regex": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", - "dev": true - }, - "ansi-styles": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bole": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bole/-/bole-2.0.0.tgz", - "integrity": "sha1-2KocaQRnv7T+Ebh0rLLoOH44JhU=", - "dev": true, - "requires": { - "core-util-is": ">=1.0.1 <1.1.0-0", - "individual": ">=3.0.0 <3.1.0-0", - "json-stringify-safe": ">=5.0.0 <5.1.0-0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "browserify": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.5.0.tgz", - "integrity": "sha512-6bfI3cl76YLAnCZ75AGu/XPOsqUhRyc0F/olGIJeCxtfxF2HvPKEcmjU9M8oAPxl4uBY1U7Nry33Q6koV3f2iw==", - "requires": { - "JSONStream": "^1.0.3", - "assert": "^1.4.0", - "browser-pack": "^6.0.1", - "browser-resolve": "^1.11.0", - "browserify-zlib": "~0.2.0", - "buffer": "^5.0.2", - "cached-path-relative": "^1.0.0", - "concat-stream": "^1.6.0", - "console-browserify": "^1.1.0", - "constants-browserify": "~1.0.0", - "crypto-browserify": "^3.0.0", - "defined": "^1.0.0", - "deps-sort": "^2.0.0", - "domain-browser": "^1.2.0", - "duplexer2": "~0.1.2", - "events": "^2.0.0", - "glob": "^7.1.0", - "has": "^1.0.0", - "htmlescape": "^1.1.0", - "https-browserify": "^1.0.0", - "inherits": "~2.0.1", - "insert-module-globals": "^7.0.0", - "labeled-stream-splicer": "^2.0.0", - "mkdirp": "^0.5.0", - "module-deps": "^6.0.0", - "os-browserify": "~0.3.0", - "parents": "^1.0.1", - "path-browserify": "~0.0.0", - "process": "~0.11.0", - "punycode": "^1.3.2", - "querystring-es3": "~0.2.0", - "read-only-stream": "^2.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.1.4", - "shasum": "^1.0.0", - "shell-quote": "^1.6.1", - "stream-browserify": "^2.0.0", - "stream-http": "^3.0.0", - "string_decoder": "^1.1.1", - "subarg": "^1.0.0", - "syntax-error": "^1.1.1", - "through2": "^2.0.0", - "timers-browserify": "^1.0.1", - "tty-browserify": "0.0.1", - "url": "~0.11.0", - "util": "~0.10.1", - "vm-browserify": "^1.0.0", - "xtend": "^4.0.0" - }, - "dependencies": { - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, - "acorn": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz", - "integrity": "sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ==" - }, - "acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "requires": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "acorn-walk": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.0.0.tgz", - "integrity": "sha512-7Bv1We7ZGuU79zZbb6rRqcpxo3OY+zrdtloZWoyD8fmGX+FeXRjE+iuGkZjSXLVovLzrsvMGMy0EkwA0E0umxg==" - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, - "browser-pack": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", - "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", - "requires": { - "JSONStream": "^1.0.3", - "combine-source-map": "~0.8.0", - "defined": "^1.0.0", - "safe-buffer": "^5.1.1", - "through2": "^2.0.0", - "umd": "^3.0.0" - } - }, - "browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", - "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" - } - } - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "requires": { - "pako": "~1.0.5" - } - }, - "buffer": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.0.tgz", - "integrity": "sha512-Xpgy0IwHK2N01ncykXTy6FpCWuM+CJSHoPVBLyNqyrWxsedpLvwsYUhf0ME3WRFNUhos0dMamz9cOS/xRDtU5g==", - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" - }, - "cached-path-relative": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz", - "integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==" - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "combine-source-map": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", - "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", - "requires": { - "convert-source-map": "~1.1.0", - "inline-source-map": "~0.6.0", - "lodash.memoize": "~3.0.3", - "source-map": "~0.5.3" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "requires": { - "date-now": "^0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" - }, - "convert-source-map": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", - "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "dash-ast": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", - "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==" - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" - }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" - }, - "deps-sort": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", - "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", - "requires": { - "JSONStream": "^1.0.3", - "shasum": "^1.0.0", - "subarg": "^1.0.0", - "through2": "^2.0.0" - } - }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "detective": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", - "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", - "requires": { - "acorn-node": "^1.6.1", - "defined": "^1.0.0", - "minimist": "^1.1.1" - } - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "requires": { - "readable-stream": "^2.0.2" - } - }, - "elliptic": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz", - "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==", - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "events": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz", - "integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==" - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "get-assigned-identifiers": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", - "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==" - }, - "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "htmlescape": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", - "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=" - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inline-source-map": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", - "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", - "requires": { - "source-map": "~0.5.3" - } - }, - "insert-module-globals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.0.tgz", - "integrity": "sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw==", - "requires": { - "JSONStream": "^1.0.3", - "acorn-node": "^1.5.2", - "combine-source-map": "^0.8.0", - "concat-stream": "^1.6.1", - "is-buffer": "^1.1.0", - "path-is-absolute": "^1.0.1", - "process": "~0.11.0", - "through2": "^2.0.0", - "undeclared-identifiers": "^1.1.2", - "xtend": "^4.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "json-stable-stringify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", - "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", - "requires": { - "jsonify": "~0.0.0" - } - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" - }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" - }, - "labeled-stream-splicer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", - "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", - "requires": { - "inherits": "^2.0.1", - "stream-splicer": "^2.0.0" - } - }, - "lodash.memoize": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", - "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=" - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } - } - }, - "module-deps": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.1.tgz", - "integrity": "sha512-UnEn6Ah36Tu4jFiBbJVUtt0h+iXqxpLqDvPS8nllbw5RZFmNJ1+Mz5BjYnM9ieH80zyxHkARGLnMIHlPK5bu6A==", - "requires": { - "JSONStream": "^1.0.3", - "browser-resolve": "^1.7.0", - "cached-path-relative": "^1.0.2", - "concat-stream": "~1.6.0", - "defined": "^1.0.0", - "detective": "^5.0.2", - "duplexer2": "^0.1.2", - "inherits": "^2.0.1", - "parents": "^1.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.4.0", - "stream-combiner2": "^1.1.1", - "subarg": "^1.0.0", - "through2": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" - }, - "pako": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==" - }, - "parents": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", - "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", - "requires": { - "path-platform": "~0.11.15" - } - }, - "parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "path-platform": { - "version": "0.11.15", - "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", - "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=" - }, - "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "read-only-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", - "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", - "requires": { - "readable-stream": "^2.0.2" - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", - "requires": { - "path-parse": "^1.0.6" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shasum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", - "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", - "requires": { - "json-stable-stringify": "~0.0.0", - "sha.js": "~2.4.4" - } - }, - "shell-quote": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.1.tgz", - "integrity": "sha512-2kUqeAGnMAu6YrTPX4E3LfxacH9gKljzVjlkUeSqY0soGwK4KLl7TURXCem712tkhBCeeaFP9QK4dKn88s3Icg==" - }, - "simple-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", - "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", - "requires": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" - } - }, - "stream-http": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.1.0.tgz", - "integrity": "sha512-cuB6RgO7BqC4FBYzmnvhob5Do3wIdIsXAgGycHJnW+981gHqoYcYz9lqjJrk8WXRddbwPuqPYRl+bag6mYv4lw==", - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^3.0.6", - "xtend": "^4.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "stream-splicer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", - "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "subarg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", - "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", - "requires": { - "minimist": "^1.1.0" - } - }, - "syntax-error": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", - "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", - "requires": { - "acorn-node": "^1.2.0" - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "timers-browserify": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", - "requires": { - "process": "~0.11.0" - } - }, - "tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "umd": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", - "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==" - }, - "undeclared-identifiers": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", - "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", - "requires": { - "acorn-node": "^1.3.0", - "dash-ast": "^1.0.0", - "get-assigned-identifiers": "^1.2.0", - "simple-concat": "^1.0.0", - "xtend": "^4.0.1" - } - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - } - } - }, - "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "requires": { - "inherits": "2.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "vm-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", - "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - } - } - }, - "budo": { - "version": "11.6.3", - "resolved": "https://registry.npmjs.org/budo/-/budo-11.6.3.tgz", - "integrity": "sha512-U9pV6SoSxGduY/wnoIlDwEEUhxtTFqYqoyWvi3B5nJ/abSxuNmolfAfzgOQIEXqtHhPEA4FlM+VNzdEDOjpIjw==", - "dev": true, - "requires": { - "bole": "^2.0.0", - "browserify": "^16.2.3", - "chokidar": "^2.0.4", - "connect-pushstate": "^1.1.0", - "escape-html": "^1.0.3", - "events": "^1.0.2", - "garnish": "^5.0.0", - "get-ports": "^1.0.2", - "inject-lr-script": "^2.1.0", - "internal-ip": "^3.0.1", - "micromatch": "^3.1.10", - "on-finished": "^2.3.0", - "on-headers": "^1.0.1", - "once": "^1.3.2", - "opn": "^3.0.2", - "path-is-absolute": "^1.0.1", - "pem": "^1.13.2", - "reload-css": "^1.0.0", - "resolve": "^1.1.6", - "serve-static": "^1.10.0", - "simple-html-index": "^1.4.0", - "stacked": "^1.1.1", - "stdout-stream": "^1.4.0", - "strip-ansi": "^3.0.0", - "subarg": "^1.0.0", - "term-color": "^1.0.1", - "url-trim": "^1.0.0", - "watchify-middleware": "^1.8.2", - "ws": "^6.2.1", - "xtend": "^4.0.0" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "chalk": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", - "dev": true, - "requires": { - "ansi-styles": "^1.1.0", - "escape-string-regexp": "^1.0.0", - "has-ansi": "^0.1.0", - "strip-ansi": "^0.3.0", - "supports-color": "^0.2.0" - }, - "dependencies": { - "strip-ansi": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", - "dev": true, - "requires": { - "ansi-regex": "^0.2.1" - } - } - } - }, - "charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", - "dev": true - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "connect-pushstate": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/connect-pushstate/-/connect-pushstate-1.1.0.tgz", - "integrity": "sha1-vKsiQnHEOWBKD7D2FMCl9WPojiQ=", - "dev": true - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", - "dev": true - }, - "debounce": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz", - "integrity": "sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "default-gateway": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.2.tgz", - "integrity": "sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ==", - "dev": true, - "requires": { - "execa": "^0.10.0", - "ip-regex": "^2.1.0" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "es6-promisify": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.0.2.tgz", - "integrity": "sha512-eO6vFm0JvqGzjWIQA6QVKjxpmELfhWbDUWHm1rPfIbn55mhKPiAa5xpLmQWJrNa629ZIeQ8ZvMAi13kvrjK6Mg==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true - }, - "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "from2-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/from2-string/-/from2-string-1.1.0.tgz", - "integrity": "sha1-GCgrJ9CKJnyzAwzSuLSw8hKvdSo=", - "dev": true, - "requires": { - "from2": "^2.0.3" - } - }, - "fsevents": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", - "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1", - "node-pre-gyp": "*" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "3.2.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.9.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.14.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4.4.2" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.7.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.1", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.13", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "garnish": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/garnish/-/garnish-5.2.0.tgz", - "integrity": "sha1-vtQ2WTguSxmOM8eTiXvnxwHmVXc=", - "dev": true, - "requires": { - "chalk": "^0.5.1", - "minimist": "^1.1.0", - "pad-left": "^2.0.0", - "pad-right": "^0.2.2", - "prettier-bytes": "^1.0.3", - "pretty-ms": "^2.1.0", - "right-now": "^1.0.0", - "split2": "^0.2.1", - "stdout-stream": "^1.4.0", - "url-trim": "^1.0.0" - } - }, - "get-ports": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-ports/-/get-ports-1.0.3.tgz", - "integrity": "sha1-9AvVgKyn7A77e5bL/L6wPviUteg=", - "dev": true, - "requires": { - "map-limit": "0.0.1" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, - "has-ansi": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", - "dev": true, - "requires": { - "ansi-regex": "^0.2.0" - } - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - } - } - }, - "individual": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/individual/-/individual-3.0.0.tgz", - "integrity": "sha1-58pPhfiVewGHNPKFdQ3CLsL5hi0=", - "dev": true - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "inject-lr-script": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/inject-lr-script/-/inject-lr-script-2.2.0.tgz", - "integrity": "sha512-lFLjCOg2XP8233AiET5vFePo910vhNIkKHDzUptNhc+4Y7dsp/TNBiusUUpaxzaGd6UDHy0Lozfl9AwmteK6DQ==", - "dev": true, - "requires": { - "resp-modifier": "^6.0.0" - } - }, - "internal-ip": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz", - "integrity": "sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==", - "dev": true, - "requires": { - "default-gateway": "^2.6.0", - "ipaddr.js": "^1.5.2" - } - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-limit": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz", - "integrity": "sha1-63lhAxwPDo0AG/LVb6toXViCLzg=", - "dev": true, - "requires": { - "once": "~1.3.0" - }, - "dependencies": { - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "dev": true, - "requires": { - "wrappy": "1" - } - } - } - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", - "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", - "dev": true, - "requires": { - "charenc": "~0.0.1", - "crypt": "~0.0.1", - "is-buffer": "~1.1.1" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "mime-db": { - "version": "1.42.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", - "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==", - "dev": true - }, - "mime-types": { - "version": "2.1.25", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", - "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", - "dev": true, - "requires": { - "mime-db": "1.42.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "opn": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/opn/-/opn-3.0.3.tgz", - "integrity": "sha1-ttmec5n3jWXDuq/+8fsojpuFJDo=", - "dev": true, - "requires": { - "object-assign": "^4.0.1" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "outpipe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/outpipe/-/outpipe-1.1.1.tgz", - "integrity": "sha1-UM+GFjZeh+Ax4ppeyTOaPaRyX6I=", - "dev": true, - "requires": { - "shell-quote": "^1.4.2" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "pad-left": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pad-left/-/pad-left-2.1.0.tgz", - "integrity": "sha1-FuajstRKjhOMsIOMx8tAOk/J6ZQ=", - "dev": true, - "requires": { - "repeat-string": "^1.5.4" - } - }, - "pad-right": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", - "integrity": "sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q=", - "dev": true, - "requires": { - "repeat-string": "^1.5.2" - } - }, - "parse-ms": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", - "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", - "dev": true - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "pem": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/pem/-/pem-1.14.3.tgz", - "integrity": "sha512-Q+AMVMD3fzeVvZs5PHeI+pVt0hgZY2fjhkliBW43qyONLgCXPVk1ryim43F9eupHlNGLJNT5T/NNrzhUdiC5Zg==", - "dev": true, - "requires": { - "es6-promisify": "^6.0.0", - "md5": "^2.2.1", - "os-tmpdir": "^1.0.1", - "which": "^1.3.1" - } - }, - "plur": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", - "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=", - "dev": true - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "prettier-bytes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prettier-bytes/-/prettier-bytes-1.0.4.tgz", - "integrity": "sha1-mUsCqkb2mcULYle1+qp/4lV+YtY=", - "dev": true - }, - "pretty-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz", - "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", - "dev": true, - "requires": { - "is-finite": "^1.0.1", - "parse-ms": "^1.0.0", - "plur": "^1.0.0" - } - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true, - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "reload-css": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/reload-css/-/reload-css-1.0.2.tgz", - "integrity": "sha1-avsRFi4jFP7M2tbcX96CH9cxgzE=", - "dev": true, - "requires": { - "query-string": "^4.2.3" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "resolve": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.14.1.tgz", - "integrity": "sha512-fn5Wobh4cxbLzuHaE+nphztHy43/b++4M6SsGFC2gB8uYwf0C8LcarfCz1un7UTW8OFQg9iNjZ4xpcFVGebDPg==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "resp-modifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", - "integrity": "sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08=", - "dev": true, - "requires": { - "debug": "^2.2.0", - "minimatch": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "right-now": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/right-now/-/right-now-1.0.0.tgz", - "integrity": "sha1-bolgne69fc2vja7Mmuo5z1haCRg=", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "simple-html-index": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/simple-html-index/-/simple-html-index-1.5.0.tgz", - "integrity": "sha1-LJPurrrAAdihNfwAIr1K3o9YmW8=", - "dev": true, - "requires": { - "from2-string": "^1.1.0" - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "split2": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/split2/-/split2-0.2.1.tgz", - "integrity": "sha1-At2smtwD7Au3jBKC7Aecpuha6QA=", - "dev": true, - "requires": { - "through2": "~0.6.1" - } - }, - "stacked": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stacked/-/stacked-1.1.1.tgz", - "integrity": "sha1-LH+jjMfjejQRp3zY55LeRI+faXU=", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - }, - "stdout-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", - "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "subarg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", - "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", - "dev": true, - "requires": { - "minimist": "^1.1.0" - } - }, - "supports-color": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", - "dev": true - }, - "term-color": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/term-color/-/term-color-1.0.1.tgz", - "integrity": "sha1-OOGSVTpHPjXkFgT/UZmEa/gRejo=", - "dev": true, - "requires": { - "ansi-styles": "2.0.1", - "supports-color": "1.3.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.0.1.tgz", - "integrity": "sha1-sDP1f5Pi0oreuLwRE4+hPaD9IKM=", - "dev": true - }, - "supports-color": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.3.1.tgz", - "integrity": "sha1-FXWN8J2P87SswwdTn6vicJXhBC0=", - "dev": true - } - } - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url-trim": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-trim/-/url-trim-1.0.0.tgz", - "integrity": "sha1-QAV+LxZLiOXaynJp2kfm0d2Detw=", - "dev": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "watchify": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/watchify/-/watchify-3.11.1.tgz", - "integrity": "sha512-WwnUClyFNRMB2NIiHgJU9RQPQNqVeFk7OmZaWf5dC5EnNa0Mgr7imBydbaJ7tGTuPM2hz1Cb4uiBvK9NVxMfog==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "browserify": "^16.1.0", - "chokidar": "^2.1.1", - "defined": "^1.0.0", - "outpipe": "^1.1.0", - "through2": "^2.0.0", - "xtend": "^4.0.0" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "watchify-middleware": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/watchify-middleware/-/watchify-middleware-1.8.2.tgz", - "integrity": "sha512-A+x5K0mHVEK2WSLOEbazcXDFnSlralMZzk364Ea39F4xFl2jGl4VQLLN5HwrnRzpF5/Ggf1Q2he0HpJtflUiHg==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "debounce": "^1.0.0", - "events": "^1.0.2", - "object-assign": "^4.0.1", - "strip-ansi": "^3.0.0", - "watchify": "^3.11.1" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - } - } -} diff --git a/package.json b/package.json index 9dac8b3..ec6f7a4 100644 --- a/package.json +++ b/package.json @@ -1,28 +1,21 @@ { "name": "asdf-games", "version": "1.0.0", - "description": "Me making games using HTML5 Games: Novice to Ninja by Sitepoint.", - "main": "list.js", - "dependencies": { - "browserify": "^16.5.0" - }, - "devDependencies": { - "budo": "^11.6.3", - "serve-index": "^1.9.1" - }, - "scripts": { - "start": "node list.js --dir ./ --live" - }, + "description": "Javascript gaming framework, based upon the framework made in the book HTML5 Games: Novice to Ninja by Sitepoint.", + "main": "lib/index.js", "repository": { "type": "git", - "url": "asdf-games" + "url": "git+https://gitea.arnweb.nl/arne/asdf-games#master" }, "keywords": [ - "ASDF", - "ARNweb", - "Games", - "Sitepoint" + "asdf", + "js", + "game", + "sitepoint" ], - "author": "Arne van Iterson", + "author": { + "name": "Arne van Iterson", + "url": "https://gitea.arnweb.nl/arne/" + }, "license": "ISC" }