├── .github └── workflows │ └── release.yml ├── .gitignore ├── .prettierrc ├── CHANGELOG.md ├── LICENSE ├── README.md ├── env.d.ts ├── esbuild.config.mjs ├── git-conventional-commits.json ├── manifest.json ├── package.json ├── pnpm-lock.yaml ├── src ├── CanvasView.ts ├── ModalOnboarding.ts ├── SetingTab.ts ├── fns │ ├── addBackground.ts │ ├── dataUrlToBlob.ts │ ├── getCurrentFileName.ts │ ├── getSelectedText.ts │ └── openView.ts ├── logo.svg ├── main.ts └── queue.ts ├── stuff └── img.png ├── styles.css ├── tsconfig.json ├── version-bump.mjs └── versions.json /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Build obsidian plugin 2 | 3 | on: 4 | push: 5 | tags: 6 | - '*' 7 | env: 8 | PLUGIN_NAME: obsidian-share 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v2 14 | - name: Use Node.js 15 | uses: actions/setup-node@v1 16 | with: 17 | node-version: '14.x' 18 | - name: Build 19 | id: build 20 | run: | 21 | yarn 22 | yarn run build --if-present 23 | mkdir ${{ env.PLUGIN_NAME }} 24 | cp main.js manifest.json ${{ env.PLUGIN_NAME }} 25 | zip -r ${{ env.PLUGIN_NAME }}.zip ${{ env.PLUGIN_NAME }} 26 | ls 27 | echo "::set-output name=tag_name::$(git tag --sort version:refname | tail -n 1)" 28 | - name: Create Release 29 | id: create_release 30 | uses: actions/create-release@v1 31 | env: 32 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 33 | VERSION: ${{ github.ref }} 34 | with: 35 | tag_name: ${{ github.ref }} 36 | release_name: ${{ github.ref }} 37 | draft: false 38 | prerelease: false 39 | - name: Upload zip file 40 | id: upload-zip 41 | uses: actions/upload-release-asset@v1 42 | env: 43 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 44 | with: 45 | upload_url: ${{ steps.create_release.outputs.upload_url }} 46 | asset_path: ./${{ env.PLUGIN_NAME }}.zip 47 | asset_name: ${{ env.PLUGIN_NAME }}-${{ steps.build.outputs.tag_name }}.zip 48 | asset_content_type: application/zip 49 | - name: Upload main.js 50 | id: upload-main 51 | uses: actions/upload-release-asset@v1 52 | env: 53 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 54 | with: 55 | upload_url: ${{ steps.create_release.outputs.upload_url }} 56 | asset_path: ./main.js 57 | asset_name: main.js 58 | asset_content_type: text/javascript 59 | - name: Upload manifest.json 60 | id: upload-manifest 61 | uses: actions/upload-release-asset@v1 62 | env: 63 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 64 | with: 65 | upload_url: ${{ steps.create_release.outputs.upload_url }} 66 | asset_path: ./manifest.json 67 | asset_name: manifest.json 68 | asset_content_type: application/json 69 | 70 | - name: Upload css 71 | id: upload-css 72 | uses: actions/upload-release-asset@v1 73 | env: 74 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 75 | with: 76 | upload_url: ${{ steps.create_release.outputs.upload_url }} 77 | asset_path: ./styles.css 78 | asset_name: styles.css 79 | asset_content_type: text/css 80 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # vscode 2 | .vscode 3 | 4 | # Intellij 5 | *.iml 6 | .idea 7 | 8 | # npm 9 | node_modules 10 | 11 | # Don't include the compiled main.js file in the repo. 12 | # They should be uploaded to GitHub releases instead. 13 | main.js 14 | 15 | # Exclude sourcemaps 16 | *.map 17 | 18 | # obsidian 19 | data.json 20 | 21 | # Exclude macOS Finder (System Explorer) View States 22 | .DS_Store 23 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "none", 3 | "tabWidth": 4, 4 | "semi": false, 5 | "singleQuote": true 6 | } 7 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## **1.0.5** 2023-01-09 (318648e...2e9301a) 2 | 3 | ### chore 4 | * update version (c59a5ce)* update version (e9a0dfe)* update version (2e9301a) 5 | 6 | ### Bug Fixes 7 | * update (318648e) 8 | 9 | 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | All Rights Reserved 2 | 3 | Copyright (c) 2022 Nguyen Van Duoc 4 | 5 | Created by Nguyen Van Duoc 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 8 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 9 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 10 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 11 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 12 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 13 | THE SOFTWARE. 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![](./stuff/img.png) 2 | 3 | # Obsidian Share 4 | 5 | This plugin allows you to embed any website in your Obsidian. 6 | 7 | ## Features 8 | 9 | - Generate gradient image for your text 10 | 11 | ## Usage 12 | 13 | 1. Drop text to the gradient 14 | 1. click "Copy to clipboard" 15 | 1. Paste it to your note or Twitter 16 | -------------------------------------------------------------------------------- /env.d.ts: -------------------------------------------------------------------------------- 1 | declare type FramePosition = 'left' | 'center' | 'right' 2 | -------------------------------------------------------------------------------- /esbuild.config.mjs: -------------------------------------------------------------------------------- 1 | import esbuild from 'esbuild' 2 | import process from 'process' 3 | import builtins from 'builtin-modules' 4 | 5 | const banner = `/* 6 | THIS IS A GENERATED/BUNDLED FILE BY ESBUILD 7 | if you want to view the source, please visit the github repository of this plugin 8 | */ 9 | ` 10 | 11 | const prod = process.argv[2] === 'production' 12 | 13 | esbuild 14 | .build({ 15 | banner: { 16 | js: banner 17 | }, 18 | entryPoints: ['src/main.ts'], 19 | bundle: true, 20 | external: [ 21 | 'obsidian', 22 | 'electron', 23 | '@codemirror/autocomplete', 24 | '@codemirror/collab', 25 | '@codemirror/commands', 26 | '@codemirror/language', 27 | '@codemirror/lint', 28 | '@codemirror/search', 29 | '@codemirror/state', 30 | '@codemirror/view', 31 | '@lezer/common', 32 | '@lezer/highlight', 33 | '@lezer/lr', 34 | ...builtins 35 | ], 36 | format: 'cjs', 37 | watch: !prod, 38 | target: 'es2018', 39 | logLevel: 'info', 40 | sourcemap: prod ? false : 'inline', 41 | treeShaking: true, 42 | outfile: 'main.js', 43 | loader:{ 44 | '.svg': 'text' 45 | } 46 | }) 47 | .catch(() => process.exit(1)) 48 | -------------------------------------------------------------------------------- /git-conventional-commits.json: -------------------------------------------------------------------------------- 1 | { 2 | "convention" : { 3 | "commitTypes": [ 4 | "feat", 5 | "fix", 6 | "perf", 7 | "refactor", 8 | "style", 9 | "test", 10 | "build", 11 | "ops", 12 | "docs", 13 | "merge", 14 | "chore" 15 | ], 16 | "commitScopes": [], 17 | "releaseTagGlobPattern": "[0-9]*.[0-9]*.[0-9]*" 18 | }, 19 | 20 | "changelog" : { 21 | "commitTypes": [ 22 | "feat", 23 | "fix", 24 | "perf", 25 | "merge", 26 | "chore" 27 | ], 28 | "includeInvalidCommits": true, 29 | "commitScopes": [], 30 | "commitIgnoreRegexPattern": "^WIP ", 31 | "headlines": { 32 | "feat": "Features", 33 | "fix": "Bug Fixes", 34 | "perf": "Performance Improvements", 35 | "merge": "Merges", 36 | "breakingChange": "BREAKING CHANGES" 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "quote-share", 3 | "name": "Quote Share", 4 | "version": "1.0.5", 5 | "minAppVersion": "0.15.0", 6 | "description": "With this plugin, you can easily generate beautiful gradient images from text and share them on social media.", 7 | "author": "duocnv", 8 | "authorUrl": "https://twitter.com/duocdev", 9 | "fundingUrl": { 10 | "Buy Me a Coffee": "https://paypal.me/duocnguyen", 11 | "Follow me": "https://twitter.com/duocdev" 12 | }, 13 | "isDesktopOnly": true 14 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "quote-share", 3 | "version": "1.0.5", 4 | "description": "Generate gradient images from your Obsidian notes", 5 | "main": "main.js", 6 | "scripts": { 7 | "dev": "node esbuild.config.mjs", 8 | "build": "tsc -noEmit -skipLibCheck && node esbuild.config.mjs production", 9 | "version": "node version-bump.mjs && git add manifest.json versions.json", 10 | "format": "prettier --write ." 11 | }, 12 | "keywords": [], 13 | "author": "", 14 | "license": "MIT", 15 | "devDependencies": { 16 | "@types/chrome": "^0.0.203", 17 | "@types/fabric": "^4.5.14", 18 | "@types/node": "^16.11.6", 19 | "@typescript-eslint/eslint-plugin": "5.29.0", 20 | "@typescript-eslint/parser": "5.29.0", 21 | "builtin-modules": "3.3.0", 22 | "esbuild": "0.14.47", 23 | "obsidian": "latest", 24 | "prettier": "^2.8.1", 25 | "tslib": "2.4.0", 26 | "typescript": "4.7.4" 27 | }, 28 | "dependencies": { 29 | "fabric": "^5.2.4" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@types/chrome': ^0.0.203 5 | '@types/fabric': ^4.5.14 6 | '@types/node': ^16.11.6 7 | '@typescript-eslint/eslint-plugin': 5.29.0 8 | '@typescript-eslint/parser': 5.29.0 9 | builtin-modules: 3.3.0 10 | esbuild: 0.14.47 11 | fabric: ^5.2.4 12 | obsidian: latest 13 | prettier: ^2.8.1 14 | tslib: 2.4.0 15 | typescript: 4.7.4 16 | 17 | dependencies: 18 | fabric: 5.2.4 19 | 20 | devDependencies: 21 | '@types/chrome': 0.0.203 22 | '@types/fabric': 4.5.14 23 | '@types/node': 16.18.7 24 | '@typescript-eslint/eslint-plugin': 5.29.0_yl5z64k6lhc4hlrfojtltgnk2q 25 | '@typescript-eslint/parser': 5.29.0_wogtpudmlxya2leoxia5qf2rl4 26 | builtin-modules: 3.3.0 27 | esbuild: 0.14.47 28 | obsidian: 1.1.1_ootph5s5ydlpya6ok6lxu3ipni 29 | prettier: 2.8.1 30 | tslib: 2.4.0 31 | typescript: 4.7.4 32 | 33 | packages: 34 | 35 | /@codemirror/state/6.2.0: 36 | resolution: {integrity: sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA==} 37 | dev: true 38 | 39 | /@codemirror/view/6.7.2: 40 | resolution: {integrity: sha512-HeK2GyycxceaQVyvYVYXmn1vUKYYBsHCcfGRSsFO+3fRRtwXx2STK0YiFBmiWx2vtU9gUAJgIUXUN8a0osI8Ng==} 41 | dependencies: 42 | '@codemirror/state': 6.2.0 43 | style-mod: 4.0.0 44 | w3c-keyname: 2.2.6 45 | dev: true 46 | 47 | /@eslint/eslintrc/1.4.1: 48 | resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} 49 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 50 | dependencies: 51 | ajv: 6.12.6 52 | debug: 4.3.4 53 | espree: 9.4.1 54 | globals: 13.19.0 55 | ignore: 5.2.1 56 | import-fresh: 3.3.0 57 | js-yaml: 4.1.0 58 | minimatch: 3.1.2 59 | strip-json-comments: 3.1.1 60 | transitivePeerDependencies: 61 | - supports-color 62 | dev: true 63 | 64 | /@humanwhocodes/config-array/0.11.8: 65 | resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} 66 | engines: {node: '>=10.10.0'} 67 | dependencies: 68 | '@humanwhocodes/object-schema': 1.2.1 69 | debug: 4.3.4 70 | minimatch: 3.1.2 71 | transitivePeerDependencies: 72 | - supports-color 73 | dev: true 74 | 75 | /@humanwhocodes/module-importer/1.0.1: 76 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 77 | engines: {node: '>=12.22'} 78 | dev: true 79 | 80 | /@humanwhocodes/object-schema/1.2.1: 81 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 82 | dev: true 83 | 84 | /@mapbox/node-pre-gyp/1.0.10: 85 | resolution: {integrity: sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==} 86 | hasBin: true 87 | dependencies: 88 | detect-libc: 2.0.1 89 | https-proxy-agent: 5.0.1 90 | make-dir: 3.1.0 91 | node-fetch: 2.6.7 92 | nopt: 5.0.0 93 | npmlog: 5.0.1 94 | rimraf: 3.0.2 95 | semver: 7.3.8 96 | tar: 6.1.13 97 | transitivePeerDependencies: 98 | - encoding 99 | - supports-color 100 | dev: false 101 | optional: true 102 | 103 | /@nodelib/fs.scandir/2.1.5: 104 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 105 | engines: {node: '>= 8'} 106 | dependencies: 107 | '@nodelib/fs.stat': 2.0.5 108 | run-parallel: 1.2.0 109 | dev: true 110 | 111 | /@nodelib/fs.stat/2.0.5: 112 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 113 | engines: {node: '>= 8'} 114 | dev: true 115 | 116 | /@nodelib/fs.walk/1.2.8: 117 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 118 | engines: {node: '>= 8'} 119 | dependencies: 120 | '@nodelib/fs.scandir': 2.1.5 121 | fastq: 1.14.0 122 | dev: true 123 | 124 | /@tootallnate/once/2.0.0: 125 | resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} 126 | engines: {node: '>= 10'} 127 | dev: false 128 | optional: true 129 | 130 | /@types/chrome/0.0.203: 131 | resolution: {integrity: sha512-JlQNebwpBETVc8U1Rr2inDFuOTtn0lahRAhnddx1dd0S5RrLAFJEEsyIu7AXI14mkCgSunksnuLGioH8kvBqRA==} 132 | dependencies: 133 | '@types/filesystem': 0.0.32 134 | '@types/har-format': 1.2.10 135 | dev: true 136 | 137 | /@types/codemirror/0.0.108: 138 | resolution: {integrity: sha512-3FGFcus0P7C2UOGCNUVENqObEb4SFk+S8Dnxq7K6aIsLVs/vDtlangl3PEO0ykaKXyK56swVF6Nho7VsA44uhw==} 139 | dependencies: 140 | '@types/tern': 0.23.4 141 | dev: true 142 | 143 | /@types/estree/1.0.0: 144 | resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} 145 | dev: true 146 | 147 | /@types/fabric/4.5.14: 148 | resolution: {integrity: sha512-Hdi/HlG9+7a6eOCGQ0ViwBRxbgSK2Na8SE2oNMdhbn+dRkrH0jrjZVNnSspQzyxqA4OL6A3DotfavTwj7qEz/A==} 149 | dev: true 150 | 151 | /@types/filesystem/0.0.32: 152 | resolution: {integrity: sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ==} 153 | dependencies: 154 | '@types/filewriter': 0.0.29 155 | dev: true 156 | 157 | /@types/filewriter/0.0.29: 158 | resolution: {integrity: sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==} 159 | dev: true 160 | 161 | /@types/har-format/1.2.10: 162 | resolution: {integrity: sha512-o0J30wqycjF5miWDKYKKzzOU1ZTLuA42HZ4HE7/zqTOc/jTLdQ5NhYWvsRQo45Nfi1KHoRdNhteSI4BAxTF1Pg==} 163 | dev: true 164 | 165 | /@types/json-schema/7.0.11: 166 | resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} 167 | dev: true 168 | 169 | /@types/node/16.18.7: 170 | resolution: {integrity: sha512-SghuoXv8ghvkrKjTyvhRTeNzivPzGQ8pe09PPGdyqsExiKvBYV/6E3imvjsaJuW8ca61qQN2+SoSzyEHS9r2LA==} 171 | dev: true 172 | 173 | /@types/tern/0.23.4: 174 | resolution: {integrity: sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==} 175 | dependencies: 176 | '@types/estree': 1.0.0 177 | dev: true 178 | 179 | /@typescript-eslint/eslint-plugin/5.29.0_yl5z64k6lhc4hlrfojtltgnk2q: 180 | resolution: {integrity: sha512-kgTsISt9pM53yRFQmLZ4npj99yGl3x3Pl7z4eA66OuTzAGC4bQB5H5fuLwPnqTKU3yyrrg4MIhjF17UYnL4c0w==} 181 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 182 | peerDependencies: 183 | '@typescript-eslint/parser': ^5.0.0 184 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 185 | typescript: '*' 186 | peerDependenciesMeta: 187 | typescript: 188 | optional: true 189 | dependencies: 190 | '@typescript-eslint/parser': 5.29.0_wogtpudmlxya2leoxia5qf2rl4 191 | '@typescript-eslint/scope-manager': 5.29.0 192 | '@typescript-eslint/type-utils': 5.29.0_wogtpudmlxya2leoxia5qf2rl4 193 | '@typescript-eslint/utils': 5.29.0_wogtpudmlxya2leoxia5qf2rl4 194 | debug: 4.3.4 195 | eslint: 8.31.0 196 | functional-red-black-tree: 1.0.1 197 | ignore: 5.2.1 198 | regexpp: 3.2.0 199 | semver: 7.3.8 200 | tsutils: 3.21.0_typescript@4.7.4 201 | typescript: 4.7.4 202 | transitivePeerDependencies: 203 | - supports-color 204 | dev: true 205 | 206 | /@typescript-eslint/parser/5.29.0_wogtpudmlxya2leoxia5qf2rl4: 207 | resolution: {integrity: sha512-ruKWTv+x0OOxbzIw9nW5oWlUopvP/IQDjB5ZqmTglLIoDTctLlAJpAQFpNPJP/ZI7hTT9sARBosEfaKbcFuECw==} 208 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 209 | peerDependencies: 210 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 211 | typescript: '*' 212 | peerDependenciesMeta: 213 | typescript: 214 | optional: true 215 | dependencies: 216 | '@typescript-eslint/scope-manager': 5.29.0 217 | '@typescript-eslint/types': 5.29.0 218 | '@typescript-eslint/typescript-estree': 5.29.0_typescript@4.7.4 219 | debug: 4.3.4 220 | eslint: 8.31.0 221 | typescript: 4.7.4 222 | transitivePeerDependencies: 223 | - supports-color 224 | dev: true 225 | 226 | /@typescript-eslint/scope-manager/5.29.0: 227 | resolution: {integrity: sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA==} 228 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 229 | dependencies: 230 | '@typescript-eslint/types': 5.29.0 231 | '@typescript-eslint/visitor-keys': 5.29.0 232 | dev: true 233 | 234 | /@typescript-eslint/type-utils/5.29.0_wogtpudmlxya2leoxia5qf2rl4: 235 | resolution: {integrity: sha512-JK6bAaaiJozbox3K220VRfCzLa9n0ib/J+FHIwnaV3Enw/TO267qe0pM1b1QrrEuy6xun374XEAsRlA86JJnyg==} 236 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 237 | peerDependencies: 238 | eslint: '*' 239 | typescript: '*' 240 | peerDependenciesMeta: 241 | typescript: 242 | optional: true 243 | dependencies: 244 | '@typescript-eslint/utils': 5.29.0_wogtpudmlxya2leoxia5qf2rl4 245 | debug: 4.3.4 246 | eslint: 8.31.0 247 | tsutils: 3.21.0_typescript@4.7.4 248 | typescript: 4.7.4 249 | transitivePeerDependencies: 250 | - supports-color 251 | dev: true 252 | 253 | /@typescript-eslint/types/5.29.0: 254 | resolution: {integrity: sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg==} 255 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 256 | dev: true 257 | 258 | /@typescript-eslint/typescript-estree/5.29.0_typescript@4.7.4: 259 | resolution: {integrity: sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ==} 260 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 261 | peerDependencies: 262 | typescript: '*' 263 | peerDependenciesMeta: 264 | typescript: 265 | optional: true 266 | dependencies: 267 | '@typescript-eslint/types': 5.29.0 268 | '@typescript-eslint/visitor-keys': 5.29.0 269 | debug: 4.3.4 270 | globby: 11.1.0 271 | is-glob: 4.0.3 272 | semver: 7.3.8 273 | tsutils: 3.21.0_typescript@4.7.4 274 | typescript: 4.7.4 275 | transitivePeerDependencies: 276 | - supports-color 277 | dev: true 278 | 279 | /@typescript-eslint/utils/5.29.0_wogtpudmlxya2leoxia5qf2rl4: 280 | resolution: {integrity: sha512-3Eos6uP1nyLOBayc/VUdKZikV90HahXE5Dx9L5YlSd/7ylQPXhLk1BYb29SDgnBnTp+jmSZUU0QxUiyHgW4p7A==} 281 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 282 | peerDependencies: 283 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 284 | dependencies: 285 | '@types/json-schema': 7.0.11 286 | '@typescript-eslint/scope-manager': 5.29.0 287 | '@typescript-eslint/types': 5.29.0 288 | '@typescript-eslint/typescript-estree': 5.29.0_typescript@4.7.4 289 | eslint: 8.31.0 290 | eslint-scope: 5.1.1 291 | eslint-utils: 3.0.0_eslint@8.31.0 292 | transitivePeerDependencies: 293 | - supports-color 294 | - typescript 295 | dev: true 296 | 297 | /@typescript-eslint/visitor-keys/5.29.0: 298 | resolution: {integrity: sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ==} 299 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 300 | dependencies: 301 | '@typescript-eslint/types': 5.29.0 302 | eslint-visitor-keys: 3.3.0 303 | dev: true 304 | 305 | /abab/2.0.6: 306 | resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} 307 | dev: false 308 | optional: true 309 | 310 | /abbrev/1.1.1: 311 | resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} 312 | dev: false 313 | optional: true 314 | 315 | /acorn-globals/6.0.0: 316 | resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} 317 | dependencies: 318 | acorn: 7.4.1 319 | acorn-walk: 7.2.0 320 | dev: false 321 | optional: true 322 | 323 | /acorn-jsx/5.3.2_acorn@8.8.1: 324 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 325 | peerDependencies: 326 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 327 | dependencies: 328 | acorn: 8.8.1 329 | dev: true 330 | 331 | /acorn-walk/7.2.0: 332 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} 333 | engines: {node: '>=0.4.0'} 334 | dev: false 335 | optional: true 336 | 337 | /acorn/7.4.1: 338 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} 339 | engines: {node: '>=0.4.0'} 340 | hasBin: true 341 | dev: false 342 | optional: true 343 | 344 | /acorn/8.8.1: 345 | resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} 346 | engines: {node: '>=0.4.0'} 347 | hasBin: true 348 | 349 | /agent-base/6.0.2: 350 | resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} 351 | engines: {node: '>= 6.0.0'} 352 | dependencies: 353 | debug: 4.3.4 354 | transitivePeerDependencies: 355 | - supports-color 356 | dev: false 357 | optional: true 358 | 359 | /ajv/6.12.6: 360 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 361 | dependencies: 362 | fast-deep-equal: 3.1.3 363 | fast-json-stable-stringify: 2.1.0 364 | json-schema-traverse: 0.4.1 365 | uri-js: 4.4.1 366 | dev: true 367 | 368 | /ansi-regex/5.0.1: 369 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 370 | engines: {node: '>=8'} 371 | 372 | /ansi-styles/4.3.0: 373 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 374 | engines: {node: '>=8'} 375 | dependencies: 376 | color-convert: 2.0.1 377 | dev: true 378 | 379 | /aproba/2.0.0: 380 | resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} 381 | dev: false 382 | optional: true 383 | 384 | /are-we-there-yet/2.0.0: 385 | resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} 386 | engines: {node: '>=10'} 387 | dependencies: 388 | delegates: 1.0.0 389 | readable-stream: 3.6.0 390 | dev: false 391 | optional: true 392 | 393 | /argparse/2.0.1: 394 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 395 | dev: true 396 | 397 | /array-union/2.1.0: 398 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 399 | engines: {node: '>=8'} 400 | dev: true 401 | 402 | /asynckit/0.4.0: 403 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 404 | dev: false 405 | optional: true 406 | 407 | /balanced-match/1.0.2: 408 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 409 | 410 | /brace-expansion/1.1.11: 411 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 412 | dependencies: 413 | balanced-match: 1.0.2 414 | concat-map: 0.0.1 415 | 416 | /braces/3.0.2: 417 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 418 | engines: {node: '>=8'} 419 | dependencies: 420 | fill-range: 7.0.1 421 | dev: true 422 | 423 | /browser-process-hrtime/1.0.0: 424 | resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} 425 | dev: false 426 | optional: true 427 | 428 | /builtin-modules/3.3.0: 429 | resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} 430 | engines: {node: '>=6'} 431 | dev: true 432 | 433 | /callsites/3.1.0: 434 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 435 | engines: {node: '>=6'} 436 | dev: true 437 | 438 | /canvas/2.10.2: 439 | resolution: {integrity: sha512-FSmlsip0nZ0U4Zcfht0qBJqDhlfGuevTZKE8h+dBOYrJjGvY3iqMGSzzbvkaFhvMXiVxfcMaPHS/kge++T5SKg==} 440 | engines: {node: '>=6'} 441 | requiresBuild: true 442 | dependencies: 443 | '@mapbox/node-pre-gyp': 1.0.10 444 | nan: 2.17.0 445 | simple-get: 3.1.1 446 | transitivePeerDependencies: 447 | - encoding 448 | - supports-color 449 | dev: false 450 | optional: true 451 | 452 | /chalk/4.1.2: 453 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 454 | engines: {node: '>=10'} 455 | dependencies: 456 | ansi-styles: 4.3.0 457 | supports-color: 7.2.0 458 | dev: true 459 | 460 | /chownr/2.0.0: 461 | resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} 462 | engines: {node: '>=10'} 463 | dev: false 464 | optional: true 465 | 466 | /color-convert/2.0.1: 467 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 468 | engines: {node: '>=7.0.0'} 469 | dependencies: 470 | color-name: 1.1.4 471 | dev: true 472 | 473 | /color-name/1.1.4: 474 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 475 | dev: true 476 | 477 | /color-support/1.1.3: 478 | resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} 479 | hasBin: true 480 | dev: false 481 | optional: true 482 | 483 | /combined-stream/1.0.8: 484 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 485 | engines: {node: '>= 0.8'} 486 | dependencies: 487 | delayed-stream: 1.0.0 488 | dev: false 489 | optional: true 490 | 491 | /concat-map/0.0.1: 492 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 493 | 494 | /console-control-strings/1.1.0: 495 | resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} 496 | dev: false 497 | optional: true 498 | 499 | /cross-spawn/7.0.3: 500 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 501 | engines: {node: '>= 8'} 502 | dependencies: 503 | path-key: 3.1.1 504 | shebang-command: 2.0.0 505 | which: 2.0.2 506 | dev: true 507 | 508 | /cssom/0.3.8: 509 | resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} 510 | dev: false 511 | optional: true 512 | 513 | /cssom/0.5.0: 514 | resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} 515 | dev: false 516 | optional: true 517 | 518 | /cssstyle/2.3.0: 519 | resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} 520 | engines: {node: '>=8'} 521 | dependencies: 522 | cssom: 0.3.8 523 | dev: false 524 | optional: true 525 | 526 | /data-urls/3.0.2: 527 | resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} 528 | engines: {node: '>=12'} 529 | dependencies: 530 | abab: 2.0.6 531 | whatwg-mimetype: 3.0.0 532 | whatwg-url: 11.0.0 533 | dev: false 534 | optional: true 535 | 536 | /debug/4.3.4: 537 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 538 | engines: {node: '>=6.0'} 539 | peerDependencies: 540 | supports-color: '*' 541 | peerDependenciesMeta: 542 | supports-color: 543 | optional: true 544 | dependencies: 545 | ms: 2.1.2 546 | 547 | /decimal.js/10.4.3: 548 | resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} 549 | dev: false 550 | optional: true 551 | 552 | /decompress-response/4.2.1: 553 | resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==} 554 | engines: {node: '>=8'} 555 | dependencies: 556 | mimic-response: 2.1.0 557 | dev: false 558 | optional: true 559 | 560 | /deep-is/0.1.4: 561 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 562 | 563 | /delayed-stream/1.0.0: 564 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 565 | engines: {node: '>=0.4.0'} 566 | dev: false 567 | optional: true 568 | 569 | /delegates/1.0.0: 570 | resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} 571 | dev: false 572 | optional: true 573 | 574 | /detect-libc/2.0.1: 575 | resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} 576 | engines: {node: '>=8'} 577 | dev: false 578 | optional: true 579 | 580 | /dir-glob/3.0.1: 581 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 582 | engines: {node: '>=8'} 583 | dependencies: 584 | path-type: 4.0.0 585 | dev: true 586 | 587 | /doctrine/3.0.0: 588 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 589 | engines: {node: '>=6.0.0'} 590 | dependencies: 591 | esutils: 2.0.3 592 | dev: true 593 | 594 | /domexception/4.0.0: 595 | resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} 596 | engines: {node: '>=12'} 597 | dependencies: 598 | webidl-conversions: 7.0.0 599 | dev: false 600 | optional: true 601 | 602 | /emoji-regex/8.0.0: 603 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 604 | dev: false 605 | optional: true 606 | 607 | /esbuild-android-64/0.14.47: 608 | resolution: {integrity: sha512-R13Bd9+tqLVFndncMHssZrPWe6/0Kpv2/dt4aA69soX4PRxlzsVpCvoJeFE8sOEoeVEiBkI0myjlkDodXlHa0g==} 609 | engines: {node: '>=12'} 610 | cpu: [x64] 611 | os: [android] 612 | requiresBuild: true 613 | dev: true 614 | optional: true 615 | 616 | /esbuild-android-arm64/0.14.47: 617 | resolution: {integrity: sha512-OkwOjj7ts4lBp/TL6hdd8HftIzOy/pdtbrNA4+0oVWgGG64HrdVzAF5gxtJufAPOsEjkyh1oIYvKAUinKKQRSQ==} 618 | engines: {node: '>=12'} 619 | cpu: [arm64] 620 | os: [android] 621 | requiresBuild: true 622 | dev: true 623 | optional: true 624 | 625 | /esbuild-darwin-64/0.14.47: 626 | resolution: {integrity: sha512-R6oaW0y5/u6Eccti/TS6c/2c1xYTb1izwK3gajJwi4vIfNs1s8B1dQzI1UiC9T61YovOQVuePDcfqHLT3mUZJA==} 627 | engines: {node: '>=12'} 628 | cpu: [x64] 629 | os: [darwin] 630 | requiresBuild: true 631 | dev: true 632 | optional: true 633 | 634 | /esbuild-darwin-arm64/0.14.47: 635 | resolution: {integrity: sha512-seCmearlQyvdvM/noz1L9+qblC5vcBrhUaOoLEDDoLInF/VQ9IkobGiLlyTPYP5dW1YD4LXhtBgOyevoIHGGnw==} 636 | engines: {node: '>=12'} 637 | cpu: [arm64] 638 | os: [darwin] 639 | requiresBuild: true 640 | dev: true 641 | optional: true 642 | 643 | /esbuild-freebsd-64/0.14.47: 644 | resolution: {integrity: sha512-ZH8K2Q8/Ux5kXXvQMDsJcxvkIwut69KVrYQhza/ptkW50DC089bCVrJZZ3sKzIoOx+YPTrmsZvqeZERjyYrlvQ==} 645 | engines: {node: '>=12'} 646 | cpu: [x64] 647 | os: [freebsd] 648 | requiresBuild: true 649 | dev: true 650 | optional: true 651 | 652 | /esbuild-freebsd-arm64/0.14.47: 653 | resolution: {integrity: sha512-ZJMQAJQsIOhn3XTm7MPQfCzEu5b9STNC+s90zMWe2afy9EwnHV7Ov7ohEMv2lyWlc2pjqLW8QJnz2r0KZmeAEQ==} 654 | engines: {node: '>=12'} 655 | cpu: [arm64] 656 | os: [freebsd] 657 | requiresBuild: true 658 | dev: true 659 | optional: true 660 | 661 | /esbuild-linux-32/0.14.47: 662 | resolution: {integrity: sha512-FxZOCKoEDPRYvq300lsWCTv1kcHgiiZfNrPtEhFAiqD7QZaXrad8LxyJ8fXGcWzIFzRiYZVtB3ttvITBvAFhKw==} 663 | engines: {node: '>=12'} 664 | cpu: [ia32] 665 | os: [linux] 666 | requiresBuild: true 667 | dev: true 668 | optional: true 669 | 670 | /esbuild-linux-64/0.14.47: 671 | resolution: {integrity: sha512-nFNOk9vWVfvWYF9YNYksZptgQAdstnDCMtR6m42l5Wfugbzu11VpMCY9XrD4yFxvPo9zmzcoUL/88y0lfJZJJw==} 672 | engines: {node: '>=12'} 673 | cpu: [x64] 674 | os: [linux] 675 | requiresBuild: true 676 | dev: true 677 | optional: true 678 | 679 | /esbuild-linux-arm/0.14.47: 680 | resolution: {integrity: sha512-ZGE1Bqg/gPRXrBpgpvH81tQHpiaGxa8c9Rx/XOylkIl2ypLuOcawXEAo8ls+5DFCcRGt/o3sV+PzpAFZobOsmA==} 681 | engines: {node: '>=12'} 682 | cpu: [arm] 683 | os: [linux] 684 | requiresBuild: true 685 | dev: true 686 | optional: true 687 | 688 | /esbuild-linux-arm64/0.14.47: 689 | resolution: {integrity: sha512-ywfme6HVrhWcevzmsufjd4iT3PxTfCX9HOdxA7Hd+/ZM23Y9nXeb+vG6AyA6jgq/JovkcqRHcL9XwRNpWG6XRw==} 690 | engines: {node: '>=12'} 691 | cpu: [arm64] 692 | os: [linux] 693 | requiresBuild: true 694 | dev: true 695 | optional: true 696 | 697 | /esbuild-linux-mips64le/0.14.47: 698 | resolution: {integrity: sha512-mg3D8YndZ1LvUiEdDYR3OsmeyAew4MA/dvaEJxvyygahWmpv1SlEEnhEZlhPokjsUMfRagzsEF/d/2XF+kTQGg==} 699 | engines: {node: '>=12'} 700 | cpu: [mips64el] 701 | os: [linux] 702 | requiresBuild: true 703 | dev: true 704 | optional: true 705 | 706 | /esbuild-linux-ppc64le/0.14.47: 707 | resolution: {integrity: sha512-WER+f3+szmnZiWoK6AsrTKGoJoErG2LlauSmk73LEZFQ/iWC+KhhDsOkn1xBUpzXWsxN9THmQFltLoaFEH8F8w==} 708 | engines: {node: '>=12'} 709 | cpu: [ppc64] 710 | os: [linux] 711 | requiresBuild: true 712 | dev: true 713 | optional: true 714 | 715 | /esbuild-linux-riscv64/0.14.47: 716 | resolution: {integrity: sha512-1fI6bP3A3rvI9BsaaXbMoaOjLE3lVkJtLxsgLHqlBhLlBVY7UqffWBvkrX/9zfPhhVMd9ZRFiaqXnB1T7BsL2g==} 717 | engines: {node: '>=12'} 718 | cpu: [riscv64] 719 | os: [linux] 720 | requiresBuild: true 721 | dev: true 722 | optional: true 723 | 724 | /esbuild-linux-s390x/0.14.47: 725 | resolution: {integrity: sha512-eZrWzy0xFAhki1CWRGnhsHVz7IlSKX6yT2tj2Eg8lhAwlRE5E96Hsb0M1mPSE1dHGpt1QVwwVivXIAacF/G6mw==} 726 | engines: {node: '>=12'} 727 | cpu: [s390x] 728 | os: [linux] 729 | requiresBuild: true 730 | dev: true 731 | optional: true 732 | 733 | /esbuild-netbsd-64/0.14.47: 734 | resolution: {integrity: sha512-Qjdjr+KQQVH5Q2Q1r6HBYswFTToPpss3gqCiSw2Fpq/ua8+eXSQyAMG+UvULPqXceOwpnPo4smyZyHdlkcPppQ==} 735 | engines: {node: '>=12'} 736 | cpu: [x64] 737 | os: [netbsd] 738 | requiresBuild: true 739 | dev: true 740 | optional: true 741 | 742 | /esbuild-openbsd-64/0.14.47: 743 | resolution: {integrity: sha512-QpgN8ofL7B9z8g5zZqJE+eFvD1LehRlxr25PBkjyyasakm4599iroUpaj96rdqRlO2ShuyqwJdr+oNqWwTUmQw==} 744 | engines: {node: '>=12'} 745 | cpu: [x64] 746 | os: [openbsd] 747 | requiresBuild: true 748 | dev: true 749 | optional: true 750 | 751 | /esbuild-sunos-64/0.14.47: 752 | resolution: {integrity: sha512-uOeSgLUwukLioAJOiGYm3kNl+1wJjgJA8R671GYgcPgCx7QR73zfvYqXFFcIO93/nBdIbt5hd8RItqbbf3HtAQ==} 753 | engines: {node: '>=12'} 754 | cpu: [x64] 755 | os: [sunos] 756 | requiresBuild: true 757 | dev: true 758 | optional: true 759 | 760 | /esbuild-windows-32/0.14.47: 761 | resolution: {integrity: sha512-H0fWsLTp2WBfKLBgwYT4OTfFly4Im/8B5f3ojDv1Kx//kiubVY0IQunP2Koc/fr/0wI7hj3IiBDbSrmKlrNgLQ==} 762 | engines: {node: '>=12'} 763 | cpu: [ia32] 764 | os: [win32] 765 | requiresBuild: true 766 | dev: true 767 | optional: true 768 | 769 | /esbuild-windows-64/0.14.47: 770 | resolution: {integrity: sha512-/Pk5jIEH34T68r8PweKRi77W49KwanZ8X6lr3vDAtOlH5EumPE4pBHqkCUdELanvsT14yMXLQ/C/8XPi1pAtkQ==} 771 | engines: {node: '>=12'} 772 | cpu: [x64] 773 | os: [win32] 774 | requiresBuild: true 775 | dev: true 776 | optional: true 777 | 778 | /esbuild-windows-arm64/0.14.47: 779 | resolution: {integrity: sha512-HFSW2lnp62fl86/qPQlqw6asIwCnEsEoNIL1h2uVMgakddf+vUuMcCbtUY1i8sst7KkgHrVKCJQB33YhhOweCQ==} 780 | engines: {node: '>=12'} 781 | cpu: [arm64] 782 | os: [win32] 783 | requiresBuild: true 784 | dev: true 785 | optional: true 786 | 787 | /esbuild/0.14.47: 788 | resolution: {integrity: sha512-wI4ZiIfFxpkuxB8ju4MHrGwGLyp1+awEHAHVpx6w7a+1pmYIq8T9FGEVVwFo0iFierDoMj++Xq69GXWYn2EiwA==} 789 | engines: {node: '>=12'} 790 | hasBin: true 791 | requiresBuild: true 792 | optionalDependencies: 793 | esbuild-android-64: 0.14.47 794 | esbuild-android-arm64: 0.14.47 795 | esbuild-darwin-64: 0.14.47 796 | esbuild-darwin-arm64: 0.14.47 797 | esbuild-freebsd-64: 0.14.47 798 | esbuild-freebsd-arm64: 0.14.47 799 | esbuild-linux-32: 0.14.47 800 | esbuild-linux-64: 0.14.47 801 | esbuild-linux-arm: 0.14.47 802 | esbuild-linux-arm64: 0.14.47 803 | esbuild-linux-mips64le: 0.14.47 804 | esbuild-linux-ppc64le: 0.14.47 805 | esbuild-linux-riscv64: 0.14.47 806 | esbuild-linux-s390x: 0.14.47 807 | esbuild-netbsd-64: 0.14.47 808 | esbuild-openbsd-64: 0.14.47 809 | esbuild-sunos-64: 0.14.47 810 | esbuild-windows-32: 0.14.47 811 | esbuild-windows-64: 0.14.47 812 | esbuild-windows-arm64: 0.14.47 813 | dev: true 814 | 815 | /escape-string-regexp/4.0.0: 816 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 817 | engines: {node: '>=10'} 818 | dev: true 819 | 820 | /escodegen/2.0.0: 821 | resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} 822 | engines: {node: '>=6.0'} 823 | hasBin: true 824 | dependencies: 825 | esprima: 4.0.1 826 | estraverse: 5.3.0 827 | esutils: 2.0.3 828 | optionator: 0.8.3 829 | optionalDependencies: 830 | source-map: 0.6.1 831 | dev: false 832 | optional: true 833 | 834 | /eslint-scope/5.1.1: 835 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 836 | engines: {node: '>=8.0.0'} 837 | dependencies: 838 | esrecurse: 4.3.0 839 | estraverse: 4.3.0 840 | dev: true 841 | 842 | /eslint-scope/7.1.1: 843 | resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} 844 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 845 | dependencies: 846 | esrecurse: 4.3.0 847 | estraverse: 5.3.0 848 | dev: true 849 | 850 | /eslint-utils/3.0.0_eslint@8.31.0: 851 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 852 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 853 | peerDependencies: 854 | eslint: '>=5' 855 | dependencies: 856 | eslint: 8.31.0 857 | eslint-visitor-keys: 2.1.0 858 | dev: true 859 | 860 | /eslint-visitor-keys/2.1.0: 861 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 862 | engines: {node: '>=10'} 863 | dev: true 864 | 865 | /eslint-visitor-keys/3.3.0: 866 | resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} 867 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 868 | dev: true 869 | 870 | /eslint/8.31.0: 871 | resolution: {integrity: sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==} 872 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 873 | hasBin: true 874 | dependencies: 875 | '@eslint/eslintrc': 1.4.1 876 | '@humanwhocodes/config-array': 0.11.8 877 | '@humanwhocodes/module-importer': 1.0.1 878 | '@nodelib/fs.walk': 1.2.8 879 | ajv: 6.12.6 880 | chalk: 4.1.2 881 | cross-spawn: 7.0.3 882 | debug: 4.3.4 883 | doctrine: 3.0.0 884 | escape-string-regexp: 4.0.0 885 | eslint-scope: 7.1.1 886 | eslint-utils: 3.0.0_eslint@8.31.0 887 | eslint-visitor-keys: 3.3.0 888 | espree: 9.4.1 889 | esquery: 1.4.0 890 | esutils: 2.0.3 891 | fast-deep-equal: 3.1.3 892 | file-entry-cache: 6.0.1 893 | find-up: 5.0.0 894 | glob-parent: 6.0.2 895 | globals: 13.19.0 896 | grapheme-splitter: 1.0.4 897 | ignore: 5.2.1 898 | import-fresh: 3.3.0 899 | imurmurhash: 0.1.4 900 | is-glob: 4.0.3 901 | is-path-inside: 3.0.3 902 | js-sdsl: 4.2.0 903 | js-yaml: 4.1.0 904 | json-stable-stringify-without-jsonify: 1.0.1 905 | levn: 0.4.1 906 | lodash.merge: 4.6.2 907 | minimatch: 3.1.2 908 | natural-compare: 1.4.0 909 | optionator: 0.9.1 910 | regexpp: 3.2.0 911 | strip-ansi: 6.0.1 912 | strip-json-comments: 3.1.1 913 | text-table: 0.2.0 914 | transitivePeerDependencies: 915 | - supports-color 916 | dev: true 917 | 918 | /espree/9.4.1: 919 | resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} 920 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 921 | dependencies: 922 | acorn: 8.8.1 923 | acorn-jsx: 5.3.2_acorn@8.8.1 924 | eslint-visitor-keys: 3.3.0 925 | dev: true 926 | 927 | /esprima/4.0.1: 928 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 929 | engines: {node: '>=4'} 930 | hasBin: true 931 | dev: false 932 | optional: true 933 | 934 | /esquery/1.4.0: 935 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} 936 | engines: {node: '>=0.10'} 937 | dependencies: 938 | estraverse: 5.3.0 939 | dev: true 940 | 941 | /esrecurse/4.3.0: 942 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 943 | engines: {node: '>=4.0'} 944 | dependencies: 945 | estraverse: 5.3.0 946 | dev: true 947 | 948 | /estraverse/4.3.0: 949 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 950 | engines: {node: '>=4.0'} 951 | dev: true 952 | 953 | /estraverse/5.3.0: 954 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 955 | engines: {node: '>=4.0'} 956 | 957 | /esutils/2.0.3: 958 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 959 | engines: {node: '>=0.10.0'} 960 | 961 | /fabric/5.2.4: 962 | resolution: {integrity: sha512-3+oLKvsbSJ76/nvPPrQVuUJDp0kOh8i867PpdrOPIHUyN+eLc+9nY3rmzMmDw6ndRm20f/uULv55G8sN01j9+Q==} 963 | engines: {node: '>=14.0.0'} 964 | optionalDependencies: 965 | canvas: 2.10.2 966 | jsdom: 19.0.0_canvas@2.10.2 967 | transitivePeerDependencies: 968 | - bufferutil 969 | - encoding 970 | - supports-color 971 | - utf-8-validate 972 | dev: false 973 | 974 | /fast-deep-equal/3.1.3: 975 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 976 | dev: true 977 | 978 | /fast-glob/3.2.12: 979 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 980 | engines: {node: '>=8.6.0'} 981 | dependencies: 982 | '@nodelib/fs.stat': 2.0.5 983 | '@nodelib/fs.walk': 1.2.8 984 | glob-parent: 5.1.2 985 | merge2: 1.4.1 986 | micromatch: 4.0.5 987 | dev: true 988 | 989 | /fast-json-stable-stringify/2.1.0: 990 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 991 | dev: true 992 | 993 | /fast-levenshtein/2.0.6: 994 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 995 | 996 | /fastq/1.14.0: 997 | resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==} 998 | dependencies: 999 | reusify: 1.0.4 1000 | dev: true 1001 | 1002 | /file-entry-cache/6.0.1: 1003 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1004 | engines: {node: ^10.12.0 || >=12.0.0} 1005 | dependencies: 1006 | flat-cache: 3.0.4 1007 | dev: true 1008 | 1009 | /fill-range/7.0.1: 1010 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1011 | engines: {node: '>=8'} 1012 | dependencies: 1013 | to-regex-range: 5.0.1 1014 | dev: true 1015 | 1016 | /find-up/5.0.0: 1017 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1018 | engines: {node: '>=10'} 1019 | dependencies: 1020 | locate-path: 6.0.0 1021 | path-exists: 4.0.0 1022 | dev: true 1023 | 1024 | /flat-cache/3.0.4: 1025 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1026 | engines: {node: ^10.12.0 || >=12.0.0} 1027 | dependencies: 1028 | flatted: 3.2.7 1029 | rimraf: 3.0.2 1030 | dev: true 1031 | 1032 | /flatted/3.2.7: 1033 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 1034 | dev: true 1035 | 1036 | /form-data/4.0.0: 1037 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 1038 | engines: {node: '>= 6'} 1039 | dependencies: 1040 | asynckit: 0.4.0 1041 | combined-stream: 1.0.8 1042 | mime-types: 2.1.35 1043 | dev: false 1044 | optional: true 1045 | 1046 | /fs-minipass/2.1.0: 1047 | resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} 1048 | engines: {node: '>= 8'} 1049 | dependencies: 1050 | minipass: 3.3.6 1051 | dev: false 1052 | optional: true 1053 | 1054 | /fs.realpath/1.0.0: 1055 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1056 | 1057 | /functional-red-black-tree/1.0.1: 1058 | resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} 1059 | dev: true 1060 | 1061 | /gauge/3.0.2: 1062 | resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} 1063 | engines: {node: '>=10'} 1064 | dependencies: 1065 | aproba: 2.0.0 1066 | color-support: 1.1.3 1067 | console-control-strings: 1.1.0 1068 | has-unicode: 2.0.1 1069 | object-assign: 4.1.1 1070 | signal-exit: 3.0.7 1071 | string-width: 4.2.3 1072 | strip-ansi: 6.0.1 1073 | wide-align: 1.1.5 1074 | dev: false 1075 | optional: true 1076 | 1077 | /glob-parent/5.1.2: 1078 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1079 | engines: {node: '>= 6'} 1080 | dependencies: 1081 | is-glob: 4.0.3 1082 | dev: true 1083 | 1084 | /glob-parent/6.0.2: 1085 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1086 | engines: {node: '>=10.13.0'} 1087 | dependencies: 1088 | is-glob: 4.0.3 1089 | dev: true 1090 | 1091 | /glob/7.2.3: 1092 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1093 | dependencies: 1094 | fs.realpath: 1.0.0 1095 | inflight: 1.0.6 1096 | inherits: 2.0.4 1097 | minimatch: 3.1.2 1098 | once: 1.4.0 1099 | path-is-absolute: 1.0.1 1100 | 1101 | /globals/13.19.0: 1102 | resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==} 1103 | engines: {node: '>=8'} 1104 | dependencies: 1105 | type-fest: 0.20.2 1106 | dev: true 1107 | 1108 | /globby/11.1.0: 1109 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1110 | engines: {node: '>=10'} 1111 | dependencies: 1112 | array-union: 2.1.0 1113 | dir-glob: 3.0.1 1114 | fast-glob: 3.2.12 1115 | ignore: 5.2.1 1116 | merge2: 1.4.1 1117 | slash: 3.0.0 1118 | dev: true 1119 | 1120 | /grapheme-splitter/1.0.4: 1121 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 1122 | dev: true 1123 | 1124 | /has-flag/4.0.0: 1125 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1126 | engines: {node: '>=8'} 1127 | dev: true 1128 | 1129 | /has-unicode/2.0.1: 1130 | resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} 1131 | dev: false 1132 | optional: true 1133 | 1134 | /html-encoding-sniffer/3.0.0: 1135 | resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} 1136 | engines: {node: '>=12'} 1137 | dependencies: 1138 | whatwg-encoding: 2.0.0 1139 | dev: false 1140 | optional: true 1141 | 1142 | /http-proxy-agent/5.0.0: 1143 | resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} 1144 | engines: {node: '>= 6'} 1145 | dependencies: 1146 | '@tootallnate/once': 2.0.0 1147 | agent-base: 6.0.2 1148 | debug: 4.3.4 1149 | transitivePeerDependencies: 1150 | - supports-color 1151 | dev: false 1152 | optional: true 1153 | 1154 | /https-proxy-agent/5.0.1: 1155 | resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} 1156 | engines: {node: '>= 6'} 1157 | dependencies: 1158 | agent-base: 6.0.2 1159 | debug: 4.3.4 1160 | transitivePeerDependencies: 1161 | - supports-color 1162 | dev: false 1163 | optional: true 1164 | 1165 | /iconv-lite/0.6.3: 1166 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 1167 | engines: {node: '>=0.10.0'} 1168 | dependencies: 1169 | safer-buffer: 2.1.2 1170 | dev: false 1171 | optional: true 1172 | 1173 | /ignore/5.2.1: 1174 | resolution: {integrity: sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==} 1175 | engines: {node: '>= 4'} 1176 | dev: true 1177 | 1178 | /import-fresh/3.3.0: 1179 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1180 | engines: {node: '>=6'} 1181 | dependencies: 1182 | parent-module: 1.0.1 1183 | resolve-from: 4.0.0 1184 | dev: true 1185 | 1186 | /imurmurhash/0.1.4: 1187 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1188 | engines: {node: '>=0.8.19'} 1189 | dev: true 1190 | 1191 | /inflight/1.0.6: 1192 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1193 | dependencies: 1194 | once: 1.4.0 1195 | wrappy: 1.0.2 1196 | 1197 | /inherits/2.0.4: 1198 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1199 | 1200 | /is-extglob/2.1.1: 1201 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1202 | engines: {node: '>=0.10.0'} 1203 | dev: true 1204 | 1205 | /is-fullwidth-code-point/3.0.0: 1206 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1207 | engines: {node: '>=8'} 1208 | dev: false 1209 | optional: true 1210 | 1211 | /is-glob/4.0.3: 1212 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1213 | engines: {node: '>=0.10.0'} 1214 | dependencies: 1215 | is-extglob: 2.1.1 1216 | dev: true 1217 | 1218 | /is-number/7.0.0: 1219 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1220 | engines: {node: '>=0.12.0'} 1221 | dev: true 1222 | 1223 | /is-path-inside/3.0.3: 1224 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1225 | engines: {node: '>=8'} 1226 | dev: true 1227 | 1228 | /is-potential-custom-element-name/1.0.1: 1229 | resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} 1230 | dev: false 1231 | optional: true 1232 | 1233 | /isexe/2.0.0: 1234 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1235 | dev: true 1236 | 1237 | /js-sdsl/4.2.0: 1238 | resolution: {integrity: sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==} 1239 | dev: true 1240 | 1241 | /js-yaml/4.1.0: 1242 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1243 | hasBin: true 1244 | dependencies: 1245 | argparse: 2.0.1 1246 | dev: true 1247 | 1248 | /jsdom/19.0.0_canvas@2.10.2: 1249 | resolution: {integrity: sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==} 1250 | engines: {node: '>=12'} 1251 | requiresBuild: true 1252 | peerDependencies: 1253 | canvas: ^2.5.0 1254 | peerDependenciesMeta: 1255 | canvas: 1256 | optional: true 1257 | dependencies: 1258 | abab: 2.0.6 1259 | acorn: 8.8.1 1260 | acorn-globals: 6.0.0 1261 | canvas: 2.10.2 1262 | cssom: 0.5.0 1263 | cssstyle: 2.3.0 1264 | data-urls: 3.0.2 1265 | decimal.js: 10.4.3 1266 | domexception: 4.0.0 1267 | escodegen: 2.0.0 1268 | form-data: 4.0.0 1269 | html-encoding-sniffer: 3.0.0 1270 | http-proxy-agent: 5.0.0 1271 | https-proxy-agent: 5.0.1 1272 | is-potential-custom-element-name: 1.0.1 1273 | nwsapi: 2.2.2 1274 | parse5: 6.0.1 1275 | saxes: 5.0.1 1276 | symbol-tree: 3.2.4 1277 | tough-cookie: 4.1.2 1278 | w3c-hr-time: 1.0.2 1279 | w3c-xmlserializer: 3.0.0 1280 | webidl-conversions: 7.0.0 1281 | whatwg-encoding: 2.0.0 1282 | whatwg-mimetype: 3.0.0 1283 | whatwg-url: 10.0.0 1284 | ws: 8.11.0 1285 | xml-name-validator: 4.0.0 1286 | transitivePeerDependencies: 1287 | - bufferutil 1288 | - supports-color 1289 | - utf-8-validate 1290 | dev: false 1291 | optional: true 1292 | 1293 | /json-schema-traverse/0.4.1: 1294 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1295 | dev: true 1296 | 1297 | /json-stable-stringify-without-jsonify/1.0.1: 1298 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1299 | dev: true 1300 | 1301 | /levn/0.3.0: 1302 | resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} 1303 | engines: {node: '>= 0.8.0'} 1304 | dependencies: 1305 | prelude-ls: 1.1.2 1306 | type-check: 0.3.2 1307 | dev: false 1308 | optional: true 1309 | 1310 | /levn/0.4.1: 1311 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1312 | engines: {node: '>= 0.8.0'} 1313 | dependencies: 1314 | prelude-ls: 1.2.1 1315 | type-check: 0.4.0 1316 | dev: true 1317 | 1318 | /locate-path/6.0.0: 1319 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1320 | engines: {node: '>=10'} 1321 | dependencies: 1322 | p-locate: 5.0.0 1323 | dev: true 1324 | 1325 | /lodash.merge/4.6.2: 1326 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1327 | dev: true 1328 | 1329 | /lru-cache/6.0.0: 1330 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1331 | engines: {node: '>=10'} 1332 | dependencies: 1333 | yallist: 4.0.0 1334 | 1335 | /make-dir/3.1.0: 1336 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} 1337 | engines: {node: '>=8'} 1338 | dependencies: 1339 | semver: 6.3.0 1340 | dev: false 1341 | optional: true 1342 | 1343 | /merge2/1.4.1: 1344 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1345 | engines: {node: '>= 8'} 1346 | dev: true 1347 | 1348 | /micromatch/4.0.5: 1349 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1350 | engines: {node: '>=8.6'} 1351 | dependencies: 1352 | braces: 3.0.2 1353 | picomatch: 2.3.1 1354 | dev: true 1355 | 1356 | /mime-db/1.52.0: 1357 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1358 | engines: {node: '>= 0.6'} 1359 | dev: false 1360 | optional: true 1361 | 1362 | /mime-types/2.1.35: 1363 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1364 | engines: {node: '>= 0.6'} 1365 | dependencies: 1366 | mime-db: 1.52.0 1367 | dev: false 1368 | optional: true 1369 | 1370 | /mimic-response/2.1.0: 1371 | resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==} 1372 | engines: {node: '>=8'} 1373 | dev: false 1374 | optional: true 1375 | 1376 | /minimatch/3.1.2: 1377 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1378 | dependencies: 1379 | brace-expansion: 1.1.11 1380 | 1381 | /minipass/3.3.6: 1382 | resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} 1383 | engines: {node: '>=8'} 1384 | dependencies: 1385 | yallist: 4.0.0 1386 | dev: false 1387 | optional: true 1388 | 1389 | /minipass/4.0.0: 1390 | resolution: {integrity: sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==} 1391 | engines: {node: '>=8'} 1392 | dependencies: 1393 | yallist: 4.0.0 1394 | dev: false 1395 | optional: true 1396 | 1397 | /minizlib/2.1.2: 1398 | resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} 1399 | engines: {node: '>= 8'} 1400 | dependencies: 1401 | minipass: 3.3.6 1402 | yallist: 4.0.0 1403 | dev: false 1404 | optional: true 1405 | 1406 | /mkdirp/1.0.4: 1407 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} 1408 | engines: {node: '>=10'} 1409 | hasBin: true 1410 | dev: false 1411 | optional: true 1412 | 1413 | /moment/2.29.4: 1414 | resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} 1415 | dev: true 1416 | 1417 | /ms/2.1.2: 1418 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1419 | 1420 | /nan/2.17.0: 1421 | resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==} 1422 | dev: false 1423 | optional: true 1424 | 1425 | /natural-compare/1.4.0: 1426 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1427 | dev: true 1428 | 1429 | /node-fetch/2.6.7: 1430 | resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} 1431 | engines: {node: 4.x || >=6.0.0} 1432 | peerDependencies: 1433 | encoding: ^0.1.0 1434 | peerDependenciesMeta: 1435 | encoding: 1436 | optional: true 1437 | dependencies: 1438 | whatwg-url: 5.0.0 1439 | dev: false 1440 | optional: true 1441 | 1442 | /nopt/5.0.0: 1443 | resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} 1444 | engines: {node: '>=6'} 1445 | hasBin: true 1446 | dependencies: 1447 | abbrev: 1.1.1 1448 | dev: false 1449 | optional: true 1450 | 1451 | /npmlog/5.0.1: 1452 | resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} 1453 | dependencies: 1454 | are-we-there-yet: 2.0.0 1455 | console-control-strings: 1.1.0 1456 | gauge: 3.0.2 1457 | set-blocking: 2.0.0 1458 | dev: false 1459 | optional: true 1460 | 1461 | /nwsapi/2.2.2: 1462 | resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==} 1463 | dev: false 1464 | optional: true 1465 | 1466 | /object-assign/4.1.1: 1467 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1468 | engines: {node: '>=0.10.0'} 1469 | dev: false 1470 | optional: true 1471 | 1472 | /obsidian/1.1.1_ootph5s5ydlpya6ok6lxu3ipni: 1473 | resolution: {integrity: sha512-GcxhsHNkPEkwHEjeyitfYNBcQuYGeAHFs1pEpZIv0CnzSfui8p8bPLm2YKLgcg20B764770B1sYGtxCvk9ptxg==} 1474 | peerDependencies: 1475 | '@codemirror/state': ^6.0.0 1476 | '@codemirror/view': ^6.0.0 1477 | dependencies: 1478 | '@codemirror/state': 6.2.0 1479 | '@codemirror/view': 6.7.2 1480 | '@types/codemirror': 0.0.108 1481 | moment: 2.29.4 1482 | dev: true 1483 | 1484 | /once/1.4.0: 1485 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1486 | dependencies: 1487 | wrappy: 1.0.2 1488 | 1489 | /optionator/0.8.3: 1490 | resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} 1491 | engines: {node: '>= 0.8.0'} 1492 | dependencies: 1493 | deep-is: 0.1.4 1494 | fast-levenshtein: 2.0.6 1495 | levn: 0.3.0 1496 | prelude-ls: 1.1.2 1497 | type-check: 0.3.2 1498 | word-wrap: 1.2.3 1499 | dev: false 1500 | optional: true 1501 | 1502 | /optionator/0.9.1: 1503 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 1504 | engines: {node: '>= 0.8.0'} 1505 | dependencies: 1506 | deep-is: 0.1.4 1507 | fast-levenshtein: 2.0.6 1508 | levn: 0.4.1 1509 | prelude-ls: 1.2.1 1510 | type-check: 0.4.0 1511 | word-wrap: 1.2.3 1512 | dev: true 1513 | 1514 | /p-limit/3.1.0: 1515 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1516 | engines: {node: '>=10'} 1517 | dependencies: 1518 | yocto-queue: 0.1.0 1519 | dev: true 1520 | 1521 | /p-locate/5.0.0: 1522 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1523 | engines: {node: '>=10'} 1524 | dependencies: 1525 | p-limit: 3.1.0 1526 | dev: true 1527 | 1528 | /parent-module/1.0.1: 1529 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1530 | engines: {node: '>=6'} 1531 | dependencies: 1532 | callsites: 3.1.0 1533 | dev: true 1534 | 1535 | /parse5/6.0.1: 1536 | resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} 1537 | dev: false 1538 | optional: true 1539 | 1540 | /path-exists/4.0.0: 1541 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1542 | engines: {node: '>=8'} 1543 | dev: true 1544 | 1545 | /path-is-absolute/1.0.1: 1546 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1547 | engines: {node: '>=0.10.0'} 1548 | 1549 | /path-key/3.1.1: 1550 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1551 | engines: {node: '>=8'} 1552 | dev: true 1553 | 1554 | /path-type/4.0.0: 1555 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1556 | engines: {node: '>=8'} 1557 | dev: true 1558 | 1559 | /picomatch/2.3.1: 1560 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1561 | engines: {node: '>=8.6'} 1562 | dev: true 1563 | 1564 | /prelude-ls/1.1.2: 1565 | resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} 1566 | engines: {node: '>= 0.8.0'} 1567 | dev: false 1568 | optional: true 1569 | 1570 | /prelude-ls/1.2.1: 1571 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1572 | engines: {node: '>= 0.8.0'} 1573 | dev: true 1574 | 1575 | /prettier/2.8.1: 1576 | resolution: {integrity: sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==} 1577 | engines: {node: '>=10.13.0'} 1578 | hasBin: true 1579 | dev: true 1580 | 1581 | /psl/1.9.0: 1582 | resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} 1583 | dev: false 1584 | optional: true 1585 | 1586 | /punycode/2.1.1: 1587 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 1588 | engines: {node: '>=6'} 1589 | 1590 | /querystringify/2.2.0: 1591 | resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} 1592 | dev: false 1593 | optional: true 1594 | 1595 | /queue-microtask/1.2.3: 1596 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1597 | dev: true 1598 | 1599 | /readable-stream/3.6.0: 1600 | resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} 1601 | engines: {node: '>= 6'} 1602 | dependencies: 1603 | inherits: 2.0.4 1604 | string_decoder: 1.3.0 1605 | util-deprecate: 1.0.2 1606 | dev: false 1607 | optional: true 1608 | 1609 | /regexpp/3.2.0: 1610 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} 1611 | engines: {node: '>=8'} 1612 | dev: true 1613 | 1614 | /requires-port/1.0.0: 1615 | resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} 1616 | dev: false 1617 | optional: true 1618 | 1619 | /resolve-from/4.0.0: 1620 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1621 | engines: {node: '>=4'} 1622 | dev: true 1623 | 1624 | /reusify/1.0.4: 1625 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1626 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1627 | dev: true 1628 | 1629 | /rimraf/3.0.2: 1630 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 1631 | hasBin: true 1632 | dependencies: 1633 | glob: 7.2.3 1634 | 1635 | /run-parallel/1.2.0: 1636 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1637 | dependencies: 1638 | queue-microtask: 1.2.3 1639 | dev: true 1640 | 1641 | /safe-buffer/5.2.1: 1642 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1643 | dev: false 1644 | optional: true 1645 | 1646 | /safer-buffer/2.1.2: 1647 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1648 | dev: false 1649 | optional: true 1650 | 1651 | /saxes/5.0.1: 1652 | resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} 1653 | engines: {node: '>=10'} 1654 | dependencies: 1655 | xmlchars: 2.2.0 1656 | dev: false 1657 | optional: true 1658 | 1659 | /semver/6.3.0: 1660 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 1661 | hasBin: true 1662 | dev: false 1663 | optional: true 1664 | 1665 | /semver/7.3.8: 1666 | resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} 1667 | engines: {node: '>=10'} 1668 | hasBin: true 1669 | dependencies: 1670 | lru-cache: 6.0.0 1671 | 1672 | /set-blocking/2.0.0: 1673 | resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} 1674 | dev: false 1675 | optional: true 1676 | 1677 | /shebang-command/2.0.0: 1678 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1679 | engines: {node: '>=8'} 1680 | dependencies: 1681 | shebang-regex: 3.0.0 1682 | dev: true 1683 | 1684 | /shebang-regex/3.0.0: 1685 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1686 | engines: {node: '>=8'} 1687 | dev: true 1688 | 1689 | /signal-exit/3.0.7: 1690 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1691 | dev: false 1692 | optional: true 1693 | 1694 | /simple-concat/1.0.1: 1695 | resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} 1696 | dev: false 1697 | optional: true 1698 | 1699 | /simple-get/3.1.1: 1700 | resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==} 1701 | dependencies: 1702 | decompress-response: 4.2.1 1703 | once: 1.4.0 1704 | simple-concat: 1.0.1 1705 | dev: false 1706 | optional: true 1707 | 1708 | /slash/3.0.0: 1709 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1710 | engines: {node: '>=8'} 1711 | dev: true 1712 | 1713 | /source-map/0.6.1: 1714 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1715 | engines: {node: '>=0.10.0'} 1716 | requiresBuild: true 1717 | dev: false 1718 | optional: true 1719 | 1720 | /string-width/4.2.3: 1721 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1722 | engines: {node: '>=8'} 1723 | dependencies: 1724 | emoji-regex: 8.0.0 1725 | is-fullwidth-code-point: 3.0.0 1726 | strip-ansi: 6.0.1 1727 | dev: false 1728 | optional: true 1729 | 1730 | /string_decoder/1.3.0: 1731 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 1732 | dependencies: 1733 | safe-buffer: 5.2.1 1734 | dev: false 1735 | optional: true 1736 | 1737 | /strip-ansi/6.0.1: 1738 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1739 | engines: {node: '>=8'} 1740 | dependencies: 1741 | ansi-regex: 5.0.1 1742 | 1743 | /strip-json-comments/3.1.1: 1744 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1745 | engines: {node: '>=8'} 1746 | dev: true 1747 | 1748 | /style-mod/4.0.0: 1749 | resolution: {integrity: sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==} 1750 | dev: true 1751 | 1752 | /supports-color/7.2.0: 1753 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1754 | engines: {node: '>=8'} 1755 | dependencies: 1756 | has-flag: 4.0.0 1757 | dev: true 1758 | 1759 | /symbol-tree/3.2.4: 1760 | resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} 1761 | dev: false 1762 | optional: true 1763 | 1764 | /tar/6.1.13: 1765 | resolution: {integrity: sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==} 1766 | engines: {node: '>=10'} 1767 | dependencies: 1768 | chownr: 2.0.0 1769 | fs-minipass: 2.1.0 1770 | minipass: 4.0.0 1771 | minizlib: 2.1.2 1772 | mkdirp: 1.0.4 1773 | yallist: 4.0.0 1774 | dev: false 1775 | optional: true 1776 | 1777 | /text-table/0.2.0: 1778 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1779 | dev: true 1780 | 1781 | /to-regex-range/5.0.1: 1782 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1783 | engines: {node: '>=8.0'} 1784 | dependencies: 1785 | is-number: 7.0.0 1786 | dev: true 1787 | 1788 | /tough-cookie/4.1.2: 1789 | resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} 1790 | engines: {node: '>=6'} 1791 | dependencies: 1792 | psl: 1.9.0 1793 | punycode: 2.1.1 1794 | universalify: 0.2.0 1795 | url-parse: 1.5.10 1796 | dev: false 1797 | optional: true 1798 | 1799 | /tr46/0.0.3: 1800 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 1801 | dev: false 1802 | optional: true 1803 | 1804 | /tr46/3.0.0: 1805 | resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} 1806 | engines: {node: '>=12'} 1807 | dependencies: 1808 | punycode: 2.1.1 1809 | dev: false 1810 | optional: true 1811 | 1812 | /tslib/1.14.1: 1813 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 1814 | dev: true 1815 | 1816 | /tslib/2.4.0: 1817 | resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} 1818 | dev: true 1819 | 1820 | /tsutils/3.21.0_typescript@4.7.4: 1821 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 1822 | engines: {node: '>= 6'} 1823 | peerDependencies: 1824 | 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' 1825 | dependencies: 1826 | tslib: 1.14.1 1827 | typescript: 4.7.4 1828 | dev: true 1829 | 1830 | /type-check/0.3.2: 1831 | resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} 1832 | engines: {node: '>= 0.8.0'} 1833 | dependencies: 1834 | prelude-ls: 1.1.2 1835 | dev: false 1836 | optional: true 1837 | 1838 | /type-check/0.4.0: 1839 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1840 | engines: {node: '>= 0.8.0'} 1841 | dependencies: 1842 | prelude-ls: 1.2.1 1843 | dev: true 1844 | 1845 | /type-fest/0.20.2: 1846 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 1847 | engines: {node: '>=10'} 1848 | dev: true 1849 | 1850 | /typescript/4.7.4: 1851 | resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} 1852 | engines: {node: '>=4.2.0'} 1853 | hasBin: true 1854 | dev: true 1855 | 1856 | /universalify/0.2.0: 1857 | resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} 1858 | engines: {node: '>= 4.0.0'} 1859 | dev: false 1860 | optional: true 1861 | 1862 | /uri-js/4.4.1: 1863 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1864 | dependencies: 1865 | punycode: 2.1.1 1866 | dev: true 1867 | 1868 | /url-parse/1.5.10: 1869 | resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} 1870 | dependencies: 1871 | querystringify: 2.2.0 1872 | requires-port: 1.0.0 1873 | dev: false 1874 | optional: true 1875 | 1876 | /util-deprecate/1.0.2: 1877 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1878 | dev: false 1879 | optional: true 1880 | 1881 | /w3c-hr-time/1.0.2: 1882 | resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} 1883 | deprecated: Use your platform's native performance.now() and performance.timeOrigin. 1884 | dependencies: 1885 | browser-process-hrtime: 1.0.0 1886 | dev: false 1887 | optional: true 1888 | 1889 | /w3c-keyname/2.2.6: 1890 | resolution: {integrity: sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==} 1891 | dev: true 1892 | 1893 | /w3c-xmlserializer/3.0.0: 1894 | resolution: {integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==} 1895 | engines: {node: '>=12'} 1896 | dependencies: 1897 | xml-name-validator: 4.0.0 1898 | dev: false 1899 | optional: true 1900 | 1901 | /webidl-conversions/3.0.1: 1902 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 1903 | dev: false 1904 | optional: true 1905 | 1906 | /webidl-conversions/7.0.0: 1907 | resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} 1908 | engines: {node: '>=12'} 1909 | dev: false 1910 | optional: true 1911 | 1912 | /whatwg-encoding/2.0.0: 1913 | resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} 1914 | engines: {node: '>=12'} 1915 | dependencies: 1916 | iconv-lite: 0.6.3 1917 | dev: false 1918 | optional: true 1919 | 1920 | /whatwg-mimetype/3.0.0: 1921 | resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} 1922 | engines: {node: '>=12'} 1923 | dev: false 1924 | optional: true 1925 | 1926 | /whatwg-url/10.0.0: 1927 | resolution: {integrity: sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==} 1928 | engines: {node: '>=12'} 1929 | dependencies: 1930 | tr46: 3.0.0 1931 | webidl-conversions: 7.0.0 1932 | dev: false 1933 | optional: true 1934 | 1935 | /whatwg-url/11.0.0: 1936 | resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} 1937 | engines: {node: '>=12'} 1938 | dependencies: 1939 | tr46: 3.0.0 1940 | webidl-conversions: 7.0.0 1941 | dev: false 1942 | optional: true 1943 | 1944 | /whatwg-url/5.0.0: 1945 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 1946 | dependencies: 1947 | tr46: 0.0.3 1948 | webidl-conversions: 3.0.1 1949 | dev: false 1950 | optional: true 1951 | 1952 | /which/2.0.2: 1953 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1954 | engines: {node: '>= 8'} 1955 | hasBin: true 1956 | dependencies: 1957 | isexe: 2.0.0 1958 | dev: true 1959 | 1960 | /wide-align/1.1.5: 1961 | resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} 1962 | dependencies: 1963 | string-width: 4.2.3 1964 | dev: false 1965 | optional: true 1966 | 1967 | /word-wrap/1.2.3: 1968 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 1969 | engines: {node: '>=0.10.0'} 1970 | 1971 | /wrappy/1.0.2: 1972 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1973 | 1974 | /ws/8.11.0: 1975 | resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} 1976 | engines: {node: '>=10.0.0'} 1977 | peerDependencies: 1978 | bufferutil: ^4.0.1 1979 | utf-8-validate: ^5.0.2 1980 | peerDependenciesMeta: 1981 | bufferutil: 1982 | optional: true 1983 | utf-8-validate: 1984 | optional: true 1985 | dev: false 1986 | optional: true 1987 | 1988 | /xml-name-validator/4.0.0: 1989 | resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} 1990 | engines: {node: '>=12'} 1991 | dev: false 1992 | optional: true 1993 | 1994 | /xmlchars/2.2.0: 1995 | resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} 1996 | dev: false 1997 | optional: true 1998 | 1999 | /yallist/4.0.0: 2000 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2001 | 2002 | /yocto-queue/0.1.0: 2003 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2004 | engines: {node: '>=10'} 2005 | dev: true 2006 | -------------------------------------------------------------------------------- /src/CanvasView.ts: -------------------------------------------------------------------------------- 1 | import { ItemView, WorkspaceLeaf, Menu, Notice } from 'obsidian' 2 | import { fabric } from 'fabric' 3 | import { backgrounds, createBackground } from './fns/addBackground' 4 | import { dataURItoBlob } from './fns/dataUrlToBlob' 5 | import { getCurrentFileName } from './fns/getCurrentFileName' 6 | import SharePlugin from './main' 7 | import { dequeue, onQueueAdded } from './queue' 8 | 9 | export const ViewType = 'obsidian-share-view' 10 | 11 | export class CanvasView extends ItemView { 12 | private canvas: fabric.Canvas 13 | private paddingPercent = 0.08 14 | private canvasWidth = 1920 15 | private canvasHeight = 1400 16 | private plugin: SharePlugin 17 | 18 | constructor(leaf: WorkspaceLeaf, plugin: SharePlugin) { 19 | super(leaf) 20 | this.plugin = plugin 21 | } 22 | 23 | onload(): void { 24 | this.contentEl.empty() 25 | this.contentEl.addClass('obsidian-share-view') 26 | 27 | const controllerContainer = this.contentEl.createDiv({ 28 | cls: 'controller-container' 29 | }) 30 | controllerContainer.createEl('button', { 31 | text: 'Copy', 32 | attr: { 33 | id: 'copy-to-clipboard' 34 | } 35 | }) 36 | this.contentEl.on('click', '#copy-to-clipboard', async (e) => { 37 | const blob = dataURItoBlob(this.canvas.toDataURL()) 38 | const item = new ClipboardItem({ 'image/png': blob }) 39 | await navigator.clipboard.write([item]) 40 | new Notice('Copied to clipboard') 41 | }) 42 | 43 | /*controllerContainer.createEl('button', { 44 | text: 'Drag to share', 45 | attr: { 46 | id: 'drag-to-share', 47 | draggable: 'true' 48 | } 49 | }) 50 | this.contentEl.on('dragstart', '#drag-to-share', async (e) => { 51 | const img = document.createElement('img') 52 | img.src = this.canvas.toDataURL() 53 | e.dataTransfer?.setDragImage(img, 0, 0) 54 | })*/ 55 | 56 | const canvasEl = this.contentEl.createEl('canvas', { 57 | attr: { id: 'canvas' } 58 | }) 59 | 60 | this.contentEl.on('drop', 'canvas', (e) => { 61 | this.drawText(e.dataTransfer?.getData('Text').trim() || '') 62 | this.canvas.renderAll() 63 | }) 64 | 65 | this.canvas = new fabric.Canvas(canvasEl, { 66 | width: this.canvasWidth, 67 | height: this.canvasHeight, 68 | backgroundColor: '#000', 69 | selection: false 70 | }) 71 | 72 | const background = createBackground( 73 | this.plugin.settings.backgroundIndex 74 | ) 75 | this.canvas.add(background) 76 | 77 | // the card 78 | const widthPadding = this.canvasWidth * this.paddingPercent 79 | const rectWidth = this.canvasWidth - widthPadding * 2 80 | const rectHeight = this.canvasHeight - widthPadding * 2 81 | const card = new fabric.Rect({ 82 | width: rectWidth, 83 | height: rectHeight, 84 | fill: 'rgba(0,0,0,0.45)', 85 | selectable: false, 86 | rx: this.canvasWidth * 0.02, 87 | ry: this.canvasWidth * 0.02, 88 | shadow: new fabric.Shadow({ 89 | color: 'rgba(0,0,0,0.9)', 90 | blur: 30 91 | }), 92 | strokeWidth: 2, 93 | stroke: 'rgba(0,0,0,0.5)' 94 | }) 95 | this.canvas.centerObject(card) 96 | this.canvas.add(card) 97 | 98 | this.drawText('Drag text here') 99 | 100 | // gradient 101 | 102 | const gradients = controllerContainer.createDiv({ cls: 'gradients' }) 103 | 104 | backgrounds.forEach((background, index) => { 105 | gradients.createEl('button', { 106 | text: index.toString(), 107 | cls: 'change-background', 108 | attr: { 109 | 'data-index': index, 110 | style: background.css 111 | } 112 | }) 113 | }) 114 | 115 | this.contentEl.on('click', '.change-background', async (e) => { 116 | this.canvas 117 | .getObjects() 118 | .filter((o) => o.name === 'background') 119 | .forEach((o) => { 120 | this.canvas.remove(o) 121 | }) 122 | 123 | const target = e.target as HTMLElement 124 | const backgroundIndex = parseInt(target.dataset.index || '0') 125 | const background = createBackground(backgroundIndex) 126 | this.canvas.add(background) 127 | this.canvas.sendToBack(background) 128 | 129 | this.plugin.settings.backgroundIndex = backgroundIndex 130 | await this.plugin.saveSettings() 131 | }) 132 | 133 | const queuedText = dequeue() 134 | if (queuedText) { 135 | this.drawText(queuedText) 136 | } 137 | 138 | onQueueAdded(() => { 139 | const queuedText = dequeue() 140 | if (queuedText) { 141 | this.drawText(queuedText) 142 | } 143 | }) 144 | } 145 | 146 | private createTextNode( 147 | rectWidth: number, 148 | textContent: string, 149 | subText?: string 150 | ) { 151 | // the text 152 | const textWidth = rectWidth * 0.8 153 | const text = new fabric.Textbox(textContent, { 154 | width: textWidth, 155 | fill: 'white', 156 | textAlign: 'center', 157 | fontSize: 80 158 | }) 159 | 160 | const vaultName = new fabric.Textbox(`// ${subText}`, { 161 | width: textWidth, 162 | left: text.left, 163 | top: text.height! + text.top! + 50, 164 | fill: 'white', 165 | textAlign: 'center', 166 | fontSize: 50 167 | }) 168 | 169 | return new fabric.Group([text, vaultName], { 170 | selectable: false, 171 | name: 'mainText' 172 | }) 173 | } 174 | 175 | drawText(text: string) { 176 | this.canvas 177 | .getObjects() 178 | .filter((o) => o.name === 'mainText') 179 | .forEach((o) => { 180 | this.canvas.remove(o) 181 | }) 182 | 183 | const textWidth = 184 | this.canvasWidth - this.canvasWidth * this.paddingPercent 185 | 186 | const subText = getCurrentFileName(this.app) 187 | 188 | const textGroup = this.createTextNode(textWidth, text, subText) 189 | this.canvas.centerObject(textGroup) 190 | this.canvas.add(textGroup) 191 | } 192 | 193 | onunload() { 194 | this.canvas.dispose() 195 | super.onunload() 196 | } 197 | 198 | onPaneMenu(menu: Menu, source: string): void { 199 | super.onPaneMenu(menu, source) 200 | menu.addItem((item) => { 201 | item.setTitle('Help...') 202 | item.setIcon('globe') 203 | item.onClick(() => { 204 | open('https://twitter.com/duocdev') 205 | }) 206 | }) 207 | } 208 | 209 | getViewType(): string { 210 | return ViewType 211 | } 212 | 213 | getDisplayText(): string { 214 | return 'Obsidian Share' 215 | } 216 | 217 | getIcon(): string { 218 | return 'obsidian-share' 219 | } 220 | } 221 | -------------------------------------------------------------------------------- /src/ModalOnboarding.ts: -------------------------------------------------------------------------------- 1 | import { App, Modal } from 'obsidian' 2 | 3 | export class ModalOnBoarding extends Modal { 4 | onOpen() { 5 | const { contentEl } = this 6 | contentEl.createEl('h3', { text: 'Welcome to Share' }) 7 | contentEl.createEl('p', { 8 | text: 'With this plugin, you can easily generate beautiful gradient images from text,' 9 | }) 10 | contentEl.createEl('p', { 11 | text: 'To create a new image, click on the "Share" button in the sidebar. Drag text into the editor to create a new image.' 12 | }) 13 | } 14 | 15 | onClose() { 16 | const { contentEl } = this 17 | contentEl.empty() 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/SetingTab.ts: -------------------------------------------------------------------------------- 1 | import { App, PluginSettingTab, Setting } from 'obsidian' 2 | import OpenGatePlugin from './main' 3 | 4 | export class SettingTab extends PluginSettingTab { 5 | plugin: OpenGatePlugin 6 | shouldNotify: boolean 7 | 8 | constructor(app: App, plugin: OpenGatePlugin) { 9 | super(app, plugin) 10 | this.plugin = plugin 11 | } 12 | 13 | display(): void { 14 | this.shouldNotify = false 15 | const { containerEl } = this 16 | containerEl.empty() 17 | 18 | const settingContainerEl = containerEl.createDiv('setting-container') 19 | 20 | containerEl.createEl('h3', { text: 'Help' }) 21 | 22 | containerEl.createEl('small', { 23 | attr: { 24 | style: 'display: block; margin-bottom: 10px' 25 | }, 26 | text: 'This product is free, because I am passionate about it and use it every day. I also do many other plugins. So follow me for more updates.' 27 | }) 28 | 29 | new Setting(containerEl) 30 | .setName('Follow me on Twitter') 31 | .setDesc('@duocdev') 32 | .addButton((button) => { 33 | button.setCta() 34 | button.setButtonText('Follow for update').onClick(() => { 35 | window.open('https://twitter.com/duocdev') 36 | }) 37 | }) 38 | .addButton((button) => { 39 | button.buttonEl.outerHTML = 40 | "" 41 | }) 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/fns/addBackground.ts: -------------------------------------------------------------------------------- 1 | import { fabric } from 'fabric' 2 | 3 | const width = 1920 4 | const height = 1400 5 | 6 | export const backgrounds = [ 7 | { 8 | css: 'background-image: linear-gradient(160deg, #0093E9 0%, #80D0C7 100%);', 9 | type: 'linear', 10 | coords: { x1: 0, y1: 0, x2: width, y2: height }, 11 | colorStops: [ 12 | { 13 | color: '#0093E9', 14 | offset: 0 15 | }, 16 | { 17 | color: '#80D0C7', 18 | offset: 1 19 | } 20 | ] 21 | }, 22 | { 23 | css: 'background-image: radial-gradient( circle farthest-corner at 12.3% 19.3%, rgba(85,88,218,1) 0%, rgba(95,209,249,1) 100.2% );', 24 | type: 'radial', 25 | coords: { 26 | x1: width * 0.123, 27 | y1: height * 0.193, 28 | r1: 0, 29 | x2: width * 0.123, 30 | y2: height * 0.193, 31 | r2: width 32 | }, 33 | colorStops: [ 34 | { 35 | color: 'rgba(85,88,218,1)', 36 | offset: 0 37 | }, 38 | { 39 | color: 'rgba(95,209,249,1)', 40 | offset: 1 41 | } 42 | ] 43 | }, 44 | { 45 | css: 'background-image: radial-gradient( circle farthest-corner at 10% 20%, rgba(255,209,67,1) 0%, rgba(255,145,83,1) 90% );', 46 | type: 'radial', 47 | coords: { 48 | x1: width * 0.1, 49 | y1: height * 0.2, 50 | r1: 0, 51 | x2: width * 0.1, 52 | y2: height * 0.2, 53 | r2: width 54 | }, 55 | colorStops: [ 56 | { 57 | color: 'rgba(255,209,67,1)', 58 | offset: 0 59 | }, 60 | { 61 | color: 'rgba(255,145,83,1)', 62 | offset: 0.9 63 | } 64 | ] 65 | }, 66 | { 67 | css: 'background-image: radial-gradient( circle farthest-corner at 10% 20%, rgba(228,93,93,1) 0%, rgba(248,148,233,1) 90% );', 68 | type: 'radial', 69 | coords: { 70 | x1: width * 0.1, 71 | y1: height * 0.2, 72 | r1: 0, 73 | x2: width * 0.1, 74 | y2: height * 0.2, 75 | r2: width 76 | }, 77 | colorStops: [ 78 | { 79 | color: 'rgba(228,93,93,1)', 80 | offset: 0 81 | }, 82 | { 83 | color: 'rgba(248,148,233,1)', 84 | offset: 0.9 85 | } 86 | ] 87 | }, 88 | { 89 | css: 'background-image: radial-gradient( circle farthest-corner at 10% 20%, rgba(14,174,87,1) 0%, rgba(12,116,117,1) 90% );', 90 | type: 'radial', 91 | coords: { 92 | x1: width * 0.1, 93 | y1: height * 0.2, 94 | r1: 0, 95 | x2: width * 0.1, 96 | y2: height * 0.2, 97 | r2: width 98 | }, 99 | colorStops: [ 100 | { 101 | color: 'rgba(14,174,87,1)', 102 | offset: 0 103 | }, 104 | { 105 | color: 'rgba(12,116,117,1)', 106 | offset: 0.9 107 | } 108 | ] 109 | }, 110 | 111 | { 112 | css: 'background-image: radial-gradient( circle farthest-corner at 10% 20%, rgba(255,229,168,1) 0%, rgba(251,174,222,1) 100.7% );', 113 | type: 'radial', 114 | coords: { 115 | x1: width * 0.1, 116 | y1: height * 0.2, 117 | r1: 0, 118 | x2: width * 0.1, 119 | y2: height * 0.2, 120 | r2: width 121 | }, 122 | colorStops: [ 123 | { 124 | color: 'rgba(255,229,168,1)', 125 | offset: 0 126 | }, 127 | { 128 | color: 'rgba(251,174,222,1)', 129 | offset: 1 130 | } 131 | ] 132 | } 133 | ] 134 | 135 | export const createBackground = (backgroundIndex: number) => { 136 | const background = backgrounds[backgroundIndex] 137 | const grad = new fabric.Gradient(background) 138 | 139 | return new fabric.Rect({ 140 | name: 'background', 141 | width: width, 142 | height: height, 143 | fill: grad, 144 | selectable: false 145 | }) 146 | } 147 | -------------------------------------------------------------------------------- /src/fns/dataUrlToBlob.ts: -------------------------------------------------------------------------------- 1 | export const dataURItoBlob = (dataURI: string) => { 2 | const byteString = atob(dataURI.split(',')[1]) 3 | const mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0] 4 | const ab = new ArrayBuffer(byteString.length) 5 | const ia = new Uint8Array(ab) 6 | 7 | for (let i = 0; i < byteString.length; i++) { 8 | ia[i] = byteString.charCodeAt(i) 9 | } 10 | 11 | return new Blob([ab], { type: mimeString }) 12 | } 13 | -------------------------------------------------------------------------------- /src/fns/getCurrentFileName.ts: -------------------------------------------------------------------------------- 1 | import { App, MarkdownView } from 'obsidian' 2 | 3 | export const getCurrentFileName = (app: App): string => { 4 | const activeFile = app.workspace.getActiveFile() 5 | return activeFile?.name.replace(".md", "") || '' 6 | } 7 | -------------------------------------------------------------------------------- /src/fns/getSelectedText.ts: -------------------------------------------------------------------------------- 1 | import { MarkdownView, Workspace } from 'obsidian' 2 | 3 | export const getSelectedText = (workspace: Workspace): string => { 4 | let view = workspace.getActiveViewOfType(MarkdownView) 5 | if (!view) { 6 | return '' 7 | } 8 | 9 | let view_mode = view.getMode() 10 | switch (view_mode) { 11 | case 'source': 12 | if ('editor' in view) { 13 | return view.editor.getSelection().trim() 14 | } 15 | break 16 | case 'preview': 17 | default: 18 | return '' 19 | } 20 | 21 | return '' 22 | } 23 | -------------------------------------------------------------------------------- /src/fns/openView.ts: -------------------------------------------------------------------------------- 1 | import { Workspace, WorkspaceLeaf } from 'obsidian' 2 | 3 | export const openView = async ( 4 | workspace: Workspace, 5 | id: string, 6 | position?: FramePosition 7 | ): Promise => { 8 | let leafs = workspace.getLeavesOfType(id) 9 | if (leafs.length == 0) { 10 | return createView(workspace, id, position) 11 | } 12 | 13 | let leaf = workspace.getLeavesOfType(id)[0] 14 | workspace.revealLeaf(leaf) 15 | return leaf 16 | } 17 | 18 | const createView = ( 19 | workspace: Workspace, 20 | id: string, 21 | position?: FramePosition 22 | ): WorkspaceLeaf | undefined => { 23 | let leaf: WorkspaceLeaf | undefined 24 | switch (position) { 25 | case 'left': 26 | leaf = workspace.getLeftLeaf(false) 27 | break 28 | case 'center': 29 | leaf = workspace.getLeaf(false) 30 | break 31 | case 'right': 32 | default: 33 | leaf = workspace.getRightLeaf(false) 34 | break 35 | } 36 | 37 | leaf?.setViewState({ type: id, active: true }) 38 | 39 | return leaf 40 | } 41 | -------------------------------------------------------------------------------- /src/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import {addIcon, MarkdownView, Menu, Notice, Plugin} from 'obsidian' 2 | import {SettingTab} from './SetingTab' 3 | import {ModalOnBoarding} from './ModalOnboarding' 4 | import {CanvasView, ViewType} from './CanvasView' 5 | import {openView} from './fns/openView' 6 | import {enqueue} from './queue' 7 | // @ts-ignore-next-line 8 | import logo from './logo.svg' 9 | 10 | interface PluginSetting { 11 | isFirstRun: boolean 12 | backgroundIndex: number 13 | } 14 | 15 | const DEFAULT_SETTINGS: PluginSetting = { 16 | isFirstRun: true, 17 | backgroundIndex: 0 18 | } 19 | 20 | export default class SharePlugin extends Plugin { 21 | settings: PluginSetting 22 | 23 | async onload() { 24 | await this.loadSettings() 25 | this.addSettingTab(new SettingTab(this.app, this)) 26 | 27 | addIcon('obsidian-share', logo) 28 | 29 | this.registerView(ViewType, (leaf) => { 30 | return new CanvasView(leaf, this) 31 | }) 32 | 33 | this.addRibbonIcon('obsidian-share', 'Share', async () => { 34 | await openView(this.app.workspace, ViewType) 35 | }) 36 | 37 | if (this.settings.isFirstRun) { 38 | this.settings.isFirstRun = false 39 | 40 | const modal = new ModalOnBoarding(this.app) 41 | modal.open() 42 | 43 | await openView(this.app.workspace, ViewType) 44 | 45 | await this.saveSettings() 46 | } 47 | 48 | this.app.workspace.on('editor-menu', (menu, editor, view) => { 49 | const onClick = async (isEmbed: boolean) => { 50 | enqueue(editor.getSelection()) 51 | await openView(this.app.workspace, ViewType) 52 | } 53 | 54 | menu.addItem((item) => { 55 | item.setTitle('Share as gradient') 56 | .setIcon('links-coming-in') 57 | .onClick(() => onClick(false)) 58 | }) 59 | }) 60 | 61 | // add command 62 | this.addCommand({ 63 | id: 'share-as-gradient', 64 | name: 'Share as gradient', 65 | callback: async () => { 66 | const editor = 67 | this.app.workspace.getActiveViewOfType(MarkdownView)?.editor 68 | const selection = editor?.getSelection() 69 | if (!selection) { 70 | new Notice('Please select text to share.') 71 | return 72 | } 73 | enqueue(selection) 74 | await openView(this.app.workspace, ViewType) 75 | } 76 | }) 77 | } 78 | 79 | onunload() { 80 | this.app.workspace.detachLeavesOfType(ViewType) 81 | } 82 | 83 | async loadSettings() { 84 | this.settings = await this.loadData() 85 | 86 | if (!this.settings) { 87 | this.settings = DEFAULT_SETTINGS 88 | } 89 | 90 | if (this.settings.backgroundIndex === undefined) { 91 | this.settings.backgroundIndex = DEFAULT_SETTINGS.backgroundIndex 92 | } 93 | 94 | await this.saveSettings() 95 | } 96 | 97 | async saveSettings() { 98 | await this.saveData(this.settings) 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /src/queue.ts: -------------------------------------------------------------------------------- 1 | const queue: Array = [] 2 | let onQueueAddedFn: () => void | undefined 3 | 4 | export const enqueue = (item: string) => { 5 | queue.push(item) 6 | 7 | if (onQueueAddedFn) { 8 | onQueueAddedFn() 9 | } 10 | } 11 | 12 | export const dequeue = () => { 13 | return queue.shift() 14 | } 15 | 16 | export const onQueueAdded = (callback: () => void) => { 17 | onQueueAddedFn = callback 18 | } 19 | -------------------------------------------------------------------------------- /stuff/img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nguyenvanduocit/quote-share/d7975dd63900e8cba6d5d0616c1aeb2b4470fcb1/stuff/img.png -------------------------------------------------------------------------------- /styles.css: -------------------------------------------------------------------------------- 1 | .obsidian-share-view { 2 | background-color: var(--color-base-00); 3 | overflow: hidden !important; 4 | } 5 | 6 | .obsidian-share-view canvas { 7 | width: 100% !important; 8 | height: auto !important; 9 | } 10 | 11 | .canvas-container { 12 | position: relative; 13 | width: 100% !important; 14 | height: auto !important; 15 | box-sizing: border-box; 16 | } 17 | 18 | .controller-container { 19 | margin-bottom: 10px; 20 | display: flex; 21 | justify-content: flex-start; 22 | gap: 10px; 23 | } 24 | 25 | .gradients { 26 | display: flex; 27 | flex-wrap: wrap; 28 | gap: 5px; 29 | } 30 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "inlineSourceMap": true, 5 | "inlineSources": true, 6 | "module": "ESNext", 7 | "target": "ES6", 8 | "allowJs": true, 9 | "noImplicitAny": true, 10 | "moduleResolution": "node", 11 | "importHelpers": true, 12 | "isolatedModules": true, 13 | "strictNullChecks": true, 14 | "lib": ["DOM", "ES5", "ES6", "ES7"] 15 | }, 16 | "include": ["src", "env.d.ts"] 17 | } 18 | -------------------------------------------------------------------------------- /version-bump.mjs: -------------------------------------------------------------------------------- 1 | import { readFileSync, writeFileSync } from 'fs' 2 | 3 | const targetVersion = process.env.npm_package_version 4 | 5 | // read minAppVersion from manifest.json and bump version to target version 6 | let manifest = JSON.parse(readFileSync('manifest.json', 'utf8')) 7 | const { minAppVersion } = manifest 8 | manifest.version = targetVersion 9 | writeFileSync('manifest.json', JSON.stringify(manifest, null, '\t')) 10 | 11 | // update versions.json with target version and minAppVersion from manifest.json 12 | let versions = JSON.parse(readFileSync('versions.json', 'utf8')) 13 | versions[targetVersion] = minAppVersion 14 | writeFileSync('versions.json', JSON.stringify(versions, null, '\t')) 15 | -------------------------------------------------------------------------------- /versions.json: -------------------------------------------------------------------------------- 1 | { 2 | "1.0.0": "0.15.0", 3 | "1.0.1": "0.15.0", 4 | "1.0.2": "0.15.0", 5 | "1.0.3": "0.15.0", 6 | "1.0.4": "0.15.0", 7 | "1.0.5": "0.15.0", 8 | "1.0.6": "0.15.0" 9 | } --------------------------------------------------------------------------------