├── .gitignore
├── .npmignore
├── demo
├── .gitignore
├── README.md
├── appveyor.yml
├── cypress.json
├── cypress
│ ├── fixtures
│ │ └── example.json
│ ├── integration
│ │ └── spec.js
│ ├── plugins
│ │ └── index.js
│ └── support
│ │ ├── commands.js
│ │ └── index.js
├── package-lock.json
├── package.json
├── rollup.config.js
├── src
│ ├── client.js
│ ├── codeMirrorPlugins.js
│ ├── components
│ │ └── Nav.svelte
│ ├── routes
│ │ ├── _error.svelte
│ │ ├── _layout.svelte
│ │ └── index.svelte
│ ├── server.js
│ ├── service-worker.js
│ └── template.html
└── static
│ ├── favicon.png
│ ├── global.css
│ ├── great-success.png
│ ├── logo-192.png
│ ├── logo-512.png
│ └── manifest.json
├── index.js
├── index.mjs
├── package-lock.json
├── package.json
├── rollup.config.js
└── src
└── CodeMirror.svelte
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | example-bak
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | example
--------------------------------------------------------------------------------
/demo/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | /node_modules/
3 | /src/node_modules/@sapper/
4 | yarn-error.log
5 | /cypress/screenshots/
6 | /__sapper__/
7 |
--------------------------------------------------------------------------------
/demo/README.md:
--------------------------------------------------------------------------------
1 | # sapper-template
2 |
3 | The default [Sapper](https://github.com/sveltejs/sapper) template, with branches for Rollup and webpack. To clone it and get started:
4 |
5 | ```bash
6 | # for Rollup
7 | npx degit "sveltejs/sapper-template#rollup" my-app
8 | # for webpack
9 | npx degit "sveltejs/sapper-template#webpack" my-app
10 | cd my-app
11 | npm install # or yarn!
12 | npm run dev
13 | ```
14 |
15 | Open up [localhost:3000](http://localhost:3000) and start clicking around.
16 |
17 | Consult [sapper.svelte.dev](https://sapper.svelte.dev) for help getting started.
18 |
19 |
20 | ## Structure
21 |
22 | Sapper expects to find two directories in the root of your project — `src` and `static`.
23 |
24 |
25 | ### src
26 |
27 | The [src](src) directory contains the entry points for your app — `client.js`, `server.js` and (optionally) a `service-worker.js` — along with a `template.html` file and a `routes` directory.
28 |
29 |
30 | #### src/routes
31 |
32 | This is the heart of your Sapper app. There are two kinds of routes — *pages*, and *server routes*.
33 |
34 | **Pages** are Svelte components written in `.svelte` files. When a user first visits the application, they will be served a server-rendered version of the route in question, plus some JavaScript that 'hydrates' the page and initialises a client-side router. From that point forward, navigating to other pages is handled entirely on the client for a fast, app-like feel. (Sapper will preload and cache the code for these subsequent pages, so that navigation is instantaneous.)
35 |
36 | **Server routes** are modules written in `.js` files, that export functions corresponding to HTTP methods. Each function receives Express `request` and `response` objects as arguments, plus a `next` function. This is useful for creating a JSON API, for example.
37 |
38 | There are three simple rules for naming the files that define your routes:
39 |
40 | * A file called `src/routes/about.svelte` corresponds to the `/about` route. A file called `src/routes/blog/[slug].svelte` corresponds to the `/blog/:slug` route, in which case `params.slug` is available to the route
41 | * The file `src/routes/index.svelte` (or `src/routes/index.js`) corresponds to the root of your app. `src/routes/about/index.svelte` is treated the same as `src/routes/about.svelte`.
42 | * Files and directories with a leading underscore do *not* create routes. This allows you to colocate helper modules and components with the routes that depend on them — for example you could have a file called `src/routes/_helpers/datetime.js` and it would *not* create a `/_helpers/datetime` route
43 |
44 |
45 | ### static
46 |
47 | The [static](static) directory contains any static assets that should be available. These are served using [sirv](https://github.com/lukeed/sirv).
48 |
49 | In your [service-worker.js](app/service-worker.js) file, you can import these as `files` from the generated manifest...
50 |
51 | ```js
52 | import { files } from '@sapper/service-worker';
53 | ```
54 |
55 | ...so that you can cache them (though you can choose not to, for example if you don't want to cache very large files).
56 |
57 |
58 | ## Bundler config
59 |
60 | Sapper uses Rollup or webpack to provide code-splitting and dynamic imports, as well as compiling your Svelte components. With webpack, it also provides hot module reloading. As long as you don't do anything daft, you can edit the configuration files to add whatever plugins you'd like.
61 |
62 |
63 | ## Production mode and deployment
64 |
65 | To start a production version of your app, run `npm run build && npm start`. This will disable live reloading, and activate the appropriate bundler plugins.
66 |
67 | You can deploy your application to any environment that supports Node 8 or above. As an example, to deploy to [Now](https://zeit.co/now), run these commands:
68 |
69 | ```bash
70 | npm install -g now
71 | now
72 | ```
73 |
74 |
75 | ## Using external components with webpack
76 |
77 | When using Svelte components installed from npm, such as [@sveltejs/svelte-virtual-list](https://github.com/sveltejs/svelte-virtual-list), Svelte needs the original component source (rather than any precompiled JavaScript that ships with the component). This allows the component to be rendered server-side, and also keeps your client-side app smaller.
78 |
79 | Because of that, it's essential that webpack doesn't treat the package as an *external dependency*. You can either modify the `externals` option under `server` in [webpack.config.js](webpack.config.js), or simply install the package to `devDependencies` rather than `dependencies`, which will cause it to get bundled (and therefore compiled) with your app:
80 |
81 | ```bash
82 | npm install -D @sveltejs/svelte-virtual-list
83 | ```
84 |
85 |
86 | ## Bugs and feedback
87 |
88 | Sapper is in early development, and may have the odd rough edge here and there. Please be vocal over on the [Sapper issue tracker](https://github.com/sveltejs/sapper/issues).
89 |
--------------------------------------------------------------------------------
/demo/appveyor.yml:
--------------------------------------------------------------------------------
1 | version: "{build}"
2 |
3 | shallow_clone: true
4 |
5 | init:
6 | - git config --global core.autocrlf false
7 |
8 | build: off
9 |
10 | environment:
11 | matrix:
12 | # node.js
13 | - nodejs_version: stable
14 |
15 | install:
16 | - ps: Install-Product node $env:nodejs_version
17 | - npm install cypress
18 | - npm install
19 |
--------------------------------------------------------------------------------
/demo/cypress.json:
--------------------------------------------------------------------------------
1 | {
2 | "baseUrl": "http://localhost:3000",
3 | "video": false
4 | }
--------------------------------------------------------------------------------
/demo/cypress/fixtures/example.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Using fixtures to represent data",
3 | "email": "hello@cypress.io",
4 | "body": "Fixtures are a great way to mock data for responses to routes"
5 | }
--------------------------------------------------------------------------------
/demo/cypress/integration/spec.js:
--------------------------------------------------------------------------------
1 | describe('Sapper template app', () => {
2 | beforeEach(() => {
3 | cy.visit('/')
4 | });
5 |
6 | it('has the correct
', () => {
7 | cy.contains('h1', 'Great success!')
8 | });
9 |
10 | it('navigates to /about', () => {
11 | cy.get('nav a').contains('about').click();
12 | cy.url().should('include', '/about');
13 | });
14 |
15 | it('navigates to /blog', () => {
16 | cy.get('nav a').contains('blog').click();
17 | cy.url().should('include', '/blog');
18 | });
19 | });
--------------------------------------------------------------------------------
/demo/cypress/plugins/index.js:
--------------------------------------------------------------------------------
1 | // ***********************************************************
2 | // This example plugins/index.js can be used to load plugins
3 | //
4 | // You can change the location of this file or turn off loading
5 | // the plugins file with the 'pluginsFile' configuration option.
6 | //
7 | // You can read more here:
8 | // https://on.cypress.io/plugins-guide
9 | // ***********************************************************
10 |
11 | // This function is called when a project is opened or re-opened (e.g. due to
12 | // the project's config changing)
13 |
14 | module.exports = (on, config) => {
15 | // `on` is used to hook into various events Cypress emits
16 | // `config` is the resolved Cypress config
17 | }
18 |
--------------------------------------------------------------------------------
/demo/cypress/support/commands.js:
--------------------------------------------------------------------------------
1 | // ***********************************************
2 | // This example commands.js shows you how to
3 | // create various custom commands and overwrite
4 | // existing commands.
5 | //
6 | // For more comprehensive examples of custom
7 | // commands please read more here:
8 | // https://on.cypress.io/custom-commands
9 | // ***********************************************
10 | //
11 | //
12 | // -- This is a parent command --
13 | // Cypress.Commands.add("login", (email, password) => { ... })
14 | //
15 | //
16 | // -- This is a child command --
17 | // Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... })
18 | //
19 | //
20 | // -- This is a dual command --
21 | // Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... })
22 | //
23 | //
24 | // -- This is will overwrite an existing command --
25 | // Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
26 |
--------------------------------------------------------------------------------
/demo/cypress/support/index.js:
--------------------------------------------------------------------------------
1 | // ***********************************************************
2 | // This example support/index.js is processed and
3 | // loaded automatically before your test files.
4 | //
5 | // This is a great place to put global configuration and
6 | // behavior that modifies Cypress.
7 | //
8 | // You can change the location of this file or turn off
9 | // automatically serving support files with the
10 | // 'supportFile' configuration option.
11 | //
12 | // You can read more here:
13 | // https://on.cypress.io/configuration
14 | // ***********************************************************
15 |
16 | // Import commands.js using ES2015 syntax:
17 | import './commands'
18 |
19 | // Alternatively you can use CommonJS syntax:
20 | // require('./commands')
21 |
--------------------------------------------------------------------------------
/demo/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "TODO",
3 | "version": "0.0.1",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@arr/every": {
8 | "version": "1.0.0",
9 | "resolved": "https://registry.npmjs.org/@arr/every/-/every-1.0.0.tgz",
10 | "integrity": "sha1-MU+BaPUK5IoDLP2tX9tDb0ZKl6w="
11 | },
12 | "@babel/code-frame": {
13 | "version": "7.0.0",
14 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
15 | "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
16 | "dev": true,
17 | "requires": {
18 | "@babel/highlight": "^7.0.0"
19 | }
20 | },
21 | "@babel/core": {
22 | "version": "7.4.5",
23 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.5.tgz",
24 | "integrity": "sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA==",
25 | "dev": true,
26 | "requires": {
27 | "@babel/code-frame": "^7.0.0",
28 | "@babel/generator": "^7.4.4",
29 | "@babel/helpers": "^7.4.4",
30 | "@babel/parser": "^7.4.5",
31 | "@babel/template": "^7.4.4",
32 | "@babel/traverse": "^7.4.5",
33 | "@babel/types": "^7.4.4",
34 | "convert-source-map": "^1.1.0",
35 | "debug": "^4.1.0",
36 | "json5": "^2.1.0",
37 | "lodash": "^4.17.11",
38 | "resolve": "^1.3.2",
39 | "semver": "^5.4.1",
40 | "source-map": "^0.5.0"
41 | },
42 | "dependencies": {
43 | "debug": {
44 | "version": "4.1.1",
45 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
46 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
47 | "dev": true,
48 | "requires": {
49 | "ms": "^2.1.1"
50 | }
51 | },
52 | "ms": {
53 | "version": "2.1.2",
54 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
55 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
56 | "dev": true
57 | }
58 | }
59 | },
60 | "@babel/generator": {
61 | "version": "7.4.4",
62 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz",
63 | "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==",
64 | "dev": true,
65 | "requires": {
66 | "@babel/types": "^7.4.4",
67 | "jsesc": "^2.5.1",
68 | "lodash": "^4.17.11",
69 | "source-map": "^0.5.0",
70 | "trim-right": "^1.0.1"
71 | }
72 | },
73 | "@babel/helper-annotate-as-pure": {
74 | "version": "7.0.0",
75 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz",
76 | "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==",
77 | "dev": true,
78 | "requires": {
79 | "@babel/types": "^7.0.0"
80 | }
81 | },
82 | "@babel/helper-builder-binary-assignment-operator-visitor": {
83 | "version": "7.1.0",
84 | "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz",
85 | "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==",
86 | "dev": true,
87 | "requires": {
88 | "@babel/helper-explode-assignable-expression": "^7.1.0",
89 | "@babel/types": "^7.0.0"
90 | }
91 | },
92 | "@babel/helper-call-delegate": {
93 | "version": "7.4.4",
94 | "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz",
95 | "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==",
96 | "dev": true,
97 | "requires": {
98 | "@babel/helper-hoist-variables": "^7.4.4",
99 | "@babel/traverse": "^7.4.4",
100 | "@babel/types": "^7.4.4"
101 | }
102 | },
103 | "@babel/helper-define-map": {
104 | "version": "7.4.4",
105 | "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz",
106 | "integrity": "sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg==",
107 | "dev": true,
108 | "requires": {
109 | "@babel/helper-function-name": "^7.1.0",
110 | "@babel/types": "^7.4.4",
111 | "lodash": "^4.17.11"
112 | }
113 | },
114 | "@babel/helper-explode-assignable-expression": {
115 | "version": "7.1.0",
116 | "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz",
117 | "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==",
118 | "dev": true,
119 | "requires": {
120 | "@babel/traverse": "^7.1.0",
121 | "@babel/types": "^7.0.0"
122 | }
123 | },
124 | "@babel/helper-function-name": {
125 | "version": "7.1.0",
126 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz",
127 | "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==",
128 | "dev": true,
129 | "requires": {
130 | "@babel/helper-get-function-arity": "^7.0.0",
131 | "@babel/template": "^7.1.0",
132 | "@babel/types": "^7.0.0"
133 | }
134 | },
135 | "@babel/helper-get-function-arity": {
136 | "version": "7.0.0",
137 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz",
138 | "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==",
139 | "dev": true,
140 | "requires": {
141 | "@babel/types": "^7.0.0"
142 | }
143 | },
144 | "@babel/helper-hoist-variables": {
145 | "version": "7.4.4",
146 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz",
147 | "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==",
148 | "dev": true,
149 | "requires": {
150 | "@babel/types": "^7.4.4"
151 | }
152 | },
153 | "@babel/helper-member-expression-to-functions": {
154 | "version": "7.0.0",
155 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz",
156 | "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==",
157 | "dev": true,
158 | "requires": {
159 | "@babel/types": "^7.0.0"
160 | }
161 | },
162 | "@babel/helper-module-imports": {
163 | "version": "7.0.0",
164 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz",
165 | "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==",
166 | "dev": true,
167 | "requires": {
168 | "@babel/types": "^7.0.0"
169 | }
170 | },
171 | "@babel/helper-module-transforms": {
172 | "version": "7.4.4",
173 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz",
174 | "integrity": "sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w==",
175 | "dev": true,
176 | "requires": {
177 | "@babel/helper-module-imports": "^7.0.0",
178 | "@babel/helper-simple-access": "^7.1.0",
179 | "@babel/helper-split-export-declaration": "^7.4.4",
180 | "@babel/template": "^7.4.4",
181 | "@babel/types": "^7.4.4",
182 | "lodash": "^4.17.11"
183 | }
184 | },
185 | "@babel/helper-optimise-call-expression": {
186 | "version": "7.0.0",
187 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz",
188 | "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==",
189 | "dev": true,
190 | "requires": {
191 | "@babel/types": "^7.0.0"
192 | }
193 | },
194 | "@babel/helper-plugin-utils": {
195 | "version": "7.0.0",
196 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz",
197 | "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==",
198 | "dev": true
199 | },
200 | "@babel/helper-regex": {
201 | "version": "7.4.4",
202 | "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.4.tgz",
203 | "integrity": "sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q==",
204 | "dev": true,
205 | "requires": {
206 | "lodash": "^4.17.11"
207 | }
208 | },
209 | "@babel/helper-remap-async-to-generator": {
210 | "version": "7.1.0",
211 | "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz",
212 | "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==",
213 | "dev": true,
214 | "requires": {
215 | "@babel/helper-annotate-as-pure": "^7.0.0",
216 | "@babel/helper-wrap-function": "^7.1.0",
217 | "@babel/template": "^7.1.0",
218 | "@babel/traverse": "^7.1.0",
219 | "@babel/types": "^7.0.0"
220 | }
221 | },
222 | "@babel/helper-replace-supers": {
223 | "version": "7.4.4",
224 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz",
225 | "integrity": "sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg==",
226 | "dev": true,
227 | "requires": {
228 | "@babel/helper-member-expression-to-functions": "^7.0.0",
229 | "@babel/helper-optimise-call-expression": "^7.0.0",
230 | "@babel/traverse": "^7.4.4",
231 | "@babel/types": "^7.4.4"
232 | }
233 | },
234 | "@babel/helper-simple-access": {
235 | "version": "7.1.0",
236 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz",
237 | "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==",
238 | "dev": true,
239 | "requires": {
240 | "@babel/template": "^7.1.0",
241 | "@babel/types": "^7.0.0"
242 | }
243 | },
244 | "@babel/helper-split-export-declaration": {
245 | "version": "7.4.4",
246 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz",
247 | "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==",
248 | "dev": true,
249 | "requires": {
250 | "@babel/types": "^7.4.4"
251 | }
252 | },
253 | "@babel/helper-wrap-function": {
254 | "version": "7.2.0",
255 | "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz",
256 | "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==",
257 | "dev": true,
258 | "requires": {
259 | "@babel/helper-function-name": "^7.1.0",
260 | "@babel/template": "^7.1.0",
261 | "@babel/traverse": "^7.1.0",
262 | "@babel/types": "^7.2.0"
263 | }
264 | },
265 | "@babel/helpers": {
266 | "version": "7.4.4",
267 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.4.tgz",
268 | "integrity": "sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==",
269 | "dev": true,
270 | "requires": {
271 | "@babel/template": "^7.4.4",
272 | "@babel/traverse": "^7.4.4",
273 | "@babel/types": "^7.4.4"
274 | }
275 | },
276 | "@babel/highlight": {
277 | "version": "7.0.0",
278 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
279 | "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
280 | "dev": true,
281 | "requires": {
282 | "chalk": "^2.0.0",
283 | "esutils": "^2.0.2",
284 | "js-tokens": "^4.0.0"
285 | }
286 | },
287 | "@babel/parser": {
288 | "version": "7.4.5",
289 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz",
290 | "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==",
291 | "dev": true
292 | },
293 | "@babel/plugin-proposal-async-generator-functions": {
294 | "version": "7.2.0",
295 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz",
296 | "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==",
297 | "dev": true,
298 | "requires": {
299 | "@babel/helper-plugin-utils": "^7.0.0",
300 | "@babel/helper-remap-async-to-generator": "^7.1.0",
301 | "@babel/plugin-syntax-async-generators": "^7.2.0"
302 | }
303 | },
304 | "@babel/plugin-proposal-json-strings": {
305 | "version": "7.2.0",
306 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz",
307 | "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==",
308 | "dev": true,
309 | "requires": {
310 | "@babel/helper-plugin-utils": "^7.0.0",
311 | "@babel/plugin-syntax-json-strings": "^7.2.0"
312 | }
313 | },
314 | "@babel/plugin-proposal-object-rest-spread": {
315 | "version": "7.4.4",
316 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz",
317 | "integrity": "sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g==",
318 | "dev": true,
319 | "requires": {
320 | "@babel/helper-plugin-utils": "^7.0.0",
321 | "@babel/plugin-syntax-object-rest-spread": "^7.2.0"
322 | }
323 | },
324 | "@babel/plugin-proposal-optional-catch-binding": {
325 | "version": "7.2.0",
326 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz",
327 | "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==",
328 | "dev": true,
329 | "requires": {
330 | "@babel/helper-plugin-utils": "^7.0.0",
331 | "@babel/plugin-syntax-optional-catch-binding": "^7.2.0"
332 | }
333 | },
334 | "@babel/plugin-proposal-unicode-property-regex": {
335 | "version": "7.4.4",
336 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz",
337 | "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==",
338 | "dev": true,
339 | "requires": {
340 | "@babel/helper-plugin-utils": "^7.0.0",
341 | "@babel/helper-regex": "^7.4.4",
342 | "regexpu-core": "^4.5.4"
343 | }
344 | },
345 | "@babel/plugin-syntax-async-generators": {
346 | "version": "7.2.0",
347 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz",
348 | "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==",
349 | "dev": true,
350 | "requires": {
351 | "@babel/helper-plugin-utils": "^7.0.0"
352 | }
353 | },
354 | "@babel/plugin-syntax-dynamic-import": {
355 | "version": "7.2.0",
356 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz",
357 | "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==",
358 | "dev": true,
359 | "requires": {
360 | "@babel/helper-plugin-utils": "^7.0.0"
361 | }
362 | },
363 | "@babel/plugin-syntax-json-strings": {
364 | "version": "7.2.0",
365 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz",
366 | "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==",
367 | "dev": true,
368 | "requires": {
369 | "@babel/helper-plugin-utils": "^7.0.0"
370 | }
371 | },
372 | "@babel/plugin-syntax-object-rest-spread": {
373 | "version": "7.2.0",
374 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz",
375 | "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==",
376 | "dev": true,
377 | "requires": {
378 | "@babel/helper-plugin-utils": "^7.0.0"
379 | }
380 | },
381 | "@babel/plugin-syntax-optional-catch-binding": {
382 | "version": "7.2.0",
383 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz",
384 | "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==",
385 | "dev": true,
386 | "requires": {
387 | "@babel/helper-plugin-utils": "^7.0.0"
388 | }
389 | },
390 | "@babel/plugin-transform-arrow-functions": {
391 | "version": "7.2.0",
392 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz",
393 | "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==",
394 | "dev": true,
395 | "requires": {
396 | "@babel/helper-plugin-utils": "^7.0.0"
397 | }
398 | },
399 | "@babel/plugin-transform-async-to-generator": {
400 | "version": "7.4.4",
401 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz",
402 | "integrity": "sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA==",
403 | "dev": true,
404 | "requires": {
405 | "@babel/helper-module-imports": "^7.0.0",
406 | "@babel/helper-plugin-utils": "^7.0.0",
407 | "@babel/helper-remap-async-to-generator": "^7.1.0"
408 | }
409 | },
410 | "@babel/plugin-transform-block-scoped-functions": {
411 | "version": "7.2.0",
412 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz",
413 | "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==",
414 | "dev": true,
415 | "requires": {
416 | "@babel/helper-plugin-utils": "^7.0.0"
417 | }
418 | },
419 | "@babel/plugin-transform-block-scoping": {
420 | "version": "7.4.4",
421 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz",
422 | "integrity": "sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA==",
423 | "dev": true,
424 | "requires": {
425 | "@babel/helper-plugin-utils": "^7.0.0",
426 | "lodash": "^4.17.11"
427 | }
428 | },
429 | "@babel/plugin-transform-classes": {
430 | "version": "7.4.4",
431 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz",
432 | "integrity": "sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw==",
433 | "dev": true,
434 | "requires": {
435 | "@babel/helper-annotate-as-pure": "^7.0.0",
436 | "@babel/helper-define-map": "^7.4.4",
437 | "@babel/helper-function-name": "^7.1.0",
438 | "@babel/helper-optimise-call-expression": "^7.0.0",
439 | "@babel/helper-plugin-utils": "^7.0.0",
440 | "@babel/helper-replace-supers": "^7.4.4",
441 | "@babel/helper-split-export-declaration": "^7.4.4",
442 | "globals": "^11.1.0"
443 | }
444 | },
445 | "@babel/plugin-transform-computed-properties": {
446 | "version": "7.2.0",
447 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz",
448 | "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==",
449 | "dev": true,
450 | "requires": {
451 | "@babel/helper-plugin-utils": "^7.0.0"
452 | }
453 | },
454 | "@babel/plugin-transform-destructuring": {
455 | "version": "7.4.4",
456 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz",
457 | "integrity": "sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ==",
458 | "dev": true,
459 | "requires": {
460 | "@babel/helper-plugin-utils": "^7.0.0"
461 | }
462 | },
463 | "@babel/plugin-transform-dotall-regex": {
464 | "version": "7.4.4",
465 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz",
466 | "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==",
467 | "dev": true,
468 | "requires": {
469 | "@babel/helper-plugin-utils": "^7.0.0",
470 | "@babel/helper-regex": "^7.4.4",
471 | "regexpu-core": "^4.5.4"
472 | }
473 | },
474 | "@babel/plugin-transform-duplicate-keys": {
475 | "version": "7.2.0",
476 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz",
477 | "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==",
478 | "dev": true,
479 | "requires": {
480 | "@babel/helper-plugin-utils": "^7.0.0"
481 | }
482 | },
483 | "@babel/plugin-transform-exponentiation-operator": {
484 | "version": "7.2.0",
485 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz",
486 | "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==",
487 | "dev": true,
488 | "requires": {
489 | "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0",
490 | "@babel/helper-plugin-utils": "^7.0.0"
491 | }
492 | },
493 | "@babel/plugin-transform-for-of": {
494 | "version": "7.4.4",
495 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz",
496 | "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==",
497 | "dev": true,
498 | "requires": {
499 | "@babel/helper-plugin-utils": "^7.0.0"
500 | }
501 | },
502 | "@babel/plugin-transform-function-name": {
503 | "version": "7.4.4",
504 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz",
505 | "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==",
506 | "dev": true,
507 | "requires": {
508 | "@babel/helper-function-name": "^7.1.0",
509 | "@babel/helper-plugin-utils": "^7.0.0"
510 | }
511 | },
512 | "@babel/plugin-transform-literals": {
513 | "version": "7.2.0",
514 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz",
515 | "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==",
516 | "dev": true,
517 | "requires": {
518 | "@babel/helper-plugin-utils": "^7.0.0"
519 | }
520 | },
521 | "@babel/plugin-transform-member-expression-literals": {
522 | "version": "7.2.0",
523 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz",
524 | "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==",
525 | "dev": true,
526 | "requires": {
527 | "@babel/helper-plugin-utils": "^7.0.0"
528 | }
529 | },
530 | "@babel/plugin-transform-modules-amd": {
531 | "version": "7.2.0",
532 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz",
533 | "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==",
534 | "dev": true,
535 | "requires": {
536 | "@babel/helper-module-transforms": "^7.1.0",
537 | "@babel/helper-plugin-utils": "^7.0.0"
538 | }
539 | },
540 | "@babel/plugin-transform-modules-commonjs": {
541 | "version": "7.4.4",
542 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz",
543 | "integrity": "sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw==",
544 | "dev": true,
545 | "requires": {
546 | "@babel/helper-module-transforms": "^7.4.4",
547 | "@babel/helper-plugin-utils": "^7.0.0",
548 | "@babel/helper-simple-access": "^7.1.0"
549 | }
550 | },
551 | "@babel/plugin-transform-modules-systemjs": {
552 | "version": "7.4.4",
553 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz",
554 | "integrity": "sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ==",
555 | "dev": true,
556 | "requires": {
557 | "@babel/helper-hoist-variables": "^7.4.4",
558 | "@babel/helper-plugin-utils": "^7.0.0"
559 | }
560 | },
561 | "@babel/plugin-transform-modules-umd": {
562 | "version": "7.2.0",
563 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz",
564 | "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==",
565 | "dev": true,
566 | "requires": {
567 | "@babel/helper-module-transforms": "^7.1.0",
568 | "@babel/helper-plugin-utils": "^7.0.0"
569 | }
570 | },
571 | "@babel/plugin-transform-named-capturing-groups-regex": {
572 | "version": "7.4.5",
573 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz",
574 | "integrity": "sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==",
575 | "dev": true,
576 | "requires": {
577 | "regexp-tree": "^0.1.6"
578 | }
579 | },
580 | "@babel/plugin-transform-new-target": {
581 | "version": "7.4.4",
582 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz",
583 | "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==",
584 | "dev": true,
585 | "requires": {
586 | "@babel/helper-plugin-utils": "^7.0.0"
587 | }
588 | },
589 | "@babel/plugin-transform-object-super": {
590 | "version": "7.2.0",
591 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz",
592 | "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==",
593 | "dev": true,
594 | "requires": {
595 | "@babel/helper-plugin-utils": "^7.0.0",
596 | "@babel/helper-replace-supers": "^7.1.0"
597 | }
598 | },
599 | "@babel/plugin-transform-parameters": {
600 | "version": "7.4.4",
601 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz",
602 | "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==",
603 | "dev": true,
604 | "requires": {
605 | "@babel/helper-call-delegate": "^7.4.4",
606 | "@babel/helper-get-function-arity": "^7.0.0",
607 | "@babel/helper-plugin-utils": "^7.0.0"
608 | }
609 | },
610 | "@babel/plugin-transform-property-literals": {
611 | "version": "7.2.0",
612 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz",
613 | "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==",
614 | "dev": true,
615 | "requires": {
616 | "@babel/helper-plugin-utils": "^7.0.0"
617 | }
618 | },
619 | "@babel/plugin-transform-regenerator": {
620 | "version": "7.4.5",
621 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz",
622 | "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==",
623 | "dev": true,
624 | "requires": {
625 | "regenerator-transform": "^0.14.0"
626 | }
627 | },
628 | "@babel/plugin-transform-reserved-words": {
629 | "version": "7.2.0",
630 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz",
631 | "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==",
632 | "dev": true,
633 | "requires": {
634 | "@babel/helper-plugin-utils": "^7.0.0"
635 | }
636 | },
637 | "@babel/plugin-transform-runtime": {
638 | "version": "7.4.4",
639 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.4.tgz",
640 | "integrity": "sha512-aMVojEjPszvau3NRg+TIH14ynZLvPewH4xhlCW1w6A3rkxTS1m4uwzRclYR9oS+rl/dr+kT+pzbfHuAWP/lc7Q==",
641 | "dev": true,
642 | "requires": {
643 | "@babel/helper-module-imports": "^7.0.0",
644 | "@babel/helper-plugin-utils": "^7.0.0",
645 | "resolve": "^1.8.1",
646 | "semver": "^5.5.1"
647 | }
648 | },
649 | "@babel/plugin-transform-shorthand-properties": {
650 | "version": "7.2.0",
651 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz",
652 | "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==",
653 | "dev": true,
654 | "requires": {
655 | "@babel/helper-plugin-utils": "^7.0.0"
656 | }
657 | },
658 | "@babel/plugin-transform-spread": {
659 | "version": "7.2.2",
660 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz",
661 | "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==",
662 | "dev": true,
663 | "requires": {
664 | "@babel/helper-plugin-utils": "^7.0.0"
665 | }
666 | },
667 | "@babel/plugin-transform-sticky-regex": {
668 | "version": "7.2.0",
669 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz",
670 | "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==",
671 | "dev": true,
672 | "requires": {
673 | "@babel/helper-plugin-utils": "^7.0.0",
674 | "@babel/helper-regex": "^7.0.0"
675 | }
676 | },
677 | "@babel/plugin-transform-template-literals": {
678 | "version": "7.4.4",
679 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz",
680 | "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==",
681 | "dev": true,
682 | "requires": {
683 | "@babel/helper-annotate-as-pure": "^7.0.0",
684 | "@babel/helper-plugin-utils": "^7.0.0"
685 | }
686 | },
687 | "@babel/plugin-transform-typeof-symbol": {
688 | "version": "7.2.0",
689 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz",
690 | "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==",
691 | "dev": true,
692 | "requires": {
693 | "@babel/helper-plugin-utils": "^7.0.0"
694 | }
695 | },
696 | "@babel/plugin-transform-unicode-regex": {
697 | "version": "7.4.4",
698 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz",
699 | "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==",
700 | "dev": true,
701 | "requires": {
702 | "@babel/helper-plugin-utils": "^7.0.0",
703 | "@babel/helper-regex": "^7.4.4",
704 | "regexpu-core": "^4.5.4"
705 | }
706 | },
707 | "@babel/preset-env": {
708 | "version": "7.4.5",
709 | "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.5.tgz",
710 | "integrity": "sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w==",
711 | "dev": true,
712 | "requires": {
713 | "@babel/helper-module-imports": "^7.0.0",
714 | "@babel/helper-plugin-utils": "^7.0.0",
715 | "@babel/plugin-proposal-async-generator-functions": "^7.2.0",
716 | "@babel/plugin-proposal-json-strings": "^7.2.0",
717 | "@babel/plugin-proposal-object-rest-spread": "^7.4.4",
718 | "@babel/plugin-proposal-optional-catch-binding": "^7.2.0",
719 | "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
720 | "@babel/plugin-syntax-async-generators": "^7.2.0",
721 | "@babel/plugin-syntax-json-strings": "^7.2.0",
722 | "@babel/plugin-syntax-object-rest-spread": "^7.2.0",
723 | "@babel/plugin-syntax-optional-catch-binding": "^7.2.0",
724 | "@babel/plugin-transform-arrow-functions": "^7.2.0",
725 | "@babel/plugin-transform-async-to-generator": "^7.4.4",
726 | "@babel/plugin-transform-block-scoped-functions": "^7.2.0",
727 | "@babel/plugin-transform-block-scoping": "^7.4.4",
728 | "@babel/plugin-transform-classes": "^7.4.4",
729 | "@babel/plugin-transform-computed-properties": "^7.2.0",
730 | "@babel/plugin-transform-destructuring": "^7.4.4",
731 | "@babel/plugin-transform-dotall-regex": "^7.4.4",
732 | "@babel/plugin-transform-duplicate-keys": "^7.2.0",
733 | "@babel/plugin-transform-exponentiation-operator": "^7.2.0",
734 | "@babel/plugin-transform-for-of": "^7.4.4",
735 | "@babel/plugin-transform-function-name": "^7.4.4",
736 | "@babel/plugin-transform-literals": "^7.2.0",
737 | "@babel/plugin-transform-member-expression-literals": "^7.2.0",
738 | "@babel/plugin-transform-modules-amd": "^7.2.0",
739 | "@babel/plugin-transform-modules-commonjs": "^7.4.4",
740 | "@babel/plugin-transform-modules-systemjs": "^7.4.4",
741 | "@babel/plugin-transform-modules-umd": "^7.2.0",
742 | "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5",
743 | "@babel/plugin-transform-new-target": "^7.4.4",
744 | "@babel/plugin-transform-object-super": "^7.2.0",
745 | "@babel/plugin-transform-parameters": "^7.4.4",
746 | "@babel/plugin-transform-property-literals": "^7.2.0",
747 | "@babel/plugin-transform-regenerator": "^7.4.5",
748 | "@babel/plugin-transform-reserved-words": "^7.2.0",
749 | "@babel/plugin-transform-shorthand-properties": "^7.2.0",
750 | "@babel/plugin-transform-spread": "^7.2.0",
751 | "@babel/plugin-transform-sticky-regex": "^7.2.0",
752 | "@babel/plugin-transform-template-literals": "^7.4.4",
753 | "@babel/plugin-transform-typeof-symbol": "^7.2.0",
754 | "@babel/plugin-transform-unicode-regex": "^7.4.4",
755 | "@babel/types": "^7.4.4",
756 | "browserslist": "^4.6.0",
757 | "core-js-compat": "^3.1.1",
758 | "invariant": "^2.2.2",
759 | "js-levenshtein": "^1.1.3",
760 | "semver": "^5.5.0"
761 | }
762 | },
763 | "@babel/runtime": {
764 | "version": "7.4.5",
765 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.5.tgz",
766 | "integrity": "sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==",
767 | "dev": true,
768 | "requires": {
769 | "regenerator-runtime": "^0.13.2"
770 | }
771 | },
772 | "@babel/template": {
773 | "version": "7.4.4",
774 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz",
775 | "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==",
776 | "dev": true,
777 | "requires": {
778 | "@babel/code-frame": "^7.0.0",
779 | "@babel/parser": "^7.4.4",
780 | "@babel/types": "^7.4.4"
781 | }
782 | },
783 | "@babel/traverse": {
784 | "version": "7.4.5",
785 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.5.tgz",
786 | "integrity": "sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==",
787 | "dev": true,
788 | "requires": {
789 | "@babel/code-frame": "^7.0.0",
790 | "@babel/generator": "^7.4.4",
791 | "@babel/helper-function-name": "^7.1.0",
792 | "@babel/helper-split-export-declaration": "^7.4.4",
793 | "@babel/parser": "^7.4.5",
794 | "@babel/types": "^7.4.4",
795 | "debug": "^4.1.0",
796 | "globals": "^11.1.0",
797 | "lodash": "^4.17.11"
798 | },
799 | "dependencies": {
800 | "debug": {
801 | "version": "4.1.1",
802 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
803 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
804 | "dev": true,
805 | "requires": {
806 | "ms": "^2.1.1"
807 | }
808 | },
809 | "ms": {
810 | "version": "2.1.2",
811 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
812 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
813 | "dev": true
814 | }
815 | }
816 | },
817 | "@babel/types": {
818 | "version": "7.4.4",
819 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz",
820 | "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==",
821 | "dev": true,
822 | "requires": {
823 | "esutils": "^2.0.2",
824 | "lodash": "^4.17.11",
825 | "to-fast-properties": "^2.0.0"
826 | }
827 | },
828 | "@polka/url": {
829 | "version": "0.5.0",
830 | "resolved": "https://registry.npmjs.org/@polka/url/-/url-0.5.0.tgz",
831 | "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw=="
832 | },
833 | "@types/estree": {
834 | "version": "0.0.39",
835 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
836 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
837 | "dev": true
838 | },
839 | "@types/node": {
840 | "version": "12.0.8",
841 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.8.tgz",
842 | "integrity": "sha512-b8bbUOTwzIY3V5vDTY1fIJ+ePKDUBqt2hC2woVGotdQQhG/2Sh62HOKHrT7ab+VerXAcPyAiTEipPu/FsreUtg=="
843 | },
844 | "@types/resolve": {
845 | "version": "0.0.8",
846 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz",
847 | "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==",
848 | "requires": {
849 | "@types/node": "*"
850 | }
851 | },
852 | "accepts": {
853 | "version": "1.3.7",
854 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
855 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
856 | "requires": {
857 | "mime-types": "~2.1.24",
858 | "negotiator": "0.6.2"
859 | }
860 | },
861 | "acorn": {
862 | "version": "6.1.1",
863 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz",
864 | "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==",
865 | "dev": true
866 | },
867 | "ansi-styles": {
868 | "version": "3.2.1",
869 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
870 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
871 | "dev": true,
872 | "requires": {
873 | "color-convert": "^1.9.0"
874 | }
875 | },
876 | "array-filter": {
877 | "version": "0.0.1",
878 | "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
879 | "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
880 | "dev": true
881 | },
882 | "array-map": {
883 | "version": "0.0.0",
884 | "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
885 | "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
886 | "dev": true
887 | },
888 | "array-reduce": {
889 | "version": "0.0.0",
890 | "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
891 | "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
892 | "dev": true
893 | },
894 | "balanced-match": {
895 | "version": "1.0.0",
896 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
897 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
898 | "dev": true
899 | },
900 | "brace-expansion": {
901 | "version": "1.1.11",
902 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
903 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
904 | "dev": true,
905 | "requires": {
906 | "balanced-match": "^1.0.0",
907 | "concat-map": "0.0.1"
908 | }
909 | },
910 | "browserslist": {
911 | "version": "4.6.3",
912 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.3.tgz",
913 | "integrity": "sha512-CNBqTCq22RKM8wKJNowcqihHJ4SkI8CGeK7KOR9tPboXUuS5Zk5lQgzzTbs4oxD8x+6HUshZUa2OyNI9lR93bQ==",
914 | "dev": true,
915 | "requires": {
916 | "caniuse-lite": "^1.0.30000975",
917 | "electron-to-chromium": "^1.3.164",
918 | "node-releases": "^1.1.23"
919 | }
920 | },
921 | "buffer-from": {
922 | "version": "1.1.1",
923 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
924 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
925 | "dev": true
926 | },
927 | "builtin-modules": {
928 | "version": "3.1.0",
929 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz",
930 | "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw=="
931 | },
932 | "bytes": {
933 | "version": "3.0.0",
934 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
935 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
936 | },
937 | "camel-case": {
938 | "version": "3.0.0",
939 | "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
940 | "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
941 | "dev": true,
942 | "requires": {
943 | "no-case": "^2.2.0",
944 | "upper-case": "^1.1.1"
945 | }
946 | },
947 | "caniuse-lite": {
948 | "version": "1.0.30000975",
949 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000975.tgz",
950 | "integrity": "sha512-ZsXA9YWQX6ATu5MNg+Vx/cMQ+hM6vBBSqDeJs8ruk9z0ky4yIHML15MoxcFt088ST2uyjgqyUGRJButkptWf0w==",
951 | "dev": true
952 | },
953 | "chalk": {
954 | "version": "2.4.2",
955 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
956 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
957 | "dev": true,
958 | "requires": {
959 | "ansi-styles": "^3.2.1",
960 | "escape-string-regexp": "^1.0.5",
961 | "supports-color": "^5.3.0"
962 | }
963 | },
964 | "clean-css": {
965 | "version": "4.2.1",
966 | "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz",
967 | "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==",
968 | "dev": true,
969 | "requires": {
970 | "source-map": "~0.6.0"
971 | },
972 | "dependencies": {
973 | "source-map": {
974 | "version": "0.6.1",
975 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
976 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
977 | "dev": true
978 | }
979 | }
980 | },
981 | "codemirror": {
982 | "version": "5.47.0",
983 | "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.47.0.tgz",
984 | "integrity": "sha512-kV49Fr+NGFHFc/Imsx6g180hSlkGhuHxTSDDmDHOuyln0MQYFLixDY4+bFkBVeCEiepYfDimAF/e++9jPJk4QA=="
985 | },
986 | "color-convert": {
987 | "version": "1.9.3",
988 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
989 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
990 | "dev": true,
991 | "requires": {
992 | "color-name": "1.1.3"
993 | }
994 | },
995 | "color-name": {
996 | "version": "1.1.3",
997 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
998 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
999 | "dev": true
1000 | },
1001 | "commander": {
1002 | "version": "2.20.0",
1003 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
1004 | "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
1005 | "dev": true
1006 | },
1007 | "compressible": {
1008 | "version": "2.0.17",
1009 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz",
1010 | "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==",
1011 | "requires": {
1012 | "mime-db": ">= 1.40.0 < 2"
1013 | }
1014 | },
1015 | "compression": {
1016 | "version": "1.7.4",
1017 | "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
1018 | "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
1019 | "requires": {
1020 | "accepts": "~1.3.5",
1021 | "bytes": "3.0.0",
1022 | "compressible": "~2.0.16",
1023 | "debug": "2.6.9",
1024 | "on-headers": "~1.0.2",
1025 | "safe-buffer": "5.1.2",
1026 | "vary": "~1.1.2"
1027 | }
1028 | },
1029 | "concat-map": {
1030 | "version": "0.0.1",
1031 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1032 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
1033 | "dev": true
1034 | },
1035 | "convert-source-map": {
1036 | "version": "1.6.0",
1037 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
1038 | "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
1039 | "dev": true,
1040 | "requires": {
1041 | "safe-buffer": "~5.1.1"
1042 | }
1043 | },
1044 | "core-js-compat": {
1045 | "version": "3.1.4",
1046 | "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.1.4.tgz",
1047 | "integrity": "sha512-Z5zbO9f1d0YrJdoaQhphVAnKPimX92D6z8lCGphH89MNRxlL1prI9ExJPqVwP0/kgkQCv8c4GJGT8X16yUncOg==",
1048 | "dev": true,
1049 | "requires": {
1050 | "browserslist": "^4.6.2",
1051 | "core-js-pure": "3.1.4",
1052 | "semver": "^6.1.1"
1053 | },
1054 | "dependencies": {
1055 | "semver": {
1056 | "version": "6.1.1",
1057 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz",
1058 | "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==",
1059 | "dev": true
1060 | }
1061 | }
1062 | },
1063 | "core-js-pure": {
1064 | "version": "3.1.4",
1065 | "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.1.4.tgz",
1066 | "integrity": "sha512-uJ4Z7iPNwiu1foygbcZYJsJs1jiXrTTCvxfLDXNhI/I+NHbSIEyr548y4fcsCEyWY0XgfAG/qqaunJ1SThHenA==",
1067 | "dev": true
1068 | },
1069 | "core-util-is": {
1070 | "version": "1.0.2",
1071 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
1072 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
1073 | "dev": true
1074 | },
1075 | "cross-spawn": {
1076 | "version": "6.0.5",
1077 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
1078 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
1079 | "dev": true,
1080 | "requires": {
1081 | "nice-try": "^1.0.4",
1082 | "path-key": "^2.0.1",
1083 | "semver": "^5.5.0",
1084 | "shebang-command": "^1.2.0",
1085 | "which": "^1.2.9"
1086 | }
1087 | },
1088 | "debug": {
1089 | "version": "2.6.9",
1090 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1091 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1092 | "requires": {
1093 | "ms": "2.0.0"
1094 | }
1095 | },
1096 | "define-properties": {
1097 | "version": "1.1.3",
1098 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
1099 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
1100 | "dev": true,
1101 | "requires": {
1102 | "object-keys": "^1.0.12"
1103 | }
1104 | },
1105 | "electron-to-chromium": {
1106 | "version": "1.3.164",
1107 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.164.tgz",
1108 | "integrity": "sha512-VLlalqUeduN4+fayVtRZvGP2Hl1WrRxlwzh2XVVMJym3IFrQUS29BFQ1GP/BxOJXJI1OFCrJ5BnFEsAe8NHtOg==",
1109 | "dev": true
1110 | },
1111 | "error-ex": {
1112 | "version": "1.3.2",
1113 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
1114 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
1115 | "dev": true,
1116 | "requires": {
1117 | "is-arrayish": "^0.2.1"
1118 | }
1119 | },
1120 | "es-abstract": {
1121 | "version": "1.13.0",
1122 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
1123 | "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
1124 | "dev": true,
1125 | "requires": {
1126 | "es-to-primitive": "^1.2.0",
1127 | "function-bind": "^1.1.1",
1128 | "has": "^1.0.3",
1129 | "is-callable": "^1.1.4",
1130 | "is-regex": "^1.0.4",
1131 | "object-keys": "^1.0.12"
1132 | }
1133 | },
1134 | "es-to-primitive": {
1135 | "version": "1.2.0",
1136 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
1137 | "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
1138 | "dev": true,
1139 | "requires": {
1140 | "is-callable": "^1.1.4",
1141 | "is-date-object": "^1.0.1",
1142 | "is-symbol": "^1.0.2"
1143 | }
1144 | },
1145 | "escape-string-regexp": {
1146 | "version": "1.0.5",
1147 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1148 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
1149 | "dev": true
1150 | },
1151 | "estree-walker": {
1152 | "version": "0.6.1",
1153 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
1154 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w=="
1155 | },
1156 | "esutils": {
1157 | "version": "2.0.2",
1158 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
1159 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
1160 | "dev": true
1161 | },
1162 | "function-bind": {
1163 | "version": "1.1.1",
1164 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1165 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1166 | "dev": true
1167 | },
1168 | "globals": {
1169 | "version": "11.12.0",
1170 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
1171 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
1172 | "dev": true
1173 | },
1174 | "graceful-fs": {
1175 | "version": "4.1.15",
1176 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
1177 | "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
1178 | "dev": true
1179 | },
1180 | "has": {
1181 | "version": "1.0.3",
1182 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1183 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1184 | "dev": true,
1185 | "requires": {
1186 | "function-bind": "^1.1.1"
1187 | }
1188 | },
1189 | "has-flag": {
1190 | "version": "3.0.0",
1191 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1192 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
1193 | "dev": true
1194 | },
1195 | "has-symbols": {
1196 | "version": "1.0.0",
1197 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
1198 | "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
1199 | "dev": true
1200 | },
1201 | "he": {
1202 | "version": "1.2.0",
1203 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
1204 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
1205 | "dev": true
1206 | },
1207 | "hosted-git-info": {
1208 | "version": "2.7.1",
1209 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
1210 | "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
1211 | "dev": true
1212 | },
1213 | "html-minifier": {
1214 | "version": "4.0.0",
1215 | "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz",
1216 | "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==",
1217 | "dev": true,
1218 | "requires": {
1219 | "camel-case": "^3.0.0",
1220 | "clean-css": "^4.2.1",
1221 | "commander": "^2.19.0",
1222 | "he": "^1.2.0",
1223 | "param-case": "^2.1.1",
1224 | "relateurl": "^0.2.7",
1225 | "uglify-js": "^3.5.1"
1226 | }
1227 | },
1228 | "http-link-header": {
1229 | "version": "1.0.2",
1230 | "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.0.2.tgz",
1231 | "integrity": "sha512-z6YOZ8ZEnejkcCWlGZzYXNa6i+ZaTfiTg3WhlV/YvnNya3W/RbX1bMVUMTuCrg/DrtTCQxaFCkXCz4FtLpcebg==",
1232 | "dev": true
1233 | },
1234 | "inherits": {
1235 | "version": "2.0.3",
1236 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
1237 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
1238 | "dev": true
1239 | },
1240 | "invariant": {
1241 | "version": "2.2.4",
1242 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
1243 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
1244 | "dev": true,
1245 | "requires": {
1246 | "loose-envify": "^1.0.0"
1247 | }
1248 | },
1249 | "is-arrayish": {
1250 | "version": "0.2.1",
1251 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
1252 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
1253 | "dev": true
1254 | },
1255 | "is-callable": {
1256 | "version": "1.1.4",
1257 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
1258 | "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
1259 | "dev": true
1260 | },
1261 | "is-date-object": {
1262 | "version": "1.0.1",
1263 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
1264 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
1265 | "dev": true
1266 | },
1267 | "is-module": {
1268 | "version": "1.0.0",
1269 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
1270 | "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE="
1271 | },
1272 | "is-regex": {
1273 | "version": "1.0.4",
1274 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
1275 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
1276 | "dev": true,
1277 | "requires": {
1278 | "has": "^1.0.1"
1279 | }
1280 | },
1281 | "is-symbol": {
1282 | "version": "1.0.2",
1283 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
1284 | "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
1285 | "dev": true,
1286 | "requires": {
1287 | "has-symbols": "^1.0.0"
1288 | }
1289 | },
1290 | "isarray": {
1291 | "version": "1.0.0",
1292 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1293 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
1294 | "dev": true
1295 | },
1296 | "isexe": {
1297 | "version": "2.0.0",
1298 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1299 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1300 | "dev": true
1301 | },
1302 | "jest-worker": {
1303 | "version": "24.6.0",
1304 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz",
1305 | "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==",
1306 | "dev": true,
1307 | "requires": {
1308 | "merge-stream": "^1.0.1",
1309 | "supports-color": "^6.1.0"
1310 | },
1311 | "dependencies": {
1312 | "supports-color": {
1313 | "version": "6.1.0",
1314 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
1315 | "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
1316 | "dev": true,
1317 | "requires": {
1318 | "has-flag": "^3.0.0"
1319 | }
1320 | }
1321 | }
1322 | },
1323 | "js-levenshtein": {
1324 | "version": "1.1.6",
1325 | "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
1326 | "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==",
1327 | "dev": true
1328 | },
1329 | "js-tokens": {
1330 | "version": "4.0.0",
1331 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1332 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1333 | "dev": true
1334 | },
1335 | "jsesc": {
1336 | "version": "2.5.2",
1337 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
1338 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
1339 | "dev": true
1340 | },
1341 | "json-parse-better-errors": {
1342 | "version": "1.0.2",
1343 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
1344 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
1345 | "dev": true
1346 | },
1347 | "json5": {
1348 | "version": "2.1.0",
1349 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
1350 | "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
1351 | "dev": true,
1352 | "requires": {
1353 | "minimist": "^1.2.0"
1354 | }
1355 | },
1356 | "jsonify": {
1357 | "version": "0.0.0",
1358 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
1359 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
1360 | "dev": true
1361 | },
1362 | "load-json-file": {
1363 | "version": "4.0.0",
1364 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
1365 | "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
1366 | "dev": true,
1367 | "requires": {
1368 | "graceful-fs": "^4.1.2",
1369 | "parse-json": "^4.0.0",
1370 | "pify": "^3.0.0",
1371 | "strip-bom": "^3.0.0"
1372 | }
1373 | },
1374 | "lodash": {
1375 | "version": "4.17.15",
1376 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
1377 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
1378 | "dev": true
1379 | },
1380 | "loose-envify": {
1381 | "version": "1.4.0",
1382 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
1383 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
1384 | "dev": true,
1385 | "requires": {
1386 | "js-tokens": "^3.0.0 || ^4.0.0"
1387 | }
1388 | },
1389 | "lower-case": {
1390 | "version": "1.1.4",
1391 | "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
1392 | "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
1393 | "dev": true
1394 | },
1395 | "magic-string": {
1396 | "version": "0.25.2",
1397 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz",
1398 | "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==",
1399 | "dev": true,
1400 | "requires": {
1401 | "sourcemap-codec": "^1.4.4"
1402 | }
1403 | },
1404 | "matchit": {
1405 | "version": "1.0.8",
1406 | "resolved": "https://registry.npmjs.org/matchit/-/matchit-1.0.8.tgz",
1407 | "integrity": "sha512-CwPPICzozd/ezCzpVwGYG5bMVieaapnA0vvHDQnmQ2u2vZtVLynoPmvFsZjL67hFOvTBhhpqSR0bq3uloDP/Rw==",
1408 | "requires": {
1409 | "@arr/every": "^1.0.0"
1410 | }
1411 | },
1412 | "memorystream": {
1413 | "version": "0.3.1",
1414 | "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
1415 | "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=",
1416 | "dev": true
1417 | },
1418 | "merge-stream": {
1419 | "version": "1.0.1",
1420 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
1421 | "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
1422 | "dev": true,
1423 | "requires": {
1424 | "readable-stream": "^2.0.1"
1425 | }
1426 | },
1427 | "mime": {
1428 | "version": "2.4.4",
1429 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
1430 | "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA=="
1431 | },
1432 | "mime-db": {
1433 | "version": "1.40.0",
1434 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
1435 | "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA=="
1436 | },
1437 | "mime-types": {
1438 | "version": "2.1.24",
1439 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
1440 | "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
1441 | "requires": {
1442 | "mime-db": "1.40.0"
1443 | }
1444 | },
1445 | "minimatch": {
1446 | "version": "3.0.4",
1447 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1448 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1449 | "dev": true,
1450 | "requires": {
1451 | "brace-expansion": "^1.1.7"
1452 | }
1453 | },
1454 | "minimist": {
1455 | "version": "1.2.0",
1456 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
1457 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
1458 | "dev": true
1459 | },
1460 | "ms": {
1461 | "version": "2.0.0",
1462 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1463 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
1464 | },
1465 | "negotiator": {
1466 | "version": "0.6.2",
1467 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
1468 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
1469 | },
1470 | "nice-try": {
1471 | "version": "1.0.5",
1472 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
1473 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
1474 | "dev": true
1475 | },
1476 | "no-case": {
1477 | "version": "2.3.2",
1478 | "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
1479 | "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
1480 | "dev": true,
1481 | "requires": {
1482 | "lower-case": "^1.1.1"
1483 | }
1484 | },
1485 | "node-releases": {
1486 | "version": "1.1.23",
1487 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.23.tgz",
1488 | "integrity": "sha512-uq1iL79YjfYC0WXoHbC/z28q/9pOl8kSHaXdWmAAc8No+bDwqkZbzIJz55g/MUsPgSGm9LZ7QSUbzTcH5tz47w==",
1489 | "dev": true,
1490 | "requires": {
1491 | "semver": "^5.3.0"
1492 | }
1493 | },
1494 | "normalize-package-data": {
1495 | "version": "2.5.0",
1496 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
1497 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
1498 | "dev": true,
1499 | "requires": {
1500 | "hosted-git-info": "^2.1.4",
1501 | "resolve": "^1.10.0",
1502 | "semver": "2 || 3 || 4 || 5",
1503 | "validate-npm-package-license": "^3.0.1"
1504 | }
1505 | },
1506 | "npm-run-all": {
1507 | "version": "4.1.5",
1508 | "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
1509 | "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
1510 | "dev": true,
1511 | "requires": {
1512 | "ansi-styles": "^3.2.1",
1513 | "chalk": "^2.4.1",
1514 | "cross-spawn": "^6.0.5",
1515 | "memorystream": "^0.3.1",
1516 | "minimatch": "^3.0.4",
1517 | "pidtree": "^0.3.0",
1518 | "read-pkg": "^3.0.0",
1519 | "shell-quote": "^1.6.1",
1520 | "string.prototype.padend": "^3.0.0"
1521 | }
1522 | },
1523 | "object-keys": {
1524 | "version": "1.1.1",
1525 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
1526 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
1527 | "dev": true
1528 | },
1529 | "on-headers": {
1530 | "version": "1.0.2",
1531 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
1532 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
1533 | },
1534 | "param-case": {
1535 | "version": "2.1.1",
1536 | "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
1537 | "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
1538 | "dev": true,
1539 | "requires": {
1540 | "no-case": "^2.2.0"
1541 | }
1542 | },
1543 | "parse-json": {
1544 | "version": "4.0.0",
1545 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
1546 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
1547 | "dev": true,
1548 | "requires": {
1549 | "error-ex": "^1.3.1",
1550 | "json-parse-better-errors": "^1.0.1"
1551 | }
1552 | },
1553 | "path-key": {
1554 | "version": "2.0.1",
1555 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
1556 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
1557 | "dev": true
1558 | },
1559 | "path-parse": {
1560 | "version": "1.0.6",
1561 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
1562 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
1563 | },
1564 | "path-type": {
1565 | "version": "3.0.0",
1566 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
1567 | "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
1568 | "dev": true,
1569 | "requires": {
1570 | "pify": "^3.0.0"
1571 | }
1572 | },
1573 | "pidtree": {
1574 | "version": "0.3.0",
1575 | "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz",
1576 | "integrity": "sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==",
1577 | "dev": true
1578 | },
1579 | "pify": {
1580 | "version": "3.0.0",
1581 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
1582 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
1583 | "dev": true
1584 | },
1585 | "polka": {
1586 | "version": "0.5.2",
1587 | "resolved": "https://registry.npmjs.org/polka/-/polka-0.5.2.tgz",
1588 | "integrity": "sha512-FVg3vDmCqP80tOrs+OeNlgXYmFppTXdjD5E7I4ET1NjvtNmQrb1/mJibybKkb/d4NA7YWAr1ojxuhpL3FHqdlw==",
1589 | "requires": {
1590 | "@polka/url": "^0.5.0",
1591 | "trouter": "^2.0.1"
1592 | }
1593 | },
1594 | "private": {
1595 | "version": "0.1.8",
1596 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
1597 | "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
1598 | "dev": true
1599 | },
1600 | "process-nextick-args": {
1601 | "version": "2.0.0",
1602 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
1603 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
1604 | "dev": true
1605 | },
1606 | "read-pkg": {
1607 | "version": "3.0.0",
1608 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
1609 | "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
1610 | "dev": true,
1611 | "requires": {
1612 | "load-json-file": "^4.0.0",
1613 | "normalize-package-data": "^2.3.2",
1614 | "path-type": "^3.0.0"
1615 | }
1616 | },
1617 | "readable-stream": {
1618 | "version": "2.3.6",
1619 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
1620 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
1621 | "dev": true,
1622 | "requires": {
1623 | "core-util-is": "~1.0.0",
1624 | "inherits": "~2.0.3",
1625 | "isarray": "~1.0.0",
1626 | "process-nextick-args": "~2.0.0",
1627 | "safe-buffer": "~5.1.1",
1628 | "string_decoder": "~1.1.1",
1629 | "util-deprecate": "~1.0.1"
1630 | }
1631 | },
1632 | "regenerate": {
1633 | "version": "1.4.0",
1634 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
1635 | "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
1636 | "dev": true
1637 | },
1638 | "regenerate-unicode-properties": {
1639 | "version": "8.1.0",
1640 | "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz",
1641 | "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==",
1642 | "dev": true,
1643 | "requires": {
1644 | "regenerate": "^1.4.0"
1645 | }
1646 | },
1647 | "regenerator-runtime": {
1648 | "version": "0.13.2",
1649 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz",
1650 | "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==",
1651 | "dev": true
1652 | },
1653 | "regenerator-transform": {
1654 | "version": "0.14.0",
1655 | "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.0.tgz",
1656 | "integrity": "sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w==",
1657 | "dev": true,
1658 | "requires": {
1659 | "private": "^0.1.6"
1660 | }
1661 | },
1662 | "regexp-tree": {
1663 | "version": "0.1.10",
1664 | "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.10.tgz",
1665 | "integrity": "sha512-K1qVSbcedffwuIslMwpe6vGlj+ZXRnGkvjAtFHfDZZZuEdA/h0dxljAPu9vhUo6Rrx2U2AwJ+nSQ6hK+lrP5MQ==",
1666 | "dev": true
1667 | },
1668 | "regexpu-core": {
1669 | "version": "4.5.4",
1670 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz",
1671 | "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==",
1672 | "dev": true,
1673 | "requires": {
1674 | "regenerate": "^1.4.0",
1675 | "regenerate-unicode-properties": "^8.0.2",
1676 | "regjsgen": "^0.5.0",
1677 | "regjsparser": "^0.6.0",
1678 | "unicode-match-property-ecmascript": "^1.0.4",
1679 | "unicode-match-property-value-ecmascript": "^1.1.0"
1680 | }
1681 | },
1682 | "regjsgen": {
1683 | "version": "0.5.0",
1684 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz",
1685 | "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==",
1686 | "dev": true
1687 | },
1688 | "regjsparser": {
1689 | "version": "0.6.0",
1690 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz",
1691 | "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==",
1692 | "dev": true,
1693 | "requires": {
1694 | "jsesc": "~0.5.0"
1695 | },
1696 | "dependencies": {
1697 | "jsesc": {
1698 | "version": "0.5.0",
1699 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
1700 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
1701 | "dev": true
1702 | }
1703 | }
1704 | },
1705 | "relateurl": {
1706 | "version": "0.2.7",
1707 | "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
1708 | "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
1709 | "dev": true
1710 | },
1711 | "require-relative": {
1712 | "version": "0.8.7",
1713 | "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz",
1714 | "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=",
1715 | "dev": true
1716 | },
1717 | "resolve": {
1718 | "version": "1.11.0",
1719 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz",
1720 | "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==",
1721 | "requires": {
1722 | "path-parse": "^1.0.6"
1723 | }
1724 | },
1725 | "rollup": {
1726 | "version": "1.15.6",
1727 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.15.6.tgz",
1728 | "integrity": "sha512-s3Vn3QJQ5YVFfIG4nXoG9VdL1I37IZsft+4ZyeBhxE0df1kCFz9e+4bEAbR4mKH3pvBO9e9xjdxWPhhIp0r9ow==",
1729 | "dev": true,
1730 | "requires": {
1731 | "@types/estree": "0.0.39",
1732 | "@types/node": "^12.0.8",
1733 | "acorn": "^6.1.1"
1734 | }
1735 | },
1736 | "rollup-plugin-babel": {
1737 | "version": "4.3.2",
1738 | "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.3.2.tgz",
1739 | "integrity": "sha512-KfnizE258L/4enADKX61ozfwGHoqYauvoofghFJBhFnpH9Sb9dNPpWg8QHOaAfVASUYV8w0mCx430i9z0LJoJg==",
1740 | "dev": true,
1741 | "requires": {
1742 | "@babel/helper-module-imports": "^7.0.0",
1743 | "rollup-pluginutils": "^2.3.0"
1744 | }
1745 | },
1746 | "rollup-plugin-commonjs": {
1747 | "version": "9.3.4",
1748 | "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.3.4.tgz",
1749 | "integrity": "sha512-DTZOvRoiVIHHLFBCL4pFxOaJt8pagxsVldEXBOn6wl3/V21wVaj17HFfyzTsQUuou3sZL3lEJZVWKPFblJfI6w==",
1750 | "dev": true,
1751 | "requires": {
1752 | "estree-walker": "^0.6.0",
1753 | "magic-string": "^0.25.2",
1754 | "resolve": "^1.10.0",
1755 | "rollup-pluginutils": "^2.6.0"
1756 | }
1757 | },
1758 | "rollup-plugin-node-resolve": {
1759 | "version": "4.2.4",
1760 | "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.2.4.tgz",
1761 | "integrity": "sha512-t/64I6l7fZ9BxqD3XlX4ZeO6+5RLKyfpwE2CiPNUKa+GocPlQhf/C208ou8y3AwtNsc6bjSk/8/6y/YAyxCIvw==",
1762 | "dev": true,
1763 | "requires": {
1764 | "@types/resolve": "0.0.8",
1765 | "builtin-modules": "^3.1.0",
1766 | "is-module": "^1.0.0",
1767 | "resolve": "^1.10.0"
1768 | }
1769 | },
1770 | "rollup-plugin-replace": {
1771 | "version": "2.2.0",
1772 | "resolved": "https://registry.npmjs.org/rollup-plugin-replace/-/rollup-plugin-replace-2.2.0.tgz",
1773 | "integrity": "sha512-/5bxtUPkDHyBJAKketb4NfaeZjL5yLZdeUihSfbF2PQMz+rSTEb8ARKoOl3UBT4m7/X+QOXJo3sLTcq+yMMYTA==",
1774 | "dev": true,
1775 | "requires": {
1776 | "magic-string": "^0.25.2",
1777 | "rollup-pluginutils": "^2.6.0"
1778 | }
1779 | },
1780 | "rollup-plugin-svelte": {
1781 | "version": "5.1.0",
1782 | "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-5.1.0.tgz",
1783 | "integrity": "sha512-4MRZG29dAWDpoxEs5uIHzDnYafQEOLaKIJAuDYUtFIzEm1F1IGSTlFyjd8/qk4wltlHdu6V7YfZY53+CKryhMg==",
1784 | "dev": true,
1785 | "requires": {
1786 | "require-relative": "^0.8.7",
1787 | "rollup-pluginutils": "^2.3.3",
1788 | "sourcemap-codec": "^1.4.4"
1789 | }
1790 | },
1791 | "rollup-plugin-terser": {
1792 | "version": "4.0.4",
1793 | "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-4.0.4.tgz",
1794 | "integrity": "sha512-wPANT5XKVJJ8RDUN0+wIr7UPd0lIXBo4UdJ59VmlPCtlFsE20AM+14pe+tk7YunCsWEiuzkDBY3QIkSCjtrPXg==",
1795 | "dev": true,
1796 | "requires": {
1797 | "@babel/code-frame": "^7.0.0",
1798 | "jest-worker": "^24.0.0",
1799 | "serialize-javascript": "^1.6.1",
1800 | "terser": "^3.14.1"
1801 | }
1802 | },
1803 | "rollup-pluginutils": {
1804 | "version": "2.8.1",
1805 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz",
1806 | "integrity": "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==",
1807 | "requires": {
1808 | "estree-walker": "^0.6.1"
1809 | }
1810 | },
1811 | "safe-buffer": {
1812 | "version": "5.1.2",
1813 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1814 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
1815 | },
1816 | "sapper": {
1817 | "version": "0.27.4",
1818 | "resolved": "https://registry.npmjs.org/sapper/-/sapper-0.27.4.tgz",
1819 | "integrity": "sha512-BYdiJSiyVguu2FZBbl87mn8KhSu+C8JRl7FurclXbMgpiMW7Yt74HPCcu/hXOubvvZw0kVTnzBlAGJCXZmldnA==",
1820 | "dev": true,
1821 | "requires": {
1822 | "html-minifier": "^4.0.0",
1823 | "http-link-header": "^1.0.2",
1824 | "shimport": "^1.0.0",
1825 | "sourcemap-codec": "^1.4.4",
1826 | "string-hash": "^1.1.3"
1827 | }
1828 | },
1829 | "semver": {
1830 | "version": "5.7.0",
1831 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
1832 | "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
1833 | "dev": true
1834 | },
1835 | "serialize-javascript": {
1836 | "version": "1.7.0",
1837 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz",
1838 | "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==",
1839 | "dev": true
1840 | },
1841 | "shebang-command": {
1842 | "version": "1.2.0",
1843 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
1844 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
1845 | "dev": true,
1846 | "requires": {
1847 | "shebang-regex": "^1.0.0"
1848 | }
1849 | },
1850 | "shebang-regex": {
1851 | "version": "1.0.0",
1852 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
1853 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
1854 | "dev": true
1855 | },
1856 | "shell-quote": {
1857 | "version": "1.6.1",
1858 | "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
1859 | "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
1860 | "dev": true,
1861 | "requires": {
1862 | "array-filter": "~0.0.0",
1863 | "array-map": "~0.0.0",
1864 | "array-reduce": "~0.0.0",
1865 | "jsonify": "~0.0.0"
1866 | }
1867 | },
1868 | "shimport": {
1869 | "version": "1.0.0",
1870 | "resolved": "https://registry.npmjs.org/shimport/-/shimport-1.0.0.tgz",
1871 | "integrity": "sha512-XKd+39voZT1rFR1ct+pr8sFSYAW6IvM3LeF87FrgcGHc/uSZ4GfOZVA42LE5LXFOpTWgmDC5sS8DNDtiV4Vd4Q==",
1872 | "dev": true
1873 | },
1874 | "sirv": {
1875 | "version": "0.4.2",
1876 | "resolved": "https://registry.npmjs.org/sirv/-/sirv-0.4.2.tgz",
1877 | "integrity": "sha512-dQbZnsMaIiTQPZmbGmktz+c74zt/hyrJEB4tdp2Jj0RNv9J6B/OWR5RyrZEvIn9fyh9Zlg2OlE2XzKz6wMKGAw==",
1878 | "requires": {
1879 | "@polka/url": "^0.5.0",
1880 | "mime": "^2.3.1"
1881 | }
1882 | },
1883 | "source-map": {
1884 | "version": "0.5.7",
1885 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
1886 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
1887 | "dev": true
1888 | },
1889 | "source-map-support": {
1890 | "version": "0.5.12",
1891 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz",
1892 | "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==",
1893 | "dev": true,
1894 | "requires": {
1895 | "buffer-from": "^1.0.0",
1896 | "source-map": "^0.6.0"
1897 | },
1898 | "dependencies": {
1899 | "source-map": {
1900 | "version": "0.6.1",
1901 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1902 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1903 | "dev": true
1904 | }
1905 | }
1906 | },
1907 | "sourcemap-codec": {
1908 | "version": "1.4.4",
1909 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz",
1910 | "integrity": "sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg==",
1911 | "dev": true
1912 | },
1913 | "spdx-correct": {
1914 | "version": "3.1.0",
1915 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
1916 | "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
1917 | "dev": true,
1918 | "requires": {
1919 | "spdx-expression-parse": "^3.0.0",
1920 | "spdx-license-ids": "^3.0.0"
1921 | }
1922 | },
1923 | "spdx-exceptions": {
1924 | "version": "2.2.0",
1925 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
1926 | "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
1927 | "dev": true
1928 | },
1929 | "spdx-expression-parse": {
1930 | "version": "3.0.0",
1931 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
1932 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
1933 | "dev": true,
1934 | "requires": {
1935 | "spdx-exceptions": "^2.1.0",
1936 | "spdx-license-ids": "^3.0.0"
1937 | }
1938 | },
1939 | "spdx-license-ids": {
1940 | "version": "3.0.4",
1941 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz",
1942 | "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==",
1943 | "dev": true
1944 | },
1945 | "string-hash": {
1946 | "version": "1.1.3",
1947 | "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz",
1948 | "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=",
1949 | "dev": true
1950 | },
1951 | "string.prototype.padend": {
1952 | "version": "3.0.0",
1953 | "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz",
1954 | "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=",
1955 | "dev": true,
1956 | "requires": {
1957 | "define-properties": "^1.1.2",
1958 | "es-abstract": "^1.4.3",
1959 | "function-bind": "^1.0.2"
1960 | }
1961 | },
1962 | "string_decoder": {
1963 | "version": "1.1.1",
1964 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
1965 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
1966 | "dev": true,
1967 | "requires": {
1968 | "safe-buffer": "~5.1.0"
1969 | }
1970 | },
1971 | "strip-bom": {
1972 | "version": "3.0.0",
1973 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
1974 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
1975 | "dev": true
1976 | },
1977 | "supports-color": {
1978 | "version": "5.5.0",
1979 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1980 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1981 | "dev": true,
1982 | "requires": {
1983 | "has-flag": "^3.0.0"
1984 | }
1985 | },
1986 | "svelte": {
1987 | "version": "3.5.1",
1988 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.5.1.tgz",
1989 | "integrity": "sha512-iMnuyteFGQ8Yl68G/DHTHY1sLwoAMya1eS0ZOHIm/dqn2etR8WEe8hUAoluLryde4Cft4gvMhtHV3NhE60nBmQ==",
1990 | "dev": true
1991 | },
1992 | "svelte-codemirror": {
1993 | "version": "1.2.0",
1994 | "resolved": "https://registry.npmjs.org/svelte-codemirror/-/svelte-codemirror-1.2.0.tgz",
1995 | "integrity": "sha512-SUS/eCWJJGChVEZfl49b0oN74Jtd2rUkLvhLxm0UcOyCJE9CFPKFKevqSbRUelCZ4BPD7pvMiiRFwxyvJy9ryg==",
1996 | "requires": {
1997 | "codemirror": "^5.47.0",
1998 | "rollup-plugin-node-resolve": "^5.0.3"
1999 | },
2000 | "dependencies": {
2001 | "rollup-plugin-node-resolve": {
2002 | "version": "5.0.3",
2003 | "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.0.3.tgz",
2004 | "integrity": "sha512-Mhhmf0x493xgUPEsRELnU1VM+4+WO82knWkAbZ0d2DvZQZJMbhzyQK/hqtpVscoRru1EqlK3TM1kK9ro469wPw==",
2005 | "requires": {
2006 | "@types/resolve": "0.0.8",
2007 | "builtin-modules": "^3.1.0",
2008 | "is-module": "^1.0.0",
2009 | "resolve": "^1.11.0",
2010 | "rollup-pluginutils": "^2.8.0"
2011 | }
2012 | }
2013 | }
2014 | },
2015 | "terser": {
2016 | "version": "3.17.0",
2017 | "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz",
2018 | "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==",
2019 | "dev": true,
2020 | "requires": {
2021 | "commander": "^2.19.0",
2022 | "source-map": "~0.6.1",
2023 | "source-map-support": "~0.5.10"
2024 | },
2025 | "dependencies": {
2026 | "source-map": {
2027 | "version": "0.6.1",
2028 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
2029 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
2030 | "dev": true
2031 | }
2032 | }
2033 | },
2034 | "to-fast-properties": {
2035 | "version": "2.0.0",
2036 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
2037 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
2038 | "dev": true
2039 | },
2040 | "trim-right": {
2041 | "version": "1.0.1",
2042 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
2043 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
2044 | "dev": true
2045 | },
2046 | "trouter": {
2047 | "version": "2.0.1",
2048 | "resolved": "https://registry.npmjs.org/trouter/-/trouter-2.0.1.tgz",
2049 | "integrity": "sha512-kr8SKKw94OI+xTGOkfsvwZQ8mWoikZDd2n8XZHjJVZUARZT+4/VV6cacRS6CLsH9bNm+HFIPU1Zx4CnNnb4qlQ==",
2050 | "requires": {
2051 | "matchit": "^1.0.0"
2052 | }
2053 | },
2054 | "uglify-js": {
2055 | "version": "3.6.0",
2056 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz",
2057 | "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==",
2058 | "dev": true,
2059 | "requires": {
2060 | "commander": "~2.20.0",
2061 | "source-map": "~0.6.1"
2062 | },
2063 | "dependencies": {
2064 | "source-map": {
2065 | "version": "0.6.1",
2066 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
2067 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
2068 | "dev": true
2069 | }
2070 | }
2071 | },
2072 | "unicode-canonical-property-names-ecmascript": {
2073 | "version": "1.0.4",
2074 | "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
2075 | "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
2076 | "dev": true
2077 | },
2078 | "unicode-match-property-ecmascript": {
2079 | "version": "1.0.4",
2080 | "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
2081 | "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
2082 | "dev": true,
2083 | "requires": {
2084 | "unicode-canonical-property-names-ecmascript": "^1.0.4",
2085 | "unicode-property-aliases-ecmascript": "^1.0.4"
2086 | }
2087 | },
2088 | "unicode-match-property-value-ecmascript": {
2089 | "version": "1.1.0",
2090 | "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz",
2091 | "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==",
2092 | "dev": true
2093 | },
2094 | "unicode-property-aliases-ecmascript": {
2095 | "version": "1.0.5",
2096 | "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz",
2097 | "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==",
2098 | "dev": true
2099 | },
2100 | "upper-case": {
2101 | "version": "1.1.3",
2102 | "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
2103 | "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
2104 | "dev": true
2105 | },
2106 | "util-deprecate": {
2107 | "version": "1.0.2",
2108 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2109 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
2110 | "dev": true
2111 | },
2112 | "validate-npm-package-license": {
2113 | "version": "3.0.4",
2114 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
2115 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
2116 | "dev": true,
2117 | "requires": {
2118 | "spdx-correct": "^3.0.0",
2119 | "spdx-expression-parse": "^3.0.0"
2120 | }
2121 | },
2122 | "vary": {
2123 | "version": "1.1.2",
2124 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
2125 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
2126 | },
2127 | "which": {
2128 | "version": "1.3.1",
2129 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
2130 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
2131 | "dev": true,
2132 | "requires": {
2133 | "isexe": "^2.0.0"
2134 | }
2135 | }
2136 | }
2137 | }
2138 |
--------------------------------------------------------------------------------
/demo/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "TODO",
3 | "description": "TODO",
4 | "version": "0.0.1",
5 | "scripts": {
6 | "dev": "sapper dev",
7 | "build": "sapper build --legacy",
8 | "export": "sapper export --legacy",
9 | "start": "node __sapper__/build",
10 | "cy:run": "cypress run",
11 | "cy:open": "cypress open",
12 | "test": "run-p --race dev cy:run"
13 | },
14 | "dependencies": {
15 | "compression": "^1.7.1",
16 | "polka": "^0.5.0",
17 | "sirv": "^0.4.0",
18 | "svelte-codemirror": "^1.2.0"
19 | },
20 | "devDependencies": {
21 | "npm-run-all": "^4.1.5",
22 | "sapper": "^0.27.0",
23 | "svelte": "^3.0.0",
24 | "@babel/core": "^7.0.0",
25 | "@babel/plugin-syntax-dynamic-import": "^7.0.0",
26 | "@babel/plugin-transform-runtime": "^7.0.0",
27 | "@babel/preset-env": "^7.0.0",
28 | "@babel/runtime": "^7.0.0",
29 | "rollup": "^1.0.0",
30 | "rollup-plugin-babel": "^4.0.2",
31 | "rollup-plugin-commonjs": "^9.1.6",
32 | "rollup-plugin-node-resolve": "^4.0.0",
33 | "rollup-plugin-replace": "^2.0.0",
34 | "rollup-plugin-svelte": "^5.0.1",
35 | "rollup-plugin-terser": "^4.0.4"
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/demo/rollup.config.js:
--------------------------------------------------------------------------------
1 | import resolve from 'rollup-plugin-node-resolve';
2 | import replace from 'rollup-plugin-replace';
3 | import commonjs from 'rollup-plugin-commonjs';
4 | import svelte from 'rollup-plugin-svelte';
5 | import babel from 'rollup-plugin-babel';
6 | import { terser } from 'rollup-plugin-terser';
7 | import config from 'sapper/config/rollup.js';
8 | import pkg from './package.json';
9 |
10 | const mode = process.env.NODE_ENV;
11 | const dev = mode === 'development';
12 | const legacy = !!process.env.SAPPER_LEGACY_BUILD;
13 |
14 | const onwarn = (warning, onwarn) => (warning.code === 'CIRCULAR_DEPENDENCY' && /[/\\]@sapper[/\\]/.test(warning.message)) || onwarn(warning);
15 |
16 | export default {
17 | client: {
18 | input: config.client.input(),
19 | output: config.client.output(),
20 | plugins: [
21 | replace({
22 | 'process.browser': true,
23 | 'process.env.NODE_ENV': JSON.stringify(mode)
24 | }),
25 | svelte({
26 | dev,
27 | hydratable: true,
28 | emitCss: true
29 | }),
30 | resolve({
31 | browser: true
32 | }),
33 | commonjs(),
34 |
35 | legacy && babel({
36 | extensions: ['.js', '.mjs', '.html', '.svelte'],
37 | runtimeHelpers: true,
38 | exclude: ['node_modules/@babel/**'],
39 | presets: [
40 | ['@babel/preset-env', {
41 | targets: '> 0.25%, not dead'
42 | }]
43 | ],
44 | plugins: [
45 | '@babel/plugin-syntax-dynamic-import',
46 | ['@babel/plugin-transform-runtime', {
47 | useESModules: true
48 | }]
49 | ]
50 | }),
51 |
52 | !dev && terser({
53 | module: true
54 | })
55 | ],
56 |
57 | onwarn,
58 | },
59 |
60 | server: {
61 | input: config.server.input(),
62 | output: config.server.output(),
63 | plugins: [
64 | replace({
65 | 'process.browser': false,
66 | 'process.env.NODE_ENV': JSON.stringify(mode)
67 | }),
68 | svelte({
69 | generate: 'ssr',
70 | dev
71 | }),
72 | resolve(),
73 | commonjs()
74 | ],
75 | external: Object.keys(pkg.dependencies).concat(
76 | require('module').builtinModules || Object.keys(process.binding('natives'))
77 | ),
78 |
79 | onwarn,
80 | },
81 |
82 | serviceworker: {
83 | input: config.serviceworker.input(),
84 | output: config.serviceworker.output(),
85 | plugins: [
86 | resolve(),
87 | replace({
88 | 'process.browser': true,
89 | 'process.env.NODE_ENV': JSON.stringify(mode)
90 | }),
91 | commonjs(),
92 | !dev && terser()
93 | ],
94 |
95 | onwarn,
96 | }
97 | };
98 |
--------------------------------------------------------------------------------
/demo/src/client.js:
--------------------------------------------------------------------------------
1 | import * as sapper from '@sapper/app';
2 |
3 | sapper.start({
4 | target: document.querySelector('#sapper')
5 | });
--------------------------------------------------------------------------------
/demo/src/codeMirrorPlugins.js:
--------------------------------------------------------------------------------
1 | import "codemirror/mode/javascript/javascript.js";
2 | // import 'codemirror/mode/shell/shell.js';
3 | import "codemirror/mode/handlebars/handlebars.js";
4 | import "codemirror/mode/htmlmixed/htmlmixed.js";
5 | import "codemirror/mode/xml/xml.js";
6 | import "codemirror/mode/css/css.js";
7 | import "codemirror/addon/edit/closebrackets.js";
8 | import "codemirror/addon/edit/closetag.js";
9 |
--------------------------------------------------------------------------------
/demo/src/components/Nav.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
50 |
51 |
52 |
57 |
58 |
--------------------------------------------------------------------------------
/demo/src/routes/_error.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
29 |
30 |
31 | {status}
32 |
33 |
34 | {status}
35 |
36 | {error.message}
37 |
38 | {#if dev && error.stack}
39 | {error.stack}
40 | {/if}
41 |
--------------------------------------------------------------------------------
/demo/src/routes/_layout.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/demo/src/routes/index.svelte:
--------------------------------------------------------------------------------
1 |
11 |
12 |
15 |
16 |
55 |
56 |
57 | svelte-codemirror example
58 |
59 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/demo/src/server.js:
--------------------------------------------------------------------------------
1 | import sirv from 'sirv';
2 | import polka from 'polka';
3 | import compression from 'compression';
4 | import * as sapper from '@sapper/server';
5 |
6 | const { PORT, NODE_ENV } = process.env;
7 | const dev = NODE_ENV === 'development';
8 |
9 | polka() // You can also use Express
10 | .use(
11 | compression({ threshold: 0 }),
12 | sirv('static', { dev }),
13 | sapper.middleware()
14 | )
15 | .listen(PORT, err => {
16 | if (err) console.log('error', err);
17 | });
18 |
--------------------------------------------------------------------------------
/demo/src/service-worker.js:
--------------------------------------------------------------------------------
1 | import { timestamp, files, shell, routes } from '@sapper/service-worker';
2 |
3 | const ASSETS = `cache${timestamp}`;
4 |
5 | // `shell` is an array of all the files generated by the bundler,
6 | // `files` is an array of everything in the `static` directory
7 | const to_cache = shell.concat(files);
8 | const cached = new Set(to_cache);
9 |
10 | self.addEventListener('install', event => {
11 | event.waitUntil(
12 | caches
13 | .open(ASSETS)
14 | .then(cache => cache.addAll(to_cache))
15 | .then(() => {
16 | self.skipWaiting();
17 | })
18 | );
19 | });
20 |
21 | self.addEventListener('activate', event => {
22 | event.waitUntil(
23 | caches.keys().then(async keys => {
24 | // delete old caches
25 | for (const key of keys) {
26 | if (key !== ASSETS) await caches.delete(key);
27 | }
28 |
29 | self.clients.claim();
30 | })
31 | );
32 | });
33 |
34 | self.addEventListener('fetch', event => {
35 | if (event.request.method !== 'GET' || event.request.headers.has('range')) return;
36 |
37 | const url = new URL(event.request.url);
38 |
39 | // don't try to handle e.g. data: URIs
40 | if (!url.protocol.startsWith('http')) return;
41 |
42 | // ignore dev server requests
43 | if (url.hostname === self.location.hostname && url.port !== self.location.port) return;
44 |
45 | // always serve static files and bundler-generated assets from cache
46 | if (url.host === self.location.host && cached.has(url.pathname)) {
47 | event.respondWith(caches.match(event.request));
48 | return;
49 | }
50 |
51 | // for pages, you might want to serve a shell `service-worker-index.html` file,
52 | // which Sapper has generated for you. It's not right for every
53 | // app, but if it's right for yours then uncomment this section
54 | /*
55 | if (url.origin === self.origin && routes.find(route => route.pattern.test(url.pathname))) {
56 | event.respondWith(caches.match('/service-worker-index.html'));
57 | return;
58 | }
59 | */
60 |
61 | if (event.request.cache === 'only-if-cached') return;
62 |
63 | // for everything else, try the network first, falling back to
64 | // cache if the user is offline. (If the pages never change, you
65 | // might prefer a cache-first approach to a network-first one.)
66 | event.respondWith(
67 | caches
68 | .open(`offline${timestamp}`)
69 | .then(async cache => {
70 | try {
71 | const response = await fetch(event.request);
72 | cache.put(event.request, response.clone());
73 | return response;
74 | } catch(err) {
75 | const response = await cache.match(event.request);
76 | if (response) return response;
77 |
78 | throw err;
79 | }
80 | })
81 | );
82 | });
83 |
--------------------------------------------------------------------------------
/demo/src/template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | %sapper.base%
9 |
10 |
11 |
12 |
13 |
14 |
17 | %sapper.styles%
18 |
19 |
21 | %sapper.head%
22 |
23 |
24 |
26 | %sapper.html%
27 |
28 |
31 | %sapper.scripts%
32 |
33 |
34 |
--------------------------------------------------------------------------------
/demo/static/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FormBucket/svelte-codemirror/4663471f22a4b55cf0b231502634ddf50ab4e6fe/demo/static/favicon.png
--------------------------------------------------------------------------------
/demo/static/global.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
4 | font-size: 14px;
5 | line-height: 1.5;
6 | color: #333;
7 | }
8 |
9 | h1, h2, h3, h4, h5, h6 {
10 | margin: 0 0 0.5em 0;
11 | font-weight: 400;
12 | line-height: 1.2;
13 | }
14 |
15 | h1 {
16 | font-size: 2em;
17 | }
18 |
19 | a {
20 | color: inherit;
21 | }
22 |
23 | code {
24 | font-family: menlo, inconsolata, monospace;
25 | font-size: calc(1em - 2px);
26 | color: #555;
27 | background-color: #f0f0f0;
28 | padding: 0.2em 0.4em;
29 | border-radius: 2px;
30 | }
31 |
32 | @media (min-width: 400px) {
33 | body {
34 | font-size: 16px;
35 | }
36 | }
--------------------------------------------------------------------------------
/demo/static/great-success.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FormBucket/svelte-codemirror/4663471f22a4b55cf0b231502634ddf50ab4e6fe/demo/static/great-success.png
--------------------------------------------------------------------------------
/demo/static/logo-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FormBucket/svelte-codemirror/4663471f22a4b55cf0b231502634ddf50ab4e6fe/demo/static/logo-192.png
--------------------------------------------------------------------------------
/demo/static/logo-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FormBucket/svelte-codemirror/4663471f22a4b55cf0b231502634ddf50ab4e6fe/demo/static/logo-512.png
--------------------------------------------------------------------------------
/demo/static/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "background_color": "#ffffff",
3 | "theme_color": "#333333",
4 | "name": "TODO",
5 | "short_name": "TODO",
6 | "display": "minimal-ui",
7 | "start_url": "/",
8 | "icons": [
9 | {
10 | "src": "logo-192.png",
11 | "sizes": "192x192",
12 | "type": "image/png"
13 | },
14 | {
15 | "src": "logo-512.png",
16 | "sizes": "512x512",
17 | "type": "image/png"
18 | }
19 | ]
20 | }
21 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | (function (global, factory) {
2 | typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3 | typeof define === 'function' && define.amd ? define(factory) :
4 | (global = global || self, global.Codemirror = factory());
5 | }(this, function () { 'use strict';
6 |
7 | function run(fn) {
8 | return fn();
9 | }
10 | function blank_object() {
11 | return Object.create(null);
12 | }
13 | function run_all(fns) {
14 | fns.forEach(run);
15 | }
16 | function custom_event(type, detail) {
17 | const e = document.createEvent('CustomEvent');
18 | e.initCustomEvent(type, false, false, detail);
19 | return e;
20 | }
21 |
22 | let current_component;
23 | function set_current_component(component) {
24 | current_component = component;
25 | }
26 | function get_current_component() {
27 | if (!current_component)
28 | throw new Error(`Function called outside component initialization`);
29 | return current_component;
30 | }
31 | function onMount(fn) {
32 | get_current_component().$$.on_mount.push(fn);
33 | }
34 | function createEventDispatcher() {
35 | const component = current_component;
36 | return (type, detail) => {
37 | const callbacks = component.$$.callbacks[type];
38 | if (callbacks) {
39 | // TODO are there situations where events could be dispatched
40 | // in a server (non-DOM) environment?
41 | const event = custom_event(type, detail);
42 | callbacks.slice().forEach(fn => {
43 | fn.call(component, event);
44 | });
45 | }
46 | };
47 | }
48 | const escaped = {
49 | '"': '"',
50 | "'": ''',
51 | '&': '&',
52 | '<': '<',
53 | '>': '>'
54 | };
55 | function escape(html) {
56 | return String(html).replace(/["'&<>]/g, match => escaped[match]);
57 | }
58 | let on_destroy;
59 | function create_ssr_component(fn) {
60 | function $$render(result, props, bindings, slots) {
61 | const parent_component = current_component;
62 | const $$ = {
63 | on_destroy,
64 | context: new Map(parent_component ? parent_component.$$.context : []),
65 | // these will be immediately discarded
66 | on_mount: [],
67 | before_render: [],
68 | after_render: [],
69 | callbacks: blank_object()
70 | };
71 | set_current_component({ $$ });
72 | const html = fn(result, props, bindings, slots);
73 | set_current_component(parent_component);
74 | return html;
75 | }
76 | return {
77 | render: (props = {}, options = {}) => {
78 | on_destroy = [];
79 | const result = { head: '', css: new Set() };
80 | const html = $$render(result, props, {}, options);
81 | run_all(on_destroy);
82 | return {
83 | html,
84 | css: {
85 | code: Array.from(result.css).map(css => css.code).join('\n'),
86 | map: null // TODO
87 | },
88 | head: result.head
89 | };
90 | },
91 | $$render
92 | };
93 | }
94 |
95 | /* src/CodeMirror.svelte generated by Svelte v3.5.1 */
96 |
97 | const css = {
98 | code: "textarea.svelte-1jpkv2x{visibility:hidden}pre.svelte-1jpkv2x{position:absolute;width:100%;height:100%;top:0;left:0;border:none;padding:4px 4px 4px 60px;resize:none;font-family:var(--font-mono);font-size:13px;line-height:1.7;user-select:none;pointer-events:none;color:#ccc;tab-size:2;-moz-tab-size:2}",
99 | map: "{\"version\":3,\"file\":\"CodeMirror.svelte\",\"sources\":[\"CodeMirror.svelte\"],\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n{#if !CodeMirror}\\n {value} \\n{/if}\\n\"],\"names\":[],\"mappings\":\"AAuME,QAAQ,eAAC,CAAC,AACR,UAAU,CAAE,MAAM,AACpB,CAAC,AAED,GAAG,eAAC,CAAC,AACH,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,GAAG,CAAE,CAAC,CACN,IAAI,CAAE,CAAC,CACP,MAAM,CAAE,IAAI,CACZ,OAAO,CAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CACzB,MAAM,CAAE,IAAI,CACZ,WAAW,CAAE,IAAI,WAAW,CAAC,CAC7B,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,GAAG,CAChB,WAAW,CAAE,IAAI,CACjB,cAAc,CAAE,IAAI,CACpB,KAAK,CAAE,IAAI,CACX,QAAQ,CAAE,CAAC,CACX,aAAa,CAAE,CAAC,AAClB,CAAC\"}"
100 | };
101 |
102 | const is_browser = typeof window !== "undefined";
103 |
104 | let codemirror_promise;
105 | let _CodeMirror;
106 |
107 | if (is_browser) {
108 | codemirror_promise = import('codemirror');
109 |
110 | codemirror_promise.then(mod => {
111 | _CodeMirror = mod.default;
112 | });
113 | }
114 |
115 | function sleep(ms) {
116 | return new Promise(fulfil => setTimeout(fulfil, ms));
117 | }
118 |
119 | const CodeMirror_1 = create_ssr_component(($$result, $$props, $$bindings, $$slots) => {
120 | const dispatch = createEventDispatcher();
121 |
122 | let { value = "", readonly = false, errorLoc = null, flex = false, lineNumbers = true, tab = true } = $$props;
123 |
124 | let w;
125 | let h;
126 | let mode;
127 |
128 | // We have to expose set and update methods, rather
129 | // than making this state-driven through props,
130 | // because it's difficult to update an editor
131 | // without resetting scroll otherwise
132 | async function set(new_value, new_mode) {
133 | if (new_mode !== mode) {
134 | await createEditor((mode = new_mode));
135 | }
136 |
137 | value = new_value;
138 | updating_externally = true;
139 | if (editor) editor.setValue(value);
140 | updating_externally = false;
141 | }
142 |
143 | function update(new_value) {
144 | value = new_value;
145 |
146 | if (editor) {
147 | const { left, top } = editor.getScrollInfo();
148 | editor.setValue((value = new_value));
149 | editor.scrollTo(left, top);
150 | }
151 | }
152 |
153 | function resize() {
154 | editor.refresh();
155 | }
156 |
157 | function focus() {
158 | editor.focus();
159 | }
160 |
161 | const modes = {
162 | js: {
163 | name: "javascript",
164 | json: false
165 | },
166 | json: {
167 | name: "javascript",
168 | json: true
169 | },
170 | svelte: {
171 | name: "handlebars",
172 | base: "text/html"
173 | }
174 | };
175 |
176 | const refs = {};
177 | let editor;
178 | let updating_externally = false;
179 | let marker;
180 | let error_line;
181 | let destroyed = false;
182 | let CodeMirror;
183 |
184 | let previous_error_line;
185 |
186 | onMount(() => {
187 | if (_CodeMirror) {
188 | CodeMirror = _CodeMirror;
189 | createEditor(mode || "svelte").then(() => {
190 | if (editor) editor.setValue(value || "");
191 | });
192 | } else {
193 | codemirror_promise.then(async mod => {
194 | CodeMirror = mod.default;
195 | await createEditor(mode || "svelte");
196 | if (editor) editor.setValue(value || "");
197 | });
198 | }
199 |
200 | return () => {
201 | destroyed = true;
202 | if (editor) editor.toTextArea();
203 | };
204 | });
205 |
206 | let first = true;
207 |
208 | async function createEditor(mode) {
209 | if (destroyed || !CodeMirror) return;
210 |
211 | if (editor) editor.toTextArea();
212 |
213 | const opts = {
214 | lineNumbers,
215 | lineWrapping: true,
216 | indentWithTabs: true,
217 | indentUnit: 2,
218 | tabSize: 2,
219 | value: "",
220 | mode: modes[mode] || {
221 | name: mode
222 | },
223 | readOnly: readonly,
224 | autoCloseBrackets: true,
225 | autoCloseTags: true
226 | };
227 |
228 | if (!tab)
229 | opts.extraKeys = {
230 | Tab: tab,
231 | "Shift-Tab": tab
232 | };
233 |
234 | // Creating a text editor is a lot of work, so we yield
235 | // the main thread for a moment. This helps reduce jank
236 | if (first) await sleep(50);
237 |
238 | if (destroyed) return;
239 |
240 | editor = CodeMirror.fromTextArea(refs.editor, opts);
241 |
242 | editor.on("change", instance => {
243 | if (!updating_externally) {
244 | const value = instance.getValue();
245 | dispatch("change", { value });
246 | }
247 | });
248 |
249 | if (first) await sleep(50);
250 | editor.refresh();
251 |
252 | first = false;
253 | }
254 |
255 | if ($$props.value === void 0 && $$bindings.value && value !== void 0) $$bindings.value(value);
256 | if ($$props.readonly === void 0 && $$bindings.readonly && readonly !== void 0) $$bindings.readonly(readonly);
257 | if ($$props.errorLoc === void 0 && $$bindings.errorLoc && errorLoc !== void 0) $$bindings.errorLoc(errorLoc);
258 | if ($$props.flex === void 0 && $$bindings.flex && flex !== void 0) $$bindings.flex(flex);
259 | if ($$props.lineNumbers === void 0 && $$bindings.lineNumbers && lineNumbers !== void 0) $$bindings.lineNumbers(lineNumbers);
260 | if ($$props.tab === void 0 && $$bindings.tab && tab !== void 0) $$bindings.tab(tab);
261 | if ($$props.set === void 0 && $$bindings.set && set !== void 0) $$bindings.set(set);
262 | if ($$props.update === void 0 && $$bindings.update && update !== void 0) $$bindings.update(update);
263 | if ($$props.resize === void 0 && $$bindings.resize && resize !== void 0) $$bindings.resize(resize);
264 | if ($$props.focus === void 0 && $$bindings.focus && focus !== void 0) $$bindings.focus(focus);
265 |
266 | $$result.css.add(css);
267 |
268 | if (editor && w && h) {
269 | editor.refresh();
270 | }
271 | {
272 | if (marker) marker.clear();
273 |
274 | if (errorLoc) {
275 | const line = errorLoc.line - 1;
276 | const ch = errorLoc.column;
277 |
278 | marker = editor.markText(
279 | { line, ch },
280 | { line, ch: ch + 1 },
281 | {
282 | className: "error-loc"
283 | }
284 | );
285 |
286 | error_line = line;
287 | } else {
288 | error_line = null;
289 | }
290 | }
291 | if (editor) {
292 | if (previous_error_line != null) {
293 | editor.removeLineClass(previous_error_line, "wrap", "error-line");
294 | }
295 |
296 | if (error_line && error_line !== previous_error_line) {
297 | editor.addLineClass(error_line, "wrap", "error-line");
298 | previous_error_line = error_line;
299 | }
300 | }
301 |
302 | return `
303 | ${ !CodeMirror ? `${escape(value)} ` : `` }`;
304 | });
305 |
306 | return CodeMirror_1;
307 |
308 | }));
309 |
--------------------------------------------------------------------------------
/index.mjs:
--------------------------------------------------------------------------------
1 | function run(fn) {
2 | return fn();
3 | }
4 | function blank_object() {
5 | return Object.create(null);
6 | }
7 | function run_all(fns) {
8 | fns.forEach(run);
9 | }
10 | function custom_event(type, detail) {
11 | const e = document.createEvent('CustomEvent');
12 | e.initCustomEvent(type, false, false, detail);
13 | return e;
14 | }
15 |
16 | let current_component;
17 | function set_current_component(component) {
18 | current_component = component;
19 | }
20 | function get_current_component() {
21 | if (!current_component)
22 | throw new Error(`Function called outside component initialization`);
23 | return current_component;
24 | }
25 | function onMount(fn) {
26 | get_current_component().$$.on_mount.push(fn);
27 | }
28 | function createEventDispatcher() {
29 | const component = current_component;
30 | return (type, detail) => {
31 | const callbacks = component.$$.callbacks[type];
32 | if (callbacks) {
33 | // TODO are there situations where events could be dispatched
34 | // in a server (non-DOM) environment?
35 | const event = custom_event(type, detail);
36 | callbacks.slice().forEach(fn => {
37 | fn.call(component, event);
38 | });
39 | }
40 | };
41 | }
42 | const escaped = {
43 | '"': '"',
44 | "'": ''',
45 | '&': '&',
46 | '<': '<',
47 | '>': '>'
48 | };
49 | function escape(html) {
50 | return String(html).replace(/["'&<>]/g, match => escaped[match]);
51 | }
52 | let on_destroy;
53 | function create_ssr_component(fn) {
54 | function $$render(result, props, bindings, slots) {
55 | const parent_component = current_component;
56 | const $$ = {
57 | on_destroy,
58 | context: new Map(parent_component ? parent_component.$$.context : []),
59 | // these will be immediately discarded
60 | on_mount: [],
61 | before_render: [],
62 | after_render: [],
63 | callbacks: blank_object()
64 | };
65 | set_current_component({ $$ });
66 | const html = fn(result, props, bindings, slots);
67 | set_current_component(parent_component);
68 | return html;
69 | }
70 | return {
71 | render: (props = {}, options = {}) => {
72 | on_destroy = [];
73 | const result = { head: '', css: new Set() };
74 | const html = $$render(result, props, {}, options);
75 | run_all(on_destroy);
76 | return {
77 | html,
78 | css: {
79 | code: Array.from(result.css).map(css => css.code).join('\n'),
80 | map: null // TODO
81 | },
82 | head: result.head
83 | };
84 | },
85 | $$render
86 | };
87 | }
88 |
89 | /* src/CodeMirror.svelte generated by Svelte v3.5.1 */
90 |
91 | const css = {
92 | code: "textarea.svelte-1jpkv2x{visibility:hidden}pre.svelte-1jpkv2x{position:absolute;width:100%;height:100%;top:0;left:0;border:none;padding:4px 4px 4px 60px;resize:none;font-family:var(--font-mono);font-size:13px;line-height:1.7;user-select:none;pointer-events:none;color:#ccc;tab-size:2;-moz-tab-size:2}",
93 | map: "{\"version\":3,\"file\":\"CodeMirror.svelte\",\"sources\":[\"CodeMirror.svelte\"],\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n{#if !CodeMirror}\\n {value} \\n{/if}\\n\"],\"names\":[],\"mappings\":\"AAuME,QAAQ,eAAC,CAAC,AACR,UAAU,CAAE,MAAM,AACpB,CAAC,AAED,GAAG,eAAC,CAAC,AACH,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,GAAG,CAAE,CAAC,CACN,IAAI,CAAE,CAAC,CACP,MAAM,CAAE,IAAI,CACZ,OAAO,CAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CACzB,MAAM,CAAE,IAAI,CACZ,WAAW,CAAE,IAAI,WAAW,CAAC,CAC7B,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,GAAG,CAChB,WAAW,CAAE,IAAI,CACjB,cAAc,CAAE,IAAI,CACpB,KAAK,CAAE,IAAI,CACX,QAAQ,CAAE,CAAC,CACX,aAAa,CAAE,CAAC,AAClB,CAAC\"}"
94 | };
95 |
96 | const is_browser = typeof window !== "undefined";
97 |
98 | let codemirror_promise;
99 | let _CodeMirror;
100 |
101 | if (is_browser) {
102 | codemirror_promise = import('codemirror');
103 |
104 | codemirror_promise.then(mod => {
105 | _CodeMirror = mod.default;
106 | });
107 | }
108 |
109 | function sleep(ms) {
110 | return new Promise(fulfil => setTimeout(fulfil, ms));
111 | }
112 |
113 | const CodeMirror_1 = create_ssr_component(($$result, $$props, $$bindings, $$slots) => {
114 | const dispatch = createEventDispatcher();
115 |
116 | let { value = "", readonly = false, errorLoc = null, flex = false, lineNumbers = true, tab = true } = $$props;
117 |
118 | let w;
119 | let h;
120 | let mode;
121 |
122 | // We have to expose set and update methods, rather
123 | // than making this state-driven through props,
124 | // because it's difficult to update an editor
125 | // without resetting scroll otherwise
126 | async function set(new_value, new_mode) {
127 | if (new_mode !== mode) {
128 | await createEditor((mode = new_mode));
129 | }
130 |
131 | value = new_value;
132 | updating_externally = true;
133 | if (editor) editor.setValue(value);
134 | updating_externally = false;
135 | }
136 |
137 | function update(new_value) {
138 | value = new_value;
139 |
140 | if (editor) {
141 | const { left, top } = editor.getScrollInfo();
142 | editor.setValue((value = new_value));
143 | editor.scrollTo(left, top);
144 | }
145 | }
146 |
147 | function resize() {
148 | editor.refresh();
149 | }
150 |
151 | function focus() {
152 | editor.focus();
153 | }
154 |
155 | const modes = {
156 | js: {
157 | name: "javascript",
158 | json: false
159 | },
160 | json: {
161 | name: "javascript",
162 | json: true
163 | },
164 | svelte: {
165 | name: "handlebars",
166 | base: "text/html"
167 | }
168 | };
169 |
170 | const refs = {};
171 | let editor;
172 | let updating_externally = false;
173 | let marker;
174 | let error_line;
175 | let destroyed = false;
176 | let CodeMirror;
177 |
178 | let previous_error_line;
179 |
180 | onMount(() => {
181 | if (_CodeMirror) {
182 | CodeMirror = _CodeMirror;
183 | createEditor(mode || "svelte").then(() => {
184 | if (editor) editor.setValue(value || "");
185 | });
186 | } else {
187 | codemirror_promise.then(async mod => {
188 | CodeMirror = mod.default;
189 | await createEditor(mode || "svelte");
190 | if (editor) editor.setValue(value || "");
191 | });
192 | }
193 |
194 | return () => {
195 | destroyed = true;
196 | if (editor) editor.toTextArea();
197 | };
198 | });
199 |
200 | let first = true;
201 |
202 | async function createEditor(mode) {
203 | if (destroyed || !CodeMirror) return;
204 |
205 | if (editor) editor.toTextArea();
206 |
207 | const opts = {
208 | lineNumbers,
209 | lineWrapping: true,
210 | indentWithTabs: true,
211 | indentUnit: 2,
212 | tabSize: 2,
213 | value: "",
214 | mode: modes[mode] || {
215 | name: mode
216 | },
217 | readOnly: readonly,
218 | autoCloseBrackets: true,
219 | autoCloseTags: true
220 | };
221 |
222 | if (!tab)
223 | opts.extraKeys = {
224 | Tab: tab,
225 | "Shift-Tab": tab
226 | };
227 |
228 | // Creating a text editor is a lot of work, so we yield
229 | // the main thread for a moment. This helps reduce jank
230 | if (first) await sleep(50);
231 |
232 | if (destroyed) return;
233 |
234 | editor = CodeMirror.fromTextArea(refs.editor, opts);
235 |
236 | editor.on("change", instance => {
237 | if (!updating_externally) {
238 | const value = instance.getValue();
239 | dispatch("change", { value });
240 | }
241 | });
242 |
243 | if (first) await sleep(50);
244 | editor.refresh();
245 |
246 | first = false;
247 | }
248 |
249 | if ($$props.value === void 0 && $$bindings.value && value !== void 0) $$bindings.value(value);
250 | if ($$props.readonly === void 0 && $$bindings.readonly && readonly !== void 0) $$bindings.readonly(readonly);
251 | if ($$props.errorLoc === void 0 && $$bindings.errorLoc && errorLoc !== void 0) $$bindings.errorLoc(errorLoc);
252 | if ($$props.flex === void 0 && $$bindings.flex && flex !== void 0) $$bindings.flex(flex);
253 | if ($$props.lineNumbers === void 0 && $$bindings.lineNumbers && lineNumbers !== void 0) $$bindings.lineNumbers(lineNumbers);
254 | if ($$props.tab === void 0 && $$bindings.tab && tab !== void 0) $$bindings.tab(tab);
255 | if ($$props.set === void 0 && $$bindings.set && set !== void 0) $$bindings.set(set);
256 | if ($$props.update === void 0 && $$bindings.update && update !== void 0) $$bindings.update(update);
257 | if ($$props.resize === void 0 && $$bindings.resize && resize !== void 0) $$bindings.resize(resize);
258 | if ($$props.focus === void 0 && $$bindings.focus && focus !== void 0) $$bindings.focus(focus);
259 |
260 | $$result.css.add(css);
261 |
262 | if (editor && w && h) {
263 | editor.refresh();
264 | }
265 | {
266 | if (marker) marker.clear();
267 |
268 | if (errorLoc) {
269 | const line = errorLoc.line - 1;
270 | const ch = errorLoc.column;
271 |
272 | marker = editor.markText(
273 | { line, ch },
274 | { line, ch: ch + 1 },
275 | {
276 | className: "error-loc"
277 | }
278 | );
279 |
280 | error_line = line;
281 | } else {
282 | error_line = null;
283 | }
284 | }
285 | if (editor) {
286 | if (previous_error_line != null) {
287 | editor.removeLineClass(previous_error_line, "wrap", "error-line");
288 | }
289 |
290 | if (error_line && error_line !== previous_error_line) {
291 | editor.addLineClass(error_line, "wrap", "error-line");
292 | previous_error_line = error_line;
293 | }
294 | }
295 |
296 | return `
297 | ${ !CodeMirror ? `${escape(value)} ` : `` }`;
298 | });
299 |
300 | export default CodeMirror_1;
301 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "svelte-codemirror",
3 | "version": "1.1.6",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@types/estree": {
8 | "version": "0.0.39",
9 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
10 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
11 | "dev": true
12 | },
13 | "@types/node": {
14 | "version": "12.0.8",
15 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.8.tgz",
16 | "integrity": "sha512-b8bbUOTwzIY3V5vDTY1fIJ+ePKDUBqt2hC2woVGotdQQhG/2Sh62HOKHrT7ab+VerXAcPyAiTEipPu/FsreUtg=="
17 | },
18 | "@types/resolve": {
19 | "version": "0.0.8",
20 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz",
21 | "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==",
22 | "requires": {
23 | "@types/node": "*"
24 | }
25 | },
26 | "acorn": {
27 | "version": "6.1.1",
28 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz",
29 | "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==",
30 | "dev": true
31 | },
32 | "builtin-modules": {
33 | "version": "3.1.0",
34 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz",
35 | "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw=="
36 | },
37 | "codemirror": {
38 | "version": "5.47.0",
39 | "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.47.0.tgz",
40 | "integrity": "sha512-kV49Fr+NGFHFc/Imsx6g180hSlkGhuHxTSDDmDHOuyln0MQYFLixDY4+bFkBVeCEiepYfDimAF/e++9jPJk4QA=="
41 | },
42 | "estree-walker": {
43 | "version": "0.6.1",
44 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
45 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w=="
46 | },
47 | "is-module": {
48 | "version": "1.0.0",
49 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
50 | "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE="
51 | },
52 | "path-parse": {
53 | "version": "1.0.6",
54 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
55 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
56 | },
57 | "require-relative": {
58 | "version": "0.8.7",
59 | "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz",
60 | "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=",
61 | "dev": true
62 | },
63 | "resolve": {
64 | "version": "1.11.0",
65 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz",
66 | "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==",
67 | "requires": {
68 | "path-parse": "^1.0.6"
69 | }
70 | },
71 | "rollup": {
72 | "version": "1.15.6",
73 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.15.6.tgz",
74 | "integrity": "sha512-s3Vn3QJQ5YVFfIG4nXoG9VdL1I37IZsft+4ZyeBhxE0df1kCFz9e+4bEAbR4mKH3pvBO9e9xjdxWPhhIp0r9ow==",
75 | "dev": true,
76 | "requires": {
77 | "@types/estree": "0.0.39",
78 | "@types/node": "^12.0.8",
79 | "acorn": "^6.1.1"
80 | }
81 | },
82 | "rollup-plugin-node-resolve": {
83 | "version": "5.0.3",
84 | "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.0.3.tgz",
85 | "integrity": "sha512-Mhhmf0x493xgUPEsRELnU1VM+4+WO82knWkAbZ0d2DvZQZJMbhzyQK/hqtpVscoRru1EqlK3TM1kK9ro469wPw==",
86 | "requires": {
87 | "@types/resolve": "0.0.8",
88 | "builtin-modules": "^3.1.0",
89 | "is-module": "^1.0.0",
90 | "resolve": "^1.11.0",
91 | "rollup-pluginutils": "^2.8.0"
92 | }
93 | },
94 | "rollup-plugin-svelte": {
95 | "version": "5.1.0",
96 | "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-5.1.0.tgz",
97 | "integrity": "sha512-4MRZG29dAWDpoxEs5uIHzDnYafQEOLaKIJAuDYUtFIzEm1F1IGSTlFyjd8/qk4wltlHdu6V7YfZY53+CKryhMg==",
98 | "dev": true,
99 | "requires": {
100 | "require-relative": "^0.8.7",
101 | "rollup-pluginutils": "^2.3.3",
102 | "sourcemap-codec": "^1.4.4"
103 | }
104 | },
105 | "rollup-pluginutils": {
106 | "version": "2.8.1",
107 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz",
108 | "integrity": "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==",
109 | "requires": {
110 | "estree-walker": "^0.6.1"
111 | }
112 | },
113 | "sourcemap-codec": {
114 | "version": "1.4.4",
115 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz",
116 | "integrity": "sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg==",
117 | "dev": true
118 | },
119 | "svelte": {
120 | "version": "3.5.1",
121 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.5.1.tgz",
122 | "integrity": "sha512-iMnuyteFGQ8Yl68G/DHTHY1sLwoAMya1eS0ZOHIm/dqn2etR8WEe8hUAoluLryde4Cft4gvMhtHV3NhE60nBmQ==",
123 | "dev": true
124 | }
125 | }
126 | }
127 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "svelte-codemirror",
3 | "version": "1.2.1",
4 | "description": "An svelte v3 component for embedding codemirrorjs",
5 | "module": "index.mjs",
6 | "main": "index.js",
7 | "svelte": "src/CodeMirror.svelte",
8 | "scripts": {
9 | "build": "rollup -c -e codemirror",
10 | "prepublishOnly": "npm run build",
11 | "test": "echo \"Error: no test specified\" && exit 1"
12 | },
13 | "author": "Rich Harris",
14 | "license": "ISC",
15 | "dependencies": {
16 | "codemirror": "^5.47.0",
17 | "rollup-plugin-node-resolve": "^5.0.3"
18 | },
19 | "devDependencies": {
20 | "rollup": "^1.15.6",
21 | "rollup-plugin-svelte": "^5.1.0",
22 | "svelte": "^3.5.1"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/rollup.config.js:
--------------------------------------------------------------------------------
1 | import svelte from "rollup-plugin-svelte";
2 | import resolve from "rollup-plugin-node-resolve";
3 | import pkg from "./package.json";
4 |
5 | const name = pkg.name
6 | .replace(/^(@\S+\/)?(svelte-)?(\S+)/, "$3")
7 | .replace(/^\w/, m => m.toUpperCase())
8 | .replace(/-\w/g, m => m[1].toUpperCase());
9 |
10 | export default {
11 | input: "src/CodeMirror.svelte",
12 | output: [
13 | { file: pkg.module, format: "es" },
14 | { file: pkg.main, format: "umd", name }
15 | ],
16 | plugins: [svelte({ generate: "ssr" }), resolve()]
17 | };
18 |
--------------------------------------------------------------------------------
/src/CodeMirror.svelte:
--------------------------------------------------------------------------------
1 |
15 |
16 |
198 |
199 |
223 |
224 |
225 | {#if !CodeMirror}
226 | {value}
227 | {/if}
228 |
--------------------------------------------------------------------------------