From bad6dccf4ef788cdfe5841bb6a7dcf5e6602b0ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=95=88=ED=94=BC=EA=B3=A4=28anpigon=29?= Date: Wed, 6 Apr 2022 16:26:12 +0900 Subject: [PATCH] Initial commit --- .editorconfig | 9 + .eslintignore | 2 + .eslintrc | 23 + .github/workflows/release.yml | 85 + .gitignore | 22 + .npmrc | 1 + .prettierrc | 18 + .versionrc | 9 + CHANGELOG.md | 16 + README.md | 41 + esbuild.config.mjs | 54 + manifest.json | 10 + obsidian-book-search-plugin.zip | Bin 0 -> 71348 bytes package-lock.json | 6916 ++++++++++++++++++++ package.json | 39 + src/apis/google_books_api.ts | 78 + src/apis/models/google_books.model.ts | 518 ++ src/book_search_modal.ts | 74 + src/book_suggest_modal.ts | 44 + src/editor/corsor_jumper.ts | 24 + src/main.ts | 86 + src/models/book.model.ts | 61 + src/settings/settings.ts | 42 + src/settings/suggesters/FolderSuggester.ts | 33 + src/settings/suggesters/suggest.ts | 197 + src/utils/utils.ts | 17 + styles.css | 1 + tsconfig.json | 23 + version-bump.mjs | 14 + versions.json | 4 + 30 files changed, 8461 insertions(+) create mode 100644 .editorconfig create mode 100644 .eslintignore create mode 100644 .eslintrc create mode 100644 .github/workflows/release.yml create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 .prettierrc create mode 100644 .versionrc create mode 100644 CHANGELOG.md create mode 100644 README.md create mode 100644 esbuild.config.mjs create mode 100644 manifest.json create mode 100644 obsidian-book-search-plugin.zip create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/apis/google_books_api.ts create mode 100644 src/apis/models/google_books.model.ts create mode 100644 src/book_search_modal.ts create mode 100644 src/book_suggest_modal.ts create mode 100644 src/editor/corsor_jumper.ts create mode 100644 src/main.ts create mode 100644 src/models/book.model.ts create mode 100644 src/settings/settings.ts create mode 100644 src/settings/suggesters/FolderSuggester.ts create mode 100644 src/settings/suggesters/suggest.ts create mode 100644 src/utils/utils.ts create mode 100644 styles.css create mode 100644 tsconfig.json create mode 100644 version-bump.mjs create mode 100644 versions.json diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..8952366 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +# top-most EditorConfig file +root = true + +[*] +charset = utf-8 +insert_final_newline = true +indent_style = tab +indent_size = 4 +tab_width = 4 diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..32909b2 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +npm node_modules +build \ No newline at end of file diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..0807290 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,23 @@ +{ + "root": true, + "parser": "@typescript-eslint/parser", + "env": { "node": true }, + "plugins": [ + "@typescript-eslint" + ], + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:@typescript-eslint/recommended" + ], + "parserOptions": { + "sourceType": "module" + }, + "rules": { + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": ["error", { "args": "none" }], + "@typescript-eslint/ban-ts-comment": "off", + "no-prototype-builtins": "off", + "@typescript-eslint/no-empty-function": "off" + } + } \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..54dfb96 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,85 @@ +name: Release Obsidian plugin + +on: + push: + tags: + - '*' + +env: + PLUGIN_NAME: obsidian-book-search + +jobs: + build: + runs-on: ubuntu-20.04 + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: '16' + + - name: Build + id: build + run: | + npm ci + npm run build + mkdir ${{ env.PLUGIN_NAME }} + cp main.js manifest.json styles.css ${{ env.PLUGIN_NAME }} + zip -r ${{ env.PLUGIN_NAME }}.zip ${{ env.PLUGIN_NAME }} + ls + echo "::set-output name=tag_name::$(git tag --sort version:refname | tail -n 1)" + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + VERSION: ${{ github.ref }} + with: + tag_name: ${{ github.ref }} + release_name: ${{ github.ref }} + draft: false + prerelease: false + + - name: Upload zip file + id: upload-zip + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./${{ env.PLUGIN_NAME }}.zip + asset_name: ${{ env.PLUGIN_NAME }}-${{ steps.build.outputs.tag_name }}.zip + asset_content_type: application/zip + + - name: Upload main.js + id: upload-main + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./main.js + asset_name: main.js + asset_content_type: text/javascript + + - name: Upload manifest.json + id: upload-manifest + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./manifest.json + asset_name: manifest.json + asset_content_type: application/json + + - name: Upload styles.css + id: upload-css + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./styles.css + asset_name: styles.css + asset_content_type: text/css diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e09a007 --- /dev/null +++ b/.gitignore @@ -0,0 +1,22 @@ +# vscode +.vscode + +# Intellij +*.iml +.idea + +# npm +node_modules + +# Don't include the compiled main.js file in the repo. +# They should be uploaded to GitHub releases instead. +main.js + +# Exclude sourcemaps +*.map + +# obsidian +data.json + +# Exclude macOS Finder (System Explorer) View States +.DS_Store diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..b973752 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +tag-version-prefix="" \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..c5b37ba --- /dev/null +++ b/.prettierrc @@ -0,0 +1,18 @@ +{ + "arrowParens": "avoid", + "bracketSpacing": true, + "htmlWhitespaceSensitivity": "css", + "insertPragma": false, + "jsxBracketSameLine": false, + "jsxSingleQuote": false, + "printWidth": 80, + "proseWrap": "preserve", + "quoteProps": "as-needed", + "requirePragma": false, + "semi": true, + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "all", + "useTabs": false, + "vueIndentScriptAndStyle": false +} diff --git a/.versionrc b/.versionrc new file mode 100644 index 0000000..0b7f5a6 --- /dev/null +++ b/.versionrc @@ -0,0 +1,9 @@ +{ + "types": [ + {"type":"feat","section":"Features"}, + {"type":"fix","section":"Bug Fixes"}, + {"type":"test","section":"Tests", "hidden": true}, + {"type":"build","section":"Build System", "hidden": true}, + {"type":"ci","hidden":true} + ] +} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..fdaeb58 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,16 @@ +# Changelog + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +### [1.0.7](https://github.dev/anpigon/obsidian-book-search-plugin/compare/1.0.6...1.0.7) (2022-04-06) + +### [1.0.6](https://github.dev/anpigon/obsidian-book-search-plugin/compare/1.0.5...1.0.6) (2022-04-06) + +### [1.0.5](https://github.dev/anpigon/obsidian-book-search-plugin/compare/1.0.4...1.0.5) (2022-04-06) + +### [1.0.4](https://github.dev/anpigon/obsidian-book-search-plugin/compare/0.0.3...1.0.4) (2022-04-06) + +### [1.0.3](https://github.dev/anpigon/obsidian-book-search-plugin/compare/v1.0.2...v1.0.3) (2022-04-06) +- You can create notes by searching for a book. +### 1.0.2 (2022-04-06) +- first release diff --git a/README.md b/README.md new file mode 100644 index 0000000..e45c4b3 --- /dev/null +++ b/README.md @@ -0,0 +1,41 @@ +# Obsidian Book Search Plugin + +
+ +## Description + +Use to query book using : + +- A book title, author, publisher or ISBN (10 or 13). + +Use Google Books API to get the book information. + +
+ +## How to use + +1. Set the folder to new file location in plugin options. + ![](https://user-images.githubusercontent.com/3969643/161973189-e4a0b5aa-9e86-48b5-9bc9-42c3bbfc2589.png) + +2. Excute the command "Create new book note". + ![](https://user-images.githubusercontent.com/3969643/161973483-ab007598-e0b8-433f-9697-75ee0ef74195.png) + +3. Search for books by keywords. + ![](https://user-images.githubusercontent.com/3969643/161973979-51f642c9-626a-4015-a7e9-dfdbe6ec2cbc.png) + +4. Select the book from the search results. + ![](https://user-images.githubusercontent.com/3969643/161974310-13c3b39b-51dc-472f-b787-db64f74caf74.png) + +5. Voila! A note has been created. + ![](https://user-images.githubusercontent.com/3969643/161974593-1b7bfe69-cb9d-47d7-a43d-1d725295a122.png) + +
+ +## Installation + + +Download the latest version of the zip file from the [release](https://github.com/anpigon/obsidian-book-search-plugin/releases). + +And must be cloned or unzipped into your vault's .`obsidian/plugins/` directory, then enabled in the Obsidian configuration. + +It's not yet registered as a standard community plugin for downloading or updating within Obsidian. diff --git a/esbuild.config.mjs b/esbuild.config.mjs new file mode 100644 index 0000000..f1fddbd --- /dev/null +++ b/esbuild.config.mjs @@ -0,0 +1,54 @@ +import esbuild from 'esbuild'; +import process from 'process'; +import builtins from 'builtin-modules'; + +const banner = `/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ +`; + +const prod = process.argv[2] === 'production'; + +esbuild + .build({ + banner: { + js: banner, + }, + entryPoints: ['src/main.ts'], + bundle: true, + external: [ + 'obsidian', + 'electron', + '@codemirror/autocomplete', + '@codemirror/closebrackets', + '@codemirror/collab', + '@codemirror/commands', + '@codemirror/comment', + '@codemirror/fold', + '@codemirror/gutter', + '@codemirror/highlight', + '@codemirror/history', + '@codemirror/language', + '@codemirror/lint', + '@codemirror/matchbrackets', + '@codemirror/panel', + '@codemirror/rangeset', + '@codemirror/rectangular-selection', + '@codemirror/search', + '@codemirror/state', + '@codemirror/stream-parser', + '@codemirror/text', + '@codemirror/tooltip', + '@codemirror/view', + ...builtins, + ], + format: 'cjs', + watch: !prod, + target: 'es2016', + logLevel: 'info', + sourcemap: prod ? false : 'inline', + treeShaking: true, + outfile: 'main.js', + }) + .catch(() => process.exit(1)); diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..59aa589 --- /dev/null +++ b/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "obsidian-book-search-plugin", + "name": "Book Search", + "version": "1.0.7", + "minAppVersion": "0.12.0", + "description": "This is a sample plugin for Obsidian. This plugin demonstrates some of the capabilities of the Obsidian API.", + "author": "Obsidian", + "authorUrl": "https://obsidian.md", + "isDesktopOnly": false +} diff --git a/obsidian-book-search-plugin.zip b/obsidian-book-search-plugin.zip new file mode 100644 index 0000000000000000000000000000000000000000..0de52684f2c2c135a96979638cb7b5ba106b40b9 GIT binary patch literal 71348 zcmV(?K-a%eO9KQH00;mG08F)pQ~&?~000000NEJ?00#gd0BvDuZZ2wbRa6ZC2f>(4 zV#1hBV!@bAVs&^6009K`0RR956aWAK+`UEl&#ZVxD-2U%3B682lLW@23;m&vZSmYWR85w(KE&uw{*|&u{UG}3*X5sny7$Jp zo15;~_a=VsL+-fq#qUl^?Dup1LqQPvSmuu>bJ48tPmUiVEZz2#u4=8y zu{G9>gAu@!?sw!3{Uoa+Rcd{pd=eku8qKL}G9UTJx1#01OZXtFbZhYQ0U(9{Y-FxBGU(Zd(Q$P1@Net=FM)7!} z1}o;gFr*Q`{*<$(6!X1@n%j7sE8q|jEI$`S)D6mW4oI*GLI6M3vE4Nmd@knvXgc)A zUMJMS`X(S7`#UMvh6G2onCroANhpB=3%n-xkALJ4fk08Bw7-tEA!|{H`DFI2|G@Rr` ze;4AQvBX<}mdj_oh8hcjKNot8x^03lNTeYQONat&SyG(|@44JJ_;2h_rsF8b0MIsL z5-X|`D;MbJebkN>EV5Ax6G;F0LoS+zVeX?m;|2ZfDCFkWb6>v|6}BV^ATIfzB}M31 zD%&Deiq;>UXe{xjE>gsq#hH;9bWrS)1W6}eFPTTU8L%wmY(*>@_n~t%fggQ8f>D6g z*f@-UcLENELE;w*V?T+*dpJ2`ABk7C&E;^8+i7?kgrVQVSqM(8K@Oms%fEBEWa5ts za@JDh&nCPN?L7YPTdwO(x`SN7U(!0Vsi90Zqkq4>mvFEauL5H-7{?Dk3Jx3_VVKeU zvr;dPeAsr5#KNq^fm;^{F4kr|Ct1F)EZ@f=;6KT~|4FcR zJpP;W)2Tn67yg6)f5~KCbYcr^|ByEobE4<3xB-k5b#m^;Q8LLf+%^0Jb_!L5dEke= z900WIPxw6VH3?xfFM+W4!urG?LeCGmvQF@HHi#eWjK}e~kUxr%mT8vTcpCLedFw35 zwU~1RIDBd70qFuiBec|`+Zad@i3;T0(3{laadX=5`w1?$pc;u&sm>(AvSgqj4*k-D zH;#CnfQi9RWqb@l{>F~fo0~@k1d$Dj5*LdqW!&ied%bAIC<>BJR4L!|yopz2KUV0+ zd#(@Qn57`*nnM#v!Ff1&+*SoLS-B(2Sl?B~7b$#VC7Dd-@ z#-6$eO6@NRN7%5N4vxr95Dr7UR3ipeizgat`SA-TD0vB~^mmbpz3F5SkJtI!2SGAn z+t13ACDsZ^*zbe2k#5Ip0$(&8O*>(b4E!;lOa5lnbZk$&z5rzee{R85v+rh+zn=4}$0pNb!SIgYM&?mn(yCy752^O^2Px3qTFm^rQ|{=JVhF z0%1 zJ2mUHXC+Pt8rAC+D?f4Z%;^R<(m^S-3o!X)NviTc<4;sm@!wMDNBzlw)bz3_ye@yH z6LPe?!S!c83F8kqh~2khv;z$AalZYf!APBmRWg!=Q~6i^%~wWmbP&Gf|5_@2iG!$s zh&S1p!Sr7tTo}OvWAH*I>2Q-|k6mxOZoOXu6L?Abr zf+dYr99Z0ol4t}oi9ZFeW$+`6`c5^zJ#L*e*wD|@jn;`0! zN*ct9?%djurip3jNzcl+q`+`&jHR{Km6N437UU>ct@k484jp*whB45t-qy4^q&!Y& z;2qqtEf}ifb?*xPJ;`&fWWbhDK?%)%@-$HEyn>Tv)QL^gmf*iQI)-y?v52quFC2-< zP6+GxKx4?$&dRx`Y$pUUQ6=}!1a=HgEjwRy)bjG=vSCTA4C1ioqirKvcIN0ec!6zZBAb}J|QLhDMX*9(JB$GL6mO&30crITlm;X2K zY7ZoNq5v=Gi%`;2FGXp#1Z1%_@S;AL*~(~D#0WETn^1t`^?EzFlPIsy>MP^{E4}z3 z0_3tiOcO(?gGwIOE-l&n!}#^qAPAv_3jqs}a~pT3iJ%oH%A5WK&!vWJTmn11g+gZ% z(Td?;`%G_nQP&R{hQa_Sx}b2wPsWmSEJ4x2g`_hMz^7xX<2#rJ%C;t6!Jbd&mCh5Q zO!I0QlX;^X2EN0WJh5A@BpkC`gF&_G^!t|3c8jt%%MDYsHGT04bZB6V#Pd|QJU zkg!njsSYr``eBGhHVlbI_NTxyuy3W@Cj~>e>6@>{1#2gSa{;shi+2$VmNShWY~q9X z0nZTbBM^Kyoc4S^i&;soOzO!L{a1CBs{KoP+jKXEjq`Pj2Zt_#MQ0KsEf9}_T&=-= z1tg+{Dgc$en0xcpEai&1V~A}QGtrw1&A(udg2msK(gR5gM?xzL2$m5aMix7O0fs0R z{1C~LV3_GUc3`7#}jkffZf;@xvu#nu!D+o!Q4n{Y4y16ueEZQ=im zbs{Wh@e#@q8t)(meF<0lTD_KSuLl+PehZ_0ALPs>&=c;G5eQo}A~$4{gHDd-4XXaANlrY_+7Zr^BE*Q8C-|H3B*vOcazRSh| zneESxZ*M^`A=25X!j$|iS20_&eMgL|L0Oq-$9|b2Tb82qqg^Rz(-w1Oi^XV!mN3Dd z$Uicu?2ngtY}KIbF!7`aJGU)UrQ3cBXupFBHhofx!|A(pYfc=0&s50D7*^an2t{aY%-e|Zt` zwHS-=Uoj#`3erm{3ILVYFk6vNRAeI;X{^tzLo)Fw)|sb2_$VM(un7L)1>G#m%xslcKw22B5>}yMW%`mrIEy$4^)-lKmlheT+0@4+VXGn@c#)VT31;C zi201Zg<|gdGiREkMF3uZ7PFY3LVw)5&r9D8vkS_XfZy?NfnLITfsv;UebdW!c;V#AjDHwU}CvWf|svfjL8bx+ezXT9* zk9^H11K1NfDr(t9T5(Y=vZyVoNbnaG$VDB%A_JzVP5=3MyrLHm-%ck%m@I=3JA%d- z@kidFM=nIU^5JWw!OK8d64j-Mw@1wr4Nya)1my_@uJDq*2*3-F9Pxt<9xE;2NXoN{ zzl77-lKv0WUXL_jV}PGH@S3j{DpJ zHvee;7Lj?0P-7+-Q!yWc|o$nwoF4FF7Nmu;uS1fp<}qj zYu=kM<-`>6t==8hW7o?5-*iCs&JGV=0gTq|)c_e|7(g`#9!%AU4Y!o~BMm{mL*r_A^N?0-#F88aJ4dG4T*mkB9 z;-{>+Dsp%6CF)JMSnK!Fq4~2(my-R#a6h~FqSD`W?VaiF92;QQ1pP>|N?KTvt(Ggo zI@;7iGEi1kQ!?EpoFdjN1XMrk1_y5h1j~Hjn$aP^8vDce-ro?T@TsIR0__st(G8Sd zt4}efW}_^kk023%w=tKaY2AF&0w|K`{M%d1hC#}zx(TkTD2}x1D3}CZ$mmptQyIOl zOPDDi6UJZX6cCTd!vjN&F+w^QAt2OR!P+n9MFFU`#_ypw?gtSSu|@DW?RXqNxTec{ zog@wcKSpz@gJKTYPdu7vQjAHdCAJ_zKgObY9br>HJ{XqO+llz0H8O!Nh+-iO)Y1(C z8^n@bl5(xlU(O+(e~e$nBQzGo^HKvnDOQ7*Vb;oF<)D6aF|TzKQLJ<+H7$W@OrKKM zsU8m4h|j8@V^()9sy@qn5}iBoR`L)QVg06O;??Xg%YE@|Cint2C@Y`C$W-GD*E%vE zq8KIYZn%QRnF;O~o@3R3n1LTrT#+S9V!;S?{B>a-V970b5D2@vM~WLl!~q^sZlw! z>0z(TVF%Psjm!I)18bs)jYYt$=M-Sjp8?IpG8>gQU_V5QE0G^H;??MAGwa4$=ds?G zkIo!qya9L1nIkamgX+l@XZD|ESIr$j3GVjd<8c!}2yKh)*9>0-EaZ z-bIP9m*$ENU{mE@npJ1VxlRG~`DWFwa33~XdOtjZI4xUGTx#@g_PZ7wR7bZ&>K=mI##0(!BLuS5-C zC=L#c2!fp;#Tth)V`+ORePVb#^J&4*;X1`asosu(Dinx%nTu*wH6SnL81e;*?;iO0Ze~|xN;=!YW zTLJyohg|tpcog0^7p&=OC%lD%@~6rAkLvImPC#|2d%S2#Isa6d{7Z9Cy?AXWk}mCK zsTy-dcs`ttUvhH|Cd1J7aQVs!r_r@oBUAW+pu(7hvM4uCOu;zS4iw^P;{Id8)`E?B z6{1*7k|D)L)fpUqy*`bw1?E!bnJNj-0Kc3U%+k(7<}P>QHP!&K?;C6}{t6;@GmJ4^ z&z8_ZQUinIHb%`n^6rB^UGJGD{&=I0gWFjm?A!s2)G5#0l8YK0djFDvDvoYn{ z8-1BF3w?>LyD+G;bzZiWBuuTyVpW36tM&^~okF(K7)hC#jwPXf$T&D^EgBJP9py62 z!L(meTHv%?T9_EoheLc_v$I&lU~X@o!5vK){;5=HTA3S>dLM;MXk40%y(qzib`~Xx z;>f4FrdS7OD;fEe9pI?t0-vFO1b?whs=(&Okhl%qvhvQhtj_wSAWu<;h87{!4OeLP)+$ctv`0ipOh3Tc+=eO3C@HE&_`p`Eb@sp- zW^%FjisX!5bSMo`tydEfrijOAVI4bki3MGW*=Im#jHc`4Hk=00n@}pT#kujKc65|p zy)b96v1;*e19TxDGT61$3aT%2zrdInDBhR>)sN$0ra#EpD8nywO^GB$nLDBmsMa2J zF!b}!(9xft=U)c)LogWxkpUztDhz{2#1k+aKC2p_K>=?8|G%KOG6M>1utRUQ6?(%_ z)}Rzj0fNk&T8qrx=l(@yux9#aJ$L`&ovMxfWY7fR$ladS9$D1|W946!C!%b49?GVl zp{zR<$}h1Mxj)Yz_x%&EhgQ4;%yczadfG1oX44Uj_ugHrEauD+UIwo}8+lRhEZ*~y z!J#)YfVJuby`Z<*fD;Q+p7#Ok#9un#_C714*9t^R{d=7e@CL*PxTpQafmw>T$iyxK z*XVQ(g4wdbcqIaF6tIdyde2yV13gXr9(PW8jzwfm7U06^ zl>JZ81AT0P>Hw>jnx^tvj^v13e z|CLR>nY$@>2d^_+ispXQ+YWATB{|T^E6Lz7pg;P|lJFdrIK$`MTZ^=0vEGR_q2V<8 zA5Zw?<g)*1+U(O6N25Jtt0?7quBYQg%aXl#e$4QcX&11Qi#+8^~F$WK;qhNn-8# zc;o3TZfMz~Vn>#9RfYkMB>1h710G<52Cq4deAWn|DxJl&%(sf{*uK8ChhVhx*#yrV zgn?xZgoVGQS7RCtRa^OC?KSO3@C=QBRmOqAsCeib?}ocrEXGwqm^kaM#SGY;LzdCB z#2}RE>|z~nCFss>u5^>?GxAMrW?!|r{SE*9Mx`kTJ|km|mPAN*k%30!jMw;L!CQ9v z-cr}k$R_Pxf?t}0yHX)_Yl;h8s}mVEm=!54w#7n>r=`$Mq9&BGdmHwNcJTA;)F}zz zcq+r04tJX|So+-#dY+?j{mThY1jKj%eyJ|L!sPOz-m+7)A$egXUE zEY3|6pVu&)U=pr3$^{d8BFr3SGVmrjbWGqB(6N{E66VqNS?3a%QtYmME-x=#X^a0^ zMoXLsHz{dJN0W}Wr_mwK#=n0_a)0qj{!++c;S~0WozLX}qC@y2Gge{Kn@jT%d|h*N zONo(@fk7ZI%)OvwZ<%^QyY!Ptx>y&7-Oj!+#9RKeUR}T40e&=L&Bk=!`S{)+--ZCl z%hNPk;--OZ?#YUmq-Ru~ot~jA3M0`(SQgU=7LI0^NS|XlZ*=2>kio1=RUiyZRl?Ke z=(nMFQ^=m9c5}Xc(y(;!nNXc)#oS!{Jy!wZh{Te}i^j6vXw1q=J^w!F`X|B64;zR* z8U42-tt@X~mirYuW6l7Mfznc-9lK+%Ift-XR($Ps|k%8CaB*qgGuTGY(J_} zY={%g{^e?>UWG;al?qv_E@H?#E3#6S6uBVO{k#%lR*B|=%lH!~^E6Qm5H60J^`lJv5StShR& z=h_%^PF-4E<`|Ot5X2Q_FPqD=jb^=;KQ%JrOp;(c|T0YQrQ!v&nr6eOLHcQ7W@dZ|=ai9-m z7HRofoQ{~75Kt;Ixgr+;V+1f#Y73F*pd4BJeUMDOuq7`1eRLFxw48NgplgL%nHW6J zz5O6Tc&qVWEm4QH`}ISLA%4tNV2Zb?v^6)@+$c5+8G4?BOiHQKAyl}${IR%XsZkax zB>_rI&J-puO-w$hR6%U^EJVtnYdjprkxb;b+>gxL$j=mWs!CY|D^yC%lFq;1iL^nT zar27_Y2D;CeEXfrx8E_oO^m}_xy~<5Rl)EZr@gK^UW#B-8-0Z_Z4_S95kwQ3B*I6$ zt-zi-b2Yr=4KEio)WX1E)@N#8EGG`fq4ps@!-ls(XLv7k1kxFQ%-N46nn|`>>1DRW zOXDesmh7CW7b33e#9TFnIu3&yE!7kPXA7GfXmr$Du`5GeCv|hx?W0(A`zTg3eH1!v zYL1GOy64af-9zZ=6rHbicgvzG)>KI`zfvZ3Ju}^5(QIlAS!8LZVm4DZwbfU5=S4H? zEd>+M&2b9jAOR2$6MC5|9m8q#FO?jf>B_AV?K(@e5-oTnm)-YQA>AUs?*F-z#6vCU zmA+;ovm$LER8Uy<5l(*=1G2pl^r-4}UN|GR{Rw+#d8^sfhEH-BxS8bek^M;y-#q4i zh+9yB;s=hCPsPy`)|Cv?Pa=@~7pElrHh_m9 z;b{20dNPb-kfYjCiul49yPSgKC%y)A?sgmxX;xSZ0WJIGdVV+b_}RmWq!&gyvS8Qa zD4c7PF~sEKk=G4?LSl>&b?^E_oo~Bw2n7hFKl6qo*o?eFLH@$WJaS;0_&UQh!H}C{ zN-xQIQ9BWAj*cc9{;Bbv;o}VG|07y2`g8 zN+=$RlTT*px7g%s8Cj8Dqg~PPeLN*?O`9uOe>$KkZdg9|s;1=gf<0;6S8yI9f5-&^ zb44yfl5kc&fg|n`{^2N+PD~Ru%AT~*vCfjqpM@3sX5`Zpk!mZJk=J7t^5o>*SpmY? zYcN^2)7Rv~3!T6ElO4hbY;?y$1d}e^KGS)te5bztMxu0{ju1tprm!Rn`o&-~9HGqj zyz=Bl`l7tmFN($Qr?L&C8p3=8nx4Z7U<*Y>s_7!FM)X!{j-Rl&tkk2Z0N*p=6{)5R zwI*t#d7M&dj&5y8x~&L4^=goM2!|g~y

X<@q(LwXun1P^IJxM$^>ARJ~fiy{1YX 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.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@codemirror/rangeset": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.9.tgz", + "integrity": "sha512-V8YUuOvK+ew87Xem+71nKcqu1SXd5QROMRLMS/ljT5/3MCxtgrRie1Cvild0G/Z2f1fpWxzX78V0U4jjXBorBQ==", + "dev": true, + "dependencies": { + "@codemirror/state": "^0.19.0" + } + }, + "node_modules/@codemirror/state": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-0.19.9.tgz", + "integrity": "sha512-psOzDolKTZkx4CgUqhBQ8T8gBc0xN5z4gzed109aF6x7D7umpDRoimacI/O6d9UGuyl4eYuDCZmDFr2Rq7aGOw==", + "dev": true, + "dependencies": { + "@codemirror/text": "^0.19.0" + } + }, + "node_modules/@codemirror/text": { + "version": "0.19.6", + "resolved": "https://registry.npmjs.org/@codemirror/text/-/text-0.19.6.tgz", + "integrity": "sha512-T9jnREMIygx+TPC1bOuepz18maGq/92q2a+n4qTqObKwvNMg+8cMTslb8yxeEDEq7S3kpgGWxgO1UWbQRij0dA==", + "dev": true + }, + "node_modules/@codemirror/view": { + "version": "0.19.48", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-0.19.48.tgz", + "integrity": "sha512-0eg7D2Nz4S8/caetCTz61rK0tkHI17V/d15Jy0kLOT8dTLGGNJUponDnW28h2B6bERmPlVHKh8MJIr5OCp1nGw==", + "dev": true, + "dependencies": { + "@codemirror/rangeset": "^0.19.5", + "@codemirror/state": "^0.19.3", + "@codemirror/text": "^0.19.0", + "style-mod": "^4.0.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", + "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "dev": true, + "peer": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.1", + "globals": "^13.9.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "peer": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true, + "peer": true + }, + "node_modules/@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.5", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz", + "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@types/codemirror": { + "version": "0.0.108", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.108.tgz", + "integrity": "sha512-3FGFcus0P7C2UOGCNUVENqObEb4SFk+S8Dnxq7K6aIsLVs/vDtlangl3PEO0ykaKXyK56swVF6Nho7VsA44uhw==", + "dev": true, + "dependencies": { + "@types/tern": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.11.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.26.tgz", + "integrity": "sha512-GZ7bu5A6+4DtG7q9GsoHXy3ALcgeIHP4NnL0Vv2wu0uUB/yQex26v0tf6/na1mm0+bS9Uw+0DFex7aaKr2qawQ==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "node_modules/@types/tern": { + "version": "0.23.4", + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz", + "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.18.0.tgz", + "integrity": "sha512-tzrmdGMJI/uii9/V6lurMo4/o+dMTKDH82LkNjhJ3adCW22YQydoRs5MwTiqxGF9CSYxPxQ7EYb4jLNlIs+E+A==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.18.0", + "@typescript-eslint/type-utils": "5.18.0", + "@typescript-eslint/utils": "5.18.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.18.0.tgz", + "integrity": "sha512-+08nYfurBzSSPndngnHvFw/fniWYJ5ymOrn/63oMIbgomVQOvIDhBoJmYZ9lwQOCnQV9xHGvf88ze3jFGUYooQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.18.0", + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/typescript-estree": "5.18.0", + "debug": "^4.3.2" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz", + "integrity": "sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/visitor-keys": "5.18.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.18.0.tgz", + "integrity": "sha512-vcn9/6J5D6jtHxpEJrgK8FhaM8r6J1/ZiNu70ZUJN554Y3D9t3iovi6u7JF8l/e7FcBIxeuTEidZDR70UuCIfA==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.18.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz", + "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz", + "integrity": "sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/visitor-keys": "5.18.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.18.0.tgz", + "integrity": "sha512-+hFGWUMMri7OFY26TsOlGa+zgjEy1ssEipxpLjtl4wSll8zy85x0GrUSju/FHdKfVorZPYJLkF3I4XPtnCTewA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.18.0", + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/typescript-estree": "5.18.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz", + "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.18.0", + "eslint-visitor-keys": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peer": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=", + "dev": true + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "peer": true + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "engines": [ + "node >= 6.0" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/conventional-changelog": { + "version": "3.1.24", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.24.tgz", + "integrity": "sha512-ed6k8PO00UVvhExYohroVPXcOJ/K1N0/drJHx/faTH37OIZthlecuLIRX/T6uOp682CAoVoFpu+sSEaeuH6Asg==", + "dev": true, + "dependencies": { + "conventional-changelog-angular": "^5.0.12", + "conventional-changelog-atom": "^2.0.8", + "conventional-changelog-codemirror": "^2.0.8", + "conventional-changelog-conventionalcommits": "^4.5.0", + "conventional-changelog-core": "^4.2.1", + "conventional-changelog-ember": "^2.0.9", + "conventional-changelog-eslint": "^3.0.9", + "conventional-changelog-express": "^2.0.6", + "conventional-changelog-jquery": "^3.0.11", + "conventional-changelog-jshint": "^2.0.9", + "conventional-changelog-preset-loader": "^2.3.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-atom": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz", + "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-codemirror": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz", + "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-config-spec": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz", + "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==", + "dev": true + }, + "node_modules/conventional-changelog-conventionalcommits": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.1.tgz", + "integrity": "sha512-lzWJpPZhbM1R0PIzkwzGBCnAkH5RKJzJfFQZcl/D+2lsJxAwGnDKBqn/F4C1RD31GJNn8NuKWQzAZDAVXPp2Mw==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "lodash": "^4.17.15", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", + "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", + "dev": true, + "dependencies": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^4.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-ember": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz", + "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-eslint": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz", + "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-express": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz", + "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-jquery": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz", + "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-jshint": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz", + "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "dev": true, + "dependencies": { + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "dev": true, + "dependencies": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "dev": true, + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-recommended-bump": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", + "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", + "dev": true, + "dependencies": { + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^2.3.4", + "conventional-commits-filter": "^2.0.7", + "conventional-commits-parser": "^3.2.0", + "git-raw-commits": "^2.0.8", + "git-semver-tags": "^4.1.1", + "meow": "^8.0.0", + "q": "^1.5.1" + }, + "bin": { + "conventional-recommended-bump": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "peer": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "peer": true + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "peer": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotgitignore": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz", + "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dotgitignore/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dotgitignore/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dotgitignore/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dotgitignore/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dotgitignore/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/esbuild": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.12.tgz", + "integrity": "sha512-vTKKUt+yoz61U/BbrnmlG9XIjwpdIxmHB8DlPR0AAW6OdS+nBQBci6LUHU2q9WbBobMEIQxxDpKbkmOGYvxsow==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "optionalDependencies": { + "esbuild-android-arm64": "0.13.12", + "esbuild-darwin-64": "0.13.12", + "esbuild-darwin-arm64": "0.13.12", + "esbuild-freebsd-64": "0.13.12", + "esbuild-freebsd-arm64": "0.13.12", + "esbuild-linux-32": "0.13.12", + "esbuild-linux-64": "0.13.12", + "esbuild-linux-arm": "0.13.12", + "esbuild-linux-arm64": "0.13.12", + "esbuild-linux-mips64le": "0.13.12", + "esbuild-linux-ppc64le": "0.13.12", + "esbuild-netbsd-64": "0.13.12", + "esbuild-openbsd-64": "0.13.12", + "esbuild-sunos-64": "0.13.12", + "esbuild-windows-32": "0.13.12", + "esbuild-windows-64": "0.13.12", + "esbuild-windows-arm64": "0.13.12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.12.tgz", + "integrity": "sha512-TSVZVrb4EIXz6KaYjXfTzPyyRpXV5zgYIADXtQsIenjZ78myvDGaPi11o4ZSaHIwFHsuwkB6ne5SZRBwAQ7maw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/esbuild-darwin-64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.12.tgz", + "integrity": "sha512-c51C+N+UHySoV2lgfWSwwmlnLnL0JWj/LzuZt9Ltk9ub1s2Y8cr6SQV5W3mqVH1egUceew6KZ8GyI4nwu+fhsw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.12.tgz", + "integrity": "sha512-JvAMtshP45Hd8A8wOzjkY1xAnTKTYuP/QUaKp5eUQGX+76GIie3fCdUUr2ZEKdvpSImNqxiZSIMziEiGB5oUmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.12.tgz", + "integrity": "sha512-r6On/Skv9f0ZjTu6PW5o7pdXr8aOgtFOEURJZYf1XAJs0IQ+gW+o1DzXjVkIoT+n1cm3N/t1KRJfX71MPg/ZUA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.12.tgz", + "integrity": "sha512-F6LmI2Q1gii073kmBE3NOTt/6zLL5zvZsxNLF8PMAwdHc+iBhD1vzfI8uQZMJA1IgXa3ocr3L3DJH9fLGXy6Yw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/esbuild-linux-32": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.12.tgz", + "integrity": "sha512-U1UZwG3UIwF7/V4tCVAo/nkBV9ag5KJiJTt+gaCmLVWH3bPLX7y+fNlhIWZy8raTMnXhMKfaTvWZ9TtmXzvkuQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/esbuild-linux-64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.12.tgz", + "integrity": "sha512-YpXSwtu2NxN3N4ifJxEdsgd6Q5d8LYqskrAwjmoCT6yQnEHJSF5uWcxv783HWN7lnGpJi9KUtDvYsnMdyGw71Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/esbuild-linux-arm": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.12.tgz", + "integrity": "sha512-SyiT/JKxU6J+DY2qUiSLZJqCAftIt3uoGejZ0HDnUM2MGJqEGSGh7p1ecVL2gna3PxS4P+j6WAehCwgkBPXNIw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.12.tgz", + "integrity": "sha512-sgDNb8kb3BVodtAlcFGgwk+43KFCYjnFOaOfJibXnnIojNWuJHpL6aQJ4mumzNWw8Rt1xEtDQyuGK9f+Y24jGA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.12.tgz", + "integrity": "sha512-qQJHlZBG+QwVIA8AbTEtbvF084QgDi4DaUsUnA+EolY1bxrG+UyOuGflM2ZritGhfS/k7THFjJbjH2wIeoKA2g==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.12.tgz", + "integrity": "sha512-2dSnm1ldL7Lppwlo04CGQUpwNn5hGqXI38OzaoPOkRsBRWFBozyGxTFSee/zHFS+Pdh3b28JJbRK3owrrRgWNw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.12.tgz", + "integrity": "sha512-D4raxr02dcRiQNbxOLzpqBzcJNFAdsDNxjUbKkDMZBkL54Z0vZh4LRndycdZAMcIdizC/l/Yp/ZsBdAFxc5nbA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ] + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.12.tgz", + "integrity": "sha512-KuLCmYMb2kh05QuPJ+va60bKIH5wHL8ypDkmpy47lzwmdxNsuySeCMHuTv5o2Af1RUn5KLO5ZxaZeq4GEY7DaQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/esbuild-sunos-64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.12.tgz", + "integrity": "sha512-jBsF+e0woK3miKI8ufGWKG3o3rY9DpHvCVRn5eburMIIE+2c+y3IZ1srsthKyKI6kkXLvV4Cf/E7w56kLipMXw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ] + }, + "node_modules/esbuild-windows-32": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.12.tgz", + "integrity": "sha512-L9m4lLFQrFeR7F+eLZXG82SbXZfUhyfu6CexZEil6vm+lc7GDCE0Q8DiNutkpzjv1+RAbIGVva9muItQ7HVTkQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/esbuild-windows-64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.12.tgz", + "integrity": "sha512-k4tX4uJlSbSkfs78W5d9+I9gpd+7N95W7H2bgOMFPsYREVJs31+Q2gLLHlsnlY95zBoPQMIzHooUIsixQIBjaQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.12.tgz", + "integrity": "sha512-2tTv/BpYRIvuwHpp2M960nG7uvL+d78LFW/ikPItO+2GfK51CswIKSetSpDii+cjz8e9iSPgs+BU4o8nWICBwQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.12.0.tgz", + "integrity": "sha512-it1oBL9alZg1S8UycLm5YDMAkIhtH6FtAzuZs6YvoGVldWjbS08BkAdb/ymP9LlAyq8koANu32U7Ib/w+UNh8Q==", + "dev": true, + "peer": true, + "dependencies": { + "@eslint/eslintrc": "^1.2.1", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/espree": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "dev": true, + "peer": true, + "dependencies": { + "acorn": "^8.7.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "peer": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "peer": true + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "peer": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true, + "peer": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "peer": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "peer": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true, + "peer": true + }, + "node_modules/fs-access": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "dependencies": { + "null-check": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true, + "peer": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-pkg-repo": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", + "dev": true, + "dependencies": { + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "get-pkg-repo": "src/cli.js" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-pkg-repo/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/get-pkg-repo/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/get-pkg-repo/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/get-pkg-repo/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/git-raw-commits": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "dev": true, + "dependencies": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", + "dev": true, + "dependencies": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-semver-tags": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", + "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "dev": true, + "dependencies": { + "meow": "^8.0.0", + "semver": "^6.0.0" + }, + "bin": { + "git-semver-tags": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-semver-tags/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", + "dev": true, + "dependencies": { + "ini": "^1.3.2" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "peer": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "dev": true, + "peer": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "peer": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "peer": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "dev": true, + "dependencies": { + "text-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true, + "peer": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "peer": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "peer": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true, + "peer": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "peer": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "peer": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/meow/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true, + "peer": true + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/obsidian": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/obsidian/-/obsidian-0.14.4.tgz", + "integrity": "sha512-lWU1w/NlXuswAa35ImAbyElLOOno1C13KCZE19kqtcxSPIquvi5Fzy8zBbQ6ZRZZvkvftUiToCp5lcZFRMGxrQ==", + "dev": true, + "dependencies": { + "@codemirror/state": "^0.19.6", + "@codemirror/view": "^0.19.31", + "@types/codemirror": "0.0.108", + "moment": "2.29.1" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "peer": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "peer": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "peer": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "peer": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "peer": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/standard-version": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-9.3.2.tgz", + "integrity": "sha512-u1rfKP4o4ew7Yjbfycv80aNMN2feTiqseAhUhrrx2XtdQGmu7gucpziXe68Z4YfHVqlxVEzo4aUA0Iu3VQOTgQ==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "conventional-changelog": "3.1.24", + "conventional-changelog-config-spec": "2.1.0", + "conventional-changelog-conventionalcommits": "4.6.1", + "conventional-recommended-bump": "6.1.0", + "detect-indent": "^6.0.0", + "detect-newline": "^3.1.0", + "dotgitignore": "^2.1.0", + "figures": "^3.1.0", + "find-up": "^5.0.0", + "fs-access": "^1.0.1", + "git-semver-tags": "^4.0.0", + "semver": "^7.1.1", + "stringify-package": "^1.0.1", + "yargs": "^16.0.0" + }, + "bin": { + "standard-version": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/standard-version/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/standard-version/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/standard-version/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/standard-version/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/standard-version/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/standard-version/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/standard-version/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stringify-package": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz", + "integrity": "sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==", + "dev": true + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-mod": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz", + "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==", + "dev": true + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true, + "peer": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "peer": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "node_modules/typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uglify-js": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.3.tgz", + "integrity": "sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "peer": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true, + "peer": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/w3c-keyname": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.4.tgz", + "integrity": "sha512-tOhfEwEzFLJzf6d1ZPkYfGj+FWhIpBux9ppoP3rlclw3Z0BZv3N7b7030Z1kYth+6rDuAsXUFr+d0VE6Ed1ikw==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true, + "peer": true + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@codemirror/rangeset": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.9.tgz", + "integrity": "sha512-V8YUuOvK+ew87Xem+71nKcqu1SXd5QROMRLMS/ljT5/3MCxtgrRie1Cvild0G/Z2f1fpWxzX78V0U4jjXBorBQ==", + "dev": true, + "requires": { + "@codemirror/state": "^0.19.0" + } + }, + "@codemirror/state": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-0.19.9.tgz", + "integrity": "sha512-psOzDolKTZkx4CgUqhBQ8T8gBc0xN5z4gzed109aF6x7D7umpDRoimacI/O6d9UGuyl4eYuDCZmDFr2Rq7aGOw==", + "dev": true, + "requires": { + "@codemirror/text": "^0.19.0" + } + }, + "@codemirror/text": { + "version": "0.19.6", + "resolved": "https://registry.npmjs.org/@codemirror/text/-/text-0.19.6.tgz", + "integrity": "sha512-T9jnREMIygx+TPC1bOuepz18maGq/92q2a+n4qTqObKwvNMg+8cMTslb8yxeEDEq7S3kpgGWxgO1UWbQRij0dA==", + "dev": true + }, + "@codemirror/view": { + "version": "0.19.48", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-0.19.48.tgz", + "integrity": "sha512-0eg7D2Nz4S8/caetCTz61rK0tkHI17V/d15Jy0kLOT8dTLGGNJUponDnW28h2B6bERmPlVHKh8MJIr5OCp1nGw==", + "dev": true, + "requires": { + "@codemirror/rangeset": "^0.19.5", + "@codemirror/state": "^0.19.3", + "@codemirror/text": "^0.19.0", + "style-mod": "^4.0.0", + "w3c-keyname": "^2.2.4" + } + }, + "@eslint/eslintrc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", + "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "dev": true, + "peer": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.1", + "globals": "^13.9.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + } + }, + "@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "peer": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true, + "peer": true + }, + "@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@popperjs/core": { + "version": "2.11.5", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz", + "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==", + "dev": true + }, + "@types/codemirror": { + "version": "0.0.108", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.108.tgz", + "integrity": "sha512-3FGFcus0P7C2UOGCNUVENqObEb4SFk+S8Dnxq7K6aIsLVs/vDtlangl3PEO0ykaKXyK56swVF6Nho7VsA44uhw==", + "dev": true, + "requires": { + "@types/tern": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "@types/node": { + "version": "16.11.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.26.tgz", + "integrity": "sha512-GZ7bu5A6+4DtG7q9GsoHXy3ALcgeIHP4NnL0Vv2wu0uUB/yQex26v0tf6/na1mm0+bS9Uw+0DFex7aaKr2qawQ==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "@types/tern": { + "version": "0.23.4", + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz", + "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.18.0.tgz", + "integrity": "sha512-tzrmdGMJI/uii9/V6lurMo4/o+dMTKDH82LkNjhJ3adCW22YQydoRs5MwTiqxGF9CSYxPxQ7EYb4jLNlIs+E+A==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.18.0", + "@typescript-eslint/type-utils": "5.18.0", + "@typescript-eslint/utils": "5.18.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.18.0.tgz", + "integrity": "sha512-+08nYfurBzSSPndngnHvFw/fniWYJ5ymOrn/63oMIbgomVQOvIDhBoJmYZ9lwQOCnQV9xHGvf88ze3jFGUYooQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.18.0", + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/typescript-estree": "5.18.0", + "debug": "^4.3.2" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz", + "integrity": "sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/visitor-keys": "5.18.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.18.0.tgz", + "integrity": "sha512-vcn9/6J5D6jtHxpEJrgK8FhaM8r6J1/ZiNu70ZUJN554Y3D9t3iovi6u7JF8l/e7FcBIxeuTEidZDR70UuCIfA==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.18.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz", + "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz", + "integrity": "sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/visitor-keys": "5.18.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.18.0.tgz", + "integrity": "sha512-+hFGWUMMri7OFY26TsOlGa+zgjEy1ssEipxpLjtl4wSll8zy85x0GrUSju/FHdKfVorZPYJLkF3I4XPtnCTewA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.18.0", + "@typescript-eslint/types": "5.18.0", + "@typescript-eslint/typescript-estree": "5.18.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz", + "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.18.0", + "eslint-visitor-keys": "^3.0.0" + } + }, + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "peer": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peer": true, + "requires": {} + }, + "add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "peer": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "peer": true + }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "peer": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "conventional-changelog": { + "version": "3.1.24", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.24.tgz", + "integrity": "sha512-ed6k8PO00UVvhExYohroVPXcOJ/K1N0/drJHx/faTH37OIZthlecuLIRX/T6uOp682CAoVoFpu+sSEaeuH6Asg==", + "dev": true, + "requires": { + "conventional-changelog-angular": "^5.0.12", + "conventional-changelog-atom": "^2.0.8", + "conventional-changelog-codemirror": "^2.0.8", + "conventional-changelog-conventionalcommits": "^4.5.0", + "conventional-changelog-core": "^4.2.1", + "conventional-changelog-ember": "^2.0.9", + "conventional-changelog-eslint": "^3.0.9", + "conventional-changelog-express": "^2.0.6", + "conventional-changelog-jquery": "^3.0.11", + "conventional-changelog-jshint": "^2.0.9", + "conventional-changelog-preset-loader": "^2.3.4" + } + }, + "conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dev": true, + "requires": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + } + }, + "conventional-changelog-atom": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz", + "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==", + "dev": true, + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-codemirror": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz", + "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==", + "dev": true, + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-config-spec": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz", + "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==", + "dev": true + }, + "conventional-changelog-conventionalcommits": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.1.tgz", + "integrity": "sha512-lzWJpPZhbM1R0PIzkwzGBCnAkH5RKJzJfFQZcl/D+2lsJxAwGnDKBqn/F4C1RD31GJNn8NuKWQzAZDAVXPp2Mw==", + "dev": true, + "requires": { + "compare-func": "^2.0.0", + "lodash": "^4.17.15", + "q": "^1.5.1" + } + }, + "conventional-changelog-core": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", + "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", + "dev": true, + "requires": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^4.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^4.0.0" + } + }, + "conventional-changelog-ember": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz", + "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==", + "dev": true, + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-eslint": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz", + "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==", + "dev": true, + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-express": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz", + "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==", + "dev": true, + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-jquery": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz", + "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==", + "dev": true, + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-jshint": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz", + "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==", + "dev": true, + "requires": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + } + }, + "conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "dev": true + }, + "conventional-changelog-writer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "dev": true, + "requires": { + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "dev": true, + "requires": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + } + }, + "conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "dev": true, + "requires": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + } + }, + "conventional-recommended-bump": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", + "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", + "dev": true, + "requires": { + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^2.3.4", + "conventional-commits-filter": "^2.0.7", + "conventional-commits-parser": "^3.2.0", + "git-raw-commits": "^2.0.8", + "git-semver-tags": "^4.1.1", + "meow": "^8.0.0", + "q": "^1.5.1" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "peer": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true + }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "peer": true + }, + "detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "peer": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotgitignore": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz", + "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "minimatch": "^3.0.4" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "esbuild": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.12.tgz", + "integrity": "sha512-vTKKUt+yoz61U/BbrnmlG9XIjwpdIxmHB8DlPR0AAW6OdS+nBQBci6LUHU2q9WbBobMEIQxxDpKbkmOGYvxsow==", + "dev": true, + "requires": { + "esbuild-android-arm64": "0.13.12", + "esbuild-darwin-64": "0.13.12", + "esbuild-darwin-arm64": "0.13.12", + "esbuild-freebsd-64": "0.13.12", + "esbuild-freebsd-arm64": "0.13.12", + "esbuild-linux-32": "0.13.12", + "esbuild-linux-64": "0.13.12", + "esbuild-linux-arm": "0.13.12", + "esbuild-linux-arm64": "0.13.12", + "esbuild-linux-mips64le": "0.13.12", + "esbuild-linux-ppc64le": "0.13.12", + "esbuild-netbsd-64": "0.13.12", + "esbuild-openbsd-64": "0.13.12", + "esbuild-sunos-64": "0.13.12", + "esbuild-windows-32": "0.13.12", + "esbuild-windows-64": "0.13.12", + "esbuild-windows-arm64": "0.13.12" + } + }, + "esbuild-android-arm64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.12.tgz", + "integrity": "sha512-TSVZVrb4EIXz6KaYjXfTzPyyRpXV5zgYIADXtQsIenjZ78myvDGaPi11o4ZSaHIwFHsuwkB6ne5SZRBwAQ7maw==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.12.tgz", + "integrity": "sha512-c51C+N+UHySoV2lgfWSwwmlnLnL0JWj/LzuZt9Ltk9ub1s2Y8cr6SQV5W3mqVH1egUceew6KZ8GyI4nwu+fhsw==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.12.tgz", + "integrity": "sha512-JvAMtshP45Hd8A8wOzjkY1xAnTKTYuP/QUaKp5eUQGX+76GIie3fCdUUr2ZEKdvpSImNqxiZSIMziEiGB5oUmQ==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.12.tgz", + "integrity": "sha512-r6On/Skv9f0ZjTu6PW5o7pdXr8aOgtFOEURJZYf1XAJs0IQ+gW+o1DzXjVkIoT+n1cm3N/t1KRJfX71MPg/ZUA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.12.tgz", + "integrity": "sha512-F6LmI2Q1gii073kmBE3NOTt/6zLL5zvZsxNLF8PMAwdHc+iBhD1vzfI8uQZMJA1IgXa3ocr3L3DJH9fLGXy6Yw==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.12.tgz", + "integrity": "sha512-U1UZwG3UIwF7/V4tCVAo/nkBV9ag5KJiJTt+gaCmLVWH3bPLX7y+fNlhIWZy8raTMnXhMKfaTvWZ9TtmXzvkuQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.12.tgz", + "integrity": "sha512-YpXSwtu2NxN3N4ifJxEdsgd6Q5d8LYqskrAwjmoCT6yQnEHJSF5uWcxv783HWN7lnGpJi9KUtDvYsnMdyGw71Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.12.tgz", + "integrity": "sha512-SyiT/JKxU6J+DY2qUiSLZJqCAftIt3uoGejZ0HDnUM2MGJqEGSGh7p1ecVL2gna3PxS4P+j6WAehCwgkBPXNIw==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.12.tgz", + "integrity": "sha512-sgDNb8kb3BVodtAlcFGgwk+43KFCYjnFOaOfJibXnnIojNWuJHpL6aQJ4mumzNWw8Rt1xEtDQyuGK9f+Y24jGA==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.12.tgz", + "integrity": "sha512-qQJHlZBG+QwVIA8AbTEtbvF084QgDi4DaUsUnA+EolY1bxrG+UyOuGflM2ZritGhfS/k7THFjJbjH2wIeoKA2g==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.12.tgz", + "integrity": "sha512-2dSnm1ldL7Lppwlo04CGQUpwNn5hGqXI38OzaoPOkRsBRWFBozyGxTFSee/zHFS+Pdh3b28JJbRK3owrrRgWNw==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.12.tgz", + "integrity": "sha512-D4raxr02dcRiQNbxOLzpqBzcJNFAdsDNxjUbKkDMZBkL54Z0vZh4LRndycdZAMcIdizC/l/Yp/ZsBdAFxc5nbA==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.12.tgz", + "integrity": "sha512-KuLCmYMb2kh05QuPJ+va60bKIH5wHL8ypDkmpy47lzwmdxNsuySeCMHuTv5o2Af1RUn5KLO5ZxaZeq4GEY7DaQ==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.12.tgz", + "integrity": "sha512-jBsF+e0woK3miKI8ufGWKG3o3rY9DpHvCVRn5eburMIIE+2c+y3IZ1srsthKyKI6kkXLvV4Cf/E7w56kLipMXw==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.12.tgz", + "integrity": "sha512-L9m4lLFQrFeR7F+eLZXG82SbXZfUhyfu6CexZEil6vm+lc7GDCE0Q8DiNutkpzjv1+RAbIGVva9muItQ7HVTkQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.12.tgz", + "integrity": "sha512-k4tX4uJlSbSkfs78W5d9+I9gpd+7N95W7H2bgOMFPsYREVJs31+Q2gLLHlsnlY95zBoPQMIzHooUIsixQIBjaQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.12.tgz", + "integrity": "sha512-2tTv/BpYRIvuwHpp2M960nG7uvL+d78LFW/ikPItO+2GfK51CswIKSetSpDii+cjz8e9iSPgs+BU4o8nWICBwQ==", + "dev": true, + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "peer": true + }, + "eslint": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.12.0.tgz", + "integrity": "sha512-it1oBL9alZg1S8UycLm5YDMAkIhtH6FtAzuZs6YvoGVldWjbS08BkAdb/ymP9LlAyq8koANu32U7Ib/w+UNh8Q==", + "dev": true, + "peer": true, + "requires": { + "@eslint/eslintrc": "^1.2.1", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "peer": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "peer": true + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "dev": true, + "peer": true, + "requires": { + "acorn": "^8.7.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "peer": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "peer": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "peer": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "peer": true + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "peer": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true, + "peer": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + } + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "peer": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "peer": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true, + "peer": true + }, + "fs-access": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "requires": { + "null-check": "^1.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true, + "peer": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-pkg-repo": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", + "dev": true, + "requires": { + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "git-raw-commits": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "dev": true, + "requires": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + } + }, + "git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", + "dev": true, + "requires": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + } + }, + "git-semver-tags": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", + "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "dev": true, + "requires": { + "meow": "^8.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", + "dev": true, + "requires": { + "ini": "^1.3.2" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "peer": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "peer": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "dev": true, + "peer": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "peer": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "peer": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "peer": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "dev": true, + "requires": { + "text-extensions": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true, + "peer": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "peer": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "peer": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true, + "peer": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "peer": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "peer": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true + }, + "meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + } + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + } + }, + "modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true + }, + "moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true, + "peer": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, + "obsidian": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/obsidian/-/obsidian-0.14.4.tgz", + "integrity": "sha512-lWU1w/NlXuswAa35ImAbyElLOOno1C13KCZE19kqtcxSPIquvi5Fzy8zBbQ6ZRZZvkvftUiToCp5lcZFRMGxrQ==", + "dev": true, + "requires": { + "@codemirror/state": "^0.19.6", + "@codemirror/view": "^0.19.31", + "@types/codemirror": "0.0.108", + "moment": "2.29.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "peer": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "peer": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "peer": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "peer": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "peer": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "peer": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "peer": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "peer": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "peer": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "peer": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "peer": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "requires": { + "through": "2" + } + }, + "split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "requires": { + "readable-stream": "^3.0.0" + } + }, + "standard-version": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-9.3.2.tgz", + "integrity": "sha512-u1rfKP4o4ew7Yjbfycv80aNMN2feTiqseAhUhrrx2XtdQGmu7gucpziXe68Z4YfHVqlxVEzo4aUA0Iu3VQOTgQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "conventional-changelog": "3.1.24", + "conventional-changelog-config-spec": "2.1.0", + "conventional-changelog-conventionalcommits": "4.6.1", + "conventional-recommended-bump": "6.1.0", + "detect-indent": "^6.0.0", + "detect-newline": "^3.1.0", + "dotgitignore": "^2.1.0", + "figures": "^3.1.0", + "find-up": "^5.0.0", + "fs-access": "^1.0.1", + "git-semver-tags": "^4.0.0", + "semver": "^7.1.1", + "stringify-package": "^1.0.1", + "yargs": "^16.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "stringify-package": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz", + "integrity": "sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "peer": true + }, + "style-mod": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz", + "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true, + "peer": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "requires": { + "readable-stream": "3" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "peer": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "peer": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "dev": true + }, + "uglify-js": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.3.tgz", + "integrity": "sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg==", + "dev": true, + "optional": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "peer": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true, + "peer": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "w3c-keyname": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.4.tgz", + "integrity": "sha512-tOhfEwEzFLJzf6d1ZPkYfGj+FWhIpBux9ppoP3rlclw3Z0BZv3N7b7030Z1kYth+6rDuAsXUFr+d0VE6Ed1ikw==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "peer": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "peer": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true, + "peer": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..f8f9f53 --- /dev/null +++ b/package.json @@ -0,0 +1,39 @@ +{ + "name": "obsidian-book-search-plugin", + "version": "1.0.7", + "description": "This is a plugin to help you create book notes.", + "main": "main.js", + "standard-version": { + "t": "" + }, + "keywords": [ + "book", + "book note", + "obsidian", + "plugin" + ], + "author": "anpigon", + "license": "MIT", + "scripts": { + "dev": "node esbuild.config.mjs", + "build": "tsc -noEmit -skipLibCheck && node esbuild.config.mjs production", + "release": "standard-version", + "release-test": "standard-version --dry-run", + "release-major": "standard-version --release-as major", + "release-major-test": "standard-version --dry-run --release-as major", + "release-minor": "standard-version --release-as minor", + "release-minor-test": "standard-version --dry-run --release-as minor" + }, + "devDependencies": { + "@popperjs/core": "^2.11.5", + "@types/node": "^16.11.6", + "@typescript-eslint/eslint-plugin": "^5.2.0", + "@typescript-eslint/parser": "^5.2.0", + "builtin-modules": "^3.2.0", + "esbuild": "0.13.12", + "obsidian": "latest", + "tslib": "2.3.1", + "typescript": "4.4.4", + "standard-version": "^9.3.2" + } +} diff --git a/src/apis/google_books_api.ts b/src/apis/google_books_api.ts new file mode 100644 index 0000000..7a625df --- /dev/null +++ b/src/apis/google_books_api.ts @@ -0,0 +1,78 @@ +import { request } from 'obsidian'; +import { Book } from 'src/models/book.model'; +import { GoogleBooksResponse, VolumeInfo } from './models/google_books.model'; + +const API_URL = 'https://www.googleapis.com/books/v1/volumes'; + +export async function getByQuery(query: string): Promise { + try { + const searchResults = await apiGet(query); + if (searchResults.totalItems == 0) { + throw new Error('No results found.'); + } + + return searchResults.items.map(({ volumeInfo }) => + formatForSuggestion(volumeInfo), + ); + } catch (error) { + console.warn(error); + throw error; + } +} + +function getISBN(item: VolumeInfo) { + let ISBN10 = ''; + let ISBN13 = ''; + let isbn10_data, isbn13_data; + + if (item.industryIdentifiers) { + isbn10_data = item.industryIdentifiers.find( + element => element.type == 'ISBN_10', + ); + isbn13_data = item.industryIdentifiers.find( + element => element.type == 'ISBN_13', + ); + } + + if (isbn10_data) ISBN10 = isbn10_data.identifier.trim(); + if (isbn13_data) ISBN13 = isbn13_data.identifier.trim(); + + return { ISBN10, ISBN13 }; +} + +function formatForSuggestion(item: VolumeInfo): Book { + const ISBN = getISBN(item); + const book: Book = { + title: item.title, + author: formatList(item.authors), + category: formatList(item.categories), + publisher: item.publisher, + totalPage: item.pageCount, + coverUrl: `${item.imageLinks?.thumbnail ?? ''}`.replace('http:', 'https:'), + publishDate: item.publishedDate + ? `${new Date(item.publishedDate).getFullYear()}` + : '', + isbn10: ISBN.ISBN10, + isbn13: ISBN.ISBN13, + }; + return book; +} + +function formatList(list?: string[]) { + if (!list || list.length === 0 || list[0] == 'N/A') return ''; + if (list.length === 1) return `${list[0]}`; + + return list.map(item => `"${item.trim()}"`).join(', '); +} + +async function apiGet(query: string): Promise { + const finalURL = new URL(API_URL); + finalURL.searchParams.append('q', query); + + const res = await request({ + url: finalURL.href, + method: 'GET', + }); + + return JSON.parse(res) as GoogleBooksResponse; +} diff --git a/src/apis/models/google_books.model.ts b/src/apis/models/google_books.model.ts new file mode 100644 index 0000000..726e710 --- /dev/null +++ b/src/apis/models/google_books.model.ts @@ -0,0 +1,518 @@ +// To parse this data: +// +// import { Convert, GoogleBooks } from "./file"; +// +// const googleBooks = Convert.toGoogleBooks(json); +// +// These functions will throw an error if the JSON doesn't +// match the expected interface, even if the JSON is valid. + +/* eslint-disable @typescript-eslint/no-explicit-any */ +export interface GoogleBooksResponse { + kind: string; + totalItems: number; + items: Item[]; +} + +export interface Item { + kind: Kind; + id: string; + etag: string; + selfLink: string; + volumeInfo: VolumeInfo; + saleInfo: SaleInfo; + accessInfo: AccessInfo; + searchInfo: SearchInfo; +} + +export interface AccessInfo { + country: Country; + viewability: Viewability; + embeddable: boolean; + publicDomain: boolean; + textToSpeechPermission: TextToSpeechPermission; + epub: Epub; + pdf: Epub; + webReaderLink: string; + accessViewStatus: AccessViewStatus; + quoteSharingAllowed: boolean; +} + +export enum AccessViewStatus { + None = 'NONE', + Sample = 'SAMPLE', +} + +export enum Country { + Kr = 'KR', +} + +export interface Epub { + isAvailable: boolean; + acsTokenLink?: string; +} + +export enum TextToSpeechPermission { + Allowed = 'ALLOWED', +} + +export enum Viewability { + NoPages = 'NO_PAGES', + Partial = 'PARTIAL', +} + +export enum Kind { + BooksVolume = 'books#volume', +} + +export interface SaleInfo { + country: Country; + saleability: Saleability; + isEbook: boolean; + listPrice?: SaleInfoListPrice; + retailPrice?: SaleInfoListPrice; + buyLink?: string; + offers?: Offer[]; +} + +export interface SaleInfoListPrice { + amount: number; + currencyCode: CurrencyCode; +} + +export enum CurrencyCode { + Krw = 'KRW', +} + +export interface Offer { + finskyOfferType: number; + listPrice: OfferListPrice; + retailPrice: OfferListPrice; + rentalDuration?: RentalDuration; +} + +export interface OfferListPrice { + amountInMicros: number; + currencyCode: CurrencyCode; +} + +export interface RentalDuration { + unit: string; + count: number; +} + +export enum Saleability { + ForSale = 'FOR_SALE', + ForSaleAndRental = 'FOR_SALE_AND_RENTAL', + NotForSale = 'NOT_FOR_SALE', +} + +export interface SearchInfo { + textSnippet: string; +} + +export interface VolumeInfo { + title: string; + authors?: string[]; + publisher?: string; + publishedDate: string; + industryIdentifiers: IndustryIdentifier[]; + readingModes: ReadingModes; + pageCount?: number; + printType: PrintType; + categories?: string[]; + maturityRating: MaturityRating; + allowAnonLogging: boolean; + contentVersion: string; + panelizationSummary: PanelizationSummary; + imageLinks: ImageLinks; + language: Language; + previewLink: string; + infoLink: string; + canonicalVolumeLink: string; + subtitle?: string; + description?: string; + averageRating?: number; + ratingsCount?: number; +} + +export interface ImageLinks { + smallThumbnail: string; + thumbnail: string; +} + +export interface IndustryIdentifier { + type: Type; + identifier: string; +} + +export enum Type { + Isbn10 = 'ISBN_10', + Isbn13 = 'ISBN_13', + Other = 'OTHER', +} + +export enum Language { + En = 'en', + Ko = 'ko', +} + +export enum MaturityRating { + NotMature = 'NOT_MATURE', +} + +export interface PanelizationSummary { + containsEpubBubbles: boolean; + containsImageBubbles: boolean; +} + +export enum PrintType { + Book = 'BOOK', +} + +export interface ReadingModes { + text: boolean; + image: boolean; +} + +// Converts JSON strings to/from your types +// and asserts the results of JSON.parse at runtime +export class Convert { + public static toGoogleBooks(json: string): GoogleBooksResponse { + return cast(JSON.parse(json), r('GoogleBooks')); + } + + public static googleBooksToJson(value: GoogleBooksResponse): string { + return JSON.stringify(uncast(value, r('GoogleBooks')), null, 2); + } +} + +function invalidValue(typ: any, val: any, key: any = ''): never { + if (key) { + throw Error( + `Invalid value for key "${key}". Expected type ${JSON.stringify( + typ, + )} but got ${JSON.stringify(val)}`, + ); + } + throw Error( + `Invalid value ${JSON.stringify(val)} for type ${JSON.stringify(typ)}`, + ); +} + +function jsonToJSProps(typ: any): any { + if (typ.jsonToJS === undefined) { + const map: any = {}; + typ.props.forEach((p: any) => (map[p.json] = { key: p.js, typ: p.typ })); + typ.jsonToJS = map; + } + return typ.jsonToJS; +} + +function jsToJSONProps(typ: any): any { + if (typ.jsToJSON === undefined) { + const map: any = {}; + typ.props.forEach((p: any) => (map[p.js] = { key: p.json, typ: p.typ })); + typ.jsToJSON = map; + } + return typ.jsToJSON; +} + +function transform(val: any, typ: any, getProps: any, key: any = ''): any { + function transformPrimitive(typ: string, val: any): any { + if (typeof typ === typeof val) return val; + return invalidValue(typ, val, key); + } + + function transformUnion(typs: any[], val: any): any { + // val must validate against one typ in typs + const l = typs.length; + for (let i = 0; i < l; i++) { + const typ = typs[i]; + try { + return transform(val, typ, getProps); + } catch (_) {} + } + return invalidValue(typs, val); + } + + function transformEnum(cases: string[], val: any): any { + if (cases.indexOf(val) !== -1) return val; + return invalidValue(cases, val); + } + + function transformArray(typ: any, val: any): any { + // val must be an array with no invalid elements + if (!Array.isArray(val)) return invalidValue('array', val); + return val.map(el => transform(el, typ, getProps)); + } + + function transformDate(val: any): any { + if (val === null) { + return null; + } + const d = new Date(val); + if (isNaN(d.valueOf())) { + return invalidValue('Date', val); + } + return d; + } + + function transformObject( + props: { [k: string]: any }, + additional: any, + val: any, + ): any { + if (val === null || typeof val !== 'object' || Array.isArray(val)) { + return invalidValue('object', val); + } + const result: any = {}; + Object.getOwnPropertyNames(props).forEach(key => { + const prop = props[key]; + const v = Object.prototype.hasOwnProperty.call(val, key) + ? val[key] + : undefined; + result[prop.key] = transform(v, prop.typ, getProps, prop.key); + }); + Object.getOwnPropertyNames(val).forEach(key => { + if (!Object.prototype.hasOwnProperty.call(props, key)) { + result[key] = transform(val[key], additional, getProps, key); + } + }); + return result; + } + + if (typ === 'any') return val; + if (typ === null) { + if (val === null) return val; + return invalidValue(typ, val); + } + if (typ === false) return invalidValue(typ, val); + while (typeof typ === 'object' && typ.ref !== undefined) { + typ = typeMap[typ.ref]; + } + if (Array.isArray(typ)) return transformEnum(typ, val); + if (typeof typ === 'object') { + return typ.hasOwnProperty('unionMembers') + ? transformUnion(typ.unionMembers, val) + : typ.hasOwnProperty('arrayItems') + ? transformArray(typ.arrayItems, val) + : typ.hasOwnProperty('props') + ? transformObject(getProps(typ), typ.additional, val) + : invalidValue(typ, val); + } + // Numbers can be parsed by Date but shouldn't be. + if (typ === Date && typeof val !== 'number') return transformDate(val); + return transformPrimitive(typ, val); +} + +function cast(val: any, typ: any): T { + return transform(val, typ, jsonToJSProps); +} + +function uncast(val: T, typ: any): any { + return transform(val, typ, jsToJSONProps); +} + +function a(typ: any) { + return { arrayItems: typ }; +} + +function u(...typs: any[]) { + return { unionMembers: typs }; +} + +function o(props: any[], additional: any) { + return { props, additional }; +} + +function r(name: string) { + return { ref: name }; +} + +const typeMap: any = { + GoogleBooks: o( + [ + { json: 'kind', js: 'kind', typ: '' }, + { json: 'totalItems', js: 'totalItems', typ: 0 }, + { json: 'items', js: 'items', typ: a(r('Item')) }, + ], + false, + ), + Item: o( + [ + { json: 'kind', js: 'kind', typ: r('Kind') }, + { json: 'id', js: 'id', typ: '' }, + { json: 'etag', js: 'etag', typ: '' }, + { json: 'selfLink', js: 'selfLink', typ: '' }, + { json: 'volumeInfo', js: 'volumeInfo', typ: r('VolumeInfo') }, + { json: 'saleInfo', js: 'saleInfo', typ: r('SaleInfo') }, + { json: 'accessInfo', js: 'accessInfo', typ: r('AccessInfo') }, + { json: 'searchInfo', js: 'searchInfo', typ: r('SearchInfo') }, + ], + false, + ), + AccessInfo: o( + [ + { json: 'country', js: 'country', typ: r('Country') }, + { json: 'viewability', js: 'viewability', typ: r('Viewability') }, + { json: 'embeddable', js: 'embeddable', typ: true }, + { json: 'publicDomain', js: 'publicDomain', typ: true }, + { + json: 'textToSpeechPermission', + js: 'textToSpeechPermission', + typ: r('TextToSpeechPermission'), + }, + { json: 'epub', js: 'epub', typ: r('Epub') }, + { json: 'pdf', js: 'pdf', typ: r('Epub') }, + { json: 'webReaderLink', js: 'webReaderLink', typ: '' }, + { + json: 'accessViewStatus', + js: 'accessViewStatus', + typ: r('AccessViewStatus'), + }, + { json: 'quoteSharingAllowed', js: 'quoteSharingAllowed', typ: true }, + ], + false, + ), + Epub: o( + [ + { json: 'isAvailable', js: 'isAvailable', typ: true }, + { json: 'acsTokenLink', js: 'acsTokenLink', typ: u(undefined, '') }, + ], + false, + ), + SaleInfo: o( + [ + { json: 'country', js: 'country', typ: r('Country') }, + { json: 'saleability', js: 'saleability', typ: r('Saleability') }, + { json: 'isEbook', js: 'isEbook', typ: true }, + { + json: 'listPrice', + js: 'listPrice', + typ: u(undefined, r('SaleInfoListPrice')), + }, + { + json: 'retailPrice', + js: 'retailPrice', + typ: u(undefined, r('SaleInfoListPrice')), + }, + { json: 'buyLink', js: 'buyLink', typ: u(undefined, '') }, + { json: 'offers', js: 'offers', typ: u(undefined, a(r('Offer'))) }, + ], + false, + ), + SaleInfoListPrice: o( + [ + { json: 'amount', js: 'amount', typ: 0 }, + { json: 'currencyCode', js: 'currencyCode', typ: r('CurrencyCode') }, + ], + false, + ), + Offer: o( + [ + { json: 'finskyOfferType', js: 'finskyOfferType', typ: 0 }, + { json: 'listPrice', js: 'listPrice', typ: r('OfferListPrice') }, + { json: 'retailPrice', js: 'retailPrice', typ: r('OfferListPrice') }, + { + json: 'rentalDuration', + js: 'rentalDuration', + typ: u(undefined, r('RentalDuration')), + }, + ], + false, + ), + OfferListPrice: o( + [ + { json: 'amountInMicros', js: 'amountInMicros', typ: 0 }, + { json: 'currencyCode', js: 'currencyCode', typ: r('CurrencyCode') }, + ], + false, + ), + RentalDuration: o( + [ + { json: 'unit', js: 'unit', typ: '' }, + { json: 'count', js: 'count', typ: 0 }, + ], + false, + ), + SearchInfo: o([{ json: 'textSnippet', js: 'textSnippet', typ: '' }], false), + VolumeInfo: o( + [ + { json: 'title', js: 'title', typ: '' }, + { json: 'authors', js: 'authors', typ: u(undefined, a('')) }, + { json: 'publisher', js: 'publisher', typ: u(undefined, '') }, + { json: 'publishedDate', js: 'publishedDate', typ: '' }, + { + json: 'industryIdentifiers', + js: 'industryIdentifiers', + typ: a(r('IndustryIdentifier')), + }, + { json: 'readingModes', js: 'readingModes', typ: r('ReadingModes') }, + { json: 'pageCount', js: 'pageCount', typ: u(undefined, 0) }, + { json: 'printType', js: 'printType', typ: r('PrintType') }, + { json: 'categories', js: 'categories', typ: u(undefined, a('')) }, + { + json: 'maturityRating', + js: 'maturityRating', + typ: r('MaturityRating'), + }, + { json: 'allowAnonLogging', js: 'allowAnonLogging', typ: true }, + { json: 'contentVersion', js: 'contentVersion', typ: '' }, + { + json: 'panelizationSummary', + js: 'panelizationSummary', + typ: r('PanelizationSummary'), + }, + { json: 'imageLinks', js: 'imageLinks', typ: r('ImageLinks') }, + { json: 'language', js: 'language', typ: r('Language') }, + { json: 'previewLink', js: 'previewLink', typ: '' }, + { json: 'infoLink', js: 'infoLink', typ: '' }, + { json: 'canonicalVolumeLink', js: 'canonicalVolumeLink', typ: '' }, + { json: 'subtitle', js: 'subtitle', typ: u(undefined, '') }, + { json: 'description', js: 'description', typ: u(undefined, '') }, + { json: 'averageRating', js: 'averageRating', typ: u(undefined, 0) }, + { json: 'ratingsCount', js: 'ratingsCount', typ: u(undefined, 0) }, + ], + false, + ), + ImageLinks: o( + [ + { json: 'smallThumbnail', js: 'smallThumbnail', typ: '' }, + { json: 'thumbnail', js: 'thumbnail', typ: '' }, + ], + false, + ), + IndustryIdentifier: o( + [ + { json: 'type', js: 'type', typ: r('Type') }, + { json: 'identifier', js: 'identifier', typ: '' }, + ], + false, + ), + PanelizationSummary: o( + [ + { json: 'containsEpubBubbles', js: 'containsEpubBubbles', typ: true }, + { json: 'containsImageBubbles', js: 'containsImageBubbles', typ: true }, + ], + false, + ), + ReadingModes: o( + [ + { json: 'text', js: 'text', typ: true }, + { json: 'image', js: 'image', typ: true }, + ], + false, + ), + AccessViewStatus: ['NONE', 'SAMPLE'], + Country: ['KR'], + TextToSpeechPermission: ['ALLOWED'], + Viewability: ['NO_PAGES', 'PARTIAL'], + Kind: ['books#volume'], + CurrencyCode: ['KRW'], + Saleability: ['FOR_SALE', 'FOR_SALE_AND_RENTAL', 'NOT_FOR_SALE'], + Type: ['ISBN_10', 'ISBN_13', 'OTHER'], + Language: ['en', 'ko'], + MaturityRating: ['NOT_MATURE'], + PrintType: ['BOOK'], +}; diff --git a/src/book_search_modal.ts b/src/book_search_modal.ts new file mode 100644 index 0000000..50fc769 --- /dev/null +++ b/src/book_search_modal.ts @@ -0,0 +1,74 @@ +import { App, ButtonComponent, Modal, Setting, TextComponent } from 'obsidian'; +import { Book } from './book_suggest_modal'; +import { getByQuery } from './apis/google_books_api'; + +export class BookSearchModal extends Modal { + query: string; + isBusy: boolean; + okBtnRef: ButtonComponent; + onSubmit: (err: Error, result?: Book[]) => void; + + constructor(app: App, onSubmit?: (err: Error, result?: Book[]) => void) { + super(app); + this.onSubmit = onSubmit; + } + + async searchBook() { + if (!this.query) { + throw new Error('No query entered.'); + } + + if (!this.isBusy) { + try { + this.isBusy = true; + this.okBtnRef.setDisabled(false); + this.okBtnRef.setButtonText('Requesting...'); + const searchResults = await getByQuery(this.query); + + this.onSubmit(null, searchResults); + } catch (err) { + this.onSubmit(err); + } finally { + this.close(); + } + } + } + + submitEnterCallback(event: KeyboardEvent) { + if (event.key === 'Enter') { + this.searchBook(); + } + } + + onOpen() { + const { contentEl } = this; + + contentEl.createEl('h2', { text: 'Search Book' }); + + const placeholder = 'Search by keyword or ISBN'; + const textComponent = new TextComponent(contentEl); + textComponent.inputEl.style.width = '100%'; + textComponent + .setPlaceholder(placeholder ?? '') + .onChange(value => (this.query = value)) + .inputEl.addEventListener('keydown', this.submitEnterCallback.bind(this)); + contentEl.appendChild(textComponent.inputEl); + textComponent.inputEl.focus(); + + new Setting(contentEl) + .addButton(btn => btn.setButtonText('Cancel').onClick(() => this.close())) + .addButton(btn => { + return (this.okBtnRef = btn + .setButtonText('Ok') + .setCta() + .onClick(() => { + this.searchBook(); + })); + }); + } + + onClose() { + const { contentEl } = this; + contentEl.empty(); + } +} diff --git a/src/book_suggest_modal.ts b/src/book_suggest_modal.ts new file mode 100644 index 0000000..ae2d64a --- /dev/null +++ b/src/book_suggest_modal.ts @@ -0,0 +1,44 @@ +import { App, SuggestModal } from 'obsidian'; +import { Book } from './models/book.model'; + +export class BookSuggestModal extends SuggestModal { + suggestion: Book[]; + onChoose: (error: Error, result?: Book) => void; + + constructor( + app: App, + suggestion: Book[], + onChoose: (error: Error, result?: Book) => void, + ) { + super(app); + this.suggestion = suggestion; + this.onChoose = onChoose; + } + + // Returns all available suggestions. + getSuggestions(query: string): Book[] { + return this.suggestion.filter(book => { + return ( + book.title.toLowerCase().includes(query.toLowerCase()) || + book.author.toLowerCase().includes(query.toLowerCase()) || + book.publisher.toLowerCase().includes(query.toLowerCase()) + ); + }); + } + + // Renders each suggestion item. + renderSuggestion(book: Book, el: HTMLElement) { + const title = book.title; + const publisher = book.publisher ? `, ${book.publisher}` : ''; + const publishDate = book.publishDate ? `(${book.publishDate})` : ''; + const totalPage = book.totalPage ? `, p${book.totalPage}` : ''; + const subtitle = `${book.author}${publisher}${publishDate}${totalPage}`; + el.createEl('div', { text: title }); + el.createEl('small', { text: subtitle }); + } + + // Perform action on the selected suggestion. + onChooseSuggestion(book: Book, evt: MouseEvent | KeyboardEvent) { + this.onChoose(null, book); + } +} diff --git a/src/editor/corsor_jumper.ts b/src/editor/corsor_jumper.ts new file mode 100644 index 0000000..425bf55 --- /dev/null +++ b/src/editor/corsor_jumper.ts @@ -0,0 +1,24 @@ +import { + App, + Editor, + EditorPosition, + EditorRangeOrCaret, + EditorTransaction, + MarkdownView, +} from 'obsidian'; + +export class CursorJumper { + constructor(private app: App) {} + + async jumpToNextCursorLocation(): Promise { + const activeView = this.app.workspace.getActiveViewOfType(MarkdownView); + if (!activeView) { + return; + } + const content = await this.app.vault.cachedRead(activeView.file); + const indexOffset = content.length + 1; + const editor = activeView.editor; + editor.focus(); + editor.setCursor(indexOffset, 0); + } +} diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..213c6c2 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,86 @@ +import { Notice, Plugin } from 'obsidian'; +import { BookSearchModal } from './book_search_modal'; +import { Book, BookSuggestModal } from './book_suggest_modal'; +import { CursorJumper } from './editor/corsor_jumper'; + +import { + BookSearchSettingTab, + BookSearchPluginSettings, + DEFAULT_SETTINGS, +} from './settings/settings'; +import { + makeFrontMater, + replaceIllegalFileNameCharactersInString, +} from './utils/utils'; + +export default class BookSearchPlugin extends Plugin { + settings: BookSearchPluginSettings; + + async onload() { + await this.loadSettings(); + + // This creates an icon in the left ribbon. + const ribbonIconEl = this.addRibbonIcon( + 'book', + 'Create new book note', + (evt: MouseEvent) => this.createNewBookNote(), + ); + // Perform additional things with the ribbon + ribbonIconEl.addClass('obsidian-book-search-plugin-ribbon-class'); + + // This adds a simple command that can be triggered anywhere + this.addCommand({ + id: 'open-book-search-modal', + name: 'Create new book note', + callback: () => this.createNewBookNote(), + }); // + + // This adds a settings tab so the user can configure various aspects of the plugin + this.addSettingTab(new BookSearchSettingTab(this.app, this)); + } + + async createNewBookNote(): Promise { + try { + const book = await this.openBookSearchModal(); + const fileName = replaceIllegalFileNameCharactersInString(book.title); + const path = `${this.settings.folder.replace(/\/$/, '')}/${fileName}.md`; + const frontMatter = makeFrontMater(book); + const fileContent = `---\n${frontMatter}\n---\n`; + const targetFile = await this.app.vault.create(path, fileContent); + + const activeLeaf = this.app.workspace.activeLeaf; + if (!activeLeaf) { + console.warn('No active leaf'); + return; + } + await activeLeaf.openFile(targetFile, { state: { mode: 'source' } }); + activeLeaf.setEphemeralState({ rename: 'all' }); + await new CursorJumper(this.app).jumpToNextCursorLocation(); + } catch (err) { + console.warn(err); + new Notice(err.toString()); + } + } + + async openBookSearchModal(): Promise { + return new Promise((resolve, reject) => { + new BookSearchModal(this.app, (error, results) => { + if (error) return reject(error); + new BookSuggestModal(this.app, results, (error2, selectedBook) => { + if (error2) return reject(error2); + resolve(selectedBook); + }).open(); + }).open(); + }); + } + + onunload() {} + + async loadSettings() { + this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); + } + + async saveSettings() { + await this.saveData(this.settings); + } +} diff --git a/src/models/book.model.ts b/src/models/book.model.ts new file mode 100644 index 0000000..673f4c9 --- /dev/null +++ b/src/models/book.model.ts @@ -0,0 +1,61 @@ +import { camelToSnakeCase } from 'src/utils/utils'; + +export interface Book { + title: string; // 책 제목 + author: string; // 저자 + category?: string; // 카테고리 + publisher?: string; // 출판사 + publishDate?: string; // 출판일 + totalPage?: number | string; // 전체 페이지 + coverUrl?: string; // 커버 URL + status?: string; // 읽기 상태(읽기전, 읽는중, 읽기완료) + startReadDate?: string; // 읽기 시작한 일시 + finishReadDate?: string; // 읽기 완료한 일시 + myRate?: number | string; //나의 평점 + bookNote?: string; //서평 기록 여부 + isbn10?: string; + isbn13?: string; +} + +export class BookModel implements Book { + title: string; + author: string; + category?: string; + publisher?: string; + publishDate?: string; + totalPage?: number | string; + coverUrl?: string; + status?: string; + startReadDate?: string; + finishReadDate?: string; + myRate?: number | string; + bookNote?: string; + isbn10?: string; + isbn13?: string; + + constructor(book: Book) { + this.title = book.title ?? ''; + this.author = book.author ?? ''; + this.category = book.category ?? ''; + this.publisher = book.publisher ?? ''; + this.publishDate = book.publishDate ?? ''; + this.totalPage = book.totalPage ?? ''; + this.coverUrl = book.coverUrl ?? ''; + this.status = book.status ?? ''; + this.startReadDate = book.startReadDate ?? ''; + this.finishReadDate = book.finishReadDate ?? ''; + this.myRate = book.myRate ?? ''; + this.bookNote = book.bookNote ?? ''; + this.isbn10 = book.isbn10 ?? ''; + this.isbn13 = book.isbn13 ?? ''; + } + + toFrontMatter() { + return Object.keys(this) + .map(key => { + const value = this[key]?.toString().trim() ?? ''; + return `${camelToSnakeCase(key)}: ${value}`; + }) + .join('\n'); + } +} diff --git a/src/settings/settings.ts b/src/settings/settings.ts new file mode 100644 index 0000000..4b5b8a8 --- /dev/null +++ b/src/settings/settings.ts @@ -0,0 +1,42 @@ +import { App, PluginSettingTab, Setting } from 'obsidian'; + +import BookSearchPlugin from '../main'; +import { FolderSuggest } from './suggesters/FolderSuggester'; + +export interface BookSearchPluginSettings { + folder: string; +} + +export const DEFAULT_SETTINGS: BookSearchPluginSettings = { + folder: '', +}; + +export class BookSearchSettingTab extends PluginSettingTab { + plugin: BookSearchPlugin; + + constructor(app: App, plugin: BookSearchPlugin) { + super(app, plugin); + this.plugin = plugin; + } + + display(): void { + const { containerEl } = this; + + containerEl.empty(); + + containerEl.createEl('h2', { text: 'Book Search Settings' }); + + new Setting(containerEl) + .setName('New file location') + .setDesc('New book notes will be placed here.') + .addSearch(cb => { + new FolderSuggest(this.app, cb.inputEl); + cb.setPlaceholder('Example: folder1/folder2') + .setValue(this.plugin.settings.folder) + .onChange(new_folder => { + this.plugin.settings.folder = new_folder; + this.plugin.saveSettings(); + }); + }); + } +} diff --git a/src/settings/suggesters/FolderSuggester.ts b/src/settings/suggesters/FolderSuggester.ts new file mode 100644 index 0000000..895e3e0 --- /dev/null +++ b/src/settings/suggesters/FolderSuggester.ts @@ -0,0 +1,33 @@ +// Credits go to Liam's Periodic Notes Plugin: https://github.com/liamcain/obsidian-periodic-notes + +import { TAbstractFile, TFolder } from 'obsidian'; +import { TextInputSuggest } from './suggest'; + +export class FolderSuggest extends TextInputSuggest { + getSuggestions(inputStr: string): TFolder[] { + const abstractFiles = this.app.vault.getAllLoadedFiles(); + const folders: TFolder[] = []; + const lowerCaseInputStr = inputStr.toLowerCase(); + + abstractFiles.forEach((folder: TAbstractFile) => { + if ( + folder instanceof TFolder && + folder.path.toLowerCase().contains(lowerCaseInputStr) + ) { + folders.push(folder); + } + }); + + return folders; + } + + renderSuggestion(file: TFolder, el: HTMLElement): void { + el.setText(file.path); + } + + selectSuggestion(file: TFolder): void { + this.inputEl.value = file.path; + this.inputEl.trigger('input'); + this.close(); + } +} diff --git a/src/settings/suggesters/suggest.ts b/src/settings/suggesters/suggest.ts new file mode 100644 index 0000000..e0b567a --- /dev/null +++ b/src/settings/suggesters/suggest.ts @@ -0,0 +1,197 @@ +// Credits go to Liam's Periodic Notes Plugin: https://github.com/liamcain/obsidian-periodic-notes + +import { App, ISuggestOwner, Scope } from 'obsidian'; +import { createPopper, Instance as PopperInstance } from '@popperjs/core'; + +const wrapAround = (value: number, size: number): number => { + return ((value % size) + size) % size; +}; + +class Suggest { + private owner: ISuggestOwner; + private values: T[]; + private suggestions: HTMLDivElement[]; + private selectedItem: number; + private containerEl: HTMLElement; + + constructor(owner: ISuggestOwner, containerEl: HTMLElement, scope: Scope) { + this.owner = owner; + this.containerEl = containerEl; + + containerEl.on( + 'click', + '.suggestion-item', + this.onSuggestionClick.bind(this), + ); + containerEl.on( + 'mousemove', + '.suggestion-item', + this.onSuggestionMouseover.bind(this), + ); + + scope.register([], 'ArrowUp', event => { + if (!event.isComposing) { + this.setSelectedItem(this.selectedItem - 1, true); + return false; + } + }); + + scope.register([], 'ArrowDown', event => { + if (!event.isComposing) { + this.setSelectedItem(this.selectedItem + 1, true); + return false; + } + }); + + scope.register([], 'Enter', event => { + if (!event.isComposing) { + this.useSelectedItem(event); + return false; + } + }); + } + + onSuggestionClick(event: MouseEvent, el: HTMLDivElement): void { + event.preventDefault(); + + const item = this.suggestions.indexOf(el); + this.setSelectedItem(item, false); + this.useSelectedItem(event); + } + + onSuggestionMouseover(_event: MouseEvent, el: HTMLDivElement): void { + const item = this.suggestions.indexOf(el); + this.setSelectedItem(item, false); + } + + setSuggestions(values: T[]) { + this.containerEl.empty(); + const suggestionEls: HTMLDivElement[] = []; + + values.forEach(value => { + const suggestionEl = this.containerEl.createDiv('suggestion-item'); + this.owner.renderSuggestion(value, suggestionEl); + suggestionEls.push(suggestionEl); + }); + + this.values = values; + this.suggestions = suggestionEls; + this.setSelectedItem(0, false); + } + + useSelectedItem(event: MouseEvent | KeyboardEvent) { + const currentValue = this.values[this.selectedItem]; + if (currentValue) { + this.owner.selectSuggestion(currentValue, event); + } + } + + setSelectedItem(selectedIndex: number, scrollIntoView: boolean) { + const normalizedIndex = wrapAround(selectedIndex, this.suggestions.length); + const prevSelectedSuggestion = this.suggestions[this.selectedItem]; + const selectedSuggestion = this.suggestions[normalizedIndex]; + + prevSelectedSuggestion?.removeClass('is-selected'); + selectedSuggestion?.addClass('is-selected'); + + this.selectedItem = normalizedIndex; + + if (scrollIntoView) { + selectedSuggestion.scrollIntoView(false); + } + } +} + +export abstract class TextInputSuggest implements ISuggestOwner { + protected app: App; + protected inputEl: HTMLInputElement | HTMLTextAreaElement; + + private popper: PopperInstance; + private scope: Scope; + private suggestEl: HTMLElement; + private suggest: Suggest; + + constructor(app: App, inputEl: HTMLInputElement | HTMLTextAreaElement) { + this.app = app; + this.inputEl = inputEl; + this.scope = new Scope(); + + this.suggestEl = createDiv('suggestion-container'); + const suggestion = this.suggestEl.createDiv('suggestion'); + this.suggest = new Suggest(this, suggestion, this.scope); + + this.scope.register([], 'Escape', this.close.bind(this)); + + this.inputEl.addEventListener('input', this.onInputChanged.bind(this)); + this.inputEl.addEventListener('focus', this.onInputChanged.bind(this)); + this.inputEl.addEventListener('blur', this.close.bind(this)); + this.suggestEl.on( + 'mousedown', + '.suggestion-container', + (event: MouseEvent) => { + event.preventDefault(); + }, + ); + } + + onInputChanged(): void { + const inputStr = this.inputEl.value; + const suggestions = this.getSuggestions(inputStr); + + if (!suggestions) { + this.close(); + return; + } + + if (suggestions.length > 0) { + this.suggest.setSuggestions(suggestions); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + this.open((this.app).dom.appContainerEl, this.inputEl); + } else { + this.close(); + } + } + + open(container: HTMLElement, inputEl: HTMLElement): void { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (this.app).keymap.pushScope(this.scope); + + container.appendChild(this.suggestEl); + this.popper = createPopper(inputEl, this.suggestEl, { + placement: 'bottom-start', + modifiers: [ + { + name: 'sameWidth', + enabled: true, + fn: ({ state, instance }) => { + // Note: positioning needs to be calculated twice - + // first pass - positioning it according to the width of the popper + // second pass - position it with the width bound to the reference element + // we need to early exit to avoid an infinite loop + const targetWidth = `${state.rects.reference.width}px`; + if (state.styles.popper.width === targetWidth) { + return; + } + state.styles.popper.width = targetWidth; + instance.update(); + }, + phase: 'beforeWrite', + requires: ['computeStyles'], + }, + ], + }); + } + + close(): void { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (this.app).keymap.popScope(this.scope); + + this.suggest.setSuggestions([]); + if (this.popper) this.popper.destroy(); + this.suggestEl.detach(); + } + + abstract getSuggestions(inputStr: string): T[]; + abstract renderSuggestion(item: T, el: HTMLElement): void; + abstract selectSuggestion(item: T): void; +} diff --git a/src/utils/utils.ts b/src/utils/utils.ts new file mode 100644 index 0000000..0965209 --- /dev/null +++ b/src/utils/utils.ts @@ -0,0 +1,17 @@ +import { Book, BookModel } from 'src/models/book.model'; + +export function replaceIllegalFileNameCharactersInString(string: string) { + return string.replace(/[\\,#%&{}/*<>$":@.]*/g, ''); +} + +export function isISBN(str: string) { + return /^(97(8|9))?\d{9}(\d|X)$/.test(str); +} + +export function makeFrontMater(book: Book): string { + return new BookModel(book).toFrontMatter(); +} + +export function camelToSnakeCase(str) { + return str.replace(/[A-Z]/g, letter => `_${letter?.toLowerCase()}`); +} diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..74b77f6 --- /dev/null +++ b/styles.css @@ -0,0 +1 @@ +/* Sets all the text color to red! */ diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..902bbee --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "inlineSourceMap": true, + "inlineSources": true, + "module": "ESNext", + "target": "ES6", + "allowJs": true, + "noImplicitAny": false, + "moduleResolution": "node", + "importHelpers": true, + "isolatedModules": true, + "lib": [ + "DOM", + "ES5", + "ES6", + "ES7" + ] + }, + "include": [ + "**/*.ts" + ] +} diff --git a/version-bump.mjs b/version-bump.mjs new file mode 100644 index 0000000..d409fa0 --- /dev/null +++ b/version-bump.mjs @@ -0,0 +1,14 @@ +import { readFileSync, writeFileSync } from "fs"; + +const targetVersion = process.env.npm_package_version; + +// read minAppVersion from manifest.json and bump version to target version +let manifest = JSON.parse(readFileSync("manifest.json", "utf8")); +const { minAppVersion } = manifest; +manifest.version = targetVersion; +writeFileSync("manifest.json", JSON.stringify(manifest, null, "\t")); + +// update versions.json with target version and minAppVersion from manifest.json +let versions = JSON.parse(readFileSync("versions.json", "utf8")); +versions[targetVersion] = minAppVersion; +writeFileSync("versions.json", JSON.stringify(versions, null, "\t")); diff --git a/versions.json b/versions.json new file mode 100644 index 0000000..4bca15f --- /dev/null +++ b/versions.json @@ -0,0 +1,4 @@ +{ + "1.0.0": "0.9.7", + "1.0.1": "0.12.0" +}