├── .github └── ISSUE_TEMPLATE.md ├── .gitignore ├── .npmignore ├── Gruntfile.js ├── LICENSE ├── README.md ├── build ├── phaser-nineslice.d.ts ├── phaser-nineslice.js ├── phaser-nineslice.js.map └── phaser-nineslice.min.js ├── config ├── tsconfig.json └── tslint.json ├── example ├── images │ ├── atlas.json │ ├── atlas.png │ ├── atlas.tps │ ├── btn_clean.png │ ├── image.png │ └── inputfield.png └── index.html ├── package-lock.json ├── package.json └── ts ├── NineSlice.ts ├── Plugin.ts └── definitions.d.ts /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Before opening this issue _please_ check we haven't already fixed it! Check the [Closed issues](https://github.com/azerion/phaser-nineslice/issues?q=is%3Aissue+is%3Aclosed) 2 | This Issue is about (delete as applicable) 3 | 4 | * A bug in the API (always say which version you're using!) 5 | * An error in the documentation 6 | * An error in the example 7 | * A problem with my own code 8 | 9 | API errors must include example code showing what happens, and why you don't believe this is the expected behavior. Also mention the Phaser version you're using for your project. Issues posted without code take _far_ longer to get resolved, _if ever_. 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .idea 3 | .tscache -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | Gruntfile.js 2 | example 3 | ts 4 | .idea 5 | .tscache 6 | .github -------------------------------------------------------------------------------- /Gruntfile.js: -------------------------------------------------------------------------------- 1 | module.exports = function (grunt) { 2 | 'use strict'; 3 | 4 | grunt.initConfig({ 5 | //Get some details from the package.json 6 | pkg: grunt.file.readJSON('package.json'), 7 | banner: '/*!\n' + 8 | ' * <%= pkg.config.name %> - version <%= pkg.version %> \n' + 9 | ' * <%= pkg.description %>\n' + 10 | ' *\n' + 11 | ' * <%= pkg.author %>\n' + 12 | ' * Build at <%= grunt.template.today("dd-mm-yyyy") %>\n' + 13 | ' * Released under MIT License \n' + 14 | ' */\n', 15 | usebanner: { 16 | dist: { 17 | options: { 18 | position: 'top', 19 | banner: '<%= banner %>' 20 | }, 21 | files: { 22 | src: [ 'build/*.js' ] 23 | } 24 | } 25 | }, 26 | //Typescript settings per build 27 | ts: { 28 | options: { 29 | module: 'amd', 30 | target: 'es5', 31 | sourceMap: true, 32 | declaration: true, 33 | noImplicitAny: true 34 | }, 35 | dist: { 36 | src: ['ts/**/*.ts'], 37 | dest: 'build/<%= pkg.config.name %>.js' 38 | } 39 | }, 40 | watch: { 41 | files: ['ts/**/*.ts'], 42 | tasks: ['ts'], 43 | options: { 44 | livereload: true 45 | } 46 | }, 47 | connect: { 48 | server: { 49 | options: { 50 | port: 8080 51 | } 52 | } 53 | }, 54 | uglify: { 55 | options: { 56 | compress: { 57 | sequences: true, 58 | dead_code: true, 59 | conditionals: true, 60 | booleans: true, 61 | unused: true, 62 | if_return: true, 63 | join_vars: true, 64 | drop_console: true 65 | }, 66 | mangle: true, 67 | beautify: false 68 | }, 69 | dist: { 70 | files: { 71 | 'build/<%= pkg.config.name %>.min.js': [ 72 | 'build/<%= pkg.config.name %>.js' 73 | ] 74 | } 75 | } 76 | }, 77 | clean: { 78 | dist: ['build'] 79 | } 80 | }); 81 | 82 | grunt.loadNpmTasks('grunt-contrib-clean'); 83 | grunt.loadNpmTasks('grunt-contrib-uglify'); 84 | grunt.loadNpmTasks('grunt-banner'); 85 | grunt.loadNpmTasks('grunt-ts'); 86 | grunt.loadNpmTasks('grunt-contrib-connect'); 87 | grunt.loadNpmTasks('grunt-contrib-watch'); 88 | 89 | //dist Build 90 | grunt.registerTask('dist', [ 91 | 'clean:dist', //Clean the dist folder 92 | 'ts:dist',//Run typescript on the preprocessed files, for dist (client) 93 | 'uglify:dist', //Minify everything 94 | 'usebanner:dist' //Minify everything 95 | ]); 96 | 97 | grunt.registerTask('dev', [ 98 | 'ts:dist', 99 | 'connect', 100 | 'watch' 101 | ]); 102 | 103 | }; 104 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Gembly 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Phaser Nineslice 2 | ================ 3 | Phaser-Nineslice plugin adds 9-slice scaling support to Phaser v2 and CE. An implementation for v3 is also 4 | available thanks to [jdotrjs](https://github.com/jdotrjs) as [phaser3-nineslice](https://github.com/jdotrjs/phaser3-nineslice). 5 | 6 | Key features: 7 | * Blazing fast 8 | * Low memory usage 9 | * Easy to use API 10 | 11 | *Important* 12 | From here on this library will be published and updated under [@azerion/phaser-nineslice](https://www.npmjs.com/package/@azerion/phaser-nineslice) at NPM, the old [phaser-nineslice](https://www.npmjs.com/package/phaser-nineslice) will no longer be maintained. 13 | 14 | If you are coming from v1 you can read the migration guide at the bottom 15 | 16 | Getting Started 17 | --------------- 18 | First you want to get a fresh copy of the plugin. You can get it from this repo or from npm, ain't that handy. 19 | ``` 20 | npm install @azerion/phaser-nineslice --save-dev 21 | ``` 22 | 23 | Next up you'd want to add it to your list of js sources you load into your game 24 | ```html 25 | 26 | ``` 27 | 28 | Usage 29 | ----- 30 | 31 | ### Load the plugin 32 | 33 | You still need to load the plugin in your game. This is done just like any other plugin in Phaser. 34 | So, to load the plugin, include it in one of the Phaser States. 35 | 36 | ```javascript 37 | function preload(){ 38 | game.plugins.add(PhaserNineSlice.Plugin); 39 | } 40 | ``` 41 | The plugin will patch your Phaser game with additional load/add/make methods so the nineslice container fits up in Phaser like any normal object! 42 | 43 | ### Preloading 44 | Like any other asset in Phaser, you still need to preload the image. It's a bit different then a regular image, in the sense that it requires some extra data. 45 | 46 | Apart from the key and the url, you can also specify the sizes of top, left, right and bottom sides. 47 | 48 | If you don't specify a bottom size, it will use the value for the top. Same goes for right and left. 49 | 50 | It's also possible to only give one size. If only one value is given, this will use that for the edges. 51 | 52 | ```javascript 53 | //This will load a 9-slice texture where all sides are 25px 54 | game.load.nineSlice('my-image', '/images/my-image.jpg', 25); 55 | 56 | //This will load a 9-slice texture where the 57 | // top is 10, left is 15, right is 20 and bottom is 30 pixels in size 58 | game.load.nineSlice('my-image', '/images/my-image.jpg', 10, 15, 20, 30); 59 | ``` 60 | 61 | ### Adding a container 62 | Also adding and creating of 9-slice containers is exposed through Phaser's GameObjectCreator and GameObjectFactory. 63 | So you can add a 9-slice container to your game just like any other image once it's preloaded! 64 | 65 | ```javascript 66 | //We specify the x and y position. the key for the image and the width and height of the container. It will be automaticly scaled! 67 | game.add.nineSlice(100, 100, 'my-image', 200, 50); 68 | ``` 69 | 70 | Or if you'd want to do something with it first: 71 | ```javascript 72 | //Two options here, first we use Phaser 73 | var container = game.create.nineSlice(0, 0, 'my-image', 200, 50); 74 | container.x = 20; 75 | container.y = 20; 76 | game.add.existing(container); 77 | 78 | //Or we use the Constructor 79 | var nineSlice = new PhaserNineSlice.NineSlice(game, 0, 0, 'my-image', null, 200, 50); 80 | nineSlice.x = 50; 81 | nineSlice.y = 50; 82 | game.add.existing(nineSlice); 83 | ``` 84 | 85 | ### Using a Texture Atlas 86 | It's also possible to use an image that's located inside a Texture atlas. The only difference then is that you don't have to preload the image, instead you use the object's constructor and pass the framedata directly on creation: 87 | ```javascript 88 | //Add an nineslice image with an texture atlas 89 | var sliceButton = new PhaserNineSlice.NineSlice( 90 | game, // Phaser.Game 91 | 150, // x position 92 | 100, // y position 93 | 'buttons', // atlas key 94 | 'btn_clean.png',// Image frame 95 | 200, // expected width 96 | 100, // expected height 97 | { //And this is the framedata, normally this is passed when preloading. Check README for details 98 | top: 20, // Amount of pixels for top 99 | bottom: 23, // Amount of pixels for bottom 100 | left: 27, // Amount of pixels for left 101 | right: 28 // Amount of pixels for right 102 | } 103 | ); 104 | this.game.add.existing(sliceButton); 105 | ``` 106 | 107 | ### Resize method 108 | 109 | 9-slice container has a resize method which lets you expand/shorten the width or length of the image. 110 | When using resize method, make sure values are not lower than the width of the image corners 111 | 112 | ```javascript 113 | var sliceContainer = game.add.nineSlice(5, 5, 'image', null, 48, 48); 114 | sliceContainer.resize(100, 200); 115 | ``` 116 | 117 | Migrating from v1 118 | ----------------- 119 | The API of the objects is the same as before but the namespace changed. We decided to remove the Fabrique namespace, and house the plugin on it's own (PhaserNineSlice). 120 | so: 121 | Fabrique.Plugins.NineSlice 122 | becomes: 123 | PhaserNineSlice.Plugin 124 | 125 | All other references of Fabrique.Plugins can be replaced with PhaserNineSlice. 126 | If you are still unsure how or what, both the example and this readme have been adjusted to work with the new namespace. 127 | 128 | Disclaimer 129 | ---------- 130 | We at Azerion just love playing and creating awesome games. We aren't affiliated with Phaser.io. We just needed some awesome nine slice containers in our awesome HTML5 games. Feel free to use it for enhancing your own awesome games! 131 | 132 | Phaser NineSlice is distributed under the MIT license. All 3rd party libraries and components are distributed under their respective license terms. 133 | -------------------------------------------------------------------------------- /build/phaser-nineslice.d.ts: -------------------------------------------------------------------------------- 1 | declare module PhaserNineSlice { 2 | import NineSliceCacheData = PhaserNineSlice.NineSliceCacheData; 3 | class NineSlice extends Phaser.Sprite { 4 | private leftSize; 5 | private topSize; 6 | private rightSize; 7 | private bottomSize; 8 | localWidth: number; 9 | localHeight: number; 10 | baseTexture: PIXI.BaseTexture; 11 | texture: Phaser.RenderTexture; 12 | private baseFrame; 13 | constructor(game: PhaserNineSlice.NineSliceGame, x: number, y: number, key: string, frame: string, width: number, height: number, data?: NineSliceCacheData); 14 | private renderTexture(); 15 | resize(width: number, height: number): void; 16 | destroy(...args: any[]): void; 17 | private createTexturePart(x, y, width, height); 18 | } 19 | } 20 | declare module PhaserNineSlice { 21 | interface NineSliceObjectFactory extends Phaser.GameObjectFactory { 22 | nineSlice: (x: number, y: number, key: string, frame: string, width: number, height: number, group?: Phaser.Group) => PhaserNineSlice.NineSlice; 23 | } 24 | interface NineSliceObjectCreator extends Phaser.GameObjectCreator { 25 | nineSlice: (x: number, y: number, key: string, frame: string, width: number, height: number, group?: Phaser.Group) => PhaserNineSlice.NineSlice; 26 | } 27 | interface NineSliceCache extends Phaser.Cache { 28 | addNineSlice: (key: string, data: NineSliceCacheData) => void; 29 | getNineSlice: (key: string) => NineSliceCacheData; 30 | nineSlice: { 31 | [key: string]: NineSliceCacheData; 32 | }; 33 | } 34 | interface NineSliceLoader extends Phaser.Loader { 35 | nineSlice: (key: string, url: string, top: number, left?: number, right?: number, bottom?: number) => void; 36 | cache: NineSliceCache; 37 | } 38 | interface NineSliceGame extends Phaser.Game { 39 | add: NineSliceObjectFactory; 40 | load: NineSliceLoader; 41 | cache: NineSliceCache; 42 | } 43 | interface NineSliceCacheData { 44 | top: number; 45 | bottom?: number; 46 | left?: number; 47 | right?: number; 48 | } 49 | class Plugin extends Phaser.Plugin { 50 | constructor(game: Phaser.Game, parent: Phaser.PluginManager); 51 | private addNineSliceLoader(); 52 | private addNineSliceFactory(); 53 | private addNineSliceCache(); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /build/phaser-nineslice.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * phaser-nineslice - version 2.0.1 3 | * NineSlice plugin for Phaser.io! 4 | * 5 | * Azerion 6 | * Build at 19-03-2019 7 | * Released under MIT License 8 | */ 9 | 10 | var __extends = (this && this.__extends) || (function () { 11 | var extendStatics = Object.setPrototypeOf || 12 | ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 13 | function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; 14 | return function (d, b) { 15 | extendStatics(d, b); 16 | function __() { this.constructor = d; } 17 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 18 | }; 19 | })(); 20 | var PhaserNineSlice; 21 | (function (PhaserNineSlice) { 22 | var NineSlice = (function (_super) { 23 | __extends(NineSlice, _super); 24 | function NineSlice(game, x, y, key, frame, width, height, data) { 25 | var _this = _super.call(this, game, x, y, key, frame) || this; 26 | _this.baseTexture = _this.texture.baseTexture; 27 | _this.baseFrame = _this.texture.frame; 28 | if (frame !== null && !data) { 29 | data = game.cache.getNineSlice(frame); 30 | } 31 | else if (!data) { 32 | data = game.cache.getNineSlice(key); 33 | } 34 | if (undefined === data) { 35 | return _this; 36 | } 37 | _this.topSize = data.top; 38 | if (!data.left) { 39 | _this.leftSize = _this.topSize; 40 | } 41 | else { 42 | _this.leftSize = data.left; 43 | } 44 | if (!data.right) { 45 | _this.rightSize = _this.leftSize; 46 | } 47 | else { 48 | _this.rightSize = data.right; 49 | } 50 | if (!data.bottom) { 51 | _this.bottomSize = _this.topSize; 52 | } 53 | else { 54 | _this.bottomSize = data.bottom; 55 | } 56 | _this.loadTexture(new Phaser.RenderTexture(_this.game, _this.localWidth, _this.localHeight)); 57 | _this.resize(width, height); 58 | return _this; 59 | } 60 | NineSlice.prototype.renderTexture = function () { 61 | this.texture.resize(this.localWidth, this.localHeight, true); 62 | var textureXs = [0, this.leftSize, this.baseFrame.width - this.rightSize, this.baseFrame.width]; 63 | var textureYs = [0, this.topSize, this.baseFrame.height - this.bottomSize, this.baseFrame.height]; 64 | var finalXs = [0, this.leftSize, this.localWidth - this.rightSize, this.localWidth]; 65 | var finalYs = [0, this.topSize, this.localHeight - this.bottomSize, this.localHeight]; 66 | this.texture.clear(); 67 | for (var yi = 0; yi < 3; yi++) { 68 | for (var xi = 0; xi < 3; xi++) { 69 | var s = this.createTexturePart(textureXs[xi], textureYs[yi], textureXs[xi + 1] - textureXs[xi], textureYs[yi + 1] - textureYs[yi]); 70 | s.width = finalXs[xi + 1] - finalXs[xi]; 71 | s.height = finalYs[yi + 1] - finalYs[yi]; 72 | this.texture.renderXY(s, finalXs[xi], finalYs[yi]); 73 | } 74 | } 75 | }; 76 | NineSlice.prototype.resize = function (width, height) { 77 | this.localWidth = width; 78 | this.localHeight = height; 79 | this.renderTexture(); 80 | }; 81 | NineSlice.prototype.destroy = function () { 82 | var args = []; 83 | for (var _i = 0; _i < arguments.length; _i++) { 84 | args[_i] = arguments[_i]; 85 | } 86 | _super.prototype.destroy.call(this, args[0]); 87 | this.texture.destroy(true); 88 | this.texture = null; 89 | this.baseTexture = null; 90 | this.baseFrame = null; 91 | }; 92 | NineSlice.prototype.createTexturePart = function (x, y, width, height) { 93 | var frame = new PIXI.Rectangle(this.baseFrame.x + this.texture.frame.x + x, this.baseFrame.y + this.texture.frame.y + y, Math.max(width, 1), Math.max(height, 1)); 94 | return new Phaser.Sprite(this.game, 0, 0, new PIXI.Texture(this.baseTexture, frame)); 95 | }; 96 | return NineSlice; 97 | }(Phaser.Sprite)); 98 | PhaserNineSlice.NineSlice = NineSlice; 99 | })(PhaserNineSlice || (PhaserNineSlice = {})); 100 | var PhaserNineSlice; 101 | (function (PhaserNineSlice) { 102 | var Plugin = (function (_super) { 103 | __extends(Plugin, _super); 104 | function Plugin(game, parent) { 105 | var _this = _super.call(this, game, parent) || this; 106 | _this.addNineSliceCache(); 107 | _this.addNineSliceFactory(); 108 | _this.addNineSliceLoader(); 109 | return _this; 110 | } 111 | Plugin.prototype.addNineSliceLoader = function () { 112 | Phaser.Loader.prototype.nineSlice = function (key, url, top, left, right, bottom) { 113 | var cacheData = { 114 | top: top 115 | }; 116 | if (left) { 117 | cacheData.left = left; 118 | } 119 | if (right) { 120 | cacheData.right = right; 121 | } 122 | if (bottom) { 123 | cacheData.bottom = bottom; 124 | } 125 | this.addToFileList('image', key, url); 126 | this.game.cache.addNineSlice(key, cacheData); 127 | }; 128 | }; 129 | Plugin.prototype.addNineSliceFactory = function () { 130 | Phaser.GameObjectFactory.prototype.nineSlice = function (x, y, key, frame, width, height, group) { 131 | if (group === undefined) { 132 | group = this.world; 133 | } 134 | var nineSliceObject = new PhaserNineSlice.NineSlice(this.game, x, y, key, frame, width, height); 135 | return group.add(nineSliceObject); 136 | }; 137 | Phaser.GameObjectCreator.prototype.nineSlice = function (x, y, key, frame, width, height) { 138 | return new PhaserNineSlice.NineSlice(this.game, x, y, key, frame, width, height); 139 | }; 140 | }; 141 | Plugin.prototype.addNineSliceCache = function () { 142 | Phaser.Cache.prototype.nineSlice = {}; 143 | Phaser.Cache.prototype.addNineSlice = function (key, data) { 144 | this.nineSlice[key] = data; 145 | }; 146 | Phaser.Cache.prototype.getNineSlice = function (key) { 147 | var data = this.nineSlice[key]; 148 | if (undefined === data) { 149 | console.warn('Phaser.Cache.getNineSlice: Key "' + key + '" not found in Cache.'); 150 | } 151 | return data; 152 | }; 153 | }; 154 | return Plugin; 155 | }(Phaser.Plugin)); 156 | PhaserNineSlice.Plugin = Plugin; 157 | })(PhaserNineSlice || (PhaserNineSlice = {})); 158 | //# sourceMappingURL=phaser-nineslice.js.map -------------------------------------------------------------------------------- /build/phaser-nineslice.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"phaser-nineslice.js","sourceRoot":"","sources":["../ts/NineSlice.ts","../ts/Plugin.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /build/phaser-nineslice.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * phaser-nineslice - version 2.0.1 3 | * NineSlice plugin for Phaser.io! 4 | * 5 | * Azerion 6 | * Build at 19-03-2019 7 | * Released under MIT License 8 | */ 9 | 10 | var __extends=this&&this.__extends||function(){var a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,b){a.__proto__=b}||function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])};return function(b,c){function d(){this.constructor=b}a(b,c),b.prototype=null===c?Object.create(c):(d.prototype=c.prototype,new d)}}(),PhaserNineSlice;!function(a){var b=function(a){function b(b,c,d,e,f,g,h,i){var j=a.call(this,b,c,d,e,f)||this;return j.baseTexture=j.texture.baseTexture,j.baseFrame=j.texture.frame,null===f||i?i||(i=b.cache.getNineSlice(e)):i=b.cache.getNineSlice(f),void 0===i?j:(j.topSize=i.top,i.left?j.leftSize=i.left:j.leftSize=j.topSize,i.right?j.rightSize=i.right:j.rightSize=j.leftSize,i.bottom?j.bottomSize=i.bottom:j.bottomSize=j.topSize,j.loadTexture(new Phaser.RenderTexture(j.game,j.localWidth,j.localHeight)),j.resize(g,h),j)}return __extends(b,a),b.prototype.renderTexture=function(){this.texture.resize(this.localWidth,this.localHeight,!0);var a=[0,this.leftSize,this.baseFrame.width-this.rightSize,this.baseFrame.width],b=[0,this.topSize,this.baseFrame.height-this.bottomSize,this.baseFrame.height],c=[0,this.leftSize,this.localWidth-this.rightSize,this.localWidth],d=[0,this.topSize,this.localHeight-this.bottomSize,this.localHeight];this.texture.clear();for(var e=0;e<3;e++)for(var f=0;f<3;f++){var g=this.createTexturePart(a[f],b[e],a[f+1]-a[f],b[e+1]-b[e]);g.width=c[f+1]-c[f],g.height=d[e+1]-d[e],this.texture.renderXY(g,c[f],d[e])}},b.prototype.resize=function(a,b){this.localWidth=a,this.localHeight=b,this.renderTexture()},b.prototype.destroy=function(){for(var b=[],c=0;c 2 | 3 | 4 | fileFormatVersion 5 | 4 6 | texturePackerVersion 7 | 4.3.1 8 | fileName 9 | /home/zale/dev/tools/phaser-nineslice/example/images/atlas.tps 10 | autoSDSettings 11 | 12 | 13 | scale 14 | 1 15 | extension 16 | 17 | spriteFilter 18 | 19 | acceptFractionalValues 20 | 21 | maxTextureSize 22 | 23 | width 24 | -1 25 | height 26 | -1 27 | 28 | 29 | 30 | allowRotation 31 | 32 | shapeDebug 33 | 34 | dpi 35 | 72 36 | dataFormat 37 | phaser-json-array 38 | textureFileName 39 | 40 | flipPVR 41 | 42 | pvrCompressionQuality 43 | PVR_QUALITY_NORMAL 44 | atfCompressData 45 | 46 | mipMapMinSize 47 | 32768 48 | etc1CompressionQuality 49 | ETC1_QUALITY_LOW_PERCEPTUAL 50 | etc2CompressionQuality 51 | ETC2_QUALITY_LOW_PERCEPTUAL 52 | dxtCompressionMode 53 | DXT_PERCEPTUAL 54 | jxrColorFormat 55 | JXR_YUV444 56 | jxrTrimFlexBits 57 | 0 58 | jxrCompressionLevel 59 | 0 60 | ditherType 61 | NearestNeighbour 62 | backgroundColor 63 | 0 64 | libGdx 65 | 66 | filtering 67 | 68 | x 69 | Linear 70 | y 71 | Linear 72 | 73 | 74 | shapePadding 75 | 0 76 | jpgQuality 77 | 80 78 | pngOptimizationLevel 79 | 1 80 | webpQualityLevel 81 | 101 82 | textureSubPath 83 | 84 | atfFormats 85 | 86 | textureFormat 87 | png 88 | borderPadding 89 | 0 90 | maxTextureSize 91 | 92 | width 93 | 2048 94 | height 95 | 2048 96 | 97 | fixedTextureSize 98 | 99 | width 100 | -1 101 | height 102 | -1 103 | 104 | algorithmSettings 105 | 106 | algorithm 107 | MaxRects 108 | freeSizeMode 109 | Best 110 | sizeConstraints 111 | AnySize 112 | forceSquared 113 | 114 | maxRects 115 | 116 | heuristic 117 | Best 118 | 119 | basic 120 | 121 | sortBy 122 | Best 123 | order 124 | Ascending 125 | 126 | polygon 127 | 128 | alignToGrid 129 | 1 130 | 131 | 132 | andEngine 133 | 134 | minFilter 135 | Linear 136 | packageName 137 | Texture 138 | wrap 139 | 140 | s 141 | Clamp 142 | t 143 | Clamp 144 | 145 | magFilter 146 | MagLinear 147 | 148 | dataFileNames 149 | 150 | data 151 | 152 | name 153 | atlas.json 154 | 155 | 156 | multiPack 157 | 158 | forceIdenticalLayout 159 | 160 | outputFormat 161 | RGBA8888 162 | alphaHandling 163 | ClearTransparentPixels 164 | contentProtection 165 | 166 | key 167 | 168 | 169 | autoAliasEnabled 170 | 171 | trimSpriteNames 172 | 173 | prependSmartFolderName 174 | 175 | globalSpriteSettings 176 | 177 | scale 178 | 1 179 | scaleMode 180 | Smooth 181 | extrude 182 | 1 183 | trimThreshold 184 | 1 185 | trimMargin 186 | 1 187 | trimMode 188 | Trim 189 | tracerTolerance 190 | 200 191 | heuristicMask 192 | 193 | defaultPivotPoint 194 | 0.5,0.5 195 | writePivotPoints 196 | 197 | 198 | individualSpriteSettings 199 | 200 | btn_clean.png 201 | 202 | pivotPoint 203 | 0.5,0.5 204 | scale9Enabled 205 | 206 | scale9Borders 207 | 15,19,31,38 208 | scale9Paddings 209 | 15,19,31,38 210 | scale9FromFile 211 | 212 | 213 | inputfield.png 214 | 215 | pivotPoint 216 | 0.5,0.5 217 | scale9Enabled 218 | 219 | scale9Borders 220 | 13,16,26,33 221 | scale9Paddings 222 | 13,16,26,33 223 | scale9FromFile 224 | 225 | 226 | 227 | fileList 228 | 229 | btn_clean.png 230 | inputfield.png 231 | 232 | ignoreFileList 233 | 234 | replaceList 235 | 236 | ignoredWarnings 237 | 238 | commonDivisorX 239 | 1 240 | commonDivisorY 241 | 1 242 | packNormalMaps 243 | 244 | autodetectNormalMaps 245 | 246 | normalMapFilter 247 | 248 | normalMapSuffix 249 | 250 | normalMapSheetFileName 251 | 252 | exporterProperties 253 | 254 | 255 | 256 | -------------------------------------------------------------------------------- /example/images/btn_clean.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azerion/phaser-nineslice/ca4d8b7c8546e57c08fb9d2d9f730ef9c31ae13c/example/images/btn_clean.png -------------------------------------------------------------------------------- /example/images/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azerion/phaser-nineslice/ca4d8b7c8546e57c08fb9d2d9f730ef9c31ae13c/example/images/image.png -------------------------------------------------------------------------------- /example/images/inputfield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azerion/phaser-nineslice/ca4d8b7c8546e57c08fb9d2d9f730ef9c31ae13c/example/images/inputfield.png -------------------------------------------------------------------------------- /example/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Example for Phaser Nine Slice 5 | 6 | 7 | 8 | 9 | 10 | 11 | 100 | 101 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@azerion/phaser-nineslice", 3 | "version": "2.0.1", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "abbrev": { 8 | "version": "1.0.9", 9 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", 10 | "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", 11 | "dev": true 12 | }, 13 | "accepts": { 14 | "version": "1.3.3", 15 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", 16 | "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", 17 | "dev": true, 18 | "requires": { 19 | "mime-types": "~2.1.11", 20 | "negotiator": "0.6.1" 21 | } 22 | }, 23 | "align-text": { 24 | "version": "0.1.4", 25 | "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", 26 | "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", 27 | "dev": true, 28 | "requires": { 29 | "kind-of": "^3.0.2", 30 | "longest": "^1.0.1", 31 | "repeat-string": "^1.5.2" 32 | } 33 | }, 34 | "ansi-green": { 35 | "version": "0.1.1", 36 | "resolved": false, 37 | "integrity": "sha1-il2al55FjVfEDjNYCzc5C44Q0Pc=", 38 | "dev": true, 39 | "requires": { 40 | "ansi-wrap": "0.1.0" 41 | } 42 | }, 43 | "ansi-regex": { 44 | "version": "2.1.1", 45 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 46 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 47 | "dev": true 48 | }, 49 | "ansi-styles": { 50 | "version": "2.2.1", 51 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 52 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 53 | "dev": true 54 | }, 55 | "ansi-wrap": { 56 | "version": "0.1.0", 57 | "resolved": false, 58 | "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", 59 | "dev": true 60 | }, 61 | "anymatch": { 62 | "version": "1.3.0", 63 | "resolved": false, 64 | "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", 65 | "dev": true, 66 | "requires": { 67 | "arrify": "^1.0.0", 68 | "micromatch": "^2.1.5" 69 | } 70 | }, 71 | "argparse": { 72 | "version": "1.0.9", 73 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", 74 | "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", 75 | "dev": true, 76 | "requires": { 77 | "sprintf-js": "~1.0.2" 78 | } 79 | }, 80 | "arr-diff": { 81 | "version": "2.0.0", 82 | "resolved": false, 83 | "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", 84 | "dev": true, 85 | "requires": { 86 | "arr-flatten": "^1.0.1" 87 | } 88 | }, 89 | "arr-flatten": { 90 | "version": "1.0.1", 91 | "resolved": false, 92 | "integrity": "sha1-5f/lTUXhnzLyFukeuZyM6JK7YEs=", 93 | "dev": true 94 | }, 95 | "array-find-index": { 96 | "version": "1.0.2", 97 | "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", 98 | "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", 99 | "dev": true 100 | }, 101 | "array-unique": { 102 | "version": "0.2.1", 103 | "resolved": false, 104 | "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", 105 | "dev": true 106 | }, 107 | "arrify": { 108 | "version": "1.0.1", 109 | "resolved": false, 110 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", 111 | "dev": true 112 | }, 113 | "async": { 114 | "version": "1.5.2", 115 | "resolved": false, 116 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", 117 | "dev": true 118 | }, 119 | "async-each": { 120 | "version": "1.0.1", 121 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", 122 | "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", 123 | "dev": true 124 | }, 125 | "balanced-match": { 126 | "version": "0.3.0", 127 | "resolved": false, 128 | "integrity": "sha1-qRzdHr7xqGZZ5w/03vAWJfwtZ1Y=", 129 | "dev": true 130 | }, 131 | "basic-auth": { 132 | "version": "1.0.4", 133 | "resolved": false, 134 | "integrity": "sha1-Awk1sB3nyblKgksp8/zLdQ06UpA=", 135 | "dev": true 136 | }, 137 | "batch": { 138 | "version": "0.5.3", 139 | "resolved": false, 140 | "integrity": "sha1-PzQU84AyF0O/wQQvmoP/HVgk1GQ=", 141 | "dev": true 142 | }, 143 | "binary-extensions": { 144 | "version": "1.4.0", 145 | "resolved": false, 146 | "integrity": "sha1-1zPMtiiYbXsybYhlbg3b06rDUbc=", 147 | "dev": true 148 | }, 149 | "brace-expansion": { 150 | "version": "1.1.2", 151 | "resolved": false, 152 | "integrity": "sha1-8hRF0EiLZY4nce/YcO/1HfKfBO8=", 153 | "dev": true, 154 | "requires": { 155 | "balanced-match": "^0.3.0", 156 | "concat-map": "0.0.1" 157 | } 158 | }, 159 | "braces": { 160 | "version": "1.8.3", 161 | "resolved": false, 162 | "integrity": "sha1-NdTn3aYysz4hXTioqc9DKcnHXSw=", 163 | "dev": true, 164 | "requires": { 165 | "expand-range": "^1.8.1", 166 | "preserve": "^0.2.0", 167 | "repeat-element": "^1.1.2" 168 | } 169 | }, 170 | "builtin-modules": { 171 | "version": "1.1.1", 172 | "resolved": false, 173 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", 174 | "dev": true 175 | }, 176 | "camelcase": { 177 | "version": "2.1.1", 178 | "resolved": false, 179 | "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", 180 | "dev": true 181 | }, 182 | "camelcase-keys": { 183 | "version": "2.1.0", 184 | "resolved": false, 185 | "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", 186 | "dev": true, 187 | "requires": { 188 | "camelcase": "^2.0.0", 189 | "map-obj": "^1.0.0" 190 | } 191 | }, 192 | "center-align": { 193 | "version": "0.1.3", 194 | "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", 195 | "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", 196 | "dev": true, 197 | "requires": { 198 | "align-text": "^0.1.3", 199 | "lazy-cache": "^1.0.3" 200 | } 201 | }, 202 | "chalk": { 203 | "version": "1.1.3", 204 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 205 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 206 | "dev": true, 207 | "requires": { 208 | "ansi-styles": "^2.2.1", 209 | "escape-string-regexp": "^1.0.2", 210 | "has-ansi": "^2.0.0", 211 | "strip-ansi": "^3.0.0", 212 | "supports-color": "^2.0.0" 213 | } 214 | }, 215 | "chokidar": { 216 | "version": "1.7.0", 217 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", 218 | "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", 219 | "dev": true, 220 | "requires": { 221 | "anymatch": "^1.3.0", 222 | "async-each": "^1.0.0", 223 | "fsevents": "^1.0.0", 224 | "glob-parent": "^2.0.0", 225 | "inherits": "^2.0.1", 226 | "is-binary-path": "^1.0.0", 227 | "is-glob": "^2.0.0", 228 | "path-is-absolute": "^1.0.0", 229 | "readdirp": "^2.0.0" 230 | } 231 | }, 232 | "cliui": { 233 | "version": "2.1.0", 234 | "resolved": false, 235 | "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", 236 | "dev": true, 237 | "requires": { 238 | "center-align": "^0.1.1", 239 | "right-align": "^0.1.1", 240 | "wordwrap": "0.0.2" 241 | } 242 | }, 243 | "coffee-script": { 244 | "version": "1.10.0", 245 | "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.10.0.tgz", 246 | "integrity": "sha1-EpOLz5vhlI+gBvkuDEyegXBRCMA=", 247 | "dev": true 248 | }, 249 | "colors": { 250 | "version": "1.1.2", 251 | "resolved": false, 252 | "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", 253 | "dev": true 254 | }, 255 | "concat-map": { 256 | "version": "0.0.1", 257 | "resolved": false, 258 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 259 | "dev": true 260 | }, 261 | "connect": { 262 | "version": "3.5.0", 263 | "resolved": "https://registry.npmjs.org/connect/-/connect-3.5.0.tgz", 264 | "integrity": "sha1-s1dSWgtMH1BZnNmD4dnv7qlncZg=", 265 | "dev": true, 266 | "requires": { 267 | "debug": "~2.2.0", 268 | "finalhandler": "0.5.0", 269 | "parseurl": "~1.3.1", 270 | "utils-merge": "1.0.0" 271 | } 272 | }, 273 | "connect-livereload": { 274 | "version": "0.5.4", 275 | "resolved": false, 276 | "integrity": "sha1-gBV9E3HJ83zBQDmrGJWXDRGdw7w=", 277 | "dev": true 278 | }, 279 | "core-util-is": { 280 | "version": "1.0.2", 281 | "resolved": false, 282 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 283 | "dev": true 284 | }, 285 | "csproj2ts": { 286 | "version": "0.0.8", 287 | "resolved": "https://registry.npmjs.org/csproj2ts/-/csproj2ts-0.0.8.tgz", 288 | "integrity": "sha1-nRxxniDELM6MTeKQCO/DVUn9Em8=", 289 | "dev": true, 290 | "requires": { 291 | "es6-promise": "^4.0.5", 292 | "lodash": "^4.17.4", 293 | "semver": "^5.3.0", 294 | "xml2js": "^0.4.17" 295 | }, 296 | "dependencies": { 297 | "es6-promise": { 298 | "version": "4.0.5", 299 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.0.5.tgz", 300 | "integrity": "sha1-eILzCt3lskDM+n99eMVIMwlRrkI=", 301 | "dev": true 302 | }, 303 | "lodash": { 304 | "version": "4.17.4", 305 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 306 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", 307 | "dev": true 308 | } 309 | } 310 | }, 311 | "currently-unhandled": { 312 | "version": "0.4.1", 313 | "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", 314 | "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", 315 | "dev": true, 316 | "requires": { 317 | "array-find-index": "^1.0.1" 318 | } 319 | }, 320 | "dateformat": { 321 | "version": "1.0.12", 322 | "resolved": false, 323 | "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", 324 | "dev": true, 325 | "requires": { 326 | "get-stdin": "^4.0.1", 327 | "meow": "^3.3.0" 328 | } 329 | }, 330 | "debug": { 331 | "version": "2.2.0", 332 | "resolved": false, 333 | "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", 334 | "dev": true, 335 | "requires": { 336 | "ms": "0.7.1" 337 | } 338 | }, 339 | "decamelize": { 340 | "version": "1.2.0", 341 | "resolved": false, 342 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 343 | "dev": true 344 | }, 345 | "depd": { 346 | "version": "1.1.0", 347 | "resolved": false, 348 | "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=", 349 | "dev": true 350 | }, 351 | "destroy": { 352 | "version": "1.0.4", 353 | "resolved": false, 354 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", 355 | "dev": true 356 | }, 357 | "detect-indent": { 358 | "version": "4.0.0", 359 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", 360 | "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", 361 | "dev": true, 362 | "requires": { 363 | "repeating": "^2.0.0" 364 | } 365 | }, 366 | "detect-newline": { 367 | "version": "2.1.0", 368 | "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", 369 | "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", 370 | "dev": true 371 | }, 372 | "duplexer": { 373 | "version": "0.1.1", 374 | "resolved": false, 375 | "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", 376 | "dev": true 377 | }, 378 | "ee-first": { 379 | "version": "1.1.1", 380 | "resolved": false, 381 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", 382 | "dev": true 383 | }, 384 | "encodeurl": { 385 | "version": "1.0.1", 386 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", 387 | "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", 388 | "dev": true 389 | }, 390 | "error-ex": { 391 | "version": "1.3.0", 392 | "resolved": false, 393 | "integrity": "sha1-5ntD8+gsluo6WE/+4Ln8MyXYAtk=", 394 | "dev": true, 395 | "requires": { 396 | "is-arrayish": "^0.2.1" 397 | } 398 | }, 399 | "es6-promise": { 400 | "version": "0.1.2", 401 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-0.1.2.tgz", 402 | "integrity": "sha1-8RLCn+paCZhTn8tqL9IUQ9KPBfc=", 403 | "dev": true 404 | }, 405 | "escape-html": { 406 | "version": "1.0.3", 407 | "resolved": false, 408 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", 409 | "dev": true 410 | }, 411 | "escape-string-regexp": { 412 | "version": "1.0.4", 413 | "resolved": false, 414 | "integrity": "sha1-uF5nm0b3LQP7voo79yWdU1whti8=", 415 | "dev": true 416 | }, 417 | "esprima": { 418 | "version": "2.7.3", 419 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", 420 | "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", 421 | "dev": true 422 | }, 423 | "etag": { 424 | "version": "1.7.0", 425 | "resolved": false, 426 | "integrity": "sha1-A9MLX2fdbmMtKUXTDWZScxo01dg=", 427 | "dev": true 428 | }, 429 | "eventemitter2": { 430 | "version": "0.4.14", 431 | "resolved": false, 432 | "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", 433 | "dev": true 434 | }, 435 | "exit": { 436 | "version": "0.1.2", 437 | "resolved": false, 438 | "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", 439 | "dev": true 440 | }, 441 | "expand-brackets": { 442 | "version": "0.1.4", 443 | "resolved": false, 444 | "integrity": "sha1-eXueSEEBIF9BjOyuxjEsEy9R4q4=", 445 | "dev": true 446 | }, 447 | "expand-range": { 448 | "version": "1.8.1", 449 | "resolved": false, 450 | "integrity": "sha1-rL1j5W79kTlyK3VfCZudtawfM/Y=", 451 | "dev": true, 452 | "requires": { 453 | "fill-range": "^2.1.0" 454 | } 455 | }, 456 | "extglob": { 457 | "version": "0.3.1", 458 | "resolved": false, 459 | "integrity": "sha1-TzEkHA3dyQrIxynLbXyHLe53yPU=", 460 | "dev": true, 461 | "requires": { 462 | "ansi-green": "^0.1.1", 463 | "is-extglob": "^1.0.0", 464 | "success-symbol": "^0.1.0" 465 | } 466 | }, 467 | "faye-websocket": { 468 | "version": "0.4.4", 469 | "resolved": false, 470 | "integrity": "sha1-wUxbO/FNdBf/v9mQwKdJXNnzN7w=", 471 | "dev": true 472 | }, 473 | "figures": { 474 | "version": "1.7.0", 475 | "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", 476 | "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", 477 | "dev": true, 478 | "requires": { 479 | "escape-string-regexp": "^1.0.5", 480 | "object-assign": "^4.1.0" 481 | }, 482 | "dependencies": { 483 | "escape-string-regexp": { 484 | "version": "1.0.5", 485 | "resolved": false, 486 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 487 | "dev": true 488 | } 489 | } 490 | }, 491 | "filename-regex": { 492 | "version": "2.0.0", 493 | "resolved": false, 494 | "integrity": "sha1-mW4+gEebmLmJfxWopYs9CE6SZ3U=", 495 | "dev": true 496 | }, 497 | "fill-range": { 498 | "version": "2.2.3", 499 | "resolved": false, 500 | "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", 501 | "dev": true, 502 | "requires": { 503 | "is-number": "^2.1.0", 504 | "isobject": "^2.0.0", 505 | "randomatic": "^1.1.3", 506 | "repeat-element": "^1.1.2", 507 | "repeat-string": "^1.5.2" 508 | } 509 | }, 510 | "finalhandler": { 511 | "version": "0.5.0", 512 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.5.0.tgz", 513 | "integrity": "sha1-6VCKvs6bbbqHGmlCodeRG5GRGsc=", 514 | "dev": true, 515 | "requires": { 516 | "debug": "~2.2.0", 517 | "escape-html": "~1.0.3", 518 | "on-finished": "~2.3.0", 519 | "statuses": "~1.3.0", 520 | "unpipe": "~1.0.0" 521 | } 522 | }, 523 | "find-up": { 524 | "version": "1.1.2", 525 | "resolved": false, 526 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", 527 | "dev": true, 528 | "requires": { 529 | "path-exists": "^2.0.0", 530 | "pinkie-promise": "^2.0.0" 531 | } 532 | }, 533 | "findup-sync": { 534 | "version": "0.3.0", 535 | "resolved": false, 536 | "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", 537 | "dev": true, 538 | "requires": { 539 | "glob": "~5.0.0" 540 | }, 541 | "dependencies": { 542 | "glob": { 543 | "version": "5.0.15", 544 | "resolved": false, 545 | "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", 546 | "dev": true, 547 | "requires": { 548 | "inflight": "^1.0.4", 549 | "inherits": "2", 550 | "minimatch": "2 || 3", 551 | "once": "^1.3.0", 552 | "path-is-absolute": "^1.0.0" 553 | } 554 | } 555 | } 556 | }, 557 | "for-in": { 558 | "version": "0.1.4", 559 | "resolved": false, 560 | "integrity": "sha1-n1z3tP/H4a5lkaTpexd6pZ1w+y4=", 561 | "dev": true 562 | }, 563 | "for-own": { 564 | "version": "0.1.3", 565 | "resolved": false, 566 | "integrity": "sha1-YGREzed8LwoRCIFp4uNU6vVudP4=", 567 | "dev": true, 568 | "requires": { 569 | "for-in": "^0.1.4" 570 | } 571 | }, 572 | "fresh": { 573 | "version": "0.3.0", 574 | "resolved": false, 575 | "integrity": "sha1-ZR+DjiJCTnVm3hYdg1jKoZn4PU8=", 576 | "dev": true 577 | }, 578 | "fs.realpath": { 579 | "version": "1.0.0", 580 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 581 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 582 | "dev": true 583 | }, 584 | "fsevents": { 585 | "version": "1.1.2", 586 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", 587 | "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", 588 | "dev": true, 589 | "optional": true, 590 | "requires": { 591 | "nan": "^2.3.0", 592 | "node-pre-gyp": "^0.6.36" 593 | }, 594 | "dependencies": { 595 | "abbrev": { 596 | "version": "1.1.0", 597 | "bundled": true, 598 | "dev": true, 599 | "optional": true 600 | }, 601 | "ajv": { 602 | "version": "4.11.8", 603 | "bundled": true, 604 | "dev": true, 605 | "optional": true, 606 | "requires": { 607 | "co": "^4.6.0", 608 | "json-stable-stringify": "^1.0.1" 609 | } 610 | }, 611 | "ansi-regex": { 612 | "version": "2.1.1", 613 | "bundled": true, 614 | "dev": true, 615 | "optional": true 616 | }, 617 | "aproba": { 618 | "version": "1.1.1", 619 | "bundled": true, 620 | "dev": true, 621 | "optional": true 622 | }, 623 | "are-we-there-yet": { 624 | "version": "1.1.4", 625 | "bundled": true, 626 | "dev": true, 627 | "optional": true, 628 | "requires": { 629 | "delegates": "^1.0.0", 630 | "readable-stream": "^2.0.6" 631 | } 632 | }, 633 | "asn1": { 634 | "version": "0.2.3", 635 | "bundled": true, 636 | "dev": true, 637 | "optional": true 638 | }, 639 | "assert-plus": { 640 | "version": "0.2.0", 641 | "bundled": true, 642 | "dev": true, 643 | "optional": true 644 | }, 645 | "asynckit": { 646 | "version": "0.4.0", 647 | "bundled": true, 648 | "dev": true, 649 | "optional": true 650 | }, 651 | "aws-sign2": { 652 | "version": "0.6.0", 653 | "bundled": true, 654 | "dev": true, 655 | "optional": true 656 | }, 657 | "aws4": { 658 | "version": "1.6.0", 659 | "bundled": true, 660 | "dev": true, 661 | "optional": true 662 | }, 663 | "balanced-match": { 664 | "version": "0.4.2", 665 | "bundled": true, 666 | "dev": true, 667 | "optional": true 668 | }, 669 | "bcrypt-pbkdf": { 670 | "version": "1.0.1", 671 | "bundled": true, 672 | "dev": true, 673 | "optional": true, 674 | "requires": { 675 | "tweetnacl": "^0.14.3" 676 | } 677 | }, 678 | "block-stream": { 679 | "version": "0.0.9", 680 | "bundled": true, 681 | "dev": true, 682 | "optional": true, 683 | "requires": { 684 | "inherits": "~2.0.0" 685 | } 686 | }, 687 | "boom": { 688 | "version": "2.10.1", 689 | "bundled": true, 690 | "dev": true, 691 | "optional": true, 692 | "requires": { 693 | "hoek": "2.x.x" 694 | } 695 | }, 696 | "brace-expansion": { 697 | "version": "1.1.7", 698 | "bundled": true, 699 | "dev": true, 700 | "optional": true, 701 | "requires": { 702 | "balanced-match": "^0.4.1", 703 | "concat-map": "0.0.1" 704 | } 705 | }, 706 | "buffer-shims": { 707 | "version": "1.0.0", 708 | "bundled": true, 709 | "dev": true, 710 | "optional": true 711 | }, 712 | "caseless": { 713 | "version": "0.12.0", 714 | "bundled": true, 715 | "dev": true, 716 | "optional": true 717 | }, 718 | "co": { 719 | "version": "4.6.0", 720 | "bundled": true, 721 | "dev": true, 722 | "optional": true 723 | }, 724 | "code-point-at": { 725 | "version": "1.1.0", 726 | "bundled": true, 727 | "dev": true, 728 | "optional": true 729 | }, 730 | "combined-stream": { 731 | "version": "1.0.5", 732 | "bundled": true, 733 | "dev": true, 734 | "optional": true, 735 | "requires": { 736 | "delayed-stream": "~1.0.0" 737 | } 738 | }, 739 | "concat-map": { 740 | "version": "0.0.1", 741 | "bundled": true, 742 | "dev": true, 743 | "optional": true 744 | }, 745 | "console-control-strings": { 746 | "version": "1.1.0", 747 | "bundled": true, 748 | "dev": true, 749 | "optional": true 750 | }, 751 | "core-util-is": { 752 | "version": "1.0.2", 753 | "bundled": true, 754 | "dev": true, 755 | "optional": true 756 | }, 757 | "cryptiles": { 758 | "version": "2.0.5", 759 | "bundled": true, 760 | "dev": true, 761 | "optional": true, 762 | "requires": { 763 | "boom": "2.x.x" 764 | } 765 | }, 766 | "dashdash": { 767 | "version": "1.14.1", 768 | "bundled": true, 769 | "dev": true, 770 | "optional": true, 771 | "requires": { 772 | "assert-plus": "^1.0.0" 773 | }, 774 | "dependencies": { 775 | "assert-plus": { 776 | "version": "1.0.0", 777 | "bundled": true, 778 | "dev": true, 779 | "optional": true 780 | } 781 | } 782 | }, 783 | "debug": { 784 | "version": "2.6.8", 785 | "bundled": true, 786 | "dev": true, 787 | "optional": true, 788 | "requires": { 789 | "ms": "2.0.0" 790 | } 791 | }, 792 | "deep-extend": { 793 | "version": "0.4.2", 794 | "bundled": true, 795 | "dev": true, 796 | "optional": true 797 | }, 798 | "delayed-stream": { 799 | "version": "1.0.0", 800 | "bundled": true, 801 | "dev": true, 802 | "optional": true 803 | }, 804 | "delegates": { 805 | "version": "1.0.0", 806 | "bundled": true, 807 | "dev": true, 808 | "optional": true 809 | }, 810 | "ecc-jsbn": { 811 | "version": "0.1.1", 812 | "bundled": true, 813 | "dev": true, 814 | "optional": true, 815 | "requires": { 816 | "jsbn": "~0.1.0" 817 | } 818 | }, 819 | "extend": { 820 | "version": "3.0.1", 821 | "bundled": true, 822 | "dev": true, 823 | "optional": true 824 | }, 825 | "extsprintf": { 826 | "version": "1.0.2", 827 | "bundled": true, 828 | "dev": true, 829 | "optional": true 830 | }, 831 | "forever-agent": { 832 | "version": "0.6.1", 833 | "bundled": true, 834 | "dev": true, 835 | "optional": true 836 | }, 837 | "form-data": { 838 | "version": "2.1.4", 839 | "bundled": true, 840 | "dev": true, 841 | "optional": true, 842 | "requires": { 843 | "asynckit": "^0.4.0", 844 | "combined-stream": "^1.0.5", 845 | "mime-types": "^2.1.12" 846 | } 847 | }, 848 | "fs.realpath": { 849 | "version": "1.0.0", 850 | "bundled": true, 851 | "dev": true, 852 | "optional": true 853 | }, 854 | "fstream": { 855 | "version": "1.0.11", 856 | "bundled": true, 857 | "dev": true, 858 | "optional": true, 859 | "requires": { 860 | "graceful-fs": "^4.1.2", 861 | "inherits": "~2.0.0", 862 | "mkdirp": ">=0.5 0", 863 | "rimraf": "2" 864 | } 865 | }, 866 | "fstream-ignore": { 867 | "version": "1.0.5", 868 | "bundled": true, 869 | "dev": true, 870 | "optional": true, 871 | "requires": { 872 | "fstream": "^1.0.0", 873 | "inherits": "2", 874 | "minimatch": "^3.0.0" 875 | } 876 | }, 877 | "gauge": { 878 | "version": "2.7.4", 879 | "bundled": true, 880 | "dev": true, 881 | "optional": true, 882 | "requires": { 883 | "aproba": "^1.0.3", 884 | "console-control-strings": "^1.0.0", 885 | "has-unicode": "^2.0.0", 886 | "object-assign": "^4.1.0", 887 | "signal-exit": "^3.0.0", 888 | "string-width": "^1.0.1", 889 | "strip-ansi": "^3.0.1", 890 | "wide-align": "^1.1.0" 891 | } 892 | }, 893 | "getpass": { 894 | "version": "0.1.7", 895 | "bundled": true, 896 | "dev": true, 897 | "optional": true, 898 | "requires": { 899 | "assert-plus": "^1.0.0" 900 | }, 901 | "dependencies": { 902 | "assert-plus": { 903 | "version": "1.0.0", 904 | "bundled": true, 905 | "dev": true, 906 | "optional": true 907 | } 908 | } 909 | }, 910 | "glob": { 911 | "version": "7.1.2", 912 | "bundled": true, 913 | "dev": true, 914 | "optional": true, 915 | "requires": { 916 | "fs.realpath": "^1.0.0", 917 | "inflight": "^1.0.4", 918 | "inherits": "2", 919 | "minimatch": "^3.0.4", 920 | "once": "^1.3.0", 921 | "path-is-absolute": "^1.0.0" 922 | } 923 | }, 924 | "graceful-fs": { 925 | "version": "4.1.11", 926 | "bundled": true, 927 | "dev": true, 928 | "optional": true 929 | }, 930 | "har-schema": { 931 | "version": "1.0.5", 932 | "bundled": true, 933 | "dev": true, 934 | "optional": true 935 | }, 936 | "har-validator": { 937 | "version": "4.2.1", 938 | "bundled": true, 939 | "dev": true, 940 | "optional": true, 941 | "requires": { 942 | "ajv": "^4.9.1", 943 | "har-schema": "^1.0.5" 944 | } 945 | }, 946 | "has-unicode": { 947 | "version": "2.0.1", 948 | "bundled": true, 949 | "dev": true, 950 | "optional": true 951 | }, 952 | "hawk": { 953 | "version": "3.1.3", 954 | "bundled": true, 955 | "dev": true, 956 | "optional": true, 957 | "requires": { 958 | "boom": "2.x.x", 959 | "cryptiles": "2.x.x", 960 | "hoek": "2.x.x", 961 | "sntp": "1.x.x" 962 | } 963 | }, 964 | "hoek": { 965 | "version": "2.16.3", 966 | "bundled": true, 967 | "dev": true, 968 | "optional": true 969 | }, 970 | "http-signature": { 971 | "version": "1.1.1", 972 | "bundled": true, 973 | "dev": true, 974 | "optional": true, 975 | "requires": { 976 | "assert-plus": "^0.2.0", 977 | "jsprim": "^1.2.2", 978 | "sshpk": "^1.7.0" 979 | } 980 | }, 981 | "inflight": { 982 | "version": "1.0.6", 983 | "bundled": true, 984 | "dev": true, 985 | "optional": true, 986 | "requires": { 987 | "once": "^1.3.0", 988 | "wrappy": "1" 989 | } 990 | }, 991 | "inherits": { 992 | "version": "2.0.3", 993 | "bundled": true, 994 | "dev": true, 995 | "optional": true 996 | }, 997 | "ini": { 998 | "version": "1.3.4", 999 | "bundled": true, 1000 | "dev": true, 1001 | "optional": true 1002 | }, 1003 | "is-fullwidth-code-point": { 1004 | "version": "1.0.0", 1005 | "bundled": true, 1006 | "dev": true, 1007 | "optional": true, 1008 | "requires": { 1009 | "number-is-nan": "^1.0.0" 1010 | } 1011 | }, 1012 | "is-typedarray": { 1013 | "version": "1.0.0", 1014 | "bundled": true, 1015 | "dev": true, 1016 | "optional": true 1017 | }, 1018 | "isarray": { 1019 | "version": "1.0.0", 1020 | "bundled": true, 1021 | "dev": true, 1022 | "optional": true 1023 | }, 1024 | "isstream": { 1025 | "version": "0.1.2", 1026 | "bundled": true, 1027 | "dev": true, 1028 | "optional": true 1029 | }, 1030 | "jodid25519": { 1031 | "version": "1.0.2", 1032 | "bundled": true, 1033 | "dev": true, 1034 | "optional": true, 1035 | "requires": { 1036 | "jsbn": "~0.1.0" 1037 | } 1038 | }, 1039 | "jsbn": { 1040 | "version": "0.1.1", 1041 | "bundled": true, 1042 | "dev": true, 1043 | "optional": true 1044 | }, 1045 | "json-schema": { 1046 | "version": "0.2.3", 1047 | "bundled": true, 1048 | "dev": true, 1049 | "optional": true 1050 | }, 1051 | "json-stable-stringify": { 1052 | "version": "1.0.1", 1053 | "bundled": true, 1054 | "dev": true, 1055 | "optional": true, 1056 | "requires": { 1057 | "jsonify": "~0.0.0" 1058 | } 1059 | }, 1060 | "json-stringify-safe": { 1061 | "version": "5.0.1", 1062 | "bundled": true, 1063 | "dev": true, 1064 | "optional": true 1065 | }, 1066 | "jsonify": { 1067 | "version": "0.0.0", 1068 | "bundled": true, 1069 | "dev": true, 1070 | "optional": true 1071 | }, 1072 | "jsprim": { 1073 | "version": "1.4.0", 1074 | "bundled": true, 1075 | "dev": true, 1076 | "optional": true, 1077 | "requires": { 1078 | "assert-plus": "1.0.0", 1079 | "extsprintf": "1.0.2", 1080 | "json-schema": "0.2.3", 1081 | "verror": "1.3.6" 1082 | }, 1083 | "dependencies": { 1084 | "assert-plus": { 1085 | "version": "1.0.0", 1086 | "bundled": true, 1087 | "dev": true, 1088 | "optional": true 1089 | } 1090 | } 1091 | }, 1092 | "mime-db": { 1093 | "version": "1.27.0", 1094 | "bundled": true, 1095 | "dev": true, 1096 | "optional": true 1097 | }, 1098 | "mime-types": { 1099 | "version": "2.1.15", 1100 | "bundled": true, 1101 | "dev": true, 1102 | "optional": true, 1103 | "requires": { 1104 | "mime-db": "~1.27.0" 1105 | } 1106 | }, 1107 | "minimatch": { 1108 | "version": "3.0.4", 1109 | "bundled": true, 1110 | "dev": true, 1111 | "optional": true, 1112 | "requires": { 1113 | "brace-expansion": "^1.1.7" 1114 | } 1115 | }, 1116 | "minimist": { 1117 | "version": "0.0.8", 1118 | "bundled": true, 1119 | "dev": true, 1120 | "optional": true 1121 | }, 1122 | "mkdirp": { 1123 | "version": "0.5.1", 1124 | "bundled": true, 1125 | "dev": true, 1126 | "optional": true, 1127 | "requires": { 1128 | "minimist": "0.0.8" 1129 | } 1130 | }, 1131 | "ms": { 1132 | "version": "2.0.0", 1133 | "bundled": true, 1134 | "dev": true, 1135 | "optional": true 1136 | }, 1137 | "node-pre-gyp": { 1138 | "version": "0.6.36", 1139 | "bundled": true, 1140 | "dev": true, 1141 | "optional": true, 1142 | "requires": { 1143 | "mkdirp": "^0.5.1", 1144 | "nopt": "^4.0.1", 1145 | "npmlog": "^4.0.2", 1146 | "rc": "^1.1.7", 1147 | "request": "^2.81.0", 1148 | "rimraf": "^2.6.1", 1149 | "semver": "^5.3.0", 1150 | "tar": "^2.2.1", 1151 | "tar-pack": "^3.4.0" 1152 | } 1153 | }, 1154 | "nopt": { 1155 | "version": "4.0.1", 1156 | "bundled": true, 1157 | "dev": true, 1158 | "optional": true, 1159 | "requires": { 1160 | "abbrev": "1", 1161 | "osenv": "^0.1.4" 1162 | } 1163 | }, 1164 | "npmlog": { 1165 | "version": "4.1.0", 1166 | "bundled": true, 1167 | "dev": true, 1168 | "optional": true, 1169 | "requires": { 1170 | "are-we-there-yet": "~1.1.2", 1171 | "console-control-strings": "~1.1.0", 1172 | "gauge": "~2.7.3", 1173 | "set-blocking": "~2.0.0" 1174 | } 1175 | }, 1176 | "number-is-nan": { 1177 | "version": "1.0.1", 1178 | "bundled": true, 1179 | "dev": true, 1180 | "optional": true 1181 | }, 1182 | "oauth-sign": { 1183 | "version": "0.8.2", 1184 | "bundled": true, 1185 | "dev": true, 1186 | "optional": true 1187 | }, 1188 | "object-assign": { 1189 | "version": "4.1.1", 1190 | "bundled": true, 1191 | "dev": true, 1192 | "optional": true 1193 | }, 1194 | "once": { 1195 | "version": "1.4.0", 1196 | "bundled": true, 1197 | "dev": true, 1198 | "optional": true, 1199 | "requires": { 1200 | "wrappy": "1" 1201 | } 1202 | }, 1203 | "os-homedir": { 1204 | "version": "1.0.2", 1205 | "bundled": true, 1206 | "dev": true, 1207 | "optional": true 1208 | }, 1209 | "os-tmpdir": { 1210 | "version": "1.0.2", 1211 | "bundled": true, 1212 | "dev": true, 1213 | "optional": true 1214 | }, 1215 | "osenv": { 1216 | "version": "0.1.4", 1217 | "bundled": true, 1218 | "dev": true, 1219 | "optional": true, 1220 | "requires": { 1221 | "os-homedir": "^1.0.0", 1222 | "os-tmpdir": "^1.0.0" 1223 | } 1224 | }, 1225 | "path-is-absolute": { 1226 | "version": "1.0.1", 1227 | "bundled": true, 1228 | "dev": true, 1229 | "optional": true 1230 | }, 1231 | "performance-now": { 1232 | "version": "0.2.0", 1233 | "bundled": true, 1234 | "dev": true, 1235 | "optional": true 1236 | }, 1237 | "process-nextick-args": { 1238 | "version": "1.0.7", 1239 | "bundled": true, 1240 | "dev": true, 1241 | "optional": true 1242 | }, 1243 | "punycode": { 1244 | "version": "1.4.1", 1245 | "bundled": true, 1246 | "dev": true, 1247 | "optional": true 1248 | }, 1249 | "qs": { 1250 | "version": "6.4.0", 1251 | "bundled": true, 1252 | "dev": true, 1253 | "optional": true 1254 | }, 1255 | "rc": { 1256 | "version": "1.2.1", 1257 | "bundled": true, 1258 | "dev": true, 1259 | "optional": true, 1260 | "requires": { 1261 | "deep-extend": "~0.4.0", 1262 | "ini": "~1.3.0", 1263 | "minimist": "^1.2.0", 1264 | "strip-json-comments": "~2.0.1" 1265 | }, 1266 | "dependencies": { 1267 | "minimist": { 1268 | "version": "1.2.0", 1269 | "bundled": true, 1270 | "dev": true, 1271 | "optional": true 1272 | } 1273 | } 1274 | }, 1275 | "readable-stream": { 1276 | "version": "2.2.9", 1277 | "bundled": true, 1278 | "dev": true, 1279 | "optional": true, 1280 | "requires": { 1281 | "buffer-shims": "~1.0.0", 1282 | "core-util-is": "~1.0.0", 1283 | "inherits": "~2.0.1", 1284 | "isarray": "~1.0.0", 1285 | "process-nextick-args": "~1.0.6", 1286 | "string_decoder": "~1.0.0", 1287 | "util-deprecate": "~1.0.1" 1288 | } 1289 | }, 1290 | "request": { 1291 | "version": "2.81.0", 1292 | "bundled": true, 1293 | "dev": true, 1294 | "optional": true, 1295 | "requires": { 1296 | "aws-sign2": "~0.6.0", 1297 | "aws4": "^1.2.1", 1298 | "caseless": "~0.12.0", 1299 | "combined-stream": "~1.0.5", 1300 | "extend": "~3.0.0", 1301 | "forever-agent": "~0.6.1", 1302 | "form-data": "~2.1.1", 1303 | "har-validator": "~4.2.1", 1304 | "hawk": "~3.1.3", 1305 | "http-signature": "~1.1.0", 1306 | "is-typedarray": "~1.0.0", 1307 | "isstream": "~0.1.2", 1308 | "json-stringify-safe": "~5.0.1", 1309 | "mime-types": "~2.1.7", 1310 | "oauth-sign": "~0.8.1", 1311 | "performance-now": "^0.2.0", 1312 | "qs": "~6.4.0", 1313 | "safe-buffer": "^5.0.1", 1314 | "stringstream": "~0.0.4", 1315 | "tough-cookie": "~2.3.0", 1316 | "tunnel-agent": "^0.6.0", 1317 | "uuid": "^3.0.0" 1318 | } 1319 | }, 1320 | "rimraf": { 1321 | "version": "2.6.1", 1322 | "bundled": true, 1323 | "dev": true, 1324 | "optional": true, 1325 | "requires": { 1326 | "glob": "^7.0.5" 1327 | } 1328 | }, 1329 | "safe-buffer": { 1330 | "version": "5.0.1", 1331 | "bundled": true, 1332 | "dev": true, 1333 | "optional": true 1334 | }, 1335 | "semver": { 1336 | "version": "5.3.0", 1337 | "bundled": true, 1338 | "dev": true, 1339 | "optional": true 1340 | }, 1341 | "set-blocking": { 1342 | "version": "2.0.0", 1343 | "bundled": true, 1344 | "dev": true, 1345 | "optional": true 1346 | }, 1347 | "signal-exit": { 1348 | "version": "3.0.2", 1349 | "bundled": true, 1350 | "dev": true, 1351 | "optional": true 1352 | }, 1353 | "sntp": { 1354 | "version": "1.0.9", 1355 | "bundled": true, 1356 | "dev": true, 1357 | "optional": true, 1358 | "requires": { 1359 | "hoek": "2.x.x" 1360 | } 1361 | }, 1362 | "sshpk": { 1363 | "version": "1.13.0", 1364 | "bundled": true, 1365 | "dev": true, 1366 | "optional": true, 1367 | "requires": { 1368 | "asn1": "~0.2.3", 1369 | "assert-plus": "^1.0.0", 1370 | "bcrypt-pbkdf": "^1.0.0", 1371 | "dashdash": "^1.12.0", 1372 | "ecc-jsbn": "~0.1.1", 1373 | "getpass": "^0.1.1", 1374 | "jodid25519": "^1.0.0", 1375 | "jsbn": "~0.1.0", 1376 | "tweetnacl": "~0.14.0" 1377 | }, 1378 | "dependencies": { 1379 | "assert-plus": { 1380 | "version": "1.0.0", 1381 | "bundled": true, 1382 | "dev": true, 1383 | "optional": true 1384 | } 1385 | } 1386 | }, 1387 | "string-width": { 1388 | "version": "1.0.2", 1389 | "bundled": true, 1390 | "dev": true, 1391 | "optional": true, 1392 | "requires": { 1393 | "code-point-at": "^1.0.0", 1394 | "is-fullwidth-code-point": "^1.0.0", 1395 | "strip-ansi": "^3.0.0" 1396 | } 1397 | }, 1398 | "string_decoder": { 1399 | "version": "1.0.1", 1400 | "bundled": true, 1401 | "dev": true, 1402 | "optional": true, 1403 | "requires": { 1404 | "safe-buffer": "^5.0.1" 1405 | } 1406 | }, 1407 | "stringstream": { 1408 | "version": "0.0.5", 1409 | "bundled": true, 1410 | "dev": true, 1411 | "optional": true 1412 | }, 1413 | "strip-ansi": { 1414 | "version": "3.0.1", 1415 | "bundled": true, 1416 | "dev": true, 1417 | "optional": true, 1418 | "requires": { 1419 | "ansi-regex": "^2.0.0" 1420 | } 1421 | }, 1422 | "strip-json-comments": { 1423 | "version": "2.0.1", 1424 | "bundled": true, 1425 | "dev": true, 1426 | "optional": true 1427 | }, 1428 | "tar": { 1429 | "version": "2.2.1", 1430 | "bundled": true, 1431 | "dev": true, 1432 | "optional": true, 1433 | "requires": { 1434 | "block-stream": "*", 1435 | "fstream": "^1.0.2", 1436 | "inherits": "2" 1437 | } 1438 | }, 1439 | "tar-pack": { 1440 | "version": "3.4.0", 1441 | "bundled": true, 1442 | "dev": true, 1443 | "optional": true, 1444 | "requires": { 1445 | "debug": "^2.2.0", 1446 | "fstream": "^1.0.10", 1447 | "fstream-ignore": "^1.0.5", 1448 | "once": "^1.3.3", 1449 | "readable-stream": "^2.1.4", 1450 | "rimraf": "^2.5.1", 1451 | "tar": "^2.2.1", 1452 | "uid-number": "^0.0.6" 1453 | } 1454 | }, 1455 | "tough-cookie": { 1456 | "version": "2.3.2", 1457 | "bundled": true, 1458 | "dev": true, 1459 | "optional": true, 1460 | "requires": { 1461 | "punycode": "^1.4.1" 1462 | } 1463 | }, 1464 | "tunnel-agent": { 1465 | "version": "0.6.0", 1466 | "bundled": true, 1467 | "dev": true, 1468 | "optional": true, 1469 | "requires": { 1470 | "safe-buffer": "^5.0.1" 1471 | } 1472 | }, 1473 | "tweetnacl": { 1474 | "version": "0.14.5", 1475 | "bundled": true, 1476 | "dev": true, 1477 | "optional": true 1478 | }, 1479 | "uid-number": { 1480 | "version": "0.0.6", 1481 | "bundled": true, 1482 | "dev": true, 1483 | "optional": true 1484 | }, 1485 | "util-deprecate": { 1486 | "version": "1.0.2", 1487 | "bundled": true, 1488 | "dev": true, 1489 | "optional": true 1490 | }, 1491 | "uuid": { 1492 | "version": "3.0.1", 1493 | "bundled": true, 1494 | "dev": true, 1495 | "optional": true 1496 | }, 1497 | "verror": { 1498 | "version": "1.3.6", 1499 | "bundled": true, 1500 | "dev": true, 1501 | "optional": true, 1502 | "requires": { 1503 | "extsprintf": "1.0.2" 1504 | } 1505 | }, 1506 | "wide-align": { 1507 | "version": "1.1.2", 1508 | "bundled": true, 1509 | "dev": true, 1510 | "optional": true, 1511 | "requires": { 1512 | "string-width": "^1.0.2" 1513 | } 1514 | }, 1515 | "wrappy": { 1516 | "version": "1.0.2", 1517 | "bundled": true, 1518 | "dev": true, 1519 | "optional": true 1520 | } 1521 | } 1522 | }, 1523 | "gaze": { 1524 | "version": "0.5.2", 1525 | "resolved": false, 1526 | "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", 1527 | "dev": true, 1528 | "requires": { 1529 | "globule": "~0.1.0" 1530 | } 1531 | }, 1532 | "get-stdin": { 1533 | "version": "4.0.1", 1534 | "resolved": false, 1535 | "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", 1536 | "dev": true 1537 | }, 1538 | "getobject": { 1539 | "version": "0.1.0", 1540 | "resolved": false, 1541 | "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", 1542 | "dev": true 1543 | }, 1544 | "glob": { 1545 | "version": "7.0.6", 1546 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", 1547 | "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", 1548 | "dev": true, 1549 | "requires": { 1550 | "fs.realpath": "^1.0.0", 1551 | "inflight": "^1.0.4", 1552 | "inherits": "2", 1553 | "minimatch": "^3.0.2", 1554 | "once": "^1.3.0", 1555 | "path-is-absolute": "^1.0.0" 1556 | } 1557 | }, 1558 | "glob-base": { 1559 | "version": "0.3.0", 1560 | "resolved": false, 1561 | "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", 1562 | "dev": true, 1563 | "requires": { 1564 | "glob-parent": "^2.0.0", 1565 | "is-glob": "^2.0.0" 1566 | } 1567 | }, 1568 | "glob-parent": { 1569 | "version": "2.0.0", 1570 | "resolved": false, 1571 | "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", 1572 | "dev": true, 1573 | "requires": { 1574 | "is-glob": "^2.0.0" 1575 | } 1576 | }, 1577 | "globule": { 1578 | "version": "0.1.0", 1579 | "resolved": false, 1580 | "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", 1581 | "dev": true, 1582 | "requires": { 1583 | "glob": "~3.1.21", 1584 | "lodash": "~1.0.1", 1585 | "minimatch": "~0.2.11" 1586 | }, 1587 | "dependencies": { 1588 | "glob": { 1589 | "version": "3.1.21", 1590 | "resolved": false, 1591 | "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", 1592 | "dev": true, 1593 | "requires": { 1594 | "graceful-fs": "~1.2.0", 1595 | "inherits": "1", 1596 | "minimatch": "~0.2.11" 1597 | } 1598 | }, 1599 | "graceful-fs": { 1600 | "version": "1.2.3", 1601 | "resolved": false, 1602 | "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", 1603 | "dev": true 1604 | }, 1605 | "inherits": { 1606 | "version": "1.0.2", 1607 | "resolved": false, 1608 | "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", 1609 | "dev": true 1610 | }, 1611 | "lodash": { 1612 | "version": "1.0.2", 1613 | "resolved": false, 1614 | "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", 1615 | "dev": true 1616 | }, 1617 | "minimatch": { 1618 | "version": "0.2.14", 1619 | "resolved": false, 1620 | "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", 1621 | "dev": true, 1622 | "requires": { 1623 | "lru-cache": "2", 1624 | "sigmund": "~1.0.0" 1625 | } 1626 | } 1627 | } 1628 | }, 1629 | "graceful-fs": { 1630 | "version": "4.1.11", 1631 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 1632 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 1633 | "dev": true 1634 | }, 1635 | "grunt": { 1636 | "version": "1.0.1", 1637 | "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.1.tgz", 1638 | "integrity": "sha1-6HeHZOlEsY8yuw8QuQeEdcnftWs=", 1639 | "dev": true, 1640 | "requires": { 1641 | "coffee-script": "~1.10.0", 1642 | "dateformat": "~1.0.12", 1643 | "eventemitter2": "~0.4.13", 1644 | "exit": "~0.1.1", 1645 | "findup-sync": "~0.3.0", 1646 | "glob": "~7.0.0", 1647 | "grunt-cli": "~1.2.0", 1648 | "grunt-known-options": "~1.1.0", 1649 | "grunt-legacy-log": "~1.0.0", 1650 | "grunt-legacy-util": "~1.0.0", 1651 | "iconv-lite": "~0.4.13", 1652 | "js-yaml": "~3.5.2", 1653 | "minimatch": "~3.0.0", 1654 | "nopt": "~3.0.6", 1655 | "path-is-absolute": "~1.0.0", 1656 | "rimraf": "~2.2.8" 1657 | }, 1658 | "dependencies": { 1659 | "grunt-cli": { 1660 | "version": "1.2.0", 1661 | "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", 1662 | "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", 1663 | "dev": true, 1664 | "requires": { 1665 | "findup-sync": "~0.3.0", 1666 | "grunt-known-options": "~1.1.0", 1667 | "nopt": "~3.0.6", 1668 | "resolve": "~1.1.0" 1669 | } 1670 | } 1671 | } 1672 | }, 1673 | "grunt-banner": { 1674 | "version": "0.6.0", 1675 | "resolved": false, 1676 | "integrity": "sha1-P4eQIdEj+linuloLb7a+QStYhaw=", 1677 | "dev": true, 1678 | "requires": { 1679 | "chalk": "^1.1.0" 1680 | }, 1681 | "dependencies": { 1682 | "ansi-regex": { 1683 | "version": "2.0.0", 1684 | "resolved": false, 1685 | "integrity": "sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=", 1686 | "dev": true 1687 | }, 1688 | "ansi-styles": { 1689 | "version": "2.1.0", 1690 | "resolved": false, 1691 | "integrity": "sha1-mQ90cUaSe1Wakyv5KVkWPWDA0OI=", 1692 | "dev": true 1693 | }, 1694 | "chalk": { 1695 | "version": "1.1.1", 1696 | "resolved": false, 1697 | "integrity": "sha1-UJr7ZwZudJn36zU1x3RFdyri0Bk=", 1698 | "dev": true, 1699 | "requires": { 1700 | "ansi-styles": "^2.1.0", 1701 | "escape-string-regexp": "^1.0.2", 1702 | "has-ansi": "^2.0.0", 1703 | "strip-ansi": "^3.0.0", 1704 | "supports-color": "^2.0.0" 1705 | } 1706 | }, 1707 | "has-ansi": { 1708 | "version": "2.0.0", 1709 | "resolved": false, 1710 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 1711 | "dev": true, 1712 | "requires": { 1713 | "ansi-regex": "^2.0.0" 1714 | } 1715 | }, 1716 | "strip-ansi": { 1717 | "version": "3.0.0", 1718 | "resolved": false, 1719 | "integrity": "sha1-dRC2ZVZ8qRTMtdfgcnY6yWi+NyQ=", 1720 | "dev": true, 1721 | "requires": { 1722 | "ansi-regex": "^2.0.0" 1723 | } 1724 | }, 1725 | "supports-color": { 1726 | "version": "2.0.0", 1727 | "resolved": false, 1728 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 1729 | "dev": true 1730 | } 1731 | } 1732 | }, 1733 | "grunt-contrib-clean": { 1734 | "version": "0.6.0", 1735 | "resolved": false, 1736 | "integrity": "sha1-9TLbpLghJnTHwBPhRr2mY4uQSPY=", 1737 | "dev": true, 1738 | "requires": { 1739 | "rimraf": "~2.2.1" 1740 | } 1741 | }, 1742 | "grunt-contrib-connect": { 1743 | "version": "0.11.2", 1744 | "resolved": false, 1745 | "integrity": "sha1-HAoHB9OzKNnPO0tJDrhMSV2Tau0=", 1746 | "dev": true, 1747 | "requires": { 1748 | "async": "^0.9.0", 1749 | "connect": "^3.4.0", 1750 | "connect-livereload": "^0.5.0", 1751 | "morgan": "^1.6.1", 1752 | "opn": "^1.0.0", 1753 | "portscanner": "^1.0.0", 1754 | "serve-index": "^1.7.1", 1755 | "serve-static": "^1.10.0" 1756 | }, 1757 | "dependencies": { 1758 | "async": { 1759 | "version": "0.9.2", 1760 | "resolved": false, 1761 | "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", 1762 | "dev": true 1763 | } 1764 | } 1765 | }, 1766 | "grunt-contrib-uglify": { 1767 | "version": "0.11.1", 1768 | "resolved": false, 1769 | "integrity": "sha1-XiKi9nbNEdhx/CoPCKqbKXMEUyU=", 1770 | "dev": true, 1771 | "requires": { 1772 | "chalk": "^1.0.0", 1773 | "lodash": "^4.0.1", 1774 | "maxmin": "^2.0.0", 1775 | "uglify-js": "~2.6.0", 1776 | "uri-path": "^1.0.0" 1777 | }, 1778 | "dependencies": { 1779 | "lodash": { 1780 | "version": "4.17.4", 1781 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 1782 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", 1783 | "dev": true 1784 | } 1785 | } 1786 | }, 1787 | "grunt-contrib-watch": { 1788 | "version": "0.6.1", 1789 | "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-0.6.1.tgz", 1790 | "integrity": "sha1-ZP3LolpjX1tNobbOb5DaCutuPxU=", 1791 | "dev": true, 1792 | "requires": { 1793 | "async": "~0.2.9", 1794 | "gaze": "~0.5.1", 1795 | "lodash": "~2.4.1", 1796 | "tiny-lr-fork": "0.0.5" 1797 | }, 1798 | "dependencies": { 1799 | "async": { 1800 | "version": "0.2.10", 1801 | "resolved": false, 1802 | "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", 1803 | "dev": true 1804 | }, 1805 | "lodash": { 1806 | "version": "2.4.2", 1807 | "resolved": false, 1808 | "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", 1809 | "dev": true 1810 | } 1811 | } 1812 | }, 1813 | "grunt-known-options": { 1814 | "version": "1.1.0", 1815 | "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz", 1816 | "integrity": "sha1-pCdO6zL6dl2lp6OxcSYXzjsUQUk=", 1817 | "dev": true 1818 | }, 1819 | "grunt-legacy-log": { 1820 | "version": "1.0.0", 1821 | "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-1.0.0.tgz", 1822 | "integrity": "sha1-+4bxgJhHvAfcR4Q/ns1srLYt8tU=", 1823 | "dev": true, 1824 | "requires": { 1825 | "colors": "~1.1.2", 1826 | "grunt-legacy-log-utils": "~1.0.0", 1827 | "hooker": "~0.2.3", 1828 | "lodash": "~3.10.1", 1829 | "underscore.string": "~3.2.3" 1830 | } 1831 | }, 1832 | "grunt-legacy-log-utils": { 1833 | "version": "1.0.0", 1834 | "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-1.0.0.tgz", 1835 | "integrity": "sha1-p7ji0Ps1taUPSvmG/BEnSevJbz0=", 1836 | "dev": true, 1837 | "requires": { 1838 | "chalk": "~1.1.1", 1839 | "lodash": "~4.3.0" 1840 | }, 1841 | "dependencies": { 1842 | "lodash": { 1843 | "version": "4.3.0", 1844 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", 1845 | "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=", 1846 | "dev": true 1847 | } 1848 | } 1849 | }, 1850 | "grunt-legacy-util": { 1851 | "version": "1.0.0", 1852 | "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.0.0.tgz", 1853 | "integrity": "sha1-OGqnjcbtUJhsKxiVcmWxtIq7m4Y=", 1854 | "dev": true, 1855 | "requires": { 1856 | "async": "~1.5.2", 1857 | "exit": "~0.1.1", 1858 | "getobject": "~0.1.0", 1859 | "hooker": "~0.2.3", 1860 | "lodash": "~4.3.0", 1861 | "underscore.string": "~3.2.3", 1862 | "which": "~1.2.1" 1863 | }, 1864 | "dependencies": { 1865 | "lodash": { 1866 | "version": "4.3.0", 1867 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", 1868 | "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=", 1869 | "dev": true 1870 | } 1871 | } 1872 | }, 1873 | "grunt-ts": { 1874 | "version": "6.0.0-beta.16", 1875 | "resolved": "https://registry.npmjs.org/grunt-ts/-/grunt-ts-6.0.0-beta.16.tgz", 1876 | "integrity": "sha1-wC9P+cgRAE7suTOJBaBds/hpIMM=", 1877 | "dev": true, 1878 | "requires": { 1879 | "chokidar": "^1.6.1", 1880 | "csproj2ts": "^0.0.8", 1881 | "detect-indent": "^4.0.0", 1882 | "detect-newline": "^2.1.0", 1883 | "es6-promise": "~0.1.1", 1884 | "jsmin2": "^1.2.1", 1885 | "lodash": "^4.17.4", 1886 | "ncp": "0.5.1", 1887 | "rimraf": "2.2.6", 1888 | "semver": "^5.3.0", 1889 | "strip-bom": "^2.0.0" 1890 | }, 1891 | "dependencies": { 1892 | "lodash": { 1893 | "version": "4.17.4", 1894 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 1895 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", 1896 | "dev": true 1897 | }, 1898 | "rimraf": { 1899 | "version": "2.2.6", 1900 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz", 1901 | "integrity": "sha1-xZWXVpsU2VatKcrMQr3d9fDqT0w=", 1902 | "dev": true 1903 | } 1904 | } 1905 | }, 1906 | "gzip-size": { 1907 | "version": "3.0.0", 1908 | "resolved": false, 1909 | "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", 1910 | "dev": true, 1911 | "requires": { 1912 | "duplexer": "^0.1.1" 1913 | } 1914 | }, 1915 | "has-ansi": { 1916 | "version": "2.0.0", 1917 | "resolved": false, 1918 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 1919 | "dev": true, 1920 | "requires": { 1921 | "ansi-regex": "^2.0.0" 1922 | } 1923 | }, 1924 | "hooker": { 1925 | "version": "0.2.3", 1926 | "resolved": false, 1927 | "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", 1928 | "dev": true 1929 | }, 1930 | "hosted-git-info": { 1931 | "version": "2.1.5", 1932 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.5.tgz", 1933 | "integrity": "sha1-C6gdkNouJas0ozLm7HeTbhWYEYs=", 1934 | "dev": true 1935 | }, 1936 | "http-errors": { 1937 | "version": "1.5.1", 1938 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz", 1939 | "integrity": "sha1-eIwNLB3iyBuebowBhDtrl+uSB1A=", 1940 | "dev": true, 1941 | "requires": { 1942 | "inherits": "2.0.3", 1943 | "setprototypeof": "1.0.2", 1944 | "statuses": ">= 1.3.1 < 2" 1945 | }, 1946 | "dependencies": { 1947 | "inherits": { 1948 | "version": "2.0.3", 1949 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1950 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1951 | "dev": true 1952 | } 1953 | } 1954 | }, 1955 | "iconv-lite": { 1956 | "version": "0.4.15", 1957 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", 1958 | "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=", 1959 | "dev": true 1960 | }, 1961 | "indent-string": { 1962 | "version": "2.1.0", 1963 | "resolved": false, 1964 | "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", 1965 | "dev": true, 1966 | "requires": { 1967 | "repeating": "^2.0.0" 1968 | } 1969 | }, 1970 | "inflight": { 1971 | "version": "1.0.6", 1972 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1973 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1974 | "dev": true, 1975 | "requires": { 1976 | "once": "^1.3.0", 1977 | "wrappy": "1" 1978 | } 1979 | }, 1980 | "inherits": { 1981 | "version": "2.0.1", 1982 | "resolved": false, 1983 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", 1984 | "dev": true 1985 | }, 1986 | "is-arrayish": { 1987 | "version": "0.2.1", 1988 | "resolved": false, 1989 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1990 | "dev": true 1991 | }, 1992 | "is-binary-path": { 1993 | "version": "1.0.1", 1994 | "resolved": false, 1995 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", 1996 | "dev": true, 1997 | "requires": { 1998 | "binary-extensions": "^1.0.0" 1999 | } 2000 | }, 2001 | "is-buffer": { 2002 | "version": "1.1.1", 2003 | "resolved": false, 2004 | "integrity": "sha1-MFjenKRUVk6LvluN0nGajXCJ59c=", 2005 | "dev": true 2006 | }, 2007 | "is-builtin-module": { 2008 | "version": "1.0.0", 2009 | "resolved": false, 2010 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", 2011 | "dev": true, 2012 | "requires": { 2013 | "builtin-modules": "^1.0.0" 2014 | } 2015 | }, 2016 | "is-dotfile": { 2017 | "version": "1.0.2", 2018 | "resolved": false, 2019 | "integrity": "sha1-LBMjg/ORmfjtwmjKAbmwB9IFzE0=", 2020 | "dev": true 2021 | }, 2022 | "is-equal-shallow": { 2023 | "version": "0.1.3", 2024 | "resolved": false, 2025 | "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", 2026 | "dev": true, 2027 | "requires": { 2028 | "is-primitive": "^2.0.0" 2029 | } 2030 | }, 2031 | "is-extendable": { 2032 | "version": "0.1.1", 2033 | "resolved": false, 2034 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 2035 | "dev": true 2036 | }, 2037 | "is-extglob": { 2038 | "version": "1.0.0", 2039 | "resolved": false, 2040 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", 2041 | "dev": true 2042 | }, 2043 | "is-finite": { 2044 | "version": "1.0.2", 2045 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", 2046 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", 2047 | "dev": true, 2048 | "requires": { 2049 | "number-is-nan": "^1.0.0" 2050 | } 2051 | }, 2052 | "is-glob": { 2053 | "version": "2.0.1", 2054 | "resolved": false, 2055 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 2056 | "dev": true, 2057 | "requires": { 2058 | "is-extglob": "^1.0.0" 2059 | } 2060 | }, 2061 | "is-number": { 2062 | "version": "2.1.0", 2063 | "resolved": false, 2064 | "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", 2065 | "dev": true, 2066 | "requires": { 2067 | "kind-of": "^3.0.2" 2068 | }, 2069 | "dependencies": { 2070 | "kind-of": { 2071 | "version": "3.0.2", 2072 | "resolved": false, 2073 | "integrity": "sha1-GH20JwRufpCUVpLmdoZovWkA3qA=", 2074 | "dev": true, 2075 | "requires": { 2076 | "is-buffer": "^1.0.2" 2077 | } 2078 | } 2079 | } 2080 | }, 2081 | "is-primitive": { 2082 | "version": "2.0.0", 2083 | "resolved": false, 2084 | "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", 2085 | "dev": true 2086 | }, 2087 | "is-utf8": { 2088 | "version": "0.2.1", 2089 | "resolved": false, 2090 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", 2091 | "dev": true 2092 | }, 2093 | "isarray": { 2094 | "version": "0.0.1", 2095 | "resolved": false, 2096 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", 2097 | "dev": true 2098 | }, 2099 | "isexe": { 2100 | "version": "1.1.2", 2101 | "resolved": false, 2102 | "integrity": "sha1-NvPiLmB1CSD15yQaR2qMakInWtA=", 2103 | "dev": true 2104 | }, 2105 | "isobject": { 2106 | "version": "2.0.0", 2107 | "resolved": false, 2108 | "integrity": "sha1-II3ocr1zeMKpKvlCij9W65GhIsQ=", 2109 | "dev": true, 2110 | "requires": { 2111 | "isarray": "0.0.1" 2112 | } 2113 | }, 2114 | "js-yaml": { 2115 | "version": "3.5.5", 2116 | "resolved": false, 2117 | "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=", 2118 | "dev": true, 2119 | "requires": { 2120 | "argparse": "^1.0.2", 2121 | "esprima": "^2.6.0" 2122 | } 2123 | }, 2124 | "jsmin2": { 2125 | "version": "1.2.1", 2126 | "resolved": "https://registry.npmjs.org/jsmin2/-/jsmin2-1.2.1.tgz", 2127 | "integrity": "sha1-iPvi+/dfCpH2YCD9mBzWk/S/5X4=", 2128 | "dev": true 2129 | }, 2130 | "kind-of": { 2131 | "version": "3.1.0", 2132 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.1.0.tgz", 2133 | "integrity": "sha1-R11pil5J/15T0U4+cyQp3Iv0z0c=", 2134 | "dev": true, 2135 | "requires": { 2136 | "is-buffer": "^1.0.2" 2137 | } 2138 | }, 2139 | "lazy-cache": { 2140 | "version": "1.0.4", 2141 | "resolved": false, 2142 | "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", 2143 | "dev": true 2144 | }, 2145 | "load-json-file": { 2146 | "version": "1.1.0", 2147 | "resolved": false, 2148 | "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", 2149 | "dev": true, 2150 | "requires": { 2151 | "graceful-fs": "^4.1.2", 2152 | "parse-json": "^2.2.0", 2153 | "pify": "^2.0.0", 2154 | "pinkie-promise": "^2.0.0", 2155 | "strip-bom": "^2.0.0" 2156 | } 2157 | }, 2158 | "lodash": { 2159 | "version": "3.10.1", 2160 | "resolved": false, 2161 | "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", 2162 | "dev": true 2163 | }, 2164 | "longest": { 2165 | "version": "1.0.1", 2166 | "resolved": false, 2167 | "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", 2168 | "dev": true 2169 | }, 2170 | "loud-rejection": { 2171 | "version": "1.6.0", 2172 | "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", 2173 | "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", 2174 | "dev": true, 2175 | "requires": { 2176 | "currently-unhandled": "^0.4.1", 2177 | "signal-exit": "^3.0.0" 2178 | } 2179 | }, 2180 | "lru-cache": { 2181 | "version": "2.7.3", 2182 | "resolved": false, 2183 | "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", 2184 | "dev": true 2185 | }, 2186 | "map-obj": { 2187 | "version": "1.0.1", 2188 | "resolved": false, 2189 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", 2190 | "dev": true 2191 | }, 2192 | "maxmin": { 2193 | "version": "2.1.0", 2194 | "resolved": false, 2195 | "integrity": "sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY=", 2196 | "dev": true, 2197 | "requires": { 2198 | "chalk": "^1.0.0", 2199 | "figures": "^1.0.1", 2200 | "gzip-size": "^3.0.0", 2201 | "pretty-bytes": "^3.0.0" 2202 | } 2203 | }, 2204 | "meow": { 2205 | "version": "3.7.0", 2206 | "resolved": false, 2207 | "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", 2208 | "dev": true, 2209 | "requires": { 2210 | "camelcase-keys": "^2.0.0", 2211 | "decamelize": "^1.1.2", 2212 | "loud-rejection": "^1.0.0", 2213 | "map-obj": "^1.0.1", 2214 | "minimist": "^1.1.3", 2215 | "normalize-package-data": "^2.3.4", 2216 | "object-assign": "^4.0.1", 2217 | "read-pkg-up": "^1.0.1", 2218 | "redent": "^1.0.0", 2219 | "trim-newlines": "^1.0.0" 2220 | } 2221 | }, 2222 | "micromatch": { 2223 | "version": "2.3.7", 2224 | "resolved": false, 2225 | "integrity": "sha1-Ly6F70YUDb6my1XnObaxGzDqpQk=", 2226 | "dev": true, 2227 | "requires": { 2228 | "arr-diff": "^2.0.0", 2229 | "array-unique": "^0.2.1", 2230 | "braces": "^1.8.2", 2231 | "expand-brackets": "^0.1.4", 2232 | "extglob": "^0.3.1", 2233 | "filename-regex": "^2.0.0", 2234 | "is-extglob": "^1.0.0", 2235 | "is-glob": "^2.0.1", 2236 | "kind-of": "^3.0.2", 2237 | "normalize-path": "^2.0.1", 2238 | "object.omit": "^2.0.0", 2239 | "parse-glob": "^3.0.4", 2240 | "regex-cache": "^0.4.2" 2241 | }, 2242 | "dependencies": { 2243 | "kind-of": { 2244 | "version": "3.0.2", 2245 | "resolved": false, 2246 | "integrity": "sha1-GH20JwRufpCUVpLmdoZovWkA3qA=", 2247 | "dev": true, 2248 | "requires": { 2249 | "is-buffer": "^1.0.2" 2250 | } 2251 | } 2252 | } 2253 | }, 2254 | "mime": { 2255 | "version": "1.3.4", 2256 | "resolved": false, 2257 | "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", 2258 | "dev": true 2259 | }, 2260 | "mime-db": { 2261 | "version": "1.26.0", 2262 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.26.0.tgz", 2263 | "integrity": "sha1-6v/NDk/Gk1z4E02iRuLmw1MFrf8=", 2264 | "dev": true 2265 | }, 2266 | "mime-types": { 2267 | "version": "2.1.14", 2268 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.14.tgz", 2269 | "integrity": "sha1-9+99l1g/yvO30oK2+LVnnaselO4=", 2270 | "dev": true, 2271 | "requires": { 2272 | "mime-db": "~1.26.0" 2273 | } 2274 | }, 2275 | "minimatch": { 2276 | "version": "3.0.3", 2277 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", 2278 | "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", 2279 | "dev": true, 2280 | "requires": { 2281 | "brace-expansion": "^1.0.0" 2282 | } 2283 | }, 2284 | "minimist": { 2285 | "version": "1.2.0", 2286 | "resolved": false, 2287 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 2288 | "dev": true 2289 | }, 2290 | "morgan": { 2291 | "version": "1.7.0", 2292 | "resolved": false, 2293 | "integrity": "sha1-6xDKjlDRq+D409rVwCAdBS2YHGI=", 2294 | "dev": true, 2295 | "requires": { 2296 | "basic-auth": "~1.0.3", 2297 | "debug": "~2.2.0", 2298 | "depd": "~1.1.0", 2299 | "on-finished": "~2.3.0", 2300 | "on-headers": "~1.0.1" 2301 | } 2302 | }, 2303 | "ms": { 2304 | "version": "0.7.1", 2305 | "resolved": false, 2306 | "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", 2307 | "dev": true 2308 | }, 2309 | "nan": { 2310 | "version": "2.6.2", 2311 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", 2312 | "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", 2313 | "dev": true, 2314 | "optional": true 2315 | }, 2316 | "ncp": { 2317 | "version": "0.5.1", 2318 | "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.5.1.tgz", 2319 | "integrity": "sha1-dDmFMW49tFkoG1hxaehFc1oFQ58=", 2320 | "dev": true 2321 | }, 2322 | "negotiator": { 2323 | "version": "0.6.1", 2324 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", 2325 | "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", 2326 | "dev": true 2327 | }, 2328 | "nopt": { 2329 | "version": "3.0.6", 2330 | "resolved": false, 2331 | "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", 2332 | "dev": true, 2333 | "requires": { 2334 | "abbrev": "1" 2335 | } 2336 | }, 2337 | "noptify": { 2338 | "version": "0.0.3", 2339 | "resolved": false, 2340 | "integrity": "sha1-WPZUpz2XU98MUdlobckhBKZ/S7s=", 2341 | "dev": true, 2342 | "requires": { 2343 | "nopt": "~2.0.0" 2344 | }, 2345 | "dependencies": { 2346 | "nopt": { 2347 | "version": "2.0.0", 2348 | "resolved": false, 2349 | "integrity": "sha1-ynQW8gpeP5w7hhgPlilfo9C1Lg0=", 2350 | "dev": true, 2351 | "requires": { 2352 | "abbrev": "1" 2353 | } 2354 | } 2355 | } 2356 | }, 2357 | "normalize-package-data": { 2358 | "version": "2.3.5", 2359 | "resolved": false, 2360 | "integrity": "sha1-jZJPFClg4Xd+f/4XBUNjHMfLAt8=", 2361 | "dev": true, 2362 | "requires": { 2363 | "hosted-git-info": "^2.1.4", 2364 | "is-builtin-module": "^1.0.0", 2365 | "semver": "2 || 3 || 4 || 5", 2366 | "validate-npm-package-license": "^3.0.1" 2367 | } 2368 | }, 2369 | "normalize-path": { 2370 | "version": "2.0.1", 2371 | "resolved": false, 2372 | "integrity": "sha1-R4hqwWYnYNQmG32XnSQXCdPOP3o=", 2373 | "dev": true 2374 | }, 2375 | "number-is-nan": { 2376 | "version": "1.0.1", 2377 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 2378 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 2379 | "dev": true 2380 | }, 2381 | "object-assign": { 2382 | "version": "4.1.1", 2383 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2384 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 2385 | "dev": true 2386 | }, 2387 | "object.omit": { 2388 | "version": "2.0.0", 2389 | "resolved": false, 2390 | "integrity": "sha1-hoWXMz1U5gZilAu0WGBd1q4S/pQ=", 2391 | "dev": true, 2392 | "requires": { 2393 | "for-own": "^0.1.3", 2394 | "is-extendable": "^0.1.1" 2395 | } 2396 | }, 2397 | "on-finished": { 2398 | "version": "2.3.0", 2399 | "resolved": false, 2400 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 2401 | "dev": true, 2402 | "requires": { 2403 | "ee-first": "1.1.1" 2404 | } 2405 | }, 2406 | "on-headers": { 2407 | "version": "1.0.1", 2408 | "resolved": false, 2409 | "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", 2410 | "dev": true 2411 | }, 2412 | "once": { 2413 | "version": "1.4.0", 2414 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2415 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2416 | "dev": true, 2417 | "requires": { 2418 | "wrappy": "1" 2419 | } 2420 | }, 2421 | "opn": { 2422 | "version": "1.0.2", 2423 | "resolved": false, 2424 | "integrity": "sha1-uQlkM0bQChq8l3qLlvPOPFPVz18=", 2425 | "dev": true 2426 | }, 2427 | "parse-glob": { 2428 | "version": "3.0.4", 2429 | "resolved": false, 2430 | "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", 2431 | "dev": true, 2432 | "requires": { 2433 | "glob-base": "^0.3.0", 2434 | "is-dotfile": "^1.0.0", 2435 | "is-extglob": "^1.0.0", 2436 | "is-glob": "^2.0.0" 2437 | } 2438 | }, 2439 | "parse-json": { 2440 | "version": "2.2.0", 2441 | "resolved": false, 2442 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 2443 | "dev": true, 2444 | "requires": { 2445 | "error-ex": "^1.2.0" 2446 | } 2447 | }, 2448 | "parseurl": { 2449 | "version": "1.3.1", 2450 | "resolved": false, 2451 | "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=", 2452 | "dev": true 2453 | }, 2454 | "path-exists": { 2455 | "version": "2.1.0", 2456 | "resolved": false, 2457 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", 2458 | "dev": true, 2459 | "requires": { 2460 | "pinkie-promise": "^2.0.0" 2461 | } 2462 | }, 2463 | "path-is-absolute": { 2464 | "version": "1.0.0", 2465 | "resolved": false, 2466 | "integrity": "sha1-Jj2tpmqz8vsQv3+dJN2PPlcO+RI=", 2467 | "dev": true 2468 | }, 2469 | "path-type": { 2470 | "version": "1.1.0", 2471 | "resolved": false, 2472 | "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", 2473 | "dev": true, 2474 | "requires": { 2475 | "graceful-fs": "^4.1.2", 2476 | "pify": "^2.0.0", 2477 | "pinkie-promise": "^2.0.0" 2478 | } 2479 | }, 2480 | "phaser": { 2481 | "version": "2.6.2", 2482 | "resolved": "https://registry.npmjs.org/phaser/-/phaser-2.6.2.tgz", 2483 | "integrity": "sha1-6zkSFyWiFJxJ9GtdFEMYwivAkkk=", 2484 | "dev": true 2485 | }, 2486 | "pify": { 2487 | "version": "2.3.0", 2488 | "resolved": false, 2489 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 2490 | "dev": true 2491 | }, 2492 | "pinkie": { 2493 | "version": "2.0.4", 2494 | "resolved": false, 2495 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 2496 | "dev": true 2497 | }, 2498 | "pinkie-promise": { 2499 | "version": "2.0.1", 2500 | "resolved": false, 2501 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 2502 | "dev": true, 2503 | "requires": { 2504 | "pinkie": "^2.0.0" 2505 | } 2506 | }, 2507 | "portscanner": { 2508 | "version": "1.2.0", 2509 | "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-1.2.0.tgz", 2510 | "integrity": "sha1-sUu9olfRTDEPqcwJaCrwLUCWGAI=", 2511 | "dev": true, 2512 | "requires": { 2513 | "async": "1.5.2" 2514 | } 2515 | }, 2516 | "preserve": { 2517 | "version": "0.2.0", 2518 | "resolved": false, 2519 | "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", 2520 | "dev": true 2521 | }, 2522 | "pretty-bytes": { 2523 | "version": "3.0.1", 2524 | "resolved": false, 2525 | "integrity": "sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8=", 2526 | "dev": true, 2527 | "requires": { 2528 | "number-is-nan": "^1.0.0" 2529 | } 2530 | }, 2531 | "process-nextick-args": { 2532 | "version": "1.0.6", 2533 | "resolved": false, 2534 | "integrity": "sha1-D5awAc6pCxJZLOVm7bl+wR5pvQU=", 2535 | "dev": true 2536 | }, 2537 | "qs": { 2538 | "version": "0.5.6", 2539 | "resolved": false, 2540 | "integrity": "sha1-MbGtBYVnZRxSaSFQa5qHk5EaA4Q=", 2541 | "dev": true 2542 | }, 2543 | "randomatic": { 2544 | "version": "1.1.5", 2545 | "resolved": false, 2546 | "integrity": "sha1-Xp718tVzxnvSuBJK6QtRVuRXhAs=", 2547 | "dev": true, 2548 | "requires": { 2549 | "is-number": "^2.0.2", 2550 | "kind-of": "^3.0.2" 2551 | }, 2552 | "dependencies": { 2553 | "kind-of": { 2554 | "version": "3.0.2", 2555 | "resolved": false, 2556 | "integrity": "sha1-GH20JwRufpCUVpLmdoZovWkA3qA=", 2557 | "dev": true, 2558 | "requires": { 2559 | "is-buffer": "^1.0.2" 2560 | } 2561 | } 2562 | } 2563 | }, 2564 | "range-parser": { 2565 | "version": "1.2.0", 2566 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", 2567 | "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", 2568 | "dev": true 2569 | }, 2570 | "read-pkg": { 2571 | "version": "1.1.0", 2572 | "resolved": false, 2573 | "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", 2574 | "dev": true, 2575 | "requires": { 2576 | "load-json-file": "^1.0.0", 2577 | "normalize-package-data": "^2.3.2", 2578 | "path-type": "^1.0.0" 2579 | } 2580 | }, 2581 | "read-pkg-up": { 2582 | "version": "1.0.1", 2583 | "resolved": false, 2584 | "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", 2585 | "dev": true, 2586 | "requires": { 2587 | "find-up": "^1.0.0", 2588 | "read-pkg": "^1.0.0" 2589 | } 2590 | }, 2591 | "readable-stream": { 2592 | "version": "2.0.5", 2593 | "resolved": false, 2594 | "integrity": "sha1-okJvjc1FUcd6M/lu3yiGojyClmk=", 2595 | "dev": true, 2596 | "requires": { 2597 | "core-util-is": "~1.0.0", 2598 | "inherits": "~2.0.1", 2599 | "isarray": "0.0.1", 2600 | "process-nextick-args": "~1.0.6", 2601 | "string_decoder": "~0.10.x", 2602 | "util-deprecate": "~1.0.1" 2603 | } 2604 | }, 2605 | "readdirp": { 2606 | "version": "2.0.0", 2607 | "resolved": false, 2608 | "integrity": "sha1-zAm6XRLY/rhkvHX24uvBNwYMvYI=", 2609 | "dev": true, 2610 | "requires": { 2611 | "graceful-fs": "^4.1.2", 2612 | "minimatch": "^2.0.10", 2613 | "readable-stream": "^2.0.2" 2614 | }, 2615 | "dependencies": { 2616 | "graceful-fs": { 2617 | "version": "4.1.2", 2618 | "resolved": false, 2619 | "integrity": "sha1-/iI5t1dJcuZ+QfgIgj+b+kqZHjc=", 2620 | "dev": true 2621 | }, 2622 | "minimatch": { 2623 | "version": "2.0.10", 2624 | "resolved": false, 2625 | "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", 2626 | "dev": true, 2627 | "requires": { 2628 | "brace-expansion": "^1.0.0" 2629 | } 2630 | } 2631 | } 2632 | }, 2633 | "redent": { 2634 | "version": "1.0.0", 2635 | "resolved": false, 2636 | "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", 2637 | "dev": true, 2638 | "requires": { 2639 | "indent-string": "^2.1.0", 2640 | "strip-indent": "^1.0.1" 2641 | } 2642 | }, 2643 | "regex-cache": { 2644 | "version": "0.4.2", 2645 | "resolved": false, 2646 | "integrity": "sha1-bk+Jwma8A8M/0SnAYhhGh/RmNIc=", 2647 | "dev": true, 2648 | "requires": { 2649 | "is-equal-shallow": "^0.1.1", 2650 | "is-primitive": "^2.0.0" 2651 | } 2652 | }, 2653 | "repeat-element": { 2654 | "version": "1.1.2", 2655 | "resolved": false, 2656 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", 2657 | "dev": true 2658 | }, 2659 | "repeat-string": { 2660 | "version": "1.5.2", 2661 | "resolved": false, 2662 | "integrity": "sha1-IQZfcHJ60FOg3V6VesngDHVg2Qo=", 2663 | "dev": true 2664 | }, 2665 | "repeating": { 2666 | "version": "2.0.1", 2667 | "resolved": false, 2668 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", 2669 | "dev": true, 2670 | "requires": { 2671 | "is-finite": "^1.0.0" 2672 | } 2673 | }, 2674 | "resolve": { 2675 | "version": "1.1.7", 2676 | "resolved": false, 2677 | "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", 2678 | "dev": true 2679 | }, 2680 | "right-align": { 2681 | "version": "0.1.3", 2682 | "resolved": false, 2683 | "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", 2684 | "dev": true, 2685 | "requires": { 2686 | "align-text": "^0.1.1" 2687 | } 2688 | }, 2689 | "rimraf": { 2690 | "version": "2.2.8", 2691 | "resolved": false, 2692 | "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", 2693 | "dev": true 2694 | }, 2695 | "sax": { 2696 | "version": "1.2.1", 2697 | "resolved": false, 2698 | "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=", 2699 | "dev": true 2700 | }, 2701 | "semver": { 2702 | "version": "5.3.0", 2703 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", 2704 | "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", 2705 | "dev": true 2706 | }, 2707 | "send": { 2708 | "version": "0.14.1", 2709 | "resolved": "https://registry.npmjs.org/send/-/send-0.14.1.tgz", 2710 | "integrity": "sha1-qVSYQyU5L1FTKndgdg5FlZjIn3o=", 2711 | "dev": true, 2712 | "requires": { 2713 | "debug": "~2.2.0", 2714 | "depd": "~1.1.0", 2715 | "destroy": "~1.0.4", 2716 | "encodeurl": "~1.0.1", 2717 | "escape-html": "~1.0.3", 2718 | "etag": "~1.7.0", 2719 | "fresh": "0.3.0", 2720 | "http-errors": "~1.5.0", 2721 | "mime": "1.3.4", 2722 | "ms": "0.7.1", 2723 | "on-finished": "~2.3.0", 2724 | "range-parser": "~1.2.0", 2725 | "statuses": "~1.3.0" 2726 | } 2727 | }, 2728 | "serve-index": { 2729 | "version": "1.8.0", 2730 | "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.8.0.tgz", 2731 | "integrity": "sha1-fF2WwT+xMRAfk8HFd0+FFqHnjTs=", 2732 | "dev": true, 2733 | "requires": { 2734 | "accepts": "~1.3.3", 2735 | "batch": "0.5.3", 2736 | "debug": "~2.2.0", 2737 | "escape-html": "~1.0.3", 2738 | "http-errors": "~1.5.0", 2739 | "mime-types": "~2.1.11", 2740 | "parseurl": "~1.3.1" 2741 | } 2742 | }, 2743 | "serve-static": { 2744 | "version": "1.11.1", 2745 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.11.1.tgz", 2746 | "integrity": "sha1-1sznaTUF9zPHWd5Xvvwa92wPCAU=", 2747 | "dev": true, 2748 | "requires": { 2749 | "encodeurl": "~1.0.1", 2750 | "escape-html": "~1.0.3", 2751 | "parseurl": "~1.3.1", 2752 | "send": "0.14.1" 2753 | } 2754 | }, 2755 | "setprototypeof": { 2756 | "version": "1.0.2", 2757 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.2.tgz", 2758 | "integrity": "sha1-gaVSFB7BBLiOic44MQOtXGZWTQg=", 2759 | "dev": true 2760 | }, 2761 | "sigmund": { 2762 | "version": "1.0.1", 2763 | "resolved": false, 2764 | "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", 2765 | "dev": true 2766 | }, 2767 | "signal-exit": { 2768 | "version": "3.0.2", 2769 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 2770 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 2771 | "dev": true 2772 | }, 2773 | "source-map": { 2774 | "version": "0.5.6", 2775 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", 2776 | "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", 2777 | "dev": true 2778 | }, 2779 | "spdx-correct": { 2780 | "version": "1.0.2", 2781 | "resolved": false, 2782 | "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", 2783 | "dev": true, 2784 | "requires": { 2785 | "spdx-license-ids": "^1.0.2" 2786 | } 2787 | }, 2788 | "spdx-expression-parse": { 2789 | "version": "1.0.4", 2790 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", 2791 | "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", 2792 | "dev": true 2793 | }, 2794 | "spdx-license-ids": { 2795 | "version": "1.2.2", 2796 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", 2797 | "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", 2798 | "dev": true 2799 | }, 2800 | "sprintf-js": { 2801 | "version": "1.0.3", 2802 | "resolved": false, 2803 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 2804 | "dev": true 2805 | }, 2806 | "statuses": { 2807 | "version": "1.3.1", 2808 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", 2809 | "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", 2810 | "dev": true 2811 | }, 2812 | "string_decoder": { 2813 | "version": "0.10.31", 2814 | "resolved": false, 2815 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", 2816 | "dev": true 2817 | }, 2818 | "strip-ansi": { 2819 | "version": "3.0.1", 2820 | "resolved": false, 2821 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2822 | "dev": true, 2823 | "requires": { 2824 | "ansi-regex": "^2.0.0" 2825 | } 2826 | }, 2827 | "strip-bom": { 2828 | "version": "2.0.0", 2829 | "resolved": false, 2830 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", 2831 | "dev": true, 2832 | "requires": { 2833 | "is-utf8": "^0.2.0" 2834 | } 2835 | }, 2836 | "strip-indent": { 2837 | "version": "1.0.1", 2838 | "resolved": false, 2839 | "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", 2840 | "dev": true, 2841 | "requires": { 2842 | "get-stdin": "^4.0.1" 2843 | } 2844 | }, 2845 | "success-symbol": { 2846 | "version": "0.1.0", 2847 | "resolved": false, 2848 | "integrity": "sha1-JAIuSG878c3KCUKDt2nEctO3KJc=", 2849 | "dev": true 2850 | }, 2851 | "supports-color": { 2852 | "version": "2.0.0", 2853 | "resolved": false, 2854 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 2855 | "dev": true 2856 | }, 2857 | "tiny-lr-fork": { 2858 | "version": "0.0.5", 2859 | "resolved": false, 2860 | "integrity": "sha1-Hpnh4qhGm3NquX2X7vqYxx927Qo=", 2861 | "dev": true, 2862 | "requires": { 2863 | "debug": "~0.7.0", 2864 | "faye-websocket": "~0.4.3", 2865 | "noptify": "~0.0.3", 2866 | "qs": "~0.5.2" 2867 | }, 2868 | "dependencies": { 2869 | "debug": { 2870 | "version": "0.7.4", 2871 | "resolved": false, 2872 | "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=", 2873 | "dev": true 2874 | } 2875 | } 2876 | }, 2877 | "trim-newlines": { 2878 | "version": "1.0.0", 2879 | "resolved": false, 2880 | "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", 2881 | "dev": true 2882 | }, 2883 | "typescript": { 2884 | "version": "2.4.1", 2885 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.4.1.tgz", 2886 | "integrity": "sha1-w8yxbdqgsjFN4DHn5v7onlujRrw=", 2887 | "dev": true 2888 | }, 2889 | "uglify-js": { 2890 | "version": "2.6.4", 2891 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.4.tgz", 2892 | "integrity": "sha1-ZeovswWck5RpLxX+2HwrNsFrmt8=", 2893 | "dev": true, 2894 | "requires": { 2895 | "async": "~0.2.6", 2896 | "source-map": "~0.5.1", 2897 | "uglify-to-browserify": "~1.0.0", 2898 | "yargs": "~3.10.0" 2899 | }, 2900 | "dependencies": { 2901 | "async": { 2902 | "version": "0.2.10", 2903 | "resolved": false, 2904 | "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", 2905 | "dev": true 2906 | } 2907 | } 2908 | }, 2909 | "uglify-to-browserify": { 2910 | "version": "1.0.2", 2911 | "resolved": false, 2912 | "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", 2913 | "dev": true 2914 | }, 2915 | "underscore.string": { 2916 | "version": "3.2.3", 2917 | "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.2.3.tgz", 2918 | "integrity": "sha1-gGmSYzZl1eX8tNsfs6hi62jp5to=", 2919 | "dev": true 2920 | }, 2921 | "unpipe": { 2922 | "version": "1.0.0", 2923 | "resolved": false, 2924 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", 2925 | "dev": true 2926 | }, 2927 | "uri-path": { 2928 | "version": "1.0.0", 2929 | "resolved": false, 2930 | "integrity": "sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=", 2931 | "dev": true 2932 | }, 2933 | "util-deprecate": { 2934 | "version": "1.0.2", 2935 | "resolved": false, 2936 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2937 | "dev": true 2938 | }, 2939 | "utils-merge": { 2940 | "version": "1.0.0", 2941 | "resolved": false, 2942 | "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", 2943 | "dev": true 2944 | }, 2945 | "validate-npm-package-license": { 2946 | "version": "3.0.1", 2947 | "resolved": false, 2948 | "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", 2949 | "dev": true, 2950 | "requires": { 2951 | "spdx-correct": "~1.0.0", 2952 | "spdx-expression-parse": "~1.0.0" 2953 | } 2954 | }, 2955 | "which": { 2956 | "version": "1.2.12", 2957 | "resolved": "https://registry.npmjs.org/which/-/which-1.2.12.tgz", 2958 | "integrity": "sha1-3me15FAmnxlJCe8j7OTr5Bb6EZI=", 2959 | "dev": true, 2960 | "requires": { 2961 | "isexe": "^1.1.1" 2962 | } 2963 | }, 2964 | "window-size": { 2965 | "version": "0.1.0", 2966 | "resolved": false, 2967 | "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", 2968 | "dev": true 2969 | }, 2970 | "wordwrap": { 2971 | "version": "0.0.2", 2972 | "resolved": false, 2973 | "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", 2974 | "dev": true 2975 | }, 2976 | "wrappy": { 2977 | "version": "1.0.2", 2978 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2979 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2980 | "dev": true 2981 | }, 2982 | "xml2js": { 2983 | "version": "0.4.17", 2984 | "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", 2985 | "integrity": "sha1-F76T6q4/O3eTWceVtBlwWogX6Gg=", 2986 | "dev": true, 2987 | "requires": { 2988 | "sax": ">=0.6.0", 2989 | "xmlbuilder": "^4.1.0" 2990 | } 2991 | }, 2992 | "xmlbuilder": { 2993 | "version": "4.2.1", 2994 | "resolved": false, 2995 | "integrity": "sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=", 2996 | "dev": true, 2997 | "requires": { 2998 | "lodash": "^4.0.0" 2999 | }, 3000 | "dependencies": { 3001 | "lodash": { 3002 | "version": "4.17.4", 3003 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 3004 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", 3005 | "dev": true 3006 | } 3007 | } 3008 | }, 3009 | "yargs": { 3010 | "version": "3.10.0", 3011 | "resolved": false, 3012 | "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", 3013 | "dev": true, 3014 | "requires": { 3015 | "camelcase": "^1.0.2", 3016 | "cliui": "^2.1.0", 3017 | "decamelize": "^1.0.0", 3018 | "window-size": "0.1.0" 3019 | }, 3020 | "dependencies": { 3021 | "camelcase": { 3022 | "version": "1.2.1", 3023 | "resolved": false, 3024 | "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", 3025 | "dev": true 3026 | } 3027 | } 3028 | } 3029 | } 3030 | } 3031 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@azerion/phaser-nineslice", 3 | "author": "Azerion", 4 | "version": "2.0.1", 5 | "description": "NineSlice plugin for Phaser.io!", 6 | "contributors": [ 7 | { 8 | "name": "Ale Bles", 9 | "email": "a.bles@azerion.com" 10 | } 11 | ], 12 | "repository": { 13 | "type": "git", 14 | "url": "git@github.com:azerion/phaser-nineslice.git" 15 | }, 16 | "licenses": [ 17 | { 18 | "type": "MIT", 19 | "url": "https://github.com/azerion/phaser-nineslice/raw/master/LICENSE" 20 | } 21 | ], 22 | "config": { 23 | "name": "phaser-nineslice" 24 | }, 25 | "devDependencies": { 26 | "grunt": "1.0.x", 27 | "grunt-banner": "^0.6.0", 28 | "grunt-contrib-clean": "0.6.0", 29 | "grunt-contrib-connect": "^0.11.2", 30 | "grunt-contrib-uglify": "^0.11.0", 31 | "grunt-contrib-watch": "^0.6.1", 32 | "grunt-ts": "^6.0.0-beta.16", 33 | "phaser": "2.6.2", 34 | "typescript": "2.4.x" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /ts/NineSlice.ts: -------------------------------------------------------------------------------- 1 | module PhaserNineSlice { 2 | import NineSliceCacheData = PhaserNineSlice.NineSliceCacheData; 3 | export class NineSlice extends Phaser.Sprite { 4 | /** 5 | * The sizes of the edges 6 | */ 7 | private leftSize:number; 8 | private topSize:number; 9 | private rightSize:number; 10 | private bottomSize:number; 11 | 12 | /** 13 | * The eventual sizes of the container 14 | */ 15 | public localWidth:number; 16 | public localHeight:number; 17 | 18 | /** 19 | * The original texture, unmodified 20 | */ 21 | public baseTexture: PIXI.BaseTexture; 22 | public texture: Phaser.RenderTexture; 23 | private baseFrame: PIXI.Rectangle; 24 | 25 | constructor(game: PhaserNineSlice.NineSliceGame, x:number, y:number, key: string, frame: string, width:number, height:number, data?: NineSliceCacheData) { 26 | super(game, x, y, key, frame); 27 | 28 | this.baseTexture = this.texture.baseTexture; 29 | this.baseFrame = this.texture.frame; 30 | 31 | if (frame !== null && !data) { 32 | data = game.cache.getNineSlice(frame); 33 | } else if (!data) { 34 | data = game.cache.getNineSlice(key); 35 | } 36 | 37 | if (undefined === data) { 38 | return; 39 | } 40 | 41 | this.topSize = data.top; 42 | if (!data.left) { 43 | this.leftSize = this.topSize; 44 | } else { 45 | this.leftSize = data.left; 46 | } 47 | 48 | if (!data.right) { 49 | this.rightSize = this.leftSize; 50 | } else { 51 | this.rightSize = data.right; 52 | } 53 | 54 | if (!data.bottom) { 55 | this.bottomSize = this.topSize; 56 | } else { 57 | this.bottomSize = data.bottom; 58 | } 59 | 60 | this.loadTexture(new Phaser.RenderTexture(this.game, this.localWidth, this.localHeight)); 61 | this.resize(width, height); 62 | } 63 | 64 | /** 65 | * Redraw the the current texture to adjust for the new sizes; 66 | */ 67 | private renderTexture():void { 68 | //Set a new empty texture 69 | this.texture.resize(this.localWidth, this.localHeight, true); 70 | 71 | //The positions we want from the base texture 72 | var textureXs:number[] = [0, this.leftSize, this.baseFrame.width - this.rightSize, this.baseFrame.width]; 73 | var textureYs:number[] = [0, this.topSize, this.baseFrame.height - this.bottomSize, this.baseFrame.height]; 74 | 75 | //These are the positions we need the eventual texture to have 76 | var finalXs:number[] = [0, this.leftSize, this.localWidth - this.rightSize, this.localWidth]; 77 | var finalYs:number[] = [0, this.topSize, this.localHeight - this.bottomSize, this.localHeight]; 78 | 79 | (this.texture).clear(); 80 | for (var yi = 0; yi < 3; yi++) { 81 | for (var xi = 0; xi < 3; xi++) { 82 | var s = this.createTexturePart( 83 | textureXs[xi], //x 84 | textureYs[yi], //y 85 | textureXs[xi + 1] - textureXs[xi], //width 86 | textureYs[yi + 1] - textureYs[yi] //height 87 | ); 88 | 89 | s.width = finalXs[xi + 1] - finalXs[xi]; 90 | s.height = finalYs[yi + 1] - finalYs[yi]; 91 | 92 | (this.texture).renderXY(s, finalXs[xi], finalYs[yi]); 93 | } 94 | } 95 | } 96 | 97 | /** 98 | * Set the size of the container, then update all the parts 99 | * 100 | * @param width 101 | * @param height 102 | */ 103 | public resize(width:number, height:number):void { 104 | this.localWidth = width; 105 | this.localHeight = height; 106 | 107 | this.renderTexture(); 108 | } 109 | 110 | /** 111 | * Override the destroy to fix PIXI leaking CanvasBuffers 112 | * 113 | * @param args 114 | */ 115 | public destroy(...args: any[]): void { 116 | super.destroy(args[0]); 117 | this.texture.destroy(true); 118 | this.texture = null; 119 | this.baseTexture = null; 120 | this.baseFrame = null; 121 | } 122 | 123 | /** 124 | * Here we create a sprite part for the container based on the given input 125 | * 126 | * @param x 127 | * @param y 128 | * @param width 129 | * @param height 130 | * @returns {PIXI.Sprite} 131 | */ 132 | private createTexturePart(x:number, y:number, width:number, height:number): Phaser.Image { 133 | var frame = new PIXI.Rectangle( 134 | this.baseFrame.x + this.texture.frame.x + x, 135 | this.baseFrame.y + this.texture.frame.y + y, 136 | Math.max(width, 1), 137 | Math.max(height, 1) 138 | ); 139 | 140 | return new Phaser.Sprite(this.game, 0, 0, new PIXI.Texture(this.baseTexture, frame)); 141 | } 142 | } 143 | } -------------------------------------------------------------------------------- /ts/Plugin.ts: -------------------------------------------------------------------------------- 1 | module PhaserNineSlice { 2 | export interface NineSliceObjectFactory extends Phaser.GameObjectFactory { 3 | nineSlice: (x: number, y: number, key: string, frame: string, width: number, height: number, group?: Phaser.Group) => PhaserNineSlice.NineSlice; 4 | } 5 | export interface NineSliceObjectCreator extends Phaser.GameObjectCreator { 6 | nineSlice: (x: number, y: number, key: string, frame: string, width: number, height: number, group?: Phaser.Group) => PhaserNineSlice.NineSlice; 7 | } 8 | 9 | export interface NineSliceCache extends Phaser.Cache { 10 | addNineSlice: (key: string, data: NineSliceCacheData) => void; 11 | getNineSlice: (key: string) => NineSliceCacheData; 12 | nineSlice: {[key: string]: NineSliceCacheData}; 13 | } 14 | 15 | export interface NineSliceLoader extends Phaser.Loader { 16 | nineSlice: (key: string, url: string, top: number, left?: number, right?: number, bottom?: number) => void; 17 | cache: NineSliceCache; 18 | } 19 | 20 | export interface NineSliceGame extends Phaser.Game { 21 | add: NineSliceObjectFactory; 22 | load: NineSliceLoader; 23 | cache: NineSliceCache; 24 | } 25 | 26 | export interface NineSliceCacheData { 27 | top: number; 28 | bottom?: number; 29 | left?: number; 30 | right?: number; 31 | } 32 | 33 | export class Plugin extends Phaser.Plugin { 34 | constructor(game: Phaser.Game, parent: Phaser.PluginManager) { 35 | super(game, parent); 36 | 37 | this.addNineSliceCache(); 38 | this.addNineSliceFactory(); 39 | this.addNineSliceLoader(); 40 | } 41 | 42 | private addNineSliceLoader() { 43 | (Phaser.Loader.prototype).nineSlice = function (key: string, url: string, top: number, left?: number, right?: number, bottom?: number) { 44 | let cacheData: NineSliceCacheData = { 45 | top: top 46 | }; 47 | 48 | if (left) { 49 | cacheData.left = left; 50 | } 51 | 52 | if (right) { 53 | cacheData.right = right; 54 | } 55 | 56 | if (bottom) { 57 | cacheData.bottom = bottom; 58 | } 59 | 60 | this.addToFileList('image', key, url); 61 | 62 | this.game.cache.addNineSlice(key, cacheData); 63 | }; 64 | } 65 | 66 | /** 67 | * Extends the GameObjectFactory prototype with the support of adding NineSlice. this allows us to add NineSlice methods to the game just like any other object: 68 | * game.add.NineSlice(); 69 | */ 70 | private addNineSliceFactory() { 71 | (Phaser.GameObjectFactory.prototype).nineSlice = function (x: number, y: number, key: string, frame: string, width: number, height: number, group?: Phaser.Group): PhaserNineSlice.NineSlice { 72 | if (group === undefined) { 73 | group = this.world; 74 | } 75 | 76 | var nineSliceObject = new PhaserNineSlice.NineSlice(this.game, x, y, key, frame, width, height); 77 | 78 | return group.add(nineSliceObject); 79 | }; 80 | 81 | (Phaser.GameObjectCreator.prototype).nineSlice = function (x: number, y: number, key: string, frame: string, width: number, height: number): PhaserNineSlice.NineSlice { 82 | return new PhaserNineSlice.NineSlice(this.game, x, y, key, frame, width, height); 83 | }; 84 | } 85 | 86 | /** 87 | * Extends the Phaser.Cache prototype with NineSlice properties 88 | */ 89 | private addNineSliceCache(): void { 90 | //Create the cache space 91 | (Phaser.Cache.prototype).nineSlice = {}; 92 | 93 | //Method for adding a NineSlice dict to the cache space 94 | (Phaser.Cache.prototype).addNineSlice = function (key: string, data: any) { 95 | this.nineSlice[key] = data; 96 | }; 97 | 98 | //Method for fetching a NineSlice dict from the cache space 99 | (Phaser.Cache.prototype).getNineSlice = function (key: string): any { 100 | var data = this.nineSlice[key]; 101 | 102 | if (undefined === data) { 103 | console.warn('Phaser.Cache.getNineSlice: Key "' + key + '" not found in Cache.'); 104 | } 105 | 106 | return data; 107 | }; 108 | } 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /ts/definitions.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// --------------------------------------------------------------------------------