├── .circleci └── config.yml ├── .gitignore ├── .jshintrc ├── CHANGELOG.md ├── Gruntfile.js ├── LICENSE-MIT ├── README.md ├── package-lock.json ├── package.json ├── tasks ├── constant.tpl.ejs └── ngconstant.js └── test ├── constants.json ├── custom.tpl.ejs ├── expected ├── custom_options.js ├── custom_wrap_options.js ├── default_options.js ├── global_constants_options.js ├── no_deps_options.js ├── string_constants_options.js ├── template_options.js └── wrap_options.js └── ngconstant_test.js /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | jobs: 3 | build: 4 | docker: 5 | - image: circleci/node:12 6 | 7 | working_directory: ~/repo 8 | 9 | steps: 10 | - checkout 11 | 12 | - restore_cache: 13 | keys: 14 | - v1-dependencies-{{ checksum "package.json" }} 15 | - v1-dependencies- 16 | 17 | - run: npm ci 18 | 19 | - save_cache: 20 | paths: 21 | - node_modules 22 | key: v1-dependencies-{{ checksum "package.json" }} 23 | 24 | - run: npm test -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | npm-debug.log 3 | tmp 4 | -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "curly": true, 3 | "eqeqeq": true, 4 | "immed": true, 5 | "latedef": true, 6 | "newcap": true, 7 | "noarg": true, 8 | "sub": true, 9 | "undef": true, 10 | "boss": true, 11 | "eqnull": true, 12 | "node": true 13 | } 14 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # 2.0.3 2 | - Unused dependency on `merge` removed. 3 | - Dependency updates to fix potential security vulnerabilities. 4 | 5 | # 2.0.2 6 | 7 | - Dependencies updated. 8 | 9 | # 2.0.1 10 | 11 | - Dependencies updated. 12 | - Grunt 1.0.0 support added. 13 | 14 | # 2.0.0 15 | 16 | - Dependencies updated. Especially lodash 4.0.0 is used now. 17 | - New `configMergeCustomizer` added. 18 | 19 | ## Breaking Change: 20 | - `undefined` values are removed from the merged global and target configuration. You can get back your `undefined` values by using the following code: 21 | 22 | ```js 23 | options: { 24 | configMergeCustomizer: function (key, objValue, srcValue) { 25 | if (_.isUndefined(objValue) && _.isUndefined(srcValue)) { 26 | return null; 27 | } 28 | } 29 | } 30 | ``` 31 | 32 | This will replace all `undefined` values with `null`. The signature is the same as from `_.mergeWith` with a additional first parameter `key` which can be the value `'constants'` or `'values'`. See the [_.mergeWith](https://lodash.com/docs#mergeWith) documentation for further informations. 33 | 34 | # v1.1.0 35 | 36 | - Template stings in the `ngconstant` configuration does now support grunts variable interpolation. [#49](https://github.com/werk85/grunt-ng-constant/pull/49) 37 | 38 | # v1.0.0 39 | 40 | - More unix style. More strict and single quoted. 41 | 42 | ## Upgrade from v0.5.x to v1.0.0 43 | 44 | * `js-beautify` is removed from this project (more unix style). If you need good looking code use [grunt-jsbeautifyer](https://github.com/vkadam/grunt-jsbeautifier) as additional task. 45 | * All options for the serializers moved to the `serializerOptions` parameter. 46 | * All output now uses single quotes as default. Thanks to [jju](https://github.com/rlidwka/jju). 47 | * The default wrapper now includes `'use strict';`. 48 | 49 | # v0.4.8 50 | 51 | - Closed [#19](https://github.com/werk85/grunt-ng-constant/issues/19) 52 | - Closed [#23](https://github.com/werk85/grunt-ng-constant/issues/23). 53 | 54 | Thanks to [dropshare](https://github.com/dropshape) and [ggalmazor](https://github.com/ggalmazor). 55 | 56 | # v0.4.7 57 | 58 | - Closed [#17](https://github.com/werk85/grunt-ng-constant/issues/17). 59 | 60 | # v0.4.6 61 | 62 | - Closed [#16](https://github.com/werk85/grunt-ng-constant/issues/16). Global constants module option added to README. 63 | 64 | # v0.4.5 65 | 66 | - Closed [#3](https://github.com/werk85/grunt-ng-constant/issues/3) 67 | - Closed [#11](https://github.com/werk85/grunt-ng-constant/issues/11). The parameters `space`, `deps`, `wrap` and `coffee` are not available on per module base. Thanks to [jjt](https://github.com/jjt). 68 | 69 | # v0.4.4 70 | 71 | - Closed [#10](https://github.com/werk85/grunt-ng-constant/issues/10) 72 | 73 | # v0.4.3 74 | 75 | - Single constant option added. ejs dependency removed. 76 | 77 | # v0.4.2 78 | 79 | - Wrap option added. Thanks to [gabrielmancini](https://github.com/gabrielmancini). 80 | -------------------------------------------------------------------------------- /Gruntfile.js: -------------------------------------------------------------------------------- 1 | /* 2 | * grunt-ng-constant 3 | * https://github.com/mlegenhausen/grunt-ng-constant 4 | * 5 | * Copyright (c) 2013 Malte Legenhausen 6 | * Licensed under the MIT license. 7 | */ 8 | 9 | 'use strict'; 10 | 11 | module.exports = function(grunt) { 12 | var _ = require('lodash'); 13 | 14 | // Project configuration. 15 | grunt.initConfig({ 16 | jshint: { 17 | all: [ 18 | 'Gruntfile.js', 19 | 'tasks/*.js', 20 | '<%= nodeunit.tests %>', 21 | ], 22 | options: { 23 | jshintrc: '.jshintrc', 24 | }, 25 | }, 26 | 27 | // Before generating any new files, remove any previously-created files. 28 | clean: { 29 | tests: ['tmp'], 30 | }, 31 | 32 | // Configuration to be run (and then tested). 33 | ngconstant: { 34 | options: { 35 | dest: 'tmp/empty_options.js', 36 | space: '\t', 37 | wrap: '{%= __ngModule %};', 38 | constants: function () { 39 | return { 40 | 'constant1': { 41 | global_key: 'global_value' 42 | } 43 | }; 44 | } 45 | }, 46 | default_options: { 47 | options: { 48 | dest: 'tmp/default_options.js', 49 | name: 'module1', 50 | configMergeCustomizer: function (key, objValue, srcValue) { 51 | if (_.isUndefined(objValue) && _.isUndefined(srcValue)) { 52 | return null; 53 | } 54 | } 55 | }, 56 | constants: { 57 | 'constant1': { 58 | key1: 'value1', 59 | key2: 'value2' 60 | }, 61 | 'constant2': undefined 62 | }, 63 | values: { 64 | 'value1': { 65 | key1: 'value1' 66 | } 67 | } 68 | }, 69 | no_deps_options: { 70 | options: { 71 | deps: false, 72 | name: 'module1', 73 | dest: 'tmp/no_deps_options.js' 74 | } 75 | }, 76 | custom_options: { 77 | options: { 78 | deps: ['test1', 'test2'], 79 | dest: 'tmp/custom_options.js', 80 | name: 'module2' 81 | }, 82 | constants: { 83 | 'constant1': { 84 | key1: 123, 85 | key2: 'value2', 86 | foobar: false 87 | } 88 | } 89 | }, 90 | wrap_options: { 91 | options: { 92 | deps: ['test'], 93 | wrap: true, 94 | dest: 'tmp/wrap_options.js', 95 | name: 'module2' 96 | }, 97 | constants: { 98 | 'constant1': { 99 | key1: 123, 100 | key2: 'value2', 101 | foobar: false 102 | } 103 | } 104 | }, 105 | custom_wrap_options: { 106 | options: { 107 | deps: ['test'], 108 | wrap: 'define(["angular", "ngResource", "ngCookies"], function() {\nreturn {%= __ngModule %}\n\n});', 109 | dest: 'tmp/custom_wrap_options.js', 110 | name: 'module2' 111 | }, 112 | constants: { 113 | 'constant1': { 114 | key1: 123, 115 | key2: 'value2', 116 | foobar: false 117 | } 118 | } 119 | }, 120 | global_constants_options: { 121 | options: { 122 | dest: 'tmp/global_constants_options.js', 123 | name: 'module1' 124 | }, 125 | constants: { 126 | 'constant1': { 127 | global_key: 'overriden_global_value' 128 | } 129 | } 130 | }, 131 | template_options: { 132 | options: { 133 | template: grunt.file.read('test/custom.tpl.ejs'), 134 | dest: 'tmp/template_options.js', 135 | name: 'templateOptionsModule', 136 | }, 137 | constants: { 138 | 'constant1': 'value1' 139 | } 140 | }, 141 | string_constants_options: { 142 | options: { 143 | dest: 'tmp/string_constants_options.js', 144 | name: 'stringConstantsOptionsModule' 145 | }, 146 | constants: 'test/constants.json' 147 | }, 148 | source_serializer_options: { 149 | options: { 150 | dest: 'tmp/source_serializer_options.js', 151 | name: 'sourceConstant', 152 | serializer: 'source', 153 | }, 154 | constants: { 155 | constant1: [ 4, 5, 6, 'hello', { 156 | a:2, 157 | 'b':3, 158 | '1':4, 159 | 'if':5, 160 | yes:true, 161 | no:false, 162 | nan:NaN, 163 | infinity:Infinity, 164 | 'undefined':undefined, 165 | 'null':null, 166 | foo: function(bar) { 167 | 168 | } 169 | }, 170 | /we$/gi, 171 | new Date("Wed, 09 Aug 1995 00:00:00 GMT")] 172 | } 173 | } 174 | }, 175 | 176 | // Unit tests. 177 | nodeunit: { 178 | tests: ['test/*_test.js'], 179 | }, 180 | 181 | bump: { 182 | options: { 183 | pushTo: 'origin' 184 | } 185 | } 186 | }); 187 | 188 | // Actually load this plugin's task(s). 189 | grunt.loadTasks('tasks'); 190 | 191 | // These plugins provide necessary tasks. 192 | grunt.loadNpmTasks('grunt-contrib-jshint'); 193 | grunt.loadNpmTasks('grunt-contrib-clean'); 194 | grunt.loadNpmTasks('grunt-contrib-nodeunit'); 195 | grunt.loadNpmTasks('grunt-bump'); 196 | 197 | // Whenever the "test" task is run, first clean the "tmp" dir, then run this 198 | // plugin's task(s), then test the result. 199 | grunt.registerTask('test', ['clean', 'ngconstant', 'nodeunit']); 200 | 201 | // By default, lint and run all tests. 202 | grunt.registerTask('default', ['jshint', 'test']); 203 | 204 | }; 205 | -------------------------------------------------------------------------------- /LICENSE-MIT: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2013-2014 werk85 http://werk85.de 4 | 5 | Permission is hereby granted, free of charge, to any person 6 | obtaining a copy of this software and associated documentation 7 | files (the "Software"), to deal in the Software without 8 | restriction, including without limitation the rights to use, 9 | copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the 11 | Software is furnished to do so, subject to the following 12 | conditions: 13 | 14 | The above copyright notice and this permission notice shall be 15 | included in all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 19 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 20 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 21 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 22 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 23 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 24 | OTHER DEALINGS IN THE SOFTWARE. 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # grunt-ng-constant [![CircleCI](https://circleci.com/gh/werk85/grunt-ng-constant.svg?style=svg)](https://circleci.com/gh/werk85/grunt-ng-constant) 2 | 3 | > Plugin for dynamic generation of angular constant and value modules. 4 | 5 | ## Getting Started 6 | This plugin requires Grunt `~0.4.5` 7 | 8 | If you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command: 9 | 10 | ```shell 11 | npm install grunt-ng-constant --save-dev 12 | ``` 13 | 14 | When the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript: 15 | 16 | ```js 17 | grunt.loadNpmTasks('grunt-ng-constant'); 18 | ``` 19 | 20 | ## The "ngconstant" task 21 | 22 | ### Overview 23 | The following shows a simple configuration for generating a config module with one constant and one value that contain your package information and debug config. 24 | 25 | ```js 26 | grunt.initConfig({ 27 | ngconstant: { 28 | options: { 29 | name: 'config', 30 | dest: 'config.js', 31 | constants: { 32 | package: grunt.file.readJSON('package.json') 33 | }, 34 | values: { 35 | debug: true 36 | } 37 | }, 38 | build: { 39 | } 40 | }, 41 | }) 42 | ``` 43 | 44 | For the target `build` the resulting file `config.js` looks like this: 45 | 46 | ```js 47 | angular.module('config', []) 48 | 49 | .constant('package', { 50 | "version": "0.0.1", 51 | ... 52 | }) 53 | 54 | .value("debug", true) 55 | 56 | ; 57 | ``` 58 | 59 | ### Options 60 | 61 | #### name 62 | Type: `String` 63 | 64 | Required 65 | 66 | The name of the constant module used in your angular project. 67 | 68 | #### dest 69 | Type: `String` 70 | 71 | Required 72 | 73 | The path where the generated constant module should be saved. 74 | 75 | #### deps 76 | Type: `Array` or `Boolean` 77 | 78 | Default value: `[]` 79 | 80 | Optional 81 | 82 | An array that specifies the default dependencies a module should have. When your module should not have any modules, so you can append the constants to an already existing one, you can set `deps` to `false`. 83 | 84 | #### constants 85 | Type: `Object`, `String`, `Function` 86 | 87 | Default value: `{}` 88 | 89 | Optional 90 | 91 | If it is an object it gets automatically merged in all target `constants` definitions. This option should be used when you need a global `constants` definition for all your targets. 92 | 93 | #### values 94 | Type: `Object`, `String`, `Function` 95 | 96 | Default value: `{}` 97 | 98 | Optional 99 | 100 | If it is an object it gets automatically merged in all target `values` definitions. This option should be used when you need a global `values` definition for all your targets. 101 | 102 | #### wrap 103 | Type: `String` or `Boolean` 104 | 105 | Default value: `false` 106 | 107 | Optional 108 | 109 | A boolean to activate or deactivate the automatic wrapping. A string which will wrap the result of file, use the `{%= __ngModule %}` variable to indicate where to put the generated module content. See the "Custom Wrap Option" section for further informations. 110 | 111 | #### serializer 112 | Type: `String|Function` 113 | 114 | Default value: `jju` 115 | 116 | Optional 117 | 118 | Available options: 119 | 120 | * `jju` (Default) Uses the [jju](https://github.com/rlidwka/jju) stringify method. 121 | * `json` Uses `JSON.stringify` for serialization. 122 | * `tosource` Use the [node-tosource](https://github.com/marcello3d/node-tosource) module. 123 | 124 | If you want to define your own serializer use `function(obj, serializerOptions, options) { return /* your serialized string */ }`. `this` will be set to the plugin context. 125 | 126 | #### serializerOptions 127 | Type: `Object` 128 | 129 | Default value: `{indent: '', no_trailing_comma: true}` 130 | 131 | Optional 132 | 133 | Use this option for setting specific options for the given serializer. The default config configures the [jju](https://github.com/rlidwka/jju) stringify method. See the documentation for more information of possible options. 134 | 135 | #### template 136 | Type: `String` 137 | 138 | Default value: `grunt.file.read('constant.tpl.ejs')` 139 | 140 | Optional 141 | 142 | Custom template for creating the output constants file. Defaults to the default constants template file if none provided. 143 | 144 | #### delimiters 145 | Type: `String` 146 | 147 | Default value: `'ngconstant'` which sets the template delimiters to `{%` and `%}`. Make sure that you do not use the same delimiters as your grunt configuration or you get an unwanted behavior. 148 | 149 | Optional 150 | 151 | #### configMergeCustomizer 152 | Type: `Function` 153 | 154 | Default value: `_.noop` 155 | 156 | Optional 157 | 158 | Allows to customize the merge of global and target configuration. The function has the signature `(key, objValue, srcValue, key, object, source, stack)`. The `key` parameter can be `'constants'` or `'values'`. The rest of the parameters is identical to [_.mergeWith](https://lodash.com/docs#mergeWith). 159 | 160 | ### Usage Examples 161 | 162 | #### Default Options 163 | In this example I convert the package.json information to an angular module. So I am able to display such things as the current version of the application in the app. 164 | 165 | ```js 166 | grunt.initConfig({ 167 | ngconstant: { 168 | dist: { 169 | options: { 170 | dest: 'dist/constants.js', 171 | name: 'constants', 172 | }, 173 | constants: { 174 | package: grunt.file.readJSON('package.json') 175 | }, 176 | values: { 177 | debug: true 178 | } 179 | } 180 | }, 181 | }) 182 | ``` 183 | 184 | __Note__: In most cases for all following examples the applied functionality on `constants` can also be achieved with the `values` parameter. 185 | 186 | #### Custom Options 187 | In this example we set custom configurations for the `space` and `deps` parameters. So we create a module that has `dep1` and `dep2` as dependencies and defines two different constants `constants1` and `constants2` with custom values. The `space` parameter is set to a ` `. 188 | 189 | ```js 190 | grunt.initConfig({ 191 | ngconstant: { 192 | options: { 193 | space: ' ', 194 | deps: ['dep1', 'dep2'], 195 | dest: 'dist/module.js', 196 | name: 'someModule' 197 | }, 198 | dist: { 199 | constants: { 200 | 'constant1': { 201 | 'key1': 'value1', 202 | 'key2': 42 203 | }, 204 | 'constant2': 'value2' 205 | } 206 | } 207 | }, 208 | }) 209 | ``` 210 | 211 | The resulting module looks like the following: 212 | 213 | ```js 214 | angular.module("someModule", ["dep1", "dep2"]) 215 | 216 | .constant("constant1", { 217 | "key1": "value1", 218 | "key2": 42 219 | }) 220 | 221 | .constant("constant2", "value2") 222 | 223 | ; 224 | ``` 225 | 226 | You can also load the constants definition directly from a file: 227 | 228 | ```js 229 | grunt.initConfig({ 230 | ngconstant: { 231 | options: { 232 | dest: 'dist/module.js', 233 | name: 'someModule' 234 | }, 235 | dist: { 236 | constants: 'constants.json' 237 | } 238 | }, 239 | }) 240 | ``` 241 | 242 | Or if you want to calculate the constants value at runtime you can create a lazy evaluated method which should be used if you generate your json file during the build process. 243 | 244 | ```js 245 | grunt.initConfig({ 246 | ngconstant: { 247 | options: { 248 | dest: 'dist/module.js', 249 | name: 'someModule' 250 | }, 251 | dist: { 252 | constants: function () { 253 | return { 254 | lazyConfig: grunt.file.readJSON('build/lazy-config.json') 255 | }; 256 | } 257 | } 258 | }, 259 | }) 260 | ``` 261 | 262 | #### Wrap Option 263 | 264 | The `wrap` option allows you to encapsulate the module in a closure. Simply set `wrap` to `true`. 265 | 266 | ```js 267 | grunt.initConfig({ 268 | ngconstant: { 269 | options: { 270 | dest: 'tmp/wrap_options.js', 271 | name: 'module2', 272 | wrap: true 273 | }, 274 | dist: { 275 | constants: { 276 | 'constant1': { 277 | key1: 123, 278 | key2: 'value2', 279 | foobar: false 280 | } 281 | } 282 | 283 | }, 284 | nowrap: { 285 | options: { 286 | wrap: false // Disable wrapping for the 'nowrap' target 287 | }, 288 | constants: { 289 | ... 290 | } 291 | } 292 | }, 293 | }) 294 | ``` 295 | 296 | The resulting module looks like: 297 | 298 | ```js 299 | (function(angular, undefined) { 300 | angular.module("module2", ["test"]) 301 | 302 | .constant("constant1", { 303 | "key1": 123, 304 | "key2": "value2", 305 | "foobar": false 306 | }) 307 | 308 | ; 309 | })(angular); 310 | ``` 311 | 312 | #### Custom Wrap Option 313 | 314 | If you want to use another wrapping you can use a string as `wrap` option, which is interpolated by the plugin. Use the `__ngModule` variable as placeholder for the generated module. 315 | 316 | Here a RequireJS example: 317 | 318 | ```js 319 | grunt.initConfig({ 320 | ngconstant: { 321 | options: { 322 | dest: 'tmp/wrap_options.js', 323 | name: 'module2', 324 | wrap: 'define(["angular", "ngResource", "ngCookies"], function() { \n return {%= __ngModule %} \n\n});', 325 | }, 326 | dist: { 327 | constants: { 328 | 'constant1': { 329 | key1: 123, 330 | key2: 'value2', 331 | foobar: false 332 | } 333 | } 334 | } 335 | }, 336 | }) 337 | ``` 338 | 339 | The resulting module looks like the following: 340 | 341 | ```js 342 | define(["angular", "ngResource", "ngCookies"], function() { 343 | return angular.module("module2", ["test"]) 344 | 345 | .constant("constant1", { 346 | "key1": 123, 347 | "key2": "value2", 348 | "foobar": false 349 | }) 350 | 351 | ; 352 | 353 | }); 354 | ``` 355 | 356 | __Note__: For longer wrapping templates it is recommended to use `grunt.file.read('customer-wrap.tpl.ejs')`. 357 | 358 | #### Global Constants option 359 | 360 | If you need the same configuration for all your targets you can use the `constants` option to automatically merge your per target configuration into the global one. If you don't want to merge, you can use the per target `constants` option to override everything. 361 | 362 | ```js 363 | grunt.initConfig({ 364 | ngconstant: { 365 | options: { 366 | name: 'config', 367 | dest: 'config.js', 368 | constants: { 369 | title: 'grunt-ng-constant', 370 | debug: true 371 | } 372 | }, 373 | dev: { 374 | constants: { 375 | title: 'grunt-ng-constant-beta' 376 | } 377 | }, 378 | prod: { 379 | constants: { 380 | debug: false 381 | } 382 | }, 383 | override_global: { 384 | options: { 385 | constants: { // This does not merge it overrides 386 | ... 387 | } 388 | } 389 | } 390 | } 391 | }); 392 | ``` 393 | 394 | Which results in the following constants objects. 395 | 396 | For the target `dev`: 397 | 398 | ```js 399 | angular.module('config', []) 400 | 401 | .constant('title', 'grunt-ng-constant-beta') 402 | 403 | .constant('debug', true) 404 | 405 | ; 406 | ``` 407 | 408 | For the target `prod`: 409 | 410 | ```js 411 | angular.module('config', []) 412 | 413 | .constant('title', 'grunt-ng-constant') 414 | 415 | .constant('debug', false) 416 | 417 | ; 418 | ``` 419 | 420 | ## FAQ 421 | 422 | #### How can I change the style of the generated code? 423 | If the code looks to ugly for you. You can use [grunt-jsbeautifyer](https://github.com/vkadam/grunt-jsbeautifier). 424 | 425 | #### How can I create multiple modules? 426 | Create a custom target for each module and set the `dest`, `name`, `constants` and `values` parameter for each one. 427 | 428 | #### How can I create a CoffeeScript version of the module 429 | Till v1.0.0 this was supported natively by the plugin. Now you have to use the [grunt-js2coffee](https://github.com/jonschlinkert/grunt-js2coffee) plugin. 430 | 431 | #### Hey I like this project how can I help? 432 | Report bugs, propose new features or simply star the project that shows me that are people are interested in this project. 433 | 434 | ## Contributing 435 | In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/). 436 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "grunt-ng-constant", 3 | "version": "2.0.3", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/helper-validator-identifier": { 8 | "version": "7.14.0", 9 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", 10 | "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", 11 | "dev": true 12 | }, 13 | "abbrev": { 14 | "version": "1.1.1", 15 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 16 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", 17 | "dev": true 18 | }, 19 | "ajv": { 20 | "version": "6.8.1", 21 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.8.1.tgz", 22 | "integrity": "sha512-eqxCp82P+JfqL683wwsL73XmFs1eG6qjw+RD3YHx+Jll1r0jNd4dh8QG9NYAeNGA/hnZjeEDgtTskgJULbxpWQ==", 23 | "dev": true, 24 | "requires": { 25 | "fast-deep-equal": "^2.0.1", 26 | "fast-json-stable-stringify": "^2.0.0", 27 | "json-schema-traverse": "^0.4.1", 28 | "uri-js": "^4.2.2" 29 | } 30 | }, 31 | "ansi-regex": { 32 | "version": "2.1.1", 33 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 34 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 35 | "dev": true 36 | }, 37 | "ansi-styles": { 38 | "version": "3.2.1", 39 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 40 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 41 | "dev": true, 42 | "requires": { 43 | "color-convert": "^1.9.0" 44 | } 45 | }, 46 | "append-transform": { 47 | "version": "1.0.0", 48 | "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", 49 | "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", 50 | "dev": true, 51 | "requires": { 52 | "default-require-extensions": "^2.0.0" 53 | } 54 | }, 55 | "archy": { 56 | "version": "1.0.0", 57 | "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", 58 | "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", 59 | "dev": true 60 | }, 61 | "arg": { 62 | "version": "4.1.0", 63 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", 64 | "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", 65 | "dev": true 66 | }, 67 | "argparse": { 68 | "version": "1.0.10", 69 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 70 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 71 | "dev": true, 72 | "requires": { 73 | "sprintf-js": "~1.0.2" 74 | }, 75 | "dependencies": { 76 | "sprintf-js": { 77 | "version": "1.0.3", 78 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 79 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 80 | "dev": true 81 | } 82 | } 83 | }, 84 | "array-each": { 85 | "version": "1.0.1", 86 | "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", 87 | "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", 88 | "dev": true 89 | }, 90 | "array-slice": { 91 | "version": "1.1.0", 92 | "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", 93 | "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", 94 | "dev": true 95 | }, 96 | "asn1": { 97 | "version": "0.2.4", 98 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", 99 | "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", 100 | "dev": true, 101 | "requires": { 102 | "safer-buffer": "~2.1.0" 103 | } 104 | }, 105 | "assert-plus": { 106 | "version": "1.0.0", 107 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 108 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", 109 | "dev": true 110 | }, 111 | "async": { 112 | "version": "3.2.0", 113 | "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", 114 | "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", 115 | "dev": true 116 | }, 117 | "asynckit": { 118 | "version": "0.4.0", 119 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 120 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", 121 | "dev": true 122 | }, 123 | "aws-sign2": { 124 | "version": "0.7.0", 125 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 126 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", 127 | "dev": true 128 | }, 129 | "aws4": { 130 | "version": "1.8.0", 131 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", 132 | "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", 133 | "dev": true 134 | }, 135 | "balanced-match": { 136 | "version": "1.0.0", 137 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 138 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 139 | "dev": true 140 | }, 141 | "bcrypt-pbkdf": { 142 | "version": "1.0.2", 143 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 144 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", 145 | "dev": true, 146 | "requires": { 147 | "tweetnacl": "^0.14.3" 148 | } 149 | }, 150 | "bind-obj-methods": { 151 | "version": "2.0.0", 152 | "resolved": "https://registry.npmjs.org/bind-obj-methods/-/bind-obj-methods-2.0.0.tgz", 153 | "integrity": "sha512-3/qRXczDi2Cdbz6jE+W3IflJOutRVica8frpBn14de1mBOkzDo+6tY33kNhvkw54Kn3PzRRD2VnGbGPcTAk4sw==", 154 | "dev": true 155 | }, 156 | "brace-expansion": { 157 | "version": "1.1.11", 158 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 159 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 160 | "dev": true, 161 | "requires": { 162 | "balanced-match": "^1.0.0", 163 | "concat-map": "0.0.1" 164 | } 165 | }, 166 | "braces": { 167 | "version": "3.0.2", 168 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 169 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 170 | "dev": true, 171 | "requires": { 172 | "fill-range": "^7.0.1" 173 | } 174 | }, 175 | "browser-process-hrtime": { 176 | "version": "1.0.0", 177 | "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", 178 | "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", 179 | "dev": true 180 | }, 181 | "buffer-from": { 182 | "version": "1.1.1", 183 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 184 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", 185 | "dev": true 186 | }, 187 | "caching-transform": { 188 | "version": "3.0.2", 189 | "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz", 190 | "integrity": "sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==", 191 | "dev": true, 192 | "requires": { 193 | "hasha": "^3.0.0", 194 | "make-dir": "^2.0.0", 195 | "package-hash": "^3.0.0", 196 | "write-file-atomic": "^2.4.2" 197 | } 198 | }, 199 | "camelcase": { 200 | "version": "5.3.1", 201 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 202 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 203 | "dev": true 204 | }, 205 | "capture-stack-trace": { 206 | "version": "1.0.1", 207 | "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", 208 | "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", 209 | "dev": true 210 | }, 211 | "caseless": { 212 | "version": "0.12.0", 213 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 214 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", 215 | "dev": true 216 | }, 217 | "chalk": { 218 | "version": "2.4.2", 219 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 220 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 221 | "dev": true, 222 | "requires": { 223 | "ansi-styles": "^3.2.1", 224 | "escape-string-regexp": "^1.0.5", 225 | "supports-color": "^5.3.0" 226 | } 227 | }, 228 | "clean-yaml-object": { 229 | "version": "0.1.0", 230 | "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", 231 | "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", 232 | "dev": true 233 | }, 234 | "cli": { 235 | "version": "1.0.1", 236 | "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", 237 | "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=", 238 | "dev": true, 239 | "requires": { 240 | "exit": "0.1.2", 241 | "glob": "^7.1.1" 242 | }, 243 | "dependencies": { 244 | "glob": { 245 | "version": "7.1.3", 246 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", 247 | "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", 248 | "dev": true, 249 | "requires": { 250 | "fs.realpath": "^1.0.0", 251 | "inflight": "^1.0.4", 252 | "inherits": "2", 253 | "minimatch": "^3.0.4", 254 | "once": "^1.3.0", 255 | "path-is-absolute": "^1.0.0" 256 | } 257 | } 258 | } 259 | }, 260 | "cliui": { 261 | "version": "5.0.0", 262 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", 263 | "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", 264 | "dev": true, 265 | "requires": { 266 | "string-width": "^3.1.0", 267 | "strip-ansi": "^5.2.0", 268 | "wrap-ansi": "^5.1.0" 269 | }, 270 | "dependencies": { 271 | "ansi-regex": { 272 | "version": "4.1.0", 273 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 274 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 275 | "dev": true 276 | }, 277 | "strip-ansi": { 278 | "version": "5.2.0", 279 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 280 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 281 | "dev": true, 282 | "requires": { 283 | "ansi-regex": "^4.1.0" 284 | } 285 | } 286 | } 287 | }, 288 | "color-convert": { 289 | "version": "1.9.3", 290 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 291 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 292 | "dev": true, 293 | "requires": { 294 | "color-name": "1.1.3" 295 | } 296 | }, 297 | "color-name": { 298 | "version": "1.1.3", 299 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 300 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 301 | "dev": true 302 | }, 303 | "color-support": { 304 | "version": "1.1.3", 305 | "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", 306 | "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", 307 | "dev": true 308 | }, 309 | "colors": { 310 | "version": "1.1.2", 311 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", 312 | "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", 313 | "dev": true 314 | }, 315 | "combined-stream": { 316 | "version": "1.0.7", 317 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", 318 | "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", 319 | "dev": true, 320 | "requires": { 321 | "delayed-stream": "~1.0.0" 322 | } 323 | }, 324 | "commondir": { 325 | "version": "1.0.1", 326 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 327 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 328 | "dev": true 329 | }, 330 | "concat-map": { 331 | "version": "0.0.1", 332 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 333 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 334 | "dev": true 335 | }, 336 | "console-browserify": { 337 | "version": "1.1.0", 338 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", 339 | "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", 340 | "dev": true, 341 | "requires": { 342 | "date-now": "^0.1.4" 343 | } 344 | }, 345 | "convert-source-map": { 346 | "version": "1.7.0", 347 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", 348 | "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", 349 | "dev": true, 350 | "requires": { 351 | "safe-buffer": "~5.1.1" 352 | } 353 | }, 354 | "core-util-is": { 355 | "version": "1.0.2", 356 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 357 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 358 | "dev": true 359 | }, 360 | "coveralls": { 361 | "version": "3.0.2", 362 | "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.2.tgz", 363 | "integrity": "sha512-Tv0LKe/MkBOilH2v7WBiTBdudg2ChfGbdXafc/s330djpF3zKOmuehTeRwjXWc7pzfj9FrDUTA7tEx6Div8NFw==", 364 | "dev": true, 365 | "requires": { 366 | "growl": "~> 1.10.0", 367 | "js-yaml": "^3.11.0", 368 | "lcov-parse": "^0.0.10", 369 | "log-driver": "^1.2.7", 370 | "minimist": "^1.2.0", 371 | "request": "^2.85.0" 372 | }, 373 | "dependencies": { 374 | "esprima": { 375 | "version": "4.0.1", 376 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 377 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 378 | "dev": true 379 | }, 380 | "js-yaml": { 381 | "version": "3.14.1", 382 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 383 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 384 | "dev": true, 385 | "requires": { 386 | "argparse": "^1.0.7", 387 | "esprima": "^4.0.0" 388 | } 389 | } 390 | } 391 | }, 392 | "cp-file": { 393 | "version": "6.2.0", 394 | "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz", 395 | "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==", 396 | "dev": true, 397 | "requires": { 398 | "graceful-fs": "^4.1.2", 399 | "make-dir": "^2.0.0", 400 | "nested-error-stacks": "^2.0.0", 401 | "pify": "^4.0.1", 402 | "safe-buffer": "^5.0.1" 403 | } 404 | }, 405 | "cross-spawn": { 406 | "version": "4.0.2", 407 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", 408 | "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", 409 | "dev": true, 410 | "requires": { 411 | "lru-cache": "^4.0.1", 412 | "which": "^1.2.9" 413 | } 414 | }, 415 | "dashdash": { 416 | "version": "1.14.1", 417 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 418 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 419 | "dev": true, 420 | "requires": { 421 | "assert-plus": "^1.0.0" 422 | } 423 | }, 424 | "date-now": { 425 | "version": "0.1.4", 426 | "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", 427 | "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", 428 | "dev": true 429 | }, 430 | "dateformat": { 431 | "version": "3.0.3", 432 | "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", 433 | "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", 434 | "dev": true 435 | }, 436 | "debug": { 437 | "version": "4.1.1", 438 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 439 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 440 | "dev": true, 441 | "requires": { 442 | "ms": "^2.1.1" 443 | } 444 | }, 445 | "decamelize": { 446 | "version": "1.2.0", 447 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 448 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 449 | "dev": true 450 | }, 451 | "default-require-extensions": { 452 | "version": "2.0.0", 453 | "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", 454 | "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", 455 | "dev": true, 456 | "requires": { 457 | "strip-bom": "^3.0.0" 458 | } 459 | }, 460 | "delayed-stream": { 461 | "version": "1.0.0", 462 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 463 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", 464 | "dev": true 465 | }, 466 | "detect-file": { 467 | "version": "1.0.0", 468 | "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", 469 | "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", 470 | "dev": true 471 | }, 472 | "diff": { 473 | "version": "1.4.0", 474 | "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", 475 | "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", 476 | "dev": true 477 | }, 478 | "dom-serializer": { 479 | "version": "0.1.0", 480 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", 481 | "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", 482 | "dev": true, 483 | "requires": { 484 | "domelementtype": "~1.1.1", 485 | "entities": "~1.1.1" 486 | }, 487 | "dependencies": { 488 | "domelementtype": { 489 | "version": "1.1.3", 490 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", 491 | "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", 492 | "dev": true 493 | }, 494 | "entities": { 495 | "version": "1.1.2", 496 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", 497 | "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", 498 | "dev": true 499 | } 500 | } 501 | }, 502 | "domain-browser": { 503 | "version": "1.2.0", 504 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", 505 | "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", 506 | "dev": true 507 | }, 508 | "domelementtype": { 509 | "version": "1.3.1", 510 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", 511 | "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", 512 | "dev": true 513 | }, 514 | "domhandler": { 515 | "version": "2.3.0", 516 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", 517 | "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", 518 | "dev": true, 519 | "requires": { 520 | "domelementtype": "1" 521 | } 522 | }, 523 | "domutils": { 524 | "version": "1.5.1", 525 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", 526 | "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", 527 | "dev": true, 528 | "requires": { 529 | "dom-serializer": "0", 530 | "domelementtype": "1" 531 | } 532 | }, 533 | "ecc-jsbn": { 534 | "version": "0.1.2", 535 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 536 | "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", 537 | "dev": true, 538 | "requires": { 539 | "jsbn": "~0.1.0", 540 | "safer-buffer": "^2.1.0" 541 | } 542 | }, 543 | "ejs": { 544 | "version": "2.6.1", 545 | "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", 546 | "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==", 547 | "dev": true 548 | }, 549 | "emoji-regex": { 550 | "version": "7.0.3", 551 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 552 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 553 | "dev": true 554 | }, 555 | "entities": { 556 | "version": "1.0.0", 557 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", 558 | "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", 559 | "dev": true 560 | }, 561 | "error-ex": { 562 | "version": "1.3.2", 563 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 564 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 565 | "dev": true, 566 | "requires": { 567 | "is-arrayish": "^0.2.1" 568 | } 569 | }, 570 | "es6-error": { 571 | "version": "4.1.1", 572 | "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", 573 | "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", 574 | "dev": true 575 | }, 576 | "escape-string-regexp": { 577 | "version": "1.0.5", 578 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 579 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 580 | "dev": true 581 | }, 582 | "eventemitter2": { 583 | "version": "0.4.14", 584 | "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", 585 | "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", 586 | "dev": true 587 | }, 588 | "events-to-array": { 589 | "version": "1.1.2", 590 | "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-1.1.2.tgz", 591 | "integrity": "sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y=", 592 | "dev": true 593 | }, 594 | "exit": { 595 | "version": "0.1.2", 596 | "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", 597 | "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", 598 | "dev": true 599 | }, 600 | "expand-tilde": { 601 | "version": "2.0.2", 602 | "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", 603 | "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", 604 | "dev": true, 605 | "requires": { 606 | "homedir-polyfill": "^1.0.1" 607 | } 608 | }, 609 | "extend": { 610 | "version": "3.0.2", 611 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 612 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 613 | "dev": true 614 | }, 615 | "extsprintf": { 616 | "version": "1.3.0", 617 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 618 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", 619 | "dev": true 620 | }, 621 | "fast-deep-equal": { 622 | "version": "2.0.1", 623 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", 624 | "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", 625 | "dev": true 626 | }, 627 | "fast-json-stable-stringify": { 628 | "version": "2.0.0", 629 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 630 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", 631 | "dev": true 632 | }, 633 | "fill-range": { 634 | "version": "7.0.1", 635 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 636 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 637 | "dev": true, 638 | "requires": { 639 | "to-regex-range": "^5.0.1" 640 | } 641 | }, 642 | "find-cache-dir": { 643 | "version": "2.1.0", 644 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", 645 | "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", 646 | "dev": true, 647 | "requires": { 648 | "commondir": "^1.0.1", 649 | "make-dir": "^2.0.0", 650 | "pkg-dir": "^3.0.0" 651 | } 652 | }, 653 | "find-up": { 654 | "version": "3.0.0", 655 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 656 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 657 | "dev": true, 658 | "requires": { 659 | "locate-path": "^3.0.0" 660 | } 661 | }, 662 | "findup-sync": { 663 | "version": "0.3.0", 664 | "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", 665 | "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", 666 | "dev": true, 667 | "requires": { 668 | "glob": "~5.0.0" 669 | }, 670 | "dependencies": { 671 | "glob": { 672 | "version": "5.0.15", 673 | "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", 674 | "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", 675 | "dev": true, 676 | "requires": { 677 | "inflight": "^1.0.4", 678 | "inherits": "2", 679 | "minimatch": "2 || 3", 680 | "once": "^1.3.0", 681 | "path-is-absolute": "^1.0.0" 682 | } 683 | } 684 | } 685 | }, 686 | "fined": { 687 | "version": "1.2.0", 688 | "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", 689 | "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", 690 | "dev": true, 691 | "requires": { 692 | "expand-tilde": "^2.0.2", 693 | "is-plain-object": "^2.0.3", 694 | "object.defaults": "^1.1.0", 695 | "object.pick": "^1.2.0", 696 | "parse-filepath": "^1.0.1" 697 | } 698 | }, 699 | "flagged-respawn": { 700 | "version": "1.0.1", 701 | "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", 702 | "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", 703 | "dev": true 704 | }, 705 | "for-in": { 706 | "version": "1.0.2", 707 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 708 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 709 | "dev": true 710 | }, 711 | "for-own": { 712 | "version": "1.0.0", 713 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", 714 | "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", 715 | "dev": true, 716 | "requires": { 717 | "for-in": "^1.0.1" 718 | } 719 | }, 720 | "foreground-child": { 721 | "version": "1.5.6", 722 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", 723 | "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", 724 | "dev": true, 725 | "requires": { 726 | "cross-spawn": "^4", 727 | "signal-exit": "^3.0.0" 728 | } 729 | }, 730 | "forever-agent": { 731 | "version": "0.6.1", 732 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 733 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", 734 | "dev": true 735 | }, 736 | "form-data": { 737 | "version": "2.3.3", 738 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 739 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 740 | "dev": true, 741 | "requires": { 742 | "asynckit": "^0.4.0", 743 | "combined-stream": "^1.0.6", 744 | "mime-types": "^2.1.12" 745 | } 746 | }, 747 | "fs-exists-cached": { 748 | "version": "1.0.0", 749 | "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz", 750 | "integrity": "sha1-zyVVTKBQ3EmuZla0HeQiWJidy84=", 751 | "dev": true 752 | }, 753 | "fs.realpath": { 754 | "version": "1.0.0", 755 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 756 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 757 | "dev": true 758 | }, 759 | "function-bind": { 760 | "version": "1.1.1", 761 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 762 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 763 | "dev": true 764 | }, 765 | "function-loop": { 766 | "version": "1.0.1", 767 | "resolved": "https://registry.npmjs.org/function-loop/-/function-loop-1.0.1.tgz", 768 | "integrity": "sha1-gHa7MF6OajzO7ikgdl8zDRkPNAw=", 769 | "dev": true 770 | }, 771 | "get-caller-file": { 772 | "version": "2.0.5", 773 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 774 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 775 | "dev": true 776 | }, 777 | "getobject": { 778 | "version": "1.0.1", 779 | "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.1.tgz", 780 | "integrity": "sha512-tj18lLe+917AACr6BdVoUuHnBPTVd9BEJp1vxnMZ58ztNvuxz9Ufa+wf3g37tlGITH35jggwZ2d9lcgHJJgXfQ==", 781 | "dev": true 782 | }, 783 | "getpass": { 784 | "version": "0.1.7", 785 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 786 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 787 | "dev": true, 788 | "requires": { 789 | "assert-plus": "^1.0.0" 790 | } 791 | }, 792 | "global-modules": { 793 | "version": "1.0.0", 794 | "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", 795 | "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", 796 | "dev": true, 797 | "requires": { 798 | "global-prefix": "^1.0.1", 799 | "is-windows": "^1.0.1", 800 | "resolve-dir": "^1.0.0" 801 | } 802 | }, 803 | "global-prefix": { 804 | "version": "1.0.2", 805 | "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", 806 | "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", 807 | "dev": true, 808 | "requires": { 809 | "expand-tilde": "^2.0.2", 810 | "homedir-polyfill": "^1.0.1", 811 | "ini": "^1.3.4", 812 | "is-windows": "^1.0.1", 813 | "which": "^1.2.14" 814 | } 815 | }, 816 | "globals": { 817 | "version": "11.10.0", 818 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", 819 | "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", 820 | "dev": true 821 | }, 822 | "graceful-fs": { 823 | "version": "4.1.15", 824 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", 825 | "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", 826 | "dev": true 827 | }, 828 | "growl": { 829 | "version": "1.10.5", 830 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", 831 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", 832 | "dev": true 833 | }, 834 | "grunt": { 835 | "version": "1.4.0", 836 | "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.4.0.tgz", 837 | "integrity": "sha512-yRFc0GVCDu9yxqOFzpuXQ2pEdgtLDnFv5Qz54jfIcNnpJ8Z7B7P7kPkT4VMuRvm+N+QOsI8C4v/Q0DSaoj3LgQ==", 838 | "dev": true, 839 | "requires": { 840 | "dateformat": "~3.0.3", 841 | "eventemitter2": "~0.4.13", 842 | "exit": "~0.1.2", 843 | "findup-sync": "~0.3.0", 844 | "glob": "~7.1.6", 845 | "grunt-cli": "~1.4.2", 846 | "grunt-known-options": "~1.1.1", 847 | "grunt-legacy-log": "~3.0.0", 848 | "grunt-legacy-util": "~2.0.1", 849 | "iconv-lite": "~0.4.13", 850 | "js-yaml": "~3.14.0", 851 | "minimatch": "~3.0.4", 852 | "mkdirp": "~1.0.4", 853 | "nopt": "~3.0.6", 854 | "rimraf": "~3.0.2" 855 | }, 856 | "dependencies": { 857 | "glob": { 858 | "version": "7.1.7", 859 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", 860 | "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", 861 | "dev": true, 862 | "requires": { 863 | "fs.realpath": "^1.0.0", 864 | "inflight": "^1.0.4", 865 | "inherits": "2", 866 | "minimatch": "^3.0.4", 867 | "once": "^1.3.0", 868 | "path-is-absolute": "^1.0.0" 869 | } 870 | }, 871 | "grunt-cli": { 872 | "version": "1.4.2", 873 | "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.2.tgz", 874 | "integrity": "sha512-wsu6BZh7KCnfeaSkDrKIAvOlqGKxNRTZjc8xfZlvxCByQIqUfZ31kh5uHpPnhQ4NdVgvaWaVxa1LUbVU80nACw==", 875 | "dev": true, 876 | "requires": { 877 | "grunt-known-options": "~1.1.1", 878 | "interpret": "~1.1.0", 879 | "liftup": "~3.0.1", 880 | "nopt": "~4.0.1", 881 | "v8flags": "~3.2.0" 882 | }, 883 | "dependencies": { 884 | "nopt": { 885 | "version": "4.0.3", 886 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", 887 | "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", 888 | "dev": true, 889 | "requires": { 890 | "abbrev": "1", 891 | "osenv": "^0.1.4" 892 | } 893 | } 894 | } 895 | }, 896 | "mkdirp": { 897 | "version": "1.0.4", 898 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 899 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 900 | "dev": true 901 | }, 902 | "rimraf": { 903 | "version": "3.0.2", 904 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 905 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 906 | "dev": true, 907 | "requires": { 908 | "glob": "^7.1.3" 909 | } 910 | } 911 | } 912 | }, 913 | "grunt-bump": { 914 | "version": "0.8.0", 915 | "resolved": "https://registry.npmjs.org/grunt-bump/-/grunt-bump-0.8.0.tgz", 916 | "integrity": "sha1-0//gzzzws44JYHt4U49CpTHq/lU=", 917 | "dev": true, 918 | "requires": { 919 | "semver": "^5.1.0" 920 | } 921 | }, 922 | "grunt-contrib-clean": { 923 | "version": "2.0.0", 924 | "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-2.0.0.tgz", 925 | "integrity": "sha512-g5ZD3ORk6gMa5ugZosLDQl3dZO7cI3R14U75hTM+dVLVxdMNJCPVmwf9OUt4v4eWgpKKWWoVK9DZc1amJp4nQw==", 926 | "dev": true, 927 | "requires": { 928 | "async": "^2.6.1", 929 | "rimraf": "^2.6.2" 930 | }, 931 | "dependencies": { 932 | "async": { 933 | "version": "2.6.1", 934 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", 935 | "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", 936 | "dev": true, 937 | "requires": { 938 | "lodash": "^4.17.10" 939 | } 940 | } 941 | } 942 | }, 943 | "grunt-contrib-jshint": { 944 | "version": "2.0.0", 945 | "resolved": "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-2.0.0.tgz", 946 | "integrity": "sha512-4qR411I1bhvVrPkKBzCUcrWkTEtBuWioXi9ABWRXHoplRScg03jiMqLDpzS4pDhVsLOTx5F9l+0cnMc+Gd2MWg==", 947 | "dev": true, 948 | "requires": { 949 | "chalk": "^2.4.1", 950 | "hooker": "^0.2.3", 951 | "jshint": "~2.9.6" 952 | } 953 | }, 954 | "grunt-contrib-nodeunit": { 955 | "version": "2.0.0", 956 | "resolved": "https://registry.npmjs.org/grunt-contrib-nodeunit/-/grunt-contrib-nodeunit-2.0.0.tgz", 957 | "integrity": "sha512-pt9N2Aj/6tlIgrepjUvPP4RfN58G7Zo/caL9O/9OskfRaY4qQCAF2n3H+AEUN/tq7nxrIFrAm6U3U+8gnpWDiw==", 958 | "dev": true, 959 | "requires": { 960 | "nodeunit-x": "^0.12.1" 961 | } 962 | }, 963 | "grunt-known-options": { 964 | "version": "1.1.1", 965 | "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", 966 | "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==", 967 | "dev": true 968 | }, 969 | "grunt-legacy-log": { 970 | "version": "3.0.0", 971 | "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz", 972 | "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==", 973 | "dev": true, 974 | "requires": { 975 | "colors": "~1.1.2", 976 | "grunt-legacy-log-utils": "~2.1.0", 977 | "hooker": "~0.2.3", 978 | "lodash": "~4.17.19" 979 | } 980 | }, 981 | "grunt-legacy-log-utils": { 982 | "version": "2.1.0", 983 | "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz", 984 | "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==", 985 | "dev": true, 986 | "requires": { 987 | "chalk": "~4.1.0", 988 | "lodash": "~4.17.19" 989 | }, 990 | "dependencies": { 991 | "ansi-styles": { 992 | "version": "4.3.0", 993 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 994 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 995 | "dev": true, 996 | "requires": { 997 | "color-convert": "^2.0.1" 998 | } 999 | }, 1000 | "chalk": { 1001 | "version": "4.1.1", 1002 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", 1003 | "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", 1004 | "dev": true, 1005 | "requires": { 1006 | "ansi-styles": "^4.1.0", 1007 | "supports-color": "^7.1.0" 1008 | } 1009 | }, 1010 | "color-convert": { 1011 | "version": "2.0.1", 1012 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1013 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1014 | "dev": true, 1015 | "requires": { 1016 | "color-name": "~1.1.4" 1017 | } 1018 | }, 1019 | "color-name": { 1020 | "version": "1.1.4", 1021 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1022 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1023 | "dev": true 1024 | }, 1025 | "has-flag": { 1026 | "version": "4.0.0", 1027 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1028 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1029 | "dev": true 1030 | }, 1031 | "supports-color": { 1032 | "version": "7.2.0", 1033 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1034 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1035 | "dev": true, 1036 | "requires": { 1037 | "has-flag": "^4.0.0" 1038 | } 1039 | } 1040 | } 1041 | }, 1042 | "grunt-legacy-util": { 1043 | "version": "2.0.1", 1044 | "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz", 1045 | "integrity": "sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==", 1046 | "dev": true, 1047 | "requires": { 1048 | "async": "~3.2.0", 1049 | "exit": "~0.1.2", 1050 | "getobject": "~1.0.0", 1051 | "hooker": "~0.2.3", 1052 | "lodash": "~4.17.21", 1053 | "underscore.string": "~3.3.5", 1054 | "which": "~2.0.2" 1055 | }, 1056 | "dependencies": { 1057 | "which": { 1058 | "version": "2.0.2", 1059 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1060 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1061 | "dev": true, 1062 | "requires": { 1063 | "isexe": "^2.0.0" 1064 | } 1065 | } 1066 | } 1067 | }, 1068 | "har-schema": { 1069 | "version": "2.0.0", 1070 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 1071 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", 1072 | "dev": true 1073 | }, 1074 | "har-validator": { 1075 | "version": "5.1.3", 1076 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", 1077 | "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", 1078 | "dev": true, 1079 | "requires": { 1080 | "ajv": "^6.5.5", 1081 | "har-schema": "^2.0.0" 1082 | } 1083 | }, 1084 | "has": { 1085 | "version": "1.0.3", 1086 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1087 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1088 | "dev": true, 1089 | "requires": { 1090 | "function-bind": "^1.1.1" 1091 | } 1092 | }, 1093 | "has-flag": { 1094 | "version": "3.0.0", 1095 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1096 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1097 | "dev": true 1098 | }, 1099 | "hasha": { 1100 | "version": "3.0.0", 1101 | "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz", 1102 | "integrity": "sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk=", 1103 | "dev": true, 1104 | "requires": { 1105 | "is-stream": "^1.0.1" 1106 | } 1107 | }, 1108 | "homedir-polyfill": { 1109 | "version": "1.0.3", 1110 | "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", 1111 | "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", 1112 | "dev": true, 1113 | "requires": { 1114 | "parse-passwd": "^1.0.0" 1115 | } 1116 | }, 1117 | "hooker": { 1118 | "version": "0.2.3", 1119 | "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", 1120 | "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", 1121 | "dev": true 1122 | }, 1123 | "hosted-git-info": { 1124 | "version": "2.8.9", 1125 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", 1126 | "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", 1127 | "dev": true 1128 | }, 1129 | "html-escaper": { 1130 | "version": "2.0.2", 1131 | "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", 1132 | "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", 1133 | "dev": true 1134 | }, 1135 | "htmlparser2": { 1136 | "version": "3.8.3", 1137 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", 1138 | "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", 1139 | "dev": true, 1140 | "requires": { 1141 | "domelementtype": "1", 1142 | "domhandler": "2.3", 1143 | "domutils": "1.5", 1144 | "entities": "1.0", 1145 | "readable-stream": "1.1" 1146 | } 1147 | }, 1148 | "http-signature": { 1149 | "version": "1.2.0", 1150 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 1151 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 1152 | "dev": true, 1153 | "requires": { 1154 | "assert-plus": "^1.0.0", 1155 | "jsprim": "^1.2.2", 1156 | "sshpk": "^1.7.0" 1157 | } 1158 | }, 1159 | "iconv-lite": { 1160 | "version": "0.4.24", 1161 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1162 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1163 | "dev": true, 1164 | "requires": { 1165 | "safer-buffer": ">= 2.1.2 < 3" 1166 | } 1167 | }, 1168 | "imurmurhash": { 1169 | "version": "0.1.4", 1170 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1171 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1172 | "dev": true 1173 | }, 1174 | "inflight": { 1175 | "version": "1.0.6", 1176 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1177 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1178 | "dev": true, 1179 | "requires": { 1180 | "once": "^1.3.0", 1181 | "wrappy": "1" 1182 | } 1183 | }, 1184 | "inherits": { 1185 | "version": "2.0.3", 1186 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1187 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1188 | "dev": true 1189 | }, 1190 | "ini": { 1191 | "version": "1.3.8", 1192 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 1193 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 1194 | "dev": true 1195 | }, 1196 | "interpret": { 1197 | "version": "1.1.0", 1198 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", 1199 | "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", 1200 | "dev": true 1201 | }, 1202 | "is-absolute": { 1203 | "version": "1.0.0", 1204 | "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", 1205 | "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", 1206 | "dev": true, 1207 | "requires": { 1208 | "is-relative": "^1.0.0", 1209 | "is-windows": "^1.0.1" 1210 | } 1211 | }, 1212 | "is-arrayish": { 1213 | "version": "0.2.1", 1214 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1215 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1216 | "dev": true 1217 | }, 1218 | "is-core-module": { 1219 | "version": "2.4.0", 1220 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", 1221 | "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", 1222 | "dev": true, 1223 | "requires": { 1224 | "has": "^1.0.3" 1225 | } 1226 | }, 1227 | "is-extglob": { 1228 | "version": "2.1.1", 1229 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1230 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1231 | "dev": true 1232 | }, 1233 | "is-fullwidth-code-point": { 1234 | "version": "2.0.0", 1235 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1236 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1237 | "dev": true 1238 | }, 1239 | "is-glob": { 1240 | "version": "4.0.1", 1241 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1242 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1243 | "dev": true, 1244 | "requires": { 1245 | "is-extglob": "^2.1.1" 1246 | } 1247 | }, 1248 | "is-number": { 1249 | "version": "7.0.0", 1250 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1251 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1252 | "dev": true 1253 | }, 1254 | "is-plain-object": { 1255 | "version": "2.0.4", 1256 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 1257 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 1258 | "dev": true, 1259 | "requires": { 1260 | "isobject": "^3.0.1" 1261 | } 1262 | }, 1263 | "is-relative": { 1264 | "version": "1.0.0", 1265 | "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", 1266 | "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", 1267 | "dev": true, 1268 | "requires": { 1269 | "is-unc-path": "^1.0.0" 1270 | } 1271 | }, 1272 | "is-stream": { 1273 | "version": "1.1.0", 1274 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 1275 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 1276 | "dev": true 1277 | }, 1278 | "is-typedarray": { 1279 | "version": "1.0.0", 1280 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 1281 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", 1282 | "dev": true 1283 | }, 1284 | "is-unc-path": { 1285 | "version": "1.0.0", 1286 | "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", 1287 | "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", 1288 | "dev": true, 1289 | "requires": { 1290 | "unc-path-regex": "^0.1.2" 1291 | } 1292 | }, 1293 | "is-windows": { 1294 | "version": "1.0.2", 1295 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 1296 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", 1297 | "dev": true 1298 | }, 1299 | "isarray": { 1300 | "version": "0.0.1", 1301 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 1302 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", 1303 | "dev": true 1304 | }, 1305 | "isexe": { 1306 | "version": "2.0.0", 1307 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1308 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1309 | "dev": true 1310 | }, 1311 | "isobject": { 1312 | "version": "3.0.1", 1313 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1314 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 1315 | "dev": true 1316 | }, 1317 | "isstream": { 1318 | "version": "0.1.2", 1319 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 1320 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", 1321 | "dev": true 1322 | }, 1323 | "istanbul-lib-hook": { 1324 | "version": "2.0.7", 1325 | "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", 1326 | "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", 1327 | "dev": true, 1328 | "requires": { 1329 | "append-transform": "^1.0.0" 1330 | } 1331 | }, 1332 | "istanbul-lib-report": { 1333 | "version": "2.0.8", 1334 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", 1335 | "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", 1336 | "dev": true, 1337 | "requires": { 1338 | "istanbul-lib-coverage": "^2.0.5", 1339 | "make-dir": "^2.1.0", 1340 | "supports-color": "^6.1.0" 1341 | }, 1342 | "dependencies": { 1343 | "istanbul-lib-coverage": { 1344 | "version": "2.0.5", 1345 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", 1346 | "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", 1347 | "dev": true 1348 | }, 1349 | "supports-color": { 1350 | "version": "6.1.0", 1351 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", 1352 | "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", 1353 | "dev": true, 1354 | "requires": { 1355 | "has-flag": "^3.0.0" 1356 | } 1357 | } 1358 | } 1359 | }, 1360 | "istanbul-lib-source-maps": { 1361 | "version": "3.0.6", 1362 | "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", 1363 | "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", 1364 | "dev": true, 1365 | "requires": { 1366 | "debug": "^4.1.1", 1367 | "istanbul-lib-coverage": "^2.0.5", 1368 | "make-dir": "^2.1.0", 1369 | "rimraf": "^2.6.3", 1370 | "source-map": "^0.6.1" 1371 | }, 1372 | "dependencies": { 1373 | "istanbul-lib-coverage": { 1374 | "version": "2.0.5", 1375 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", 1376 | "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", 1377 | "dev": true 1378 | }, 1379 | "source-map": { 1380 | "version": "0.6.1", 1381 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1382 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1383 | "dev": true 1384 | } 1385 | } 1386 | }, 1387 | "istanbul-reports": { 1388 | "version": "2.2.7", 1389 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", 1390 | "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", 1391 | "dev": true, 1392 | "requires": { 1393 | "html-escaper": "^2.0.0" 1394 | } 1395 | }, 1396 | "jju": { 1397 | "version": "1.4.0", 1398 | "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", 1399 | "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=" 1400 | }, 1401 | "js-tokens": { 1402 | "version": "4.0.0", 1403 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1404 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1405 | "dev": true 1406 | }, 1407 | "js-yaml": { 1408 | "version": "3.14.1", 1409 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 1410 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 1411 | "dev": true, 1412 | "requires": { 1413 | "argparse": "^1.0.7", 1414 | "esprima": "^4.0.0" 1415 | }, 1416 | "dependencies": { 1417 | "esprima": { 1418 | "version": "4.0.1", 1419 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1420 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 1421 | "dev": true 1422 | } 1423 | } 1424 | }, 1425 | "jsbn": { 1426 | "version": "0.1.1", 1427 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 1428 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", 1429 | "dev": true 1430 | }, 1431 | "jsesc": { 1432 | "version": "2.5.2", 1433 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 1434 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 1435 | "dev": true 1436 | }, 1437 | "jshint": { 1438 | "version": "2.9.7", 1439 | "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.7.tgz", 1440 | "integrity": "sha512-Q8XN38hGsVQhdlM+4gd1Xl7OB1VieSuCJf+fEJjpo59JH99bVJhXRXAh26qQ15wfdd1VPMuDWNeSWoNl53T4YA==", 1441 | "dev": true, 1442 | "requires": { 1443 | "cli": "~1.0.0", 1444 | "console-browserify": "1.1.x", 1445 | "exit": "0.1.x", 1446 | "htmlparser2": "3.8.x", 1447 | "lodash": "~4.17.10", 1448 | "minimatch": "~3.0.2", 1449 | "shelljs": "0.3.x", 1450 | "strip-json-comments": "1.0.x" 1451 | } 1452 | }, 1453 | "json-parse-better-errors": { 1454 | "version": "1.0.2", 1455 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 1456 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 1457 | "dev": true 1458 | }, 1459 | "json-schema": { 1460 | "version": "0.2.3", 1461 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 1462 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", 1463 | "dev": true 1464 | }, 1465 | "json-schema-traverse": { 1466 | "version": "0.4.1", 1467 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1468 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1469 | "dev": true 1470 | }, 1471 | "json-stringify-safe": { 1472 | "version": "5.0.1", 1473 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 1474 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", 1475 | "dev": true 1476 | }, 1477 | "jsprim": { 1478 | "version": "1.4.1", 1479 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", 1480 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", 1481 | "dev": true, 1482 | "requires": { 1483 | "assert-plus": "1.0.0", 1484 | "extsprintf": "1.3.0", 1485 | "json-schema": "0.2.3", 1486 | "verror": "1.10.0" 1487 | } 1488 | }, 1489 | "kind-of": { 1490 | "version": "6.0.3", 1491 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 1492 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", 1493 | "dev": true 1494 | }, 1495 | "lcov-parse": { 1496 | "version": "0.0.10", 1497 | "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.10.tgz", 1498 | "integrity": "sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=", 1499 | "dev": true 1500 | }, 1501 | "liftup": { 1502 | "version": "3.0.1", 1503 | "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz", 1504 | "integrity": "sha512-yRHaiQDizWSzoXk3APcA71eOI/UuhEkNN9DiW2Tt44mhYzX4joFoCZlxsSOF7RyeLlfqzFLQI1ngFq3ggMPhOw==", 1505 | "dev": true, 1506 | "requires": { 1507 | "extend": "^3.0.2", 1508 | "findup-sync": "^4.0.0", 1509 | "fined": "^1.2.0", 1510 | "flagged-respawn": "^1.0.1", 1511 | "is-plain-object": "^2.0.4", 1512 | "object.map": "^1.0.1", 1513 | "rechoir": "^0.7.0", 1514 | "resolve": "^1.19.0" 1515 | }, 1516 | "dependencies": { 1517 | "findup-sync": { 1518 | "version": "4.0.0", 1519 | "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", 1520 | "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", 1521 | "dev": true, 1522 | "requires": { 1523 | "detect-file": "^1.0.0", 1524 | "is-glob": "^4.0.0", 1525 | "micromatch": "^4.0.2", 1526 | "resolve-dir": "^1.0.1" 1527 | } 1528 | } 1529 | } 1530 | }, 1531 | "load-json-file": { 1532 | "version": "4.0.0", 1533 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", 1534 | "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", 1535 | "dev": true, 1536 | "requires": { 1537 | "graceful-fs": "^4.1.2", 1538 | "parse-json": "^4.0.0", 1539 | "pify": "^3.0.0", 1540 | "strip-bom": "^3.0.0" 1541 | }, 1542 | "dependencies": { 1543 | "pify": { 1544 | "version": "3.0.0", 1545 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 1546 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 1547 | "dev": true 1548 | } 1549 | } 1550 | }, 1551 | "locate-path": { 1552 | "version": "3.0.0", 1553 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 1554 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 1555 | "dev": true, 1556 | "requires": { 1557 | "p-locate": "^3.0.0", 1558 | "path-exists": "^3.0.0" 1559 | } 1560 | }, 1561 | "lodash": { 1562 | "version": "4.17.21", 1563 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1564 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 1565 | }, 1566 | "lodash.flattendeep": { 1567 | "version": "4.4.0", 1568 | "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", 1569 | "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", 1570 | "dev": true 1571 | }, 1572 | "log-driver": { 1573 | "version": "1.2.7", 1574 | "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", 1575 | "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", 1576 | "dev": true 1577 | }, 1578 | "lru-cache": { 1579 | "version": "4.1.5", 1580 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 1581 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 1582 | "dev": true, 1583 | "requires": { 1584 | "pseudomap": "^1.0.2", 1585 | "yallist": "^2.1.2" 1586 | } 1587 | }, 1588 | "make-dir": { 1589 | "version": "2.1.0", 1590 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", 1591 | "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", 1592 | "dev": true, 1593 | "requires": { 1594 | "pify": "^4.0.1", 1595 | "semver": "^5.6.0" 1596 | } 1597 | }, 1598 | "make-error": { 1599 | "version": "1.3.5", 1600 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", 1601 | "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", 1602 | "dev": true 1603 | }, 1604 | "make-iterator": { 1605 | "version": "1.0.1", 1606 | "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", 1607 | "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", 1608 | "dev": true, 1609 | "requires": { 1610 | "kind-of": "^6.0.2" 1611 | } 1612 | }, 1613 | "map-cache": { 1614 | "version": "0.2.2", 1615 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", 1616 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", 1617 | "dev": true 1618 | }, 1619 | "merge-source-map": { 1620 | "version": "1.1.0", 1621 | "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", 1622 | "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", 1623 | "dev": true, 1624 | "requires": { 1625 | "source-map": "^0.6.1" 1626 | }, 1627 | "dependencies": { 1628 | "source-map": { 1629 | "version": "0.6.1", 1630 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1631 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1632 | "dev": true 1633 | } 1634 | } 1635 | }, 1636 | "micromatch": { 1637 | "version": "4.0.4", 1638 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", 1639 | "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", 1640 | "dev": true, 1641 | "requires": { 1642 | "braces": "^3.0.1", 1643 | "picomatch": "^2.2.3" 1644 | } 1645 | }, 1646 | "mime-db": { 1647 | "version": "1.37.0", 1648 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", 1649 | "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", 1650 | "dev": true 1651 | }, 1652 | "mime-types": { 1653 | "version": "2.1.21", 1654 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", 1655 | "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", 1656 | "dev": true, 1657 | "requires": { 1658 | "mime-db": "~1.37.0" 1659 | } 1660 | }, 1661 | "minimatch": { 1662 | "version": "3.0.4", 1663 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1664 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1665 | "dev": true, 1666 | "requires": { 1667 | "brace-expansion": "^1.1.7" 1668 | } 1669 | }, 1670 | "minimist": { 1671 | "version": "1.2.5", 1672 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1673 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1674 | "dev": true 1675 | }, 1676 | "minipass": { 1677 | "version": "2.3.5", 1678 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", 1679 | "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", 1680 | "dev": true, 1681 | "requires": { 1682 | "safe-buffer": "^5.1.2", 1683 | "yallist": "^3.0.0" 1684 | }, 1685 | "dependencies": { 1686 | "yallist": { 1687 | "version": "3.0.3", 1688 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", 1689 | "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", 1690 | "dev": true 1691 | } 1692 | } 1693 | }, 1694 | "mkdirp": { 1695 | "version": "0.5.1", 1696 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1697 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1698 | "dev": true, 1699 | "requires": { 1700 | "minimist": "0.0.8" 1701 | }, 1702 | "dependencies": { 1703 | "minimist": { 1704 | "version": "0.0.8", 1705 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1706 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1707 | "dev": true 1708 | } 1709 | } 1710 | }, 1711 | "ms": { 1712 | "version": "2.1.1", 1713 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 1714 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", 1715 | "dev": true 1716 | }, 1717 | "nested-error-stacks": { 1718 | "version": "2.1.0", 1719 | "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", 1720 | "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", 1721 | "dev": true 1722 | }, 1723 | "nodeunit-x": { 1724 | "version": "0.12.2", 1725 | "resolved": "https://registry.npmjs.org/nodeunit-x/-/nodeunit-x-0.12.2.tgz", 1726 | "integrity": "sha512-RByTtOEqACCW6w8TQIgQq74xkO8LuOuyWn+wMwg1GY0HBxBnuh/t4OgWT9jZsx/0GMIXQIzvarrH6uvAVbRf9Q==", 1727 | "dev": true, 1728 | "requires": { 1729 | "ejs": "^2.5.2", 1730 | "tap": "^12.6.2" 1731 | }, 1732 | "dependencies": { 1733 | "@babel/code-frame": { 1734 | "version": "7.12.13", 1735 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", 1736 | "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", 1737 | "dev": true, 1738 | "requires": { 1739 | "@babel/highlight": "^7.12.13" 1740 | } 1741 | }, 1742 | "@babel/generator": { 1743 | "version": "7.14.2", 1744 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.2.tgz", 1745 | "integrity": "sha512-OnADYbKrffDVai5qcpkMxQ7caomHOoEwjkouqnN2QhydAjowFAZcsdecFIRUBdb+ZcruwYE4ythYmF1UBZU5xQ==", 1746 | "dev": true, 1747 | "requires": { 1748 | "@babel/types": "^7.14.2", 1749 | "jsesc": "^2.5.1", 1750 | "source-map": "^0.5.0" 1751 | } 1752 | }, 1753 | "@babel/helper-function-name": { 1754 | "version": "7.14.2", 1755 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz", 1756 | "integrity": "sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ==", 1757 | "dev": true, 1758 | "requires": { 1759 | "@babel/helper-get-function-arity": "^7.12.13", 1760 | "@babel/template": "^7.12.13", 1761 | "@babel/types": "^7.14.2" 1762 | } 1763 | }, 1764 | "@babel/helper-get-function-arity": { 1765 | "version": "7.12.13", 1766 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", 1767 | "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", 1768 | "dev": true, 1769 | "requires": { 1770 | "@babel/types": "^7.12.13" 1771 | } 1772 | }, 1773 | "@babel/helper-split-export-declaration": { 1774 | "version": "7.12.13", 1775 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", 1776 | "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", 1777 | "dev": true, 1778 | "requires": { 1779 | "@babel/types": "^7.12.13" 1780 | } 1781 | }, 1782 | "@babel/highlight": { 1783 | "version": "7.14.0", 1784 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", 1785 | "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", 1786 | "dev": true, 1787 | "requires": { 1788 | "@babel/helper-validator-identifier": "^7.14.0", 1789 | "chalk": "^2.0.0", 1790 | "js-tokens": "^4.0.0" 1791 | } 1792 | }, 1793 | "@babel/parser": { 1794 | "version": "7.14.2", 1795 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.2.tgz", 1796 | "integrity": "sha512-IoVDIHpsgE/fu7eXBeRWt8zLbDrSvD7H1gpomOkPpBoEN8KCruCqSDdqo8dddwQQrui30KSvQBaMUOJiuFu6QQ==", 1797 | "dev": true 1798 | }, 1799 | "@babel/template": { 1800 | "version": "7.12.13", 1801 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", 1802 | "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", 1803 | "dev": true, 1804 | "requires": { 1805 | "@babel/code-frame": "^7.12.13", 1806 | "@babel/parser": "^7.12.13", 1807 | "@babel/types": "^7.12.13" 1808 | } 1809 | }, 1810 | "@babel/traverse": { 1811 | "version": "7.14.2", 1812 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.2.tgz", 1813 | "integrity": "sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA==", 1814 | "dev": true, 1815 | "requires": { 1816 | "@babel/code-frame": "^7.12.13", 1817 | "@babel/generator": "^7.14.2", 1818 | "@babel/helper-function-name": "^7.14.2", 1819 | "@babel/helper-split-export-declaration": "^7.12.13", 1820 | "@babel/parser": "^7.14.2", 1821 | "@babel/types": "^7.14.2", 1822 | "debug": "^4.1.0", 1823 | "globals": "^11.1.0" 1824 | } 1825 | }, 1826 | "@babel/types": { 1827 | "version": "7.14.2", 1828 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.2.tgz", 1829 | "integrity": "sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw==", 1830 | "dev": true, 1831 | "requires": { 1832 | "@babel/helper-validator-identifier": "^7.14.0", 1833 | "to-fast-properties": "^2.0.0" 1834 | } 1835 | }, 1836 | "esm": { 1837 | "version": "3.2.25", 1838 | "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", 1839 | "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", 1840 | "dev": true 1841 | }, 1842 | "glob": { 1843 | "version": "7.1.7", 1844 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", 1845 | "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", 1846 | "dev": true, 1847 | "requires": { 1848 | "fs.realpath": "^1.0.0", 1849 | "inflight": "^1.0.4", 1850 | "inherits": "2", 1851 | "minimatch": "^3.0.4", 1852 | "once": "^1.3.0", 1853 | "path-is-absolute": "^1.0.0" 1854 | } 1855 | }, 1856 | "isarray": { 1857 | "version": "1.0.0", 1858 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1859 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1860 | "dev": true, 1861 | "optional": true 1862 | }, 1863 | "istanbul-lib-coverage": { 1864 | "version": "2.0.5", 1865 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", 1866 | "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", 1867 | "dev": true 1868 | }, 1869 | "istanbul-lib-instrument": { 1870 | "version": "3.3.0", 1871 | "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", 1872 | "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", 1873 | "dev": true, 1874 | "requires": { 1875 | "@babel/generator": "^7.4.0", 1876 | "@babel/parser": "^7.4.3", 1877 | "@babel/template": "^7.4.0", 1878 | "@babel/traverse": "^7.4.3", 1879 | "@babel/types": "^7.4.0", 1880 | "istanbul-lib-coverage": "^2.0.5", 1881 | "semver": "^6.0.0" 1882 | } 1883 | }, 1884 | "ms": { 1885 | "version": "2.0.0", 1886 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1887 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1888 | "dev": true 1889 | }, 1890 | "nyc": { 1891 | "version": "14.1.1", 1892 | "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.1.1.tgz", 1893 | "integrity": "sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw==", 1894 | "dev": true, 1895 | "requires": { 1896 | "archy": "^1.0.0", 1897 | "caching-transform": "^3.0.2", 1898 | "convert-source-map": "^1.6.0", 1899 | "cp-file": "^6.2.0", 1900 | "find-cache-dir": "^2.1.0", 1901 | "find-up": "^3.0.0", 1902 | "foreground-child": "^1.5.6", 1903 | "glob": "^7.1.3", 1904 | "istanbul-lib-coverage": "^2.0.5", 1905 | "istanbul-lib-hook": "^2.0.7", 1906 | "istanbul-lib-instrument": "^3.3.0", 1907 | "istanbul-lib-report": "^2.0.8", 1908 | "istanbul-lib-source-maps": "^3.0.6", 1909 | "istanbul-reports": "^2.2.4", 1910 | "js-yaml": "^3.13.1", 1911 | "make-dir": "^2.1.0", 1912 | "merge-source-map": "^1.1.0", 1913 | "resolve-from": "^4.0.0", 1914 | "rimraf": "^2.6.3", 1915 | "signal-exit": "^3.0.2", 1916 | "spawn-wrap": "^1.4.2", 1917 | "test-exclude": "^5.2.3", 1918 | "uuid": "^3.3.2", 1919 | "yargs": "^13.2.2", 1920 | "yargs-parser": "^13.0.0" 1921 | } 1922 | }, 1923 | "readable-stream": { 1924 | "version": "2.3.7", 1925 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 1926 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 1927 | "dev": true, 1928 | "optional": true, 1929 | "requires": { 1930 | "core-util-is": "~1.0.0", 1931 | "inherits": "~2.0.3", 1932 | "isarray": "~1.0.0", 1933 | "process-nextick-args": "~2.0.0", 1934 | "safe-buffer": "~5.1.1", 1935 | "string_decoder": "~1.1.1", 1936 | "util-deprecate": "~1.0.1" 1937 | } 1938 | }, 1939 | "semver": { 1940 | "version": "6.3.0", 1941 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1942 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1943 | "dev": true 1944 | }, 1945 | "string_decoder": { 1946 | "version": "1.1.1", 1947 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1948 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1949 | "dev": true, 1950 | "optional": true, 1951 | "requires": { 1952 | "safe-buffer": "~5.1.0" 1953 | } 1954 | }, 1955 | "tap": { 1956 | "version": "12.7.0", 1957 | "resolved": "https://registry.npmjs.org/tap/-/tap-12.7.0.tgz", 1958 | "integrity": "sha512-SjglJmRv0pqrQQ7d5ZBEY8ZOqv3nYDBXEX51oyycOH7piuhn82JKT/yDNewwmOsodTD/RZL9MccA96EjDgK+Eg==", 1959 | "dev": true, 1960 | "requires": { 1961 | "bind-obj-methods": "^2.0.0", 1962 | "browser-process-hrtime": "^1.0.0", 1963 | "capture-stack-trace": "^1.0.0", 1964 | "clean-yaml-object": "^0.1.0", 1965 | "color-support": "^1.1.0", 1966 | "coveralls": "^3.0.2", 1967 | "domain-browser": "^1.2.0", 1968 | "esm": "^3.2.5", 1969 | "foreground-child": "^1.3.3", 1970 | "fs-exists-cached": "^1.0.0", 1971 | "function-loop": "^1.0.1", 1972 | "glob": "^7.1.3", 1973 | "isexe": "^2.0.0", 1974 | "js-yaml": "^3.13.1", 1975 | "minipass": "^2.3.5", 1976 | "mkdirp": "^0.5.1", 1977 | "nyc": "^14.0.0", 1978 | "opener": "^1.5.1", 1979 | "os-homedir": "^1.0.2", 1980 | "own-or": "^1.0.0", 1981 | "own-or-env": "^1.0.1", 1982 | "rimraf": "^2.6.3", 1983 | "signal-exit": "^3.0.0", 1984 | "source-map-support": "^0.5.10", 1985 | "stack-utils": "^1.0.2", 1986 | "tap-mocha-reporter": "^3.0.9", 1987 | "tap-parser": "^7.0.0", 1988 | "tmatch": "^4.0.0", 1989 | "trivial-deferred": "^1.0.1", 1990 | "ts-node": "^8.0.2", 1991 | "tsame": "^2.0.1", 1992 | "typescript": "^3.3.3", 1993 | "write-file-atomic": "^2.4.2", 1994 | "yapool": "^1.0.0" 1995 | } 1996 | }, 1997 | "tap-mocha-reporter": { 1998 | "version": "3.0.9", 1999 | "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-3.0.9.tgz", 2000 | "integrity": "sha512-VO07vhC9EG27EZdOe7bWBj1ldbK+DL9TnRadOgdQmiQOVZjFpUEQuuqO7+rNSO2kfmkq5hWeluYXDWNG/ytXTQ==", 2001 | "dev": true, 2002 | "requires": { 2003 | "color-support": "^1.1.0", 2004 | "debug": "^2.1.3", 2005 | "diff": "^1.3.2", 2006 | "escape-string-regexp": "^1.0.3", 2007 | "glob": "^7.0.5", 2008 | "js-yaml": "^3.3.1", 2009 | "readable-stream": "^2.1.5", 2010 | "tap-parser": "^5.1.0", 2011 | "unicode-length": "^1.0.0" 2012 | }, 2013 | "dependencies": { 2014 | "debug": { 2015 | "version": "2.6.9", 2016 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 2017 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 2018 | "dev": true, 2019 | "requires": { 2020 | "ms": "2.0.0" 2021 | } 2022 | }, 2023 | "tap-parser": { 2024 | "version": "5.4.0", 2025 | "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-5.4.0.tgz", 2026 | "integrity": "sha512-BIsIaGqv7uTQgTW1KLTMNPSEQf4zDDPgYOBRdgOfuB+JFOLRBfEu6cLa/KvMvmqggu1FKXDfitjLwsq4827RvA==", 2027 | "dev": true, 2028 | "requires": { 2029 | "events-to-array": "^1.0.1", 2030 | "js-yaml": "^3.2.7", 2031 | "readable-stream": "^2" 2032 | } 2033 | } 2034 | } 2035 | }, 2036 | "typescript": { 2037 | "version": "3.9.9", 2038 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz", 2039 | "integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==", 2040 | "dev": true 2041 | } 2042 | } 2043 | }, 2044 | "nopt": { 2045 | "version": "3.0.6", 2046 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", 2047 | "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", 2048 | "dev": true, 2049 | "requires": { 2050 | "abbrev": "1" 2051 | } 2052 | }, 2053 | "normalize-package-data": { 2054 | "version": "2.5.0", 2055 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 2056 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 2057 | "dev": true, 2058 | "requires": { 2059 | "hosted-git-info": "^2.1.4", 2060 | "resolve": "^1.10.0", 2061 | "semver": "2 || 3 || 4 || 5", 2062 | "validate-npm-package-license": "^3.0.1" 2063 | } 2064 | }, 2065 | "oauth-sign": { 2066 | "version": "0.9.0", 2067 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 2068 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", 2069 | "dev": true 2070 | }, 2071 | "object.defaults": { 2072 | "version": "1.1.0", 2073 | "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", 2074 | "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", 2075 | "dev": true, 2076 | "requires": { 2077 | "array-each": "^1.0.1", 2078 | "array-slice": "^1.0.0", 2079 | "for-own": "^1.0.0", 2080 | "isobject": "^3.0.0" 2081 | } 2082 | }, 2083 | "object.map": { 2084 | "version": "1.0.1", 2085 | "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", 2086 | "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", 2087 | "dev": true, 2088 | "requires": { 2089 | "for-own": "^1.0.0", 2090 | "make-iterator": "^1.0.0" 2091 | } 2092 | }, 2093 | "object.pick": { 2094 | "version": "1.3.0", 2095 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", 2096 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", 2097 | "dev": true, 2098 | "requires": { 2099 | "isobject": "^3.0.1" 2100 | } 2101 | }, 2102 | "once": { 2103 | "version": "1.4.0", 2104 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2105 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2106 | "dev": true, 2107 | "requires": { 2108 | "wrappy": "1" 2109 | } 2110 | }, 2111 | "opener": { 2112 | "version": "1.5.1", 2113 | "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", 2114 | "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", 2115 | "dev": true 2116 | }, 2117 | "os-homedir": { 2118 | "version": "1.0.2", 2119 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 2120 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 2121 | "dev": true 2122 | }, 2123 | "os-tmpdir": { 2124 | "version": "1.0.2", 2125 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 2126 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 2127 | "dev": true 2128 | }, 2129 | "osenv": { 2130 | "version": "0.1.5", 2131 | "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", 2132 | "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", 2133 | "dev": true, 2134 | "requires": { 2135 | "os-homedir": "^1.0.0", 2136 | "os-tmpdir": "^1.0.0" 2137 | } 2138 | }, 2139 | "own-or": { 2140 | "version": "1.0.0", 2141 | "resolved": "https://registry.npmjs.org/own-or/-/own-or-1.0.0.tgz", 2142 | "integrity": "sha1-Tod/vtqaLsgAD7wLyuOWRe6L+Nw=", 2143 | "dev": true 2144 | }, 2145 | "own-or-env": { 2146 | "version": "1.0.1", 2147 | "resolved": "https://registry.npmjs.org/own-or-env/-/own-or-env-1.0.1.tgz", 2148 | "integrity": "sha512-y8qULRbRAlL6x2+M0vIe7jJbJx/kmUTzYonRAa2ayesR2qWLswninkVyeJe4x3IEXhdgoNodzjQRKAoEs6Fmrw==", 2149 | "dev": true, 2150 | "requires": { 2151 | "own-or": "^1.0.0" 2152 | } 2153 | }, 2154 | "p-limit": { 2155 | "version": "2.3.0", 2156 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 2157 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 2158 | "dev": true, 2159 | "requires": { 2160 | "p-try": "^2.0.0" 2161 | } 2162 | }, 2163 | "p-locate": { 2164 | "version": "3.0.0", 2165 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 2166 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 2167 | "dev": true, 2168 | "requires": { 2169 | "p-limit": "^2.0.0" 2170 | } 2171 | }, 2172 | "p-try": { 2173 | "version": "2.2.0", 2174 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 2175 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 2176 | "dev": true 2177 | }, 2178 | "package-hash": { 2179 | "version": "3.0.0", 2180 | "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz", 2181 | "integrity": "sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==", 2182 | "dev": true, 2183 | "requires": { 2184 | "graceful-fs": "^4.1.15", 2185 | "hasha": "^3.0.0", 2186 | "lodash.flattendeep": "^4.4.0", 2187 | "release-zalgo": "^1.0.0" 2188 | } 2189 | }, 2190 | "parse-filepath": { 2191 | "version": "1.0.2", 2192 | "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", 2193 | "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", 2194 | "dev": true, 2195 | "requires": { 2196 | "is-absolute": "^1.0.0", 2197 | "map-cache": "^0.2.0", 2198 | "path-root": "^0.1.1" 2199 | } 2200 | }, 2201 | "parse-json": { 2202 | "version": "4.0.0", 2203 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", 2204 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", 2205 | "dev": true, 2206 | "requires": { 2207 | "error-ex": "^1.3.1", 2208 | "json-parse-better-errors": "^1.0.1" 2209 | } 2210 | }, 2211 | "parse-passwd": { 2212 | "version": "1.0.0", 2213 | "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", 2214 | "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", 2215 | "dev": true 2216 | }, 2217 | "path-exists": { 2218 | "version": "3.0.0", 2219 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 2220 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 2221 | "dev": true 2222 | }, 2223 | "path-is-absolute": { 2224 | "version": "1.0.1", 2225 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2226 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2227 | "dev": true 2228 | }, 2229 | "path-parse": { 2230 | "version": "1.0.6", 2231 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 2232 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 2233 | "dev": true 2234 | }, 2235 | "path-root": { 2236 | "version": "0.1.1", 2237 | "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", 2238 | "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", 2239 | "dev": true, 2240 | "requires": { 2241 | "path-root-regex": "^0.1.0" 2242 | } 2243 | }, 2244 | "path-root-regex": { 2245 | "version": "0.1.2", 2246 | "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", 2247 | "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", 2248 | "dev": true 2249 | }, 2250 | "path-type": { 2251 | "version": "3.0.0", 2252 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", 2253 | "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", 2254 | "dev": true, 2255 | "requires": { 2256 | "pify": "^3.0.0" 2257 | }, 2258 | "dependencies": { 2259 | "pify": { 2260 | "version": "3.0.0", 2261 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 2262 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 2263 | "dev": true 2264 | } 2265 | } 2266 | }, 2267 | "performance-now": { 2268 | "version": "2.1.0", 2269 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 2270 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", 2271 | "dev": true 2272 | }, 2273 | "picomatch": { 2274 | "version": "2.2.3", 2275 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", 2276 | "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", 2277 | "dev": true 2278 | }, 2279 | "pify": { 2280 | "version": "4.0.1", 2281 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", 2282 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 2283 | "dev": true 2284 | }, 2285 | "pkg-dir": { 2286 | "version": "3.0.0", 2287 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", 2288 | "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", 2289 | "dev": true, 2290 | "requires": { 2291 | "find-up": "^3.0.0" 2292 | } 2293 | }, 2294 | "process-nextick-args": { 2295 | "version": "2.0.0", 2296 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 2297 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", 2298 | "dev": true, 2299 | "optional": true 2300 | }, 2301 | "pseudomap": { 2302 | "version": "1.0.2", 2303 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 2304 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", 2305 | "dev": true 2306 | }, 2307 | "psl": { 2308 | "version": "1.1.31", 2309 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", 2310 | "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", 2311 | "dev": true 2312 | }, 2313 | "punycode": { 2314 | "version": "2.1.1", 2315 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2316 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 2317 | "dev": true 2318 | }, 2319 | "qs": { 2320 | "version": "6.5.2", 2321 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", 2322 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", 2323 | "dev": true 2324 | }, 2325 | "read-pkg": { 2326 | "version": "3.0.0", 2327 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", 2328 | "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", 2329 | "dev": true, 2330 | "requires": { 2331 | "load-json-file": "^4.0.0", 2332 | "normalize-package-data": "^2.3.2", 2333 | "path-type": "^3.0.0" 2334 | } 2335 | }, 2336 | "read-pkg-up": { 2337 | "version": "4.0.0", 2338 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", 2339 | "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", 2340 | "dev": true, 2341 | "requires": { 2342 | "find-up": "^3.0.0", 2343 | "read-pkg": "^3.0.0" 2344 | } 2345 | }, 2346 | "readable-stream": { 2347 | "version": "1.1.14", 2348 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 2349 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", 2350 | "dev": true, 2351 | "requires": { 2352 | "core-util-is": "~1.0.0", 2353 | "inherits": "~2.0.1", 2354 | "isarray": "0.0.1", 2355 | "string_decoder": "~0.10.x" 2356 | } 2357 | }, 2358 | "rechoir": { 2359 | "version": "0.7.0", 2360 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", 2361 | "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", 2362 | "dev": true, 2363 | "requires": { 2364 | "resolve": "^1.9.0" 2365 | } 2366 | }, 2367 | "release-zalgo": { 2368 | "version": "1.0.0", 2369 | "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", 2370 | "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", 2371 | "dev": true, 2372 | "requires": { 2373 | "es6-error": "^4.0.1" 2374 | } 2375 | }, 2376 | "request": { 2377 | "version": "2.88.0", 2378 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", 2379 | "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", 2380 | "dev": true, 2381 | "requires": { 2382 | "aws-sign2": "~0.7.0", 2383 | "aws4": "^1.8.0", 2384 | "caseless": "~0.12.0", 2385 | "combined-stream": "~1.0.6", 2386 | "extend": "~3.0.2", 2387 | "forever-agent": "~0.6.1", 2388 | "form-data": "~2.3.2", 2389 | "har-validator": "~5.1.0", 2390 | "http-signature": "~1.2.0", 2391 | "is-typedarray": "~1.0.0", 2392 | "isstream": "~0.1.2", 2393 | "json-stringify-safe": "~5.0.1", 2394 | "mime-types": "~2.1.19", 2395 | "oauth-sign": "~0.9.0", 2396 | "performance-now": "^2.1.0", 2397 | "qs": "~6.5.2", 2398 | "safe-buffer": "^5.1.2", 2399 | "tough-cookie": "~2.4.3", 2400 | "tunnel-agent": "^0.6.0", 2401 | "uuid": "^3.3.2" 2402 | } 2403 | }, 2404 | "require-directory": { 2405 | "version": "2.1.1", 2406 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 2407 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 2408 | "dev": true 2409 | }, 2410 | "require-main-filename": { 2411 | "version": "2.0.0", 2412 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 2413 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", 2414 | "dev": true 2415 | }, 2416 | "resolve": { 2417 | "version": "1.20.0", 2418 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 2419 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 2420 | "dev": true, 2421 | "requires": { 2422 | "is-core-module": "^2.2.0", 2423 | "path-parse": "^1.0.6" 2424 | } 2425 | }, 2426 | "resolve-dir": { 2427 | "version": "1.0.1", 2428 | "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", 2429 | "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", 2430 | "dev": true, 2431 | "requires": { 2432 | "expand-tilde": "^2.0.0", 2433 | "global-modules": "^1.0.0" 2434 | } 2435 | }, 2436 | "resolve-from": { 2437 | "version": "4.0.0", 2438 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2439 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2440 | "dev": true 2441 | }, 2442 | "rimraf": { 2443 | "version": "2.6.3", 2444 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 2445 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 2446 | "dev": true, 2447 | "requires": { 2448 | "glob": "^7.1.3" 2449 | }, 2450 | "dependencies": { 2451 | "glob": { 2452 | "version": "7.1.3", 2453 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", 2454 | "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", 2455 | "dev": true, 2456 | "requires": { 2457 | "fs.realpath": "^1.0.0", 2458 | "inflight": "^1.0.4", 2459 | "inherits": "2", 2460 | "minimatch": "^3.0.4", 2461 | "once": "^1.3.0", 2462 | "path-is-absolute": "^1.0.0" 2463 | } 2464 | } 2465 | } 2466 | }, 2467 | "safe-buffer": { 2468 | "version": "5.1.2", 2469 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2470 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2471 | "dev": true 2472 | }, 2473 | "safer-buffer": { 2474 | "version": "2.1.2", 2475 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2476 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 2477 | "dev": true 2478 | }, 2479 | "semver": { 2480 | "version": "5.6.0", 2481 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", 2482 | "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", 2483 | "dev": true 2484 | }, 2485 | "set-blocking": { 2486 | "version": "2.0.0", 2487 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 2488 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 2489 | "dev": true 2490 | }, 2491 | "shelljs": { 2492 | "version": "0.3.0", 2493 | "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", 2494 | "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=", 2495 | "dev": true 2496 | }, 2497 | "signal-exit": { 2498 | "version": "3.0.2", 2499 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 2500 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 2501 | "dev": true 2502 | }, 2503 | "source-map": { 2504 | "version": "0.5.7", 2505 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 2506 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 2507 | "dev": true 2508 | }, 2509 | "source-map-support": { 2510 | "version": "0.5.10", 2511 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", 2512 | "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", 2513 | "dev": true, 2514 | "requires": { 2515 | "buffer-from": "^1.0.0", 2516 | "source-map": "^0.6.0" 2517 | }, 2518 | "dependencies": { 2519 | "source-map": { 2520 | "version": "0.6.1", 2521 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2522 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2523 | "dev": true 2524 | } 2525 | } 2526 | }, 2527 | "spawn-wrap": { 2528 | "version": "1.4.3", 2529 | "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.3.tgz", 2530 | "integrity": "sha512-IgB8md0QW/+tWqcavuFgKYR/qIRvJkRLPJDFaoXtLLUaVcCDK0+HeFTkmQHj3eprcYhc+gOl0aEA1w7qZlYezw==", 2531 | "dev": true, 2532 | "requires": { 2533 | "foreground-child": "^1.5.6", 2534 | "mkdirp": "^0.5.0", 2535 | "os-homedir": "^1.0.1", 2536 | "rimraf": "^2.6.2", 2537 | "signal-exit": "^3.0.2", 2538 | "which": "^1.3.0" 2539 | } 2540 | }, 2541 | "spdx-correct": { 2542 | "version": "3.1.1", 2543 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", 2544 | "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", 2545 | "dev": true, 2546 | "requires": { 2547 | "spdx-expression-parse": "^3.0.0", 2548 | "spdx-license-ids": "^3.0.0" 2549 | } 2550 | }, 2551 | "spdx-exceptions": { 2552 | "version": "2.3.0", 2553 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", 2554 | "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", 2555 | "dev": true 2556 | }, 2557 | "spdx-expression-parse": { 2558 | "version": "3.0.1", 2559 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", 2560 | "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", 2561 | "dev": true, 2562 | "requires": { 2563 | "spdx-exceptions": "^2.1.0", 2564 | "spdx-license-ids": "^3.0.0" 2565 | } 2566 | }, 2567 | "spdx-license-ids": { 2568 | "version": "3.0.7", 2569 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", 2570 | "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", 2571 | "dev": true 2572 | }, 2573 | "sprintf-js": { 2574 | "version": "1.1.2", 2575 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", 2576 | "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", 2577 | "dev": true 2578 | }, 2579 | "sshpk": { 2580 | "version": "1.16.1", 2581 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", 2582 | "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", 2583 | "dev": true, 2584 | "requires": { 2585 | "asn1": "~0.2.3", 2586 | "assert-plus": "^1.0.0", 2587 | "bcrypt-pbkdf": "^1.0.0", 2588 | "dashdash": "^1.12.0", 2589 | "ecc-jsbn": "~0.1.1", 2590 | "getpass": "^0.1.1", 2591 | "jsbn": "~0.1.0", 2592 | "safer-buffer": "^2.0.2", 2593 | "tweetnacl": "~0.14.0" 2594 | } 2595 | }, 2596 | "stack-utils": { 2597 | "version": "1.0.2", 2598 | "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", 2599 | "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", 2600 | "dev": true 2601 | }, 2602 | "string-width": { 2603 | "version": "3.1.0", 2604 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 2605 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 2606 | "dev": true, 2607 | "requires": { 2608 | "emoji-regex": "^7.0.1", 2609 | "is-fullwidth-code-point": "^2.0.0", 2610 | "strip-ansi": "^5.1.0" 2611 | }, 2612 | "dependencies": { 2613 | "ansi-regex": { 2614 | "version": "4.1.0", 2615 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 2616 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 2617 | "dev": true 2618 | }, 2619 | "strip-ansi": { 2620 | "version": "5.2.0", 2621 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 2622 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 2623 | "dev": true, 2624 | "requires": { 2625 | "ansi-regex": "^4.1.0" 2626 | } 2627 | } 2628 | } 2629 | }, 2630 | "string_decoder": { 2631 | "version": "0.10.31", 2632 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 2633 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", 2634 | "dev": true 2635 | }, 2636 | "strip-ansi": { 2637 | "version": "3.0.1", 2638 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 2639 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2640 | "dev": true, 2641 | "requires": { 2642 | "ansi-regex": "^2.0.0" 2643 | } 2644 | }, 2645 | "strip-bom": { 2646 | "version": "3.0.0", 2647 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 2648 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 2649 | "dev": true 2650 | }, 2651 | "strip-json-comments": { 2652 | "version": "1.0.4", 2653 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", 2654 | "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", 2655 | "dev": true 2656 | }, 2657 | "supports-color": { 2658 | "version": "5.5.0", 2659 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2660 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2661 | "dev": true, 2662 | "requires": { 2663 | "has-flag": "^3.0.0" 2664 | } 2665 | }, 2666 | "tap-parser": { 2667 | "version": "7.0.0", 2668 | "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-7.0.0.tgz", 2669 | "integrity": "sha512-05G8/LrzqOOFvZhhAk32wsGiPZ1lfUrl+iV7+OkKgfofZxiceZWMHkKmow71YsyVQ8IvGBP2EjcIjE5gL4l5lA==", 2670 | "dev": true, 2671 | "requires": { 2672 | "events-to-array": "^1.0.1", 2673 | "js-yaml": "^3.2.7", 2674 | "minipass": "^2.2.0" 2675 | } 2676 | }, 2677 | "test-exclude": { 2678 | "version": "5.2.3", 2679 | "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", 2680 | "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", 2681 | "dev": true, 2682 | "requires": { 2683 | "glob": "^7.1.3", 2684 | "minimatch": "^3.0.4", 2685 | "read-pkg-up": "^4.0.0", 2686 | "require-main-filename": "^2.0.0" 2687 | }, 2688 | "dependencies": { 2689 | "glob": { 2690 | "version": "7.1.7", 2691 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", 2692 | "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", 2693 | "dev": true, 2694 | "requires": { 2695 | "fs.realpath": "^1.0.0", 2696 | "inflight": "^1.0.4", 2697 | "inherits": "2", 2698 | "minimatch": "^3.0.4", 2699 | "once": "^1.3.0", 2700 | "path-is-absolute": "^1.0.0" 2701 | } 2702 | } 2703 | } 2704 | }, 2705 | "tmatch": { 2706 | "version": "4.0.0", 2707 | "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-4.0.0.tgz", 2708 | "integrity": "sha512-Ynn2Gsp+oCvYScQXeV+cCs7citRDilq0qDXA6tuvFwDgiYyyaq7D5vKUlAPezzZR5NDobc/QMeN6e5guOYmvxg==", 2709 | "dev": true 2710 | }, 2711 | "to-fast-properties": { 2712 | "version": "2.0.0", 2713 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 2714 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 2715 | "dev": true 2716 | }, 2717 | "to-regex-range": { 2718 | "version": "5.0.1", 2719 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2720 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2721 | "dev": true, 2722 | "requires": { 2723 | "is-number": "^7.0.0" 2724 | } 2725 | }, 2726 | "tosource": { 2727 | "version": "1.0.0", 2728 | "resolved": "https://registry.npmjs.org/tosource/-/tosource-1.0.0.tgz", 2729 | "integrity": "sha1-QtiN0RZhi88A1hBt1URvNCeQL/E=" 2730 | }, 2731 | "tough-cookie": { 2732 | "version": "2.4.3", 2733 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", 2734 | "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", 2735 | "dev": true, 2736 | "requires": { 2737 | "psl": "^1.1.24", 2738 | "punycode": "^1.4.1" 2739 | }, 2740 | "dependencies": { 2741 | "punycode": { 2742 | "version": "1.4.1", 2743 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 2744 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", 2745 | "dev": true 2746 | } 2747 | } 2748 | }, 2749 | "trivial-deferred": { 2750 | "version": "1.0.1", 2751 | "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-1.0.1.tgz", 2752 | "integrity": "sha1-N21NKdlR1jaKb3oK6FwvTV4GWPM=", 2753 | "dev": true 2754 | }, 2755 | "ts-node": { 2756 | "version": "8.0.2", 2757 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.0.2.tgz", 2758 | "integrity": "sha512-MosTrinKmaAcWgO8tqMjMJB22h+sp3Rd1i4fdoWY4mhBDekOwIAKI/bzmRi7IcbCmjquccYg2gcF6NBkLgr0Tw==", 2759 | "dev": true, 2760 | "requires": { 2761 | "arg": "^4.1.0", 2762 | "diff": "^3.1.0", 2763 | "make-error": "^1.1.1", 2764 | "source-map-support": "^0.5.6", 2765 | "yn": "^3.0.0" 2766 | }, 2767 | "dependencies": { 2768 | "diff": { 2769 | "version": "3.5.0", 2770 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", 2771 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", 2772 | "dev": true 2773 | } 2774 | } 2775 | }, 2776 | "tsame": { 2777 | "version": "2.0.1", 2778 | "resolved": "https://registry.npmjs.org/tsame/-/tsame-2.0.1.tgz", 2779 | "integrity": "sha512-jxyxgKVKa4Bh5dPcO42TJL22lIvfd9LOVJwdovKOnJa4TLLrHxquK+DlGm4rkGmrcur+GRx+x4oW00O2pY/fFw==", 2780 | "dev": true 2781 | }, 2782 | "tunnel-agent": { 2783 | "version": "0.6.0", 2784 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 2785 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 2786 | "dev": true, 2787 | "requires": { 2788 | "safe-buffer": "^5.0.1" 2789 | } 2790 | }, 2791 | "tweetnacl": { 2792 | "version": "0.14.5", 2793 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 2794 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", 2795 | "dev": true 2796 | }, 2797 | "unc-path-regex": { 2798 | "version": "0.1.2", 2799 | "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", 2800 | "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", 2801 | "dev": true 2802 | }, 2803 | "underscore.string": { 2804 | "version": "3.3.5", 2805 | "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", 2806 | "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", 2807 | "dev": true, 2808 | "requires": { 2809 | "sprintf-js": "^1.0.3", 2810 | "util-deprecate": "^1.0.2" 2811 | } 2812 | }, 2813 | "unicode-length": { 2814 | "version": "1.0.3", 2815 | "resolved": "https://registry.npmjs.org/unicode-length/-/unicode-length-1.0.3.tgz", 2816 | "integrity": "sha1-Wtp6f+1RhBpBijKM8UlHisg1irs=", 2817 | "dev": true, 2818 | "requires": { 2819 | "punycode": "^1.3.2", 2820 | "strip-ansi": "^3.0.1" 2821 | }, 2822 | "dependencies": { 2823 | "punycode": { 2824 | "version": "1.4.1", 2825 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 2826 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", 2827 | "dev": true 2828 | } 2829 | } 2830 | }, 2831 | "uri-js": { 2832 | "version": "4.2.2", 2833 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 2834 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 2835 | "dev": true, 2836 | "requires": { 2837 | "punycode": "^2.1.0" 2838 | } 2839 | }, 2840 | "util-deprecate": { 2841 | "version": "1.0.2", 2842 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2843 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2844 | "dev": true 2845 | }, 2846 | "uuid": { 2847 | "version": "3.3.2", 2848 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", 2849 | "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", 2850 | "dev": true 2851 | }, 2852 | "v8flags": { 2853 | "version": "3.2.0", 2854 | "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", 2855 | "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", 2856 | "dev": true, 2857 | "requires": { 2858 | "homedir-polyfill": "^1.0.1" 2859 | } 2860 | }, 2861 | "validate-npm-package-license": { 2862 | "version": "3.0.4", 2863 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 2864 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 2865 | "dev": true, 2866 | "requires": { 2867 | "spdx-correct": "^3.0.0", 2868 | "spdx-expression-parse": "^3.0.0" 2869 | } 2870 | }, 2871 | "verror": { 2872 | "version": "1.10.0", 2873 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 2874 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 2875 | "dev": true, 2876 | "requires": { 2877 | "assert-plus": "^1.0.0", 2878 | "core-util-is": "1.0.2", 2879 | "extsprintf": "^1.2.0" 2880 | } 2881 | }, 2882 | "which": { 2883 | "version": "1.3.1", 2884 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 2885 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 2886 | "dev": true, 2887 | "requires": { 2888 | "isexe": "^2.0.0" 2889 | } 2890 | }, 2891 | "which-module": { 2892 | "version": "2.0.0", 2893 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 2894 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", 2895 | "dev": true 2896 | }, 2897 | "wrap-ansi": { 2898 | "version": "5.1.0", 2899 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", 2900 | "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", 2901 | "dev": true, 2902 | "requires": { 2903 | "ansi-styles": "^3.2.0", 2904 | "string-width": "^3.0.0", 2905 | "strip-ansi": "^5.0.0" 2906 | }, 2907 | "dependencies": { 2908 | "ansi-regex": { 2909 | "version": "4.1.0", 2910 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 2911 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 2912 | "dev": true 2913 | }, 2914 | "strip-ansi": { 2915 | "version": "5.2.0", 2916 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 2917 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 2918 | "dev": true, 2919 | "requires": { 2920 | "ansi-regex": "^4.1.0" 2921 | } 2922 | } 2923 | } 2924 | }, 2925 | "wrappy": { 2926 | "version": "1.0.2", 2927 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2928 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2929 | "dev": true 2930 | }, 2931 | "write-file-atomic": { 2932 | "version": "2.4.2", 2933 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz", 2934 | "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==", 2935 | "dev": true, 2936 | "requires": { 2937 | "graceful-fs": "^4.1.11", 2938 | "imurmurhash": "^0.1.4", 2939 | "signal-exit": "^3.0.2" 2940 | } 2941 | }, 2942 | "y18n": { 2943 | "version": "4.0.3", 2944 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", 2945 | "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", 2946 | "dev": true 2947 | }, 2948 | "yallist": { 2949 | "version": "2.1.2", 2950 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 2951 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", 2952 | "dev": true 2953 | }, 2954 | "yapool": { 2955 | "version": "1.0.0", 2956 | "resolved": "https://registry.npmjs.org/yapool/-/yapool-1.0.0.tgz", 2957 | "integrity": "sha1-9pPymjFbUNmp2iZGp6ZkXJaYW2o=", 2958 | "dev": true 2959 | }, 2960 | "yargs": { 2961 | "version": "13.3.2", 2962 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", 2963 | "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", 2964 | "dev": true, 2965 | "requires": { 2966 | "cliui": "^5.0.0", 2967 | "find-up": "^3.0.0", 2968 | "get-caller-file": "^2.0.1", 2969 | "require-directory": "^2.1.1", 2970 | "require-main-filename": "^2.0.0", 2971 | "set-blocking": "^2.0.0", 2972 | "string-width": "^3.0.0", 2973 | "which-module": "^2.0.0", 2974 | "y18n": "^4.0.0", 2975 | "yargs-parser": "^13.1.2" 2976 | } 2977 | }, 2978 | "yargs-parser": { 2979 | "version": "13.1.2", 2980 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", 2981 | "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", 2982 | "dev": true, 2983 | "requires": { 2984 | "camelcase": "^5.0.0", 2985 | "decamelize": "^1.2.0" 2986 | } 2987 | }, 2988 | "yn": { 2989 | "version": "3.0.0", 2990 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.0.0.tgz", 2991 | "integrity": "sha512-+Wo/p5VRfxUgBUGy2j/6KX2mj9AYJWOHuhMjMcbBFc3y54o9/4buK1ksBvuiK01C3kby8DH9lSmJdSxw+4G/2Q==", 2992 | "dev": true 2993 | } 2994 | } 2995 | } 2996 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "grunt-ng-constant", 3 | "description": "Plugin for dynamic generation of angular constant modules.", 4 | "version": "2.0.3", 5 | "homepage": "https://github.com/werk85/grunt-ng-constant", 6 | "author": { 7 | "name": "Malte Legenhausen", 8 | "email": "legenhausen@werk85.de" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git://github.com/werk85/grunt-ng-constant.git" 13 | }, 14 | "bugs": { 15 | "url": "https://github.com/werk85/grunt-ng-constant/issues" 16 | }, 17 | "license": "MIT", 18 | "main": "Gruntfile.js", 19 | "engines": { 20 | "node": ">= 0.10.0" 21 | }, 22 | "scripts": { 23 | "test": "grunt test" 24 | }, 25 | "devDependencies": { 26 | "grunt": "^1.4.0", 27 | "grunt-bump": "^0.8.0", 28 | "grunt-contrib-clean": "^2.0.0", 29 | "grunt-contrib-jshint": "^2.0.0", 30 | "grunt-contrib-nodeunit": "^2.0.0" 31 | }, 32 | "peerDependencies": { 33 | "grunt": ">=0.4.0" 34 | }, 35 | "keywords": [ 36 | "grunt", 37 | "gruntplugin", 38 | "angular", 39 | "angularjs", 40 | "constants", 41 | "constant", 42 | "values", 43 | "value", 44 | "module", 45 | "generator" 46 | ], 47 | "dependencies": { 48 | "jju": "^1.3.0", 49 | "lodash": "^4.17.21", 50 | "tosource": "^1.0.0" 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /tasks/constant.tpl.ejs: -------------------------------------------------------------------------------- 1 | angular.module('{%- moduleName %}'{% if (deps) { %}, [{%= deps.map(function (name) { return '\'' + name + '\'' }).join(', ') %}]{% } %}) 2 | {% constants.forEach(function (constant) { %} 3 | .constant('{%- constant.name %}', {%= constant.value %}) 4 | {% }); values.forEach(function (value) { %} 5 | .value('{%- value.name %}', {%= value.value %}) 6 | {% }) %} 7 | ; -------------------------------------------------------------------------------- /tasks/ngconstant.js: -------------------------------------------------------------------------------- 1 | /* 2 | * grunt-ng-constant 3 | * https://github.com/werk85/grunt-ng-constant 4 | * 5 | * Copyright (c) 2014 werk85 6 | * Licensed under the MIT license. 7 | */ 8 | 9 | 'use strict'; 10 | 11 | var path = require('path'); 12 | 13 | var _ = require('lodash'); 14 | var jju = require('jju'); 15 | var toSource = require('tosource'); 16 | 17 | var MODULE_NAME = 'ngconstant'; 18 | var DEFAULT_WRAP = '(function(angular, undefined) {\n\'use strict\';\n\n{%= __ngModule %}\n})(angular);'; 19 | var TEMPLATE_PATH = path.join(__dirname, 'constant.tpl.ejs'); 20 | var SERIALIZERS = { 21 | 'jju': function jjuSerializer(obj, serializerOptions) { 22 | return jju.stringify(obj, serializerOptions); 23 | }, 24 | 'json': function jsonSerializer(obj, serializerOptions) { 25 | return JSON.stringify(obj, serializerOptions.replacer, serializerOptions.space); 26 | }, 27 | 'source': function sourceSerializer(obj, serializerOptions) { 28 | return toSource(obj, serializerOptions.filter, serializerOptions.indent, serializerOptions.startingIndent); 29 | } 30 | }; 31 | 32 | module.exports = function (grunt) { 33 | function requiredOptions(options, properties) { 34 | var pluralize = grunt.util.pluralize; 35 | var missing = properties.filter(function (key) { 36 | return !options[key]; 37 | }); 38 | 39 | if (!_.isEmpty(missing)) { 40 | throw grunt.util.error('Required option propert' + pluralize(missing.length, 'y/ies') + ' ' + missing.join(', ') + ' is missing'); 41 | } 42 | } 43 | 44 | function resolveKey(key, obj) { 45 | obj[key] = _.result(obj, key) || {}; 46 | if (_.isString(obj[key])) { 47 | obj[key] = grunt.file.readJSON(obj[key]); 48 | } 49 | if (!_.isObject(obj[key])) { 50 | grunt.fail.warn('Parameter ' + key + ' needs to be of type object'); 51 | } 52 | return obj[key]; 53 | } 54 | 55 | function resolveSerializer(key) { 56 | var serializer = SERIALIZERS[key] || key; 57 | if (!_.isFunction(serializer)) { 58 | grunt.fail.warn('Invalid serializer. Serializer needs to be a function.'); 59 | } 60 | return serializer; 61 | } 62 | 63 | var defaultTemplate = grunt.file.read(TEMPLATE_PATH); 64 | // Add delimiters that do not conflict with grunt 65 | grunt.template.addDelimiters(MODULE_NAME, '{%', '%}'); 66 | 67 | grunt.registerMultiTask(MODULE_NAME, 'Dynamic angular constant generator task.', function () { 68 | var options = this.options({ 69 | deps: [], 70 | wrap: '{%= __ngModule %}', 71 | template: defaultTemplate, 72 | delimiters: MODULE_NAME, 73 | serializer: 'jju', 74 | serializerOptions: { 75 | indent: '', 76 | no_trailing_comma: true 77 | }, 78 | configMergeCustomizer: _.noop, 79 | constants: {}, 80 | values: {} 81 | }); 82 | 83 | // Check if name and dest are givein in the options 84 | requiredOptions(options, ['name', 'dest']); 85 | 86 | // Merge target configuration in global definition 87 | _.forEach(['constants', 'values'], function (key) { 88 | var resolve = _.bind(resolveKey, this, key); 89 | var customizer = options.configMergeCustomizer.bind(this, key); 90 | _.mergeWith(resolve(options), resolve(this.data), customizer); 91 | }.bind(this)); 92 | 93 | // Transform the data and create the module string 94 | var serializer = resolveSerializer(options.serializer); 95 | 96 | var transformData = function dataTransformer(data) { 97 | return _.map(data, function (value, name) { 98 | return { 99 | name: name, 100 | value: serializer.call(this, value, options.serializerOptions, options) 101 | }; 102 | }.bind(this)); 103 | }.bind(this); 104 | 105 | var result = grunt.template.process(options.template, { 106 | data: _.extend({}, grunt.config.get('data'), { 107 | moduleName: options.name, 108 | deps: options.deps, 109 | constants: transformData(options.constants), 110 | values: transformData(options.values) 111 | }), 112 | delimiters: options.delimiters 113 | }); 114 | 115 | // Handle wrapping 116 | if (options.wrap) { 117 | if (options.wrap === true) { 118 | options.wrap = DEFAULT_WRAP; 119 | } 120 | result = grunt.template.process(options.wrap, { 121 | data: _.extend({}, grunt.config.get('data'), { 122 | '__ngModule': result 123 | }), 124 | delimiters: options.delimiters 125 | }); 126 | } 127 | 128 | // Write the module to disk 129 | grunt.log.write('Creating module ' + options.name + ' at ' + options.dest + '...'); 130 | grunt.file.write(options.dest, result); 131 | grunt.log.ok(); 132 | }); 133 | }; 134 | -------------------------------------------------------------------------------- /test/constants.json: -------------------------------------------------------------------------------- 1 | { 2 | "constant1": { 3 | "key1": "value1", 4 | "key2": "value2" 5 | } 6 | } -------------------------------------------------------------------------------- /test/custom.tpl.ejs: -------------------------------------------------------------------------------- 1 | /*jshint -W109*/ 2 | define(function (require) { 3 | 'use strict'; 4 | 5 | var angular = require('angular'); 6 | 7 | angular.module("{%- moduleName %}"{% if (deps) { %}, {%= JSON.stringify(deps) %}{% } %}) 8 | {% constants.forEach(function(constant) { %}.constant("{%- constant.name %}", {%= constant.value %}){% }) %}; 9 | 10 | }) -------------------------------------------------------------------------------- /test/expected/custom_options.js: -------------------------------------------------------------------------------- 1 | angular.module('module2', ['test1', 'test2']) 2 | 3 | .constant('constant1', {global_key:'global_value',key1:123,key2:'value2',foobar:false}) 4 | 5 | ;; -------------------------------------------------------------------------------- /test/expected/custom_wrap_options.js: -------------------------------------------------------------------------------- 1 | define(["angular", "ngResource", "ngCookies"], function() { 2 | return angular.module('module2', ['test']) 3 | 4 | .constant('constant1', {global_key:'global_value',key1:123,key2:'value2',foobar:false}) 5 | 6 | ; 7 | 8 | }); -------------------------------------------------------------------------------- /test/expected/default_options.js: -------------------------------------------------------------------------------- 1 | angular.module('module1', []) 2 | 3 | .constant('constant1', {global_key:'global_value',key1:'value1',key2:'value2'}) 4 | 5 | .constant('constant2', null) 6 | 7 | .value('value1', {key1:'value1'}) 8 | 9 | ;; -------------------------------------------------------------------------------- /test/expected/global_constants_options.js: -------------------------------------------------------------------------------- 1 | angular.module('module1', []) 2 | 3 | .constant('constant1', {global_key:'overriden_global_value'}) 4 | 5 | ;; -------------------------------------------------------------------------------- /test/expected/no_deps_options.js: -------------------------------------------------------------------------------- 1 | angular.module('module1') 2 | 3 | .constant('constant1', {global_key:'global_value'}) 4 | 5 | ;; -------------------------------------------------------------------------------- /test/expected/string_constants_options.js: -------------------------------------------------------------------------------- 1 | angular.module('stringConstantsOptionsModule', []) 2 | 3 | .constant('constant1', {global_key:'global_value',key1:'value1',key2:'value2'}) 4 | 5 | ;; -------------------------------------------------------------------------------- /test/expected/template_options.js: -------------------------------------------------------------------------------- 1 | /*jshint -W109*/ 2 | define(function (require) { 3 | 'use strict'; 4 | 5 | var angular = require('angular'); 6 | 7 | angular.module("templateOptionsModule", []) 8 | .constant("constant1", 'value1'); 9 | 10 | }); -------------------------------------------------------------------------------- /test/expected/wrap_options.js: -------------------------------------------------------------------------------- 1 | (function(angular, undefined) { 2 | 'use strict'; 3 | 4 | angular.module('module2', ['test']) 5 | 6 | .constant('constant1', {global_key:'global_value',key1:123,key2:'value2',foobar:false}) 7 | 8 | ; 9 | })(angular); -------------------------------------------------------------------------------- /test/ngconstant_test.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var grunt = require('grunt'); 4 | 5 | /* 6 | ======== A Handy Little Nodeunit Reference ======== 7 | https://github.com/caolan/nodeunit 8 | 9 | Test methods: 10 | test.expect(numAssertions) 11 | test.done() 12 | Test assertions: 13 | test.ok(value, [message]) 14 | test.equal(actual, expected, [message]) 15 | test.notEqual(actual, expected, [message]) 16 | test.deepEqual(actual, expected, [message]) 17 | test.notDeepEqual(actual, expected, [message]) 18 | test.strictEqual(actual, expected, [message]) 19 | test.notStrictEqual(actual, expected, [message]) 20 | test.throws(block, [error], [message]) 21 | test.doesNotThrow(block, [error], [message]) 22 | test.ifError(value) 23 | */ 24 | 25 | exports.ng_constant = { 26 | default_options: function(test) { 27 | test.expect(1); 28 | 29 | var actual = grunt.file.read('tmp/default_options.js'); 30 | var expected = grunt.file.read('test/expected/default_options.js'); 31 | test.equal(actual, expected, 'should create a constants module constant1'); 32 | 33 | test.done(); 34 | }, 35 | no_deps_options: function (test) { 36 | test.expect(1); 37 | 38 | var actual = grunt.file.read('tmp/no_deps_options.js'); 39 | var expected = grunt.file.read('test/expected/no_deps_options.js'); 40 | test.equal(actual, expected, 'should create a constants module without dependencies'); 41 | 42 | test.done(); 43 | }, 44 | custom_options: function(test) { 45 | test.expect(1); 46 | 47 | var actual = grunt.file.read('tmp/custom_options.js'); 48 | var expected = grunt.file.read('test/expected/custom_options.js'); 49 | test.equal(actual, expected, 'should describe what the default behavior is.'); 50 | 51 | test.done(); 52 | }, 53 | wrap_options: function(test) { 54 | test.expect(1); 55 | 56 | var actual = grunt.file.read('tmp/wrap_options.js'); 57 | var expected = grunt.file.read('test/expected/wrap_options.js'); 58 | test.equal(actual, expected, 'should describe what the default behavior is.'); 59 | 60 | test.done(); 61 | }, 62 | custom_wrap_options: function(test) { 63 | test.expect(1); 64 | 65 | var actual = grunt.file.read('tmp/custom_wrap_options.js'); 66 | var expected = grunt.file.read('test/expected/custom_wrap_options.js'); 67 | test.equal(actual, expected, 'should describe what the default behavior is.'); 68 | 69 | test.done(); 70 | }, 71 | global_constants_options: function(test) { 72 | test.expect(1); 73 | 74 | var actual = grunt.file.read('tmp/global_constants_options.js'); 75 | var expected = grunt.file.read('test/expected/global_constants_options.js'); 76 | test.equal(actual, expected, 'should override global constants definition.'); 77 | 78 | test.done(); 79 | }, 80 | template_options: function(test){ 81 | test.expect(1); 82 | var actual = grunt.file.read('tmp/template_options.js'); 83 | var expected = grunt.file.read('test/expected/template_options.js'); 84 | test.equal(actual, expected, 'should output module with custom template'); 85 | test.done(); 86 | }, 87 | string_constants_options: function (test) { 88 | test.expect(1); 89 | var actual = grunt.file.read('tmp/string_constants_options.js'); 90 | var expected = grunt.file.read('test/expected/string_constants_options.js'); 91 | test.equal(actual, expected, 'should output module with custom template'); 92 | test.done(); 93 | } 94 | }; 95 | --------------------------------------------------------------------------------