├── .gitignore
├── LICENSE
├── README.md
├── build
├── __snowpack__
│ └── env.js
├── counting-clicks.html
├── expandable-sections.html
├── index.html
├── js
│ ├── counting-clicks.js
│ ├── expandable-sections.js
│ └── quiz.js
├── quiz.html
└── web_modules
│ ├── common
│ └── index-609ee1d4.js
│ ├── htm
│ └── react.js
│ ├── immer.js
│ ├── import-map.json
│ ├── react-dom.js
│ └── react.js
├── html
├── counting-clicks.html
├── expandable-sections.html
├── index.html
└── quiz.html
├── js
├── counting-clicks.js
├── expandable-sections.js
└── quiz.js
├── package-lock.json
├── package.json
└── snowpack.config.json
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
3 | .DS_Store
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Axel Rauschmayer
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Minimal React project
2 |
3 | Trying out the examples online: https://rauschma.github.io/minimal-react/build/
4 |
5 | ## Installing the examples on your computer
6 |
7 | * Download and install [Node.js](https://nodejs.org/en/) (this also installs the npm package manager).
8 | * Install the npm packages that this repository depends on:
9 | ```
10 | cd minimal-react
11 | npm install
12 | ```
13 |
14 | ## Running the examples locally
15 |
16 | * Start the development server:
17 | ```
18 | cd minimal-react
19 | npm start
20 | ```
21 | * The dev server prints root URLs to the console, e.g.: [`http://localhost:8080/`](http://localhost:8080/)
22 | * Open one of them in a web browser.
23 | * The browser tab is refreshed automatically when you change either HTML or JavaScript code.
24 |
25 | ## Building the examples
26 |
27 | You can also create a stand-alone version of this web app that doesn’t need the development server to run:
28 |
29 | ```js
30 | npm run build
31 | ```
32 |
33 | Afterwards, the complete web app is in directory `minimal-react/build`, ready to be deployed.
34 |
35 | ## Technologies used in this project
36 |
37 | This is an exhaustive list of dependencies:
38 |
39 | * [Snowpack](https://www.snowpack.dev): `snowpack`, `@snowpack/plugin-react-refresh`
40 | * [React](https://reactjs.org): `react`, `react-dom`
41 | * [HTM](https://github.com/developit/htm): `htm`
42 | * [Immer](https://immerjs.github.io/immer/docs/introduction): `immer`
--------------------------------------------------------------------------------
/build/__snowpack__/env.js:
--------------------------------------------------------------------------------
1 | export default {"MODE":"production","NODE_ENV":"production"};
--------------------------------------------------------------------------------
/build/counting-clicks.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Counting clicks
6 |
7 |
8 | Counting clicks
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/build/expandable-sections.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Expandable sections
6 |
7 |
8 | Expandable sections
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/build/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Examples in this project
6 |
7 |
8 | Examples in this project
9 |
10 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/build/js/counting-clicks.js:
--------------------------------------------------------------------------------
1 | import s from"../web_modules/react-dom.js";import{html as r}from"../web_modules/htm/react.js";import{useState as d}from"../web_modules/react.js";const i={numberOfClicks:0};function u({rootModel:l}){const[o,t]=d(l);return r`
2 |
7 | `;function c(n){n.preventDefault();const e={numberOfClicks:o.numberOfClicks+1};t(e)}function m(n){const e={numberOfClicks:0};t(e)}}s.render(r`<${u} rootModel=${i} />`,document.getElementById("root"));
8 |
--------------------------------------------------------------------------------
/build/js/expandable-sections.js:
--------------------------------------------------------------------------------
1 | import r from"../web_modules/react-dom.js";import{html as s}from"../web_modules/htm/react.js";import{useState as c}from"../web_modules/react.js";const l=[{title:"Introduction",body:"In this section, we are taking a first look at the ideas are covered by this document."},{title:"The details",body:"In this section, we examine the ideas in more details."},{title:"Conclusion",body:"In this section, we’ll look at what we have learned and next steps you can take."}];function m(n){return n.map(e=>({...e,expanded:!1}))}function u(n,e){return n.map((t,o)=>({...t,expanded:o===e}))}function p({sections:n}){const[e,t]=c(n);return e.map((o,i)=>s`
2 | <${h} key=${i} sections=${e} setSections=${t} section=${o} sectionIndex=${i} />
3 | `)}function h({sections:n,setSections:e,section:t,sectionIndex:o}){return s`
4 |
5 |
11 | ${t.expanded?s`
12 |
13 | ${t.body}
14 |
15 | `:null}
16 |
17 | `;function i(d,a){a.preventDefault(),e(u(n,d))}}r.render(s`<${p} sections=${m(l)} />`,document.getElementById("root"));
18 |
--------------------------------------------------------------------------------
/build/js/quiz.js:
--------------------------------------------------------------------------------
1 | import u,{useState as l}from"../web_modules/react.js";import d from"../web_modules/react-dom.js";import{html as s}from"../web_modules/htm/react.js";import i from"../web_modules/immer.js";const m=[{question:"When was JavaScript created?",answers:[{text:"1984",correct:!1},{text:"1995",correct:!0},{text:"2001",correct:!1}]},{question:"What does “Ecma” mean?",answers:[{text:"European Computer Manufacturers Association",correct:!1},{text:"Enterprise Content Management Association",correct:!1},{text:"Electronic Component Manufacturers Association",correct:!1},{text:"It’s a proper name",correct:!0}]},{question:"What does “TC39” mean?",answers:[{text:"Ecma Technical Committee 39",correct:!0},{text:"Ecma Transactions on Computers 39",correct:!1},{text:"Ecma Technical Communications 39",correct:!1}]}];function h(t){return i(t,e=>{for(const n of e){n.open=!0;for(const r of n.answers)r.checked=!1}})}function a(t){return t.answers.every(e=>e.checked==e.correct)}class ${constructor(t,e){this.entries=t,this.setEntries=e}setAnswerChecked(t,e,n){const r=i(this.entries,o=>{o[t].answers[e].checked=n});this.setEntries(r)}closeEntry(t){const e=i(this.entries,n=>{n[t].open=!1});this.setEntries(e)}}function p({entries:t}){const[e,n]=l(t),r=new $(e,n);return s`
2 | <${u.Fragment}>
3 | Quiz
4 | <${C} root=${r} entries=${e} />
5 |
6 | <${f} entries=${e} />
7 | />
8 | `}function f({entries:t}){const e=t.reduce((r,o)=>r+(o.open?0:1),0),n=t.reduce((r,o)=>r+(!o.open&&a(o)?1:0),0);return s`
9 | Correct: ${n} of ${e}
10 | ${e===1?" entry":" entries"}
11 | `}function C({root:t,entries:e}){return e.map((n,r)=>{const o=n.open?E:b;return s`
12 | <${o} key=${r} root=${t} entryIndex=${r} entry=${n} />`})}function E({root:t,entryIndex:e,entry:n}){return s`
13 |
14 |
${n.question}
15 | ${n.answers.map((o,c)=>s`
16 | <${w} key=${c} root=${t}
17 | entryIndex=${e} answerIndex=${c} answer=${o} />
18 | `)}
19 |
Submit answers
20 |
`;function r(o){o.preventDefault(),t.closeEntry(e)}}function w({root:t,entryIndex:e,answerIndex:n,answer:r}){return s`
21 |
22 |
23 |
24 | ${" "+r.text}
25 |
26 |
27 | `;function o(c){t.setAnswerChecked(e,n,!r.checked)}}function b({root:t,entryIndex:e,entry:n}){return s`
28 |
29 |
${n.question}
30 | ${n.answers.map((r,o)=>s`
31 | <${k} key=${o} root=${t} entryIndex=${e} answer=${r} answerIndex=${o} />
32 | `)}
33 | ${a(n)?s`
Correct!
`:s`
Wrong!
`}
34 |
`}function k({root:t,entryIndex:e,answerIndex:n,answer:r}){const o=r.correct?{backgroundColor:"lightgreen"}:{};return s`
35 |
36 |
37 |
38 | ${" "+r.text}
39 |
40 |
41 | `}d.render(s`<${p} entries=${h(m)} />`,document.getElementById("root"));
42 |
--------------------------------------------------------------------------------
/build/quiz.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Quiz
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/build/web_modules/common/index-609ee1d4.js:
--------------------------------------------------------------------------------
1 | function h(e,r,t){return t={path:r,exports:{},require:function(o,n){return M(o,n??t.path)}},e(t,t.exports),t.exports}function M(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}/*
2 | object-assign
3 | (c) Sindre Sorhus
4 | @license MIT
5 | */var C=Object.getOwnPropertySymbols,N=Object.prototype.hasOwnProperty,F=Object.prototype.propertyIsEnumerable;function T(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function V(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var r={},t=0;t<10;t++)r["_"+String.fromCharCode(t)]=t;var o=Object.getOwnPropertyNames(r).map(function(c){return r[c]});if(o.join("")!=="0123456789")return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach(function(c){n[c]=c}),!(Object.keys(Object.assign({},n)).join("")!=="abcdefghijklmnopqrst")}catch(c){return!1}}var d=V()?Object.assign:function(e,r){for(var t,o=T(e),n,c=1;cm.length&&m.push(e)}function w(e,r,t,o){var n=typeof e;(n==="undefined"||n==="boolean")&&(e=null);var c=!1;if(e===null)c=!0;else switch(n){case"string":case"number":c=!0;break;case"object":switch(e.$$typeof){case y:case B:c=!0}}if(c)return t(o,e,r===""?"."+j(e,0):r),1;if(c=0,r=r===""?".":r+":",Array.isArray(e))for(var l=0;l=5&&((o||!g&&n===5)&&(t.push(n,0,o,f),n=6),g&&(t.push(n,g,0,f),n=6)),o=""},v=0;v"?(n=1,o=""):o=u+o[0]:c?u===c?c="":o+=u:u==='"'||u==="'"?c=u:u===">"?(m(),n=1):n&&(u==="="?(n=5,f=o,o=""):u==="/"&&(n<5||s[v][b+1]===">")?(m(),n===3&&(t=t[0]),n=t,(t=t[0]).push(2,0,n),n=0):u===" "||u===" "||u===`
2 | `||u==="\r"?(m(),n=2):o+=u),n===3&&o==="!--"&&(n=4,t=t[0])}return m(),t}(d)),i),arguments,[])).length>1?i:i[0]}var y=M.bind(x.createElement);export{y as html};
3 |
--------------------------------------------------------------------------------
/build/web_modules/immer.js:
--------------------------------------------------------------------------------
1 | var ne={title:"browser",browser:!0,env:{NODE_ENV:"production"},argv:[],version:"",versions:{},platform:"browser",release:{},config:{}};function p(e){for(var r=arguments.length,t=Array(r>1?r-1:0),o=1;o3?r.i-4:r.i:Array.isArray(e)?1:k(e)?2:F(e)?3:0}function x(e,r){return g(e)===2?e.has(r):Object.prototype.hasOwnProperty.call(e,r)}function ie(e,r){return g(e)===2?e.get(r):e[r]}function G(e,r,t){var o=g(e);o===2?e.set(r,t):o===3?(e.delete(r),e.add(t)):e[r]=t}function ue(e,r){return e===r?e!==0||1/e==1/r:e!=e&&r!=r}function k(e){return se&&e instanceof Map}function F(e){return le&&e instanceof Set}function b(e){return e.o||e.t}function I(e){if(Array.isArray(e))return e.slice();var r=pe(e);delete r[s];for(var t=X(r),o=0;o1&&(e.set=e.add=e.clear=e.delete=fe),Object.freeze(e),r&&m(e,function(t,o){return z(o,!0)},!0))}function fe(){p(2)}function R(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function y(e){var r=ve[e];return r||p(19,e),r}function H(){return O}function W(e,r){r&&(y("Patches"),e.u=[],e.s=[],e.v=r)}function A(e){K(e),e.p.forEach(ce),e.p=null}function K(e){e===O&&(O=e.l)}function J(e){return O={p:[],l:O,h:e,m:!0,_:0}}function ce(e){var r=e[s];r.i===0||r.i===1?r.j():r.g=!0}function M(e,r){r._=r.p.length;var t=r.p[0],o=e!==void 0&&e!==t;return r.h.O||y("ES5").S(r,e,o),o?(t[s].P&&(A(r),p(4)),h(e)&&(e=S(r,e),r.l||D(r,e)),r.u&&y("Patches").M(t[s],e,r.u,r.s)):e=S(r,t,[]),A(r),r.u&&r.v(r.u,r.s),e!==re?e:void 0}function S(e,r,t){if(R(r))return r;var o=r[s];if(!o)return m(r,function(i,f){return Q(e,o,r,i,f,t)},!0),r;if(o.A!==e)return r;if(!o.P)return D(e,o.t,!0),o.t;if(!o.I){o.I=!0,o.A._--;var n=o.i===4||o.i===5?o.o=I(o.k):o.o;m(o.i===3?new Set(n):n,function(i,f){return Q(e,o,n,i,f,t)}),D(e,n,!1),t&&e.u&&y("Patches").R(o,t,e.u,e.s)}return o.o}function Q(e,r,t,o,n,i){if(P(n)){var f=S(e,n,i&&r&&r.i!==3&&!x(r.D,o)?i.concat(o):void 0);if(G(t,o,f),!P(f))return;e.m=!1}if(h(n)&&!R(n)){if(!e.h.N&&e._<1)return;S(e,n),r&&r.A.l||D(e,n)}}function D(e,r,t){t===void 0&&(t=!1),e.h.N&&e.m&&z(r,t)}function L(e,r){var t=e[s];return(t?b(t):e)[r]}function T(e,r){if(r in e)for(var t=Object.getPrototypeOf(e);t;){var o=Object.getOwnPropertyDescriptor(t,r);if(o)return o;t=Object.getPrototypeOf(t)}}function U(e){e.P||(e.P=!0,e.l&&U(e.l))}function C(e){e.o||(e.o=I(e.t))}function $(e,r,t){var o=k(r)?y("MapSet").T(r,t):F(r)?y("MapSet").F(r,t):e.O?function(n,i){var f=Array.isArray(n),u={i:f?1:0,A:i?i.A:H(),P:!1,I:!1,D:{},l:i,t:n,k:null,o:null,j:null,C:!1},c=u,d=E;f&&(c=[u],d=N);var v=Proxy.revocable(c,d),l=v.revoke,w=v.proxy;return u.k=w,u.j=l,w}(r,t):y("ES5").J(r,t);return(t?t.A:H()).p.push(o),o}function ae(e){return P(e)||p(22,e),function r(t){if(!h(t))return t;var o,n=t[s],i=g(t);if(n){if(!n.P&&(n.i<4||!y("ES5").K(n)))return n.t;n.I=!0,o=Y(t,i),n.I=!1}else o=Y(t,i);return m(o,function(f,u){n&&ie(n.t,f)===u||G(o,f,r(u))}),i===3?new Set(o):o}(e)}function Y(e,r){switch(r){case 2:return new Map(e);case 3:return Array.from(e)}return I(e)}var Z,O,V=typeof Symbol!="undefined"&&typeof Symbol("x")=="symbol",se=typeof Map!="undefined",le=typeof Set!="undefined",ee=typeof Proxy!="undefined"&&Proxy.revocable!==void 0&&typeof Reflect!="undefined",re=V?Symbol.for("immer-nothing"):((Z={})["immer-nothing"]=!0,Z),te=V?Symbol.for("immer-draftable"):"__$immer_draftable",s=V?Symbol.for("immer-state"):"__$immer_state",X=typeof Reflect!="undefined"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,pe=Object.getOwnPropertyDescriptors||function(e){var r={};return X(e).forEach(function(t){r[t]=Object.getOwnPropertyDescriptor(e,t)}),r},ve={},E={get:function(e,r){if(r===s)return e;var t=b(e);if(!x(t,r))return function(n,i,f){var u,c=T(i,f);return c?"value"in c?c.value:(u=c.get)===null||u===void 0?void 0:u.call(n.k):void 0}(e,t,r);var o=t[r];return e.I||!h(o)?o:o===L(e.t,r)?(C(e),e.o[r]=$(e.A.h,o,e)):o},has:function(e,r){return r in b(e)},ownKeys:function(e){return Reflect.ownKeys(b(e))},set:function(e,r,t){var o=T(b(e),r);if(o==null?void 0:o.set)return o.set.call(e.k,t),!0;if(e.D[r]=!0,!e.P){if(ue(t,L(b(e),r))&&(t!==void 0||x(e.t,r)))return!0;C(e),U(e)}return e.o[r]=t,!0},deleteProperty:function(e,r){return L(e.t,r)!==void 0||r in e.t?(e.D[r]=!1,C(e),U(e)):delete e.D[r],e.o&&delete e.o[r],!0},getOwnPropertyDescriptor:function(e,r){var t=b(e),o=Reflect.getOwnPropertyDescriptor(t,r);return o&&{writable:!0,configurable:e.i!==1||r!=="length",enumerable:o.enumerable,value:t[r]}},defineProperty:function(){p(11)},getPrototypeOf:function(e){return Object.getPrototypeOf(e.t)},setPrototypeOf:function(){p(12)}},N={};m(E,function(e,r){N[e]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}}),N.deleteProperty=function(e,r){return E.deleteProperty.call(this,e[0],r)},N.set=function(e,r,t){return E.set.call(this,e[0],r,t,e[0])};var ye=function(){function e(t){this.O=ee,this.N=ne.env.NODE_ENV!=="production",typeof(t==null?void 0:t.useProxies)=="boolean"&&this.setUseProxies(t.useProxies),typeof(t==null?void 0:t.autoFreeze)=="boolean"&&this.setAutoFreeze(t.autoFreeze),this.produce=this.produce.bind(this),this.produceWithPatches=this.produceWithPatches.bind(this)}var r=e.prototype;return r.produce=function(t,o,n){if(typeof t=="function"&&typeof o!="function"){var i=o;o=t;var f=this;return function(l){var w=this;l===void 0&&(l=i);for(var _=arguments.length,q=Array(_>1?_-1:0),j=1;j<_;j++)q[j-1]=arguments[j];return f.produce(l,function(oe){var B;return(B=o).call.apply(B,[w,oe].concat(q))})}}var u;if(typeof o!="function"&&p(6),n!==void 0&&typeof n!="function"&&p(7),h(t)){var c=J(this),d=$(this,t,void 0),v=!0;try{u=o(d),v=!1}finally{v?A(c):K(c)}return typeof Promise!="undefined"&&u instanceof Promise?u.then(function(l){return W(c,n),M(l,c)},function(l){throw A(c),l}):(W(c,n),M(u,c))}if(!t||typeof t!="object")return(u=o(t))===re?void 0:(u===void 0&&(u=t),this.N&&z(u,!0),u);p(21,t)},r.produceWithPatches=function(t,o){var n,i,f=this;return typeof t=="function"?function(u){for(var c=arguments.length,d=Array(c>1?c-1:0),v=1;v=0;n--){var i=o[n];if(i.path.length===0&&i.op==="replace"){t=i.value;break}}var f=y("Patches").$;return P(t)?f(t,o):this.produce(t,function(u){return f(u,o.slice(n+1))})},e}(),a=new ye(),de=a.produce,be=a.produceWithPatches.bind(a),Pe=a.setAutoFreeze.bind(a),ge=a.setUseProxies.bind(a),me=a.applyPatches.bind(a),Oe=a.createDraft.bind(a),we=a.finishDraft.bind(a);export default de;
2 |
--------------------------------------------------------------------------------
/build/web_modules/import-map.json:
--------------------------------------------------------------------------------
1 | {
2 | "imports": {
3 | "htm/react": "./htm/react.js",
4 | "immer": "./immer.js",
5 | "react": "./react.js",
6 | "react-dom": "./react-dom.js"
7 | }
8 | }
--------------------------------------------------------------------------------
/build/web_modules/react.js:
--------------------------------------------------------------------------------
1 | import{r as e}from"./common/index-609ee1d4.js";export{r as default}from"./common/index-609ee1d4.js";var o=e.useState;export{o as useState};
2 |
--------------------------------------------------------------------------------
/html/counting-clicks.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Counting clicks
6 |
7 |
8 | Counting clicks
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/html/expandable-sections.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Expandable sections
6 |
7 |
8 | Expandable sections
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/html/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Examples in this project
6 |
7 |
8 | Examples in this project
9 |
10 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/html/quiz.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Quiz
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/js/counting-clicks.js:
--------------------------------------------------------------------------------
1 | import ReactDOM from 'react-dom';
2 | import {html} from 'htm/react';
3 | import {useState} from 'react';
4 |
5 | //========== Model
6 |
7 | const rootModel = {
8 | numberOfClicks: 0,
9 | };
10 |
11 | //========== Component
12 |
13 | function CountingClicks({rootModel: initialRootModel}) {
14 | const [rootModel, setRootModel] = useState(initialRootModel);
15 | return html`
16 |
21 | `;
22 |
23 | function handleIncrement(event) {
24 | event.preventDefault();
25 | const nextRootModel = {
26 | numberOfClicks: rootModel.numberOfClicks + 1,
27 | };
28 | setRootModel(nextRootModel);
29 | }
30 | function handleReset(event) {
31 | const nextRootModel = {
32 | numberOfClicks: 0,
33 | };
34 | setRootModel(nextRootModel);
35 | }
36 | }
37 |
38 | //========== Entry point
39 |
40 | ReactDOM.render(
41 | html`<${CountingClicks} rootModel=${rootModel} />`,
42 | document.getElementById('root'));
43 |
--------------------------------------------------------------------------------
/js/expandable-sections.js:
--------------------------------------------------------------------------------
1 | import ReactDOM from 'react-dom';
2 | import {html} from 'htm/react';
3 | import {useState} from 'react';
4 |
5 | //========== Model
6 |
7 | const sections = [
8 | {
9 | title: 'Introduction',
10 | body: 'In this section, we are taking a first look at the ideas are covered by this document.',
11 | },
12 | {
13 | title: 'The details',
14 | body: 'In this section, we examine the ideas in more details.',
15 | },
16 | {
17 | title: 'Conclusion',
18 | body: 'In this section, we’ll look at what we have learned and next steps you can take.',
19 | },
20 | ];
21 |
22 | function addUiProperties(sections) {
23 | return sections.map((section) => ({
24 | ...section,
25 | expanded: false,
26 | }));
27 | }
28 |
29 | function expandExactlyOneSection(sections, onlyExpandedIndex) {
30 | return sections.map((section, index) => ({
31 | ...section,
32 | expanded: (index === onlyExpandedIndex),
33 | }));
34 | }
35 |
36 | //========== Components
37 |
38 | function Sections({sections: initialSections}) {
39 | const [sections, setSections] = useState(initialSections);
40 | return sections.map((section, index) => html`
41 | <${Section} key=${index} sections=${sections} setSections=${setSections} section=${section} sectionIndex=${index} />
42 | `);
43 | }
44 |
45 | function Section({sections, setSections, section, sectionIndex}) {
46 | return html`
47 |
48 |
54 | ${
55 | !section.expanded
56 | ? null
57 | : html`
58 |
59 | ${section.body}
60 |
61 | `
62 | }
63 |
64 | `;
65 |
66 | function handleClick(sectionIndex, event) {
67 | event.preventDefault();
68 | setSections(expandExactlyOneSection(sections, sectionIndex));
69 | }
70 | }
71 |
72 | //========== Entry point
73 |
74 | ReactDOM.render(
75 | html`<${Sections} sections=${addUiProperties(sections)} />`,
76 | document.getElementById('root'));
77 |
--------------------------------------------------------------------------------
/js/quiz.js:
--------------------------------------------------------------------------------
1 | import React, {useState} from 'react';
2 | import ReactDOM from 'react-dom';
3 | import {html} from 'htm/react';
4 | import produce from 'immer';
5 |
6 | //========== Model
7 |
8 | const entries = [
9 | {
10 | question: 'When was JavaScript created?',
11 | answers: [
12 | {text: '1984', correct: false},
13 | {text: '1995', correct: true},
14 | {text: '2001', correct: false},
15 | ],
16 | },
17 | {
18 | question: 'What does “Ecma” mean?',
19 | answers: [
20 | {text: 'European Computer Manufacturers Association', correct: false},
21 | {text: 'Enterprise Content Management Association', correct: false},
22 | {text: 'Electronic Component Manufacturers Association', correct: false},
23 | {text: 'It’s a proper name', correct: true},
24 | ],
25 | },
26 | {
27 | question: 'What does “TC39” mean?',
28 | answers: [
29 | {text: 'Ecma Technical Committee 39', correct: true},
30 | {text: 'Ecma Transactions on Computers 39', correct: false},
31 | {text: 'Ecma Technical Communications 39', correct: false},
32 | ],
33 | },
34 | ];
35 |
36 | function addUiProperties(entries) {
37 | return produce(entries, (draftEntries) => {
38 | for (const entry of draftEntries) {
39 | entry.open = true;
40 | for (const answer of entry.answers) {
41 | answer.checked = false;
42 | }
43 | }
44 | });
45 | }
46 |
47 | function areAnswersCorrect(entry) {
48 | return entry.answers.every((answer) => answer.checked == answer.correct);
49 | }
50 |
51 | class RootController {
52 | constructor(entries, setEntries) {
53 | this.entries = entries;
54 | this.setEntries = setEntries;
55 | }
56 | setAnswerChecked(entryIndex, answerIndex, checked) {
57 | const newEntries = produce(this.entries, (draftEntries) => {
58 | draftEntries[entryIndex].answers[answerIndex].checked = checked;
59 | });
60 | this.setEntries(newEntries); // refresh UI
61 | }
62 | closeEntry(entryIndex) {
63 | const newEntries = produce(this.entries, (draftEntries) => {
64 | draftEntries[entryIndex].open = false;
65 | });
66 | this.setEntries(newEntries); // refresh UI
67 | }
68 | }
69 |
70 | //========== Components
71 |
72 | function Quiz({entries: initialEntries}) {
73 | const [entries, setEntries] = useState(initialEntries);
74 | const root = new RootController(entries, setEntries);
75 | return html`
76 | <${React.Fragment}>
77 | Quiz
78 | <${AllEntries} root=${root} entries=${entries} />
79 |
80 | <${Summary} entries=${entries} />
81 | />
82 | `;
83 | }
84 |
85 | function Summary({entries}) {
86 | const numberOfClosedEntries = entries.reduce(
87 | (acc, entry) => acc + (entry.open ? 0 : 1), 0);
88 | const numberOfCorrectEntries = entries.reduce(
89 | (acc, entry) => acc + (!entry.open && areAnswersCorrect(entry) ? 1 : 0), 0);
90 | return html`
91 | Correct: ${numberOfCorrectEntries} of ${numberOfClosedEntries}
92 | ${numberOfClosedEntries === 1 ? ' entry' : ' entries'}
93 | `;
94 | }
95 |
96 | function AllEntries({root, entries}) {
97 | return entries.map((entry, index) => {
98 | const entryKind = entry.open ? OpenEntry : ClosedEntry;
99 | return html`
100 | <${entryKind} key=${index} root=${root} entryIndex=${index} entry=${entry} />`
101 | });
102 | }
103 |
104 | //----- OpenEntry
105 |
106 | function OpenEntry({root, entryIndex, entry}) {
107 | return html`
108 |
109 |
${entry.question}
110 | ${
111 | entry.answers.map((answer, index) => html`
112 | <${OpenAnswer} key=${index} root=${root}
113 | entryIndex=${entryIndex} answerIndex=${index} answer=${answer} />
114 | `)
115 | }
116 |
Submit answers
117 |
`;
118 |
119 | function handleClick(event) {
120 | event.preventDefault();
121 | root.closeEntry(entryIndex);
122 | }
123 | }
124 |
125 | function OpenAnswer({root, entryIndex, answerIndex, answer}) {
126 | return html`
127 |
128 |
129 |
130 | ${' ' + answer.text}
131 |
132 |
133 | `;
134 |
135 | function handleChange(_event) {
136 | // Toggle the checkbox
137 | root.setAnswerChecked(entryIndex, answerIndex, !answer.checked);
138 | }
139 | }
140 |
141 | //----- ClosedEntry
142 |
143 | function ClosedEntry({root, entryIndex, entry}) {
144 | return html`
145 |
146 |
${entry.question}
147 | ${
148 | entry.answers.map((answer, index) => html`
149 | <${ClosedAnswer} key=${index} root=${root} entryIndex=${entryIndex} answer=${answer} answerIndex=${index} />
150 | `)
151 | }
152 | ${
153 | areAnswersCorrect(entry)
154 | ? html`
Correct!
`
155 | : html`
Wrong!
`
156 | }
157 |
`;
158 | }
159 |
160 | function ClosedAnswer({root, entryIndex, answerIndex, answer}) {
161 | const style = answer.correct ? {backgroundColor: 'lightgreen'} : {};
162 | return html`
163 |
164 |
165 |
166 | ${' ' + answer.text}
167 |
168 |
169 | `;
170 | }
171 |
172 | //========== Entry point
173 |
174 | ReactDOM.render(
175 | html`<${Quiz} entries=${addUiProperties(entries)} />`,
176 | document.getElementById('root'));
177 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "simple-react",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@babel/code-frame": {
8 | "version": "7.10.4",
9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
10 | "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
11 | "dev": true,
12 | "requires": {
13 | "@babel/highlight": "^7.10.4"
14 | }
15 | },
16 | "@babel/helper-plugin-utils": {
17 | "version": "7.10.4",
18 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz",
19 | "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==",
20 | "dev": true
21 | },
22 | "@babel/helper-validator-identifier": {
23 | "version": "7.10.4",
24 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
25 | "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==",
26 | "dev": true
27 | },
28 | "@babel/highlight": {
29 | "version": "7.10.4",
30 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
31 | "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
32 | "dev": true,
33 | "requires": {
34 | "@babel/helper-validator-identifier": "^7.10.4",
35 | "chalk": "^2.0.0",
36 | "js-tokens": "^4.0.0"
37 | }
38 | },
39 | "@babel/plugin-syntax-import-meta": {
40 | "version": "7.10.4",
41 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
42 | "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
43 | "dev": true,
44 | "requires": {
45 | "@babel/helper-plugin-utils": "^7.10.4"
46 | }
47 | },
48 | "@npmcli/move-file": {
49 | "version": "1.0.1",
50 | "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.0.1.tgz",
51 | "integrity": "sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw==",
52 | "dev": true,
53 | "requires": {
54 | "mkdirp": "^1.0.4"
55 | }
56 | },
57 | "@rollup/plugin-alias": {
58 | "version": "3.1.1",
59 | "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-3.1.1.tgz",
60 | "integrity": "sha512-hNcQY4bpBUIvxekd26DBPgF7BT4mKVNDF5tBG4Zi+3IgwLxGYRY0itHs9D0oLVwXM5pvJDWJlBQro+au8WaUWw==",
61 | "dev": true,
62 | "requires": {
63 | "slash": "^3.0.0"
64 | }
65 | },
66 | "@rollup/plugin-commonjs": {
67 | "version": "15.0.0",
68 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-15.0.0.tgz",
69 | "integrity": "sha512-8uAdikHqVyrT32w1zB9VhW6uGwGjhKgnDNP4pQJsjdnyF4FgCj6/bmv24c7v2CuKhq32CcyCwRzMPEElaKkn0w==",
70 | "dev": true,
71 | "requires": {
72 | "@rollup/pluginutils": "^3.1.0",
73 | "commondir": "^1.0.1",
74 | "estree-walker": "^2.0.1",
75 | "glob": "^7.1.6",
76 | "is-reference": "^1.2.1",
77 | "magic-string": "^0.25.7",
78 | "resolve": "^1.17.0"
79 | }
80 | },
81 | "@rollup/plugin-inject": {
82 | "version": "4.0.2",
83 | "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-4.0.2.tgz",
84 | "integrity": "sha512-TSLMA8waJ7Dmgmoc8JfPnwUwVZgLjjIAM6MqeIFqPO2ODK36JqE0Cf2F54UTgCUuW8da93Mvoj75a6KAVWgylw==",
85 | "dev": true,
86 | "requires": {
87 | "@rollup/pluginutils": "^3.0.4",
88 | "estree-walker": "^1.0.1",
89 | "magic-string": "^0.25.5"
90 | },
91 | "dependencies": {
92 | "estree-walker": {
93 | "version": "1.0.1",
94 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
95 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
96 | "dev": true
97 | }
98 | }
99 | },
100 | "@rollup/plugin-json": {
101 | "version": "4.1.0",
102 | "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz",
103 | "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==",
104 | "dev": true,
105 | "requires": {
106 | "@rollup/pluginutils": "^3.0.8"
107 | }
108 | },
109 | "@rollup/plugin-node-resolve": {
110 | "version": "9.0.0",
111 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz",
112 | "integrity": "sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==",
113 | "dev": true,
114 | "requires": {
115 | "@rollup/pluginutils": "^3.1.0",
116 | "@types/resolve": "1.17.1",
117 | "builtin-modules": "^3.1.0",
118 | "deepmerge": "^4.2.2",
119 | "is-module": "^1.0.0",
120 | "resolve": "^1.17.0"
121 | }
122 | },
123 | "@rollup/pluginutils": {
124 | "version": "3.1.0",
125 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
126 | "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
127 | "dev": true,
128 | "requires": {
129 | "@types/estree": "0.0.39",
130 | "estree-walker": "^1.0.1",
131 | "picomatch": "^2.2.2"
132 | },
133 | "dependencies": {
134 | "estree-walker": {
135 | "version": "1.0.1",
136 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
137 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
138 | "dev": true
139 | }
140 | }
141 | },
142 | "@sindresorhus/is": {
143 | "version": "3.1.2",
144 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-3.1.2.tgz",
145 | "integrity": "sha512-JiX9vxoKMmu8Y3Zr2RVathBL1Cdu4Nt4MuNWemt1Nc06A0RAin9c5FArkhGsyMBWfCu4zj+9b+GxtjAnE4qqLQ==",
146 | "dev": true
147 | },
148 | "@snowpack/plugin-build-script": {
149 | "version": "2.0.6",
150 | "resolved": "https://registry.npmjs.org/@snowpack/plugin-build-script/-/plugin-build-script-2.0.6.tgz",
151 | "integrity": "sha512-qtvXQq54MaBYJrCTa+DaK/KzUXYBkRukaGzIdhpqW/xzOknCjpufiQIy0VUzxwRQk0OlLC6/h3sV1hSMsoTVJw==",
152 | "dev": true,
153 | "requires": {
154 | "execa": "^4.0.3",
155 | "npm-run-path": "^4.0.1"
156 | }
157 | },
158 | "@snowpack/plugin-react-refresh": {
159 | "version": "2.1.0",
160 | "resolved": "https://registry.npmjs.org/@snowpack/plugin-react-refresh/-/plugin-react-refresh-2.1.0.tgz",
161 | "integrity": "sha512-q372QFJSESxgV3SM/BkrkCWFswamp8X9G9gLrBpY+NHOPEvmyzW4njha+7huwwesCsuHgDf+WDqVxF0fnrW/gQ==",
162 | "dev": true,
163 | "requires": {
164 | "react-refresh": "^0.8.3"
165 | }
166 | },
167 | "@snowpack/plugin-run-script": {
168 | "version": "2.1.1",
169 | "resolved": "https://registry.npmjs.org/@snowpack/plugin-run-script/-/plugin-run-script-2.1.1.tgz",
170 | "integrity": "sha512-ZLOcu6n+eLDNxTxKlKK/+smn9PWr/epUKGPw8tBHr3qdKQ64WNpCVr0jnafanzWpzQWD8k92J8POfskKMuEI5Q==",
171 | "dev": true,
172 | "requires": {
173 | "execa": "^4.0.3",
174 | "npm-run-path": "^4.0.1"
175 | }
176 | },
177 | "@szmarczak/http-timer": {
178 | "version": "4.0.5",
179 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz",
180 | "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==",
181 | "dev": true,
182 | "requires": {
183 | "defer-to-connect": "^2.0.0"
184 | }
185 | },
186 | "@types/cacheable-request": {
187 | "version": "6.0.1",
188 | "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz",
189 | "integrity": "sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==",
190 | "dev": true,
191 | "requires": {
192 | "@types/http-cache-semantics": "*",
193 | "@types/keyv": "*",
194 | "@types/node": "*",
195 | "@types/responselike": "*"
196 | }
197 | },
198 | "@types/estree": {
199 | "version": "0.0.39",
200 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
201 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
202 | "dev": true
203 | },
204 | "@types/http-cache-semantics": {
205 | "version": "4.0.0",
206 | "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz",
207 | "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==",
208 | "dev": true
209 | },
210 | "@types/keyv": {
211 | "version": "3.1.1",
212 | "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz",
213 | "integrity": "sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==",
214 | "dev": true,
215 | "requires": {
216 | "@types/node": "*"
217 | }
218 | },
219 | "@types/node": {
220 | "version": "14.6.0",
221 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.6.0.tgz",
222 | "integrity": "sha512-mikldZQitV94akrc4sCcSjtJfsTKt4p+e/s0AGscVA6XArQ9kFclP+ZiYUMnq987rc6QlYxXv/EivqlfSLxpKA==",
223 | "dev": true
224 | },
225 | "@types/parse-json": {
226 | "version": "4.0.0",
227 | "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
228 | "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
229 | "dev": true
230 | },
231 | "@types/resolve": {
232 | "version": "1.17.1",
233 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
234 | "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
235 | "dev": true,
236 | "requires": {
237 | "@types/node": "*"
238 | }
239 | },
240 | "@types/responselike": {
241 | "version": "1.0.0",
242 | "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz",
243 | "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==",
244 | "dev": true,
245 | "requires": {
246 | "@types/node": "*"
247 | }
248 | },
249 | "address": {
250 | "version": "1.1.2",
251 | "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz",
252 | "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==",
253 | "dev": true
254 | },
255 | "aggregate-error": {
256 | "version": "3.1.0",
257 | "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
258 | "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
259 | "dev": true,
260 | "requires": {
261 | "clean-stack": "^2.0.0",
262 | "indent-string": "^4.0.0"
263 | }
264 | },
265 | "ansi-regex": {
266 | "version": "2.1.1",
267 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
268 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
269 | "dev": true
270 | },
271 | "ansi-styles": {
272 | "version": "3.2.1",
273 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
274 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
275 | "dev": true,
276 | "requires": {
277 | "color-convert": "^1.9.0"
278 | }
279 | },
280 | "anymatch": {
281 | "version": "3.1.1",
282 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
283 | "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
284 | "dev": true,
285 | "requires": {
286 | "normalize-path": "^3.0.0",
287 | "picomatch": "^2.0.4"
288 | }
289 | },
290 | "balanced-match": {
291 | "version": "1.0.0",
292 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
293 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
294 | "dev": true
295 | },
296 | "binary-extensions": {
297 | "version": "2.1.0",
298 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz",
299 | "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==",
300 | "dev": true
301 | },
302 | "brace-expansion": {
303 | "version": "1.1.11",
304 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
305 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
306 | "dev": true,
307 | "requires": {
308 | "balanced-match": "^1.0.0",
309 | "concat-map": "0.0.1"
310 | }
311 | },
312 | "braces": {
313 | "version": "3.0.2",
314 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
315 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
316 | "dev": true,
317 | "requires": {
318 | "fill-range": "^7.0.1"
319 | }
320 | },
321 | "builtin-modules": {
322 | "version": "3.1.0",
323 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz",
324 | "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==",
325 | "dev": true
326 | },
327 | "builtins": {
328 | "version": "1.0.3",
329 | "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
330 | "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=",
331 | "dev": true
332 | },
333 | "cacache": {
334 | "version": "15.0.5",
335 | "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz",
336 | "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==",
337 | "dev": true,
338 | "requires": {
339 | "@npmcli/move-file": "^1.0.1",
340 | "chownr": "^2.0.0",
341 | "fs-minipass": "^2.0.0",
342 | "glob": "^7.1.4",
343 | "infer-owner": "^1.0.4",
344 | "lru-cache": "^6.0.0",
345 | "minipass": "^3.1.1",
346 | "minipass-collect": "^1.0.2",
347 | "minipass-flush": "^1.0.5",
348 | "minipass-pipeline": "^1.2.2",
349 | "mkdirp": "^1.0.3",
350 | "p-map": "^4.0.0",
351 | "promise-inflight": "^1.0.1",
352 | "rimraf": "^3.0.2",
353 | "ssri": "^8.0.0",
354 | "tar": "^6.0.2",
355 | "unique-filename": "^1.1.1"
356 | }
357 | },
358 | "cacheable-lookup": {
359 | "version": "5.0.3",
360 | "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz",
361 | "integrity": "sha512-W+JBqF9SWe18A72XFzN/V/CULFzPm7sBXzzR6ekkE+3tLG72wFZrBiBZhrZuDoYexop4PHJVdFAKb/Nj9+tm9w==",
362 | "dev": true
363 | },
364 | "cacheable-request": {
365 | "version": "7.0.1",
366 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz",
367 | "integrity": "sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==",
368 | "dev": true,
369 | "requires": {
370 | "clone-response": "^1.0.2",
371 | "get-stream": "^5.1.0",
372 | "http-cache-semantics": "^4.0.0",
373 | "keyv": "^4.0.0",
374 | "lowercase-keys": "^2.0.0",
375 | "normalize-url": "^4.1.0",
376 | "responselike": "^2.0.0"
377 | }
378 | },
379 | "cachedir": {
380 | "version": "2.3.0",
381 | "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz",
382 | "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==",
383 | "dev": true
384 | },
385 | "callsites": {
386 | "version": "3.1.0",
387 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
388 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
389 | "dev": true
390 | },
391 | "camelcase": {
392 | "version": "5.3.1",
393 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
394 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
395 | "dev": true
396 | },
397 | "chalk": {
398 | "version": "2.4.2",
399 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
400 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
401 | "dev": true,
402 | "requires": {
403 | "ansi-styles": "^3.2.1",
404 | "escape-string-regexp": "^1.0.5",
405 | "supports-color": "^5.3.0"
406 | }
407 | },
408 | "chokidar": {
409 | "version": "3.4.2",
410 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz",
411 | "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==",
412 | "dev": true,
413 | "requires": {
414 | "anymatch": "~3.1.1",
415 | "braces": "~3.0.2",
416 | "fsevents": "~2.1.2",
417 | "glob-parent": "~5.1.0",
418 | "is-binary-path": "~2.1.0",
419 | "is-glob": "~4.0.1",
420 | "normalize-path": "~3.0.0",
421 | "readdirp": "~3.4.0"
422 | }
423 | },
424 | "chownr": {
425 | "version": "2.0.0",
426 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
427 | "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
428 | "dev": true
429 | },
430 | "clean-stack": {
431 | "version": "2.2.0",
432 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
433 | "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
434 | "dev": true
435 | },
436 | "clone-response": {
437 | "version": "1.0.2",
438 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
439 | "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
440 | "dev": true,
441 | "requires": {
442 | "mimic-response": "^1.0.0"
443 | }
444 | },
445 | "color-convert": {
446 | "version": "1.9.3",
447 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
448 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
449 | "dev": true,
450 | "requires": {
451 | "color-name": "1.1.3"
452 | }
453 | },
454 | "color-name": {
455 | "version": "1.1.3",
456 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
457 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
458 | "dev": true
459 | },
460 | "commondir": {
461 | "version": "1.0.1",
462 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
463 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
464 | "dev": true
465 | },
466 | "compressible": {
467 | "version": "2.0.18",
468 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
469 | "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
470 | "dev": true,
471 | "requires": {
472 | "mime-db": ">= 1.43.0 < 2"
473 | }
474 | },
475 | "concat-map": {
476 | "version": "0.0.1",
477 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
478 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
479 | "dev": true
480 | },
481 | "cosmiconfig": {
482 | "version": "6.0.0",
483 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
484 | "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
485 | "dev": true,
486 | "requires": {
487 | "@types/parse-json": "^4.0.0",
488 | "import-fresh": "^3.1.0",
489 | "parse-json": "^5.0.0",
490 | "path-type": "^4.0.0",
491 | "yaml": "^1.7.2"
492 | }
493 | },
494 | "cross-spawn": {
495 | "version": "7.0.3",
496 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
497 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
498 | "dev": true,
499 | "requires": {
500 | "path-key": "^3.1.0",
501 | "shebang-command": "^2.0.0",
502 | "which": "^2.0.1"
503 | }
504 | },
505 | "css-modules-loader-core": {
506 | "version": "1.1.0",
507 | "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz",
508 | "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=",
509 | "dev": true,
510 | "requires": {
511 | "icss-replace-symbols": "1.1.0",
512 | "postcss": "6.0.1",
513 | "postcss-modules-extract-imports": "1.1.0",
514 | "postcss-modules-local-by-default": "1.2.0",
515 | "postcss-modules-scope": "1.1.0",
516 | "postcss-modules-values": "1.3.0"
517 | }
518 | },
519 | "css-selector-tokenizer": {
520 | "version": "0.7.3",
521 | "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz",
522 | "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==",
523 | "dev": true,
524 | "requires": {
525 | "cssesc": "^3.0.0",
526 | "fastparse": "^1.1.2"
527 | }
528 | },
529 | "cssesc": {
530 | "version": "3.0.0",
531 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
532 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
533 | "dev": true
534 | },
535 | "debug": {
536 | "version": "2.6.9",
537 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
538 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
539 | "dev": true,
540 | "requires": {
541 | "ms": "2.0.0"
542 | }
543 | },
544 | "decamelize": {
545 | "version": "1.2.0",
546 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
547 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
548 | "dev": true
549 | },
550 | "decompress-response": {
551 | "version": "6.0.0",
552 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
553 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
554 | "dev": true,
555 | "requires": {
556 | "mimic-response": "^3.1.0"
557 | },
558 | "dependencies": {
559 | "mimic-response": {
560 | "version": "3.1.0",
561 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
562 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
563 | "dev": true
564 | }
565 | }
566 | },
567 | "deepmerge": {
568 | "version": "4.2.2",
569 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
570 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
571 | "dev": true
572 | },
573 | "defer-to-connect": {
574 | "version": "2.0.0",
575 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz",
576 | "integrity": "sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg==",
577 | "dev": true
578 | },
579 | "detect-port": {
580 | "version": "1.3.0",
581 | "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz",
582 | "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==",
583 | "dev": true,
584 | "requires": {
585 | "address": "^1.0.1",
586 | "debug": "^2.6.0"
587 | }
588 | },
589 | "end-of-stream": {
590 | "version": "1.4.4",
591 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
592 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
593 | "dev": true,
594 | "requires": {
595 | "once": "^1.4.0"
596 | }
597 | },
598 | "error-ex": {
599 | "version": "1.3.2",
600 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
601 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
602 | "dev": true,
603 | "requires": {
604 | "is-arrayish": "^0.2.1"
605 | }
606 | },
607 | "es-module-lexer": {
608 | "version": "0.3.24",
609 | "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.3.24.tgz",
610 | "integrity": "sha512-jm/i7KdJtaMDle921xIsA/MQQOGuZ6goYxhlV+k+gQNI7FtP4N6jknrmJvj++3ODpiyFGwQ4PIstJfHJQJNc+g==",
611 | "dev": true
612 | },
613 | "esbuild": {
614 | "version": "0.6.27",
615 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.6.27.tgz",
616 | "integrity": "sha512-oonxxg/ExZt9tYMPnEUDYAN7YefEPsC21pXez5rwKcCPAF6gzMuxLvAdbU4dCT8Tp0I2avODz61vrGyu5wR/uA==",
617 | "dev": true
618 | },
619 | "escape-string-regexp": {
620 | "version": "1.0.5",
621 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
622 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
623 | "dev": true
624 | },
625 | "estree-walker": {
626 | "version": "2.0.1",
627 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.1.tgz",
628 | "integrity": "sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg==",
629 | "dev": true
630 | },
631 | "etag": {
632 | "version": "1.8.1",
633 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
634 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
635 | "dev": true
636 | },
637 | "eventemitter3": {
638 | "version": "4.0.5",
639 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.5.tgz",
640 | "integrity": "sha512-QR0rh0YiPuxuDQ6+T9GAO/xWTExXpxIes1Nl9RykNGTnE1HJmkuEfxJH9cubjIOQZ/GH4qNBR4u8VSHaKiWs4g==",
641 | "dev": true
642 | },
643 | "execa": {
644 | "version": "4.0.3",
645 | "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz",
646 | "integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==",
647 | "dev": true,
648 | "requires": {
649 | "cross-spawn": "^7.0.0",
650 | "get-stream": "^5.0.0",
651 | "human-signals": "^1.1.1",
652 | "is-stream": "^2.0.0",
653 | "merge-stream": "^2.0.0",
654 | "npm-run-path": "^4.0.0",
655 | "onetime": "^5.1.0",
656 | "signal-exit": "^3.0.2",
657 | "strip-final-newline": "^2.0.0"
658 | }
659 | },
660 | "fastparse": {
661 | "version": "1.1.2",
662 | "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
663 | "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==",
664 | "dev": true
665 | },
666 | "fill-range": {
667 | "version": "7.0.1",
668 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
669 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
670 | "dev": true,
671 | "requires": {
672 | "to-regex-range": "^5.0.1"
673 | }
674 | },
675 | "find-cache-dir": {
676 | "version": "3.3.1",
677 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz",
678 | "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==",
679 | "dev": true,
680 | "requires": {
681 | "commondir": "^1.0.1",
682 | "make-dir": "^3.0.2",
683 | "pkg-dir": "^4.1.0"
684 | }
685 | },
686 | "find-up": {
687 | "version": "4.1.0",
688 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
689 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
690 | "dev": true,
691 | "requires": {
692 | "locate-path": "^5.0.0",
693 | "path-exists": "^4.0.0"
694 | }
695 | },
696 | "follow-redirects": {
697 | "version": "1.13.0",
698 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz",
699 | "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==",
700 | "dev": true
701 | },
702 | "fs-minipass": {
703 | "version": "2.1.0",
704 | "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
705 | "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
706 | "dev": true,
707 | "requires": {
708 | "minipass": "^3.0.0"
709 | }
710 | },
711 | "fs.realpath": {
712 | "version": "1.0.0",
713 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
714 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
715 | "dev": true
716 | },
717 | "fsevents": {
718 | "version": "2.1.3",
719 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
720 | "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
721 | "dev": true,
722 | "optional": true
723 | },
724 | "get-stream": {
725 | "version": "5.2.0",
726 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
727 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
728 | "dev": true,
729 | "requires": {
730 | "pump": "^3.0.0"
731 | }
732 | },
733 | "glob": {
734 | "version": "7.1.6",
735 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
736 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
737 | "dev": true,
738 | "requires": {
739 | "fs.realpath": "^1.0.0",
740 | "inflight": "^1.0.4",
741 | "inherits": "2",
742 | "minimatch": "^3.0.4",
743 | "once": "^1.3.0",
744 | "path-is-absolute": "^1.0.0"
745 | }
746 | },
747 | "glob-parent": {
748 | "version": "5.1.1",
749 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
750 | "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
751 | "dev": true,
752 | "requires": {
753 | "is-glob": "^4.0.1"
754 | }
755 | },
756 | "got": {
757 | "version": "11.5.2",
758 | "resolved": "https://registry.npmjs.org/got/-/got-11.5.2.tgz",
759 | "integrity": "sha512-yUhpEDLeuGiGJjRSzEq3kvt4zJtAcjKmhIiwNp/eUs75tRlXfWcHo5tcBaMQtnjHWC7nQYT5HkY/l0QOQTkVww==",
760 | "dev": true,
761 | "requires": {
762 | "@sindresorhus/is": "^3.0.0",
763 | "@szmarczak/http-timer": "^4.0.5",
764 | "@types/cacheable-request": "^6.0.1",
765 | "@types/responselike": "^1.0.0",
766 | "cacheable-lookup": "^5.0.3",
767 | "cacheable-request": "^7.0.1",
768 | "decompress-response": "^6.0.0",
769 | "http2-wrapper": "^1.0.0-beta.5.0",
770 | "lowercase-keys": "^2.0.0",
771 | "p-cancelable": "^2.0.0",
772 | "responselike": "^2.0.0"
773 | }
774 | },
775 | "has-ansi": {
776 | "version": "2.0.0",
777 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
778 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
779 | "dev": true,
780 | "requires": {
781 | "ansi-regex": "^2.0.0"
782 | }
783 | },
784 | "has-flag": {
785 | "version": "3.0.0",
786 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
787 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
788 | "dev": true
789 | },
790 | "htm": {
791 | "version": "3.0.4",
792 | "resolved": "https://registry.npmjs.org/htm/-/htm-3.0.4.tgz",
793 | "integrity": "sha512-VRdvxX3tmrXuT/Ovt59NMp/ORMFi4bceFMDjos1PV4E0mV+5votuID8R60egR9A4U8nLt238R/snlJGz3UYiTQ=="
794 | },
795 | "http-cache-semantics": {
796 | "version": "4.1.0",
797 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
798 | "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
799 | "dev": true
800 | },
801 | "http-proxy": {
802 | "version": "1.18.1",
803 | "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
804 | "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
805 | "dev": true,
806 | "requires": {
807 | "eventemitter3": "^4.0.0",
808 | "follow-redirects": "^1.0.0",
809 | "requires-port": "^1.0.0"
810 | }
811 | },
812 | "http2-wrapper": {
813 | "version": "1.0.0-beta.5.2",
814 | "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz",
815 | "integrity": "sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ==",
816 | "dev": true,
817 | "requires": {
818 | "quick-lru": "^5.1.1",
819 | "resolve-alpn": "^1.0.0"
820 | }
821 | },
822 | "human-signals": {
823 | "version": "1.1.1",
824 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
825 | "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
826 | "dev": true
827 | },
828 | "icss-replace-symbols": {
829 | "version": "1.1.0",
830 | "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
831 | "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
832 | "dev": true
833 | },
834 | "immer": {
835 | "version": "7.0.7",
836 | "resolved": "https://registry.npmjs.org/immer/-/immer-7.0.7.tgz",
837 | "integrity": "sha512-Q8yYwVADJXrNfp1ZUAh4XDHkcoE3wpdpb4mC5abDSajs2EbW8+cGdPyAnglMyLnm7EF6ojD2xBFX7L5i4TIytw=="
838 | },
839 | "import-fresh": {
840 | "version": "3.2.1",
841 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
842 | "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
843 | "dev": true,
844 | "requires": {
845 | "parent-module": "^1.0.0",
846 | "resolve-from": "^4.0.0"
847 | },
848 | "dependencies": {
849 | "resolve-from": {
850 | "version": "4.0.0",
851 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
852 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
853 | "dev": true
854 | }
855 | }
856 | },
857 | "imurmurhash": {
858 | "version": "0.1.4",
859 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
860 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
861 | "dev": true
862 | },
863 | "indent-string": {
864 | "version": "4.0.0",
865 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
866 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
867 | "dev": true
868 | },
869 | "infer-owner": {
870 | "version": "1.0.4",
871 | "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
872 | "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
873 | "dev": true
874 | },
875 | "inflight": {
876 | "version": "1.0.6",
877 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
878 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
879 | "dev": true,
880 | "requires": {
881 | "once": "^1.3.0",
882 | "wrappy": "1"
883 | }
884 | },
885 | "inherits": {
886 | "version": "2.0.4",
887 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
888 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
889 | "dev": true
890 | },
891 | "is-arrayish": {
892 | "version": "0.2.1",
893 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
894 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
895 | "dev": true
896 | },
897 | "is-binary-path": {
898 | "version": "2.1.0",
899 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
900 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
901 | "dev": true,
902 | "requires": {
903 | "binary-extensions": "^2.0.0"
904 | }
905 | },
906 | "is-builtin-module": {
907 | "version": "3.0.0",
908 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.0.0.tgz",
909 | "integrity": "sha512-/93sDihsAD652hrMEbJGbMAVBf1qc96kyThHQ0CAOONHaE3aROLpTjDe4WQ5aoC5ITHFxEq1z8XqSU7km+8amw==",
910 | "dev": true,
911 | "requires": {
912 | "builtin-modules": "^3.0.0"
913 | }
914 | },
915 | "is-docker": {
916 | "version": "2.1.1",
917 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz",
918 | "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==",
919 | "dev": true
920 | },
921 | "is-extglob": {
922 | "version": "2.1.1",
923 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
924 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
925 | "dev": true
926 | },
927 | "is-glob": {
928 | "version": "4.0.1",
929 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
930 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
931 | "dev": true,
932 | "requires": {
933 | "is-extglob": "^2.1.1"
934 | }
935 | },
936 | "is-module": {
937 | "version": "1.0.0",
938 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
939 | "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
940 | "dev": true
941 | },
942 | "is-number": {
943 | "version": "7.0.0",
944 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
945 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
946 | "dev": true
947 | },
948 | "is-reference": {
949 | "version": "1.2.1",
950 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
951 | "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
952 | "dev": true,
953 | "requires": {
954 | "@types/estree": "*"
955 | }
956 | },
957 | "is-stream": {
958 | "version": "2.0.0",
959 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
960 | "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
961 | "dev": true
962 | },
963 | "is-wsl": {
964 | "version": "2.2.0",
965 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
966 | "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
967 | "dev": true,
968 | "requires": {
969 | "is-docker": "^2.0.0"
970 | }
971 | },
972 | "isexe": {
973 | "version": "2.0.0",
974 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
975 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
976 | "dev": true
977 | },
978 | "js-tokens": {
979 | "version": "4.0.0",
980 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
981 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
982 | },
983 | "json-buffer": {
984 | "version": "3.0.1",
985 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
986 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
987 | "dev": true
988 | },
989 | "json-parse-even-better-errors": {
990 | "version": "2.3.0",
991 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.0.tgz",
992 | "integrity": "sha512-o3aP+RsWDJZayj1SbHNQAI8x0v3T3SKiGoZlNYfbUP1S3omJQ6i9CnqADqkSPaOAxwua4/1YWx5CM7oiChJt2Q==",
993 | "dev": true
994 | },
995 | "jsonschema": {
996 | "version": "1.2.6",
997 | "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.6.tgz",
998 | "integrity": "sha512-SqhURKZG07JyKKeo/ir24QnS4/BV7a6gQy93bUSe4lUdNp0QNpIz2c9elWJQ9dpc5cQYY6cvCzgRwy0MQCLyqA==",
999 | "dev": true
1000 | },
1001 | "keyv": {
1002 | "version": "4.0.1",
1003 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.1.tgz",
1004 | "integrity": "sha512-xz6Jv6oNkbhrFCvCP7HQa8AaII8y8LRpoSm661NOKLr4uHuBwhX4epXrPQgF3+xdJnN4Esm5X0xwY4bOlALOtw==",
1005 | "dev": true,
1006 | "requires": {
1007 | "json-buffer": "3.0.1"
1008 | }
1009 | },
1010 | "kleur": {
1011 | "version": "4.1.1",
1012 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.1.tgz",
1013 | "integrity": "sha512-BsNhM6T/yTWFG580CRnYhT3LfUuPK7Hwrm+W2H0G8lK/nogalP5Nsrh/cHjxVVkzl0sFm7z8b8rNcZCfKxeoxA==",
1014 | "dev": true
1015 | },
1016 | "lines-and-columns": {
1017 | "version": "1.1.6",
1018 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
1019 | "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
1020 | "dev": true
1021 | },
1022 | "locate-path": {
1023 | "version": "5.0.0",
1024 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
1025 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
1026 | "dev": true,
1027 | "requires": {
1028 | "p-locate": "^4.1.0"
1029 | }
1030 | },
1031 | "loose-envify": {
1032 | "version": "1.4.0",
1033 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
1034 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
1035 | "requires": {
1036 | "js-tokens": "^3.0.0 || ^4.0.0"
1037 | }
1038 | },
1039 | "lowercase-keys": {
1040 | "version": "2.0.0",
1041 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
1042 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
1043 | "dev": true
1044 | },
1045 | "lru-cache": {
1046 | "version": "6.0.0",
1047 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
1048 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
1049 | "dev": true,
1050 | "requires": {
1051 | "yallist": "^4.0.0"
1052 | }
1053 | },
1054 | "magic-string": {
1055 | "version": "0.25.7",
1056 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
1057 | "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
1058 | "dev": true,
1059 | "requires": {
1060 | "sourcemap-codec": "^1.4.4"
1061 | }
1062 | },
1063 | "make-dir": {
1064 | "version": "3.1.0",
1065 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
1066 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
1067 | "dev": true,
1068 | "requires": {
1069 | "semver": "^6.0.0"
1070 | }
1071 | },
1072 | "merge-stream": {
1073 | "version": "2.0.0",
1074 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
1075 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
1076 | "dev": true
1077 | },
1078 | "mime-db": {
1079 | "version": "1.44.0",
1080 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
1081 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==",
1082 | "dev": true
1083 | },
1084 | "mime-types": {
1085 | "version": "2.1.27",
1086 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
1087 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
1088 | "dev": true,
1089 | "requires": {
1090 | "mime-db": "1.44.0"
1091 | }
1092 | },
1093 | "mimic-fn": {
1094 | "version": "2.1.0",
1095 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
1096 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
1097 | "dev": true
1098 | },
1099 | "mimic-response": {
1100 | "version": "1.0.1",
1101 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
1102 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
1103 | "dev": true
1104 | },
1105 | "minimatch": {
1106 | "version": "3.0.4",
1107 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1108 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1109 | "dev": true,
1110 | "requires": {
1111 | "brace-expansion": "^1.1.7"
1112 | }
1113 | },
1114 | "minipass": {
1115 | "version": "3.1.3",
1116 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz",
1117 | "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==",
1118 | "dev": true,
1119 | "requires": {
1120 | "yallist": "^4.0.0"
1121 | }
1122 | },
1123 | "minipass-collect": {
1124 | "version": "1.0.2",
1125 | "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
1126 | "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
1127 | "dev": true,
1128 | "requires": {
1129 | "minipass": "^3.0.0"
1130 | }
1131 | },
1132 | "minipass-flush": {
1133 | "version": "1.0.5",
1134 | "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
1135 | "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
1136 | "dev": true,
1137 | "requires": {
1138 | "minipass": "^3.0.0"
1139 | }
1140 | },
1141 | "minipass-pipeline": {
1142 | "version": "1.2.4",
1143 | "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
1144 | "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
1145 | "dev": true,
1146 | "requires": {
1147 | "minipass": "^3.0.0"
1148 | }
1149 | },
1150 | "minizlib": {
1151 | "version": "2.1.2",
1152 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
1153 | "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
1154 | "dev": true,
1155 | "requires": {
1156 | "minipass": "^3.0.0",
1157 | "yallist": "^4.0.0"
1158 | }
1159 | },
1160 | "mkdirp": {
1161 | "version": "1.0.4",
1162 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
1163 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
1164 | "dev": true
1165 | },
1166 | "ms": {
1167 | "version": "2.0.0",
1168 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1169 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
1170 | "dev": true
1171 | },
1172 | "normalize-path": {
1173 | "version": "3.0.0",
1174 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1175 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1176 | "dev": true
1177 | },
1178 | "normalize-url": {
1179 | "version": "4.5.0",
1180 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
1181 | "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==",
1182 | "dev": true
1183 | },
1184 | "npm-run-path": {
1185 | "version": "4.0.1",
1186 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
1187 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
1188 | "dev": true,
1189 | "requires": {
1190 | "path-key": "^3.0.0"
1191 | }
1192 | },
1193 | "object-assign": {
1194 | "version": "4.1.1",
1195 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1196 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
1197 | },
1198 | "once": {
1199 | "version": "1.4.0",
1200 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1201 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1202 | "dev": true,
1203 | "requires": {
1204 | "wrappy": "1"
1205 | }
1206 | },
1207 | "onetime": {
1208 | "version": "5.1.2",
1209 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
1210 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
1211 | "dev": true,
1212 | "requires": {
1213 | "mimic-fn": "^2.1.0"
1214 | }
1215 | },
1216 | "open": {
1217 | "version": "7.2.0",
1218 | "resolved": "https://registry.npmjs.org/open/-/open-7.2.0.tgz",
1219 | "integrity": "sha512-4HeyhxCvBTI5uBePsAdi55C5fmqnWZ2e2MlmvWi5KW5tdH5rxoiv/aMtbeVxKZc3eWkT1GymMnLG8XC4Rq4TDQ==",
1220 | "dev": true,
1221 | "requires": {
1222 | "is-docker": "^2.0.0",
1223 | "is-wsl": "^2.1.1"
1224 | }
1225 | },
1226 | "p-cancelable": {
1227 | "version": "2.0.0",
1228 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz",
1229 | "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==",
1230 | "dev": true
1231 | },
1232 | "p-finally": {
1233 | "version": "1.0.0",
1234 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
1235 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
1236 | "dev": true
1237 | },
1238 | "p-limit": {
1239 | "version": "2.3.0",
1240 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
1241 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
1242 | "dev": true,
1243 | "requires": {
1244 | "p-try": "^2.0.0"
1245 | }
1246 | },
1247 | "p-locate": {
1248 | "version": "4.1.0",
1249 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
1250 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
1251 | "dev": true,
1252 | "requires": {
1253 | "p-limit": "^2.2.0"
1254 | }
1255 | },
1256 | "p-map": {
1257 | "version": "4.0.0",
1258 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
1259 | "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
1260 | "dev": true,
1261 | "requires": {
1262 | "aggregate-error": "^3.0.0"
1263 | }
1264 | },
1265 | "p-queue": {
1266 | "version": "6.6.1",
1267 | "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.1.tgz",
1268 | "integrity": "sha512-miQiSxLYPYBxGkrldecZC18OTLjdUqnlRebGzPRiVxB8mco7usCmm7hFuxiTvp93K18JnLtE4KMMycjAu/cQQg==",
1269 | "dev": true,
1270 | "requires": {
1271 | "eventemitter3": "^4.0.4",
1272 | "p-timeout": "^3.1.0"
1273 | }
1274 | },
1275 | "p-timeout": {
1276 | "version": "3.2.0",
1277 | "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz",
1278 | "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==",
1279 | "dev": true,
1280 | "requires": {
1281 | "p-finally": "^1.0.0"
1282 | }
1283 | },
1284 | "p-try": {
1285 | "version": "2.2.0",
1286 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
1287 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
1288 | "dev": true
1289 | },
1290 | "parent-module": {
1291 | "version": "1.0.1",
1292 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
1293 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
1294 | "dev": true,
1295 | "requires": {
1296 | "callsites": "^3.0.0"
1297 | }
1298 | },
1299 | "parse-json": {
1300 | "version": "5.1.0",
1301 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz",
1302 | "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==",
1303 | "dev": true,
1304 | "requires": {
1305 | "@babel/code-frame": "^7.0.0",
1306 | "error-ex": "^1.3.1",
1307 | "json-parse-even-better-errors": "^2.3.0",
1308 | "lines-and-columns": "^1.1.6"
1309 | }
1310 | },
1311 | "path-exists": {
1312 | "version": "4.0.0",
1313 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
1314 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
1315 | "dev": true
1316 | },
1317 | "path-is-absolute": {
1318 | "version": "1.0.1",
1319 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1320 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
1321 | "dev": true
1322 | },
1323 | "path-key": {
1324 | "version": "3.1.1",
1325 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1326 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1327 | "dev": true
1328 | },
1329 | "path-parse": {
1330 | "version": "1.0.6",
1331 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
1332 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
1333 | "dev": true
1334 | },
1335 | "path-type": {
1336 | "version": "4.0.0",
1337 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
1338 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
1339 | "dev": true
1340 | },
1341 | "picomatch": {
1342 | "version": "2.2.2",
1343 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
1344 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
1345 | "dev": true
1346 | },
1347 | "pkg-dir": {
1348 | "version": "4.2.0",
1349 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
1350 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
1351 | "dev": true,
1352 | "requires": {
1353 | "find-up": "^4.0.0"
1354 | }
1355 | },
1356 | "postcss": {
1357 | "version": "6.0.1",
1358 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz",
1359 | "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=",
1360 | "dev": true,
1361 | "requires": {
1362 | "chalk": "^1.1.3",
1363 | "source-map": "^0.5.6",
1364 | "supports-color": "^3.2.3"
1365 | },
1366 | "dependencies": {
1367 | "ansi-styles": {
1368 | "version": "2.2.1",
1369 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
1370 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
1371 | "dev": true
1372 | },
1373 | "chalk": {
1374 | "version": "1.1.3",
1375 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
1376 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
1377 | "dev": true,
1378 | "requires": {
1379 | "ansi-styles": "^2.2.1",
1380 | "escape-string-regexp": "^1.0.2",
1381 | "has-ansi": "^2.0.0",
1382 | "strip-ansi": "^3.0.0",
1383 | "supports-color": "^2.0.0"
1384 | },
1385 | "dependencies": {
1386 | "supports-color": {
1387 | "version": "2.0.0",
1388 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
1389 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
1390 | "dev": true
1391 | }
1392 | }
1393 | },
1394 | "has-flag": {
1395 | "version": "1.0.0",
1396 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
1397 | "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
1398 | "dev": true
1399 | },
1400 | "supports-color": {
1401 | "version": "3.2.3",
1402 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
1403 | "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
1404 | "dev": true,
1405 | "requires": {
1406 | "has-flag": "^1.0.0"
1407 | }
1408 | }
1409 | }
1410 | },
1411 | "postcss-modules-extract-imports": {
1412 | "version": "1.1.0",
1413 | "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz",
1414 | "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=",
1415 | "dev": true,
1416 | "requires": {
1417 | "postcss": "^6.0.1"
1418 | }
1419 | },
1420 | "postcss-modules-local-by-default": {
1421 | "version": "1.2.0",
1422 | "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz",
1423 | "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
1424 | "dev": true,
1425 | "requires": {
1426 | "css-selector-tokenizer": "^0.7.0",
1427 | "postcss": "^6.0.1"
1428 | }
1429 | },
1430 | "postcss-modules-scope": {
1431 | "version": "1.1.0",
1432 | "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz",
1433 | "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
1434 | "dev": true,
1435 | "requires": {
1436 | "css-selector-tokenizer": "^0.7.0",
1437 | "postcss": "^6.0.1"
1438 | }
1439 | },
1440 | "postcss-modules-values": {
1441 | "version": "1.3.0",
1442 | "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz",
1443 | "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=",
1444 | "dev": true,
1445 | "requires": {
1446 | "icss-replace-symbols": "^1.1.0",
1447 | "postcss": "^6.0.1"
1448 | }
1449 | },
1450 | "promise-inflight": {
1451 | "version": "1.0.1",
1452 | "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
1453 | "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
1454 | "dev": true
1455 | },
1456 | "prop-types": {
1457 | "version": "15.7.2",
1458 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
1459 | "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
1460 | "requires": {
1461 | "loose-envify": "^1.4.0",
1462 | "object-assign": "^4.1.1",
1463 | "react-is": "^16.8.1"
1464 | }
1465 | },
1466 | "pump": {
1467 | "version": "3.0.0",
1468 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
1469 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
1470 | "dev": true,
1471 | "requires": {
1472 | "end-of-stream": "^1.1.0",
1473 | "once": "^1.3.1"
1474 | }
1475 | },
1476 | "quick-lru": {
1477 | "version": "5.1.1",
1478 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
1479 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
1480 | "dev": true
1481 | },
1482 | "react": {
1483 | "version": "16.13.1",
1484 | "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz",
1485 | "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==",
1486 | "requires": {
1487 | "loose-envify": "^1.1.0",
1488 | "object-assign": "^4.1.1",
1489 | "prop-types": "^15.6.2"
1490 | }
1491 | },
1492 | "react-dom": {
1493 | "version": "16.13.1",
1494 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz",
1495 | "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==",
1496 | "requires": {
1497 | "loose-envify": "^1.1.0",
1498 | "object-assign": "^4.1.1",
1499 | "prop-types": "^15.6.2",
1500 | "scheduler": "^0.19.1"
1501 | }
1502 | },
1503 | "react-is": {
1504 | "version": "16.13.1",
1505 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
1506 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
1507 | },
1508 | "react-refresh": {
1509 | "version": "0.8.3",
1510 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz",
1511 | "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==",
1512 | "dev": true
1513 | },
1514 | "readdirp": {
1515 | "version": "3.4.0",
1516 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
1517 | "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==",
1518 | "dev": true,
1519 | "requires": {
1520 | "picomatch": "^2.2.1"
1521 | }
1522 | },
1523 | "requires-port": {
1524 | "version": "1.0.0",
1525 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
1526 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
1527 | "dev": true
1528 | },
1529 | "resolve": {
1530 | "version": "1.17.0",
1531 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
1532 | "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
1533 | "dev": true,
1534 | "requires": {
1535 | "path-parse": "^1.0.6"
1536 | }
1537 | },
1538 | "resolve-alpn": {
1539 | "version": "1.0.0",
1540 | "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz",
1541 | "integrity": "sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==",
1542 | "dev": true
1543 | },
1544 | "resolve-from": {
1545 | "version": "5.0.0",
1546 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
1547 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
1548 | "dev": true
1549 | },
1550 | "responselike": {
1551 | "version": "2.0.0",
1552 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz",
1553 | "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==",
1554 | "dev": true,
1555 | "requires": {
1556 | "lowercase-keys": "^2.0.0"
1557 | }
1558 | },
1559 | "rimraf": {
1560 | "version": "3.0.2",
1561 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
1562 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
1563 | "dev": true,
1564 | "requires": {
1565 | "glob": "^7.1.3"
1566 | }
1567 | },
1568 | "rollup": {
1569 | "version": "2.26.5",
1570 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.26.5.tgz",
1571 | "integrity": "sha512-rCyFG3ZtQdnn9YwfuAVH0l/Om34BdO5lwCA0W6Hq+bNB21dVEBbCRxhaHOmu1G7OBFDWytbzAC104u7rxHwGjA==",
1572 | "dev": true,
1573 | "requires": {
1574 | "fsevents": "~2.1.2"
1575 | }
1576 | },
1577 | "rollup-plugin-inject": {
1578 | "version": "3.0.2",
1579 | "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz",
1580 | "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==",
1581 | "dev": true,
1582 | "requires": {
1583 | "estree-walker": "^0.6.1",
1584 | "magic-string": "^0.25.3",
1585 | "rollup-pluginutils": "^2.8.1"
1586 | },
1587 | "dependencies": {
1588 | "estree-walker": {
1589 | "version": "0.6.1",
1590 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
1591 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
1592 | "dev": true
1593 | }
1594 | }
1595 | },
1596 | "rollup-plugin-node-polyfills": {
1597 | "version": "0.2.1",
1598 | "resolved": "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz",
1599 | "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==",
1600 | "dev": true,
1601 | "requires": {
1602 | "rollup-plugin-inject": "^3.0.0"
1603 | }
1604 | },
1605 | "rollup-pluginutils": {
1606 | "version": "2.8.2",
1607 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
1608 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
1609 | "dev": true,
1610 | "requires": {
1611 | "estree-walker": "^0.6.1"
1612 | },
1613 | "dependencies": {
1614 | "estree-walker": {
1615 | "version": "0.6.1",
1616 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
1617 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
1618 | "dev": true
1619 | }
1620 | }
1621 | },
1622 | "scheduler": {
1623 | "version": "0.19.1",
1624 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz",
1625 | "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==",
1626 | "requires": {
1627 | "loose-envify": "^1.1.0",
1628 | "object-assign": "^4.1.1"
1629 | }
1630 | },
1631 | "semver": {
1632 | "version": "6.3.0",
1633 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
1634 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
1635 | "dev": true
1636 | },
1637 | "shebang-command": {
1638 | "version": "2.0.0",
1639 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1640 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1641 | "dev": true,
1642 | "requires": {
1643 | "shebang-regex": "^3.0.0"
1644 | }
1645 | },
1646 | "shebang-regex": {
1647 | "version": "3.0.0",
1648 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1649 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1650 | "dev": true
1651 | },
1652 | "signal-exit": {
1653 | "version": "3.0.3",
1654 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
1655 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
1656 | "dev": true
1657 | },
1658 | "slash": {
1659 | "version": "3.0.0",
1660 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
1661 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
1662 | "dev": true
1663 | },
1664 | "snowpack": {
1665 | "version": "2.9.0",
1666 | "resolved": "https://registry.npmjs.org/snowpack/-/snowpack-2.9.0.tgz",
1667 | "integrity": "sha512-dw1pJYqGV4No7LtSXnTnWXuoGkU/7X45vYrx95UxqH5+e7bgZXrDR8eh6KX+/tP8sAEF5lJWYZDucv/8eRr5gQ==",
1668 | "dev": true,
1669 | "requires": {
1670 | "@babel/plugin-syntax-import-meta": "^7.10.4",
1671 | "@rollup/plugin-alias": "^3.0.1",
1672 | "@rollup/plugin-commonjs": "^15.0.0",
1673 | "@rollup/plugin-inject": "^4.0.2",
1674 | "@rollup/plugin-json": "^4.0.0",
1675 | "@rollup/plugin-node-resolve": "^9.0.0",
1676 | "@snowpack/plugin-build-script": "^2.0.6",
1677 | "@snowpack/plugin-run-script": "^2.1.1",
1678 | "cacache": "^15.0.0",
1679 | "cachedir": "^2.3.0",
1680 | "chokidar": "^3.4.0",
1681 | "compressible": "^2.0.18",
1682 | "cosmiconfig": "^6.0.0",
1683 | "css-modules-loader-core": "^1.1.0",
1684 | "deepmerge": "^4.2.2",
1685 | "detect-port": "^1.3.0",
1686 | "es-module-lexer": "^0.3.17",
1687 | "esbuild": "^0.6.11",
1688 | "etag": "^1.8.1",
1689 | "execa": "^4.0.3",
1690 | "find-cache-dir": "^3.3.1",
1691 | "find-up": "^4.1.0",
1692 | "glob": "^7.1.4",
1693 | "got": "^11.1.4",
1694 | "http-proxy": "^1.18.1",
1695 | "is-builtin-module": "^3.0.0",
1696 | "jsonschema": "^1.2.5",
1697 | "kleur": "^4.1.0",
1698 | "mime-types": "^2.1.26",
1699 | "mkdirp": "^1.0.3",
1700 | "npm-run-path": "^4.0.1",
1701 | "open": "^7.0.4",
1702 | "p-queue": "^6.2.1",
1703 | "resolve-from": "^5.0.0",
1704 | "rimraf": "^3.0.0",
1705 | "rollup": "^2.23.0",
1706 | "rollup-plugin-node-polyfills": "^0.2.1",
1707 | "signal-exit": "^3.0.3",
1708 | "strip-comments": "^2.0.1",
1709 | "tar": "^6.0.1",
1710 | "validate-npm-package-name": "^3.0.0",
1711 | "ws": "^7.3.0",
1712 | "yargs-parser": "^18.1.3"
1713 | }
1714 | },
1715 | "source-map": {
1716 | "version": "0.5.7",
1717 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
1718 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
1719 | "dev": true
1720 | },
1721 | "sourcemap-codec": {
1722 | "version": "1.4.8",
1723 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
1724 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
1725 | "dev": true
1726 | },
1727 | "ssri": {
1728 | "version": "8.0.0",
1729 | "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.0.tgz",
1730 | "integrity": "sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==",
1731 | "dev": true,
1732 | "requires": {
1733 | "minipass": "^3.1.1"
1734 | }
1735 | },
1736 | "strip-ansi": {
1737 | "version": "3.0.1",
1738 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
1739 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
1740 | "dev": true,
1741 | "requires": {
1742 | "ansi-regex": "^2.0.0"
1743 | }
1744 | },
1745 | "strip-comments": {
1746 | "version": "2.0.1",
1747 | "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz",
1748 | "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==",
1749 | "dev": true
1750 | },
1751 | "strip-final-newline": {
1752 | "version": "2.0.0",
1753 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
1754 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
1755 | "dev": true
1756 | },
1757 | "supports-color": {
1758 | "version": "5.5.0",
1759 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1760 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1761 | "dev": true,
1762 | "requires": {
1763 | "has-flag": "^3.0.0"
1764 | }
1765 | },
1766 | "tar": {
1767 | "version": "6.0.5",
1768 | "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.5.tgz",
1769 | "integrity": "sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg==",
1770 | "dev": true,
1771 | "requires": {
1772 | "chownr": "^2.0.0",
1773 | "fs-minipass": "^2.0.0",
1774 | "minipass": "^3.0.0",
1775 | "minizlib": "^2.1.1",
1776 | "mkdirp": "^1.0.3",
1777 | "yallist": "^4.0.0"
1778 | }
1779 | },
1780 | "to-regex-range": {
1781 | "version": "5.0.1",
1782 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1783 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1784 | "dev": true,
1785 | "requires": {
1786 | "is-number": "^7.0.0"
1787 | }
1788 | },
1789 | "unique-filename": {
1790 | "version": "1.1.1",
1791 | "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
1792 | "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
1793 | "dev": true,
1794 | "requires": {
1795 | "unique-slug": "^2.0.0"
1796 | }
1797 | },
1798 | "unique-slug": {
1799 | "version": "2.0.2",
1800 | "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
1801 | "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
1802 | "dev": true,
1803 | "requires": {
1804 | "imurmurhash": "^0.1.4"
1805 | }
1806 | },
1807 | "validate-npm-package-name": {
1808 | "version": "3.0.0",
1809 | "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
1810 | "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=",
1811 | "dev": true,
1812 | "requires": {
1813 | "builtins": "^1.0.3"
1814 | }
1815 | },
1816 | "which": {
1817 | "version": "2.0.2",
1818 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
1819 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1820 | "dev": true,
1821 | "requires": {
1822 | "isexe": "^2.0.0"
1823 | }
1824 | },
1825 | "wrappy": {
1826 | "version": "1.0.2",
1827 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1828 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
1829 | "dev": true
1830 | },
1831 | "ws": {
1832 | "version": "7.3.1",
1833 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz",
1834 | "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==",
1835 | "dev": true
1836 | },
1837 | "yallist": {
1838 | "version": "4.0.0",
1839 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
1840 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
1841 | "dev": true
1842 | },
1843 | "yaml": {
1844 | "version": "1.10.0",
1845 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz",
1846 | "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==",
1847 | "dev": true
1848 | },
1849 | "yargs-parser": {
1850 | "version": "18.1.3",
1851 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
1852 | "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
1853 | "dev": true,
1854 | "requires": {
1855 | "camelcase": "^5.0.0",
1856 | "decamelize": "^1.2.0"
1857 | }
1858 | }
1859 | }
1860 | }
1861 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "minimal-react",
3 | "version": "1.0.0",
4 | "scripts": {
5 | "start": "snowpack dev",
6 | "build": "snowpack build"
7 | },
8 | "devDependencies": {
9 | "@snowpack/plugin-react-refresh": "^2.1.0",
10 | "snowpack": "^2.9.0"
11 | },
12 | "dependencies": {
13 | "htm": "^3.0.4",
14 | "immer": "^7.0.7",
15 | "react": "^16.13.1",
16 | "react-dom": "^16.13.1"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/snowpack.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "mount": {
3 | "html": "/",
4 | "js": "/js"
5 | },
6 | "devOptions": {
7 | "open": "none"
8 | },
9 | "// devOptions": [
10 | "Switch off automatic opening of browser tabs"
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------