├── .gitignore ├── LICENSE ├── examples ├── auto-agent.js ├── cellular-automata.js ├── color-smudge.js ├── colors-rgba.js ├── colors.js ├── computer-vision.js ├── dual-gradient.js ├── ellipse.js ├── floating-circles.js ├── htor-tube.js ├── hypnotic.js ├── images-glitching.js ├── line-pattern.js ├── mod-video-stream.js ├── numbers.js ├── perlin-noise.js ├── radial-gradient.js ├── spinning-boxes.js ├── text.js ├── triangle-native-api.js ├── triangle.js └── xor-scorrier.js ├── images ├── banana.png ├── cactuar.png ├── castle.png ├── comput.png ├── doge.png ├── room.png ├── satellite.png ├── screen.png ├── screen2.png └── siliconchip.png ├── package-lock.json ├── package.json ├── public ├── framing.png ├── help.md ├── robots.txt └── zme.woff2 ├── readme.md ├── rollup.config.js └── src ├── framing.js ├── index.css ├── index.html ├── lang.js └── utils.js /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .DS_Store 3 | node_modules 4 | dist 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Herman Torjussen 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /examples/auto-agent.js: -------------------------------------------------------------------------------- 1 | title('auto agent') 2 | 3 | let SOUTH = 0, 4 | EAST = 1, 5 | NORTH = 2, 6 | WEST = 3 7 | let direction = NORTH 8 | let box = { 9 | x: 500, 10 | y: 200, 11 | size: 222, 12 | } 13 | let x = (y = box.size / 2) 14 | 15 | fps(40) 16 | clear() 17 | clearf(false) 18 | treset() 19 | tslate(box.x, box.y) 20 | fstyle('black') 21 | frect(0, 0, box.size, box.size) 22 | 23 | function point2idx(x, y) { 24 | return (y * box.size + x) * 4 25 | } 26 | 27 | function draw() { 28 | let idata = gidata(box.x, box.y, box.size, box.size) 29 | let pixels = idata.data 30 | 31 | if (direction === SOUTH) { 32 | if (++y === box.size) y = 0 33 | } else if (direction === EAST) { 34 | if (++x === box.size) x = 0 35 | } else if (direction === NORTH) { 36 | if (y === 0) y = box.size - 1 37 | else y-- 38 | } else if (direction === WEST) { 39 | if (x === 0) x = box.size - 1 40 | else x-- 41 | } 42 | 43 | let pixel = point2idx(x, y) 44 | if (pixels[pixel] === 255) { 45 | pixels[pixel] = 0 46 | pixels[pixel + 1] = 0 47 | pixels[pixel + 2] = 0 48 | pixels[pixel + 3] = 255 49 | if (direction === SOUTH) { 50 | direction = WEST 51 | } else { 52 | direction-- 53 | } 54 | } else { 55 | pixels[pixel] = 255 56 | pixels[pixel + 1] = 255 57 | pixels[pixel + 2] = 255 58 | pixels[pixel + 3] = 255 59 | if (direction === WEST) { 60 | direction = SOUTH 61 | } else { 62 | direction++ 63 | } 64 | } 65 | pidata(idata, box.x, box.y) 66 | } 67 | -------------------------------------------------------------------------------- /examples/cellular-automata.js: -------------------------------------------------------------------------------- 1 | title('cellular automata') 2 | 3 | fps(60) 4 | clearf(false) 5 | clear() 6 | 7 | let y = 1 8 | let box = { x: 450, y: 100, width: 500, height: 500 } 9 | let idata = gidata(box.x, box.y, box.width, box.height) 10 | let pixels = idata.data 11 | let rules = [0, 1, 0, 0, 1, 0, 1, 1] 12 | // let rules = [1,0,0,0,0,0,0,1] 13 | // let rules = Array(8).fill(0).map(i => rand(0,1) > 0.5 ? 1 : 0) 14 | 15 | pixels[point2idx(box.width / 2, y - 1) + 3] = 255 16 | 17 | // 1 = white, 0 = black 18 | function rule(left, center, right) { 19 | if (left && center && right) return rules[0] 20 | if (left && center && !right) return rules[1] 21 | if (left && !center && right) return rules[2] 22 | if (left && !center && !right) return rules[3] 23 | if (!left && center && right) return rules[4] 24 | if (!left && center && !right) return rules[5] 25 | if (!left && !center && right) return rules[6] 26 | if (!left && !center && !right) return rules[7] 27 | } 28 | 29 | function point2idx(x, y) { 30 | return (y * box.width + x) * 4 31 | } 32 | 33 | function draw() { 34 | for (let x = 1; x < box.width; x++) { 35 | let left = pixels[point2idx(x - 1, y - 1) + 3] 36 | let center = pixels[point2idx(x, y - 1) + 3] 37 | let right = pixels[point2idx(x + 1, y - 1) + 3] 38 | if (rule(left, center, right)) { 39 | pixels[point2idx(x, y) + 3] = 255 40 | } 41 | } 42 | if (++y > box.height) return 43 | pidata(idata, box.x, box.y) 44 | log(`[${rules.join(',')}]`) 45 | } 46 | -------------------------------------------------------------------------------- /examples/color-smudge.js: -------------------------------------------------------------------------------- 1 | // color smudging, based on floating-circles.js 2 | 3 | title('color smudge') 4 | clearf(0) 5 | 6 | function draw() { 7 | push() 8 | let t = ms() * 0.000499 9 | let c 10 | let c2 11 | let g 12 | treset(1) 13 | scale(0.5, 0.5) 14 | tslate(w + cos(t * 2) * 50, h / 2) 15 | rotate(cos(t)) 16 | c = `rgba(254, ${abs(sin(t) * 152)}, 15, 1)` 17 | fstyle(c) 18 | fellips( 19 | sin(t) * 50, 20 | cos(t / 4) * 220, 21 | abs(sin(t) * 200), 22 | abs(sin(t / 10) * 200), 23 | ) 24 | 25 | rotate(sin(t) * 3) 26 | c2 = `rgba(${abs(cos(t) * 225)}, ${abs(sin(t) * 144)}, 140, 1)` 27 | fstyle(c2) 28 | fellips( 29 | cos(t) * 210, 30 | sin(t / 2) * 220, 31 | abs(cos(t) * 200), 32 | abs(cos(t / 10) * 200), 33 | ) 34 | pop() 35 | } 36 | -------------------------------------------------------------------------------- /examples/colors-rgba.js: -------------------------------------------------------------------------------- 1 | // color pattern using rgba function 2 | 3 | title('rgba') 4 | 5 | let x 6 | let y 7 | let c 8 | let s = 11 9 | for (x = 0; x < w; x += s) { 10 | for (y = 0; y < h; y += s) { 11 | fstyle(rgba(255 & max(x, y), +255 & (x ^ y), +255 & ~(x * y), 1)) 12 | frect(x, y, s, s) 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /examples/colors.js: -------------------------------------------------------------------------------- 1 | // color pattern 2 | 3 | title('color pattern') 4 | 5 | let x 6 | let y 7 | let c 8 | let s = 40 9 | for (x = 0; x < w; x += s) { 10 | for (y = 0; y < h; y += s) { 11 | c = `rgba(${255 & (x + y)},${255 - y},${255 - x},1)` 12 | fstyle(c) 13 | frect(x, y, s, s) 14 | } 15 | } 16 | c 17 | -------------------------------------------------------------------------------- /examples/computer-vision.js: -------------------------------------------------------------------------------- 1 | title('computer v—i—s—i—on') 2 | fps(12) 3 | clearf(true) 4 | 5 | let video = capture({ video: true }) 6 | let width = 500 7 | let height = 500 8 | 9 | function draw(frame) { 10 | let bp = (bx = by = 0) 11 | let dp = 255 12 | let dx = (dy = 0) 13 | 14 | dimageoff(video, 0, 0, width, height) 15 | let vidata = gidataoff(0, 0, width, height) 16 | let pixels = vidata.data 17 | for (let y = 0; y < height; y++) { 18 | for (let x = 0; x < width; x++) { 19 | let p = pixels[(y * width + x) * 4] 20 | if (p > bp) { 21 | bp = p 22 | bx = x 23 | by = y 24 | } else if (p < dp) { 25 | dp = p 26 | dx = x 27 | dy = y 28 | } 29 | } 30 | } 31 | pidata(vidata, 200, 100) 32 | 33 | push() 34 | sstyle('white') 35 | tslate(200, 100) 36 | srect(dx - 15, dy - 15, 30, 30) 37 | stext(`darkest`, dx + 25, dy) 38 | stext(`${dp},${dx},${dy}`, dx + 25, dy + 15) 39 | 40 | srect(bx - 15, by - 15, 30, 30) 41 | stext(`brightest`, bx + 25, by) 42 | stext(`${bp},${bx},${by}`, bx + 25, by + 15) 43 | pop() 44 | } 45 | -------------------------------------------------------------------------------- /examples/dual-gradient.js: -------------------------------------------------------------------------------- 1 | title('dual gradient') 2 | clear() 3 | s = 20 4 | for (x = 0; x < w; x += s) { 5 | a = map(x, 0, w, 255, 0) 6 | aa = map(x, 0, w, 0, 255) 7 | fstyle(`rgb(${a},${a},${a})`) 8 | frect(x, 0, s, h) 9 | fstyle(`rgb(${aa},${aa},${aa})`) 10 | frect(x, h / 2, s, h) 11 | } 12 | -------------------------------------------------------------------------------- /examples/ellipse.js: -------------------------------------------------------------------------------- 1 | // dashed, rotated ellipse 2 | 3 | title('dashed ELLIPSE') 4 | 5 | ldash([1, 2, 9]) 6 | lwidth(2) 7 | sellips(w / 2, h / 2, 50, 240, 45) 8 | -------------------------------------------------------------------------------- /examples/floating-circles.js: -------------------------------------------------------------------------------- 1 | // floating circles 2 | 3 | title('floating circls') 4 | clearf(false) 5 | 6 | function draw() { 7 | push() 8 | let t = ms() * 0.0009 9 | let c 10 | let c2 11 | let g 12 | tslate(w / 2, h / 2) 13 | 14 | rotate(cos(t)) 15 | c = `rgba(225, ${abs(sin(t) * 252)}, 255, 1)` 16 | fstyle(c) 17 | fellips( 18 | sin(t) * 150, 19 | cos(t / 2) * 220, 20 | abs(sin(t) * 200), 21 | abs(sin(t / 10) * 200), 22 | ) 23 | 24 | rotate(sin(t)) 25 | c2 = `rgba(${abs(sin(t / 2) * 25)}, 222, 252, 1)` 26 | fstyle(c2) 27 | fellips( 28 | cos(t) * 10, 29 | sin(t / 2) * 220, 30 | abs(cos(t) * 200), 31 | abs(cos(t / 10) * 200), 32 | ) 33 | pop() 34 | } 35 | -------------------------------------------------------------------------------- /examples/htor-tube.js: -------------------------------------------------------------------------------- 1 | // sinusoidal text forming an htor tube 2 | 3 | title('htor TUBE') 4 | fps(40) 5 | 6 | let s = 22 7 | fstyle('white') 8 | 9 | function drawHtor(freq, amp, sym) { 10 | for (let i = 0; i < w; i += s) { 11 | let j = sin(i / freq) * amp + h / 2 12 | ftext('H·T·O·R', i, j) 13 | } 14 | } 15 | 16 | function draw() { 17 | bground('black') 18 | let freq1 = map(sin(ms() * 0.0001), -1, 1, 50, 200) 19 | let freq2 = map(cos(ms() * 0.0001), -1, 1, 50, 200) 20 | let freq3 = map(freq1 + freq2, 100, 400, 50, 200) 21 | drawHtor(freq1, 222) 22 | drawHtor(freq2, 222) 23 | drawHtor(freq3, 222) 24 | } 25 | -------------------------------------------------------------------------------- /examples/hypnotic.js: -------------------------------------------------------------------------------- 1 | // generate hypnotic pattern 2 | 3 | title('hypnotic') 4 | 5 | var psize = 22 6 | var achan = 255 7 | var tfactor = 0.000028 8 | fps(56) 9 | 10 | function draw() { 11 | for (var x = 0; x < w; x += psize) { 12 | for (var y = 0; y < h; y += psize) { 13 | achan = 255 & (x * (y - x) * ms() * tfactor) 14 | achan = map(achan, 0, 255, 0, 1) 15 | fstyle(`rgba(0, 0, 0, ${achan})`) 16 | frect(x, y, psize, psize) 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /examples/images-glitching.js: -------------------------------------------------------------------------------- 1 | // fetch image and re-draw it 2 | 3 | title('image$ glitching') 4 | clearf(false) 5 | 6 | const img = image('https://i.imgur.com/S7m2aFQ.jpg') 7 | 8 | function draw() { 9 | let t = Math.ceil(abs(sin(ms() * 0.0001)) * 10) 10 | fps(t) 11 | let s = [w, w, w / 2, w / 4][rand(0, 4)] 12 | dimage(img, 0, 0, s, s) 13 | let d = gidata(0, 0, h, h) 14 | let x = rand(-w, w) 15 | let y = rand(-h, h) 16 | pidata(d, x, y) 17 | } 18 | -------------------------------------------------------------------------------- /examples/line-pattern.js: -------------------------------------------------------------------------------- 1 | title('line pattern') 2 | 3 | let x 4 | let y 5 | let x2 6 | let y2 7 | let s = 12 8 | lwidth(0.5) 9 | begin() 10 | for (x = 0; x < w; x += s) { 11 | for (y = 0; y < h; y += s) { 12 | x2 = min(y & x, y) 13 | y2 = y | (x >> y) 14 | move(x, y) 15 | line(x2, y2) 16 | } 17 | } 18 | stroke() 19 | -------------------------------------------------------------------------------- /examples/mod-video-stream.js: -------------------------------------------------------------------------------- 1 | title('modulating video strm') 2 | fps(12) 3 | clearf(true) 4 | let video = capture({ video: true }) 5 | let width = 500 6 | let height = 500 7 | 8 | function draw() { 9 | let r = floor(map(sin(ms() * 0.001), -1, 1, 0, 255)) 10 | dimageoff(video, 0, 0, width, height) 11 | let vidata = gidataoff(0, 0, width, height) 12 | let pixels = vidata.data 13 | for (let i = 0; i < pixels.length; i += 4) { 14 | let p = pixels[i] 15 | if (p <= 68) { 16 | pixels[i] = r / 2 17 | pixels[i + 2] = 255 - r 18 | } 19 | } 20 | pidata(vidata, 200, 100) 21 | } 22 | -------------------------------------------------------------------------------- /examples/numbers.js: -------------------------------------------------------------------------------- 1 | // raining numbers 2 | 3 | title('numbers raining') 4 | 5 | let x 6 | let y 7 | let s = 14 8 | t = ms() 9 | fps(50) 10 | font(`${s}px monospace`) 11 | fstyle('orange') 12 | fps(60) 13 | 14 | function draw() { 15 | t = ms() 16 | for (x = 0; x < w; x += s) { 17 | for (y = 0; y < h; y += s) { 18 | ftext(x & (y - (t % x)), x, y) 19 | } 20 | } 21 | log(x) 22 | } 23 | -------------------------------------------------------------------------------- /examples/perlin-noise.js: -------------------------------------------------------------------------------- 1 | // generate 2-dimensional texture with noise function 2 | // this is using simplex underneath (perlin-like) 3 | 4 | title('noise') 5 | 6 | function draw() { 7 | let s = 18 8 | let x = 0 9 | let y = 0 10 | let inc = 0.048 11 | for (let i = 0; i < w; i += s, x = 0, y += inc) { 12 | for (let j = 0; j < h; j += s, x += inc) { 13 | let n = map(noise(x, y), -1, 1, 0, 1) 14 | fstyle(`rgba(0,0,0,${n})`) 15 | frect(i, j, s, s) 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /examples/radial-gradient.js: -------------------------------------------------------------------------------- 1 | // breathing gradient 2 | 3 | title('breathing gradient') 4 | 5 | function draw() { 6 | let t = abs(sin(ms() * 0.0002) * 255) 7 | let g = rgrad(w / 2, h / 2, w / 4, w / 2, h / 2, 0) 8 | let c = rgba(255, t ^ 255, t, 1) 9 | g.stop(0, 'black').stop(0.4, c).stop(1, 'cyan') 10 | fstyle(g) 11 | frect(0, 0, w, h) 12 | } 13 | -------------------------------------------------------------------------------- /examples/spinning-boxes.js: -------------------------------------------------------------------------------- 1 | // spinning boxes made 2 | // using transforms 3 | 4 | title('spinning boxes') 5 | 6 | function draw() { 7 | push() 8 | fstyle('gold') 9 | tslate(w / 2, h / 2) 10 | rotate(-ms() / 2000) 11 | frect(-150, -150, 300, 300) 12 | pop() 13 | 14 | push() 15 | fstyle('tomato') 16 | tslate(w / 2, h / 2) 17 | rotate(ms() / 2500) 18 | frect(-50, -50, 100, 100) 19 | pop() 20 | } 21 | -------------------------------------------------------------------------------- /examples/text.js: -------------------------------------------------------------------------------- 1 | // draw some text 2 | 3 | title('text') 4 | font('200px sans-serif') 5 | fstyle('red') 6 | ftext('11', 50, 400) 7 | font('16px sans-serif') 8 | ftext( 9 | '11 is the natural number following 10 and preceding 12. It is the first repdigit.', 10 | 100, 11 | 450, 12 | ) 13 | -------------------------------------------------------------------------------- /examples/triangle-native-api.js: -------------------------------------------------------------------------------- 1 | // draw a triangle by closing path 2 | // using native canvas api 3 | ctx.beginPath() 4 | ctx.moveTo(ctx.canvas.width / 2, ctx.canvas.height / 2) 5 | ctx.lineTo(ctx.canvas.width / 2 - 50, ctx.canvas.height / 2 - 50) 6 | ctx.lineTo(ctx.canvas.width / 2 + 80, ctx.canvas.height / 2 + 20) 7 | ctx.closePath() 8 | ctx.stroke() 9 | -------------------------------------------------------------------------------- /examples/triangle.js: -------------------------------------------------------------------------------- 1 | // draw a triangle 2 | // by closing path 3 | 4 | title('triangle') 5 | 6 | begin() 7 | move(w / 2, h / 2) 8 | line(w / 2 - 50, h / 2 - 50) 9 | line(w / 2 + 80, h / 2 + 20) 10 | close() 11 | stroke() 12 | -------------------------------------------------------------------------------- /examples/xor-scorrier.js: -------------------------------------------------------------------------------- 1 | // endless xor-ing pattern 2 | 3 | title('XOR scorrier') 4 | 5 | let s1 = 5, 6 | s2 = 5 7 | function draw() { 8 | let t = ms() * 0.001 9 | for (let x = 0; x < w; x += s1, s1 += 0.0001, s2 += 0.00001) { 10 | for (let y = 0; y < h; y += s2) { 11 | frect(x ^ (y & t), y, 10, 10) 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /images/banana.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/htor/framing/7a34aae8d003fc8499a21abefae5371a16b22336/images/banana.png -------------------------------------------------------------------------------- /images/cactuar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/htor/framing/7a34aae8d003fc8499a21abefae5371a16b22336/images/cactuar.png -------------------------------------------------------------------------------- /images/castle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/htor/framing/7a34aae8d003fc8499a21abefae5371a16b22336/images/castle.png -------------------------------------------------------------------------------- /images/comput.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/htor/framing/7a34aae8d003fc8499a21abefae5371a16b22336/images/comput.png -------------------------------------------------------------------------------- /images/doge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/htor/framing/7a34aae8d003fc8499a21abefae5371a16b22336/images/doge.png -------------------------------------------------------------------------------- /images/room.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/htor/framing/7a34aae8d003fc8499a21abefae5371a16b22336/images/room.png -------------------------------------------------------------------------------- /images/satellite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/htor/framing/7a34aae8d003fc8499a21abefae5371a16b22336/images/satellite.png -------------------------------------------------------------------------------- /images/screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/htor/framing/7a34aae8d003fc8499a21abefae5371a16b22336/images/screen.png -------------------------------------------------------------------------------- /images/screen2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/htor/framing/7a34aae8d003fc8499a21abefae5371a16b22336/images/screen2.png -------------------------------------------------------------------------------- /images/siliconchip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/htor/framing/7a34aae8d003fc8499a21abefae5371a16b22336/images/siliconchip.png -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "framing", 3 | "version": "1.1.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "framing", 9 | "version": "1.1.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "@blu3r4y/lzma": "^2.3.3", 13 | "codemirror": "^5.65.16", 14 | "open-simplex-noise": "^1.6.0", 15 | "seedrandom": "^3.0.1" 16 | }, 17 | "devDependencies": { 18 | "rollup": "^1.9.0", 19 | "rollup-plugin-buble": "^0.19.6", 20 | "rollup-plugin-commonjs": "^9.3.4", 21 | "rollup-plugin-copy": "^3.5.0", 22 | "rollup-plugin-node-resolve": "^4.2.1", 23 | "rollup-plugin-postcss": "^2.0.3", 24 | "rollup-plugin-serve": "^1.0.1" 25 | } 26 | }, 27 | "node_modules/@blu3r4y/lzma": { 28 | "version": "2.3.3", 29 | "resolved": "https://registry.npmjs.org/@blu3r4y/lzma/-/lzma-2.3.3.tgz", 30 | "integrity": "sha512-2ckRSsYewLAgq/s8tUW3o5gurtCNYga1f9l0egV4QlT8hgVEilQHRt18s+behmPL2M/BPBxUINaOz67u++r0wA==", 31 | "bin": { 32 | "lzma.js": "bin/lzma.js" 33 | } 34 | }, 35 | "node_modules/@nodelib/fs.scandir": { 36 | "version": "2.1.5", 37 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 38 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 39 | "dev": true, 40 | "dependencies": { 41 | "@nodelib/fs.stat": "2.0.5", 42 | "run-parallel": "^1.1.9" 43 | }, 44 | "engines": { 45 | "node": ">= 8" 46 | } 47 | }, 48 | "node_modules/@nodelib/fs.stat": { 49 | "version": "2.0.5", 50 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 51 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 52 | "dev": true, 53 | "engines": { 54 | "node": ">= 8" 55 | } 56 | }, 57 | "node_modules/@nodelib/fs.walk": { 58 | "version": "1.2.8", 59 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 60 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 61 | "dev": true, 62 | "dependencies": { 63 | "@nodelib/fs.scandir": "2.1.5", 64 | "fastq": "^1.6.0" 65 | }, 66 | "engines": { 67 | "node": ">= 8" 68 | } 69 | }, 70 | "node_modules/@types/estree": { 71 | "version": "0.0.39", 72 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", 73 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", 74 | "dev": true 75 | }, 76 | "node_modules/@types/fs-extra": { 77 | "version": "8.1.5", 78 | "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.5.tgz", 79 | "integrity": "sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==", 80 | "dev": true, 81 | "dependencies": { 82 | "@types/node": "*" 83 | } 84 | }, 85 | "node_modules/@types/glob": { 86 | "version": "7.2.0", 87 | "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", 88 | "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", 89 | "dev": true, 90 | "dependencies": { 91 | "@types/minimatch": "*", 92 | "@types/node": "*" 93 | } 94 | }, 95 | "node_modules/@types/minimatch": { 96 | "version": "5.1.2", 97 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", 98 | "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", 99 | "dev": true 100 | }, 101 | "node_modules/@types/node": { 102 | "version": "11.13.0", 103 | "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.0.tgz", 104 | "integrity": "sha512-rx29MMkRdVmzunmiA4lzBYJNnXsW/PhG4kMBy2ATsYaDjGGR75dCFEVVROKpNwlVdcUX3xxlghKQOeDPBJobng==", 105 | "dev": true 106 | }, 107 | "node_modules/@types/q": { 108 | "version": "1.5.2", 109 | "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", 110 | "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", 111 | "dev": true 112 | }, 113 | "node_modules/@types/resolve": { 114 | "version": "0.0.8", 115 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", 116 | "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", 117 | "dev": true, 118 | "dependencies": { 119 | "@types/node": "*" 120 | } 121 | }, 122 | "node_modules/acorn": { 123 | "version": "6.4.1", 124 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", 125 | "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", 126 | "dev": true, 127 | "bin": { 128 | "acorn": "bin/acorn" 129 | }, 130 | "engines": { 131 | "node": ">=0.4.0" 132 | } 133 | }, 134 | "node_modules/acorn-dynamic-import": { 135 | "version": "4.0.0", 136 | "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", 137 | "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", 138 | "deprecated": "This is probably built in to whatever tool you're using. If you still need it... idk", 139 | "dev": true, 140 | "peerDependencies": { 141 | "acorn": "^6.0.0" 142 | } 143 | }, 144 | "node_modules/acorn-jsx": { 145 | "version": "5.0.1", 146 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", 147 | "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", 148 | "dev": true, 149 | "peerDependencies": { 150 | "acorn": "^6.0.0" 151 | } 152 | }, 153 | "node_modules/alphanum-sort": { 154 | "version": "1.0.2", 155 | "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", 156 | "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", 157 | "dev": true 158 | }, 159 | "node_modules/ansi-regex": { 160 | "version": "2.1.1", 161 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 162 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 163 | "dev": true, 164 | "engines": { 165 | "node": ">=0.10.0" 166 | } 167 | }, 168 | "node_modules/ansi-styles": { 169 | "version": "3.2.1", 170 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 171 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 172 | "dev": true, 173 | "dependencies": { 174 | "color-convert": "^1.9.0" 175 | }, 176 | "engines": { 177 | "node": ">=4" 178 | } 179 | }, 180 | "node_modules/argparse": { 181 | "version": "1.0.10", 182 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 183 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 184 | "dev": true, 185 | "dependencies": { 186 | "sprintf-js": "~1.0.2" 187 | } 188 | }, 189 | "node_modules/array-union": { 190 | "version": "2.1.0", 191 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 192 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 193 | "dev": true, 194 | "engines": { 195 | "node": ">=8" 196 | } 197 | }, 198 | "node_modules/balanced-match": { 199 | "version": "1.0.2", 200 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 201 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 202 | "dev": true 203 | }, 204 | "node_modules/big.js": { 205 | "version": "3.2.0", 206 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", 207 | "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", 208 | "dev": true, 209 | "engines": { 210 | "node": "*" 211 | } 212 | }, 213 | "node_modules/boolbase": { 214 | "version": "1.0.0", 215 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 216 | "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", 217 | "dev": true 218 | }, 219 | "node_modules/brace-expansion": { 220 | "version": "1.1.11", 221 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 222 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 223 | "dev": true, 224 | "dependencies": { 225 | "balanced-match": "^1.0.0", 226 | "concat-map": "0.0.1" 227 | } 228 | }, 229 | "node_modules/braces": { 230 | "version": "3.0.2", 231 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 232 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 233 | "dev": true, 234 | "dependencies": { 235 | "fill-range": "^7.0.1" 236 | }, 237 | "engines": { 238 | "node": ">=8" 239 | } 240 | }, 241 | "node_modules/browserslist": { 242 | "version": "4.5.4", 243 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", 244 | "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", 245 | "dev": true, 246 | "dependencies": { 247 | "caniuse-lite": "^1.0.30000955", 248 | "electron-to-chromium": "^1.3.122", 249 | "node-releases": "^1.1.13" 250 | }, 251 | "bin": { 252 | "browserslist": "cli.js" 253 | } 254 | }, 255 | "node_modules/buble": { 256 | "version": "0.19.7", 257 | "resolved": "https://registry.npmjs.org/buble/-/buble-0.19.7.tgz", 258 | "integrity": "sha512-YLgWxX/l+NnfotydBlxqCMPR4FREE4ubuHphALz0FxQ7u2hp3BzxTKQ4nKpapOaRJfEm1gukC68KnT2OymRK0g==", 259 | "dev": true, 260 | "dependencies": { 261 | "acorn": "^6.1.1", 262 | "acorn-dynamic-import": "^4.0.0", 263 | "acorn-jsx": "^5.0.1", 264 | "chalk": "^2.4.2", 265 | "magic-string": "^0.25.2", 266 | "minimist": "^1.2.0", 267 | "os-homedir": "^1.0.1", 268 | "regexpu-core": "^4.5.4" 269 | }, 270 | "bin": { 271 | "buble": "bin/buble" 272 | } 273 | }, 274 | "node_modules/builtin-modules": { 275 | "version": "3.1.0", 276 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", 277 | "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", 278 | "dev": true, 279 | "engines": { 280 | "node": ">=6" 281 | } 282 | }, 283 | "node_modules/caller-callsite": { 284 | "version": "2.0.0", 285 | "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", 286 | "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", 287 | "dev": true, 288 | "dependencies": { 289 | "callsites": "^2.0.0" 290 | }, 291 | "engines": { 292 | "node": ">=4" 293 | } 294 | }, 295 | "node_modules/caller-path": { 296 | "version": "2.0.0", 297 | "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", 298 | "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", 299 | "dev": true, 300 | "dependencies": { 301 | "caller-callsite": "^2.0.0" 302 | }, 303 | "engines": { 304 | "node": ">=4" 305 | } 306 | }, 307 | "node_modules/callsites": { 308 | "version": "2.0.0", 309 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", 310 | "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", 311 | "dev": true, 312 | "engines": { 313 | "node": ">=4" 314 | } 315 | }, 316 | "node_modules/caniuse-api": { 317 | "version": "3.0.0", 318 | "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", 319 | "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", 320 | "dev": true, 321 | "dependencies": { 322 | "browserslist": "^4.0.0", 323 | "caniuse-lite": "^1.0.0", 324 | "lodash.memoize": "^4.1.2", 325 | "lodash.uniq": "^4.5.0" 326 | } 327 | }, 328 | "node_modules/caniuse-lite": { 329 | "version": "1.0.30000957", 330 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000957.tgz", 331 | "integrity": "sha512-8wxNrjAzyiHcLXN/iunskqQnJquQQ6VX8JHfW5kLgAPRSiSuKZiNfmIkP5j7jgyXqAQBSoXyJxfnbCFS0ThSiQ==", 332 | "dev": true 333 | }, 334 | "node_modules/chalk": { 335 | "version": "2.4.2", 336 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 337 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 338 | "dev": true, 339 | "dependencies": { 340 | "ansi-styles": "^3.2.1", 341 | "escape-string-regexp": "^1.0.5", 342 | "supports-color": "^5.3.0" 343 | }, 344 | "engines": { 345 | "node": ">=4" 346 | } 347 | }, 348 | "node_modules/chalk/node_modules/supports-color": { 349 | "version": "5.5.0", 350 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 351 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 352 | "dev": true, 353 | "dependencies": { 354 | "has-flag": "^3.0.0" 355 | }, 356 | "engines": { 357 | "node": ">=4" 358 | } 359 | }, 360 | "node_modules/coa": { 361 | "version": "2.0.2", 362 | "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", 363 | "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", 364 | "dev": true, 365 | "dependencies": { 366 | "@types/q": "^1.5.1", 367 | "chalk": "^2.4.1", 368 | "q": "^1.1.2" 369 | }, 370 | "engines": { 371 | "node": ">= 4.0" 372 | } 373 | }, 374 | "node_modules/codemirror": { 375 | "version": "5.65.16", 376 | "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.16.tgz", 377 | "integrity": "sha512-br21LjYmSlVL0vFCPWPfhzUCT34FM/pAdK7rRIZwa0rrtrIdotvP4Oh4GUHsu2E3IrQMCfRkL/fN3ytMNxVQvg==" 378 | }, 379 | "node_modules/color": { 380 | "version": "3.1.0", 381 | "resolved": "https://registry.npmjs.org/color/-/color-3.1.0.tgz", 382 | "integrity": "sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg==", 383 | "dev": true, 384 | "dependencies": { 385 | "color-convert": "^1.9.1", 386 | "color-string": "^1.5.2" 387 | } 388 | }, 389 | "node_modules/color-convert": { 390 | "version": "1.9.3", 391 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 392 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 393 | "dev": true, 394 | "dependencies": { 395 | "color-name": "1.1.3" 396 | } 397 | }, 398 | "node_modules/color-name": { 399 | "version": "1.1.3", 400 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 401 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 402 | "dev": true 403 | }, 404 | "node_modules/color-string": { 405 | "version": "1.5.3", 406 | "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", 407 | "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", 408 | "dev": true, 409 | "dependencies": { 410 | "color-name": "^1.0.0", 411 | "simple-swizzle": "^0.2.2" 412 | } 413 | }, 414 | "node_modules/colorette": { 415 | "version": "1.4.0", 416 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", 417 | "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", 418 | "dev": true 419 | }, 420 | "node_modules/concat-map": { 421 | "version": "0.0.1", 422 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 423 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 424 | "dev": true 425 | }, 426 | "node_modules/concat-with-sourcemaps": { 427 | "version": "1.1.0", 428 | "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", 429 | "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", 430 | "dev": true, 431 | "dependencies": { 432 | "source-map": "^0.6.1" 433 | } 434 | }, 435 | "node_modules/cosmiconfig": { 436 | "version": "5.2.0", 437 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.0.tgz", 438 | "integrity": "sha512-nxt+Nfc3JAqf4WIWd0jXLjTJZmsPLrA9DDc4nRw2KFJQJK7DNooqSXrNI7tzLG50CF8axczly5UV929tBmh/7g==", 439 | "dev": true, 440 | "dependencies": { 441 | "import-fresh": "^2.0.0", 442 | "is-directory": "^0.3.1", 443 | "js-yaml": "^3.13.0", 444 | "parse-json": "^4.0.0" 445 | }, 446 | "engines": { 447 | "node": ">=4" 448 | } 449 | }, 450 | "node_modules/css-color-names": { 451 | "version": "0.0.4", 452 | "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", 453 | "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", 454 | "dev": true, 455 | "engines": { 456 | "node": "*" 457 | } 458 | }, 459 | "node_modules/css-declaration-sorter": { 460 | "version": "4.0.1", 461 | "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", 462 | "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", 463 | "dev": true, 464 | "dependencies": { 465 | "postcss": "^7.0.1", 466 | "timsort": "^0.3.0" 467 | }, 468 | "engines": { 469 | "node": ">4" 470 | } 471 | }, 472 | "node_modules/css-modules-loader-core": { 473 | "version": "1.1.0", 474 | "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", 475 | "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=", 476 | "dev": true, 477 | "dependencies": { 478 | "icss-replace-symbols": "1.1.0", 479 | "postcss": "6.0.1", 480 | "postcss-modules-extract-imports": "1.1.0", 481 | "postcss-modules-local-by-default": "1.2.0", 482 | "postcss-modules-scope": "1.1.0", 483 | "postcss-modules-values": "1.3.0" 484 | } 485 | }, 486 | "node_modules/css-modules-loader-core/node_modules/ansi-styles": { 487 | "version": "2.2.1", 488 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 489 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 490 | "dev": true, 491 | "engines": { 492 | "node": ">=0.10.0" 493 | } 494 | }, 495 | "node_modules/css-modules-loader-core/node_modules/chalk": { 496 | "version": "1.1.3", 497 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 498 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 499 | "dev": true, 500 | "dependencies": { 501 | "ansi-styles": "^2.2.1", 502 | "escape-string-regexp": "^1.0.2", 503 | "has-ansi": "^2.0.0", 504 | "strip-ansi": "^3.0.0", 505 | "supports-color": "^2.0.0" 506 | }, 507 | "engines": { 508 | "node": ">=0.10.0" 509 | } 510 | }, 511 | "node_modules/css-modules-loader-core/node_modules/chalk/node_modules/supports-color": { 512 | "version": "2.0.0", 513 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 514 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 515 | "dev": true, 516 | "engines": { 517 | "node": ">=0.8.0" 518 | } 519 | }, 520 | "node_modules/css-modules-loader-core/node_modules/has-flag": { 521 | "version": "1.0.0", 522 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", 523 | "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", 524 | "dev": true, 525 | "engines": { 526 | "node": ">=0.10.0" 527 | } 528 | }, 529 | "node_modules/css-modules-loader-core/node_modules/postcss": { 530 | "version": "6.0.1", 531 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", 532 | "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=", 533 | "dev": true, 534 | "dependencies": { 535 | "chalk": "^1.1.3", 536 | "source-map": "^0.5.6", 537 | "supports-color": "^3.2.3" 538 | }, 539 | "engines": { 540 | "node": ">=4.0.0" 541 | } 542 | }, 543 | "node_modules/css-modules-loader-core/node_modules/source-map": { 544 | "version": "0.5.7", 545 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 546 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 547 | "dev": true, 548 | "engines": { 549 | "node": ">=0.10.0" 550 | } 551 | }, 552 | "node_modules/css-modules-loader-core/node_modules/supports-color": { 553 | "version": "3.2.3", 554 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", 555 | "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", 556 | "dev": true, 557 | "dependencies": { 558 | "has-flag": "^1.0.0" 559 | }, 560 | "engines": { 561 | "node": ">=0.8.0" 562 | } 563 | }, 564 | "node_modules/css-select": { 565 | "version": "2.0.2", 566 | "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.0.2.tgz", 567 | "integrity": "sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==", 568 | "dev": true, 569 | "dependencies": { 570 | "boolbase": "^1.0.0", 571 | "css-what": "^2.1.2", 572 | "domutils": "^1.7.0", 573 | "nth-check": "^1.0.2" 574 | } 575 | }, 576 | "node_modules/css-select-base-adapter": { 577 | "version": "0.1.1", 578 | "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", 579 | "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", 580 | "dev": true 581 | }, 582 | "node_modules/css-selector-tokenizer": { 583 | "version": "0.7.1", 584 | "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", 585 | "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", 586 | "dev": true, 587 | "dependencies": { 588 | "cssesc": "^0.1.0", 589 | "fastparse": "^1.1.1", 590 | "regexpu-core": "^1.0.0" 591 | } 592 | }, 593 | "node_modules/css-selector-tokenizer/node_modules/cssesc": { 594 | "version": "0.1.0", 595 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", 596 | "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", 597 | "dev": true, 598 | "bin": { 599 | "cssesc": "bin/cssesc" 600 | } 601 | }, 602 | "node_modules/css-selector-tokenizer/node_modules/regexpu-core": { 603 | "version": "1.0.0", 604 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", 605 | "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", 606 | "dev": true, 607 | "dependencies": { 608 | "regenerate": "^1.2.1", 609 | "regjsgen": "^0.2.0", 610 | "regjsparser": "^0.1.4" 611 | } 612 | }, 613 | "node_modules/css-selector-tokenizer/node_modules/regjsgen": { 614 | "version": "0.2.0", 615 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", 616 | "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", 617 | "dev": true 618 | }, 619 | "node_modules/css-selector-tokenizer/node_modules/regjsparser": { 620 | "version": "0.1.5", 621 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", 622 | "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", 623 | "dev": true, 624 | "dependencies": { 625 | "jsesc": "~0.5.0" 626 | }, 627 | "bin": { 628 | "regjsparser": "bin/parser" 629 | } 630 | }, 631 | "node_modules/css-tree": { 632 | "version": "1.0.0-alpha.28", 633 | "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.28.tgz", 634 | "integrity": "sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==", 635 | "dev": true, 636 | "dependencies": { 637 | "mdn-data": "~1.1.0", 638 | "source-map": "^0.5.3" 639 | }, 640 | "engines": { 641 | "node": ">=0.10.0" 642 | } 643 | }, 644 | "node_modules/css-tree/node_modules/source-map": { 645 | "version": "0.5.7", 646 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 647 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 648 | "dev": true, 649 | "engines": { 650 | "node": ">=0.10.0" 651 | } 652 | }, 653 | "node_modules/css-unit-converter": { 654 | "version": "1.1.1", 655 | "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", 656 | "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=", 657 | "dev": true 658 | }, 659 | "node_modules/css-url-regex": { 660 | "version": "1.1.0", 661 | "resolved": "https://registry.npmjs.org/css-url-regex/-/css-url-regex-1.1.0.tgz", 662 | "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=", 663 | "dev": true 664 | }, 665 | "node_modules/css-what": { 666 | "version": "2.1.3", 667 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", 668 | "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", 669 | "dev": true, 670 | "engines": { 671 | "node": "*" 672 | } 673 | }, 674 | "node_modules/cssesc": { 675 | "version": "2.0.0", 676 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", 677 | "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", 678 | "dev": true, 679 | "bin": { 680 | "cssesc": "bin/cssesc" 681 | }, 682 | "engines": { 683 | "node": ">=4" 684 | } 685 | }, 686 | "node_modules/cssnano": { 687 | "version": "4.1.10", 688 | "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", 689 | "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", 690 | "dev": true, 691 | "dependencies": { 692 | "cosmiconfig": "^5.0.0", 693 | "cssnano-preset-default": "^4.0.7", 694 | "is-resolvable": "^1.0.0", 695 | "postcss": "^7.0.0" 696 | }, 697 | "engines": { 698 | "node": ">=6.9.0" 699 | } 700 | }, 701 | "node_modules/cssnano-preset-default": { 702 | "version": "4.0.7", 703 | "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", 704 | "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", 705 | "dev": true, 706 | "dependencies": { 707 | "css-declaration-sorter": "^4.0.1", 708 | "cssnano-util-raw-cache": "^4.0.1", 709 | "postcss": "^7.0.0", 710 | "postcss-calc": "^7.0.1", 711 | "postcss-colormin": "^4.0.3", 712 | "postcss-convert-values": "^4.0.1", 713 | "postcss-discard-comments": "^4.0.2", 714 | "postcss-discard-duplicates": "^4.0.2", 715 | "postcss-discard-empty": "^4.0.1", 716 | "postcss-discard-overridden": "^4.0.1", 717 | "postcss-merge-longhand": "^4.0.11", 718 | "postcss-merge-rules": "^4.0.3", 719 | "postcss-minify-font-values": "^4.0.2", 720 | "postcss-minify-gradients": "^4.0.2", 721 | "postcss-minify-params": "^4.0.2", 722 | "postcss-minify-selectors": "^4.0.2", 723 | "postcss-normalize-charset": "^4.0.1", 724 | "postcss-normalize-display-values": "^4.0.2", 725 | "postcss-normalize-positions": "^4.0.2", 726 | "postcss-normalize-repeat-style": "^4.0.2", 727 | "postcss-normalize-string": "^4.0.2", 728 | "postcss-normalize-timing-functions": "^4.0.2", 729 | "postcss-normalize-unicode": "^4.0.1", 730 | "postcss-normalize-url": "^4.0.1", 731 | "postcss-normalize-whitespace": "^4.0.2", 732 | "postcss-ordered-values": "^4.1.2", 733 | "postcss-reduce-initial": "^4.0.3", 734 | "postcss-reduce-transforms": "^4.0.2", 735 | "postcss-svgo": "^4.0.2", 736 | "postcss-unique-selectors": "^4.0.1" 737 | }, 738 | "engines": { 739 | "node": ">=6.9.0" 740 | } 741 | }, 742 | "node_modules/cssnano-util-get-arguments": { 743 | "version": "4.0.0", 744 | "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", 745 | "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", 746 | "dev": true, 747 | "engines": { 748 | "node": ">=6.9.0" 749 | } 750 | }, 751 | "node_modules/cssnano-util-get-match": { 752 | "version": "4.0.0", 753 | "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", 754 | "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", 755 | "dev": true, 756 | "engines": { 757 | "node": ">=6.9.0" 758 | } 759 | }, 760 | "node_modules/cssnano-util-raw-cache": { 761 | "version": "4.0.1", 762 | "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", 763 | "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", 764 | "dev": true, 765 | "dependencies": { 766 | "postcss": "^7.0.0" 767 | }, 768 | "engines": { 769 | "node": ">=6.9.0" 770 | } 771 | }, 772 | "node_modules/cssnano-util-same-parent": { 773 | "version": "4.0.1", 774 | "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", 775 | "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", 776 | "dev": true, 777 | "engines": { 778 | "node": ">=6.9.0" 779 | } 780 | }, 781 | "node_modules/csso": { 782 | "version": "3.5.1", 783 | "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz", 784 | "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", 785 | "dev": true, 786 | "dependencies": { 787 | "css-tree": "1.0.0-alpha.29" 788 | }, 789 | "engines": { 790 | "node": ">=0.10.0" 791 | } 792 | }, 793 | "node_modules/csso/node_modules/css-tree": { 794 | "version": "1.0.0-alpha.29", 795 | "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz", 796 | "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", 797 | "dev": true, 798 | "dependencies": { 799 | "mdn-data": "~1.1.0", 800 | "source-map": "^0.5.3" 801 | }, 802 | "engines": { 803 | "node": ">=0.10.0" 804 | } 805 | }, 806 | "node_modules/csso/node_modules/source-map": { 807 | "version": "0.5.7", 808 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 809 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 810 | "dev": true, 811 | "engines": { 812 | "node": ">=0.10.0" 813 | } 814 | }, 815 | "node_modules/define-properties": { 816 | "version": "1.1.3", 817 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 818 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 819 | "dev": true, 820 | "dependencies": { 821 | "object-keys": "^1.0.12" 822 | }, 823 | "engines": { 824 | "node": ">= 0.4" 825 | } 826 | }, 827 | "node_modules/dir-glob": { 828 | "version": "3.0.1", 829 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 830 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 831 | "dev": true, 832 | "dependencies": { 833 | "path-type": "^4.0.0" 834 | }, 835 | "engines": { 836 | "node": ">=8" 837 | } 838 | }, 839 | "node_modules/dom-serializer": { 840 | "version": "0.1.1", 841 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", 842 | "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", 843 | "dev": true, 844 | "dependencies": { 845 | "domelementtype": "^1.3.0", 846 | "entities": "^1.1.1" 847 | } 848 | }, 849 | "node_modules/domelementtype": { 850 | "version": "1.3.1", 851 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", 852 | "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", 853 | "dev": true 854 | }, 855 | "node_modules/domutils": { 856 | "version": "1.7.0", 857 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", 858 | "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", 859 | "dev": true, 860 | "dependencies": { 861 | "dom-serializer": "0", 862 | "domelementtype": "1" 863 | } 864 | }, 865 | "node_modules/dot-prop": { 866 | "version": "4.2.0", 867 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", 868 | "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", 869 | "dev": true, 870 | "dependencies": { 871 | "is-obj": "^1.0.0" 872 | }, 873 | "engines": { 874 | "node": ">=4" 875 | } 876 | }, 877 | "node_modules/electron-to-chromium": { 878 | "version": "1.3.124", 879 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.124.tgz", 880 | "integrity": "sha512-glecGr/kFdfeXUHOHAWvGcXrxNU+1wSO/t5B23tT1dtlvYB26GY8aHzZSWD7HqhqC800Lr+w/hQul6C5AF542w==", 881 | "dev": true 882 | }, 883 | "node_modules/emojis-list": { 884 | "version": "2.1.0", 885 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", 886 | "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", 887 | "dev": true, 888 | "engines": { 889 | "node": ">= 0.10" 890 | } 891 | }, 892 | "node_modules/entities": { 893 | "version": "1.1.2", 894 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", 895 | "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", 896 | "dev": true 897 | }, 898 | "node_modules/error-ex": { 899 | "version": "1.3.2", 900 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 901 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 902 | "dev": true, 903 | "dependencies": { 904 | "is-arrayish": "^0.2.1" 905 | } 906 | }, 907 | "node_modules/es-abstract": { 908 | "version": "1.13.0", 909 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", 910 | "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", 911 | "dev": true, 912 | "dependencies": { 913 | "es-to-primitive": "^1.2.0", 914 | "function-bind": "^1.1.1", 915 | "has": "^1.0.3", 916 | "is-callable": "^1.1.4", 917 | "is-regex": "^1.0.4", 918 | "object-keys": "^1.0.12" 919 | }, 920 | "engines": { 921 | "node": ">= 0.4" 922 | } 923 | }, 924 | "node_modules/es-to-primitive": { 925 | "version": "1.2.0", 926 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", 927 | "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", 928 | "dev": true, 929 | "dependencies": { 930 | "is-callable": "^1.1.4", 931 | "is-date-object": "^1.0.1", 932 | "is-symbol": "^1.0.2" 933 | }, 934 | "engines": { 935 | "node": ">= 0.4" 936 | } 937 | }, 938 | "node_modules/escape-string-regexp": { 939 | "version": "1.0.5", 940 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 941 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 942 | "dev": true, 943 | "engines": { 944 | "node": ">=0.8.0" 945 | } 946 | }, 947 | "node_modules/esprima": { 948 | "version": "4.0.1", 949 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 950 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 951 | "dev": true, 952 | "bin": { 953 | "esparse": "bin/esparse.js", 954 | "esvalidate": "bin/esvalidate.js" 955 | }, 956 | "engines": { 957 | "node": ">=4" 958 | } 959 | }, 960 | "node_modules/estree-walker": { 961 | "version": "0.6.0", 962 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.0.tgz", 963 | "integrity": "sha512-peq1RfVAVzr3PU/jL31RaOjUKLoZJpObQWJJ+LgfcxDUifyLZ1RjPQZTl0pzj2uJ45b7A7XpyppXvxdEqzo4rw==", 964 | "dev": true 965 | }, 966 | "node_modules/fast-glob": { 967 | "version": "3.3.2", 968 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 969 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 970 | "dev": true, 971 | "dependencies": { 972 | "@nodelib/fs.stat": "^2.0.2", 973 | "@nodelib/fs.walk": "^1.2.3", 974 | "glob-parent": "^5.1.2", 975 | "merge2": "^1.3.0", 976 | "micromatch": "^4.0.4" 977 | }, 978 | "engines": { 979 | "node": ">=8.6.0" 980 | } 981 | }, 982 | "node_modules/fastparse": { 983 | "version": "1.1.2", 984 | "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", 985 | "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", 986 | "dev": true 987 | }, 988 | "node_modules/fastq": { 989 | "version": "1.15.0", 990 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", 991 | "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", 992 | "dev": true, 993 | "dependencies": { 994 | "reusify": "^1.0.4" 995 | } 996 | }, 997 | "node_modules/fill-range": { 998 | "version": "7.0.1", 999 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1000 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1001 | "dev": true, 1002 | "dependencies": { 1003 | "to-regex-range": "^5.0.1" 1004 | }, 1005 | "engines": { 1006 | "node": ">=8" 1007 | } 1008 | }, 1009 | "node_modules/fs-extra": { 1010 | "version": "8.1.0", 1011 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 1012 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 1013 | "dev": true, 1014 | "dependencies": { 1015 | "graceful-fs": "^4.2.0", 1016 | "jsonfile": "^4.0.0", 1017 | "universalify": "^0.1.0" 1018 | }, 1019 | "engines": { 1020 | "node": ">=6 <7 || >=8" 1021 | } 1022 | }, 1023 | "node_modules/fs.realpath": { 1024 | "version": "1.0.0", 1025 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1026 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1027 | "dev": true 1028 | }, 1029 | "node_modules/function-bind": { 1030 | "version": "1.1.1", 1031 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1032 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1033 | "dev": true 1034 | }, 1035 | "node_modules/generic-names": { 1036 | "version": "1.0.3", 1037 | "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-1.0.3.tgz", 1038 | "integrity": "sha1-LXhqEhruUIh2eWk56OO/+DbCCRc=", 1039 | "dev": true, 1040 | "dependencies": { 1041 | "loader-utils": "^0.2.16" 1042 | } 1043 | }, 1044 | "node_modules/glob": { 1045 | "version": "7.2.3", 1046 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1047 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1048 | "dev": true, 1049 | "dependencies": { 1050 | "fs.realpath": "^1.0.0", 1051 | "inflight": "^1.0.4", 1052 | "inherits": "2", 1053 | "minimatch": "^3.1.1", 1054 | "once": "^1.3.0", 1055 | "path-is-absolute": "^1.0.0" 1056 | }, 1057 | "engines": { 1058 | "node": "*" 1059 | }, 1060 | "funding": { 1061 | "url": "https://github.com/sponsors/isaacs" 1062 | } 1063 | }, 1064 | "node_modules/glob-parent": { 1065 | "version": "5.1.2", 1066 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1067 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1068 | "dev": true, 1069 | "dependencies": { 1070 | "is-glob": "^4.0.1" 1071 | }, 1072 | "engines": { 1073 | "node": ">= 6" 1074 | } 1075 | }, 1076 | "node_modules/globby": { 1077 | "version": "10.0.1", 1078 | "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", 1079 | "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==", 1080 | "dev": true, 1081 | "dependencies": { 1082 | "@types/glob": "^7.1.1", 1083 | "array-union": "^2.1.0", 1084 | "dir-glob": "^3.0.1", 1085 | "fast-glob": "^3.0.3", 1086 | "glob": "^7.1.3", 1087 | "ignore": "^5.1.1", 1088 | "merge2": "^1.2.3", 1089 | "slash": "^3.0.0" 1090 | }, 1091 | "engines": { 1092 | "node": ">=8" 1093 | } 1094 | }, 1095 | "node_modules/graceful-fs": { 1096 | "version": "4.2.11", 1097 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 1098 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 1099 | "dev": true 1100 | }, 1101 | "node_modules/has": { 1102 | "version": "1.0.3", 1103 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1104 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1105 | "dev": true, 1106 | "dependencies": { 1107 | "function-bind": "^1.1.1" 1108 | }, 1109 | "engines": { 1110 | "node": ">= 0.4.0" 1111 | } 1112 | }, 1113 | "node_modules/has-ansi": { 1114 | "version": "2.0.0", 1115 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 1116 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 1117 | "dev": true, 1118 | "dependencies": { 1119 | "ansi-regex": "^2.0.0" 1120 | }, 1121 | "engines": { 1122 | "node": ">=0.10.0" 1123 | } 1124 | }, 1125 | "node_modules/has-flag": { 1126 | "version": "3.0.0", 1127 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1128 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1129 | "dev": true, 1130 | "engines": { 1131 | "node": ">=4" 1132 | } 1133 | }, 1134 | "node_modules/has-symbols": { 1135 | "version": "1.0.0", 1136 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", 1137 | "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", 1138 | "dev": true, 1139 | "engines": { 1140 | "node": ">= 0.4" 1141 | } 1142 | }, 1143 | "node_modules/hex-color-regex": { 1144 | "version": "1.1.0", 1145 | "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", 1146 | "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", 1147 | "dev": true 1148 | }, 1149 | "node_modules/hsl-regex": { 1150 | "version": "1.0.0", 1151 | "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", 1152 | "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", 1153 | "dev": true 1154 | }, 1155 | "node_modules/hsla-regex": { 1156 | "version": "1.0.0", 1157 | "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", 1158 | "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", 1159 | "dev": true 1160 | }, 1161 | "node_modules/html-comment-regex": { 1162 | "version": "1.1.2", 1163 | "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", 1164 | "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", 1165 | "dev": true 1166 | }, 1167 | "node_modules/icss-replace-symbols": { 1168 | "version": "1.1.0", 1169 | "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", 1170 | "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", 1171 | "dev": true 1172 | }, 1173 | "node_modules/ignore": { 1174 | "version": "5.3.0", 1175 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", 1176 | "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", 1177 | "dev": true, 1178 | "engines": { 1179 | "node": ">= 4" 1180 | } 1181 | }, 1182 | "node_modules/import-cwd": { 1183 | "version": "2.1.0", 1184 | "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", 1185 | "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", 1186 | "dev": true, 1187 | "dependencies": { 1188 | "import-from": "^2.1.0" 1189 | }, 1190 | "engines": { 1191 | "node": ">=4" 1192 | } 1193 | }, 1194 | "node_modules/import-fresh": { 1195 | "version": "2.0.0", 1196 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", 1197 | "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", 1198 | "dev": true, 1199 | "dependencies": { 1200 | "caller-path": "^2.0.0", 1201 | "resolve-from": "^3.0.0" 1202 | }, 1203 | "engines": { 1204 | "node": ">=4" 1205 | } 1206 | }, 1207 | "node_modules/import-from": { 1208 | "version": "2.1.0", 1209 | "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", 1210 | "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", 1211 | "dev": true, 1212 | "dependencies": { 1213 | "resolve-from": "^3.0.0" 1214 | }, 1215 | "engines": { 1216 | "node": ">=4" 1217 | } 1218 | }, 1219 | "node_modules/indexes-of": { 1220 | "version": "1.0.1", 1221 | "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", 1222 | "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", 1223 | "dev": true 1224 | }, 1225 | "node_modules/inflight": { 1226 | "version": "1.0.6", 1227 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1228 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1229 | "dev": true, 1230 | "dependencies": { 1231 | "once": "^1.3.0", 1232 | "wrappy": "1" 1233 | } 1234 | }, 1235 | "node_modules/inherits": { 1236 | "version": "2.0.4", 1237 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1238 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1239 | "dev": true 1240 | }, 1241 | "node_modules/is-absolute-url": { 1242 | "version": "2.1.0", 1243 | "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", 1244 | "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", 1245 | "dev": true, 1246 | "engines": { 1247 | "node": ">=0.10.0" 1248 | } 1249 | }, 1250 | "node_modules/is-arrayish": { 1251 | "version": "0.2.1", 1252 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1253 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1254 | "dev": true 1255 | }, 1256 | "node_modules/is-callable": { 1257 | "version": "1.1.4", 1258 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", 1259 | "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", 1260 | "dev": true, 1261 | "engines": { 1262 | "node": ">= 0.4" 1263 | } 1264 | }, 1265 | "node_modules/is-color-stop": { 1266 | "version": "1.1.0", 1267 | "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", 1268 | "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", 1269 | "dev": true, 1270 | "dependencies": { 1271 | "css-color-names": "^0.0.4", 1272 | "hex-color-regex": "^1.1.0", 1273 | "hsl-regex": "^1.0.0", 1274 | "hsla-regex": "^1.0.0", 1275 | "rgb-regex": "^1.0.1", 1276 | "rgba-regex": "^1.0.0" 1277 | } 1278 | }, 1279 | "node_modules/is-date-object": { 1280 | "version": "1.0.1", 1281 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", 1282 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", 1283 | "dev": true, 1284 | "engines": { 1285 | "node": ">= 0.4" 1286 | } 1287 | }, 1288 | "node_modules/is-directory": { 1289 | "version": "0.3.1", 1290 | "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", 1291 | "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", 1292 | "dev": true, 1293 | "engines": { 1294 | "node": ">=0.10.0" 1295 | } 1296 | }, 1297 | "node_modules/is-extglob": { 1298 | "version": "2.1.1", 1299 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1300 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1301 | "dev": true, 1302 | "engines": { 1303 | "node": ">=0.10.0" 1304 | } 1305 | }, 1306 | "node_modules/is-glob": { 1307 | "version": "4.0.3", 1308 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1309 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1310 | "dev": true, 1311 | "dependencies": { 1312 | "is-extglob": "^2.1.1" 1313 | }, 1314 | "engines": { 1315 | "node": ">=0.10.0" 1316 | } 1317 | }, 1318 | "node_modules/is-module": { 1319 | "version": "1.0.0", 1320 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 1321 | "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", 1322 | "dev": true 1323 | }, 1324 | "node_modules/is-number": { 1325 | "version": "7.0.0", 1326 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1327 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1328 | "dev": true, 1329 | "engines": { 1330 | "node": ">=0.12.0" 1331 | } 1332 | }, 1333 | "node_modules/is-obj": { 1334 | "version": "1.0.1", 1335 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", 1336 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", 1337 | "dev": true, 1338 | "engines": { 1339 | "node": ">=0.10.0" 1340 | } 1341 | }, 1342 | "node_modules/is-plain-object": { 1343 | "version": "3.0.1", 1344 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz", 1345 | "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==", 1346 | "dev": true, 1347 | "engines": { 1348 | "node": ">=0.10.0" 1349 | } 1350 | }, 1351 | "node_modules/is-regex": { 1352 | "version": "1.0.4", 1353 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", 1354 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", 1355 | "dev": true, 1356 | "dependencies": { 1357 | "has": "^1.0.1" 1358 | }, 1359 | "engines": { 1360 | "node": ">= 0.4" 1361 | } 1362 | }, 1363 | "node_modules/is-resolvable": { 1364 | "version": "1.1.0", 1365 | "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", 1366 | "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", 1367 | "dev": true 1368 | }, 1369 | "node_modules/is-svg": { 1370 | "version": "3.0.0", 1371 | "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", 1372 | "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", 1373 | "dev": true, 1374 | "dependencies": { 1375 | "html-comment-regex": "^1.1.0" 1376 | }, 1377 | "engines": { 1378 | "node": ">=4" 1379 | } 1380 | }, 1381 | "node_modules/is-symbol": { 1382 | "version": "1.0.2", 1383 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", 1384 | "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", 1385 | "dev": true, 1386 | "dependencies": { 1387 | "has-symbols": "^1.0.0" 1388 | }, 1389 | "engines": { 1390 | "node": ">= 0.4" 1391 | } 1392 | }, 1393 | "node_modules/js-yaml": { 1394 | "version": "3.13.1", 1395 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 1396 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 1397 | "dev": true, 1398 | "dependencies": { 1399 | "argparse": "^1.0.7", 1400 | "esprima": "^4.0.0" 1401 | }, 1402 | "bin": { 1403 | "js-yaml": "bin/js-yaml.js" 1404 | } 1405 | }, 1406 | "node_modules/jsesc": { 1407 | "version": "0.5.0", 1408 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", 1409 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", 1410 | "dev": true, 1411 | "bin": { 1412 | "jsesc": "bin/jsesc" 1413 | } 1414 | }, 1415 | "node_modules/json-parse-better-errors": { 1416 | "version": "1.0.2", 1417 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 1418 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 1419 | "dev": true 1420 | }, 1421 | "node_modules/json5": { 1422 | "version": "0.5.1", 1423 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", 1424 | "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", 1425 | "dev": true, 1426 | "bin": { 1427 | "json5": "lib/cli.js" 1428 | } 1429 | }, 1430 | "node_modules/jsonfile": { 1431 | "version": "4.0.0", 1432 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 1433 | "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", 1434 | "dev": true, 1435 | "optionalDependencies": { 1436 | "graceful-fs": "^4.1.6" 1437 | } 1438 | }, 1439 | "node_modules/loader-utils": { 1440 | "version": "0.2.17", 1441 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", 1442 | "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", 1443 | "dev": true, 1444 | "dependencies": { 1445 | "big.js": "^3.1.3", 1446 | "emojis-list": "^2.0.0", 1447 | "json5": "^0.5.0", 1448 | "object-assign": "^4.0.1" 1449 | } 1450 | }, 1451 | "node_modules/lodash.camelcase": { 1452 | "version": "4.3.0", 1453 | "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", 1454 | "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", 1455 | "dev": true 1456 | }, 1457 | "node_modules/lodash.memoize": { 1458 | "version": "4.1.2", 1459 | "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", 1460 | "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", 1461 | "dev": true 1462 | }, 1463 | "node_modules/lodash.uniq": { 1464 | "version": "4.5.0", 1465 | "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", 1466 | "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", 1467 | "dev": true 1468 | }, 1469 | "node_modules/magic-string": { 1470 | "version": "0.25.2", 1471 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", 1472 | "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", 1473 | "dev": true, 1474 | "dependencies": { 1475 | "sourcemap-codec": "^1.4.4" 1476 | } 1477 | }, 1478 | "node_modules/mdn-data": { 1479 | "version": "1.1.4", 1480 | "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", 1481 | "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==", 1482 | "dev": true 1483 | }, 1484 | "node_modules/merge2": { 1485 | "version": "1.4.1", 1486 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1487 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1488 | "dev": true, 1489 | "engines": { 1490 | "node": ">= 8" 1491 | } 1492 | }, 1493 | "node_modules/micromatch": { 1494 | "version": "4.0.5", 1495 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 1496 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 1497 | "dev": true, 1498 | "dependencies": { 1499 | "braces": "^3.0.2", 1500 | "picomatch": "^2.3.1" 1501 | }, 1502 | "engines": { 1503 | "node": ">=8.6" 1504 | } 1505 | }, 1506 | "node_modules/mime": { 1507 | "version": "2.4.1", 1508 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.1.tgz", 1509 | "integrity": "sha512-VRUfmQO0rCd3hKwBymAn3kxYzBHr3I/wdVMywgG3HhXOwrCQgN84ZagpdTm2tZ4TNtwsSmyJWYO88mb5XvzGqQ==", 1510 | "dev": true, 1511 | "bin": { 1512 | "mime": "cli.js" 1513 | }, 1514 | "engines": { 1515 | "node": ">=4.0.0" 1516 | } 1517 | }, 1518 | "node_modules/minimatch": { 1519 | "version": "3.1.2", 1520 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1521 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1522 | "dev": true, 1523 | "dependencies": { 1524 | "brace-expansion": "^1.1.7" 1525 | }, 1526 | "engines": { 1527 | "node": "*" 1528 | } 1529 | }, 1530 | "node_modules/minimist": { 1531 | "version": "1.2.0", 1532 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 1533 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 1534 | "dev": true 1535 | }, 1536 | "node_modules/mkdirp": { 1537 | "version": "0.5.1", 1538 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1539 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1540 | "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", 1541 | "dev": true, 1542 | "dependencies": { 1543 | "minimist": "0.0.8" 1544 | }, 1545 | "bin": { 1546 | "mkdirp": "bin/cmd.js" 1547 | } 1548 | }, 1549 | "node_modules/mkdirp/node_modules/minimist": { 1550 | "version": "0.0.8", 1551 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1552 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1553 | "dev": true 1554 | }, 1555 | "node_modules/node-releases": { 1556 | "version": "1.1.13", 1557 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.13.tgz", 1558 | "integrity": "sha512-fKZGviSXR6YvVPyc011NHuJDSD8gFQvLPmc2d2V3BS4gr52ycyQ1Xzs7a8B+Ax3Ni/W+5h1h4SqmzeoA8WZRmA==", 1559 | "dev": true, 1560 | "dependencies": { 1561 | "semver": "^5.3.0" 1562 | } 1563 | }, 1564 | "node_modules/normalize-url": { 1565 | "version": "3.3.0", 1566 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", 1567 | "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", 1568 | "dev": true, 1569 | "engines": { 1570 | "node": ">=6" 1571 | } 1572 | }, 1573 | "node_modules/nth-check": { 1574 | "version": "1.0.2", 1575 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", 1576 | "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", 1577 | "dev": true, 1578 | "dependencies": { 1579 | "boolbase": "~1.0.0" 1580 | } 1581 | }, 1582 | "node_modules/object-assign": { 1583 | "version": "4.1.1", 1584 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1585 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1586 | "dev": true, 1587 | "engines": { 1588 | "node": ">=0.10.0" 1589 | } 1590 | }, 1591 | "node_modules/object-keys": { 1592 | "version": "1.1.1", 1593 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1594 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1595 | "dev": true, 1596 | "engines": { 1597 | "node": ">= 0.4" 1598 | } 1599 | }, 1600 | "node_modules/object.getownpropertydescriptors": { 1601 | "version": "2.0.3", 1602 | "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", 1603 | "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", 1604 | "dev": true, 1605 | "dependencies": { 1606 | "define-properties": "^1.1.2", 1607 | "es-abstract": "^1.5.1" 1608 | }, 1609 | "engines": { 1610 | "node": ">= 0.8" 1611 | } 1612 | }, 1613 | "node_modules/object.values": { 1614 | "version": "1.1.0", 1615 | "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", 1616 | "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", 1617 | "dev": true, 1618 | "dependencies": { 1619 | "define-properties": "^1.1.3", 1620 | "es-abstract": "^1.12.0", 1621 | "function-bind": "^1.1.1", 1622 | "has": "^1.0.3" 1623 | }, 1624 | "engines": { 1625 | "node": ">= 0.4" 1626 | } 1627 | }, 1628 | "node_modules/once": { 1629 | "version": "1.4.0", 1630 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1631 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1632 | "dev": true, 1633 | "dependencies": { 1634 | "wrappy": "1" 1635 | } 1636 | }, 1637 | "node_modules/open-simplex-noise": { 1638 | "version": "1.6.0", 1639 | "resolved": "https://registry.npmjs.org/open-simplex-noise/-/open-simplex-noise-1.6.0.tgz", 1640 | "integrity": "sha512-/oLrC7PdpDDr3c5yM13qaAA5/BdFSRVk/iXnBkGKCahOPeDUVY/wIQQgdPGdUqMneMwL557J3hxcjLuo9hHDWw==" 1641 | }, 1642 | "node_modules/opener": { 1643 | "version": "1.5.1", 1644 | "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", 1645 | "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", 1646 | "dev": true, 1647 | "bin": { 1648 | "opener": "bin/opener-bin.js" 1649 | } 1650 | }, 1651 | "node_modules/os-homedir": { 1652 | "version": "1.0.2", 1653 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 1654 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 1655 | "dev": true, 1656 | "engines": { 1657 | "node": ">=0.10.0" 1658 | } 1659 | }, 1660 | "node_modules/p-queue": { 1661 | "version": "2.4.2", 1662 | "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-2.4.2.tgz", 1663 | "integrity": "sha512-n8/y+yDJwBjoLQe1GSJbbaYQLTI7QHNZI2+rpmCDbe++WLf9HC3gf6iqj5yfPAV71W4UF3ql5W1+UBPXoXTxng==", 1664 | "dev": true, 1665 | "engines": { 1666 | "node": ">=4" 1667 | } 1668 | }, 1669 | "node_modules/parse-json": { 1670 | "version": "4.0.0", 1671 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", 1672 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", 1673 | "dev": true, 1674 | "dependencies": { 1675 | "error-ex": "^1.3.1", 1676 | "json-parse-better-errors": "^1.0.1" 1677 | }, 1678 | "engines": { 1679 | "node": ">=4" 1680 | } 1681 | }, 1682 | "node_modules/path-is-absolute": { 1683 | "version": "1.0.1", 1684 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1685 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1686 | "dev": true, 1687 | "engines": { 1688 | "node": ">=0.10.0" 1689 | } 1690 | }, 1691 | "node_modules/path-parse": { 1692 | "version": "1.0.6", 1693 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 1694 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 1695 | "dev": true 1696 | }, 1697 | "node_modules/path-type": { 1698 | "version": "4.0.0", 1699 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1700 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 1701 | "dev": true, 1702 | "engines": { 1703 | "node": ">=8" 1704 | } 1705 | }, 1706 | "node_modules/picomatch": { 1707 | "version": "2.3.1", 1708 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1709 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1710 | "dev": true, 1711 | "engines": { 1712 | "node": ">=8.6" 1713 | }, 1714 | "funding": { 1715 | "url": "https://github.com/sponsors/jonschlinkert" 1716 | } 1717 | }, 1718 | "node_modules/pify": { 1719 | "version": "3.0.0", 1720 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 1721 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 1722 | "dev": true, 1723 | "engines": { 1724 | "node": ">=4" 1725 | } 1726 | }, 1727 | "node_modules/postcss": { 1728 | "version": "7.0.14", 1729 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", 1730 | "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", 1731 | "dev": true, 1732 | "dependencies": { 1733 | "chalk": "^2.4.2", 1734 | "source-map": "^0.6.1", 1735 | "supports-color": "^6.1.0" 1736 | }, 1737 | "engines": { 1738 | "node": ">=6.0.0" 1739 | } 1740 | }, 1741 | "node_modules/postcss-calc": { 1742 | "version": "7.0.1", 1743 | "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", 1744 | "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", 1745 | "dev": true, 1746 | "dependencies": { 1747 | "css-unit-converter": "^1.1.1", 1748 | "postcss": "^7.0.5", 1749 | "postcss-selector-parser": "^5.0.0-rc.4", 1750 | "postcss-value-parser": "^3.3.1" 1751 | } 1752 | }, 1753 | "node_modules/postcss-colormin": { 1754 | "version": "4.0.3", 1755 | "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", 1756 | "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", 1757 | "dev": true, 1758 | "dependencies": { 1759 | "browserslist": "^4.0.0", 1760 | "color": "^3.0.0", 1761 | "has": "^1.0.0", 1762 | "postcss": "^7.0.0", 1763 | "postcss-value-parser": "^3.0.0" 1764 | }, 1765 | "engines": { 1766 | "node": ">=6.9.0" 1767 | } 1768 | }, 1769 | "node_modules/postcss-convert-values": { 1770 | "version": "4.0.1", 1771 | "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", 1772 | "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", 1773 | "dev": true, 1774 | "dependencies": { 1775 | "postcss": "^7.0.0", 1776 | "postcss-value-parser": "^3.0.0" 1777 | }, 1778 | "engines": { 1779 | "node": ">=6.9.0" 1780 | } 1781 | }, 1782 | "node_modules/postcss-discard-comments": { 1783 | "version": "4.0.2", 1784 | "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", 1785 | "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", 1786 | "dev": true, 1787 | "dependencies": { 1788 | "postcss": "^7.0.0" 1789 | }, 1790 | "engines": { 1791 | "node": ">=6.9.0" 1792 | } 1793 | }, 1794 | "node_modules/postcss-discard-duplicates": { 1795 | "version": "4.0.2", 1796 | "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", 1797 | "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", 1798 | "dev": true, 1799 | "dependencies": { 1800 | "postcss": "^7.0.0" 1801 | }, 1802 | "engines": { 1803 | "node": ">=6.9.0" 1804 | } 1805 | }, 1806 | "node_modules/postcss-discard-empty": { 1807 | "version": "4.0.1", 1808 | "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", 1809 | "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", 1810 | "dev": true, 1811 | "dependencies": { 1812 | "postcss": "^7.0.0" 1813 | }, 1814 | "engines": { 1815 | "node": ">=6.9.0" 1816 | } 1817 | }, 1818 | "node_modules/postcss-discard-overridden": { 1819 | "version": "4.0.1", 1820 | "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", 1821 | "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", 1822 | "dev": true, 1823 | "dependencies": { 1824 | "postcss": "^7.0.0" 1825 | }, 1826 | "engines": { 1827 | "node": ">=6.9.0" 1828 | } 1829 | }, 1830 | "node_modules/postcss-load-config": { 1831 | "version": "2.0.0", 1832 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.0.0.tgz", 1833 | "integrity": "sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==", 1834 | "dev": true, 1835 | "dependencies": { 1836 | "cosmiconfig": "^4.0.0", 1837 | "import-cwd": "^2.0.0" 1838 | }, 1839 | "engines": { 1840 | "node": ">= 4" 1841 | } 1842 | }, 1843 | "node_modules/postcss-load-config/node_modules/cosmiconfig": { 1844 | "version": "4.0.0", 1845 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", 1846 | "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", 1847 | "dev": true, 1848 | "dependencies": { 1849 | "is-directory": "^0.3.1", 1850 | "js-yaml": "^3.9.0", 1851 | "parse-json": "^4.0.0", 1852 | "require-from-string": "^2.0.1" 1853 | }, 1854 | "engines": { 1855 | "node": ">=4" 1856 | } 1857 | }, 1858 | "node_modules/postcss-merge-longhand": { 1859 | "version": "4.0.11", 1860 | "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", 1861 | "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", 1862 | "dev": true, 1863 | "dependencies": { 1864 | "css-color-names": "0.0.4", 1865 | "postcss": "^7.0.0", 1866 | "postcss-value-parser": "^3.0.0", 1867 | "stylehacks": "^4.0.0" 1868 | }, 1869 | "engines": { 1870 | "node": ">=6.9.0" 1871 | } 1872 | }, 1873 | "node_modules/postcss-merge-rules": { 1874 | "version": "4.0.3", 1875 | "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", 1876 | "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", 1877 | "dev": true, 1878 | "dependencies": { 1879 | "browserslist": "^4.0.0", 1880 | "caniuse-api": "^3.0.0", 1881 | "cssnano-util-same-parent": "^4.0.0", 1882 | "postcss": "^7.0.0", 1883 | "postcss-selector-parser": "^3.0.0", 1884 | "vendors": "^1.0.0" 1885 | }, 1886 | "engines": { 1887 | "node": ">=6.9.0" 1888 | } 1889 | }, 1890 | "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { 1891 | "version": "3.1.1", 1892 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", 1893 | "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", 1894 | "dev": true, 1895 | "dependencies": { 1896 | "dot-prop": "^4.1.1", 1897 | "indexes-of": "^1.0.1", 1898 | "uniq": "^1.0.1" 1899 | }, 1900 | "engines": { 1901 | "node": ">=4" 1902 | } 1903 | }, 1904 | "node_modules/postcss-minify-font-values": { 1905 | "version": "4.0.2", 1906 | "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", 1907 | "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", 1908 | "dev": true, 1909 | "dependencies": { 1910 | "postcss": "^7.0.0", 1911 | "postcss-value-parser": "^3.0.0" 1912 | }, 1913 | "engines": { 1914 | "node": ">=6.9.0" 1915 | } 1916 | }, 1917 | "node_modules/postcss-minify-gradients": { 1918 | "version": "4.0.2", 1919 | "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", 1920 | "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", 1921 | "dev": true, 1922 | "dependencies": { 1923 | "cssnano-util-get-arguments": "^4.0.0", 1924 | "is-color-stop": "^1.0.0", 1925 | "postcss": "^7.0.0", 1926 | "postcss-value-parser": "^3.0.0" 1927 | }, 1928 | "engines": { 1929 | "node": ">=6.9.0" 1930 | } 1931 | }, 1932 | "node_modules/postcss-minify-params": { 1933 | "version": "4.0.2", 1934 | "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", 1935 | "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", 1936 | "dev": true, 1937 | "dependencies": { 1938 | "alphanum-sort": "^1.0.0", 1939 | "browserslist": "^4.0.0", 1940 | "cssnano-util-get-arguments": "^4.0.0", 1941 | "postcss": "^7.0.0", 1942 | "postcss-value-parser": "^3.0.0", 1943 | "uniqs": "^2.0.0" 1944 | }, 1945 | "engines": { 1946 | "node": ">=6.9.0" 1947 | } 1948 | }, 1949 | "node_modules/postcss-minify-selectors": { 1950 | "version": "4.0.2", 1951 | "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", 1952 | "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", 1953 | "dev": true, 1954 | "dependencies": { 1955 | "alphanum-sort": "^1.0.0", 1956 | "has": "^1.0.0", 1957 | "postcss": "^7.0.0", 1958 | "postcss-selector-parser": "^3.0.0" 1959 | }, 1960 | "engines": { 1961 | "node": ">=6.9.0" 1962 | } 1963 | }, 1964 | "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { 1965 | "version": "3.1.1", 1966 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", 1967 | "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", 1968 | "dev": true, 1969 | "dependencies": { 1970 | "dot-prop": "^4.1.1", 1971 | "indexes-of": "^1.0.1", 1972 | "uniq": "^1.0.1" 1973 | }, 1974 | "engines": { 1975 | "node": ">=4" 1976 | } 1977 | }, 1978 | "node_modules/postcss-modules": { 1979 | "version": "1.4.1", 1980 | "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-1.4.1.tgz", 1981 | "integrity": "sha512-btTrbK+Xc3NBuYF8TPBjCMRSp5h6NoQ1iVZ6WiDQENIze6KIYCSf0+UFQuV3yJ7gRHA+4AAtF8i2jRvUpbBMMg==", 1982 | "dev": true, 1983 | "dependencies": { 1984 | "css-modules-loader-core": "^1.1.0", 1985 | "generic-names": "^1.0.3", 1986 | "lodash.camelcase": "^4.3.0", 1987 | "postcss": "^7.0.1", 1988 | "string-hash": "^1.1.1" 1989 | } 1990 | }, 1991 | "node_modules/postcss-modules-extract-imports": { 1992 | "version": "1.1.0", 1993 | "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", 1994 | "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", 1995 | "dev": true, 1996 | "dependencies": { 1997 | "postcss": "^6.0.1" 1998 | } 1999 | }, 2000 | "node_modules/postcss-modules-extract-imports/node_modules/postcss": { 2001 | "version": "6.0.23", 2002 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", 2003 | "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", 2004 | "dev": true, 2005 | "dependencies": { 2006 | "chalk": "^2.4.1", 2007 | "source-map": "^0.6.1", 2008 | "supports-color": "^5.4.0" 2009 | }, 2010 | "engines": { 2011 | "node": ">=4.0.0" 2012 | } 2013 | }, 2014 | "node_modules/postcss-modules-extract-imports/node_modules/supports-color": { 2015 | "version": "5.5.0", 2016 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2017 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2018 | "dev": true, 2019 | "dependencies": { 2020 | "has-flag": "^3.0.0" 2021 | }, 2022 | "engines": { 2023 | "node": ">=4" 2024 | } 2025 | }, 2026 | "node_modules/postcss-modules-local-by-default": { 2027 | "version": "1.2.0", 2028 | "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", 2029 | "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", 2030 | "dev": true, 2031 | "dependencies": { 2032 | "css-selector-tokenizer": "^0.7.0", 2033 | "postcss": "^6.0.1" 2034 | } 2035 | }, 2036 | "node_modules/postcss-modules-local-by-default/node_modules/postcss": { 2037 | "version": "6.0.23", 2038 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", 2039 | "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", 2040 | "dev": true, 2041 | "dependencies": { 2042 | "chalk": "^2.4.1", 2043 | "source-map": "^0.6.1", 2044 | "supports-color": "^5.4.0" 2045 | }, 2046 | "engines": { 2047 | "node": ">=4.0.0" 2048 | } 2049 | }, 2050 | "node_modules/postcss-modules-local-by-default/node_modules/supports-color": { 2051 | "version": "5.5.0", 2052 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2053 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2054 | "dev": true, 2055 | "dependencies": { 2056 | "has-flag": "^3.0.0" 2057 | }, 2058 | "engines": { 2059 | "node": ">=4" 2060 | } 2061 | }, 2062 | "node_modules/postcss-modules-scope": { 2063 | "version": "1.1.0", 2064 | "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", 2065 | "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", 2066 | "dev": true, 2067 | "dependencies": { 2068 | "css-selector-tokenizer": "^0.7.0", 2069 | "postcss": "^6.0.1" 2070 | } 2071 | }, 2072 | "node_modules/postcss-modules-scope/node_modules/postcss": { 2073 | "version": "6.0.23", 2074 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", 2075 | "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", 2076 | "dev": true, 2077 | "dependencies": { 2078 | "chalk": "^2.4.1", 2079 | "source-map": "^0.6.1", 2080 | "supports-color": "^5.4.0" 2081 | }, 2082 | "engines": { 2083 | "node": ">=4.0.0" 2084 | } 2085 | }, 2086 | "node_modules/postcss-modules-scope/node_modules/supports-color": { 2087 | "version": "5.5.0", 2088 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2089 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2090 | "dev": true, 2091 | "dependencies": { 2092 | "has-flag": "^3.0.0" 2093 | }, 2094 | "engines": { 2095 | "node": ">=4" 2096 | } 2097 | }, 2098 | "node_modules/postcss-modules-values": { 2099 | "version": "1.3.0", 2100 | "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", 2101 | "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", 2102 | "dev": true, 2103 | "dependencies": { 2104 | "icss-replace-symbols": "^1.1.0", 2105 | "postcss": "^6.0.1" 2106 | } 2107 | }, 2108 | "node_modules/postcss-modules-values/node_modules/postcss": { 2109 | "version": "6.0.23", 2110 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", 2111 | "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", 2112 | "dev": true, 2113 | "dependencies": { 2114 | "chalk": "^2.4.1", 2115 | "source-map": "^0.6.1", 2116 | "supports-color": "^5.4.0" 2117 | }, 2118 | "engines": { 2119 | "node": ">=4.0.0" 2120 | } 2121 | }, 2122 | "node_modules/postcss-modules-values/node_modules/supports-color": { 2123 | "version": "5.5.0", 2124 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2125 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2126 | "dev": true, 2127 | "dependencies": { 2128 | "has-flag": "^3.0.0" 2129 | }, 2130 | "engines": { 2131 | "node": ">=4" 2132 | } 2133 | }, 2134 | "node_modules/postcss-normalize-charset": { 2135 | "version": "4.0.1", 2136 | "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", 2137 | "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", 2138 | "dev": true, 2139 | "dependencies": { 2140 | "postcss": "^7.0.0" 2141 | }, 2142 | "engines": { 2143 | "node": ">=6.9.0" 2144 | } 2145 | }, 2146 | "node_modules/postcss-normalize-display-values": { 2147 | "version": "4.0.2", 2148 | "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", 2149 | "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", 2150 | "dev": true, 2151 | "dependencies": { 2152 | "cssnano-util-get-match": "^4.0.0", 2153 | "postcss": "^7.0.0", 2154 | "postcss-value-parser": "^3.0.0" 2155 | }, 2156 | "engines": { 2157 | "node": ">=6.9.0" 2158 | } 2159 | }, 2160 | "node_modules/postcss-normalize-positions": { 2161 | "version": "4.0.2", 2162 | "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", 2163 | "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", 2164 | "dev": true, 2165 | "dependencies": { 2166 | "cssnano-util-get-arguments": "^4.0.0", 2167 | "has": "^1.0.0", 2168 | "postcss": "^7.0.0", 2169 | "postcss-value-parser": "^3.0.0" 2170 | }, 2171 | "engines": { 2172 | "node": ">=6.9.0" 2173 | } 2174 | }, 2175 | "node_modules/postcss-normalize-repeat-style": { 2176 | "version": "4.0.2", 2177 | "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", 2178 | "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", 2179 | "dev": true, 2180 | "dependencies": { 2181 | "cssnano-util-get-arguments": "^4.0.0", 2182 | "cssnano-util-get-match": "^4.0.0", 2183 | "postcss": "^7.0.0", 2184 | "postcss-value-parser": "^3.0.0" 2185 | }, 2186 | "engines": { 2187 | "node": ">=6.9.0" 2188 | } 2189 | }, 2190 | "node_modules/postcss-normalize-string": { 2191 | "version": "4.0.2", 2192 | "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", 2193 | "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", 2194 | "dev": true, 2195 | "dependencies": { 2196 | "has": "^1.0.0", 2197 | "postcss": "^7.0.0", 2198 | "postcss-value-parser": "^3.0.0" 2199 | }, 2200 | "engines": { 2201 | "node": ">=6.9.0" 2202 | } 2203 | }, 2204 | "node_modules/postcss-normalize-timing-functions": { 2205 | "version": "4.0.2", 2206 | "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", 2207 | "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", 2208 | "dev": true, 2209 | "dependencies": { 2210 | "cssnano-util-get-match": "^4.0.0", 2211 | "postcss": "^7.0.0", 2212 | "postcss-value-parser": "^3.0.0" 2213 | }, 2214 | "engines": { 2215 | "node": ">=6.9.0" 2216 | } 2217 | }, 2218 | "node_modules/postcss-normalize-unicode": { 2219 | "version": "4.0.1", 2220 | "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", 2221 | "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", 2222 | "dev": true, 2223 | "dependencies": { 2224 | "browserslist": "^4.0.0", 2225 | "postcss": "^7.0.0", 2226 | "postcss-value-parser": "^3.0.0" 2227 | }, 2228 | "engines": { 2229 | "node": ">=6.9.0" 2230 | } 2231 | }, 2232 | "node_modules/postcss-normalize-url": { 2233 | "version": "4.0.1", 2234 | "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", 2235 | "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", 2236 | "dev": true, 2237 | "dependencies": { 2238 | "is-absolute-url": "^2.0.0", 2239 | "normalize-url": "^3.0.0", 2240 | "postcss": "^7.0.0", 2241 | "postcss-value-parser": "^3.0.0" 2242 | }, 2243 | "engines": { 2244 | "node": ">=6.9.0" 2245 | } 2246 | }, 2247 | "node_modules/postcss-normalize-whitespace": { 2248 | "version": "4.0.2", 2249 | "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", 2250 | "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", 2251 | "dev": true, 2252 | "dependencies": { 2253 | "postcss": "^7.0.0", 2254 | "postcss-value-parser": "^3.0.0" 2255 | }, 2256 | "engines": { 2257 | "node": ">=6.9.0" 2258 | } 2259 | }, 2260 | "node_modules/postcss-ordered-values": { 2261 | "version": "4.1.2", 2262 | "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", 2263 | "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", 2264 | "dev": true, 2265 | "dependencies": { 2266 | "cssnano-util-get-arguments": "^4.0.0", 2267 | "postcss": "^7.0.0", 2268 | "postcss-value-parser": "^3.0.0" 2269 | }, 2270 | "engines": { 2271 | "node": ">=6.9.0" 2272 | } 2273 | }, 2274 | "node_modules/postcss-reduce-initial": { 2275 | "version": "4.0.3", 2276 | "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", 2277 | "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", 2278 | "dev": true, 2279 | "dependencies": { 2280 | "browserslist": "^4.0.0", 2281 | "caniuse-api": "^3.0.0", 2282 | "has": "^1.0.0", 2283 | "postcss": "^7.0.0" 2284 | }, 2285 | "engines": { 2286 | "node": ">=6.9.0" 2287 | } 2288 | }, 2289 | "node_modules/postcss-reduce-transforms": { 2290 | "version": "4.0.2", 2291 | "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", 2292 | "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", 2293 | "dev": true, 2294 | "dependencies": { 2295 | "cssnano-util-get-match": "^4.0.0", 2296 | "has": "^1.0.0", 2297 | "postcss": "^7.0.0", 2298 | "postcss-value-parser": "^3.0.0" 2299 | }, 2300 | "engines": { 2301 | "node": ">=6.9.0" 2302 | } 2303 | }, 2304 | "node_modules/postcss-selector-parser": { 2305 | "version": "5.0.0", 2306 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", 2307 | "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", 2308 | "dev": true, 2309 | "dependencies": { 2310 | "cssesc": "^2.0.0", 2311 | "indexes-of": "^1.0.1", 2312 | "uniq": "^1.0.1" 2313 | }, 2314 | "engines": { 2315 | "node": ">=4" 2316 | } 2317 | }, 2318 | "node_modules/postcss-svgo": { 2319 | "version": "4.0.2", 2320 | "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", 2321 | "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", 2322 | "dev": true, 2323 | "dependencies": { 2324 | "is-svg": "^3.0.0", 2325 | "postcss": "^7.0.0", 2326 | "postcss-value-parser": "^3.0.0", 2327 | "svgo": "^1.0.0" 2328 | }, 2329 | "engines": { 2330 | "node": ">=6.9.0" 2331 | } 2332 | }, 2333 | "node_modules/postcss-unique-selectors": { 2334 | "version": "4.0.1", 2335 | "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", 2336 | "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", 2337 | "dev": true, 2338 | "dependencies": { 2339 | "alphanum-sort": "^1.0.0", 2340 | "postcss": "^7.0.0", 2341 | "uniqs": "^2.0.0" 2342 | }, 2343 | "engines": { 2344 | "node": ">=6.9.0" 2345 | } 2346 | }, 2347 | "node_modules/postcss-value-parser": { 2348 | "version": "3.3.1", 2349 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", 2350 | "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", 2351 | "dev": true 2352 | }, 2353 | "node_modules/promise.series": { 2354 | "version": "0.2.0", 2355 | "resolved": "https://registry.npmjs.org/promise.series/-/promise.series-0.2.0.tgz", 2356 | "integrity": "sha1-LMfr6Vn8OmYZwEq029yeRS2GS70=", 2357 | "dev": true, 2358 | "engines": { 2359 | "node": ">=0.12" 2360 | } 2361 | }, 2362 | "node_modules/q": { 2363 | "version": "1.5.1", 2364 | "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", 2365 | "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", 2366 | "dev": true, 2367 | "engines": { 2368 | "node": ">=0.6.0", 2369 | "teleport": ">=0.2.0" 2370 | } 2371 | }, 2372 | "node_modules/queue-microtask": { 2373 | "version": "1.2.3", 2374 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2375 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2376 | "dev": true, 2377 | "funding": [ 2378 | { 2379 | "type": "github", 2380 | "url": "https://github.com/sponsors/feross" 2381 | }, 2382 | { 2383 | "type": "patreon", 2384 | "url": "https://www.patreon.com/feross" 2385 | }, 2386 | { 2387 | "type": "consulting", 2388 | "url": "https://feross.org/support" 2389 | } 2390 | ] 2391 | }, 2392 | "node_modules/regenerate": { 2393 | "version": "1.4.0", 2394 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", 2395 | "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", 2396 | "dev": true 2397 | }, 2398 | "node_modules/regenerate-unicode-properties": { 2399 | "version": "8.0.2", 2400 | "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.2.tgz", 2401 | "integrity": "sha512-SbA/iNrBUf6Pv2zU8Ekv1Qbhv92yxL4hiDa2siuxs4KKn4oOoMDHXjAf7+Nz9qinUQ46B1LcWEi/PhJfPWpZWQ==", 2402 | "dev": true, 2403 | "dependencies": { 2404 | "regenerate": "^1.4.0" 2405 | }, 2406 | "engines": { 2407 | "node": ">=4" 2408 | } 2409 | }, 2410 | "node_modules/regexpu-core": { 2411 | "version": "4.5.4", 2412 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", 2413 | "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", 2414 | "dev": true, 2415 | "dependencies": { 2416 | "regenerate": "^1.4.0", 2417 | "regenerate-unicode-properties": "^8.0.2", 2418 | "regjsgen": "^0.5.0", 2419 | "regjsparser": "^0.6.0", 2420 | "unicode-match-property-ecmascript": "^1.0.4", 2421 | "unicode-match-property-value-ecmascript": "^1.1.0" 2422 | }, 2423 | "engines": { 2424 | "node": ">=4" 2425 | } 2426 | }, 2427 | "node_modules/regjsgen": { 2428 | "version": "0.5.0", 2429 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", 2430 | "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", 2431 | "dev": true 2432 | }, 2433 | "node_modules/regjsparser": { 2434 | "version": "0.6.0", 2435 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", 2436 | "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", 2437 | "dev": true, 2438 | "dependencies": { 2439 | "jsesc": "~0.5.0" 2440 | }, 2441 | "bin": { 2442 | "regjsparser": "bin/parser" 2443 | } 2444 | }, 2445 | "node_modules/require-from-string": { 2446 | "version": "2.0.2", 2447 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", 2448 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 2449 | "dev": true, 2450 | "engines": { 2451 | "node": ">=0.10.0" 2452 | } 2453 | }, 2454 | "node_modules/reserved-words": { 2455 | "version": "0.1.2", 2456 | "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz", 2457 | "integrity": "sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=", 2458 | "dev": true 2459 | }, 2460 | "node_modules/resolve": { 2461 | "version": "1.10.0", 2462 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", 2463 | "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", 2464 | "dev": true, 2465 | "dependencies": { 2466 | "path-parse": "^1.0.6" 2467 | } 2468 | }, 2469 | "node_modules/resolve-from": { 2470 | "version": "3.0.0", 2471 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", 2472 | "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", 2473 | "dev": true, 2474 | "engines": { 2475 | "node": ">=4" 2476 | } 2477 | }, 2478 | "node_modules/reusify": { 2479 | "version": "1.0.4", 2480 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 2481 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 2482 | "dev": true, 2483 | "engines": { 2484 | "iojs": ">=1.0.0", 2485 | "node": ">=0.10.0" 2486 | } 2487 | }, 2488 | "node_modules/rgb-regex": { 2489 | "version": "1.0.1", 2490 | "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", 2491 | "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", 2492 | "dev": true 2493 | }, 2494 | "node_modules/rgba-regex": { 2495 | "version": "1.0.0", 2496 | "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", 2497 | "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", 2498 | "dev": true 2499 | }, 2500 | "node_modules/rollup": { 2501 | "version": "1.9.0", 2502 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.9.0.tgz", 2503 | "integrity": "sha512-cNZx9MLpKFMSaObdVFeu8nXw8gfw6yjuxWjt5mRCJcBZrAJ0NHAYwemKjayvYvhLaNNkf3+kS2DKRKS5J6NRVg==", 2504 | "dev": true, 2505 | "dependencies": { 2506 | "@types/estree": "0.0.39", 2507 | "@types/node": "^11.13.0", 2508 | "acorn": "^6.1.1" 2509 | }, 2510 | "bin": { 2511 | "rollup": "bin/rollup" 2512 | } 2513 | }, 2514 | "node_modules/rollup-plugin-buble": { 2515 | "version": "0.19.6", 2516 | "resolved": "https://registry.npmjs.org/rollup-plugin-buble/-/rollup-plugin-buble-0.19.6.tgz", 2517 | "integrity": "sha512-El5Fut4/wEO17ZN/n9BZvqd7DXXB2WbJr/DKvr89LXChC/cHllE0XwiUDeAalrTkgr0WrnyLDTCQvEv+cGywWQ==", 2518 | "deprecated": "This module has been deprecated and is no longer maintained. Please use @rollup/plugin-buble.", 2519 | "dev": true, 2520 | "dependencies": { 2521 | "buble": "^0.19.6", 2522 | "rollup-pluginutils": "^2.3.3" 2523 | } 2524 | }, 2525 | "node_modules/rollup-plugin-commonjs": { 2526 | "version": "9.3.4", 2527 | "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.3.4.tgz", 2528 | "integrity": "sha512-DTZOvRoiVIHHLFBCL4pFxOaJt8pagxsVldEXBOn6wl3/V21wVaj17HFfyzTsQUuou3sZL3lEJZVWKPFblJfI6w==", 2529 | "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-commonjs.", 2530 | "dev": true, 2531 | "dependencies": { 2532 | "estree-walker": "^0.6.0", 2533 | "magic-string": "^0.25.2", 2534 | "resolve": "^1.10.0", 2535 | "rollup-pluginutils": "^2.6.0" 2536 | }, 2537 | "peerDependencies": { 2538 | "rollup": ">=0.56.0" 2539 | } 2540 | }, 2541 | "node_modules/rollup-plugin-copy": { 2542 | "version": "3.5.0", 2543 | "resolved": "https://registry.npmjs.org/rollup-plugin-copy/-/rollup-plugin-copy-3.5.0.tgz", 2544 | "integrity": "sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==", 2545 | "dev": true, 2546 | "dependencies": { 2547 | "@types/fs-extra": "^8.0.1", 2548 | "colorette": "^1.1.0", 2549 | "fs-extra": "^8.1.0", 2550 | "globby": "10.0.1", 2551 | "is-plain-object": "^3.0.0" 2552 | }, 2553 | "engines": { 2554 | "node": ">=8.3" 2555 | } 2556 | }, 2557 | "node_modules/rollup-plugin-node-resolve": { 2558 | "version": "4.2.1", 2559 | "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.2.1.tgz", 2560 | "integrity": "sha512-zf2dcKBSv9KSnNbAPDYzwLpeI4Lc4bOsNlaRsq3ud80zquxWdu9iYA0ZgmHxFjBkbt8uHzXCGC4FkkejtngKng==", 2561 | "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-node-resolve.", 2562 | "dev": true, 2563 | "dependencies": { 2564 | "@types/resolve": "0.0.8", 2565 | "builtin-modules": "^3.0.0", 2566 | "is-module": "^1.0.0", 2567 | "resolve": "^1.10.0" 2568 | } 2569 | }, 2570 | "node_modules/rollup-plugin-postcss": { 2571 | "version": "2.0.3", 2572 | "resolved": "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-2.0.3.tgz", 2573 | "integrity": "sha512-d12oKl6za/GGXmlytzVPzzTdPCKgti/Kq2kNhtfm5vv9hkNbyrTvizMBm6zZ5rRWX/sIWl3znjIJ8xy6Hofoeg==", 2574 | "dev": true, 2575 | "dependencies": { 2576 | "chalk": "^2.4.2", 2577 | "concat-with-sourcemaps": "^1.0.5", 2578 | "cssnano": "^4.1.8", 2579 | "import-cwd": "^2.1.0", 2580 | "p-queue": "^2.4.2", 2581 | "pify": "^3.0.0", 2582 | "postcss": "^7.0.14", 2583 | "postcss-load-config": "^2.0.0", 2584 | "postcss-modules": "^1.4.1", 2585 | "promise.series": "^0.2.0", 2586 | "reserved-words": "^0.1.2", 2587 | "resolve": "^1.5.0", 2588 | "rollup-pluginutils": "^2.0.1", 2589 | "style-inject": "^0.3.0" 2590 | }, 2591 | "engines": { 2592 | "node": ">=6" 2593 | } 2594 | }, 2595 | "node_modules/rollup-plugin-serve": { 2596 | "version": "1.0.1", 2597 | "resolved": "https://registry.npmjs.org/rollup-plugin-serve/-/rollup-plugin-serve-1.0.1.tgz", 2598 | "integrity": "sha512-bni0pb4s1YLvn1xBmj+dH1OsLdp8gWA4zqh3yuEtT6/YHhg3nDneGU2GwMcRDQwY2tXzuI0uSeAlF1rY+ODitg==", 2599 | "dev": true, 2600 | "dependencies": { 2601 | "mime": ">=2.0.3", 2602 | "opener": "1" 2603 | } 2604 | }, 2605 | "node_modules/rollup-pluginutils": { 2606 | "version": "2.8.2", 2607 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", 2608 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", 2609 | "dev": true, 2610 | "dependencies": { 2611 | "estree-walker": "^0.6.1" 2612 | } 2613 | }, 2614 | "node_modules/rollup-pluginutils/node_modules/estree-walker": { 2615 | "version": "0.6.1", 2616 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", 2617 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", 2618 | "dev": true 2619 | }, 2620 | "node_modules/run-parallel": { 2621 | "version": "1.2.0", 2622 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2623 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2624 | "dev": true, 2625 | "funding": [ 2626 | { 2627 | "type": "github", 2628 | "url": "https://github.com/sponsors/feross" 2629 | }, 2630 | { 2631 | "type": "patreon", 2632 | "url": "https://www.patreon.com/feross" 2633 | }, 2634 | { 2635 | "type": "consulting", 2636 | "url": "https://feross.org/support" 2637 | } 2638 | ], 2639 | "dependencies": { 2640 | "queue-microtask": "^1.2.2" 2641 | } 2642 | }, 2643 | "node_modules/sax": { 2644 | "version": "1.2.4", 2645 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", 2646 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", 2647 | "dev": true 2648 | }, 2649 | "node_modules/seedrandom": { 2650 | "version": "3.0.1", 2651 | "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.1.tgz", 2652 | "integrity": "sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg==" 2653 | }, 2654 | "node_modules/semver": { 2655 | "version": "5.7.0", 2656 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", 2657 | "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", 2658 | "dev": true, 2659 | "bin": { 2660 | "semver": "bin/semver" 2661 | } 2662 | }, 2663 | "node_modules/simple-swizzle": { 2664 | "version": "0.2.2", 2665 | "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", 2666 | "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", 2667 | "dev": true, 2668 | "dependencies": { 2669 | "is-arrayish": "^0.3.1" 2670 | } 2671 | }, 2672 | "node_modules/simple-swizzle/node_modules/is-arrayish": { 2673 | "version": "0.3.2", 2674 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", 2675 | "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", 2676 | "dev": true 2677 | }, 2678 | "node_modules/slash": { 2679 | "version": "3.0.0", 2680 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 2681 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 2682 | "dev": true, 2683 | "engines": { 2684 | "node": ">=8" 2685 | } 2686 | }, 2687 | "node_modules/source-map": { 2688 | "version": "0.6.1", 2689 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2690 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2691 | "dev": true, 2692 | "engines": { 2693 | "node": ">=0.10.0" 2694 | } 2695 | }, 2696 | "node_modules/sourcemap-codec": { 2697 | "version": "1.4.4", 2698 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz", 2699 | "integrity": "sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg==", 2700 | "deprecated": "Please use @jridgewell/sourcemap-codec instead", 2701 | "dev": true 2702 | }, 2703 | "node_modules/sprintf-js": { 2704 | "version": "1.0.3", 2705 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 2706 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 2707 | "dev": true 2708 | }, 2709 | "node_modules/stable": { 2710 | "version": "0.1.8", 2711 | "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", 2712 | "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", 2713 | "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", 2714 | "dev": true 2715 | }, 2716 | "node_modules/string-hash": { 2717 | "version": "1.1.3", 2718 | "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", 2719 | "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", 2720 | "dev": true 2721 | }, 2722 | "node_modules/strip-ansi": { 2723 | "version": "3.0.1", 2724 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 2725 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2726 | "dev": true, 2727 | "dependencies": { 2728 | "ansi-regex": "^2.0.0" 2729 | }, 2730 | "engines": { 2731 | "node": ">=0.10.0" 2732 | } 2733 | }, 2734 | "node_modules/style-inject": { 2735 | "version": "0.3.0", 2736 | "resolved": "https://registry.npmjs.org/style-inject/-/style-inject-0.3.0.tgz", 2737 | "integrity": "sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==", 2738 | "dev": true 2739 | }, 2740 | "node_modules/stylehacks": { 2741 | "version": "4.0.3", 2742 | "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", 2743 | "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", 2744 | "dev": true, 2745 | "dependencies": { 2746 | "browserslist": "^4.0.0", 2747 | "postcss": "^7.0.0", 2748 | "postcss-selector-parser": "^3.0.0" 2749 | }, 2750 | "engines": { 2751 | "node": ">=6.9.0" 2752 | } 2753 | }, 2754 | "node_modules/stylehacks/node_modules/postcss-selector-parser": { 2755 | "version": "3.1.1", 2756 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", 2757 | "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", 2758 | "dev": true, 2759 | "dependencies": { 2760 | "dot-prop": "^4.1.1", 2761 | "indexes-of": "^1.0.1", 2762 | "uniq": "^1.0.1" 2763 | }, 2764 | "engines": { 2765 | "node": ">=4" 2766 | } 2767 | }, 2768 | "node_modules/supports-color": { 2769 | "version": "6.1.0", 2770 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", 2771 | "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", 2772 | "dev": true, 2773 | "dependencies": { 2774 | "has-flag": "^3.0.0" 2775 | }, 2776 | "engines": { 2777 | "node": ">=6" 2778 | } 2779 | }, 2780 | "node_modules/svgo": { 2781 | "version": "1.2.1", 2782 | "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.2.1.tgz", 2783 | "integrity": "sha512-Y1+LyT4/y1ms4/0yxPMSlvx6dIbgklE9w8CIOnfeoFGB74MEkq8inSfEr6NhocTaFbyYp0a1dvNgRKGRmEBlzA==", 2784 | "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", 2785 | "dev": true, 2786 | "dependencies": { 2787 | "chalk": "^2.4.1", 2788 | "coa": "^2.0.2", 2789 | "css-select": "^2.0.0", 2790 | "css-select-base-adapter": "^0.1.1", 2791 | "css-tree": "1.0.0-alpha.28", 2792 | "css-url-regex": "^1.1.0", 2793 | "csso": "^3.5.1", 2794 | "js-yaml": "^3.13.0", 2795 | "mkdirp": "~0.5.1", 2796 | "object.values": "^1.1.0", 2797 | "sax": "~1.2.4", 2798 | "stable": "^0.1.8", 2799 | "unquote": "~1.1.1", 2800 | "util.promisify": "~1.0.0" 2801 | }, 2802 | "bin": { 2803 | "svgo": "bin/svgo" 2804 | }, 2805 | "engines": { 2806 | "node": ">=4.0.0" 2807 | } 2808 | }, 2809 | "node_modules/timsort": { 2810 | "version": "0.3.0", 2811 | "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", 2812 | "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", 2813 | "dev": true 2814 | }, 2815 | "node_modules/to-regex-range": { 2816 | "version": "5.0.1", 2817 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2818 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2819 | "dev": true, 2820 | "dependencies": { 2821 | "is-number": "^7.0.0" 2822 | }, 2823 | "engines": { 2824 | "node": ">=8.0" 2825 | } 2826 | }, 2827 | "node_modules/unicode-canonical-property-names-ecmascript": { 2828 | "version": "1.0.4", 2829 | "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", 2830 | "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", 2831 | "dev": true, 2832 | "engines": { 2833 | "node": ">=4" 2834 | } 2835 | }, 2836 | "node_modules/unicode-match-property-ecmascript": { 2837 | "version": "1.0.4", 2838 | "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", 2839 | "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", 2840 | "dev": true, 2841 | "dependencies": { 2842 | "unicode-canonical-property-names-ecmascript": "^1.0.4", 2843 | "unicode-property-aliases-ecmascript": "^1.0.4" 2844 | }, 2845 | "engines": { 2846 | "node": ">=4" 2847 | } 2848 | }, 2849 | "node_modules/unicode-match-property-value-ecmascript": { 2850 | "version": "1.1.0", 2851 | "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", 2852 | "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", 2853 | "dev": true, 2854 | "engines": { 2855 | "node": ">=4" 2856 | } 2857 | }, 2858 | "node_modules/unicode-property-aliases-ecmascript": { 2859 | "version": "1.0.5", 2860 | "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", 2861 | "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", 2862 | "dev": true, 2863 | "engines": { 2864 | "node": ">=4" 2865 | } 2866 | }, 2867 | "node_modules/uniq": { 2868 | "version": "1.0.1", 2869 | "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", 2870 | "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", 2871 | "dev": true 2872 | }, 2873 | "node_modules/uniqs": { 2874 | "version": "2.0.0", 2875 | "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", 2876 | "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", 2877 | "dev": true 2878 | }, 2879 | "node_modules/universalify": { 2880 | "version": "0.1.2", 2881 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 2882 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 2883 | "dev": true, 2884 | "engines": { 2885 | "node": ">= 4.0.0" 2886 | } 2887 | }, 2888 | "node_modules/unquote": { 2889 | "version": "1.1.1", 2890 | "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", 2891 | "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", 2892 | "dev": true 2893 | }, 2894 | "node_modules/util.promisify": { 2895 | "version": "1.0.0", 2896 | "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", 2897 | "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", 2898 | "dev": true, 2899 | "dependencies": { 2900 | "define-properties": "^1.1.2", 2901 | "object.getownpropertydescriptors": "^2.0.3" 2902 | } 2903 | }, 2904 | "node_modules/vendors": { 2905 | "version": "1.0.2", 2906 | "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", 2907 | "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==", 2908 | "dev": true 2909 | }, 2910 | "node_modules/wrappy": { 2911 | "version": "1.0.2", 2912 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2913 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 2914 | "dev": true 2915 | } 2916 | } 2917 | } 2918 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "framing", 3 | "version": "1.1.0", 4 | "author": "htor", 5 | "license": "MIT", 6 | "description": "", 7 | "private": true, 8 | "main": "index.js", 9 | "scripts": { 10 | "dev": "rollup --config --watch", 11 | "build": "rm -rf dist; rollup --config", 12 | "preversion": "npm run build", 13 | "postversion": "git push --tags origin master" 14 | }, 15 | "dependencies": { 16 | "@blu3r4y/lzma": "^2.3.3", 17 | "codemirror": "^5.65.16", 18 | "open-simplex-noise": "^1.6.0", 19 | "seedrandom": "^3.0.1" 20 | }, 21 | "devDependencies": { 22 | "rollup": "^1.9.0", 23 | "rollup-plugin-buble": "^0.19.6", 24 | "rollup-plugin-commonjs": "^9.3.4", 25 | "rollup-plugin-copy": "^3.5.0", 26 | "rollup-plugin-node-resolve": "^4.2.1", 27 | "rollup-plugin-postcss": "^2.0.3", 28 | "rollup-plugin-serve": "^1.0.1" 29 | }, 30 | "prettier": { 31 | "semi": false, 32 | "singleQuote": true 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /public/framing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/htor/framing/7a34aae8d003fc8499a21abefae5371a16b22336/public/framing.png -------------------------------------------------------------------------------- /public/help.md: -------------------------------------------------------------------------------- 1 | # Keyboard 2 | 3 | Cmd/Ctrl+Enter - save and evaluate code 4 | Browser back/forward - moves through save history 5 | Ctrl+H - toggle hiding code and output 6 | Ctrl+F - toggle fullscreen mode 7 | Ctrl+D - duplicate current line 8 | Ctrl+K - comment/uncomment current selection 9 | Ctrl+L - select current line(s) 10 | Escape - show/hide this help window 11 | 12 | # Globals 13 | 14 | w – window width 15 | h - window height 16 | mx - mouse X position 17 | my - mouse Y position 18 | PI - Math.PI 19 | TWO_PI - Math.TWO_PI 20 | ctx – canvas context object 21 | 22 | # Functions 23 | 24 | sin(n) 25 | cos(n) 26 | abs(n) 27 | min(n, m) 28 | max(n, m) 29 | rand(min, max) 30 | rseed(seed) 31 | noise(x, y) 32 | norm(value, low, high) 33 | map(value, low1, high1, low2, high2) 34 |
35 | sstyle(style) 36 | fstyle(style) 37 | begin() 38 | close() 39 | stroke() 40 | fill() 41 | line(x, y) 42 | move(x, y) 43 | point(x, y) 44 | rect(x, y, w, h) 45 | srect(x, y, w, h) 46 | frect(x, y, w, h) 47 | triang(x1, y1, x2, y2, x3, y3) 48 | striang(x1, y1, x2, y2, x3, y3) 49 | ftriang(x1, y1, x2, y2, x3, y3) 50 | quad(x1, y1, x2, y2, x3, y3, x4, y4) 51 | squad(x1, y1, x2, y2, x3, y3, x4, y4) 52 | fquad(x1, y1, x2, y2, x3, y3, x4, y4) 53 | ellips(x, y, w, h, r) 54 | sellips(x, y, w, h, r) 55 | fellips(x, y, w, h, r) 56 | doffset(n) 57 | lwidth(value) 58 | lcap(value) 59 | ldash(arg) 60 | ljoin(arg) 61 | shblur(arg) 62 | shcolor(arg) 63 | shoffx(arg) 64 | shoffy(arg) 65 | lgrad(x0, y0, x1, y1) 66 | rgrad(x0, y0, x1, y1) 67 |
68 | title(title) 69 | ms() 70 | fps(n) 71 | loop(boolean) 72 | clear() 73 | clearf(boolean) 74 | log(message) 75 | comp(type) 76 | bground(color) 77 | rgba(r, g, b, a) 78 | gimg(imgSrc) 79 | drimg(img) 80 |
81 | push() 82 | pop() 83 | rotate(degs) 84 | tslate(x, y) 85 | scale(x ,y) 86 | treset() 87 |
88 | font(style) 89 | ftext(text, x, y maxWidth?) 90 | stext(text, x, y maxWidth?) 91 | 92 | # Code 93 | 94 | https://github.com/htor/framing 95 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: / 3 | -------------------------------------------------------------------------------- /public/zme.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/htor/framing/7a34aae8d003fc8499a21abefae5371a16b22336/public/zme.woff2 -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # framing 2 | 3 | Online editor for live coding JS graphics with the 4 | [canvas API](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D). 5 | Try it out [here](https://framing.neocities.org/)! 6 | 7 | 8 | 9 | # example 10 | 11 | To draw something on the canvas use the shorthand functions or standard canvas functions on the `ctx` global. 12 | Press F1 to get a list of shorthand functions. 13 | 14 | ```js 15 | // using shorthand 16 | fstyle('orange') 17 | frect(500, 500, 100, 100) 18 | // using standard 19 | ctx.fillStyle('orange') 20 | ctx.fillRect(500, 500, 100, 100) 21 | ``` 22 | 23 | To run code for each frame, define a function `draw(n)`. 24 | This function will be called for each frame. Current frame number is passed as `n`: 25 | 26 | ```js 27 | fps(6) 28 | fstyle('orange') 29 | var s = 20, 30 | x = 0, 31 | y = 0 32 | 33 | function draw(n) { 34 | for (x = 0; x < w; x += s) { 35 | for (y = 0; y < h; y += s) { 36 | frect(x, y, s - 5, s - 5) 37 | } 38 | } 39 | } 40 | ``` 41 | 42 | Control the number of frames per second with `fps(n)`. 43 | Look inside the [examples](examples) directory for examples and inspiration. Press F1 for more help. 44 | 45 | # usage 46 | 47 | ### esc 48 | 49 | Show/hide help window 50 | 51 | ### ctrl+h 52 | 53 | Toggle hiding code and output 54 | 55 | ### ctrl+f 56 | 57 | Toggle fullscreen mode 58 | 59 | ### cmd/ctrl+enter 60 | 61 | Save and evaluate code. If the code errors, the error is displayed on the lower left. 62 | The URL is updated with a shareable link. 63 | 64 | ### cmd/ctrl+d 65 | 66 | Duplicate current line 67 | 68 | ### cmd/ctrl+k 69 | 70 | Comment/uncomment current selection 71 | 72 | ### cmd/ctrl+l 73 | 74 | Select current line(s) 75 | 76 | ### back/forward 77 | 78 | Back and forward buttons in the browser moves through save history. 79 | 80 | # installing 81 | 82 | Clone this repo and with [npm](https://npmjs.com/) do: 83 | 84 | ``` 85 | npm install 86 | npm run dev 87 | ``` 88 | 89 | It should open in your browser at [localhost:8080](http://localhost:8080). 90 | 91 | # inspiration 92 | 93 | Inspired by https://hydra-editor.glitch.me, the programming module at 94 | https://www.khanacademy.org/computer-programming/new/pjs and http://processingjs.org/. 95 | 96 | # license 97 | 98 | MIT 99 | 100 | [1]: https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D 101 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import buble from 'rollup-plugin-buble' 2 | import commonjs from 'rollup-plugin-commonjs' 3 | import postcss from 'rollup-plugin-postcss' 4 | import resolve from 'rollup-plugin-node-resolve' 5 | import serve from 'rollup-plugin-serve' 6 | import copy from 'rollup-plugin-copy' 7 | 8 | export default { 9 | input: 'src/framing.js', 10 | output: { 11 | file: 'dist/framing.js', 12 | format: 'cjs' 13 | }, 14 | plugins: [ 15 | postcss({ minimize: { preset: 'default' } }), 16 | resolve({ browser: true }), 17 | commonjs(), 18 | buble({ transforms: { asyncAwait: false } }), 19 | copy({ targets: [{ src: ['public/*', 'src/index.html'], dest: 'dist' }] }), 20 | process.env.ROLLUP_WATCH && 21 | serve({ contentBase: 'dist', port: 8080, open: false }) 22 | ], 23 | onwarn: (message) => { 24 | if (/Use of eval/.test(message)) return 25 | console.error(message.toString()) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/framing.js: -------------------------------------------------------------------------------- 1 | import 'codemirror/lib/codemirror.css' 2 | import './index.css' 3 | import CodeMirror from 'codemirror' 4 | import 'codemirror/mode/javascript/javascript' 5 | import 'codemirror/addon/edit/matchbrackets' 6 | import 'codemirror/addon/edit/closebrackets' 7 | import 'codemirror/addon/comment/comment' 8 | import { 9 | getQueryParam, 10 | setQueryParam, 11 | setFavicon, 12 | sleep, 13 | strToBase64, 14 | base64ToStr 15 | } from './utils' 16 | import * as lang from './lang' 17 | 18 | const SERVER_URL = 'https://framing.neocities.org' 19 | const code = document.querySelector('code') 20 | const nav = document.querySelector('nav') 21 | const mainCanvas = document.querySelector('canvas') 22 | const offCanvas = document.querySelector('canvas[hidden]') 23 | const help = document.querySelector('aside') 24 | 25 | let editor = null 26 | let isHidden = false 27 | let lastCode = '' 28 | const defaultCode = `title('dual gradient') 29 | clear() 30 | s=20 31 | for(x=0;x saveCode(editor), 57 | 'Ctrl-Enter': () => saveCode(editor), 58 | Tab: () => CodeMirror.commands.indentMore(editor), 59 | 'Shift-Tab': () => CodeMirror.commands.indentLess(editor), 60 | 'Ctrl-L': () => selectLine(editor), 61 | 'Ctrl-D': () => duplicateLine(editor), 62 | 'Ctrl-K': () => CodeMirror.commands.toggleComment(editor), 63 | 'Ctrl-H': () => {} 64 | } 65 | }) 66 | isHidden = getQueryParam('hidden') === 'true' 67 | const id = getQueryParam('id') 68 | editor.setValue(id ? base64ToStr(id) : defaultCode) 69 | editor.focus() 70 | code.toggleAttribute('hidden', isHidden) 71 | nav.toggleAttribute('hidden', isHidden) 72 | } 73 | 74 | function duplicateLine(editor) { 75 | const cursor = editor.getCursor() 76 | const line = editor.getLine(cursor.line) 77 | editor.replaceRange(`\n${line}`, { line: cursor.line }) 78 | } 79 | 80 | function selectLine(editor) { 81 | const cursor = editor.getCursor() 82 | const from = { line: cursor.line, ch: 0 } 83 | const to = { line: cursor.line + (editor.somethingSelected() ? 1 : 0) } 84 | editor.setExtending(true) 85 | editor.extendSelection(from, to) 86 | editor.setExtending(false) 87 | } 88 | 89 | function toggleHelp() { 90 | help.toggleAttribute('hidden') 91 | toggleCode() 92 | if (!help.hidden) help.focus() 93 | } 94 | 95 | function toggleCode() { 96 | isHidden = !isHidden 97 | code.toggleAttribute('hidden', isHidden) 98 | nav.toggleAttribute('hidden', isHidden) 99 | setQueryParam('hidden', isHidden) 100 | if (!isHidden) editor.focus() 101 | } 102 | 103 | function toggleFullscreen() { 104 | if (document.fullscreenElement) { 105 | document.exitFullscreen() 106 | } else { 107 | document.documentElement.requestFullscreen() 108 | } 109 | } 110 | 111 | function saveCode(editor, updateUrl = true) { 112 | const code = editor.getValue() 113 | lang.evalCode(code) 114 | if (code !== lastCode && updateUrl) { 115 | lastCode = code 116 | setQueryParam('id', encodeURIComponent(strToBase64(code))) 117 | setFavicon() 118 | } 119 | } 120 | 121 | async function loadHelp() { 122 | const response = await fetch('help.md') 123 | const text = await response.text() 124 | const lines = text.split('\n') 125 | const newLines = [] 126 | for (let i = 0; i < lines.length; i++) { 127 | if (lines[i].startsWith('# ')) 128 | newLines.push(`

${lines[i].slice(1)}

`) 129 | else if (lines[i].trim()) newLines.push(`

${lines[i]}

`) 130 | } 131 | help.insertAdjacentHTML('afterbegin', `${newLines.join('\n')}`) 132 | } 133 | 134 | async function copyToClip(str) { 135 | await navigator.clipboard.writeText(str) 136 | } 137 | 138 | function main() { 139 | window.addEventListener('click', async ({ target }) => { 140 | if (target.id === 'help' || target.id === 'close') toggleHelp() 141 | if (target.id === 'share') { 142 | const buttonText = target.textContent 143 | target.textContent = 'Link copied!' 144 | await copyToClip(`${SERVER_URL}/${window.location.search}`) 145 | sleep(2000, () => (target.textContent = buttonText)) 146 | } else { 147 | editor.focus() 148 | } 149 | }) 150 | window.addEventListener('popstate', (event) => { 151 | setup() 152 | saveCode(editor, false) 153 | }) 154 | window.addEventListener('keydown', (event) => { 155 | if (event.key === 'Escape') { 156 | event.preventDefault() 157 | toggleHelp() 158 | } else if (event.key === 'h' && event.ctrlKey) { 159 | event.preventDefault() 160 | toggleCode() 161 | } else if (event.key === 'f' && event.ctrlKey) { 162 | event.preventDefault() 163 | toggleFullscreen() 164 | } 165 | }) 166 | 167 | loadHelp() 168 | setup() 169 | saveCode(editor) 170 | } 171 | 172 | main() 173 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: zme; 3 | src: url('zme.woff2') format('woff2'); 4 | } 5 | 6 | :root { 7 | --color-gray: #f1f1f1; 8 | } 9 | 10 | :focus-visible { 11 | outline: 0; 12 | } 13 | 14 | html, 15 | body { 16 | min-height: 100%; 17 | height: 100%; 18 | margin: 0; 19 | padding: 0; 20 | overflow: hidden; 21 | font: 22 | 16px/1.1 zme, 23 | monospace; 24 | -webkit-text-size-adjust: 100%; 25 | text-size-adjust: 100%; 26 | -webkit-font-smoothing: antialiased; 27 | -moz-osx-font-smoothing: grayscale; 28 | } 29 | 30 | a { 31 | color: inherit; 32 | } 33 | 34 | code { 35 | position: absolute; 36 | top: 1.6rem; 37 | left: 1.6rem; 38 | bottom: 4rem; 39 | } 40 | 41 | output { 42 | background: black; 43 | color: white; 44 | } 45 | 46 | button { 47 | appearance: none; 48 | background: black; 49 | border: none; 50 | color: white; 51 | font: inherit; 52 | cursor: pointer; 53 | } 54 | 55 | button#close { 56 | position: fixed; 57 | bottom: 1.6rem; 58 | left: 1.6rem; 59 | } 60 | 61 | nav { 62 | position: absolute; 63 | bottom: 1.6rem; 64 | left: 1.6rem; 65 | display: flex; 66 | justify-content: space-between; 67 | gap: 1rem; 68 | } 69 | 70 | aside { 71 | position: absolute; 72 | top: 0; 73 | left: 0; 74 | right: 0; 75 | bottom: 0; 76 | padding: 2em 2em 4em; 77 | background: var(--color-gray); 78 | color: black; 79 | opacity: 1; 80 | transition: 0.2s all; 81 | font-size: 1rem; 82 | overflow: auto; 83 | z-index: 5; 84 | } 85 | 86 | aside h1 { 87 | margin: 0 0 1rem; 88 | font: inherit; 89 | font-weight: bold; 90 | } 91 | 92 | aside p { 93 | margin: 0; 94 | } 95 | 96 | aside h1 + p { 97 | margin-top: 0.6em; 98 | } 99 | 100 | aside p + h1 { 101 | margin-top: 1.2em; 102 | } 103 | 104 | code[hidden], 105 | nav[hidden], 106 | section[hidden] { 107 | display: block; 108 | visibility: hidden; 109 | pointer-events: none; 110 | opacity: 0; 111 | } 112 | 113 | .CodeMirror { 114 | min-height: calc(100vh - 6em); 115 | line-height: 1.16; 116 | background: transparent; 117 | } 118 | 119 | .CodeMirror-selected, 120 | .CodeMirror-line::selection, 121 | .CodeMirror-line > span::selection, 122 | .CodeMirror-line > span > span::selection { 123 | background: rgba(255, 255, 255, 0.6) !important; 124 | } 125 | 126 | .CodeMirror pre { 127 | z-index: 0 !important; 128 | padding: 0; 129 | font-family: zme !important; 130 | } 131 | 132 | .CodeMirror-cursor { 133 | border-left: 3px solid white !important; 134 | z-index: 1 !important; 135 | } 136 | 137 | .CodeMirror-line span { 138 | background: black; 139 | padding: 0 !important; 140 | color: white !important; 141 | } 142 | 143 | .CodeMirror-lines { 144 | padding: 0 !important; 145 | } 146 | -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 16 | 17 | 18 | 19 | 20 | 21 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/lang.js: -------------------------------------------------------------------------------- 1 | import OpenSimplex from 'open-simplex-noise' 2 | import seedrandom from 'seedrandom' 3 | 4 | const startTime = new Date() 5 | const output = document.querySelector('output') 6 | const mainCanvas = document.querySelector('canvas') 7 | const offCanvas = document.querySelector('canvas[hidden]') 8 | const video = document.querySelector('video') 9 | 10 | const ctx = mainCanvas.getContext('2d') 11 | const offCtx = offCanvas.getContext('2d') 12 | const simplex = new OpenSimplex() 13 | const realEval = eval 14 | let lastCode = '' 15 | let randomSeed = 0 16 | let frameRate = 120 17 | let frameCount = 0 18 | let clearFrame = true 19 | let shouldLoop = true 20 | let frameTimer = null 21 | 22 | window.ctx = ctx 23 | window.offCtx = offCtx 24 | window.sin = Math.sin 25 | window.cos = Math.cos 26 | window.atan2 = Math.atan2 27 | window.abs = Math.abs 28 | window.min = Math.min 29 | window.max = Math.max 30 | window.floor = Math.floor 31 | window.ceil = Math.ceil 32 | window.round = Math.round 33 | window.PI = Math.PI 34 | window.TWO_PI = Math.PI * 2 35 | window.w = window.innerWidth 36 | window.h = window.innerHeight 37 | window.mx = 0 38 | window.my = 0 39 | 40 | window.begin = () => ctx.beginPath() 41 | window.move = (...args) => ctx.moveTo(...args) 42 | window.line = (...args) => ctx.lineTo(...args) 43 | window.cubicc = (...args) => ctx.bezierCurveTo(...args) 44 | window.quadc = (...args) => ctx.quadraticCurveTo(...args) 45 | window.close = () => ctx.closePath() 46 | window.stroke = () => ctx.stroke() 47 | window.fill = () => ctx.fill() 48 | window.rect = (...args) => ctx.rect(...args) 49 | window.srect = (...args) => ctx.strokeRect(...args) 50 | window.frect = (...args) => ctx.fillRect(...args) 51 | window.point = (x, y) => window.frect(x, y, 2, 2) 52 | window.arc = (...args) => ctx.arc(...args) 53 | window.arcc = (...args) => ctx.arcTo(...args) 54 | window.triang = (x1, y1, x2, y2, x3, y3) => { 55 | window.begin() 56 | window.line(x1, y1) 57 | window.line(x2, y2) 58 | window.line(x3, y3) 59 | window.close() 60 | } 61 | window.striang = (...args) => { 62 | window.triang(...args) 63 | window.stroke() 64 | } 65 | window.ftriang = (...args) => { 66 | window.triang(...args) 67 | window.fill() 68 | } 69 | window.quad = (x1, y1, x2, y2, x3, y3, x4, y4) => { 70 | window.begin() 71 | window.line(x1, y1) 72 | window.line(x2, y2) 73 | window.line(x3, y3) 74 | window.line(x4, y4) 75 | window.close() 76 | } 77 | window.squad = (...args) => { 78 | window.quad(...args) 79 | window.stroke() 80 | } 81 | window.fquad = (...args) => { 82 | window.quad(...args) 83 | window.fill() 84 | } 85 | window.ellips = (x, y, w, h, r) => { 86 | window.begin() 87 | ctx.ellipse(x, y, w, h, r ? (r * PI) / 180 : 0, 0, TWO_PI) 88 | } 89 | window.sellips = (...args) => { 90 | window.ellips(...args) 91 | window.stroke() 92 | } 93 | window.fellips = (...args) => { 94 | window.ellips(...args) 95 | window.fill() 96 | } 97 | window.pinp = (...args) => ctx.isPointInPath(...args) 98 | window.pins = (...args) => ctx.isPointInStroke(...args) 99 | 100 | window.push = () => ctx.save() 101 | window.pop = () => ctx.restore() 102 | window.tslate = (...args) => ctx.translate(...args) 103 | window.rotate = (radians) => ctx.rotate(radians) 104 | window.scale = (...args) => ctx.scale(...args) 105 | window.treset = () => ctx.setTransform(1, 0, 0, 1, 0, 0) 106 | window.clear = () => ctx.clearRect(0, 0, window.w, window.h) 107 | window.clearf = (arg) => (clearFrame = arg) 108 | window.bground = (arg) => { 109 | window.push() 110 | window.fstyle(arg) 111 | window.frect(0, 0, window.w, window.h) 112 | window.pop() 113 | } 114 | window.ms = () => new Date() - startTime 115 | window.date = () => new Date() 116 | window.fps = (arg) => (frameRate = arg) 117 | window.title = (title) => void (document.title = title) 118 | window.loop = (arg) => (shouldLoop = arg) 119 | window.log = (...args) => logMessage(args.join(',')) 120 | 121 | window.rand = (min, max) => Math.floor(Math.random() * (max - min + 1) + min) 122 | window.map = (value, low1, high1, low2, high2) => 123 | low2 + (high2 - low2) * ((value - low1) / (high1 - low1)) 124 | window.norm = (value, low, high) => (value - low) / (high - low) 125 | window.constrain = (value, min, max) => Math.min(Math.max(value, min), max) 126 | window.rseed = (seed) => 127 | seed !== randomSeed && seedrandom((randomSeed = seed), { global: true }) 128 | window.noise = (x, y) => simplex.noise2D(x, y) 129 | window.degrees = (radians) => (radians * 180) / PI 130 | window.dist = (x1, y1, x2, y2) => Math.hypot(x2 - x1, y2 - y1) 131 | 132 | window.comp = (arg) => (ctx.globalCompositeOperation = arg) 133 | window.alpha = (arg) => (ctx.globalAlpha = arg) 134 | window.sstyle = (arg) => (ctx.strokeStyle = arg) 135 | window.fstyle = (arg) => (ctx.fillStyle = arg) 136 | window.ftext = (...args) => ctx.fillText(...args) 137 | window.stext = (...args) => ctx.strokeText(...args) 138 | window.font = (arg) => (ctx.font = arg) 139 | window.lwidth = (arg) => (ctx.lineWidth = arg) 140 | window.lcap = (arg) => (ctx.lineCap = arg) 141 | window.doffset = (arg) => (ctx.lineDashOffset = arg) 142 | window.ldash = (arg) => ctx.setLineDash(arg) 143 | window.ljoin = (arg) => (ctx.lineJoin = arg) 144 | window.shblur = (arg) => (ctx.shadowBlur = arg) 145 | window.shcolor = (arg) => (ctx.shadowColor = arg) 146 | window.shoffx = (arg) => (ctx.shadowOffsetX = arg) 147 | window.shoffy = (arg) => (ctx.shadowOffsetY = arg) 148 | window.lgrad = (...args) => { 149 | const g = ctx.createLinearGradient(...args) 150 | g.stop = (...args) => { 151 | g.addColorStop(...args) 152 | return g 153 | } 154 | return g 155 | } 156 | window.rgrad = (...args) => { 157 | const g = ctx.createRadialGradient(...args) 158 | g.stop = (...args) => { 159 | g.addColorStop(...args) 160 | return g 161 | } 162 | return g 163 | } 164 | 165 | window.on = (() => { 166 | const callbacks = {} 167 | return (event, callback) => { 168 | const oldCallback = callbacks[event] 169 | if (oldCallback) window.removeEventListener(event, oldCallback) 170 | window.addEventListener(event, callback) 171 | callbacks[event] = callback 172 | } 173 | })() 174 | 175 | window.image = (arg) => { 176 | const img = new Image(arg) 177 | img.crossOrigin = 'anonymous' 178 | img.src = arg 179 | return img 180 | } 181 | window.capture = (opts) => { 182 | if (opts.src) { 183 | video.src = opts.src 184 | } else if (!video.srcObject) { 185 | navigator.mediaDevices 186 | .getUserMedia(opts) 187 | .then((stream) => { 188 | video.srcObject = stream 189 | }) 190 | .catch((_) => log('Error: video capture not allowed by user')) 191 | } 192 | return video 193 | } 194 | window.gidata = (...args) => ctx.getImageData(...args) 195 | window.pidata = (...args) => ctx.putImageData(...args) 196 | window.dimage = (...args) => ctx.drawImage(...args) 197 | window.gidataoff = (...args) => offCtx.getImageData(...args) 198 | window.pidataoff = (...args) => offCtx.putImageData(...args) 199 | window.dimageoff = (...args) => offCtx.drawImage(...args) 200 | 201 | window.addEventListener('resize', () => { 202 | window.w = mainCanvas.width = offCanvas.width = window.innerWidth 203 | window.h = mainCanvas.height = offCanvas.height = window.innerHeight 204 | evalCode(lastCode) 205 | }) 206 | 207 | window.addEventListener('mousemove', (event) => { 208 | window.mx = event.clientX 209 | window.my = event.clientY 210 | }) 211 | 212 | function logMessage(message) { 213 | if (String(message) !== output.textContent) { 214 | output.textContent = message 215 | } 216 | } 217 | 218 | export function evalCode(code) { 219 | window.clearTimeout(frameTimer) 220 | window.setup = window.draw = frameCount = 0 221 | try { 222 | logMessage(realEval(code)) 223 | lastCode = code 224 | window.requestAnimationFrame(function drawFrame() { 225 | try { 226 | if (window.draw) { 227 | if (clearFrame) { 228 | ctx.clearRect(0, 0, mainCanvas.width, mainCanvas.height) 229 | } 230 | window.draw(++frameCount) 231 | } 232 | } catch (error) { 233 | logMessage(error.message) 234 | } 235 | if (shouldLoop) { 236 | frameTimer = setTimeout(() => { 237 | window.requestAnimationFrame(drawFrame) 238 | }, 1000 / frameRate) 239 | } 240 | }) 241 | } catch (error) { 242 | logMessage(error.message) 243 | } 244 | } 245 | -------------------------------------------------------------------------------- /src/utils.js: -------------------------------------------------------------------------------- 1 | import { compress, decompress } from '@blu3r4y/lzma' 2 | 3 | export function vendorPrefix(prop, target) { 4 | const prefixes = ['', 'ms', 'moz', 'webkit'] 5 | for (let i = 0; i < prefixes.length; i++) { 6 | const ident = `${prefixes[i]}${prop.charAt(0).toUpperCase()}${prop.slice(1)}` 7 | const vendor = target[ident] 8 | if (vendor) target[prop] = vendor 9 | } 10 | } 11 | 12 | export function getQueryParam(name) { 13 | return new URLSearchParams(location.search).get(name) 14 | } 15 | 16 | export function setQueryParam(name, value) { 17 | const params = new URLSearchParams(window.location.search) 18 | params.set(name, value) 19 | const newUrl = `${window.location.origin}${window.location.pathname}?${params}` 20 | window.history.pushState({ path: newUrl }, '', newUrl) 21 | } 22 | 23 | export function setFavicon() { 24 | setTimeout(() => { 25 | const canvas = document.querySelector('canvas') 26 | const favicon = document.querySelector('[rel=icon]') 27 | const iconCanvas = document.createElement('canvas') 28 | const iconGraphics = iconCanvas.getContext('2d') 29 | const size = Math.min(canvas.width, canvas.height) 30 | iconCanvas.width = iconCanvas.height = size 31 | iconGraphics.drawImage(canvas, 0, 0, size, size, 0, 0, size, size) 32 | favicon.href = iconCanvas.toDataURL() 33 | }, 1000) 34 | } 35 | 36 | export function sleep(millis, callback) { 37 | return new Promise((resolve) => { 38 | setTimeout(() => resolve(callback()), millis) 39 | }) 40 | } 41 | 42 | export function strToBase64(str) { 43 | const compBytes = Uint8Array.from(compress(str)) 44 | return btoa(String.fromCharCode.apply(null, compBytes)) 45 | } 46 | 47 | export function base64ToStr(str) { 48 | const compBytes = Uint8Array.from(atob(decodeURIComponent(str)), (m) => 49 | m.charCodeAt(0) 50 | ) 51 | return decompress(compBytes) 52 | } 53 | 54 | vendorPrefix('exitFullscreen', document) 55 | vendorPrefix('cancelFullScreen', document) 56 | vendorPrefix('requestFullscreen', document.documentElement) 57 | vendorPrefix('requestFullScreen', document.documentElement) 58 | --------------------------------------------------------------------------------