├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── TODOs.org ├── build.clj ├── deps.edn ├── examples ├── client-side │ └── reagent-inertiajs │ │ ├── .gitignore │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── shadow-cljs.edn │ │ └── src │ │ └── reagent │ │ └── inertia.cljs ├── server-side │ ├── compojure-hiccup │ │ ├── README.md │ │ ├── deps.edn │ │ └── src │ │ │ └── inertia_example.clj │ └── reitit-selmer │ │ ├── README.md │ │ ├── deps.edn │ │ ├── resources │ │ └── templates │ │ │ └── base.html │ │ └── src │ │ └── inertia_example.clj └── shared-resources │ └── public │ └── templates │ └── base.html ├── pom.xml ├── src └── inertia │ └── middleware.clj └── test └── prestancedesign └── inertia_clojure_test.clj /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | /classes 3 | /checkouts 4 | *.jar 5 | *.class 6 | /.calva/output-window/ 7 | /.cpcache 8 | /.lein-* 9 | /.lsp/sqlite*.db 10 | /.nrepl-history 11 | .nrepl-port 12 | /.rebel_readline_history 13 | /.socket-repl-port 14 | .hgignore 15 | .hg/ 16 | .cpcache 17 | /examples/shared-resources/public/js/ 18 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | ## 0.2.5 - 2022-07-25 4 | ### Changed 5 | - Switch to tools.build 6 | - Upgrade to Clojure 1.11.1 7 | - Upgrade to Ring 1.9.5 8 | - Upgrade to Jsonista 0.3.6 9 | 10 | ## 0.2.4 - 2022-07-25 11 | ### Feature 12 | - Keep http status code from response (fixes https://github.com/prestancedesign/inertia-clojure/issues/4) 13 | 14 | ## 0.2.3 - 2021-05-25 15 | ### Fixed 16 | - Explicit text/html mime type for HTTP response 17 | 18 | ## 0.2.2 - 2021-05-25 19 | ### Changed 20 | - Move Inertia shared props to ":inertia-share" key in Ring request map 21 | 22 | ## 0.2.1 - 2021-05-14 23 | ### Changed 24 | - Append query-string to URL props to allowing browser History.pushState 25 | - Multi-arity Inertia render function 26 | 27 | ## 0.2.0 - 2021-04-23 28 | ### Changed 29 | - Replace JSON lib 30 | - Renaming namespace 31 | 32 | ### Fixed 33 | - Does not return body content for 409 HTTP status 34 | - Condition to apply transformation only on collection type response 35 | 36 | ## 0.1.0 - 2021-04-20 37 | - First release 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC 2 | LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM 3 | CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. 4 | 5 | 1. DEFINITIONS 6 | 7 | "Contribution" means: 8 | 9 | a) in the case of the initial Contributor, the initial code and 10 | documentation distributed under this Agreement, and 11 | 12 | b) in the case of each subsequent Contributor: 13 | 14 | i) changes to the Program, and 15 | 16 | ii) additions to the Program; 17 | 18 | where such changes and/or additions to the Program originate from and are 19 | distributed by that particular Contributor. A Contribution 'originates' from 20 | a Contributor if it was added to the Program by such Contributor itself or 21 | anyone acting on such Contributor's behalf. Contributions do not include 22 | additions to the Program which: (i) are separate modules of software 23 | distributed in conjunction with the Program under their own license 24 | agreement, and (ii) are not derivative works of the Program. 25 | 26 | "Contributor" means any person or entity that distributes the Program. 27 | 28 | "Licensed Patents" mean patent claims licensable by a Contributor which are 29 | necessarily infringed by the use or sale of its Contribution alone or when 30 | combined with the Program. 31 | 32 | "Program" means the Contributions distributed in accordance with this 33 | Agreement. 34 | 35 | "Recipient" means anyone who receives the Program under this Agreement, 36 | including all Contributors. 37 | 38 | 2. GRANT OF RIGHTS 39 | 40 | a) Subject to the terms of this Agreement, each Contributor hereby grants 41 | Recipient a non-exclusive, worldwide, royalty-free copyright license to 42 | reproduce, prepare derivative works of, publicly display, publicly perform, 43 | distribute and sublicense the Contribution of such Contributor, if any, and 44 | such derivative works, in source code and object code form. 45 | 46 | b) Subject to the terms of this Agreement, each Contributor hereby grants 47 | Recipient a non-exclusive, worldwide, royalty-free patent license under 48 | Licensed Patents to make, use, sell, offer to sell, import and otherwise 49 | transfer the Contribution of such Contributor, if any, in source code and 50 | object code form. This patent license shall apply to the combination of the 51 | Contribution and the Program if, at the time the Contribution is added by the 52 | Contributor, such addition of the Contribution causes such combination to be 53 | covered by the Licensed Patents. The patent license shall not apply to any 54 | other combinations which include the Contribution. No hardware per se is 55 | licensed hereunder. 56 | 57 | c) Recipient understands that although each Contributor grants the licenses 58 | to its Contributions set forth herein, no assurances are provided by any 59 | Contributor that the Program does not infringe the patent or other 60 | intellectual property rights of any other entity. Each Contributor disclaims 61 | any liability to Recipient for claims brought by any other entity based on 62 | infringement of intellectual property rights or otherwise. As a condition to 63 | exercising the rights and licenses granted hereunder, each Recipient hereby 64 | assumes sole responsibility to secure any other intellectual property rights 65 | needed, if any. For example, if a third party patent license is required to 66 | allow Recipient to distribute the Program, it is Recipient's responsibility 67 | to acquire that license before distributing the Program. 68 | 69 | d) Each Contributor represents that to its knowledge it has sufficient 70 | copyright rights in its Contribution, if any, to grant the copyright license 71 | set forth in this Agreement. 72 | 73 | 3. REQUIREMENTS 74 | 75 | A Contributor may choose to distribute the Program in object code form under 76 | its own license agreement, provided that: 77 | 78 | a) it complies with the terms and conditions of this Agreement; and 79 | 80 | b) its license agreement: 81 | 82 | i) effectively disclaims on behalf of all Contributors all warranties and 83 | conditions, express and implied, including warranties or conditions of title 84 | and non-infringement, and implied warranties or conditions of merchantability 85 | and fitness for a particular purpose; 86 | 87 | ii) effectively excludes on behalf of all Contributors all liability for 88 | damages, including direct, indirect, special, incidental and consequential 89 | damages, such as lost profits; 90 | 91 | iii) states that any provisions which differ from this Agreement are offered 92 | by that Contributor alone and not by any other party; and 93 | 94 | iv) states that source code for the Program is available from such 95 | Contributor, and informs licensees how to obtain it in a reasonable manner on 96 | or through a medium customarily used for software exchange. 97 | 98 | When the Program is made available in source code form: 99 | 100 | a) it must be made available under this Agreement; and 101 | 102 | b) a copy of this Agreement must be included with each copy of the Program. 103 | 104 | Contributors may not remove or alter any copyright notices contained within 105 | the Program. 106 | 107 | Each Contributor must identify itself as the originator of its Contribution, 108 | if any, in a manner that reasonably allows subsequent Recipients to identify 109 | the originator of the Contribution. 110 | 111 | 4. COMMERCIAL DISTRIBUTION 112 | 113 | Commercial distributors of software may accept certain responsibilities with 114 | respect to end users, business partners and the like. While this license is 115 | intended to facilitate the commercial use of the Program, the Contributor who 116 | includes the Program in a commercial product offering should do so in a 117 | manner which does not create potential liability for other Contributors. 118 | Therefore, if a Contributor includes the Program in a commercial product 119 | offering, such Contributor ("Commercial Contributor") hereby agrees to defend 120 | and indemnify every other Contributor ("Indemnified Contributor") against any 121 | losses, damages and costs (collectively "Losses") arising from claims, 122 | lawsuits and other legal actions brought by a third party against the 123 | Indemnified Contributor to the extent caused by the acts or omissions of such 124 | Commercial Contributor in connection with its distribution of the Program in 125 | a commercial product offering. The obligations in this section do not apply 126 | to any claims or Losses relating to any actual or alleged intellectual 127 | property infringement. In order to qualify, an Indemnified Contributor must: 128 | a) promptly notify the Commercial Contributor in writing of such claim, and 129 | b) allow the Commercial Contributor to control, and cooperate with the 130 | Commercial Contributor in, the defense and any related settlement 131 | negotiations. The Indemnified Contributor may participate in any such claim 132 | at its own expense. 133 | 134 | For example, a Contributor might include the Program in a commercial product 135 | offering, Product X. That Contributor is then a Commercial Contributor. If 136 | that Commercial Contributor then makes performance claims, or offers 137 | warranties related to Product X, those performance claims and warranties are 138 | such Commercial Contributor's responsibility alone. Under this section, the 139 | Commercial Contributor would have to defend claims against the other 140 | Contributors related to those performance claims and warranties, and if a 141 | court requires any other Contributor to pay any damages as a result, the 142 | Commercial Contributor must pay those damages. 143 | 144 | 5. NO WARRANTY 145 | 146 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON 147 | AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER 148 | EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR 149 | CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A 150 | PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the 151 | appropriateness of using and distributing the Program and assumes all risks 152 | associated with its exercise of rights under this Agreement , including but 153 | not limited to the risks and costs of program errors, compliance with 154 | applicable laws, damage to or loss of data, programs or equipment, and 155 | unavailability or interruption of operations. 156 | 157 | 6. DISCLAIMER OF LIABILITY 158 | 159 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY 160 | CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, 161 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION 162 | LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 163 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 164 | ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE 165 | EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY 166 | OF SUCH DAMAGES. 167 | 168 | 7. GENERAL 169 | 170 | If any provision of this Agreement is invalid or unenforceable under 171 | applicable law, it shall not affect the validity or enforceability of the 172 | remainder of the terms of this Agreement, and without further action by the 173 | parties hereto, such provision shall be reformed to the minimum extent 174 | necessary to make such provision valid and enforceable. 175 | 176 | If Recipient institutes patent litigation against any entity (including a 177 | cross-claim or counterclaim in a lawsuit) alleging that the Program itself 178 | (excluding combinations of the Program with other software or hardware) 179 | infringes such Recipient's patent(s), then such Recipient's rights granted 180 | under Section 2(b) shall terminate as of the date such litigation is filed. 181 | 182 | All Recipient's rights under this Agreement shall terminate if it fails to 183 | comply with any of the material terms or conditions of this Agreement and 184 | does not cure such failure in a reasonable period of time after becoming 185 | aware of such noncompliance. If all Recipient's rights under this Agreement 186 | terminate, Recipient agrees to cease use and distribution of the Program as 187 | soon as reasonably practicable. However, Recipient's obligations under this 188 | Agreement and any licenses granted by Recipient relating to the Program shall 189 | continue and survive. 190 | 191 | Everyone is permitted to copy and distribute copies of this Agreement, but in 192 | order to avoid inconsistency the Agreement is copyrighted and may only be 193 | modified in the following manner. The Agreement Steward reserves the right to 194 | publish new versions (including revisions) of this Agreement from time to 195 | time. No one other than the Agreement Steward has the right to modify this 196 | Agreement. The Eclipse Foundation is the initial Agreement Steward. The 197 | Eclipse Foundation may assign the responsibility to serve as the Agreement 198 | Steward to a suitable separate entity. Each new version of the Agreement will 199 | be given a distinguishing version number. The Program (including 200 | Contributions) may always be distributed subject to the version of the 201 | Agreement under which it was received. In addition, after a new version of 202 | the Agreement is published, Contributor may elect to distribute the Program 203 | (including its Contributions) under the new version. Except as expressly 204 | stated in Sections 2(a) and 2(b) above, Recipient receives no rights or 205 | licenses to the intellectual property of any Contributor under this 206 | Agreement, whether expressly, by implication, estoppel or otherwise. All 207 | rights in the Program not expressly granted under this Agreement are 208 | reserved. 209 | 210 | This Agreement is governed by the laws of the State of New York and the 211 | intellectual property laws of the United States of America. No party to this 212 | Agreement will bring a legal action under this Agreement more than one year 213 | after the cause of action arose. Each party waives its rights to a jury trial 214 | in any resulting litigation. 215 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Inertia Clojure 2 | 3 | Clojure Middleware adapter for [Inertia.js](https://inertiajs.com/) to build single-page apps, without building an API. 4 | 5 | The latest versions on Clojars 6 | 7 | [![Clojars Project](https://clojars.org/com.github.prestancedesign/inertia-clojure/latest-version.svg)](https://clojars.org/com.github.prestancedesign/inertia-clojure) 8 | 9 | ## Introduction 10 | 11 | Inertia is a new approach to building classic server-driven web apps. From their own web page: 12 | 13 | > Inertia allows you to create fully client-side rendered, single-page apps, without much of the complexity that comes with modern SPAs. It does this by leveraging existing server-side frameworks. 14 | 15 | Inertia requires an adapter for each backend framework. 16 | 17 | For Clojure there is no de facto web framework, so I went with a [Ring](https://github.com/ring-clojure/ring) middleware who shape up the [`request`](https://github.com/ring-clojure/ring/wiki/Concepts#requests) and [`response`](https://github.com/ring-clojure/ring/wiki/Concepts#responses) to meet the Inertia.js [protocol](https://inertiajs.com/the-protocol). 18 | 19 | ## Install 20 | 21 | For `deps.edn`: 22 | 23 | ```clojure 24 | com.github.prestancedesign/inertia-clojure {:mvn/version "0.2.5"} 25 | ``` 26 | 27 | For `project.clj`: 28 | 29 | ```clojure 30 | [com.github.prestancedesign/inertia-clojure "0.2.5"] 31 | ``` 32 | 33 | ## Usage 34 | 35 | Inertia-clojure contains a standard Ring middleware `wrap-inertia` that you can use with routing libraries like [Reitit](https://github.com/metosin/reitit), [Compojure](https://github.com/weavejester/compojure), etc. 36 | The middleware must be the last item in your web middleware chain. 37 | 38 | It expects 3 arguments: 39 | 40 | * the app handler 41 | * template: a function that recieves data-page arg - a correctly encoded string of the Inertia page object. The function should return an HTML string, so the template lib is up to you. 42 | * version: your current asset version https://inertiajs.com/asset-versioning 43 | 44 | Note: In your HTML template function make sure to always include the `data-page` string in the attribute of the HTML node you want to render your JavaScript app in. 45 | For more information on how Inertia works read the protocol on the Inertia website https://inertiajs.com/the-protocol. 46 | 47 | ## Example 48 | 49 | ```clojure 50 | (require '[inertia.middleware :as inertia]) 51 | ;; ... Another required lib (compojure, httpkit, etc) 52 | 53 | (def asset-version "1") 54 | 55 | ;; Create html template with library of your choice, here Hiccup 56 | (defn template [data-page] 57 | (page/html5 58 | [:head 59 | [:meta {:charset "utf-8"}] 60 | [:title "Inertia + Clojure example"]] 61 | [:body 62 | [:div {:id "app" 63 | :data-page data-page}] ; The Inertia JSON page object 64 | (page/include-js "/js/app.js")])) ; Include your Reagent, React, Vue or Svelte SPA 65 | 66 | (defroutes routes 67 | (GET "/" [] (inertia/render :index {:title "Hello World!"})) ; Use the Inertia render helper to return formatted response 68 | (GET "/demo" [] (inertia/render :demo {:title "Clojure + Inertia"})) 69 | (route/resources "/")) 70 | 71 | (def app (inertia/wrap-inertia routes template asset-version)) ; Wrap your handler with the Inertia middleware 72 | 73 | (http/run-server app {:port 3000}) 74 | ``` 75 | 76 | ## Project examples 77 | 78 | ### Full stack 79 | 80 | * [Ping CRM](https://github.com/prestancedesign/clojure-inertia-pingcrm-demo): port of the official Inertia demo to Clojure Ring, Reitit, Integrant and next.jdbc 81 | * [Usermanager Integrant + Reitit stack](https://github.com/prestancedesign/reagent-inertia-reitit-integrant-fullstack): Single page application in Clojure Ring, Reitit + Reagent/Inertia.js 82 | * [Usermanager Component + Compojure stack](https://github.com/prestancedesign/usermanager-reagent-inertia-example): Single Page App demo in Clojure, Ring, Compojure + Reagent/Inertia.js 83 | * [Inert - Inertia + Clojure + Svelte](https://git.sr.ht/~korven/svelte-inertia): Single Page App demo in Clojure, Reitit-Ring, Svelte/Inertia.js and Vite. You can check out the live website here - [Inert](https://inert-clj.herokuapp.com). 84 | 85 | ### Server side 86 | 87 | * [Reitit / Selmer](examples/server-side/reitit-selmer): An example with Reitit routing and Selmer template lib 88 | * [Compojure / Hiccup](examples/server-side/compojure-hiccup): An example with Compojure routing and Hiccup for the template 89 | 90 | ### Client side 91 | 92 | * [Reagent / Shadow-CLJS + Inertia.js](examples/client-side/reagent-inertiajs) 93 | 94 | ## Features 95 | 96 | Features of the official server-side adapters are still in progress. 97 | 98 | ### Todo: 99 | 100 | - [x] Shared data 101 | - [x] Partial reloads 102 | - [X] Assets versionning 103 | - [x] Validation error props 104 | - [ ] Lazy loaded props 105 | - [ ] Root template data 106 | 107 | ## License 108 | 109 | Copyright © 2021 Michaël Salihi / Prestance 110 | 111 | Distributed under the Eclipse Public License version 1.0. 112 | -------------------------------------------------------------------------------- /TODOs.org: -------------------------------------------------------------------------------- 1 | #+TITLE: Inertia Clojure TODO 2 | 3 | *** TODO Try to implement Inertia render function as macro or defmulti or protocol 4 | to transform simple args symbol to map: 5 | - See Compojure render: https://github.com/weavejester/compojure/blob/1.5.1/src/compojure/response.clj#L6 6 | - https://stackoverflow.com/questions/45082383/clojure-dry-pattern-for-hash-map 7 | - https://stackoverflow.com/questions/36181365/creating-a-map-from-a-var-in-clojure/36181598#36181598 8 | -------------------------------------------------------------------------------- /build.clj: -------------------------------------------------------------------------------- 1 | (ns build 2 | (:require [clojure.tools.build.api :as b] 3 | [org.corfield.build :as bb])) 4 | 5 | (def lib 'com.github.prestancedesign/inertia-clojure) 6 | 7 | (def version "0.2.5") 8 | 9 | (defn jar [opts] 10 | (-> opts 11 | (assoc :lib lib :version version) 12 | (bb/jar))) 13 | 14 | (defn install [opts] 15 | (-> opts 16 | (assoc :lib lib :version version) 17 | (bb/install))) 18 | 19 | (defn deploy [opts] 20 | (-> opts 21 | (assoc :lib lib :version version) 22 | (bb/deploy))) 23 | -------------------------------------------------------------------------------- /deps.edn: -------------------------------------------------------------------------------- 1 | {:paths ["src"] 2 | :deps {org.clojure/clojure {:mvn/version "1.11.1"} 3 | ring/ring-core {:mvn/version "1.9.5"} 4 | metosin/jsonista {:mvn/version "0.3.6"} 5 | metosin/muuntaja {:mvn/version "0.6.8"}} 6 | :aliases 7 | {:test {:extra-paths ["test"] 8 | :extra-deps {org.clojure/test.check {:mvn/version "1.1.1"}}} 9 | :runner 10 | {:extra-deps {com.cognitect/test-runner 11 | {:git/url "https://github.com/cognitect-labs/test-runner" 12 | :sha "2d69f33d7980c3353b246c28f72ffeafbd9f2fab"}} 13 | :main-opts ["-m" "cognitect.test-runner" 14 | "-d" "test"]} 15 | :build {:deps {io.github.seancorfield/build-clj {:git/tag "v0.8.3" :git/sha "7ac1f8d"}} 16 | :ns-default build}}} 17 | -------------------------------------------------------------------------------- /examples/client-side/reagent-inertiajs/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | public/js 3 | 4 | /target 5 | /checkouts 6 | /src/gen 7 | 8 | pom.xml 9 | pom.xml.asc 10 | *.iml 11 | *.jar 12 | *.log 13 | .shadow-cljs 14 | .idea 15 | .lein-* 16 | .nrepl-* 17 | .DS_Store 18 | 19 | .hgignore 20 | .hg/ 21 | -------------------------------------------------------------------------------- /examples/client-side/reagent-inertiajs/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "reagent-inertiajs", 3 | "version": "0.0.1", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "reagent-inertiajs", 9 | "version": "0.0.1", 10 | "dependencies": { 11 | "@inertiajs/inertia": "^0.11.0", 12 | "@inertiajs/inertia-react": "^0.8.0", 13 | "react": "^17.0.2", 14 | "react-dom": "^17.0.2" 15 | }, 16 | "devDependencies": { 17 | "shadow-cljs": "^2.17.1" 18 | } 19 | }, 20 | "node_modules/@inertiajs/inertia": { 21 | "version": "0.11.0", 22 | "resolved": "https://registry.npmjs.org/@inertiajs/inertia/-/inertia-0.11.0.tgz", 23 | "integrity": "sha512-QF4hctgFC+B/t/WClCwfOla+WoDE9iTltQJ0u+DCfjl0KdGoCvIxYiNtuH8h8oM+RQMb8orjbpW3pHapjYI5Vw==", 24 | "dependencies": { 25 | "axios": "^0.21.1", 26 | "deepmerge": "^4.0.0", 27 | "qs": "^6.9.0" 28 | } 29 | }, 30 | "node_modules/@inertiajs/inertia-react": { 31 | "version": "0.8.0", 32 | "resolved": "https://registry.npmjs.org/@inertiajs/inertia-react/-/inertia-react-0.8.0.tgz", 33 | "integrity": "sha512-b0qMCS5I8+91XfC7+k51Poh5IuCmOQ598SNlIFsaI6jya0Jt8qwEpW2aTZlLy3bm49RKiMWB3d3OgMmxo9iA5A==", 34 | "dependencies": { 35 | "lodash.isequal": "^4.5.0" 36 | }, 37 | "peerDependencies": { 38 | "@inertiajs/inertia": "^0.11.0", 39 | "react": "^16.9.0 || ^17.0.0" 40 | } 41 | }, 42 | "node_modules/asn1.js": { 43 | "version": "5.4.1", 44 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", 45 | "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", 46 | "dev": true, 47 | "dependencies": { 48 | "bn.js": "^4.0.0", 49 | "inherits": "^2.0.1", 50 | "minimalistic-assert": "^1.0.0", 51 | "safer-buffer": "^2.1.0" 52 | } 53 | }, 54 | "node_modules/asn1.js/node_modules/bn.js": { 55 | "version": "4.12.0", 56 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 57 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 58 | "dev": true 59 | }, 60 | "node_modules/assert": { 61 | "version": "1.5.0", 62 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", 63 | "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", 64 | "dev": true, 65 | "dependencies": { 66 | "object-assign": "^4.1.1", 67 | "util": "0.10.3" 68 | } 69 | }, 70 | "node_modules/assert/node_modules/inherits": { 71 | "version": "2.0.1", 72 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 73 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", 74 | "dev": true 75 | }, 76 | "node_modules/assert/node_modules/util": { 77 | "version": "0.10.3", 78 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", 79 | "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", 80 | "dev": true, 81 | "dependencies": { 82 | "inherits": "2.0.1" 83 | } 84 | }, 85 | "node_modules/axios": { 86 | "version": "0.21.1", 87 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", 88 | "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", 89 | "dependencies": { 90 | "follow-redirects": "^1.10.0" 91 | } 92 | }, 93 | "node_modules/base64-js": { 94 | "version": "1.5.1", 95 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 96 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 97 | "dev": true, 98 | "funding": [ 99 | { 100 | "type": "github", 101 | "url": "https://github.com/sponsors/feross" 102 | }, 103 | { 104 | "type": "patreon", 105 | "url": "https://www.patreon.com/feross" 106 | }, 107 | { 108 | "type": "consulting", 109 | "url": "https://feross.org/support" 110 | } 111 | ] 112 | }, 113 | "node_modules/bn.js": { 114 | "version": "5.2.0", 115 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", 116 | "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", 117 | "dev": true 118 | }, 119 | "node_modules/brorand": { 120 | "version": "1.1.0", 121 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", 122 | "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", 123 | "dev": true 124 | }, 125 | "node_modules/browserify-aes": { 126 | "version": "1.2.0", 127 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", 128 | "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", 129 | "dev": true, 130 | "dependencies": { 131 | "buffer-xor": "^1.0.3", 132 | "cipher-base": "^1.0.0", 133 | "create-hash": "^1.1.0", 134 | "evp_bytestokey": "^1.0.3", 135 | "inherits": "^2.0.1", 136 | "safe-buffer": "^5.0.1" 137 | } 138 | }, 139 | "node_modules/browserify-cipher": { 140 | "version": "1.0.1", 141 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", 142 | "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", 143 | "dev": true, 144 | "dependencies": { 145 | "browserify-aes": "^1.0.4", 146 | "browserify-des": "^1.0.0", 147 | "evp_bytestokey": "^1.0.0" 148 | } 149 | }, 150 | "node_modules/browserify-des": { 151 | "version": "1.0.2", 152 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", 153 | "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", 154 | "dev": true, 155 | "dependencies": { 156 | "cipher-base": "^1.0.1", 157 | "des.js": "^1.0.0", 158 | "inherits": "^2.0.1", 159 | "safe-buffer": "^5.1.2" 160 | } 161 | }, 162 | "node_modules/browserify-rsa": { 163 | "version": "4.1.0", 164 | "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", 165 | "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", 166 | "dev": true, 167 | "dependencies": { 168 | "bn.js": "^5.0.0", 169 | "randombytes": "^2.0.1" 170 | } 171 | }, 172 | "node_modules/browserify-sign": { 173 | "version": "4.2.1", 174 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", 175 | "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", 176 | "dev": true, 177 | "dependencies": { 178 | "bn.js": "^5.1.1", 179 | "browserify-rsa": "^4.0.1", 180 | "create-hash": "^1.2.0", 181 | "create-hmac": "^1.1.7", 182 | "elliptic": "^6.5.3", 183 | "inherits": "^2.0.4", 184 | "parse-asn1": "^5.1.5", 185 | "readable-stream": "^3.6.0", 186 | "safe-buffer": "^5.2.0" 187 | } 188 | }, 189 | "node_modules/browserify-sign/node_modules/readable-stream": { 190 | "version": "3.6.0", 191 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 192 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 193 | "dev": true, 194 | "dependencies": { 195 | "inherits": "^2.0.3", 196 | "string_decoder": "^1.1.1", 197 | "util-deprecate": "^1.0.1" 198 | }, 199 | "engines": { 200 | "node": ">= 6" 201 | } 202 | }, 203 | "node_modules/browserify-zlib": { 204 | "version": "0.2.0", 205 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", 206 | "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", 207 | "dev": true, 208 | "dependencies": { 209 | "pako": "~1.0.5" 210 | } 211 | }, 212 | "node_modules/buffer": { 213 | "version": "4.9.2", 214 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", 215 | "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", 216 | "dev": true, 217 | "dependencies": { 218 | "base64-js": "^1.0.2", 219 | "ieee754": "^1.1.4", 220 | "isarray": "^1.0.0" 221 | } 222 | }, 223 | "node_modules/buffer-xor": { 224 | "version": "1.0.3", 225 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", 226 | "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", 227 | "dev": true 228 | }, 229 | "node_modules/builtin-status-codes": { 230 | "version": "3.0.0", 231 | "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", 232 | "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", 233 | "dev": true 234 | }, 235 | "node_modules/call-bind": { 236 | "version": "1.0.2", 237 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 238 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 239 | "dependencies": { 240 | "function-bind": "^1.1.1", 241 | "get-intrinsic": "^1.0.2" 242 | }, 243 | "funding": { 244 | "url": "https://github.com/sponsors/ljharb" 245 | } 246 | }, 247 | "node_modules/cipher-base": { 248 | "version": "1.0.4", 249 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", 250 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", 251 | "dev": true, 252 | "dependencies": { 253 | "inherits": "^2.0.1", 254 | "safe-buffer": "^5.0.1" 255 | } 256 | }, 257 | "node_modules/console-browserify": { 258 | "version": "1.2.0", 259 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", 260 | "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", 261 | "dev": true 262 | }, 263 | "node_modules/constants-browserify": { 264 | "version": "1.0.0", 265 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", 266 | "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", 267 | "dev": true 268 | }, 269 | "node_modules/core-util-is": { 270 | "version": "1.0.2", 271 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 272 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 273 | "dev": true 274 | }, 275 | "node_modules/create-ecdh": { 276 | "version": "4.0.4", 277 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", 278 | "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", 279 | "dev": true, 280 | "dependencies": { 281 | "bn.js": "^4.1.0", 282 | "elliptic": "^6.5.3" 283 | } 284 | }, 285 | "node_modules/create-ecdh/node_modules/bn.js": { 286 | "version": "4.12.0", 287 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 288 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 289 | "dev": true 290 | }, 291 | "node_modules/create-hash": { 292 | "version": "1.2.0", 293 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", 294 | "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", 295 | "dev": true, 296 | "dependencies": { 297 | "cipher-base": "^1.0.1", 298 | "inherits": "^2.0.1", 299 | "md5.js": "^1.3.4", 300 | "ripemd160": "^2.0.1", 301 | "sha.js": "^2.4.0" 302 | } 303 | }, 304 | "node_modules/create-hmac": { 305 | "version": "1.1.7", 306 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", 307 | "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", 308 | "dev": true, 309 | "dependencies": { 310 | "cipher-base": "^1.0.3", 311 | "create-hash": "^1.1.0", 312 | "inherits": "^2.0.1", 313 | "ripemd160": "^2.0.0", 314 | "safe-buffer": "^5.0.1", 315 | "sha.js": "^2.4.8" 316 | } 317 | }, 318 | "node_modules/crypto-browserify": { 319 | "version": "3.12.0", 320 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", 321 | "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", 322 | "dev": true, 323 | "dependencies": { 324 | "browserify-cipher": "^1.0.0", 325 | "browserify-sign": "^4.0.0", 326 | "create-ecdh": "^4.0.0", 327 | "create-hash": "^1.1.0", 328 | "create-hmac": "^1.1.0", 329 | "diffie-hellman": "^5.0.0", 330 | "inherits": "^2.0.1", 331 | "pbkdf2": "^3.0.3", 332 | "public-encrypt": "^4.0.0", 333 | "randombytes": "^2.0.0", 334 | "randomfill": "^1.0.3" 335 | }, 336 | "engines": { 337 | "node": "*" 338 | } 339 | }, 340 | "node_modules/deepmerge": { 341 | "version": "4.2.2", 342 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", 343 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", 344 | "engines": { 345 | "node": ">=0.10.0" 346 | } 347 | }, 348 | "node_modules/des.js": { 349 | "version": "1.0.1", 350 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", 351 | "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", 352 | "dev": true, 353 | "dependencies": { 354 | "inherits": "^2.0.1", 355 | "minimalistic-assert": "^1.0.0" 356 | } 357 | }, 358 | "node_modules/diffie-hellman": { 359 | "version": "5.0.3", 360 | "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", 361 | "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", 362 | "dev": true, 363 | "dependencies": { 364 | "bn.js": "^4.1.0", 365 | "miller-rabin": "^4.0.0", 366 | "randombytes": "^2.0.0" 367 | } 368 | }, 369 | "node_modules/diffie-hellman/node_modules/bn.js": { 370 | "version": "4.12.0", 371 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 372 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 373 | "dev": true 374 | }, 375 | "node_modules/domain-browser": { 376 | "version": "1.2.0", 377 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", 378 | "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", 379 | "dev": true, 380 | "engines": { 381 | "node": ">=0.4", 382 | "npm": ">=1.2" 383 | } 384 | }, 385 | "node_modules/elliptic": { 386 | "version": "6.5.4", 387 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", 388 | "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", 389 | "dev": true, 390 | "dependencies": { 391 | "bn.js": "^4.11.9", 392 | "brorand": "^1.1.0", 393 | "hash.js": "^1.0.0", 394 | "hmac-drbg": "^1.0.1", 395 | "inherits": "^2.0.4", 396 | "minimalistic-assert": "^1.0.1", 397 | "minimalistic-crypto-utils": "^1.0.1" 398 | } 399 | }, 400 | "node_modules/elliptic/node_modules/bn.js": { 401 | "version": "4.12.0", 402 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 403 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 404 | "dev": true 405 | }, 406 | "node_modules/events": { 407 | "version": "3.3.0", 408 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 409 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 410 | "dev": true, 411 | "engines": { 412 | "node": ">=0.8.x" 413 | } 414 | }, 415 | "node_modules/evp_bytestokey": { 416 | "version": "1.0.3", 417 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", 418 | "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", 419 | "dev": true, 420 | "dependencies": { 421 | "md5.js": "^1.3.4", 422 | "safe-buffer": "^5.1.1" 423 | } 424 | }, 425 | "node_modules/follow-redirects": { 426 | "version": "1.13.3", 427 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", 428 | "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==", 429 | "funding": [ 430 | { 431 | "type": "individual", 432 | "url": "https://github.com/sponsors/RubenVerborgh" 433 | } 434 | ], 435 | "engines": { 436 | "node": ">=4.0" 437 | }, 438 | "peerDependenciesMeta": { 439 | "debug": { 440 | "optional": true 441 | } 442 | } 443 | }, 444 | "node_modules/function-bind": { 445 | "version": "1.1.1", 446 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 447 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 448 | }, 449 | "node_modules/get-intrinsic": { 450 | "version": "1.1.1", 451 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 452 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 453 | "dependencies": { 454 | "function-bind": "^1.1.1", 455 | "has": "^1.0.3", 456 | "has-symbols": "^1.0.1" 457 | }, 458 | "funding": { 459 | "url": "https://github.com/sponsors/ljharb" 460 | } 461 | }, 462 | "node_modules/has": { 463 | "version": "1.0.3", 464 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 465 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 466 | "dependencies": { 467 | "function-bind": "^1.1.1" 468 | }, 469 | "engines": { 470 | "node": ">= 0.4.0" 471 | } 472 | }, 473 | "node_modules/has-symbols": { 474 | "version": "1.0.2", 475 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", 476 | "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", 477 | "engines": { 478 | "node": ">= 0.4" 479 | }, 480 | "funding": { 481 | "url": "https://github.com/sponsors/ljharb" 482 | } 483 | }, 484 | "node_modules/hash-base": { 485 | "version": "3.1.0", 486 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", 487 | "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", 488 | "dev": true, 489 | "dependencies": { 490 | "inherits": "^2.0.4", 491 | "readable-stream": "^3.6.0", 492 | "safe-buffer": "^5.2.0" 493 | }, 494 | "engines": { 495 | "node": ">=4" 496 | } 497 | }, 498 | "node_modules/hash-base/node_modules/readable-stream": { 499 | "version": "3.6.0", 500 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 501 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 502 | "dev": true, 503 | "dependencies": { 504 | "inherits": "^2.0.3", 505 | "string_decoder": "^1.1.1", 506 | "util-deprecate": "^1.0.1" 507 | }, 508 | "engines": { 509 | "node": ">= 6" 510 | } 511 | }, 512 | "node_modules/hash.js": { 513 | "version": "1.1.7", 514 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", 515 | "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", 516 | "dev": true, 517 | "dependencies": { 518 | "inherits": "^2.0.3", 519 | "minimalistic-assert": "^1.0.1" 520 | } 521 | }, 522 | "node_modules/hmac-drbg": { 523 | "version": "1.0.1", 524 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", 525 | "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", 526 | "dev": true, 527 | "dependencies": { 528 | "hash.js": "^1.0.3", 529 | "minimalistic-assert": "^1.0.0", 530 | "minimalistic-crypto-utils": "^1.0.1" 531 | } 532 | }, 533 | "node_modules/https-browserify": { 534 | "version": "1.0.0", 535 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", 536 | "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", 537 | "dev": true 538 | }, 539 | "node_modules/ieee754": { 540 | "version": "1.2.1", 541 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 542 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 543 | "dev": true, 544 | "funding": [ 545 | { 546 | "type": "github", 547 | "url": "https://github.com/sponsors/feross" 548 | }, 549 | { 550 | "type": "patreon", 551 | "url": "https://www.patreon.com/feross" 552 | }, 553 | { 554 | "type": "consulting", 555 | "url": "https://feross.org/support" 556 | } 557 | ] 558 | }, 559 | "node_modules/inherits": { 560 | "version": "2.0.4", 561 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 562 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 563 | "dev": true 564 | }, 565 | "node_modules/isarray": { 566 | "version": "1.0.0", 567 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 568 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 569 | "dev": true 570 | }, 571 | "node_modules/isexe": { 572 | "version": "2.0.0", 573 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 574 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 575 | "dev": true 576 | }, 577 | "node_modules/js-tokens": { 578 | "version": "4.0.0", 579 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 580 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 581 | }, 582 | "node_modules/lodash.isequal": { 583 | "version": "4.5.0", 584 | "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", 585 | "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" 586 | }, 587 | "node_modules/loose-envify": { 588 | "version": "1.4.0", 589 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 590 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 591 | "dependencies": { 592 | "js-tokens": "^3.0.0 || ^4.0.0" 593 | }, 594 | "bin": { 595 | "loose-envify": "cli.js" 596 | } 597 | }, 598 | "node_modules/md5.js": { 599 | "version": "1.3.5", 600 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", 601 | "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", 602 | "dev": true, 603 | "dependencies": { 604 | "hash-base": "^3.0.0", 605 | "inherits": "^2.0.1", 606 | "safe-buffer": "^5.1.2" 607 | } 608 | }, 609 | "node_modules/miller-rabin": { 610 | "version": "4.0.1", 611 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", 612 | "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", 613 | "dev": true, 614 | "dependencies": { 615 | "bn.js": "^4.0.0", 616 | "brorand": "^1.0.1" 617 | }, 618 | "bin": { 619 | "miller-rabin": "bin/miller-rabin" 620 | } 621 | }, 622 | "node_modules/miller-rabin/node_modules/bn.js": { 623 | "version": "4.12.0", 624 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 625 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 626 | "dev": true 627 | }, 628 | "node_modules/minimalistic-assert": { 629 | "version": "1.0.1", 630 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", 631 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", 632 | "dev": true 633 | }, 634 | "node_modules/minimalistic-crypto-utils": { 635 | "version": "1.0.1", 636 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", 637 | "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", 638 | "dev": true 639 | }, 640 | "node_modules/node-libs-browser": { 641 | "version": "2.2.1", 642 | "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", 643 | "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", 644 | "dev": true, 645 | "dependencies": { 646 | "assert": "^1.1.1", 647 | "browserify-zlib": "^0.2.0", 648 | "buffer": "^4.3.0", 649 | "console-browserify": "^1.1.0", 650 | "constants-browserify": "^1.0.0", 651 | "crypto-browserify": "^3.11.0", 652 | "domain-browser": "^1.1.1", 653 | "events": "^3.0.0", 654 | "https-browserify": "^1.0.0", 655 | "os-browserify": "^0.3.0", 656 | "path-browserify": "0.0.1", 657 | "process": "^0.11.10", 658 | "punycode": "^1.2.4", 659 | "querystring-es3": "^0.2.0", 660 | "readable-stream": "^2.3.3", 661 | "stream-browserify": "^2.0.1", 662 | "stream-http": "^2.7.2", 663 | "string_decoder": "^1.0.0", 664 | "timers-browserify": "^2.0.4", 665 | "tty-browserify": "0.0.0", 666 | "url": "^0.11.0", 667 | "util": "^0.11.0", 668 | "vm-browserify": "^1.0.1" 669 | } 670 | }, 671 | "node_modules/object-assign": { 672 | "version": "4.1.1", 673 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 674 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 675 | "engines": { 676 | "node": ">=0.10.0" 677 | } 678 | }, 679 | "node_modules/object-inspect": { 680 | "version": "1.10.2", 681 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.2.tgz", 682 | "integrity": "sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA==", 683 | "funding": { 684 | "url": "https://github.com/sponsors/ljharb" 685 | } 686 | }, 687 | "node_modules/os-browserify": { 688 | "version": "0.3.0", 689 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", 690 | "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", 691 | "dev": true 692 | }, 693 | "node_modules/pako": { 694 | "version": "1.0.11", 695 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 696 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", 697 | "dev": true 698 | }, 699 | "node_modules/parse-asn1": { 700 | "version": "5.1.6", 701 | "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", 702 | "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", 703 | "dev": true, 704 | "dependencies": { 705 | "asn1.js": "^5.2.0", 706 | "browserify-aes": "^1.0.0", 707 | "evp_bytestokey": "^1.0.0", 708 | "pbkdf2": "^3.0.3", 709 | "safe-buffer": "^5.1.1" 710 | } 711 | }, 712 | "node_modules/path-browserify": { 713 | "version": "0.0.1", 714 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", 715 | "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", 716 | "dev": true 717 | }, 718 | "node_modules/pbkdf2": { 719 | "version": "3.1.2", 720 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", 721 | "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", 722 | "dev": true, 723 | "dependencies": { 724 | "create-hash": "^1.1.2", 725 | "create-hmac": "^1.1.4", 726 | "ripemd160": "^2.0.1", 727 | "safe-buffer": "^5.0.1", 728 | "sha.js": "^2.4.8" 729 | }, 730 | "engines": { 731 | "node": ">=0.12" 732 | } 733 | }, 734 | "node_modules/process": { 735 | "version": "0.11.10", 736 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 737 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", 738 | "dev": true, 739 | "engines": { 740 | "node": ">= 0.6.0" 741 | } 742 | }, 743 | "node_modules/process-nextick-args": { 744 | "version": "2.0.1", 745 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 746 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 747 | "dev": true 748 | }, 749 | "node_modules/public-encrypt": { 750 | "version": "4.0.3", 751 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", 752 | "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", 753 | "dev": true, 754 | "dependencies": { 755 | "bn.js": "^4.1.0", 756 | "browserify-rsa": "^4.0.0", 757 | "create-hash": "^1.1.0", 758 | "parse-asn1": "^5.0.0", 759 | "randombytes": "^2.0.1", 760 | "safe-buffer": "^5.1.2" 761 | } 762 | }, 763 | "node_modules/public-encrypt/node_modules/bn.js": { 764 | "version": "4.12.0", 765 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 766 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 767 | "dev": true 768 | }, 769 | "node_modules/punycode": { 770 | "version": "1.4.1", 771 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 772 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", 773 | "dev": true 774 | }, 775 | "node_modules/qs": { 776 | "version": "6.10.1", 777 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", 778 | "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", 779 | "dependencies": { 780 | "side-channel": "^1.0.4" 781 | }, 782 | "engines": { 783 | "node": ">=0.6" 784 | }, 785 | "funding": { 786 | "url": "https://github.com/sponsors/ljharb" 787 | } 788 | }, 789 | "node_modules/querystring": { 790 | "version": "0.2.0", 791 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 792 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", 793 | "dev": true, 794 | "engines": { 795 | "node": ">=0.4.x" 796 | } 797 | }, 798 | "node_modules/querystring-es3": { 799 | "version": "0.2.1", 800 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", 801 | "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", 802 | "dev": true, 803 | "engines": { 804 | "node": ">=0.4.x" 805 | } 806 | }, 807 | "node_modules/randombytes": { 808 | "version": "2.1.0", 809 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 810 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 811 | "dev": true, 812 | "dependencies": { 813 | "safe-buffer": "^5.1.0" 814 | } 815 | }, 816 | "node_modules/randomfill": { 817 | "version": "1.0.4", 818 | "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", 819 | "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", 820 | "dev": true, 821 | "dependencies": { 822 | "randombytes": "^2.0.5", 823 | "safe-buffer": "^5.1.0" 824 | } 825 | }, 826 | "node_modules/react": { 827 | "version": "17.0.2", 828 | "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", 829 | "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", 830 | "dependencies": { 831 | "loose-envify": "^1.1.0", 832 | "object-assign": "^4.1.1" 833 | }, 834 | "engines": { 835 | "node": ">=0.10.0" 836 | } 837 | }, 838 | "node_modules/react-dom": { 839 | "version": "17.0.2", 840 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", 841 | "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", 842 | "dependencies": { 843 | "loose-envify": "^1.1.0", 844 | "object-assign": "^4.1.1", 845 | "scheduler": "^0.20.2" 846 | }, 847 | "peerDependencies": { 848 | "react": "17.0.2" 849 | } 850 | }, 851 | "node_modules/readable-stream": { 852 | "version": "2.3.7", 853 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 854 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 855 | "dev": true, 856 | "dependencies": { 857 | "core-util-is": "~1.0.0", 858 | "inherits": "~2.0.3", 859 | "isarray": "~1.0.0", 860 | "process-nextick-args": "~2.0.0", 861 | "safe-buffer": "~5.1.1", 862 | "string_decoder": "~1.1.1", 863 | "util-deprecate": "~1.0.1" 864 | } 865 | }, 866 | "node_modules/readable-stream/node_modules/safe-buffer": { 867 | "version": "5.1.2", 868 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 869 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 870 | "dev": true 871 | }, 872 | "node_modules/readable-stream/node_modules/string_decoder": { 873 | "version": "1.1.1", 874 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 875 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 876 | "dev": true, 877 | "dependencies": { 878 | "safe-buffer": "~5.1.0" 879 | } 880 | }, 881 | "node_modules/readline-sync": { 882 | "version": "1.4.10", 883 | "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", 884 | "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", 885 | "dev": true, 886 | "engines": { 887 | "node": ">= 0.8.0" 888 | } 889 | }, 890 | "node_modules/ripemd160": { 891 | "version": "2.0.2", 892 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", 893 | "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", 894 | "dev": true, 895 | "dependencies": { 896 | "hash-base": "^3.0.0", 897 | "inherits": "^2.0.1" 898 | } 899 | }, 900 | "node_modules/safe-buffer": { 901 | "version": "5.2.1", 902 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 903 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 904 | "dev": true, 905 | "funding": [ 906 | { 907 | "type": "github", 908 | "url": "https://github.com/sponsors/feross" 909 | }, 910 | { 911 | "type": "patreon", 912 | "url": "https://www.patreon.com/feross" 913 | }, 914 | { 915 | "type": "consulting", 916 | "url": "https://feross.org/support" 917 | } 918 | ] 919 | }, 920 | "node_modules/safer-buffer": { 921 | "version": "2.1.2", 922 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 923 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 924 | "dev": true 925 | }, 926 | "node_modules/scheduler": { 927 | "version": "0.20.2", 928 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", 929 | "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", 930 | "dependencies": { 931 | "loose-envify": "^1.1.0", 932 | "object-assign": "^4.1.1" 933 | } 934 | }, 935 | "node_modules/setimmediate": { 936 | "version": "1.0.5", 937 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 938 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", 939 | "dev": true 940 | }, 941 | "node_modules/sha.js": { 942 | "version": "2.4.11", 943 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", 944 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", 945 | "dev": true, 946 | "dependencies": { 947 | "inherits": "^2.0.1", 948 | "safe-buffer": "^5.0.1" 949 | }, 950 | "bin": { 951 | "sha.js": "bin.js" 952 | } 953 | }, 954 | "node_modules/shadow-cljs": { 955 | "version": "2.17.1", 956 | "resolved": "https://registry.npmjs.org/shadow-cljs/-/shadow-cljs-2.17.1.tgz", 957 | "integrity": "sha512-h5Bbt7xeGj9ttAj+I5y1AKJgBEzgSZ+8fhQM3BqR4D7L9PKJPqGJqlZVP71lYBJ6Bw/8vGhsQOpTYqNZVTqCfQ==", 958 | "dev": true, 959 | "dependencies": { 960 | "node-libs-browser": "^2.2.1", 961 | "readline-sync": "^1.4.7", 962 | "shadow-cljs-jar": "1.3.2", 963 | "source-map-support": "^0.4.15", 964 | "which": "^1.3.1", 965 | "ws": "^7.4.6" 966 | }, 967 | "bin": { 968 | "shadow-cljs": "cli/runner.js" 969 | }, 970 | "engines": { 971 | "node": ">=6.0.0" 972 | } 973 | }, 974 | "node_modules/shadow-cljs-jar": { 975 | "version": "1.3.2", 976 | "resolved": "https://registry.npmjs.org/shadow-cljs-jar/-/shadow-cljs-jar-1.3.2.tgz", 977 | "integrity": "sha512-XmeffAZHv8z7451kzeq9oKh8fh278Ak+UIOGGrapyqrFBB773xN8vMQ3O7J7TYLnb9BUwcqadKkmgaq7q6fhZg==", 978 | "dev": true 979 | }, 980 | "node_modules/side-channel": { 981 | "version": "1.0.4", 982 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 983 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 984 | "dependencies": { 985 | "call-bind": "^1.0.0", 986 | "get-intrinsic": "^1.0.2", 987 | "object-inspect": "^1.9.0" 988 | }, 989 | "funding": { 990 | "url": "https://github.com/sponsors/ljharb" 991 | } 992 | }, 993 | "node_modules/source-map": { 994 | "version": "0.5.7", 995 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 996 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 997 | "dev": true, 998 | "engines": { 999 | "node": ">=0.10.0" 1000 | } 1001 | }, 1002 | "node_modules/source-map-support": { 1003 | "version": "0.4.18", 1004 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", 1005 | "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", 1006 | "dev": true, 1007 | "dependencies": { 1008 | "source-map": "^0.5.6" 1009 | } 1010 | }, 1011 | "node_modules/stream-browserify": { 1012 | "version": "2.0.2", 1013 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", 1014 | "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", 1015 | "dev": true, 1016 | "dependencies": { 1017 | "inherits": "~2.0.1", 1018 | "readable-stream": "^2.0.2" 1019 | } 1020 | }, 1021 | "node_modules/stream-http": { 1022 | "version": "2.8.3", 1023 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", 1024 | "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", 1025 | "dev": true, 1026 | "dependencies": { 1027 | "builtin-status-codes": "^3.0.0", 1028 | "inherits": "^2.0.1", 1029 | "readable-stream": "^2.3.6", 1030 | "to-arraybuffer": "^1.0.0", 1031 | "xtend": "^4.0.0" 1032 | } 1033 | }, 1034 | "node_modules/string_decoder": { 1035 | "version": "1.3.0", 1036 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1037 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1038 | "dev": true, 1039 | "dependencies": { 1040 | "safe-buffer": "~5.2.0" 1041 | } 1042 | }, 1043 | "node_modules/timers-browserify": { 1044 | "version": "2.0.12", 1045 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", 1046 | "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", 1047 | "dev": true, 1048 | "dependencies": { 1049 | "setimmediate": "^1.0.4" 1050 | }, 1051 | "engines": { 1052 | "node": ">=0.6.0" 1053 | } 1054 | }, 1055 | "node_modules/to-arraybuffer": { 1056 | "version": "1.0.1", 1057 | "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", 1058 | "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", 1059 | "dev": true 1060 | }, 1061 | "node_modules/tty-browserify": { 1062 | "version": "0.0.0", 1063 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", 1064 | "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", 1065 | "dev": true 1066 | }, 1067 | "node_modules/url": { 1068 | "version": "0.11.0", 1069 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", 1070 | "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", 1071 | "dev": true, 1072 | "dependencies": { 1073 | "punycode": "1.3.2", 1074 | "querystring": "0.2.0" 1075 | } 1076 | }, 1077 | "node_modules/url/node_modules/punycode": { 1078 | "version": "1.3.2", 1079 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", 1080 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", 1081 | "dev": true 1082 | }, 1083 | "node_modules/util": { 1084 | "version": "0.11.1", 1085 | "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", 1086 | "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", 1087 | "dev": true, 1088 | "dependencies": { 1089 | "inherits": "2.0.3" 1090 | } 1091 | }, 1092 | "node_modules/util-deprecate": { 1093 | "version": "1.0.2", 1094 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1095 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 1096 | "dev": true 1097 | }, 1098 | "node_modules/util/node_modules/inherits": { 1099 | "version": "2.0.3", 1100 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1101 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1102 | "dev": true 1103 | }, 1104 | "node_modules/vm-browserify": { 1105 | "version": "1.1.2", 1106 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", 1107 | "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", 1108 | "dev": true 1109 | }, 1110 | "node_modules/which": { 1111 | "version": "1.3.1", 1112 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 1113 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 1114 | "dev": true, 1115 | "dependencies": { 1116 | "isexe": "^2.0.0" 1117 | }, 1118 | "bin": { 1119 | "which": "bin/which" 1120 | } 1121 | }, 1122 | "node_modules/ws": { 1123 | "version": "7.5.7", 1124 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", 1125 | "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", 1126 | "dev": true, 1127 | "engines": { 1128 | "node": ">=8.3.0" 1129 | }, 1130 | "peerDependencies": { 1131 | "bufferutil": "^4.0.1", 1132 | "utf-8-validate": "^5.0.2" 1133 | }, 1134 | "peerDependenciesMeta": { 1135 | "bufferutil": { 1136 | "optional": true 1137 | }, 1138 | "utf-8-validate": { 1139 | "optional": true 1140 | } 1141 | } 1142 | }, 1143 | "node_modules/xtend": { 1144 | "version": "4.0.2", 1145 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 1146 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 1147 | "dev": true, 1148 | "engines": { 1149 | "node": ">=0.4" 1150 | } 1151 | } 1152 | }, 1153 | "dependencies": { 1154 | "@inertiajs/inertia": { 1155 | "version": "0.11.0", 1156 | "resolved": "https://registry.npmjs.org/@inertiajs/inertia/-/inertia-0.11.0.tgz", 1157 | "integrity": "sha512-QF4hctgFC+B/t/WClCwfOla+WoDE9iTltQJ0u+DCfjl0KdGoCvIxYiNtuH8h8oM+RQMb8orjbpW3pHapjYI5Vw==", 1158 | "requires": { 1159 | "axios": "^0.21.1", 1160 | "deepmerge": "^4.0.0", 1161 | "qs": "^6.9.0" 1162 | } 1163 | }, 1164 | "@inertiajs/inertia-react": { 1165 | "version": "0.8.0", 1166 | "resolved": "https://registry.npmjs.org/@inertiajs/inertia-react/-/inertia-react-0.8.0.tgz", 1167 | "integrity": "sha512-b0qMCS5I8+91XfC7+k51Poh5IuCmOQ598SNlIFsaI6jya0Jt8qwEpW2aTZlLy3bm49RKiMWB3d3OgMmxo9iA5A==", 1168 | "requires": { 1169 | "lodash.isequal": "^4.5.0" 1170 | } 1171 | }, 1172 | "asn1.js": { 1173 | "version": "5.4.1", 1174 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", 1175 | "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", 1176 | "dev": true, 1177 | "requires": { 1178 | "bn.js": "^4.0.0", 1179 | "inherits": "^2.0.1", 1180 | "minimalistic-assert": "^1.0.0", 1181 | "safer-buffer": "^2.1.0" 1182 | }, 1183 | "dependencies": { 1184 | "bn.js": { 1185 | "version": "4.12.0", 1186 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 1187 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 1188 | "dev": true 1189 | } 1190 | } 1191 | }, 1192 | "assert": { 1193 | "version": "1.5.0", 1194 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", 1195 | "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", 1196 | "dev": true, 1197 | "requires": { 1198 | "object-assign": "^4.1.1", 1199 | "util": "0.10.3" 1200 | }, 1201 | "dependencies": { 1202 | "inherits": { 1203 | "version": "2.0.1", 1204 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 1205 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", 1206 | "dev": true 1207 | }, 1208 | "util": { 1209 | "version": "0.10.3", 1210 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", 1211 | "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", 1212 | "dev": true, 1213 | "requires": { 1214 | "inherits": "2.0.1" 1215 | } 1216 | } 1217 | } 1218 | }, 1219 | "axios": { 1220 | "version": "0.21.1", 1221 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", 1222 | "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", 1223 | "requires": { 1224 | "follow-redirects": "^1.10.0" 1225 | } 1226 | }, 1227 | "base64-js": { 1228 | "version": "1.5.1", 1229 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 1230 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 1231 | "dev": true 1232 | }, 1233 | "bn.js": { 1234 | "version": "5.2.0", 1235 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", 1236 | "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", 1237 | "dev": true 1238 | }, 1239 | "brorand": { 1240 | "version": "1.1.0", 1241 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", 1242 | "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", 1243 | "dev": true 1244 | }, 1245 | "browserify-aes": { 1246 | "version": "1.2.0", 1247 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", 1248 | "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", 1249 | "dev": true, 1250 | "requires": { 1251 | "buffer-xor": "^1.0.3", 1252 | "cipher-base": "^1.0.0", 1253 | "create-hash": "^1.1.0", 1254 | "evp_bytestokey": "^1.0.3", 1255 | "inherits": "^2.0.1", 1256 | "safe-buffer": "^5.0.1" 1257 | } 1258 | }, 1259 | "browserify-cipher": { 1260 | "version": "1.0.1", 1261 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", 1262 | "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", 1263 | "dev": true, 1264 | "requires": { 1265 | "browserify-aes": "^1.0.4", 1266 | "browserify-des": "^1.0.0", 1267 | "evp_bytestokey": "^1.0.0" 1268 | } 1269 | }, 1270 | "browserify-des": { 1271 | "version": "1.0.2", 1272 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", 1273 | "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", 1274 | "dev": true, 1275 | "requires": { 1276 | "cipher-base": "^1.0.1", 1277 | "des.js": "^1.0.0", 1278 | "inherits": "^2.0.1", 1279 | "safe-buffer": "^5.1.2" 1280 | } 1281 | }, 1282 | "browserify-rsa": { 1283 | "version": "4.1.0", 1284 | "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", 1285 | "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", 1286 | "dev": true, 1287 | "requires": { 1288 | "bn.js": "^5.0.0", 1289 | "randombytes": "^2.0.1" 1290 | } 1291 | }, 1292 | "browserify-sign": { 1293 | "version": "4.2.1", 1294 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", 1295 | "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", 1296 | "dev": true, 1297 | "requires": { 1298 | "bn.js": "^5.1.1", 1299 | "browserify-rsa": "^4.0.1", 1300 | "create-hash": "^1.2.0", 1301 | "create-hmac": "^1.1.7", 1302 | "elliptic": "^6.5.3", 1303 | "inherits": "^2.0.4", 1304 | "parse-asn1": "^5.1.5", 1305 | "readable-stream": "^3.6.0", 1306 | "safe-buffer": "^5.2.0" 1307 | }, 1308 | "dependencies": { 1309 | "readable-stream": { 1310 | "version": "3.6.0", 1311 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 1312 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 1313 | "dev": true, 1314 | "requires": { 1315 | "inherits": "^2.0.3", 1316 | "string_decoder": "^1.1.1", 1317 | "util-deprecate": "^1.0.1" 1318 | } 1319 | } 1320 | } 1321 | }, 1322 | "browserify-zlib": { 1323 | "version": "0.2.0", 1324 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", 1325 | "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", 1326 | "dev": true, 1327 | "requires": { 1328 | "pako": "~1.0.5" 1329 | } 1330 | }, 1331 | "buffer": { 1332 | "version": "4.9.2", 1333 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", 1334 | "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", 1335 | "dev": true, 1336 | "requires": { 1337 | "base64-js": "^1.0.2", 1338 | "ieee754": "^1.1.4", 1339 | "isarray": "^1.0.0" 1340 | } 1341 | }, 1342 | "buffer-xor": { 1343 | "version": "1.0.3", 1344 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", 1345 | "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", 1346 | "dev": true 1347 | }, 1348 | "builtin-status-codes": { 1349 | "version": "3.0.0", 1350 | "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", 1351 | "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", 1352 | "dev": true 1353 | }, 1354 | "call-bind": { 1355 | "version": "1.0.2", 1356 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 1357 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 1358 | "requires": { 1359 | "function-bind": "^1.1.1", 1360 | "get-intrinsic": "^1.0.2" 1361 | } 1362 | }, 1363 | "cipher-base": { 1364 | "version": "1.0.4", 1365 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", 1366 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", 1367 | "dev": true, 1368 | "requires": { 1369 | "inherits": "^2.0.1", 1370 | "safe-buffer": "^5.0.1" 1371 | } 1372 | }, 1373 | "console-browserify": { 1374 | "version": "1.2.0", 1375 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", 1376 | "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", 1377 | "dev": true 1378 | }, 1379 | "constants-browserify": { 1380 | "version": "1.0.0", 1381 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", 1382 | "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", 1383 | "dev": true 1384 | }, 1385 | "core-util-is": { 1386 | "version": "1.0.2", 1387 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1388 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 1389 | "dev": true 1390 | }, 1391 | "create-ecdh": { 1392 | "version": "4.0.4", 1393 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", 1394 | "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", 1395 | "dev": true, 1396 | "requires": { 1397 | "bn.js": "^4.1.0", 1398 | "elliptic": "^6.5.3" 1399 | }, 1400 | "dependencies": { 1401 | "bn.js": { 1402 | "version": "4.12.0", 1403 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 1404 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 1405 | "dev": true 1406 | } 1407 | } 1408 | }, 1409 | "create-hash": { 1410 | "version": "1.2.0", 1411 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", 1412 | "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", 1413 | "dev": true, 1414 | "requires": { 1415 | "cipher-base": "^1.0.1", 1416 | "inherits": "^2.0.1", 1417 | "md5.js": "^1.3.4", 1418 | "ripemd160": "^2.0.1", 1419 | "sha.js": "^2.4.0" 1420 | } 1421 | }, 1422 | "create-hmac": { 1423 | "version": "1.1.7", 1424 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", 1425 | "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", 1426 | "dev": true, 1427 | "requires": { 1428 | "cipher-base": "^1.0.3", 1429 | "create-hash": "^1.1.0", 1430 | "inherits": "^2.0.1", 1431 | "ripemd160": "^2.0.0", 1432 | "safe-buffer": "^5.0.1", 1433 | "sha.js": "^2.4.8" 1434 | } 1435 | }, 1436 | "crypto-browserify": { 1437 | "version": "3.12.0", 1438 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", 1439 | "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", 1440 | "dev": true, 1441 | "requires": { 1442 | "browserify-cipher": "^1.0.0", 1443 | "browserify-sign": "^4.0.0", 1444 | "create-ecdh": "^4.0.0", 1445 | "create-hash": "^1.1.0", 1446 | "create-hmac": "^1.1.0", 1447 | "diffie-hellman": "^5.0.0", 1448 | "inherits": "^2.0.1", 1449 | "pbkdf2": "^3.0.3", 1450 | "public-encrypt": "^4.0.0", 1451 | "randombytes": "^2.0.0", 1452 | "randomfill": "^1.0.3" 1453 | } 1454 | }, 1455 | "deepmerge": { 1456 | "version": "4.2.2", 1457 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", 1458 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" 1459 | }, 1460 | "des.js": { 1461 | "version": "1.0.1", 1462 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", 1463 | "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", 1464 | "dev": true, 1465 | "requires": { 1466 | "inherits": "^2.0.1", 1467 | "minimalistic-assert": "^1.0.0" 1468 | } 1469 | }, 1470 | "diffie-hellman": { 1471 | "version": "5.0.3", 1472 | "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", 1473 | "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", 1474 | "dev": true, 1475 | "requires": { 1476 | "bn.js": "^4.1.0", 1477 | "miller-rabin": "^4.0.0", 1478 | "randombytes": "^2.0.0" 1479 | }, 1480 | "dependencies": { 1481 | "bn.js": { 1482 | "version": "4.12.0", 1483 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 1484 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 1485 | "dev": true 1486 | } 1487 | } 1488 | }, 1489 | "domain-browser": { 1490 | "version": "1.2.0", 1491 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", 1492 | "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", 1493 | "dev": true 1494 | }, 1495 | "elliptic": { 1496 | "version": "6.5.4", 1497 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", 1498 | "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", 1499 | "dev": true, 1500 | "requires": { 1501 | "bn.js": "^4.11.9", 1502 | "brorand": "^1.1.0", 1503 | "hash.js": "^1.0.0", 1504 | "hmac-drbg": "^1.0.1", 1505 | "inherits": "^2.0.4", 1506 | "minimalistic-assert": "^1.0.1", 1507 | "minimalistic-crypto-utils": "^1.0.1" 1508 | }, 1509 | "dependencies": { 1510 | "bn.js": { 1511 | "version": "4.12.0", 1512 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 1513 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 1514 | "dev": true 1515 | } 1516 | } 1517 | }, 1518 | "events": { 1519 | "version": "3.3.0", 1520 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 1521 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 1522 | "dev": true 1523 | }, 1524 | "evp_bytestokey": { 1525 | "version": "1.0.3", 1526 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", 1527 | "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", 1528 | "dev": true, 1529 | "requires": { 1530 | "md5.js": "^1.3.4", 1531 | "safe-buffer": "^5.1.1" 1532 | } 1533 | }, 1534 | "follow-redirects": { 1535 | "version": "1.13.3", 1536 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", 1537 | "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==" 1538 | }, 1539 | "function-bind": { 1540 | "version": "1.1.1", 1541 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1542 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1543 | }, 1544 | "get-intrinsic": { 1545 | "version": "1.1.1", 1546 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 1547 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 1548 | "requires": { 1549 | "function-bind": "^1.1.1", 1550 | "has": "^1.0.3", 1551 | "has-symbols": "^1.0.1" 1552 | } 1553 | }, 1554 | "has": { 1555 | "version": "1.0.3", 1556 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1557 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1558 | "requires": { 1559 | "function-bind": "^1.1.1" 1560 | } 1561 | }, 1562 | "has-symbols": { 1563 | "version": "1.0.2", 1564 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", 1565 | "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" 1566 | }, 1567 | "hash-base": { 1568 | "version": "3.1.0", 1569 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", 1570 | "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", 1571 | "dev": true, 1572 | "requires": { 1573 | "inherits": "^2.0.4", 1574 | "readable-stream": "^3.6.0", 1575 | "safe-buffer": "^5.2.0" 1576 | }, 1577 | "dependencies": { 1578 | "readable-stream": { 1579 | "version": "3.6.0", 1580 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 1581 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 1582 | "dev": true, 1583 | "requires": { 1584 | "inherits": "^2.0.3", 1585 | "string_decoder": "^1.1.1", 1586 | "util-deprecate": "^1.0.1" 1587 | } 1588 | } 1589 | } 1590 | }, 1591 | "hash.js": { 1592 | "version": "1.1.7", 1593 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", 1594 | "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", 1595 | "dev": true, 1596 | "requires": { 1597 | "inherits": "^2.0.3", 1598 | "minimalistic-assert": "^1.0.1" 1599 | } 1600 | }, 1601 | "hmac-drbg": { 1602 | "version": "1.0.1", 1603 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", 1604 | "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", 1605 | "dev": true, 1606 | "requires": { 1607 | "hash.js": "^1.0.3", 1608 | "minimalistic-assert": "^1.0.0", 1609 | "minimalistic-crypto-utils": "^1.0.1" 1610 | } 1611 | }, 1612 | "https-browserify": { 1613 | "version": "1.0.0", 1614 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", 1615 | "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", 1616 | "dev": true 1617 | }, 1618 | "ieee754": { 1619 | "version": "1.2.1", 1620 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1621 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 1622 | "dev": true 1623 | }, 1624 | "inherits": { 1625 | "version": "2.0.4", 1626 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1627 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1628 | "dev": true 1629 | }, 1630 | "isarray": { 1631 | "version": "1.0.0", 1632 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1633 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1634 | "dev": true 1635 | }, 1636 | "isexe": { 1637 | "version": "2.0.0", 1638 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1639 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1640 | "dev": true 1641 | }, 1642 | "js-tokens": { 1643 | "version": "4.0.0", 1644 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1645 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1646 | }, 1647 | "lodash.isequal": { 1648 | "version": "4.5.0", 1649 | "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", 1650 | "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" 1651 | }, 1652 | "loose-envify": { 1653 | "version": "1.4.0", 1654 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1655 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1656 | "requires": { 1657 | "js-tokens": "^3.0.0 || ^4.0.0" 1658 | } 1659 | }, 1660 | "md5.js": { 1661 | "version": "1.3.5", 1662 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", 1663 | "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", 1664 | "dev": true, 1665 | "requires": { 1666 | "hash-base": "^3.0.0", 1667 | "inherits": "^2.0.1", 1668 | "safe-buffer": "^5.1.2" 1669 | } 1670 | }, 1671 | "miller-rabin": { 1672 | "version": "4.0.1", 1673 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", 1674 | "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", 1675 | "dev": true, 1676 | "requires": { 1677 | "bn.js": "^4.0.0", 1678 | "brorand": "^1.0.1" 1679 | }, 1680 | "dependencies": { 1681 | "bn.js": { 1682 | "version": "4.12.0", 1683 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 1684 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 1685 | "dev": true 1686 | } 1687 | } 1688 | }, 1689 | "minimalistic-assert": { 1690 | "version": "1.0.1", 1691 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", 1692 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", 1693 | "dev": true 1694 | }, 1695 | "minimalistic-crypto-utils": { 1696 | "version": "1.0.1", 1697 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", 1698 | "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", 1699 | "dev": true 1700 | }, 1701 | "node-libs-browser": { 1702 | "version": "2.2.1", 1703 | "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", 1704 | "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", 1705 | "dev": true, 1706 | "requires": { 1707 | "assert": "^1.1.1", 1708 | "browserify-zlib": "^0.2.0", 1709 | "buffer": "^4.3.0", 1710 | "console-browserify": "^1.1.0", 1711 | "constants-browserify": "^1.0.0", 1712 | "crypto-browserify": "^3.11.0", 1713 | "domain-browser": "^1.1.1", 1714 | "events": "^3.0.0", 1715 | "https-browserify": "^1.0.0", 1716 | "os-browserify": "^0.3.0", 1717 | "path-browserify": "0.0.1", 1718 | "process": "^0.11.10", 1719 | "punycode": "^1.2.4", 1720 | "querystring-es3": "^0.2.0", 1721 | "readable-stream": "^2.3.3", 1722 | "stream-browserify": "^2.0.1", 1723 | "stream-http": "^2.7.2", 1724 | "string_decoder": "^1.0.0", 1725 | "timers-browserify": "^2.0.4", 1726 | "tty-browserify": "0.0.0", 1727 | "url": "^0.11.0", 1728 | "util": "^0.11.0", 1729 | "vm-browserify": "^1.0.1" 1730 | } 1731 | }, 1732 | "object-assign": { 1733 | "version": "4.1.1", 1734 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1735 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 1736 | }, 1737 | "object-inspect": { 1738 | "version": "1.10.2", 1739 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.2.tgz", 1740 | "integrity": "sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA==" 1741 | }, 1742 | "os-browserify": { 1743 | "version": "0.3.0", 1744 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", 1745 | "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", 1746 | "dev": true 1747 | }, 1748 | "pako": { 1749 | "version": "1.0.11", 1750 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 1751 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", 1752 | "dev": true 1753 | }, 1754 | "parse-asn1": { 1755 | "version": "5.1.6", 1756 | "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", 1757 | "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", 1758 | "dev": true, 1759 | "requires": { 1760 | "asn1.js": "^5.2.0", 1761 | "browserify-aes": "^1.0.0", 1762 | "evp_bytestokey": "^1.0.0", 1763 | "pbkdf2": "^3.0.3", 1764 | "safe-buffer": "^5.1.1" 1765 | } 1766 | }, 1767 | "path-browserify": { 1768 | "version": "0.0.1", 1769 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", 1770 | "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", 1771 | "dev": true 1772 | }, 1773 | "pbkdf2": { 1774 | "version": "3.1.2", 1775 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", 1776 | "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", 1777 | "dev": true, 1778 | "requires": { 1779 | "create-hash": "^1.1.2", 1780 | "create-hmac": "^1.1.4", 1781 | "ripemd160": "^2.0.1", 1782 | "safe-buffer": "^5.0.1", 1783 | "sha.js": "^2.4.8" 1784 | } 1785 | }, 1786 | "process": { 1787 | "version": "0.11.10", 1788 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 1789 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", 1790 | "dev": true 1791 | }, 1792 | "process-nextick-args": { 1793 | "version": "2.0.1", 1794 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1795 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 1796 | "dev": true 1797 | }, 1798 | "public-encrypt": { 1799 | "version": "4.0.3", 1800 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", 1801 | "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", 1802 | "dev": true, 1803 | "requires": { 1804 | "bn.js": "^4.1.0", 1805 | "browserify-rsa": "^4.0.0", 1806 | "create-hash": "^1.1.0", 1807 | "parse-asn1": "^5.0.0", 1808 | "randombytes": "^2.0.1", 1809 | "safe-buffer": "^5.1.2" 1810 | }, 1811 | "dependencies": { 1812 | "bn.js": { 1813 | "version": "4.12.0", 1814 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 1815 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 1816 | "dev": true 1817 | } 1818 | } 1819 | }, 1820 | "punycode": { 1821 | "version": "1.4.1", 1822 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 1823 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", 1824 | "dev": true 1825 | }, 1826 | "qs": { 1827 | "version": "6.10.1", 1828 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", 1829 | "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", 1830 | "requires": { 1831 | "side-channel": "^1.0.4" 1832 | } 1833 | }, 1834 | "querystring": { 1835 | "version": "0.2.0", 1836 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 1837 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", 1838 | "dev": true 1839 | }, 1840 | "querystring-es3": { 1841 | "version": "0.2.1", 1842 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", 1843 | "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", 1844 | "dev": true 1845 | }, 1846 | "randombytes": { 1847 | "version": "2.1.0", 1848 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1849 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1850 | "dev": true, 1851 | "requires": { 1852 | "safe-buffer": "^5.1.0" 1853 | } 1854 | }, 1855 | "randomfill": { 1856 | "version": "1.0.4", 1857 | "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", 1858 | "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", 1859 | "dev": true, 1860 | "requires": { 1861 | "randombytes": "^2.0.5", 1862 | "safe-buffer": "^5.1.0" 1863 | } 1864 | }, 1865 | "react": { 1866 | "version": "17.0.2", 1867 | "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", 1868 | "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", 1869 | "requires": { 1870 | "loose-envify": "^1.1.0", 1871 | "object-assign": "^4.1.1" 1872 | } 1873 | }, 1874 | "react-dom": { 1875 | "version": "17.0.2", 1876 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", 1877 | "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", 1878 | "requires": { 1879 | "loose-envify": "^1.1.0", 1880 | "object-assign": "^4.1.1", 1881 | "scheduler": "^0.20.2" 1882 | } 1883 | }, 1884 | "readable-stream": { 1885 | "version": "2.3.7", 1886 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 1887 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 1888 | "dev": true, 1889 | "requires": { 1890 | "core-util-is": "~1.0.0", 1891 | "inherits": "~2.0.3", 1892 | "isarray": "~1.0.0", 1893 | "process-nextick-args": "~2.0.0", 1894 | "safe-buffer": "~5.1.1", 1895 | "string_decoder": "~1.1.1", 1896 | "util-deprecate": "~1.0.1" 1897 | }, 1898 | "dependencies": { 1899 | "safe-buffer": { 1900 | "version": "5.1.2", 1901 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1902 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1903 | "dev": true 1904 | }, 1905 | "string_decoder": { 1906 | "version": "1.1.1", 1907 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1908 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1909 | "dev": true, 1910 | "requires": { 1911 | "safe-buffer": "~5.1.0" 1912 | } 1913 | } 1914 | } 1915 | }, 1916 | "readline-sync": { 1917 | "version": "1.4.10", 1918 | "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", 1919 | "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", 1920 | "dev": true 1921 | }, 1922 | "ripemd160": { 1923 | "version": "2.0.2", 1924 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", 1925 | "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", 1926 | "dev": true, 1927 | "requires": { 1928 | "hash-base": "^3.0.0", 1929 | "inherits": "^2.0.1" 1930 | } 1931 | }, 1932 | "safe-buffer": { 1933 | "version": "5.2.1", 1934 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1935 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1936 | "dev": true 1937 | }, 1938 | "safer-buffer": { 1939 | "version": "2.1.2", 1940 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1941 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1942 | "dev": true 1943 | }, 1944 | "scheduler": { 1945 | "version": "0.20.2", 1946 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", 1947 | "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", 1948 | "requires": { 1949 | "loose-envify": "^1.1.0", 1950 | "object-assign": "^4.1.1" 1951 | } 1952 | }, 1953 | "setimmediate": { 1954 | "version": "1.0.5", 1955 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 1956 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", 1957 | "dev": true 1958 | }, 1959 | "sha.js": { 1960 | "version": "2.4.11", 1961 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", 1962 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", 1963 | "dev": true, 1964 | "requires": { 1965 | "inherits": "^2.0.1", 1966 | "safe-buffer": "^5.0.1" 1967 | } 1968 | }, 1969 | "shadow-cljs": { 1970 | "version": "2.17.1", 1971 | "resolved": "https://registry.npmjs.org/shadow-cljs/-/shadow-cljs-2.17.1.tgz", 1972 | "integrity": "sha512-h5Bbt7xeGj9ttAj+I5y1AKJgBEzgSZ+8fhQM3BqR4D7L9PKJPqGJqlZVP71lYBJ6Bw/8vGhsQOpTYqNZVTqCfQ==", 1973 | "dev": true, 1974 | "requires": { 1975 | "node-libs-browser": "^2.2.1", 1976 | "readline-sync": "^1.4.7", 1977 | "shadow-cljs-jar": "1.3.2", 1978 | "source-map-support": "^0.4.15", 1979 | "which": "^1.3.1", 1980 | "ws": "^7.4.6" 1981 | } 1982 | }, 1983 | "shadow-cljs-jar": { 1984 | "version": "1.3.2", 1985 | "resolved": "https://registry.npmjs.org/shadow-cljs-jar/-/shadow-cljs-jar-1.3.2.tgz", 1986 | "integrity": "sha512-XmeffAZHv8z7451kzeq9oKh8fh278Ak+UIOGGrapyqrFBB773xN8vMQ3O7J7TYLnb9BUwcqadKkmgaq7q6fhZg==", 1987 | "dev": true 1988 | }, 1989 | "side-channel": { 1990 | "version": "1.0.4", 1991 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1992 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1993 | "requires": { 1994 | "call-bind": "^1.0.0", 1995 | "get-intrinsic": "^1.0.2", 1996 | "object-inspect": "^1.9.0" 1997 | } 1998 | }, 1999 | "source-map": { 2000 | "version": "0.5.7", 2001 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 2002 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 2003 | "dev": true 2004 | }, 2005 | "source-map-support": { 2006 | "version": "0.4.18", 2007 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", 2008 | "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", 2009 | "dev": true, 2010 | "requires": { 2011 | "source-map": "^0.5.6" 2012 | } 2013 | }, 2014 | "stream-browserify": { 2015 | "version": "2.0.2", 2016 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", 2017 | "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", 2018 | "dev": true, 2019 | "requires": { 2020 | "inherits": "~2.0.1", 2021 | "readable-stream": "^2.0.2" 2022 | } 2023 | }, 2024 | "stream-http": { 2025 | "version": "2.8.3", 2026 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", 2027 | "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", 2028 | "dev": true, 2029 | "requires": { 2030 | "builtin-status-codes": "^3.0.0", 2031 | "inherits": "^2.0.1", 2032 | "readable-stream": "^2.3.6", 2033 | "to-arraybuffer": "^1.0.0", 2034 | "xtend": "^4.0.0" 2035 | } 2036 | }, 2037 | "string_decoder": { 2038 | "version": "1.3.0", 2039 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 2040 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 2041 | "dev": true, 2042 | "requires": { 2043 | "safe-buffer": "~5.2.0" 2044 | } 2045 | }, 2046 | "timers-browserify": { 2047 | "version": "2.0.12", 2048 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", 2049 | "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", 2050 | "dev": true, 2051 | "requires": { 2052 | "setimmediate": "^1.0.4" 2053 | } 2054 | }, 2055 | "to-arraybuffer": { 2056 | "version": "1.0.1", 2057 | "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", 2058 | "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", 2059 | "dev": true 2060 | }, 2061 | "tty-browserify": { 2062 | "version": "0.0.0", 2063 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", 2064 | "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", 2065 | "dev": true 2066 | }, 2067 | "url": { 2068 | "version": "0.11.0", 2069 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", 2070 | "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", 2071 | "dev": true, 2072 | "requires": { 2073 | "punycode": "1.3.2", 2074 | "querystring": "0.2.0" 2075 | }, 2076 | "dependencies": { 2077 | "punycode": { 2078 | "version": "1.3.2", 2079 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", 2080 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", 2081 | "dev": true 2082 | } 2083 | } 2084 | }, 2085 | "util": { 2086 | "version": "0.11.1", 2087 | "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", 2088 | "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", 2089 | "dev": true, 2090 | "requires": { 2091 | "inherits": "2.0.3" 2092 | }, 2093 | "dependencies": { 2094 | "inherits": { 2095 | "version": "2.0.3", 2096 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 2097 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 2098 | "dev": true 2099 | } 2100 | } 2101 | }, 2102 | "util-deprecate": { 2103 | "version": "1.0.2", 2104 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2105 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2106 | "dev": true 2107 | }, 2108 | "vm-browserify": { 2109 | "version": "1.1.2", 2110 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", 2111 | "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", 2112 | "dev": true 2113 | }, 2114 | "which": { 2115 | "version": "1.3.1", 2116 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 2117 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 2118 | "dev": true, 2119 | "requires": { 2120 | "isexe": "^2.0.0" 2121 | } 2122 | }, 2123 | "ws": { 2124 | "version": "7.5.7", 2125 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", 2126 | "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", 2127 | "dev": true, 2128 | "requires": {} 2129 | }, 2130 | "xtend": { 2131 | "version": "4.0.2", 2132 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 2133 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 2134 | "dev": true 2135 | } 2136 | } 2137 | } 2138 | -------------------------------------------------------------------------------- /examples/client-side/reagent-inertiajs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "reagent-inertiajs", 3 | "version": "0.0.1", 4 | "private": true, 5 | "devDependencies": { 6 | "shadow-cljs": "^2.17.1" 7 | }, 8 | "dependencies": { 9 | "@inertiajs/inertia": "^0.11.0", 10 | "@inertiajs/inertia-react": "^0.8.0", 11 | "react": "^17.0.2", 12 | "react-dom": "^17.0.2" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /examples/client-side/reagent-inertiajs/shadow-cljs.edn: -------------------------------------------------------------------------------- 1 | ;; shadow-cljs configuration 2 | {:source-paths 3 | ["src"] 4 | 5 | :dependencies 6 | [[reagent "1.1.0"] 7 | [applied-science/js-interop "0.3.1"]] 8 | 9 | :builds 10 | {:app 11 | {:target :browser 12 | :output-dir "../../shared-resources/public/js" 13 | :asset-path "/js" 14 | :modules {:app {:init-fn reagent.inertia/init!}}}}} 15 | -------------------------------------------------------------------------------- /examples/client-side/reagent-inertiajs/src/reagent/inertia.cljs: -------------------------------------------------------------------------------- 1 | (ns reagent.inertia 2 | (:require ["@inertiajs/inertia-react" :refer [createInertiaApp InertiaLink]] 3 | ["@inertiajs/inertia" :refer [Inertia]] 4 | [reagent.core :as r] 5 | [reagent.dom :as d] 6 | [applied-science.js-interop :as j])) 7 | 8 | (defn layout [& children] 9 | (into 10 | [:<> 11 | [:p "Navigate pages without reloading: "] 12 | [:ul 13 | [:li [:> InertiaLink {:href "/"} "Home"]] 14 | [:li [:> InertiaLink {:href "/demo"} "Demo"]]]] 15 | children)) 16 | 17 | (defn index [{:keys [title]}] 18 | [:h1 title]) 19 | 20 | (defn demo [{:keys [title date]}] 21 | (r/with-let [counter (r/atom 0)] 22 | [:<> 23 | [:h1 title] 24 | [:p "Local state Reagent Atom or React useState can be preserved when reloading page/component."] 25 | [:p "This is very useful for form submission to keep information filled in while handling errors."] 26 | [:p "Try the counter and click the refresh link. You can see the updated seconds however the counter value stay in place."] 27 | [:p (str "Counter: " @counter)] 28 | [:p (str "Date: " date)] 29 | [:button {:on-click #(swap! counter inc)} "+"] 30 | [:> InertiaLink {:href "/demo" :preserve-state true 31 | :as "button"} "Refresh date"]])) 32 | 33 | ;; Add new page component to this list 34 | (def pages {"index" index 35 | "demo" demo}) 36 | 37 | (defn init! [] 38 | (createInertiaApp 39 | #js {:resolve (fn [name] 40 | (let [^js comp (r/reactify-component (get pages name))] 41 | (set! (.-layout comp) (fn [page] (r/as-element [layout page]))) 42 | comp)) 43 | :setup (j/fn [^:js {:keys [el App props]}] 44 | (d/render (r/as-element [:f> App props]) el))})) 45 | 46 | (defn ^:dev/after-load reload [] 47 | (.reload Inertia)) 48 | -------------------------------------------------------------------------------- /examples/server-side/compojure-hiccup/README.md: -------------------------------------------------------------------------------- 1 | # Basic Inertia example with Compojure and Hiccup 2 | 3 | ## Usage 4 | 5 | ### Build the front end 6 | 7 | First build the Reagent app in the folder [examples/client-side/reagent-inertiajs](../../client-side/reagent-inertiajs): 8 | 9 | $ npx shadow-cljs release app 10 | 11 | or for development with hot reloading and REPL: 12 | 13 | $ npx shadow-cljs watch app 14 | 15 | This will create the file `/js/app.js` that will be included in the html page served by the backend. 16 | This entry point is shared among several examples, so it live in the [examples/shared-resources](../../shared-resources). 17 | 18 | ### Run the back end 19 | 20 | Then run the server: 21 | 22 | $ clj -M:run 23 | 24 | Now acces the app at: http://localhost:3000/ and then experiment! 25 | -------------------------------------------------------------------------------- /examples/server-side/compojure-hiccup/deps.edn: -------------------------------------------------------------------------------- 1 | {:paths ["src" "../../shared-resources"], 2 | :deps {prestancedesign/inertia-clojure {:local/root "../../.."} 3 | hiccup/hiccup {:mvn/version "2.0.0-alpha2"}, 4 | ring/ring {:mvn/version "1.9.2"}, 5 | compojure/compojure {:mvn/version "1.6.2"}} 6 | :aliases {:run {:main-opts ["-m" "inertia-example"]}}} 7 | -------------------------------------------------------------------------------- /examples/server-side/compojure-hiccup/src/inertia_example.clj: -------------------------------------------------------------------------------- 1 | (ns inertia-example 2 | (:require [compojure.core :refer [defroutes GET]] 3 | [compojure.route :as route] 4 | [hiccup.page :as page] 5 | [inertia.middleware :as inertia] 6 | [ring.adapter.jetty :as http])) 7 | 8 | (def asset-version "1") 9 | 10 | (defn template [data-page] 11 | (page/html5 12 | [:head 13 | [:meta {:charset "utf-8"}] 14 | [:title "Inertia + Clojure example"]] 15 | [:body 16 | [:div {:id "app" 17 | :data-page data-page}] 18 | (page/include-js "/js/app.js")])) 19 | 20 | (defroutes routes 21 | (GET "/" [] (inertia/render "index" {:title "Hello World!"})) 22 | (GET "/demo" [] (inertia/render "demo" {:title "Clojure + Inertia" 23 | :date (str (java.util.Date.))})) 24 | (route/resources "/")) 25 | 26 | (def app (inertia/wrap-inertia routes template asset-version)) 27 | 28 | (defn -main [] 29 | (http/run-jetty #'app {:port 3000 :join? false})) 30 | -------------------------------------------------------------------------------- /examples/server-side/reitit-selmer/README.md: -------------------------------------------------------------------------------- 1 | # Basic Inertia example with Reitit and Selmer 2 | 3 | ## Usage 4 | 5 | ### Build the front end 6 | 7 | First build the Reagent app in the folder [examples/client-side/reagent-inertiajs](../../client-side/reagent-inertiajs): 8 | 9 | $ npx shadow-cljs release app 10 | 11 | or for development with hot reloading and REPL: 12 | 13 | $ npx shadow-cljs watch app 14 | 15 | This will create the file `/js/app.js` that will be included in the html page served by the backend. 16 | This entry point is shared among several examples, so it live in the [examples/shared-resources](../../shared-resources). 17 | 18 | ### Run the back end 19 | 20 | Then run the server: 21 | 22 | $ clj -M:run 23 | 24 | Now acces the app at: http://localhost:3000/ and then experiment! 25 | -------------------------------------------------------------------------------- /examples/server-side/reitit-selmer/deps.edn: -------------------------------------------------------------------------------- 1 | {:paths ["src" "../../shared-resources" "resources"] 2 | :deps {prestancedesign/inertia-clojure {:local/root "../../.."} 3 | ring/ring {:mvn/version "1.9.2"} 4 | metosin/reitit {:mvn/version "0.5.12"} 5 | selmer/selmer {:mvn/version "1.12.33"}} 6 | :aliases {:run {:main-opts ["-m" "inertia-example"]}}} 7 | -------------------------------------------------------------------------------- /examples/server-side/reitit-selmer/resources/templates/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /examples/server-side/reitit-selmer/src/inertia_example.clj: -------------------------------------------------------------------------------- 1 | (ns inertia-example 2 | (:require [inertia.middleware :as inertia] 3 | [reitit.ring :as ring] 4 | [ring.adapter.jetty :as http] 5 | [selmer.parser :as html])) 6 | 7 | (def asset-version "1") 8 | 9 | (defn template [data-page] 10 | (html/render-file "templates/base.html" {:page data-page})) 11 | 12 | (def app 13 | (ring/ring-handler 14 | (ring/router 15 | [["/" (fn [_] (inertia/render "index" {:title "Hello World!"}))] 16 | ["/demo" (fn [_] (inertia/render "demo" 17 | {:title "Clojure + Inertia" 18 | :date (str (java.util.Date.))}))]]) 19 | (ring/create-resource-handler {:path "/"}) 20 | {:middleware [[inertia/wrap-inertia template asset-version]]})) 21 | 22 | (defn -main [] 23 | (http/run-jetty #'app {:port 3000 :join? false})) 24 | -------------------------------------------------------------------------------- /examples/shared-resources/public/templates/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | com.github.prestancedesign 5 | inertia-clojure 6 | 0.2.5 7 | com.github.prestancedesign/inertia-clojure 8 | A Clojure adapter for Inertia.js 9 | https://github.com/prestancedesign/inertia-clojure 10 | 11 | 12 | Eclipse Public License 13 | http://www.eclipse.org/legal/epl-v10.html 14 | 15 | 16 | 17 | 18 | Michaël Salihi 19 | 20 | 21 | 22 | https://github.com/prestancedesign/inertia-clojure 23 | scm:git:git://github.com/prestancedesign/inertia-clojure.git 24 | scm:git:ssh://git@github.com/prestancedesign/inertia-clojure.git 25 | v0.2.5 26 | 27 | 28 | 29 | org.clojure 30 | clojure 31 | 1.11.1 32 | 33 | 34 | metosin 35 | muuntaja 36 | 0.6.8 37 | 38 | 39 | metosin 40 | jsonista 41 | 0.3.6 42 | 43 | 44 | ring 45 | ring-core 46 | 1.9.5 47 | 48 | 49 | 50 | src 51 | 52 | 53 | 54 | clojars 55 | https://repo.clojars.org/ 56 | 57 | 58 | 59 | 60 | clojars 61 | Clojars repository 62 | https://clojars.org/repo 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /src/inertia/middleware.clj: -------------------------------------------------------------------------------- 1 | (ns inertia.middleware 2 | (:require [clojure.string :as str] 3 | [jsonista.core :as json] 4 | [muuntaja.middleware :as middleware] 5 | [ring.util.response :as rr])) 6 | 7 | (defn render 8 | ([component] 9 | (render component {})) 10 | ([component props] 11 | (rr/response {:component component 12 | :props props}))) 13 | 14 | (defn- only-partial-data 15 | [{:keys [component props] :as inertia-data} request] 16 | (let [partial-data (rr/get-header request "x-inertia-partial-data") 17 | partial-component (rr/get-header request "x-inertia-partial-component")] 18 | (if (and partial-data (= component partial-component)) 19 | (let [only (str/split partial-data #",")] 20 | (assoc inertia-data :props (select-keys props (map keyword only)))) 21 | inertia-data))) 22 | 23 | (defn- request-url [request] 24 | (str (:uri request) 25 | (when-let [qs (:query-string request)] 26 | (str "?" qs)))) 27 | 28 | (defn wrap-inertia 29 | "Ring middleware for return either an HTTP or JSON response of a component to use 30 | with InertiaJS frontend integration." 31 | [handler template asset-version] 32 | (middleware/wrap-format 33 | (fn [request] 34 | (let [response (handler request) 35 | {body :body status :status} response 36 | inertia-header (rr/get-header request "x-inertia") 37 | inertia-version (rr/get-header request "x-inertia-version") 38 | method (:request-method request) 39 | url (request-url request) 40 | share-props (:inertia-share request)] 41 | (if (and inertia-header (= method :get) (not= inertia-version asset-version)) 42 | {:status 409 43 | :headers {"x-inertia-location" url}} 44 | (if (coll? body) 45 | (let [inertia-data (-> response 46 | :body 47 | (update :props merge share-props) 48 | (only-partial-data request)) 49 | data-page (assoc inertia-data :url url :version asset-version)] 50 | (cond (= 302 status) response 51 | inertia-header {:status status 52 | :headers {"x-inertia" "true" 53 | "vary" "accept"} 54 | :body data-page} 55 | :else (-> (rr/response (template (json/write-value-as-string data-page))) 56 | (rr/status status) 57 | (rr/content-type "text/html")))) 58 | response)))))) 59 | -------------------------------------------------------------------------------- /test/prestancedesign/inertia_clojure_test.clj: -------------------------------------------------------------------------------- 1 | (ns prestancedesign.inertia-clojure-test 2 | (:require [clojure.test :refer :all] 3 | [prestancedesign.inertia-clojure :refer :all])) 4 | 5 | (deftest a-test 6 | (testing "FIXME, I fail." 7 | (is (= 0 1)))) 8 | --------------------------------------------------------------------------------