Flat, round, designer-friendly pseudo-3D engine for canvas & SVG
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

๐Ÿ‘• use eslint-plugin-metafizzy; pt 1

eslint-plugin-metafizzy v1.0.0

+1631 -621
+19
.eslintrc.js
··· 1 + /* eslint-env node */ 2 + 3 + module.exports = { 4 + plugins: [ 'metafizzy' ], 5 + extends: 'plugin:metafizzy/browser', 6 + env: { 7 + browser: true, 8 + commonjs: true, 9 + }, 10 + parserOptions: { 11 + ecmaVersion: 5, 12 + }, 13 + rules: { 14 + 'no-var': 'off', 15 + 'max-params': [ 'error', { 16 + max: 5, 17 + } ], 18 + }, 19 + };
-218
.eslintrc.json
··· 1 - { 2 - "env": { 3 - "browser": true, 4 - "commonjs": true 5 - }, 6 - "extends": "eslint:recommended", 7 - "parserOptions": { 8 - "ecmaVersion": 5 9 - }, 10 - "rules": { 11 - "accessor-pairs": "error", 12 - "array-bracket-spacing": [ "error", "always" ], 13 - "array-callback-return": "error", 14 - "array-element-newline": "off", 15 - "arrow-body-style": [ "error", "always" ], 16 - "arrow-parens": [ "error", "always" ], 17 - "arrow-spacing": "error", 18 - "block-scoped-var": "error", 19 - "block-spacing": "error", 20 - "brace-style": [ "error", "1tbs" ], 21 - "camelcase": "error", 22 - "class-methods-use-this": "error", 23 - "comma-dangle": [ "error", "always-multiline" ], 24 - "comma-spacing": "error", 25 - "comma-style": [ "error", "last" ], 26 - "complexity": [ "error", 12 ], 27 - "consistent-this": [ "error", "_this" ], 28 - "curly": "error", 29 - "default-case": "error", 30 - "dot-location": [ "error", "property" ], 31 - "dot-notation": "error", 32 - "eol-last": "error", 33 - "eqeqeq": "off", 34 - "func-call-spacing": "error", 35 - "func-name-matching": "error", 36 - "func-style": [ "error", "declaration" ], 37 - "function-paren-newline": [ "error", "consistent" ], 38 - "generator-star-spacing": "error", 39 - "id-blacklist": [ "error", "data", "callback" ], 40 - "id-length": [ "error", { 41 - "min": 3, 42 - "max": 30, 43 - "exceptions": [ "x", "y", "z", "i", "a", "b" ] 44 - }], 45 - "id-match": "error", 46 - "implicit-arrow-linebreak": "error", 47 - "indent": [ "error", 2, { 48 - "VariableDeclarator": 4, 49 - "CallExpression": { "arguments": 2 }, 50 - "FunctionExpression": { "body": 1, "parameters": 2 }, 51 - "ignoredNodes": [ "CallExpression > FunctionExpression > BlockStatement.body" ] 52 - }], 53 - "key-spacing": "error", 54 - "keyword-spacing": [ "error", { 55 - "before": true, 56 - "after": true 57 - }], 58 - "linebreak-style": [ "error", "unix" ], 59 - "lines-around-comment": "error", 60 - "lines-between-class-members": "error", 61 - "max-classes-per-file": "error", 62 - "max-depth": "error", 63 - "max-len": [ "error", { 64 - "code": 80 65 - }], 66 - "max-lines": [ "error", { 67 - "max": 300 68 - }], 69 - "max-nested-callbacks": "error", 70 - "max-statements-per-line": "error", 71 - "new-cap": "error", 72 - "new-parens": "error", 73 - "newline-per-chained-call": "error", 74 - "no-alert": "error", 75 - "no-array-constructor": "error", 76 - "no-async-promise-executor": "error", 77 - "no-await-in-loop": "error", 78 - "no-bitwise": "error", 79 - "no-buffer-constructor": "error", 80 - "no-caller": "error", 81 - "no-catch-shadow": "error", 82 - "no-confusing-arrow": "error", 83 - "no-continue": "error", 84 - "no-div-regex": "error", 85 - "no-duplicate-imports": "error", 86 - "no-eq-null": "error", 87 - "no-eval": "error", 88 - "no-extend-native": "error", 89 - "no-extra-bind": "error", 90 - "no-extra-label": "error", 91 - "no-extra-parens": [ "error", "all", { 92 - "nestedBinaryExpressions": false 93 - }], 94 - "no-floating-decimal": "error", 95 - "no-implicit-globals": "error", 96 - "no-implied-eval": "error", 97 - "no-inner-declarations": [ "error", "functions" ], 98 - "no-invalid-this": "error", 99 - "no-iterator": "error", 100 - "no-label-var": "error", 101 - "no-labels": "error", 102 - "no-lone-blocks": "error", 103 - "no-lonely-if": "error", 104 - "no-loop-func": "error", 105 - "no-magic-numbers": "off", 106 - "no-misleading-character-class": "error", 107 - "no-mixed-requires": "error", 108 - "no-multi-assign": "off", 109 - "no-multi-spaces": [ "error", { 110 - "exceptions": { "Property": true } 111 - }], 112 - "no-multi-str": "error", 113 - "no-multiple-empty-lines": "error", 114 - "no-native-reassign": "error", 115 - "no-negated-condition": "off", 116 - "no-negated-in-lhs": "error", 117 - "no-nested-ternary": "error", 118 - "no-new-func": "error", 119 - "no-new-object": "error", 120 - "no-new-require": "error", 121 - "no-new-wrappers": "error", 122 - "no-octal-escape": "error", 123 - "no-param-reassign": "off", 124 - "no-path-concat": "error", 125 - "no-process-env": "error", 126 - "no-process-exit": "error", 127 - "no-proto": "error", 128 - "no-prototype-builtins": "error", 129 - "no-restricted-globals": "error", 130 - "no-restricted-imports": "error", 131 - "no-restricted-modules": "error", 132 - "no-restricted-properties": "error", 133 - "no-restricted-syntax": "error", 134 - "no-return-assign": "error", 135 - "no-return-await": "error", 136 - "no-script-url": "error", 137 - "no-self-compare": "error", 138 - "no-sequences": "error", 139 - "no-shadow": "error", 140 - "no-shadow-restricted-names": "error", 141 - "no-spaced-func": "error", 142 - "no-tabs": "error", 143 - "no-template-curly-in-string": "error", 144 - "no-ternary": "off", 145 - "no-throw-literal": "error", 146 - "no-trailing-spaces": "error", 147 - "no-undef-init": "error", 148 - "no-undefined": "off", 149 - "no-underscore-dangle": "off", 150 - "no-unmodified-loop-condition": "error", 151 - "no-unneeded-ternary": "error", 152 - "no-unused-expressions": "error", 153 - "no-use-before-define": [ "error", { 154 - "functions": false 155 - }], 156 - "no-useless-call": "error", 157 - "no-useless-catch": "error", 158 - "no-useless-computed-key": "error", 159 - "no-useless-concat": "error", 160 - "no-useless-constructor": "error", 161 - "no-useless-rename": "error", 162 - "no-useless-return": "error", 163 - "no-var": "off", 164 - "no-void": "error", 165 - "no-warning-comments": "off", 166 - "no-whitespace-before-property": "error", 167 - "no-with": "error", 168 - "nonblock-statement-body-position": "error", 169 - "object-curly-newline": "error", 170 - "one-var": [ "error", { 171 - "initialized": "never", 172 - "uninitialized": "always" 173 - }], 174 - "one-var-declaration-per-line": [ "error", "initializations" ], 175 - "operator-assignment": "error", 176 - "operator-linebreak": [ "error", "after" ], 177 - "padded-blocks": "off", 178 - "padding-line-between-statements": "error", 179 - "prefer-arrow-callback": "off", 180 - "prefer-numeric-literals": "error", 181 - "prefer-object-spread": "error", 182 - "prefer-promise-reject-errors": "error", 183 - "prefer-spread": "error", 184 - "quote-props": [ "error", "as-needed" ], 185 - "quotes": [ "error", "single", { 186 - "avoidEscape": true 187 - }], 188 - "radix": "error", 189 - "require-atomic-updates": "error", 190 - "require-await": "error", 191 - "rest-spread-spacing": "error", 192 - "semi": "error", 193 - "semi-spacing": [ "error", { 194 - "after": true, 195 - "before": false 196 - }], 197 - "semi-style": [ "error", "last" ], 198 - "sort-imports": "error", 199 - "space-before-blocks": "error", 200 - "space-before-function-paren": [ "error", "never" ], 201 - "space-in-parens": "off", 202 - "space-infix-ops": "off", 203 - "space-unary-ops": "error", 204 - "spaced-comment": "off", 205 - "strict": [ "error", "never" ], 206 - "switch-colon-spacing": "error", 207 - "symbol-description": "error", 208 - "template-curly-spacing": "error", 209 - "template-tag-spacing": "error", 210 - "unicode-bom": [ "error", "never" ], 211 - "valid-jsdoc": "error", 212 - "vars-on-top": "off", 213 - "wrap-iife": [ "error", "any" ], 214 - "wrap-regex": "error", 215 - "yield-star-spacing": "error", 216 - "yoda": [ "error", "never" ] 217 - } 218 - }
+12
demos/.eslintrc.js
··· 1 + /* eslint-env node */ 2 + 3 + module.exports = { 4 + extends: '../.eslintrc.js', 5 + globals: { 6 + Zdog: 'readonly', 7 + }, 8 + rules: { 9 + 'key-spacing': 'off', 10 + 'max-lines': 'off', 11 + }, 12 + };
-14
demos/.eslintrc.json
··· 1 - { 2 - "extends": "../.eslintrc.json", 3 - "globals": { 4 - "Zdog": "readonly" 5 - }, 6 - "rules": { 7 - "key-spacing": "off", 8 - "max-lines": "off", 9 - "one-var": [ "error", { 10 - "initialized": "never", 11 - "uninitialized": "consecutive" 12 - }] 13 - } 14 - }
+2 -2
demos/box-cross/box-cross.js
··· 10 10 var garnet = '#C25'; 11 11 var eggplant = '#636'; 12 12 13 - var initRotate = { x: (35/360) * TAU, y: TAU/8 }; 13 + var initRotate = { x: ( 35/360 ) * TAU, y: TAU/8 }; 14 14 15 15 var illo = new Zdog.Illustration({ 16 16 element: '.illo', ··· 120 120 if ( !isSpinning ) { 121 121 return; 122 122 } 123 - var progress = ticker / cycleCount; 123 + var progress = ticker/cycleCount; 124 124 var turn = Math.floor( progress % 4 ); 125 125 var theta = Zdog.easeInOut( progress % 1, 3 ) * TAU; 126 126 if ( turn == 0 || turn == 2 ) {
+4 -5
demos/dot-cube/dot-cube.js
··· 52 52 addTo: cube, 53 53 }); 54 54 55 - midDot.copy({ translate: { x: -1, y: 1 }} ); 56 - midDot.copy({ translate: { x: 1, y: -1 }} ); 57 - midDot.copy({ translate: { x: -1, y: -1 }} ); 58 - 55 + midDot.copy({ translate: { x: -1, y: 1 } }); 56 + midDot.copy({ translate: { x: 1, y: -1 } }); 57 + midDot.copy({ translate: { x: -1, y: -1 } }); 59 58 60 59 // ----- animate ----- // 61 60 ··· 71 70 var turnLimit = keyframes.length - 1; 72 71 73 72 function animate() { 74 - var progress = ticker / cycleCount; 73 + var progress = ticker/cycleCount; 75 74 var tween = Zdog.easeInOut( progress % 1, 4 ); 76 75 var turn = Math.floor( progress % turnLimit ); 77 76 var keyA = keyframes[ turn ];
+6 -6
demos/hemisphere-cone-ball/hemisphere-cone-ball.js
··· 50 50 [ true, false ].forEach( function( isHemi ) { 51 51 var shape = isHemi ? hemi : cone; 52 52 53 - for ( var i=0; i < 5; i++ ) { 53 + for ( var i = 0; i < 5; i++ ) { 54 54 var rotor1 = new Zdog.Anchor({ 55 55 addTo: illo, 56 56 rotate: { y: TAU/5 * i }, ··· 63 63 shape.copy({ 64 64 addTo: rotor2, 65 65 color: colorWheel[i], 66 - backface: colorWheel[ (i+7) % 5 ], 66 + backface: colorWheel[ ( i + 7 ) % 5 ], 67 67 }); 68 68 } 69 - }); 69 + } ); 70 70 71 71 // ----- animate ----- // 72 72 73 73 var keyframes = [ 74 - { x: TAU*0, y: TAU*0 }, 74 + { x: TAU * 0, y: TAU * 0 }, 75 75 { x: TAU/2, y: TAU/2 }, 76 - { x: TAU*1, y: TAU*1 }, 76 + { x: TAU * 1, y: TAU * 1 }, 77 77 ]; 78 78 79 79 var ticker = 0; ··· 90 90 if ( !isSpinning ) { 91 91 return; 92 92 } 93 - var progress = ticker / cycleCount; 93 + var progress = ticker/cycleCount; 94 94 var tween = Zdog.easeInOut( progress % 1, 3 ); 95 95 var turn = Math.floor( progress % turnLimit ); 96 96 var keyA = keyframes[ turn ];
+6 -6
demos/houses/houses.js
··· 15 15 [ Zdog.Rect, Zdog.Shape, Zdog.Ellipse ].forEach( function( Item ) { 16 16 Item.defaults.fill = true; 17 17 Item.defaults.stroke = false; 18 - }); 18 + } ); 19 19 20 20 var initRotate = { y: TAU/8 }; 21 21 var turnRatio = 1 / Math.sin( TAU/8 ); ··· 79 79 { arc: [ 80 80 { x: -2, y: -3 }, 81 81 { x: 0, y: -3 }, 82 - ]}, 82 + ] }, 83 83 { arc: [ 84 84 { x: 2, y: -3 }, 85 85 { x: 2, y: -1 }, 86 - ]}, 86 + ] }, 87 87 { x: 2, y: 3 }, 88 88 ], 89 89 translate: { x: 2, y: 4 }, ··· 99 99 backGroup.children.forEach( function( child, i ) { 100 100 // orange windows, yellow wall 101 101 child.color = i ? orange : yellow; 102 - }); 102 + } ); 103 103 104 104 var rightGroup = new Zdog.Group({ 105 105 addTo: house, ··· 153 153 leftGroup.children.forEach( function( child, i ) { 154 154 // eggplant windows, yellow wall 155 155 child.color = i ? eggplant : orange; 156 - }); 156 + } ); 157 157 158 158 // front roof 159 159 var frontRoof = new Zdog.Shape({ ··· 193 193 194 194 function animate() { 195 195 if ( isSpinning ) { 196 - var progress = ticker / cycleCount; 196 + var progress = ticker/cycleCount; 197 197 var tween = Zdog.easeInOut( progress % 1, 3 ); 198 198 illo.rotate.y = tween * TAU + initRotate.y; 199 199 ticker++;
+10 -13
demos/kid-kit/kid-kit.js
··· 85 85 translate: { x: 8, z: 11 }, 86 86 }); 87 87 88 - 89 88 // ears 90 89 var frontEarZ = 4; 91 90 var topEarY = -30; ··· 127 126 var innerEarXShift = 4; 128 127 new Zdog.Shape({ 129 128 path: [ 130 - { x: earA.x - innerEarXShift, y: earA.y-3 }, 131 - { x: earD.x, y: earD.y+5 }, 132 - { x: earE.x + innerEarXShift, y: earE.y+2 }, 129 + { x: earA.x - innerEarXShift, y: earA.y - 3 }, 130 + { x: earD.x, y: earD.y + 5 }, 131 + { x: earE.x + innerEarXShift, y: earE.y + 2 }, 133 132 ], 134 133 addTo: earAnchor, 135 134 color: offWhite, ··· 141 140 scale: { x: -1 }, 142 141 }); 143 142 144 - 145 - //var whiskerX0 = 10*xSide; 146 - //var whiskerX1 = 17*xSide; 147 - //var whiskerY0 = -6+yShift; 148 - //var whiskerY1 = -2+yShift; 143 + // var whiskerX0 = 10*xSide; 144 + // var whiskerX1 = 17*xSide; 145 + // var whiskerY0 = -6+yShift; 146 + // var whiskerY1 = -2+yShift; 149 147 150 148 // whiskers 151 149 var whisker = new Zdog.Shape({ ··· 200 198 }); 201 199 // hand 202 200 new Zdog.Shape({ 203 - path: [ { x: 11, y: 18, z: -1} ], 201 + path: [ { x: 11, y: 18, z: -1 } ], 204 202 addTo: armAnchor, 205 203 color: eggplant, 206 204 stroke: 10, ··· 258 256 scale: { x: -1 }, 259 257 }); 260 258 261 - var vNeckY = ( cloakY1+cloakY2 ) / 2; 262 - var vNeckZ = ( cloakZ2+cloakZ1 ) / 2; 259 + var vNeckY = ( cloakY1 + cloakY2 )/2; 260 + var vNeckZ = ( cloakZ2 + cloakZ1 )/2; 263 261 new Zdog.Shape({ 264 262 path: [ 265 263 { x: -cloakX0, y: cloakY1, z: cloakZ1 }, ··· 292 290 cloakSide.copyGraph({ 293 291 scale: { z: -1 }, 294 292 }); 295 - 296 293 297 294 // ----- animate ----- // 298 295
+22 -22
demos/kirby-parasol/kirby-parasol.js
··· 41 41 [ -1, 1 ].forEach( function( xSide ) { 42 42 var eyeGroup = new Zdog.Group({ 43 43 addTo: face, 44 - translate: { x: 2.4*xSide, y: -2 }, 44 + translate: { x: 2.4 * xSide, y: -2 }, 45 45 rotate: { x: -0.1 }, 46 46 }); 47 47 // eye ··· 67 67 // cheek holder 68 68 var cheekHolder = new Zdog.Anchor({ 69 69 addTo: body, 70 - rotate: { y: 0.6*xSide }, 70 + rotate: { y: 0.6 * xSide }, 71 71 }); 72 72 73 73 new Zdog.Ellipse({ ··· 79 79 stroke: 1, 80 80 }); 81 81 82 - }); 82 + } ); 83 83 84 84 // mouth 85 85 new Zdog.Shape({ ··· 89 89 { x: 1.1, y: 0 }, 90 90 { x: 1.1, y: 0.2 }, 91 91 { x: 1.1, y: 0.5 }, 92 - ]}, 92 + ] }, 93 93 { bezier: [ 94 94 { x: 1.1, y: 1.1 }, 95 95 { x: 0.2, y: 1.8 }, 96 96 { x: 0, y: 1.8 }, 97 - ]}, 97 + ] }, 98 98 { bezier: [ 99 99 { x: -0.2, y: 1.8 }, 100 100 { x: -1.1, y: 1.1 }, 101 101 { x: -1.1, y: 0.5 }, 102 - ]}, 102 + ] }, 103 103 { bezier: [ 104 104 { x: -1.1, y: 0.2 }, 105 105 { x: -1.1, y: 0 }, 106 106 { x: 0, y: 0 }, 107 - ]}, 107 + ] }, 108 108 ], 109 109 addTo: face, 110 110 translate: { y: 2, z: -0.5 }, ··· 140 140 { arc: [ 141 141 { x: 2, y: -2 }, 142 142 { x: 2, y: 0 }, 143 - ]}, 143 + ] }, 144 144 { arc: [ 145 145 { x: 2, y: 5 }, 146 146 { x: 0, y: 5 }, 147 - ]}, 147 + ] }, 148 148 { arc: [ 149 149 { x: -2, y: 5 }, 150 150 { x: -2, y: 0 }, 151 - ]}, 151 + ] }, 152 152 { arc: [ 153 153 { x: -2, y: -2 }, 154 154 { x: 0, y: -2 }, 155 - ]}, 155 + ] }, 156 156 ], 157 157 addTo: body, 158 158 translate: { x: -1, y: 9, z: -9 }, ··· 188 188 var path = []; 189 189 var starRadiusA = 3; 190 190 var starRadiusB = 1.7; 191 - for ( var i=0; i<10; i++ ) { 191 + for ( var i = 0; i < 10; i++ ) { 192 192 var radius = i % 2 ? starRadiusA : starRadiusB; 193 193 var angle = TAU * i/10 + TAU/4; 194 194 var point = { ··· 198 198 path.push( point ); 199 199 } 200 200 return path; 201 - })(); 201 + } )(); 202 202 // star shape 203 203 var star = new Zdog.Shape({ 204 204 path: starPath, ··· 217 217 { arc: [ 218 218 { z: 0, y: 4 }, 219 219 { z: 3, y: 4 }, 220 - ]}, 220 + ] }, 221 221 { arc: [ 222 222 { z: 6, y: 4 }, 223 223 { z: 6, y: 1 }, 224 - ]}, 224 + ] }, 225 225 ], 226 226 addTo: umbrella, 227 227 translate: { y: 23 }, ··· 234 234 ( function() { 235 235 var umbPanelX = 14 * Math.sin( TAU/24 ); 236 236 var umbPanelZ = 14 * Math.cos( TAU/24 ); 237 - for ( var i=0; i<12; i++ ) { 238 - var colorSide = Math.floor( i / 2 ) % 2; 237 + for ( var i = 0; i < 12; i++ ) { 238 + var colorSide = Math.floor( i/2 ) % 2; 239 239 new Zdog.Shape({ 240 240 path: [ 241 241 { x: 0, y: 0, z: 0 }, 242 242 { arc: [ 243 243 { x: -umbPanelX, y: 0, z: umbPanelZ }, 244 244 { x: -umbPanelX, y: 14, z: umbPanelZ }, 245 - ]}, 245 + ] }, 246 246 { x: umbPanelX, y: 14, z: umbPanelZ }, 247 247 { arc: [ 248 248 { x: umbPanelX, y: 0, z: umbPanelZ }, 249 249 { x: 0, y: 0, z: 0 }, 250 - ]}, 250 + ] }, 251 251 ], 252 252 addTo: umbrella, 253 253 rotate: { y: TAU/12 * i }, ··· 256 256 fill: true, 257 257 }); 258 258 } 259 - })(); 259 + } )(); 260 260 261 261 // floater stars 262 262 ( function() { 263 - for ( var i=0; i < 6; i++ ) { 263 + for ( var i = 0; i < 6; i++ ) { 264 264 var starHolder = new Zdog.Anchor({ 265 265 addTo: umbrella, 266 266 translate: { y: 10 }, ··· 271 271 translate: { z: 28 }, 272 272 }); 273 273 } 274 - })(); 274 + } )(); 275 275 276 276 // ----- animate ----- // 277 277
+2 -3
demos/no-illo-canvas/no-illo-canvas.js
··· 61 61 62 62 animate(); 63 63 64 - 65 64 // ----- drag ----- // 66 65 67 66 var dragStartRX, dragStartRY; ··· 76 75 dragStartRY = scene.rotate.y; 77 76 }, 78 77 onDragMove: function( pointer, moveX, moveY ) { 79 - scene.rotate.x = dragStartRX - ( moveY / minSize * TAU ); 80 - scene.rotate.y = dragStartRY - ( moveX / minSize * TAU ); 78 + scene.rotate.x = dragStartRX - ( moveY/minSize * TAU ); 79 + scene.rotate.y = dragStartRY - ( moveX/minSize * TAU ); 81 80 }, 82 81 });
+4 -4
demos/no-illo-svg/no-illo-svg.js
··· 7 7 var svgWidth = svg.getAttribute('width'); 8 8 var svgHeight = svg.getAttribute('height'); 9 9 // set viewBox for zoom & centering 10 - var viewWidth = svgWidth / zoom; 11 - var viewHeight = svgHeight / zoom; 10 + var viewWidth = svgWidth/zoom; 11 + var viewHeight = svgHeight/zoom; 12 12 svg.setAttribute( 'viewBox', -viewWidth/2 + ' ' + -viewHeight/2 + ' ' + 13 13 viewWidth + ' ' + viewHeight ); 14 14 // rendering variable ··· 75 75 dragStartRY = scene.rotate.y; 76 76 }, 77 77 onDragMove: function( pointer, moveX, moveY ) { 78 - scene.rotate.x = dragStartRX - ( moveY / minSize * TAU ); 79 - scene.rotate.y = dragStartRY - ( moveX / minSize * TAU ); 78 + scene.rotate.x = dragStartRX - ( moveY/minSize * TAU ); 79 + scene.rotate.y = dragStartRY - ( moveX/minSize * TAU ); 80 80 }, 81 81 });
+3 -3
demos/path-commands/path-commands.js
··· 48 48 { arc: [ 49 49 { x: 2, y: -6 }, // corner 50 50 { x: 2, y: 2 }, // end point 51 - ]}, 51 + ] }, 52 52 { arc: [ // start next arc from last end point 53 53 { x: 2, y: 6 }, // corner 54 54 { x: 6, y: 6 }, // end point 55 - ]}, 55 + ] }, 56 56 ], 57 57 translate: { x: -12, y: 12 }, 58 58 closed: false, ··· 69 69 { x: 2, y: -6 }, // start control point 70 70 { x: 2, y: 6 }, // end control point 71 71 { x: 6, y: 6 }, // end control point 72 - ]}, 72 + ] }, 73 73 ], 74 74 translate: { x: 12, y: 12 }, 75 75 closed: false,
+11 -11
demos/shade-and-shades/shade-and-shades.js
··· 9 9 [ Zdog.Shape, Zdog.Ellipse ].forEach( function( ShapeClass ) { 10 10 ShapeClass.defaults.stroke = 3; 11 11 ShapeClass.defaults.color = orange; 12 - }); 12 + } ); 13 13 14 14 var isSpinning = true; 15 15 var TAU = Zdog.TAU; ··· 39 39 { arc: [ 40 40 { x: -20, y: -20 }, 41 41 { x: 0, y: -20 }, 42 - ]}, 42 + ] }, 43 43 ], 44 - rotate: { y: TAU/6 * i -TAU/12 }, 44 + rotate: { y: TAU/6 * i - TAU/12 }, 45 45 addTo: illo, 46 46 }); 47 - }); 47 + } ); 48 48 49 49 // cap back 50 50 new Zdog.Ellipse({ ··· 62 62 { arc: [ 63 63 { x: -20, z: 6 }, 64 64 { x: -16, z: 12 }, 65 - ]}, 65 + ] }, 66 66 ], 67 67 addTo: illo, 68 68 translate: { y: 4 }, ··· 103 103 { x: -16, y: 4, z: 30 }, 104 104 brimEdge, 105 105 brimTip, 106 - ]}, 106 + ] }, 107 107 ], 108 108 }); 109 109 brimBridge.copy({ 110 - scale: { x: -1}, 110 + scale: { x: -1 }, 111 111 }); 112 112 113 113 // glasses front top ··· 131 131 { arc: [ 132 132 { x: 1, y: 1 }, 133 133 { x: 0, y: 1 }, 134 - ]}, 134 + ] }, 135 135 { arc: [ 136 136 { x: -1, y: 1 }, 137 137 { x: -1, y: 0 }, 138 - ]}, 138 + ] }, 139 139 ], 140 140 closed: true, 141 141 scale: 5, ··· 157 157 { arc: [ 158 158 { x: -12, y: 0 }, 159 159 { x: -12, y: 8 }, 160 - ]}, 160 + ] }, 161 161 ], 162 162 rotate: { y: TAU/4 }, 163 163 translate: { x: -16, y: 8 }, ··· 178 178 179 179 function animate() { 180 180 if ( isSpinning ) { 181 - var progress = ticker / cycleCount; 181 + var progress = ticker/cycleCount; 182 182 var tween = Zdog.easeInOut( progress % 1, 4 ); 183 183 illo.rotate.y = tween * TAU + initialRotate.y; 184 184 ticker++;
+1 -1
demos/shapes/shapes.js
··· 124 124 125 125 function animate() { 126 126 if ( isSpinning ) { 127 - var progress = ticker / cycleCount; 127 + var progress = ticker/cycleCount; 128 128 var theta = Zdog.easeInOut( progress % 1, 3 ) * TAU; 129 129 illo.rotate.y = theta * 2; 130 130 illo.rotate.x = Math.sin( theta ) * 0.5;
+30 -34
demos/solids/solids.js
··· 3 3 var illoElem = document.querySelector('.illo'); 4 4 var sceneSize = 96; 5 5 var TAU = Zdog.TAU; 6 - var ROOT3 = Math.sqrt(3); 7 - var ROOT5 = Math.sqrt(5); 8 - var PHI = ( 1 + ROOT5 ) / 2; 6 + var ROOT3 = Math.sqrt( 3 ); 7 + var ROOT5 = Math.sqrt( 5 ); 8 + var PHI = ( 1 + ROOT5 )/2; 9 9 var isSpinning = true; 10 10 var viewRotation = new Zdog.Vector(); 11 11 var displaySize; ··· 23 23 resize: 'fullscreen', 24 24 onResize: function( width, height ) { 25 25 displaySize = Math.min( width, height ); 26 - this.zoom = Math.floor( displaySize / sceneSize ); 26 + this.zoom = Math.floor( displaySize/sceneSize ); 27 27 }, 28 28 }); 29 29 ··· 56 56 backface: gold, 57 57 }); 58 58 59 - })(); 59 + } )(); 60 60 61 61 // ----- sphere ----- // 62 62 ··· 83 83 backface: orange, 84 84 }); 85 85 86 - })(); 86 + } )(); 87 87 88 88 // ----- cylinder ----- // 89 89 ··· 147 147 // backface: false, 148 148 }); 149 149 150 - 151 - for ( var i=0; i < 3; i++ ) { 150 + for ( var i = 0; i < 3; i++ ) { 152 151 var rotor1 = new Zdog.Anchor({ 153 152 addTo: tetrahedron, 154 153 rotate: { y: TAU/3 * -i }, ··· 156 155 var rotor2 = new Zdog.Anchor({ 157 156 addTo: rotor1, 158 157 translate: { z: inradius, y: height/2 }, 159 - rotate: { x: Math.acos(1/3) * -1 + TAU/4 }, 158 + rotate: { x: Math.acos( 1/3 ) * -1 + TAU/4 }, 160 159 }); 161 160 triangle.copy({ 162 161 addTo: rotor2, ··· 167 166 168 167 triangle.rotate.set({ x: -TAU/4, z: -TAU/2 }); 169 168 170 - })(); 169 + } )(); 171 170 172 171 // ----- octahedron ----- // 173 172 ··· 186 185 // radius of triangle with side length = 1 187 186 var radius = ROOT3/2 * 2/3; 188 187 var height = radius * 3/2; 189 - var tilt = Math.asin( 0.5 / height ); 188 + var tilt = Math.asin( 0.5/height ); 190 189 191 190 [ -1, 1 ].forEach( function( ySide ) { 192 - for ( var i=0; i < 4; i++ ) { 191 + for ( var i = 0; i < 4; i++ ) { 193 192 var rotor = new Zdog.Anchor({ 194 193 addTo: octahedron, 195 - rotate: { y: TAU/4 * (i + 1.5) * -1 }, 194 + rotate: { y: TAU/4 * ( i + 1.5 ) * -1 }, 196 195 }); 197 196 198 197 var anchor = new Zdog.Anchor({ ··· 210 209 scale: { y: ySide }, 211 210 stroke: false, 212 211 fill: true, 213 - color: colorWheel[ i + 0.5 + 0.5*ySide ], 212 + color: colorWheel[ i + 0.5 + 0.5 * ySide ], 214 213 backface: false, 215 214 }); 216 215 } 217 - }); 216 + } ); 218 217 219 - 220 - })(); 218 + } )(); 221 219 222 220 // ----- cube ----- // 223 221 ··· 251 249 solids.push( dodecahedron ); 252 250 253 251 // https://en.wikipedia.org/wiki/Regular_dodecahedron#Dimensions 254 - var midradius = ( PHI * PHI ) / 2; 252 + var midradius = ( PHI * PHI )/2; 255 253 256 254 // top & bottom faces 257 255 var face = new Zdog.Polygon({ ··· 272 270 color: eggplant, 273 271 }); 274 272 275 - 276 273 [ -1, 1 ].forEach( function( ySide ) { 277 - 278 274 279 275 var colorWheel = { 280 276 '-1': [ eggplant, garnet, gold, orange, garnet ], 281 277 1: [ yellow, gold, garnet, orange, gold ], 282 278 }[ ySide ]; 283 279 284 - for ( var i=0; i < 5; i++ ) { 280 + for ( var i = 0; i < 5; i++ ) { 285 281 var rotor1 = new Zdog.Anchor({ 286 282 addTo: dodecahedron, 287 283 rotate: { y: TAU/5 * i }, 288 284 }); 289 285 var rotor2 = new Zdog.Anchor({ 290 286 addTo: rotor1, 291 - rotate: { x: TAU/4*ySide - Math.atan(2) }, 287 + rotate: { x: TAU/4 * ySide - Math.atan( 2 ) }, 292 288 }); 293 289 294 290 face.copy({ ··· 298 294 color: colorWheel[i], 299 295 }); 300 296 } 301 - }); 297 + } ); 302 298 303 - })(); 299 + } )(); 304 300 305 301 // ----- isocahedron ----- // 306 302 ··· 320 316 var faceHeight = faceRadius * 3/2; 321 317 var capApothem = 0.5 / Math.tan( TAU/10 ); 322 318 var capRadius = 0.5 / Math.sin( TAU/10 ); 323 - var capTilt = Math.asin( capApothem / faceHeight ); 319 + var capTilt = Math.asin( capApothem/faceHeight ); 324 320 var capSagitta = capRadius - capApothem; 325 - var sideTilt = Math.asin( capSagitta / faceHeight ); 326 - var sideHeight = Math.sqrt( faceHeight*faceHeight - capSagitta*capSagitta ); 321 + var sideTilt = Math.asin( capSagitta/faceHeight ); 322 + var sideHeight = Math.sqrt( faceHeight * faceHeight - capSagitta * capSagitta ); 327 323 328 324 // var colorWheel = [ eggplant, garnet, orange, gold, yellow ]; 329 325 ··· 338 334 1: [ gold, garnet, eggplant, orange, orange ], 339 335 }[ ySide ]; 340 336 341 - for ( var i=0; i < 5; i++ ) { 337 + for ( var i = 0; i < 5; i++ ) { 342 338 var rotor = new Zdog.Anchor({ 343 339 addTo: isocahedron, 344 340 rotate: { y: TAU/5 * -i }, ··· 381 377 }); 382 378 383 379 } 384 - }); 380 + } ); 385 381 386 - })(); 382 + } )(); 387 383 388 384 // ----- animate ----- // 389 385 ··· 408 404 function update() { 409 405 410 406 if ( isSpinning ) { 411 - var progress = ticker / cycleCount; 407 + var progress = ticker/cycleCount; 412 408 var tween = Zdog.easeInOut( progress % 1, 4 ); 413 409 var turn = Math.floor( progress % turnLimit ); 414 410 var keyA = keyframes[ turn ]; ··· 420 416 421 417 solids.forEach( function( solid ) { 422 418 solid.rotate.set( viewRotation ); 423 - }); 419 + } ); 424 420 425 421 illo.updateGraph(); 426 422 } ··· 437 433 dragStartRY = viewRotation.y; 438 434 }, 439 435 onDragMove: function( pointer, moveX, moveY ) { 440 - viewRotation.x = dragStartRX - ( moveY / displaySize * TAU ); 441 - viewRotation.y = dragStartRY - ( moveX / displaySize * TAU ); 436 + viewRotation.x = dragStartRX - ( moveY/displaySize * TAU ); 437 + viewRotation.y = dragStartRY - ( moveX/displaySize * TAU ); 442 438 }, 443 439 });
+5 -6
demos/strutter/strutter.js
··· 93 93 94 94 var forearm = new Zdog.Shape({ 95 95 addTo: upperArm, 96 - path: [ { x: 0 }, { x: armSize-2 } ], 96 + path: [ { x: 0 }, { x: armSize - 2 } ], 97 97 translate: { x: armSize }, 98 98 rotate: isRight ? { z: TAU/16 * 3, y: TAU/4 } : 99 99 { z: -TAU/4, x: -TAU/32 * 2, y: TAU/8 }, ··· 108 108 color: gold, 109 109 }); 110 110 111 - }); 111 + } ); 112 112 113 113 var head = new Zdog.Anchor({ 114 114 addTo: illo, ··· 176 176 { arc: [ 177 177 { x: -1, z: 0 }, 178 178 { x: -1, z: -1 }, 179 - ]}, 179 + ] }, 180 180 { x: -1, z: 0 }, 181 181 ], 182 182 color: eggplant, ··· 190 190 { arc: [ 191 191 { x: -1, z: 1 }, 192 192 { x: 0, z: 1 }, 193 - ]}, 193 + ] }, 194 194 { x: 0, z: 0 }, 195 195 ], 196 196 color: eggplant, ··· 201 201 scale: brim.scale.copy().multiply({ x: -1 }), 202 202 }); 203 203 204 - 205 204 // ----- animate ----- // 206 205 207 206 var ticker = 0; ··· 209 208 210 209 function animate() { 211 210 if ( isSpinning ) { 212 - var progress = ticker / cycleCount; 211 + var progress = ticker/cycleCount; 213 212 illo.rotate.y = Zdog.easeInOut( progress % 1, 4 ) * TAU - TAU/8; 214 213 ticker++; 215 214 }
+6 -7
demos/zdog-logo/zdog-logo.js
··· 19 19 isSpinning = false; 20 20 }, 21 21 onResize: function( width, height ) { 22 - this.zoom = Math.floor( Math.min( width, height ) * 2 / sceneSize ) / 2; 22 + this.zoom = Math.floor( Math.min( width, height ) * 2/sceneSize ) / 2; 23 23 }, 24 24 }); 25 25 ··· 33 33 addTo: bigGroup, 34 34 updateSort: true, 35 35 }); 36 - 37 36 38 37 // top 39 38 var topSide = new Zdog.Rect({ ··· 97 96 98 97 var slope = new Zdog.Rect({ 99 98 addTo: backGroup, 100 - width: Math.sqrt( slopeH*slopeH + slopeW*slopeW ), 99 + width: Math.sqrt( slopeH * slopeH + slopeW * slopeW ), 101 100 height: depth, 102 101 translate: { x: -5, y: -1 }, 103 102 rotate: { x: TAU/4, y: slopeAngle }, ··· 146 145 { arc: [ 147 146 { x: tongueS, y: tongueTip }, 148 147 { x: 0, y: tongueTip }, 149 - ]}, 148 + ] }, 150 149 { arc: [ 151 150 { x: -tongueS, y: tongueTip }, 152 151 { x: -tongueS, y: tongueH }, 153 - ]}, 152 + ] }, 154 153 ], 155 - rotate: { x: TAU/4 - Math.atan(16/22) }, 154 + rotate: { x: TAU/4 - Math.atan( 16/22 ) }, 156 155 fill: true, 157 156 stroke: 4, 158 157 color: eggplant, ··· 251 250 if ( !isSpinning ) { 252 251 return; 253 252 } 254 - var progress = ticker / cycleCount; 253 + var progress = ticker/cycleCount; 255 254 var tween = Zdog.easeInOut( progress % 1, 4 ); 256 255 var turn = Math.floor( progress % turnLimit ); 257 256 var keyA = keyframes[ turn ];
+11 -11
js/anchor.js
··· 91 91 // update children 92 92 this.children.forEach( function( child ) { 93 93 child.update(); 94 - }); 94 + } ); 95 95 this.transform( this.translate, this.rotate, this.scale ); 96 96 }; 97 97 ··· 104 104 // transform children 105 105 this.children.forEach( function( child ) { 106 106 child.transform( translation, rotation, scale ); 107 - }); 107 + } ); 108 108 }; 109 109 110 110 Anchor.prototype.updateGraph = function() { ··· 112 112 this.updateFlatGraph(); 113 113 this.flatGraph.forEach( function( item ) { 114 114 item.updateSortValue(); 115 - }); 115 + } ); 116 116 // z-sort 117 117 this.flatGraph.sort( Anchor.shapeSorter ); 118 118 }; ··· 132 132 set: function( graph ) { 133 133 this._flatGraph = graph; 134 134 }, 135 - }); 135 + } ); 136 136 137 137 Anchor.prototype.updateFlatGraph = function() { 138 138 this.flatGraph = this.getFlatGraph(); ··· 148 148 this.children.forEach( function( child ) { 149 149 var childFlatGraph = child.getFlatGraph(); 150 150 Array.prototype.push.apply( flatGraph, childFlatGraph ); 151 - }); 151 + } ); 152 152 return flatGraph; 153 153 }; 154 154 ··· 168 168 } 169 169 this.flatGraph.forEach( function( item ) { 170 170 item.render( ctx, CanvasRenderer ); 171 - }); 171 + } ); 172 172 }; 173 173 174 174 Anchor.prototype.renderGraphSvg = function( svg ) { ··· 178 178 } 179 179 this.flatGraph.forEach( function( item ) { 180 180 item.render( svg, SvgRenderer ); 181 - }); 181 + } ); 182 182 }; 183 183 184 184 // ----- misc ----- // ··· 202 202 child.copyGraph({ 203 203 addTo: clone, 204 204 }); 205 - }); 205 + } ); 206 206 return clone; 207 207 }; 208 208 ··· 227 227 Item.defaults = utils.extend( {}, Super.defaults ); 228 228 utils.extend( Item.defaults, defaults ); 229 229 // create optionKeys 230 - Item.optionKeys = Super.optionKeys.slice(0); 230 + Item.optionKeys = Super.optionKeys.slice( 0 ); 231 231 // add defaults keys to optionKeys, dedupe 232 232 Object.keys( Item.defaults ).forEach( function( key ) { 233 233 if ( !Item.optionKeys.indexOf( key ) != 1 ) { 234 234 Item.optionKeys.push( key ); 235 235 } 236 - }); 236 + } ); 237 237 238 238 Item.subclass = getSubclass( Item ); 239 239 ··· 245 245 246 246 return Anchor; 247 247 248 - })); 248 + } ) );
+1 -1
js/boilerplate.js
··· 72 72 73 73 return Zdog; 74 74 75 - })); 75 + } ) );
+15 -13
js/box.js
··· 38 38 delete boxDefaults.path; 39 39 faceNames.forEach( function( faceName ) { 40 40 boxDefaults[ faceName ] = true; 41 - }); 41 + } ); 42 42 utils.extend( boxDefaults, { 43 43 width: 1, 44 44 height: 1, 45 45 depth: 1, 46 46 fill: true, 47 - }); 47 + } ); 48 48 49 49 var Box = Anchor.subclass( boxDefaults ); 50 50 51 + /* eslint-disable no-self-assign */ 51 52 Box.prototype.create = function( options ) { 52 53 Anchor.prototype.create.call( this, options ); 53 54 this.updatePath(); ··· 61 62 this[ faceName ] = this[ faceName ]; 62 63 }, this ); 63 64 }; 65 + /* eslint-enable no-self-assign */ 64 66 65 67 faceNames.forEach( function( faceName ) { 66 68 var _faceName = '_' + faceName; ··· 72 74 this[ _faceName ] = value; 73 75 this.setFace( faceName, value ); 74 76 }, 75 - }); 76 - }); 77 + } ); 78 + } ); 77 79 78 80 Box.prototype.setFace = function( faceName, value ) { 79 81 var rectProperty = faceName + 'Rect'; ··· 103 105 frontFace: { 104 106 width: this.width, 105 107 height: this.height, 106 - translate: { z: this.depth/2 }, 108 + translate: { z: this.depth / 2 }, 107 109 }, 108 110 rearFace: { 109 111 width: this.width, 110 112 height: this.height, 111 - translate: { z: -this.depth/2 }, 113 + translate: { z: -this.depth / 2 }, 112 114 rotate: { y: TAU/2 }, 113 115 }, 114 116 leftFace: { 115 117 width: this.depth, 116 118 height: this.height, 117 - translate: { x: -this.width/2 }, 119 + translate: { x: -this.width / 2 }, 118 120 rotate: { y: -TAU/4 }, 119 121 }, 120 122 rightFace: { 121 123 width: this.depth, 122 124 height: this.height, 123 - translate: { x: this.width/2 }, 125 + translate: { x: this.width / 2 }, 124 126 rotate: { y: TAU/4 }, 125 127 }, 126 128 topFace: { 127 129 width: this.width, 128 130 height: this.depth, 129 - translate: { y: -this.height/2 }, 131 + translate: { y: -this.height / 2 }, 130 132 rotate: { x: -TAU/4 }, 131 133 }, 132 134 bottomFace: { 133 135 width: this.width, 134 136 height: this.depth, 135 - translate: { y: this.height/2 }, 137 + translate: { y: this.height / 2 }, 136 138 rotate: { x: TAU/4 }, 137 139 }, 138 140 }[ faceName ]; ··· 160 162 } 161 163 }, this ); 162 164 }, 163 - }); 164 - }); 165 + } ); 166 + } ); 165 167 166 168 return Box; 167 169 168 - })); 170 + } ) );
+2 -2
js/canvas-renderer.js
··· 41 41 this.begin( ctx, elem ); 42 42 pathCommands.forEach( function( command ) { 43 43 command.render( ctx, elem, CanvasRenderer ); 44 - }); 44 + } ); 45 45 if ( isClosed ) { 46 46 this.closePath( ctx, elem ); 47 47 } ··· 68 68 69 69 return CanvasRenderer; 70 70 71 - })); 71 + } ) );
+7 -7
js/cone.js
··· 23 23 24 24 var TAU = utils.TAU; 25 25 26 - Cone.prototype.create = function(/* options */) { 26 + Cone.prototype.create = function( /* options */) { 27 27 // call super 28 28 Ellipse.prototype.create.apply( this, arguments ); 29 29 // composite shape, create child shapes ··· 68 68 var apexDistance = this.renderApex.magnitude2d(); 69 69 var normalDistance = this.renderNormal.magnitude2d(); 70 70 // eccentricity 71 - var eccenAngle = Math.acos( normalDistance / scale ); 71 + var eccenAngle = Math.acos( normalDistance/scale ); 72 72 var eccen = Math.sin( eccenAngle ); 73 - var radius = this.diameter/2 * scale; 73 + var radius = this.diameter / 2 * scale; 74 74 // does apex extend beyond eclipse of face 75 75 var isApexVisible = radius * eccen < apexDistance; 76 76 if ( !isApexVisible ) { ··· 79 79 // update tangents 80 80 var apexAngle = Math.atan2( this.renderNormal.y, this.renderNormal.x ) + 81 81 TAU/2; 82 - var projectLength = apexDistance / eccen; 83 - var projectAngle = Math.acos( radius / projectLength ); 82 + var projectLength = apexDistance/eccen; 83 + var projectAngle = Math.acos( radius/projectLength ); 84 84 // set tangent points 85 85 var tangentA = this.tangentA; 86 86 var tangentB = this.tangentB; ··· 116 116 } 117 117 if ( !this.surfaceSvgElement ) { 118 118 // create svgElement 119 - this.surfaceSvgElement = document.createElementNS( svgURI, 'path'); 119 + this.surfaceSvgElement = document.createElementNS( svgURI, 'path' ); 120 120 this.surfaceSvgElement.setAttribute( 'stroke-linecap', 'round' ); 121 121 this.surfaceSvgElement.setAttribute( 'stroke-linejoin', 'round' ); 122 122 } ··· 130 130 131 131 return Cone; 132 132 133 - })); 133 + } ) );
+6 -6
js/cylinder.js
··· 73 73 } 74 74 if ( !this.svgElement ) { 75 75 // create svgElement 76 - this.svgElement = document.createElementNS( svgURI, 'path'); 76 + this.svgElement = document.createElementNS( svgURI, 'path' ); 77 77 } 78 78 return this.svgElement; 79 79 }; ··· 99 99 100 100 var TAU = utils.TAU; 101 101 102 - Cylinder.prototype.create = function(/* options */) { 102 + Cylinder.prototype.create = function( /* options */) { 103 103 // call super 104 104 Shape.prototype.create.apply( this, arguments ); 105 105 // composite shape, create child shapes ··· 109 109 color: this.color, 110 110 visible: this.visible, 111 111 }); 112 - var baseZ = this.length/2; 112 + var baseZ = this.length / 2; 113 113 var baseColor = this.backface || true; 114 114 // front outside base 115 115 this.frontBase = this.group.frontBase = new Ellipse({ ··· 153 153 this.group[ property ] = value; 154 154 } 155 155 }, 156 - }); 157 - }); 156 + } ); 157 + } ); 158 158 159 159 // TODO child property setter for backface, frontBaseColor, & rearBaseColor 160 160 161 161 return Cylinder; 162 162 163 - })); 163 + } ) );
+2 -2
js/dragger.js
··· 115 115 Dragger.prototype.onmouseup = 116 116 Dragger.prototype.onpointerup = 117 117 Dragger.prototype.ontouchend = 118 - Dragger.prototype.dragEnd = function(/* event */) { 118 + Dragger.prototype.dragEnd = function( /* event */) { 119 119 window.removeEventListener( moveEvent, this ); 120 120 window.removeEventListener( upEvent, this ); 121 121 this.onDragEnd(); ··· 123 123 124 124 return Dragger; 125 125 126 - })); 126 + } ) );
+7 -7
js/ellipse.js
··· 26 26 Ellipse.prototype.setPath = function() { 27 27 var width = this.width != undefined ? this.width : this.diameter; 28 28 var height = this.height != undefined ? this.height : this.diameter; 29 - var x = width / 2; 30 - var y = height / 2; 29 + var x = width/2; 30 + var y = height/2; 31 31 this.path = [ 32 32 { x: 0, y: -y }, 33 33 { arc: [ // top right 34 34 { x: x, y: -y }, 35 35 { x: x, y: 0 }, 36 - ]}, 36 + ] }, 37 37 ]; 38 38 // bottom right 39 39 if ( this.quarters > 1 ) { 40 40 this.path.push({ arc: [ 41 41 { x: x, y: y }, 42 42 { x: 0, y: y }, 43 - ]}); 43 + ] }); 44 44 } 45 45 // bottom left 46 46 if ( this.quarters > 2 ) { 47 47 this.path.push({ arc: [ 48 48 { x: -x, y: y }, 49 49 { x: -x, y: 0 }, 50 - ]}); 50 + ] }); 51 51 } 52 52 // top left 53 53 if ( this.quarters > 3 ) { 54 54 this.path.push({ arc: [ 55 55 { x: -x, y: -y }, 56 56 { x: 0, y: -y }, 57 - ]}); 57 + ] }); 58 58 } 59 59 }; 60 60 61 61 return Ellipse; 62 62 63 - })); 63 + } ) );
+3 -3
js/group.js
··· 26 26 this.flatGraph.forEach( function( item ) { 27 27 item.updateSortValue(); 28 28 sortValueTotal += item.sortValue; 29 - }); 29 + } ); 30 30 // average sort value of all points 31 31 // def not geometrically correct, but works for me 32 32 this.sortValue = sortValueTotal / this.flatGraph.length; ··· 45 45 46 46 this.flatGraph.forEach( function( item ) { 47 47 item.render( ctx, renderer ); 48 - }); 48 + } ); 49 49 }; 50 50 51 51 // actual group flatGraph only used inside group ··· 62 62 63 63 return Group; 64 64 65 - })); 65 + } ) );
+6 -6
js/hemisphere.js
··· 21 21 22 22 var TAU = utils.TAU; 23 23 24 - Hemisphere.prototype.create = function(/* options */) { 24 + Hemisphere.prototype.create = function( /* options */) { 25 25 // call super 26 26 Ellipse.prototype.create.apply( this, arguments ); 27 27 // composite shape, create child shapes 28 28 this.apex = new Anchor({ 29 29 addTo: this, 30 - translate: { z: this.diameter/2 }, 30 + translate: { z: this.diameter / 2 }, 31 31 }); 32 32 // vector used for calculation 33 33 this.renderCentroid = new Vector(); ··· 52 52 } 53 53 var elem = this.getDomeRenderElement( ctx, renderer ); 54 54 var contourAngle = Math.atan2( this.renderNormal.y, this.renderNormal.x ); 55 - var domeRadius = this.diameter/2 * this.renderNormal.magnitude(); 55 + var domeRadius = this.diameter / 2 * this.renderNormal.magnitude(); 56 56 var x = this.renderOrigin.x; 57 57 var y = this.renderOrigin.y; 58 58 ··· 64 64 ctx.arc( x, y, domeRadius, startAngle, endAngle ); 65 65 } else if ( renderer.isSvg ) { 66 66 // svg 67 - contourAngle = (contourAngle - TAU/4) / TAU * 360; 67 + contourAngle = ( contourAngle - TAU/4 ) / TAU * 360; 68 68 this.domeSvgElement.setAttribute( 'd', 'M ' + -domeRadius + ',0 A ' + 69 69 domeRadius + ',' + domeRadius + ' 0 0 1 ' + domeRadius + ',0' ); 70 70 this.domeSvgElement.setAttribute( 'transform', ··· 84 84 } 85 85 if ( !this.domeSvgElement ) { 86 86 // create svgElement 87 - this.domeSvgElement = document.createElementNS( svgURI, 'path'); 87 + this.domeSvgElement = document.createElementNS( svgURI, 'path' ); 88 88 this.domeSvgElement.setAttribute( 'stroke-linecap', 'round' ); 89 89 this.domeSvgElement.setAttribute( 'stroke-linejoin', 'round' ); 90 90 } ··· 93 93 94 94 return Hemisphere; 95 95 96 - })); 96 + } ) );
+6 -6
js/illustration.js
··· 155 155 ctx.clearRect( 0, 0, this.canvasWidth, this.canvasHeight ); 156 156 ctx.save(); 157 157 if ( this.centered ) { 158 - var centerX = this.width/2 * this.pixelRatio; 159 - var centerY = this.height/2 * this.pixelRatio; 158 + var centerX = this.width / 2 * this.pixelRatio; 159 + var centerY = this.height / 2 * this.pixelRatio; 160 160 ctx.translate( centerX, centerY ); 161 161 } 162 162 var scale = this.pixelRatio * this.zoom; ··· 226 226 this.bindDrag( this.element ); 227 227 }; 228 228 229 - Illustration.prototype.dragStart = function(/* event, pointer */) { 229 + Illustration.prototype.dragStart = function( /* event, pointer */) { 230 230 this.dragStartRX = this.dragRotate.rotate.x; 231 231 this.dragStartRY = this.dragRotate.rotate.y; 232 232 Dragger.prototype.dragStart.apply( this, arguments ); ··· 236 236 var moveX = pointer.pageX - this.dragStartX; 237 237 var moveY = pointer.pageY - this.dragStartY; 238 238 var displaySize = Math.min( this.width, this.height ); 239 - var moveRY = moveX / displaySize * TAU; 240 - var moveRX = moveY / displaySize * TAU; 239 + var moveRY = moveX/displaySize * TAU; 240 + var moveRX = moveY/displaySize * TAU; 241 241 this.dragRotate.rotate.x = this.dragStartRX - moveRX; 242 242 this.dragRotate.rotate.y = this.dragStartRY - moveRY; 243 243 Dragger.prototype.dragMove.apply( this, arguments ); ··· 245 245 246 246 return Illustration; 247 247 248 - })); 248 + } ) );
+4 -2
js/index.js
··· 30 30 /* globals define */ // AMD 31 31 define( 'zdog', [], root.Zdog ); 32 32 } 33 - })( this, function factory( Zdog, CanvasRenderer, SvgRenderer, Vector, Anchor, 33 + /* eslint-disable max-params */ 34 + } )( this, function factory( Zdog, CanvasRenderer, SvgRenderer, Vector, Anchor, 34 35 Dragger, Illustration, PathCommand, Shape, Group, Rect, RoundedRect, 35 36 Ellipse, Polygon, Hemisphere, Cylinder, Cone, Box ) { 37 + /* eslint-enable max-params */ 36 38 37 39 Zdog.CanvasRenderer = CanvasRenderer; 38 40 Zdog.SvgRenderer = SvgRenderer; ··· 53 55 Zdog.Box = Box; 54 56 55 57 return Zdog; 56 - }); 58 + } );
+3 -3
js/path-command.js
··· 45 45 this.renderPoints.forEach( function( renderPoint, i ) { 46 46 var point = points[i]; 47 47 renderPoint.set( point ); 48 - }); 48 + } ); 49 49 }; 50 50 51 51 PathCommand.prototype.transform = function( translation, rotation, scale ) { 52 52 this.renderPoints.forEach( function( renderPoint ) { 53 53 renderPoint.transform( translation, rotation, scale ); 54 - }); 54 + } ); 55 55 }; 56 56 57 57 PathCommand.prototype.render = function( ctx, elem, renderer ) { ··· 88 88 89 89 return PathCommand; 90 90 91 - })); 91 + } ) );
+3 -3
js/polygon.js
··· 23 23 24 24 Polygon.prototype.setPath = function() { 25 25 this.path = []; 26 - for ( var i=0; i < this.sides; i++ ) { 27 - var theta = i/this.sides * TAU - TAU/4; 26 + for ( var i = 0; i < this.sides; i++ ) { 27 + var theta = i / this.sides * TAU - TAU/4; 28 28 var x = Math.cos( theta ) * this.radius; 29 29 var y = Math.sin( theta ) * this.radius; 30 30 this.path.push({ x: x, y: y }); ··· 33 33 34 34 return Polygon; 35 35 36 - })); 36 + } ) );
+1 -1
js/rect.js
··· 33 33 34 34 return Rect; 35 35 36 - })); 36 + } ) );
+5 -5
js/rounded-rect.js
··· 37 37 { arc: [ 38 38 { x: xA, y: -yA }, 39 39 { x: xA, y: -yB }, 40 - ]}, 40 + ] }, 41 41 ]; 42 42 // bottom right corner 43 43 if ( yB ) { ··· 46 46 path.push({ arc: [ 47 47 { x: xA, y: yA }, 48 48 { x: xB, y: yA }, 49 - ]}); 49 + ] }); 50 50 // bottom left corner 51 51 if ( xB ) { 52 52 path.push({ x: -xB, y: yA }); ··· 54 54 path.push({ arc: [ 55 55 { x: -xA, y: yA }, 56 56 { x: -xA, y: yB }, 57 - ]}); 57 + ] }); 58 58 // top left corner 59 59 if ( yB ) { 60 60 path.push({ x: -xA, y: -yB }); ··· 62 62 path.push({ arc: [ 63 63 { x: -xA, y: -yA }, 64 64 { x: -xB, y: -yA }, 65 - ]}); 65 + ] }); 66 66 67 67 // back to top right corner 68 68 if ( xB ) { ··· 74 74 75 75 return RoundedRect; 76 76 77 - })); 77 + } ) );
+7 -7
js/shape.js
··· 79 79 // update previousLastPoint 80 80 previousPoint = command.endRenderPoint; 81 81 return command; 82 - }); 82 + } ); 83 83 }; 84 84 85 85 // ----- update ----- // ··· 90 90 // reset command render points 91 91 this.pathCommands.forEach( function( command ) { 92 92 command.reset(); 93 - }); 93 + } ); 94 94 }; 95 95 96 96 Shape.prototype.transform = function( translation, rotation, scale ) { ··· 101 101 // transform points 102 102 this.pathCommands.forEach( function( command ) { 103 103 command.transform( translation, rotation, scale ); 104 - }); 104 + } ); 105 105 // transform children 106 106 this.children.forEach( function( child ) { 107 107 child.transform( translation, rotation, scale ); 108 - }); 108 + } ); 109 109 }; 110 110 111 111 Shape.prototype.updateSortValue = function() { ··· 124 124 for ( var i = 0; i < pointCount; i++ ) { 125 125 sortValueTotal += this.pathCommands[i].endRenderPoint.z; 126 126 } 127 - this.sortValue = sortValueTotal / pointCount; 127 + this.sortValue = sortValueTotal/pointCount; 128 128 }; 129 129 130 130 // ----- render ----- // ··· 204 204 } 205 205 if ( !this.svgElement ) { 206 206 // create svgElement 207 - this.svgElement = document.createElementNS( svgURI, 'path'); 207 + this.svgElement = document.createElementNS( svgURI, 'path' ); 208 208 this.svgElement.setAttribute( 'stroke-linecap', 'round' ); 209 209 this.svgElement.setAttribute( 'stroke-linejoin', 'round' ); 210 210 } ··· 213 213 214 214 return Shape; 215 215 216 - })); 216 + } ) );
+3 -3
js/svg-renderer.js
··· 39 39 getPointString( end ); 40 40 }; 41 41 42 - SvgRenderer.closePath = function(/* elem */) { 42 + SvgRenderer.closePath = function( /* elem */) { 43 43 return 'Z'; 44 44 }; 45 45 ··· 51 51 var pathValue = ''; 52 52 pathCommands.forEach( function( command ) { 53 53 pathValue += command.render( svg, elem, SvgRenderer ); 54 - }); 54 + } ); 55 55 if ( isClosed ) { 56 56 pathValue += this.closePath( svg, elem ); 57 57 } ··· 77 77 78 78 return SvgRenderer; 79 79 80 - })); 80 + } ) );
+5 -5
js/vector.js
··· 71 71 var sin = Math.sin( angle ); 72 72 var a = vec[ propA ]; 73 73 var b = vec[ propB ]; 74 - vec[ propA ] = a*cos - b*sin; 75 - vec[ propB ] = b*cos + a*sin; 74 + vec[ propA ] = a * cos - b * sin; 75 + vec[ propB ] = b * cos + a * sin; 76 76 } 77 77 78 78 Vector.prototype.isSame = function( pos ) { ··· 135 135 }; 136 136 137 137 Vector.prototype.magnitude = function() { 138 - var sum = this.x*this.x + this.y*this.y + this.z*this.z; 138 + var sum = this.x * this.x + this.y * this.y + this.z * this.z; 139 139 return getMagnitudeSqrt( sum ); 140 140 }; 141 141 ··· 148 148 } 149 149 150 150 Vector.prototype.magnitude2d = function() { 151 - var sum = this.x*this.x + this.y*this.y; 151 + var sum = this.x * this.x + this.y * this.y; 152 152 return getMagnitudeSqrt( sum ); 153 153 }; 154 154 ··· 158 158 159 159 return Vector; 160 160 161 - })); 161 + } ) );
+1371 -141
package-lock.json
··· 5 5 "requires": true, 6 6 "dependencies": { 7 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==", 8 + "version": "7.8.3", 9 + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", 10 + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", 11 11 "dev": true, 12 12 "requires": { 13 - "@babel/highlight": "^7.0.0" 13 + "@babel/highlight": "^7.8.3" 14 14 } 15 15 }, 16 + "@babel/helper-validator-identifier": { 17 + "version": "7.9.5", 18 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", 19 + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", 20 + "dev": true 21 + }, 16 22 "@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==", 23 + "version": "7.9.0", 24 + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", 25 + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", 20 26 "dev": true, 21 27 "requires": { 28 + "@babel/helper-validator-identifier": "^7.9.0", 22 29 "chalk": "^2.0.0", 23 - "esutils": "^2.0.2", 24 30 "js-tokens": "^4.0.0" 25 31 } 26 32 }, 33 + "@types/color-name": { 34 + "version": "1.1.1", 35 + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", 36 + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", 37 + "dev": true 38 + }, 27 39 "acorn": { 28 40 "version": "7.1.1", 29 41 "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", ··· 31 43 "dev": true 32 44 }, 33 45 "acorn-jsx": { 34 - "version": "5.1.0", 35 - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", 36 - "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", 46 + "version": "5.2.0", 47 + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", 48 + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", 37 49 "dev": true 38 50 }, 39 51 "ajv": { 40 - "version": "6.10.2", 41 - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", 42 - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", 52 + "version": "6.12.0", 53 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", 54 + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", 43 55 "dev": true, 44 56 "requires": { 45 - "fast-deep-equal": "^2.0.1", 57 + "fast-deep-equal": "^3.1.1", 46 58 "fast-json-stable-stringify": "^2.0.0", 47 59 "json-schema-traverse": "^0.4.1", 48 60 "uri-js": "^4.2.2" 49 61 } 50 62 }, 51 63 "ansi-escapes": { 52 - "version": "3.2.0", 53 - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", 54 - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", 55 - "dev": true 64 + "version": "4.3.1", 65 + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", 66 + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", 67 + "dev": true, 68 + "requires": { 69 + "type-fest": "^0.11.0" 70 + }, 71 + "dependencies": { 72 + "type-fest": { 73 + "version": "0.11.0", 74 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", 75 + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", 76 + "dev": true 77 + } 78 + } 56 79 }, 57 80 "ansi-regex": { 58 - "version": "3.0.0", 59 - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 60 - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 81 + "version": "5.0.0", 82 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 83 + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 61 84 "dev": true 62 85 }, 63 86 "ansi-styles": { ··· 124 147 "dev": true 125 148 }, 126 149 "cli-cursor": { 127 - "version": "2.1.0", 128 - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 129 - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 150 + "version": "3.1.0", 151 + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 152 + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 130 153 "dev": true, 131 154 "requires": { 132 - "restore-cursor": "^2.0.0" 155 + "restore-cursor": "^3.1.0" 133 156 } 134 157 }, 135 158 "cli-width": { ··· 211 234 } 212 235 }, 213 236 "emoji-regex": { 214 - "version": "7.0.3", 215 - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 216 - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 237 + "version": "8.0.0", 238 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 239 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 217 240 "dev": true 218 241 }, 219 242 "escape-string-regexp": { ··· 223 246 "dev": true 224 247 }, 225 248 "eslint": { 226 - "version": "6.5.1", 227 - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.5.1.tgz", 228 - "integrity": "sha512-32h99BoLYStT1iq1v2P9uwpyznQ4M2jRiFB6acitKz52Gqn+vPaMDUTB1bYi1WN4Nquj2w+t+bimYUG83DC55A==", 249 + "version": "6.8.0", 250 + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", 251 + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", 229 252 "dev": true, 230 253 "requires": { 231 254 "@babel/code-frame": "^7.0.0", ··· 235 258 "debug": "^4.0.1", 236 259 "doctrine": "^3.0.0", 237 260 "eslint-scope": "^5.0.0", 238 - "eslint-utils": "^1.4.2", 261 + "eslint-utils": "^1.4.3", 239 262 "eslint-visitor-keys": "^1.1.0", 240 - "espree": "^6.1.1", 263 + "espree": "^6.1.2", 241 264 "esquery": "^1.0.1", 242 265 "esutils": "^2.0.2", 243 266 "file-entry-cache": "^5.0.1", 244 267 "functional-red-black-tree": "^1.0.1", 245 268 "glob-parent": "^5.0.0", 246 - "globals": "^11.7.0", 269 + "globals": "^12.1.0", 247 270 "ignore": "^4.0.6", 248 271 "import-fresh": "^3.0.0", 249 272 "imurmurhash": "^0.1.4", 250 - "inquirer": "^6.4.1", 273 + "inquirer": "^7.0.0", 251 274 "is-glob": "^4.0.0", 252 275 "js-yaml": "^3.13.1", 253 276 "json-stable-stringify-without-jsonify": "^1.0.1", ··· 256 279 "minimatch": "^3.0.4", 257 280 "mkdirp": "^0.5.1", 258 281 "natural-compare": "^1.4.0", 259 - "optionator": "^0.8.2", 282 + "optionator": "^0.8.3", 260 283 "progress": "^2.0.0", 261 284 "regexpp": "^2.0.1", 262 285 "semver": "^6.1.2", ··· 267 290 "v8-compile-cache": "^2.0.3" 268 291 } 269 292 }, 293 + "eslint-plugin-metafizzy": { 294 + "version": "1.0.0", 295 + "dev": true, 296 + "dependencies": { 297 + "@babel/code-frame": { 298 + "version": "7.8.3", 299 + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", 300 + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", 301 + "requires": { 302 + "@babel/highlight": "^7.8.3" 303 + } 304 + }, 305 + "@babel/helper-validator-identifier": { 306 + "version": "7.9.5", 307 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", 308 + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==" 309 + }, 310 + "@babel/highlight": { 311 + "version": "7.9.0", 312 + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", 313 + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", 314 + "requires": { 315 + "@babel/helper-validator-identifier": "^7.9.0", 316 + "chalk": "^2.0.0", 317 + "js-tokens": "^4.0.0" 318 + } 319 + }, 320 + "@types/color-name": { 321 + "version": "1.1.1", 322 + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", 323 + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" 324 + }, 325 + "acorn": { 326 + "version": "7.1.1", 327 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", 328 + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==" 329 + }, 330 + "acorn-jsx": { 331 + "version": "5.2.0", 332 + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", 333 + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==" 334 + }, 335 + "ajv": { 336 + "version": "6.12.0", 337 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", 338 + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", 339 + "requires": { 340 + "fast-deep-equal": "^3.1.1", 341 + "fast-json-stable-stringify": "^2.0.0", 342 + "json-schema-traverse": "^0.4.1", 343 + "uri-js": "^4.2.2" 344 + } 345 + }, 346 + "ansi-escapes": { 347 + "version": "4.3.1", 348 + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", 349 + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", 350 + "requires": { 351 + "type-fest": "^0.11.0" 352 + }, 353 + "dependencies": { 354 + "type-fest": { 355 + "version": "0.11.0", 356 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", 357 + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==" 358 + } 359 + } 360 + }, 361 + "ansi-regex": { 362 + "version": "5.0.0", 363 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 364 + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" 365 + }, 366 + "ansi-styles": { 367 + "version": "3.2.1", 368 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 369 + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 370 + "requires": { 371 + "color-convert": "^1.9.0" 372 + } 373 + }, 374 + "argparse": { 375 + "version": "1.0.10", 376 + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 377 + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 378 + "requires": { 379 + "sprintf-js": "~1.0.2" 380 + } 381 + }, 382 + "astral-regex": { 383 + "version": "1.0.0", 384 + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", 385 + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" 386 + }, 387 + "balanced-match": { 388 + "version": "1.0.0", 389 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 390 + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 391 + }, 392 + "brace-expansion": { 393 + "version": "1.1.11", 394 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 395 + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 396 + "requires": { 397 + "balanced-match": "^1.0.0", 398 + "concat-map": "0.0.1" 399 + } 400 + }, 401 + "callsites": { 402 + "version": "3.1.0", 403 + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 404 + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" 405 + }, 406 + "chalk": { 407 + "version": "2.4.2", 408 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 409 + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 410 + "requires": { 411 + "ansi-styles": "^3.2.1", 412 + "escape-string-regexp": "^1.0.5", 413 + "supports-color": "^5.3.0" 414 + } 415 + }, 416 + "chardet": { 417 + "version": "0.7.0", 418 + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 419 + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" 420 + }, 421 + "cli": { 422 + "version": "1.0.1", 423 + "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", 424 + "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=", 425 + "requires": { 426 + "exit": "0.1.2", 427 + "glob": "^7.1.1" 428 + } 429 + }, 430 + "cli-cursor": { 431 + "version": "3.1.0", 432 + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 433 + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 434 + "requires": { 435 + "restore-cursor": "^3.1.0" 436 + } 437 + }, 438 + "cli-width": { 439 + "version": "2.2.0", 440 + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", 441 + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" 442 + }, 443 + "color-convert": { 444 + "version": "1.9.3", 445 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 446 + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 447 + "requires": { 448 + "color-name": "1.1.3" 449 + } 450 + }, 451 + "color-name": { 452 + "version": "1.1.3", 453 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 454 + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 455 + }, 456 + "concat-map": { 457 + "version": "0.0.1", 458 + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 459 + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 460 + }, 461 + "console-browserify": { 462 + "version": "1.1.0", 463 + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", 464 + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", 465 + "requires": { 466 + "date-now": "^0.1.4" 467 + } 468 + }, 469 + "core-util-is": { 470 + "version": "1.0.2", 471 + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 472 + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 473 + }, 474 + "cross-spawn": { 475 + "version": "6.0.5", 476 + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 477 + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 478 + "requires": { 479 + "nice-try": "^1.0.4", 480 + "path-key": "^2.0.1", 481 + "semver": "^5.5.0", 482 + "shebang-command": "^1.2.0", 483 + "which": "^1.2.9" 484 + }, 485 + "dependencies": { 486 + "semver": { 487 + "version": "5.7.1", 488 + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 489 + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 490 + } 491 + } 492 + }, 493 + "date-now": { 494 + "version": "0.1.4", 495 + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", 496 + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" 497 + }, 498 + "debug": { 499 + "version": "4.1.1", 500 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 501 + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 502 + "requires": { 503 + "ms": "^2.1.1" 504 + } 505 + }, 506 + "deep-is": { 507 + "version": "0.1.3", 508 + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 509 + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" 510 + }, 511 + "doctrine": { 512 + "version": "3.0.0", 513 + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 514 + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 515 + "requires": { 516 + "esutils": "^2.0.2" 517 + } 518 + }, 519 + "dom-serializer": { 520 + "version": "0.2.2", 521 + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", 522 + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", 523 + "requires": { 524 + "domelementtype": "^2.0.1", 525 + "entities": "^2.0.0" 526 + }, 527 + "dependencies": { 528 + "domelementtype": { 529 + "version": "2.0.1", 530 + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", 531 + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==" 532 + }, 533 + "entities": { 534 + "version": "2.0.0", 535 + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", 536 + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==" 537 + } 538 + } 539 + }, 540 + "domelementtype": { 541 + "version": "1.3.1", 542 + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", 543 + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" 544 + }, 545 + "domhandler": { 546 + "version": "2.3.0", 547 + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", 548 + "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", 549 + "requires": { 550 + "domelementtype": "1" 551 + } 552 + }, 553 + "domutils": { 554 + "version": "1.5.1", 555 + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", 556 + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", 557 + "requires": { 558 + "dom-serializer": "0", 559 + "domelementtype": "1" 560 + } 561 + }, 562 + "emoji-regex": { 563 + "version": "8.0.0", 564 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 565 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 566 + }, 567 + "entities": { 568 + "version": "1.0.0", 569 + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", 570 + "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=" 571 + }, 572 + "escape-string-regexp": { 573 + "version": "1.0.5", 574 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 575 + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 576 + }, 577 + "eslint": { 578 + "version": "6.8.0", 579 + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", 580 + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", 581 + "requires": { 582 + "@babel/code-frame": "^7.0.0", 583 + "ajv": "^6.10.0", 584 + "chalk": "^2.1.0", 585 + "cross-spawn": "^6.0.5", 586 + "debug": "^4.0.1", 587 + "doctrine": "^3.0.0", 588 + "eslint-scope": "^5.0.0", 589 + "eslint-utils": "^1.4.3", 590 + "eslint-visitor-keys": "^1.1.0", 591 + "espree": "^6.1.2", 592 + "esquery": "^1.0.1", 593 + "esutils": "^2.0.2", 594 + "file-entry-cache": "^5.0.1", 595 + "functional-red-black-tree": "^1.0.1", 596 + "glob-parent": "^5.0.0", 597 + "globals": "^12.1.0", 598 + "ignore": "^4.0.6", 599 + "import-fresh": "^3.0.0", 600 + "imurmurhash": "^0.1.4", 601 + "inquirer": "^7.0.0", 602 + "is-glob": "^4.0.0", 603 + "js-yaml": "^3.13.1", 604 + "json-stable-stringify-without-jsonify": "^1.0.1", 605 + "levn": "^0.3.0", 606 + "lodash": "^4.17.14", 607 + "minimatch": "^3.0.4", 608 + "mkdirp": "^0.5.1", 609 + "natural-compare": "^1.4.0", 610 + "optionator": "^0.8.3", 611 + "progress": "^2.0.0", 612 + "regexpp": "^2.0.1", 613 + "semver": "^6.1.2", 614 + "strip-ansi": "^5.2.0", 615 + "strip-json-comments": "^3.0.1", 616 + "table": "^5.2.3", 617 + "text-table": "^0.2.0", 618 + "v8-compile-cache": "^2.0.3" 619 + }, 620 + "dependencies": { 621 + "strip-json-comments": { 622 + "version": "3.1.0", 623 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", 624 + "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==" 625 + } 626 + } 627 + }, 628 + "eslint-scope": { 629 + "version": "5.0.0", 630 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", 631 + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", 632 + "requires": { 633 + "esrecurse": "^4.1.0", 634 + "estraverse": "^4.1.1" 635 + } 636 + }, 637 + "eslint-utils": { 638 + "version": "1.4.3", 639 + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", 640 + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", 641 + "requires": { 642 + "eslint-visitor-keys": "^1.1.0" 643 + } 644 + }, 645 + "eslint-visitor-keys": { 646 + "version": "1.1.0", 647 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", 648 + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==" 649 + }, 650 + "espree": { 651 + "version": "6.2.1", 652 + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", 653 + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", 654 + "requires": { 655 + "acorn": "^7.1.1", 656 + "acorn-jsx": "^5.2.0", 657 + "eslint-visitor-keys": "^1.1.0" 658 + } 659 + }, 660 + "esprima": { 661 + "version": "4.0.1", 662 + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 663 + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" 664 + }, 665 + "esquery": { 666 + "version": "1.2.0", 667 + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.2.0.tgz", 668 + "integrity": "sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q==", 669 + "requires": { 670 + "estraverse": "^5.0.0" 671 + }, 672 + "dependencies": { 673 + "estraverse": { 674 + "version": "5.0.0", 675 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.0.0.tgz", 676 + "integrity": "sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A==" 677 + } 678 + } 679 + }, 680 + "esrecurse": { 681 + "version": "4.2.1", 682 + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", 683 + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", 684 + "requires": { 685 + "estraverse": "^4.1.0" 686 + } 687 + }, 688 + "estraverse": { 689 + "version": "4.3.0", 690 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 691 + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" 692 + }, 693 + "esutils": { 694 + "version": "2.0.3", 695 + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 696 + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" 697 + }, 698 + "exit": { 699 + "version": "0.1.2", 700 + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", 701 + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" 702 + }, 703 + "external-editor": { 704 + "version": "3.1.0", 705 + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 706 + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 707 + "requires": { 708 + "chardet": "^0.7.0", 709 + "iconv-lite": "^0.4.24", 710 + "tmp": "^0.0.33" 711 + } 712 + }, 713 + "fast-deep-equal": { 714 + "version": "3.1.1", 715 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", 716 + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" 717 + }, 718 + "fast-json-stable-stringify": { 719 + "version": "2.1.0", 720 + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 721 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 722 + }, 723 + "fast-levenshtein": { 724 + "version": "2.0.6", 725 + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 726 + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" 727 + }, 728 + "figures": { 729 + "version": "3.2.0", 730 + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", 731 + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", 732 + "requires": { 733 + "escape-string-regexp": "^1.0.5" 734 + } 735 + }, 736 + "file-entry-cache": { 737 + "version": "5.0.1", 738 + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", 739 + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", 740 + "requires": { 741 + "flat-cache": "^2.0.1" 742 + } 743 + }, 744 + "flat-cache": { 745 + "version": "2.0.1", 746 + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", 747 + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", 748 + "requires": { 749 + "flatted": "^2.0.0", 750 + "rimraf": "2.6.3", 751 + "write": "1.0.3" 752 + } 753 + }, 754 + "flatted": { 755 + "version": "2.0.2", 756 + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", 757 + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==" 758 + }, 759 + "fs.realpath": { 760 + "version": "1.0.0", 761 + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 762 + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 763 + }, 764 + "functional-red-black-tree": { 765 + "version": "1.0.1", 766 + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 767 + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" 768 + }, 769 + "glob": { 770 + "version": "7.1.6", 771 + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 772 + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 773 + "requires": { 774 + "fs.realpath": "^1.0.0", 775 + "inflight": "^1.0.4", 776 + "inherits": "2", 777 + "minimatch": "^3.0.4", 778 + "once": "^1.3.0", 779 + "path-is-absolute": "^1.0.0" 780 + } 781 + }, 782 + "glob-parent": { 783 + "version": "5.1.1", 784 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", 785 + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", 786 + "requires": { 787 + "is-glob": "^4.0.1" 788 + } 789 + }, 790 + "globals": { 791 + "version": "12.4.0", 792 + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", 793 + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", 794 + "requires": { 795 + "type-fest": "^0.8.1" 796 + } 797 + }, 798 + "has-flag": { 799 + "version": "3.0.0", 800 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 801 + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 802 + }, 803 + "htmlparser2": { 804 + "version": "3.8.3", 805 + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", 806 + "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", 807 + "requires": { 808 + "domelementtype": "1", 809 + "domhandler": "2.3", 810 + "domutils": "1.5", 811 + "entities": "1.0", 812 + "readable-stream": "1.1" 813 + } 814 + }, 815 + "iconv-lite": { 816 + "version": "0.4.24", 817 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 818 + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 819 + "requires": { 820 + "safer-buffer": ">= 2.1.2 < 3" 821 + } 822 + }, 823 + "ignore": { 824 + "version": "4.0.6", 825 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 826 + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" 827 + }, 828 + "import-fresh": { 829 + "version": "3.2.1", 830 + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", 831 + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", 832 + "requires": { 833 + "parent-module": "^1.0.0", 834 + "resolve-from": "^4.0.0" 835 + } 836 + }, 837 + "imurmurhash": { 838 + "version": "0.1.4", 839 + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 840 + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" 841 + }, 842 + "inflight": { 843 + "version": "1.0.6", 844 + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 845 + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 846 + "requires": { 847 + "once": "^1.3.0", 848 + "wrappy": "1" 849 + } 850 + }, 851 + "inherits": { 852 + "version": "2.0.4", 853 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 854 + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 855 + }, 856 + "inquirer": { 857 + "version": "7.1.0", 858 + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", 859 + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", 860 + "requires": { 861 + "ansi-escapes": "^4.2.1", 862 + "chalk": "^3.0.0", 863 + "cli-cursor": "^3.1.0", 864 + "cli-width": "^2.0.0", 865 + "external-editor": "^3.0.3", 866 + "figures": "^3.0.0", 867 + "lodash": "^4.17.15", 868 + "mute-stream": "0.0.8", 869 + "run-async": "^2.4.0", 870 + "rxjs": "^6.5.3", 871 + "string-width": "^4.1.0", 872 + "strip-ansi": "^6.0.0", 873 + "through": "^2.3.6" 874 + }, 875 + "dependencies": { 876 + "ansi-styles": { 877 + "version": "4.2.1", 878 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", 879 + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", 880 + "requires": { 881 + "@types/color-name": "^1.1.1", 882 + "color-convert": "^2.0.1" 883 + } 884 + }, 885 + "chalk": { 886 + "version": "3.0.0", 887 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", 888 + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", 889 + "requires": { 890 + "ansi-styles": "^4.1.0", 891 + "supports-color": "^7.1.0" 892 + } 893 + }, 894 + "color-convert": { 895 + "version": "2.0.1", 896 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 897 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 898 + "requires": { 899 + "color-name": "~1.1.4" 900 + } 901 + }, 902 + "color-name": { 903 + "version": "1.1.4", 904 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 905 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 906 + }, 907 + "has-flag": { 908 + "version": "4.0.0", 909 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 910 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 911 + }, 912 + "strip-ansi": { 913 + "version": "6.0.0", 914 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 915 + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 916 + "requires": { 917 + "ansi-regex": "^5.0.0" 918 + } 919 + }, 920 + "supports-color": { 921 + "version": "7.1.0", 922 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", 923 + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", 924 + "requires": { 925 + "has-flag": "^4.0.0" 926 + } 927 + } 928 + } 929 + }, 930 + "is-extglob": { 931 + "version": "2.1.1", 932 + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 933 + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" 934 + }, 935 + "is-fullwidth-code-point": { 936 + "version": "3.0.0", 937 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 938 + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 939 + }, 940 + "is-glob": { 941 + "version": "4.0.1", 942 + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 943 + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 944 + "requires": { 945 + "is-extglob": "^2.1.1" 946 + } 947 + }, 948 + "is-promise": { 949 + "version": "2.1.0", 950 + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 951 + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" 952 + }, 953 + "isarray": { 954 + "version": "0.0.1", 955 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 956 + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" 957 + }, 958 + "isexe": { 959 + "version": "2.0.0", 960 + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 961 + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" 962 + }, 963 + "js-tokens": { 964 + "version": "4.0.0", 965 + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 966 + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 967 + }, 968 + "js-yaml": { 969 + "version": "3.13.1", 970 + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 971 + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 972 + "requires": { 973 + "argparse": "^1.0.7", 974 + "esprima": "^4.0.0" 975 + } 976 + }, 977 + "jshint": { 978 + "version": "2.11.0", 979 + "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.11.0.tgz", 980 + "integrity": "sha512-ooaD/hrBPhu35xXW4gn+o3SOuzht73gdBuffgJzrZBJZPGgGiiTvJEgTyxFvBO2nz0+X1G6etF8SzUODTlLY6Q==", 981 + "requires": { 982 + "cli": "~1.0.0", 983 + "console-browserify": "1.1.x", 984 + "exit": "0.1.x", 985 + "htmlparser2": "3.8.x", 986 + "lodash": "~4.17.11", 987 + "minimatch": "~3.0.2", 988 + "shelljs": "0.3.x", 989 + "strip-json-comments": "1.0.x" 990 + } 991 + }, 992 + "json-schema-traverse": { 993 + "version": "0.4.1", 994 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 995 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 996 + }, 997 + "json-stable-stringify-without-jsonify": { 998 + "version": "1.0.1", 999 + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1000 + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" 1001 + }, 1002 + "levn": { 1003 + "version": "0.3.0", 1004 + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 1005 + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 1006 + "requires": { 1007 + "prelude-ls": "~1.1.2", 1008 + "type-check": "~0.3.2" 1009 + } 1010 + }, 1011 + "lodash": { 1012 + "version": "4.17.15", 1013 + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 1014 + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" 1015 + }, 1016 + "mimic-fn": { 1017 + "version": "2.1.0", 1018 + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1019 + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" 1020 + }, 1021 + "minimatch": { 1022 + "version": "3.0.4", 1023 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1024 + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1025 + "requires": { 1026 + "brace-expansion": "^1.1.7" 1027 + } 1028 + }, 1029 + "minimist": { 1030 + "version": "1.2.5", 1031 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1032 + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 1033 + }, 1034 + "mkdirp": { 1035 + "version": "0.5.5", 1036 + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 1037 + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 1038 + "requires": { 1039 + "minimist": "^1.2.5" 1040 + } 1041 + }, 1042 + "ms": { 1043 + "version": "2.1.2", 1044 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1045 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1046 + }, 1047 + "mute-stream": { 1048 + "version": "0.0.8", 1049 + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 1050 + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" 1051 + }, 1052 + "natural-compare": { 1053 + "version": "1.4.0", 1054 + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1055 + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" 1056 + }, 1057 + "nice-try": { 1058 + "version": "1.0.5", 1059 + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 1060 + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" 1061 + }, 1062 + "once": { 1063 + "version": "1.4.0", 1064 + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1065 + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1066 + "requires": { 1067 + "wrappy": "1" 1068 + } 1069 + }, 1070 + "onetime": { 1071 + "version": "5.1.0", 1072 + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", 1073 + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", 1074 + "requires": { 1075 + "mimic-fn": "^2.1.0" 1076 + } 1077 + }, 1078 + "optionator": { 1079 + "version": "0.8.3", 1080 + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 1081 + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 1082 + "requires": { 1083 + "deep-is": "~0.1.3", 1084 + "fast-levenshtein": "~2.0.6", 1085 + "levn": "~0.3.0", 1086 + "prelude-ls": "~1.1.2", 1087 + "type-check": "~0.3.2", 1088 + "word-wrap": "~1.2.3" 1089 + } 1090 + }, 1091 + "os-tmpdir": { 1092 + "version": "1.0.2", 1093 + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1094 + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" 1095 + }, 1096 + "parent-module": { 1097 + "version": "1.0.1", 1098 + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1099 + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1100 + "requires": { 1101 + "callsites": "^3.0.0" 1102 + } 1103 + }, 1104 + "path-is-absolute": { 1105 + "version": "1.0.1", 1106 + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1107 + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 1108 + }, 1109 + "path-key": { 1110 + "version": "2.0.1", 1111 + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 1112 + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" 1113 + }, 1114 + "prelude-ls": { 1115 + "version": "1.1.2", 1116 + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 1117 + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" 1118 + }, 1119 + "progress": { 1120 + "version": "2.0.3", 1121 + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1122 + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" 1123 + }, 1124 + "punycode": { 1125 + "version": "2.1.1", 1126 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1127 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 1128 + }, 1129 + "readable-stream": { 1130 + "version": "1.1.14", 1131 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 1132 + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", 1133 + "requires": { 1134 + "core-util-is": "~1.0.0", 1135 + "inherits": "~2.0.1", 1136 + "isarray": "0.0.1", 1137 + "string_decoder": "~0.10.x" 1138 + } 1139 + }, 1140 + "regexpp": { 1141 + "version": "2.0.1", 1142 + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", 1143 + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" 1144 + }, 1145 + "resolve-from": { 1146 + "version": "4.0.0", 1147 + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1148 + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" 1149 + }, 1150 + "restore-cursor": { 1151 + "version": "3.1.0", 1152 + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 1153 + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 1154 + "requires": { 1155 + "onetime": "^5.1.0", 1156 + "signal-exit": "^3.0.2" 1157 + } 1158 + }, 1159 + "rimraf": { 1160 + "version": "2.6.3", 1161 + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 1162 + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 1163 + "requires": { 1164 + "glob": "^7.1.3" 1165 + } 1166 + }, 1167 + "run-async": { 1168 + "version": "2.4.0", 1169 + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", 1170 + "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", 1171 + "requires": { 1172 + "is-promise": "^2.1.0" 1173 + } 1174 + }, 1175 + "rxjs": { 1176 + "version": "6.5.5", 1177 + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", 1178 + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", 1179 + "requires": { 1180 + "tslib": "^1.9.0" 1181 + } 1182 + }, 1183 + "safer-buffer": { 1184 + "version": "2.1.2", 1185 + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1186 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1187 + }, 1188 + "semver": { 1189 + "version": "6.3.0", 1190 + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1191 + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 1192 + }, 1193 + "shebang-command": { 1194 + "version": "1.2.0", 1195 + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 1196 + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 1197 + "requires": { 1198 + "shebang-regex": "^1.0.0" 1199 + } 1200 + }, 1201 + "shebang-regex": { 1202 + "version": "1.0.0", 1203 + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 1204 + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" 1205 + }, 1206 + "shelljs": { 1207 + "version": "0.3.0", 1208 + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", 1209 + "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" 1210 + }, 1211 + "signal-exit": { 1212 + "version": "3.0.3", 1213 + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 1214 + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" 1215 + }, 1216 + "slice-ansi": { 1217 + "version": "2.1.0", 1218 + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", 1219 + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", 1220 + "requires": { 1221 + "ansi-styles": "^3.2.0", 1222 + "astral-regex": "^1.0.0", 1223 + "is-fullwidth-code-point": "^2.0.0" 1224 + }, 1225 + "dependencies": { 1226 + "is-fullwidth-code-point": { 1227 + "version": "2.0.0", 1228 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1229 + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" 1230 + } 1231 + } 1232 + }, 1233 + "sprintf-js": { 1234 + "version": "1.0.3", 1235 + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1236 + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" 1237 + }, 1238 + "string-width": { 1239 + "version": "4.2.0", 1240 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", 1241 + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", 1242 + "requires": { 1243 + "emoji-regex": "^8.0.0", 1244 + "is-fullwidth-code-point": "^3.0.0", 1245 + "strip-ansi": "^6.0.0" 1246 + }, 1247 + "dependencies": { 1248 + "strip-ansi": { 1249 + "version": "6.0.0", 1250 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 1251 + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 1252 + "requires": { 1253 + "ansi-regex": "^5.0.0" 1254 + } 1255 + } 1256 + } 1257 + }, 1258 + "string_decoder": { 1259 + "version": "0.10.31", 1260 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 1261 + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" 1262 + }, 1263 + "strip-ansi": { 1264 + "version": "5.2.0", 1265 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1266 + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1267 + "requires": { 1268 + "ansi-regex": "^4.1.0" 1269 + }, 1270 + "dependencies": { 1271 + "ansi-regex": { 1272 + "version": "4.1.0", 1273 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1274 + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" 1275 + } 1276 + } 1277 + }, 1278 + "strip-json-comments": { 1279 + "version": "1.0.4", 1280 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", 1281 + "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=" 1282 + }, 1283 + "supports-color": { 1284 + "version": "5.5.0", 1285 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1286 + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1287 + "requires": { 1288 + "has-flag": "^3.0.0" 1289 + } 1290 + }, 1291 + "table": { 1292 + "version": "5.4.6", 1293 + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", 1294 + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", 1295 + "requires": { 1296 + "ajv": "^6.10.2", 1297 + "lodash": "^4.17.14", 1298 + "slice-ansi": "^2.1.0", 1299 + "string-width": "^3.0.0" 1300 + }, 1301 + "dependencies": { 1302 + "emoji-regex": { 1303 + "version": "7.0.3", 1304 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 1305 + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" 1306 + }, 1307 + "is-fullwidth-code-point": { 1308 + "version": "2.0.0", 1309 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1310 + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" 1311 + }, 1312 + "string-width": { 1313 + "version": "3.1.0", 1314 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1315 + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1316 + "requires": { 1317 + "emoji-regex": "^7.0.1", 1318 + "is-fullwidth-code-point": "^2.0.0", 1319 + "strip-ansi": "^5.1.0" 1320 + } 1321 + } 1322 + } 1323 + }, 1324 + "text-table": { 1325 + "version": "0.2.0", 1326 + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1327 + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" 1328 + }, 1329 + "through": { 1330 + "version": "2.3.8", 1331 + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1332 + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 1333 + }, 1334 + "tmp": { 1335 + "version": "0.0.33", 1336 + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 1337 + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 1338 + "requires": { 1339 + "os-tmpdir": "~1.0.2" 1340 + } 1341 + }, 1342 + "tslib": { 1343 + "version": "1.11.1", 1344 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", 1345 + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" 1346 + }, 1347 + "type-check": { 1348 + "version": "0.3.2", 1349 + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 1350 + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 1351 + "requires": { 1352 + "prelude-ls": "~1.1.2" 1353 + } 1354 + }, 1355 + "type-fest": { 1356 + "version": "0.8.1", 1357 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 1358 + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" 1359 + }, 1360 + "uri-js": { 1361 + "version": "4.2.2", 1362 + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 1363 + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 1364 + "requires": { 1365 + "punycode": "^2.1.0" 1366 + } 1367 + }, 1368 + "v8-compile-cache": { 1369 + "version": "2.1.0", 1370 + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", 1371 + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==" 1372 + }, 1373 + "which": { 1374 + "version": "1.3.1", 1375 + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 1376 + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 1377 + "requires": { 1378 + "isexe": "^2.0.0" 1379 + } 1380 + }, 1381 + "word-wrap": { 1382 + "version": "1.2.3", 1383 + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 1384 + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" 1385 + }, 1386 + "wrappy": { 1387 + "version": "1.0.2", 1388 + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1389 + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1390 + }, 1391 + "write": { 1392 + "version": "1.0.3", 1393 + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", 1394 + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", 1395 + "requires": { 1396 + "mkdirp": "^0.5.1" 1397 + } 1398 + } 1399 + } 1400 + }, 270 1401 "eslint-scope": { 271 1402 "version": "5.0.0", 272 1403 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", ··· 293 1424 "dev": true 294 1425 }, 295 1426 "espree": { 296 - "version": "6.1.2", 297 - "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", 298 - "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", 1427 + "version": "6.2.1", 1428 + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", 1429 + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", 299 1430 "dev": true, 300 1431 "requires": { 301 - "acorn": "^7.1.0", 302 - "acorn-jsx": "^5.1.0", 1432 + "acorn": "^7.1.1", 1433 + "acorn-jsx": "^5.2.0", 303 1434 "eslint-visitor-keys": "^1.1.0" 304 1435 } 305 1436 }, ··· 310 1441 "dev": true 311 1442 }, 312 1443 "esquery": { 313 - "version": "1.0.1", 314 - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", 315 - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", 1444 + "version": "1.2.0", 1445 + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.2.0.tgz", 1446 + "integrity": "sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q==", 316 1447 "dev": true, 317 1448 "requires": { 318 - "estraverse": "^4.0.0" 1449 + "estraverse": "^5.0.0" 1450 + }, 1451 + "dependencies": { 1452 + "estraverse": { 1453 + "version": "5.0.0", 1454 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.0.0.tgz", 1455 + "integrity": "sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A==", 1456 + "dev": true 1457 + } 319 1458 } 320 1459 }, 321 1460 "esrecurse": { ··· 351 1490 } 352 1491 }, 353 1492 "fast-deep-equal": { 354 - "version": "2.0.1", 355 - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", 356 - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", 1493 + "version": "3.1.1", 1494 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", 1495 + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", 357 1496 "dev": true 358 1497 }, 359 1498 "fast-json-stable-stringify": { 360 - "version": "2.0.0", 361 - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 362 - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", 1499 + "version": "2.1.0", 1500 + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1501 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 363 1502 "dev": true 364 1503 }, 365 1504 "fast-levenshtein": { ··· 369 1508 "dev": true 370 1509 }, 371 1510 "figures": { 372 - "version": "2.0.0", 373 - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", 374 - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", 1511 + "version": "3.2.0", 1512 + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", 1513 + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", 375 1514 "dev": true, 376 1515 "requires": { 377 1516 "escape-string-regexp": "^1.0.5" ··· 398 1537 } 399 1538 }, 400 1539 "flatted": { 401 - "version": "2.0.1", 402 - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", 403 - "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", 1540 + "version": "2.0.2", 1541 + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", 1542 + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", 404 1543 "dev": true 405 1544 }, 406 1545 "fs.realpath": { ··· 416 1555 "dev": true 417 1556 }, 418 1557 "glob": { 419 - "version": "7.1.5", 420 - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", 421 - "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==", 1558 + "version": "7.1.6", 1559 + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1560 + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 422 1561 "dev": true, 423 1562 "requires": { 424 1563 "fs.realpath": "^1.0.0", ··· 430 1569 } 431 1570 }, 432 1571 "glob-parent": { 433 - "version": "5.1.0", 434 - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", 435 - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", 1572 + "version": "5.1.1", 1573 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", 1574 + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", 436 1575 "dev": true, 437 1576 "requires": { 438 1577 "is-glob": "^4.0.1" 439 1578 } 440 1579 }, 441 1580 "globals": { 442 - "version": "11.12.0", 443 - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 444 - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 445 - "dev": true 1581 + "version": "12.4.0", 1582 + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", 1583 + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", 1584 + "dev": true, 1585 + "requires": { 1586 + "type-fest": "^0.8.1" 1587 + } 446 1588 }, 447 1589 "has-flag": { 448 1590 "version": "3.0.0", ··· 466 1608 "dev": true 467 1609 }, 468 1610 "import-fresh": { 469 - "version": "3.1.0", 470 - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", 471 - "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", 1611 + "version": "3.2.1", 1612 + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", 1613 + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", 472 1614 "dev": true, 473 1615 "requires": { 474 1616 "parent-module": "^1.0.0", ··· 498 1640 "dev": true 499 1641 }, 500 1642 "inquirer": { 501 - "version": "6.5.2", 502 - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", 503 - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", 1643 + "version": "7.1.0", 1644 + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", 1645 + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", 504 1646 "dev": true, 505 1647 "requires": { 506 - "ansi-escapes": "^3.2.0", 507 - "chalk": "^2.4.2", 508 - "cli-cursor": "^2.1.0", 1648 + "ansi-escapes": "^4.2.1", 1649 + "chalk": "^3.0.0", 1650 + "cli-cursor": "^3.1.0", 509 1651 "cli-width": "^2.0.0", 510 1652 "external-editor": "^3.0.3", 511 - "figures": "^2.0.0", 512 - "lodash": "^4.17.12", 513 - "mute-stream": "0.0.7", 514 - "run-async": "^2.2.0", 515 - "rxjs": "^6.4.0", 516 - "string-width": "^2.1.0", 517 - "strip-ansi": "^5.1.0", 1653 + "figures": "^3.0.0", 1654 + "lodash": "^4.17.15", 1655 + "mute-stream": "0.0.8", 1656 + "run-async": "^2.4.0", 1657 + "rxjs": "^6.5.3", 1658 + "string-width": "^4.1.0", 1659 + "strip-ansi": "^6.0.0", 518 1660 "through": "^2.3.6" 1661 + }, 1662 + "dependencies": { 1663 + "ansi-styles": { 1664 + "version": "4.2.1", 1665 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", 1666 + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", 1667 + "dev": true, 1668 + "requires": { 1669 + "@types/color-name": "^1.1.1", 1670 + "color-convert": "^2.0.1" 1671 + } 1672 + }, 1673 + "chalk": { 1674 + "version": "3.0.0", 1675 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", 1676 + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", 1677 + "dev": true, 1678 + "requires": { 1679 + "ansi-styles": "^4.1.0", 1680 + "supports-color": "^7.1.0" 1681 + } 1682 + }, 1683 + "color-convert": { 1684 + "version": "2.0.1", 1685 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1686 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1687 + "dev": true, 1688 + "requires": { 1689 + "color-name": "~1.1.4" 1690 + } 1691 + }, 1692 + "color-name": { 1693 + "version": "1.1.4", 1694 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1695 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1696 + "dev": true 1697 + }, 1698 + "has-flag": { 1699 + "version": "4.0.0", 1700 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1701 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1702 + "dev": true 1703 + }, 1704 + "strip-ansi": { 1705 + "version": "6.0.0", 1706 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 1707 + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 1708 + "dev": true, 1709 + "requires": { 1710 + "ansi-regex": "^5.0.0" 1711 + } 1712 + }, 1713 + "supports-color": { 1714 + "version": "7.1.0", 1715 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", 1716 + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", 1717 + "dev": true, 1718 + "requires": { 1719 + "has-flag": "^4.0.0" 1720 + } 1721 + } 519 1722 } 520 1723 }, 521 1724 "is-extglob": { ··· 525 1728 "dev": true 526 1729 }, 527 1730 "is-fullwidth-code-point": { 528 - "version": "2.0.0", 529 - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 530 - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1731 + "version": "3.0.0", 1732 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1733 + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 531 1734 "dev": true 532 1735 }, 533 1736 "is-glob": { ··· 596 1799 "dev": true 597 1800 }, 598 1801 "mimic-fn": { 599 - "version": "1.2.0", 600 - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 601 - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", 1802 + "version": "2.1.0", 1803 + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1804 + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 602 1805 "dev": true 603 1806 }, 604 1807 "minimatch": { ··· 611 1814 } 612 1815 }, 613 1816 "minimist": { 614 - "version": "0.0.8", 615 - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 616 - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1817 + "version": "1.2.5", 1818 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1819 + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 617 1820 "dev": true 618 1821 }, 619 1822 "mkdirp": { 620 - "version": "0.5.1", 621 - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 622 - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1823 + "version": "0.5.5", 1824 + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 1825 + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 623 1826 "dev": true, 624 1827 "requires": { 625 - "minimist": "0.0.8" 1828 + "minimist": "^1.2.5" 626 1829 } 627 1830 }, 628 1831 "ms": { ··· 632 1835 "dev": true 633 1836 }, 634 1837 "mute-stream": { 635 - "version": "0.0.7", 636 - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", 637 - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", 1838 + "version": "0.0.8", 1839 + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 1840 + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", 638 1841 "dev": true 639 1842 }, 640 1843 "natural-compare": { ··· 659 1862 } 660 1863 }, 661 1864 "onetime": { 662 - "version": "2.0.1", 663 - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 664 - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 1865 + "version": "5.1.0", 1866 + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", 1867 + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", 665 1868 "dev": true, 666 1869 "requires": { 667 - "mimic-fn": "^1.0.0" 1870 + "mimic-fn": "^2.1.0" 668 1871 } 669 1872 }, 670 1873 "optionator": { 671 - "version": "0.8.2", 672 - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", 673 - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", 1874 + "version": "0.8.3", 1875 + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 1876 + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 674 1877 "dev": true, 675 1878 "requires": { 676 1879 "deep-is": "~0.1.3", 677 - "fast-levenshtein": "~2.0.4", 1880 + "fast-levenshtein": "~2.0.6", 678 1881 "levn": "~0.3.0", 679 1882 "prelude-ls": "~1.1.2", 680 1883 "type-check": "~0.3.2", 681 - "wordwrap": "~1.0.0" 1884 + "word-wrap": "~1.2.3" 682 1885 } 683 1886 }, 684 1887 "os-tmpdir": { ··· 739 1942 "dev": true 740 1943 }, 741 1944 "restore-cursor": { 742 - "version": "2.0.0", 743 - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 744 - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 1945 + "version": "3.1.0", 1946 + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 1947 + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 745 1948 "dev": true, 746 1949 "requires": { 747 - "onetime": "^2.0.0", 1950 + "onetime": "^5.1.0", 748 1951 "signal-exit": "^3.0.2" 749 1952 } 750 1953 }, ··· 758 1961 } 759 1962 }, 760 1963 "run-async": { 761 - "version": "2.3.0", 762 - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", 763 - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", 1964 + "version": "2.4.0", 1965 + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", 1966 + "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", 764 1967 "dev": true, 765 1968 "requires": { 766 1969 "is-promise": "^2.1.0" 767 1970 } 768 1971 }, 769 1972 "rxjs": { 770 - "version": "6.5.3", 771 - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", 772 - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", 1973 + "version": "6.5.5", 1974 + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", 1975 + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", 773 1976 "dev": true, 774 1977 "requires": { 775 1978 "tslib": "^1.9.0" ··· 803 2006 "dev": true 804 2007 }, 805 2008 "signal-exit": { 806 - "version": "3.0.2", 807 - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 808 - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 2009 + "version": "3.0.3", 2010 + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 2011 + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", 809 2012 "dev": true 810 2013 }, 811 2014 "slice-ansi": { ··· 817 2020 "ansi-styles": "^3.2.0", 818 2021 "astral-regex": "^1.0.0", 819 2022 "is-fullwidth-code-point": "^2.0.0" 2023 + }, 2024 + "dependencies": { 2025 + "is-fullwidth-code-point": { 2026 + "version": "2.0.0", 2027 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 2028 + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 2029 + "dev": true 2030 + } 820 2031 } 821 2032 }, 822 2033 "source-map": { ··· 832 2043 "dev": true 833 2044 }, 834 2045 "string-width": { 835 - "version": "2.1.1", 836 - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 837 - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 2046 + "version": "4.2.0", 2047 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", 2048 + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", 838 2049 "dev": true, 839 2050 "requires": { 840 - "is-fullwidth-code-point": "^2.0.0", 841 - "strip-ansi": "^4.0.0" 2051 + "emoji-regex": "^8.0.0", 2052 + "is-fullwidth-code-point": "^3.0.0", 2053 + "strip-ansi": "^6.0.0" 842 2054 }, 843 2055 "dependencies": { 844 2056 "strip-ansi": { 845 - "version": "4.0.0", 846 - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 847 - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 2057 + "version": "6.0.0", 2058 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 2059 + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 848 2060 "dev": true, 849 2061 "requires": { 850 - "ansi-regex": "^3.0.0" 2062 + "ansi-regex": "^5.0.0" 851 2063 } 852 2064 } 853 2065 } ··· 870 2082 } 871 2083 }, 872 2084 "strip-json-comments": { 873 - "version": "3.0.1", 874 - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", 875 - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", 2085 + "version": "3.1.0", 2086 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", 2087 + "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", 876 2088 "dev": true 877 2089 }, 878 2090 "supports-color": { ··· 896 2108 "string-width": "^3.0.0" 897 2109 }, 898 2110 "dependencies": { 2111 + "emoji-regex": { 2112 + "version": "7.0.3", 2113 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 2114 + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 2115 + "dev": true 2116 + }, 2117 + "is-fullwidth-code-point": { 2118 + "version": "2.0.0", 2119 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 2120 + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 2121 + "dev": true 2122 + }, 899 2123 "string-width": { 900 2124 "version": "3.1.0", 901 2125 "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", ··· 931 2155 } 932 2156 }, 933 2157 "tslib": { 934 - "version": "1.10.0", 935 - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", 936 - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", 2158 + "version": "1.11.1", 2159 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", 2160 + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", 937 2161 "dev": true 938 2162 }, 939 2163 "type-check": { ··· 945 2169 "prelude-ls": "~1.1.2" 946 2170 } 947 2171 }, 2172 + "type-fest": { 2173 + "version": "0.8.1", 2174 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 2175 + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 2176 + "dev": true 2177 + }, 948 2178 "uglify-js": { 949 2179 "version": "3.6.3", 950 2180 "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.3.tgz", ··· 979 2209 "isexe": "^2.0.0" 980 2210 } 981 2211 }, 982 - "wordwrap": { 983 - "version": "1.0.0", 984 - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", 985 - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", 2212 + "word-wrap": { 2213 + "version": "1.2.3", 2214 + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 2215 + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 986 2216 "dev": true 987 2217 }, 988 2218 "wrappy": {
+5 -3
package.json
··· 12 12 ], 13 13 "dependencies": {}, 14 14 "devDependencies": { 15 - "eslint": "^6.5.1", 15 + "eslint": "^6.8.0", 16 + "eslint-plugin-metafizzy": "^1.0.0", 16 17 "uglify-js": "^3.6.3" 17 18 }, 18 19 "scripts": { 19 20 "bundle": "node tasks/bundle", 20 21 "dist": "npm run bundle && npm run uglify", 21 - "lint": "eslint js/ demos/ tasks/", 22 + "lint": "npx eslint .", 23 + "lintFix": "npx eslint . --fix", 22 24 "preversion": "npm run lint", 23 25 "version": "node tasks/version && npm run dist && git add -A dist js", 24 26 "test": "npm run lint", 25 - "uglify": "uglifyjs dist/zdog.dist.js -o dist/zdog.dist.min.js --mangle --comments /^!/" 27 + "uglify": "npx uglifyjs dist/zdog.dist.js -o dist/zdog.dist.min.js --mangle --comments /^!/" 26 28 }, 27 29 "repository": { 28 30 "type": "git",
+12
tasks/.eslintrc.js
··· 1 + /* eslint-env node */ 2 + 3 + module.exports = { 4 + plugins: [ 'metafizzy' ], 5 + extends: 'plugin:metafizzy/node', 6 + env: { 7 + browser: false, 8 + commonjs: true, 9 + }, 10 + rules: { 11 + }, 12 + };
-26
tasks/.eslintrc.json
··· 1 - { 2 - "extends": "../.eslintrc.json", 3 - "env": { 4 - "browser": false 5 - }, 6 - "parserOptions": { 7 - "ecmaVersion": 2018 8 - }, 9 - "globals": { 10 - "console": "readonly" 11 - }, 12 - "rules": { 13 - "callback-return": "error", 14 - "global-require": "error", 15 - "handle-callback-err": "error", 16 - "id-length": [ "error", { 17 - "min": 2, 18 - "max": 30 19 - }], 20 - "max-params": [ "error", { 21 - "max": 4 22 - }], 23 - "no-console": "off", 24 - "no-var": "error" 25 - } 26 - }
+2 -2
tasks/bundle.js
··· 10 10 11 11 paths = paths.map( function( path ) { 12 12 return path.replace( "require('.", 'js' ).replace( "')", '.js' ); 13 - }); 13 + } ); 14 14 paths.push( indexPath ); 15 15 16 - execSync( `cat ${paths.join(' ')} > dist/zdog.dist.js`); 16 + execSync( `cat ${paths.join(' ')} > dist/zdog.dist.js` ); 17 17 18 18 console.log('bundled dist/zdog.dist.js');
+1 -1
tasks/version.js
··· 10 10 11 11 fs.writeFileSync( boilerplatePath, boilerplateSrc, 'utf8' ); 12 12 13 - console.log(`updated ${boilerplatePath} to ${version}`); 13 + console.log( `updated ${boilerplatePath} to ${version}` );