├── .editorconfig ├── .eslintignore ├── .eslintrc ├── .gitignore ├── .npmignore ├── README.md ├── index.d.ts ├── index.js ├── package-lock.json ├── package.json └── test ├── ajv-json-schema.tests.js ├── assert.tests.js ├── codecept.conf.js ├── json-schema.tests.js ├── users.schema.json └── wrong.schema.json /.editorconfig: -------------------------------------------------------------------------------- 1 | ; top-most EditorConfig file 2 | root = true 3 | 4 | ; Unix-style newlines with a newline ending every file + tab indent style with 4 space indentation 5 | [*] 6 | end_of_line = lf 7 | insert_final_newline = true 8 | trim_trailing_whitespace = true 9 | charset = utf-8 10 | indent_style = space 11 | indent_size = 2 12 | 13 | [*.md] 14 | indent_size = 4 15 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | node_modules/ 3 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "es6": true, 4 | "node": true, 5 | "mocha": true 6 | }, 7 | "globals": { 8 | "Given": true, 9 | "When": true, 10 | "Then": true, 11 | "expect": true 12 | }, 13 | "plugins": [ 14 | "varspacing", 15 | "codeceptjs" 16 | ], 17 | "parserOptions": { 18 | "sourceType": "module", 19 | "ecmaVersion": 9 20 | }, 21 | "extends": [ 22 | "eslint:recommended", 23 | "plugin:varspacing/recommended", 24 | "plugin:codeceptjs/recommended" 25 | ], 26 | "rules": { 27 | "indent": [ 28 | "error", 29 | 2, 30 | { 31 | "VariableDeclarator": { 32 | "var": 2, 33 | "let": 2, 34 | "const": 3 35 | }, 36 | "SwitchCase": 1 37 | } 38 | ], 39 | "linebreak-style": [ 40 | "error", 41 | "unix" 42 | ], 43 | "quotes": [ 44 | "error", 45 | "single" 46 | ], 47 | "semi": [ 48 | "error", 49 | "always" 50 | ], 51 | "no-constant-condition": [ 52 | "error", 53 | { 54 | "checkLoops": false 55 | } 56 | ], 57 | "no-fallthrough": [ 58 | 0 59 | ], 60 | "brace-style": [ 61 | "error", 62 | "1tbs", 63 | { 64 | "allowSingleLine": true 65 | } 66 | ], 67 | "eol-last": "error", 68 | "id-blacklist": [ 69 | "error", 70 | "cb", 71 | "callback" 72 | ], 73 | "key-spacing": [ 74 | "error", 75 | { 76 | "align": "value" 77 | } 78 | ], 79 | "max-len": [ 80 | "error", 81 | { 82 | "code": 120, 83 | "tabWidth": 2, 84 | "ignoreComments": true, 85 | "ignoreUrls": true, 86 | "ignorePattern": "^.*= require\\( '.*' \\);?" 87 | } 88 | ], 89 | "max-nested-callbacks": [ 90 | "error", 91 | 4 92 | ], 93 | "max-params": [ 94 | "error", 95 | 5 96 | ], 97 | "new-cap": [ 98 | "error", 99 | { 100 | "capIsNew": false 101 | } 102 | ], 103 | "new-parens": "error", 104 | "no-lonely-if": "error", 105 | "no-multiple-empty-lines": [ 106 | "error", 107 | { 108 | "max": 2 109 | } 110 | ], 111 | "no-negated-condition": "error", 112 | "no-new-object": "error", 113 | "no-restricted-syntax": [ 114 | "error", 115 | "WithStatement" 116 | ], 117 | "no-spaced-func": "error", 118 | "no-underscore-dangle": [ 119 | "error", 120 | { 121 | "allow": [ 122 | "_embedded", 123 | "_links" 124 | ] 125 | } 126 | ], 127 | "no-unneeded-ternary": "error", 128 | "no-whitespace-before-property": "error", 129 | "object-curly-spacing": [ 130 | "error", 131 | "always" 132 | ], 133 | "object-property-newline": [ 134 | "error", 135 | { 136 | "allowMultiplePropertiesPerLine": true 137 | } 138 | ], 139 | "one-var": [ 140 | "error", 141 | "never" 142 | ], 143 | "one-var-declaration-per-line": [ 144 | "error", 145 | "always" 146 | ], 147 | "operator-assignment": [ 148 | "error", 149 | "always" 150 | ], 151 | "operator-linebreak": [ 152 | "error", 153 | "before" 154 | ], 155 | "padded-blocks": [ 156 | "error", 157 | "always" 158 | ], 159 | "quote-props": [ 160 | "error", 161 | "as-needed" 162 | ], 163 | "semi-spacing": "error", 164 | "space-before-blocks": [ 165 | "error", 166 | "never" 167 | ], 168 | "space-before-function-paren": [ 169 | "error", 170 | "never" 171 | ], 172 | "space-in-parens": [ 173 | "error", 174 | "always", 175 | { 176 | "exceptions": [ 177 | "empty" 178 | ] 179 | } 180 | ], 181 | "space-infix-ops": [ 182 | "error", 183 | { 184 | "int32Hint": false 185 | } 186 | ], 187 | "space-unary-ops": "error", 188 | "spaced-comment": [ 189 | "error", 190 | "always", 191 | { 192 | "markers": [ 193 | "/", 194 | "!:" 195 | ] 196 | } 197 | ], 198 | "array-callback-return": "error", 199 | "curly": [ 200 | "error", 201 | "multi-line", 202 | "consistent" 203 | ], 204 | "no-console": "error", 205 | "no-debugger": "error", 206 | "callback-return": "error", 207 | "handle-callback-err": "error", 208 | "no-mixed-requires": "error", 209 | "no-new-require": "error", 210 | "no-path-concat": "error", 211 | "no-process-exit": "error", 212 | "no-sync": "error", 213 | "func-names": "error", 214 | "arrow-body-style": [ 215 | "error", 216 | "as-needed" 217 | ], 218 | "arrow-parens": [ 219 | "error", 220 | "as-needed" 221 | ], 222 | "arrow-spacing": [ 223 | "error", 224 | { 225 | "before": false, 226 | "after": false 227 | } 228 | ], 229 | "no-class-assign": "error", 230 | "no-confusing-arrow": [ 231 | "error", 232 | { 233 | "allowParens": true 234 | } 235 | ], 236 | "no-useless-computed-key": "error", 237 | "no-useless-constructor": "error", 238 | "no-useless-rename": "error", 239 | "no-var": "error", 240 | "object-shorthand": [ 241 | "error", 242 | "always" 243 | ], 244 | "prefer-arrow-callback": [ 245 | "error", 246 | { 247 | "allowUnboundThis": false 248 | } 249 | ], 250 | "prefer-const": "error", 251 | "prefer-reflect": [ 252 | "error", 253 | { 254 | "exceptions": [ 255 | "apply", 256 | "call", 257 | "delete" 258 | ] 259 | } 260 | ], 261 | "prefer-rest-params": "error", 262 | "prefer-spread": "error", 263 | "prefer-template": "error", 264 | "require-yield": "error", 265 | "template-curly-spacing": [ 266 | "error", 267 | "always" 268 | ], 269 | "yield-star-spacing": "error", 270 | "no-inner-declarations": "off", 271 | "padding-line-between-statements": [ 272 | "error", 273 | { 274 | "blankLine": "always", 275 | "prev": [ 276 | "const", 277 | "let" 278 | ], 279 | "next": "*" 280 | }, 281 | { 282 | "blankLine": "any", 283 | "prev": [ 284 | "const", 285 | "let" 286 | ], 287 | "next": [ 288 | "if", 289 | "const", 290 | "let" 291 | ] 292 | } 293 | ] 294 | } 295 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Dependency directories 2 | node_modules/ 3 | 4 | # Report directories 5 | report 6 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .editorconfig 2 | .eslintignore 3 | .eslintrc 4 | .idea/ 5 | node_modules/ 6 | .DS_Store 7 | *.iml 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # codeceptjs-chai 2 | 3 | [![npm package](https://nodei.co/npm/codeceptjs-chai.png?downloads=true&downloadRank=true&stars=true)](https://www.npmjs.com/package/codeceptjs-chai) 4 | 5 | codeceptjs-chai is [CodeceptJS](https://codecept.io/) helper which wraps [chai](https://www.chaijs.com/) library to complete chai assertion steps with CodeceptJS logging. 6 | This wrapper allow us to print asserts as steps in output. Also we can expand this lib with different methods and other assertion libraries. 7 | 8 | NPM package: https://www.npmjs.com/package/codeceptjs-chai 9 | 10 | ### Configuration 11 | 12 | This helper should be added in codecept.json/codecept.conf.js 13 | 14 | Example: 15 | 16 | ```json 17 | { 18 | "helpers": { 19 | "ChaiWrapper": { 20 | "require": "codeceptjs-chai" 21 | } 22 | } 23 | } 24 | ``` 25 | 26 | ## assertEqual 27 | 28 | Asserts that the target is strictly (===) equal to the given value. 29 | 30 | https://www.chaijs.com/api/bdd/#method_equal 31 | 32 | ```js 33 | I.assertEqual(1, 1); 34 | I.assertEqual("foo", "foo"); 35 | I.assertEqual("foo", "foo", "Both the values are not equal"); 36 | ``` 37 | 38 | **Parameters** 39 | 40 | - `actualValue` - actual value 41 | - `expectedValue` - expected value 42 | - `customErrorMsg` - Custom error message 43 | 44 | ## assertNotEqual 45 | 46 | Asserts that the target is not equal to the given value. 47 | 48 | - https://www.chaijs.com/api/bdd/#method_not 49 | - https://www.chaijs.com/api/bdd/#method_equal 50 | 51 | ```js 52 | I.assertNotEqual(2, 1); 53 | I.assertNotEqual("foobar", "foo"); 54 | I.assertNotEqual("foobar", "foo", "Both the values are equal"); 55 | ``` 56 | 57 | **Parameters** 58 | 59 | - `actualValue` - actual value 60 | - `expectedValue` - expected value 61 | - `customErrorMsg` - Custom error message 62 | 63 | ## assertDeepEqual 64 | 65 | Asserts that the target is an object whose properties are strictly equal (===) as the given value's. 66 | 67 | - https://www.chaijs.com/api/bdd/#method_deep 68 | - https://www.chaijs.com/api/bdd/#method_equal 69 | 70 | ```js 71 | I.assertDeepEqual({ a: 1 }, { a: 1 }); 72 | ``` 73 | 74 | **Parameters** 75 | 76 | - `actualValue` - actual value 77 | - `expectedValue` - expected value 78 | - `customErrorMsg` - Custom error message 79 | 80 | ## assertNotDeepEqual 81 | 82 | Asserts that the target is not an object whose properties are strictly equal (===) as the given value's. 83 | 84 | - https://www.chaijs.com/api/bdd/#method_not 85 | - https://www.chaijs.com/api/bdd/#method_deep 86 | - https://www.chaijs.com/api/bdd/#method_equal 87 | 88 | ```js 89 | I.assertNotDeepEqual({ a: 1 }, { a: 2 }); 90 | I.assertNotDeepEqual({ a: 1 }, { b: 1, c: 2 }); 91 | I.assertNotDeepEqual( 92 | { a: 1 }, 93 | { b: 1, c: 2 }, 94 | "Both the values are deeply equal" 95 | ); 96 | ``` 97 | 98 | **Parameters** 99 | 100 | - `actualValue` - actual value 101 | - `expectedValue` - expected value 102 | - `customErrorMsg` - Custom error message 103 | 104 | ## assertContain 105 | 106 | Asserts that the target contains the given value. 107 | 108 | https://www.chaijs.com/api/bdd/#method_include 109 | 110 | ```js 111 | I.assertContain("foobar", "foo"); 112 | I.assertContain([1, 2, 3], 2); 113 | I.assertContain({ a: 1, b: 2, c: 3 }, { a: 1, b: 2 }); 114 | I.assertContain(new Set([1, 2]), 2); 115 | I.assertContain( 116 | new Map([ 117 | ["a", 1], 118 | ["b", 2], 119 | ]), 120 | 2 121 | ); 122 | I.assertContain("foobar", "foo", "Target value does not contain given value"); 123 | ``` 124 | 125 | **Parameters** 126 | 127 | - `actualValue` - actual value 128 | - `expectedValueToContain` - expected value to contain 129 | - `customErrorMsg` - Custom error message 130 | 131 | ## assertNotContain 132 | 133 | Asserts that the target does not contain the given value. 134 | 135 | - https://www.chaijs.com/api/bdd/#method_not 136 | - https://www.chaijs.com/api/bdd/#method_include 137 | 138 | ```js 139 | I.assertNotContain("foo", "bar"); 140 | I.assertNotContain([1, 2, 3], 4); 141 | I.assertNotContain({ a: 3, b: 4 }, { a: 1, b: 2 }); 142 | I.assertNotContain("foo", "bar", "Target value contains given value"); 143 | ``` 144 | 145 | **Parameters** 146 | 147 | - `actualValue` - actual value 148 | - `expectedValueToNotContain` - expected value to not contain 149 | - `customErrorMsg` - Custom error message 150 | 151 | ## assertStartsWith 152 | 153 | Asserts that the target starts with the given value. 154 | 155 | https://www.npmjs.com/package/chai-string#startswithstartwith 156 | 157 | ```js 158 | I.assertStartsWith("foobar", "foo"); 159 | I.assertStartsWith( 160 | "foobar", 161 | "foo", 162 | "Target value does not start with given value" 163 | ); 164 | ``` 165 | 166 | **Parameters** 167 | 168 | - `actualValue` - actual value 169 | - `expectedValueToStartWith` - expected value to start with 170 | - `customErrorMsg` - Custom error message 171 | 172 | ## assertNotStartsWith 173 | 174 | Asserts that the target does not start with the given value. 175 | 176 | - https://www.chaijs.com/api/bdd/#method_not 177 | - https://www.npmjs.com/package/chai-string#startswithstartwith 178 | 179 | ```js 180 | I.assertNotStartsWith("foobar", "bar"); 181 | I.assertNotStartsWith("foobar", "bar", "Target value starts with given value"); 182 | ``` 183 | 184 | **Parameters** 185 | 186 | - `actualValue` - actual value 187 | - `expectedValueToNotStartWith` - expected value to not start with 188 | - `customErrorMsg` - Custom error message 189 | 190 | ## assertEndsWith 191 | 192 | Asserts that the target ends with the given value. 193 | 194 | https://www.npmjs.com/package/chai-string#endswithendwith 195 | 196 | ```js 197 | I.assertEndsWith("foobar", "bar"); 198 | I.assertEndsWith( 199 | "foobar", 200 | "bar", 201 | "Target value does not ends with given value" 202 | ); 203 | ``` 204 | 205 | **Parameters** 206 | 207 | - `actualValue` - actual value 208 | - `expectedValueToEndWith` - expected value to end with 209 | - `customErrorMsg` - Custom error message 210 | 211 | ## assertNotEndsWith 212 | 213 | Asserts that the target does not end with the given value. 214 | 215 | - https://www.chaijs.com/api/bdd/#method_not 216 | - https://www.npmjs.com/package/chai-string#endswithendwith 217 | 218 | ```js 219 | I.assertNotEndsWith("foobar", "bar"); 220 | I.assertNotEndsWith("foobar", "bar", "Target value ends with given value"); 221 | ``` 222 | 223 | **Parameters** 224 | 225 | - `actualValue` - actual value 226 | - `expectedValueToNotEndWith` - expected value to not end with 227 | - `customErrorMsg` - Custom error message 228 | 229 | ## assertJsonSchema 230 | 231 | Validate that the given json data conforms to the specified JSON Schema. Both the value and schema would likely be JSON loaded from an external datasource but could also be literals or object instances. 232 | 233 | https://www.npmjs.com/package/chai-json-schema#jsonschemavalue-schema 234 | 235 | ```js 236 | const goodApple = { 237 | skin: "thin", 238 | colors: ["red", "green", "yellow"], 239 | taste: 10, 240 | }; 241 | const badApple = { 242 | colors: ["brown"], 243 | taste: 0, 244 | worms: 2, 245 | }; 246 | const fruitSchema = { 247 | title: "fresh fruit schema v1", 248 | type: "object", 249 | required: ["skin", "colors", "taste"], 250 | properties: { 251 | colors: { 252 | type: "array", 253 | minItems: 1, 254 | uniqueItems: true, 255 | items: { 256 | type: "string", 257 | }, 258 | }, 259 | skin: { 260 | type: "string", 261 | }, 262 | taste: { 263 | type: "number", 264 | minimum: 5, 265 | }, 266 | }, 267 | }; 268 | I.assertJsonSchema(goodApple, fruitSchema); 269 | I.assertJsonSchema( 270 | goodApple, 271 | fruitSchema, 272 | "Target json data does not conform to json schema" 273 | ); 274 | ``` 275 | 276 | **Parameters** 277 | 278 | - `targetData` - target json data 279 | - `jsonSchema` - json schema 280 | - `customErrorMsg` - Custom error message 281 | 282 | ## assertJsonSchemaUsingAJV 283 | 284 | Validate that the given json data conforms to the specified JSON Schema using [chai-json-schema-ajv](https://www.npmjs.com/package/chai-json-schema-ajv). Both the value and schema would likely be JSON loaded from an external datasource but could also be literals or object instances. 285 | 286 | - https://www.chaijs.com/plugins/chai-json-schema-ajv/ 287 | - https://www.npmjs.com/package/chai-json-schema-ajv 288 | 289 | ```js 290 | const goodApple = { 291 | skin: "thin", 292 | colors: ["red", "green", "yellow"], 293 | taste: 10, 294 | }; 295 | const badApple = { 296 | colors: ["brown"], 297 | taste: 0, 298 | worms: 2, 299 | }; 300 | const fruitSchema = { 301 | title: "fresh fruit schema v1", 302 | type: "object", 303 | required: ["skin", "colors", "taste"], 304 | properties: { 305 | colors: { 306 | type: "array", 307 | minItems: 1, 308 | uniqueItems: true, 309 | items: { 310 | type: "string", 311 | }, 312 | }, 313 | skin: { 314 | type: "string", 315 | }, 316 | taste: { 317 | type: "number", 318 | minimum: 5, 319 | }, 320 | }, 321 | }; 322 | I.assertJsonSchemaUsingAJV(goodApple, fruitSchema); 323 | I.assertJsonSchema( 324 | goodApple, 325 | fruitSchema, 326 | "Target json data does not conform to json schema", 327 | {} 328 | ); 329 | I.assertJsonSchema(goodApple, fruitSchema, "", { jsonPointers: true }); 330 | ``` 331 | 332 | **Parameters** 333 | 334 | - `targetData` - target json data 335 | - `jsonSchema` - json schema 336 | - `customErrorMsg` - Custom error message 337 | - `ajvOptions` - [Custom AJV Options](https://www.npmjs.com/package/chai-json-schema-ajv#custom-options) 338 | 339 | ## assertHasProperty 340 | 341 | Asserts that the target has a property with the given key. 342 | 343 | https://www.chaijs.com/api/bdd/#method_property 344 | 345 | ```js 346 | I.assertHasProperty({ a: 1 }, "a"); 347 | I.assertHasProperty( 348 | { a: 1 }, 349 | "a", 350 | "Target data does not have the given property" 351 | ); 352 | ``` 353 | 354 | **Parameters** 355 | 356 | - `targetData` - target json data 357 | - `propertyName` - expected property name 358 | - `customErrorMsg` - Custom error message 359 | 360 | ## assertHasAProperty 361 | 362 | Asserts that the target has a child property with the given key. 363 | 364 | https://www.chaijs.com/api/bdd/#method_a 365 | 366 | ```js 367 | I.assertHasAProperty({ b: 2 }, "b"); 368 | I.assertHasAProperty( 369 | { b: 2 }, 370 | "b", 371 | "Target data does not have a child property with the given key" 372 | ); 373 | ``` 374 | 375 | **Parameters** 376 | 377 | - `targetData` - target json data 378 | - `propertyName` - expected property name 379 | - `customErrorMsg` - Custom error message 380 | 381 | ## assertToBeA 382 | 383 | Asserts that the target’s type is equal to the given string type. Types are case insensitive. See the type-detect project page for info on the type detection algorithm: https://github.com/chaijs/type-detect. 384 | 385 | https://www.chaijs.com/api/bdd/#method_a 386 | 387 | ```js 388 | I.assertToBeA("foo", "string"); 389 | I.assertToBeA(null, "null"); 390 | I.assertToBeA(Promise.resolve(), "promise"); 391 | I.assertToBeA(new Float32Array(), "float32array"); 392 | I.assertToBeA(Symbol(), "symbol"); 393 | I.assertToBeA("foo", "string", "Target data does not match the type"); 394 | ``` 395 | 396 | **Parameters** 397 | 398 | - `targetData` - target json data 399 | - `type` - expected data type 400 | - `customErrorMsg` - Custom error message 401 | 402 | ## assertToBeAn 403 | 404 | Asserts that the target’s type is equal to the given string type. Types are case insensitive. See the type-detect project page for info on the type detection algorithm: https://github.com/chaijs/type-detect. 405 | 406 | https://www.chaijs.com/api/bdd/#method_a 407 | 408 | ```js 409 | I.assertToBeAn([1, 2, 3], "array"); 410 | I.assertToBeAn({ a: 1 }, "object"); 411 | I.assertToBeAn(undefined, "undefined"); 412 | I.assertToBeAn(new Error(), "error"); 413 | I.assertToBeAn([1, 2, 3], "array", "Target data does not match the type"); 414 | ``` 415 | 416 | **Parameters** 417 | 418 | - `targetData` - target json data 419 | - `type` - expected data type 420 | - `customErrorMsg` - Custom error message 421 | 422 | ## assertMatchRegex 423 | 424 | Asserts that the target matches the given regular expression. 425 | 426 | https://www.chaijs.com/api/bdd/#method_match 427 | 428 | ```js 429 | I.assertMatchRegex("foobar", /^foo/); 430 | I.assertMatchRegex( 431 | "foobar", 432 | /^foo/, 433 | "Target data does not match the given regex" 434 | ); 435 | ``` 436 | 437 | **Parameters** 438 | 439 | - `targetData` - target json data 440 | - `regex` - regular expression to match target data 441 | - `customErrorMsg` - Custom error message 442 | 443 | ## assertLengthOf 444 | 445 | Asserts that the target’s length or size is equal to the given number n. 446 | 447 | https://www.chaijs.com/api/bdd/#method_lengthof 448 | 449 | ```js 450 | I.assertLengthOf([1, 2, 3], 3); 451 | I.assertLengthOf("foo", 3); 452 | I.assertLengthOf(new Set([1, 2, 3]), 3); 453 | I.assertLengthOf( 454 | new Map([ 455 | ["a", 1], 456 | ["b", 2], 457 | ["c", 3], 458 | ]), 459 | 3 460 | ); 461 | I.assertLengthOf("foo", 3, "Target data does not match the length"); 462 | ``` 463 | 464 | **Parameters** 465 | 466 | - `targetData` - target json data 467 | - `length` - expected target data length 468 | - `customErrorMsg` - Custom error message 469 | 470 | ## assertEmpty 471 | 472 | When the target is a string or array, .empty asserts that the target’s length property is strictly (===) equal to 0. 473 | 474 | https://www.chaijs.com/api/bdd/#method_empty 475 | 476 | ```js 477 | I.assertEmpty(""); 478 | I.assertEmpty([]); 479 | I.assertEmpty({}); 480 | I.assertEmpty(new Set()); 481 | I.assertEmpty(new Map()); 482 | I.assertEmpty("", "Target data is not empty"); 483 | ``` 484 | 485 | **Parameters** 486 | 487 | - `targetData` - target json data 488 | - `customErrorMsg` - Custom error message 489 | 490 | ## assertTrue 491 | 492 | Asserts that the target is strictly (===) equal to true. 493 | 494 | https://www.chaijs.com/api/bdd/#method_true 495 | 496 | ```js 497 | I.assertTrue(true); 498 | I.assertTrue(true, "Target data is not true"); 499 | ``` 500 | 501 | **Parameters** 502 | 503 | - `targetData` - target data 504 | - `customErrorMsg` - Custom error message 505 | 506 | ## assertFalse 507 | 508 | Asserts that the target is strictly (===) equal to false. 509 | 510 | https://www.chaijs.com/api/bdd/#method_false 511 | 512 | ```js 513 | I.assertFalse(false); 514 | I.assertTrue(false, "Target data is not false"); 515 | ``` 516 | 517 | **Parameters** 518 | 519 | - `targetData` - target data 520 | - `customErrorMsg` - Custom error message 521 | 522 | ## assertAbove 523 | 524 | Asserts that the target is a number or a date greater than the given number or date n respectively. However, it’s often best to assert that the target is equal to its expected value. 525 | 526 | https://www.chaijs.com/api/bdd/#method_above 527 | 528 | ```js 529 | I.assertAbove(2, 1); 530 | I.assertAbove(2, 1, "Target data not above the given value"); 531 | ``` 532 | 533 | **Parameters** 534 | 535 | - `targetData` - target data 536 | - `aboveThan` - number | Date 537 | - `customErrorMsg` - Custom error message 538 | 539 | ## assertBelow 540 | 541 | Asserts that the target is a number or a date less than the given number or date n respectively. However, it’s often best to assert that the target is equal to its expected value. 542 | 543 | https://www.chaijs.com/api/bdd/#method_below 544 | 545 | ```js 546 | I.assertBelow(1, 2); 547 | I.assertAbove(1, 2, "Target data not below the given value"); 548 | ``` 549 | 550 | **Parameters** 551 | 552 | - `targetData` - target data 553 | - `belowThan` - number | Date 554 | - `customErrorMsg` - Custom error message 555 | 556 | ## assertLengthOf 557 | 558 | Asserts that the target’s length or size is equal to the given number n. 559 | 560 | https://www.chaijs.com/api/bdd/#method_lengthof 561 | 562 | ```js 563 | I.assertLengthOf([1, 2, 3], 3); 564 | I.assertLengthOf("foo", 3); 565 | I.assertLengthOf(new Set([1, 2, 3]), 3); 566 | I.assertLengthOf( 567 | new Map([ 568 | ["a", 1], 569 | ["b", 2], 570 | ["c", 3], 571 | ]), 572 | 3 573 | ); 574 | I.assertLengthOf( 575 | "foo", 576 | 3, 577 | "Target length or size does not match the given number" 578 | ); 579 | ``` 580 | 581 | **Parameters** 582 | 583 | - `targetData` - target data 584 | - `expectedLength` - expected length 585 | - `customErrorMsg` - Custom error message 586 | 587 | ## assertLengthAboveThan 588 | 589 | Asserts that the target’s length or size is above than the given number n. 590 | 591 | https://www.chaijs.com/api/bdd/#method_lengthof 592 | https://www.chaijs.com/api/bdd/#method_above 593 | 594 | ```js 595 | I.assertLengthAboveThan([1, 2, 3], 2); 596 | I.assertLengthAboveThan("foo", 2); 597 | I.assertLengthAboveThan(new Set([1, 2, 3]), 2); 598 | I.assertLengthAboveThan( 599 | new Map([ 600 | ["a", 1], 601 | ["b", 2], 602 | ["c", 3], 603 | ]), 604 | 2 605 | ); 606 | I.assertLengthAboveThan( 607 | "foo", 608 | 2, 609 | "Target length or size not above than given number" 610 | ); 611 | ``` 612 | 613 | **Parameters** 614 | 615 | - `targetData` - target data 616 | - `lengthAboveThan` - length above than 617 | - `customErrorMsg` - Custom error message 618 | 619 | ## assertLengthBelowThan 620 | 621 | Asserts that the target’s length or size is below than the given number n. 622 | 623 | https://www.chaijs.com/api/bdd/#method_lengthof 624 | https://www.chaijs.com/api/bdd/#method_below 625 | 626 | ```js 627 | I.assertLengthBelowThan([1, 2, 3], 4); 628 | I.assertLengthBelowThan("foo", 4); 629 | I.assertLengthBelowThan(new Set([1, 2, 3]), 4); 630 | I.assertLengthBelowThan( 631 | new Map([ 632 | ["a", 1], 633 | ["b", 2], 634 | ["c", 3], 635 | ]), 636 | 4 637 | ); 638 | I.assertLengthAboveThan( 639 | "foo", 640 | 4, 641 | "Target length or size not below than given number" 642 | ); 643 | ``` 644 | 645 | **Parameters** 646 | 647 | - `targetData` - target data 648 | - `lengthBelowThan` - length below than 649 | - `customErrorMsg` - Custom error message 650 | 651 | ## assertEqualsIgnoreCase 652 | 653 | Asserts two strings represent the same value when ignoring case 654 | 655 | https://www.chaijs.com/plugins/chai-string/ 656 | 657 | ```js 658 | I.assertEqualIgnoreCase("FOO", "foo"); 659 | ``` 660 | 661 | **Parameters** 662 | 663 | - `actualValue` - actual value 664 | - `expectedValue` - expected value 665 | - `customErrorMsg` - Custom error message 666 | 667 | ## assertDeepMembers 668 | 669 | Asserts members of two arrays are deeply equal 670 | 671 | https://www.chaijs.com/api/bdd/#method_deep 672 | 673 | ```js 674 | I.assertDeepMembers([{ a: 1 }], [{ a: 1 }]); 675 | ``` 676 | 677 | **Parameters** 678 | 679 | - `actualValue` - actual value 680 | - `expectedValue` - expected value 681 | - `customErrorMsg` - Custom error message 682 | 683 | ## assertDeepIncludeMembers 684 | 685 | Asserts an array deep includes members from another array 686 | 687 | https://www.chaijs.com/api/bdd/#method_deep 688 | 689 | ```js 690 | I.assertDeepIncludeMembers([{ a: 1 }, { b: 2 }], [{ a: 1 }]); 691 | ``` 692 | 693 | **Parameters** 694 | 695 | - `actualValue` - actual value 696 | - `expectedValue` - expected value 697 | - `customErrorMsg` - Custom error message 698 | 699 | ## assertDeepExcludeMembers 700 | 701 | Asserts members of two JSON objects are deeply equal excluding some properties 702 | 703 | https://www.chaijs.com/plugins/chai-exclude/ 704 | 705 | ```js 706 | I.assertDeepEqualExcluding([{ a: 1 }, { b: 2 }], "b", [{ a: 1 }]); 707 | ``` 708 | 709 | **Parameters** 710 | 711 | - `actualValue` - actual value 712 | - `expectedValue` - expected value 713 | - `fieldsToExclude` - Fields to exclude from validation 714 | - `customErrorMsg` - Custom error message 715 | 716 | ## assertMatchesPattern 717 | 718 | Asserts a JSON object matches a provided pattern 719 | 720 | https://www.chaijs.com/plugins/chai-match-pattern/ 721 | 722 | ```js 723 | I.assertMatchesPattern({ a: 1, b: "abc" }, { a: 1, b: _.isString }); 724 | ``` 725 | 726 | **Parameters** 727 | 728 | - `actualValue` - actual value 729 | - `expectedPattern` - pattern to match on 730 | - `customErrorMsg` - Custom error message 731 | -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | export = chaiWrapper; 2 | /** 3 | * This wrapper take methods from default assert library to give access to use it from I object. 4 | * This wrapper allow us to print asserts as steps in output. Also we can expand this lib with different methods and 5 | * other assertion libraries. 6 | */ 7 | declare class chaiWrapper { 8 | /** 9 | * https://www.chaijs.com/api/bdd/#method_equal 10 | * @param {*} actualValue 11 | * @param {*} expectedValue 12 | * @param {*} customErrorMsg 13 | * @returns {*} 14 | */ 15 | assertEqual(actualValue: any, expectedValue: any, customErrorMsg?: any): any; 16 | /** 17 | * https://www.chaijs.com/api/bdd/#method_not 18 | * https://www.chaijs.com/api/bdd/#method_equal 19 | * @param {*} actualValue 20 | * @param {*} expectedValue 21 | * @param {*} customErrorMsg 22 | * @returns {*} 23 | */ 24 | assertNotEqual(actualValue: any, expectedValue: any, customErrorMsg?: any): any; 25 | /** 26 | * https://www.chaijs.com/api/bdd/#method_deep 27 | * https://www.chaijs.com/api/bdd/#method_equal 28 | * @param {*} actualValue 29 | * @param {*} expectedValue 30 | * @param {*} customErrorMsg 31 | * @returns {*} 32 | */ 33 | assertDeepEqual(actualValue: any, expectedValue: any, customErrorMsg?: any): any; 34 | /** 35 | * https://www.chaijs.com/api/bdd/#method_not 36 | * https://www.chaijs.com/api/bdd/#method_deep 37 | * https://www.chaijs.com/api/bdd/#method_equal 38 | * @param {*} actualValue 39 | * @param {*} expectedValue 40 | * @param {*} customErrorMsg 41 | * @returns {*} 42 | */ 43 | assertNotDeepEqual(actualValue: any, expectedValue: any, customErrorMsg?: any): any; 44 | /** 45 | * https://www.chaijs.com/api/bdd/#method_include 46 | * @param {*} actualValue 47 | * @param {*} expectedValueToContain 48 | * @param {*} customErrorMsg 49 | * @returns {*} 50 | */ 51 | assertContain(actualValue: any, expectedValueToContain: any, customErrorMsg?: any): any; 52 | /** 53 | * https://www.chaijs.com/api/bdd/#method_not 54 | * https://www.chaijs.com/api/bdd/#method_include 55 | * @param {*} actualValue 56 | * @param {*} expectedValueToNotContain 57 | * @param {*} customErrorMsg 58 | * @returns {*} 59 | */ 60 | assertNotContain(actualValue: any, expectedValueToNotContain: any, customErrorMsg?: any): any; 61 | /** 62 | * https://www.npmjs.com/package/chai-string#startswithstartwith 63 | * @param {*} actualValue 64 | * @param {*} expectedValueToStartWith 65 | * @param {*} customErrorMsg 66 | * @returns {*} 67 | */ 68 | assertStartsWith(actualValue: any, expectedValueToStartWith: any, customErrorMsg?: any): any; 69 | /** 70 | * https://www.chaijs.com/api/bdd/#method_not 71 | * https://www.npmjs.com/package/chai-string#startswithstartwith 72 | * @param {*} actualValue 73 | * @param {*} expectedValueToNotStartWith 74 | * @param {*} customErrorMsg 75 | * @returns {*} 76 | */ 77 | assertNotStartsWith(actualValue: any, expectedValueToNotStartWith: any, customErrorMsg?: any): any; 78 | /** 79 | * https://www.npmjs.com/package/chai-string#endswithendwith 80 | * @param {*} actualValue 81 | * @param {*} expectedValueToEndWith 82 | * @param {*} customErrorMsg 83 | * @returns {*} 84 | */ 85 | assertEndsWith(actualValue: any, expectedValueToEndWith: any, customErrorMsg?: any): any; 86 | /** 87 | * https://www.chaijs.com/api/bdd/#method_not 88 | * https://www.npmjs.com/package/chai-string#endswithendwith 89 | * @param {*} actualValue 90 | * @param {*} expectedValueToNotEndWith 91 | * @param {*} customErrorMsg 92 | * @returns {*} 93 | */ 94 | assertNotEndsWith(actualValue: any, expectedValueToNotEndWith: any, customErrorMsg?: any): any; 95 | /** 96 | * https://www.npmjs.com/package/chai-json-schema#jsonschemavalue-schema 97 | * @param {*} targetData 98 | * @param {*} jsonSchema 99 | * @param {*} customErrorMsg 100 | * @returns {*} 101 | */ 102 | assertJsonSchema(targetData: any, jsonSchema: any, customErrorMsg?: any): any; 103 | /** 104 | * https://www.chaijs.com/plugins/chai-json-schema-ajv/ 105 | * @param {*} targetData 106 | * @param {*} jsonSchema 107 | * @param {*} customErrorMsg 108 | * @param {*} ajvOptions Pass AJV options 109 | * @returns {*} 110 | */ 111 | assertJsonSchemaUsingAJV(targetData: any, jsonSchema: any, customErrorMsg?: any, ajvOptions?: any): any; 112 | /** 113 | * https://www.chaijs.com/api/bdd/#method_property 114 | * @param {*} targetData 115 | * @param {*} propertyName 116 | * @param {*} customErrorMsg 117 | * @returns {*} 118 | */ 119 | assertHasProperty(targetData: any, propertyName: any, customErrorMsg?: any): any; 120 | /** 121 | * https://www.chaijs.com/api/bdd/#method_a 122 | * @param {*} targetData 123 | * @param {*} propertyName 124 | * @param {*} customErrorMsg 125 | * @returns {*} 126 | */ 127 | assertHasAProperty(targetData: any, propertyName: any, customErrorMsg?: any): any; 128 | /** 129 | * https://www.chaijs.com/api/bdd/#method_a 130 | * @param {*} targetData 131 | * @param {*} type 132 | * @param {*} customErrorMsg 133 | * @returns {*} 134 | */ 135 | assertToBeA(targetData: any, type: any, customErrorMsg?: any): any; 136 | /** 137 | * https://www.chaijs.com/api/bdd/#method_a 138 | * @param {*} targetData 139 | * @param {*} type 140 | * @param {*} customErrorMsg 141 | * @returns {*} 142 | */ 143 | assertToBeAn(targetData: any, type: any, customErrorMsg?: any): any; 144 | /** 145 | * https://www.chaijs.com/api/bdd/#method_match 146 | * @param {*} targetData 147 | * @param {*} regex 148 | * @param {*} customErrorMsg 149 | * @returns {*} 150 | */ 151 | assertMatchRegex(targetData: any, regex: any, customErrorMsg?: any): any; 152 | /** 153 | * https://www.chaijs.com/api/bdd/#method_lengthof 154 | * @param {*} targetData 155 | * @param {*} length 156 | * @param {*} customErrorMsg 157 | * @returns {*} 158 | */ 159 | assertLengthOf(targetData: any, length: any, customErrorMsg?: any): any; 160 | /** 161 | * https://www.chaijs.com/api/bdd/#method_empty 162 | * @param {*} targetData 163 | * @param {*} customErrorMsg 164 | * @returns {*} 165 | */ 166 | assertEmpty(targetData: any, customErrorMsg?: any): any; 167 | /** 168 | * https://www.chaijs.com/api/bdd/#method_true 169 | * @param {*} targetData 170 | * @param {*} customErrorMsg 171 | * @returns {*} 172 | */ 173 | assertTrue(targetData: any, customErrorMsg?: any): any; 174 | /** 175 | * https://www.chaijs.com/api/bdd/#method_false 176 | * @param {*} targetData 177 | * @param {*} customErrorMsg 178 | * @returns {*} 179 | */ 180 | assertFalse(targetData: any, customErrorMsg?: any): any; 181 | /** 182 | * https://www.chaijs.com/api/bdd/#method_above 183 | * @param {*} targetData 184 | * @param {*} aboveThan number | Date 185 | * @param {*} customErrorMsg 186 | * @returns {*} 187 | */ 188 | assertAbove(targetData: any, aboveThan: any, customErrorMsg?: any): any; 189 | /** 190 | * https://www.chaijs.com/api/bdd/#method_below 191 | * @param {*} targetData 192 | * @param {*} belowThan number | Date 193 | * @param {*} customErrorMsg 194 | * @returns {*} 195 | */ 196 | assertBelow(targetData: any, belowThan: any, customErrorMsg?: any): any; 197 | /** 198 | * https://www.chaijs.com/api/bdd/#method_lengthof 199 | * https://www.chaijs.com/api/bdd/#method_above 200 | * @param {*} targetData 201 | * @param {*} lengthAboveThan 202 | * @param {*} customErrorMsg 203 | * @returns {*} 204 | */ 205 | assertLengthAboveThan(targetData: any, lengthAboveThan: any, customErrorMsg?: any): any; 206 | /** 207 | * https://www.chaijs.com/api/bdd/#method_lengthof 208 | * https://www.chaijs.com/api/bdd/#method_below 209 | * @param {*} targetData 210 | * @param {*} lengthBelowThan 211 | * @param {*} customErrorMsg 212 | * @returns {*} 213 | */ 214 | assertLengthBelowThan(targetData: any, lengthBelowThan: any, customErrorMsg?: any): any; 215 | /** 216 | * https://www.npmjs.com/package/chai-string#equalignorecase 217 | * @param {*} actualValue 218 | * @param {*} expectedValue 219 | * @param {*} customErrorMsg 220 | * @returns 221 | */ 222 | assertEqualIgnoreCase(actualValue: any, expectedValue: any, customErrorMsg?: any): any; 223 | /** 224 | * Asserts members of two arrays are deeply equal 225 | * https://www.chaijs.com/api/bdd/#method_deep 226 | * @param {*} actualValue 227 | * @param {*} expectedValue 228 | * @param {*} customErrorMsg 229 | * @returns 230 | */ 231 | assertDeepMembers(actualValue: any, expectedValue: any, customErrorMsg?: any): any; 232 | /** 233 | * Asserts an array deep includes members from another array 234 | * https://www.chaijs.com/api/bdd/#method_deep 235 | * @param {*} actualValue 236 | * @param {*} expectedValue 237 | * @param {*} customErrorMsg 238 | * @returns 239 | */ 240 | assertDeepIncludeMembers(actualValue: any, expectedValue: any, customErrorMsg?: any): any; 241 | /** 242 | * Asserts a JSON deep compare excluding some properties of the JSON object 243 | * https://www.npmjs.com/package/chai-exclude 244 | * https://github.com/mesaugat/chai-exclude/blob/add7356daec42291c91e4b2f1598ed1b3782e5a6/index.d.ts#L32 * 245 | * @param {*} actualValue 246 | * @param {*} expectedValue 247 | * @param {*} fieldsToExclude 248 | * @param {*} customErrorMsg 249 | * @returns {*} 250 | */ 251 | assertDeepEqualExcluding(actualValue: any, expectedValue: any, fieldsToExclude:any, customErrorMsg?: any): any; 252 | /** 253 | * Asserts a JSON object matches a provided pattern 254 | * https://www.chaijs.com/plugins/chai-match-pattern/ 255 | * @param {*} actualValue 256 | * @param {*} expectedPattern 257 | * @param {*} customErrorMsg 258 | */ 259 | assertMatchesPattern(actualValue: any, expectedPattern: any, customErrorMsg?: any): any; 260 | } 261 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable global-require */ 2 | const chai = require( 'chai' ); 3 | 4 | const { expect } = chai; 5 | 6 | // Use chai custom assertion library 7 | chai.use( require( 'chai-string' ) ); 8 | chai.use( require( 'chai-exclude' ) ); 9 | chai.use( require( 'chai-match-pattern' ) ); 10 | 11 | /** 12 | * This wrapper take methods from default assert library to give access to use it from I object. 13 | * This wrapper allow us to print asserts as steps in output. Also we can expand this lib with different methods and 14 | * other assertion libraries. 15 | */ 16 | class chaiWrapper { 17 | 18 | /** 19 | * https://www.chaijs.com/api/bdd/#method_equal 20 | * @param {*} actualValue 21 | * @param {*} expectedValue 22 | * @param {*} customErrorMsg 23 | * @returns {*} 24 | */ 25 | assertEqual( actualValue, expectedValue, customErrorMsg = '' ){ 26 | 27 | return expect( actualValue, customErrorMsg ).to.equal( expectedValue ); 28 | 29 | } 30 | 31 | /** 32 | * https://www.chaijs.com/api/bdd/#method_not 33 | * https://www.chaijs.com/api/bdd/#method_equal 34 | * @param {*} actualValue 35 | * @param {*} expectedValue 36 | * @param {*} customErrorMsg 37 | * @returns {*} 38 | */ 39 | assertNotEqual( actualValue, expectedValue, customErrorMsg = '' ){ 40 | 41 | return expect( actualValue, customErrorMsg ).not.to.equal( expectedValue ); 42 | 43 | } 44 | 45 | /** 46 | * https://www.chaijs.com/api/bdd/#method_deep 47 | * https://www.chaijs.com/api/bdd/#method_equal 48 | * @param {*} actualValue 49 | * @param {*} expectedValue 50 | * @param {*} customErrorMsg 51 | * @returns {*} 52 | */ 53 | assertDeepEqual( actualValue, expectedValue, customErrorMsg = '' ){ 54 | 55 | return expect( actualValue, customErrorMsg ).to.deep.equal( expectedValue ); 56 | 57 | } 58 | 59 | /** 60 | * https://www.chaijs.com/api/bdd/#method_not 61 | * https://www.chaijs.com/api/bdd/#method_deep 62 | * https://www.chaijs.com/api/bdd/#method_equal 63 | * @param {*} actualValue 64 | * @param {*} expectedValue 65 | * @param {*} customErrorMsg 66 | * @returns {*} 67 | */ 68 | assertNotDeepEqual( actualValue, expectedValue, customErrorMsg = '' ){ 69 | 70 | return expect( actualValue, customErrorMsg ).to.not.deep.equal( expectedValue ); 71 | 72 | } 73 | 74 | /** 75 | * https://www.chaijs.com/api/bdd/#method_include 76 | * @param {*} actualValue 77 | * @param {*} expectedValueToContain 78 | * @param {*} customErrorMsg 79 | * @returns {*} 80 | */ 81 | assertContain( actualValue, expectedValueToContain, customErrorMsg = '' ){ 82 | 83 | return expect( actualValue, customErrorMsg ).to.contain( 84 | expectedValueToContain 85 | ); 86 | 87 | } 88 | 89 | /** 90 | * https://www.chaijs.com/api/bdd/#method_not 91 | * https://www.chaijs.com/api/bdd/#method_include 92 | * @param {*} actualValue 93 | * @param {*} expectedValueToNotContain 94 | * @param {*} customErrorMsg 95 | * @returns {*} 96 | */ 97 | assertNotContain( 98 | actualValue, 99 | expectedValueToNotContain, 100 | customErrorMsg = '' 101 | ){ 102 | 103 | return expect( actualValue, customErrorMsg ).not.to.contain( 104 | expectedValueToNotContain 105 | ); 106 | 107 | } 108 | 109 | /** 110 | * https://www.npmjs.com/package/chai-string#startswithstartwith 111 | * @param {*} actualValue 112 | * @param {*} expectedValueToStartWith 113 | * @param {*} customErrorMsg 114 | * @returns {*} 115 | */ 116 | assertStartsWith( actualValue, expectedValueToStartWith, customErrorMsg = '' ){ 117 | 118 | return expect( actualValue, customErrorMsg ).to.startsWith( 119 | expectedValueToStartWith 120 | ); 121 | 122 | } 123 | 124 | /** 125 | * https://www.chaijs.com/api/bdd/#method_not 126 | * https://www.npmjs.com/package/chai-string#startswithstartwith 127 | * @param {*} actualValue 128 | * @param {*} expectedValueToNotStartWith 129 | * @param {*} customErrorMsg 130 | * @returns {*} 131 | */ 132 | assertNotStartsWith( 133 | actualValue, 134 | expectedValueToNotStartWith, 135 | customErrorMsg = '' 136 | ){ 137 | 138 | return expect( actualValue, customErrorMsg ).not.to.startsWith( 139 | expectedValueToNotStartWith 140 | ); 141 | 142 | } 143 | 144 | /** 145 | * https://www.npmjs.com/package/chai-string#endswithendwith 146 | * @param {*} actualValue 147 | * @param {*} expectedValueToEndWith 148 | * @param {*} customErrorMsg 149 | * @returns {*} 150 | */ 151 | assertEndsWith( actualValue, expectedValueToEndWith, customErrorMsg = '' ){ 152 | 153 | return expect( actualValue, customErrorMsg ).to.endsWith( 154 | expectedValueToEndWith 155 | ); 156 | 157 | } 158 | 159 | /** 160 | * https://www.chaijs.com/api/bdd/#method_not 161 | * https://www.npmjs.com/package/chai-string#endswithendwith 162 | * @param {*} actualValue 163 | * @param {*} expectedValueToNotEndWith 164 | * @param {*} customErrorMsg 165 | * @returns {*} 166 | */ 167 | assertNotEndsWith( 168 | actualValue, 169 | expectedValueToNotEndWith, 170 | customErrorMsg = '' 171 | ){ 172 | 173 | return expect( actualValue, customErrorMsg ).not.to.endsWith( 174 | expectedValueToNotEndWith 175 | ); 176 | 177 | } 178 | 179 | /** 180 | * https://www.npmjs.com/package/chai-json-schema#jsonschemavalue-schema 181 | * @param {*} targetData 182 | * @param {*} jsonSchema 183 | * @param {*} customErrorMsg 184 | * @returns {*} 185 | */ 186 | assertJsonSchema( targetData, jsonSchema, customErrorMsg = '' ){ 187 | 188 | chai.use( require( 'chai-json-schema' ) ); 189 | return expect( targetData, customErrorMsg ).to.be.jsonSchema( jsonSchema ); 190 | 191 | } 192 | 193 | /** 194 | * https://www.chaijs.com/plugins/chai-json-schema-ajv/ 195 | * @param {*} targetData 196 | * @param {*} jsonSchema 197 | * @param {*} customErrorMsg 198 | * @param {*} ajvOptions Pass AJV options 199 | * @returns {*} 200 | */ 201 | assertJsonSchemaUsingAJV( 202 | targetData, 203 | jsonSchema, 204 | customErrorMsg = '', 205 | ajvOptions = { allErrors: true } 206 | ){ 207 | 208 | chai.use( require( 'chai-json-schema-ajv' ).create( ajvOptions ) ); 209 | return expect( targetData, customErrorMsg ).to.be.jsonSchema( jsonSchema ); 210 | 211 | } 212 | 213 | /** 214 | * https://www.chaijs.com/api/bdd/#method_property 215 | * @param {*} targetData 216 | * @param {*} propertyName 217 | * @param {*} customErrorMsg 218 | * @returns {*} 219 | */ 220 | assertHasProperty( targetData, propertyName, customErrorMsg = '' ){ 221 | 222 | return expect( targetData, customErrorMsg ).to.have.property( propertyName ); 223 | 224 | } 225 | 226 | /** 227 | * https://www.chaijs.com/api/bdd/#method_a 228 | * @param {*} targetData 229 | * @param {*} propertyName 230 | * @param {*} customErrorMsg 231 | * @returns {*} 232 | */ 233 | assertHasAProperty( targetData, propertyName, customErrorMsg = '' ){ 234 | 235 | return expect( targetData, customErrorMsg ).to.have.a.property( propertyName ); 236 | 237 | } 238 | 239 | /** 240 | * https://www.chaijs.com/api/bdd/#method_a 241 | * @param {*} targetData 242 | * @param {*} type 243 | * @param {*} customErrorMsg 244 | * @returns {*} 245 | */ 246 | assertToBeA( targetData, type, customErrorMsg = '' ){ 247 | 248 | return expect( targetData, customErrorMsg ).to.be.a( type ); 249 | 250 | } 251 | 252 | /** 253 | * https://www.chaijs.com/api/bdd/#method_a 254 | * @param {*} targetData 255 | * @param {*} type 256 | * @param {*} customErrorMsg 257 | * @returns {*} 258 | */ 259 | assertToBeAn( targetData, type, customErrorMsg = '' ){ 260 | 261 | return expect( targetData, customErrorMsg ).to.be.an( type ); 262 | 263 | } 264 | 265 | /** 266 | * https://www.chaijs.com/api/bdd/#method_match 267 | * @param {*} targetData 268 | * @param {*} regex 269 | * @param {*} customErrorMsg 270 | * @returns {*} 271 | */ 272 | assertMatchRegex( targetData, regex, customErrorMsg = '' ){ 273 | 274 | return expect( targetData, customErrorMsg ).to.match( regex ); 275 | 276 | } 277 | 278 | /** 279 | * https://www.chaijs.com/api/bdd/#method_lengthof 280 | * @param {*} targetData 281 | * @param {*} length 282 | * @param {*} customErrorMsg 283 | * @returns {*} 284 | */ 285 | assertLengthOf( targetData, length, customErrorMsg = '' ){ 286 | 287 | return expect( targetData, customErrorMsg ).to.have.lengthOf( length ); 288 | 289 | } 290 | 291 | /** 292 | * https://www.chaijs.com/api/bdd/#method_empty 293 | * @param {*} targetData 294 | * @param {*} customErrorMsg 295 | * @returns {*} 296 | */ 297 | assertEmpty( targetData, customErrorMsg = '' ){ 298 | 299 | return expect( targetData, customErrorMsg ).to.be.empty; 300 | 301 | } 302 | 303 | /** 304 | * https://www.chaijs.com/api/bdd/#method_true 305 | * @param {*} targetData 306 | * @param {*} customErrorMsg 307 | * @returns {*} 308 | */ 309 | assertTrue( targetData, customErrorMsg = '' ){ 310 | 311 | return expect( targetData, customErrorMsg ).to.be.true; 312 | 313 | } 314 | 315 | /** 316 | * https://www.chaijs.com/api/bdd/#method_false 317 | * @param {*} targetData 318 | * @param {*} customErrorMsg 319 | * @returns {*} 320 | */ 321 | assertFalse( targetData, customErrorMsg = '' ){ 322 | 323 | return expect( targetData, customErrorMsg ).to.be.false; 324 | 325 | } 326 | 327 | /** 328 | * https://www.chaijs.com/api/bdd/#method_above 329 | * @param {*} targetData 330 | * @param {*} aboveThan number | Date 331 | * @param {*} customErrorMsg 332 | * @returns {*} 333 | */ 334 | assertAbove( targetData, aboveThan, customErrorMsg = '' ){ 335 | 336 | return expect( targetData, customErrorMsg ).to.be.above( aboveThan ); 337 | 338 | } 339 | 340 | /** 341 | * https://www.chaijs.com/api/bdd/#method_below 342 | * @param {*} targetData 343 | * @param {*} belowThan number | Date 344 | * @param {*} customErrorMsg 345 | * @returns {*} 346 | */ 347 | assertBelow( targetData, belowThan, customErrorMsg = '' ){ 348 | 349 | return expect( targetData, customErrorMsg ).to.be.below( belowThan ); 350 | 351 | } 352 | 353 | /** 354 | * https://www.chaijs.com/api/bdd/#method_lengthof 355 | * https://www.chaijs.com/api/bdd/#method_above 356 | * @param {*} targetData 357 | * @param {*} lengthAboveThan 358 | * @param {*} customErrorMsg 359 | * @returns {*} 360 | */ 361 | assertLengthAboveThan( targetData, lengthAboveThan, customErrorMsg = '' ){ 362 | 363 | return expect( targetData, customErrorMsg ).to.have.lengthOf.above( 364 | lengthAboveThan 365 | ); 366 | 367 | } 368 | 369 | /** 370 | * https://www.chaijs.com/api/bdd/#method_lengthof 371 | * https://www.chaijs.com/api/bdd/#method_below 372 | * @param {*} targetData 373 | * @param {*} lengthBelowThan 374 | * @param {*} customErrorMsg 375 | * @returns {*} 376 | */ 377 | assertLengthBelowThan( targetData, lengthBelowThan, customErrorMsg = '' ){ 378 | 379 | return expect( targetData, customErrorMsg ).to.have.lengthOf.below( 380 | lengthBelowThan 381 | ); 382 | 383 | } 384 | 385 | /** 386 | * https://www.npmjs.com/package/chai-string#equalignorecase 387 | * @param {*} actualValue 388 | * @param {*} expectedValue 389 | * @param {*} customErrorMsg 390 | * @returns 391 | */ 392 | assertEqualIgnoreCase( actualValue, expectedValue, customErrorMsg = '' ){ 393 | 394 | return expect( actualValue, customErrorMsg ).to.equalIgnoreCase( 395 | expectedValue 396 | ); 397 | 398 | } 399 | 400 | /** 401 | * Asserts members of two arrays are deeply equal 402 | * https://www.chaijs.com/api/bdd/#method_deep 403 | * @param {*} actualValue 404 | * @param {*} expectedValue 405 | * @param {*} customErrorMsg 406 | * @returns 407 | */ 408 | assertDeepMembers( actualValue, expectedValue, customErrorMsg = '' ){ 409 | 410 | return expect( actualValue, customErrorMsg ).to.have.deep.members( 411 | expectedValue 412 | ); 413 | 414 | } 415 | 416 | /** 417 | * Asserts an array deep includes members from another array 418 | * https://www.chaijs.com/api/bdd/#method_deep 419 | * @param {*} actualValue 420 | * @param {*} expectedValue 421 | * @param {*} customErrorMsg 422 | * @returns 423 | */ 424 | assertDeepIncludeMembers( actualValue, expectedValue, customErrorMsg = '' ){ 425 | 426 | return expect( actualValue, customErrorMsg ).to.deep.include.members( 427 | expectedValue 428 | ); 429 | 430 | } 431 | 432 | /** 433 | * Asserts members of two JSON objects are deeply equal excluding some properties 434 | * https://www.chaijs.com/api/bdd/#method_deep 435 | * https://www.chaijs.com/plugins/chai-exclude/ 436 | * https://www.chaijs.com/api/bdd/#method_equal 437 | * @param {*} actualValue 438 | * @param {*} expectedValue 439 | * @param {*} fieldsToExclude 440 | * @param {*} customErrorMsg 441 | * @returns {*} 442 | */ 443 | assertDeepEqualExcluding( 444 | actualValue, 445 | expectedValue, 446 | fieldsToExclude, 447 | customErrorMsg = '' 448 | ){ 449 | 450 | return expect( actualValue, customErrorMsg ) 451 | .excludingEvery( fieldsToExclude ) 452 | .to.deep.equal( expectedValue ); 453 | 454 | } 455 | 456 | /** 457 | * Asserts a JSON object matches a provided pattern 458 | * https://www.chaijs.com/plugins/chai-match-pattern/ 459 | * @param {*} actualValue 460 | * @param {*} expectedPattern 461 | * @param {*} customErrorMsg 462 | * @returns 463 | */ 464 | assertMatchesPattern( actualValue, expectedPattern, customErrorMsg = '' ){ 465 | 466 | return expect( actualValue, customErrorMsg ).to.matchPattern( expectedPattern ); 467 | 468 | } 469 | 470 | } 471 | 472 | module.exports = chaiWrapper; 473 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "codeceptjs-chai", 3 | "version": "2.3.3", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.5.5", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", 10 | "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.0.0" 14 | } 15 | }, 16 | "@babel/highlight": { 17 | "version": "7.5.0", 18 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", 19 | "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", 20 | "dev": true, 21 | "requires": { 22 | "chalk": "^2.0.0", 23 | "esutils": "^2.0.2", 24 | "js-tokens": "^4.0.0" 25 | } 26 | }, 27 | "@babel/parser": { 28 | "version": "7.21.1", 29 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.1.tgz", 30 | "integrity": "sha512-JzhBFpkuhBNYUY7qs+wTzNmyCWUHEaAFpQQD2YfU1rPL38/L43Wvid0fFkiOCnHvsGncRZgEPyGnltABLcVDTg==", 31 | "dev": true 32 | }, 33 | "@codeceptjs/configure": { 34 | "version": "0.8.0", 35 | "resolved": "https://registry.npmjs.org/@codeceptjs/configure/-/configure-0.8.0.tgz", 36 | "integrity": "sha512-fwB44Ww1/dVX5l0ZKL8/bDcAcmgTMqKDMr3hNTItyKeD0kcoLIEQWHGlVpgkZzCrRzmgMnywAuOA7t7AWxcvGw==", 37 | "dev": true, 38 | "requires": { 39 | "lodash.merge": "^4.6.2", 40 | "lodash.mergewith": "^4.6.2" 41 | } 42 | }, 43 | "@codeceptjs/helper": { 44 | "version": "1.0.2", 45 | "resolved": "https://registry.npmjs.org/@codeceptjs/helper/-/helper-1.0.2.tgz", 46 | "integrity": "sha512-QKuyw4cGVa78YYj+g02RXitcUYpV4qKjZDHxfCIH2w8lJIr1FQohRD3o/MpcqEnvp475HQJN/OyWhdUBstJupA==", 47 | "dev": true 48 | }, 49 | "@cucumber/cucumber-expressions": { 50 | "version": "16.1.2", 51 | "resolved": "https://registry.npmjs.org/@cucumber/cucumber-expressions/-/cucumber-expressions-16.1.2.tgz", 52 | "integrity": "sha512-CfHEbxJ5FqBwF6mJyLLz4B353gyHkoi6cCL4J0lfDZ+GorpcWw4n2OUAdxJmP7ZlREANWoTFlp4FhmkLKrCfUA==", 53 | "dev": true, 54 | "requires": { 55 | "regexp-match-indices": "1.0.2" 56 | } 57 | }, 58 | "@cucumber/gherkin": { 59 | "version": "26.0.3", 60 | "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-26.0.3.tgz", 61 | "integrity": "sha512-xwJHi//bLFEU1drIyw2yswwUHnnVWO4XcyVBbCTDs6DkSh262GkogFI/IWwChZqJfOXnPglzLGxR1DibcZsILA==", 62 | "dev": true, 63 | "requires": { 64 | "@cucumber/messages": "19.1.4 - 21" 65 | } 66 | }, 67 | "@cucumber/messages": { 68 | "version": "21.0.1", 69 | "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-21.0.1.tgz", 70 | "integrity": "sha512-pGR7iURM4SF9Qp1IIpNiVQ77J9kfxMkPOEbyy+zRmGABnWWCsqMpJdfHeh9Mb3VskemVw85++e15JT0PYdcR3g==", 71 | "dev": true, 72 | "requires": { 73 | "@types/uuid": "8.3.4", 74 | "class-transformer": "0.5.1", 75 | "reflect-metadata": "0.1.13", 76 | "uuid": "9.0.0" 77 | } 78 | }, 79 | "@hapi/address": { 80 | "version": "5.1.0", 81 | "resolved": "https://registry.npmjs.org/@hapi/address/-/address-5.1.0.tgz", 82 | "integrity": "sha512-b/OicomrGhG+aRgAhtxqOArHDH7kE2sY0IQ5MwIU6EkzUIOmsfi4YfYPZxGSauHLgVzcwk2rseCi7fjeMpQh+w==", 83 | "dev": true, 84 | "requires": { 85 | "@hapi/hoek": "^11.0.2" 86 | } 87 | }, 88 | "@hapi/formula": { 89 | "version": "3.0.2", 90 | "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-3.0.2.tgz", 91 | "integrity": "sha512-hY5YPNXzw1He7s0iqkRQi+uMGh383CGdyyIGYtB+W5N3KHPXoqychklvHhKCC9M3Xtv0OCs/IHw+r4dcHtBYWw==", 92 | "dev": true 93 | }, 94 | "@hapi/hoek": { 95 | "version": "11.0.2", 96 | "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.2.tgz", 97 | "integrity": "sha512-aKmlCO57XFZ26wso4rJsW4oTUnrgTFw2jh3io7CAtO9w4UltBNwRXvXIVzzyfkaaLRo3nluP/19msA8vDUUuKw==", 98 | "dev": true 99 | }, 100 | "@hapi/pinpoint": { 101 | "version": "2.0.1", 102 | "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.1.tgz", 103 | "integrity": "sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==", 104 | "dev": true 105 | }, 106 | "@hapi/tlds": { 107 | "version": "1.0.1", 108 | "resolved": "https://registry.npmjs.org/@hapi/tlds/-/tlds-1.0.1.tgz", 109 | "integrity": "sha512-OXs5OliWsLTmvzQKZtb3KhfEz30WuuaizwAn95GLfeK+JpGnBxR55lALv3kA4T1RRb3wlrNjnboBg6ur1Czvig==", 110 | "dev": true 111 | }, 112 | "@hapi/topo": { 113 | "version": "6.0.1", 114 | "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.1.tgz", 115 | "integrity": "sha512-JioWUZL1Bm7r8bnCDx2AUggiPwpV7djFfDTWT1aZSyHjN++fVz7XPdW8YVCxvyv9bSWcbbOLV/h4U1zGdwrN3w==", 116 | "dev": true, 117 | "requires": { 118 | "@hapi/hoek": "^11.0.2" 119 | } 120 | }, 121 | "@types/uuid": { 122 | "version": "8.3.4", 123 | "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", 124 | "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", 125 | "dev": true 126 | }, 127 | "abbrev": { 128 | "version": "1.1.1", 129 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 130 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", 131 | "dev": true 132 | }, 133 | "acorn": { 134 | "version": "6.4.1", 135 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", 136 | "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", 137 | "dev": true 138 | }, 139 | "acorn-jsx": { 140 | "version": "5.1.0", 141 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", 142 | "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", 143 | "dev": true 144 | }, 145 | "ajv": { 146 | "version": "6.12.3", 147 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", 148 | "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", 149 | "requires": { 150 | "fast-deep-equal": "^3.1.1", 151 | "fast-json-stable-stringify": "^2.0.0", 152 | "json-schema-traverse": "^0.4.1", 153 | "uri-js": "^4.2.2" 154 | } 155 | }, 156 | "ansi-colors": { 157 | "version": "4.1.1", 158 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 159 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 160 | "dev": true 161 | }, 162 | "ansi-escapes": { 163 | "version": "3.2.0", 164 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", 165 | "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", 166 | "dev": true 167 | }, 168 | "ansi-regex": { 169 | "version": "3.0.1", 170 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", 171 | "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", 172 | "dev": true 173 | }, 174 | "ansi-styles": { 175 | "version": "3.2.1", 176 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 177 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 178 | "dev": true, 179 | "requires": { 180 | "color-convert": "^1.9.0" 181 | } 182 | }, 183 | "anymatch": { 184 | "version": "3.1.3", 185 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 186 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 187 | "dev": true, 188 | "requires": { 189 | "normalize-path": "^3.0.0", 190 | "picomatch": "^2.0.4" 191 | } 192 | }, 193 | "argparse": { 194 | "version": "1.0.10", 195 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 196 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 197 | "dev": true, 198 | "requires": { 199 | "sprintf-js": "~1.0.2" 200 | } 201 | }, 202 | "array-includes": { 203 | "version": "3.0.3", 204 | "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", 205 | "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", 206 | "dev": true, 207 | "requires": { 208 | "define-properties": "^1.1.2", 209 | "es-abstract": "^1.7.0" 210 | } 211 | }, 212 | "arrify": { 213 | "version": "2.0.1", 214 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", 215 | "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", 216 | "dev": true 217 | }, 218 | "assertion-error": { 219 | "version": "1.1.0", 220 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", 221 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" 222 | }, 223 | "astral-regex": { 224 | "version": "1.0.0", 225 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", 226 | "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", 227 | "dev": true 228 | }, 229 | "asynckit": { 230 | "version": "0.4.0", 231 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 232 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", 233 | "dev": true 234 | }, 235 | "axios": { 236 | "version": "1.3.3", 237 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.3.tgz", 238 | "integrity": "sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==", 239 | "dev": true, 240 | "requires": { 241 | "follow-redirects": "^1.15.0", 242 | "form-data": "^4.0.0", 243 | "proxy-from-env": "^1.1.0" 244 | } 245 | }, 246 | "balanced-match": { 247 | "version": "1.0.0", 248 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 249 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 250 | "dev": true 251 | }, 252 | "binary-extensions": { 253 | "version": "2.2.0", 254 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 255 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 256 | "dev": true 257 | }, 258 | "bo-selector": { 259 | "version": "0.0.10", 260 | "resolved": "https://registry.npmjs.org/bo-selector/-/bo-selector-0.0.10.tgz", 261 | "integrity": "sha512-Drm8W3MFLNhzHTXG93g8ll7wBlmiRr5C9W8R0sbsNQp/8h1IoPnzDH4dEQuJx8VaNq02io2ZfFnzKC1s64xRJg==", 262 | "dev": true 263 | }, 264 | "brace-expansion": { 265 | "version": "1.1.11", 266 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 267 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 268 | "dev": true, 269 | "requires": { 270 | "balanced-match": "^1.0.0", 271 | "concat-map": "0.0.1" 272 | } 273 | }, 274 | "braces": { 275 | "version": "3.0.2", 276 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 277 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 278 | "dev": true, 279 | "requires": { 280 | "fill-range": "^7.0.1" 281 | } 282 | }, 283 | "browser-stdout": { 284 | "version": "1.3.1", 285 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 286 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 287 | "dev": true 288 | }, 289 | "callsites": { 290 | "version": "3.1.0", 291 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 292 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 293 | "dev": true 294 | }, 295 | "camelcase": { 296 | "version": "6.3.0", 297 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 298 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 299 | "dev": true 300 | }, 301 | "chai": { 302 | "version": "4.2.0", 303 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", 304 | "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", 305 | "requires": { 306 | "assertion-error": "^1.1.0", 307 | "check-error": "^1.0.2", 308 | "deep-eql": "^3.0.1", 309 | "get-func-name": "^2.0.0", 310 | "pathval": "^1.1.0", 311 | "type-detect": "^4.0.5" 312 | } 313 | }, 314 | "chai-deep-match": { 315 | "version": "1.2.1", 316 | "resolved": "https://registry.npmjs.org/chai-deep-match/-/chai-deep-match-1.2.1.tgz", 317 | "integrity": "sha512-mSbtP1GXt3ypQyxBuduUcrGSR1gWO1Mhi8l93vrdXQidGYzHVs/vEn/h0FHTlTj3ga48+xroxlzHmh6hFEdWGQ==", 318 | "dev": true, 319 | "requires": { 320 | "deep-keys": "^0.5.0", 321 | "lodash": "^4.17.10", 322 | "lodash-pickdeep": "^1.0.2" 323 | } 324 | }, 325 | "chai-exclude": { 326 | "version": "2.1.0", 327 | "resolved": "https://registry.npmjs.org/chai-exclude/-/chai-exclude-2.1.0.tgz", 328 | "integrity": "sha512-IBnm50Mvl3O1YhPpTgbU8MK0Gw7NHcb18WT2TxGdPKOMtdtZVKLHmQwdvOF7mTlHVQStbXuZKFwkevFtbHjpVg==", 329 | "requires": { 330 | "fclone": "^1.0.11" 331 | } 332 | }, 333 | "chai-json-schema": { 334 | "version": "1.5.1", 335 | "resolved": "https://registry.npmjs.org/chai-json-schema/-/chai-json-schema-1.5.1.tgz", 336 | "integrity": "sha512-TR/xPDxRhqwFFCWg1HgL8nNWbpNfUwaib6pBN++QKpnd0t+o3+MBvAn5CM1mpdUMaM76oJAtUjGKdjGad01lIA==", 337 | "requires": { 338 | "jsonpointer.js": "0.4.0", 339 | "tv4": "^1.3.0" 340 | } 341 | }, 342 | "chai-json-schema-ajv": { 343 | "version": "5.1.0", 344 | "resolved": "https://registry.npmjs.org/chai-json-schema-ajv/-/chai-json-schema-ajv-5.1.0.tgz", 345 | "integrity": "sha512-HuPu3kNy8D7znpumTve99vCOeCDe1jVnl80XUuBeALScFY1rBTxPy+umGn+BNGr9uOYAXOPBjthsvgc5OcSJbg==" 346 | }, 347 | "chai-match-pattern": { 348 | "version": "1.3.0", 349 | "resolved": "https://registry.npmjs.org/chai-match-pattern/-/chai-match-pattern-1.3.0.tgz", 350 | "integrity": "sha512-DflyfI8lZ56YuYAZMTBPWghjqFQfqY1IR0ZZXrjlGZJuRvtN0TjJMBpLsrMfc45kjivXJ06iayuP7lzG6ij1bQ==", 351 | "requires": { 352 | "lodash-match-pattern": "^2.3.1" 353 | } 354 | }, 355 | "chai-string": { 356 | "version": "1.5.0", 357 | "resolved": "https://registry.npmjs.org/chai-string/-/chai-string-1.5.0.tgz", 358 | "integrity": "sha512-sydDC3S3pNAQMYwJrs6dQX0oBQ6KfIPuOZ78n7rocW0eJJlsHPh2t3kwW7xfwYA/1Bf6/arGtSUo16rxR2JFlw==" 359 | }, 360 | "chalk": { 361 | "version": "2.4.2", 362 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 363 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 364 | "dev": true, 365 | "requires": { 366 | "ansi-styles": "^3.2.1", 367 | "escape-string-regexp": "^1.0.5", 368 | "supports-color": "^5.3.0" 369 | } 370 | }, 371 | "chardet": { 372 | "version": "0.7.0", 373 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 374 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", 375 | "dev": true 376 | }, 377 | "charenc": { 378 | "version": "0.0.2", 379 | "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", 380 | "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", 381 | "dev": true 382 | }, 383 | "check-error": { 384 | "version": "1.0.2", 385 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", 386 | "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=" 387 | }, 388 | "checkit": { 389 | "version": "0.7.0", 390 | "resolved": "https://registry.npmjs.org/checkit/-/checkit-0.7.0.tgz", 391 | "integrity": "sha512-QgiWB8gMdF/CbmWyuxCk+f2MPQe0G1DfJfHCTbrfZlY3FnJWdnW+EGsRJctcYz/IrXxPYJmjRjdgmKUkyIZl/Q==", 392 | "requires": { 393 | "inherits": "^2.0.1", 394 | "lodash": "^4.0.0" 395 | } 396 | }, 397 | "chokidar": { 398 | "version": "3.5.3", 399 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 400 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 401 | "dev": true, 402 | "requires": { 403 | "anymatch": "~3.1.2", 404 | "braces": "~3.0.2", 405 | "fsevents": "~2.3.2", 406 | "glob-parent": "~5.1.2", 407 | "is-binary-path": "~2.1.0", 408 | "is-glob": "~4.0.1", 409 | "normalize-path": "~3.0.0", 410 | "readdirp": "~3.6.0" 411 | } 412 | }, 413 | "class-transformer": { 414 | "version": "0.5.1", 415 | "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", 416 | "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==", 417 | "dev": true 418 | }, 419 | "cli-cursor": { 420 | "version": "2.1.0", 421 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 422 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 423 | "dev": true, 424 | "requires": { 425 | "restore-cursor": "^2.0.0" 426 | } 427 | }, 428 | "cli-width": { 429 | "version": "2.2.0", 430 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", 431 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", 432 | "dev": true 433 | }, 434 | "cliui": { 435 | "version": "7.0.4", 436 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 437 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 438 | "dev": true, 439 | "requires": { 440 | "string-width": "^4.2.0", 441 | "strip-ansi": "^6.0.0", 442 | "wrap-ansi": "^7.0.0" 443 | }, 444 | "dependencies": { 445 | "ansi-regex": { 446 | "version": "5.0.1", 447 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 448 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 449 | "dev": true 450 | }, 451 | "emoji-regex": { 452 | "version": "8.0.0", 453 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 454 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 455 | "dev": true 456 | }, 457 | "is-fullwidth-code-point": { 458 | "version": "3.0.0", 459 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 460 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 461 | "dev": true 462 | }, 463 | "string-width": { 464 | "version": "4.2.3", 465 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 466 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 467 | "dev": true, 468 | "requires": { 469 | "emoji-regex": "^8.0.0", 470 | "is-fullwidth-code-point": "^3.0.0", 471 | "strip-ansi": "^6.0.1" 472 | } 473 | }, 474 | "strip-ansi": { 475 | "version": "6.0.1", 476 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 477 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 478 | "dev": true, 479 | "requires": { 480 | "ansi-regex": "^5.0.1" 481 | } 482 | } 483 | } 484 | }, 485 | "codeceptjs": { 486 | "version": "3.4.1", 487 | "resolved": "https://registry.npmjs.org/codeceptjs/-/codeceptjs-3.4.1.tgz", 488 | "integrity": "sha512-cwYSNORIe6w/YsiZfujDlya1wqNmOE56f+U+wROQ4Vtcc6OWGGTd8kO5ojwHnVmTzkSjdL6lue4sBziDG219xQ==", 489 | "dev": true, 490 | "requires": { 491 | "@codeceptjs/configure": "^0.8.0", 492 | "@codeceptjs/helper": "^1.0.2", 493 | "@cucumber/cucumber-expressions": "^16", 494 | "@cucumber/gherkin": "^26", 495 | "@cucumber/messages": "^21.0.1", 496 | "acorn": "^7.4.1", 497 | "arrify": "^2.0.1", 498 | "axios": "^1.3.3", 499 | "chai": "^4.3.6", 500 | "chai-deep-match": "^1.2.1", 501 | "chalk": "^4.1.2", 502 | "commander": "^2.20.3", 503 | "cross-spawn": "^7.0.3", 504 | "css-to-xpath": "^0.1.0", 505 | "envinfo": "^7.8.1", 506 | "escape-string-regexp": "^1.0.3", 507 | "figures": "^3.2.0", 508 | "fn-args": "^4.0.0", 509 | "fs-extra": "^8.1.0", 510 | "glob": "^6.0.1", 511 | "inquirer": "^6.5.2", 512 | "joi": "^17.6.0", 513 | "js-beautify": "^1.14.0", 514 | "lodash.clonedeep": "^4.5.0", 515 | "lodash.merge": "^4.6.2", 516 | "mkdirp": "^1.0.4", 517 | "mocha": "^10.2.0", 518 | "mocha-junit-reporter": "^1.23.3", 519 | "ms": "^2.1.3", 520 | "parse-function": "^5.6.4", 521 | "promise-retry": "^1.1.1", 522 | "resq": "^1.10.2", 523 | "sprintf-js": "^1.1.1", 524 | "uuid": "^9.0" 525 | }, 526 | "dependencies": { 527 | "acorn": { 528 | "version": "7.4.1", 529 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 530 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 531 | "dev": true 532 | }, 533 | "ansi-styles": { 534 | "version": "4.3.0", 535 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 536 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 537 | "dev": true, 538 | "requires": { 539 | "color-convert": "^2.0.1" 540 | } 541 | }, 542 | "chai": { 543 | "version": "4.3.7", 544 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", 545 | "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", 546 | "dev": true, 547 | "requires": { 548 | "assertion-error": "^1.1.0", 549 | "check-error": "^1.0.2", 550 | "deep-eql": "^4.1.2", 551 | "get-func-name": "^2.0.0", 552 | "loupe": "^2.3.1", 553 | "pathval": "^1.1.1", 554 | "type-detect": "^4.0.5" 555 | } 556 | }, 557 | "chalk": { 558 | "version": "4.1.2", 559 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 560 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 561 | "dev": true, 562 | "requires": { 563 | "ansi-styles": "^4.1.0", 564 | "supports-color": "^7.1.0" 565 | } 566 | }, 567 | "color-convert": { 568 | "version": "2.0.1", 569 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 570 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 571 | "dev": true, 572 | "requires": { 573 | "color-name": "~1.1.4" 574 | } 575 | }, 576 | "color-name": { 577 | "version": "1.1.4", 578 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 579 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 580 | "dev": true 581 | }, 582 | "cross-spawn": { 583 | "version": "7.0.3", 584 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 585 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 586 | "dev": true, 587 | "requires": { 588 | "path-key": "^3.1.0", 589 | "shebang-command": "^2.0.0", 590 | "which": "^2.0.1" 591 | } 592 | }, 593 | "deep-eql": { 594 | "version": "4.1.3", 595 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", 596 | "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", 597 | "dev": true, 598 | "requires": { 599 | "type-detect": "^4.0.0" 600 | } 601 | }, 602 | "figures": { 603 | "version": "3.2.0", 604 | "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", 605 | "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", 606 | "dev": true, 607 | "requires": { 608 | "escape-string-regexp": "^1.0.5" 609 | } 610 | }, 611 | "glob": { 612 | "version": "6.0.4", 613 | "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", 614 | "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", 615 | "dev": true, 616 | "requires": { 617 | "inflight": "^1.0.4", 618 | "inherits": "2", 619 | "minimatch": "2 || 3", 620 | "once": "^1.3.0", 621 | "path-is-absolute": "^1.0.0" 622 | } 623 | }, 624 | "has-flag": { 625 | "version": "4.0.0", 626 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 627 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 628 | "dev": true 629 | }, 630 | "ms": { 631 | "version": "2.1.3", 632 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 633 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 634 | "dev": true 635 | }, 636 | "path-key": { 637 | "version": "3.1.1", 638 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 639 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 640 | "dev": true 641 | }, 642 | "shebang-command": { 643 | "version": "2.0.0", 644 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 645 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 646 | "dev": true, 647 | "requires": { 648 | "shebang-regex": "^3.0.0" 649 | } 650 | }, 651 | "shebang-regex": { 652 | "version": "3.0.0", 653 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 654 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 655 | "dev": true 656 | }, 657 | "sprintf-js": { 658 | "version": "1.1.2", 659 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", 660 | "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", 661 | "dev": true 662 | }, 663 | "supports-color": { 664 | "version": "7.2.0", 665 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 666 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 667 | "dev": true, 668 | "requires": { 669 | "has-flag": "^4.0.0" 670 | } 671 | }, 672 | "which": { 673 | "version": "2.0.2", 674 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 675 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 676 | "dev": true, 677 | "requires": { 678 | "isexe": "^2.0.0" 679 | } 680 | } 681 | } 682 | }, 683 | "color-convert": { 684 | "version": "1.9.3", 685 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 686 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 687 | "dev": true, 688 | "requires": { 689 | "color-name": "1.1.3" 690 | } 691 | }, 692 | "color-name": { 693 | "version": "1.1.3", 694 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 695 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 696 | "dev": true 697 | }, 698 | "combined-stream": { 699 | "version": "1.0.8", 700 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 701 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 702 | "dev": true, 703 | "requires": { 704 | "delayed-stream": "~1.0.0" 705 | } 706 | }, 707 | "commander": { 708 | "version": "2.20.3", 709 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 710 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 711 | "dev": true 712 | }, 713 | "concat-map": { 714 | "version": "0.0.1", 715 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 716 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 717 | "dev": true 718 | }, 719 | "config-chain": { 720 | "version": "1.1.13", 721 | "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", 722 | "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", 723 | "dev": true, 724 | "requires": { 725 | "ini": "^1.3.4", 726 | "proto-list": "~1.2.1" 727 | } 728 | }, 729 | "confusing-browser-globals": { 730 | "version": "1.0.9", 731 | "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", 732 | "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", 733 | "dev": true 734 | }, 735 | "contains-path": { 736 | "version": "0.1.0", 737 | "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", 738 | "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", 739 | "dev": true 740 | }, 741 | "cross-spawn": { 742 | "version": "6.0.5", 743 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 744 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 745 | "dev": true, 746 | "requires": { 747 | "nice-try": "^1.0.4", 748 | "path-key": "^2.0.1", 749 | "semver": "^5.5.0", 750 | "shebang-command": "^1.2.0", 751 | "which": "^1.2.9" 752 | } 753 | }, 754 | "crypt": { 755 | "version": "0.0.2", 756 | "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", 757 | "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", 758 | "dev": true 759 | }, 760 | "css-to-xpath": { 761 | "version": "0.1.0", 762 | "resolved": "https://registry.npmjs.org/css-to-xpath/-/css-to-xpath-0.1.0.tgz", 763 | "integrity": "sha512-izIAc99mgThUsc6DkUIC0nfy3whEX4qhZ4TrRhundaRUGg4TDjqE5aMJ8YWAohH1UZcqrkYNuNvD8O0JFaCr0g==", 764 | "dev": true, 765 | "requires": { 766 | "bo-selector": "0.0.10", 767 | "xpath-builder": "0.0.7" 768 | } 769 | }, 770 | "debug": { 771 | "version": "4.1.1", 772 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 773 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 774 | "dev": true, 775 | "requires": { 776 | "ms": "^2.1.1" 777 | } 778 | }, 779 | "decamelize": { 780 | "version": "4.0.0", 781 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 782 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 783 | "dev": true 784 | }, 785 | "deep-eql": { 786 | "version": "3.0.1", 787 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", 788 | "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", 789 | "requires": { 790 | "type-detect": "^4.0.0" 791 | } 792 | }, 793 | "deep-is": { 794 | "version": "0.1.3", 795 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 796 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 797 | "dev": true 798 | }, 799 | "deep-keys": { 800 | "version": "0.5.0", 801 | "resolved": "https://registry.npmjs.org/deep-keys/-/deep-keys-0.5.0.tgz", 802 | "integrity": "sha512-/80a4+9lbLj1hRxG0ULtEOGtbM4hN/5u1Vu6kc6ZkYePUq+ZhtboRIsWTVKplc2ET1xY2FMVwhyt46w9vPf9Rg==", 803 | "dev": true 804 | }, 805 | "define-properties": { 806 | "version": "1.1.3", 807 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 808 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 809 | "dev": true, 810 | "requires": { 811 | "object-keys": "^1.0.12" 812 | } 813 | }, 814 | "delayed-stream": { 815 | "version": "1.0.0", 816 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 817 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 818 | "dev": true 819 | }, 820 | "diff": { 821 | "version": "5.0.0", 822 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", 823 | "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", 824 | "dev": true 825 | }, 826 | "doctrine": { 827 | "version": "3.0.0", 828 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 829 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 830 | "dev": true, 831 | "requires": { 832 | "esutils": "^2.0.2" 833 | } 834 | }, 835 | "editorconfig": { 836 | "version": "0.15.3", 837 | "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", 838 | "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", 839 | "dev": true, 840 | "requires": { 841 | "commander": "^2.19.0", 842 | "lru-cache": "^4.1.5", 843 | "semver": "^5.6.0", 844 | "sigmund": "^1.0.1" 845 | } 846 | }, 847 | "emoji-regex": { 848 | "version": "7.0.3", 849 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 850 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 851 | "dev": true 852 | }, 853 | "envinfo": { 854 | "version": "7.8.1", 855 | "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", 856 | "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", 857 | "dev": true 858 | }, 859 | "err-code": { 860 | "version": "1.1.2", 861 | "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", 862 | "integrity": "sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==", 863 | "dev": true 864 | }, 865 | "error-ex": { 866 | "version": "1.3.2", 867 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 868 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 869 | "dev": true, 870 | "requires": { 871 | "is-arrayish": "^0.2.1" 872 | } 873 | }, 874 | "es-abstract": { 875 | "version": "1.13.0", 876 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", 877 | "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", 878 | "dev": true, 879 | "requires": { 880 | "es-to-primitive": "^1.2.0", 881 | "function-bind": "^1.1.1", 882 | "has": "^1.0.3", 883 | "is-callable": "^1.1.4", 884 | "is-regex": "^1.0.4", 885 | "object-keys": "^1.0.12" 886 | } 887 | }, 888 | "es-to-primitive": { 889 | "version": "1.2.0", 890 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", 891 | "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", 892 | "dev": true, 893 | "requires": { 894 | "is-callable": "^1.1.4", 895 | "is-date-object": "^1.0.1", 896 | "is-symbol": "^1.0.2" 897 | } 898 | }, 899 | "escalade": { 900 | "version": "3.1.1", 901 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 902 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 903 | "dev": true 904 | }, 905 | "escape-string-regexp": { 906 | "version": "1.0.5", 907 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 908 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 909 | "dev": true 910 | }, 911 | "eslint": { 912 | "version": "5.16.0", 913 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", 914 | "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", 915 | "dev": true, 916 | "requires": { 917 | "@babel/code-frame": "^7.0.0", 918 | "ajv": "^6.9.1", 919 | "chalk": "^2.1.0", 920 | "cross-spawn": "^6.0.5", 921 | "debug": "^4.0.1", 922 | "doctrine": "^3.0.0", 923 | "eslint-scope": "^4.0.3", 924 | "eslint-utils": "^1.3.1", 925 | "eslint-visitor-keys": "^1.0.0", 926 | "espree": "^5.0.1", 927 | "esquery": "^1.0.1", 928 | "esutils": "^2.0.2", 929 | "file-entry-cache": "^5.0.1", 930 | "functional-red-black-tree": "^1.0.1", 931 | "glob": "^7.1.2", 932 | "globals": "^11.7.0", 933 | "ignore": "^4.0.6", 934 | "import-fresh": "^3.0.0", 935 | "imurmurhash": "^0.1.4", 936 | "inquirer": "^6.2.2", 937 | "js-yaml": "^3.13.0", 938 | "json-stable-stringify-without-jsonify": "^1.0.1", 939 | "levn": "^0.3.0", 940 | "lodash": "^4.17.11", 941 | "minimatch": "^3.0.4", 942 | "mkdirp": "^0.5.1", 943 | "natural-compare": "^1.4.0", 944 | "optionator": "^0.8.2", 945 | "path-is-inside": "^1.0.2", 946 | "progress": "^2.0.0", 947 | "regexpp": "^2.0.1", 948 | "semver": "^5.5.1", 949 | "strip-ansi": "^4.0.0", 950 | "strip-json-comments": "^2.0.1", 951 | "table": "^5.2.3", 952 | "text-table": "^0.2.0" 953 | }, 954 | "dependencies": { 955 | "minimist": { 956 | "version": "1.2.8", 957 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 958 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 959 | "dev": true 960 | }, 961 | "mkdirp": { 962 | "version": "0.5.6", 963 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", 964 | "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", 965 | "dev": true, 966 | "requires": { 967 | "minimist": "^1.2.6" 968 | } 969 | } 970 | } 971 | }, 972 | "eslint-config-airbnb-base": { 973 | "version": "13.2.0", 974 | "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.2.0.tgz", 975 | "integrity": "sha512-1mg/7eoB4AUeB0X1c/ho4vb2gYkNH8Trr/EgCT/aGmKhhG+F6vF5s8+iRBlWAzFIAphxIdp3YfEKgEl0f9Xg+w==", 976 | "dev": true, 977 | "requires": { 978 | "confusing-browser-globals": "^1.0.5", 979 | "object.assign": "^4.1.0", 980 | "object.entries": "^1.1.0" 981 | } 982 | }, 983 | "eslint-import-resolver-node": { 984 | "version": "0.3.2", 985 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", 986 | "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", 987 | "dev": true, 988 | "requires": { 989 | "debug": "^2.6.9", 990 | "resolve": "^1.5.0" 991 | }, 992 | "dependencies": { 993 | "debug": { 994 | "version": "2.6.9", 995 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 996 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 997 | "dev": true, 998 | "requires": { 999 | "ms": "2.0.0" 1000 | } 1001 | }, 1002 | "ms": { 1003 | "version": "2.0.0", 1004 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1005 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1006 | "dev": true 1007 | } 1008 | } 1009 | }, 1010 | "eslint-module-utils": { 1011 | "version": "2.4.0", 1012 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz", 1013 | "integrity": "sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw==", 1014 | "dev": true, 1015 | "requires": { 1016 | "debug": "^2.6.8", 1017 | "pkg-dir": "^2.0.0" 1018 | }, 1019 | "dependencies": { 1020 | "debug": { 1021 | "version": "2.6.9", 1022 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1023 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1024 | "dev": true, 1025 | "requires": { 1026 | "ms": "2.0.0" 1027 | } 1028 | }, 1029 | "ms": { 1030 | "version": "2.0.0", 1031 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1032 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1033 | "dev": true 1034 | } 1035 | } 1036 | }, 1037 | "eslint-plugin-codeceptjs": { 1038 | "version": "1.3.0", 1039 | "resolved": "https://registry.npmjs.org/eslint-plugin-codeceptjs/-/eslint-plugin-codeceptjs-1.3.0.tgz", 1040 | "integrity": "sha512-KdRRVJxzE1Ts9SNMKn1Zt3clA1D+hl49zugiq0rncuAp0SCUlkLEacxf0nR16q4KOI1t+5kF+J9goF4iN/m+GA==", 1041 | "dev": true, 1042 | "requires": { 1043 | "requireindex": "~1.1.0" 1044 | } 1045 | }, 1046 | "eslint-plugin-import": { 1047 | "version": "2.17.3", 1048 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.17.3.tgz", 1049 | "integrity": "sha512-qeVf/UwXFJbeyLbxuY8RgqDyEKCkqV7YC+E5S5uOjAp4tOc8zj01JP3ucoBM8JcEqd1qRasJSg6LLlisirfy0Q==", 1050 | "dev": true, 1051 | "requires": { 1052 | "array-includes": "^3.0.3", 1053 | "contains-path": "^0.1.0", 1054 | "debug": "^2.6.9", 1055 | "doctrine": "1.5.0", 1056 | "eslint-import-resolver-node": "^0.3.2", 1057 | "eslint-module-utils": "^2.4.0", 1058 | "has": "^1.0.3", 1059 | "lodash": "^4.17.11", 1060 | "minimatch": "^3.0.4", 1061 | "read-pkg-up": "^2.0.0", 1062 | "resolve": "^1.11.0" 1063 | }, 1064 | "dependencies": { 1065 | "debug": { 1066 | "version": "2.6.9", 1067 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1068 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1069 | "dev": true, 1070 | "requires": { 1071 | "ms": "2.0.0" 1072 | } 1073 | }, 1074 | "doctrine": { 1075 | "version": "1.5.0", 1076 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", 1077 | "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", 1078 | "dev": true, 1079 | "requires": { 1080 | "esutils": "^2.0.2", 1081 | "isarray": "^1.0.0" 1082 | } 1083 | }, 1084 | "ms": { 1085 | "version": "2.0.0", 1086 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1087 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1088 | "dev": true 1089 | } 1090 | } 1091 | }, 1092 | "eslint-plugin-varspacing": { 1093 | "version": "1.2.1", 1094 | "resolved": "https://registry.npmjs.org/eslint-plugin-varspacing/-/eslint-plugin-varspacing-1.2.1.tgz", 1095 | "integrity": "sha512-R6BrarA2224ENix3v3OlwPZziI0+zSdqTeXfHWh0FFd3JC+b37gsBiR6UaL5M3rOnEQjL9aBMuTwcccfuQnpjQ==", 1096 | "dev": true 1097 | }, 1098 | "eslint-scope": { 1099 | "version": "4.0.3", 1100 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", 1101 | "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", 1102 | "dev": true, 1103 | "requires": { 1104 | "esrecurse": "^4.1.0", 1105 | "estraverse": "^4.1.1" 1106 | } 1107 | }, 1108 | "eslint-utils": { 1109 | "version": "1.4.3", 1110 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", 1111 | "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", 1112 | "dev": true, 1113 | "requires": { 1114 | "eslint-visitor-keys": "^1.1.0" 1115 | } 1116 | }, 1117 | "eslint-visitor-keys": { 1118 | "version": "1.1.0", 1119 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", 1120 | "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", 1121 | "dev": true 1122 | }, 1123 | "espree": { 1124 | "version": "5.0.1", 1125 | "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", 1126 | "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", 1127 | "dev": true, 1128 | "requires": { 1129 | "acorn": "^6.0.7", 1130 | "acorn-jsx": "^5.0.0", 1131 | "eslint-visitor-keys": "^1.0.0" 1132 | } 1133 | }, 1134 | "esprima": { 1135 | "version": "4.0.1", 1136 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1137 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 1138 | "dev": true 1139 | }, 1140 | "esquery": { 1141 | "version": "1.0.1", 1142 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", 1143 | "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", 1144 | "dev": true, 1145 | "requires": { 1146 | "estraverse": "^4.0.0" 1147 | } 1148 | }, 1149 | "esrecurse": { 1150 | "version": "4.2.1", 1151 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", 1152 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", 1153 | "dev": true, 1154 | "requires": { 1155 | "estraverse": "^4.1.0" 1156 | } 1157 | }, 1158 | "estraverse": { 1159 | "version": "4.3.0", 1160 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 1161 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 1162 | "dev": true 1163 | }, 1164 | "esutils": { 1165 | "version": "2.0.2", 1166 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 1167 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 1168 | "dev": true 1169 | }, 1170 | "external-editor": { 1171 | "version": "3.1.0", 1172 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 1173 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 1174 | "dev": true, 1175 | "requires": { 1176 | "chardet": "^0.7.0", 1177 | "iconv-lite": "^0.4.24", 1178 | "tmp": "^0.0.33" 1179 | } 1180 | }, 1181 | "fast-deep-equal": { 1182 | "version": "3.1.1", 1183 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", 1184 | "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" 1185 | }, 1186 | "fast-json-stable-stringify": { 1187 | "version": "2.1.0", 1188 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1189 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 1190 | }, 1191 | "fast-levenshtein": { 1192 | "version": "2.0.6", 1193 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1194 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 1195 | "dev": true 1196 | }, 1197 | "fclone": { 1198 | "version": "1.0.11", 1199 | "resolved": "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz", 1200 | "integrity": "sha1-EOhdo4v+p/xZk0HClu4ddyZu5kA=" 1201 | }, 1202 | "figures": { 1203 | "version": "2.0.0", 1204 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", 1205 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", 1206 | "dev": true, 1207 | "requires": { 1208 | "escape-string-regexp": "^1.0.5" 1209 | } 1210 | }, 1211 | "file-entry-cache": { 1212 | "version": "5.0.1", 1213 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", 1214 | "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", 1215 | "dev": true, 1216 | "requires": { 1217 | "flat-cache": "^2.0.1" 1218 | } 1219 | }, 1220 | "fill-range": { 1221 | "version": "7.0.1", 1222 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1223 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1224 | "dev": true, 1225 | "requires": { 1226 | "to-regex-range": "^5.0.1" 1227 | } 1228 | }, 1229 | "find-up": { 1230 | "version": "2.1.0", 1231 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 1232 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 1233 | "dev": true, 1234 | "requires": { 1235 | "locate-path": "^2.0.0" 1236 | } 1237 | }, 1238 | "flat": { 1239 | "version": "5.0.2", 1240 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 1241 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 1242 | "dev": true 1243 | }, 1244 | "flat-cache": { 1245 | "version": "2.0.1", 1246 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", 1247 | "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", 1248 | "dev": true, 1249 | "requires": { 1250 | "flatted": "^2.0.0", 1251 | "rimraf": "2.6.3", 1252 | "write": "1.0.3" 1253 | } 1254 | }, 1255 | "flatted": { 1256 | "version": "2.0.1", 1257 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", 1258 | "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", 1259 | "dev": true 1260 | }, 1261 | "fn-args": { 1262 | "version": "4.0.0", 1263 | "resolved": "https://registry.npmjs.org/fn-args/-/fn-args-4.0.0.tgz", 1264 | "integrity": "sha512-M9XSagc92ejQhi+7kjpFPAO59xKbGRsbOg/9dfwSj84DfzB0pj+Q81DVD1pKr084Xf2oICwUNI0pCvGORmD9zg==", 1265 | "dev": true 1266 | }, 1267 | "follow-redirects": { 1268 | "version": "1.15.2", 1269 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 1270 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", 1271 | "dev": true 1272 | }, 1273 | "form-data": { 1274 | "version": "4.0.0", 1275 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 1276 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 1277 | "dev": true, 1278 | "requires": { 1279 | "asynckit": "^0.4.0", 1280 | "combined-stream": "^1.0.8", 1281 | "mime-types": "^2.1.12" 1282 | } 1283 | }, 1284 | "fs-extra": { 1285 | "version": "8.1.0", 1286 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 1287 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 1288 | "dev": true, 1289 | "requires": { 1290 | "graceful-fs": "^4.2.0", 1291 | "jsonfile": "^4.0.0", 1292 | "universalify": "^0.1.0" 1293 | }, 1294 | "dependencies": { 1295 | "graceful-fs": { 1296 | "version": "4.2.10", 1297 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", 1298 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", 1299 | "dev": true 1300 | } 1301 | } 1302 | }, 1303 | "fs.realpath": { 1304 | "version": "1.0.0", 1305 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1306 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1307 | "dev": true 1308 | }, 1309 | "fsevents": { 1310 | "version": "2.3.2", 1311 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1312 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1313 | "dev": true, 1314 | "optional": true 1315 | }, 1316 | "function-bind": { 1317 | "version": "1.1.1", 1318 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1319 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1320 | "dev": true 1321 | }, 1322 | "functional-red-black-tree": { 1323 | "version": "1.0.1", 1324 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 1325 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 1326 | "dev": true 1327 | }, 1328 | "get-caller-file": { 1329 | "version": "2.0.5", 1330 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1331 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1332 | "dev": true 1333 | }, 1334 | "get-func-name": { 1335 | "version": "2.0.0", 1336 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", 1337 | "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=" 1338 | }, 1339 | "glob": { 1340 | "version": "7.1.6", 1341 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1342 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1343 | "dev": true, 1344 | "requires": { 1345 | "fs.realpath": "^1.0.0", 1346 | "inflight": "^1.0.4", 1347 | "inherits": "2", 1348 | "minimatch": "^3.0.4", 1349 | "once": "^1.3.0", 1350 | "path-is-absolute": "^1.0.0" 1351 | } 1352 | }, 1353 | "glob-parent": { 1354 | "version": "5.1.2", 1355 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1356 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1357 | "dev": true, 1358 | "requires": { 1359 | "is-glob": "^4.0.1" 1360 | } 1361 | }, 1362 | "globals": { 1363 | "version": "11.12.0", 1364 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1365 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1366 | "dev": true 1367 | }, 1368 | "graceful-fs": { 1369 | "version": "4.1.15", 1370 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", 1371 | "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", 1372 | "dev": true 1373 | }, 1374 | "has": { 1375 | "version": "1.0.3", 1376 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1377 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1378 | "dev": true, 1379 | "requires": { 1380 | "function-bind": "^1.1.1" 1381 | } 1382 | }, 1383 | "has-flag": { 1384 | "version": "3.0.0", 1385 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1386 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1387 | "dev": true 1388 | }, 1389 | "has-symbols": { 1390 | "version": "1.0.0", 1391 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", 1392 | "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", 1393 | "dev": true 1394 | }, 1395 | "he": { 1396 | "version": "1.2.0", 1397 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1398 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" 1399 | }, 1400 | "hosted-git-info": { 1401 | "version": "2.8.9", 1402 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", 1403 | "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", 1404 | "dev": true 1405 | }, 1406 | "iconv-lite": { 1407 | "version": "0.4.24", 1408 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1409 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1410 | "dev": true, 1411 | "requires": { 1412 | "safer-buffer": ">= 2.1.2 < 3" 1413 | } 1414 | }, 1415 | "ignore": { 1416 | "version": "4.0.6", 1417 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 1418 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 1419 | "dev": true 1420 | }, 1421 | "import-fresh": { 1422 | "version": "3.2.1", 1423 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", 1424 | "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", 1425 | "dev": true, 1426 | "requires": { 1427 | "parent-module": "^1.0.0", 1428 | "resolve-from": "^4.0.0" 1429 | } 1430 | }, 1431 | "imurmurhash": { 1432 | "version": "0.1.4", 1433 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1434 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1435 | "dev": true 1436 | }, 1437 | "inflight": { 1438 | "version": "1.0.6", 1439 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1440 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1441 | "dev": true, 1442 | "requires": { 1443 | "once": "^1.3.0", 1444 | "wrappy": "1" 1445 | } 1446 | }, 1447 | "inherits": { 1448 | "version": "2.0.4", 1449 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1450 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1451 | }, 1452 | "ini": { 1453 | "version": "1.3.8", 1454 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 1455 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 1456 | "dev": true 1457 | }, 1458 | "inquirer": { 1459 | "version": "6.5.2", 1460 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", 1461 | "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", 1462 | "dev": true, 1463 | "requires": { 1464 | "ansi-escapes": "^3.2.0", 1465 | "chalk": "^2.4.2", 1466 | "cli-cursor": "^2.1.0", 1467 | "cli-width": "^2.0.0", 1468 | "external-editor": "^3.0.3", 1469 | "figures": "^2.0.0", 1470 | "lodash": "^4.17.12", 1471 | "mute-stream": "0.0.7", 1472 | "run-async": "^2.2.0", 1473 | "rxjs": "^6.4.0", 1474 | "string-width": "^2.1.0", 1475 | "strip-ansi": "^5.1.0", 1476 | "through": "^2.3.6" 1477 | }, 1478 | "dependencies": { 1479 | "ansi-regex": { 1480 | "version": "4.1.1", 1481 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", 1482 | "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", 1483 | "dev": true 1484 | }, 1485 | "strip-ansi": { 1486 | "version": "5.2.0", 1487 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1488 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1489 | "dev": true, 1490 | "requires": { 1491 | "ansi-regex": "^4.1.0" 1492 | } 1493 | } 1494 | } 1495 | }, 1496 | "is-arrayish": { 1497 | "version": "0.2.1", 1498 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1499 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1500 | "dev": true 1501 | }, 1502 | "is-binary-path": { 1503 | "version": "2.1.0", 1504 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1505 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1506 | "dev": true, 1507 | "requires": { 1508 | "binary-extensions": "^2.0.0" 1509 | } 1510 | }, 1511 | "is-buffer": { 1512 | "version": "1.1.6", 1513 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1514 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 1515 | "dev": true 1516 | }, 1517 | "is-callable": { 1518 | "version": "1.1.4", 1519 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", 1520 | "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", 1521 | "dev": true 1522 | }, 1523 | "is-date-object": { 1524 | "version": "1.0.1", 1525 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", 1526 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", 1527 | "dev": true 1528 | }, 1529 | "is-extglob": { 1530 | "version": "2.1.1", 1531 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1532 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1533 | "dev": true 1534 | }, 1535 | "is-fullwidth-code-point": { 1536 | "version": "2.0.0", 1537 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1538 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1539 | "dev": true 1540 | }, 1541 | "is-glob": { 1542 | "version": "4.0.3", 1543 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1544 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1545 | "dev": true, 1546 | "requires": { 1547 | "is-extglob": "^2.1.1" 1548 | } 1549 | }, 1550 | "is-number": { 1551 | "version": "7.0.0", 1552 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1553 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1554 | "dev": true 1555 | }, 1556 | "is-plain-obj": { 1557 | "version": "2.1.0", 1558 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 1559 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 1560 | "dev": true 1561 | }, 1562 | "is-promise": { 1563 | "version": "2.1.0", 1564 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 1565 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", 1566 | "dev": true 1567 | }, 1568 | "is-regex": { 1569 | "version": "1.0.4", 1570 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", 1571 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", 1572 | "dev": true, 1573 | "requires": { 1574 | "has": "^1.0.1" 1575 | } 1576 | }, 1577 | "is-symbol": { 1578 | "version": "1.0.2", 1579 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", 1580 | "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", 1581 | "dev": true, 1582 | "requires": { 1583 | "has-symbols": "^1.0.0" 1584 | } 1585 | }, 1586 | "is-unicode-supported": { 1587 | "version": "0.1.0", 1588 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 1589 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 1590 | "dev": true 1591 | }, 1592 | "isarray": { 1593 | "version": "1.0.0", 1594 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1595 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1596 | "dev": true 1597 | }, 1598 | "isexe": { 1599 | "version": "2.0.0", 1600 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1601 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1602 | "dev": true 1603 | }, 1604 | "joi": { 1605 | "version": "17.8.1", 1606 | "resolved": "https://registry.npmjs.org/joi/-/joi-17.8.1.tgz", 1607 | "integrity": "sha512-Zoafe6E2kQ+hkkJQSBnOxA8beb2LF33keCxZP3vSy7qTHj9/2GAEQ9KLwfe+PR35WvspwNz0jWajDIHLnCKfpg==", 1608 | "dev": true, 1609 | "requires": { 1610 | "@hapi/address": "^5.1.0", 1611 | "@hapi/formula": "^3.0.2", 1612 | "@hapi/hoek": "^11.0.2", 1613 | "@hapi/pinpoint": "^2.0.1", 1614 | "@hapi/tlds": "^1.0.1", 1615 | "@hapi/topo": "^6.0.1" 1616 | } 1617 | }, 1618 | "js-beautify": { 1619 | "version": "1.14.7", 1620 | "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.7.tgz", 1621 | "integrity": "sha512-5SOX1KXPFKx+5f6ZrPsIPEY7NwKeQz47n3jm2i+XeHx9MoRsfQenlOP13FQhWvg8JRS0+XLO6XYUQ2GX+q+T9A==", 1622 | "dev": true, 1623 | "requires": { 1624 | "config-chain": "^1.1.13", 1625 | "editorconfig": "^0.15.3", 1626 | "glob": "^8.0.3", 1627 | "nopt": "^6.0.0" 1628 | }, 1629 | "dependencies": { 1630 | "brace-expansion": { 1631 | "version": "2.0.1", 1632 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1633 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1634 | "dev": true, 1635 | "requires": { 1636 | "balanced-match": "^1.0.0" 1637 | } 1638 | }, 1639 | "glob": { 1640 | "version": "8.1.0", 1641 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", 1642 | "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", 1643 | "dev": true, 1644 | "requires": { 1645 | "fs.realpath": "^1.0.0", 1646 | "inflight": "^1.0.4", 1647 | "inherits": "2", 1648 | "minimatch": "^5.0.1", 1649 | "once": "^1.3.0" 1650 | } 1651 | }, 1652 | "minimatch": { 1653 | "version": "5.1.6", 1654 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 1655 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 1656 | "dev": true, 1657 | "requires": { 1658 | "brace-expansion": "^2.0.1" 1659 | } 1660 | } 1661 | } 1662 | }, 1663 | "js-tokens": { 1664 | "version": "4.0.0", 1665 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1666 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1667 | "dev": true 1668 | }, 1669 | "js-yaml": { 1670 | "version": "3.13.1", 1671 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 1672 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 1673 | "dev": true, 1674 | "requires": { 1675 | "argparse": "^1.0.7", 1676 | "esprima": "^4.0.0" 1677 | } 1678 | }, 1679 | "json-schema-traverse": { 1680 | "version": "0.4.1", 1681 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1682 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 1683 | }, 1684 | "json-stable-stringify-without-jsonify": { 1685 | "version": "1.0.1", 1686 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1687 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1688 | "dev": true 1689 | }, 1690 | "jsonfile": { 1691 | "version": "4.0.0", 1692 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 1693 | "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", 1694 | "dev": true, 1695 | "requires": { 1696 | "graceful-fs": "^4.1.6" 1697 | } 1698 | }, 1699 | "jsonpointer.js": { 1700 | "version": "0.4.0", 1701 | "resolved": "https://registry.npmjs.org/jsonpointer.js/-/jsonpointer.js-0.4.0.tgz", 1702 | "integrity": "sha1-ACyxI/dnqv3rAZYTLOXE+ZQcyro=" 1703 | }, 1704 | "levn": { 1705 | "version": "0.3.0", 1706 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 1707 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 1708 | "dev": true, 1709 | "requires": { 1710 | "prelude-ls": "~1.1.2", 1711 | "type-check": "~0.3.2" 1712 | } 1713 | }, 1714 | "load-json-file": { 1715 | "version": "2.0.0", 1716 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", 1717 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", 1718 | "dev": true, 1719 | "requires": { 1720 | "graceful-fs": "^4.1.2", 1721 | "parse-json": "^2.2.0", 1722 | "pify": "^2.0.0", 1723 | "strip-bom": "^3.0.0" 1724 | } 1725 | }, 1726 | "locate-path": { 1727 | "version": "2.0.0", 1728 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 1729 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 1730 | "dev": true, 1731 | "requires": { 1732 | "p-locate": "^2.0.0", 1733 | "path-exists": "^3.0.0" 1734 | } 1735 | }, 1736 | "lodash": { 1737 | "version": "4.17.21", 1738 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1739 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 1740 | }, 1741 | "lodash-checkit": { 1742 | "version": "2.4.1", 1743 | "resolved": "https://registry.npmjs.org/lodash-checkit/-/lodash-checkit-2.4.1.tgz", 1744 | "integrity": "sha512-OAg5CqY04/dnsO8izxXqlleuj7z/dOk6yV0pm0TVtRaUwG5v2PGw4XWSIG/dLK0UWYk7g0/TCk8OCf50oVwv6w==", 1745 | "requires": { 1746 | "checkit": "^0.7.0", 1747 | "lodash": "^4.17.21" 1748 | } 1749 | }, 1750 | "lodash-match-pattern": { 1751 | "version": "2.3.1", 1752 | "resolved": "https://registry.npmjs.org/lodash-match-pattern/-/lodash-match-pattern-2.3.1.tgz", 1753 | "integrity": "sha512-dpltpxoTqs94gGFm24VwHDyFh3/eNtqNjKrlnifIBLtnzYq0nAlNM6BIeLdGAfCWC/BwNtiLL1eKZTQpLVnY6A==", 1754 | "requires": { 1755 | "chalk": "^4.1.0", 1756 | "he": "^1.2.0", 1757 | "lodash-checkit": "^2.4.1" 1758 | }, 1759 | "dependencies": { 1760 | "ansi-styles": { 1761 | "version": "4.3.0", 1762 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1763 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1764 | "requires": { 1765 | "color-convert": "^2.0.1" 1766 | } 1767 | }, 1768 | "chalk": { 1769 | "version": "4.1.2", 1770 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1771 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1772 | "requires": { 1773 | "ansi-styles": "^4.1.0", 1774 | "supports-color": "^7.1.0" 1775 | } 1776 | }, 1777 | "color-convert": { 1778 | "version": "2.0.1", 1779 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1780 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1781 | "requires": { 1782 | "color-name": "~1.1.4" 1783 | } 1784 | }, 1785 | "color-name": { 1786 | "version": "1.1.4", 1787 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1788 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 1789 | }, 1790 | "has-flag": { 1791 | "version": "4.0.0", 1792 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1793 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 1794 | }, 1795 | "supports-color": { 1796 | "version": "7.2.0", 1797 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1798 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1799 | "requires": { 1800 | "has-flag": "^4.0.0" 1801 | } 1802 | } 1803 | } 1804 | }, 1805 | "lodash-pickdeep": { 1806 | "version": "1.0.2", 1807 | "resolved": "https://registry.npmjs.org/lodash-pickdeep/-/lodash-pickdeep-1.0.2.tgz", 1808 | "integrity": "sha512-0m1nWXI3ya0WxyD4EhgH/6uxOhPRLMTxxwGXaawntf0mf7NjCqoDtMLkJJkr+Fwbi1Dr1nOKkbbQQpdnGa3aKw==", 1809 | "dev": true, 1810 | "requires": { 1811 | "lodash": ">= 3.7.0" 1812 | } 1813 | }, 1814 | "lodash.clonedeep": { 1815 | "version": "4.5.0", 1816 | "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", 1817 | "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", 1818 | "dev": true 1819 | }, 1820 | "lodash.merge": { 1821 | "version": "4.6.2", 1822 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 1823 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 1824 | "dev": true 1825 | }, 1826 | "lodash.mergewith": { 1827 | "version": "4.6.2", 1828 | "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", 1829 | "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", 1830 | "dev": true 1831 | }, 1832 | "log-symbols": { 1833 | "version": "4.1.0", 1834 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 1835 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 1836 | "dev": true, 1837 | "requires": { 1838 | "chalk": "^4.1.0", 1839 | "is-unicode-supported": "^0.1.0" 1840 | }, 1841 | "dependencies": { 1842 | "ansi-styles": { 1843 | "version": "4.3.0", 1844 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1845 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1846 | "dev": true, 1847 | "requires": { 1848 | "color-convert": "^2.0.1" 1849 | } 1850 | }, 1851 | "chalk": { 1852 | "version": "4.1.2", 1853 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1854 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1855 | "dev": true, 1856 | "requires": { 1857 | "ansi-styles": "^4.1.0", 1858 | "supports-color": "^7.1.0" 1859 | } 1860 | }, 1861 | "color-convert": { 1862 | "version": "2.0.1", 1863 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1864 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1865 | "dev": true, 1866 | "requires": { 1867 | "color-name": "~1.1.4" 1868 | } 1869 | }, 1870 | "color-name": { 1871 | "version": "1.1.4", 1872 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1873 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1874 | "dev": true 1875 | }, 1876 | "has-flag": { 1877 | "version": "4.0.0", 1878 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1879 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1880 | "dev": true 1881 | }, 1882 | "supports-color": { 1883 | "version": "7.2.0", 1884 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1885 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1886 | "dev": true, 1887 | "requires": { 1888 | "has-flag": "^4.0.0" 1889 | } 1890 | } 1891 | } 1892 | }, 1893 | "loupe": { 1894 | "version": "2.3.6", 1895 | "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", 1896 | "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", 1897 | "dev": true, 1898 | "requires": { 1899 | "get-func-name": "^2.0.0" 1900 | } 1901 | }, 1902 | "lru-cache": { 1903 | "version": "4.1.5", 1904 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 1905 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 1906 | "dev": true, 1907 | "requires": { 1908 | "pseudomap": "^1.0.2", 1909 | "yallist": "^2.1.2" 1910 | } 1911 | }, 1912 | "md5": { 1913 | "version": "2.3.0", 1914 | "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", 1915 | "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", 1916 | "dev": true, 1917 | "requires": { 1918 | "charenc": "0.0.2", 1919 | "crypt": "0.0.2", 1920 | "is-buffer": "~1.1.6" 1921 | } 1922 | }, 1923 | "mime-db": { 1924 | "version": "1.52.0", 1925 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1926 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 1927 | "dev": true 1928 | }, 1929 | "mime-types": { 1930 | "version": "2.1.35", 1931 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1932 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1933 | "dev": true, 1934 | "requires": { 1935 | "mime-db": "1.52.0" 1936 | } 1937 | }, 1938 | "mimic-fn": { 1939 | "version": "1.2.0", 1940 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 1941 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", 1942 | "dev": true 1943 | }, 1944 | "minimatch": { 1945 | "version": "3.0.4", 1946 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1947 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1948 | "dev": true, 1949 | "requires": { 1950 | "brace-expansion": "^1.1.7" 1951 | } 1952 | }, 1953 | "mkdirp": { 1954 | "version": "1.0.4", 1955 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 1956 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 1957 | "dev": true 1958 | }, 1959 | "mocha": { 1960 | "version": "10.2.0", 1961 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", 1962 | "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", 1963 | "dev": true, 1964 | "requires": { 1965 | "ansi-colors": "4.1.1", 1966 | "browser-stdout": "1.3.1", 1967 | "chokidar": "3.5.3", 1968 | "debug": "4.3.4", 1969 | "diff": "5.0.0", 1970 | "escape-string-regexp": "4.0.0", 1971 | "find-up": "5.0.0", 1972 | "glob": "7.2.0", 1973 | "he": "1.2.0", 1974 | "js-yaml": "4.1.0", 1975 | "log-symbols": "4.1.0", 1976 | "minimatch": "5.0.1", 1977 | "ms": "2.1.3", 1978 | "nanoid": "3.3.3", 1979 | "serialize-javascript": "6.0.0", 1980 | "strip-json-comments": "3.1.1", 1981 | "supports-color": "8.1.1", 1982 | "workerpool": "6.2.1", 1983 | "yargs": "16.2.0", 1984 | "yargs-parser": "20.2.4", 1985 | "yargs-unparser": "2.0.0" 1986 | }, 1987 | "dependencies": { 1988 | "argparse": { 1989 | "version": "2.0.1", 1990 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 1991 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 1992 | "dev": true 1993 | }, 1994 | "debug": { 1995 | "version": "4.3.4", 1996 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1997 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1998 | "dev": true, 1999 | "requires": { 2000 | "ms": "2.1.2" 2001 | }, 2002 | "dependencies": { 2003 | "ms": { 2004 | "version": "2.1.2", 2005 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2006 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2007 | "dev": true 2008 | } 2009 | } 2010 | }, 2011 | "escape-string-regexp": { 2012 | "version": "4.0.0", 2013 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 2014 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 2015 | "dev": true 2016 | }, 2017 | "find-up": { 2018 | "version": "5.0.0", 2019 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 2020 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 2021 | "dev": true, 2022 | "requires": { 2023 | "locate-path": "^6.0.0", 2024 | "path-exists": "^4.0.0" 2025 | } 2026 | }, 2027 | "glob": { 2028 | "version": "7.2.0", 2029 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 2030 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 2031 | "dev": true, 2032 | "requires": { 2033 | "fs.realpath": "^1.0.0", 2034 | "inflight": "^1.0.4", 2035 | "inherits": "2", 2036 | "minimatch": "^3.0.4", 2037 | "once": "^1.3.0", 2038 | "path-is-absolute": "^1.0.0" 2039 | }, 2040 | "dependencies": { 2041 | "minimatch": { 2042 | "version": "3.1.2", 2043 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2044 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2045 | "dev": true, 2046 | "requires": { 2047 | "brace-expansion": "^1.1.7" 2048 | } 2049 | } 2050 | } 2051 | }, 2052 | "has-flag": { 2053 | "version": "4.0.0", 2054 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2055 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2056 | "dev": true 2057 | }, 2058 | "js-yaml": { 2059 | "version": "4.1.0", 2060 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 2061 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 2062 | "dev": true, 2063 | "requires": { 2064 | "argparse": "^2.0.1" 2065 | } 2066 | }, 2067 | "locate-path": { 2068 | "version": "6.0.0", 2069 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 2070 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 2071 | "dev": true, 2072 | "requires": { 2073 | "p-locate": "^5.0.0" 2074 | } 2075 | }, 2076 | "minimatch": { 2077 | "version": "5.0.1", 2078 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", 2079 | "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", 2080 | "dev": true, 2081 | "requires": { 2082 | "brace-expansion": "^2.0.1" 2083 | }, 2084 | "dependencies": { 2085 | "brace-expansion": { 2086 | "version": "2.0.1", 2087 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 2088 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 2089 | "dev": true, 2090 | "requires": { 2091 | "balanced-match": "^1.0.0" 2092 | } 2093 | } 2094 | } 2095 | }, 2096 | "ms": { 2097 | "version": "2.1.3", 2098 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2099 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2100 | "dev": true 2101 | }, 2102 | "p-limit": { 2103 | "version": "3.1.0", 2104 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 2105 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2106 | "dev": true, 2107 | "requires": { 2108 | "yocto-queue": "^0.1.0" 2109 | } 2110 | }, 2111 | "p-locate": { 2112 | "version": "5.0.0", 2113 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 2114 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 2115 | "dev": true, 2116 | "requires": { 2117 | "p-limit": "^3.0.2" 2118 | } 2119 | }, 2120 | "path-exists": { 2121 | "version": "4.0.0", 2122 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2123 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2124 | "dev": true 2125 | }, 2126 | "strip-json-comments": { 2127 | "version": "3.1.1", 2128 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2129 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2130 | "dev": true 2131 | }, 2132 | "supports-color": { 2133 | "version": "8.1.1", 2134 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 2135 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 2136 | "dev": true, 2137 | "requires": { 2138 | "has-flag": "^4.0.0" 2139 | } 2140 | } 2141 | } 2142 | }, 2143 | "mocha-junit-reporter": { 2144 | "version": "1.23.3", 2145 | "resolved": "https://registry.npmjs.org/mocha-junit-reporter/-/mocha-junit-reporter-1.23.3.tgz", 2146 | "integrity": "sha512-ed8LqbRj1RxZfjt/oC9t12sfrWsjZ3gNnbhV1nuj9R/Jb5/P3Xb4duv2eCfCDMYH+fEu0mqca7m4wsiVjsxsvA==", 2147 | "dev": true, 2148 | "requires": { 2149 | "debug": "^2.2.0", 2150 | "md5": "^2.1.0", 2151 | "mkdirp": "~0.5.1", 2152 | "strip-ansi": "^4.0.0", 2153 | "xml": "^1.0.0" 2154 | }, 2155 | "dependencies": { 2156 | "debug": { 2157 | "version": "2.6.9", 2158 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 2159 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 2160 | "dev": true, 2161 | "requires": { 2162 | "ms": "2.0.0" 2163 | } 2164 | }, 2165 | "minimist": { 2166 | "version": "1.2.8", 2167 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 2168 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 2169 | "dev": true 2170 | }, 2171 | "mkdirp": { 2172 | "version": "0.5.6", 2173 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", 2174 | "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", 2175 | "dev": true, 2176 | "requires": { 2177 | "minimist": "^1.2.6" 2178 | } 2179 | }, 2180 | "ms": { 2181 | "version": "2.0.0", 2182 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2183 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 2184 | "dev": true 2185 | } 2186 | } 2187 | }, 2188 | "ms": { 2189 | "version": "2.1.2", 2190 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2191 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2192 | "dev": true 2193 | }, 2194 | "mute-stream": { 2195 | "version": "0.0.7", 2196 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", 2197 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", 2198 | "dev": true 2199 | }, 2200 | "nanoid": { 2201 | "version": "3.3.3", 2202 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", 2203 | "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", 2204 | "dev": true 2205 | }, 2206 | "natural-compare": { 2207 | "version": "1.4.0", 2208 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2209 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 2210 | "dev": true 2211 | }, 2212 | "nice-try": { 2213 | "version": "1.0.5", 2214 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 2215 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", 2216 | "dev": true 2217 | }, 2218 | "nopt": { 2219 | "version": "6.0.0", 2220 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", 2221 | "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", 2222 | "dev": true, 2223 | "requires": { 2224 | "abbrev": "^1.0.0" 2225 | } 2226 | }, 2227 | "normalize-package-data": { 2228 | "version": "2.5.0", 2229 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 2230 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 2231 | "dev": true, 2232 | "requires": { 2233 | "hosted-git-info": "^2.1.4", 2234 | "resolve": "^1.10.0", 2235 | "semver": "2 || 3 || 4 || 5", 2236 | "validate-npm-package-license": "^3.0.1" 2237 | } 2238 | }, 2239 | "normalize-path": { 2240 | "version": "3.0.0", 2241 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2242 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2243 | "dev": true 2244 | }, 2245 | "object-inspect": { 2246 | "version": "1.7.0", 2247 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", 2248 | "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", 2249 | "dev": true 2250 | }, 2251 | "object-keys": { 2252 | "version": "1.1.1", 2253 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 2254 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 2255 | "dev": true 2256 | }, 2257 | "object.assign": { 2258 | "version": "4.1.0", 2259 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", 2260 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", 2261 | "dev": true, 2262 | "requires": { 2263 | "define-properties": "^1.1.2", 2264 | "function-bind": "^1.1.1", 2265 | "has-symbols": "^1.0.0", 2266 | "object-keys": "^1.0.11" 2267 | } 2268 | }, 2269 | "object.entries": { 2270 | "version": "1.1.1", 2271 | "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", 2272 | "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", 2273 | "dev": true, 2274 | "requires": { 2275 | "define-properties": "^1.1.3", 2276 | "es-abstract": "^1.17.0-next.1", 2277 | "function-bind": "^1.1.1", 2278 | "has": "^1.0.3" 2279 | }, 2280 | "dependencies": { 2281 | "es-abstract": { 2282 | "version": "1.17.0", 2283 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz", 2284 | "integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==", 2285 | "dev": true, 2286 | "requires": { 2287 | "es-to-primitive": "^1.2.1", 2288 | "function-bind": "^1.1.1", 2289 | "has": "^1.0.3", 2290 | "has-symbols": "^1.0.1", 2291 | "is-callable": "^1.1.5", 2292 | "is-regex": "^1.0.5", 2293 | "object-inspect": "^1.7.0", 2294 | "object-keys": "^1.1.1", 2295 | "object.assign": "^4.1.0", 2296 | "string.prototype.trimleft": "^2.1.1", 2297 | "string.prototype.trimright": "^2.1.1" 2298 | } 2299 | }, 2300 | "es-to-primitive": { 2301 | "version": "1.2.1", 2302 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 2303 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 2304 | "dev": true, 2305 | "requires": { 2306 | "is-callable": "^1.1.4", 2307 | "is-date-object": "^1.0.1", 2308 | "is-symbol": "^1.0.2" 2309 | } 2310 | }, 2311 | "has-symbols": { 2312 | "version": "1.0.1", 2313 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 2314 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", 2315 | "dev": true 2316 | }, 2317 | "is-callable": { 2318 | "version": "1.1.5", 2319 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", 2320 | "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", 2321 | "dev": true 2322 | }, 2323 | "is-regex": { 2324 | "version": "1.0.5", 2325 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", 2326 | "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", 2327 | "dev": true, 2328 | "requires": { 2329 | "has": "^1.0.3" 2330 | } 2331 | } 2332 | } 2333 | }, 2334 | "once": { 2335 | "version": "1.4.0", 2336 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2337 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2338 | "dev": true, 2339 | "requires": { 2340 | "wrappy": "1" 2341 | } 2342 | }, 2343 | "onetime": { 2344 | "version": "2.0.1", 2345 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 2346 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 2347 | "dev": true, 2348 | "requires": { 2349 | "mimic-fn": "^1.0.0" 2350 | } 2351 | }, 2352 | "optionator": { 2353 | "version": "0.8.3", 2354 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 2355 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 2356 | "dev": true, 2357 | "requires": { 2358 | "deep-is": "~0.1.3", 2359 | "fast-levenshtein": "~2.0.6", 2360 | "levn": "~0.3.0", 2361 | "prelude-ls": "~1.1.2", 2362 | "type-check": "~0.3.2", 2363 | "word-wrap": "~1.2.3" 2364 | } 2365 | }, 2366 | "os-tmpdir": { 2367 | "version": "1.0.2", 2368 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 2369 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 2370 | "dev": true 2371 | }, 2372 | "p-limit": { 2373 | "version": "1.3.0", 2374 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 2375 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 2376 | "dev": true, 2377 | "requires": { 2378 | "p-try": "^1.0.0" 2379 | } 2380 | }, 2381 | "p-locate": { 2382 | "version": "2.0.0", 2383 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 2384 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 2385 | "dev": true, 2386 | "requires": { 2387 | "p-limit": "^1.1.0" 2388 | } 2389 | }, 2390 | "p-try": { 2391 | "version": "1.0.0", 2392 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 2393 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 2394 | "dev": true 2395 | }, 2396 | "parent-module": { 2397 | "version": "1.0.1", 2398 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2399 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2400 | "dev": true, 2401 | "requires": { 2402 | "callsites": "^3.0.0" 2403 | } 2404 | }, 2405 | "parse-function": { 2406 | "version": "5.6.10", 2407 | "resolved": "https://registry.npmjs.org/parse-function/-/parse-function-5.6.10.tgz", 2408 | "integrity": "sha512-mrMwHEIn8mCgTTZxCVtXbcv8+Suf13z+81004BupjoAfZfIuwEzOYy9NNS3xKYXRRVR7Ej1sjvgjjcqQmYGK4A==", 2409 | "dev": true, 2410 | "requires": { 2411 | "@babel/parser": "^7.8.3", 2412 | "arrify": "^2.0.1" 2413 | } 2414 | }, 2415 | "parse-json": { 2416 | "version": "2.2.0", 2417 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 2418 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 2419 | "dev": true, 2420 | "requires": { 2421 | "error-ex": "^1.2.0" 2422 | } 2423 | }, 2424 | "path-exists": { 2425 | "version": "3.0.0", 2426 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 2427 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 2428 | "dev": true 2429 | }, 2430 | "path-is-absolute": { 2431 | "version": "1.0.1", 2432 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2433 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2434 | "dev": true 2435 | }, 2436 | "path-is-inside": { 2437 | "version": "1.0.2", 2438 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 2439 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", 2440 | "dev": true 2441 | }, 2442 | "path-key": { 2443 | "version": "2.0.1", 2444 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 2445 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 2446 | "dev": true 2447 | }, 2448 | "path-parse": { 2449 | "version": "1.0.7", 2450 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2451 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2452 | "dev": true 2453 | }, 2454 | "path-type": { 2455 | "version": "2.0.0", 2456 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", 2457 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", 2458 | "dev": true, 2459 | "requires": { 2460 | "pify": "^2.0.0" 2461 | } 2462 | }, 2463 | "pathval": { 2464 | "version": "1.1.1", 2465 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", 2466 | "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==" 2467 | }, 2468 | "picomatch": { 2469 | "version": "2.3.1", 2470 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2471 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2472 | "dev": true 2473 | }, 2474 | "pify": { 2475 | "version": "2.3.0", 2476 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 2477 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 2478 | "dev": true 2479 | }, 2480 | "pkg-dir": { 2481 | "version": "2.0.0", 2482 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", 2483 | "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", 2484 | "dev": true, 2485 | "requires": { 2486 | "find-up": "^2.1.0" 2487 | } 2488 | }, 2489 | "prelude-ls": { 2490 | "version": "1.1.2", 2491 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 2492 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 2493 | "dev": true 2494 | }, 2495 | "progress": { 2496 | "version": "2.0.3", 2497 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 2498 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 2499 | "dev": true 2500 | }, 2501 | "promise-retry": { 2502 | "version": "1.1.1", 2503 | "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", 2504 | "integrity": "sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw==", 2505 | "dev": true, 2506 | "requires": { 2507 | "err-code": "^1.0.0", 2508 | "retry": "^0.10.0" 2509 | } 2510 | }, 2511 | "proto-list": { 2512 | "version": "1.2.4", 2513 | "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", 2514 | "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", 2515 | "dev": true 2516 | }, 2517 | "proxy-from-env": { 2518 | "version": "1.1.0", 2519 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 2520 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", 2521 | "dev": true 2522 | }, 2523 | "pseudomap": { 2524 | "version": "1.0.2", 2525 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 2526 | "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", 2527 | "dev": true 2528 | }, 2529 | "punycode": { 2530 | "version": "2.1.1", 2531 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2532 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 2533 | }, 2534 | "randombytes": { 2535 | "version": "2.1.0", 2536 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 2537 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 2538 | "dev": true, 2539 | "requires": { 2540 | "safe-buffer": "^5.1.0" 2541 | } 2542 | }, 2543 | "read-pkg": { 2544 | "version": "2.0.0", 2545 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", 2546 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", 2547 | "dev": true, 2548 | "requires": { 2549 | "load-json-file": "^2.0.0", 2550 | "normalize-package-data": "^2.3.2", 2551 | "path-type": "^2.0.0" 2552 | } 2553 | }, 2554 | "read-pkg-up": { 2555 | "version": "2.0.0", 2556 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", 2557 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", 2558 | "dev": true, 2559 | "requires": { 2560 | "find-up": "^2.0.0", 2561 | "read-pkg": "^2.0.0" 2562 | } 2563 | }, 2564 | "readdirp": { 2565 | "version": "3.6.0", 2566 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 2567 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 2568 | "dev": true, 2569 | "requires": { 2570 | "picomatch": "^2.2.1" 2571 | } 2572 | }, 2573 | "reflect-metadata": { 2574 | "version": "0.1.13", 2575 | "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", 2576 | "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", 2577 | "dev": true 2578 | }, 2579 | "regexp-match-indices": { 2580 | "version": "1.0.2", 2581 | "resolved": "https://registry.npmjs.org/regexp-match-indices/-/regexp-match-indices-1.0.2.tgz", 2582 | "integrity": "sha512-DwZuAkt8NF5mKwGGER1EGh2PRqyvhRhhLviH+R8y8dIuaQROlUfXjt4s9ZTXstIsSkptf06BSvwcEmmfheJJWQ==", 2583 | "dev": true, 2584 | "requires": { 2585 | "regexp-tree": "^0.1.11" 2586 | } 2587 | }, 2588 | "regexp-tree": { 2589 | "version": "0.1.24", 2590 | "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.24.tgz", 2591 | "integrity": "sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==", 2592 | "dev": true 2593 | }, 2594 | "regexpp": { 2595 | "version": "2.0.1", 2596 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", 2597 | "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", 2598 | "dev": true 2599 | }, 2600 | "require-directory": { 2601 | "version": "2.1.1", 2602 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 2603 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 2604 | "dev": true 2605 | }, 2606 | "requireindex": { 2607 | "version": "1.1.0", 2608 | "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.1.0.tgz", 2609 | "integrity": "sha1-5UBLgVV+91225JxacgBIk/4D4WI=", 2610 | "dev": true 2611 | }, 2612 | "resolve": { 2613 | "version": "1.11.0", 2614 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", 2615 | "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", 2616 | "dev": true, 2617 | "requires": { 2618 | "path-parse": "^1.0.6" 2619 | } 2620 | }, 2621 | "resolve-from": { 2622 | "version": "4.0.0", 2623 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2624 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2625 | "dev": true 2626 | }, 2627 | "resq": { 2628 | "version": "1.11.0", 2629 | "resolved": "https://registry.npmjs.org/resq/-/resq-1.11.0.tgz", 2630 | "integrity": "sha512-G10EBz+zAAy3zUd/CDoBbXRL6ia9kOo3xRHrMDsHljI0GDkhYlyjwoCx5+3eCC4swi1uCoZQhskuJkj7Gp57Bw==", 2631 | "dev": true, 2632 | "requires": { 2633 | "fast-deep-equal": "^2.0.1" 2634 | }, 2635 | "dependencies": { 2636 | "fast-deep-equal": { 2637 | "version": "2.0.1", 2638 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", 2639 | "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", 2640 | "dev": true 2641 | } 2642 | } 2643 | }, 2644 | "restore-cursor": { 2645 | "version": "2.0.0", 2646 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 2647 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 2648 | "dev": true, 2649 | "requires": { 2650 | "onetime": "^2.0.0", 2651 | "signal-exit": "^3.0.2" 2652 | } 2653 | }, 2654 | "retry": { 2655 | "version": "0.10.1", 2656 | "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", 2657 | "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==", 2658 | "dev": true 2659 | }, 2660 | "rimraf": { 2661 | "version": "2.6.3", 2662 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 2663 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 2664 | "dev": true, 2665 | "requires": { 2666 | "glob": "^7.1.3" 2667 | } 2668 | }, 2669 | "run-async": { 2670 | "version": "2.3.0", 2671 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", 2672 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", 2673 | "dev": true, 2674 | "requires": { 2675 | "is-promise": "^2.1.0" 2676 | } 2677 | }, 2678 | "rxjs": { 2679 | "version": "6.5.4", 2680 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", 2681 | "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", 2682 | "dev": true, 2683 | "requires": { 2684 | "tslib": "^1.9.0" 2685 | } 2686 | }, 2687 | "safe-buffer": { 2688 | "version": "5.2.1", 2689 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2690 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 2691 | "dev": true 2692 | }, 2693 | "safer-buffer": { 2694 | "version": "2.1.2", 2695 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2696 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 2697 | "dev": true 2698 | }, 2699 | "semver": { 2700 | "version": "5.7.0", 2701 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", 2702 | "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", 2703 | "dev": true 2704 | }, 2705 | "serialize-javascript": { 2706 | "version": "6.0.0", 2707 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", 2708 | "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", 2709 | "dev": true, 2710 | "requires": { 2711 | "randombytes": "^2.1.0" 2712 | } 2713 | }, 2714 | "shebang-command": { 2715 | "version": "1.2.0", 2716 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 2717 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 2718 | "dev": true, 2719 | "requires": { 2720 | "shebang-regex": "^1.0.0" 2721 | } 2722 | }, 2723 | "shebang-regex": { 2724 | "version": "1.0.0", 2725 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 2726 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 2727 | "dev": true 2728 | }, 2729 | "sigmund": { 2730 | "version": "1.0.1", 2731 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 2732 | "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", 2733 | "dev": true 2734 | }, 2735 | "signal-exit": { 2736 | "version": "3.0.2", 2737 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 2738 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 2739 | "dev": true 2740 | }, 2741 | "slice-ansi": { 2742 | "version": "2.1.0", 2743 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", 2744 | "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", 2745 | "dev": true, 2746 | "requires": { 2747 | "ansi-styles": "^3.2.0", 2748 | "astral-regex": "^1.0.0", 2749 | "is-fullwidth-code-point": "^2.0.0" 2750 | } 2751 | }, 2752 | "spdx-correct": { 2753 | "version": "3.1.0", 2754 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", 2755 | "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", 2756 | "dev": true, 2757 | "requires": { 2758 | "spdx-expression-parse": "^3.0.0", 2759 | "spdx-license-ids": "^3.0.0" 2760 | } 2761 | }, 2762 | "spdx-exceptions": { 2763 | "version": "2.2.0", 2764 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", 2765 | "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", 2766 | "dev": true 2767 | }, 2768 | "spdx-expression-parse": { 2769 | "version": "3.0.0", 2770 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", 2771 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", 2772 | "dev": true, 2773 | "requires": { 2774 | "spdx-exceptions": "^2.1.0", 2775 | "spdx-license-ids": "^3.0.0" 2776 | } 2777 | }, 2778 | "spdx-license-ids": { 2779 | "version": "3.0.4", 2780 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", 2781 | "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", 2782 | "dev": true 2783 | }, 2784 | "sprintf-js": { 2785 | "version": "1.0.3", 2786 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 2787 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 2788 | "dev": true 2789 | }, 2790 | "string-width": { 2791 | "version": "2.1.1", 2792 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 2793 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 2794 | "dev": true, 2795 | "requires": { 2796 | "is-fullwidth-code-point": "^2.0.0", 2797 | "strip-ansi": "^4.0.0" 2798 | } 2799 | }, 2800 | "string.prototype.trimleft": { 2801 | "version": "2.1.1", 2802 | "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", 2803 | "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", 2804 | "dev": true, 2805 | "requires": { 2806 | "define-properties": "^1.1.3", 2807 | "function-bind": "^1.1.1" 2808 | } 2809 | }, 2810 | "string.prototype.trimright": { 2811 | "version": "2.1.1", 2812 | "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", 2813 | "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", 2814 | "dev": true, 2815 | "requires": { 2816 | "define-properties": "^1.1.3", 2817 | "function-bind": "^1.1.1" 2818 | } 2819 | }, 2820 | "strip-ansi": { 2821 | "version": "4.0.0", 2822 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 2823 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 2824 | "dev": true, 2825 | "requires": { 2826 | "ansi-regex": "^3.0.0" 2827 | } 2828 | }, 2829 | "strip-bom": { 2830 | "version": "3.0.0", 2831 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 2832 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 2833 | "dev": true 2834 | }, 2835 | "strip-json-comments": { 2836 | "version": "2.0.1", 2837 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 2838 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 2839 | "dev": true 2840 | }, 2841 | "supports-color": { 2842 | "version": "5.5.0", 2843 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2844 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2845 | "dev": true, 2846 | "requires": { 2847 | "has-flag": "^3.0.0" 2848 | } 2849 | }, 2850 | "table": { 2851 | "version": "5.4.6", 2852 | "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", 2853 | "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", 2854 | "dev": true, 2855 | "requires": { 2856 | "ajv": "^6.10.2", 2857 | "lodash": "^4.17.14", 2858 | "slice-ansi": "^2.1.0", 2859 | "string-width": "^3.0.0" 2860 | }, 2861 | "dependencies": { 2862 | "ansi-regex": { 2863 | "version": "4.1.1", 2864 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", 2865 | "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", 2866 | "dev": true 2867 | }, 2868 | "string-width": { 2869 | "version": "3.1.0", 2870 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 2871 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 2872 | "dev": true, 2873 | "requires": { 2874 | "emoji-regex": "^7.0.1", 2875 | "is-fullwidth-code-point": "^2.0.0", 2876 | "strip-ansi": "^5.1.0" 2877 | } 2878 | }, 2879 | "strip-ansi": { 2880 | "version": "5.2.0", 2881 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 2882 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 2883 | "dev": true, 2884 | "requires": { 2885 | "ansi-regex": "^4.1.0" 2886 | } 2887 | } 2888 | } 2889 | }, 2890 | "text-table": { 2891 | "version": "0.2.0", 2892 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2893 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 2894 | "dev": true 2895 | }, 2896 | "through": { 2897 | "version": "2.3.8", 2898 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 2899 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 2900 | "dev": true 2901 | }, 2902 | "tmp": { 2903 | "version": "0.0.33", 2904 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 2905 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 2906 | "dev": true, 2907 | "requires": { 2908 | "os-tmpdir": "~1.0.2" 2909 | } 2910 | }, 2911 | "to-regex-range": { 2912 | "version": "5.0.1", 2913 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2914 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2915 | "dev": true, 2916 | "requires": { 2917 | "is-number": "^7.0.0" 2918 | } 2919 | }, 2920 | "tslib": { 2921 | "version": "1.10.0", 2922 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", 2923 | "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", 2924 | "dev": true 2925 | }, 2926 | "tv4": { 2927 | "version": "1.3.0", 2928 | "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", 2929 | "integrity": "sha1-0CDIRvrdUMhVq7JeuuzGj8EPeWM=" 2930 | }, 2931 | "type-check": { 2932 | "version": "0.3.2", 2933 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 2934 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 2935 | "dev": true, 2936 | "requires": { 2937 | "prelude-ls": "~1.1.2" 2938 | } 2939 | }, 2940 | "type-detect": { 2941 | "version": "4.0.8", 2942 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", 2943 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" 2944 | }, 2945 | "universalify": { 2946 | "version": "0.1.2", 2947 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 2948 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 2949 | "dev": true 2950 | }, 2951 | "uri-js": { 2952 | "version": "4.2.2", 2953 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 2954 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 2955 | "requires": { 2956 | "punycode": "^2.1.0" 2957 | } 2958 | }, 2959 | "uuid": { 2960 | "version": "9.0.0", 2961 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", 2962 | "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", 2963 | "dev": true 2964 | }, 2965 | "validate-npm-package-license": { 2966 | "version": "3.0.4", 2967 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 2968 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 2969 | "dev": true, 2970 | "requires": { 2971 | "spdx-correct": "^3.0.0", 2972 | "spdx-expression-parse": "^3.0.0" 2973 | } 2974 | }, 2975 | "which": { 2976 | "version": "1.3.1", 2977 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 2978 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 2979 | "dev": true, 2980 | "requires": { 2981 | "isexe": "^2.0.0" 2982 | } 2983 | }, 2984 | "word-wrap": { 2985 | "version": "1.2.3", 2986 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 2987 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 2988 | "dev": true 2989 | }, 2990 | "workerpool": { 2991 | "version": "6.2.1", 2992 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", 2993 | "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", 2994 | "dev": true 2995 | }, 2996 | "wrap-ansi": { 2997 | "version": "7.0.0", 2998 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2999 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 3000 | "dev": true, 3001 | "requires": { 3002 | "ansi-styles": "^4.0.0", 3003 | "string-width": "^4.1.0", 3004 | "strip-ansi": "^6.0.0" 3005 | }, 3006 | "dependencies": { 3007 | "ansi-regex": { 3008 | "version": "5.0.1", 3009 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 3010 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 3011 | "dev": true 3012 | }, 3013 | "ansi-styles": { 3014 | "version": "4.3.0", 3015 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 3016 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 3017 | "dev": true, 3018 | "requires": { 3019 | "color-convert": "^2.0.1" 3020 | } 3021 | }, 3022 | "color-convert": { 3023 | "version": "2.0.1", 3024 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 3025 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 3026 | "dev": true, 3027 | "requires": { 3028 | "color-name": "~1.1.4" 3029 | } 3030 | }, 3031 | "color-name": { 3032 | "version": "1.1.4", 3033 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 3034 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 3035 | "dev": true 3036 | }, 3037 | "emoji-regex": { 3038 | "version": "8.0.0", 3039 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 3040 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 3041 | "dev": true 3042 | }, 3043 | "is-fullwidth-code-point": { 3044 | "version": "3.0.0", 3045 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 3046 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 3047 | "dev": true 3048 | }, 3049 | "string-width": { 3050 | "version": "4.2.3", 3051 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3052 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3053 | "dev": true, 3054 | "requires": { 3055 | "emoji-regex": "^8.0.0", 3056 | "is-fullwidth-code-point": "^3.0.0", 3057 | "strip-ansi": "^6.0.1" 3058 | } 3059 | }, 3060 | "strip-ansi": { 3061 | "version": "6.0.1", 3062 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3063 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3064 | "dev": true, 3065 | "requires": { 3066 | "ansi-regex": "^5.0.1" 3067 | } 3068 | } 3069 | } 3070 | }, 3071 | "wrappy": { 3072 | "version": "1.0.2", 3073 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3074 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 3075 | "dev": true 3076 | }, 3077 | "write": { 3078 | "version": "1.0.3", 3079 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", 3080 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", 3081 | "dev": true, 3082 | "requires": { 3083 | "mkdirp": "^0.5.1" 3084 | }, 3085 | "dependencies": { 3086 | "minimist": { 3087 | "version": "1.2.8", 3088 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 3089 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 3090 | "dev": true 3091 | }, 3092 | "mkdirp": { 3093 | "version": "0.5.6", 3094 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", 3095 | "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", 3096 | "dev": true, 3097 | "requires": { 3098 | "minimist": "^1.2.6" 3099 | } 3100 | } 3101 | } 3102 | }, 3103 | "xml": { 3104 | "version": "1.0.1", 3105 | "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", 3106 | "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", 3107 | "dev": true 3108 | }, 3109 | "xpath-builder": { 3110 | "version": "0.0.7", 3111 | "resolved": "https://registry.npmjs.org/xpath-builder/-/xpath-builder-0.0.7.tgz", 3112 | "integrity": "sha512-aB1+Vdh6kQ3nc/ggFO61ukxwTEWiC81wFtlR7OwnzxZkTld0tqkIhchW0Lh7TQr056ih/4ipePQRBLBE8iMeTA==", 3113 | "dev": true 3114 | }, 3115 | "y18n": { 3116 | "version": "5.0.8", 3117 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 3118 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 3119 | "dev": true 3120 | }, 3121 | "yallist": { 3122 | "version": "2.1.2", 3123 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 3124 | "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", 3125 | "dev": true 3126 | }, 3127 | "yargs": { 3128 | "version": "16.2.0", 3129 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 3130 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 3131 | "dev": true, 3132 | "requires": { 3133 | "cliui": "^7.0.2", 3134 | "escalade": "^3.1.1", 3135 | "get-caller-file": "^2.0.5", 3136 | "require-directory": "^2.1.1", 3137 | "string-width": "^4.2.0", 3138 | "y18n": "^5.0.5", 3139 | "yargs-parser": "^20.2.2" 3140 | }, 3141 | "dependencies": { 3142 | "ansi-regex": { 3143 | "version": "5.0.1", 3144 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 3145 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 3146 | "dev": true 3147 | }, 3148 | "emoji-regex": { 3149 | "version": "8.0.0", 3150 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 3151 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 3152 | "dev": true 3153 | }, 3154 | "is-fullwidth-code-point": { 3155 | "version": "3.0.0", 3156 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 3157 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 3158 | "dev": true 3159 | }, 3160 | "string-width": { 3161 | "version": "4.2.3", 3162 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3163 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3164 | "dev": true, 3165 | "requires": { 3166 | "emoji-regex": "^8.0.0", 3167 | "is-fullwidth-code-point": "^3.0.0", 3168 | "strip-ansi": "^6.0.1" 3169 | } 3170 | }, 3171 | "strip-ansi": { 3172 | "version": "6.0.1", 3173 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3174 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3175 | "dev": true, 3176 | "requires": { 3177 | "ansi-regex": "^5.0.1" 3178 | } 3179 | } 3180 | } 3181 | }, 3182 | "yargs-parser": { 3183 | "version": "20.2.4", 3184 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", 3185 | "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", 3186 | "dev": true 3187 | }, 3188 | "yargs-unparser": { 3189 | "version": "2.0.0", 3190 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 3191 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 3192 | "dev": true, 3193 | "requires": { 3194 | "camelcase": "^6.0.0", 3195 | "decamelize": "^4.0.0", 3196 | "flat": "^5.0.2", 3197 | "is-plain-obj": "^2.1.0" 3198 | } 3199 | }, 3200 | "yocto-queue": { 3201 | "version": "0.1.0", 3202 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 3203 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 3204 | "dev": true 3205 | } 3206 | } 3207 | } 3208 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "codeceptjs-chai", 3 | "version": "2.3.5", 4 | "description": "CodeceptJS helper for chai library", 5 | "devDependencies": { 6 | "codeceptjs": "^3.4.1", 7 | "eslint": "^5.16.0", 8 | "eslint-config-airbnb-base": "^13.1.0", 9 | "eslint-plugin-varspacing": "^1.2.1", 10 | "eslint-plugin-import": "^2.17.3", 11 | "eslint-plugin-codeceptjs": "^1.1.0" 12 | }, 13 | "dependencies": { 14 | "ajv": "^6.12.2", 15 | "chai": "^4.2.0", 16 | "chai-exclude": "^2.1.0", 17 | "chai-json-schema": "^1.5.1", 18 | "chai-json-schema-ajv": "^5.1.0", 19 | "chai-match-pattern": "^1.3.0", 20 | "chai-string": "^1.5.0" 21 | }, 22 | "main": "index.js", 23 | "scripts": { 24 | "lint": "eslint . --fix", 25 | "test": "npx codeceptjs run -c ./test/codecept.conf.js --steps", 26 | "report": "allure serve report" 27 | }, 28 | "repository": { 29 | "type": "git", 30 | "url": "git@github.com:SitamJana/codeceptjs-chai.git" 31 | }, 32 | "keywords": [ 33 | "codeceptJS", 34 | "codeceptjs", 35 | "chai" 36 | ], 37 | "author": "Sitam Jana ", 38 | "license": "MIT" 39 | } -------------------------------------------------------------------------------- /test/ajv-json-schema.tests.js: -------------------------------------------------------------------------------- 1 | const { I } = inject(); 2 | 3 | Feature( 'JSON Schema Validation tests using chai-json-schema-ajv' ); 4 | 5 | Scenario( 'Successful JSON Schema Validation', async()=>{ 6 | 7 | const response = await I.sendGetRequest( '/api/users' ); 8 | 9 | const jsonSchema = require( './users.schema.json' ); 10 | 11 | I.assertJsonSchemaUsingAJV( response.data, jsonSchema ); 12 | 13 | } ); 14 | 15 | Scenario( 'Failed JSON Schema Validation', async()=>{ 16 | 17 | const response = await I.sendGetRequest( '/api/users' ); 18 | 19 | const jsonSchema = require( './wrong.schema.json' ); 20 | 21 | I.assertJsonSchemaUsingAJV( response.data, jsonSchema ); 22 | 23 | } ); 24 | -------------------------------------------------------------------------------- /test/assert.tests.js: -------------------------------------------------------------------------------- 1 | const { I } = inject(); 2 | 3 | Feature( 'Assert Validation tests @assert' ); 4 | 5 | Scenario( 'Validate I.assertTrue without custom error message', async()=>{ 6 | 7 | const arr = ['abc', 'bcd', 'cde']; 8 | 9 | I.assertEmpty( arr ); 10 | 11 | } ); 12 | 13 | Scenario( 'Validate I.assertTrue with custom error message', async()=>{ 14 | 15 | const arr = ['abc', 'bcd', 'cde']; 16 | 17 | I.assertEmpty( arr, 'Array is not empty' ); 18 | 19 | } ); 20 | -------------------------------------------------------------------------------- /test/codecept.conf.js: -------------------------------------------------------------------------------- 1 | exports.config = { 2 | tests: './**/*.tests.js', 3 | helpers: { 4 | REST: { 5 | endpoint: 'https://reqres.in', 6 | }, 7 | ChaiWrapper: { 8 | require: '../index', 9 | }, 10 | }, 11 | include: {}, 12 | bootstrap: null, 13 | mocha: {}, 14 | name: 'codeceptjs-chai', 15 | plugins: { 16 | allure: { 17 | outputDir: 'report', 18 | enabled: true, 19 | } 20 | } 21 | }; 22 | -------------------------------------------------------------------------------- /test/json-schema.tests.js: -------------------------------------------------------------------------------- 1 | const { I } = inject(); 2 | 3 | Feature( 'JSON Schema Validation tests using chai-json-schema' ); 4 | 5 | Scenario( 'Successful JSON Schema Validation', async()=>{ 6 | 7 | const response = await I.sendGetRequest( '/api/users' ); 8 | 9 | const jsonSchema = require( './users.schema.json' ); 10 | 11 | I.assertJsonSchema( response.data, jsonSchema ); 12 | 13 | } ); 14 | 15 | Scenario( 'Failed JSON Schema Validation', async()=>{ 16 | 17 | const response = await I.sendGetRequest( '/api/users' ); 18 | 19 | const jsonSchema = require( './wrong.schema.json' ); 20 | 21 | I.assertJsonSchema( response.data, jsonSchema ); 22 | 23 | } ); 24 | -------------------------------------------------------------------------------- /test/users.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema", 3 | "type": "object", 4 | "additionalProperties": true, 5 | "required": [ 6 | "page", 7 | "per_page", 8 | "total", 9 | "total_pages", 10 | "data", 11 | "support" 12 | ], 13 | "properties": { 14 | "page": { 15 | "type": "integer" 16 | }, 17 | "per_page": { 18 | "type": "integer" 19 | }, 20 | "total": { 21 | "type": "integer" 22 | }, 23 | "total_pages": { 24 | "type": "integer" 25 | }, 26 | "data": { 27 | "type": "array", 28 | "additionalItems": true, 29 | "items": { 30 | "type": "object", 31 | "additionalProperties": true, 32 | "required": [ 33 | "id", 34 | "email", 35 | "first_name", 36 | "last_name", 37 | "avatar" 38 | ], 39 | "properties": { 40 | "id": { 41 | "type": "integer" 42 | }, 43 | "email": { 44 | "type": "string" 45 | }, 46 | "first_name": { 47 | "type": "string" 48 | }, 49 | "last_name": { 50 | "type": "string" 51 | }, 52 | "avatar": { 53 | "type": "string" 54 | } 55 | } 56 | } 57 | }, 58 | "support": { 59 | "type": "object", 60 | "additionalProperties": true, 61 | "required": [ 62 | "url", 63 | "text" 64 | ], 65 | "properties": { 66 | "url": { 67 | "type": "string" 68 | }, 69 | "text": { 70 | "type": "string" 71 | } 72 | } 73 | } 74 | } 75 | } -------------------------------------------------------------------------------- /test/wrong.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema", 3 | "type": "object", 4 | "additionalProperties": true, 5 | "required": [ 6 | "page", 7 | "per_page", 8 | "total", 9 | "total_pages", 10 | "data", 11 | "support" 12 | ], 13 | "properties": { 14 | "page": { 15 | "type": "string" 16 | }, 17 | "per_page": { 18 | "type": "integer" 19 | }, 20 | "total": { 21 | "type": "integer" 22 | }, 23 | "total_pages": { 24 | "type": "integer" 25 | }, 26 | "data": { 27 | "type": "array", 28 | "additionalItems": true, 29 | "items": { 30 | "type": "object", 31 | "additionalProperties": true, 32 | "required": [ 33 | "id", 34 | "email", 35 | "first_name", 36 | "last_name", 37 | "avatar" 38 | ], 39 | "properties": { 40 | "id": { 41 | "type": "integer" 42 | }, 43 | "email": { 44 | "type": "string" 45 | }, 46 | "first_name": { 47 | "type": "string" 48 | }, 49 | "last_name": { 50 | "type": "string" 51 | }, 52 | "avatar": { 53 | "type": "string" 54 | } 55 | } 56 | } 57 | }, 58 | "support": { 59 | "type": "object", 60 | "additionalProperties": true, 61 | "required": [ 62 | "url", 63 | "text" 64 | ], 65 | "properties": { 66 | "url": { 67 | "type": "string" 68 | }, 69 | "text": { 70 | "type": "string" 71 | } 72 | } 73 | } 74 | } 75 | } --------------------------------------------------------------------------------