├── .gitignore
├── .travis.yml
├── Gruntfile.js
├── README.md
├── bower.json
├── dist
├── angular-content-editable.js
└── angular-content-editable.min.js
├── index.html
├── karma.conf.js
├── package-lock.json
├── package.json
├── src
├── angular-content-editable.directive.js
├── angular-content-editable.module.js
└── angular-content-editable.provider.js
├── style.css
└── test
└── angular-content-editable.directive.test.js
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | bower_components/
3 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - "lts/*"
4 |
--------------------------------------------------------------------------------
/Gruntfile.js:
--------------------------------------------------------------------------------
1 | module.exports = function(grunt) {
2 |
3 | grunt.initConfig({
4 |
5 | pkg: grunt.file.readJSON('package.json'),
6 |
7 | concat: {
8 | dist: {
9 | src: ['src/<%= pkg.name %>.module.js', 'src/<%= pkg.name %>.*.js'],
10 | dest: 'dist/<%= pkg.name %>.js',
11 | }
12 | },
13 |
14 | uglify: {
15 | options: {
16 | mangle: false
17 | },
18 | dist: {
19 | files: {
20 | 'dist/<%= pkg.name %>.min.js': ['dist/<%= pkg.name %>.js']
21 | }
22 | }
23 | },
24 |
25 | watch: {
26 | options: {
27 | spawn: false,
28 | livereload: true
29 | },
30 | files: ['src/**/*.js'],
31 | tasks: ['build'],
32 | },
33 |
34 | ngAnnotate: {
35 | options: {
36 | singleQuotes: true,
37 | },
38 | dist: {
39 | files: {
40 | 'dist/<%= pkg.name %>.js': ['dist/<%= pkg.name %>.js']
41 | }
42 | },
43 | },
44 |
45 | connect: {
46 | server: {
47 | options: {
48 | port: 8080,
49 | hostname: 'localhost',
50 | livereload: true,
51 | open: true
52 | }
53 | }
54 | }
55 |
56 | })
57 |
58 | grunt.loadNpmTasks('grunt-contrib-concat');
59 | grunt.loadNpmTasks('grunt-contrib-uglify');
60 | grunt.loadNpmTasks('grunt-contrib-watch');
61 | grunt.loadNpmTasks('grunt-contrib-connect');
62 | grunt.loadNpmTasks('grunt-ng-annotate');
63 |
64 | grunt.registerTask('default', ['connect', 'watch']);
65 | grunt.registerTask('build', ['concat', 'ngAnnotate', 'uglify']);
66 |
67 | }
68 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # angular-content-editable
2 | angular directive for modify in real time any html tag you want
3 |
4 | ### [DEMO](http://codekraft-studio.github.io/angular-content-editable/)
5 |
6 | ## Getting started:
7 | Download the package using npm:
8 | ```bash
9 | npm install angular-content-editable
10 | ```
11 |
12 | Download the package using bower:
13 | ```bash
14 | bower install angular-content-editable
15 | ```
16 |
17 | or directly from github.
18 |
19 | Add the script to your page dependencies:
20 | ```html
21 |
22 | ```
23 | And finally add __content-editable__ to your module dependencies:
24 | ```javascript
25 | angular.module('app', ['angular-content-editable'])
26 | ```
27 | and you are ready to go, add the directive to any element you want:
28 | ```html
29 | edit my text
30 | ```
31 |
32 | ---
33 |
34 | ## Directive attributes:
35 | * __single-line__: if set to true makes the enter key save and blur
36 | * __focus-select__: if set to true when element goes to focus, all the text inside will be selected
37 | * __render-html__: if set to true allow the text passed as input to be compiled and rendered
38 | * __edit-callback__: a callback that is called wherever the model value is changed
39 | * __is-editing__: optional argument that can be used to programatically enable/disable the editor
40 | * __strip-replace__: optional argument that can be `true` to remove all HTML tags and line breaks, `string` to remove or custom regular `expression`, or array with `expression` to match with `replacement` to and `flags` use: `['expression','replacement','flags']`
41 |
42 | Note that, __edit-callback__ has two arguments, that you must specify in your template to use them:
43 | * __text__: the new text inside the element
44 | * __elem__: the element that has been modified
45 |
46 | #### Example:
47 | ```html
48 |
49 | Some content
50 |
51 | ```
52 |
53 | ---
54 |
55 | ## Customizations:
56 | You can use the __contentEditableProvider__ to set the default settings for the directive, but you can always pass directly to the directive as attributes to override the defaults for that element.
57 | ```javascript
58 | angular.module('app')
59 | .config(function(contentEditableProvider) {
60 |
61 | contentEditableProvider.configure({
62 | singleLine: true // single line for all elements
63 | })
64 |
65 | })
66 | ```
67 |
68 | ---
69 |
70 | ## Example basic:
71 | Simply adding the directive makes the element fully editable.
72 | ```html
73 | Change me if you like.
74 | ```
75 | With __single-line__ attribute, when enter key is pressed the editing will finish (no line-breaks):
76 | ```html
77 | Change me anyway.
78 | ```
79 |
80 | With __focus-select__ all text content will be selected on element click or focus.
81 | ```html
82 | Change me!
83 | ```
84 |
85 | With __strip-replace__ attribute set as `boolean`:
86 | ```html
87 |
88 | Change me!I will become clear text without formating
89 | ```
90 |
91 | With __strip-replace__ attribute set as `array`:
92 | ```html
93 |
94 | Change me!
95 | ```
96 |
97 | If you want to run a callback you must use __edit-callback__ attribute with a valid function and it will run every time the model value is __changed__.
98 |
99 | Since version __1.2.0__, after issue [#13](https://github.com/codekraft-studio/angular-content-editable/issues/13) you __MUST__ specify the arguments `text, elem` if you want to use them in your callback, like in this example.
100 | ```html
101 | Change me!
102 | ```
103 | ```javascript
104 | angular.module('myApp')
105 | .controller(function($scope) {
106 |
107 | $scope.myFunc = function(text, elem) {
108 | // do something magic
109 | }
110 |
111 | })
112 | ```
113 |
114 | ---
115 |
116 | This gives the ability to __pass additional arguments__ to the callback, because is executed with the parent scope.
117 |
118 | ## Development:
119 | If you want to fork you copy of the project and modify it:
120 | ```text
121 | npm install angular-content-editable // install module files
122 | npm install // install dependencies
123 | ```
124 | Than a Gruntfile is ready with this actions:
125 | ```text
126 | grunt // watch to /src folder and rebuild the package
127 | grunt build // build the package for distribution
128 | ```
129 |
130 | ---
131 |
132 | ## Contributing
133 |
134 | 1. Create an issue and describe your idea
135 | 2. Fork the project (https://github.com/codekraft-studio/angular-content-editable/fork)
136 | 3. Create your feature branch (`git checkout -b my-new-feature`)
137 | 4. Get the development environment set up (`npm install`)
138 | 5. Commit your changes (`git commit -am 'Add some feature'`)
139 | 6. Add some test for your new feature (`npm test`)
140 | 7. Build the directive with the new changes (`grunt build`)
141 | 8. Publish the branch (`git push origin my-new-feature`)
142 | 9. Create a new Pull Request
143 |
--------------------------------------------------------------------------------
/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular-content-editable",
3 | "description": "modify in real time any html tag you want",
4 | "main": "dist/angular-content-editable.js",
5 | "authors": [
6 | "codekraft-studio"
7 | ],
8 | "license": "ISC",
9 | "keywords": [
10 | "angular",
11 | "directive"
12 | ],
13 | "homepage": "https://github.com/codekraft-studio/angular-content-editable",
14 | "ignore": [
15 | "**/.*",
16 | "node_modules",
17 | "bower_components",
18 | "test",
19 | "tests"
20 | ]
21 | }
22 |
--------------------------------------------------------------------------------
/dist/angular-content-editable.js:
--------------------------------------------------------------------------------
1 | angular.module('angular-content-editable', []);
2 |
3 | angular.module('angular-content-editable')
4 |
5 | .directive('contentEditable', ['$log', '$sce', '$parse', '$window', 'contentEditable', function ($log, $sce, $parse, $window, contentEditable) {
6 |
7 | var directive = {
8 | restrict: 'A',
9 | require: 'ngModel',
10 | scope: { editCallback: '&?', isEditing: '=?', stripReplace: '=?' },
11 | link: _link
12 | };
13 |
14 | return directive;
15 |
16 | function _link(scope, elem, attrs, ngModel) {
17 |
18 | // return if ng model not specified
19 | if(!ngModel) {
20 | $log.warn('Error: ngModel is required in elem: ', elem);
21 | return;
22 | }
23 |
24 | var noEscape = true, originalElement = elem[0], callback, stripReplace;
25 |
26 | // get default usage options
27 | var options = angular.copy(contentEditable);
28 |
29 | // update options with attributes
30 | angular.forEach(options, function (val, key) {
31 | if( key in attrs ) {
32 | options[key] = $parse(attrs[key])(scope);
33 | }
34 | });
35 |
36 | // Get the callback from item scope or global defined
37 | callback = scope.editCallback || options.editCallback;
38 |
39 | // Get the strip tags option from item scope or global defined
40 | stripReplace = scope.stripReplace || options.stripReplace;
41 |
42 | // add editable class
43 | attrs.$addClass(options.editableClass);
44 |
45 | scope.$watch('isEditing', function(newValue, oldValue) {
46 | if (newValue !== oldValue) {
47 | if (newValue) {
48 | originalElement.click();
49 | } else {
50 | originalElement.blur();
51 | }
52 | }
53 | });
54 |
55 | // render always with model value
56 | ngModel.$render = function() {
57 | elem.html( ngModel.$modelValue || elem.html() );
58 | };
59 |
60 | // handle click on element
61 | function onClick(e) {
62 | e.preventDefault();
63 | attrs.$set('contenteditable', 'true');
64 | attrs.$addClass('active');
65 | originalElement.focus();
66 | }
67 |
68 | // check some option extra
69 | // conditions during focus
70 | function onFocus(e) {
71 |
72 | // evalAsync in case a digest is already in progress (e.g. changing isEditing to true)
73 | scope.$evalAsync(function() {
74 |
75 | scope.isEditing = true;
76 |
77 | // turn on the flag
78 | noEscape = true;
79 |
80 | // select all on focus
81 | if( options.focusSelect ) {
82 | var range = $window.document.createRange();
83 | var selection = $window.getSelection();
84 | range.selectNodeContents( originalElement );
85 | selection.removeAllRanges();
86 | selection.addRange(range);
87 | }
88 |
89 | // if render-html is enabled convert
90 | // all text content to plaintext
91 | // in order to modify html tags
92 | if( options.renderHtml ) {
93 | originalElement.textContent = elem.html();
94 | }
95 |
96 | });
97 |
98 | }
99 |
100 | function onBlur(e) {
101 |
102 | scope.$apply(function() {
103 |
104 | // the text
105 | var html;
106 |
107 | scope.isEditing = false;
108 |
109 | // remove active class when editing is over
110 | attrs.$removeClass('active');
111 |
112 | // disable editability
113 | attrs.$set('contenteditable', 'false');
114 |
115 | // if text needs to be rendered as html
116 | if( options.renderHtml && noEscape ) {
117 | // get plain text html (with html tags)
118 | // replace all blank spaces
119 | html = originalElement.textContent.replace(/\u00a0/g, " ");
120 | // update elem html value
121 | elem.html(html);
122 |
123 | } else {
124 | // get element content replacing html tag
125 | html = elem.html().replace(/ /g, ' ');
126 | }
127 |
128 | // if element value is different from model value
129 | if( html != ngModel.$modelValue ) {
130 |
131 | // if user defined strip-replace variable
132 | if( stripReplace ){
133 | if( angular.isString(stripReplace) ) {
134 | // if stripReplace is a string create new RegExp with gi (global, ignore case)
135 | html = html.replace( new RegExp( stripReplace, 'g' ), '' );
136 | }else if( angular.isArray(stripReplace) ){
137 | // if stripReplace is an array create new RegExp from array values
138 | // get values from array or set default
139 | var e = stripReplace[0] || '', r = stripReplace[1] || '', f = stripReplace[2] || 'g';
140 | html = html.replace( new RegExp( e, f ), r );
141 | }else{
142 | // if stripReplace is set to "true", remove all html tags and new line breaks
143 | html = html.replace(/(<([^>]+)>)/ig, '').replace(/\r?\n|\r/g, '');
144 | }
145 | // update elem html value
146 | elem.html(html);
147 | }
148 |
149 | /**
150 | * This method should be called
151 | * when a controller wants to
152 | * change the view value
153 | */
154 | ngModel.$setViewValue(html);
155 |
156 | // if user passed a variable
157 | // and is a function
158 | if( callback && angular.isFunction(callback) ) {
159 |
160 | // run the callback with arguments: current text and element
161 | return callback({
162 | text: html,
163 | elem: elem
164 | });
165 |
166 | }
167 |
168 | }
169 |
170 | });
171 |
172 | }
173 |
174 | function onKeyDown(e) {
175 |
176 | // on tab key blur and
177 | // TODO: focus to next
178 | if( e.which == 9 ) {
179 | originalElement.blur();
180 | return;
181 | }
182 |
183 | // on esc key roll back value and blur
184 | if( e.which == 27 ) {
185 | ngModel.$rollbackViewValue();
186 | noEscape = false;
187 | return originalElement.blur();
188 | }
189 |
190 | // if single line or ctrl key is
191 | // pressed trigger the blur event
192 | if( e.which == 13 && (options.singleLine || e.ctrlKey) ) {
193 | return originalElement.blur();
194 | }
195 |
196 | }
197 |
198 | /**
199 | * On click turn the element
200 | * to editable and focus it
201 | */
202 | elem.on('click', onClick);
203 |
204 | /**
205 | * On element focus
206 | */
207 | elem.on('focus', onFocus);
208 |
209 | /**
210 | * On element blur turn off
211 | * editable mode, if HTML, render
212 | * update model value and run callback
213 | * if specified
214 | */
215 | elem.on('blur', onBlur);
216 |
217 | /**
218 | * Bind the keydown event for many functions
219 | */
220 | elem.on('keydown', onKeyDown);
221 |
222 | /**
223 | * On element destroy, remove all event
224 | * listeners related to the directive
225 | * (helps to prevent memory leaks)
226 | */
227 | scope.$on('$destroy', function () {
228 | elem.off('click', onClick);
229 | elem.off('focus', onFocus);
230 | elem.off('blur', onBlur);
231 | elem.off('keydown', onKeyDown);
232 | });
233 |
234 | }
235 |
236 | }]);
237 |
238 | angular.module('angular-content-editable')
239 |
240 | /**
241 | * Provider to setup the default
242 | * module options for the directive
243 | */
244 | .provider('contentEditable', function () {
245 |
246 | var defaults = {
247 | editableClass: 'editable',
248 | keyBindings: true, // default true for key shortcuts
249 | singleLine: false,
250 | focusSelect: true, // default on focus select all text inside
251 | renderHtml: false,
252 | editCallback: false,
253 | stripReplace: false
254 | }
255 |
256 | this.configure = function (options) {
257 | return angular.extend(defaults, options);
258 | }
259 |
260 | this.$get = function () {
261 | return defaults;
262 | }
263 |
264 | });
265 |
--------------------------------------------------------------------------------
/dist/angular-content-editable.min.js:
--------------------------------------------------------------------------------
1 | angular.module("angular-content-editable",[]),angular.module("angular-content-editable").directive("contentEditable",["$log","$sce","$parse","$window","contentEditable",function($log,$sce,$parse,$window,contentEditable){function _link(scope,elem,attrs,ngModel){function onClick(e){e.preventDefault(),attrs.$set("contenteditable","true"),attrs.$addClass("active"),originalElement.focus()}function onFocus(e){scope.$evalAsync(function(){if(scope.isEditing=!0,noEscape=!0,options.focusSelect){var range=$window.document.createRange(),selection=$window.getSelection();range.selectNodeContents(originalElement),selection.removeAllRanges(),selection.addRange(range)}options.renderHtml&&(originalElement.textContent=elem.html())})}function onBlur(e){scope.$apply(function(){var html;if(scope.isEditing=!1,attrs.$removeClass("active"),attrs.$set("contenteditable","false"),options.renderHtml&&noEscape?(html=originalElement.textContent.replace(/\u00a0/g," "),elem.html(html)):html=elem.html().replace(/ /g," "),html!=ngModel.$modelValue){if(stripReplace){if(angular.isString(stripReplace))html=html.replace(new RegExp(stripReplace,"g"),"");else if(angular.isArray(stripReplace)){var e=stripReplace[0]||"",r=stripReplace[1]||"",f=stripReplace[2]||"g";html=html.replace(new RegExp(e,f),r)}else html=html.replace(/(<([^>]+)>)/gi,"").replace(/\r?\n|\r/g,"");elem.html(html)}if(ngModel.$setViewValue(html),callback&&angular.isFunction(callback))return callback({text:html,elem:elem})}})}function onKeyDown(e){return 9==e.which?void originalElement.blur():27==e.which?(ngModel.$rollbackViewValue(),noEscape=!1,originalElement.blur()):13==e.which&&(options.singleLine||e.ctrlKey)?originalElement.blur():void 0}if(!ngModel)return void $log.warn("Error: ngModel is required in elem: ",elem);var callback,stripReplace,noEscape=!0,originalElement=elem[0],options=angular.copy(contentEditable);angular.forEach(options,function(val,key){key in attrs&&(options[key]=$parse(attrs[key])(scope))}),callback=scope.editCallback||options.editCallback,stripReplace=scope.stripReplace||options.stripReplace,attrs.$addClass(options.editableClass),scope.$watch("isEditing",function(newValue,oldValue){newValue!==oldValue&&(newValue?originalElement.click():originalElement.blur())}),ngModel.$render=function(){elem.html(ngModel.$modelValue||elem.html())},elem.on("click",onClick),elem.on("focus",onFocus),elem.on("blur",onBlur),elem.on("keydown",onKeyDown),scope.$on("$destroy",function(){elem.off("click",onClick),elem.off("focus",onFocus),elem.off("blur",onBlur),elem.off("keydown",onKeyDown)})}return{restrict:"A",require:"ngModel",scope:{editCallback:"&?",isEditing:"=?",stripReplace:"=?"},link:_link}}]),angular.module("angular-content-editable").provider("contentEditable",function(){var defaults={editableClass:"editable",keyBindings:!0,singleLine:!1,focusSelect:!0,renderHtml:!1,editCallback:!1,stripReplace:!1};this.configure=function(options){return angular.extend(defaults,options)},this.$get=function(){return defaults}});
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | AngularJs Content Editable - codekraft studio
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
28 |
29 |
30 |
31 |
32 |
39 |
40 |
41 |
42 |
43 | Dis is a editablle mispelld header, correkt me.
44 |
45 |
46 |
47 | The header above is enabled with the directive content-editable and you can correct it by clicking.
48 | This is a normal non-editable paragraph instead. All the other paragraphs, but it can be anything, can be edited
49 | simply by clicking on it.
50 |
51 |
52 |
53 | All the elements with the directive will get the content-editable class by default, you can specify your own class with the editable-class attribute.
54 | In this example the class change the background color on hover, to easier understand which is editable and which is not.
55 |
56 |
57 |
58 | This paragraph has the focus-select attribute, this means when you focus or click on it, it will auto select all text inside.
59 | So, you can easily edit it by clicking it and pressing Backspace to erase all text selected.
60 | And remember, if you made a mess and you want to undo the changes simply press Esc and rollback to previous value.
61 |
62 |
63 |
64 | This element is enabled with the render-html attribute that allow to modify the html code of the content.
65 | Try clicking somewhere and you will see how it works!
66 |
67 |
68 |
69 | If you specify a valid function inside a edit callback attribute every time your model change, the callback will run
70 | and you can make her doing all types of crazy things, like: saving the data just changed with a ajax http request , or save the data in local storage like in the example showed in this page
71 |
72 |
73 |
74 | If you specify array or simply "true" inside a strip replace attribute every time your model change,
75 | the text will be stripped of all html tags, in case of setting strip replace to "true".
76 | If you specify array, the array will be converted to regular expression and the text will be matched (and changed) to your parametters.
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
117 |
118 |
--------------------------------------------------------------------------------
/karma.conf.js:
--------------------------------------------------------------------------------
1 | // Karma configuration
2 | // Generated on Fri Apr 28 2017 21:32:38 GMT+0200 (W. Europe Daylight Time)
3 |
4 | module.exports = function(config) {
5 | config.set({
6 |
7 | // base path that will be used to resolve all patterns (eg. files, exclude)
8 | basePath: '',
9 |
10 | // frameworks to use
11 | // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
12 | frameworks: ['jasmine'],
13 |
14 | // list of files / patterns to load in the browser
15 | files: [
16 | 'node_modules/angular/angular.js',
17 | 'node_modules/angular-mocks/angular-mocks.js',
18 | 'src/*.module.js',
19 | 'src/*.js',
20 | 'test/*.test.js'
21 | ],
22 |
23 | // list of files to exclude
24 | exclude: [
25 | ],
26 |
27 | // preprocess matching files before serving them to the browser
28 | // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
29 | preprocessors: {
30 | },
31 |
32 | // test results reporter to use
33 | // possible values: 'dots', 'progress'
34 | // available reporters: https://npmjs.org/browse/keyword/karma-reporter
35 | reporters: ['progress'],
36 |
37 | // web server port
38 | port: 9876,
39 |
40 | // enable / disable colors in the output (reporters and logs)
41 | colors: true,
42 |
43 | // level of logging
44 | // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
45 | logLevel: config.LOG_INFO,
46 |
47 | // enable / disable watching file and executing tests whenever any file changes
48 | autoWatch: true,
49 |
50 | // start these browsers
51 | // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
52 | browsers: ['PhantomJS'],
53 |
54 | // Continuous Integration mode
55 | // if true, Karma captures browsers, runs the tests and exits
56 | singleRun: false,
57 |
58 | // Concurrency level
59 | // how many browser should be started simultaneous
60 | concurrency: Infinity
61 | });
62 | };
63 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular-content-editable",
3 | "version": "1.2.3",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "abbrev": {
8 | "version": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz",
9 | "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=",
10 | "dev": true
11 | },
12 | "accepts": {
13 | "version": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
14 | "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=",
15 | "dev": true,
16 | "requires": {
17 | "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
18 | "negotiator": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz"
19 | }
20 | },
21 | "acorn": {
22 | "version": "https://registry.npmjs.org/acorn/-/acorn-2.6.4.tgz",
23 | "integrity": "sha1-6x9FtKQ/ox0DcBpexG87Umc+kO4=",
24 | "dev": true
25 | },
26 | "align-text": {
27 | "version": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
28 | "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
29 | "dev": true,
30 | "requires": {
31 | "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.0.tgz",
32 | "longest": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
33 | "repeat-string": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz"
34 | }
35 | },
36 | "alter": {
37 | "version": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz",
38 | "integrity": "sha1-x1iICGF1cgNKrmJICvJrHU0cs80=",
39 | "dev": true,
40 | "requires": {
41 | "stable": "https://registry.npmjs.org/stable/-/stable-0.1.6.tgz"
42 | }
43 | },
44 | "angular": {
45 | "version": "1.6.5",
46 | "resolved": "https://registry.npmjs.org/angular/-/angular-1.6.5.tgz",
47 | "integrity": "sha1-N/eI7r7Fzi4/oCsXu8sqIxV2oNY=",
48 | "dev": true
49 | },
50 | "angular-mocks": {
51 | "version": "1.6.5",
52 | "resolved": "https://registry.npmjs.org/angular-mocks/-/angular-mocks-1.6.5.tgz",
53 | "integrity": "sha1-xi+AFMxtPtP9Gzg6Y0ygAJrz7+4=",
54 | "dev": true
55 | },
56 | "ansi-regex": {
57 | "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
58 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
59 | "dev": true
60 | },
61 | "ansi-styles": {
62 | "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
63 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
64 | "dev": true
65 | },
66 | "argparse": {
67 | "version": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz",
68 | "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=",
69 | "dev": true,
70 | "requires": {
71 | "underscore": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz",
72 | "underscore.string": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz"
73 | },
74 | "dependencies": {
75 | "underscore.string": {
76 | "version": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz",
77 | "integrity": "sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs=",
78 | "dev": true
79 | }
80 | }
81 | },
82 | "array-find-index": {
83 | "version": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
84 | "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
85 | "dev": true
86 | },
87 | "asn1": {
88 | "version": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
89 | "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
90 | "dev": true
91 | },
92 | "assert-plus": {
93 | "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
94 | "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
95 | "dev": true
96 | },
97 | "async": {
98 | "version": "https://registry.npmjs.org/async/-/async-0.1.22.tgz",
99 | "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=",
100 | "dev": true
101 | },
102 | "asynckit": {
103 | "version": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
104 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
105 | "dev": true
106 | },
107 | "aws-sign2": {
108 | "version": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
109 | "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
110 | "dev": true
111 | },
112 | "aws4": {
113 | "version": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
114 | "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=",
115 | "dev": true
116 | },
117 | "balanced-match": {
118 | "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
119 | "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
120 | "dev": true
121 | },
122 | "basic-auth": {
123 | "version": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz",
124 | "integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ=",
125 | "dev": true
126 | },
127 | "batch": {
128 | "version": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz",
129 | "integrity": "sha1-PzQU84AyF0O/wQQvmoP/HVgk1GQ=",
130 | "dev": true
131 | },
132 | "bcrypt-pbkdf": {
133 | "version": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
134 | "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
135 | "dev": true,
136 | "optional": true,
137 | "requires": {
138 | "tweetnacl": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz"
139 | }
140 | },
141 | "body-parser": {
142 | "version": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.2.tgz",
143 | "integrity": "sha1-EBXLH+LEQ4WCWVgdtTMy+NDPUPk=",
144 | "dev": true,
145 | "requires": {
146 | "bytes": "https://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz",
147 | "content-type": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz",
148 | "debug": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
149 | "depd": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz",
150 | "http-errors": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz",
151 | "iconv-lite": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz",
152 | "on-finished": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
153 | "qs": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz",
154 | "raw-body": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz",
155 | "type-is": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz"
156 | },
157 | "dependencies": {
158 | "debug": {
159 | "version": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
160 | "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
161 | "dev": true,
162 | "requires": {
163 | "ms": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
164 | }
165 | },
166 | "http-errors": {
167 | "version": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz",
168 | "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=",
169 | "dev": true,
170 | "requires": {
171 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
172 | "statuses": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz"
173 | }
174 | },
175 | "iconv-lite": {
176 | "version": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz",
177 | "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=",
178 | "dev": true
179 | },
180 | "ms": {
181 | "version": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
182 | "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
183 | "dev": true
184 | },
185 | "qs": {
186 | "version": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz",
187 | "integrity": "sha1-qfMRQq9GjLcrJbMBNrokVoNJFr4=",
188 | "dev": true
189 | }
190 | }
191 | },
192 | "boom": {
193 | "version": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
194 | "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
195 | "dev": true,
196 | "requires": {
197 | "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz"
198 | }
199 | },
200 | "brace-expansion": {
201 | "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz",
202 | "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=",
203 | "dev": true,
204 | "requires": {
205 | "balanced-match": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
206 | "concat-map": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
207 | }
208 | },
209 | "browserify-zlib": {
210 | "version": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
211 | "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
212 | "dev": true,
213 | "requires": {
214 | "pako": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz"
215 | }
216 | },
217 | "buffer-shims": {
218 | "version": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz",
219 | "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=",
220 | "dev": true
221 | },
222 | "builtin-modules": {
223 | "version": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
224 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
225 | "dev": true
226 | },
227 | "bytes": {
228 | "version": "https://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz",
229 | "integrity": "sha1-/TVGSkA/b5EXwt42Cez/nK4ABYg=",
230 | "dev": true
231 | },
232 | "camelcase": {
233 | "version": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
234 | "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
235 | "dev": true
236 | },
237 | "camelcase-keys": {
238 | "version": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
239 | "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
240 | "dev": true,
241 | "requires": {
242 | "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
243 | "map-obj": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz"
244 | }
245 | },
246 | "caseless": {
247 | "version": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
248 | "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=",
249 | "dev": true
250 | },
251 | "center-align": {
252 | "version": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
253 | "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
254 | "dev": true,
255 | "requires": {
256 | "align-text": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
257 | "lazy-cache": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz"
258 | }
259 | },
260 | "chalk": {
261 | "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
262 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
263 | "dev": true,
264 | "requires": {
265 | "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
266 | "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
267 | "has-ansi": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
268 | "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
269 | "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"
270 | }
271 | },
272 | "cliui": {
273 | "version": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
274 | "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
275 | "dev": true,
276 | "requires": {
277 | "center-align": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
278 | "right-align": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
279 | "wordwrap": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz"
280 | }
281 | },
282 | "coffee-script": {
283 | "version": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz",
284 | "integrity": "sha1-FQ1rTLUiiUNp7+1qIQHCC8f0pPQ=",
285 | "dev": true
286 | },
287 | "colors": {
288 | "version": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
289 | "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=",
290 | "dev": true
291 | },
292 | "combined-stream": {
293 | "version": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
294 | "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
295 | "dev": true,
296 | "requires": {
297 | "delayed-stream": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
298 | }
299 | },
300 | "commander": {
301 | "version": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
302 | "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
303 | "dev": true,
304 | "requires": {
305 | "graceful-readlink": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz"
306 | }
307 | },
308 | "concat-map": {
309 | "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
310 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
311 | "dev": true
312 | },
313 | "concat-stream": {
314 | "version": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
315 | "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
316 | "dev": true,
317 | "requires": {
318 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
319 | "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz",
320 | "typedarray": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"
321 | }
322 | },
323 | "connect": {
324 | "version": "https://registry.npmjs.org/connect/-/connect-3.6.1.tgz",
325 | "integrity": "sha1-t3YGk6dPBFT6zh2TeO2z+IW0Mic=",
326 | "dev": true,
327 | "requires": {
328 | "debug": "https://registry.npmjs.org/debug/-/debug-2.6.3.tgz",
329 | "finalhandler": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.1.tgz",
330 | "parseurl": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz",
331 | "utils-merge": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz"
332 | }
333 | },
334 | "connect-livereload": {
335 | "version": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz",
336 | "integrity": "sha1-gBV9E3HJ83zBQDmrGJWXDRGdw7w=",
337 | "dev": true
338 | },
339 | "content-type": {
340 | "version": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz",
341 | "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=",
342 | "dev": true
343 | },
344 | "convert-source-map": {
345 | "version": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz",
346 | "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=",
347 | "dev": true
348 | },
349 | "core-util-is": {
350 | "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
351 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
352 | "dev": true
353 | },
354 | "cryptiles": {
355 | "version": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
356 | "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
357 | "dev": true,
358 | "requires": {
359 | "boom": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz"
360 | }
361 | },
362 | "currently-unhandled": {
363 | "version": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
364 | "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
365 | "dev": true,
366 | "requires": {
367 | "array-find-index": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz"
368 | }
369 | },
370 | "dashdash": {
371 | "version": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
372 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
373 | "dev": true,
374 | "requires": {
375 | "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz"
376 | },
377 | "dependencies": {
378 | "assert-plus": {
379 | "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
380 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
381 | "dev": true
382 | }
383 | }
384 | },
385 | "dateformat": {
386 | "version": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz",
387 | "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk=",
388 | "dev": true
389 | },
390 | "debug": {
391 | "version": "https://registry.npmjs.org/debug/-/debug-2.6.3.tgz",
392 | "integrity": "sha1-D364wwll7AjHKsz6ATDIt5mEFB0=",
393 | "dev": true,
394 | "requires": {
395 | "ms": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz"
396 | }
397 | },
398 | "decamelize": {
399 | "version": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
400 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
401 | "dev": true
402 | },
403 | "delayed-stream": {
404 | "version": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
405 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
406 | "dev": true
407 | },
408 | "depd": {
409 | "version": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz",
410 | "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=",
411 | "dev": true
412 | },
413 | "destroy": {
414 | "version": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
415 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
416 | "dev": true
417 | },
418 | "ecc-jsbn": {
419 | "version": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
420 | "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
421 | "dev": true,
422 | "optional": true,
423 | "requires": {
424 | "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz"
425 | }
426 | },
427 | "ee-first": {
428 | "version": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
429 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
430 | "dev": true
431 | },
432 | "encodeurl": {
433 | "version": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
434 | "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=",
435 | "dev": true
436 | },
437 | "error-ex": {
438 | "version": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
439 | "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
440 | "dev": true,
441 | "requires": {
442 | "is-arrayish": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz"
443 | }
444 | },
445 | "es6-promise": {
446 | "version": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.0.5.tgz",
447 | "integrity": "sha1-eILzCt3lskDM+n99eMVIMwlRrkI=",
448 | "dev": true
449 | },
450 | "escape-html": {
451 | "version": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
452 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
453 | "dev": true
454 | },
455 | "escape-string-regexp": {
456 | "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
457 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
458 | "dev": true
459 | },
460 | "esprima": {
461 | "version": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
462 | "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=",
463 | "dev": true
464 | },
465 | "etag": {
466 | "version": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz",
467 | "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=",
468 | "dev": true
469 | },
470 | "eventemitter2": {
471 | "version": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
472 | "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=",
473 | "dev": true
474 | },
475 | "exit": {
476 | "version": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
477 | "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
478 | "dev": true
479 | },
480 | "extend": {
481 | "version": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
482 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
483 | "dev": true
484 | },
485 | "extract-zip": {
486 | "version": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz",
487 | "integrity": "sha1-ksz22B73Cp+kwXRxFMzvbYaIpsQ=",
488 | "dev": true,
489 | "requires": {
490 | "concat-stream": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz",
491 | "debug": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz",
492 | "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz",
493 | "yauzl": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz"
494 | },
495 | "dependencies": {
496 | "concat-stream": {
497 | "version": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz",
498 | "integrity": "sha1-U/fUPFHF5D+ByP3QMyHGMb5o1hE=",
499 | "dev": true,
500 | "requires": {
501 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
502 | "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
503 | "typedarray": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"
504 | }
505 | },
506 | "debug": {
507 | "version": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz",
508 | "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=",
509 | "dev": true
510 | },
511 | "readable-stream": {
512 | "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
513 | "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
514 | "dev": true,
515 | "requires": {
516 | "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
517 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
518 | "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
519 | "process-nextick-args": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
520 | "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
521 | "util-deprecate": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
522 | }
523 | },
524 | "string_decoder": {
525 | "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
526 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
527 | "dev": true
528 | }
529 | }
530 | },
531 | "extsprintf": {
532 | "version": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz",
533 | "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=",
534 | "dev": true
535 | },
536 | "faye-websocket": {
537 | "version": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
538 | "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
539 | "dev": true,
540 | "requires": {
541 | "websocket-driver": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz"
542 | }
543 | },
544 | "fd-slicer": {
545 | "version": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
546 | "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
547 | "dev": true,
548 | "requires": {
549 | "pend": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz"
550 | }
551 | },
552 | "figures": {
553 | "version": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
554 | "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
555 | "dev": true,
556 | "requires": {
557 | "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
558 | "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
559 | }
560 | },
561 | "finalhandler": {
562 | "version": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.1.tgz",
563 | "integrity": "sha1-vNFdFonA5e1ym29/VBpt+YQRfbg=",
564 | "dev": true,
565 | "requires": {
566 | "debug": "https://registry.npmjs.org/debug/-/debug-2.6.3.tgz",
567 | "encodeurl": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
568 | "escape-html": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
569 | "on-finished": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
570 | "parseurl": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz",
571 | "statuses": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
572 | "unpipe": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
573 | }
574 | },
575 | "find-up": {
576 | "version": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
577 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
578 | "dev": true,
579 | "requires": {
580 | "path-exists": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
581 | "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz"
582 | }
583 | },
584 | "findup-sync": {
585 | "version": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz",
586 | "integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=",
587 | "dev": true,
588 | "requires": {
589 | "glob": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
590 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz"
591 | },
592 | "dependencies": {
593 | "glob": {
594 | "version": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
595 | "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=",
596 | "dev": true,
597 | "requires": {
598 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
599 | "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz"
600 | }
601 | },
602 | "lodash": {
603 | "version": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
604 | "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
605 | "dev": true
606 | },
607 | "minimatch": {
608 | "version": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
609 | "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=",
610 | "dev": true,
611 | "requires": {
612 | "lru-cache": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
613 | "sigmund": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz"
614 | }
615 | }
616 | }
617 | },
618 | "forever-agent": {
619 | "version": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
620 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
621 | "dev": true
622 | },
623 | "form-data": {
624 | "version": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
625 | "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
626 | "dev": true,
627 | "requires": {
628 | "asynckit": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
629 | "combined-stream": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
630 | "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz"
631 | }
632 | },
633 | "fresh": {
634 | "version": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz",
635 | "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=",
636 | "dev": true
637 | },
638 | "fs-extra": {
639 | "version": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz",
640 | "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=",
641 | "dev": true,
642 | "requires": {
643 | "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
644 | "jsonfile": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
645 | "klaw": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz"
646 | },
647 | "dependencies": {
648 | "graceful-fs": {
649 | "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
650 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
651 | "dev": true
652 | }
653 | }
654 | },
655 | "fs.realpath": {
656 | "version": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
657 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
658 | "dev": true
659 | },
660 | "gaze": {
661 | "version": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz",
662 | "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=",
663 | "dev": true,
664 | "requires": {
665 | "globule": "https://registry.npmjs.org/globule/-/globule-1.1.0.tgz"
666 | }
667 | },
668 | "generate-function": {
669 | "version": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
670 | "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=",
671 | "dev": true
672 | },
673 | "generate-object-property": {
674 | "version": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
675 | "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
676 | "dev": true,
677 | "requires": {
678 | "is-property": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz"
679 | }
680 | },
681 | "get-stdin": {
682 | "version": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
683 | "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
684 | "dev": true
685 | },
686 | "getobject": {
687 | "version": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz",
688 | "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=",
689 | "dev": true
690 | },
691 | "getpass": {
692 | "version": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
693 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
694 | "dev": true,
695 | "requires": {
696 | "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz"
697 | },
698 | "dependencies": {
699 | "assert-plus": {
700 | "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
701 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
702 | "dev": true
703 | }
704 | }
705 | },
706 | "glob": {
707 | "version": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz",
708 | "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
709 | "dev": true,
710 | "requires": {
711 | "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
712 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz",
713 | "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz"
714 | },
715 | "dependencies": {
716 | "inherits": {
717 | "version": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz",
718 | "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=",
719 | "dev": true
720 | }
721 | }
722 | },
723 | "globule": {
724 | "version": "https://registry.npmjs.org/globule/-/globule-1.1.0.tgz",
725 | "integrity": "sha1-xJNS5NwYPYWJPuglOF65lLtt9F8=",
726 | "dev": true,
727 | "requires": {
728 | "glob": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz",
729 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.16.6.tgz",
730 | "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz"
731 | },
732 | "dependencies": {
733 | "glob": {
734 | "version": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz",
735 | "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=",
736 | "dev": true,
737 | "requires": {
738 | "fs.realpath": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
739 | "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
740 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
741 | "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz",
742 | "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
743 | "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
744 | }
745 | },
746 | "lodash": {
747 | "version": "https://registry.npmjs.org/lodash/-/lodash-4.16.6.tgz",
748 | "integrity": "sha1-0iyaxmAojzhD4Wun0rXQbMon13c=",
749 | "dev": true
750 | },
751 | "minimatch": {
752 | "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz",
753 | "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=",
754 | "dev": true,
755 | "requires": {
756 | "brace-expansion": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz"
757 | }
758 | }
759 | }
760 | },
761 | "graceful-fs": {
762 | "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
763 | "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=",
764 | "dev": true
765 | },
766 | "graceful-readlink": {
767 | "version": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
768 | "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
769 | "dev": true
770 | },
771 | "grunt": {
772 | "version": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz",
773 | "integrity": "sha1-VpN81RlDJK3/bSB2MYMqnWuk5/A=",
774 | "dev": true,
775 | "requires": {
776 | "async": "https://registry.npmjs.org/async/-/async-0.1.22.tgz",
777 | "coffee-script": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz",
778 | "colors": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
779 | "dateformat": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz",
780 | "eventemitter2": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
781 | "exit": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
782 | "findup-sync": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz",
783 | "getobject": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz",
784 | "glob": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz",
785 | "grunt-legacy-log": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz",
786 | "grunt-legacy-util": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz",
787 | "hooker": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
788 | "iconv-lite": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz",
789 | "js-yaml": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz",
790 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz",
791 | "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
792 | "nopt": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
793 | "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
794 | "underscore.string": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz",
795 | "which": "https://registry.npmjs.org/which/-/which-1.0.9.tgz"
796 | }
797 | },
798 | "grunt-contrib-concat": {
799 | "version": "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-1.0.1.tgz",
800 | "integrity": "sha1-YVCYYwhOhx1+ht5IwBUlntl3Rb0=",
801 | "dev": true,
802 | "requires": {
803 | "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
804 | "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz"
805 | }
806 | },
807 | "grunt-contrib-connect": {
808 | "version": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-1.0.2.tgz",
809 | "integrity": "sha1-XPkzuRpnOGBEJzwLJERgPNmIebo=",
810 | "dev": true,
811 | "requires": {
812 | "async": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
813 | "connect": "https://registry.npmjs.org/connect/-/connect-3.6.1.tgz",
814 | "connect-livereload": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz",
815 | "http2": "https://registry.npmjs.org/http2/-/http2-3.3.6.tgz",
816 | "morgan": "https://registry.npmjs.org/morgan/-/morgan-1.8.1.tgz",
817 | "opn": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz",
818 | "portscanner": "https://registry.npmjs.org/portscanner/-/portscanner-1.2.0.tgz",
819 | "serve-index": "https://registry.npmjs.org/serve-index/-/serve-index-1.8.0.tgz",
820 | "serve-static": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.2.tgz"
821 | },
822 | "dependencies": {
823 | "async": {
824 | "version": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
825 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
826 | "dev": true
827 | }
828 | }
829 | },
830 | "grunt-contrib-uglify": {
831 | "version": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.9.2.tgz",
832 | "integrity": "sha1-GmHG8hJBDkq7T3yJFTcXsQFWAmA=",
833 | "dev": true,
834 | "requires": {
835 | "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
836 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
837 | "maxmin": "https://registry.npmjs.org/maxmin/-/maxmin-1.1.0.tgz",
838 | "uglify-js": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.22.tgz",
839 | "uri-path": "https://registry.npmjs.org/uri-path/-/uri-path-0.0.2.tgz"
840 | },
841 | "dependencies": {
842 | "lodash": {
843 | "version": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
844 | "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
845 | "dev": true
846 | }
847 | }
848 | },
849 | "grunt-contrib-watch": {
850 | "version": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.0.0.tgz",
851 | "integrity": "sha1-hKGnodar0m7VaEE0lscxM+mQAY8=",
852 | "dev": true,
853 | "requires": {
854 | "async": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
855 | "gaze": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz",
856 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
857 | "tiny-lr": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.2.1.tgz"
858 | },
859 | "dependencies": {
860 | "async": {
861 | "version": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
862 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
863 | "dev": true
864 | },
865 | "lodash": {
866 | "version": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
867 | "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
868 | "dev": true
869 | }
870 | }
871 | },
872 | "grunt-legacy-log": {
873 | "version": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz",
874 | "integrity": "sha1-7ClCboAwIa9ZAp+H0vnNczWgVTE=",
875 | "dev": true,
876 | "requires": {
877 | "colors": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
878 | "grunt-legacy-log-utils": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz",
879 | "hooker": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
880 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
881 | "underscore.string": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz"
882 | },
883 | "dependencies": {
884 | "lodash": {
885 | "version": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
886 | "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
887 | "dev": true
888 | },
889 | "underscore.string": {
890 | "version": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
891 | "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=",
892 | "dev": true
893 | }
894 | }
895 | },
896 | "grunt-legacy-log-utils": {
897 | "version": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz",
898 | "integrity": "sha1-wHBrndkGThFvNvI/5OawSGcsD34=",
899 | "dev": true,
900 | "requires": {
901 | "colors": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
902 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
903 | "underscore.string": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz"
904 | },
905 | "dependencies": {
906 | "lodash": {
907 | "version": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
908 | "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
909 | "dev": true
910 | },
911 | "underscore.string": {
912 | "version": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
913 | "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=",
914 | "dev": true
915 | }
916 | }
917 | },
918 | "grunt-legacy-util": {
919 | "version": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz",
920 | "integrity": "sha1-kzJIhNv343qf98Am3/RR2UqeVUs=",
921 | "dev": true,
922 | "requires": {
923 | "async": "https://registry.npmjs.org/async/-/async-0.1.22.tgz",
924 | "exit": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
925 | "getobject": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz",
926 | "hooker": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
927 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz",
928 | "underscore.string": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz",
929 | "which": "https://registry.npmjs.org/which/-/which-1.0.9.tgz"
930 | }
931 | },
932 | "grunt-ng-annotate": {
933 | "version": "https://registry.npmjs.org/grunt-ng-annotate/-/grunt-ng-annotate-3.0.0.tgz",
934 | "integrity": "sha1-dqKiGha6Y+Vve+G3XuXErZMCeTk=",
935 | "dev": true,
936 | "requires": {
937 | "lodash.clonedeep": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
938 | "ng-annotate": "https://registry.npmjs.org/ng-annotate/-/ng-annotate-1.2.1.tgz"
939 | }
940 | },
941 | "gzip-size": {
942 | "version": "https://registry.npmjs.org/gzip-size/-/gzip-size-1.0.0.tgz",
943 | "integrity": "sha1-Zs+LEBBHInuVus5uodoMF37Vwi8=",
944 | "dev": true,
945 | "requires": {
946 | "browserify-zlib": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
947 | "concat-stream": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz"
948 | }
949 | },
950 | "har-validator": {
951 | "version": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
952 | "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
953 | "dev": true,
954 | "requires": {
955 | "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
956 | "commander": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
957 | "is-my-json-valid": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz",
958 | "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz"
959 | }
960 | },
961 | "has-ansi": {
962 | "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
963 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
964 | "dev": true,
965 | "requires": {
966 | "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"
967 | }
968 | },
969 | "hasha": {
970 | "version": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz",
971 | "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=",
972 | "dev": true,
973 | "requires": {
974 | "is-stream": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
975 | "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz"
976 | }
977 | },
978 | "hawk": {
979 | "version": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
980 | "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
981 | "dev": true,
982 | "requires": {
983 | "boom": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
984 | "cryptiles": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
985 | "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
986 | "sntp": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz"
987 | }
988 | },
989 | "hoek": {
990 | "version": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
991 | "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
992 | "dev": true
993 | },
994 | "hooker": {
995 | "version": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
996 | "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=",
997 | "dev": true
998 | },
999 | "hosted-git-info": {
1000 | "version": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz",
1001 | "integrity": "sha1-AHa59GonBQbduq6lZJaJdGBhKmc=",
1002 | "dev": true
1003 | },
1004 | "http-errors": {
1005 | "version": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz",
1006 | "integrity": "sha1-eIwNLB3iyBuebowBhDtrl+uSB1A=",
1007 | "dev": true,
1008 | "requires": {
1009 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
1010 | "setprototypeof": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.2.tgz",
1011 | "statuses": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz"
1012 | }
1013 | },
1014 | "http-signature": {
1015 | "version": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
1016 | "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
1017 | "dev": true,
1018 | "requires": {
1019 | "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
1020 | "jsprim": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz",
1021 | "sshpk": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz"
1022 | }
1023 | },
1024 | "http2": {
1025 | "version": "https://registry.npmjs.org/http2/-/http2-3.3.6.tgz",
1026 | "integrity": "sha1-ffBiJ+ArW1pYQd7qCCObMZjQS+w=",
1027 | "dev": true
1028 | },
1029 | "iconv-lite": {
1030 | "version": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz",
1031 | "integrity": "sha1-HOYKOleGSiktEyH/RgnKS7llrcg=",
1032 | "dev": true
1033 | },
1034 | "indent-string": {
1035 | "version": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
1036 | "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
1037 | "dev": true,
1038 | "requires": {
1039 | "repeating": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz"
1040 | }
1041 | },
1042 | "inflight": {
1043 | "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1044 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1045 | "dev": true,
1046 | "requires": {
1047 | "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1048 | "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
1049 | }
1050 | },
1051 | "inherits": {
1052 | "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
1053 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
1054 | "dev": true
1055 | },
1056 | "is-arrayish": {
1057 | "version": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
1058 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
1059 | "dev": true
1060 | },
1061 | "is-buffer": {
1062 | "version": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
1063 | "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
1064 | "dev": true
1065 | },
1066 | "is-builtin-module": {
1067 | "version": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
1068 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
1069 | "dev": true,
1070 | "requires": {
1071 | "builtin-modules": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz"
1072 | }
1073 | },
1074 | "is-finite": {
1075 | "version": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
1076 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
1077 | "dev": true,
1078 | "requires": {
1079 | "number-is-nan": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"
1080 | }
1081 | },
1082 | "is-my-json-valid": {
1083 | "version": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz",
1084 | "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=",
1085 | "dev": true,
1086 | "requires": {
1087 | "generate-function": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
1088 | "generate-object-property": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
1089 | "jsonpointer": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
1090 | "xtend": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz"
1091 | }
1092 | },
1093 | "is-property": {
1094 | "version": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
1095 | "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
1096 | "dev": true
1097 | },
1098 | "is-stream": {
1099 | "version": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
1100 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
1101 | "dev": true
1102 | },
1103 | "is-typedarray": {
1104 | "version": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
1105 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
1106 | "dev": true
1107 | },
1108 | "is-utf8": {
1109 | "version": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
1110 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
1111 | "dev": true
1112 | },
1113 | "isarray": {
1114 | "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1115 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
1116 | "dev": true
1117 | },
1118 | "isexe": {
1119 | "version": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1120 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1121 | "dev": true
1122 | },
1123 | "isstream": {
1124 | "version": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
1125 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
1126 | "dev": true
1127 | },
1128 | "jasmine-core": {
1129 | "version": "2.7.0",
1130 | "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.7.0.tgz",
1131 | "integrity": "sha1-UP+MT5LY71wLLBuEbdJj7YUVIJE=",
1132 | "dev": true
1133 | },
1134 | "jodid25519": {
1135 | "version": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz",
1136 | "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=",
1137 | "dev": true,
1138 | "optional": true,
1139 | "requires": {
1140 | "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz"
1141 | }
1142 | },
1143 | "js-yaml": {
1144 | "version": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz",
1145 | "integrity": "sha1-olrmUJmZ6X3yeMZxnaEb0Gh3Q6g=",
1146 | "dev": true,
1147 | "requires": {
1148 | "argparse": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz",
1149 | "esprima": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz"
1150 | }
1151 | },
1152 | "jsbn": {
1153 | "version": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
1154 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
1155 | "dev": true,
1156 | "optional": true
1157 | },
1158 | "json-schema": {
1159 | "version": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
1160 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
1161 | "dev": true
1162 | },
1163 | "json-stringify-safe": {
1164 | "version": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
1165 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
1166 | "dev": true
1167 | },
1168 | "jsonfile": {
1169 | "version": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
1170 | "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
1171 | "dev": true,
1172 | "requires": {
1173 | "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz"
1174 | },
1175 | "dependencies": {
1176 | "graceful-fs": {
1177 | "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
1178 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
1179 | "dev": true,
1180 | "optional": true
1181 | }
1182 | }
1183 | },
1184 | "jsonpointer": {
1185 | "version": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
1186 | "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
1187 | "dev": true
1188 | },
1189 | "jsprim": {
1190 | "version": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz",
1191 | "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=",
1192 | "dev": true,
1193 | "requires": {
1194 | "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
1195 | "extsprintf": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz",
1196 | "json-schema": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
1197 | "verror": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz"
1198 | },
1199 | "dependencies": {
1200 | "assert-plus": {
1201 | "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
1202 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
1203 | "dev": true
1204 | }
1205 | }
1206 | },
1207 | "karma": {
1208 | "version": "1.7.0",
1209 | "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.0.tgz",
1210 | "integrity": "sha1-b3oaQGRG+i4YfslTmGmPTO5HYmk=",
1211 | "dev": true,
1212 | "requires": {
1213 | "bluebird": "3.5.0",
1214 | "body-parser": "1.17.2",
1215 | "chokidar": "1.7.0",
1216 | "colors": "1.1.2",
1217 | "combine-lists": "1.0.1",
1218 | "connect": "3.6.3",
1219 | "core-js": "2.5.0",
1220 | "di": "0.0.1",
1221 | "dom-serialize": "2.2.1",
1222 | "expand-braces": "0.1.2",
1223 | "glob": "7.1.2",
1224 | "graceful-fs": "4.1.11",
1225 | "http-proxy": "1.16.2",
1226 | "isbinaryfile": "3.0.2",
1227 | "lodash": "3.10.1",
1228 | "log4js": "0.6.38",
1229 | "mime": "1.3.6",
1230 | "minimatch": "3.0.4",
1231 | "optimist": "0.6.1",
1232 | "qjobs": "1.1.5",
1233 | "range-parser": "1.2.0",
1234 | "rimraf": "2.6.1",
1235 | "safe-buffer": "5.1.1",
1236 | "socket.io": "1.7.3",
1237 | "source-map": "0.5.6",
1238 | "tmp": "0.0.31",
1239 | "useragent": "2.2.1"
1240 | },
1241 | "dependencies": {
1242 | "accepts": {
1243 | "version": "1.3.3",
1244 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
1245 | "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=",
1246 | "dev": true,
1247 | "requires": {
1248 | "mime-types": "2.1.16",
1249 | "negotiator": "0.6.1"
1250 | }
1251 | },
1252 | "after": {
1253 | "version": "0.8.2",
1254 | "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
1255 | "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
1256 | "dev": true
1257 | },
1258 | "anymatch": {
1259 | "version": "1.3.2",
1260 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
1261 | "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
1262 | "dev": true,
1263 | "requires": {
1264 | "micromatch": "2.3.11",
1265 | "normalize-path": "2.1.1"
1266 | }
1267 | },
1268 | "arr-diff": {
1269 | "version": "2.0.0",
1270 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
1271 | "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
1272 | "dev": true,
1273 | "requires": {
1274 | "arr-flatten": "1.1.0"
1275 | }
1276 | },
1277 | "arr-flatten": {
1278 | "version": "1.1.0",
1279 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
1280 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
1281 | "dev": true
1282 | },
1283 | "array-slice": {
1284 | "version": "0.2.3",
1285 | "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
1286 | "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
1287 | "dev": true
1288 | },
1289 | "array-unique": {
1290 | "version": "0.2.1",
1291 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
1292 | "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
1293 | "dev": true
1294 | },
1295 | "arraybuffer.slice": {
1296 | "version": "0.0.6",
1297 | "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz",
1298 | "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=",
1299 | "dev": true
1300 | },
1301 | "async-each": {
1302 | "version": "1.0.1",
1303 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
1304 | "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
1305 | "dev": true
1306 | },
1307 | "backo2": {
1308 | "version": "1.0.2",
1309 | "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
1310 | "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=",
1311 | "dev": true
1312 | },
1313 | "balanced-match": {
1314 | "version": "1.0.0",
1315 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
1316 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
1317 | "dev": true
1318 | },
1319 | "base64-arraybuffer": {
1320 | "version": "0.1.5",
1321 | "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
1322 | "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=",
1323 | "dev": true
1324 | },
1325 | "base64id": {
1326 | "version": "1.0.0",
1327 | "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
1328 | "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=",
1329 | "dev": true
1330 | },
1331 | "better-assert": {
1332 | "version": "1.0.2",
1333 | "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
1334 | "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
1335 | "dev": true,
1336 | "requires": {
1337 | "callsite": "1.0.0"
1338 | }
1339 | },
1340 | "binary-extensions": {
1341 | "version": "1.9.0",
1342 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.9.0.tgz",
1343 | "integrity": "sha1-ZlBsFs5vTWkopbPNajPKQelB43s=",
1344 | "dev": true
1345 | },
1346 | "blob": {
1347 | "version": "0.0.4",
1348 | "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
1349 | "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=",
1350 | "dev": true
1351 | },
1352 | "bluebird": {
1353 | "version": "3.5.0",
1354 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz",
1355 | "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=",
1356 | "dev": true
1357 | },
1358 | "body-parser": {
1359 | "version": "1.17.2",
1360 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz",
1361 | "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=",
1362 | "dev": true,
1363 | "requires": {
1364 | "bytes": "2.4.0",
1365 | "content-type": "1.0.2",
1366 | "debug": "2.6.7",
1367 | "depd": "1.1.1",
1368 | "http-errors": "1.6.2",
1369 | "iconv-lite": "0.4.15",
1370 | "on-finished": "2.3.0",
1371 | "qs": "6.4.0",
1372 | "raw-body": "2.2.0",
1373 | "type-is": "1.6.15"
1374 | }
1375 | },
1376 | "brace-expansion": {
1377 | "version": "1.1.8",
1378 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
1379 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
1380 | "dev": true,
1381 | "requires": {
1382 | "balanced-match": "1.0.0",
1383 | "concat-map": "0.0.1"
1384 | }
1385 | },
1386 | "braces": {
1387 | "version": "1.8.5",
1388 | "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
1389 | "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
1390 | "dev": true,
1391 | "requires": {
1392 | "expand-range": "1.8.2",
1393 | "preserve": "0.2.0",
1394 | "repeat-element": "1.1.2"
1395 | }
1396 | },
1397 | "bytes": {
1398 | "version": "2.4.0",
1399 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz",
1400 | "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=",
1401 | "dev": true
1402 | },
1403 | "callsite": {
1404 | "version": "1.0.0",
1405 | "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
1406 | "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
1407 | "dev": true
1408 | },
1409 | "chokidar": {
1410 | "version": "1.7.0",
1411 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
1412 | "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
1413 | "dev": true,
1414 | "requires": {
1415 | "anymatch": "1.3.2",
1416 | "async-each": "1.0.1",
1417 | "glob-parent": "2.0.0",
1418 | "inherits": "2.0.3",
1419 | "is-binary-path": "1.0.1",
1420 | "is-glob": "2.0.1",
1421 | "path-is-absolute": "1.0.1",
1422 | "readdirp": "2.1.0"
1423 | }
1424 | },
1425 | "colors": {
1426 | "version": "1.1.2",
1427 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
1428 | "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
1429 | "dev": true
1430 | },
1431 | "combine-lists": {
1432 | "version": "1.0.1",
1433 | "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz",
1434 | "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=",
1435 | "dev": true,
1436 | "requires": {
1437 | "lodash": "4.17.4"
1438 | },
1439 | "dependencies": {
1440 | "lodash": {
1441 | "version": "4.17.4",
1442 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
1443 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
1444 | "dev": true
1445 | }
1446 | }
1447 | },
1448 | "component-bind": {
1449 | "version": "1.0.0",
1450 | "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
1451 | "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=",
1452 | "dev": true
1453 | },
1454 | "component-emitter": {
1455 | "version": "1.1.2",
1456 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz",
1457 | "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=",
1458 | "dev": true
1459 | },
1460 | "component-inherit": {
1461 | "version": "0.0.3",
1462 | "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
1463 | "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
1464 | "dev": true
1465 | },
1466 | "concat-map": {
1467 | "version": "0.0.1",
1468 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1469 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
1470 | "dev": true
1471 | },
1472 | "connect": {
1473 | "version": "3.6.3",
1474 | "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.3.tgz",
1475 | "integrity": "sha512-GLSZqgjVxPvGYVD/2vz//gS201MEXk4b7t3nHV6OVnTdDNWi/Gm7Rpxs/ybvljPWvULys/wrzIV3jB3YvEc3nQ==",
1476 | "dev": true,
1477 | "requires": {
1478 | "debug": "2.6.8",
1479 | "finalhandler": "1.0.4",
1480 | "parseurl": "1.3.1",
1481 | "utils-merge": "1.0.0"
1482 | },
1483 | "dependencies": {
1484 | "debug": {
1485 | "version": "2.6.8",
1486 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
1487 | "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
1488 | "dev": true,
1489 | "requires": {
1490 | "ms": "2.0.0"
1491 | }
1492 | }
1493 | }
1494 | },
1495 | "content-type": {
1496 | "version": "1.0.2",
1497 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz",
1498 | "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=",
1499 | "dev": true
1500 | },
1501 | "cookie": {
1502 | "version": "0.3.1",
1503 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
1504 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
1505 | "dev": true
1506 | },
1507 | "core-js": {
1508 | "version": "2.5.0",
1509 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.0.tgz",
1510 | "integrity": "sha1-VpwFCRi+ZIazg3VSAorgRmtxcIY=",
1511 | "dev": true
1512 | },
1513 | "core-util-is": {
1514 | "version": "1.0.2",
1515 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
1516 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
1517 | "dev": true
1518 | },
1519 | "custom-event": {
1520 | "version": "1.0.1",
1521 | "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
1522 | "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=",
1523 | "dev": true
1524 | },
1525 | "debug": {
1526 | "version": "2.6.7",
1527 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz",
1528 | "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=",
1529 | "dev": true,
1530 | "requires": {
1531 | "ms": "2.0.0"
1532 | }
1533 | },
1534 | "depd": {
1535 | "version": "1.1.1",
1536 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
1537 | "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
1538 | "dev": true
1539 | },
1540 | "di": {
1541 | "version": "0.0.1",
1542 | "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz",
1543 | "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=",
1544 | "dev": true
1545 | },
1546 | "dom-serialize": {
1547 | "version": "2.2.1",
1548 | "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz",
1549 | "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=",
1550 | "dev": true,
1551 | "requires": {
1552 | "custom-event": "1.0.1",
1553 | "ent": "2.2.0",
1554 | "extend": "3.0.1",
1555 | "void-elements": "2.0.1"
1556 | }
1557 | },
1558 | "ee-first": {
1559 | "version": "1.1.1",
1560 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
1561 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
1562 | "dev": true
1563 | },
1564 | "encodeurl": {
1565 | "version": "1.0.1",
1566 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
1567 | "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=",
1568 | "dev": true
1569 | },
1570 | "engine.io": {
1571 | "version": "1.8.3",
1572 | "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz",
1573 | "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=",
1574 | "dev": true,
1575 | "requires": {
1576 | "accepts": "1.3.3",
1577 | "base64id": "1.0.0",
1578 | "cookie": "0.3.1",
1579 | "debug": "2.3.3",
1580 | "engine.io-parser": "1.3.2",
1581 | "ws": "1.1.2"
1582 | },
1583 | "dependencies": {
1584 | "debug": {
1585 | "version": "2.3.3",
1586 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
1587 | "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
1588 | "dev": true,
1589 | "requires": {
1590 | "ms": "0.7.2"
1591 | }
1592 | },
1593 | "ms": {
1594 | "version": "0.7.2",
1595 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
1596 | "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
1597 | "dev": true
1598 | }
1599 | }
1600 | },
1601 | "engine.io-client": {
1602 | "version": "1.8.3",
1603 | "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz",
1604 | "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=",
1605 | "dev": true,
1606 | "requires": {
1607 | "component-emitter": "1.2.1",
1608 | "component-inherit": "0.0.3",
1609 | "debug": "2.3.3",
1610 | "engine.io-parser": "1.3.2",
1611 | "has-cors": "1.1.0",
1612 | "indexof": "0.0.1",
1613 | "parsejson": "0.0.3",
1614 | "parseqs": "0.0.5",
1615 | "parseuri": "0.0.5",
1616 | "ws": "1.1.2",
1617 | "xmlhttprequest-ssl": "1.5.3",
1618 | "yeast": "0.1.2"
1619 | },
1620 | "dependencies": {
1621 | "component-emitter": {
1622 | "version": "1.2.1",
1623 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
1624 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
1625 | "dev": true
1626 | },
1627 | "debug": {
1628 | "version": "2.3.3",
1629 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
1630 | "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
1631 | "dev": true,
1632 | "requires": {
1633 | "ms": "0.7.2"
1634 | }
1635 | },
1636 | "ms": {
1637 | "version": "0.7.2",
1638 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
1639 | "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
1640 | "dev": true
1641 | }
1642 | }
1643 | },
1644 | "engine.io-parser": {
1645 | "version": "1.3.2",
1646 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz",
1647 | "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=",
1648 | "dev": true,
1649 | "requires": {
1650 | "after": "0.8.2",
1651 | "arraybuffer.slice": "0.0.6",
1652 | "base64-arraybuffer": "0.1.5",
1653 | "blob": "0.0.4",
1654 | "has-binary": "0.1.7",
1655 | "wtf-8": "1.0.0"
1656 | }
1657 | },
1658 | "ent": {
1659 | "version": "2.2.0",
1660 | "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
1661 | "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=",
1662 | "dev": true
1663 | },
1664 | "escape-html": {
1665 | "version": "1.0.3",
1666 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
1667 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
1668 | "dev": true
1669 | },
1670 | "eventemitter3": {
1671 | "version": "1.2.0",
1672 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz",
1673 | "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=",
1674 | "dev": true
1675 | },
1676 | "expand-braces": {
1677 | "version": "0.1.2",
1678 | "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz",
1679 | "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=",
1680 | "dev": true,
1681 | "requires": {
1682 | "array-slice": "0.2.3",
1683 | "array-unique": "0.2.1",
1684 | "braces": "0.1.5"
1685 | },
1686 | "dependencies": {
1687 | "braces": {
1688 | "version": "0.1.5",
1689 | "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz",
1690 | "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=",
1691 | "dev": true,
1692 | "requires": {
1693 | "expand-range": "0.1.1"
1694 | }
1695 | },
1696 | "expand-range": {
1697 | "version": "0.1.1",
1698 | "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz",
1699 | "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=",
1700 | "dev": true,
1701 | "requires": {
1702 | "is-number": "0.1.1",
1703 | "repeat-string": "0.2.2"
1704 | }
1705 | },
1706 | "is-number": {
1707 | "version": "0.1.1",
1708 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz",
1709 | "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=",
1710 | "dev": true
1711 | },
1712 | "repeat-string": {
1713 | "version": "0.2.2",
1714 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz",
1715 | "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=",
1716 | "dev": true
1717 | }
1718 | }
1719 | },
1720 | "expand-brackets": {
1721 | "version": "0.1.5",
1722 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
1723 | "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
1724 | "dev": true,
1725 | "requires": {
1726 | "is-posix-bracket": "0.1.1"
1727 | }
1728 | },
1729 | "expand-range": {
1730 | "version": "1.8.2",
1731 | "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
1732 | "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
1733 | "dev": true,
1734 | "requires": {
1735 | "fill-range": "2.2.3"
1736 | }
1737 | },
1738 | "extend": {
1739 | "version": "3.0.1",
1740 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
1741 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
1742 | "dev": true
1743 | },
1744 | "extglob": {
1745 | "version": "0.3.2",
1746 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
1747 | "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
1748 | "dev": true,
1749 | "requires": {
1750 | "is-extglob": "1.0.0"
1751 | }
1752 | },
1753 | "filename-regex": {
1754 | "version": "2.0.1",
1755 | "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
1756 | "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
1757 | "dev": true
1758 | },
1759 | "fill-range": {
1760 | "version": "2.2.3",
1761 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
1762 | "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
1763 | "dev": true,
1764 | "requires": {
1765 | "is-number": "2.1.0",
1766 | "isobject": "2.1.0",
1767 | "randomatic": "1.1.7",
1768 | "repeat-element": "1.1.2",
1769 | "repeat-string": "1.6.1"
1770 | }
1771 | },
1772 | "finalhandler": {
1773 | "version": "1.0.4",
1774 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.4.tgz",
1775 | "integrity": "sha512-16l/r8RgzlXKmFOhZpHBztvye+lAhC5SU7hXavnerC9UfZqZxxXl3BzL8MhffPT3kF61lj9Oav2LKEzh0ei7tg==",
1776 | "dev": true,
1777 | "requires": {
1778 | "debug": "2.6.8",
1779 | "encodeurl": "1.0.1",
1780 | "escape-html": "1.0.3",
1781 | "on-finished": "2.3.0",
1782 | "parseurl": "1.3.1",
1783 | "statuses": "1.3.1",
1784 | "unpipe": "1.0.0"
1785 | },
1786 | "dependencies": {
1787 | "debug": {
1788 | "version": "2.6.8",
1789 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
1790 | "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
1791 | "dev": true,
1792 | "requires": {
1793 | "ms": "2.0.0"
1794 | }
1795 | }
1796 | }
1797 | },
1798 | "for-in": {
1799 | "version": "1.0.2",
1800 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
1801 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
1802 | "dev": true
1803 | },
1804 | "for-own": {
1805 | "version": "0.1.5",
1806 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
1807 | "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
1808 | "dev": true,
1809 | "requires": {
1810 | "for-in": "1.0.2"
1811 | }
1812 | },
1813 | "fs.realpath": {
1814 | "version": "1.0.0",
1815 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1816 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
1817 | "dev": true
1818 | },
1819 | "glob": {
1820 | "version": "7.1.2",
1821 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
1822 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
1823 | "dev": true,
1824 | "requires": {
1825 | "fs.realpath": "1.0.0",
1826 | "inflight": "1.0.6",
1827 | "inherits": "2.0.3",
1828 | "minimatch": "3.0.4",
1829 | "once": "1.4.0",
1830 | "path-is-absolute": "1.0.1"
1831 | }
1832 | },
1833 | "glob-base": {
1834 | "version": "0.3.0",
1835 | "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
1836 | "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
1837 | "dev": true,
1838 | "requires": {
1839 | "glob-parent": "2.0.0",
1840 | "is-glob": "2.0.1"
1841 | }
1842 | },
1843 | "glob-parent": {
1844 | "version": "2.0.0",
1845 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
1846 | "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
1847 | "dev": true,
1848 | "requires": {
1849 | "is-glob": "2.0.1"
1850 | }
1851 | },
1852 | "graceful-fs": {
1853 | "version": "4.1.11",
1854 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
1855 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
1856 | "dev": true
1857 | },
1858 | "has-binary": {
1859 | "version": "0.1.7",
1860 | "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz",
1861 | "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=",
1862 | "dev": true,
1863 | "requires": {
1864 | "isarray": "0.0.1"
1865 | },
1866 | "dependencies": {
1867 | "isarray": {
1868 | "version": "0.0.1",
1869 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
1870 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
1871 | "dev": true
1872 | }
1873 | }
1874 | },
1875 | "has-cors": {
1876 | "version": "1.1.0",
1877 | "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
1878 | "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=",
1879 | "dev": true
1880 | },
1881 | "http-errors": {
1882 | "version": "1.6.2",
1883 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
1884 | "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
1885 | "dev": true,
1886 | "requires": {
1887 | "depd": "1.1.1",
1888 | "inherits": "2.0.3",
1889 | "setprototypeof": "1.0.3",
1890 | "statuses": "1.3.1"
1891 | }
1892 | },
1893 | "http-proxy": {
1894 | "version": "1.16.2",
1895 | "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz",
1896 | "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=",
1897 | "dev": true,
1898 | "requires": {
1899 | "eventemitter3": "1.2.0",
1900 | "requires-port": "1.0.0"
1901 | }
1902 | },
1903 | "iconv-lite": {
1904 | "version": "0.4.15",
1905 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz",
1906 | "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=",
1907 | "dev": true
1908 | },
1909 | "indexof": {
1910 | "version": "0.0.1",
1911 | "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
1912 | "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
1913 | "dev": true
1914 | },
1915 | "inflight": {
1916 | "version": "1.0.6",
1917 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1918 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1919 | "dev": true,
1920 | "requires": {
1921 | "once": "1.4.0",
1922 | "wrappy": "1.0.2"
1923 | }
1924 | },
1925 | "inherits": {
1926 | "version": "2.0.3",
1927 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
1928 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
1929 | "dev": true
1930 | },
1931 | "is-binary-path": {
1932 | "version": "1.0.1",
1933 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
1934 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
1935 | "dev": true,
1936 | "requires": {
1937 | "binary-extensions": "1.9.0"
1938 | }
1939 | },
1940 | "is-buffer": {
1941 | "version": "1.1.5",
1942 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
1943 | "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
1944 | "dev": true
1945 | },
1946 | "is-dotfile": {
1947 | "version": "1.0.3",
1948 | "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
1949 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
1950 | "dev": true
1951 | },
1952 | "is-equal-shallow": {
1953 | "version": "0.1.3",
1954 | "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
1955 | "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
1956 | "dev": true,
1957 | "requires": {
1958 | "is-primitive": "2.0.0"
1959 | }
1960 | },
1961 | "is-extendable": {
1962 | "version": "0.1.1",
1963 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
1964 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
1965 | "dev": true
1966 | },
1967 | "is-extglob": {
1968 | "version": "1.0.0",
1969 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
1970 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
1971 | "dev": true
1972 | },
1973 | "is-glob": {
1974 | "version": "2.0.1",
1975 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
1976 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
1977 | "dev": true,
1978 | "requires": {
1979 | "is-extglob": "1.0.0"
1980 | }
1981 | },
1982 | "is-number": {
1983 | "version": "2.1.0",
1984 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
1985 | "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
1986 | "dev": true,
1987 | "requires": {
1988 | "kind-of": "3.2.2"
1989 | }
1990 | },
1991 | "is-posix-bracket": {
1992 | "version": "0.1.1",
1993 | "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
1994 | "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
1995 | "dev": true
1996 | },
1997 | "is-primitive": {
1998 | "version": "2.0.0",
1999 | "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
2000 | "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
2001 | "dev": true
2002 | },
2003 | "isarray": {
2004 | "version": "1.0.0",
2005 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
2006 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
2007 | "dev": true
2008 | },
2009 | "isbinaryfile": {
2010 | "version": "3.0.2",
2011 | "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz",
2012 | "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=",
2013 | "dev": true
2014 | },
2015 | "isobject": {
2016 | "version": "2.1.0",
2017 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
2018 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
2019 | "dev": true,
2020 | "requires": {
2021 | "isarray": "1.0.0"
2022 | }
2023 | },
2024 | "json3": {
2025 | "version": "3.3.2",
2026 | "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
2027 | "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
2028 | "dev": true
2029 | },
2030 | "kind-of": {
2031 | "version": "3.2.2",
2032 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2033 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2034 | "dev": true,
2035 | "requires": {
2036 | "is-buffer": "1.1.5"
2037 | }
2038 | },
2039 | "lodash": {
2040 | "version": "3.10.1",
2041 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
2042 | "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
2043 | "dev": true
2044 | },
2045 | "log4js": {
2046 | "version": "0.6.38",
2047 | "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz",
2048 | "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=",
2049 | "dev": true,
2050 | "requires": {
2051 | "readable-stream": "1.0.34",
2052 | "semver": "4.3.6"
2053 | },
2054 | "dependencies": {
2055 | "isarray": {
2056 | "version": "0.0.1",
2057 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
2058 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
2059 | "dev": true
2060 | },
2061 | "readable-stream": {
2062 | "version": "1.0.34",
2063 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
2064 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
2065 | "dev": true,
2066 | "requires": {
2067 | "core-util-is": "1.0.2",
2068 | "inherits": "2.0.3",
2069 | "isarray": "0.0.1",
2070 | "string_decoder": "0.10.31"
2071 | }
2072 | },
2073 | "string_decoder": {
2074 | "version": "0.10.31",
2075 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
2076 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
2077 | "dev": true
2078 | }
2079 | }
2080 | },
2081 | "lru-cache": {
2082 | "version": "2.2.4",
2083 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz",
2084 | "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=",
2085 | "dev": true
2086 | },
2087 | "media-typer": {
2088 | "version": "0.3.0",
2089 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
2090 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
2091 | "dev": true
2092 | },
2093 | "micromatch": {
2094 | "version": "2.3.11",
2095 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
2096 | "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
2097 | "dev": true,
2098 | "requires": {
2099 | "arr-diff": "2.0.0",
2100 | "array-unique": "0.2.1",
2101 | "braces": "1.8.5",
2102 | "expand-brackets": "0.1.5",
2103 | "extglob": "0.3.2",
2104 | "filename-regex": "2.0.1",
2105 | "is-extglob": "1.0.0",
2106 | "is-glob": "2.0.1",
2107 | "kind-of": "3.2.2",
2108 | "normalize-path": "2.1.1",
2109 | "object.omit": "2.0.1",
2110 | "parse-glob": "3.0.4",
2111 | "regex-cache": "0.4.3"
2112 | }
2113 | },
2114 | "mime": {
2115 | "version": "1.3.6",
2116 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz",
2117 | "integrity": "sha1-WR2E02U6awtKO5343lqoEI5y5eA=",
2118 | "dev": true
2119 | },
2120 | "mime-db": {
2121 | "version": "1.29.0",
2122 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.29.0.tgz",
2123 | "integrity": "sha1-SNJtI1WJZRcErFkWygYAGRQmaHg=",
2124 | "dev": true
2125 | },
2126 | "mime-types": {
2127 | "version": "2.1.16",
2128 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.16.tgz",
2129 | "integrity": "sha1-K4WKUuXs1RbbiXrCvodIeDBpjiM=",
2130 | "dev": true,
2131 | "requires": {
2132 | "mime-db": "1.29.0"
2133 | }
2134 | },
2135 | "minimatch": {
2136 | "version": "3.0.4",
2137 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
2138 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
2139 | "dev": true,
2140 | "requires": {
2141 | "brace-expansion": "1.1.8"
2142 | }
2143 | },
2144 | "minimist": {
2145 | "version": "0.0.10",
2146 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
2147 | "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
2148 | "dev": true
2149 | },
2150 | "ms": {
2151 | "version": "2.0.0",
2152 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
2153 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
2154 | "dev": true
2155 | },
2156 | "negotiator": {
2157 | "version": "0.6.1",
2158 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
2159 | "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
2160 | "dev": true
2161 | },
2162 | "normalize-path": {
2163 | "version": "2.1.1",
2164 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
2165 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
2166 | "dev": true,
2167 | "requires": {
2168 | "remove-trailing-separator": "1.0.2"
2169 | }
2170 | },
2171 | "object-assign": {
2172 | "version": "4.1.0",
2173 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz",
2174 | "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=",
2175 | "dev": true
2176 | },
2177 | "object-component": {
2178 | "version": "0.0.3",
2179 | "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
2180 | "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=",
2181 | "dev": true
2182 | },
2183 | "object.omit": {
2184 | "version": "2.0.1",
2185 | "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
2186 | "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
2187 | "dev": true,
2188 | "requires": {
2189 | "for-own": "0.1.5",
2190 | "is-extendable": "0.1.1"
2191 | }
2192 | },
2193 | "on-finished": {
2194 | "version": "2.3.0",
2195 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
2196 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
2197 | "dev": true,
2198 | "requires": {
2199 | "ee-first": "1.1.1"
2200 | }
2201 | },
2202 | "once": {
2203 | "version": "1.4.0",
2204 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
2205 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
2206 | "dev": true,
2207 | "requires": {
2208 | "wrappy": "1.0.2"
2209 | }
2210 | },
2211 | "optimist": {
2212 | "version": "0.6.1",
2213 | "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
2214 | "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
2215 | "dev": true,
2216 | "requires": {
2217 | "minimist": "0.0.10",
2218 | "wordwrap": "0.0.3"
2219 | }
2220 | },
2221 | "options": {
2222 | "version": "0.0.6",
2223 | "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
2224 | "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=",
2225 | "dev": true
2226 | },
2227 | "os-tmpdir": {
2228 | "version": "1.0.2",
2229 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
2230 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
2231 | "dev": true
2232 | },
2233 | "parse-glob": {
2234 | "version": "3.0.4",
2235 | "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
2236 | "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
2237 | "dev": true,
2238 | "requires": {
2239 | "glob-base": "0.3.0",
2240 | "is-dotfile": "1.0.3",
2241 | "is-extglob": "1.0.0",
2242 | "is-glob": "2.0.1"
2243 | }
2244 | },
2245 | "parsejson": {
2246 | "version": "0.0.3",
2247 | "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz",
2248 | "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=",
2249 | "dev": true,
2250 | "requires": {
2251 | "better-assert": "1.0.2"
2252 | }
2253 | },
2254 | "parseqs": {
2255 | "version": "0.0.5",
2256 | "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
2257 | "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
2258 | "dev": true,
2259 | "requires": {
2260 | "better-assert": "1.0.2"
2261 | }
2262 | },
2263 | "parseuri": {
2264 | "version": "0.0.5",
2265 | "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
2266 | "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
2267 | "dev": true,
2268 | "requires": {
2269 | "better-assert": "1.0.2"
2270 | }
2271 | },
2272 | "parseurl": {
2273 | "version": "1.3.1",
2274 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz",
2275 | "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=",
2276 | "dev": true
2277 | },
2278 | "path-is-absolute": {
2279 | "version": "1.0.1",
2280 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
2281 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
2282 | "dev": true
2283 | },
2284 | "preserve": {
2285 | "version": "0.2.0",
2286 | "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
2287 | "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
2288 | "dev": true
2289 | },
2290 | "process-nextick-args": {
2291 | "version": "1.0.7",
2292 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
2293 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
2294 | "dev": true
2295 | },
2296 | "qjobs": {
2297 | "version": "1.1.5",
2298 | "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.5.tgz",
2299 | "integrity": "sha1-ZZ3p8s+NzCehSBJ28gU3cnI4LnM=",
2300 | "dev": true
2301 | },
2302 | "qs": {
2303 | "version": "6.4.0",
2304 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
2305 | "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=",
2306 | "dev": true
2307 | },
2308 | "randomatic": {
2309 | "version": "1.1.7",
2310 | "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
2311 | "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
2312 | "dev": true,
2313 | "requires": {
2314 | "is-number": "3.0.0",
2315 | "kind-of": "4.0.0"
2316 | },
2317 | "dependencies": {
2318 | "is-number": {
2319 | "version": "3.0.0",
2320 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
2321 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
2322 | "dev": true,
2323 | "requires": {
2324 | "kind-of": "3.2.2"
2325 | },
2326 | "dependencies": {
2327 | "kind-of": {
2328 | "version": "3.2.2",
2329 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2330 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2331 | "dev": true,
2332 | "requires": {
2333 | "is-buffer": "1.1.5"
2334 | }
2335 | }
2336 | }
2337 | },
2338 | "kind-of": {
2339 | "version": "4.0.0",
2340 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
2341 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
2342 | "dev": true,
2343 | "requires": {
2344 | "is-buffer": "1.1.5"
2345 | }
2346 | }
2347 | }
2348 | },
2349 | "range-parser": {
2350 | "version": "1.2.0",
2351 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
2352 | "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
2353 | "dev": true
2354 | },
2355 | "raw-body": {
2356 | "version": "2.2.0",
2357 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz",
2358 | "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=",
2359 | "dev": true,
2360 | "requires": {
2361 | "bytes": "2.4.0",
2362 | "iconv-lite": "0.4.15",
2363 | "unpipe": "1.0.0"
2364 | }
2365 | },
2366 | "readable-stream": {
2367 | "version": "2.3.3",
2368 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
2369 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
2370 | "dev": true,
2371 | "requires": {
2372 | "core-util-is": "1.0.2",
2373 | "inherits": "2.0.3",
2374 | "isarray": "1.0.0",
2375 | "process-nextick-args": "1.0.7",
2376 | "safe-buffer": "5.1.1",
2377 | "string_decoder": "1.0.3",
2378 | "util-deprecate": "1.0.2"
2379 | }
2380 | },
2381 | "readdirp": {
2382 | "version": "2.1.0",
2383 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
2384 | "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
2385 | "dev": true,
2386 | "requires": {
2387 | "graceful-fs": "4.1.11",
2388 | "minimatch": "3.0.4",
2389 | "readable-stream": "2.3.3",
2390 | "set-immediate-shim": "1.0.1"
2391 | }
2392 | },
2393 | "regex-cache": {
2394 | "version": "0.4.3",
2395 | "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz",
2396 | "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=",
2397 | "dev": true,
2398 | "requires": {
2399 | "is-equal-shallow": "0.1.3",
2400 | "is-primitive": "2.0.0"
2401 | }
2402 | },
2403 | "remove-trailing-separator": {
2404 | "version": "1.0.2",
2405 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz",
2406 | "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=",
2407 | "dev": true
2408 | },
2409 | "repeat-element": {
2410 | "version": "1.1.2",
2411 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
2412 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
2413 | "dev": true
2414 | },
2415 | "repeat-string": {
2416 | "version": "1.6.1",
2417 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
2418 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
2419 | "dev": true
2420 | },
2421 | "requires-port": {
2422 | "version": "1.0.0",
2423 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
2424 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
2425 | "dev": true
2426 | },
2427 | "rimraf": {
2428 | "version": "2.6.1",
2429 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz",
2430 | "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=",
2431 | "dev": true,
2432 | "requires": {
2433 | "glob": "7.1.2"
2434 | }
2435 | },
2436 | "safe-buffer": {
2437 | "version": "5.1.1",
2438 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
2439 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
2440 | "dev": true
2441 | },
2442 | "semver": {
2443 | "version": "4.3.6",
2444 | "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
2445 | "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
2446 | "dev": true
2447 | },
2448 | "set-immediate-shim": {
2449 | "version": "1.0.1",
2450 | "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
2451 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
2452 | "dev": true
2453 | },
2454 | "setprototypeof": {
2455 | "version": "1.0.3",
2456 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
2457 | "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
2458 | "dev": true
2459 | },
2460 | "socket.io": {
2461 | "version": "1.7.3",
2462 | "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz",
2463 | "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=",
2464 | "dev": true,
2465 | "requires": {
2466 | "debug": "2.3.3",
2467 | "engine.io": "1.8.3",
2468 | "has-binary": "0.1.7",
2469 | "object-assign": "4.1.0",
2470 | "socket.io-adapter": "0.5.0",
2471 | "socket.io-client": "1.7.3",
2472 | "socket.io-parser": "2.3.1"
2473 | },
2474 | "dependencies": {
2475 | "debug": {
2476 | "version": "2.3.3",
2477 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
2478 | "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
2479 | "dev": true,
2480 | "requires": {
2481 | "ms": "0.7.2"
2482 | }
2483 | },
2484 | "ms": {
2485 | "version": "0.7.2",
2486 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
2487 | "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
2488 | "dev": true
2489 | }
2490 | }
2491 | },
2492 | "socket.io-adapter": {
2493 | "version": "0.5.0",
2494 | "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz",
2495 | "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=",
2496 | "dev": true,
2497 | "requires": {
2498 | "debug": "2.3.3",
2499 | "socket.io-parser": "2.3.1"
2500 | },
2501 | "dependencies": {
2502 | "debug": {
2503 | "version": "2.3.3",
2504 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
2505 | "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
2506 | "dev": true,
2507 | "requires": {
2508 | "ms": "0.7.2"
2509 | }
2510 | },
2511 | "ms": {
2512 | "version": "0.7.2",
2513 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
2514 | "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
2515 | "dev": true
2516 | }
2517 | }
2518 | },
2519 | "socket.io-client": {
2520 | "version": "1.7.3",
2521 | "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz",
2522 | "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=",
2523 | "dev": true,
2524 | "requires": {
2525 | "backo2": "1.0.2",
2526 | "component-bind": "1.0.0",
2527 | "component-emitter": "1.2.1",
2528 | "debug": "2.3.3",
2529 | "engine.io-client": "1.8.3",
2530 | "has-binary": "0.1.7",
2531 | "indexof": "0.0.1",
2532 | "object-component": "0.0.3",
2533 | "parseuri": "0.0.5",
2534 | "socket.io-parser": "2.3.1",
2535 | "to-array": "0.1.4"
2536 | },
2537 | "dependencies": {
2538 | "component-emitter": {
2539 | "version": "1.2.1",
2540 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
2541 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
2542 | "dev": true
2543 | },
2544 | "debug": {
2545 | "version": "2.3.3",
2546 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
2547 | "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
2548 | "dev": true,
2549 | "requires": {
2550 | "ms": "0.7.2"
2551 | }
2552 | },
2553 | "ms": {
2554 | "version": "0.7.2",
2555 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
2556 | "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
2557 | "dev": true
2558 | }
2559 | }
2560 | },
2561 | "socket.io-parser": {
2562 | "version": "2.3.1",
2563 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz",
2564 | "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=",
2565 | "dev": true,
2566 | "requires": {
2567 | "component-emitter": "1.1.2",
2568 | "debug": "2.2.0",
2569 | "isarray": "0.0.1",
2570 | "json3": "3.3.2"
2571 | },
2572 | "dependencies": {
2573 | "debug": {
2574 | "version": "2.2.0",
2575 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
2576 | "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
2577 | "dev": true,
2578 | "requires": {
2579 | "ms": "0.7.1"
2580 | }
2581 | },
2582 | "isarray": {
2583 | "version": "0.0.1",
2584 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
2585 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
2586 | "dev": true
2587 | },
2588 | "ms": {
2589 | "version": "0.7.1",
2590 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
2591 | "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
2592 | "dev": true
2593 | }
2594 | }
2595 | },
2596 | "source-map": {
2597 | "version": "0.5.6",
2598 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
2599 | "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
2600 | "dev": true
2601 | },
2602 | "statuses": {
2603 | "version": "1.3.1",
2604 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
2605 | "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
2606 | "dev": true
2607 | },
2608 | "string_decoder": {
2609 | "version": "1.0.3",
2610 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
2611 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
2612 | "dev": true,
2613 | "requires": {
2614 | "safe-buffer": "5.1.1"
2615 | }
2616 | },
2617 | "tmp": {
2618 | "version": "0.0.31",
2619 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz",
2620 | "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=",
2621 | "dev": true,
2622 | "requires": {
2623 | "os-tmpdir": "1.0.2"
2624 | }
2625 | },
2626 | "to-array": {
2627 | "version": "0.1.4",
2628 | "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
2629 | "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=",
2630 | "dev": true
2631 | },
2632 | "type-is": {
2633 | "version": "1.6.15",
2634 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
2635 | "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=",
2636 | "dev": true,
2637 | "requires": {
2638 | "media-typer": "0.3.0",
2639 | "mime-types": "2.1.16"
2640 | }
2641 | },
2642 | "ultron": {
2643 | "version": "1.0.2",
2644 | "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
2645 | "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=",
2646 | "dev": true
2647 | },
2648 | "unpipe": {
2649 | "version": "1.0.0",
2650 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
2651 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
2652 | "dev": true
2653 | },
2654 | "useragent": {
2655 | "version": "2.2.1",
2656 | "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz",
2657 | "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=",
2658 | "dev": true,
2659 | "requires": {
2660 | "lru-cache": "2.2.4",
2661 | "tmp": "0.0.31"
2662 | }
2663 | },
2664 | "util-deprecate": {
2665 | "version": "1.0.2",
2666 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2667 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
2668 | "dev": true
2669 | },
2670 | "utils-merge": {
2671 | "version": "1.0.0",
2672 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
2673 | "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=",
2674 | "dev": true
2675 | },
2676 | "void-elements": {
2677 | "version": "2.0.1",
2678 | "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
2679 | "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=",
2680 | "dev": true
2681 | },
2682 | "wordwrap": {
2683 | "version": "0.0.3",
2684 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
2685 | "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
2686 | "dev": true
2687 | },
2688 | "wrappy": {
2689 | "version": "1.0.2",
2690 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2691 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
2692 | "dev": true
2693 | },
2694 | "ws": {
2695 | "version": "1.1.2",
2696 | "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz",
2697 | "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=",
2698 | "dev": true,
2699 | "requires": {
2700 | "options": "0.0.6",
2701 | "ultron": "1.0.2"
2702 | }
2703 | },
2704 | "wtf-8": {
2705 | "version": "1.0.0",
2706 | "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz",
2707 | "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=",
2708 | "dev": true
2709 | },
2710 | "xmlhttprequest-ssl": {
2711 | "version": "1.5.3",
2712 | "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz",
2713 | "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=",
2714 | "dev": true
2715 | },
2716 | "yeast": {
2717 | "version": "0.1.2",
2718 | "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
2719 | "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
2720 | "dev": true
2721 | }
2722 | }
2723 | },
2724 | "karma-jasmine": {
2725 | "version": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.0.tgz",
2726 | "integrity": "sha1-IuTAa/mhguUpTR9wXjczgRuBCs8=",
2727 | "dev": true
2728 | },
2729 | "karma-phantomjs-launcher": {
2730 | "version": "https://registry.npmjs.org/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz",
2731 | "integrity": "sha1-0jyjSAG9qYY60xjju0vUBisTrNI=",
2732 | "dev": true,
2733 | "requires": {
2734 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
2735 | "phantomjs-prebuilt": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz"
2736 | },
2737 | "dependencies": {
2738 | "lodash": {
2739 | "version": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
2740 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
2741 | "dev": true
2742 | }
2743 | }
2744 | },
2745 | "kew": {
2746 | "version": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz",
2747 | "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=",
2748 | "dev": true
2749 | },
2750 | "kind-of": {
2751 | "version": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.0.tgz",
2752 | "integrity": "sha1-tYq+TVwEStM3JqjBUltIz4kb/wc=",
2753 | "dev": true,
2754 | "requires": {
2755 | "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz"
2756 | }
2757 | },
2758 | "klaw": {
2759 | "version": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
2760 | "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
2761 | "dev": true,
2762 | "requires": {
2763 | "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz"
2764 | },
2765 | "dependencies": {
2766 | "graceful-fs": {
2767 | "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
2768 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
2769 | "dev": true,
2770 | "optional": true
2771 | }
2772 | }
2773 | },
2774 | "lazy-cache": {
2775 | "version": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
2776 | "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
2777 | "dev": true
2778 | },
2779 | "livereload-js": {
2780 | "version": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.2.2.tgz",
2781 | "integrity": "sha1-bIclfmSKtHW8JOoldFftzB+NC8I=",
2782 | "dev": true
2783 | },
2784 | "load-json-file": {
2785 | "version": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
2786 | "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
2787 | "dev": true,
2788 | "requires": {
2789 | "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
2790 | "parse-json": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
2791 | "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
2792 | "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
2793 | "strip-bom": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz"
2794 | },
2795 | "dependencies": {
2796 | "graceful-fs": {
2797 | "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
2798 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
2799 | "dev": true
2800 | }
2801 | }
2802 | },
2803 | "lodash": {
2804 | "version": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz",
2805 | "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw=",
2806 | "dev": true
2807 | },
2808 | "lodash.clonedeep": {
2809 | "version": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
2810 | "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
2811 | "dev": true
2812 | },
2813 | "longest": {
2814 | "version": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
2815 | "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
2816 | "dev": true
2817 | },
2818 | "loud-rejection": {
2819 | "version": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
2820 | "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
2821 | "dev": true,
2822 | "requires": {
2823 | "currently-unhandled": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
2824 | "signal-exit": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz"
2825 | }
2826 | },
2827 | "lru-cache": {
2828 | "version": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
2829 | "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=",
2830 | "dev": true
2831 | },
2832 | "map-obj": {
2833 | "version": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
2834 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
2835 | "dev": true
2836 | },
2837 | "maxmin": {
2838 | "version": "https://registry.npmjs.org/maxmin/-/maxmin-1.1.0.tgz",
2839 | "integrity": "sha1-cTZehKmd2Piz99X94vANHn9zvmE=",
2840 | "dev": true,
2841 | "requires": {
2842 | "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
2843 | "figures": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
2844 | "gzip-size": "https://registry.npmjs.org/gzip-size/-/gzip-size-1.0.0.tgz",
2845 | "pretty-bytes": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz"
2846 | }
2847 | },
2848 | "media-typer": {
2849 | "version": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
2850 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
2851 | "dev": true
2852 | },
2853 | "meow": {
2854 | "version": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
2855 | "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
2856 | "dev": true,
2857 | "requires": {
2858 | "camelcase-keys": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
2859 | "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
2860 | "loud-rejection": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
2861 | "map-obj": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
2862 | "minimist": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
2863 | "normalize-package-data": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz",
2864 | "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
2865 | "read-pkg-up": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
2866 | "redent": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
2867 | "trim-newlines": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz"
2868 | }
2869 | },
2870 | "mime": {
2871 | "version": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz",
2872 | "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=",
2873 | "dev": true
2874 | },
2875 | "mime-db": {
2876 | "version": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz",
2877 | "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=",
2878 | "dev": true
2879 | },
2880 | "mime-types": {
2881 | "version": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
2882 | "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=",
2883 | "dev": true,
2884 | "requires": {
2885 | "mime-db": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz"
2886 | }
2887 | },
2888 | "minimatch": {
2889 | "version": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
2890 | "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
2891 | "dev": true,
2892 | "requires": {
2893 | "lru-cache": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
2894 | "sigmund": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz"
2895 | }
2896 | },
2897 | "minimist": {
2898 | "version": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
2899 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
2900 | "dev": true
2901 | },
2902 | "mkdirp": {
2903 | "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz",
2904 | "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=",
2905 | "dev": true,
2906 | "requires": {
2907 | "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
2908 | },
2909 | "dependencies": {
2910 | "minimist": {
2911 | "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
2912 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
2913 | "dev": true
2914 | }
2915 | }
2916 | },
2917 | "morgan": {
2918 | "version": "https://registry.npmjs.org/morgan/-/morgan-1.8.1.tgz",
2919 | "integrity": "sha1-+TAj04h70nt439YCPOp4ku4npLE=",
2920 | "dev": true,
2921 | "requires": {
2922 | "basic-auth": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz",
2923 | "debug": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz",
2924 | "depd": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz",
2925 | "on-finished": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
2926 | "on-headers": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz"
2927 | },
2928 | "dependencies": {
2929 | "debug": {
2930 | "version": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz",
2931 | "integrity": "sha1-eYVQkLosTjEVzH2HaUkdWPBJE1E=",
2932 | "dev": true,
2933 | "requires": {
2934 | "ms": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz"
2935 | }
2936 | }
2937 | }
2938 | },
2939 | "ms": {
2940 | "version": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
2941 | "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
2942 | "dev": true
2943 | },
2944 | "negotiator": {
2945 | "version": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
2946 | "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
2947 | "dev": true
2948 | },
2949 | "ng-annotate": {
2950 | "version": "https://registry.npmjs.org/ng-annotate/-/ng-annotate-1.2.1.tgz",
2951 | "integrity": "sha1-64vBpnMccNCK9rAsPq8abj+55rs=",
2952 | "dev": true,
2953 | "requires": {
2954 | "acorn": "https://registry.npmjs.org/acorn/-/acorn-2.6.4.tgz",
2955 | "alter": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz",
2956 | "convert-source-map": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz",
2957 | "optimist": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
2958 | "ordered-ast-traverse": "https://registry.npmjs.org/ordered-ast-traverse/-/ordered-ast-traverse-1.1.1.tgz",
2959 | "simple-fmt": "https://registry.npmjs.org/simple-fmt/-/simple-fmt-0.1.0.tgz",
2960 | "simple-is": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz",
2961 | "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
2962 | "stable": "https://registry.npmjs.org/stable/-/stable-0.1.6.tgz",
2963 | "stringmap": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz",
2964 | "stringset": "https://registry.npmjs.org/stringset/-/stringset-0.2.1.tgz",
2965 | "tryor": "https://registry.npmjs.org/tryor/-/tryor-0.1.2.tgz"
2966 | }
2967 | },
2968 | "nopt": {
2969 | "version": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
2970 | "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
2971 | "dev": true,
2972 | "requires": {
2973 | "abbrev": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz"
2974 | }
2975 | },
2976 | "normalize-package-data": {
2977 | "version": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz",
2978 | "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=",
2979 | "dev": true,
2980 | "requires": {
2981 | "hosted-git-info": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz",
2982 | "is-builtin-module": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
2983 | "semver": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
2984 | "validate-npm-package-license": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz"
2985 | }
2986 | },
2987 | "number-is-nan": {
2988 | "version": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
2989 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
2990 | "dev": true
2991 | },
2992 | "oauth-sign": {
2993 | "version": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
2994 | "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
2995 | "dev": true
2996 | },
2997 | "object-assign": {
2998 | "version": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
2999 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
3000 | "dev": true
3001 | },
3002 | "on-finished": {
3003 | "version": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
3004 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
3005 | "dev": true,
3006 | "requires": {
3007 | "ee-first": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
3008 | }
3009 | },
3010 | "on-headers": {
3011 | "version": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
3012 | "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=",
3013 | "dev": true
3014 | },
3015 | "once": {
3016 | "version": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
3017 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
3018 | "dev": true,
3019 | "requires": {
3020 | "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
3021 | }
3022 | },
3023 | "opn": {
3024 | "version": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz",
3025 | "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=",
3026 | "dev": true,
3027 | "requires": {
3028 | "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
3029 | "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz"
3030 | }
3031 | },
3032 | "optimist": {
3033 | "version": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
3034 | "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
3035 | "dev": true,
3036 | "requires": {
3037 | "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
3038 | "wordwrap": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz"
3039 | },
3040 | "dependencies": {
3041 | "minimist": {
3042 | "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
3043 | "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
3044 | "dev": true
3045 | }
3046 | }
3047 | },
3048 | "ordered-ast-traverse": {
3049 | "version": "https://registry.npmjs.org/ordered-ast-traverse/-/ordered-ast-traverse-1.1.1.tgz",
3050 | "integrity": "sha1-aEOhcLwO7otSDMjdwd3TqjD6BXw=",
3051 | "dev": true,
3052 | "requires": {
3053 | "ordered-esprima-props": "https://registry.npmjs.org/ordered-esprima-props/-/ordered-esprima-props-1.1.0.tgz"
3054 | }
3055 | },
3056 | "ordered-esprima-props": {
3057 | "version": "https://registry.npmjs.org/ordered-esprima-props/-/ordered-esprima-props-1.1.0.tgz",
3058 | "integrity": "sha1-qYJwht9fAQqmDpvQK24DNc6i/8s=",
3059 | "dev": true
3060 | },
3061 | "pako": {
3062 | "version": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
3063 | "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
3064 | "dev": true
3065 | },
3066 | "parse-json": {
3067 | "version": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
3068 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
3069 | "dev": true,
3070 | "requires": {
3071 | "error-ex": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz"
3072 | }
3073 | },
3074 | "parseurl": {
3075 | "version": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz",
3076 | "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=",
3077 | "dev": true
3078 | },
3079 | "path-exists": {
3080 | "version": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
3081 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
3082 | "dev": true,
3083 | "requires": {
3084 | "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz"
3085 | }
3086 | },
3087 | "path-is-absolute": {
3088 | "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
3089 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
3090 | "dev": true
3091 | },
3092 | "path-type": {
3093 | "version": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
3094 | "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
3095 | "dev": true,
3096 | "requires": {
3097 | "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
3098 | "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
3099 | "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz"
3100 | },
3101 | "dependencies": {
3102 | "graceful-fs": {
3103 | "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
3104 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
3105 | "dev": true
3106 | }
3107 | }
3108 | },
3109 | "pend": {
3110 | "version": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
3111 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
3112 | "dev": true
3113 | },
3114 | "phantomjs-prebuilt": {
3115 | "version": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz",
3116 | "integrity": "sha1-1T0xH8+30dCN2yQBRVjxGIxRbaA=",
3117 | "dev": true,
3118 | "requires": {
3119 | "es6-promise": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.0.5.tgz",
3120 | "extract-zip": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz",
3121 | "fs-extra": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz",
3122 | "hasha": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz",
3123 | "kew": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz",
3124 | "progress": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
3125 | "request": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
3126 | "request-progress": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz",
3127 | "which": "https://registry.npmjs.org/which/-/which-1.2.14.tgz"
3128 | },
3129 | "dependencies": {
3130 | "which": {
3131 | "version": "https://registry.npmjs.org/which/-/which-1.2.14.tgz",
3132 | "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=",
3133 | "dev": true,
3134 | "requires": {
3135 | "isexe": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
3136 | }
3137 | }
3138 | }
3139 | },
3140 | "pify": {
3141 | "version": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
3142 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
3143 | "dev": true
3144 | },
3145 | "pinkie": {
3146 | "version": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
3147 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
3148 | "dev": true
3149 | },
3150 | "pinkie-promise": {
3151 | "version": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
3152 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
3153 | "dev": true,
3154 | "requires": {
3155 | "pinkie": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz"
3156 | }
3157 | },
3158 | "portscanner": {
3159 | "version": "https://registry.npmjs.org/portscanner/-/portscanner-1.2.0.tgz",
3160 | "integrity": "sha1-sUu9olfRTDEPqcwJaCrwLUCWGAI=",
3161 | "dev": true,
3162 | "requires": {
3163 | "async": "https://registry.npmjs.org/async/-/async-1.5.2.tgz"
3164 | },
3165 | "dependencies": {
3166 | "async": {
3167 | "version": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
3168 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
3169 | "dev": true
3170 | }
3171 | }
3172 | },
3173 | "pretty-bytes": {
3174 | "version": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz",
3175 | "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=",
3176 | "dev": true,
3177 | "requires": {
3178 | "get-stdin": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
3179 | "meow": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz"
3180 | }
3181 | },
3182 | "process-nextick-args": {
3183 | "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
3184 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
3185 | "dev": true
3186 | },
3187 | "progress": {
3188 | "version": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
3189 | "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
3190 | "dev": true
3191 | },
3192 | "punycode": {
3193 | "version": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
3194 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
3195 | "dev": true
3196 | },
3197 | "qs": {
3198 | "version": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz",
3199 | "integrity": "sha1-TZMuXH6kEcynajEtOaYGIA/VDNk=",
3200 | "dev": true
3201 | },
3202 | "range-parser": {
3203 | "version": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
3204 | "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
3205 | "dev": true
3206 | },
3207 | "raw-body": {
3208 | "version": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz",
3209 | "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=",
3210 | "dev": true,
3211 | "requires": {
3212 | "bytes": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz",
3213 | "iconv-lite": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz",
3214 | "unpipe": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
3215 | },
3216 | "dependencies": {
3217 | "bytes": {
3218 | "version": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz",
3219 | "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=",
3220 | "dev": true
3221 | },
3222 | "iconv-lite": {
3223 | "version": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz",
3224 | "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=",
3225 | "dev": true
3226 | }
3227 | }
3228 | },
3229 | "read-pkg": {
3230 | "version": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
3231 | "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
3232 | "dev": true,
3233 | "requires": {
3234 | "load-json-file": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
3235 | "normalize-package-data": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz",
3236 | "path-type": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz"
3237 | }
3238 | },
3239 | "read-pkg-up": {
3240 | "version": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
3241 | "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
3242 | "dev": true,
3243 | "requires": {
3244 | "find-up": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
3245 | "read-pkg": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz"
3246 | }
3247 | },
3248 | "readable-stream": {
3249 | "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz",
3250 | "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=",
3251 | "dev": true,
3252 | "requires": {
3253 | "buffer-shims": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz",
3254 | "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
3255 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
3256 | "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
3257 | "process-nextick-args": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
3258 | "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.0.tgz",
3259 | "util-deprecate": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
3260 | }
3261 | },
3262 | "redent": {
3263 | "version": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
3264 | "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
3265 | "dev": true,
3266 | "requires": {
3267 | "indent-string": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
3268 | "strip-indent": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz"
3269 | }
3270 | },
3271 | "repeat-string": {
3272 | "version": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
3273 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
3274 | "dev": true
3275 | },
3276 | "repeating": {
3277 | "version": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
3278 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
3279 | "dev": true,
3280 | "requires": {
3281 | "is-finite": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz"
3282 | }
3283 | },
3284 | "request": {
3285 | "version": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
3286 | "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=",
3287 | "dev": true,
3288 | "requires": {
3289 | "aws-sign2": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
3290 | "aws4": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
3291 | "caseless": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
3292 | "combined-stream": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
3293 | "extend": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
3294 | "forever-agent": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
3295 | "form-data": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
3296 | "har-validator": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
3297 | "hawk": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
3298 | "http-signature": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
3299 | "is-typedarray": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
3300 | "isstream": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
3301 | "json-stringify-safe": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
3302 | "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
3303 | "oauth-sign": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
3304 | "qs": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz",
3305 | "stringstream": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
3306 | "tough-cookie": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz",
3307 | "tunnel-agent": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
3308 | "uuid": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz"
3309 | },
3310 | "dependencies": {
3311 | "qs": {
3312 | "version": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz",
3313 | "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=",
3314 | "dev": true
3315 | }
3316 | }
3317 | },
3318 | "request-progress": {
3319 | "version": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz",
3320 | "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=",
3321 | "dev": true,
3322 | "requires": {
3323 | "throttleit": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz"
3324 | }
3325 | },
3326 | "right-align": {
3327 | "version": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
3328 | "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
3329 | "dev": true,
3330 | "requires": {
3331 | "align-text": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz"
3332 | }
3333 | },
3334 | "rimraf": {
3335 | "version": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
3336 | "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
3337 | "dev": true
3338 | },
3339 | "semver": {
3340 | "version": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
3341 | "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
3342 | "dev": true
3343 | },
3344 | "send": {
3345 | "version": "https://registry.npmjs.org/send/-/send-0.15.2.tgz",
3346 | "integrity": "sha1-+R+rRAO8+H5xb3DOtdsvV4vcF9Y=",
3347 | "dev": true,
3348 | "requires": {
3349 | "debug": "https://registry.npmjs.org/debug/-/debug-2.6.4.tgz",
3350 | "depd": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz",
3351 | "destroy": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
3352 | "encodeurl": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
3353 | "escape-html": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
3354 | "etag": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz",
3355 | "fresh": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz",
3356 | "http-errors": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz",
3357 | "mime": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz",
3358 | "ms": "https://registry.npmjs.org/ms/-/ms-1.0.0.tgz",
3359 | "on-finished": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
3360 | "range-parser": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
3361 | "statuses": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz"
3362 | },
3363 | "dependencies": {
3364 | "debug": {
3365 | "version": "https://registry.npmjs.org/debug/-/debug-2.6.4.tgz",
3366 | "integrity": "sha1-dYaps8OXQcAoKuM0RcTorHRzT+A=",
3367 | "dev": true,
3368 | "requires": {
3369 | "ms": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz"
3370 | },
3371 | "dependencies": {
3372 | "ms": {
3373 | "version": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz",
3374 | "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8=",
3375 | "dev": true
3376 | }
3377 | }
3378 | },
3379 | "http-errors": {
3380 | "version": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz",
3381 | "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=",
3382 | "dev": true,
3383 | "requires": {
3384 | "depd": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz",
3385 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
3386 | "setprototypeof": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
3387 | "statuses": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz"
3388 | }
3389 | },
3390 | "ms": {
3391 | "version": "https://registry.npmjs.org/ms/-/ms-1.0.0.tgz",
3392 | "integrity": "sha1-Wa3NIu3FQ/e1OBhi0xOHsfS8lHM=",
3393 | "dev": true
3394 | },
3395 | "setprototypeof": {
3396 | "version": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
3397 | "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
3398 | "dev": true
3399 | }
3400 | }
3401 | },
3402 | "serve-index": {
3403 | "version": "https://registry.npmjs.org/serve-index/-/serve-index-1.8.0.tgz",
3404 | "integrity": "sha1-fF2WwT+xMRAfk8HFd0+FFqHnjTs=",
3405 | "dev": true,
3406 | "requires": {
3407 | "accepts": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
3408 | "batch": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz",
3409 | "debug": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
3410 | "escape-html": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
3411 | "http-errors": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz",
3412 | "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
3413 | "parseurl": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz"
3414 | },
3415 | "dependencies": {
3416 | "debug": {
3417 | "version": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
3418 | "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
3419 | "dev": true,
3420 | "requires": {
3421 | "ms": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
3422 | }
3423 | },
3424 | "ms": {
3425 | "version": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
3426 | "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
3427 | "dev": true
3428 | }
3429 | }
3430 | },
3431 | "serve-static": {
3432 | "version": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.2.tgz",
3433 | "integrity": "sha1-5UbicmCBuBtLzsjpCAjrzdMjr7o=",
3434 | "dev": true,
3435 | "requires": {
3436 | "encodeurl": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
3437 | "escape-html": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
3438 | "parseurl": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz",
3439 | "send": "https://registry.npmjs.org/send/-/send-0.15.2.tgz"
3440 | }
3441 | },
3442 | "setprototypeof": {
3443 | "version": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.2.tgz",
3444 | "integrity": "sha1-gaVSFB7BBLiOic44MQOtXGZWTQg=",
3445 | "dev": true
3446 | },
3447 | "sigmund": {
3448 | "version": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
3449 | "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
3450 | "dev": true
3451 | },
3452 | "signal-exit": {
3453 | "version": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
3454 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
3455 | "dev": true
3456 | },
3457 | "simple-fmt": {
3458 | "version": "https://registry.npmjs.org/simple-fmt/-/simple-fmt-0.1.0.tgz",
3459 | "integrity": "sha1-GRv1ZqWeZTBILLJatTtKjchcOms=",
3460 | "dev": true
3461 | },
3462 | "simple-is": {
3463 | "version": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz",
3464 | "integrity": "sha1-Krt1qt453rXMgVzhDmGRFkhQuvA=",
3465 | "dev": true
3466 | },
3467 | "sntp": {
3468 | "version": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
3469 | "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
3470 | "dev": true,
3471 | "requires": {
3472 | "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz"
3473 | }
3474 | },
3475 | "source-map": {
3476 | "version": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
3477 | "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
3478 | "dev": true
3479 | },
3480 | "spdx-correct": {
3481 | "version": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
3482 | "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
3483 | "dev": true,
3484 | "requires": {
3485 | "spdx-license-ids": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz"
3486 | }
3487 | },
3488 | "spdx-expression-parse": {
3489 | "version": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
3490 | "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=",
3491 | "dev": true
3492 | },
3493 | "spdx-license-ids": {
3494 | "version": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
3495 | "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=",
3496 | "dev": true
3497 | },
3498 | "sshpk": {
3499 | "version": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz",
3500 | "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=",
3501 | "dev": true,
3502 | "requires": {
3503 | "asn1": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
3504 | "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
3505 | "bcrypt-pbkdf": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
3506 | "dashdash": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
3507 | "ecc-jsbn": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
3508 | "getpass": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
3509 | "jodid25519": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz",
3510 | "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
3511 | "tweetnacl": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz"
3512 | },
3513 | "dependencies": {
3514 | "assert-plus": {
3515 | "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
3516 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
3517 | "dev": true
3518 | }
3519 | }
3520 | },
3521 | "stable": {
3522 | "version": "https://registry.npmjs.org/stable/-/stable-0.1.6.tgz",
3523 | "integrity": "sha1-kQ9dKu17Ugxud3SZwfMuE5/eyxA=",
3524 | "dev": true
3525 | },
3526 | "statuses": {
3527 | "version": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
3528 | "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
3529 | "dev": true
3530 | },
3531 | "string_decoder": {
3532 | "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.0.tgz",
3533 | "integrity": "sha1-8G9BFXtmTYYGn4S9vcmw2KsoFmc=",
3534 | "dev": true,
3535 | "requires": {
3536 | "buffer-shims": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz"
3537 | }
3538 | },
3539 | "stringmap": {
3540 | "version": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz",
3541 | "integrity": "sha1-VWwTeyWPlCuHdvWy71gqoGnX0bE=",
3542 | "dev": true
3543 | },
3544 | "stringset": {
3545 | "version": "https://registry.npmjs.org/stringset/-/stringset-0.2.1.tgz",
3546 | "integrity": "sha1-7yWcTjSTRDd/zRyRPdLoSMnAQrU=",
3547 | "dev": true
3548 | },
3549 | "stringstream": {
3550 | "version": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
3551 | "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
3552 | "dev": true
3553 | },
3554 | "strip-ansi": {
3555 | "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
3556 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
3557 | "dev": true,
3558 | "requires": {
3559 | "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"
3560 | }
3561 | },
3562 | "strip-bom": {
3563 | "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
3564 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
3565 | "dev": true,
3566 | "requires": {
3567 | "is-utf8": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz"
3568 | }
3569 | },
3570 | "strip-indent": {
3571 | "version": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
3572 | "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
3573 | "dev": true,
3574 | "requires": {
3575 | "get-stdin": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz"
3576 | }
3577 | },
3578 | "supports-color": {
3579 | "version": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
3580 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
3581 | "dev": true
3582 | },
3583 | "throttleit": {
3584 | "version": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
3585 | "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=",
3586 | "dev": true
3587 | },
3588 | "tiny-lr": {
3589 | "version": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.2.1.tgz",
3590 | "integrity": "sha1-s/26gC5dVqM8L28QeUsy5Hescp0=",
3591 | "dev": true,
3592 | "requires": {
3593 | "body-parser": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.2.tgz",
3594 | "debug": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
3595 | "faye-websocket": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
3596 | "livereload-js": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.2.2.tgz",
3597 | "parseurl": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz",
3598 | "qs": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz"
3599 | },
3600 | "dependencies": {
3601 | "debug": {
3602 | "version": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
3603 | "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
3604 | "dev": true,
3605 | "requires": {
3606 | "ms": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
3607 | }
3608 | },
3609 | "ms": {
3610 | "version": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
3611 | "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
3612 | "dev": true
3613 | }
3614 | }
3615 | },
3616 | "tough-cookie": {
3617 | "version": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz",
3618 | "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=",
3619 | "dev": true,
3620 | "requires": {
3621 | "punycode": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz"
3622 | }
3623 | },
3624 | "trim-newlines": {
3625 | "version": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
3626 | "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
3627 | "dev": true
3628 | },
3629 | "tryor": {
3630 | "version": "https://registry.npmjs.org/tryor/-/tryor-0.1.2.tgz",
3631 | "integrity": "sha1-gUXkynyv9ArN48z5Rui4u3W0Fys=",
3632 | "dev": true
3633 | },
3634 | "tunnel-agent": {
3635 | "version": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
3636 | "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
3637 | "dev": true
3638 | },
3639 | "tweetnacl": {
3640 | "version": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
3641 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
3642 | "dev": true,
3643 | "optional": true
3644 | },
3645 | "type-is": {
3646 | "version": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
3647 | "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=",
3648 | "dev": true,
3649 | "requires": {
3650 | "media-typer": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
3651 | "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz"
3652 | }
3653 | },
3654 | "typedarray": {
3655 | "version": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
3656 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
3657 | "dev": true
3658 | },
3659 | "uglify-js": {
3660 | "version": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.22.tgz",
3661 | "integrity": "sha1-1Uk0d4qNoUkD+imjJvskwKtRoaA=",
3662 | "dev": true,
3663 | "requires": {
3664 | "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
3665 | "uglify-to-browserify": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
3666 | "yargs": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz"
3667 | }
3668 | },
3669 | "uglify-to-browserify": {
3670 | "version": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
3671 | "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
3672 | "dev": true,
3673 | "optional": true
3674 | },
3675 | "underscore": {
3676 | "version": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz",
3677 | "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=",
3678 | "dev": true
3679 | },
3680 | "underscore.string": {
3681 | "version": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz",
3682 | "integrity": "sha1-18D6KvXVoaZ/QlPa7pgTLnM/Dxk=",
3683 | "dev": true
3684 | },
3685 | "unpipe": {
3686 | "version": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
3687 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
3688 | "dev": true
3689 | },
3690 | "uri-path": {
3691 | "version": "https://registry.npmjs.org/uri-path/-/uri-path-0.0.2.tgz",
3692 | "integrity": "sha1-gD6wHy/rF5J9zOD2GH5yt19T9VQ=",
3693 | "dev": true
3694 | },
3695 | "util-deprecate": {
3696 | "version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
3697 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
3698 | "dev": true
3699 | },
3700 | "utils-merge": {
3701 | "version": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
3702 | "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=",
3703 | "dev": true
3704 | },
3705 | "uuid": {
3706 | "version": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz",
3707 | "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=",
3708 | "dev": true
3709 | },
3710 | "validate-npm-package-license": {
3711 | "version": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
3712 | "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
3713 | "dev": true,
3714 | "requires": {
3715 | "spdx-correct": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
3716 | "spdx-expression-parse": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz"
3717 | }
3718 | },
3719 | "verror": {
3720 | "version": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz",
3721 | "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=",
3722 | "dev": true,
3723 | "requires": {
3724 | "extsprintf": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz"
3725 | }
3726 | },
3727 | "websocket-driver": {
3728 | "version": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz",
3729 | "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=",
3730 | "dev": true,
3731 | "requires": {
3732 | "websocket-extensions": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz"
3733 | }
3734 | },
3735 | "websocket-extensions": {
3736 | "version": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz",
3737 | "integrity": "sha1-domUmcGEtu91Q3fC27DNbLVdKec=",
3738 | "dev": true
3739 | },
3740 | "which": {
3741 | "version": "https://registry.npmjs.org/which/-/which-1.0.9.tgz",
3742 | "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=",
3743 | "dev": true
3744 | },
3745 | "window-size": {
3746 | "version": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
3747 | "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
3748 | "dev": true
3749 | },
3750 | "wordwrap": {
3751 | "version": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
3752 | "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
3753 | "dev": true
3754 | },
3755 | "wrappy": {
3756 | "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
3757 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
3758 | "dev": true
3759 | },
3760 | "xtend": {
3761 | "version": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
3762 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
3763 | "dev": true
3764 | },
3765 | "yargs": {
3766 | "version": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
3767 | "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
3768 | "dev": true,
3769 | "requires": {
3770 | "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
3771 | "cliui": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
3772 | "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
3773 | "window-size": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz"
3774 | },
3775 | "dependencies": {
3776 | "camelcase": {
3777 | "version": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
3778 | "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
3779 | "dev": true
3780 | }
3781 | }
3782 | },
3783 | "yauzl": {
3784 | "version": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
3785 | "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
3786 | "dev": true,
3787 | "requires": {
3788 | "fd-slicer": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz"
3789 | }
3790 | }
3791 | }
3792 | }
3793 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular-content-editable",
3 | "version": "1.2.3",
4 | "description": "modify in real time any html tag you want",
5 | "main": "dist/angular-content-editable.js",
6 | "directories": {
7 | "example": "example"
8 | },
9 | "scripts": {
10 | "test": "karma start --single-run",
11 | "start": "grunt",
12 | "prebuild": "npm run test",
13 | "build": "grunt build"
14 | },
15 | "repository": {
16 | "type": "git",
17 | "url": "git+https://github.com/codekraft-studio/angular-content-editable.git"
18 | },
19 | "keywords": [
20 | "angular",
21 | "directive"
22 | ],
23 | "author": "codekraft-studio",
24 | "bugs": {
25 | "url": "https://github.com/codekraft-studio/angular-content-editable/issues"
26 | },
27 | "homepage": "https://github.com/codekraft-studio/angular-content-editable#readme",
28 | "license": "ISC",
29 | "devDependencies": {
30 | "angular": "^1.6.5",
31 | "angular-mocks": "^1.6.5",
32 | "grunt": "^0.4.5",
33 | "grunt-contrib-concat": "^1.0.1",
34 | "grunt-contrib-connect": "^1.0.2",
35 | "grunt-contrib-uglify": "^0.9.2",
36 | "grunt-contrib-watch": "^1.0.0",
37 | "grunt-ng-annotate": "^3.0.0",
38 | "jasmine-core": "^2.6.1",
39 | "karma": "^1.6.0",
40 | "karma-jasmine": "^1.1.0",
41 | "karma-phantomjs-launcher": "^1.0.4"
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/angular-content-editable.directive.js:
--------------------------------------------------------------------------------
1 | angular.module('angular-content-editable')
2 |
3 | .directive('contentEditable', function ($log, $sce, $parse, $window, contentEditable) {
4 |
5 | var directive = {
6 | restrict: 'A',
7 | require: 'ngModel',
8 | scope: { editCallback: '&?', isEditing: '=?', stripReplace: '=?' },
9 | link: _link
10 | };
11 |
12 | return directive;
13 |
14 | function _link(scope, elem, attrs, ngModel) {
15 |
16 | // return if ng model not specified
17 | if(!ngModel) {
18 | $log.warn('Error: ngModel is required in elem: ', elem);
19 | return;
20 | }
21 |
22 | var noEscape = true, originalElement = elem[0], callback, stripReplace;
23 |
24 | // get default usage options
25 | var options = angular.copy(contentEditable);
26 |
27 | // update options with attributes
28 | angular.forEach(options, function (val, key) {
29 | if( key in attrs ) {
30 | options[key] = $parse(attrs[key])(scope);
31 | }
32 | });
33 |
34 | // Get the callback from item scope or global defined
35 | callback = scope.editCallback || options.editCallback;
36 |
37 | // Get the strip tags option from item scope or global defined
38 | stripReplace = scope.stripReplace || options.stripReplace;
39 |
40 | // add editable class
41 | attrs.$addClass(options.editableClass);
42 |
43 | scope.$watch('isEditing', function(newValue, oldValue) {
44 | if (newValue !== oldValue) {
45 | if (newValue) {
46 | originalElement.click();
47 | } else {
48 | originalElement.blur();
49 | }
50 | }
51 | });
52 |
53 | // render always with model value
54 | ngModel.$render = function() {
55 | elem.html( ngModel.$modelValue || elem.html() );
56 | };
57 |
58 | // handle click on element
59 | function onClick(e) {
60 | e.preventDefault();
61 | attrs.$set('contenteditable', 'true');
62 | attrs.$addClass('active');
63 | originalElement.focus();
64 | }
65 |
66 | // check some option extra
67 | // conditions during focus
68 | function onFocus(e) {
69 |
70 | // evalAsync in case a digest is already in progress (e.g. changing isEditing to true)
71 | scope.$evalAsync(function() {
72 |
73 | scope.isEditing = true;
74 |
75 | // turn on the flag
76 | noEscape = true;
77 |
78 | // select all on focus
79 | if( options.focusSelect ) {
80 | var range = $window.document.createRange();
81 | var selection = $window.getSelection();
82 | range.selectNodeContents( originalElement );
83 | selection.removeAllRanges();
84 | selection.addRange(range);
85 | }
86 |
87 | // if render-html is enabled convert
88 | // all text content to plaintext
89 | // in order to modify html tags
90 | if( options.renderHtml ) {
91 | originalElement.textContent = elem.html();
92 | }
93 |
94 | });
95 |
96 | }
97 |
98 | function onBlur(e) {
99 |
100 | scope.$apply(function() {
101 |
102 | // the text
103 | var html;
104 |
105 | scope.isEditing = false;
106 |
107 | // remove active class when editing is over
108 | attrs.$removeClass('active');
109 |
110 | // disable editability
111 | attrs.$set('contenteditable', 'false');
112 |
113 | // if text needs to be rendered as html
114 | if( options.renderHtml && noEscape ) {
115 | // get plain text html (with html tags)
116 | // replace all blank spaces
117 | html = originalElement.textContent.replace(/\u00a0/g, " ");
118 | // update elem html value
119 | elem.html(html);
120 |
121 | } else {
122 | // get element content replacing html tag
123 | html = elem.html().replace(/ /g, ' ');
124 | }
125 |
126 | // if element value is different from model value
127 | if( html != ngModel.$modelValue ) {
128 |
129 | // if user defined strip-replace variable
130 | if( stripReplace ){
131 | if( angular.isString(stripReplace) ) {
132 | // if stripReplace is a string create new RegExp with gi (global, ignore case)
133 | html = html.replace( new RegExp( stripReplace, 'g' ), '' );
134 | }else if( angular.isArray(stripReplace) ){
135 | // if stripReplace is an array create new RegExp from array values
136 | // get values from array or set default
137 | var e = stripReplace[0] || '', r = stripReplace[1] || '', f = stripReplace[2] || 'g';
138 | html = html.replace( new RegExp( e, f ), r );
139 | }else{
140 | // if stripReplace is set to "true", remove all html tags and new line breaks
141 | html = html.replace(/(<([^>]+)>)/ig, '').replace(/\r?\n|\r/g, '');
142 | }
143 | // update elem html value
144 | elem.html(html);
145 | }
146 |
147 | /**
148 | * This method should be called
149 | * when a controller wants to
150 | * change the view value
151 | */
152 | ngModel.$setViewValue(html);
153 |
154 | // if user passed a variable
155 | // and is a function
156 | if( callback && angular.isFunction(callback) ) {
157 |
158 | // run the callback with arguments: current text and element
159 | return callback({
160 | text: html,
161 | elem: elem
162 | });
163 |
164 | }
165 |
166 | }
167 |
168 | });
169 |
170 | }
171 |
172 | function onKeyDown(e) {
173 |
174 | // on tab key blur and
175 | // TODO: focus to next
176 | if( e.which == 9 ) {
177 | originalElement.blur();
178 | return;
179 | }
180 |
181 | // on esc key roll back value and blur
182 | if( e.which == 27 ) {
183 | ngModel.$rollbackViewValue();
184 | noEscape = false;
185 | return originalElement.blur();
186 | }
187 |
188 | // if single line or ctrl key is
189 | // pressed trigger the blur event
190 | if( e.which == 13 && (options.singleLine || e.ctrlKey) ) {
191 | return originalElement.blur();
192 | }
193 |
194 | }
195 |
196 | /**
197 | * On click turn the element
198 | * to editable and focus it
199 | */
200 | elem.on('click', onClick);
201 |
202 | /**
203 | * On element focus
204 | */
205 | elem.on('focus', onFocus);
206 |
207 | /**
208 | * On element blur turn off
209 | * editable mode, if HTML, render
210 | * update model value and run callback
211 | * if specified
212 | */
213 | elem.on('blur', onBlur);
214 |
215 | /**
216 | * Bind the keydown event for many functions
217 | */
218 | elem.on('keydown', onKeyDown);
219 |
220 | /**
221 | * On element destroy, remove all event
222 | * listeners related to the directive
223 | * (helps to prevent memory leaks)
224 | */
225 | scope.$on('$destroy', function () {
226 | elem.off('click', onClick);
227 | elem.off('focus', onFocus);
228 | elem.off('blur', onBlur);
229 | elem.off('keydown', onKeyDown);
230 | });
231 |
232 | }
233 |
234 | });
235 |
--------------------------------------------------------------------------------
/src/angular-content-editable.module.js:
--------------------------------------------------------------------------------
1 | angular.module('angular-content-editable', []);
2 |
--------------------------------------------------------------------------------
/src/angular-content-editable.provider.js:
--------------------------------------------------------------------------------
1 | angular.module('angular-content-editable')
2 |
3 | /**
4 | * Provider to setup the default
5 | * module options for the directive
6 | */
7 | .provider('contentEditable', function () {
8 |
9 | var defaults = {
10 | editableClass: 'editable',
11 | keyBindings: true, // default true for key shortcuts
12 | singleLine: false,
13 | focusSelect: true, // default on focus select all text inside
14 | renderHtml: false,
15 | editCallback: false,
16 | stripReplace: false
17 | }
18 |
19 | this.configure = function (options) {
20 | return angular.extend(defaults, options);
21 | }
22 |
23 | this.$get = function () {
24 | return defaults;
25 | }
26 |
27 | });
28 |
--------------------------------------------------------------------------------
/style.css:
--------------------------------------------------------------------------------
1 | html, body {
2 | width: 100%;
3 | height: 100%;
4 | position: relative;
5 | margin: 0;
6 | height: 100%;
7 | padding: 0;
8 | font-family: 'r', sans-serif;
9 | color: #555;
10 | line-height: 25px;
11 | }
12 |
13 | header {
14 | padding: 30px 0;
15 | background: #2C3E50;
16 | background: -webkit-linear-gradient(to right, #4CA1AF, #2C3E50);
17 | background: linear-gradient(to right, #4CA1AF, #2C3E50);
18 | margin-bottom: 25px;
19 | }
20 |
21 | .editable:hover {
22 | background-color: #eee;
23 | }
24 |
25 | .editable-custom {
26 | font-size: 1.5rem;
27 | }
28 |
29 | .editable-custom:hover {
30 | background-color: #28e7fb;
31 | color: white;
32 | }
33 |
34 | .editable {
35 | outline: none;
36 | border: 0;
37 | transition: all ease-in 150ms;
38 | }
39 |
40 | .editable.active {
41 | padding: 10px;
42 | border-left: 2px solid #355869;
43 | }
44 |
45 | .editable::selection {
46 | background: rgba(75, 158, 172, 0.3);
47 | }
48 |
49 | b::selection, kbd::selection, strong::selection {
50 | background: rgba(75, 158, 172, 0.3);
51 | }
52 |
53 | p {
54 | font-size: 16px;
55 | }
56 |
57 | header {
58 | color: whitesmoke;
59 | }
60 |
61 | header h1, h2 {
62 | margin: 0;
63 | }
64 |
65 | header h1 {
66 | color: white;
67 | }
68 |
69 | header h2 {
70 | color: #eee;
71 | font-size: 25px;
72 | }
73 |
--------------------------------------------------------------------------------
/test/angular-content-editable.directive.test.js:
--------------------------------------------------------------------------------
1 | describe("Angular Content Editable: Directive", function () {
2 |
3 | var $log;
4 | var $compile;
5 | var $rootScope;
6 | var scope;
7 | var element;
8 |
9 | beforeEach(module('angular-content-editable'));
10 |
11 | beforeEach(inject(function(_$compile_, _$rootScope_, _$log_){
12 | $compile = _$compile_;
13 | $rootScope = _$rootScope_;
14 | $log = _$log_;
15 | }));
16 |
17 | beforeEach(function () {
18 | scope = $rootScope.$new();
19 | scope.myModel = 'Text to be modified.';
20 | scope.onEdit = jasmine.createSpy('onEdit');
21 | scope.isEditing = false;
22 | element = angular.element(' ');
23 | $compile(element)(scope);
24 | scope.$digest();
25 | });
26 |
27 | it('should init the viewValue with ngModel', function() {
28 | expect(element.html()).toContain("Text to be modified.");
29 | });
30 |
31 | it('should set contenteditable on click', function () {
32 | expect(element.attr('contenteditable')).toBeUndefined();
33 | element.triggerHandler('click');
34 | scope.$digest();
35 | expect(element.attr('contenteditable')).toBe('true');
36 | });
37 |
38 | it('should fire an edit callback with the correct arguments', function () {
39 | element.triggerHandler('click');
40 | element.html('Some random text.');
41 | element.triggerHandler('blur');
42 | scope.$digest();
43 | expect(scope.onEdit).toHaveBeenCalledWith('extraArg', 'Some random text.', element);
44 | });
45 |
46 | it('should enable editing programatically using isEditing', function () {
47 | expect(element.attr('contenteditable')).toBeUndefined();
48 | scope.isEditing = true;
49 | scope.$digest();
50 | expect(element.attr('contenteditable')).toBe('true');
51 | element.triggerHandler('blur');
52 | scope.$digest();
53 | expect(scope.isEditing).toBe(false);
54 | });
55 |
56 | it('should strip all html tags from text', function () {
57 | element = angular.element(' ');
58 | $compile(element)(scope);
59 | scope.$digest();
60 | element.triggerHandler('click');
61 | element.html('Some random text change .');
62 | element.triggerHandler('blur');
63 | expect(element.html()).toContain("Some random text change.");
64 | });
65 |
66 | it('should replace all matching strings', function () {
67 | element = angular.element(' ');
68 | $compile(element)(scope);
69 | scope.$digest();
70 | element.triggerHandler('click');
71 | element.html('Some random text change.');
72 | element.triggerHandler('blur');
73 | expect(element.html()).toContain("Some random text success.");
74 | });
75 | });
76 |
--------------------------------------------------------------------------------