├── .gitignore ├── assets ├── 103-darwin-x64.zip ├── 103-linux-x64.zip ├── 103-win32-ia32.zip ├── 103-win32-x64.zip └── 103-darwin-arm64.zip ├── manifest.json ├── tsconfig.json ├── package.json ├── rollup.config.js ├── LICENSE ├── src └── main.ts ├── README.md └── pnpm-lock.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ 3 | *.db 4 | main.js -------------------------------------------------------------------------------- /assets/103-darwin-x64.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/windily-cloud/obsidian-sqlite3/HEAD/assets/103-darwin-x64.zip -------------------------------------------------------------------------------- /assets/103-linux-x64.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/windily-cloud/obsidian-sqlite3/HEAD/assets/103-linux-x64.zip -------------------------------------------------------------------------------- /assets/103-win32-ia32.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/windily-cloud/obsidian-sqlite3/HEAD/assets/103-win32-ia32.zip -------------------------------------------------------------------------------- /assets/103-win32-x64.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/windily-cloud/obsidian-sqlite3/HEAD/assets/103-win32-x64.zip -------------------------------------------------------------------------------- /assets/103-darwin-arm64.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/windily-cloud/obsidian-sqlite3/HEAD/assets/103-darwin-arm64.zip -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "obsidian-sqlite3", 3 | "name": "Obsidian Sqlite3", 4 | "version": "0.0.1", 5 | "minAppVersion": "0.15.0", 6 | "description": "Use better-sqlite3 to give obsidian the ability to manipulate sqlite3 databases", 7 | "author": "windily-cloud", 8 | "authorUrl": "", 9 | "isDesktopOnly": true 10 | } 11 | -------------------------------------------------------------------------------- /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 | "lib": [ 13 | "dom", 14 | "es5", 15 | "scripthost", 16 | "es2015" 17 | ], 18 | "jsx": "react", 19 | "allowSyntheticDefaultImports": true, 20 | "suppressImplicitAnyIndexErrors":true, 21 | }, 22 | "include": ["src/**/*.ts", "src/**/*tsx", "src/**/*.d"] 23 | } 24 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "obsidian-database", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "dev": "rollup --config rollup.config.js -w --context window", 8 | "build": "rollup --config rollup.config.js --context window" 9 | }, 10 | "keywords": [], 11 | "author": "", 12 | "license": "ISC", 13 | "devDependencies": { 14 | "@rollup/plugin-commonjs": "^22.0.2", 15 | "@rollup/plugin-node-resolve": "^14.1.0", 16 | "@rollup/plugin-typescript": "^8.5.0", 17 | "@types/better-sqlite3": "^7.6.0", 18 | "obsidian": "^0.16.3", 19 | "rollup": "^2.79.0", 20 | "rollup-plugin-re": "^1.0.7", 21 | "tslib": "^2.4.0", 22 | "typescript": "^4.8.3" 23 | }, 24 | "dependencies": { 25 | "better-sqlite3": "^7.6.2" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import typescript from '@rollup/plugin-typescript'; 2 | import replace from "rollup-plugin-re" 3 | import {nodeResolve} from '@rollup/plugin-node-resolve'; 4 | import commonjs from '@rollup/plugin-commonjs'; 5 | const patchStr = ` 6 | const libPath = app.vault.adapter.getFullPath(app.vault.configDir) 7 | addon = DEFAULT_ADDON || (DEFAULT_ADDON = require(path.resolve(libPath, "better_sqlite3.node"))); 8 | ` 9 | 10 | export default { 11 | input: './src/main.ts', 12 | output: { 13 | dir: 'D:/Project/Obsidian/obsidian-develop/.obsidian/plugins/obsidian-database', 14 | sourcemap: 'inline', 15 | format: 'cjs', 16 | exports: 'default', 17 | }, 18 | external: ['obsidian'], 19 | plugins: [ 20 | typescript(), 21 | nodeResolve({browser: true}), 22 | commonjs(), 23 | replace({ 24 | patterns: [ 25 | { 26 | match: /.*/, 27 | test: /addon\s=\sDEFAULT_ADDON\s\|\|\s\(DEFAULT_ADDON\s=\srequire.*\;/, 28 | replace: patchStr 29 | } 30 | ] 31 | }) 32 | ] 33 | }; -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2017 Joshua Wise 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. -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { Plugin } from 'obsidian' 2 | import Database from 'better-sqlite3' 3 | import type { Database as DBtype } from 'better-sqlite3' 4 | import { SqliteError } from 'better-sqlite3' 5 | import path from 'path' 6 | 7 | export default class SqliteDatabase extends Plugin { 8 | initDatabase: (sqlitePath: string, options?: Database.Options) => DBtype 9 | SqliteError: SqliteError 10 | async onload(): Promise { 11 | console.log('loading obsidian-sqlite3 plugin...') 12 | 13 | this.initDatabase = this.databaseWrapper 14 | this.SqliteError = SqliteError 15 | } 16 | 17 | getDetaultDb(): DBtype { 18 | //@ts-ignore 19 | const defaultDbPath = path.resolve(app.vault.adapter.basePath, app.vault.configDir, "obsidian.db") 20 | return new Database(defaultDbPath, { verbose: console.log }) 21 | } 22 | 23 | closeDefaultDb(): void { 24 | const db = this.getDetaultDb() 25 | db.close() 26 | } 27 | 28 | private databaseWrapper(sqlitePath: string, options?: Database.Options) { 29 | return new Database(sqlitePath, options) 30 | } 31 | 32 | async onunload(): Promise { 33 | this.closeDefaultDb() 34 | console.log('unloading obsidain-sqlite3 plugin') 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OBSIDIAN-SQLITE3 2 | 3 | Use better-sqlite3 to give obisidian the ability to manipulate sqlite3 databases. 4 | 5 | # Intention 6 | 7 | Currently the linkage between obsidian and zotero requires the use of zotero's Better BibTeX for Zotero plugin, which is a inelegant way. Wouldn't it be nice if I could access zotero's database directly? 8 | 9 | At the same time, obsidian has all the data in the md file, which is perfect. But I would like to link with other software like zotero, sioyek, notion, sticky note etc. that use sqlite3 as data storage. Through the api exposed by this plugin, other developers can easily call other software's database. In fact, I would like obsidian to integrate this feature to give ob more ways to store data, so as not to pollute the md file at the same time, bringing more possibilities. The work I did was trivial, just exposing two functions of better-sqlite3. 10 | 11 | **Why not integrate the better-sqlite3 library into a functional plugin?** 12 | 13 | Because this library is not like other libaray, `npm install` and that's it. For developers, you need to install the `node gyp` build environment, python, MS2022, .net tools, and a bunch of unknown errors. In particular, the binding.js of better-sqlite3 should be modified when packaging. This can be a very annoying thing for windows development. I don't want to have to do it again, how nice for other developers to call it directly. 14 | 15 | **So what is the use of this plugin?** 16 | 17 | - Linking with other software that uses sqlite. 18 | - Store some dirty persistent data, such as the hash of each note, pollute md generic syntax of other syntax, etc. 19 | - Store things that are not easy to write in md, or don't want to write in md format, such as bookmarks, time tracker, etc. 20 | 21 | # Usage 22 | 23 | ## Use default database 24 | 25 | This plugin will create `obsidian.db` in the `.obsidian` directory by default, which is the default sqlite file. You can get an instance of this database through the api: 26 | 27 | ```js 28 | //Get the instanse of default database 29 | const db = app.plugins.getPlugin["obsidian-sqlite3"].getDefaultDb() 30 | 31 | //Some operations on the database 32 | 33 | //close database 34 | db.close() 35 | 36 | ``` 37 | ## Use other database 38 | 39 | You can also create your own sqlite3 database file or get other software's sqlite3 file: 40 | 41 | ```js 42 | const db = app.plugins.getPlugin["obsidian-sqlite3"].initDatabase("D:/temp/custom-db.db", { verbose: console.log }) 43 | 44 | db.close() 45 | ``` 46 | 47 | Then you can read the [better-sqlite3 api doc](https://github.com/WiseLibs/better-sqlite3/blob/master/docs/api.md), do anything you want. 48 | 49 | # Install 50 | 51 | ## From Obsidian 52 | 53 | 1. Open Settings > Third-party plugin. 54 | 2. Make sure Safe mode is off. 55 | 3. Click Browse community plugins. 56 | 4. Search for this plugin. 57 | 5. Click Install. 58 | 6. Once installed, enable the plugin and close the community plugins window. 59 | 7. Go to [plugin assets page](https://github.com/windily-cloud/obsidian-sqlite3/tree/master/assets), download the corresponding better_sqlite3.node zip file and unzip this file. 60 | 8. Copy better-sqlite3.node file into the path ".obsidian/". 61 | 62 | Tips: 63 | 64 | - For Mac: 103-darwin-arm64.zip. 65 | - For Linux: 103-linux-x64.zip. 66 | - For windows: 103-win32-x64.zip. 67 | 68 | If you need another compiled version, please download it from the [better-sqlite3 repo](https://github.com/WiseLibs/better-sqlite3/releases/tag/v7.6.2). 69 | 70 | ## From GitHub 71 | 72 | 1. Download the Latest Release from the Releases section of the GitHub Repository. 73 | 2. Put files to your vault's plugins folder: `.obsidian/plugins/obsidain-sqlite3` 74 | 3. Reload Obsidian. 75 | 4. If prompted about Safe Mode, you can disable safe mode and enable the plugin. Otherwise, head to Settings, third-party plugins, make sure safe mode is off and enable the plugin from there. 76 | 5. Go to [plugin assets page](https://github.com/windily-cloud/obsidian-sqlite3/tree/master/assets), download the corresponding better_sqlite3.node zip file and unzip this file. 77 | 8. Copy better-sqlite3.node file into the path ".obsidian/". 78 | 79 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@rollup/plugin-commonjs': ^22.0.2 5 | '@rollup/plugin-node-resolve': ^14.1.0 6 | '@rollup/plugin-typescript': ^8.5.0 7 | '@types/better-sqlite3': ^7.6.0 8 | better-sqlite3: ^7.6.2 9 | obsidian: ^0.16.3 10 | rollup: ^2.79.0 11 | rollup-plugin-re: ^1.0.7 12 | tslib: ^2.4.0 13 | typescript: ^4.8.3 14 | 15 | dependencies: 16 | better-sqlite3: 7.6.2 17 | 18 | devDependencies: 19 | '@rollup/plugin-commonjs': 22.0.2_rollup@2.79.0 20 | '@rollup/plugin-node-resolve': 14.1.0_rollup@2.79.0 21 | '@rollup/plugin-typescript': 8.5.0_tznp6w7csbjledp5nresoxoky4 22 | '@types/better-sqlite3': 7.6.0 23 | obsidian: 0.16.3 24 | rollup: 2.79.0 25 | rollup-plugin-re: 1.0.7 26 | tslib: 2.4.0 27 | typescript: 4.8.3 28 | 29 | packages: 30 | 31 | /@rollup/plugin-commonjs/22.0.2_rollup@2.79.0: 32 | resolution: {integrity: sha512-//NdP6iIwPbMTcazYsiBMbJW7gfmpHom33u1beiIoHDEM0Q9clvtQB1T0efvMqHeKsGohiHo97BCPCkBXdscwg==} 33 | engines: {node: '>= 12.0.0'} 34 | peerDependencies: 35 | rollup: ^2.68.0 36 | dependencies: 37 | '@rollup/pluginutils': 3.1.0_rollup@2.79.0 38 | commondir: 1.0.1 39 | estree-walker: 2.0.2 40 | glob: 7.2.3 41 | is-reference: 1.2.1 42 | magic-string: 0.25.9 43 | resolve: 1.22.1 44 | rollup: 2.79.0 45 | dev: true 46 | 47 | /@rollup/plugin-node-resolve/14.1.0_rollup@2.79.0: 48 | resolution: {integrity: sha512-5G2niJroNCz/1zqwXtk0t9+twOSDlG00k1Wfd7bkbbXmwg8H8dvgHdIWAun53Ps/rckfvOC7scDBjuGFg5OaWw==} 49 | engines: {node: '>= 10.0.0'} 50 | peerDependencies: 51 | rollup: ^2.78.0 52 | dependencies: 53 | '@rollup/pluginutils': 3.1.0_rollup@2.79.0 54 | '@types/resolve': 1.17.1 55 | deepmerge: 4.2.2 56 | is-builtin-module: 3.2.0 57 | is-module: 1.0.0 58 | resolve: 1.22.1 59 | rollup: 2.79.0 60 | dev: true 61 | 62 | /@rollup/plugin-typescript/8.5.0_tznp6w7csbjledp5nresoxoky4: 63 | resolution: {integrity: sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==} 64 | engines: {node: '>=8.0.0'} 65 | peerDependencies: 66 | rollup: ^2.14.0 67 | tslib: '*' 68 | typescript: '>=3.7.0' 69 | peerDependenciesMeta: 70 | tslib: 71 | optional: true 72 | dependencies: 73 | '@rollup/pluginutils': 3.1.0_rollup@2.79.0 74 | resolve: 1.22.1 75 | rollup: 2.79.0 76 | tslib: 2.4.0 77 | typescript: 4.8.3 78 | dev: true 79 | 80 | /@rollup/pluginutils/3.1.0_rollup@2.79.0: 81 | resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} 82 | engines: {node: '>= 8.0.0'} 83 | peerDependencies: 84 | rollup: ^1.20.0||^2.0.0 85 | dependencies: 86 | '@types/estree': 0.0.39 87 | estree-walker: 1.0.1 88 | picomatch: 2.3.1 89 | rollup: 2.79.0 90 | dev: true 91 | 92 | /@types/better-sqlite3/7.6.0: 93 | resolution: {integrity: sha512-rnSP9vY+fVsF3iJja5yRGBJV63PNBiezJlYrCkqUmQWFoB16cxAHwOkjsAYEu317miOfKaJpa65cbp0P4XJ/jw==} 94 | dependencies: 95 | '@types/node': 18.7.18 96 | dev: true 97 | 98 | /@types/codemirror/0.0.108: 99 | resolution: {integrity: sha512-3FGFcus0P7C2UOGCNUVENqObEb4SFk+S8Dnxq7K6aIsLVs/vDtlangl3PEO0ykaKXyK56swVF6Nho7VsA44uhw==} 100 | dependencies: 101 | '@types/tern': 0.23.4 102 | dev: true 103 | 104 | /@types/estree/0.0.39: 105 | resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} 106 | dev: true 107 | 108 | /@types/estree/1.0.0: 109 | resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} 110 | dev: true 111 | 112 | /@types/node/18.7.18: 113 | resolution: {integrity: sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg==} 114 | dev: true 115 | 116 | /@types/resolve/1.17.1: 117 | resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} 118 | dependencies: 119 | '@types/node': 18.7.18 120 | dev: true 121 | 122 | /@types/tern/0.23.4: 123 | resolution: {integrity: sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==} 124 | dependencies: 125 | '@types/estree': 1.0.0 126 | dev: true 127 | 128 | /balanced-match/1.0.2: 129 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 130 | dev: true 131 | 132 | /base64-js/1.5.1: 133 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 134 | dev: false 135 | 136 | /better-sqlite3/7.6.2: 137 | resolution: {integrity: sha512-S5zIU1Hink2AH4xPsN0W43T1/AJ5jrPh7Oy07ocuW/AKYYY02GWzz9NH0nbSMn/gw6fDZ5jZ1QsHt1BXAwJ6Lg==} 138 | requiresBuild: true 139 | dependencies: 140 | bindings: 1.5.0 141 | prebuild-install: 7.1.1 142 | dev: false 143 | 144 | /bindings/1.5.0: 145 | resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} 146 | dependencies: 147 | file-uri-to-path: 1.0.0 148 | dev: false 149 | 150 | /bl/4.1.0: 151 | resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} 152 | dependencies: 153 | buffer: 5.7.1 154 | inherits: 2.0.4 155 | readable-stream: 3.6.0 156 | dev: false 157 | 158 | /brace-expansion/1.1.11: 159 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 160 | dependencies: 161 | balanced-match: 1.0.2 162 | concat-map: 0.0.1 163 | dev: true 164 | 165 | /buffer/5.7.1: 166 | resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} 167 | dependencies: 168 | base64-js: 1.5.1 169 | ieee754: 1.2.1 170 | dev: false 171 | 172 | /builtin-modules/3.3.0: 173 | resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} 174 | engines: {node: '>=6'} 175 | dev: true 176 | 177 | /chownr/1.1.4: 178 | resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} 179 | dev: false 180 | 181 | /commondir/1.0.1: 182 | resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} 183 | dev: true 184 | 185 | /concat-map/0.0.1: 186 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 187 | dev: true 188 | 189 | /decompress-response/6.0.0: 190 | resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} 191 | engines: {node: '>=10'} 192 | dependencies: 193 | mimic-response: 3.1.0 194 | dev: false 195 | 196 | /deep-extend/0.6.0: 197 | resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} 198 | engines: {node: '>=4.0.0'} 199 | dev: false 200 | 201 | /deepmerge/4.2.2: 202 | resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} 203 | engines: {node: '>=0.10.0'} 204 | dev: true 205 | 206 | /detect-libc/2.0.1: 207 | resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} 208 | engines: {node: '>=8'} 209 | dev: false 210 | 211 | /end-of-stream/1.4.4: 212 | resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} 213 | dependencies: 214 | once: 1.4.0 215 | dev: false 216 | 217 | /estree-walker/0.6.1: 218 | resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} 219 | dev: true 220 | 221 | /estree-walker/1.0.1: 222 | resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} 223 | dev: true 224 | 225 | /estree-walker/2.0.2: 226 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 227 | dev: true 228 | 229 | /expand-template/2.0.3: 230 | resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} 231 | engines: {node: '>=6'} 232 | dev: false 233 | 234 | /file-uri-to-path/1.0.0: 235 | resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} 236 | dev: false 237 | 238 | /fs-constants/1.0.0: 239 | resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} 240 | dev: false 241 | 242 | /fs.realpath/1.0.0: 243 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 244 | dev: true 245 | 246 | /fsevents/2.3.2: 247 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 248 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 249 | os: [darwin] 250 | requiresBuild: true 251 | dev: true 252 | optional: true 253 | 254 | /function-bind/1.1.1: 255 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 256 | dev: true 257 | 258 | /github-from-package/0.0.0: 259 | resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} 260 | dev: false 261 | 262 | /glob/7.2.3: 263 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 264 | dependencies: 265 | fs.realpath: 1.0.0 266 | inflight: 1.0.6 267 | inherits: 2.0.4 268 | minimatch: 3.1.2 269 | once: 1.4.0 270 | path-is-absolute: 1.0.1 271 | dev: true 272 | 273 | /has/1.0.3: 274 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 275 | engines: {node: '>= 0.4.0'} 276 | dependencies: 277 | function-bind: 1.1.1 278 | dev: true 279 | 280 | /ieee754/1.2.1: 281 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 282 | dev: false 283 | 284 | /inflight/1.0.6: 285 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 286 | dependencies: 287 | once: 1.4.0 288 | wrappy: 1.0.2 289 | dev: true 290 | 291 | /inherits/2.0.4: 292 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 293 | 294 | /ini/1.3.8: 295 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 296 | dev: false 297 | 298 | /is-builtin-module/3.2.0: 299 | resolution: {integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==} 300 | engines: {node: '>=6'} 301 | dependencies: 302 | builtin-modules: 3.3.0 303 | dev: true 304 | 305 | /is-core-module/2.10.0: 306 | resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} 307 | dependencies: 308 | has: 1.0.3 309 | dev: true 310 | 311 | /is-module/1.0.0: 312 | resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} 313 | dev: true 314 | 315 | /is-reference/1.2.1: 316 | resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} 317 | dependencies: 318 | '@types/estree': 1.0.0 319 | dev: true 320 | 321 | /lru-cache/6.0.0: 322 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 323 | engines: {node: '>=10'} 324 | dependencies: 325 | yallist: 4.0.0 326 | dev: false 327 | 328 | /magic-string/0.16.0: 329 | resolution: {integrity: sha512-c4BEos3y6G2qO0B9X7K0FVLOPT9uGrjYwYRLFmDqyl5YMboUviyecnXWp94fJTSMwPw2/sf+CEYt5AGpmklkkQ==} 330 | dependencies: 331 | vlq: 0.2.3 332 | dev: true 333 | 334 | /magic-string/0.25.9: 335 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} 336 | dependencies: 337 | sourcemap-codec: 1.4.8 338 | dev: true 339 | 340 | /mimic-response/3.1.0: 341 | resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} 342 | engines: {node: '>=10'} 343 | dev: false 344 | 345 | /minimatch/3.1.2: 346 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 347 | dependencies: 348 | brace-expansion: 1.1.11 349 | dev: true 350 | 351 | /minimist/1.2.6: 352 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} 353 | dev: false 354 | 355 | /mkdirp-classic/0.5.3: 356 | resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} 357 | dev: false 358 | 359 | /moment/2.29.4: 360 | resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} 361 | dev: true 362 | 363 | /napi-build-utils/1.0.2: 364 | resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} 365 | dev: false 366 | 367 | /node-abi/3.24.0: 368 | resolution: {integrity: sha512-YPG3Co0luSu6GwOBsmIdGW6Wx0NyNDLg/hriIyDllVsNwnI6UeqaWShxC3lbH4LtEQUgoLP3XR1ndXiDAWvmRw==} 369 | engines: {node: '>=10'} 370 | dependencies: 371 | semver: 7.3.7 372 | dev: false 373 | 374 | /obsidian/0.16.3: 375 | resolution: {integrity: sha512-hal9qk1A0GMhHSeLr2/+o3OpLmImiP+Y+sx2ewP13ds76KXsziG96n+IPFT0mSkup1zSwhEu+DeRhmbcyCCXWw==} 376 | peerDependencies: 377 | '@codemirror/state': ^6.0.0 378 | '@codemirror/view': ^6.0.0 379 | dependencies: 380 | '@types/codemirror': 0.0.108 381 | moment: 2.29.4 382 | dev: true 383 | 384 | /once/1.4.0: 385 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 386 | dependencies: 387 | wrappy: 1.0.2 388 | 389 | /path-is-absolute/1.0.1: 390 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 391 | engines: {node: '>=0.10.0'} 392 | dev: true 393 | 394 | /path-parse/1.0.7: 395 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 396 | dev: true 397 | 398 | /picomatch/2.3.1: 399 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 400 | engines: {node: '>=8.6'} 401 | dev: true 402 | 403 | /prebuild-install/7.1.1: 404 | resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} 405 | engines: {node: '>=10'} 406 | hasBin: true 407 | dependencies: 408 | detect-libc: 2.0.1 409 | expand-template: 2.0.3 410 | github-from-package: 0.0.0 411 | minimist: 1.2.6 412 | mkdirp-classic: 0.5.3 413 | napi-build-utils: 1.0.2 414 | node-abi: 3.24.0 415 | pump: 3.0.0 416 | rc: 1.2.8 417 | simple-get: 4.0.1 418 | tar-fs: 2.1.1 419 | tunnel-agent: 0.6.0 420 | dev: false 421 | 422 | /pump/3.0.0: 423 | resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} 424 | dependencies: 425 | end-of-stream: 1.4.4 426 | once: 1.4.0 427 | dev: false 428 | 429 | /rc/1.2.8: 430 | resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} 431 | hasBin: true 432 | dependencies: 433 | deep-extend: 0.6.0 434 | ini: 1.3.8 435 | minimist: 1.2.6 436 | strip-json-comments: 2.0.1 437 | dev: false 438 | 439 | /readable-stream/3.6.0: 440 | resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} 441 | engines: {node: '>= 6'} 442 | dependencies: 443 | inherits: 2.0.4 444 | string_decoder: 1.3.0 445 | util-deprecate: 1.0.2 446 | dev: false 447 | 448 | /resolve/1.22.1: 449 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 450 | hasBin: true 451 | dependencies: 452 | is-core-module: 2.10.0 453 | path-parse: 1.0.7 454 | supports-preserve-symlinks-flag: 1.0.0 455 | dev: true 456 | 457 | /rollup-plugin-re/1.0.7: 458 | resolution: {integrity: sha512-TyFf3QaV/eJ/50k4wp5BM0SodGy0Idq0uOgvA1q3gHRwgXLPVX5y3CRKkBuHzKTZPC9CTZX7igKw5UvgjDls8w==} 459 | dependencies: 460 | magic-string: 0.16.0 461 | rollup-pluginutils: 2.8.2 462 | dev: true 463 | 464 | /rollup-pluginutils/2.8.2: 465 | resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} 466 | dependencies: 467 | estree-walker: 0.6.1 468 | dev: true 469 | 470 | /rollup/2.79.0: 471 | resolution: {integrity: sha512-x4KsrCgwQ7ZJPcFA/SUu6QVcYlO7uRLfLAy0DSA4NS2eG8japdbpM50ToH7z4iObodRYOJ0soneF0iaQRJ6zhA==} 472 | engines: {node: '>=10.0.0'} 473 | hasBin: true 474 | optionalDependencies: 475 | fsevents: 2.3.2 476 | dev: true 477 | 478 | /safe-buffer/5.2.1: 479 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 480 | dev: false 481 | 482 | /semver/7.3.7: 483 | resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} 484 | engines: {node: '>=10'} 485 | hasBin: true 486 | dependencies: 487 | lru-cache: 6.0.0 488 | dev: false 489 | 490 | /simple-concat/1.0.1: 491 | resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} 492 | dev: false 493 | 494 | /simple-get/4.0.1: 495 | resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} 496 | dependencies: 497 | decompress-response: 6.0.0 498 | once: 1.4.0 499 | simple-concat: 1.0.1 500 | dev: false 501 | 502 | /sourcemap-codec/1.4.8: 503 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 504 | dev: true 505 | 506 | /string_decoder/1.3.0: 507 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 508 | dependencies: 509 | safe-buffer: 5.2.1 510 | dev: false 511 | 512 | /strip-json-comments/2.0.1: 513 | resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} 514 | engines: {node: '>=0.10.0'} 515 | dev: false 516 | 517 | /supports-preserve-symlinks-flag/1.0.0: 518 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 519 | engines: {node: '>= 0.4'} 520 | dev: true 521 | 522 | /tar-fs/2.1.1: 523 | resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} 524 | dependencies: 525 | chownr: 1.1.4 526 | mkdirp-classic: 0.5.3 527 | pump: 3.0.0 528 | tar-stream: 2.2.0 529 | dev: false 530 | 531 | /tar-stream/2.2.0: 532 | resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} 533 | engines: {node: '>=6'} 534 | dependencies: 535 | bl: 4.1.0 536 | end-of-stream: 1.4.4 537 | fs-constants: 1.0.0 538 | inherits: 2.0.4 539 | readable-stream: 3.6.0 540 | dev: false 541 | 542 | /tslib/2.4.0: 543 | resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} 544 | dev: true 545 | 546 | /tunnel-agent/0.6.0: 547 | resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} 548 | dependencies: 549 | safe-buffer: 5.2.1 550 | dev: false 551 | 552 | /typescript/4.8.3: 553 | resolution: {integrity: sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==} 554 | engines: {node: '>=4.2.0'} 555 | hasBin: true 556 | dev: true 557 | 558 | /util-deprecate/1.0.2: 559 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 560 | dev: false 561 | 562 | /vlq/0.2.3: 563 | resolution: {integrity: sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==} 564 | dev: true 565 | 566 | /wrappy/1.0.2: 567 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 568 | 569 | /yallist/4.0.0: 570 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 571 | dev: false 572 | --------------------------------------------------------------------------------