├── .gitignore ├── icon.png ├── screencast.gif ├── CHANGELOG.md ├── tailwind.config.js ├── postcss.config.js ├── src ├── style.css └── main.ts ├── vite.config.ts ├── README.md ├── package.json ├── LICENSE ├── .github └── workflows │ └── publish.yml ├── index.html ├── tsconfig.json └── pnpm-lock.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | dist -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipzhicheng/logseq-plugin-pen/HEAD/icon.png -------------------------------------------------------------------------------- /screencast.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipzhicheng/logseq-plugin-pen/HEAD/screencast.gif -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # CHANGELOG 2 | 3 | ## v0.0.3 4 | 5 | - fix: icon conflict 6 | 7 | ## v0.0.2 8 | 9 | - support command palette -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | content: ['index.html', 'src/**/*.vue'], 3 | theme: { 4 | extend: {}, 5 | }, 6 | plugins: [], 7 | } 8 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | "tailwindcss/nesting": "postcss-nesting", 4 | tailwindcss: {}, 5 | autoprefixer: {}, 6 | }, 7 | }; 8 | -------------------------------------------------------------------------------- /src/style.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | button { 6 | @apply !outline-none w-8 h-8; 7 | 8 | &.active { 9 | @apply bg-gray-100 rounded; 10 | } 11 | 12 | &:hover { 13 | @apply bg-gray-100 rounded; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite"; 2 | 3 | import logseqPlugin from "vite-plugin-logseq"; 4 | 5 | export default defineConfig({ 6 | base: "./", 7 | build: { 8 | target: "esnext", 9 | minify: "esbuild", 10 | }, 11 | plugins: [logseqPlugin()], 12 | }); 13 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Logseq Plugin Pen 2 | 3 | [![Github All Releases](https://img.shields.io/github/downloads/vipzhicheng/logseq-plugin-pen/total.svg)](https://github.com/vipzhicheng/logseq-plugin-pen/releases) 4 | 5 | A Logseq plugin to provide a pen. 6 | 7 | ![Screencast](screencast.gif) 8 | 9 | ## Usage 10 | 11 | Click the pen icon to open the pen mode, and then draw any supported style on it, you can toggle the transparent background to white. 12 | 13 | ## Buy me a coffee 14 | 15 | If my plugin solve your situation a little bit and you will, you can choose to buy me a coffee via [this](https://www.buymeacoffee.com/vipzhicheng) and [this](https://afdian.net/@vipzhicheng). 16 | 17 | ## Licence 18 | MIT 19 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "logseq-plugin-pen", 3 | "version": "0.0.3", 4 | "description": "", 5 | "main": "index.html", 6 | "scripts": { 7 | "dev": "vite dev", 8 | "build": "vite build && cp icon.png package.json LICENSE dist/" 9 | }, 10 | "keywords": [], 11 | "author": "", 12 | "license": "ISC", 13 | "devDependencies": { 14 | "autoprefixer": "^10.4.12", 15 | "postcss": "^8.4.16", 16 | "postcss-nesting": "^10.2.0", 17 | "tailwindcss": "^3.1.8", 18 | "typescript": "^4.8.3", 19 | "vite": "^3.1.3", 20 | "vite-plugin-logseq": "^1.1.2" 21 | }, 22 | "dependencies": { 23 | "@logseq/libs": "^0.0.9", 24 | "drauu": "^0.3.1" 25 | }, 26 | "logseq": { 27 | "id": "logseq-plugin-pen", 28 | "title": "Logseq Pen", 29 | "icon": "./icon.png" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: Build plugin 2 | 3 | on: 4 | push: 5 | # Sequence of patterns matched against refs/tags 6 | tags: 7 | - "*" # Push events to matching any tag format, i.e. 1.0, 20.15.10 8 | 9 | env: 10 | PLUGIN_NAME: logseq-plugin-pen 11 | 12 | jobs: 13 | build: 14 | runs-on: ubuntu-latest 15 | 16 | steps: 17 | - uses: actions/checkout@v2 18 | - name: Use Node.js 19 | uses: actions/setup-node@v1 20 | with: 21 | node-version: "16.x" # You might need to adjust this value to your own version 22 | - name: Build 23 | id: build 24 | run: | 25 | npm install -g pnpm 26 | pnpm install 27 | pnpm build 28 | mv dist ${{ env.PLUGIN_NAME }} 29 | zip -r ${{ env.PLUGIN_NAME }}.zip ${{ env.PLUGIN_NAME }} 30 | tar -cvzf ${{ env.PLUGIN_NAME }}.tar.gz -C ${{ env.PLUGIN_NAME }} . 31 | ls 32 | echo "::set-output name=tag_name::$(git tag --sort version:refname | tail -n 1)" 33 | 34 | - name: Create Release 35 | uses: ncipollo/release-action@v1 36 | id: create_release 37 | env: 38 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 39 | VERSION: ${{ github.ref }} 40 | with: 41 | allowUpdates: true 42 | draft: false 43 | prerelease: false 44 | 45 | - name: Upload zip file 46 | id: upload_zip 47 | uses: actions/upload-release-asset@v1 48 | env: 49 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 50 | with: 51 | upload_url: ${{ steps.create_release.outputs.upload_url }} 52 | asset_path: ./${{ env.PLUGIN_NAME }}.zip 53 | asset_name: ${{ env.PLUGIN_NAME }}-${{ steps.build.outputs.tag_name }}.zip 54 | asset_content_type: application/zip 55 | 56 | - name: Upload tar.gz file 57 | id: upload_metadata 58 | uses: actions/upload-release-asset@v1 59 | env: 60 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 61 | with: 62 | upload_url: ${{ steps.create_release.outputs.upload_url }} 63 | asset_path: ./${{ env.PLUGIN_NAME }}.tar.gz 64 | asset_name: ${{ env.PLUGIN_NAME }}-${{ steps.build.outputs.tag_name }}.tar.gz 65 | asset_content_type: application/gzip 66 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import "@logseq/libs"; 2 | import "./style.css"; 3 | 4 | import type { Brush, DrawingMode } from "drauu"; 5 | import { createDrauu } from "drauu"; 6 | 7 | const drauu = createDrauu({ 8 | el: "#svg", 9 | brush: { 10 | color: "#000", 11 | size: 1, 12 | }, 13 | }); 14 | 15 | const sizeEl = document.getElementById("size")! as HTMLInputElement; 16 | sizeEl.addEventListener("input", () => (drauu.brush.size = +sizeEl.value)); 17 | 18 | document.getElementById("undo")?.addEventListener("click", () => drauu.undo()); 19 | document.getElementById("redo")?.addEventListener("click", () => drauu.redo()); 20 | document 21 | .getElementById("clear") 22 | ?.addEventListener("click", () => drauu.clear()); 23 | 24 | document.getElementById("close")?.addEventListener("click", () => { 25 | logseq.hideMainUI(); 26 | }); 27 | 28 | document.getElementById("transparent")?.addEventListener("click", () => { 29 | const app = document.getElementById("app"); 30 | if (app?.classList.contains("background-white")) { 31 | app.classList.remove("background-white"); 32 | document.getElementById("transparent")?.classList.remove("active"); 33 | } else { 34 | app?.classList.add("background-white"); 35 | document.getElementById("transparent")?.classList.add("active"); 36 | } 37 | }); 38 | 39 | document.getElementById("help")?.addEventListener("click", () => { 40 | document.getElementById("help-modal")?.classList.remove("hidden"); 41 | }); 42 | 43 | document.getElementById("help-modal-close")?.addEventListener("click", () => { 44 | document.getElementById("help-modal")?.classList.add("hidden"); 45 | }); 46 | 47 | const modes: { el: HTMLElement; brush: Partial }[] = [ 48 | { 49 | el: document.getElementById("m-stylus")!, 50 | brush: { mode: "stylus", arrowEnd: false }, 51 | }, 52 | { 53 | el: document.getElementById("m-eraseLine")!, 54 | brush: { mode: "eraseLine", arrowEnd: false }, 55 | }, 56 | { 57 | el: document.getElementById("m-draw")!, 58 | brush: { mode: "draw", arrowEnd: false }, 59 | }, 60 | { 61 | el: document.getElementById("m-line")!, 62 | brush: { mode: "line", arrowEnd: false }, 63 | }, 64 | { 65 | el: document.getElementById("m-arrow")!, 66 | brush: { mode: "line", arrowEnd: true }, 67 | }, 68 | { 69 | el: document.getElementById("m-rectangle")!, 70 | brush: { mode: "rectangle", arrowEnd: false }, 71 | }, 72 | { 73 | el: document.getElementById("m-ellipse")!, 74 | brush: { mode: "ellipse", arrowEnd: false }, 75 | }, 76 | ]; 77 | modes.forEach(({ el, brush }) => { 78 | el.addEventListener("click", () => { 79 | modes.forEach(({ el }) => el.classList.remove("active")); 80 | el.classList.add("active"); 81 | drauu.brush.arrowEnd = brush.arrowEnd; 82 | drauu.mode = brush.mode as DrawingMode; 83 | }); 84 | }); 85 | 86 | const lines: { el: HTMLElement; value: string | undefined }[] = [ 87 | { el: document.getElementById("l-solid")!, value: undefined }, 88 | { el: document.getElementById("l-dashed")!, value: "4" }, 89 | { el: document.getElementById("l-dotted")!, value: "1 7" }, 90 | ]; 91 | 92 | lines.forEach(({ el, value }) => { 93 | el.addEventListener("click", () => { 94 | lines.forEach(({ el }) => el.classList.remove("active")); 95 | el.classList.add("active"); 96 | drauu.brush.dasharray = value; 97 | }); 98 | }); 99 | 100 | const colors = Array.from(document.querySelectorAll("[data-color]")); 101 | colors.forEach((i) => { 102 | i.addEventListener("click", () => { 103 | colors.forEach((i) => i.classList.remove("active")); 104 | i.classList.add("active"); 105 | drauu.brush.color = (i as HTMLElement).dataset.color!; 106 | }); 107 | }); 108 | 109 | window.addEventListener("keydown", (e) => { 110 | if (e.code === "KeyZ" && (e.ctrlKey || e.metaKey)) { 111 | if (e.shiftKey) drauu.redo(); 112 | else drauu.undo(); 113 | return; 114 | } 115 | 116 | if (e.shiftKey || e.ctrlKey || e.metaKey || e.altKey) return; 117 | 118 | if (e.code === "KeyL") { 119 | drauu.mode = "line"; 120 | drauu.brush.arrowEnd = false; 121 | modes.forEach(({ el }) => el.classList.remove("active")); 122 | document.getElementById("m-line")?.classList.add("active"); 123 | } else if (e.code === "KeyD") { 124 | drauu.mode = "draw"; 125 | modes.forEach(({ el }) => el.classList.remove("active")); 126 | document.getElementById("m-draw")?.classList.add("active"); 127 | } else if (e.code === "KeyS") { 128 | drauu.mode = "stylus"; 129 | modes.forEach(({ el }) => el.classList.remove("active")); 130 | document.getElementById("m-stylus")?.classList.add("active"); 131 | } else if (e.code === "KeyR") { 132 | drauu.mode = "rectangle"; 133 | modes.forEach(({ el }) => el.classList.remove("active")); 134 | document.getElementById("m-rectangle")?.classList.add("active"); 135 | } else if (e.code === "KeyE") { 136 | drauu.mode = "eraseLine"; 137 | modes.forEach(({ el }) => el.classList.remove("active")); 138 | document.getElementById("m-eraseLine")?.classList.add("active"); 139 | } else if (e.code === "KeyO") { 140 | drauu.mode = "ellipse"; 141 | modes.forEach(({ el }) => el.classList.remove("active")); 142 | document.getElementById("m-ellipse")?.classList.add("active"); 143 | } else if (e.code === "KeyA") { 144 | drauu.mode = "line"; 145 | drauu.brush.arrowEnd = true; 146 | modes.forEach(({ el }) => el.classList.remove("active")); 147 | document.getElementById("m-arrow")?.classList.add("active"); 148 | } else if (e.code === "KeyC") { 149 | drauu.clear(); 150 | } else if (e.code === "Equal") { 151 | drauu.brush.size = Math.min(10, drauu.brush.size + 0.5); 152 | sizeEl.value = `${drauu.brush.size}`; 153 | sizeEl.blur(); 154 | } else if (e.code === "Minus") { 155 | drauu.brush.size = Math.max(1, drauu.brush.size - 0.5); 156 | sizeEl.value = `${drauu.brush.size}`; 157 | sizeEl.blur(); 158 | } else if (e.code === "KeyQ") { 159 | logseq.hideMainUI(); 160 | } 161 | }); 162 | 163 | function createModel() { 164 | return { 165 | openModal() { 166 | logseq.showMainUI(); 167 | }, 168 | }; 169 | } 170 | 171 | const settingsVersion = "v1"; 172 | export const defaultSettings = { 173 | keyBindings: { 174 | openPenMode: "", 175 | }, 176 | settingsVersion, 177 | disabled: false, 178 | }; 179 | 180 | export type DefaultSettingsType = typeof defaultSettings; 181 | 182 | export const initSettings = () => { 183 | let settings = logseq.settings; 184 | 185 | const shouldUpdateSettings = 186 | !settings || settings.settingsVersion != defaultSettings.settingsVersion; 187 | 188 | if (shouldUpdateSettings) { 189 | settings = defaultSettings; 190 | logseq.updateSettings(settings); 191 | } 192 | }; 193 | 194 | export const getSettings = ( 195 | key: string | undefined, 196 | defaultValue: any = undefined 197 | ) => { 198 | const settings = logseq.settings; 199 | const merged = Object.assign(defaultSettings, settings); 200 | return key ? (merged[key] ? merged[key] : defaultValue) : merged; 201 | }; 202 | 203 | const main = async () => { 204 | initSettings(); 205 | const keyBindings = getSettings("keyBindings"); 206 | 207 | // createApp(App).mount('#app') 208 | logseq.provideModel(createModel()); 209 | 210 | logseq.App.registerUIItem("toolbar", { 211 | key: "logseq-pen", 212 | template: ` 213 | 214 | 215 | 216 | `, 217 | }); 218 | 219 | logseq.App.registerCommandPalette( 220 | { 221 | key: "open-pen-mode", 222 | label: "Open Pen Mode", 223 | keybinding: keyBindings.openPenMode 224 | ? { 225 | mode: "global", 226 | binding: keyBindings.openPenMode, 227 | } 228 | : undefined, 229 | }, 230 | createModel().openModal 231 | ); 232 | }; 233 | 234 | logseq.ready().then(main).catch(console.error); 235 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Pen 5 | 6 | 7 | 8 | 9 | 28 |
29 |
30 |
31 |
34 |
Logseq Pen
35 |
/
36 | 37 | 38 | 39 |
/
40 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
/
50 | 51 | 52 | 55 | 58 | 61 | 64 | 67 | 70 |
/
71 | 74 |
/
75 | 85 |
/
86 | 89 | 90 | 91 |
/
92 | 93 |
/
94 | 95 |
96 |
97 | 98 | 103 | 104 | 105 | 106 | 146 | 147 | 148 | 149 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */ 4 | 5 | /* Projects */ 6 | // "incremental": true, /* Enable incremental compilation */ 7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 8 | // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ 9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ 10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 12 | 13 | /* Language and Environment */ 14 | "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ 15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 16 | // "jsx": "preserve", /* Specify what JSX code is generated. */ 17 | // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ 18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ 20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ 22 | // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ 23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 25 | 26 | /* Modules */ 27 | "module": "commonjs", /* Specify what module code is generated. */ 28 | // "rootDir": "./", /* Specify the root folder within your source files. */ 29 | // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ 30 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 31 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 32 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 33 | // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ 34 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */ 35 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 36 | // "resolveJsonModule": true, /* Enable importing .json files */ 37 | // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ 38 | 39 | /* JavaScript Support */ 40 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ 41 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 42 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ 43 | 44 | /* Emit */ 45 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 46 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 47 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 48 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 49 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ 50 | // "outDir": "./", /* Specify an output folder for all emitted files. */ 51 | // "removeComments": true, /* Disable emitting comments. */ 52 | // "noEmit": true, /* Disable emitting files from a compilation. */ 53 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 54 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ 55 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 56 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 57 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 58 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 59 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 60 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 61 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 62 | // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ 63 | // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ 64 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 65 | // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ 66 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 67 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 68 | 69 | /* Interop Constraints */ 70 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 71 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ 72 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */ 73 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 74 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ 75 | 76 | /* Type Checking */ 77 | "strict": true, /* Enable all strict type-checking options. */ 78 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ 79 | // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ 80 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 81 | // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ 82 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 83 | // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ 84 | // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ 85 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 86 | // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ 87 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ 88 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 89 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 90 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 91 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ 92 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 93 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ 94 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 95 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 96 | 97 | /* Completeness */ 98 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 99 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@logseq/libs': ^0.0.9 5 | autoprefixer: ^10.4.12 6 | drauu: ^0.3.1 7 | postcss: ^8.4.16 8 | postcss-nesting: ^10.2.0 9 | tailwindcss: ^3.1.8 10 | typescript: ^4.8.3 11 | vite: ^3.1.3 12 | vite-plugin-logseq: ^1.1.2 13 | 14 | dependencies: 15 | '@logseq/libs': 0.0.9 16 | drauu: 0.3.1 17 | 18 | devDependencies: 19 | autoprefixer: 10.4.12_postcss@8.4.16 20 | postcss: 8.4.16 21 | postcss-nesting: 10.2.0_postcss@8.4.16 22 | tailwindcss: 3.1.8_postcss@8.4.16 23 | typescript: 4.8.3 24 | vite: 3.1.3 25 | vite-plugin-logseq: 1.1.2 26 | 27 | packages: 28 | 29 | /@csstools/selector-specificity/2.0.2_pnx64jze6bptzcedy5bidi3zdi: 30 | resolution: {integrity: sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==} 31 | engines: {node: ^12 || ^14 || >=16} 32 | peerDependencies: 33 | postcss: ^8.2 34 | postcss-selector-parser: ^6.0.10 35 | dependencies: 36 | postcss: 8.4.16 37 | postcss-selector-parser: 6.0.10 38 | dev: true 39 | 40 | /@drauu/core/0.3.1: 41 | resolution: {integrity: sha512-woxjFf1rQ/Z7sfqvfpjClvCkUqhH5bb1dmXs5DZtDE7+zr6qLAZIj0jlqbI2eiBl61Q2zXzsG/oez1E8B+zXpQ==} 42 | dependencies: 43 | perfect-freehand: 1.2.0 44 | dev: false 45 | 46 | /@esbuild/linux-loong64/0.15.7: 47 | resolution: {integrity: sha512-IKznSJOsVUuyt7cDzzSZyqBEcZe+7WlBqTVXiF1OXP/4Nm387ToaXZ0fyLwI1iBlI/bzpxVq411QE2/Bt2XWWw==} 48 | engines: {node: '>=12'} 49 | cpu: [loong64] 50 | os: [linux] 51 | requiresBuild: true 52 | dev: true 53 | optional: true 54 | 55 | /@logseq/libs/0.0.9: 56 | resolution: {integrity: sha512-cNqjZxJ2+JB/C+BjtQhUMQV2/223cqpx3+WnFS9RFDUUAhNq0jvT8pukqeYyDaPu7vV1lJRWtn76/8f/ThYuYg==} 57 | dependencies: 58 | csstype: 3.1.0 59 | debug: 4.3.4 60 | dompurify: 2.3.8 61 | eventemitter3: 4.0.7 62 | fast-deep-equal: 3.1.3 63 | lodash-es: 4.17.21 64 | path: 0.12.7 65 | snake-case: 3.0.4 66 | transitivePeerDependencies: 67 | - supports-color 68 | dev: false 69 | 70 | /@nodelib/fs.scandir/2.1.5: 71 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 72 | engines: {node: '>= 8'} 73 | dependencies: 74 | '@nodelib/fs.stat': 2.0.5 75 | run-parallel: 1.2.0 76 | dev: true 77 | 78 | /@nodelib/fs.stat/2.0.5: 79 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 80 | engines: {node: '>= 8'} 81 | dev: true 82 | 83 | /@nodelib/fs.walk/1.2.8: 84 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 85 | engines: {node: '>= 8'} 86 | dependencies: 87 | '@nodelib/fs.scandir': 2.1.5 88 | fastq: 1.13.0 89 | dev: true 90 | 91 | /acorn-node/1.8.2: 92 | resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} 93 | dependencies: 94 | acorn: 7.4.1 95 | acorn-walk: 7.2.0 96 | xtend: 4.0.2 97 | dev: true 98 | 99 | /acorn-walk/7.2.0: 100 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} 101 | engines: {node: '>=0.4.0'} 102 | dev: true 103 | 104 | /acorn/7.4.1: 105 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} 106 | engines: {node: '>=0.4.0'} 107 | hasBin: true 108 | dev: true 109 | 110 | /anymatch/3.1.2: 111 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 112 | engines: {node: '>= 8'} 113 | dependencies: 114 | normalize-path: 3.0.0 115 | picomatch: 2.3.1 116 | dev: true 117 | 118 | /arg/5.0.2: 119 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 120 | dev: true 121 | 122 | /autoprefixer/10.4.12_postcss@8.4.16: 123 | resolution: {integrity: sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==} 124 | engines: {node: ^10 || ^12 || >=14} 125 | hasBin: true 126 | peerDependencies: 127 | postcss: ^8.1.0 128 | dependencies: 129 | browserslist: 4.21.4 130 | caniuse-lite: 1.0.30001410 131 | fraction.js: 4.2.0 132 | normalize-range: 0.1.2 133 | picocolors: 1.0.0 134 | postcss: 8.4.16 135 | postcss-value-parser: 4.2.0 136 | dev: true 137 | 138 | /binary-extensions/2.2.0: 139 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 140 | engines: {node: '>=8'} 141 | dev: true 142 | 143 | /braces/3.0.2: 144 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 145 | engines: {node: '>=8'} 146 | dependencies: 147 | fill-range: 7.0.1 148 | dev: true 149 | 150 | /browserslist/4.21.4: 151 | resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} 152 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 153 | hasBin: true 154 | dependencies: 155 | caniuse-lite: 1.0.30001410 156 | electron-to-chromium: 1.4.258 157 | node-releases: 2.0.6 158 | update-browserslist-db: 1.0.9_browserslist@4.21.4 159 | dev: true 160 | 161 | /camelcase-css/2.0.1: 162 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 163 | engines: {node: '>= 6'} 164 | dev: true 165 | 166 | /caniuse-lite/1.0.30001410: 167 | resolution: {integrity: sha512-QoblBnuE+rG0lc3Ur9ltP5q47lbguipa/ncNMyyGuqPk44FxbScWAeEO+k5fSQ8WekdAK4mWqNs1rADDAiN5xQ==} 168 | dev: true 169 | 170 | /chokidar/3.5.3: 171 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 172 | engines: {node: '>= 8.10.0'} 173 | dependencies: 174 | anymatch: 3.1.2 175 | braces: 3.0.2 176 | glob-parent: 5.1.2 177 | is-binary-path: 2.1.0 178 | is-glob: 4.0.3 179 | normalize-path: 3.0.0 180 | readdirp: 3.6.0 181 | optionalDependencies: 182 | fsevents: 2.3.2 183 | dev: true 184 | 185 | /color-name/1.1.4: 186 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 187 | dev: true 188 | 189 | /cssesc/3.0.0: 190 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 191 | engines: {node: '>=4'} 192 | hasBin: true 193 | dev: true 194 | 195 | /csstype/3.1.0: 196 | resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==} 197 | dev: false 198 | 199 | /debug/4.3.4: 200 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 201 | engines: {node: '>=6.0'} 202 | peerDependencies: 203 | supports-color: '*' 204 | peerDependenciesMeta: 205 | supports-color: 206 | optional: true 207 | dependencies: 208 | ms: 2.1.2 209 | dev: false 210 | 211 | /defined/1.0.0: 212 | resolution: {integrity: sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==} 213 | dev: true 214 | 215 | /detective/5.2.1: 216 | resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} 217 | engines: {node: '>=0.8.0'} 218 | hasBin: true 219 | dependencies: 220 | acorn-node: 1.8.2 221 | defined: 1.0.0 222 | minimist: 1.2.6 223 | dev: true 224 | 225 | /didyoumean/1.2.2: 226 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 227 | dev: true 228 | 229 | /dlv/1.1.3: 230 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 231 | dev: true 232 | 233 | /dompurify/2.3.8: 234 | resolution: {integrity: sha512-eVhaWoVibIzqdGYjwsBWodIQIaXFSB+cKDf4cfxLMsK0xiud6SE+/WCVx/Xw/UwQsa4cS3T2eITcdtmTg2UKcw==} 235 | dev: false 236 | 237 | /dot-case/3.0.4: 238 | resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} 239 | dependencies: 240 | no-case: 3.0.4 241 | tslib: 2.3.1 242 | dev: false 243 | 244 | /drauu/0.3.1: 245 | resolution: {integrity: sha512-eqjboIt++w9Sc3U8X8X1F0Lkw+L2VpiVSx1Sy732urAyMc/aqucvEC8L29P0IoaSHhCLOcrgleVW9ZYqQrrZ8Q==} 246 | dependencies: 247 | '@drauu/core': 0.3.1 248 | dev: false 249 | 250 | /electron-to-chromium/1.4.258: 251 | resolution: {integrity: sha512-vutF4q0dTUXoAFI7Vbtdwen/BJVwPgj8GRg/SElOodfH7VTX+svUe62A5BG41QRQGk5HsZPB0M++KH1lAlOt0A==} 252 | dev: true 253 | 254 | /esbuild-android-64/0.15.7: 255 | resolution: {integrity: sha512-p7rCvdsldhxQr3YHxptf1Jcd86dlhvc3EQmQJaZzzuAxefO9PvcI0GLOa5nCWem1AJ8iMRu9w0r5TG8pHmbi9w==} 256 | engines: {node: '>=12'} 257 | cpu: [x64] 258 | os: [android] 259 | requiresBuild: true 260 | dev: true 261 | optional: true 262 | 263 | /esbuild-android-arm64/0.15.7: 264 | resolution: {integrity: sha512-L775l9ynJT7rVqRM5vo+9w5g2ysbOCfsdLV4CWanTZ1k/9Jb3IYlQ06VCI1edhcosTYJRECQFJa3eAvkx72eyQ==} 265 | engines: {node: '>=12'} 266 | cpu: [arm64] 267 | os: [android] 268 | requiresBuild: true 269 | dev: true 270 | optional: true 271 | 272 | /esbuild-darwin-64/0.15.7: 273 | resolution: {integrity: sha512-KGPt3r1c9ww009t2xLB6Vk0YyNOXh7hbjZ3EecHoVDxgtbUlYstMPDaReimKe6eOEfyY4hBEEeTvKwPsiH5WZg==} 274 | engines: {node: '>=12'} 275 | cpu: [x64] 276 | os: [darwin] 277 | requiresBuild: true 278 | dev: true 279 | optional: true 280 | 281 | /esbuild-darwin-arm64/0.15.7: 282 | resolution: {integrity: sha512-kBIHvtVqbSGajN88lYMnR3aIleH3ABZLLFLxwL2stiuIGAjGlQW741NxVTpUHQXUmPzxi6POqc9npkXa8AcSZQ==} 283 | engines: {node: '>=12'} 284 | cpu: [arm64] 285 | os: [darwin] 286 | requiresBuild: true 287 | dev: true 288 | optional: true 289 | 290 | /esbuild-freebsd-64/0.15.7: 291 | resolution: {integrity: sha512-hESZB91qDLV5MEwNxzMxPfbjAhOmtfsr9Wnuci7pY6TtEh4UDuevmGmkUIjX/b+e/k4tcNBMf7SRQ2mdNuK/HQ==} 292 | engines: {node: '>=12'} 293 | cpu: [x64] 294 | os: [freebsd] 295 | requiresBuild: true 296 | dev: true 297 | optional: true 298 | 299 | /esbuild-freebsd-arm64/0.15.7: 300 | resolution: {integrity: sha512-dLFR0ChH5t+b3J8w0fVKGvtwSLWCv7GYT2Y2jFGulF1L5HftQLzVGN+6pi1SivuiVSmTh28FwUhi9PwQicXI6Q==} 301 | engines: {node: '>=12'} 302 | cpu: [arm64] 303 | os: [freebsd] 304 | requiresBuild: true 305 | dev: true 306 | optional: true 307 | 308 | /esbuild-linux-32/0.15.7: 309 | resolution: {integrity: sha512-v3gT/LsONGUZcjbt2swrMjwxo32NJzk+7sAgtxhGx1+ZmOFaTRXBAi1PPfgpeo/J//Un2jIKm/I+qqeo4caJvg==} 310 | engines: {node: '>=12'} 311 | cpu: [ia32] 312 | os: [linux] 313 | requiresBuild: true 314 | dev: true 315 | optional: true 316 | 317 | /esbuild-linux-64/0.15.7: 318 | resolution: {integrity: sha512-LxXEfLAKwOVmm1yecpMmWERBshl+Kv5YJ/1KnyAr6HRHFW8cxOEsEfisD3sVl/RvHyW//lhYUVSuy9jGEfIRAQ==} 319 | engines: {node: '>=12'} 320 | cpu: [x64] 321 | os: [linux] 322 | requiresBuild: true 323 | dev: true 324 | optional: true 325 | 326 | /esbuild-linux-arm/0.15.7: 327 | resolution: {integrity: sha512-JKgAHtMR5f75wJTeuNQbyznZZa+pjiUHV7sRZp42UNdyXC6TiUYMW/8z8yIBAr2Fpad8hM1royZKQisqPABPvQ==} 328 | engines: {node: '>=12'} 329 | cpu: [arm] 330 | os: [linux] 331 | requiresBuild: true 332 | dev: true 333 | optional: true 334 | 335 | /esbuild-linux-arm64/0.15.7: 336 | resolution: {integrity: sha512-P3cfhudpzWDkglutWgXcT2S7Ft7o2e3YDMrP1n0z2dlbUZghUkKCyaWw0zhp4KxEEzt/E7lmrtRu/pGWnwb9vw==} 337 | engines: {node: '>=12'} 338 | cpu: [arm64] 339 | os: [linux] 340 | requiresBuild: true 341 | dev: true 342 | optional: true 343 | 344 | /esbuild-linux-mips64le/0.15.7: 345 | resolution: {integrity: sha512-T7XKuxl0VpeFLCJXub6U+iybiqh0kM/bWOTb4qcPyDDwNVhLUiPcGdG2/0S7F93czUZOKP57YiLV8YQewgLHKw==} 346 | engines: {node: '>=12'} 347 | cpu: [mips64el] 348 | os: [linux] 349 | requiresBuild: true 350 | dev: true 351 | optional: true 352 | 353 | /esbuild-linux-ppc64le/0.15.7: 354 | resolution: {integrity: sha512-6mGuC19WpFN7NYbecMIJjeQgvDb5aMuvyk0PDYBJrqAEMkTwg3Z98kEKuCm6THHRnrgsdr7bp4SruSAxEM4eJw==} 355 | engines: {node: '>=12'} 356 | cpu: [ppc64] 357 | os: [linux] 358 | requiresBuild: true 359 | dev: true 360 | optional: true 361 | 362 | /esbuild-linux-riscv64/0.15.7: 363 | resolution: {integrity: sha512-uUJsezbswAYo/X7OU/P+PuL/EI9WzxsEQXDekfwpQ23uGiooxqoLFAPmXPcRAt941vjlY9jtITEEikWMBr+F/g==} 364 | engines: {node: '>=12'} 365 | cpu: [riscv64] 366 | os: [linux] 367 | requiresBuild: true 368 | dev: true 369 | optional: true 370 | 371 | /esbuild-linux-s390x/0.15.7: 372 | resolution: {integrity: sha512-+tO+xOyTNMc34rXlSxK7aCwJgvQyffqEM5MMdNDEeMU3ss0S6wKvbBOQfgd5jRPblfwJ6b+bKiz0g5nABpY0QQ==} 373 | engines: {node: '>=12'} 374 | cpu: [s390x] 375 | os: [linux] 376 | requiresBuild: true 377 | dev: true 378 | optional: true 379 | 380 | /esbuild-netbsd-64/0.15.7: 381 | resolution: {integrity: sha512-yVc4Wz+Pu3cP5hzm5kIygNPrjar/v5WCSoRmIjCPWfBVJkZNb5brEGKUlf+0Y759D48BCWa0WHrWXaNy0DULTQ==} 382 | engines: {node: '>=12'} 383 | cpu: [x64] 384 | os: [netbsd] 385 | requiresBuild: true 386 | dev: true 387 | optional: true 388 | 389 | /esbuild-openbsd-64/0.15.7: 390 | resolution: {integrity: sha512-GsimbwC4FSR4lN3wf8XmTQ+r8/0YSQo21rWDL0XFFhLHKlzEA4SsT1Tl8bPYu00IU6UWSJ+b3fG/8SB69rcuEQ==} 391 | engines: {node: '>=12'} 392 | cpu: [x64] 393 | os: [openbsd] 394 | requiresBuild: true 395 | dev: true 396 | optional: true 397 | 398 | /esbuild-sunos-64/0.15.7: 399 | resolution: {integrity: sha512-8CDI1aL/ts0mDGbWzjEOGKXnU7p3rDzggHSBtVryQzkSOsjCHRVe0iFYUuhczlxU1R3LN/E7HgUO4NXzGGP/Ag==} 400 | engines: {node: '>=12'} 401 | cpu: [x64] 402 | os: [sunos] 403 | requiresBuild: true 404 | dev: true 405 | optional: true 406 | 407 | /esbuild-windows-32/0.15.7: 408 | resolution: {integrity: sha512-cOnKXUEPS8EGCzRSFa1x6NQjGhGsFlVgjhqGEbLTPsA7x4RRYiy2RKoArNUU4iR2vHmzqS5Gr84MEumO/wxYKA==} 409 | engines: {node: '>=12'} 410 | cpu: [ia32] 411 | os: [win32] 412 | requiresBuild: true 413 | dev: true 414 | optional: true 415 | 416 | /esbuild-windows-64/0.15.7: 417 | resolution: {integrity: sha512-7MI08Ec2sTIDv+zH6StNBKO+2hGUYIT42GmFyW6MBBWWtJhTcQLinKS6ldIN1d52MXIbiJ6nXyCJ+LpL4jBm3Q==} 418 | engines: {node: '>=12'} 419 | cpu: [x64] 420 | os: [win32] 421 | requiresBuild: true 422 | dev: true 423 | optional: true 424 | 425 | /esbuild-windows-arm64/0.15.7: 426 | resolution: {integrity: sha512-R06nmqBlWjKHddhRJYlqDd3Fabx9LFdKcjoOy08YLimwmsswlFBJV4rXzZCxz/b7ZJXvrZgj8DDv1ewE9+StMw==} 427 | engines: {node: '>=12'} 428 | cpu: [arm64] 429 | os: [win32] 430 | requiresBuild: true 431 | dev: true 432 | optional: true 433 | 434 | /esbuild/0.15.7: 435 | resolution: {integrity: sha512-7V8tzllIbAQV1M4QoE52ImKu8hT/NLGlGXkiDsbEU5PS6K8Mn09ZnYoS+dcmHxOS9CRsV4IRAMdT3I67IyUNXw==} 436 | engines: {node: '>=12'} 437 | hasBin: true 438 | requiresBuild: true 439 | optionalDependencies: 440 | '@esbuild/linux-loong64': 0.15.7 441 | esbuild-android-64: 0.15.7 442 | esbuild-android-arm64: 0.15.7 443 | esbuild-darwin-64: 0.15.7 444 | esbuild-darwin-arm64: 0.15.7 445 | esbuild-freebsd-64: 0.15.7 446 | esbuild-freebsd-arm64: 0.15.7 447 | esbuild-linux-32: 0.15.7 448 | esbuild-linux-64: 0.15.7 449 | esbuild-linux-arm: 0.15.7 450 | esbuild-linux-arm64: 0.15.7 451 | esbuild-linux-mips64le: 0.15.7 452 | esbuild-linux-ppc64le: 0.15.7 453 | esbuild-linux-riscv64: 0.15.7 454 | esbuild-linux-s390x: 0.15.7 455 | esbuild-netbsd-64: 0.15.7 456 | esbuild-openbsd-64: 0.15.7 457 | esbuild-sunos-64: 0.15.7 458 | esbuild-windows-32: 0.15.7 459 | esbuild-windows-64: 0.15.7 460 | esbuild-windows-arm64: 0.15.7 461 | dev: true 462 | 463 | /escalade/3.1.1: 464 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 465 | engines: {node: '>=6'} 466 | dev: true 467 | 468 | /eventemitter3/4.0.7: 469 | resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} 470 | dev: false 471 | 472 | /fast-deep-equal/3.1.3: 473 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 474 | dev: false 475 | 476 | /fast-glob/3.2.11: 477 | resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} 478 | engines: {node: '>=8.6.0'} 479 | dependencies: 480 | '@nodelib/fs.stat': 2.0.5 481 | '@nodelib/fs.walk': 1.2.8 482 | glob-parent: 5.1.2 483 | merge2: 1.4.1 484 | micromatch: 4.0.4 485 | dev: true 486 | 487 | /fastq/1.13.0: 488 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 489 | dependencies: 490 | reusify: 1.0.4 491 | dev: true 492 | 493 | /fill-range/7.0.1: 494 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 495 | engines: {node: '>=8'} 496 | dependencies: 497 | to-regex-range: 5.0.1 498 | dev: true 499 | 500 | /fraction.js/4.2.0: 501 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} 502 | dev: true 503 | 504 | /fsevents/2.3.2: 505 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 506 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 507 | os: [darwin] 508 | requiresBuild: true 509 | dev: true 510 | optional: true 511 | 512 | /function-bind/1.1.1: 513 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 514 | dev: true 515 | 516 | /glob-parent/5.1.2: 517 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 518 | engines: {node: '>= 6'} 519 | dependencies: 520 | is-glob: 4.0.3 521 | dev: true 522 | 523 | /glob-parent/6.0.2: 524 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 525 | engines: {node: '>=10.13.0'} 526 | dependencies: 527 | is-glob: 4.0.3 528 | dev: true 529 | 530 | /has/1.0.3: 531 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 532 | engines: {node: '>= 0.4.0'} 533 | dependencies: 534 | function-bind: 1.1.1 535 | dev: true 536 | 537 | /inherits/2.0.3: 538 | resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} 539 | dev: false 540 | 541 | /is-binary-path/2.1.0: 542 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 543 | engines: {node: '>=8'} 544 | dependencies: 545 | binary-extensions: 2.2.0 546 | dev: true 547 | 548 | /is-core-module/2.9.0: 549 | resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} 550 | dependencies: 551 | has: 1.0.3 552 | dev: true 553 | 554 | /is-extglob/2.1.1: 555 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 556 | engines: {node: '>=0.10.0'} 557 | dev: true 558 | 559 | /is-glob/4.0.3: 560 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 561 | engines: {node: '>=0.10.0'} 562 | dependencies: 563 | is-extglob: 2.1.1 564 | dev: true 565 | 566 | /is-number/7.0.0: 567 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 568 | engines: {node: '>=0.12.0'} 569 | dev: true 570 | 571 | /lilconfig/2.0.6: 572 | resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} 573 | engines: {node: '>=10'} 574 | dev: true 575 | 576 | /lodash-es/4.17.21: 577 | resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} 578 | dev: false 579 | 580 | /lower-case/2.0.2: 581 | resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} 582 | dependencies: 583 | tslib: 2.3.1 584 | dev: false 585 | 586 | /magic-string/0.26.1: 587 | resolution: {integrity: sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==} 588 | engines: {node: '>=12'} 589 | dependencies: 590 | sourcemap-codec: 1.4.8 591 | dev: true 592 | 593 | /merge2/1.4.1: 594 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 595 | engines: {node: '>= 8'} 596 | dev: true 597 | 598 | /micromatch/4.0.4: 599 | resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} 600 | engines: {node: '>=8.6'} 601 | dependencies: 602 | braces: 3.0.2 603 | picomatch: 2.3.1 604 | dev: true 605 | 606 | /minimist/1.2.6: 607 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} 608 | dev: true 609 | 610 | /ms/2.1.2: 611 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 612 | dev: false 613 | 614 | /nanoid/3.3.4: 615 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 616 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 617 | hasBin: true 618 | dev: true 619 | 620 | /no-case/3.0.4: 621 | resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} 622 | dependencies: 623 | lower-case: 2.0.2 624 | tslib: 2.3.1 625 | dev: false 626 | 627 | /node-releases/2.0.6: 628 | resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} 629 | dev: true 630 | 631 | /normalize-path/3.0.0: 632 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 633 | engines: {node: '>=0.10.0'} 634 | dev: true 635 | 636 | /normalize-range/0.1.2: 637 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 638 | engines: {node: '>=0.10.0'} 639 | dev: true 640 | 641 | /object-hash/3.0.0: 642 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 643 | engines: {node: '>= 6'} 644 | dev: true 645 | 646 | /path-parse/1.0.7: 647 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 648 | dev: true 649 | 650 | /path/0.12.7: 651 | resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==} 652 | dependencies: 653 | process: 0.11.10 654 | util: 0.10.4 655 | dev: false 656 | 657 | /perfect-freehand/1.2.0: 658 | resolution: {integrity: sha512-h/0ikF1M3phW7CwpZ5MMvKnfpHficWoOEyr//KVNTxV4F6deRK1eYMtHyBKEAKFK0aXIEUK9oBvlF6PNXMDsAw==} 659 | dev: false 660 | 661 | /picocolors/1.0.0: 662 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 663 | dev: true 664 | 665 | /picomatch/2.3.1: 666 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 667 | engines: {node: '>=8.6'} 668 | dev: true 669 | 670 | /pify/2.3.0: 671 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 672 | engines: {node: '>=0.10.0'} 673 | dev: true 674 | 675 | /postcss-import/14.1.0_postcss@8.4.16: 676 | resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} 677 | engines: {node: '>=10.0.0'} 678 | peerDependencies: 679 | postcss: ^8.0.0 680 | dependencies: 681 | postcss: 8.4.16 682 | postcss-value-parser: 4.2.0 683 | read-cache: 1.0.0 684 | resolve: 1.22.1 685 | dev: true 686 | 687 | /postcss-js/4.0.0_postcss@8.4.16: 688 | resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} 689 | engines: {node: ^12 || ^14 || >= 16} 690 | peerDependencies: 691 | postcss: ^8.3.3 692 | dependencies: 693 | camelcase-css: 2.0.1 694 | postcss: 8.4.16 695 | dev: true 696 | 697 | /postcss-load-config/3.1.4_postcss@8.4.16: 698 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 699 | engines: {node: '>= 10'} 700 | peerDependencies: 701 | postcss: '>=8.0.9' 702 | ts-node: '>=9.0.0' 703 | peerDependenciesMeta: 704 | postcss: 705 | optional: true 706 | ts-node: 707 | optional: true 708 | dependencies: 709 | lilconfig: 2.0.6 710 | postcss: 8.4.16 711 | yaml: 1.10.2 712 | dev: true 713 | 714 | /postcss-nested/5.0.6_postcss@8.4.16: 715 | resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} 716 | engines: {node: '>=12.0'} 717 | peerDependencies: 718 | postcss: ^8.2.14 719 | dependencies: 720 | postcss: 8.4.16 721 | postcss-selector-parser: 6.0.10 722 | dev: true 723 | 724 | /postcss-nesting/10.2.0_postcss@8.4.16: 725 | resolution: {integrity: sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==} 726 | engines: {node: ^12 || ^14 || >=16} 727 | peerDependencies: 728 | postcss: ^8.2 729 | dependencies: 730 | '@csstools/selector-specificity': 2.0.2_pnx64jze6bptzcedy5bidi3zdi 731 | postcss: 8.4.16 732 | postcss-selector-parser: 6.0.10 733 | dev: true 734 | 735 | /postcss-selector-parser/6.0.10: 736 | resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} 737 | engines: {node: '>=4'} 738 | dependencies: 739 | cssesc: 3.0.0 740 | util-deprecate: 1.0.2 741 | dev: true 742 | 743 | /postcss-value-parser/4.2.0: 744 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 745 | dev: true 746 | 747 | /postcss/8.4.16: 748 | resolution: {integrity: sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==} 749 | engines: {node: ^10 || ^12 || >=14} 750 | dependencies: 751 | nanoid: 3.3.4 752 | picocolors: 1.0.0 753 | source-map-js: 1.0.2 754 | dev: true 755 | 756 | /process/0.11.10: 757 | resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} 758 | engines: {node: '>= 0.6.0'} 759 | dev: false 760 | 761 | /queue-microtask/1.2.3: 762 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 763 | dev: true 764 | 765 | /quick-lru/5.1.1: 766 | resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} 767 | engines: {node: '>=10'} 768 | dev: true 769 | 770 | /read-cache/1.0.0: 771 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 772 | dependencies: 773 | pify: 2.3.0 774 | dev: true 775 | 776 | /readdirp/3.6.0: 777 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 778 | engines: {node: '>=8.10.0'} 779 | dependencies: 780 | picomatch: 2.3.1 781 | dev: true 782 | 783 | /resolve/1.22.1: 784 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 785 | hasBin: true 786 | dependencies: 787 | is-core-module: 2.9.0 788 | path-parse: 1.0.7 789 | supports-preserve-symlinks-flag: 1.0.0 790 | dev: true 791 | 792 | /reusify/1.0.4: 793 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 794 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 795 | dev: true 796 | 797 | /rollup/2.78.1: 798 | resolution: {integrity: sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==} 799 | engines: {node: '>=10.0.0'} 800 | hasBin: true 801 | optionalDependencies: 802 | fsevents: 2.3.2 803 | dev: true 804 | 805 | /run-parallel/1.2.0: 806 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 807 | dependencies: 808 | queue-microtask: 1.2.3 809 | dev: true 810 | 811 | /snake-case/3.0.4: 812 | resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} 813 | dependencies: 814 | dot-case: 3.0.4 815 | tslib: 2.3.1 816 | dev: false 817 | 818 | /source-map-js/1.0.2: 819 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 820 | engines: {node: '>=0.10.0'} 821 | dev: true 822 | 823 | /sourcemap-codec/1.4.8: 824 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 825 | dev: true 826 | 827 | /supports-preserve-symlinks-flag/1.0.0: 828 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 829 | engines: {node: '>= 0.4'} 830 | dev: true 831 | 832 | /tailwindcss/3.1.8_postcss@8.4.16: 833 | resolution: {integrity: sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==} 834 | engines: {node: '>=12.13.0'} 835 | hasBin: true 836 | peerDependencies: 837 | postcss: ^8.0.9 838 | dependencies: 839 | arg: 5.0.2 840 | chokidar: 3.5.3 841 | color-name: 1.1.4 842 | detective: 5.2.1 843 | didyoumean: 1.2.2 844 | dlv: 1.1.3 845 | fast-glob: 3.2.11 846 | glob-parent: 6.0.2 847 | is-glob: 4.0.3 848 | lilconfig: 2.0.6 849 | normalize-path: 3.0.0 850 | object-hash: 3.0.0 851 | picocolors: 1.0.0 852 | postcss: 8.4.16 853 | postcss-import: 14.1.0_postcss@8.4.16 854 | postcss-js: 4.0.0_postcss@8.4.16 855 | postcss-load-config: 3.1.4_postcss@8.4.16 856 | postcss-nested: 5.0.6_postcss@8.4.16 857 | postcss-selector-parser: 6.0.10 858 | postcss-value-parser: 4.2.0 859 | quick-lru: 5.1.1 860 | resolve: 1.22.1 861 | transitivePeerDependencies: 862 | - ts-node 863 | dev: true 864 | 865 | /to-regex-range/5.0.1: 866 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 867 | engines: {node: '>=8.0'} 868 | dependencies: 869 | is-number: 7.0.0 870 | dev: true 871 | 872 | /tslib/2.3.1: 873 | resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} 874 | dev: false 875 | 876 | /typescript/4.8.3: 877 | resolution: {integrity: sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==} 878 | engines: {node: '>=4.2.0'} 879 | hasBin: true 880 | dev: true 881 | 882 | /update-browserslist-db/1.0.9_browserslist@4.21.4: 883 | resolution: {integrity: sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==} 884 | hasBin: true 885 | peerDependencies: 886 | browserslist: '>= 4.21.0' 887 | dependencies: 888 | browserslist: 4.21.4 889 | escalade: 3.1.1 890 | picocolors: 1.0.0 891 | dev: true 892 | 893 | /util-deprecate/1.0.2: 894 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 895 | dev: true 896 | 897 | /util/0.10.4: 898 | resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} 899 | dependencies: 900 | inherits: 2.0.3 901 | dev: false 902 | 903 | /vite-plugin-logseq/1.1.2: 904 | resolution: {integrity: sha512-l5YvoH3K25Zx9eqgoJFug7NfVqSPwq7/FcYYhN1TkdG8ZOiD+c+TAwdCS2dJbGgvx8GmSpbgwSZWgslB+wH53g==} 905 | dependencies: 906 | magic-string: 0.26.1 907 | dev: true 908 | 909 | /vite/3.1.3: 910 | resolution: {integrity: sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA==} 911 | engines: {node: ^14.18.0 || >=16.0.0} 912 | hasBin: true 913 | peerDependencies: 914 | less: '*' 915 | sass: '*' 916 | stylus: '*' 917 | terser: ^5.4.0 918 | peerDependenciesMeta: 919 | less: 920 | optional: true 921 | sass: 922 | optional: true 923 | stylus: 924 | optional: true 925 | terser: 926 | optional: true 927 | dependencies: 928 | esbuild: 0.15.7 929 | postcss: 8.4.16 930 | resolve: 1.22.1 931 | rollup: 2.78.1 932 | optionalDependencies: 933 | fsevents: 2.3.2 934 | dev: true 935 | 936 | /xtend/4.0.2: 937 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 938 | engines: {node: '>=0.4'} 939 | dev: true 940 | 941 | /yaml/1.10.2: 942 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 943 | engines: {node: '>= 6'} 944 | dev: true 945 | --------------------------------------------------------------------------------