├── .github └── workflows │ ├── compress.yml │ └── deploy.yml ├── .gitignore ├── .prettierignore ├── .prettierrc ├── LICENSE ├── README.md ├── docs ├── .vitepress │ ├── config.mts │ └── theme │ │ ├── Layout.vue │ │ └── index.js ├── index.md ├── intro.md └── public │ ├── favicon-16x16.png │ └── favicon-32x32.png ├── images ├── contributors.svg ├── doocs.png ├── owner-favicon-16x16.png ├── owner-favicon-32x32.png ├── qrcode-for-doocs.jpg └── qrcode-for-yanglbme.jpg ├── package-lock.json ├── package.json └── vercel.json /.github/workflows/compress.yml: -------------------------------------------------------------------------------- 1 | name: Compress 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | paths: 7 | - "**.jpg" 8 | - "**.jpeg" 9 | - "**.png" 10 | - "**.webp" 11 | workflow_dispatch: 12 | 13 | jobs: 14 | compress: 15 | runs-on: ubuntu-latest 16 | if: github.repository == 'doocs/technical-books' 17 | steps: 18 | - name: Checkout Branch 19 | uses: actions/checkout@v3 20 | 21 | - name: Compress Images 22 | id: calibre 23 | uses: calibreapp/image-actions@main 24 | with: 25 | githubToken: ${{ secrets.ACTION_TOKEN }} 26 | compressOnly: true 27 | 28 | - name: Commit Files 29 | if: | 30 | steps.calibre.outputs.markdown != '' 31 | run: | 32 | git config --local user.email "szuyanglb@outlook.com" 33 | git config --local user.name "yanglbme" 34 | git commit -m "chore: auto compress images" -a 35 | 36 | - name: Push Changes 37 | if: | 38 | steps.calibre.outputs.markdown != '' 39 | uses: ad-m/github-push-action@master 40 | with: 41 | github_token: ${{ secrets.ACTION_TOKEN }} 42 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Build and deploy 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | workflow_dispatch: 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v4 13 | with: 14 | fetch-depth: 0 15 | 16 | - name: Setup Node.js 17 | uses: actions/setup-node@v4 18 | with: 19 | node-version: 22 20 | cache: npm 21 | 22 | - name: Install dependencies 23 | run: npm ci 24 | 25 | - name: Build with VitePress 26 | run: npm run docs:build 27 | 28 | - name: Generate CNAME 29 | run: echo "book.doocs.org" > docs/.vitepress/dist/CNAME 30 | 31 | - name: Upload artifact 32 | uses: actions/upload-pages-artifact@v3 33 | with: 34 | path: docs/.vitepress/dist 35 | 36 | deploy: 37 | needs: build 38 | runs-on: ubuntu-latest 39 | permissions: 40 | pages: write 41 | id-token: write 42 | environment: 43 | name: github_pages 44 | url: ${{ steps.deployment.outputs.page_url }} 45 | steps: 46 | - name: Deploy to GitHub Pages 47 | id: deployment 48 | uses: actions/deploy-pages@v4 49 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .DS_Store 3 | .vscode 4 | .temp 5 | .cache 6 | /node_modules 7 | docs/.vitepress/dist 8 | docs/.vitepress/cache -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .github/ 3 | node_modules/ -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 2, 3 | "useTabs": false, 4 | "semi": true, 5 | "singleQuote": true, 6 | "trailingComma": "all", 7 | "bracketSpacing": true, 8 | "arrowParens": "avoid" 9 | } 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Attribution-ShareAlike 4.0 International 2 | 3 | ======================================================================= 4 | 5 | Creative Commons Corporation ("Creative Commons") is not a law firm and 6 | does not provide legal services or legal advice. Distribution of 7 | Creative Commons public licenses does not create a lawyer-client or 8 | other relationship. Creative Commons makes its licenses and related 9 | information available on an "as-is" basis. Creative Commons gives no 10 | warranties regarding its licenses, any material licensed under their 11 | terms and conditions, or any related information. Creative Commons 12 | disclaims all liability for damages resulting from their use to the 13 | fullest extent possible. 14 | 15 | Using Creative Commons Public Licenses 16 | 17 | Creative Commons public licenses provide a standard set of terms and 18 | conditions that creators and other rights holders may use to share 19 | original works of authorship and other material subject to copyright 20 | and certain other rights specified in the public license below. The 21 | following considerations are for informational purposes only, are not 22 | exhaustive, and do not form part of our licenses. 23 | 24 | Considerations for licensors: Our public licenses are 25 | intended for use by those authorized to give the public 26 | permission to use material in ways otherwise restricted by 27 | copyright and certain other rights. Our licenses are 28 | irrevocable. Licensors should read and understand the terms 29 | and conditions of the license they choose before applying it. 30 | Licensors should also secure all rights necessary before 31 | applying our licenses so that the public can reuse the 32 | material as expected. Licensors should clearly mark any 33 | material not subject to the license. This includes other CC- 34 | licensed material, or material used under an exception or 35 | limitation to copyright. More considerations for licensors: 36 | wiki.creativecommons.org/Considerations_for_licensors 37 | 38 | Considerations for the public: By using one of our public 39 | licenses, a licensor grants the public permission to use the 40 | licensed material under specified terms and conditions. If 41 | the licensor's permission is not necessary for any reason--for 42 | example, because of any applicable exception or limitation to 43 | copyright--then that use is not regulated by the license. Our 44 | licenses grant only permissions under copyright and certain 45 | other rights that a licensor has authority to grant. Use of 46 | the licensed material may still be restricted for other 47 | reasons, including because others have copyright or other 48 | rights in the material. A licensor may make special requests, 49 | such as asking that all changes be marked or described. 50 | Although not required by our licenses, you are encouraged to 51 | respect those requests where reasonable. More_considerations 52 | for the public: 53 | wiki.creativecommons.org/Considerations_for_licensees 54 | 55 | ======================================================================= 56 | 57 | Creative Commons Attribution-ShareAlike 4.0 International Public 58 | License 59 | 60 | By exercising the Licensed Rights (defined below), You accept and agree 61 | to be bound by the terms and conditions of this Creative Commons 62 | Attribution-ShareAlike 4.0 International Public License ("Public 63 | License"). To the extent this Public License may be interpreted as a 64 | contract, You are granted the Licensed Rights in consideration of Your 65 | acceptance of these terms and conditions, and the Licensor grants You 66 | such rights in consideration of benefits the Licensor receives from 67 | making the Licensed Material available under these terms and 68 | conditions. 69 | 70 | 71 | Section 1 -- Definitions. 72 | 73 | a. Adapted Material means material subject to Copyright and Similar 74 | Rights that is derived from or based upon the Licensed Material 75 | and in which the Licensed Material is translated, altered, 76 | arranged, transformed, or otherwise modified in a manner requiring 77 | permission under the Copyright and Similar Rights held by the 78 | Licensor. For purposes of this Public License, where the Licensed 79 | Material is a musical work, performance, or sound recording, 80 | Adapted Material is always produced where the Licensed Material is 81 | synched in timed relation with a moving image. 82 | 83 | b. Adapter's License means the license You apply to Your Copyright 84 | and Similar Rights in Your contributions to Adapted Material in 85 | accordance with the terms and conditions of this Public License. 86 | 87 | c. BY-SA Compatible License means a license listed at 88 | creativecommons.org/compatiblelicenses, approved by Creative 89 | Commons as essentially the equivalent of this Public License. 90 | 91 | d. Copyright and Similar Rights means copyright and/or similar rights 92 | closely related to copyright including, without limitation, 93 | performance, broadcast, sound recording, and Sui Generis Database 94 | Rights, without regard to how the rights are labeled or 95 | categorized. For purposes of this Public License, the rights 96 | specified in Section 2(b)(1)-(2) are not Copyright and Similar 97 | Rights. 98 | 99 | e. Effective Technological Measures means those measures that, in the 100 | absence of proper authority, may not be circumvented under laws 101 | fulfilling obligations under Article 11 of the WIPO Copyright 102 | Treaty adopted on December 20, 1996, and/or similar international 103 | agreements. 104 | 105 | f. Exceptions and Limitations means fair use, fair dealing, and/or 106 | any other exception or limitation to Copyright and Similar Rights 107 | that applies to Your use of the Licensed Material. 108 | 109 | g. License Elements means the license attributes listed in the name 110 | of a Creative Commons Public License. The License Elements of this 111 | Public License are Attribution and ShareAlike. 112 | 113 | h. Licensed Material means the artistic or literary work, database, 114 | or other material to which the Licensor applied this Public 115 | License. 116 | 117 | i. Licensed Rights means the rights granted to You subject to the 118 | terms and conditions of this Public License, which are limited to 119 | all Copyright and Similar Rights that apply to Your use of the 120 | Licensed Material and that the Licensor has authority to license. 121 | 122 | j. Licensor means the individual(s) or entity(ies) granting rights 123 | under this Public License. 124 | 125 | k. Share means to provide material to the public by any means or 126 | process that requires permission under the Licensed Rights, such 127 | as reproduction, public display, public performance, distribution, 128 | dissemination, communication, or importation, and to make material 129 | available to the public including in ways that members of the 130 | public may access the material from a place and at a time 131 | individually chosen by them. 132 | 133 | l. Sui Generis Database Rights means rights other than copyright 134 | resulting from Directive 96/9/EC of the European Parliament and of 135 | the Council of 11 March 1996 on the legal protection of databases, 136 | as amended and/or succeeded, as well as other essentially 137 | equivalent rights anywhere in the world. 138 | 139 | m. You means the individual or entity exercising the Licensed Rights 140 | under this Public License. Your has a corresponding meaning. 141 | 142 | 143 | Section 2 -- Scope. 144 | 145 | a. License grant. 146 | 147 | 1. Subject to the terms and conditions of this Public License, 148 | the Licensor hereby grants You a worldwide, royalty-free, 149 | non-sublicensable, non-exclusive, irrevocable license to 150 | exercise the Licensed Rights in the Licensed Material to: 151 | 152 | a. reproduce and Share the Licensed Material, in whole or 153 | in part; and 154 | 155 | b. produce, reproduce, and Share Adapted Material. 156 | 157 | 2. Exceptions and Limitations. For the avoidance of doubt, where 158 | Exceptions and Limitations apply to Your use, this Public 159 | License does not apply, and You do not need to comply with 160 | its terms and conditions. 161 | 162 | 3. Term. The term of this Public License is specified in Section 163 | 6(a). 164 | 165 | 4. Media and formats; technical modifications allowed. The 166 | Licensor authorizes You to exercise the Licensed Rights in 167 | all media and formats whether now known or hereafter created, 168 | and to make technical modifications necessary to do so. The 169 | Licensor waives and/or agrees not to assert any right or 170 | authority to forbid You from making technical modifications 171 | necessary to exercise the Licensed Rights, including 172 | technical modifications necessary to circumvent Effective 173 | Technological Measures. For purposes of this Public License, 174 | simply making modifications authorized by this Section 2(a) 175 | (4) never produces Adapted Material. 176 | 177 | 5. Downstream recipients. 178 | 179 | a. Offer from the Licensor -- Licensed Material. Every 180 | recipient of the Licensed Material automatically 181 | receives an offer from the Licensor to exercise the 182 | Licensed Rights under the terms and conditions of this 183 | Public License. 184 | 185 | b. Additional offer from the Licensor -- Adapted Material. 186 | Every recipient of Adapted Material from You 187 | automatically receives an offer from the Licensor to 188 | exercise the Licensed Rights in the Adapted Material 189 | under the conditions of the Adapter's License You apply. 190 | 191 | c. No downstream restrictions. You may not offer or impose 192 | any additional or different terms or conditions on, or 193 | apply any Effective Technological Measures to, the 194 | Licensed Material if doing so restricts exercise of the 195 | Licensed Rights by any recipient of the Licensed 196 | Material. 197 | 198 | 6. No endorsement. Nothing in this Public License constitutes or 199 | may be construed as permission to assert or imply that You 200 | are, or that Your use of the Licensed Material is, connected 201 | with, or sponsored, endorsed, or granted official status by, 202 | the Licensor or others designated to receive attribution as 203 | provided in Section 3(a)(1)(A)(i). 204 | 205 | b. Other rights. 206 | 207 | 1. Moral rights, such as the right of integrity, are not 208 | licensed under this Public License, nor are publicity, 209 | privacy, and/or other similar personality rights; however, to 210 | the extent possible, the Licensor waives and/or agrees not to 211 | assert any such rights held by the Licensor to the limited 212 | extent necessary to allow You to exercise the Licensed 213 | Rights, but not otherwise. 214 | 215 | 2. Patent and trademark rights are not licensed under this 216 | Public License. 217 | 218 | 3. To the extent possible, the Licensor waives any right to 219 | collect royalties from You for the exercise of the Licensed 220 | Rights, whether directly or through a collecting society 221 | under any voluntary or waivable statutory or compulsory 222 | licensing scheme. In all other cases the Licensor expressly 223 | reserves any right to collect such royalties. 224 | 225 | 226 | Section 3 -- License Conditions. 227 | 228 | Your exercise of the Licensed Rights is expressly made subject to the 229 | following conditions. 230 | 231 | a. Attribution. 232 | 233 | 1. If You Share the Licensed Material (including in modified 234 | form), You must: 235 | 236 | a. retain the following if it is supplied by the Licensor 237 | with the Licensed Material: 238 | 239 | i. identification of the creator(s) of the Licensed 240 | Material and any others designated to receive 241 | attribution, in any reasonable manner requested by 242 | the Licensor (including by pseudonym if 243 | designated); 244 | 245 | ii. a copyright notice; 246 | 247 | iii. a notice that refers to this Public License; 248 | 249 | iv. a notice that refers to the disclaimer of 250 | warranties; 251 | 252 | v. a URI or hyperlink to the Licensed Material to the 253 | extent reasonably practicable; 254 | 255 | b. indicate if You modified the Licensed Material and 256 | retain an indication of any previous modifications; and 257 | 258 | c. indicate the Licensed Material is licensed under this 259 | Public License, and include the text of, or the URI or 260 | hyperlink to, this Public License. 261 | 262 | 2. You may satisfy the conditions in Section 3(a)(1) in any 263 | reasonable manner based on the medium, means, and context in 264 | which You Share the Licensed Material. For example, it may be 265 | reasonable to satisfy the conditions by providing a URI or 266 | hyperlink to a resource that includes the required 267 | information. 268 | 269 | 3. If requested by the Licensor, You must remove any of the 270 | information required by Section 3(a)(1)(A) to the extent 271 | reasonably practicable. 272 | 273 | b. ShareAlike. 274 | 275 | In addition to the conditions in Section 3(a), if You Share 276 | Adapted Material You produce, the following conditions also apply. 277 | 278 | 1. The Adapter's License You apply must be a Creative Commons 279 | license with the same License Elements, this version or 280 | later, or a BY-SA Compatible License. 281 | 282 | 2. You must include the text of, or the URI or hyperlink to, the 283 | Adapter's License You apply. You may satisfy this condition 284 | in any reasonable manner based on the medium, means, and 285 | context in which You Share Adapted Material. 286 | 287 | 3. You may not offer or impose any additional or different terms 288 | or conditions on, or apply any Effective Technological 289 | Measures to, Adapted Material that restrict exercise of the 290 | rights granted under the Adapter's License You apply. 291 | 292 | 293 | Section 4 -- Sui Generis Database Rights. 294 | 295 | Where the Licensed Rights include Sui Generis Database Rights that 296 | apply to Your use of the Licensed Material: 297 | 298 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right 299 | to extract, reuse, reproduce, and Share all or a substantial 300 | portion of the contents of the database; 301 | 302 | b. if You include all or a substantial portion of the database 303 | contents in a database in which You have Sui Generis Database 304 | Rights, then the database in which You have Sui Generis Database 305 | Rights (but not its individual contents) is Adapted Material, 306 | 307 | including for purposes of Section 3(b); and 308 | c. You must comply with the conditions in Section 3(a) if You Share 309 | all or a substantial portion of the contents of the database. 310 | 311 | For the avoidance of doubt, this Section 4 supplements and does not 312 | replace Your obligations under this Public License where the Licensed 313 | Rights include other Copyright and Similar Rights. 314 | 315 | 316 | Section 5 -- Disclaimer of Warranties and Limitation of Liability. 317 | 318 | a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE 319 | EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS 320 | AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF 321 | ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, 322 | IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, 323 | WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR 324 | PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, 325 | ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT 326 | KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT 327 | ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. 328 | 329 | b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE 330 | TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, 331 | NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, 332 | INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, 333 | COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR 334 | USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN 335 | ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR 336 | DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR 337 | IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. 338 | 339 | c. The disclaimer of warranties and limitation of liability provided 340 | above shall be interpreted in a manner that, to the extent 341 | possible, most closely approximates an absolute disclaimer and 342 | waiver of all liability. 343 | 344 | 345 | Section 6 -- Term and Termination. 346 | 347 | a. This Public License applies for the term of the Copyright and 348 | Similar Rights licensed here. However, if You fail to comply with 349 | this Public License, then Your rights under this Public License 350 | terminate automatically. 351 | 352 | b. Where Your right to use the Licensed Material has terminated under 353 | Section 6(a), it reinstates: 354 | 355 | 1. automatically as of the date the violation is cured, provided 356 | it is cured within 30 days of Your discovery of the 357 | violation; or 358 | 359 | 2. upon express reinstatement by the Licensor. 360 | 361 | For the avoidance of doubt, this Section 6(b) does not affect any 362 | right the Licensor may have to seek remedies for Your violations 363 | of this Public License. 364 | 365 | c. For the avoidance of doubt, the Licensor may also offer the 366 | Licensed Material under separate terms or conditions or stop 367 | distributing the Licensed Material at any time; however, doing so 368 | will not terminate this Public License. 369 | 370 | d. Sections 1, 5, 6, 7, and 8 survive termination of this Public 371 | License. 372 | 373 | 374 | Section 7 -- Other Terms and Conditions. 375 | 376 | a. The Licensor shall not be bound by any additional or different 377 | terms or conditions communicated by You unless expressly agreed. 378 | 379 | b. Any arrangements, understandings, or agreements regarding the 380 | Licensed Material not stated herein are separate from and 381 | independent of the terms and conditions of this Public License. 382 | 383 | 384 | Section 8 -- Interpretation. 385 | 386 | a. For the avoidance of doubt, this Public License does not, and 387 | shall not be interpreted to, reduce, limit, restrict, or impose 388 | conditions on any use of the Licensed Material that could lawfully 389 | be made without permission under this Public License. 390 | 391 | b. To the extent possible, if any provision of this Public License is 392 | deemed unenforceable, it shall be automatically reformed to the 393 | minimum extent necessary to make it enforceable. If the provision 394 | cannot be reformed, it shall be severed from this Public License 395 | without affecting the enforceability of the remaining terms and 396 | conditions. 397 | 398 | c. No term or condition of this Public License will be waived and no 399 | failure to comply consented to unless expressly agreed to by the 400 | Licensor. 401 | 402 | d. Nothing in this Public License constitutes or may be interpreted 403 | as a limitation upon, or waiver of, any privileges and immunities 404 | that apply to the Licensor or You, including from the legal 405 | processes of any jurisdiction or authority. 406 | 407 | 408 | ======================================================================= 409 | 410 | Creative Commons is not a party to its public 411 | licenses. Notwithstanding, Creative Commons may elect to apply one of 412 | its public licenses to material it publishes and in those instances 413 | will be considered the “Licensor.” The text of the Creative Commons 414 | public licenses is dedicated to the public domain under the CC0 Public 415 | Domain Dedication. Except for the limited purpose of indicating that 416 | material is shared under a Creative Commons public license or as 417 | otherwise permitted by the Creative Commons policies published at 418 | creativecommons.org/policies, Creative Commons does not authorize the 419 | use of the trademark "Creative Commons" or any other trademark or logo 420 | of Creative Commons without its prior written consent including, 421 | without limitation, in connection with any unauthorized modifications 422 | to any of its public licenses or any other arrangements, 423 | understandings, or agreements concerning use of licensed material. For 424 | the avoidance of doubt, this paragraph does not form part of the 425 | public licenses. 426 | 427 | Creative Commons may be contacted at creativecommons.org. 428 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 值得一看的技术类书籍列表 2 | 3 | [![GitHub](https://badgen.net/badge/icon/doocs?icon=github&label&color=green)](https://github.com/doocs) 4 | [![license](https://badgen.net/github/license/doocs/technical-books?color=green)](https://github.com/doocs/technical-books/blob/main/LICENSE) 5 | [![doocs-open-source-organization](https://badgen.net/badge/organization/join%20us/cyan)](https://github.com/doocs/doocs.github.io#how-to-join) 6 | [![gitter](https://badgen.net/badge/gitter/chat/cyan)](https://gitter.im/doocs) 7 | 8 | 书籍是人们获取知识的主要途径。然而,如今的社会太浮躁,不少人不愿意花时间静下心来仔细读书,很多开发人员也是如此。殊不知,书籍沉淀了前人的经验和思考。 9 | 10 | 写书不易,创作好的作品更是需要耗费很大心力,Doocs 鼓励各位同学**购买正版书籍以支持原书作者**,只要在书籍名称上点击即可跳转到购买页。好书推荐请到 [Discussions 讨论区](https://github.com/doocs/technical-books/discussions/30),也可以直接提交 [PR](https://github.com/doocs/technical-books/pulls)。 11 | 12 | ## 站点 13 | 14 | https://book.doocs.org 15 | 16 | ## 计算机系统与算法 17 | 18 | | # | Title | Author(s) | Abstract | 19 | | --- | ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 20 | | 1 | [编码:隐匿在计算机软硬件背后的语言[2012]](https://item.jd.com/11116026.html) | [美] Charles Petzold 著
左飞 薛佟佟 译 | 讲述计算机工作原理,却并不晦涩难懂。不管你是计算机高手,还是对这个神奇的机器充满敬畏之心的菜鸟,读一读大师的经典作品,必然有所收获。 | 21 | | 2 | [码农翻身:用故事给技术加点料[2018]](https://item.jd.com/12364204.html) | 刘欣 | 用故事方式讲述软件编程的若干重要领域,侧重于基础性、原理性的知识。 | 22 | | 3 | [领域驱动设计:软件核心复杂性应对之道(修订版)[2016]](https://item.jd.com/11961038.html) | [美] Eric Evans 著
赵俐 盛海艳 刘霞 等 译 | 领域驱动设计方面的经典之作,围绕设计和开发实践,结合真实项目案例,阐述如何在真实的软件项目开发中应用领域驱动设计。 | 23 | | 4 | [深入理解计算机系统(原书第 2 版)[2011]](https://item.jd.com/11030145668.html) | [美] Randal E.Bryant 等著
龚奕利,雷迎春译 | 本书是一本将计算机软件和硬件理论结合讲述的经典教程,内容涵盖计算机导论、体系结构和处理器设计等多门课程。 | 24 | | 5 | [算法(第 4 版)](https://item.jd.com/11098789.html) | [美] Robert Sedgewick,[美] Kevin Wayne 著
谢路云 译 | 更为实用易读的算法教学类书籍,结合多步骤图及可运行的 Java 代码进行算法讲解,非常适合算法初学者。 | 25 | | 6 | [操作系统导论](https://item.jd.com/12535621.html) | [美] Remzi H.Arpaci-Dusseau, [美] Andrea C.Arpaci-Dusseau 著
王海鹏 译 | 操作系统经典之作,紧紧围绕虚拟化、并发和持久性这三个主要概念展开,介绍了所有现代系统的主要组件。行文诙谐幽默却又鞭辟入里。 | 26 | | 7 | [编译原理 第 2 版 龙书](https://item.jd.com/10058776.html) | [美] Alfred V.Aho, Monica S.Lam, Ravi Sethi 等著
赵建华 郑滔 戴新宇 译 | 又称“龙书”,全面、深入地探讨了编译器设计方面的重要主题,包括词法分析、语法分析、语法制导定义和语法制导翻译、运行时刻环境、目标代码生成、代码优化技术、并行性检测以及过程间分析技术。 适合作为高等院校计算机及相关专业本科生及研究生的编译原理课程的教材,也是广大技术人员的很好参考读物。 | 27 | | 8 | [现代编译原理 C 语言描述 修订版](https://item.jd.com/12343414.html) | [美] Andrew W.Appel, Maia Ginsburg 著
赵克佳 黄春 沈志宇 译 | 又称“虎书”,全面讲述了现代编译器的各个组成部分,包括词法分析、语法分析、抽象语法、语义检查、中间代码表示、指令选择、数据流分析、寄存器分配以及运行时系统等。书中专门为学生提供了一个用 C 语言编写的实习项目,包括前端和后端设计,学生可以在一学期内创建功能完整的编译器。 | 28 | | 9 | [算法导论](http://product.dangdang.com/22927209.html) | [美] Thomas H. Cormen, CharlesE. Leiserson, Charles E.Leiserson, Ronald L. Rivest 著
潘金贵 顾铁成 译 | 本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。 | 29 | 30 | ## 计算机网络 31 | 32 | | # | Title | Author(s) | Abstract | 33 | | --- | --------------------------------------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | 34 | | 1 | [图解 HTTP[2014]](https://item.jd.com/11449491.html) | [日] 上野宣 著
于均良译 | 对 HTTP 协议进行了全面系统的介绍,讲解的同时,辅以大量生动形象的通信图例,更好地帮助读者深刻理解 HTTP 通信过程中客户端与服务器之间的交互情况。 | 35 | | 2 | [TCP/IP 详解 卷 1:协议](https://item.jd.com/10479365347.html) | [美] Kevin R.Fall, W.Richard Stevens 著
吴英,张玉,许昱玮 译 | 主要讲述 TCP/IP 协议,不仅仅讲述 RFC 的标准协议,而且结合大量实例讲述了 TCP/IP 协议族的定义原因,以及在各种不同的操作系统中的应用及工作方式,使读者可以轻松掌握 TCP/IP 的知识。 | 36 | | 3 | [计算机网络:自顶向下方法](http://product.dangdang.com/25299722.html) | [美] James F. Kurose, Keith W. Ross 著
陈鸣 译 | 计算机网络经典教材。采用了自顶向下方法来讲授计算机网络的原理及其协议,注重原理和实践。 | 37 | | 4 | [计算机网络教程](http://product.dangdang.com/25246707.html) | [中]谢钧,谢希仁 著 | 本书的适用对象非常广泛。由于本书的重点立足于计算机网络的基本原理,同时兼顾了 Internet 体系结构与 TCP/IP 协议等内容,因此对于学习计算机网络课程的本科生和研究生,本书都是绝佳的教材或教学参考书。 | 38 | 39 | ## 后端 40 | 41 | | # | Title | Author(s) | Abstract | 42 | | --- | ------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 43 | | 1 | [Effective Java 原书第 3 版[2019]](https://item.jd.com/12507084.html) | [美] Joshua Bloch 著
俞黎敏 译 | Java 经典书籍,内容涵盖 Java 9 及以下版本。 | 44 | | 2 | [码出高效:Java 开发手册[2018]](https://item.jd.com/12451498.html) | 杨冠宝(花名:孤尽)
高海慧(花名:鸣莎) | 结合阿里巴巴实践经验与故障案例,与 Java 底层源码解析融会贯通。 | 45 | | 3 | [互联网轻量级 SSM 框架解密:Spring、Spring MVC、MyBatis 源码深度剖析[2019.3]](http://item.jd.com/12534456.html) | 李艳鹏 等 | SSM 框架源码深度剖析。 | 46 | | 4 | [Java 8 In Action 中文版[2016]](https://item.jd.com/11917790.html) | [英] Raoul-Gabriel Urma, [意] Mario Fusco, [英]Alan Mycroft 著
陆明刚 劳佳 译 | 全面介绍 Java8 这个里程碑版本的新特性,包括 Lambdas、流和函数式编程。 | 47 | | 5 | [实战 Java 高并发程序设计[2015]](https://item.jd.com/11800589.html) | 葛一鸣 郭超 | 主要介绍基于 Java 的并行程序设计基础、思路、方法和实战。 | 48 | | 6 | [Java 设计模式[2018]](https://item.jd.com/12317007.html) | 刘伟 | 内容涵盖了七个面向对象设计原则和 24 个设计模式(23 个 GoF 设计模式+简单工厂模式)。 | 49 | | 7 | [Python 参考手册第 4 版[2016]](https://item.jd.com/12052200.html) | [美] David M.Beazley 著
谢俊 等译 | Python 程序员案头必备,涵盖 Python2 和 Python3 共有特性)。 | 50 | | 8 | [Python3 网络爬虫开发实战[2018]](https://item.jd.com/12333540.html) | 崔庆才 | 全面介绍利用 Python3 开发网络爬虫的知识,包括数据采集、数据存储、动态网站爬取、App 爬取、验证码破解、模拟登录、代理使用、爬虫框架、分布式爬取等。 | 51 | | 9 | Go Web 编程 | 谢孟军 | Go 入门书籍。 | 52 | | 10 | [流畅的 Python[2018]](https://item.jd.com/12186192.html) | [巴西] Luciano Ramalho 著,安道,吴珂 译 | Python 进阶必读, 全面的讲解了序列、数据结构、装饰器、类、生成器、迭代器、协程、并发等重要知识点的原理以及实现。 | 53 | | 11 | [重构 改善既有代码的设计 Java 语言版](https://item.jd.com/11728740.html) | [美] 马丁·福勒(Martin Fowler) 著,熊节 译 | 重构,一言以蔽之,是在不改变外部行为的前提下,有条不紊地改善代码,普通程序员进阶到编程高手必须修炼的秘笈 | 54 | | 12 | [深入浅出 Node.js](https://item.jd.com/11355978.html) | 朴灵 著 | 深入讲解 Node 的图书。讲述基于 JavaScript 运行时所建立的平台原理,与 mongodb 结合操作的具体案例,响应式设计别具匠心。 | 55 | | 13 | [Java 网络编程(第四版)](https://item.jd.com/11544991.html) | [美] Elliotte Rusty Harold(哈诺德 R.E.) 著
李帅,荆涛 等 译 | 《Java 网络编程(第四版)》实用指南全面介绍了如何使用 Java 开发网络程序,如编写多线程服务器、加密通信、广播到本地网络,以及向服务器端程序提交数据。
本书可作为 Java 初学者步入框架学习前的铺垫数据,通过学习基础的 Java 网络编程知识,形成对 Web 后台的基本认知。 | 56 | | 14 | [Head First 设计模式](https://item.jd.com/10100236.html) | [美] Eric Freeman 著
O'Reilly Taiwan 公司 译 | 在提供 23 个设计模式专业知识的同时,仍具有相当高的可读性。内容权威,阅读轻松 | 57 | | 15 | [Spring 实战 (第 4 版)](https://item.jd.com/11899370.html) | [美] Craig Walls 著
张卫滨 译 | 经典的 Spring 学习和实践指南。配合官方文档食用,风味极佳 | 58 | | 16 | [Linux 多线程服务端编程:使用 muduo C++ 网络库](http://product.dangdang.com/29261189.html) | 陈硕 著 | muduo 是一个基于 Reactor 模式的现代 C++ 网络库,它采用非阻塞 IO 模型,基于事件驱动和回调,原生支持多核多线程,适合编写 Linux 服务端多线程网络应用程序。 | 59 | | 17 | [Linux 高性能服务器编程](http://product.dangdang.com/1794160806.html) | 游双 著 | Linux 服务器编程领域的经典著作,由资深 Linux 软件开发工程师撰写,从网络协议、服务器编程核心要素、原理机制、工具框架等多角度全面阐释了编写高性能 Linux 服务器应用的方法、技巧和思想。不仅理论全面、深入,抓住了重点和难点,还包含两个综合性案例,极具实战意义。 | 60 | | 18 | [Effective C++:改善程序与设计的 55 个具体做法(第三版)中文版](http://product.dangdang.com/29155762.html) | [美] Scott Meyers 著
侯捷 译 | Effective C++是世界顶级 C++ 大师 Scott Meyers 的成名之作,初版于 1991 年。在国际上,这本书所引起的反响之大,波及整个计算机技术出版领域,余音至今未绝。几乎在所有 C++ 书籍的推荐名单上,这部专著都会位于前三名。作者高超的技术把握力,独特的视角、诙谐轻松的写作风格、独具匠心的内容组织,都受到极大的推崇和仿效。 | 61 | | 19 | [软件框架设计的艺术(Practical API Design Confessions of a Java Framework Architect)](https://item.jd.com/10051549069078.html) | [[捷\] Jaroslav Tulach 著
王磊/朱兴 译 | 本书作者是 NetBeans 的创始人,也是 NetBeans 项目最初的架构师。对 API 与框架设计提供深刻见解。强调实践与源码分析,适合有一定经验的 Java 开发者。 | 62 | | 20 | [Java 编程的逻辑](https://item.jd.com/12299018.html) | 马俊昌 著 | 作者按照由浅入深、由易到难的顺序组织内容,使读者能够循序渐进地掌握 Java 编程的知识和技能,适合 1-3 年的 Java 开发。 | 63 | 64 | ## 数据库 65 | 66 | | # | Title | Author(s) | Abstract | 67 | | --- | ----------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | 68 | | 1 | [Redis 设计与实现[2014]](http://redisbook.com/) | [黄健宏](https://github.com/huangz1990) | 基于 Redis 3.0,内容通俗易懂,可以深入了解 Redis 底层。 | 69 | | 2 | [高性能 MySQL 第三版[2013]](https://item.jd.com/11220393.html) | [美] Baron Schwartz 等著
宁海元 等译 | MySQL 领域极佳之作。 | 70 | | 3 | [Redis 开发与运维[2017]](https://item.jd.com/12121730.html) | 付磊 张益军 | 从开发、运维两个角度总结了 Redis 实战经验,深入浅出地剖析底层实现,包含大规模集群开发与运维的实际案例、应用技巧。 | 71 | | 4 | [MySQL 技术内幕:InnoDB 存储引擎[2013]](https://item.jd.com/11252326.html) | 姜承尧 | 详细讲解了 InnoDB 存储引擎内部的各个功能模块的实现原理,包括 InnoDB 存储引擎的体系结构、内存中的数据结构、基于 InnoDB 存储引擎的表和页的物理存储、索引与算法、文件、锁、事务、备份与恢复,以及 InnoDB 的性能调优等重要的知识。 | 72 | | 5 | [Redis 深度历险:核心原理和应用实践[2018]](https://item.jd.com/12464009.html) | 钱文品 | 从 Redis 的基础使用出发,结合实际项目中遇到的诸多应用场景,最后详细讲解集群环境,图文并茂地对 Redis 的特性做了全面解析。 | 73 | | 6 | [Redis 实战](https://item.jd.com/11791607.html) | [美] 约西亚 L.卡尔森(Josiah),L.,Carlson 著,黄健宏 译 | 本书深入浅出地介绍了 Redis 的 5 种数据类型,并通过多个实用示例展示了 Redis 的用法。这本书侧重 Redis 应用,每个情景都配备完整的 Python 代码示例及逐行注释详解,非常适合初学者学习并上手 Redis。 | 74 | | 7 | [SQL 进阶教程 第二版](https://item.jd.com/13854960.html) | [日] MICK 著,吴炎昌,侯振龙 译 | 本书是作者志在向中级进阶的数据库工程师编写的一本 SQL 技能提升指南。 | 75 | 76 | ## 前端 77 | 78 | | # | Title | Author(s) | Abstract | 79 | | --- | ----------------------------------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | 80 | | 1 | [你不知道的 JavaScript(上卷)](https://item.jd.com/11676671.html) | [美] Kyle Simpson 著
赵望野,梁杰 译 | JavaScript 开发经典入门图书,打通 JavaScript 的任督二脉,领略语言内部的绝美风光。 | 81 | | 2 | [你不知道的 JavaScript(中卷)](https://item.jd.com/12030814.html) | [美] Kyle Simpson 著
单业,姜南 译 | 深入挖掘 JavaScript 语言本质,简练形象地解释抽象概念,打通 JavaScript 的任督二脉。 | 82 | | 3 | [你不知道的 JavaScript(下卷)](https://item.jd.com/12291874.html#crumb-wrap) | [美] Kyle Simpson 著
单业 译 | 探索 JavaScript 语言核心概念 深入了解 ES6,展望 JavaScript 发展方向。 | 83 | | 4 | [Three.js 开发指南](https://item.jd.com/12113317.html) | [美] Jos Dirksen 著
杨芬 译 | 全面讲解 Three.js 开发的实用指南,涵盖 Three.js 的各种功能;通过大量交互式示例,深入探索使用开源的 Three.js 库创建绚丽三维图形的实用方法和技巧。 | 84 | | 5 | [JavaScript 忍者秘籍(第 2 版)](https://item.jd.com/12306772.html) | [美] John Resig, Bear Bibeault, Josip Maras 著 | 从界面构建、事件循环、函数、闭包、正则表达式等都有探索,唯一的不足就是翻译不够完美,有能力可以看原版。 | 85 | | 6 | [JavaScript 设计模式与开发实践](https://item.jd.com/11686375.html) | 曾探 著 | 介绍了 JavaScript 中常用的一些设计模式,并结合了具体的例子,对如何优化和改进自己的代码有很好的启发。 | 86 | | 7 | [JavaScript 高级程序设计(第 4 版)](https://item.jd.com/12958580.html) | [美] 马特·弗里斯比(Matt Frisbie) 著,李松峰 译 | 红宝书第四版,全面、深入地介绍了 JavaScript 开发者必须掌握的前端开发技术,涉及 JavaScript 的基础特性和高级特性。 | 87 | 88 | ## 架构 89 | 90 | | # | Title | Author(s) | Abstract | 91 | | --- | --------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------ | 92 | | 1 | [企业 IT 架构转型之道:阿里巴巴中台战略思想与架构实战[2017]](https://item.jd.com/12176278.html) | 钟华(花名:古谦) | 分享阿里巴巴建设共享服务体系的经验和实践。 | 93 | | 2 | [大型网站系统与 Java 中间件实践[2014]](https://item.jd.com/11449803.html) | 曾宪杰(花名:华黎) | 围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。 | 94 | | 3 | [大型网站技术架构:核心原理与案例分析[2013]](https://item.jd.com/11322972.html) | 李智慧 | 梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理。 | 95 | | 4 | [亿级流量网站架构核心技术:跟开涛学搭建高可用高并发系统[2017]](https://item.jd.com/12153914.html) | 张开涛 | 总结并梳理了亿级流量网站高可用和高并发原则,通过实例详细介绍了如何落地这些原则。 | 96 | | 5 | [逆流而上:阿里巴巴技术成长之路[2018]](https://item.jd.com/12238227.html) | 阿里巴巴集团成长集编委会 | 总结阿里巴巴技术团队在基础架构、中间件、数据库、业务开发等领域的经典实践以及对未来的思考。 | 97 | | 6 | [数据密集型应用系统设计 (Designing Data-Intensive Applications)[2018]](https://item.jd.com/12437624.html) | [美] Martin Kleppmann 著
赵军平 吕云松 耿煜 李三平 译 | 从底层数据结构到顶层架构设计,将当今互联网领域最常见的数据密集型应用的秘密娓娓道来。 | 98 | | 7 | [awesome-fenix](https://icyfenix.cn/) | 周志明 | 讨论如何构建一套可靠的大型分布式系统 | 99 | 100 | ## 大数据 101 | 102 | | # | Title | Author(s) | Abstract | 103 | | --- | ------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | 104 | | 1 | [HBase 不睡觉书[2018]](https://item.jd.com/26885342700.html) | 杨曦 | 一本让读者看了不会睡着的 HBase 技术书。 | 105 | | 2 | [Hadoop 技术内幕:深入解析 Hadoop Common 和 HDFS 架构设计与实现原理[2013]](https://item.jd.com/11220906.html) | 蔡斌, 陈湘萍著 | 对 Common 和 HDFS 的源代码进行了分析, 从源代码实现中对分布式技术的精髓、分布式系统设计的优秀思想和方法。 | 106 | | 3 | [Hadoop 技术内幕:深入解析 MapReduce 架构设计与实现原理[2013]](https://item.jd.com/11226135.html) | 董西成著 | 虽然计算框架从 MR 到 Spark 再到 Flink,但 MR 的设计思想还是有很大参考价值的, 这本书对 MapReduce 计算框架的细节解释得很系统。 | 107 | | 4 | [Spark 快速大数据分析[2015]](https://item.jd.com/11782888.html) | [美] Holden Karau, [美] Andy Konwinski, [美] Patrick Wendell, [加] Matei Zaharia 著
王道远 译 | Spark 入门书籍, 让初学者对 Spark 有一个基本全面的了解。 | 108 | | 5 | [Elasticsearch 权威指南](https://github.com/GavinFoo/elasticsearch-definitive-guide/) | clinton gormley,zachary tong 著,Gavin Foo 译 | 讲解结构化搜索、统计、查询过滤、地理定位、提升 Elasticsearch 的性能。 | 109 | | 6 | [Spark SQL 内核解剖](https://item.jd.com/12415659.html) | 朱锋 张韶全 黄明 著 | Spark 高阶玩家晋级宝典 腾讯 T4 亲传大规模分布式系统实践。 | 110 | 111 | ## 工具 112 | 113 | | # | Title | Author(s) | Abstract | 114 | | ---- | --------------------------------------------------------- | --------------------------------------- | ------------------------------------------------------------ | 115 | | 1 | [Vim 实用技巧 第 2 版](https://item.jd.com/12056490.html) | [英] Drew Neil 著
杨源,车文隆 译 | 从 Vim 的一些逻辑理念入手,而不是死记硬背命令,讲解了各种 Vim 中的模式、文件、跳转、寄存器、查找、替换等,结合给出一个个技巧,针对性解决各类问题 ,对新手很友好,也适合进阶。可以先练习一遍 vimtutor 再看这本书,看完后推荐 https://vimawesome.com/ 可以选择自己需要的插件开始打造属于自己独一无二编辑器。 | 116 | | 2 | [Git 权威指南](https://item.jd.com/10697183.html) | 蒋鑫 著 | 深入讲解了 Git 底层的一些原理,知其然知其所以然,看完会深深感受到 Git 的强大。 | 117 | | 3 | [GitHub 入门与实践](https://item.jd.com/13325520.html) | [日]大塚弘记 著
支鹏浩,刘斌 译 | 从 Git 的基本知识和操作方法入手,详细介绍了 GitHub 的各种功能,GitHub 与其他工具或服务的协作,使用 GitHub 的开发流程以及如何将 GitHub 引入到企业中。在讲解 GitHub 的代表功能 Pull Request时,本书专门搭建了供各位读者实践的仓库,邀请各位读者进行 Pull Request 并共同维护。 | 118 | 119 | ## 其他 120 | 121 | - [Freely available programming books](https://github.com/EbookFoundation/free-programming-books) 122 | 123 | ## 贡献者 124 | 125 | 126 | 127 | -------------------------------------------------------------------------------- /docs/.vitepress/config.mts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vitepress' 2 | 3 | // https://vitepress.dev/reference/site-config 4 | export default defineConfig({ 5 | title: "Technical Books", 6 | description: "值得一看的技术类书籍列表", 7 | themeConfig: { 8 | // https://vitepress.dev/reference/default-theme-config 9 | nav: [ 10 | { text: '首页', link: '/' }, 11 | ], 12 | search: { 13 | provider: 'local' 14 | }, 15 | footer: { 16 | message: 'Released under the CC-BY-SA-4.0 license.', 17 | copyright: `Copyright © 2018-${new Date().getFullYear()} Doocs` 18 | }, 19 | logo: '/favicon-32x32.png', 20 | editLink: { 21 | pattern: 'https://github.com/doocs/technical-books/edit/main/docs/:path', 22 | text: '在 GitHub 编辑' 23 | }, 24 | 25 | socialLinks: [ 26 | { icon: 'github', link: 'https://github.com/doocs/technical-books' } 27 | ] 28 | }, 29 | head: [ 30 | ['link', { rel: 'icon', type: 'image/png', href: '/favicon-32x32.png' }], 31 | [ 32 | 'script', 33 | { async: '', src: 'https://www.googletagmanager.com/gtag/js?id=G-FXKXWXY4HF' } 34 | ], 35 | [ 36 | 'script', 37 | {}, 38 | `window.dataLayer = window.dataLayer || []; 39 | function gtag(){dataLayer.push(arguments);} 40 | gtag('js', new Date()); 41 | gtag('config', 'G-FXKXWXY4HF');` 42 | ] 43 | ], 44 | cleanUrls: true, 45 | sitemap: { 46 | hostname: 'https://book.doocs.org' 47 | } 48 | }) 49 | -------------------------------------------------------------------------------- /docs/.vitepress/theme/Layout.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | -------------------------------------------------------------------------------- /docs/.vitepress/theme/index.js: -------------------------------------------------------------------------------- 1 | import DefaultTheme from 'vitepress/theme'; 2 | import giscusTalk from 'vitepress-plugin-comment-with-giscus'; 3 | import { useData, useRoute } from 'vitepress'; 4 | import { toRefs } from "vue"; 5 | import Layout from "./Layout.vue"; 6 | 7 | export default { 8 | extends: DefaultTheme, 9 | Layout: Layout, 10 | enhanceApp(ctx) { 11 | DefaultTheme.enhanceApp(ctx); 12 | }, 13 | setup() { 14 | const { frontmatter } = toRefs(useData()); 15 | const route = useRoute(); 16 | 17 | giscusTalk({ 18 | repo: 'doocs/technical-books', 19 | repoId: 'MDEwOlJlcG9zaXRvcnkxNzgwMjQ5NDk=', 20 | mapping: 'number', 21 | inputPosition: 'top', 22 | lang: 'zh-CN', 23 | homePageShowComment: true, 24 | term: '30', 25 | lightTheme: 'light', 26 | darkTheme: 'transparent_dark', 27 | }, { 28 | frontmatter, 29 | route 30 | }, true); 31 | } 32 | }; -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | # https://vitepress.dev/reference/default-theme-home-page 3 | layout: home 4 | 5 | hero: 6 | name: "Technical Books" 7 | text: "值得一看的技术类书籍列表" 8 | tagline: Doocs 技术社区出品 9 | actions: 10 | - theme: alt 11 | text: GitHub 12 | link: https://github.com/doocs 13 | - theme: brand 14 | text: 进入 15 | link: /intro 16 | 17 | features: 18 | - title: 计算机系统与算法 📚 19 | details: 计算机基础知识,涵盖计算机系统原理、算法设计、操作系统、编译原理等方面的经典教材。 20 | - title: 计算机网络 🌐 21 | details: 深入了解计算机网络基础,包括网络协议、HTTP、TCP/IP、计算机网络的原理与应用。 22 | - title: 后端开发 🖥️ 23 | details: 针对后端开发的技术书籍,涵盖 Java、Python、Go、Node.js 等编程语言与高并发系统设计。 24 | - title: 数据库 🗃️ 25 | details: 讲解数据库底层原理和优化技巧,涵盖 Redis、MySQL、HBase 等数据库技术。 26 | - title: 前端开发 💻 27 | details: 前端技术书籍,包括 JavaScript 高级编程技巧、设计模式、以及 Three.js 和 Web 开发实战。 28 | - title: 架构 🏗️ 29 | details: 介绍现代系统架构设计的核心原理及实践,适用于互联网公司高并发、高可用性技术架构。 30 | - title: 大数据 📊 31 | details: 探索大数据领域的技术,包括 Spark、Hadoop、Elasticsearch 等,适用于分布式数据处理与分析。 32 | - title: 工具 🛠️ 33 | details: 提供对开发工具的深入理解和实用技巧,包括 Git、Vim、GitHub 等开发工具的使用。 34 | - title: 其他 🔗 35 | details: 提供各种免费编程书籍的资源,帮助开发者拓宽知识面。 36 | --- 37 | 38 | -------------------------------------------------------------------------------- /docs/intro.md: -------------------------------------------------------------------------------- 1 | # 值得一看的技术类书籍列表 2 | 3 | [![GitHub](https://badgen.net/badge/icon/doocs?icon=github&label&color=green)](https://github.com/doocs) 4 | [![license](https://badgen.net/github/license/doocs/technical-books?color=green)](https://github.com/doocs/technical-books/blob/main/LICENSE) 5 | [![doocs-open-source-organization](https://badgen.net/badge/organization/join%20us/cyan)](https://github.com/doocs/doocs.github.io#how-to-join) 6 | [![gitter](https://badgen.net/badge/gitter/chat/cyan)](https://gitter.im/doocs) 7 | 8 | 书籍是人们获取知识的主要途径。然而,如今的社会太浮躁,不少人不愿意花时间静下心来仔细读书,很多开发人员也是如此。殊不知,书籍沉淀了前人的经验和思考。 9 | 10 | ## 站点 11 | 12 | https://book.doocs.org 13 | 14 | ## 计算机系统与算法 15 | 16 | | # | Title | Author(s) | Abstract | 17 | | --- | ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 18 | | 1 | [编码:隐匿在计算机软硬件背后的语言[2012]](https://item.jd.com/11116026.html) | [美] Charles Petzold 著
左飞 薛佟佟 译 | 讲述计算机工作原理,却并不晦涩难懂。不管你是计算机高手,还是对这个神奇的机器充满敬畏之心的菜鸟,读一读大师的经典作品,必然有所收获。 | 19 | | 2 | [码农翻身:用故事给技术加点料[2018]](https://item.jd.com/12364204.html) | 刘欣 | 用故事方式讲述软件编程的若干重要领域,侧重于基础性、原理性的知识。 | 20 | | 3 | [领域驱动设计:软件核心复杂性应对之道(修订版)[2016]](https://item.jd.com/11961038.html) | [美] Eric Evans 著
赵俐 盛海艳 刘霞 等 译 | 领域驱动设计方面的经典之作,围绕设计和开发实践,结合真实项目案例,阐述如何在真实的软件项目开发中应用领域驱动设计。 | 21 | | 4 | [深入理解计算机系统(原书第 2 版)[2011]](https://item.jd.com/11030145668.html) | [美] Randal E.Bryant 等著
龚奕利,雷迎春译 | 本书是一本将计算机软件和硬件理论结合讲述的经典教程,内容涵盖计算机导论、体系结构和处理器设计等多门课程。 | 22 | | 5 | [算法(第 4 版)](https://item.jd.com/11098789.html) | [美] Robert Sedgewick,[美] Kevin Wayne 著
谢路云 译 | 更为实用易读的算法教学类书籍,结合多步骤图及可运行的 Java 代码进行算法讲解,非常适合算法初学者。 | 23 | | 6 | [操作系统导论](https://item.jd.com/12535621.html) | [美] Remzi H.Arpaci-Dusseau, [美] Andrea C.Arpaci-Dusseau 著
王海鹏 译 | 操作系统经典之作,紧紧围绕虚拟化、并发和持久性这三个主要概念展开,介绍了所有现代系统的主要组件。行文诙谐幽默却又鞭辟入里。 | 24 | | 7 | [编译原理 第 2 版 龙书](https://item.jd.com/10058776.html) | [美] Alfred V.Aho, Monica S.Lam, Ravi Sethi 等著
赵建华 郑滔 戴新宇 译 | 又称“龙书”,全面、深入地探讨了编译器设计方面的重要主题,包括词法分析、语法分析、语法制导定义和语法制导翻译、运行时刻环境、目标代码生成、代码优化技术、并行性检测以及过程间分析技术。 适合作为高等院校计算机及相关专业本科生及研究生的编译原理课程的教材,也是广大技术人员的很好参考读物。 | 25 | | 8 | [现代编译原理 C 语言描述 修订版](https://item.jd.com/12343414.html) | [美] Andrew W.Appel, Maia Ginsburg 著
赵克佳 黄春 沈志宇 译 | 又称“虎书”,全面讲述了现代编译器的各个组成部分,包括词法分析、语法分析、抽象语法、语义检查、中间代码表示、指令选择、数据流分析、寄存器分配以及运行时系统等。书中专门为学生提供了一个用 C 语言编写的实习项目,包括前端和后端设计,学生可以在一学期内创建功能完整的编译器。 | 26 | | 9 | [算法导论](http://product.dangdang.com/22927209.html) | [美] Thomas H. Cormen, CharlesE. Leiserson, Charles E.Leiserson, Ronald L. Rivest 著
潘金贵 顾铁成 译 | 本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。 | 27 | 28 | ## 计算机网络 29 | 30 | | # | Title | Author(s) | Abstract | 31 | | --- | --------------------------------------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | 32 | | 1 | [图解 HTTP[2014]](https://item.jd.com/11449491.html) | [日] 上野宣 著
于均良译 | 对 HTTP 协议进行了全面系统的介绍,讲解的同时,辅以大量生动形象的通信图例,更好地帮助读者深刻理解 HTTP 通信过程中客户端与服务器之间的交互情况。 | 33 | | 2 | [TCP/IP 详解 卷 1:协议](https://item.jd.com/10479365347.html) | [美] Kevin R.Fall, W.Richard Stevens 著
吴英,张玉,许昱玮 译 | 主要讲述 TCP/IP 协议,不仅仅讲述 RFC 的标准协议,而且结合大量实例讲述了 TCP/IP 协议族的定义原因,以及在各种不同的操作系统中的应用及工作方式,使读者可以轻松掌握 TCP/IP 的知识。 | 34 | | 3 | [计算机网络:自顶向下方法](http://product.dangdang.com/25299722.html) | [美] James F. Kurose, Keith W. Ross 著
陈鸣 译 | 计算机网络经典教材。采用了自顶向下方法来讲授计算机网络的原理及其协议,注重原理和实践。 | 35 | | 4 | [计算机网络教程](http://product.dangdang.com/25246707.html) | [中]谢钧,谢希仁 著 | 本书的适用对象非常广泛。由于本书的重点立足于计算机网络的基本原理,同时兼顾了 Internet 体系结构与 TCP/IP 协议等内容,因此对于学习计算机网络课程的本科生和研究生,本书都是绝佳的教材或教学参考书。 | 36 | 37 | ## 后端 38 | 39 | | # | Title | Author(s) | Abstract | 40 | | --- | ------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 41 | | 1 | [Effective Java 原书第 3 版[2019]](https://item.jd.com/12507084.html) | [美] Joshua Bloch 著
俞黎敏 译 | Java 经典书籍,内容涵盖 Java 9 及以下版本。 | 42 | | 2 | [码出高效:Java 开发手册[2018]](https://item.jd.com/12451498.html) | 杨冠宝(花名:孤尽)
高海慧(花名:鸣莎) | 结合阿里巴巴实践经验与故障案例,与 Java 底层源码解析融会贯通。 | 43 | | 3 | [互联网轻量级 SSM 框架解密:Spring、Spring MVC、MyBatis 源码深度剖析[2019.3]](http://item.jd.com/12534456.html) | 李艳鹏 等 | SSM 框架源码深度剖析。 | 44 | | 4 | [Java 8 In Action 中文版[2016]](https://item.jd.com/11917790.html) | [英] Raoul-Gabriel Urma, [意] Mario Fusco, [英]Alan Mycroft 著
陆明刚 劳佳 译 | 全面介绍 Java8 这个里程碑版本的新特性,包括 Lambdas、流和函数式编程。 | 45 | | 5 | [实战 Java 高并发程序设计[2015]](https://item.jd.com/11800589.html) | 葛一鸣 郭超 | 主要介绍基于 Java 的并行程序设计基础、思路、方法和实战。 | 46 | | 6 | [Java 设计模式[2018]](https://item.jd.com/12317007.html) | 刘伟 | 内容涵盖了七个面向对象设计原则和 24 个设计模式(23 个 GoF 设计模式+简单工厂模式)。 | 47 | | 7 | [Python 参考手册第 4 版[2016]](https://item.jd.com/12052200.html) | [美] David M.Beazley 著
谢俊 等译 | Python 程序员案头必备,涵盖 Python2 和 Python3 共有特性)。 | 48 | | 8 | [Python3 网络爬虫开发实战[2018]](https://item.jd.com/12333540.html) | 崔庆才 | 全面介绍利用 Python3 开发网络爬虫的知识,包括数据采集、数据存储、动态网站爬取、App 爬取、验证码破解、模拟登录、代理使用、爬虫框架、分布式爬取等。 | 49 | | 9 | Go Web 编程 | 谢孟军 | Go 入门书籍。 | 50 | | 10 | [流畅的 Python[2018]](https://item.jd.com/12186192.html) | [巴西] Luciano Ramalho 著,安道,吴珂 译 | Python 进阶必读, 全面的讲解了序列、数据结构、装饰器、类、生成器、迭代器、协程、并发等重要知识点的原理以及实现。 | 51 | | 11 | [重构 改善既有代码的设计 Java 语言版](https://item.jd.com/11728740.html) | [美] 马丁·福勒(Martin Fowler) 著,熊节 译 | 重构,一言以蔽之,是在不改变外部行为的前提下,有条不紊地改善代码,普通程序员进阶到编程高手必须修炼的秘笈 | 52 | | 12 | [深入浅出 Node.js](https://item.jd.com/11355978.html) | 朴灵 著 | 深入讲解 Node 的图书。讲述基于 JavaScript 运行时所建立的平台原理,与 mongodb 结合操作的具体案例,响应式设计别具匠心。 | 53 | | 13 | [Java 网络编程(第四版)](https://item.jd.com/11544991.html) | [美] Elliotte Rusty Harold(哈诺德 R.E.) 著
李帅,荆涛 等 译 | 《Java 网络编程(第四版)》实用指南全面介绍了如何使用 Java 开发网络程序,如编写多线程服务器、加密通信、广播到本地网络,以及向服务器端程序提交数据。
本书可作为 Java 初学者步入框架学习前的铺垫数据,通过学习基础的 Java 网络编程知识,形成对 Web 后台的基本认知。 | 54 | | 14 | [Head First 设计模式](https://item.jd.com/10100236.html) | [美] Eric Freeman 著
O'Reilly Taiwan 公司 译 | 在提供 23 个设计模式专业知识的同时,仍具有相当高的可读性。内容权威,阅读轻松 | 55 | | 15 | [Spring 实战 (第 4 版)](https://item.jd.com/11899370.html) | [美] Craig Walls 著
张卫滨 译 | 经典的 Spring 学习和实践指南。配合官方文档食用,风味极佳 | 56 | | 16 | [Linux 多线程服务端编程:使用 muduo C++ 网络库](http://product.dangdang.com/29261189.html) | 陈硕 著 | muduo 是一个基于 Reactor 模式的现代 C++ 网络库,它采用非阻塞 IO 模型,基于事件驱动和回调,原生支持多核多线程,适合编写 Linux 服务端多线程网络应用程序。 | 57 | | 17 | [Linux 高性能服务器编程](http://product.dangdang.com/1794160806.html) | 游双 著 | Linux 服务器编程领域的经典著作,由资深 Linux 软件开发工程师撰写,从网络协议、服务器编程核心要素、原理机制、工具框架等多角度全面阐释了编写高性能 Linux 服务器应用的方法、技巧和思想。不仅理论全面、深入,抓住了重点和难点,还包含两个综合性案例,极具实战意义。 | 58 | | 18 | [Effective C++:改善程序与设计的 55 个具体做法(第三版)中文版](http://product.dangdang.com/29155762.html) | [美] Scott Meyers 著
侯捷 译 | Effective C++是世界顶级 C++ 大师 Scott Meyers 的成名之作,初版于 1991 年。在国际上,这本书所引起的反响之大,波及整个计算机技术出版领域,余音至今未绝。几乎在所有 C++ 书籍的推荐名单上,这部专著都会位于前三名。作者高超的技术把握力,独特的视角、诙谐轻松的写作风格、独具匠心的内容组织,都受到极大的推崇和仿效。 | 59 | | 19 | [软件框架设计的艺术(Practical API Design Confessions of a Java Framework Architect)](https://item.jd.com/10051549069078.html) | [[捷\] Jaroslav Tulach 著
王磊/朱兴 译 | 本书作者是 NetBeans 的创始人,也是 NetBeans 项目最初的架构师。对 API 与框架设计提供深刻见解。强调实践与源码分析,适合有一定经验的 Java 开发者。 | 60 | | 20 | [Java 编程的逻辑](https://item.jd.com/12299018.html) | 马俊昌 著 | 作者按照由浅入深、由易到难的顺序组织内容,使读者能够循序渐进地掌握 Java 编程的知识和技能,适合 1-3 年的 Java 开发。 | 61 | 62 | ## 数据库 63 | 64 | | # | Title | Author(s) | Abstract | 65 | | --- | ----------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | 66 | | 1 | [Redis 设计与实现[2014]](http://redisbook.com/) | [黄健宏](https://github.com/huangz1990) | 基于 Redis 3.0,内容通俗易懂,可以深入了解 Redis 底层。 | 67 | | 2 | [高性能 MySQL 第三版[2013]](https://item.jd.com/11220393.html) | [美] Baron Schwartz 等著
宁海元 等译 | MySQL 领域极佳之作。 | 68 | | 3 | [Redis 开发与运维[2017]](https://item.jd.com/12121730.html) | 付磊 张益军 | 从开发、运维两个角度总结了 Redis 实战经验,深入浅出地剖析底层实现,包含大规模集群开发与运维的实际案例、应用技巧。 | 69 | | 4 | [MySQL 技术内幕:InnoDB 存储引擎[2013]](https://item.jd.com/11252326.html) | 姜承尧 | 详细讲解了 InnoDB 存储引擎内部的各个功能模块的实现原理,包括 InnoDB 存储引擎的体系结构、内存中的数据结构、基于 InnoDB 存储引擎的表和页的物理存储、索引与算法、文件、锁、事务、备份与恢复,以及 InnoDB 的性能调优等重要的知识。 | 70 | | 5 | [Redis 深度历险:核心原理和应用实践[2018]](https://item.jd.com/12464009.html) | 钱文品 | 从 Redis 的基础使用出发,结合实际项目中遇到的诸多应用场景,最后详细讲解集群环境,图文并茂地对 Redis 的特性做了全面解析。 | 71 | | 6 | [Redis 实战](https://item.jd.com/11791607.html) | [美] 约西亚 L.卡尔森(Josiah),L.,Carlson 著,黄健宏 译 | 本书深入浅出地介绍了 Redis 的 5 种数据类型,并通过多个实用示例展示了 Redis 的用法。这本书侧重 Redis 应用,每个情景都配备完整的 Python 代码示例及逐行注释详解,非常适合初学者学习并上手 Redis。 | 72 | | 7 | [SQL 进阶教程 第二版](https://item.jd.com/13854960.html) | [日] MICK 著,吴炎昌,侯振龙 译 | 本书是作者志在向中级进阶的数据库工程师编写的一本 SQL 技能提升指南。 | 73 | 74 | ## 前端 75 | 76 | | # | Title | Author(s) | Abstract | 77 | | --- | ----------------------------------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | 78 | | 1 | [你不知道的 JavaScript(上卷)](https://item.jd.com/11676671.html) | [美] Kyle Simpson 著
赵望野,梁杰 译 | JavaScript 开发经典入门图书,打通 JavaScript 的任督二脉,领略语言内部的绝美风光。 | 79 | | 2 | [你不知道的 JavaScript(中卷)](https://item.jd.com/12030814.html) | [美] Kyle Simpson 著
单业,姜南 译 | 深入挖掘 JavaScript 语言本质,简练形象地解释抽象概念,打通 JavaScript 的任督二脉。 | 80 | | 3 | [你不知道的 JavaScript(下卷)](https://item.jd.com/12291874.html#crumb-wrap) | [美] Kyle Simpson 著
单业 译 | 探索 JavaScript 语言核心概念 深入了解 ES6,展望 JavaScript 发展方向。 | 81 | | 4 | [Three.js 开发指南](https://item.jd.com/12113317.html) | [美] Jos Dirksen 著
杨芬 译 | 全面讲解 Three.js 开发的实用指南,涵盖 Three.js 的各种功能;通过大量交互式示例,深入探索使用开源的 Three.js 库创建绚丽三维图形的实用方法和技巧。 | 82 | | 5 | [JavaScript 忍者秘籍(第 2 版)](https://item.jd.com/12306772.html) | [美] John Resig, Bear Bibeault, Josip Maras 著 | 从界面构建、事件循环、函数、闭包、正则表达式等都有探索,唯一的不足就是翻译不够完美,有能力可以看原版。 | 83 | | 6 | [JavaScript 设计模式与开发实践](https://item.jd.com/11686375.html) | 曾探 著 | 介绍了 JavaScript 中常用的一些设计模式,并结合了具体的例子,对如何优化和改进自己的代码有很好的启发。 | 84 | | 7 | [JavaScript 高级程序设计(第 4 版)](https://item.jd.com/12958580.html) | [美] 马特·弗里斯比(Matt Frisbie) 著,李松峰 译 | 红宝书第四版,全面、深入地介绍了 JavaScript 开发者必须掌握的前端开发技术,涉及 JavaScript 的基础特性和高级特性。 | 85 | 86 | ## 架构 87 | 88 | | # | Title | Author(s) | Abstract | 89 | | --- | --------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------ | 90 | | 1 | [企业 IT 架构转型之道:阿里巴巴中台战略思想与架构实战[2017]](https://item.jd.com/12176278.html) | 钟华(花名:古谦) | 分享阿里巴巴建设共享服务体系的经验和实践。 | 91 | | 2 | [大型网站系统与 Java 中间件实践[2014]](https://item.jd.com/11449803.html) | 曾宪杰(花名:华黎) | 围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。 | 92 | | 3 | [大型网站技术架构:核心原理与案例分析[2013]](https://item.jd.com/11322972.html) | 李智慧 | 梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理。 | 93 | | 4 | [亿级流量网站架构核心技术:跟开涛学搭建高可用高并发系统[2017]](https://item.jd.com/12153914.html) | 张开涛 | 总结并梳理了亿级流量网站高可用和高并发原则,通过实例详细介绍了如何落地这些原则。 | 94 | | 5 | [逆流而上:阿里巴巴技术成长之路[2018]](https://item.jd.com/12238227.html) | 阿里巴巴集团成长集编委会 | 总结阿里巴巴技术团队在基础架构、中间件、数据库、业务开发等领域的经典实践以及对未来的思考。 | 95 | | 6 | [数据密集型应用系统设计 (Designing Data-Intensive Applications)[2018]](https://item.jd.com/12437624.html) | [美] Martin Kleppmann 著
赵军平 吕云松 耿煜 李三平 译 | 从底层数据结构到顶层架构设计,将当今互联网领域最常见的数据密集型应用的秘密娓娓道来。 | 96 | | 7 | [awesome-fenix](https://icyfenix.cn/) | 周志明 | 讨论如何构建一套可靠的大型分布式系统 | 97 | 98 | ## 大数据 99 | 100 | | # | Title | Author(s) | Abstract | 101 | | --- | ------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | 102 | | 1 | [HBase 不睡觉书[2018]](https://item.jd.com/26885342700.html) | 杨曦 | 一本让读者看了不会睡着的 HBase 技术书。 | 103 | | 2 | [Hadoop 技术内幕:深入解析 Hadoop Common 和 HDFS 架构设计与实现原理[2013]](https://item.jd.com/11220906.html) | 蔡斌, 陈湘萍著 | 对 Common 和 HDFS 的源代码进行了分析, 从源代码实现中对分布式技术的精髓、分布式系统设计的优秀思想和方法。 | 104 | | 3 | [Hadoop 技术内幕:深入解析 MapReduce 架构设计与实现原理[2013]](https://item.jd.com/11226135.html) | 董西成著 | 虽然计算框架从 MR 到 Spark 再到 Flink,但 MR 的设计思想还是有很大参考价值的, 这本书对 MapReduce 计算框架的细节解释得很系统。 | 105 | | 4 | [Spark 快速大数据分析[2015]](https://item.jd.com/11782888.html) | [美] Holden Karau, [美] Andy Konwinski, [美] Patrick Wendell, [加] Matei Zaharia 著
王道远 译 | Spark 入门书籍, 让初学者对 Spark 有一个基本全面的了解。 | 106 | | 5 | [Elasticsearch 权威指南](https://github.com/GavinFoo/elasticsearch-definitive-guide/) | clinton gormley,zachary tong 著,Gavin Foo 译 | 讲解结构化搜索、统计、查询过滤、地理定位、提升 Elasticsearch 的性能。 | 107 | | 6 | [Spark SQL 内核解剖](https://item.jd.com/12415659.html) | 朱锋 张韶全 黄明 著 | Spark 高阶玩家晋级宝典 腾讯 T4 亲传大规模分布式系统实践。 | 108 | 109 | ## 工具 110 | 111 | | # | Title | Author(s) | Abstract | 112 | | ---- | --------------------------------------------------------- | --------------------------------------- | ------------------------------------------------------------ | 113 | | 1 | [Vim 实用技巧 第 2 版](https://item.jd.com/12056490.html) | [英] Drew Neil 著
杨源,车文隆 译 | 从 Vim 的一些逻辑理念入手,而不是死记硬背命令,讲解了各种 Vim 中的模式、文件、跳转、寄存器、查找、替换等,结合给出一个个技巧,针对性解决各类问题 ,对新手很友好,也适合进阶。可以先练习一遍 vimtutor 再看这本书,看完后推荐 https://vimawesome.com/ 可以选择自己需要的插件开始打造属于自己独一无二编辑器。 | 114 | | 2 | [Git 权威指南](https://item.jd.com/10697183.html) | 蒋鑫 著 | 深入讲解了 Git 底层的一些原理,知其然知其所以然,看完会深深感受到 Git 的强大。 | 115 | | 3 | [GitHub 入门与实践](https://item.jd.com/13325520.html) | [日]大塚弘记 著
支鹏浩,刘斌 译 | 从 Git 的基本知识和操作方法入手,详细介绍了 GitHub 的各种功能,GitHub 与其他工具或服务的协作,使用 GitHub 的开发流程以及如何将 GitHub 引入到企业中。在讲解 GitHub 的代表功能 Pull Request时,本书专门搭建了供各位读者实践的仓库,邀请各位读者进行 Pull Request 并共同维护。 | 116 | 117 | ## 其他 118 | 119 | - [Freely available programming books](https://github.com/EbookFoundation/free-programming-books) 120 | 121 | ## 贡献者 122 | 123 | 124 | 125 | -------------------------------------------------------------------------------- /docs/public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doocs/technical-books/5962c79702b2eac59e7798c47886f238099d8d18/docs/public/favicon-16x16.png -------------------------------------------------------------------------------- /docs/public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doocs/technical-books/5962c79702b2eac59e7798c47886f238099d8d18/docs/public/favicon-32x32.png -------------------------------------------------------------------------------- /images/doocs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doocs/technical-books/5962c79702b2eac59e7798c47886f238099d8d18/images/doocs.png -------------------------------------------------------------------------------- /images/owner-favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doocs/technical-books/5962c79702b2eac59e7798c47886f238099d8d18/images/owner-favicon-16x16.png -------------------------------------------------------------------------------- /images/owner-favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doocs/technical-books/5962c79702b2eac59e7798c47886f238099d8d18/images/owner-favicon-32x32.png -------------------------------------------------------------------------------- /images/qrcode-for-doocs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doocs/technical-books/5962c79702b2eac59e7798c47886f238099d8d18/images/qrcode-for-doocs.jpg -------------------------------------------------------------------------------- /images/qrcode-for-yanglbme.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/doocs/technical-books/5962c79702b2eac59e7798c47886f238099d8d18/images/qrcode-for-yanglbme.jpg -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "technical-books", 3 | "lockfileVersion": 3, 4 | "requires": true, 5 | "packages": { 6 | "": { 7 | "dependencies": { 8 | "vitepress-plugin-comment-with-giscus": "^1.1.15" 9 | }, 10 | "devDependencies": { 11 | "vitepress": "^1.6.3" 12 | } 13 | }, 14 | "node_modules/@algolia/autocomplete-core": { 15 | "version": "1.17.7", 16 | "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.7.tgz", 17 | "integrity": "sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==", 18 | "dev": true, 19 | "license": "MIT", 20 | "dependencies": { 21 | "@algolia/autocomplete-plugin-algolia-insights": "1.17.7", 22 | "@algolia/autocomplete-shared": "1.17.7" 23 | } 24 | }, 25 | "node_modules/@algolia/autocomplete-plugin-algolia-insights": { 26 | "version": "1.17.7", 27 | "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.7.tgz", 28 | "integrity": "sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==", 29 | "dev": true, 30 | "license": "MIT", 31 | "dependencies": { 32 | "@algolia/autocomplete-shared": "1.17.7" 33 | }, 34 | "peerDependencies": { 35 | "search-insights": ">= 1 < 3" 36 | } 37 | }, 38 | "node_modules/@algolia/autocomplete-preset-algolia": { 39 | "version": "1.17.7", 40 | "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.7.tgz", 41 | "integrity": "sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==", 42 | "dev": true, 43 | "license": "MIT", 44 | "dependencies": { 45 | "@algolia/autocomplete-shared": "1.17.7" 46 | }, 47 | "peerDependencies": { 48 | "@algolia/client-search": ">= 4.9.1 < 6", 49 | "algoliasearch": ">= 4.9.1 < 6" 50 | } 51 | }, 52 | "node_modules/@algolia/autocomplete-shared": { 53 | "version": "1.17.7", 54 | "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.7.tgz", 55 | "integrity": "sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==", 56 | "dev": true, 57 | "license": "MIT", 58 | "peerDependencies": { 59 | "@algolia/client-search": ">= 4.9.1 < 6", 60 | "algoliasearch": ">= 4.9.1 < 6" 61 | } 62 | }, 63 | "node_modules/@algolia/client-abtesting": { 64 | "version": "5.23.3", 65 | "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.23.3.tgz", 66 | "integrity": "sha512-yHI0hBwYcNPc+nJoHPTmmlP8pG6nstCEhpHaZQCDwLZhdMtNhd1hliZMCtLgNnvd1yKEgTt/ZDnTSdZLehfKdA==", 67 | "dev": true, 68 | "license": "MIT", 69 | "dependencies": { 70 | "@algolia/client-common": "5.23.3", 71 | "@algolia/requester-browser-xhr": "5.23.3", 72 | "@algolia/requester-fetch": "5.23.3", 73 | "@algolia/requester-node-http": "5.23.3" 74 | }, 75 | "engines": { 76 | "node": ">= 14.0.0" 77 | } 78 | }, 79 | "node_modules/@algolia/client-analytics": { 80 | "version": "5.23.3", 81 | "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.23.3.tgz", 82 | "integrity": "sha512-/70Ey+nZm4bRr2DcNrGU251YIn9lDu0g8xeP4jTCyunGRNFZ/d8hQAw9El34pcTpO1QDojJWAi6ywKIrUaks9w==", 83 | "dev": true, 84 | "license": "MIT", 85 | "dependencies": { 86 | "@algolia/client-common": "5.23.3", 87 | "@algolia/requester-browser-xhr": "5.23.3", 88 | "@algolia/requester-fetch": "5.23.3", 89 | "@algolia/requester-node-http": "5.23.3" 90 | }, 91 | "engines": { 92 | "node": ">= 14.0.0" 93 | } 94 | }, 95 | "node_modules/@algolia/client-common": { 96 | "version": "5.23.3", 97 | "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.23.3.tgz", 98 | "integrity": "sha512-fkpbPclIvaiyw3ADKRBCxMZhrNx/8//6DClfWGxeEiTJ0HEEYtHlqE6GjAkEJubz4v1ioCQkhZwMoFfFct2/vQ==", 99 | "dev": true, 100 | "license": "MIT", 101 | "engines": { 102 | "node": ">= 14.0.0" 103 | } 104 | }, 105 | "node_modules/@algolia/client-insights": { 106 | "version": "5.23.3", 107 | "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.23.3.tgz", 108 | "integrity": "sha512-TXc5Ve6QOCihWCTWY9N56CZxF1iovzpBWBUhQhy6JSiUfX3MXceV3saV+sXHQ1NVt2NKkyUfEspYHBsTrYzIDg==", 109 | "dev": true, 110 | "license": "MIT", 111 | "dependencies": { 112 | "@algolia/client-common": "5.23.3", 113 | "@algolia/requester-browser-xhr": "5.23.3", 114 | "@algolia/requester-fetch": "5.23.3", 115 | "@algolia/requester-node-http": "5.23.3" 116 | }, 117 | "engines": { 118 | "node": ">= 14.0.0" 119 | } 120 | }, 121 | "node_modules/@algolia/client-personalization": { 122 | "version": "5.23.3", 123 | "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.23.3.tgz", 124 | "integrity": "sha512-JlReruxxiw9LB53jF/BmvVV+c0thiWQUHRdgtbVIEusvRaiX1IdpWJSPQExEtBQ7VFg89nP8niCzWtA34ktKSA==", 125 | "dev": true, 126 | "license": "MIT", 127 | "dependencies": { 128 | "@algolia/client-common": "5.23.3", 129 | "@algolia/requester-browser-xhr": "5.23.3", 130 | "@algolia/requester-fetch": "5.23.3", 131 | "@algolia/requester-node-http": "5.23.3" 132 | }, 133 | "engines": { 134 | "node": ">= 14.0.0" 135 | } 136 | }, 137 | "node_modules/@algolia/client-query-suggestions": { 138 | "version": "5.23.3", 139 | "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.23.3.tgz", 140 | "integrity": "sha512-GDEExFMXwx0ScE0AZUA4F6ssztdJvGcXUkdWmWyt2hbYz43ukqmlVJqPaYgGmWdjJjvTx+dNF/hcinwWuXbCug==", 141 | "dev": true, 142 | "license": "MIT", 143 | "dependencies": { 144 | "@algolia/client-common": "5.23.3", 145 | "@algolia/requester-browser-xhr": "5.23.3", 146 | "@algolia/requester-fetch": "5.23.3", 147 | "@algolia/requester-node-http": "5.23.3" 148 | }, 149 | "engines": { 150 | "node": ">= 14.0.0" 151 | } 152 | }, 153 | "node_modules/@algolia/client-search": { 154 | "version": "5.23.3", 155 | "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.23.3.tgz", 156 | "integrity": "sha512-mwofV6tGo0oHt4BPi+S5eLC3wnhOa4A1OVgPxetTxZuetod+2W4cxKavUW2v/Ma5CABXPLooXX+g9E67umELZw==", 157 | "dev": true, 158 | "license": "MIT", 159 | "dependencies": { 160 | "@algolia/client-common": "5.23.3", 161 | "@algolia/requester-browser-xhr": "5.23.3", 162 | "@algolia/requester-fetch": "5.23.3", 163 | "@algolia/requester-node-http": "5.23.3" 164 | }, 165 | "engines": { 166 | "node": ">= 14.0.0" 167 | } 168 | }, 169 | "node_modules/@algolia/ingestion": { 170 | "version": "1.23.3", 171 | "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.23.3.tgz", 172 | "integrity": "sha512-Zxgmi7Hk4lI52YFphzzJekUqWxYxVjY2GrCpOxV+QiojvUi8Ru+knq6REcwLHFSwpwaDh2Th5pOefMpn4EkQCw==", 173 | "dev": true, 174 | "license": "MIT", 175 | "dependencies": { 176 | "@algolia/client-common": "5.23.3", 177 | "@algolia/requester-browser-xhr": "5.23.3", 178 | "@algolia/requester-fetch": "5.23.3", 179 | "@algolia/requester-node-http": "5.23.3" 180 | }, 181 | "engines": { 182 | "node": ">= 14.0.0" 183 | } 184 | }, 185 | "node_modules/@algolia/monitoring": { 186 | "version": "1.23.3", 187 | "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.23.3.tgz", 188 | "integrity": "sha512-zi/IqvsmFW4E5gMaovAE4KRbXQ+LDYpPGG1nHtfuD5u3SSuQ31fT1vX2zqb6PbPTlgJMEmMk91Mbb7fIKmbQUw==", 189 | "dev": true, 190 | "license": "MIT", 191 | "dependencies": { 192 | "@algolia/client-common": "5.23.3", 193 | "@algolia/requester-browser-xhr": "5.23.3", 194 | "@algolia/requester-fetch": "5.23.3", 195 | "@algolia/requester-node-http": "5.23.3" 196 | }, 197 | "engines": { 198 | "node": ">= 14.0.0" 199 | } 200 | }, 201 | "node_modules/@algolia/recommend": { 202 | "version": "5.23.3", 203 | "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.23.3.tgz", 204 | "integrity": "sha512-C9TwbT1zGwULLXGSUSB+G7o/30djacPmQcsTHepvT47PVfPr2ISK/5QVtUnjMU84LEP8uNjuPUeM4ZeWVJ2iuQ==", 205 | "dev": true, 206 | "license": "MIT", 207 | "dependencies": { 208 | "@algolia/client-common": "5.23.3", 209 | "@algolia/requester-browser-xhr": "5.23.3", 210 | "@algolia/requester-fetch": "5.23.3", 211 | "@algolia/requester-node-http": "5.23.3" 212 | }, 213 | "engines": { 214 | "node": ">= 14.0.0" 215 | } 216 | }, 217 | "node_modules/@algolia/requester-browser-xhr": { 218 | "version": "5.23.3", 219 | "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.23.3.tgz", 220 | "integrity": "sha512-/7oYeUhYzY0lls7WtkAURM6wy21/Wwmq9GdujW1MpoYVC0ATXXxwCiAfOpYL9xdWxLV0R3wjyD+yZEni+nboKg==", 221 | "dev": true, 222 | "license": "MIT", 223 | "dependencies": { 224 | "@algolia/client-common": "5.23.3" 225 | }, 226 | "engines": { 227 | "node": ">= 14.0.0" 228 | } 229 | }, 230 | "node_modules/@algolia/requester-fetch": { 231 | "version": "5.23.3", 232 | "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.23.3.tgz", 233 | "integrity": "sha512-r/4fKz4t+bSU1KdjRq+swdNvuGfJ0spV8aFTHPtcsF+1ZaN/VqmdXrTe5NkaZLSztFeMqKwZlJIVvE7VuGlFtw==", 234 | "dev": true, 235 | "license": "MIT", 236 | "dependencies": { 237 | "@algolia/client-common": "5.23.3" 238 | }, 239 | "engines": { 240 | "node": ">= 14.0.0" 241 | } 242 | }, 243 | "node_modules/@algolia/requester-node-http": { 244 | "version": "5.23.3", 245 | "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.23.3.tgz", 246 | "integrity": "sha512-UZiTNmUBQFPl3tUKuXaDd8BxEC0t0ny86wwW6XgwfM9IQf4PrzuMpvuOGIJMcCGlrNolZDEI0mcbz/tqRdKW7A==", 247 | "dev": true, 248 | "license": "MIT", 249 | "dependencies": { 250 | "@algolia/client-common": "5.23.3" 251 | }, 252 | "engines": { 253 | "node": ">= 14.0.0" 254 | } 255 | }, 256 | "node_modules/@babel/helper-string-parser": { 257 | "version": "7.25.9", 258 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", 259 | "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", 260 | "license": "MIT", 261 | "engines": { 262 | "node": ">=6.9.0" 263 | } 264 | }, 265 | "node_modules/@babel/helper-validator-identifier": { 266 | "version": "7.25.9", 267 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", 268 | "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", 269 | "license": "MIT", 270 | "engines": { 271 | "node": ">=6.9.0" 272 | } 273 | }, 274 | "node_modules/@babel/parser": { 275 | "version": "7.27.0", 276 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", 277 | "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", 278 | "license": "MIT", 279 | "dependencies": { 280 | "@babel/types": "^7.27.0" 281 | }, 282 | "bin": { 283 | "parser": "bin/babel-parser.js" 284 | }, 285 | "engines": { 286 | "node": ">=6.0.0" 287 | } 288 | }, 289 | "node_modules/@babel/types": { 290 | "version": "7.27.0", 291 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", 292 | "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", 293 | "license": "MIT", 294 | "dependencies": { 295 | "@babel/helper-string-parser": "^7.25.9", 296 | "@babel/helper-validator-identifier": "^7.25.9" 297 | }, 298 | "engines": { 299 | "node": ">=6.9.0" 300 | } 301 | }, 302 | "node_modules/@docsearch/css": { 303 | "version": "3.8.2", 304 | "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.8.2.tgz", 305 | "integrity": "sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==", 306 | "dev": true, 307 | "license": "MIT" 308 | }, 309 | "node_modules/@docsearch/js": { 310 | "version": "3.8.2", 311 | "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.8.2.tgz", 312 | "integrity": "sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==", 313 | "dev": true, 314 | "license": "MIT", 315 | "dependencies": { 316 | "@docsearch/react": "3.8.2", 317 | "preact": "^10.0.0" 318 | } 319 | }, 320 | "node_modules/@docsearch/react": { 321 | "version": "3.8.2", 322 | "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.8.2.tgz", 323 | "integrity": "sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==", 324 | "dev": true, 325 | "license": "MIT", 326 | "dependencies": { 327 | "@algolia/autocomplete-core": "1.17.7", 328 | "@algolia/autocomplete-preset-algolia": "1.17.7", 329 | "@docsearch/css": "3.8.2", 330 | "algoliasearch": "^5.14.2" 331 | }, 332 | "peerDependencies": { 333 | "@types/react": ">= 16.8.0 < 19.0.0", 334 | "react": ">= 16.8.0 < 19.0.0", 335 | "react-dom": ">= 16.8.0 < 19.0.0", 336 | "search-insights": ">= 1 < 3" 337 | }, 338 | "peerDependenciesMeta": { 339 | "@types/react": { 340 | "optional": true 341 | }, 342 | "react": { 343 | "optional": true 344 | }, 345 | "react-dom": { 346 | "optional": true 347 | }, 348 | "search-insights": { 349 | "optional": true 350 | } 351 | } 352 | }, 353 | "node_modules/@esbuild/aix-ppc64": { 354 | "version": "0.21.5", 355 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", 356 | "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", 357 | "cpu": [ 358 | "ppc64" 359 | ], 360 | "dev": true, 361 | "license": "MIT", 362 | "optional": true, 363 | "os": [ 364 | "aix" 365 | ], 366 | "engines": { 367 | "node": ">=12" 368 | } 369 | }, 370 | "node_modules/@esbuild/android-arm": { 371 | "version": "0.21.5", 372 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", 373 | "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", 374 | "cpu": [ 375 | "arm" 376 | ], 377 | "dev": true, 378 | "license": "MIT", 379 | "optional": true, 380 | "os": [ 381 | "android" 382 | ], 383 | "engines": { 384 | "node": ">=12" 385 | } 386 | }, 387 | "node_modules/@esbuild/android-arm64": { 388 | "version": "0.21.5", 389 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", 390 | "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", 391 | "cpu": [ 392 | "arm64" 393 | ], 394 | "dev": true, 395 | "license": "MIT", 396 | "optional": true, 397 | "os": [ 398 | "android" 399 | ], 400 | "engines": { 401 | "node": ">=12" 402 | } 403 | }, 404 | "node_modules/@esbuild/android-x64": { 405 | "version": "0.21.5", 406 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", 407 | "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", 408 | "cpu": [ 409 | "x64" 410 | ], 411 | "dev": true, 412 | "license": "MIT", 413 | "optional": true, 414 | "os": [ 415 | "android" 416 | ], 417 | "engines": { 418 | "node": ">=12" 419 | } 420 | }, 421 | "node_modules/@esbuild/darwin-arm64": { 422 | "version": "0.21.5", 423 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", 424 | "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", 425 | "cpu": [ 426 | "arm64" 427 | ], 428 | "dev": true, 429 | "license": "MIT", 430 | "optional": true, 431 | "os": [ 432 | "darwin" 433 | ], 434 | "engines": { 435 | "node": ">=12" 436 | } 437 | }, 438 | "node_modules/@esbuild/darwin-x64": { 439 | "version": "0.21.5", 440 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", 441 | "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", 442 | "cpu": [ 443 | "x64" 444 | ], 445 | "dev": true, 446 | "license": "MIT", 447 | "optional": true, 448 | "os": [ 449 | "darwin" 450 | ], 451 | "engines": { 452 | "node": ">=12" 453 | } 454 | }, 455 | "node_modules/@esbuild/freebsd-arm64": { 456 | "version": "0.21.5", 457 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", 458 | "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", 459 | "cpu": [ 460 | "arm64" 461 | ], 462 | "dev": true, 463 | "license": "MIT", 464 | "optional": true, 465 | "os": [ 466 | "freebsd" 467 | ], 468 | "engines": { 469 | "node": ">=12" 470 | } 471 | }, 472 | "node_modules/@esbuild/freebsd-x64": { 473 | "version": "0.21.5", 474 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", 475 | "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", 476 | "cpu": [ 477 | "x64" 478 | ], 479 | "dev": true, 480 | "license": "MIT", 481 | "optional": true, 482 | "os": [ 483 | "freebsd" 484 | ], 485 | "engines": { 486 | "node": ">=12" 487 | } 488 | }, 489 | "node_modules/@esbuild/linux-arm": { 490 | "version": "0.21.5", 491 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", 492 | "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", 493 | "cpu": [ 494 | "arm" 495 | ], 496 | "dev": true, 497 | "license": "MIT", 498 | "optional": true, 499 | "os": [ 500 | "linux" 501 | ], 502 | "engines": { 503 | "node": ">=12" 504 | } 505 | }, 506 | "node_modules/@esbuild/linux-arm64": { 507 | "version": "0.21.5", 508 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", 509 | "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", 510 | "cpu": [ 511 | "arm64" 512 | ], 513 | "dev": true, 514 | "license": "MIT", 515 | "optional": true, 516 | "os": [ 517 | "linux" 518 | ], 519 | "engines": { 520 | "node": ">=12" 521 | } 522 | }, 523 | "node_modules/@esbuild/linux-ia32": { 524 | "version": "0.21.5", 525 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", 526 | "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", 527 | "cpu": [ 528 | "ia32" 529 | ], 530 | "dev": true, 531 | "license": "MIT", 532 | "optional": true, 533 | "os": [ 534 | "linux" 535 | ], 536 | "engines": { 537 | "node": ">=12" 538 | } 539 | }, 540 | "node_modules/@esbuild/linux-loong64": { 541 | "version": "0.21.5", 542 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", 543 | "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", 544 | "cpu": [ 545 | "loong64" 546 | ], 547 | "dev": true, 548 | "license": "MIT", 549 | "optional": true, 550 | "os": [ 551 | "linux" 552 | ], 553 | "engines": { 554 | "node": ">=12" 555 | } 556 | }, 557 | "node_modules/@esbuild/linux-mips64el": { 558 | "version": "0.21.5", 559 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", 560 | "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", 561 | "cpu": [ 562 | "mips64el" 563 | ], 564 | "dev": true, 565 | "license": "MIT", 566 | "optional": true, 567 | "os": [ 568 | "linux" 569 | ], 570 | "engines": { 571 | "node": ">=12" 572 | } 573 | }, 574 | "node_modules/@esbuild/linux-ppc64": { 575 | "version": "0.21.5", 576 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", 577 | "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", 578 | "cpu": [ 579 | "ppc64" 580 | ], 581 | "dev": true, 582 | "license": "MIT", 583 | "optional": true, 584 | "os": [ 585 | "linux" 586 | ], 587 | "engines": { 588 | "node": ">=12" 589 | } 590 | }, 591 | "node_modules/@esbuild/linux-riscv64": { 592 | "version": "0.21.5", 593 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", 594 | "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", 595 | "cpu": [ 596 | "riscv64" 597 | ], 598 | "dev": true, 599 | "license": "MIT", 600 | "optional": true, 601 | "os": [ 602 | "linux" 603 | ], 604 | "engines": { 605 | "node": ">=12" 606 | } 607 | }, 608 | "node_modules/@esbuild/linux-s390x": { 609 | "version": "0.21.5", 610 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", 611 | "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", 612 | "cpu": [ 613 | "s390x" 614 | ], 615 | "dev": true, 616 | "license": "MIT", 617 | "optional": true, 618 | "os": [ 619 | "linux" 620 | ], 621 | "engines": { 622 | "node": ">=12" 623 | } 624 | }, 625 | "node_modules/@esbuild/linux-x64": { 626 | "version": "0.21.5", 627 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", 628 | "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", 629 | "cpu": [ 630 | "x64" 631 | ], 632 | "dev": true, 633 | "license": "MIT", 634 | "optional": true, 635 | "os": [ 636 | "linux" 637 | ], 638 | "engines": { 639 | "node": ">=12" 640 | } 641 | }, 642 | "node_modules/@esbuild/netbsd-x64": { 643 | "version": "0.21.5", 644 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", 645 | "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", 646 | "cpu": [ 647 | "x64" 648 | ], 649 | "dev": true, 650 | "license": "MIT", 651 | "optional": true, 652 | "os": [ 653 | "netbsd" 654 | ], 655 | "engines": { 656 | "node": ">=12" 657 | } 658 | }, 659 | "node_modules/@esbuild/openbsd-x64": { 660 | "version": "0.21.5", 661 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", 662 | "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", 663 | "cpu": [ 664 | "x64" 665 | ], 666 | "dev": true, 667 | "license": "MIT", 668 | "optional": true, 669 | "os": [ 670 | "openbsd" 671 | ], 672 | "engines": { 673 | "node": ">=12" 674 | } 675 | }, 676 | "node_modules/@esbuild/sunos-x64": { 677 | "version": "0.21.5", 678 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", 679 | "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", 680 | "cpu": [ 681 | "x64" 682 | ], 683 | "dev": true, 684 | "license": "MIT", 685 | "optional": true, 686 | "os": [ 687 | "sunos" 688 | ], 689 | "engines": { 690 | "node": ">=12" 691 | } 692 | }, 693 | "node_modules/@esbuild/win32-arm64": { 694 | "version": "0.21.5", 695 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", 696 | "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", 697 | "cpu": [ 698 | "arm64" 699 | ], 700 | "dev": true, 701 | "license": "MIT", 702 | "optional": true, 703 | "os": [ 704 | "win32" 705 | ], 706 | "engines": { 707 | "node": ">=12" 708 | } 709 | }, 710 | "node_modules/@esbuild/win32-ia32": { 711 | "version": "0.21.5", 712 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", 713 | "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", 714 | "cpu": [ 715 | "ia32" 716 | ], 717 | "dev": true, 718 | "license": "MIT", 719 | "optional": true, 720 | "os": [ 721 | "win32" 722 | ], 723 | "engines": { 724 | "node": ">=12" 725 | } 726 | }, 727 | "node_modules/@esbuild/win32-x64": { 728 | "version": "0.21.5", 729 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", 730 | "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", 731 | "cpu": [ 732 | "x64" 733 | ], 734 | "dev": true, 735 | "license": "MIT", 736 | "optional": true, 737 | "os": [ 738 | "win32" 739 | ], 740 | "engines": { 741 | "node": ">=12" 742 | } 743 | }, 744 | "node_modules/@giscus/vue": { 745 | "version": "2.4.0", 746 | "resolved": "https://registry.npmjs.org/@giscus/vue/-/vue-2.4.0.tgz", 747 | "integrity": "sha512-QOxKHgsMT91myyQagP2v20YYAei1ByZuc3qcaYxbHx4AwOeyVrybDIuRFwG9YDv6OraC86jYnU4Ixd37ddC/0A==", 748 | "dependencies": { 749 | "giscus": "^1.4.0" 750 | }, 751 | "peerDependencies": { 752 | "vue": ">=3.2.0" 753 | } 754 | }, 755 | "node_modules/@iconify-json/simple-icons": { 756 | "version": "1.2.31", 757 | "resolved": "https://registry.npmjs.org/@iconify-json/simple-icons/-/simple-icons-1.2.31.tgz", 758 | "integrity": "sha512-xBUPtvkcSAiXs9DfVtudhLddQtQYin3I3Ph/W5FNYA0oE6r2hmLB8TgOog9OjOt1Sxn3IB5+4n5+64DMf2xNmQ==", 759 | "dev": true, 760 | "license": "CC0-1.0", 761 | "dependencies": { 762 | "@iconify/types": "*" 763 | } 764 | }, 765 | "node_modules/@iconify/types": { 766 | "version": "2.0.0", 767 | "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", 768 | "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", 769 | "dev": true, 770 | "license": "MIT" 771 | }, 772 | "node_modules/@jridgewell/sourcemap-codec": { 773 | "version": "1.5.0", 774 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 775 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 776 | "license": "MIT" 777 | }, 778 | "node_modules/@lit-labs/ssr-dom-shim": { 779 | "version": "1.3.0", 780 | "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.3.0.tgz", 781 | "integrity": "sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==", 782 | "license": "BSD-3-Clause" 783 | }, 784 | "node_modules/@lit/reactive-element": { 785 | "version": "2.1.0", 786 | "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.1.0.tgz", 787 | "integrity": "sha512-L2qyoZSQClcBmq0qajBVbhYEcG6iK0XfLn66ifLe/RfC0/ihpc+pl0Wdn8bJ8o+hj38cG0fGXRgSS20MuXn7qA==", 788 | "license": "BSD-3-Clause", 789 | "dependencies": { 790 | "@lit-labs/ssr-dom-shim": "^1.2.0" 791 | } 792 | }, 793 | "node_modules/@rollup/rollup-android-arm-eabi": { 794 | "version": "4.40.0", 795 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.0.tgz", 796 | "integrity": "sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==", 797 | "cpu": [ 798 | "arm" 799 | ], 800 | "dev": true, 801 | "license": "MIT", 802 | "optional": true, 803 | "os": [ 804 | "android" 805 | ] 806 | }, 807 | "node_modules/@rollup/rollup-android-arm64": { 808 | "version": "4.40.0", 809 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.0.tgz", 810 | "integrity": "sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==", 811 | "cpu": [ 812 | "arm64" 813 | ], 814 | "dev": true, 815 | "license": "MIT", 816 | "optional": true, 817 | "os": [ 818 | "android" 819 | ] 820 | }, 821 | "node_modules/@rollup/rollup-darwin-arm64": { 822 | "version": "4.40.0", 823 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.0.tgz", 824 | "integrity": "sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==", 825 | "cpu": [ 826 | "arm64" 827 | ], 828 | "dev": true, 829 | "license": "MIT", 830 | "optional": true, 831 | "os": [ 832 | "darwin" 833 | ] 834 | }, 835 | "node_modules/@rollup/rollup-darwin-x64": { 836 | "version": "4.40.0", 837 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.0.tgz", 838 | "integrity": "sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==", 839 | "cpu": [ 840 | "x64" 841 | ], 842 | "dev": true, 843 | "license": "MIT", 844 | "optional": true, 845 | "os": [ 846 | "darwin" 847 | ] 848 | }, 849 | "node_modules/@rollup/rollup-freebsd-arm64": { 850 | "version": "4.40.0", 851 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.0.tgz", 852 | "integrity": "sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==", 853 | "cpu": [ 854 | "arm64" 855 | ], 856 | "dev": true, 857 | "license": "MIT", 858 | "optional": true, 859 | "os": [ 860 | "freebsd" 861 | ] 862 | }, 863 | "node_modules/@rollup/rollup-freebsd-x64": { 864 | "version": "4.40.0", 865 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.0.tgz", 866 | "integrity": "sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==", 867 | "cpu": [ 868 | "x64" 869 | ], 870 | "dev": true, 871 | "license": "MIT", 872 | "optional": true, 873 | "os": [ 874 | "freebsd" 875 | ] 876 | }, 877 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 878 | "version": "4.40.0", 879 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.0.tgz", 880 | "integrity": "sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==", 881 | "cpu": [ 882 | "arm" 883 | ], 884 | "dev": true, 885 | "license": "MIT", 886 | "optional": true, 887 | "os": [ 888 | "linux" 889 | ] 890 | }, 891 | "node_modules/@rollup/rollup-linux-arm-musleabihf": { 892 | "version": "4.40.0", 893 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.0.tgz", 894 | "integrity": "sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==", 895 | "cpu": [ 896 | "arm" 897 | ], 898 | "dev": true, 899 | "license": "MIT", 900 | "optional": true, 901 | "os": [ 902 | "linux" 903 | ] 904 | }, 905 | "node_modules/@rollup/rollup-linux-arm64-gnu": { 906 | "version": "4.40.0", 907 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.0.tgz", 908 | "integrity": "sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==", 909 | "cpu": [ 910 | "arm64" 911 | ], 912 | "dev": true, 913 | "license": "MIT", 914 | "optional": true, 915 | "os": [ 916 | "linux" 917 | ] 918 | }, 919 | "node_modules/@rollup/rollup-linux-arm64-musl": { 920 | "version": "4.40.0", 921 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.0.tgz", 922 | "integrity": "sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==", 923 | "cpu": [ 924 | "arm64" 925 | ], 926 | "dev": true, 927 | "license": "MIT", 928 | "optional": true, 929 | "os": [ 930 | "linux" 931 | ] 932 | }, 933 | "node_modules/@rollup/rollup-linux-loongarch64-gnu": { 934 | "version": "4.40.0", 935 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.0.tgz", 936 | "integrity": "sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==", 937 | "cpu": [ 938 | "loong64" 939 | ], 940 | "dev": true, 941 | "license": "MIT", 942 | "optional": true, 943 | "os": [ 944 | "linux" 945 | ] 946 | }, 947 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 948 | "version": "4.40.0", 949 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.0.tgz", 950 | "integrity": "sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==", 951 | "cpu": [ 952 | "ppc64" 953 | ], 954 | "dev": true, 955 | "license": "MIT", 956 | "optional": true, 957 | "os": [ 958 | "linux" 959 | ] 960 | }, 961 | "node_modules/@rollup/rollup-linux-riscv64-gnu": { 962 | "version": "4.40.0", 963 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.0.tgz", 964 | "integrity": "sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==", 965 | "cpu": [ 966 | "riscv64" 967 | ], 968 | "dev": true, 969 | "license": "MIT", 970 | "optional": true, 971 | "os": [ 972 | "linux" 973 | ] 974 | }, 975 | "node_modules/@rollup/rollup-linux-riscv64-musl": { 976 | "version": "4.40.0", 977 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.0.tgz", 978 | "integrity": "sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==", 979 | "cpu": [ 980 | "riscv64" 981 | ], 982 | "dev": true, 983 | "license": "MIT", 984 | "optional": true, 985 | "os": [ 986 | "linux" 987 | ] 988 | }, 989 | "node_modules/@rollup/rollup-linux-s390x-gnu": { 990 | "version": "4.40.0", 991 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.0.tgz", 992 | "integrity": "sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==", 993 | "cpu": [ 994 | "s390x" 995 | ], 996 | "dev": true, 997 | "license": "MIT", 998 | "optional": true, 999 | "os": [ 1000 | "linux" 1001 | ] 1002 | }, 1003 | "node_modules/@rollup/rollup-linux-x64-gnu": { 1004 | "version": "4.40.0", 1005 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.0.tgz", 1006 | "integrity": "sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==", 1007 | "cpu": [ 1008 | "x64" 1009 | ], 1010 | "dev": true, 1011 | "license": "MIT", 1012 | "optional": true, 1013 | "os": [ 1014 | "linux" 1015 | ] 1016 | }, 1017 | "node_modules/@rollup/rollup-linux-x64-musl": { 1018 | "version": "4.40.0", 1019 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.0.tgz", 1020 | "integrity": "sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==", 1021 | "cpu": [ 1022 | "x64" 1023 | ], 1024 | "dev": true, 1025 | "license": "MIT", 1026 | "optional": true, 1027 | "os": [ 1028 | "linux" 1029 | ] 1030 | }, 1031 | "node_modules/@rollup/rollup-win32-arm64-msvc": { 1032 | "version": "4.40.0", 1033 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.0.tgz", 1034 | "integrity": "sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==", 1035 | "cpu": [ 1036 | "arm64" 1037 | ], 1038 | "dev": true, 1039 | "license": "MIT", 1040 | "optional": true, 1041 | "os": [ 1042 | "win32" 1043 | ] 1044 | }, 1045 | "node_modules/@rollup/rollup-win32-ia32-msvc": { 1046 | "version": "4.40.0", 1047 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.0.tgz", 1048 | "integrity": "sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==", 1049 | "cpu": [ 1050 | "ia32" 1051 | ], 1052 | "dev": true, 1053 | "license": "MIT", 1054 | "optional": true, 1055 | "os": [ 1056 | "win32" 1057 | ] 1058 | }, 1059 | "node_modules/@rollup/rollup-win32-x64-msvc": { 1060 | "version": "4.40.0", 1061 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.0.tgz", 1062 | "integrity": "sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==", 1063 | "cpu": [ 1064 | "x64" 1065 | ], 1066 | "dev": true, 1067 | "license": "MIT", 1068 | "optional": true, 1069 | "os": [ 1070 | "win32" 1071 | ] 1072 | }, 1073 | "node_modules/@shikijs/core": { 1074 | "version": "2.5.0", 1075 | "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-2.5.0.tgz", 1076 | "integrity": "sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==", 1077 | "dev": true, 1078 | "license": "MIT", 1079 | "dependencies": { 1080 | "@shikijs/engine-javascript": "2.5.0", 1081 | "@shikijs/engine-oniguruma": "2.5.0", 1082 | "@shikijs/types": "2.5.0", 1083 | "@shikijs/vscode-textmate": "^10.0.2", 1084 | "@types/hast": "^3.0.4", 1085 | "hast-util-to-html": "^9.0.4" 1086 | } 1087 | }, 1088 | "node_modules/@shikijs/engine-javascript": { 1089 | "version": "2.5.0", 1090 | "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.5.0.tgz", 1091 | "integrity": "sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==", 1092 | "dev": true, 1093 | "license": "MIT", 1094 | "dependencies": { 1095 | "@shikijs/types": "2.5.0", 1096 | "@shikijs/vscode-textmate": "^10.0.2", 1097 | "oniguruma-to-es": "^3.1.0" 1098 | } 1099 | }, 1100 | "node_modules/@shikijs/engine-oniguruma": { 1101 | "version": "2.5.0", 1102 | "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz", 1103 | "integrity": "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==", 1104 | "dev": true, 1105 | "license": "MIT", 1106 | "dependencies": { 1107 | "@shikijs/types": "2.5.0", 1108 | "@shikijs/vscode-textmate": "^10.0.2" 1109 | } 1110 | }, 1111 | "node_modules/@shikijs/langs": { 1112 | "version": "2.5.0", 1113 | "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-2.5.0.tgz", 1114 | "integrity": "sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==", 1115 | "dev": true, 1116 | "license": "MIT", 1117 | "dependencies": { 1118 | "@shikijs/types": "2.5.0" 1119 | } 1120 | }, 1121 | "node_modules/@shikijs/themes": { 1122 | "version": "2.5.0", 1123 | "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-2.5.0.tgz", 1124 | "integrity": "sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==", 1125 | "dev": true, 1126 | "license": "MIT", 1127 | "dependencies": { 1128 | "@shikijs/types": "2.5.0" 1129 | } 1130 | }, 1131 | "node_modules/@shikijs/transformers": { 1132 | "version": "2.5.0", 1133 | "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-2.5.0.tgz", 1134 | "integrity": "sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==", 1135 | "dev": true, 1136 | "license": "MIT", 1137 | "dependencies": { 1138 | "@shikijs/core": "2.5.0", 1139 | "@shikijs/types": "2.5.0" 1140 | } 1141 | }, 1142 | "node_modules/@shikijs/types": { 1143 | "version": "2.5.0", 1144 | "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz", 1145 | "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", 1146 | "dev": true, 1147 | "license": "MIT", 1148 | "dependencies": { 1149 | "@shikijs/vscode-textmate": "^10.0.2", 1150 | "@types/hast": "^3.0.4" 1151 | } 1152 | }, 1153 | "node_modules/@shikijs/vscode-textmate": { 1154 | "version": "10.0.2", 1155 | "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", 1156 | "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", 1157 | "dev": true, 1158 | "license": "MIT" 1159 | }, 1160 | "node_modules/@types/estree": { 1161 | "version": "1.0.7", 1162 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", 1163 | "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", 1164 | "dev": true, 1165 | "license": "MIT" 1166 | }, 1167 | "node_modules/@types/hast": { 1168 | "version": "3.0.4", 1169 | "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", 1170 | "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", 1171 | "dev": true, 1172 | "license": "MIT", 1173 | "dependencies": { 1174 | "@types/unist": "*" 1175 | } 1176 | }, 1177 | "node_modules/@types/linkify-it": { 1178 | "version": "5.0.0", 1179 | "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", 1180 | "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", 1181 | "dev": true, 1182 | "license": "MIT" 1183 | }, 1184 | "node_modules/@types/markdown-it": { 1185 | "version": "14.1.2", 1186 | "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", 1187 | "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", 1188 | "dev": true, 1189 | "license": "MIT", 1190 | "dependencies": { 1191 | "@types/linkify-it": "^5", 1192 | "@types/mdurl": "^2" 1193 | } 1194 | }, 1195 | "node_modules/@types/mdast": { 1196 | "version": "4.0.4", 1197 | "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", 1198 | "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", 1199 | "dev": true, 1200 | "license": "MIT", 1201 | "dependencies": { 1202 | "@types/unist": "*" 1203 | } 1204 | }, 1205 | "node_modules/@types/mdurl": { 1206 | "version": "2.0.0", 1207 | "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", 1208 | "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", 1209 | "dev": true, 1210 | "license": "MIT" 1211 | }, 1212 | "node_modules/@types/trusted-types": { 1213 | "version": "2.0.7", 1214 | "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", 1215 | "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", 1216 | "license": "MIT" 1217 | }, 1218 | "node_modules/@types/unist": { 1219 | "version": "3.0.3", 1220 | "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", 1221 | "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", 1222 | "dev": true, 1223 | "license": "MIT" 1224 | }, 1225 | "node_modules/@types/web-bluetooth": { 1226 | "version": "0.0.21", 1227 | "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", 1228 | "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", 1229 | "dev": true, 1230 | "license": "MIT" 1231 | }, 1232 | "node_modules/@ungap/structured-clone": { 1233 | "version": "1.3.0", 1234 | "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", 1235 | "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", 1236 | "dev": true, 1237 | "license": "ISC" 1238 | }, 1239 | "node_modules/@vitejs/plugin-vue": { 1240 | "version": "5.2.3", 1241 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz", 1242 | "integrity": "sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==", 1243 | "dev": true, 1244 | "license": "MIT", 1245 | "engines": { 1246 | "node": "^18.0.0 || >=20.0.0" 1247 | }, 1248 | "peerDependencies": { 1249 | "vite": "^5.0.0 || ^6.0.0", 1250 | "vue": "^3.2.25" 1251 | } 1252 | }, 1253 | "node_modules/@vue/compiler-core": { 1254 | "version": "3.5.13", 1255 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", 1256 | "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", 1257 | "license": "MIT", 1258 | "dependencies": { 1259 | "@babel/parser": "^7.25.3", 1260 | "@vue/shared": "3.5.13", 1261 | "entities": "^4.5.0", 1262 | "estree-walker": "^2.0.2", 1263 | "source-map-js": "^1.2.0" 1264 | } 1265 | }, 1266 | "node_modules/@vue/compiler-dom": { 1267 | "version": "3.5.13", 1268 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", 1269 | "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", 1270 | "license": "MIT", 1271 | "dependencies": { 1272 | "@vue/compiler-core": "3.5.13", 1273 | "@vue/shared": "3.5.13" 1274 | } 1275 | }, 1276 | "node_modules/@vue/compiler-sfc": { 1277 | "version": "3.5.13", 1278 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", 1279 | "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", 1280 | "license": "MIT", 1281 | "dependencies": { 1282 | "@babel/parser": "^7.25.3", 1283 | "@vue/compiler-core": "3.5.13", 1284 | "@vue/compiler-dom": "3.5.13", 1285 | "@vue/compiler-ssr": "3.5.13", 1286 | "@vue/shared": "3.5.13", 1287 | "estree-walker": "^2.0.2", 1288 | "magic-string": "^0.30.11", 1289 | "postcss": "^8.4.48", 1290 | "source-map-js": "^1.2.0" 1291 | } 1292 | }, 1293 | "node_modules/@vue/compiler-ssr": { 1294 | "version": "3.5.13", 1295 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", 1296 | "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", 1297 | "license": "MIT", 1298 | "dependencies": { 1299 | "@vue/compiler-dom": "3.5.13", 1300 | "@vue/shared": "3.5.13" 1301 | } 1302 | }, 1303 | "node_modules/@vue/devtools-api": { 1304 | "version": "7.7.2", 1305 | "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.2.tgz", 1306 | "integrity": "sha512-1syn558KhyN+chO5SjlZIwJ8bV/bQ1nOVTG66t2RbG66ZGekyiYNmRO7X9BJCXQqPsFHlnksqvPhce2qpzxFnA==", 1307 | "dev": true, 1308 | "license": "MIT", 1309 | "dependencies": { 1310 | "@vue/devtools-kit": "^7.7.2" 1311 | } 1312 | }, 1313 | "node_modules/@vue/devtools-kit": { 1314 | "version": "7.7.2", 1315 | "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.2.tgz", 1316 | "integrity": "sha512-CY0I1JH3Z8PECbn6k3TqM1Bk9ASWxeMtTCvZr7vb+CHi+X/QwQm5F1/fPagraamKMAHVfuuCbdcnNg1A4CYVWQ==", 1317 | "dev": true, 1318 | "license": "MIT", 1319 | "dependencies": { 1320 | "@vue/devtools-shared": "^7.7.2", 1321 | "birpc": "^0.2.19", 1322 | "hookable": "^5.5.3", 1323 | "mitt": "^3.0.1", 1324 | "perfect-debounce": "^1.0.0", 1325 | "speakingurl": "^14.0.1", 1326 | "superjson": "^2.2.1" 1327 | } 1328 | }, 1329 | "node_modules/@vue/devtools-shared": { 1330 | "version": "7.7.2", 1331 | "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.2.tgz", 1332 | "integrity": "sha512-uBFxnp8gwW2vD6FrJB8JZLUzVb6PNRG0B0jBnHsOH8uKyva2qINY8PTF5Te4QlTbMDqU5K6qtJDr6cNsKWhbOA==", 1333 | "dev": true, 1334 | "license": "MIT", 1335 | "dependencies": { 1336 | "rfdc": "^1.4.1" 1337 | } 1338 | }, 1339 | "node_modules/@vue/reactivity": { 1340 | "version": "3.5.13", 1341 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", 1342 | "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", 1343 | "license": "MIT", 1344 | "dependencies": { 1345 | "@vue/shared": "3.5.13" 1346 | } 1347 | }, 1348 | "node_modules/@vue/runtime-core": { 1349 | "version": "3.5.13", 1350 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", 1351 | "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", 1352 | "license": "MIT", 1353 | "dependencies": { 1354 | "@vue/reactivity": "3.5.13", 1355 | "@vue/shared": "3.5.13" 1356 | } 1357 | }, 1358 | "node_modules/@vue/runtime-dom": { 1359 | "version": "3.5.13", 1360 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", 1361 | "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", 1362 | "license": "MIT", 1363 | "dependencies": { 1364 | "@vue/reactivity": "3.5.13", 1365 | "@vue/runtime-core": "3.5.13", 1366 | "@vue/shared": "3.5.13", 1367 | "csstype": "^3.1.3" 1368 | } 1369 | }, 1370 | "node_modules/@vue/server-renderer": { 1371 | "version": "3.5.13", 1372 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", 1373 | "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", 1374 | "license": "MIT", 1375 | "dependencies": { 1376 | "@vue/compiler-ssr": "3.5.13", 1377 | "@vue/shared": "3.5.13" 1378 | }, 1379 | "peerDependencies": { 1380 | "vue": "3.5.13" 1381 | } 1382 | }, 1383 | "node_modules/@vue/shared": { 1384 | "version": "3.5.13", 1385 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", 1386 | "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", 1387 | "license": "MIT" 1388 | }, 1389 | "node_modules/@vueuse/core": { 1390 | "version": "12.8.2", 1391 | "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-12.8.2.tgz", 1392 | "integrity": "sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==", 1393 | "dev": true, 1394 | "license": "MIT", 1395 | "dependencies": { 1396 | "@types/web-bluetooth": "^0.0.21", 1397 | "@vueuse/metadata": "12.8.2", 1398 | "@vueuse/shared": "12.8.2", 1399 | "vue": "^3.5.13" 1400 | }, 1401 | "funding": { 1402 | "url": "https://github.com/sponsors/antfu" 1403 | } 1404 | }, 1405 | "node_modules/@vueuse/integrations": { 1406 | "version": "12.8.2", 1407 | "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-12.8.2.tgz", 1408 | "integrity": "sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==", 1409 | "dev": true, 1410 | "license": "MIT", 1411 | "dependencies": { 1412 | "@vueuse/core": "12.8.2", 1413 | "@vueuse/shared": "12.8.2", 1414 | "vue": "^3.5.13" 1415 | }, 1416 | "funding": { 1417 | "url": "https://github.com/sponsors/antfu" 1418 | }, 1419 | "peerDependencies": { 1420 | "async-validator": "^4", 1421 | "axios": "^1", 1422 | "change-case": "^5", 1423 | "drauu": "^0.4", 1424 | "focus-trap": "^7", 1425 | "fuse.js": "^7", 1426 | "idb-keyval": "^6", 1427 | "jwt-decode": "^4", 1428 | "nprogress": "^0.2", 1429 | "qrcode": "^1.5", 1430 | "sortablejs": "^1", 1431 | "universal-cookie": "^7" 1432 | }, 1433 | "peerDependenciesMeta": { 1434 | "async-validator": { 1435 | "optional": true 1436 | }, 1437 | "axios": { 1438 | "optional": true 1439 | }, 1440 | "change-case": { 1441 | "optional": true 1442 | }, 1443 | "drauu": { 1444 | "optional": true 1445 | }, 1446 | "focus-trap": { 1447 | "optional": true 1448 | }, 1449 | "fuse.js": { 1450 | "optional": true 1451 | }, 1452 | "idb-keyval": { 1453 | "optional": true 1454 | }, 1455 | "jwt-decode": { 1456 | "optional": true 1457 | }, 1458 | "nprogress": { 1459 | "optional": true 1460 | }, 1461 | "qrcode": { 1462 | "optional": true 1463 | }, 1464 | "sortablejs": { 1465 | "optional": true 1466 | }, 1467 | "universal-cookie": { 1468 | "optional": true 1469 | } 1470 | } 1471 | }, 1472 | "node_modules/@vueuse/metadata": { 1473 | "version": "12.8.2", 1474 | "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-12.8.2.tgz", 1475 | "integrity": "sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==", 1476 | "dev": true, 1477 | "license": "MIT", 1478 | "funding": { 1479 | "url": "https://github.com/sponsors/antfu" 1480 | } 1481 | }, 1482 | "node_modules/@vueuse/shared": { 1483 | "version": "12.8.2", 1484 | "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-12.8.2.tgz", 1485 | "integrity": "sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==", 1486 | "dev": true, 1487 | "license": "MIT", 1488 | "dependencies": { 1489 | "vue": "^3.5.13" 1490 | }, 1491 | "funding": { 1492 | "url": "https://github.com/sponsors/antfu" 1493 | } 1494 | }, 1495 | "node_modules/algoliasearch": { 1496 | "version": "5.23.3", 1497 | "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.23.3.tgz", 1498 | "integrity": "sha512-0JlUaY/hl3LrKvbidI5FysEi2ggAlcTHM8AHV2UsrJUXnNo8/lWBfhzc1b7o8bK3YZNiU26JtLyT9exoj5VBgA==", 1499 | "dev": true, 1500 | "license": "MIT", 1501 | "dependencies": { 1502 | "@algolia/client-abtesting": "5.23.3", 1503 | "@algolia/client-analytics": "5.23.3", 1504 | "@algolia/client-common": "5.23.3", 1505 | "@algolia/client-insights": "5.23.3", 1506 | "@algolia/client-personalization": "5.23.3", 1507 | "@algolia/client-query-suggestions": "5.23.3", 1508 | "@algolia/client-search": "5.23.3", 1509 | "@algolia/ingestion": "1.23.3", 1510 | "@algolia/monitoring": "1.23.3", 1511 | "@algolia/recommend": "5.23.3", 1512 | "@algolia/requester-browser-xhr": "5.23.3", 1513 | "@algolia/requester-fetch": "5.23.3", 1514 | "@algolia/requester-node-http": "5.23.3" 1515 | }, 1516 | "engines": { 1517 | "node": ">= 14.0.0" 1518 | } 1519 | }, 1520 | "node_modules/birpc": { 1521 | "version": "0.2.19", 1522 | "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.19.tgz", 1523 | "integrity": "sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==", 1524 | "dev": true, 1525 | "license": "MIT", 1526 | "funding": { 1527 | "url": "https://github.com/sponsors/antfu" 1528 | } 1529 | }, 1530 | "node_modules/ccount": { 1531 | "version": "2.0.1", 1532 | "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", 1533 | "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", 1534 | "dev": true, 1535 | "license": "MIT", 1536 | "funding": { 1537 | "type": "github", 1538 | "url": "https://github.com/sponsors/wooorm" 1539 | } 1540 | }, 1541 | "node_modules/character-entities-html4": { 1542 | "version": "2.1.0", 1543 | "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", 1544 | "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", 1545 | "dev": true, 1546 | "license": "MIT", 1547 | "funding": { 1548 | "type": "github", 1549 | "url": "https://github.com/sponsors/wooorm" 1550 | } 1551 | }, 1552 | "node_modules/character-entities-legacy": { 1553 | "version": "3.0.0", 1554 | "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", 1555 | "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", 1556 | "dev": true, 1557 | "license": "MIT", 1558 | "funding": { 1559 | "type": "github", 1560 | "url": "https://github.com/sponsors/wooorm" 1561 | } 1562 | }, 1563 | "node_modules/comma-separated-tokens": { 1564 | "version": "2.0.3", 1565 | "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", 1566 | "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", 1567 | "dev": true, 1568 | "license": "MIT", 1569 | "funding": { 1570 | "type": "github", 1571 | "url": "https://github.com/sponsors/wooorm" 1572 | } 1573 | }, 1574 | "node_modules/copy-anything": { 1575 | "version": "3.0.5", 1576 | "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", 1577 | "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", 1578 | "dev": true, 1579 | "license": "MIT", 1580 | "dependencies": { 1581 | "is-what": "^4.1.8" 1582 | }, 1583 | "engines": { 1584 | "node": ">=12.13" 1585 | }, 1586 | "funding": { 1587 | "url": "https://github.com/sponsors/mesqueeb" 1588 | } 1589 | }, 1590 | "node_modules/csstype": { 1591 | "version": "3.1.3", 1592 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", 1593 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", 1594 | "license": "MIT" 1595 | }, 1596 | "node_modules/dequal": { 1597 | "version": "2.0.3", 1598 | "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", 1599 | "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", 1600 | "dev": true, 1601 | "license": "MIT", 1602 | "engines": { 1603 | "node": ">=6" 1604 | } 1605 | }, 1606 | "node_modules/devlop": { 1607 | "version": "1.1.0", 1608 | "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", 1609 | "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", 1610 | "dev": true, 1611 | "license": "MIT", 1612 | "dependencies": { 1613 | "dequal": "^2.0.0" 1614 | }, 1615 | "funding": { 1616 | "type": "github", 1617 | "url": "https://github.com/sponsors/wooorm" 1618 | } 1619 | }, 1620 | "node_modules/emoji-regex-xs": { 1621 | "version": "1.0.0", 1622 | "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", 1623 | "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", 1624 | "dev": true, 1625 | "license": "MIT" 1626 | }, 1627 | "node_modules/entities": { 1628 | "version": "4.5.0", 1629 | "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", 1630 | "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", 1631 | "license": "BSD-2-Clause", 1632 | "engines": { 1633 | "node": ">=0.12" 1634 | }, 1635 | "funding": { 1636 | "url": "https://github.com/fb55/entities?sponsor=1" 1637 | } 1638 | }, 1639 | "node_modules/esbuild": { 1640 | "version": "0.21.5", 1641 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", 1642 | "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", 1643 | "dev": true, 1644 | "hasInstallScript": true, 1645 | "license": "MIT", 1646 | "bin": { 1647 | "esbuild": "bin/esbuild" 1648 | }, 1649 | "engines": { 1650 | "node": ">=12" 1651 | }, 1652 | "optionalDependencies": { 1653 | "@esbuild/aix-ppc64": "0.21.5", 1654 | "@esbuild/android-arm": "0.21.5", 1655 | "@esbuild/android-arm64": "0.21.5", 1656 | "@esbuild/android-x64": "0.21.5", 1657 | "@esbuild/darwin-arm64": "0.21.5", 1658 | "@esbuild/darwin-x64": "0.21.5", 1659 | "@esbuild/freebsd-arm64": "0.21.5", 1660 | "@esbuild/freebsd-x64": "0.21.5", 1661 | "@esbuild/linux-arm": "0.21.5", 1662 | "@esbuild/linux-arm64": "0.21.5", 1663 | "@esbuild/linux-ia32": "0.21.5", 1664 | "@esbuild/linux-loong64": "0.21.5", 1665 | "@esbuild/linux-mips64el": "0.21.5", 1666 | "@esbuild/linux-ppc64": "0.21.5", 1667 | "@esbuild/linux-riscv64": "0.21.5", 1668 | "@esbuild/linux-s390x": "0.21.5", 1669 | "@esbuild/linux-x64": "0.21.5", 1670 | "@esbuild/netbsd-x64": "0.21.5", 1671 | "@esbuild/openbsd-x64": "0.21.5", 1672 | "@esbuild/sunos-x64": "0.21.5", 1673 | "@esbuild/win32-arm64": "0.21.5", 1674 | "@esbuild/win32-ia32": "0.21.5", 1675 | "@esbuild/win32-x64": "0.21.5" 1676 | } 1677 | }, 1678 | "node_modules/estree-walker": { 1679 | "version": "2.0.2", 1680 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 1681 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 1682 | "license": "MIT" 1683 | }, 1684 | "node_modules/focus-trap": { 1685 | "version": "7.6.4", 1686 | "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.4.tgz", 1687 | "integrity": "sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==", 1688 | "dev": true, 1689 | "license": "MIT", 1690 | "dependencies": { 1691 | "tabbable": "^6.2.0" 1692 | } 1693 | }, 1694 | "node_modules/fsevents": { 1695 | "version": "2.3.3", 1696 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1697 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1698 | "dev": true, 1699 | "hasInstallScript": true, 1700 | "license": "MIT", 1701 | "optional": true, 1702 | "os": [ 1703 | "darwin" 1704 | ], 1705 | "engines": { 1706 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1707 | } 1708 | }, 1709 | "node_modules/giscus": { 1710 | "version": "1.6.0", 1711 | "resolved": "https://registry.npmjs.org/giscus/-/giscus-1.6.0.tgz", 1712 | "integrity": "sha512-Zrsi8r4t1LVW950keaWcsURuZUQwUaMKjvJgTCY125vkW6OiEBkatE7ScJDbpqKHdZwb///7FVC21SE3iFK3PQ==", 1713 | "license": "MIT", 1714 | "dependencies": { 1715 | "lit": "^3.2.1" 1716 | } 1717 | }, 1718 | "node_modules/hast-util-to-html": { 1719 | "version": "9.0.5", 1720 | "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", 1721 | "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", 1722 | "dev": true, 1723 | "license": "MIT", 1724 | "dependencies": { 1725 | "@types/hast": "^3.0.0", 1726 | "@types/unist": "^3.0.0", 1727 | "ccount": "^2.0.0", 1728 | "comma-separated-tokens": "^2.0.0", 1729 | "hast-util-whitespace": "^3.0.0", 1730 | "html-void-elements": "^3.0.0", 1731 | "mdast-util-to-hast": "^13.0.0", 1732 | "property-information": "^7.0.0", 1733 | "space-separated-tokens": "^2.0.0", 1734 | "stringify-entities": "^4.0.0", 1735 | "zwitch": "^2.0.4" 1736 | }, 1737 | "funding": { 1738 | "type": "opencollective", 1739 | "url": "https://opencollective.com/unified" 1740 | } 1741 | }, 1742 | "node_modules/hast-util-whitespace": { 1743 | "version": "3.0.0", 1744 | "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", 1745 | "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", 1746 | "dev": true, 1747 | "license": "MIT", 1748 | "dependencies": { 1749 | "@types/hast": "^3.0.0" 1750 | }, 1751 | "funding": { 1752 | "type": "opencollective", 1753 | "url": "https://opencollective.com/unified" 1754 | } 1755 | }, 1756 | "node_modules/hookable": { 1757 | "version": "5.5.3", 1758 | "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", 1759 | "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", 1760 | "dev": true, 1761 | "license": "MIT" 1762 | }, 1763 | "node_modules/html-void-elements": { 1764 | "version": "3.0.0", 1765 | "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", 1766 | "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", 1767 | "dev": true, 1768 | "license": "MIT", 1769 | "funding": { 1770 | "type": "github", 1771 | "url": "https://github.com/sponsors/wooorm" 1772 | } 1773 | }, 1774 | "node_modules/is-what": { 1775 | "version": "4.1.16", 1776 | "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", 1777 | "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", 1778 | "dev": true, 1779 | "license": "MIT", 1780 | "engines": { 1781 | "node": ">=12.13" 1782 | }, 1783 | "funding": { 1784 | "url": "https://github.com/sponsors/mesqueeb" 1785 | } 1786 | }, 1787 | "node_modules/lit": { 1788 | "version": "3.3.0", 1789 | "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.0.tgz", 1790 | "integrity": "sha512-DGVsqsOIHBww2DqnuZzW7QsuCdahp50ojuDaBPC7jUDRpYoH0z7kHBBYZewRzer75FwtrkmkKk7iOAwSaWdBmw==", 1791 | "license": "BSD-3-Clause", 1792 | "dependencies": { 1793 | "@lit/reactive-element": "^2.1.0", 1794 | "lit-element": "^4.2.0", 1795 | "lit-html": "^3.3.0" 1796 | } 1797 | }, 1798 | "node_modules/lit-element": { 1799 | "version": "4.2.0", 1800 | "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.2.0.tgz", 1801 | "integrity": "sha512-MGrXJVAI5x+Bfth/pU9Kst1iWID6GHDLEzFEnyULB/sFiRLgkd8NPK/PeeXxktA3T6EIIaq8U3KcbTU5XFcP2Q==", 1802 | "license": "BSD-3-Clause", 1803 | "dependencies": { 1804 | "@lit-labs/ssr-dom-shim": "^1.2.0", 1805 | "@lit/reactive-element": "^2.1.0", 1806 | "lit-html": "^3.3.0" 1807 | } 1808 | }, 1809 | "node_modules/lit-html": { 1810 | "version": "3.3.0", 1811 | "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.0.tgz", 1812 | "integrity": "sha512-RHoswrFAxY2d8Cf2mm4OZ1DgzCoBKUKSPvA1fhtSELxUERq2aQQ2h05pO9j81gS1o7RIRJ+CePLogfyahwmynw==", 1813 | "license": "BSD-3-Clause", 1814 | "dependencies": { 1815 | "@types/trusted-types": "^2.0.2" 1816 | } 1817 | }, 1818 | "node_modules/magic-string": { 1819 | "version": "0.30.17", 1820 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", 1821 | "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", 1822 | "license": "MIT", 1823 | "dependencies": { 1824 | "@jridgewell/sourcemap-codec": "^1.5.0" 1825 | } 1826 | }, 1827 | "node_modules/mark.js": { 1828 | "version": "8.11.1", 1829 | "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", 1830 | "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", 1831 | "dev": true, 1832 | "license": "MIT" 1833 | }, 1834 | "node_modules/mdast-util-to-hast": { 1835 | "version": "13.2.0", 1836 | "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", 1837 | "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", 1838 | "dev": true, 1839 | "license": "MIT", 1840 | "dependencies": { 1841 | "@types/hast": "^3.0.0", 1842 | "@types/mdast": "^4.0.0", 1843 | "@ungap/structured-clone": "^1.0.0", 1844 | "devlop": "^1.0.0", 1845 | "micromark-util-sanitize-uri": "^2.0.0", 1846 | "trim-lines": "^3.0.0", 1847 | "unist-util-position": "^5.0.0", 1848 | "unist-util-visit": "^5.0.0", 1849 | "vfile": "^6.0.0" 1850 | }, 1851 | "funding": { 1852 | "type": "opencollective", 1853 | "url": "https://opencollective.com/unified" 1854 | } 1855 | }, 1856 | "node_modules/micromark-util-character": { 1857 | "version": "2.1.1", 1858 | "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", 1859 | "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", 1860 | "dev": true, 1861 | "funding": [ 1862 | { 1863 | "type": "GitHub Sponsors", 1864 | "url": "https://github.com/sponsors/unifiedjs" 1865 | }, 1866 | { 1867 | "type": "OpenCollective", 1868 | "url": "https://opencollective.com/unified" 1869 | } 1870 | ], 1871 | "license": "MIT", 1872 | "dependencies": { 1873 | "micromark-util-symbol": "^2.0.0", 1874 | "micromark-util-types": "^2.0.0" 1875 | } 1876 | }, 1877 | "node_modules/micromark-util-encode": { 1878 | "version": "2.0.1", 1879 | "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", 1880 | "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", 1881 | "dev": true, 1882 | "funding": [ 1883 | { 1884 | "type": "GitHub Sponsors", 1885 | "url": "https://github.com/sponsors/unifiedjs" 1886 | }, 1887 | { 1888 | "type": "OpenCollective", 1889 | "url": "https://opencollective.com/unified" 1890 | } 1891 | ], 1892 | "license": "MIT" 1893 | }, 1894 | "node_modules/micromark-util-sanitize-uri": { 1895 | "version": "2.0.1", 1896 | "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", 1897 | "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", 1898 | "dev": true, 1899 | "funding": [ 1900 | { 1901 | "type": "GitHub Sponsors", 1902 | "url": "https://github.com/sponsors/unifiedjs" 1903 | }, 1904 | { 1905 | "type": "OpenCollective", 1906 | "url": "https://opencollective.com/unified" 1907 | } 1908 | ], 1909 | "license": "MIT", 1910 | "dependencies": { 1911 | "micromark-util-character": "^2.0.0", 1912 | "micromark-util-encode": "^2.0.0", 1913 | "micromark-util-symbol": "^2.0.0" 1914 | } 1915 | }, 1916 | "node_modules/micromark-util-symbol": { 1917 | "version": "2.0.1", 1918 | "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", 1919 | "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", 1920 | "dev": true, 1921 | "funding": [ 1922 | { 1923 | "type": "GitHub Sponsors", 1924 | "url": "https://github.com/sponsors/unifiedjs" 1925 | }, 1926 | { 1927 | "type": "OpenCollective", 1928 | "url": "https://opencollective.com/unified" 1929 | } 1930 | ], 1931 | "license": "MIT" 1932 | }, 1933 | "node_modules/micromark-util-types": { 1934 | "version": "2.0.2", 1935 | "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", 1936 | "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", 1937 | "dev": true, 1938 | "funding": [ 1939 | { 1940 | "type": "GitHub Sponsors", 1941 | "url": "https://github.com/sponsors/unifiedjs" 1942 | }, 1943 | { 1944 | "type": "OpenCollective", 1945 | "url": "https://opencollective.com/unified" 1946 | } 1947 | ], 1948 | "license": "MIT" 1949 | }, 1950 | "node_modules/minisearch": { 1951 | "version": "7.1.2", 1952 | "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-7.1.2.tgz", 1953 | "integrity": "sha512-R1Pd9eF+MD5JYDDSPAp/q1ougKglm14uEkPMvQ/05RGmx6G9wvmLTrTI/Q5iPNJLYqNdsDQ7qTGIcNWR+FrHmA==", 1954 | "dev": true, 1955 | "license": "MIT" 1956 | }, 1957 | "node_modules/mitt": { 1958 | "version": "3.0.1", 1959 | "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", 1960 | "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", 1961 | "dev": true, 1962 | "license": "MIT" 1963 | }, 1964 | "node_modules/nanoid": { 1965 | "version": "3.3.11", 1966 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", 1967 | "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", 1968 | "funding": [ 1969 | { 1970 | "type": "github", 1971 | "url": "https://github.com/sponsors/ai" 1972 | } 1973 | ], 1974 | "license": "MIT", 1975 | "bin": { 1976 | "nanoid": "bin/nanoid.cjs" 1977 | }, 1978 | "engines": { 1979 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1980 | } 1981 | }, 1982 | "node_modules/oniguruma-to-es": { 1983 | "version": "3.1.1", 1984 | "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz", 1985 | "integrity": "sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==", 1986 | "dev": true, 1987 | "license": "MIT", 1988 | "dependencies": { 1989 | "emoji-regex-xs": "^1.0.0", 1990 | "regex": "^6.0.1", 1991 | "regex-recursion": "^6.0.2" 1992 | } 1993 | }, 1994 | "node_modules/perfect-debounce": { 1995 | "version": "1.0.0", 1996 | "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", 1997 | "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", 1998 | "dev": true, 1999 | "license": "MIT" 2000 | }, 2001 | "node_modules/picocolors": { 2002 | "version": "1.1.1", 2003 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 2004 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 2005 | "license": "ISC" 2006 | }, 2007 | "node_modules/postcss": { 2008 | "version": "8.5.3", 2009 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", 2010 | "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", 2011 | "funding": [ 2012 | { 2013 | "type": "opencollective", 2014 | "url": "https://opencollective.com/postcss/" 2015 | }, 2016 | { 2017 | "type": "tidelift", 2018 | "url": "https://tidelift.com/funding/github/npm/postcss" 2019 | }, 2020 | { 2021 | "type": "github", 2022 | "url": "https://github.com/sponsors/ai" 2023 | } 2024 | ], 2025 | "license": "MIT", 2026 | "dependencies": { 2027 | "nanoid": "^3.3.8", 2028 | "picocolors": "^1.1.1", 2029 | "source-map-js": "^1.2.1" 2030 | }, 2031 | "engines": { 2032 | "node": "^10 || ^12 || >=14" 2033 | } 2034 | }, 2035 | "node_modules/preact": { 2036 | "version": "10.26.5", 2037 | "resolved": "https://registry.npmjs.org/preact/-/preact-10.26.5.tgz", 2038 | "integrity": "sha512-fmpDkgfGU6JYux9teDWLhj9mKN55tyepwYbxHgQuIxbWQzgFg5vk7Mrrtfx7xRxq798ynkY4DDDxZr235Kk+4w==", 2039 | "dev": true, 2040 | "license": "MIT", 2041 | "funding": { 2042 | "type": "opencollective", 2043 | "url": "https://opencollective.com/preact" 2044 | } 2045 | }, 2046 | "node_modules/property-information": { 2047 | "version": "7.0.0", 2048 | "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", 2049 | "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", 2050 | "dev": true, 2051 | "license": "MIT", 2052 | "funding": { 2053 | "type": "github", 2054 | "url": "https://github.com/sponsors/wooorm" 2055 | } 2056 | }, 2057 | "node_modules/regex": { 2058 | "version": "6.0.1", 2059 | "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", 2060 | "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", 2061 | "dev": true, 2062 | "license": "MIT", 2063 | "dependencies": { 2064 | "regex-utilities": "^2.3.0" 2065 | } 2066 | }, 2067 | "node_modules/regex-recursion": { 2068 | "version": "6.0.2", 2069 | "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", 2070 | "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", 2071 | "dev": true, 2072 | "license": "MIT", 2073 | "dependencies": { 2074 | "regex-utilities": "^2.3.0" 2075 | } 2076 | }, 2077 | "node_modules/regex-utilities": { 2078 | "version": "2.3.0", 2079 | "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", 2080 | "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", 2081 | "dev": true, 2082 | "license": "MIT" 2083 | }, 2084 | "node_modules/rfdc": { 2085 | "version": "1.4.1", 2086 | "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", 2087 | "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", 2088 | "dev": true, 2089 | "license": "MIT" 2090 | }, 2091 | "node_modules/rollup": { 2092 | "version": "4.40.0", 2093 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.0.tgz", 2094 | "integrity": "sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==", 2095 | "dev": true, 2096 | "license": "MIT", 2097 | "dependencies": { 2098 | "@types/estree": "1.0.7" 2099 | }, 2100 | "bin": { 2101 | "rollup": "dist/bin/rollup" 2102 | }, 2103 | "engines": { 2104 | "node": ">=18.0.0", 2105 | "npm": ">=8.0.0" 2106 | }, 2107 | "optionalDependencies": { 2108 | "@rollup/rollup-android-arm-eabi": "4.40.0", 2109 | "@rollup/rollup-android-arm64": "4.40.0", 2110 | "@rollup/rollup-darwin-arm64": "4.40.0", 2111 | "@rollup/rollup-darwin-x64": "4.40.0", 2112 | "@rollup/rollup-freebsd-arm64": "4.40.0", 2113 | "@rollup/rollup-freebsd-x64": "4.40.0", 2114 | "@rollup/rollup-linux-arm-gnueabihf": "4.40.0", 2115 | "@rollup/rollup-linux-arm-musleabihf": "4.40.0", 2116 | "@rollup/rollup-linux-arm64-gnu": "4.40.0", 2117 | "@rollup/rollup-linux-arm64-musl": "4.40.0", 2118 | "@rollup/rollup-linux-loongarch64-gnu": "4.40.0", 2119 | "@rollup/rollup-linux-powerpc64le-gnu": "4.40.0", 2120 | "@rollup/rollup-linux-riscv64-gnu": "4.40.0", 2121 | "@rollup/rollup-linux-riscv64-musl": "4.40.0", 2122 | "@rollup/rollup-linux-s390x-gnu": "4.40.0", 2123 | "@rollup/rollup-linux-x64-gnu": "4.40.0", 2124 | "@rollup/rollup-linux-x64-musl": "4.40.0", 2125 | "@rollup/rollup-win32-arm64-msvc": "4.40.0", 2126 | "@rollup/rollup-win32-ia32-msvc": "4.40.0", 2127 | "@rollup/rollup-win32-x64-msvc": "4.40.0", 2128 | "fsevents": "~2.3.2" 2129 | } 2130 | }, 2131 | "node_modules/search-insights": { 2132 | "version": "2.17.3", 2133 | "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", 2134 | "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", 2135 | "dev": true, 2136 | "license": "MIT", 2137 | "peer": true 2138 | }, 2139 | "node_modules/shiki": { 2140 | "version": "2.5.0", 2141 | "resolved": "https://registry.npmjs.org/shiki/-/shiki-2.5.0.tgz", 2142 | "integrity": "sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==", 2143 | "dev": true, 2144 | "license": "MIT", 2145 | "dependencies": { 2146 | "@shikijs/core": "2.5.0", 2147 | "@shikijs/engine-javascript": "2.5.0", 2148 | "@shikijs/engine-oniguruma": "2.5.0", 2149 | "@shikijs/langs": "2.5.0", 2150 | "@shikijs/themes": "2.5.0", 2151 | "@shikijs/types": "2.5.0", 2152 | "@shikijs/vscode-textmate": "^10.0.2", 2153 | "@types/hast": "^3.0.4" 2154 | } 2155 | }, 2156 | "node_modules/source-map-js": { 2157 | "version": "1.2.1", 2158 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 2159 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 2160 | "license": "BSD-3-Clause", 2161 | "engines": { 2162 | "node": ">=0.10.0" 2163 | } 2164 | }, 2165 | "node_modules/space-separated-tokens": { 2166 | "version": "2.0.2", 2167 | "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", 2168 | "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", 2169 | "dev": true, 2170 | "license": "MIT", 2171 | "funding": { 2172 | "type": "github", 2173 | "url": "https://github.com/sponsors/wooorm" 2174 | } 2175 | }, 2176 | "node_modules/speakingurl": { 2177 | "version": "14.0.1", 2178 | "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", 2179 | "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", 2180 | "dev": true, 2181 | "license": "BSD-3-Clause", 2182 | "engines": { 2183 | "node": ">=0.10.0" 2184 | } 2185 | }, 2186 | "node_modules/stringify-entities": { 2187 | "version": "4.0.4", 2188 | "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", 2189 | "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", 2190 | "dev": true, 2191 | "license": "MIT", 2192 | "dependencies": { 2193 | "character-entities-html4": "^2.0.0", 2194 | "character-entities-legacy": "^3.0.0" 2195 | }, 2196 | "funding": { 2197 | "type": "github", 2198 | "url": "https://github.com/sponsors/wooorm" 2199 | } 2200 | }, 2201 | "node_modules/superjson": { 2202 | "version": "2.2.2", 2203 | "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz", 2204 | "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", 2205 | "dev": true, 2206 | "license": "MIT", 2207 | "dependencies": { 2208 | "copy-anything": "^3.0.2" 2209 | }, 2210 | "engines": { 2211 | "node": ">=16" 2212 | } 2213 | }, 2214 | "node_modules/tabbable": { 2215 | "version": "6.2.0", 2216 | "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", 2217 | "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", 2218 | "dev": true, 2219 | "license": "MIT" 2220 | }, 2221 | "node_modules/trim-lines": { 2222 | "version": "3.0.1", 2223 | "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", 2224 | "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", 2225 | "dev": true, 2226 | "license": "MIT", 2227 | "funding": { 2228 | "type": "github", 2229 | "url": "https://github.com/sponsors/wooorm" 2230 | } 2231 | }, 2232 | "node_modules/unist-util-is": { 2233 | "version": "6.0.0", 2234 | "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", 2235 | "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", 2236 | "dev": true, 2237 | "license": "MIT", 2238 | "dependencies": { 2239 | "@types/unist": "^3.0.0" 2240 | }, 2241 | "funding": { 2242 | "type": "opencollective", 2243 | "url": "https://opencollective.com/unified" 2244 | } 2245 | }, 2246 | "node_modules/unist-util-position": { 2247 | "version": "5.0.0", 2248 | "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", 2249 | "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", 2250 | "dev": true, 2251 | "license": "MIT", 2252 | "dependencies": { 2253 | "@types/unist": "^3.0.0" 2254 | }, 2255 | "funding": { 2256 | "type": "opencollective", 2257 | "url": "https://opencollective.com/unified" 2258 | } 2259 | }, 2260 | "node_modules/unist-util-stringify-position": { 2261 | "version": "4.0.0", 2262 | "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", 2263 | "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", 2264 | "dev": true, 2265 | "license": "MIT", 2266 | "dependencies": { 2267 | "@types/unist": "^3.0.0" 2268 | }, 2269 | "funding": { 2270 | "type": "opencollective", 2271 | "url": "https://opencollective.com/unified" 2272 | } 2273 | }, 2274 | "node_modules/unist-util-visit": { 2275 | "version": "5.0.0", 2276 | "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", 2277 | "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", 2278 | "dev": true, 2279 | "license": "MIT", 2280 | "dependencies": { 2281 | "@types/unist": "^3.0.0", 2282 | "unist-util-is": "^6.0.0", 2283 | "unist-util-visit-parents": "^6.0.0" 2284 | }, 2285 | "funding": { 2286 | "type": "opencollective", 2287 | "url": "https://opencollective.com/unified" 2288 | } 2289 | }, 2290 | "node_modules/unist-util-visit-parents": { 2291 | "version": "6.0.1", 2292 | "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", 2293 | "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", 2294 | "dev": true, 2295 | "license": "MIT", 2296 | "dependencies": { 2297 | "@types/unist": "^3.0.0", 2298 | "unist-util-is": "^6.0.0" 2299 | }, 2300 | "funding": { 2301 | "type": "opencollective", 2302 | "url": "https://opencollective.com/unified" 2303 | } 2304 | }, 2305 | "node_modules/vfile": { 2306 | "version": "6.0.3", 2307 | "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", 2308 | "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", 2309 | "dev": true, 2310 | "license": "MIT", 2311 | "dependencies": { 2312 | "@types/unist": "^3.0.0", 2313 | "vfile-message": "^4.0.0" 2314 | }, 2315 | "funding": { 2316 | "type": "opencollective", 2317 | "url": "https://opencollective.com/unified" 2318 | } 2319 | }, 2320 | "node_modules/vfile-message": { 2321 | "version": "4.0.2", 2322 | "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", 2323 | "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", 2324 | "dev": true, 2325 | "license": "MIT", 2326 | "dependencies": { 2327 | "@types/unist": "^3.0.0", 2328 | "unist-util-stringify-position": "^4.0.0" 2329 | }, 2330 | "funding": { 2331 | "type": "opencollective", 2332 | "url": "https://opencollective.com/unified" 2333 | } 2334 | }, 2335 | "node_modules/vite": { 2336 | "version": "5.4.18", 2337 | "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.18.tgz", 2338 | "integrity": "sha512-1oDcnEp3lVyHCuQ2YFelM4Alm2o91xNoMncRm1U7S+JdYfYOvbiGZ3/CxGttrOu2M/KcGz7cRC2DoNUA6urmMA==", 2339 | "dev": true, 2340 | "license": "MIT", 2341 | "dependencies": { 2342 | "esbuild": "^0.21.3", 2343 | "postcss": "^8.4.43", 2344 | "rollup": "^4.20.0" 2345 | }, 2346 | "bin": { 2347 | "vite": "bin/vite.js" 2348 | }, 2349 | "engines": { 2350 | "node": "^18.0.0 || >=20.0.0" 2351 | }, 2352 | "funding": { 2353 | "url": "https://github.com/vitejs/vite?sponsor=1" 2354 | }, 2355 | "optionalDependencies": { 2356 | "fsevents": "~2.3.3" 2357 | }, 2358 | "peerDependencies": { 2359 | "@types/node": "^18.0.0 || >=20.0.0", 2360 | "less": "*", 2361 | "lightningcss": "^1.21.0", 2362 | "sass": "*", 2363 | "sass-embedded": "*", 2364 | "stylus": "*", 2365 | "sugarss": "*", 2366 | "terser": "^5.4.0" 2367 | }, 2368 | "peerDependenciesMeta": { 2369 | "@types/node": { 2370 | "optional": true 2371 | }, 2372 | "less": { 2373 | "optional": true 2374 | }, 2375 | "lightningcss": { 2376 | "optional": true 2377 | }, 2378 | "sass": { 2379 | "optional": true 2380 | }, 2381 | "sass-embedded": { 2382 | "optional": true 2383 | }, 2384 | "stylus": { 2385 | "optional": true 2386 | }, 2387 | "sugarss": { 2388 | "optional": true 2389 | }, 2390 | "terser": { 2391 | "optional": true 2392 | } 2393 | } 2394 | }, 2395 | "node_modules/vitepress": { 2396 | "version": "1.6.3", 2397 | "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.6.3.tgz", 2398 | "integrity": "sha512-fCkfdOk8yRZT8GD9BFqusW3+GggWYZ/rYncOfmgcDtP3ualNHCAg+Robxp2/6xfH1WwPHtGpPwv7mbA3qomtBw==", 2399 | "dev": true, 2400 | "license": "MIT", 2401 | "dependencies": { 2402 | "@docsearch/css": "3.8.2", 2403 | "@docsearch/js": "3.8.2", 2404 | "@iconify-json/simple-icons": "^1.2.21", 2405 | "@shikijs/core": "^2.1.0", 2406 | "@shikijs/transformers": "^2.1.0", 2407 | "@shikijs/types": "^2.1.0", 2408 | "@types/markdown-it": "^14.1.2", 2409 | "@vitejs/plugin-vue": "^5.2.1", 2410 | "@vue/devtools-api": "^7.7.0", 2411 | "@vue/shared": "^3.5.13", 2412 | "@vueuse/core": "^12.4.0", 2413 | "@vueuse/integrations": "^12.4.0", 2414 | "focus-trap": "^7.6.4", 2415 | "mark.js": "8.11.1", 2416 | "minisearch": "^7.1.1", 2417 | "shiki": "^2.1.0", 2418 | "vite": "^5.4.14", 2419 | "vue": "^3.5.13" 2420 | }, 2421 | "bin": { 2422 | "vitepress": "bin/vitepress.js" 2423 | }, 2424 | "peerDependencies": { 2425 | "markdown-it-mathjax3": "^4", 2426 | "postcss": "^8" 2427 | }, 2428 | "peerDependenciesMeta": { 2429 | "markdown-it-mathjax3": { 2430 | "optional": true 2431 | }, 2432 | "postcss": { 2433 | "optional": true 2434 | } 2435 | } 2436 | }, 2437 | "node_modules/vitepress-plugin-comment-with-giscus": { 2438 | "version": "1.1.15", 2439 | "resolved": "https://registry.npmjs.org/vitepress-plugin-comment-with-giscus/-/vitepress-plugin-comment-with-giscus-1.1.15.tgz", 2440 | "integrity": "sha512-1DJjgN+7SYvn5ZkjuSXPmz7nlqfcrh4qCGGviiZghA2ELXnaO2m9WY7m+RisPSaqCn90xqe0JbO2T4NMq8iUBg==", 2441 | "license": "ISC", 2442 | "dependencies": { 2443 | "@giscus/vue": "^2.2.8" 2444 | } 2445 | }, 2446 | "node_modules/vue": { 2447 | "version": "3.5.13", 2448 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", 2449 | "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", 2450 | "license": "MIT", 2451 | "dependencies": { 2452 | "@vue/compiler-dom": "3.5.13", 2453 | "@vue/compiler-sfc": "3.5.13", 2454 | "@vue/runtime-dom": "3.5.13", 2455 | "@vue/server-renderer": "3.5.13", 2456 | "@vue/shared": "3.5.13" 2457 | }, 2458 | "peerDependencies": { 2459 | "typescript": "*" 2460 | }, 2461 | "peerDependenciesMeta": { 2462 | "typescript": { 2463 | "optional": true 2464 | } 2465 | } 2466 | }, 2467 | "node_modules/zwitch": { 2468 | "version": "2.0.4", 2469 | "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", 2470 | "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", 2471 | "dev": true, 2472 | "license": "MIT", 2473 | "funding": { 2474 | "type": "github", 2475 | "url": "https://github.com/sponsors/wooorm" 2476 | } 2477 | } 2478 | } 2479 | } 2480 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "vitepress": "^1.6.3" 4 | }, 5 | "scripts": { 6 | "docs:dev": "vitepress dev docs", 7 | "docs:build": "vitepress build docs", 8 | "docs:preview": "vitepress preview docs" 9 | }, 10 | "dependencies": { 11 | "vitepress-plugin-comment-with-giscus": "^1.1.15" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "github": { 3 | "silent": true 4 | } 5 | } 6 | --------------------------------------------------------------------------------