├── .gitignore ├── README-ja.md ├── README.md ├── package-lock.json ├── package.json ├── public ├── css │ └── main.css └── index.html ├── shadow-cljs.edn └── src └── main └── starter └── browser.cljs /.gitignore: -------------------------------------------------------------------------------- 1 | /public/js 2 | /node_modules 3 | /target 4 | /.shadow-cljs 5 | /*.iml 6 | /.nrepl-port 7 | /.idea 8 | -------------------------------------------------------------------------------- /README-ja.md: -------------------------------------------------------------------------------- 1 | # shadow-cljs - ブラウザ・クイックスタート 2 | 3 | これはブラウザ上で動作するCLJSプロジェクトで利用できる最小限のテンプレートです。 4 | 5 | ## 必要なソフトウェア 6 | 7 | - [node.js (v6.0.0+)](https://nodejs.org/en/download/) 8 | - [Java JDK (8+)](http://www.oracle.com/technetwork/java/javase/downloads/index.html) または [Open JDK (8+)](http://jdk.java.net/10/) 9 | 10 | ## ユーザーガイド 11 | 12 | このリポジトリでは、基本的なブラウザ向けのビルド方法を示します。 13 | 14 | 詳細は完全な[ユーザーガイド](https://shadow-cljs.github.io/docs/UsersGuide.html)をご参照ください。 15 | 16 | 17 | ## 例の実行 18 | 19 | ```bash 20 | git clone https://github.com/shadow-cljs/quickstart-browser.git quickstart 21 | cd quickstart 22 | npm install 23 | npx shadow-cljs server 24 | ``` 25 | 26 | 以上により `shadow-cljs` サーバープロセスが実行され、以下のすべてのコマンドはこのプロセスに応答します。 27 | このプロセスを実行したまま、新しいターミナルを開いて続行してください。 28 | 29 | 最初の起動は、すべての依存関係をダウンロードして準備作業を行う必要があるため、少し時間がかかります。 30 | これが実行されると、すぐに始められます。 31 | 32 | ```txt 33 | npx shadow-cljs watch app 34 | ``` 35 | 36 | これにより設定された `:app` ビルドのコンパイルが開始して、ファイルを変更するたびに再コンパイルします。 37 | 38 | "Build completed." というメッセージが表示されたら、ビルドを使用する準備が整いました。 39 | 40 | ```txt 41 | [:app] Build completed. (23 files, 4 compiled, 0 warnings, 7.41s) 42 | ``` 43 | 44 | では [http://localhost:8020](http://localhost:8020)を開きましょう。 45 | 46 | このアプリは、最も便利な開発ツールが設定された基本的なスケルトンに過ぎません。 47 | 48 | `shadow-cljs` の設定は `shadow-cljs.edn` でします。次のようなものです。 49 | 50 | ```clojure 51 | ;; shadow-cljs の設定 52 | {:source-paths ; .cljs ファイルはここで指定します 53 | ["src/dev" 54 | "src/main" 55 | "src/test"] 56 | 57 | :dependencies ; 後ほど説明します 58 | [] 59 | 60 | :dev-http ; http://localhost:8020 上で http 開発用サーバーを起動し、`public` をサーブします。 61 | {8020 "public"} 62 | 63 | :builds 64 | {:app ; build identifier 65 | {:target :browser 66 | :output-dir "public/js" 67 | :asset-path "/js" 68 | 69 | :modules 70 | {:main ; becomes public/js/main.js 71 | {:init-fn starter.browser/init}}}}} 72 | ``` 73 | 74 | この設定では、`:target` を `:browser` に設定した `:app` ビルドを定義します。 75 | すべての出力は `public/js` に書き込まれます。 76 | これはプロジェクトのルートからの相対パスです。つまり、`shadow-cljs.edn` の設定があるディレクトリからの相対パスです。 77 | 78 | `:modules` は、出力をどのようにまとめるかを定義します。 79 | 今のところ、1つのファイルだけが必要です。 80 | `main` モジュールは `public/js/main.js` に書き込まれ、`:entrices` のコードと、それらの依存関係をすべて含みます。 81 | 82 | 最後の部分は、`http://localhost:8020` を開いたときに読み込まれる実際の `index.html` です。 83 | この index ファイルは、生成された `js/main.js` をロードして、`src/main/start/browser.cljs` で定義された `start.browser.init` を呼び出します。 84 | 85 | ```html 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | Browser Starter 94 | 95 | 96 |

shadow-cljs - Browser

97 |
98 | 99 | 100 | 101 | 102 | ``` 103 | 104 | ## ライブリロード 105 | 106 | ライブリロードの動作を確認するには、`src/main/start/browser.cljs`を編集します。 107 | ブラウザのコンソールにいくつかの出力が表示されます。 108 | 109 | ## REPL 110 | 111 | 開発時には、REPLが非常に便利です。 112 | 113 | コマンドラインから`npx shadow-cljs cljs-repl app`を使用します。 114 | 115 | ``` 116 | shadow-cljs - config .../shadow-cljs.edn 117 | shadow-cljs - connected to server 118 | cljs.user=> 119 | ``` 120 | 121 | これで、ブラウザ上でコードを評価することができるようになりました(ブラウザを開いていることが前提です)。 122 | 試しに `(js/alert "Hi.")` を実行してみてください。 123 | ここでたくさんの文字を入力するつもりなら、`rlwrap npx shadow-cljs cljs-repl app`を使用するとよいでしょう。 124 | 125 | REPLを終了するには、`CTRL+C`か、`:repl/quit`と入力します。 126 | 127 | ## リリース 128 | 129 | 最初に始めた `watch` プロセスは、すべて開発のためのものです。 130 | REPLや他のすべての開発ツールに必要なコードを注入しますが、 131 | コードを「プロダクション」(つまり一般に公開すること)に投入する際には、そのようなコードは必要ありません。 132 | 133 | `release`アクションは、すべての開発コードを削除し、コードをClosure Compilerに通して、最小化された`main.js`ファイルを生成します。 134 | このファイルは `watch` で作成されたファイルを上書きするため、まず watch プロセスを停止する必要があります。 135 | 136 | `CTRL+C`で`watch`プロセスを停止し、代わりに`npx shadow-cljs release app`を実行します。 137 | 138 | `http://localhost:8020` を開くと、`release` のビルドが動作しているのを見ることができます。 139 | 通常だと、この時点で `public` ディレクトリを プロダクションの Web サーバにコピーします。 140 | 141 | デフォルトの設定では、`watch` で作成された `public/js/main.js` を上書きしていることに注意してください。 142 | リリースビルドに使用する別のパスを設定することもできますが、 143 | 出力を同じファイルに書き込むことで`index.html` を変更する必要がなくなり、すべてをそのままテストすることができます。 144 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # shadow-cljs - browser quickstart 2 | 3 | This is a minimum template you can use as the basis for CLJS projects intended to run in the browser. 4 | 5 | ## Required Software 6 | 7 | - [node.js (v6.0.0+)](https://nodejs.org/en/download/) 8 | - [Java JDK (8+)](http://www.oracle.com/technetwork/java/javase/downloads/index.html) or [Open JDK (8+)](http://jdk.java.net/10/) 9 | 10 | ## User Guide 11 | 12 | This repository only shows a basic example of how to get a basic Browser build. 13 | 14 | Please refer to the full [User Guide](https://shadow-cljs.github.io/docs/UsersGuide.html) for more information. 15 | 16 | 17 | ## Running the Example 18 | 19 | ```bash 20 | git clone https://github.com/shadow-cljs/quickstart-browser.git quickstart 21 | cd quickstart 22 | npm install 23 | npx shadow-cljs server 24 | ``` 25 | 26 | This runs the `shadow-cljs` server process which all following commands will talk to. Just leave it running and open a new terminal to continue. 27 | 28 | The first startup takes a bit of time since it has to download all the dependencies and do some prep work. Once this is running we can get started. 29 | 30 | ```txt 31 | npx shadow-cljs watch app 32 | ``` 33 | 34 | This will begin the compilation of the configured `:app` build and re-compile whenever you change a file. 35 | 36 | When you see a "Build completed." message your build is ready to be used. 37 | 38 | ```txt 39 | [:app] Build completed. (23 files, 4 compiled, 0 warnings, 7.41s) 40 | ``` 41 | 42 | You can now then open [http://localhost:8020](http://localhost:8020). 43 | 44 | The app is only a very basic skeleton with the most useful development tools configured. 45 | 46 | `shadow-cljs` is configured by the `shadow-cljs.edn` config. It looks like this: 47 | 48 | ```clojure 49 | ;; shadow-cljs configuration 50 | {:source-paths ; .cljs files go here 51 | ["src/dev" 52 | "src/main" 53 | "src/test"] 54 | 55 | :dependencies ; covered later 56 | [] 57 | 58 | :dev-http ; starts a http dev server on http://localhost:8020 and serves `public` 59 | {8020 "public"} 60 | 61 | :builds 62 | {:app ; build identifier 63 | {:target :browser 64 | :output-dir "public/js" 65 | :asset-path "/js" 66 | 67 | :modules 68 | {:main ; becomes public/js/main.js 69 | {:init-fn starter.browser/init}}}}} 70 | 71 | ``` 72 | 73 | It defines the `:app` build with the `:target` set to `:browser`. All output will be written to `public/js` which is a path relative to the project root (ie. the directory the `shadow-cljs.edn` config is in). 74 | 75 | `:modules` defines the how the output should be bundled together. For now we just want one file. The `:main` module will be written to `public/js/main.js`, it will include the code from the `:entries` and all their dependencies. 76 | 77 | The last part is the actual `index.html` that is loaded when you open `http://localhost:8020`. It loads the generated `/js/main.js` and then calls `start.browser.init` which we defined in the `src/main/start/browser.cljs`. 78 | 79 | ```html 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | Browser Starter 88 | 89 | 90 |

shadow-cljs - Browser

91 |
92 | 93 | 94 | 95 | 96 | ``` 97 | 98 | ## Live reload 99 | 100 | To see the live reload in action you can edit the `src/main/start/browser.cljs`. Some output will be printed in the browser console. 101 | 102 | ## REPL 103 | 104 | During development it the REPL is very useful. 105 | 106 | From the command line use `npx shadow-cljs cljs-repl app`. 107 | 108 | ``` 109 | shadow-cljs - config .../shadow-cljs.edn 110 | shadow-cljs - connected to server 111 | cljs.user=> 112 | ``` 113 | 114 | This can now be used to eval code in the browser (assuming you still have it open). Try `(js/alert "Hi.")` and take it from there. You might want to use `rlwrap npx shadow-cljs cljs-repl app` if you intend to type a lot here. 115 | 116 | You can exit the REPL by either `CTRL+C` or typing `:repl/quit`. 117 | 118 | ## Release 119 | 120 | The `watch` process we started is all about development. It injects the code required for the REPL and the all other devtools but we do not want any of that when putting the code into "production" (ie. making it available publicly). 121 | 122 | The `release` action will remove all development code and run the code through the Closure Compiler to produce a minified `main.js` file. Since that will overwrite the file created by the `watch` we first need to stop that. 123 | 124 | Use `CTRL+C` to stop the `watch` process and instead run `npx shadow-cljs release app`. 125 | 126 | When done you can open `http://localhost:8020` and see the `release` build in action. At this point you would usually copy the `public` directory to the "production" web server. 127 | 128 | Note that in the default config we overwrote the `public/js/main.js` created by the `watch`. You can also configure a different path to use for release builds but writing the output to the same file means we do not have to change the `index.html` and test everything as is. 129 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "quickstart-browser", 3 | "lockfileVersion": 2, 4 | "requires": true, 5 | "packages": { 6 | "": { 7 | "devDependencies": { 8 | "shadow-cljs": "^2.26.2" 9 | } 10 | }, 11 | "node_modules/asn1.js": { 12 | "version": "5.4.1", 13 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", 14 | "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", 15 | "dev": true, 16 | "dependencies": { 17 | "bn.js": "^4.0.0", 18 | "inherits": "^2.0.1", 19 | "minimalistic-assert": "^1.0.0", 20 | "safer-buffer": "^2.1.0" 21 | } 22 | }, 23 | "node_modules/asn1.js/node_modules/bn.js": { 24 | "version": "4.12.0", 25 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 26 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 27 | "dev": true 28 | }, 29 | "node_modules/assert": { 30 | "version": "1.5.0", 31 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", 32 | "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", 33 | "dev": true, 34 | "dependencies": { 35 | "object-assign": "^4.1.1", 36 | "util": "0.10.3" 37 | } 38 | }, 39 | "node_modules/assert/node_modules/inherits": { 40 | "version": "2.0.1", 41 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 42 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", 43 | "dev": true 44 | }, 45 | "node_modules/assert/node_modules/util": { 46 | "version": "0.10.3", 47 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", 48 | "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", 49 | "dev": true, 50 | "dependencies": { 51 | "inherits": "2.0.1" 52 | } 53 | }, 54 | "node_modules/base64-js": { 55 | "version": "1.5.1", 56 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 57 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 58 | "dev": true, 59 | "funding": [ 60 | { 61 | "type": "github", 62 | "url": "https://github.com/sponsors/feross" 63 | }, 64 | { 65 | "type": "patreon", 66 | "url": "https://www.patreon.com/feross" 67 | }, 68 | { 69 | "type": "consulting", 70 | "url": "https://feross.org/support" 71 | } 72 | ] 73 | }, 74 | "node_modules/bn.js": { 75 | "version": "5.2.0", 76 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", 77 | "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", 78 | "dev": true 79 | }, 80 | "node_modules/brorand": { 81 | "version": "1.1.0", 82 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", 83 | "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", 84 | "dev": true 85 | }, 86 | "node_modules/browserify-aes": { 87 | "version": "1.2.0", 88 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", 89 | "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", 90 | "dev": true, 91 | "dependencies": { 92 | "buffer-xor": "^1.0.3", 93 | "cipher-base": "^1.0.0", 94 | "create-hash": "^1.1.0", 95 | "evp_bytestokey": "^1.0.3", 96 | "inherits": "^2.0.1", 97 | "safe-buffer": "^5.0.1" 98 | } 99 | }, 100 | "node_modules/browserify-cipher": { 101 | "version": "1.0.1", 102 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", 103 | "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", 104 | "dev": true, 105 | "dependencies": { 106 | "browserify-aes": "^1.0.4", 107 | "browserify-des": "^1.0.0", 108 | "evp_bytestokey": "^1.0.0" 109 | } 110 | }, 111 | "node_modules/browserify-des": { 112 | "version": "1.0.2", 113 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", 114 | "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", 115 | "dev": true, 116 | "dependencies": { 117 | "cipher-base": "^1.0.1", 118 | "des.js": "^1.0.0", 119 | "inherits": "^2.0.1", 120 | "safe-buffer": "^5.1.2" 121 | } 122 | }, 123 | "node_modules/browserify-rsa": { 124 | "version": "4.1.0", 125 | "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", 126 | "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", 127 | "dev": true, 128 | "dependencies": { 129 | "bn.js": "^5.0.0", 130 | "randombytes": "^2.0.1" 131 | } 132 | }, 133 | "node_modules/browserify-sign": { 134 | "version": "4.2.1", 135 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", 136 | "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", 137 | "dev": true, 138 | "dependencies": { 139 | "bn.js": "^5.1.1", 140 | "browserify-rsa": "^4.0.1", 141 | "create-hash": "^1.2.0", 142 | "create-hmac": "^1.1.7", 143 | "elliptic": "^6.5.3", 144 | "inherits": "^2.0.4", 145 | "parse-asn1": "^5.1.5", 146 | "readable-stream": "^3.6.0", 147 | "safe-buffer": "^5.2.0" 148 | } 149 | }, 150 | "node_modules/browserify-sign/node_modules/readable-stream": { 151 | "version": "3.6.0", 152 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 153 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 154 | "dev": true, 155 | "dependencies": { 156 | "inherits": "^2.0.3", 157 | "string_decoder": "^1.1.1", 158 | "util-deprecate": "^1.0.1" 159 | }, 160 | "engines": { 161 | "node": ">= 6" 162 | } 163 | }, 164 | "node_modules/browserify-zlib": { 165 | "version": "0.2.0", 166 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", 167 | "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", 168 | "dev": true, 169 | "dependencies": { 170 | "pako": "~1.0.5" 171 | } 172 | }, 173 | "node_modules/buffer": { 174 | "version": "4.9.2", 175 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", 176 | "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", 177 | "dev": true, 178 | "dependencies": { 179 | "base64-js": "^1.0.2", 180 | "ieee754": "^1.1.4", 181 | "isarray": "^1.0.0" 182 | } 183 | }, 184 | "node_modules/buffer-xor": { 185 | "version": "1.0.3", 186 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", 187 | "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", 188 | "dev": true 189 | }, 190 | "node_modules/builtin-status-codes": { 191 | "version": "3.0.0", 192 | "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", 193 | "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", 194 | "dev": true 195 | }, 196 | "node_modules/cipher-base": { 197 | "version": "1.0.4", 198 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", 199 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", 200 | "dev": true, 201 | "dependencies": { 202 | "inherits": "^2.0.1", 203 | "safe-buffer": "^5.0.1" 204 | } 205 | }, 206 | "node_modules/console-browserify": { 207 | "version": "1.2.0", 208 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", 209 | "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", 210 | "dev": true 211 | }, 212 | "node_modules/constants-browserify": { 213 | "version": "1.0.0", 214 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", 215 | "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", 216 | "dev": true 217 | }, 218 | "node_modules/core-util-is": { 219 | "version": "1.0.3", 220 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 221 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", 222 | "dev": true 223 | }, 224 | "node_modules/create-ecdh": { 225 | "version": "4.0.4", 226 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", 227 | "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", 228 | "dev": true, 229 | "dependencies": { 230 | "bn.js": "^4.1.0", 231 | "elliptic": "^6.5.3" 232 | } 233 | }, 234 | "node_modules/create-ecdh/node_modules/bn.js": { 235 | "version": "4.12.0", 236 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 237 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 238 | "dev": true 239 | }, 240 | "node_modules/create-hash": { 241 | "version": "1.2.0", 242 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", 243 | "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", 244 | "dev": true, 245 | "dependencies": { 246 | "cipher-base": "^1.0.1", 247 | "inherits": "^2.0.1", 248 | "md5.js": "^1.3.4", 249 | "ripemd160": "^2.0.1", 250 | "sha.js": "^2.4.0" 251 | } 252 | }, 253 | "node_modules/create-hmac": { 254 | "version": "1.1.7", 255 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", 256 | "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", 257 | "dev": true, 258 | "dependencies": { 259 | "cipher-base": "^1.0.3", 260 | "create-hash": "^1.1.0", 261 | "inherits": "^2.0.1", 262 | "ripemd160": "^2.0.0", 263 | "safe-buffer": "^5.0.1", 264 | "sha.js": "^2.4.8" 265 | } 266 | }, 267 | "node_modules/crypto-browserify": { 268 | "version": "3.12.0", 269 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", 270 | "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", 271 | "dev": true, 272 | "dependencies": { 273 | "browserify-cipher": "^1.0.0", 274 | "browserify-sign": "^4.0.0", 275 | "create-ecdh": "^4.0.0", 276 | "create-hash": "^1.1.0", 277 | "create-hmac": "^1.1.0", 278 | "diffie-hellman": "^5.0.0", 279 | "inherits": "^2.0.1", 280 | "pbkdf2": "^3.0.3", 281 | "public-encrypt": "^4.0.0", 282 | "randombytes": "^2.0.0", 283 | "randomfill": "^1.0.3" 284 | }, 285 | "engines": { 286 | "node": "*" 287 | } 288 | }, 289 | "node_modules/des.js": { 290 | "version": "1.0.1", 291 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", 292 | "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", 293 | "dev": true, 294 | "dependencies": { 295 | "inherits": "^2.0.1", 296 | "minimalistic-assert": "^1.0.0" 297 | } 298 | }, 299 | "node_modules/diffie-hellman": { 300 | "version": "5.0.3", 301 | "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", 302 | "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", 303 | "dev": true, 304 | "dependencies": { 305 | "bn.js": "^4.1.0", 306 | "miller-rabin": "^4.0.0", 307 | "randombytes": "^2.0.0" 308 | } 309 | }, 310 | "node_modules/diffie-hellman/node_modules/bn.js": { 311 | "version": "4.12.0", 312 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 313 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 314 | "dev": true 315 | }, 316 | "node_modules/domain-browser": { 317 | "version": "1.2.0", 318 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", 319 | "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", 320 | "dev": true, 321 | "engines": { 322 | "node": ">=0.4", 323 | "npm": ">=1.2" 324 | } 325 | }, 326 | "node_modules/elliptic": { 327 | "version": "6.5.4", 328 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", 329 | "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", 330 | "dev": true, 331 | "dependencies": { 332 | "bn.js": "^4.11.9", 333 | "brorand": "^1.1.0", 334 | "hash.js": "^1.0.0", 335 | "hmac-drbg": "^1.0.1", 336 | "inherits": "^2.0.4", 337 | "minimalistic-assert": "^1.0.1", 338 | "minimalistic-crypto-utils": "^1.0.1" 339 | } 340 | }, 341 | "node_modules/elliptic/node_modules/bn.js": { 342 | "version": "4.12.0", 343 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 344 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 345 | "dev": true 346 | }, 347 | "node_modules/events": { 348 | "version": "3.3.0", 349 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 350 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 351 | "dev": true, 352 | "engines": { 353 | "node": ">=0.8.x" 354 | } 355 | }, 356 | "node_modules/evp_bytestokey": { 357 | "version": "1.0.3", 358 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", 359 | "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", 360 | "dev": true, 361 | "dependencies": { 362 | "md5.js": "^1.3.4", 363 | "safe-buffer": "^5.1.1" 364 | } 365 | }, 366 | "node_modules/hash-base": { 367 | "version": "3.1.0", 368 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", 369 | "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", 370 | "dev": true, 371 | "dependencies": { 372 | "inherits": "^2.0.4", 373 | "readable-stream": "^3.6.0", 374 | "safe-buffer": "^5.2.0" 375 | }, 376 | "engines": { 377 | "node": ">=4" 378 | } 379 | }, 380 | "node_modules/hash-base/node_modules/readable-stream": { 381 | "version": "3.6.0", 382 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 383 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 384 | "dev": true, 385 | "dependencies": { 386 | "inherits": "^2.0.3", 387 | "string_decoder": "^1.1.1", 388 | "util-deprecate": "^1.0.1" 389 | }, 390 | "engines": { 391 | "node": ">= 6" 392 | } 393 | }, 394 | "node_modules/hash.js": { 395 | "version": "1.1.7", 396 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", 397 | "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", 398 | "dev": true, 399 | "dependencies": { 400 | "inherits": "^2.0.3", 401 | "minimalistic-assert": "^1.0.1" 402 | } 403 | }, 404 | "node_modules/hmac-drbg": { 405 | "version": "1.0.1", 406 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", 407 | "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", 408 | "dev": true, 409 | "dependencies": { 410 | "hash.js": "^1.0.3", 411 | "minimalistic-assert": "^1.0.0", 412 | "minimalistic-crypto-utils": "^1.0.1" 413 | } 414 | }, 415 | "node_modules/https-browserify": { 416 | "version": "1.0.0", 417 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", 418 | "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", 419 | "dev": true 420 | }, 421 | "node_modules/ieee754": { 422 | "version": "1.2.1", 423 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 424 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 425 | "dev": true, 426 | "funding": [ 427 | { 428 | "type": "github", 429 | "url": "https://github.com/sponsors/feross" 430 | }, 431 | { 432 | "type": "patreon", 433 | "url": "https://www.patreon.com/feross" 434 | }, 435 | { 436 | "type": "consulting", 437 | "url": "https://feross.org/support" 438 | } 439 | ] 440 | }, 441 | "node_modules/inherits": { 442 | "version": "2.0.4", 443 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 444 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 445 | "dev": true 446 | }, 447 | "node_modules/isarray": { 448 | "version": "1.0.0", 449 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 450 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 451 | "dev": true 452 | }, 453 | "node_modules/isexe": { 454 | "version": "2.0.0", 455 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 456 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 457 | "dev": true 458 | }, 459 | "node_modules/md5.js": { 460 | "version": "1.3.5", 461 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", 462 | "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", 463 | "dev": true, 464 | "dependencies": { 465 | "hash-base": "^3.0.0", 466 | "inherits": "^2.0.1", 467 | "safe-buffer": "^5.1.2" 468 | } 469 | }, 470 | "node_modules/miller-rabin": { 471 | "version": "4.0.1", 472 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", 473 | "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", 474 | "dev": true, 475 | "dependencies": { 476 | "bn.js": "^4.0.0", 477 | "brorand": "^1.0.1" 478 | }, 479 | "bin": { 480 | "miller-rabin": "bin/miller-rabin" 481 | } 482 | }, 483 | "node_modules/miller-rabin/node_modules/bn.js": { 484 | "version": "4.12.0", 485 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 486 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 487 | "dev": true 488 | }, 489 | "node_modules/minimalistic-assert": { 490 | "version": "1.0.1", 491 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", 492 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", 493 | "dev": true 494 | }, 495 | "node_modules/minimalistic-crypto-utils": { 496 | "version": "1.0.1", 497 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", 498 | "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", 499 | "dev": true 500 | }, 501 | "node_modules/node-libs-browser": { 502 | "version": "2.2.1", 503 | "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", 504 | "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", 505 | "dev": true, 506 | "dependencies": { 507 | "assert": "^1.1.1", 508 | "browserify-zlib": "^0.2.0", 509 | "buffer": "^4.3.0", 510 | "console-browserify": "^1.1.0", 511 | "constants-browserify": "^1.0.0", 512 | "crypto-browserify": "^3.11.0", 513 | "domain-browser": "^1.1.1", 514 | "events": "^3.0.0", 515 | "https-browserify": "^1.0.0", 516 | "os-browserify": "^0.3.0", 517 | "path-browserify": "0.0.1", 518 | "process": "^0.11.10", 519 | "punycode": "^1.2.4", 520 | "querystring-es3": "^0.2.0", 521 | "readable-stream": "^2.3.3", 522 | "stream-browserify": "^2.0.1", 523 | "stream-http": "^2.7.2", 524 | "string_decoder": "^1.0.0", 525 | "timers-browserify": "^2.0.4", 526 | "tty-browserify": "0.0.0", 527 | "url": "^0.11.0", 528 | "util": "^0.11.0", 529 | "vm-browserify": "^1.0.1" 530 | } 531 | }, 532 | "node_modules/object-assign": { 533 | "version": "4.1.1", 534 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 535 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 536 | "dev": true, 537 | "engines": { 538 | "node": ">=0.10.0" 539 | } 540 | }, 541 | "node_modules/os-browserify": { 542 | "version": "0.3.0", 543 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", 544 | "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", 545 | "dev": true 546 | }, 547 | "node_modules/pako": { 548 | "version": "1.0.11", 549 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 550 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", 551 | "dev": true 552 | }, 553 | "node_modules/parse-asn1": { 554 | "version": "5.1.6", 555 | "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", 556 | "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", 557 | "dev": true, 558 | "dependencies": { 559 | "asn1.js": "^5.2.0", 560 | "browserify-aes": "^1.0.0", 561 | "evp_bytestokey": "^1.0.0", 562 | "pbkdf2": "^3.0.3", 563 | "safe-buffer": "^5.1.1" 564 | } 565 | }, 566 | "node_modules/path-browserify": { 567 | "version": "0.0.1", 568 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", 569 | "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", 570 | "dev": true 571 | }, 572 | "node_modules/pbkdf2": { 573 | "version": "3.1.2", 574 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", 575 | "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", 576 | "dev": true, 577 | "dependencies": { 578 | "create-hash": "^1.1.2", 579 | "create-hmac": "^1.1.4", 580 | "ripemd160": "^2.0.1", 581 | "safe-buffer": "^5.0.1", 582 | "sha.js": "^2.4.8" 583 | }, 584 | "engines": { 585 | "node": ">=0.12" 586 | } 587 | }, 588 | "node_modules/process": { 589 | "version": "0.11.10", 590 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 591 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", 592 | "dev": true, 593 | "engines": { 594 | "node": ">= 0.6.0" 595 | } 596 | }, 597 | "node_modules/process-nextick-args": { 598 | "version": "2.0.1", 599 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 600 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 601 | "dev": true 602 | }, 603 | "node_modules/public-encrypt": { 604 | "version": "4.0.3", 605 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", 606 | "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", 607 | "dev": true, 608 | "dependencies": { 609 | "bn.js": "^4.1.0", 610 | "browserify-rsa": "^4.0.0", 611 | "create-hash": "^1.1.0", 612 | "parse-asn1": "^5.0.0", 613 | "randombytes": "^2.0.1", 614 | "safe-buffer": "^5.1.2" 615 | } 616 | }, 617 | "node_modules/public-encrypt/node_modules/bn.js": { 618 | "version": "4.12.0", 619 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 620 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 621 | "dev": true 622 | }, 623 | "node_modules/punycode": { 624 | "version": "1.4.1", 625 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 626 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", 627 | "dev": true 628 | }, 629 | "node_modules/querystring": { 630 | "version": "0.2.0", 631 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 632 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", 633 | "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", 634 | "dev": true, 635 | "engines": { 636 | "node": ">=0.4.x" 637 | } 638 | }, 639 | "node_modules/querystring-es3": { 640 | "version": "0.2.1", 641 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", 642 | "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", 643 | "dev": true, 644 | "engines": { 645 | "node": ">=0.4.x" 646 | } 647 | }, 648 | "node_modules/randombytes": { 649 | "version": "2.1.0", 650 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 651 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 652 | "dev": true, 653 | "dependencies": { 654 | "safe-buffer": "^5.1.0" 655 | } 656 | }, 657 | "node_modules/randomfill": { 658 | "version": "1.0.4", 659 | "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", 660 | "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", 661 | "dev": true, 662 | "dependencies": { 663 | "randombytes": "^2.0.5", 664 | "safe-buffer": "^5.1.0" 665 | } 666 | }, 667 | "node_modules/readable-stream": { 668 | "version": "2.3.7", 669 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 670 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 671 | "dev": true, 672 | "dependencies": { 673 | "core-util-is": "~1.0.0", 674 | "inherits": "~2.0.3", 675 | "isarray": "~1.0.0", 676 | "process-nextick-args": "~2.0.0", 677 | "safe-buffer": "~5.1.1", 678 | "string_decoder": "~1.1.1", 679 | "util-deprecate": "~1.0.1" 680 | } 681 | }, 682 | "node_modules/readable-stream/node_modules/safe-buffer": { 683 | "version": "5.1.2", 684 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 685 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 686 | "dev": true 687 | }, 688 | "node_modules/readable-stream/node_modules/string_decoder": { 689 | "version": "1.1.1", 690 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 691 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 692 | "dev": true, 693 | "dependencies": { 694 | "safe-buffer": "~5.1.0" 695 | } 696 | }, 697 | "node_modules/readline-sync": { 698 | "version": "1.4.10", 699 | "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", 700 | "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", 701 | "dev": true, 702 | "engines": { 703 | "node": ">= 0.8.0" 704 | } 705 | }, 706 | "node_modules/ripemd160": { 707 | "version": "2.0.2", 708 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", 709 | "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", 710 | "dev": true, 711 | "dependencies": { 712 | "hash-base": "^3.0.0", 713 | "inherits": "^2.0.1" 714 | } 715 | }, 716 | "node_modules/safe-buffer": { 717 | "version": "5.2.1", 718 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 719 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 720 | "dev": true, 721 | "funding": [ 722 | { 723 | "type": "github", 724 | "url": "https://github.com/sponsors/feross" 725 | }, 726 | { 727 | "type": "patreon", 728 | "url": "https://www.patreon.com/feross" 729 | }, 730 | { 731 | "type": "consulting", 732 | "url": "https://feross.org/support" 733 | } 734 | ] 735 | }, 736 | "node_modules/safer-buffer": { 737 | "version": "2.1.2", 738 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 739 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 740 | "dev": true 741 | }, 742 | "node_modules/setimmediate": { 743 | "version": "1.0.5", 744 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 745 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", 746 | "dev": true 747 | }, 748 | "node_modules/sha.js": { 749 | "version": "2.4.11", 750 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", 751 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", 752 | "dev": true, 753 | "dependencies": { 754 | "inherits": "^2.0.1", 755 | "safe-buffer": "^5.0.1" 756 | }, 757 | "bin": { 758 | "sha.js": "bin.js" 759 | } 760 | }, 761 | "node_modules/shadow-cljs": { 762 | "version": "2.26.2", 763 | "resolved": "https://registry.npmjs.org/shadow-cljs/-/shadow-cljs-2.26.2.tgz", 764 | "integrity": "sha512-xBJxBxSpfoVQLSDA+WN+ZgtnyA5qYf3EE4ARZpov0JOz0YBTdIQajnNYMs5+5OzCbbNfhWGLybyu/Pj4dIwsWw==", 765 | "dev": true, 766 | "dependencies": { 767 | "node-libs-browser": "^2.2.1", 768 | "readline-sync": "^1.4.7", 769 | "shadow-cljs-jar": "1.3.4", 770 | "source-map-support": "^0.4.15", 771 | "which": "^1.3.1", 772 | "ws": "^7.4.6" 773 | }, 774 | "bin": { 775 | "shadow-cljs": "cli/runner.js" 776 | }, 777 | "engines": { 778 | "node": ">=6.0.0" 779 | } 780 | }, 781 | "node_modules/shadow-cljs-jar": { 782 | "version": "1.3.4", 783 | "resolved": "https://registry.npmjs.org/shadow-cljs-jar/-/shadow-cljs-jar-1.3.4.tgz", 784 | "integrity": "sha512-cZB2pzVXBnhpJ6PQdsjO+j/MksR28mv4QD/hP/2y1fsIa9Z9RutYgh3N34FZ8Ktl4puAXaIGlct+gMCJ5BmwmA==", 785 | "dev": true 786 | }, 787 | "node_modules/source-map": { 788 | "version": "0.5.7", 789 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 790 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 791 | "dev": true, 792 | "engines": { 793 | "node": ">=0.10.0" 794 | } 795 | }, 796 | "node_modules/source-map-support": { 797 | "version": "0.4.18", 798 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", 799 | "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", 800 | "dev": true, 801 | "dependencies": { 802 | "source-map": "^0.5.6" 803 | } 804 | }, 805 | "node_modules/stream-browserify": { 806 | "version": "2.0.2", 807 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", 808 | "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", 809 | "dev": true, 810 | "dependencies": { 811 | "inherits": "~2.0.1", 812 | "readable-stream": "^2.0.2" 813 | } 814 | }, 815 | "node_modules/stream-http": { 816 | "version": "2.8.3", 817 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", 818 | "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", 819 | "dev": true, 820 | "dependencies": { 821 | "builtin-status-codes": "^3.0.0", 822 | "inherits": "^2.0.1", 823 | "readable-stream": "^2.3.6", 824 | "to-arraybuffer": "^1.0.0", 825 | "xtend": "^4.0.0" 826 | } 827 | }, 828 | "node_modules/string_decoder": { 829 | "version": "1.3.0", 830 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 831 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 832 | "dev": true, 833 | "dependencies": { 834 | "safe-buffer": "~5.2.0" 835 | } 836 | }, 837 | "node_modules/timers-browserify": { 838 | "version": "2.0.12", 839 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", 840 | "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", 841 | "dev": true, 842 | "dependencies": { 843 | "setimmediate": "^1.0.4" 844 | }, 845 | "engines": { 846 | "node": ">=0.6.0" 847 | } 848 | }, 849 | "node_modules/to-arraybuffer": { 850 | "version": "1.0.1", 851 | "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", 852 | "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", 853 | "dev": true 854 | }, 855 | "node_modules/tty-browserify": { 856 | "version": "0.0.0", 857 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", 858 | "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", 859 | "dev": true 860 | }, 861 | "node_modules/url": { 862 | "version": "0.11.0", 863 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", 864 | "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", 865 | "dev": true, 866 | "dependencies": { 867 | "punycode": "1.3.2", 868 | "querystring": "0.2.0" 869 | } 870 | }, 871 | "node_modules/url/node_modules/punycode": { 872 | "version": "1.3.2", 873 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", 874 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", 875 | "dev": true 876 | }, 877 | "node_modules/util": { 878 | "version": "0.11.1", 879 | "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", 880 | "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", 881 | "dev": true, 882 | "dependencies": { 883 | "inherits": "2.0.3" 884 | } 885 | }, 886 | "node_modules/util-deprecate": { 887 | "version": "1.0.2", 888 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 889 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 890 | "dev": true 891 | }, 892 | "node_modules/util/node_modules/inherits": { 893 | "version": "2.0.3", 894 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 895 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 896 | "dev": true 897 | }, 898 | "node_modules/vm-browserify": { 899 | "version": "1.1.2", 900 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", 901 | "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", 902 | "dev": true 903 | }, 904 | "node_modules/which": { 905 | "version": "1.3.1", 906 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 907 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 908 | "dev": true, 909 | "dependencies": { 910 | "isexe": "^2.0.0" 911 | }, 912 | "bin": { 913 | "which": "bin/which" 914 | } 915 | }, 916 | "node_modules/ws": { 917 | "version": "7.5.7", 918 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", 919 | "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", 920 | "dev": true, 921 | "engines": { 922 | "node": ">=8.3.0" 923 | }, 924 | "peerDependencies": { 925 | "bufferutil": "^4.0.1", 926 | "utf-8-validate": "^5.0.2" 927 | }, 928 | "peerDependenciesMeta": { 929 | "bufferutil": { 930 | "optional": true 931 | }, 932 | "utf-8-validate": { 933 | "optional": true 934 | } 935 | } 936 | }, 937 | "node_modules/xtend": { 938 | "version": "4.0.2", 939 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 940 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 941 | "dev": true, 942 | "engines": { 943 | "node": ">=0.4" 944 | } 945 | } 946 | }, 947 | "dependencies": { 948 | "asn1.js": { 949 | "version": "5.4.1", 950 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", 951 | "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", 952 | "dev": true, 953 | "requires": { 954 | "bn.js": "^4.0.0", 955 | "inherits": "^2.0.1", 956 | "minimalistic-assert": "^1.0.0", 957 | "safer-buffer": "^2.1.0" 958 | }, 959 | "dependencies": { 960 | "bn.js": { 961 | "version": "4.12.0", 962 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 963 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 964 | "dev": true 965 | } 966 | } 967 | }, 968 | "assert": { 969 | "version": "1.5.0", 970 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", 971 | "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", 972 | "dev": true, 973 | "requires": { 974 | "object-assign": "^4.1.1", 975 | "util": "0.10.3" 976 | }, 977 | "dependencies": { 978 | "inherits": { 979 | "version": "2.0.1", 980 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 981 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", 982 | "dev": true 983 | }, 984 | "util": { 985 | "version": "0.10.3", 986 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", 987 | "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", 988 | "dev": true, 989 | "requires": { 990 | "inherits": "2.0.1" 991 | } 992 | } 993 | } 994 | }, 995 | "base64-js": { 996 | "version": "1.5.1", 997 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 998 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 999 | "dev": true 1000 | }, 1001 | "bn.js": { 1002 | "version": "5.2.0", 1003 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", 1004 | "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", 1005 | "dev": true 1006 | }, 1007 | "brorand": { 1008 | "version": "1.1.0", 1009 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", 1010 | "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", 1011 | "dev": true 1012 | }, 1013 | "browserify-aes": { 1014 | "version": "1.2.0", 1015 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", 1016 | "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", 1017 | "dev": true, 1018 | "requires": { 1019 | "buffer-xor": "^1.0.3", 1020 | "cipher-base": "^1.0.0", 1021 | "create-hash": "^1.1.0", 1022 | "evp_bytestokey": "^1.0.3", 1023 | "inherits": "^2.0.1", 1024 | "safe-buffer": "^5.0.1" 1025 | } 1026 | }, 1027 | "browserify-cipher": { 1028 | "version": "1.0.1", 1029 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", 1030 | "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", 1031 | "dev": true, 1032 | "requires": { 1033 | "browserify-aes": "^1.0.4", 1034 | "browserify-des": "^1.0.0", 1035 | "evp_bytestokey": "^1.0.0" 1036 | } 1037 | }, 1038 | "browserify-des": { 1039 | "version": "1.0.2", 1040 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", 1041 | "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", 1042 | "dev": true, 1043 | "requires": { 1044 | "cipher-base": "^1.0.1", 1045 | "des.js": "^1.0.0", 1046 | "inherits": "^2.0.1", 1047 | "safe-buffer": "^5.1.2" 1048 | } 1049 | }, 1050 | "browserify-rsa": { 1051 | "version": "4.1.0", 1052 | "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", 1053 | "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", 1054 | "dev": true, 1055 | "requires": { 1056 | "bn.js": "^5.0.0", 1057 | "randombytes": "^2.0.1" 1058 | } 1059 | }, 1060 | "browserify-sign": { 1061 | "version": "4.2.1", 1062 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", 1063 | "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", 1064 | "dev": true, 1065 | "requires": { 1066 | "bn.js": "^5.1.1", 1067 | "browserify-rsa": "^4.0.1", 1068 | "create-hash": "^1.2.0", 1069 | "create-hmac": "^1.1.7", 1070 | "elliptic": "^6.5.3", 1071 | "inherits": "^2.0.4", 1072 | "parse-asn1": "^5.1.5", 1073 | "readable-stream": "^3.6.0", 1074 | "safe-buffer": "^5.2.0" 1075 | }, 1076 | "dependencies": { 1077 | "readable-stream": { 1078 | "version": "3.6.0", 1079 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 1080 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 1081 | "dev": true, 1082 | "requires": { 1083 | "inherits": "^2.0.3", 1084 | "string_decoder": "^1.1.1", 1085 | "util-deprecate": "^1.0.1" 1086 | } 1087 | } 1088 | } 1089 | }, 1090 | "browserify-zlib": { 1091 | "version": "0.2.0", 1092 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", 1093 | "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", 1094 | "dev": true, 1095 | "requires": { 1096 | "pako": "~1.0.5" 1097 | } 1098 | }, 1099 | "buffer": { 1100 | "version": "4.9.2", 1101 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", 1102 | "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", 1103 | "dev": true, 1104 | "requires": { 1105 | "base64-js": "^1.0.2", 1106 | "ieee754": "^1.1.4", 1107 | "isarray": "^1.0.0" 1108 | } 1109 | }, 1110 | "buffer-xor": { 1111 | "version": "1.0.3", 1112 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", 1113 | "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", 1114 | "dev": true 1115 | }, 1116 | "builtin-status-codes": { 1117 | "version": "3.0.0", 1118 | "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", 1119 | "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", 1120 | "dev": true 1121 | }, 1122 | "cipher-base": { 1123 | "version": "1.0.4", 1124 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", 1125 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", 1126 | "dev": true, 1127 | "requires": { 1128 | "inherits": "^2.0.1", 1129 | "safe-buffer": "^5.0.1" 1130 | } 1131 | }, 1132 | "console-browserify": { 1133 | "version": "1.2.0", 1134 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", 1135 | "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", 1136 | "dev": true 1137 | }, 1138 | "constants-browserify": { 1139 | "version": "1.0.0", 1140 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", 1141 | "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", 1142 | "dev": true 1143 | }, 1144 | "core-util-is": { 1145 | "version": "1.0.3", 1146 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 1147 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", 1148 | "dev": true 1149 | }, 1150 | "create-ecdh": { 1151 | "version": "4.0.4", 1152 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", 1153 | "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", 1154 | "dev": true, 1155 | "requires": { 1156 | "bn.js": "^4.1.0", 1157 | "elliptic": "^6.5.3" 1158 | }, 1159 | "dependencies": { 1160 | "bn.js": { 1161 | "version": "4.12.0", 1162 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 1163 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 1164 | "dev": true 1165 | } 1166 | } 1167 | }, 1168 | "create-hash": { 1169 | "version": "1.2.0", 1170 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", 1171 | "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", 1172 | "dev": true, 1173 | "requires": { 1174 | "cipher-base": "^1.0.1", 1175 | "inherits": "^2.0.1", 1176 | "md5.js": "^1.3.4", 1177 | "ripemd160": "^2.0.1", 1178 | "sha.js": "^2.4.0" 1179 | } 1180 | }, 1181 | "create-hmac": { 1182 | "version": "1.1.7", 1183 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", 1184 | "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", 1185 | "dev": true, 1186 | "requires": { 1187 | "cipher-base": "^1.0.3", 1188 | "create-hash": "^1.1.0", 1189 | "inherits": "^2.0.1", 1190 | "ripemd160": "^2.0.0", 1191 | "safe-buffer": "^5.0.1", 1192 | "sha.js": "^2.4.8" 1193 | } 1194 | }, 1195 | "crypto-browserify": { 1196 | "version": "3.12.0", 1197 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", 1198 | "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", 1199 | "dev": true, 1200 | "requires": { 1201 | "browserify-cipher": "^1.0.0", 1202 | "browserify-sign": "^4.0.0", 1203 | "create-ecdh": "^4.0.0", 1204 | "create-hash": "^1.1.0", 1205 | "create-hmac": "^1.1.0", 1206 | "diffie-hellman": "^5.0.0", 1207 | "inherits": "^2.0.1", 1208 | "pbkdf2": "^3.0.3", 1209 | "public-encrypt": "^4.0.0", 1210 | "randombytes": "^2.0.0", 1211 | "randomfill": "^1.0.3" 1212 | } 1213 | }, 1214 | "des.js": { 1215 | "version": "1.0.1", 1216 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", 1217 | "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", 1218 | "dev": true, 1219 | "requires": { 1220 | "inherits": "^2.0.1", 1221 | "minimalistic-assert": "^1.0.0" 1222 | } 1223 | }, 1224 | "diffie-hellman": { 1225 | "version": "5.0.3", 1226 | "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", 1227 | "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", 1228 | "dev": true, 1229 | "requires": { 1230 | "bn.js": "^4.1.0", 1231 | "miller-rabin": "^4.0.0", 1232 | "randombytes": "^2.0.0" 1233 | }, 1234 | "dependencies": { 1235 | "bn.js": { 1236 | "version": "4.12.0", 1237 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 1238 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 1239 | "dev": true 1240 | } 1241 | } 1242 | }, 1243 | "domain-browser": { 1244 | "version": "1.2.0", 1245 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", 1246 | "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", 1247 | "dev": true 1248 | }, 1249 | "elliptic": { 1250 | "version": "6.5.4", 1251 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", 1252 | "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", 1253 | "dev": true, 1254 | "requires": { 1255 | "bn.js": "^4.11.9", 1256 | "brorand": "^1.1.0", 1257 | "hash.js": "^1.0.0", 1258 | "hmac-drbg": "^1.0.1", 1259 | "inherits": "^2.0.4", 1260 | "minimalistic-assert": "^1.0.1", 1261 | "minimalistic-crypto-utils": "^1.0.1" 1262 | }, 1263 | "dependencies": { 1264 | "bn.js": { 1265 | "version": "4.12.0", 1266 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 1267 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 1268 | "dev": true 1269 | } 1270 | } 1271 | }, 1272 | "events": { 1273 | "version": "3.3.0", 1274 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 1275 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 1276 | "dev": true 1277 | }, 1278 | "evp_bytestokey": { 1279 | "version": "1.0.3", 1280 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", 1281 | "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", 1282 | "dev": true, 1283 | "requires": { 1284 | "md5.js": "^1.3.4", 1285 | "safe-buffer": "^5.1.1" 1286 | } 1287 | }, 1288 | "hash-base": { 1289 | "version": "3.1.0", 1290 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", 1291 | "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", 1292 | "dev": true, 1293 | "requires": { 1294 | "inherits": "^2.0.4", 1295 | "readable-stream": "^3.6.0", 1296 | "safe-buffer": "^5.2.0" 1297 | }, 1298 | "dependencies": { 1299 | "readable-stream": { 1300 | "version": "3.6.0", 1301 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 1302 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 1303 | "dev": true, 1304 | "requires": { 1305 | "inherits": "^2.0.3", 1306 | "string_decoder": "^1.1.1", 1307 | "util-deprecate": "^1.0.1" 1308 | } 1309 | } 1310 | } 1311 | }, 1312 | "hash.js": { 1313 | "version": "1.1.7", 1314 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", 1315 | "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", 1316 | "dev": true, 1317 | "requires": { 1318 | "inherits": "^2.0.3", 1319 | "minimalistic-assert": "^1.0.1" 1320 | } 1321 | }, 1322 | "hmac-drbg": { 1323 | "version": "1.0.1", 1324 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", 1325 | "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", 1326 | "dev": true, 1327 | "requires": { 1328 | "hash.js": "^1.0.3", 1329 | "minimalistic-assert": "^1.0.0", 1330 | "minimalistic-crypto-utils": "^1.0.1" 1331 | } 1332 | }, 1333 | "https-browserify": { 1334 | "version": "1.0.0", 1335 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", 1336 | "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", 1337 | "dev": true 1338 | }, 1339 | "ieee754": { 1340 | "version": "1.2.1", 1341 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1342 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 1343 | "dev": true 1344 | }, 1345 | "inherits": { 1346 | "version": "2.0.4", 1347 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1348 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1349 | "dev": true 1350 | }, 1351 | "isarray": { 1352 | "version": "1.0.0", 1353 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1354 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1355 | "dev": true 1356 | }, 1357 | "isexe": { 1358 | "version": "2.0.0", 1359 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1360 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1361 | "dev": true 1362 | }, 1363 | "md5.js": { 1364 | "version": "1.3.5", 1365 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", 1366 | "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", 1367 | "dev": true, 1368 | "requires": { 1369 | "hash-base": "^3.0.0", 1370 | "inherits": "^2.0.1", 1371 | "safe-buffer": "^5.1.2" 1372 | } 1373 | }, 1374 | "miller-rabin": { 1375 | "version": "4.0.1", 1376 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", 1377 | "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", 1378 | "dev": true, 1379 | "requires": { 1380 | "bn.js": "^4.0.0", 1381 | "brorand": "^1.0.1" 1382 | }, 1383 | "dependencies": { 1384 | "bn.js": { 1385 | "version": "4.12.0", 1386 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 1387 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 1388 | "dev": true 1389 | } 1390 | } 1391 | }, 1392 | "minimalistic-assert": { 1393 | "version": "1.0.1", 1394 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", 1395 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", 1396 | "dev": true 1397 | }, 1398 | "minimalistic-crypto-utils": { 1399 | "version": "1.0.1", 1400 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", 1401 | "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", 1402 | "dev": true 1403 | }, 1404 | "node-libs-browser": { 1405 | "version": "2.2.1", 1406 | "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", 1407 | "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", 1408 | "dev": true, 1409 | "requires": { 1410 | "assert": "^1.1.1", 1411 | "browserify-zlib": "^0.2.0", 1412 | "buffer": "^4.3.0", 1413 | "console-browserify": "^1.1.0", 1414 | "constants-browserify": "^1.0.0", 1415 | "crypto-browserify": "^3.11.0", 1416 | "domain-browser": "^1.1.1", 1417 | "events": "^3.0.0", 1418 | "https-browserify": "^1.0.0", 1419 | "os-browserify": "^0.3.0", 1420 | "path-browserify": "0.0.1", 1421 | "process": "^0.11.10", 1422 | "punycode": "^1.2.4", 1423 | "querystring-es3": "^0.2.0", 1424 | "readable-stream": "^2.3.3", 1425 | "stream-browserify": "^2.0.1", 1426 | "stream-http": "^2.7.2", 1427 | "string_decoder": "^1.0.0", 1428 | "timers-browserify": "^2.0.4", 1429 | "tty-browserify": "0.0.0", 1430 | "url": "^0.11.0", 1431 | "util": "^0.11.0", 1432 | "vm-browserify": "^1.0.1" 1433 | } 1434 | }, 1435 | "object-assign": { 1436 | "version": "4.1.1", 1437 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1438 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1439 | "dev": true 1440 | }, 1441 | "os-browserify": { 1442 | "version": "0.3.0", 1443 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", 1444 | "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", 1445 | "dev": true 1446 | }, 1447 | "pako": { 1448 | "version": "1.0.11", 1449 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 1450 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", 1451 | "dev": true 1452 | }, 1453 | "parse-asn1": { 1454 | "version": "5.1.6", 1455 | "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", 1456 | "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", 1457 | "dev": true, 1458 | "requires": { 1459 | "asn1.js": "^5.2.0", 1460 | "browserify-aes": "^1.0.0", 1461 | "evp_bytestokey": "^1.0.0", 1462 | "pbkdf2": "^3.0.3", 1463 | "safe-buffer": "^5.1.1" 1464 | } 1465 | }, 1466 | "path-browserify": { 1467 | "version": "0.0.1", 1468 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", 1469 | "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", 1470 | "dev": true 1471 | }, 1472 | "pbkdf2": { 1473 | "version": "3.1.2", 1474 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", 1475 | "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", 1476 | "dev": true, 1477 | "requires": { 1478 | "create-hash": "^1.1.2", 1479 | "create-hmac": "^1.1.4", 1480 | "ripemd160": "^2.0.1", 1481 | "safe-buffer": "^5.0.1", 1482 | "sha.js": "^2.4.8" 1483 | } 1484 | }, 1485 | "process": { 1486 | "version": "0.11.10", 1487 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 1488 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", 1489 | "dev": true 1490 | }, 1491 | "process-nextick-args": { 1492 | "version": "2.0.1", 1493 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1494 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 1495 | "dev": true 1496 | }, 1497 | "public-encrypt": { 1498 | "version": "4.0.3", 1499 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", 1500 | "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", 1501 | "dev": true, 1502 | "requires": { 1503 | "bn.js": "^4.1.0", 1504 | "browserify-rsa": "^4.0.0", 1505 | "create-hash": "^1.1.0", 1506 | "parse-asn1": "^5.0.0", 1507 | "randombytes": "^2.0.1", 1508 | "safe-buffer": "^5.1.2" 1509 | }, 1510 | "dependencies": { 1511 | "bn.js": { 1512 | "version": "4.12.0", 1513 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 1514 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 1515 | "dev": true 1516 | } 1517 | } 1518 | }, 1519 | "punycode": { 1520 | "version": "1.4.1", 1521 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 1522 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", 1523 | "dev": true 1524 | }, 1525 | "querystring": { 1526 | "version": "0.2.0", 1527 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 1528 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", 1529 | "dev": true 1530 | }, 1531 | "querystring-es3": { 1532 | "version": "0.2.1", 1533 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", 1534 | "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", 1535 | "dev": true 1536 | }, 1537 | "randombytes": { 1538 | "version": "2.1.0", 1539 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1540 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1541 | "dev": true, 1542 | "requires": { 1543 | "safe-buffer": "^5.1.0" 1544 | } 1545 | }, 1546 | "randomfill": { 1547 | "version": "1.0.4", 1548 | "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", 1549 | "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", 1550 | "dev": true, 1551 | "requires": { 1552 | "randombytes": "^2.0.5", 1553 | "safe-buffer": "^5.1.0" 1554 | } 1555 | }, 1556 | "readable-stream": { 1557 | "version": "2.3.7", 1558 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 1559 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 1560 | "dev": true, 1561 | "requires": { 1562 | "core-util-is": "~1.0.0", 1563 | "inherits": "~2.0.3", 1564 | "isarray": "~1.0.0", 1565 | "process-nextick-args": "~2.0.0", 1566 | "safe-buffer": "~5.1.1", 1567 | "string_decoder": "~1.1.1", 1568 | "util-deprecate": "~1.0.1" 1569 | }, 1570 | "dependencies": { 1571 | "safe-buffer": { 1572 | "version": "5.1.2", 1573 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1574 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1575 | "dev": true 1576 | }, 1577 | "string_decoder": { 1578 | "version": "1.1.1", 1579 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1580 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1581 | "dev": true, 1582 | "requires": { 1583 | "safe-buffer": "~5.1.0" 1584 | } 1585 | } 1586 | } 1587 | }, 1588 | "readline-sync": { 1589 | "version": "1.4.10", 1590 | "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", 1591 | "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", 1592 | "dev": true 1593 | }, 1594 | "ripemd160": { 1595 | "version": "2.0.2", 1596 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", 1597 | "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", 1598 | "dev": true, 1599 | "requires": { 1600 | "hash-base": "^3.0.0", 1601 | "inherits": "^2.0.1" 1602 | } 1603 | }, 1604 | "safe-buffer": { 1605 | "version": "5.2.1", 1606 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1607 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1608 | "dev": true 1609 | }, 1610 | "safer-buffer": { 1611 | "version": "2.1.2", 1612 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1613 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1614 | "dev": true 1615 | }, 1616 | "setimmediate": { 1617 | "version": "1.0.5", 1618 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 1619 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", 1620 | "dev": true 1621 | }, 1622 | "sha.js": { 1623 | "version": "2.4.11", 1624 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", 1625 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", 1626 | "dev": true, 1627 | "requires": { 1628 | "inherits": "^2.0.1", 1629 | "safe-buffer": "^5.0.1" 1630 | } 1631 | }, 1632 | "shadow-cljs": { 1633 | "version": "2.26.2", 1634 | "resolved": "https://registry.npmjs.org/shadow-cljs/-/shadow-cljs-2.26.2.tgz", 1635 | "integrity": "sha512-xBJxBxSpfoVQLSDA+WN+ZgtnyA5qYf3EE4ARZpov0JOz0YBTdIQajnNYMs5+5OzCbbNfhWGLybyu/Pj4dIwsWw==", 1636 | "dev": true, 1637 | "requires": { 1638 | "node-libs-browser": "^2.2.1", 1639 | "readline-sync": "^1.4.7", 1640 | "shadow-cljs-jar": "1.3.4", 1641 | "source-map-support": "^0.4.15", 1642 | "which": "^1.3.1", 1643 | "ws": "^7.4.6" 1644 | } 1645 | }, 1646 | "shadow-cljs-jar": { 1647 | "version": "1.3.4", 1648 | "resolved": "https://registry.npmjs.org/shadow-cljs-jar/-/shadow-cljs-jar-1.3.4.tgz", 1649 | "integrity": "sha512-cZB2pzVXBnhpJ6PQdsjO+j/MksR28mv4QD/hP/2y1fsIa9Z9RutYgh3N34FZ8Ktl4puAXaIGlct+gMCJ5BmwmA==", 1650 | "dev": true 1651 | }, 1652 | "source-map": { 1653 | "version": "0.5.7", 1654 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1655 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 1656 | "dev": true 1657 | }, 1658 | "source-map-support": { 1659 | "version": "0.4.18", 1660 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", 1661 | "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", 1662 | "dev": true, 1663 | "requires": { 1664 | "source-map": "^0.5.6" 1665 | } 1666 | }, 1667 | "stream-browserify": { 1668 | "version": "2.0.2", 1669 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", 1670 | "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", 1671 | "dev": true, 1672 | "requires": { 1673 | "inherits": "~2.0.1", 1674 | "readable-stream": "^2.0.2" 1675 | } 1676 | }, 1677 | "stream-http": { 1678 | "version": "2.8.3", 1679 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", 1680 | "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", 1681 | "dev": true, 1682 | "requires": { 1683 | "builtin-status-codes": "^3.0.0", 1684 | "inherits": "^2.0.1", 1685 | "readable-stream": "^2.3.6", 1686 | "to-arraybuffer": "^1.0.0", 1687 | "xtend": "^4.0.0" 1688 | } 1689 | }, 1690 | "string_decoder": { 1691 | "version": "1.3.0", 1692 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1693 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1694 | "dev": true, 1695 | "requires": { 1696 | "safe-buffer": "~5.2.0" 1697 | } 1698 | }, 1699 | "timers-browserify": { 1700 | "version": "2.0.12", 1701 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", 1702 | "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", 1703 | "dev": true, 1704 | "requires": { 1705 | "setimmediate": "^1.0.4" 1706 | } 1707 | }, 1708 | "to-arraybuffer": { 1709 | "version": "1.0.1", 1710 | "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", 1711 | "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", 1712 | "dev": true 1713 | }, 1714 | "tty-browserify": { 1715 | "version": "0.0.0", 1716 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", 1717 | "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", 1718 | "dev": true 1719 | }, 1720 | "url": { 1721 | "version": "0.11.0", 1722 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", 1723 | "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", 1724 | "dev": true, 1725 | "requires": { 1726 | "punycode": "1.3.2", 1727 | "querystring": "0.2.0" 1728 | }, 1729 | "dependencies": { 1730 | "punycode": { 1731 | "version": "1.3.2", 1732 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", 1733 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", 1734 | "dev": true 1735 | } 1736 | } 1737 | }, 1738 | "util": { 1739 | "version": "0.11.1", 1740 | "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", 1741 | "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", 1742 | "dev": true, 1743 | "requires": { 1744 | "inherits": "2.0.3" 1745 | }, 1746 | "dependencies": { 1747 | "inherits": { 1748 | "version": "2.0.3", 1749 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1750 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1751 | "dev": true 1752 | } 1753 | } 1754 | }, 1755 | "util-deprecate": { 1756 | "version": "1.0.2", 1757 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1758 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 1759 | "dev": true 1760 | }, 1761 | "vm-browserify": { 1762 | "version": "1.1.2", 1763 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", 1764 | "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", 1765 | "dev": true 1766 | }, 1767 | "which": { 1768 | "version": "1.3.1", 1769 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 1770 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 1771 | "dev": true, 1772 | "requires": { 1773 | "isexe": "^2.0.0" 1774 | } 1775 | }, 1776 | "ws": { 1777 | "version": "7.5.7", 1778 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", 1779 | "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", 1780 | "dev": true, 1781 | "requires": {} 1782 | }, 1783 | "xtend": { 1784 | "version": "4.0.2", 1785 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 1786 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 1787 | "dev": true 1788 | } 1789 | } 1790 | } 1791 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "shadow-cljs": "^2.26.2" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /public/css/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; 3 | color: green; 4 | } -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Browser Starter 9 | 10 | 11 |

shadow-cljs - Browser

12 | 13 |
14 | 15 | 16 | -------------------------------------------------------------------------------- /shadow-cljs.edn: -------------------------------------------------------------------------------- 1 | ;; shadow-cljs configuration 2 | {:source-paths 3 | ["src/dev" 4 | "src/main" 5 | "src/test"] 6 | 7 | :dependencies 8 | [] 9 | 10 | :dev-http 11 | {8020 "public"} 12 | 13 | :builds 14 | {:app 15 | {:target :browser 16 | :output-dir "public/js" 17 | :asset-path "/js" 18 | 19 | :modules 20 | {:main ; becomes public/js/main.js 21 | {:init-fn starter.browser/init}}}}} 22 | -------------------------------------------------------------------------------- /src/main/starter/browser.cljs: -------------------------------------------------------------------------------- 1 | (ns starter.browser) 2 | 3 | ;; start is called by init and after code reloading finishes 4 | (defn ^:dev/after-load start [] 5 | (js/console.log "start")) 6 | 7 | (defn init [] 8 | ;; init is called ONCE when the page loads 9 | ;; this is called in the index.html and must be exported 10 | ;; so it is available even in :advanced release builds 11 | (js/console.log "init") 12 | (start)) 13 | 14 | ;; this is called before any code is reloaded 15 | (defn ^:dev/before-load stop [] 16 | (js/console.log "stop")) 17 | --------------------------------------------------------------------------------