├── test ├── samples │ ├── raw-tag │ │ ├── input.html │ │ └── output.html │ ├── tag │ │ ├── input.html │ │ └── output.html │ ├── yield │ │ ├── input.html │ │ └── output.html │ ├── spread │ │ ├── output.html │ │ └── input.html │ ├── if-block │ │ ├── output.html │ │ └── input.html │ ├── builtins-window │ │ ├── input.html │ │ └── output.html │ ├── builtins-head │ │ ├── input.html │ │ └── output.html │ ├── event-handler-shorthand │ │ ├── input.html │ │ └── output.html │ ├── shorthand-properties │ │ ├── input.html │ │ └── output.html │ ├── escape-braces │ │ ├── input.html │ │ └── output.html │ ├── await-then │ │ ├── output.html │ │ └── input.html │ ├── builtins-component │ │ ├── input.html │ │ └── output.html │ ├── ignore-bad-css │ │ ├── input.html │ │ └── output.html │ ├── if-block-else │ │ ├── output.html │ │ └── input.html │ ├── builtins-component-complex │ │ ├── input.html │ │ └── output.html │ ├── each-else │ │ ├── output.html │ │ └── input.html │ ├── builtins-self │ │ ├── input.html │ │ └── output.html │ ├── if-else-if │ │ ├── output.html │ │ └── input.html │ ├── if-block-elseif │ │ ├── output.html │ │ └── input.html │ ├── each-block │ │ ├── output.html │ │ └── input.html │ ├── await-then-catch │ │ ├── output.html │ │ └── input.html │ ├── each-block-keyed │ │ ├── output.html │ │ └── input.html │ ├── await-pending-then-catch │ │ ├── output.html │ │ └── input.html │ ├── computed-after-style │ │ ├── input.html │ │ └── output.html │ ├── store-method │ │ ├── output.html │ │ └── input.html │ └── computed │ │ ├── input.html │ │ └── output.html └── test.js ├── bin ├── .gitignore ├── .travis.yml ├── rollup.config.js ├── appveyor.yml ├── package.json ├── LICENSE ├── CHANGELOG.md ├── src ├── cli.js └── index.js ├── README.md └── yarn.lock /test/samples/raw-tag/input.html: -------------------------------------------------------------------------------- 1 | {{tag}} -------------------------------------------------------------------------------- /test/samples/raw-tag/output.html: -------------------------------------------------------------------------------- 1 | {tag} -------------------------------------------------------------------------------- /test/samples/tag/input.html: -------------------------------------------------------------------------------- 1 | {{{stuff}}} -------------------------------------------------------------------------------- /test/samples/yield/input.html: -------------------------------------------------------------------------------- 1 | {{yield}} -------------------------------------------------------------------------------- /test/samples/tag/output.html: -------------------------------------------------------------------------------- 1 | {@html stuff} -------------------------------------------------------------------------------- /test/samples/yield/output.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /bin: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | require('./dist/cli.js'); -------------------------------------------------------------------------------- /test/samples/spread/output.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /test/samples/spread/input.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /test/samples/if-block/output.html: -------------------------------------------------------------------------------- 1 | {#if foo} 2 |

foo

3 | {/if} -------------------------------------------------------------------------------- /test/samples/builtins-window/input.html: -------------------------------------------------------------------------------- 1 | <:Window bind:width bind:height/> -------------------------------------------------------------------------------- /test/samples/if-block/input.html: -------------------------------------------------------------------------------- 1 | {{#if foo}} 2 |

foo

3 | {{/if}} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | *.d.ts 4 | dist 5 | yarn-error.log -------------------------------------------------------------------------------- /test/samples/builtins-head/input.html: -------------------------------------------------------------------------------- 1 | <:Head> 2 | wooo 3 | -------------------------------------------------------------------------------- /test/samples/builtins-window/output.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/samples/event-handler-shorthand/input.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/samples/event-handler-shorthand/output.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/samples/shorthand-properties/input.html: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /test/samples/shorthand-properties/output.html: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /test/samples/escape-braces/input.html: -------------------------------------------------------------------------------- 1 |
2 | {foo} 3 | {bar} 4 | -------------------------------------------------------------------------------- /test/samples/builtins-head/output.html: -------------------------------------------------------------------------------- 1 | 2 | wooo 3 | -------------------------------------------------------------------------------- /test/samples/await-then/output.html: -------------------------------------------------------------------------------- 1 | {#await promise then value} 2 | 3 | {/await} -------------------------------------------------------------------------------- /test/samples/builtins-component/input.html: -------------------------------------------------------------------------------- 1 | <:Component {Thing}> 2 |

contents

3 | -------------------------------------------------------------------------------- /test/samples/ignore-bad-css/input.html: -------------------------------------------------------------------------------- 1 | {{foo}} 2 | 3 | 6 | 7 | {{bar}} -------------------------------------------------------------------------------- /test/samples/ignore-bad-css/output.html: -------------------------------------------------------------------------------- 1 | {foo} 2 | 3 | 6 | 7 | {bar} -------------------------------------------------------------------------------- /test/samples/await-then/input.html: -------------------------------------------------------------------------------- 1 | {{#await promise then value}} 2 | 3 | {{/await}} -------------------------------------------------------------------------------- /test/samples/if-block-else/output.html: -------------------------------------------------------------------------------- 1 | {#if foo} 2 |

foo

3 | {:else} 4 |

not foo

5 | {/if} -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "8" 4 | 5 | env: 6 | global: 7 | - BUILD_TIMEOUT=10000 -------------------------------------------------------------------------------- /test/samples/builtins-component-complex/input.html: -------------------------------------------------------------------------------- 1 | <:Component {x ? y : z}> 2 |

contents

3 | -------------------------------------------------------------------------------- /test/samples/if-block-else/input.html: -------------------------------------------------------------------------------- 1 | {{#if foo}} 2 |

foo

3 | {{else}} 4 |

not foo

5 | {{/if}} -------------------------------------------------------------------------------- /test/samples/escape-braces/output.html: -------------------------------------------------------------------------------- 1 |
2 | {foo} 3 | {bar} 4 | -------------------------------------------------------------------------------- /test/samples/builtins-component/output.html: -------------------------------------------------------------------------------- 1 | 2 |

contents

3 |
-------------------------------------------------------------------------------- /test/samples/each-else/output.html: -------------------------------------------------------------------------------- 1 | {#each animals as animal} 2 |

{animal}

3 | {:else} 4 |

no animals

5 | {/each} -------------------------------------------------------------------------------- /test/samples/builtins-component-complex/output.html: -------------------------------------------------------------------------------- 1 | 2 |

contents

3 |
-------------------------------------------------------------------------------- /test/samples/each-else/input.html: -------------------------------------------------------------------------------- 1 | {{#each animals as animal}} 2 |

{{animal}}

3 | {{else}} 4 |

no animals

5 | {{/each}} -------------------------------------------------------------------------------- /test/samples/builtins-self/input.html: -------------------------------------------------------------------------------- 1 | {{#if foo}} 2 | <:Self bar={{baz}}> 3 |

contents

4 | 5 | {{/if}} 6 | 7 | -------------------------------------------------------------------------------- /test/samples/if-else-if/output.html: -------------------------------------------------------------------------------- 1 | {#if foo} 2 | {#if x} 3 |

x

4 | {/if} 5 | {:else} 6 | {#if y} 7 |

y

8 | {/if} 9 | {/if} -------------------------------------------------------------------------------- /test/samples/builtins-self/output.html: -------------------------------------------------------------------------------- 1 | {#if foo} 2 | 3 |

contents

4 |
5 | {/if} 6 | 7 | -------------------------------------------------------------------------------- /test/samples/if-block-elseif/output.html: -------------------------------------------------------------------------------- 1 | {#if foo} 2 |

foo

3 | {:elseif bar} 4 |

bar

5 | {:else} 6 |

neither foo nor bar

7 | {/if} -------------------------------------------------------------------------------- /test/samples/each-block/output.html: -------------------------------------------------------------------------------- 1 |
    2 | {#each cats as cat} 3 |
  • {cat.name}
  • 4 | {/each} 5 |
-------------------------------------------------------------------------------- /test/samples/if-block-elseif/input.html: -------------------------------------------------------------------------------- 1 | {{#if foo}} 2 |

foo

3 | {{elseif bar}} 4 |

bar

5 | {{else}} 6 |

neither foo nor bar

7 | {{/if}} -------------------------------------------------------------------------------- /test/samples/if-else-if/input.html: -------------------------------------------------------------------------------- 1 | {{#if foo}} 2 | {{#if x}} 3 |

x

4 | {{/if}} 5 | {{else}} 6 | {{#if y}} 7 |

y

8 | {{/if}} 9 | {{/if}} -------------------------------------------------------------------------------- /test/samples/await-then-catch/output.html: -------------------------------------------------------------------------------- 1 | {#await promise then value} 2 |

value: {value}

3 | {:catch error} 4 |

error: {error.message}

5 | {/await} -------------------------------------------------------------------------------- /test/samples/each-block/input.html: -------------------------------------------------------------------------------- 1 |
    2 | {{#each cats as cat}} 3 |
  • {{cat.name}}
  • 4 | {{/each}} 5 |
-------------------------------------------------------------------------------- /test/samples/await-then-catch/input.html: -------------------------------------------------------------------------------- 1 | {{#await promise then value}} 2 |

value: {{value}}

3 | {{catch error}} 4 |

error: {{error.message}}

5 | {{/await}} -------------------------------------------------------------------------------- /test/samples/each-block-keyed/output.html: -------------------------------------------------------------------------------- 1 |
    2 | {#each cats as cat (cat.name)} 3 |
  • {cat.name}
  • 4 | {/each} 5 |
-------------------------------------------------------------------------------- /test/samples/each-block-keyed/input.html: -------------------------------------------------------------------------------- 1 |
    2 | {{#each cats as cat @name}} 3 |
  • {{cat.name}}
  • 4 | {{/each}} 5 |
-------------------------------------------------------------------------------- /test/samples/await-pending-then-catch/output.html: -------------------------------------------------------------------------------- 1 | {#await promise} 2 |

waiting...

3 | {:then value} 4 |

value: {value}

5 | {:catch error} 6 |

error: {error.message}

7 | {/await} -------------------------------------------------------------------------------- /test/samples/await-pending-then-catch/input.html: -------------------------------------------------------------------------------- 1 | {{#await promise}} 2 |

waiting...

3 | {{then value}} 4 |

value: {{value}}

5 | {{catch error}} 6 |

error: {{error.message}}

7 | {{/await}} -------------------------------------------------------------------------------- /test/samples/computed-after-style/input.html: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /test/samples/computed-after-style/output.html: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /test/samples/store-method/output.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/samples/store-method/input.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/samples/computed/input.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/samples/computed/output.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import json from 'rollup-plugin-json'; 2 | import pkg from './package.json'; 3 | 4 | export default { 5 | input: ['src/index.js', 'src/cli.js'], 6 | output: { 7 | dir: 'dist', 8 | format: 'cjs' 9 | }, 10 | experimentalCodeSplitting: true, 11 | experimentalDynamicImport: true, 12 | external: Object.keys(pkg.dependencies), 13 | plugins: [ 14 | json() 15 | ] 16 | }; -------------------------------------------------------------------------------- /test/test.js: -------------------------------------------------------------------------------- 1 | import * as fs from 'fs'; 2 | import { test } from 'tape-modern'; 3 | import { upgradeTemplate } from '../src/index'; 4 | 5 | fs.readdirSync('test/samples').forEach(dir => { 6 | if (dir[0] === '.') return; 7 | 8 | test(dir, t => { 9 | const source = fs.readFileSync(`test/samples/${dir}/input.html`, 'utf-8'); 10 | const expected = fs.readFileSync(`test/samples/${dir}/output.html`, 'utf-8'); 11 | 12 | const actual = upgradeTemplate(source); 13 | 14 | t.equal(actual, expected); 15 | }); 16 | }); -------------------------------------------------------------------------------- /appveyor.yml: -------------------------------------------------------------------------------- 1 | # http://www.appveyor.com/docs/appveyor-yml 2 | 3 | version: "{build}" 4 | 5 | clone_depth: 10 6 | 7 | init: 8 | - git config --global core.autocrlf false 9 | 10 | environment: 11 | matrix: 12 | # node.js 13 | - nodejs_version: 8 14 | 15 | install: 16 | - ps: Install-Product node $env:nodejs_version 17 | - npm install 18 | 19 | build: off 20 | 21 | test_script: 22 | - node --version && npm --version 23 | - npm test 24 | 25 | matrix: 26 | fast_finish: false 27 | 28 | # cache: 29 | # - C:\Users\appveyor\AppData\Roaming\npm-cache -> package.json # npm cache 30 | # - node_modules -> package.json # local npm modules 31 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-upgrade", 3 | "description": "Upgrade Svelte templates", 4 | "version": "1.0.16", 5 | "repository": "sveltejs/svelte-upgrade", 6 | "main": "dist/index.js", 7 | "bin": { 8 | "svelte-upgrade": "bin" 9 | }, 10 | "files": [ 11 | "dist", 12 | "bin" 13 | ], 14 | "devDependencies": { 15 | "esm": "^3.0.84", 16 | "rollup": "^0.67.0", 17 | "rollup-plugin-json": "^3.1.0", 18 | "tape-modern": "^1.1.1" 19 | }, 20 | "scripts": { 21 | "build": "rollup -c", 22 | "dev": "rollup -cw", 23 | "test": "node -r esm test/test.js", 24 | "prepublishOnly": "npm test && npm run build" 25 | }, 26 | "license": "LIL", 27 | "dependencies": { 28 | "estree-walker": "^0.5.2", 29 | "glob": "^7.1.3", 30 | "magic-string": "^0.25.1", 31 | "prompts": "^1.2.0", 32 | "sade": "^1.4.1", 33 | "svelte": "1", 34 | "turbocolor": "^2.6.1" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018 Rich Harris 2 | 3 | Permission is hereby granted by the authors of this software, to any person, to use the software for any purpose, free of charge, including the rights to run, read, copy, change, distribute and sell it, and including usage rights to any patents the authors may hold on it, subject to the following conditions: 4 | 5 | This license, or a link to its text, must be included with all copies of the software and any derivative works. 6 | 7 | Any modification to the software submitted to the authors may be incorporated into the software under the terms of this license. 8 | 9 | The software is provided "as is", without warranty of any kind, including but not limited to the warranties of title, fitness, merchantability and non-infringement. The authors have no obligation to provide support or updates for the software, and may not be held liable for any damages, claims or other liability arising from its use. 10 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # svelte-upgrade changelog 2 | 3 | ## 1.0.16 4 | 5 | * Fix off-by-one error 6 | 7 | ## 1.0.15 8 | 9 | * Ignore contents of ``; 54 | })); 55 | 56 | function trimStart(node) { 57 | let c = node.start; 58 | 59 | code.remove(c, c + 1); 60 | 61 | c = node.expression.end; 62 | while (source[c] !== '}') c += 1; 63 | code.remove(c, c + 1); 64 | } 65 | 66 | function trimEnd(node) { 67 | let c = node.end; 68 | 69 | code.remove(c - 1, c); 70 | 71 | while (source[c - 1] !== '{') c -= 1; 72 | code.remove(c - 1, c); 73 | } 74 | 75 | function trim(node) { 76 | trimStart(node); 77 | trimEnd(node); 78 | } 79 | 80 | const properties = {}; 81 | const methods = {}; 82 | 83 | if (ast.js) { 84 | const defaultExport = ast.js.content.body.find(node => node.type === 'ExportDefaultDeclaration'); 85 | if (defaultExport) { 86 | defaultExport.declaration.properties.forEach(prop => { 87 | properties[prop.key.name] = prop.value; 88 | }); 89 | 90 | if (properties.computed) { 91 | properties.computed.properties.forEach(prop => { 92 | const { params } = prop.value; 93 | 94 | if (prop.value.type === 'FunctionExpression') { 95 | let a = prop.value.start; 96 | if (!prop.method) a += 8; 97 | while (source[a] !== '(') a += 1; 98 | 99 | let b = params[0].start; 100 | code.overwrite(a, b, '({ '); 101 | 102 | a = b = params[params.length - 1].end; 103 | while (source[b] !== ')') b += 1; 104 | code.overwrite(a, b + 1, ' })'); 105 | } else if (prop.value.type === 'ArrowFunctionExpression') { 106 | let a = prop.value.start; 107 | let b = params[0].start; 108 | 109 | if (a !== b) code.remove(a, b); 110 | code.prependRight(b, '({ '); 111 | 112 | a = b = params[params.length - 1].end; 113 | while (source[b] !== '=') b += 1; 114 | 115 | if (a !== b) code.remove(a, b); 116 | code.appendLeft(a, ' }) '); 117 | } 118 | }); 119 | } 120 | 121 | if (properties.methods) { 122 | properties.methods.properties.forEach(prop => { 123 | methods[prop.key.name] = prop.value; 124 | }); 125 | } 126 | } 127 | } 128 | 129 | walk(ast.html, { 130 | enter(node) { 131 | let a = node.start; 132 | let b = node.end; 133 | 134 | switch (node.type) { 135 | case 'MustacheTag': 136 | trimStart(node); 137 | break; 138 | 139 | case 'RawMustacheTag': 140 | code.overwrite(a + 1, node.expression.start, '@html ').remove(b - 2, b); 141 | break; 142 | 143 | case 'AwaitBlock': 144 | trim(node); 145 | 146 | if (node.pending.start !== null) { 147 | let c = node.then.start; 148 | code.overwrite(c + 1, c + 2, ':'); 149 | 150 | while (source[c] !== '}') c += 1; 151 | code.remove(c, c + 1); 152 | } 153 | 154 | if (node.catch.start !== null) { 155 | let c = node.catch.start; 156 | code.overwrite(c + 1, c + 2, ':'); 157 | 158 | while (source[c] !== '}') c += 1; 159 | code.remove(c, c + 1); 160 | } 161 | 162 | break; 163 | 164 | case 'IfBlock': 165 | case 'EachBlock': 166 | if (!node.skip) trim(node); 167 | 168 | if (node.else) { 169 | let c = node.children[node.children.length - 1].end; 170 | while (source[c] !== '{') c += 1; 171 | code.overwrite(c + 1, c + 2, ':'); 172 | 173 | if (hasElseIf(source, node)) { 174 | c = node.else.children[0].expression.end; 175 | node.else.children[0].skip = true; 176 | } 177 | 178 | while (source[c] !== '}') c += 1; 179 | code.remove(c, c + 1); 180 | } 181 | 182 | if (node.key) { 183 | let a = node.expression.end; 184 | while (source[a] !== '@') a += 1; 185 | code.overwrite(a, a + 1, `(${node.context}.`); 186 | 187 | while (!/\w/.test(source[a])) a += 1; 188 | while (/\w/.test(source[a])) a += 1; 189 | code.appendLeft(a, ')'); 190 | } 191 | 192 | break; 193 | 194 | case 'Element': 195 | case 'Window': 196 | case 'Head': 197 | if (node.name === 'slot' && /{{\s*yield\s*}}/.test(source.slice(a, b))) { 198 | code.overwrite(a, b, ''); 199 | } 200 | 201 | else if (node.name[0] === ':') { 202 | const name = `svelte:${node.name[1].toLowerCase()}`; 203 | code.overwrite(a + 1, a + 3, name); 204 | 205 | while (source[b - 1] !== '<') b -= 1; 206 | if (source[b] === '/') { 207 | code.overwrite(b + 1, b + 3, name); 208 | } 209 | } 210 | 211 | if (node.name === ':Component') { 212 | a = node.expression.start; 213 | while (source[a - 1] !== '{') a -= 1; 214 | 215 | b = node.expression.end; 216 | while (source[b] !== '}') b += 1; 217 | 218 | const shouldQuote = /\s/.test(source.slice(a, b)); 219 | if (shouldQuote) code.prependRight(a - 1, '"').appendLeft(b + 1, '"'); 220 | code.prependRight(a - 1, 'this=') 221 | } 222 | 223 | break; 224 | 225 | case 'Text': 226 | let c = -1; 227 | while ((c = node.data.indexOf('{', c + 1)) !== -1) { 228 | code.overwrite(a + c, a + c + 1, '{'); 229 | } 230 | break; 231 | 232 | case 'Attribute': 233 | if (source[a] === ':') { 234 | code.overwrite(a, a + 1, '{').appendLeft(b, '}'); 235 | } 236 | 237 | break; 238 | 239 | case 'Spread': 240 | code.remove(a, a + 1).remove(b - 1, b); 241 | break; 242 | 243 | case 'EventHandler': 244 | if (node.expression) { 245 | const { name, parts } = flattenReference(node.expression.callee); 246 | if (name === 'store') { 247 | if (`$${parts[1].name}` in methods) { 248 | console.error(`Not overwriting store method — $${parts[1].name} already exists on component`); 249 | } else { 250 | code.overwrite(node.expression.start, parts[1].start, '$'); 251 | } 252 | } 253 | } 254 | 255 | break; 256 | } 257 | }, 258 | 259 | leave(node) { 260 | 261 | } 262 | }); 263 | 264 | 265 | 266 | return code.toString(); 267 | } -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/estree@0.0.39": 6 | version "0.0.39" 7 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" 8 | integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== 9 | 10 | "@types/node@*": 11 | version "10.12.2" 12 | resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.2.tgz#d77f9faa027cadad9c912cd47f4f8b07b0fb0864" 13 | integrity sha512-53ElVDSnZeFUUFIYzI8WLQ25IhWzb6vbddNp8UHlXQyU0ET2RhV5zg0NfubzU7iNMh5bBXb0htCzfvrSVNgzaQ== 14 | 15 | arr-diff@^2.0.0: 16 | version "2.0.0" 17 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 18 | integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= 19 | dependencies: 20 | arr-flatten "^1.0.1" 21 | 22 | arr-flatten@^1.0.1: 23 | version "1.1.0" 24 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 25 | integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== 26 | 27 | array-unique@^0.2.1: 28 | version "0.2.1" 29 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 30 | integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= 31 | 32 | balanced-match@^1.0.0: 33 | version "1.0.0" 34 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 35 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 36 | 37 | brace-expansion@^1.1.7: 38 | version "1.1.11" 39 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 40 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 41 | dependencies: 42 | balanced-match "^1.0.0" 43 | concat-map "0.0.1" 44 | 45 | braces@^1.8.2: 46 | version "1.8.5" 47 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 48 | integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= 49 | dependencies: 50 | expand-range "^1.8.1" 51 | preserve "^0.2.0" 52 | repeat-element "^1.1.2" 53 | 54 | concat-map@0.0.1: 55 | version "0.0.1" 56 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 57 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 58 | 59 | esm@^3.0.84: 60 | version "3.0.84" 61 | resolved "https://registry.yarnpkg.com/esm/-/esm-3.0.84.tgz#bb108989f4673b32d4f62406869c28eed3815a63" 62 | integrity sha512-SzSGoZc17S7P+12R9cg21Bdb7eybX25RnIeRZ80xZs+VZ3kdQKzqTp2k4hZJjR7p9l0186TTXSgrxzlMDBktlw== 63 | 64 | estree-walker@^0.5.2: 65 | version "0.5.2" 66 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39" 67 | integrity sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig== 68 | 69 | expand-brackets@^0.1.4: 70 | version "0.1.5" 71 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 72 | integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= 73 | dependencies: 74 | is-posix-bracket "^0.1.0" 75 | 76 | expand-range@^1.8.1: 77 | version "1.8.2" 78 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 79 | integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= 80 | dependencies: 81 | fill-range "^2.1.0" 82 | 83 | extglob@^0.3.1: 84 | version "0.3.2" 85 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 86 | integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= 87 | dependencies: 88 | is-extglob "^1.0.0" 89 | 90 | filename-regex@^2.0.0: 91 | version "2.0.1" 92 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" 93 | integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= 94 | 95 | fill-range@^2.1.0: 96 | version "2.2.3" 97 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" 98 | integrity sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM= 99 | dependencies: 100 | is-number "^2.1.0" 101 | isobject "^2.0.0" 102 | randomatic "^1.1.3" 103 | repeat-element "^1.1.2" 104 | repeat-string "^1.5.2" 105 | 106 | for-in@^1.0.1: 107 | version "1.0.2" 108 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 109 | integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= 110 | 111 | for-own@^0.1.4: 112 | version "0.1.5" 113 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" 114 | integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= 115 | dependencies: 116 | for-in "^1.0.1" 117 | 118 | fs.realpath@^1.0.0: 119 | version "1.0.0" 120 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 121 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 122 | 123 | glob-base@^0.3.0: 124 | version "0.3.0" 125 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 126 | integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= 127 | dependencies: 128 | glob-parent "^2.0.0" 129 | is-glob "^2.0.0" 130 | 131 | glob-parent@^2.0.0: 132 | version "2.0.0" 133 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 134 | integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= 135 | dependencies: 136 | is-glob "^2.0.0" 137 | 138 | glob@^7.1.3: 139 | version "7.1.3" 140 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 141 | integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== 142 | dependencies: 143 | fs.realpath "^1.0.0" 144 | inflight "^1.0.4" 145 | inherits "2" 146 | minimatch "^3.0.4" 147 | once "^1.3.0" 148 | path-is-absolute "^1.0.0" 149 | 150 | inflight@^1.0.4: 151 | version "1.0.6" 152 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 153 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 154 | dependencies: 155 | once "^1.3.0" 156 | wrappy "1" 157 | 158 | inherits@2: 159 | version "2.0.3" 160 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 161 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 162 | 163 | is-buffer@^1.1.5: 164 | version "1.1.6" 165 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 166 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== 167 | 168 | is-dotfile@^1.0.0: 169 | version "1.0.3" 170 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" 171 | integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= 172 | 173 | is-equal-shallow@^0.1.3: 174 | version "0.1.3" 175 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 176 | integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= 177 | dependencies: 178 | is-primitive "^2.0.0" 179 | 180 | is-extendable@^0.1.1: 181 | version "0.1.1" 182 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 183 | integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= 184 | 185 | is-extglob@^1.0.0: 186 | version "1.0.0" 187 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 188 | integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= 189 | 190 | is-glob@^2.0.0, is-glob@^2.0.1: 191 | version "2.0.1" 192 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 193 | integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= 194 | dependencies: 195 | is-extglob "^1.0.0" 196 | 197 | is-number@^2.1.0: 198 | version "2.1.0" 199 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 200 | integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= 201 | dependencies: 202 | kind-of "^3.0.2" 203 | 204 | is-number@^3.0.0: 205 | version "3.0.0" 206 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 207 | integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= 208 | dependencies: 209 | kind-of "^3.0.2" 210 | 211 | is-posix-bracket@^0.1.0: 212 | version "0.1.1" 213 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 214 | integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= 215 | 216 | is-primitive@^2.0.0: 217 | version "2.0.0" 218 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 219 | integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= 220 | 221 | isarray@1.0.0: 222 | version "1.0.0" 223 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 224 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 225 | 226 | isobject@^2.0.0: 227 | version "2.1.0" 228 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 229 | integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= 230 | dependencies: 231 | isarray "1.0.0" 232 | 233 | kind-of@^3.0.2: 234 | version "3.2.2" 235 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 236 | integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= 237 | dependencies: 238 | is-buffer "^1.1.5" 239 | 240 | kind-of@^4.0.0: 241 | version "4.0.0" 242 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 243 | integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= 244 | dependencies: 245 | is-buffer "^1.1.5" 246 | 247 | kleur@^2.0.1: 248 | version "2.0.2" 249 | resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.2.tgz#b704f4944d95e255d038f0cb05fb8a602c55a300" 250 | integrity sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ== 251 | 252 | magic-string@^0.25.1: 253 | version "0.25.1" 254 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.1.tgz#b1c248b399cd7485da0fe7385c2fc7011843266e" 255 | integrity sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg== 256 | dependencies: 257 | sourcemap-codec "^1.4.1" 258 | 259 | micromatch@^2.3.11: 260 | version "2.3.11" 261 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 262 | integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= 263 | dependencies: 264 | arr-diff "^2.0.0" 265 | array-unique "^0.2.1" 266 | braces "^1.8.2" 267 | expand-brackets "^0.1.4" 268 | extglob "^0.3.1" 269 | filename-regex "^2.0.0" 270 | is-extglob "^1.0.0" 271 | is-glob "^2.0.1" 272 | kind-of "^3.0.2" 273 | normalize-path "^2.0.1" 274 | object.omit "^2.0.0" 275 | parse-glob "^3.0.4" 276 | regex-cache "^0.4.2" 277 | 278 | minimatch@^3.0.4: 279 | version "3.0.4" 280 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 281 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 282 | dependencies: 283 | brace-expansion "^1.1.7" 284 | 285 | mri@^1.1.0: 286 | version "1.1.0" 287 | resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.0.tgz#5c0a3f29c8ccffbbb1ec941dcec09d71fa32f36a" 288 | integrity sha1-XAo/KcjM/7ux7JQdzsCdcfoy82o= 289 | 290 | normalize-path@^2.0.1: 291 | version "2.1.1" 292 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 293 | integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= 294 | dependencies: 295 | remove-trailing-separator "^1.0.1" 296 | 297 | object.omit@^2.0.0: 298 | version "2.0.1" 299 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 300 | integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= 301 | dependencies: 302 | for-own "^0.1.4" 303 | is-extendable "^0.1.1" 304 | 305 | once@^1.3.0: 306 | version "1.4.0" 307 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 308 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 309 | dependencies: 310 | wrappy "1" 311 | 312 | pad-right@^0.2.2: 313 | version "0.2.2" 314 | resolved "https://registry.yarnpkg.com/pad-right/-/pad-right-0.2.2.tgz#6fbc924045d244f2a2a244503060d3bfc6009774" 315 | integrity sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q= 316 | dependencies: 317 | repeat-string "^1.5.2" 318 | 319 | parse-glob@^3.0.4: 320 | version "3.0.4" 321 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 322 | integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= 323 | dependencies: 324 | glob-base "^0.3.0" 325 | is-dotfile "^1.0.0" 326 | is-extglob "^1.0.0" 327 | is-glob "^2.0.0" 328 | 329 | path-is-absolute@^1.0.0: 330 | version "1.0.1" 331 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 332 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 333 | 334 | preserve@^0.2.0: 335 | version "0.2.0" 336 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 337 | integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= 338 | 339 | prompts@^1.2.0: 340 | version "1.2.0" 341 | resolved "https://registry.yarnpkg.com/prompts/-/prompts-1.2.0.tgz#598f7722032fb6c399beb24533129d00604c7007" 342 | integrity sha512-g+I6Cer6EefDTawQhGHpdX98nhD7KQrRqyRgKCb+Sc+GG4P64EWRe5DZE402ZNkwrItf97Asf0L1z0g3waOgAA== 343 | dependencies: 344 | kleur "^2.0.1" 345 | sisteransi "^1.0.0" 346 | 347 | randomatic@^1.1.3: 348 | version "1.1.7" 349 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" 350 | integrity sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how== 351 | dependencies: 352 | is-number "^3.0.0" 353 | kind-of "^4.0.0" 354 | 355 | regex-cache@^0.4.2: 356 | version "0.4.4" 357 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" 358 | integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== 359 | dependencies: 360 | is-equal-shallow "^0.1.3" 361 | 362 | remove-trailing-separator@^1.0.1: 363 | version "1.1.0" 364 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 365 | integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= 366 | 367 | repeat-element@^1.1.2: 368 | version "1.1.2" 369 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 370 | integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo= 371 | 372 | repeat-string@^1.5.2: 373 | version "1.6.1" 374 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 375 | integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= 376 | 377 | rollup-plugin-json@^3.1.0: 378 | version "3.1.0" 379 | resolved "https://registry.yarnpkg.com/rollup-plugin-json/-/rollup-plugin-json-3.1.0.tgz#7c1daf60c46bc21021ea016bd00863561a03321b" 380 | integrity sha512-BlYk5VspvGpjz7lAwArVzBXR60JK+4EKtPkCHouAWg39obk9S61hZYJDBfMK+oitPdoe11i69TlxKlMQNFC/Uw== 381 | dependencies: 382 | rollup-pluginutils "^2.3.1" 383 | 384 | rollup-pluginutils@^2.3.1: 385 | version "2.3.3" 386 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz#3aad9b1eb3e7fe8262820818840bf091e5ae6794" 387 | integrity sha512-2XZwja7b6P5q4RZ5FhyX1+f46xi1Z3qBKigLRZ6VTZjwbN0K1IFGMlwm06Uu0Emcre2Z63l77nq/pzn+KxIEoA== 388 | dependencies: 389 | estree-walker "^0.5.2" 390 | micromatch "^2.3.11" 391 | 392 | rollup@^0.67.0: 393 | version "0.67.0" 394 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.67.0.tgz#16d4f259c55224dded6408e7666b7731500797a3" 395 | integrity sha512-p34buXxArhwv9ieTdHvdhdo65Cbig68s/Z8llbZuiX5e+3zCqnBF02Ck9IH0tECrmvvrJVMws32Ry84hTnS1Tw== 396 | dependencies: 397 | "@types/estree" "0.0.39" 398 | "@types/node" "*" 399 | 400 | sade@^1.4.1: 401 | version "1.4.1" 402 | resolved "https://registry.yarnpkg.com/sade/-/sade-1.4.1.tgz#80c6dfd3c03db1fbcd6bc10c0eb52f71e7cadc01" 403 | integrity sha512-r2S6GwNeYFYx02w2SYUfhYI9PzxdfNWxsX1QpI3Z4rK9bu9K3FtNVg2awp54Y9iivcYqR2iWqI3nT5jEihNyBg== 404 | dependencies: 405 | mri "^1.1.0" 406 | pad-right "^0.2.2" 407 | 408 | sisteransi@^1.0.0: 409 | version "1.0.0" 410 | resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz#77d9622ff909080f1c19e5f4a1df0c1b0a27b88c" 411 | integrity sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ== 412 | 413 | sourcemap-codec@^1.4.1: 414 | version "1.4.1" 415 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.1.tgz#c8fd92d91889e902a07aee392bdd2c5863958ba2" 416 | integrity sha512-hX1eNBNuilj8yfFnECh0DzLgwKpBLMIvmhgEhixXNui8lMLBInTI8Kyxt++RwJnMNu7cAUo635L2+N1TxMJCzA== 417 | 418 | svelte@1: 419 | version "1.64.1" 420 | resolved "https://registry.yarnpkg.com/svelte/-/svelte-1.64.1.tgz#03c97e204e0277c1430f429a6755ca425852e5de" 421 | integrity sha512-RsEAcVYF90Bq5y4Lgg56LyKiuxiyDTU+5TG2GM0ppa50z446de0vQgnA3eQTrgecPdRR89ZIqNqN1cgdAdO7wQ== 422 | 423 | tape-modern@^1.1.1: 424 | version "1.1.1" 425 | resolved "https://registry.yarnpkg.com/tape-modern/-/tape-modern-1.1.1.tgz#32189f709740672dc4ca965489208caba983986e" 426 | integrity sha512-sb1PNwSlphD2t5z9diUO7dd+r25sfdw94wD3yyi1Dcmu7oJ6wKMGdZ/pB6OZ0jqm0oAEESL4iOHeiCqnHhc1dg== 427 | 428 | turbocolor@^2.6.1: 429 | version "2.6.1" 430 | resolved "https://registry.yarnpkg.com/turbocolor/-/turbocolor-2.6.1.tgz#1b47dcc0e0e5171f57d954351fb80a5088a8a921" 431 | integrity sha512-0pTvPfKBIasx7C4bEorJY9I3SNbkyQrFeRxK8iMoarEHZLQLOhPungv9t/7SSfKLJdErhv4dC2GKmaNGURnk4A== 432 | 433 | wrappy@1: 434 | version "1.0.2" 435 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 436 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 437 | --------------------------------------------------------------------------------