├── .gitignore ├── LICENSE ├── README.md ├── main.ts ├── manifest.json ├── package-lock.json ├── package.json ├── rollup.config.js ├── styles.css ├── tsconfig.json └── versions.json /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | 106 | # ignore plugin build 107 | main.js -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Obsidian LogSeq plugin 2 | 3 | A simple plugin to make Obsidian's preview of LogSeq markdown a bit more pleasant. 4 | 5 | ## Setup 6 | 7 | Install the plugin from source or from the community list. 8 | 9 | This plugin doesn't support configuration at the moment. 10 | 11 | ## Features 12 | 13 | - Preview of `org-mode` tasks (`TODO`, `DONE`, `COMPLETED`, etc.) with proper styling 14 | - Remove LogSeq timestamps from preview 15 | - Render `org-mode` blocks (eg `#+BEGIN_NOTE`/`#+END_NOTE`) as `
` 16 | - Style headings in source editor -------------------------------------------------------------------------------- /main.ts: -------------------------------------------------------------------------------- 1 | import { 2 | MarkdownPostProcessor, 3 | MarkdownPostProcessorContext, 4 | Plugin, 5 | } from "obsidian"; 6 | 7 | enum TaskType { 8 | TODO = "TODO", 9 | DONE = "DONE", 10 | DOING = "DOING", 11 | LATER = "LATER", 12 | CANCELED = "CANCELED", 13 | UNKNOWN = "UNKNOWN", 14 | } 15 | 16 | enum TaskCSSClass { 17 | COMPLETE = "logseq-complete-task", 18 | INCOMPLETE = "logseq-incomplete-task", 19 | KEYWORD = "logseq-keyword", 20 | } 21 | 22 | const VERSION = "0.0.4"; 23 | 24 | class LogSeqRegExes { 25 | static parseTaskType(content: string): TaskType { 26 | if (content.startsWith("DONE ")) { 27 | return TaskType.DONE; 28 | } else if (content.startsWith("TODO ")) { 29 | return TaskType.TODO; 30 | } else if (content.startsWith("DOING ")) { 31 | return TaskType.DOING; 32 | } else if (content.startsWith("LATER ")) { 33 | return TaskType.LATER; 34 | } else if (content.startsWith("CANCELED ")) { 35 | return TaskType.CANCELED; 36 | } else { 37 | return TaskType.UNKNOWN; 38 | } 39 | } 40 | 41 | static HEADING_REGEX = { 42 | h1: /^(?:\s+)?- # (?:.*)$/gms, 43 | h2: /^(?:\s+)?- ## (?:.*)$/gms, 44 | h3: /^(?:\s+)?- ### (?:.*)$/gms, 45 | h4: /^(?:\s+)?- #### (?:.*)$/gms, 46 | h5: /^(?:\s+)?- ##### (?:.*)$/gms, 47 | }; 48 | 49 | static HEADING_FORMAT_REGEX = { 50 | hf1: /^(?:\s+)?- # /gms, 51 | hf2: /^(?:\s+)?- ## /gms, 52 | hf3: /^(?:\s+)?- ### /gms, 53 | hf4: /^(?:\s+)?- #### /gms, 54 | hf5: /^(?:\s+)?- ##### /gms, 55 | }; 56 | 57 | static BEGIN_BLOCK_REGEX = new RegExp( 58 | /\#\+BEGIN_(WARNING|IMPORTANT|QUOTE|CAUTION)/gms 59 | ); 60 | static END_BLOCK_REGEX = new RegExp( 61 | /\#\+END_(WARNING|IMPORTANT|QUOTE|CAUTION)/gms 62 | ); 63 | 64 | static isBlock(content: string): boolean { 65 | return LogSeqRegExes.BEGIN_BLOCK_REGEX.test(content); 66 | } 67 | } 68 | 69 | class CodeMirrorOverlays { 70 | static headingsOverlay = { 71 | token: (stream: any) => { 72 | const baseToken = stream.baseToken(); 73 | if (stream.match(LogSeqRegExes.HEADING_REGEX["h1"])) { 74 | return "header header-1"; 75 | } else if (stream.match(LogSeqRegExes.HEADING_REGEX["h2"])) { 76 | return "header header-2"; 77 | } else if (stream.match(LogSeqRegExes.HEADING_REGEX["h3"])) { 78 | return "header header-3"; 79 | } else if (stream.match(LogSeqRegExes.HEADING_REGEX["h4"])) { 80 | return "header header-4"; 81 | } else if (stream.match(LogSeqRegExes.HEADING_REGEX["h5"])) { 82 | return "header header-5"; 83 | } else { 84 | stream.skipToEnd(); 85 | } 86 | } 87 | }; 88 | static headingFormatOverlay = { 89 | token: (stream: any) => { 90 | const baseToken = stream.baseToken(); 91 | if (stream.match(LogSeqRegExes.HEADING_FORMAT_REGEX["hf1"])) { 92 | return "formatting-header formatting-header-1"; 93 | } else if (stream.match(LogSeqRegExes.HEADING_FORMAT_REGEX["hf2"])) { 94 | return "formatting-header formatting-header-2"; 95 | } else if (stream.match(LogSeqRegExes.HEADING_FORMAT_REGEX["hf3"])) { 96 | return "formatting-header formatting-header-3"; 97 | } else if (stream.match(LogSeqRegExes.HEADING_FORMAT_REGEX["hf4"])) { 98 | return "formatting-header formatting-header-4"; 99 | } else if (stream.match(LogSeqRegExes.HEADING_FORMAT_REGEX["hf5"])) { 100 | return "formatting-header formatting-header-5"; 101 | } else { 102 | stream.skipToEnd(); 103 | } 104 | } 105 | }; 106 | static cmAddHeadingOverlay(cm: CodeMirror.Editor) { 107 | cm.addOverlay(CodeMirrorOverlays.headingsOverlay); 108 | cm.addOverlay(CodeMirrorOverlays.headingFormatOverlay,{priority:99}); 109 | } 110 | 111 | static cmRemoveHeadingOverlay(cm: CodeMirror.Editor) { 112 | cm.removeOverlay(CodeMirrorOverlays.headingsOverlay); 113 | cm.removeOverlay(CodeMirrorOverlays.headingFormatOverlay); 114 | } 115 | } 116 | 117 | function createKeywordElement(keyword: string): HTMLElement { 118 | const element = document.createElement("span"); 119 | element.classList.add(TaskCSSClass.KEYWORD); 120 | element.textContent = keyword; 121 | return element; 122 | } 123 | 124 | function createCheckboxElement(checked: boolean = false): HTMLElement { 125 | const element = document.createElement("input"); 126 | element.type = "checkbox"; 127 | element.checked = checked; 128 | return element; 129 | } 130 | 131 | export default class LogSeqPlugin extends Plugin { 132 | static removeProperties(content: string): string { 133 | return content 134 | .replace(/doing:: (?:\d{13})/, "") 135 | .replace(/done:: (?:\d{13})/, "") 136 | .replace(/todo:: (?:\d{13})/, "") 137 | .replace(/doing:: (?:\d{13})/, "") 138 | .replace(/later:: (?:\d{13})/, "") 139 | .replace(/canceled:: (?:\d{13})/, "") 140 | .replace( 141 | /id:: (?:[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12})/i, 142 | "" 143 | ) 144 | .replace(/collapsed:: (?:true|false)/gms, ""); 145 | } 146 | 147 | static processChildren(el: Element, keyword: string) { 148 | el.childNodes.forEach((child) => { 149 | if (child.nodeType == Node.TEXT_NODE) { 150 | if (child.nodeValue.startsWith(keyword)) { 151 | child.nodeValue = child.nodeValue.replace(keyword, ""); 152 | } 153 | child.nodeValue = LogSeqPlugin.removeProperties(child.nodeValue); 154 | } 155 | }); 156 | } 157 | 158 | static styleNode(el: Element, classname: TaskCSSClass) { 159 | el.querySelectorAll("li[data-line]").forEach((child) => { 160 | // Do not "complete" the child tasks, since this is LogSeq's behaviour 161 | child.classList.add(TaskCSSClass.INCOMPLETE); 162 | }); 163 | el.classList.add(classname); 164 | } 165 | 166 | static postprocessor: MarkdownPostProcessor = ( 167 | el: HTMLElement, 168 | ctx: MarkdownPostProcessorContext 169 | ) => { 170 | const entries = el.querySelectorAll("li[data-line]"); 171 | 172 | entries.forEach((entry) => { 173 | // Check if the entry is a org-mode block 174 | if (LogSeqRegExes.isBlock(entry.innerHTML)) { 175 | let replacedBlock = entry.innerHTML.replace( 176 | LogSeqRegExes.BEGIN_BLOCK_REGEX, 177 | "☟" 178 | ); 179 | replacedBlock = replacedBlock.replace( 180 | LogSeqRegExes.END_BLOCK_REGEX, 181 | "" 182 | ); 183 | entry.innerHTML = replacedBlock; 184 | } 185 | const taskType = LogSeqRegExes.parseTaskType(entry.textContent); 186 | 187 | if (taskType == TaskType.DONE) { 188 | LogSeqPlugin.processChildren(entry, TaskType.DONE); 189 | 190 | entry.insertAdjacentElement("afterbegin", createCheckboxElement(true)); 191 | LogSeqPlugin.styleNode(entry, TaskCSSClass.COMPLETE); 192 | } else if (taskType == TaskType.TODO) { 193 | LogSeqPlugin.processChildren(entry, TaskType.TODO); 194 | 195 | entry.insertAdjacentElement( 196 | "afterbegin", 197 | createKeywordElement(TaskType.TODO) 198 | ); 199 | 200 | entry.insertAdjacentElement("afterbegin", createCheckboxElement()); 201 | LogSeqPlugin.styleNode(entry, TaskCSSClass.INCOMPLETE); 202 | } else if (taskType == TaskType.DOING) { 203 | LogSeqPlugin.processChildren(entry, TaskType.DOING); 204 | 205 | entry.insertAdjacentElement( 206 | "afterbegin", 207 | createKeywordElement(TaskType.DOING) 208 | ); 209 | 210 | entry.insertAdjacentElement("afterbegin", createCheckboxElement()); 211 | } else if (taskType == TaskType.LATER) { 212 | LogSeqPlugin.processChildren(entry, TaskType.LATER); 213 | 214 | entry.insertAdjacentElement( 215 | "afterbegin", 216 | createKeywordElement(TaskType.LATER) 217 | ); 218 | 219 | entry.insertAdjacentElement("afterbegin", createCheckboxElement()); 220 | LogSeqPlugin.styleNode(entry, TaskCSSClass.INCOMPLETE); 221 | } else if (taskType == TaskType.CANCELED) { 222 | LogSeqPlugin.processChildren(entry, TaskType.CANCELED); 223 | LogSeqPlugin.styleNode(entry, TaskCSSClass.COMPLETE); 224 | } 225 | }); 226 | }; 227 | 228 | onload() { 229 | console.log(`Loading logseq-compat plugin ${VERSION}`); 230 | this.registerMarkdownPostProcessor(LogSeqPlugin.postprocessor); 231 | // Style headings in source editing 232 | this.registerCodeMirror(CodeMirrorOverlays.cmAddHeadingOverlay); 233 | } 234 | 235 | onunload() { 236 | console.log(`unloading logseq-compat plugin ${VERSION}`); 237 | this.registerCodeMirror(CodeMirrorOverlays.cmRemoveHeadingOverlay); 238 | } 239 | } 240 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "logseq-compat", 3 | "name": "LogSeq markdown compatibility plugin", 4 | "version": "0.0.4", 5 | "minAppVersion": "0.9.15", 6 | "description": "Render LogSeq-specific markdown", 7 | "author": "Rui Vieira", 8 | "authorUrl": "https://github.com/ruivieira/obsidian-plugin-logseq", 9 | "isDesktopOnly": false, 10 | "css": "style.css" 11 | } 12 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "logseq-compat", 3 | "version": "0.0.4", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "logseq-compat", 9 | "version": "0.0.4", 10 | "license": "MIT", 11 | "devDependencies": { 12 | "@rollup/plugin-commonjs": "^15.1.0", 13 | "@rollup/plugin-node-resolve": "^9.0.0", 14 | "@rollup/plugin-typescript": "^6.0.0", 15 | "@types/node": "^14.14.2", 16 | "obsidian": "https://github.com/obsidianmd/obsidian-api/tarball/master", 17 | "rollup": "^2.32.1", 18 | "tslib": "^2.0.3", 19 | "typescript": "^4.0.3" 20 | } 21 | }, 22 | "node_modules/@rollup/plugin-commonjs": { 23 | "version": "15.1.0", 24 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-15.1.0.tgz", 25 | "integrity": "sha512-xCQqz4z/o0h2syQ7d9LskIMvBSH4PX5PjYdpSSvgS+pQik3WahkQVNWg3D8XJeYjZoVWnIUQYDghuEMRGrmQYQ==", 26 | "dev": true, 27 | "dependencies": { 28 | "@rollup/pluginutils": "^3.1.0", 29 | "commondir": "^1.0.1", 30 | "estree-walker": "^2.0.1", 31 | "glob": "^7.1.6", 32 | "is-reference": "^1.2.1", 33 | "magic-string": "^0.25.7", 34 | "resolve": "^1.17.0" 35 | }, 36 | "engines": { 37 | "node": ">= 8.0.0" 38 | }, 39 | "peerDependencies": { 40 | "rollup": "^2.22.0" 41 | } 42 | }, 43 | "node_modules/@rollup/plugin-node-resolve": { 44 | "version": "9.0.0", 45 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz", 46 | "integrity": "sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==", 47 | "dev": true, 48 | "dependencies": { 49 | "@rollup/pluginutils": "^3.1.0", 50 | "@types/resolve": "1.17.1", 51 | "builtin-modules": "^3.1.0", 52 | "deepmerge": "^4.2.2", 53 | "is-module": "^1.0.0", 54 | "resolve": "^1.17.0" 55 | }, 56 | "engines": { 57 | "node": ">= 10.0.0" 58 | }, 59 | "peerDependencies": { 60 | "rollup": "^1.20.0||^2.0.0" 61 | } 62 | }, 63 | "node_modules/@rollup/plugin-typescript": { 64 | "version": "6.1.0", 65 | "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-6.1.0.tgz", 66 | "integrity": "sha512-hJxaiE6WyNOsK+fZpbFh9CUijZYqPQuAOWO5khaGTUkM8DYNNyA2TDlgamecE+qLOG1G1+CwbWMAx3rbqpp6xQ==", 67 | "dev": true, 68 | "dependencies": { 69 | "@rollup/pluginutils": "^3.1.0", 70 | "resolve": "^1.17.0" 71 | }, 72 | "engines": { 73 | "node": ">=8.0.0" 74 | }, 75 | "peerDependencies": { 76 | "rollup": "^2.14.0", 77 | "tslib": "*", 78 | "typescript": ">=3.4.0" 79 | } 80 | }, 81 | "node_modules/@rollup/pluginutils": { 82 | "version": "3.1.0", 83 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", 84 | "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", 85 | "dev": true, 86 | "dependencies": { 87 | "@types/estree": "0.0.39", 88 | "estree-walker": "^1.0.1", 89 | "picomatch": "^2.2.2" 90 | }, 91 | "engines": { 92 | "node": ">= 8.0.0" 93 | }, 94 | "peerDependencies": { 95 | "rollup": "^1.20.0||^2.0.0" 96 | } 97 | }, 98 | "node_modules/@rollup/pluginutils/node_modules/estree-walker": { 99 | "version": "1.0.1", 100 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", 101 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", 102 | "dev": true 103 | }, 104 | "node_modules/@types/codemirror": { 105 | "version": "0.0.108", 106 | "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.108.tgz", 107 | "integrity": "sha512-3FGFcus0P7C2UOGCNUVENqObEb4SFk+S8Dnxq7K6aIsLVs/vDtlangl3PEO0ykaKXyK56swVF6Nho7VsA44uhw==", 108 | "dev": true, 109 | "dependencies": { 110 | "@types/tern": "*" 111 | } 112 | }, 113 | "node_modules/@types/estree": { 114 | "version": "0.0.39", 115 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", 116 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", 117 | "dev": true 118 | }, 119 | "node_modules/@types/node": { 120 | "version": "14.17.6", 121 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.6.tgz", 122 | "integrity": "sha512-iBxsxU7eswQDGhlr3AiamBxOssaYxbM+NKXVil8jg9yFXvrfEFbDumLD/2dMTB+zYyg7w+Xjt8yuxfdbUHAtcQ==", 123 | "dev": true 124 | }, 125 | "node_modules/@types/resolve": { 126 | "version": "1.17.1", 127 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", 128 | "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", 129 | "dev": true, 130 | "dependencies": { 131 | "@types/node": "*" 132 | } 133 | }, 134 | "node_modules/@types/tern": { 135 | "version": "0.23.4", 136 | "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz", 137 | "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", 138 | "dev": true, 139 | "dependencies": { 140 | "@types/estree": "*" 141 | } 142 | }, 143 | "node_modules/balanced-match": { 144 | "version": "1.0.2", 145 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 146 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 147 | "dev": true 148 | }, 149 | "node_modules/brace-expansion": { 150 | "version": "1.1.11", 151 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 152 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 153 | "dev": true, 154 | "dependencies": { 155 | "balanced-match": "^1.0.0", 156 | "concat-map": "0.0.1" 157 | } 158 | }, 159 | "node_modules/builtin-modules": { 160 | "version": "3.2.0", 161 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", 162 | "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", 163 | "dev": true, 164 | "engines": { 165 | "node": ">=6" 166 | }, 167 | "funding": { 168 | "url": "https://github.com/sponsors/sindresorhus" 169 | } 170 | }, 171 | "node_modules/commondir": { 172 | "version": "1.0.1", 173 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 174 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 175 | "dev": true 176 | }, 177 | "node_modules/concat-map": { 178 | "version": "0.0.1", 179 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 180 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 181 | "dev": true 182 | }, 183 | "node_modules/deepmerge": { 184 | "version": "4.2.2", 185 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", 186 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", 187 | "dev": true, 188 | "engines": { 189 | "node": ">=0.10.0" 190 | } 191 | }, 192 | "node_modules/estree-walker": { 193 | "version": "2.0.2", 194 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 195 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 196 | "dev": true 197 | }, 198 | "node_modules/fs.realpath": { 199 | "version": "1.0.0", 200 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 201 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 202 | "dev": true 203 | }, 204 | "node_modules/fsevents": { 205 | "version": "2.3.2", 206 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 207 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 208 | "dev": true, 209 | "hasInstallScript": true, 210 | "optional": true, 211 | "os": [ 212 | "darwin" 213 | ], 214 | "engines": { 215 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 216 | } 217 | }, 218 | "node_modules/function-bind": { 219 | "version": "1.1.1", 220 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 221 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 222 | "dev": true 223 | }, 224 | "node_modules/glob": { 225 | "version": "7.1.7", 226 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", 227 | "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", 228 | "dev": true, 229 | "dependencies": { 230 | "fs.realpath": "^1.0.0", 231 | "inflight": "^1.0.4", 232 | "inherits": "2", 233 | "minimatch": "^3.0.4", 234 | "once": "^1.3.0", 235 | "path-is-absolute": "^1.0.0" 236 | }, 237 | "engines": { 238 | "node": "*" 239 | }, 240 | "funding": { 241 | "url": "https://github.com/sponsors/isaacs" 242 | } 243 | }, 244 | "node_modules/has": { 245 | "version": "1.0.3", 246 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 247 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 248 | "dev": true, 249 | "dependencies": { 250 | "function-bind": "^1.1.1" 251 | }, 252 | "engines": { 253 | "node": ">= 0.4.0" 254 | } 255 | }, 256 | "node_modules/inflight": { 257 | "version": "1.0.6", 258 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 259 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 260 | "dev": true, 261 | "dependencies": { 262 | "once": "^1.3.0", 263 | "wrappy": "1" 264 | } 265 | }, 266 | "node_modules/inherits": { 267 | "version": "2.0.4", 268 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 269 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 270 | "dev": true 271 | }, 272 | "node_modules/is-core-module": { 273 | "version": "2.5.0", 274 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz", 275 | "integrity": "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==", 276 | "dev": true, 277 | "dependencies": { 278 | "has": "^1.0.3" 279 | }, 280 | "funding": { 281 | "url": "https://github.com/sponsors/ljharb" 282 | } 283 | }, 284 | "node_modules/is-module": { 285 | "version": "1.0.0", 286 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 287 | "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", 288 | "dev": true 289 | }, 290 | "node_modules/is-reference": { 291 | "version": "1.2.1", 292 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", 293 | "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", 294 | "dev": true, 295 | "dependencies": { 296 | "@types/estree": "*" 297 | } 298 | }, 299 | "node_modules/magic-string": { 300 | "version": "0.25.7", 301 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", 302 | "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", 303 | "dev": true, 304 | "dependencies": { 305 | "sourcemap-codec": "^1.4.4" 306 | } 307 | }, 308 | "node_modules/minimatch": { 309 | "version": "3.0.4", 310 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 311 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 312 | "dev": true, 313 | "dependencies": { 314 | "brace-expansion": "^1.1.7" 315 | }, 316 | "engines": { 317 | "node": "*" 318 | } 319 | }, 320 | "node_modules/moment": { 321 | "version": "2.29.1", 322 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", 323 | "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", 324 | "dev": true, 325 | "engines": { 326 | "node": "*" 327 | } 328 | }, 329 | "node_modules/obsidian": { 330 | "version": "0.12.11", 331 | "resolved": "https://github.com/obsidianmd/obsidian-api/tarball/master", 332 | "integrity": "sha512-uUVTUpsk+LqhCdPJCxBwOuQ3cXOf63vbman1iOa/X6cjEguzqIsv+nomMZVnrmyXedbP1hM+YJYYh+gVSrKAlg==", 333 | "dev": true, 334 | "license": "MIT", 335 | "dependencies": { 336 | "@types/codemirror": "0.0.108", 337 | "moment": "2.29.1" 338 | } 339 | }, 340 | "node_modules/once": { 341 | "version": "1.4.0", 342 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 343 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 344 | "dev": true, 345 | "dependencies": { 346 | "wrappy": "1" 347 | } 348 | }, 349 | "node_modules/path-is-absolute": { 350 | "version": "1.0.1", 351 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 352 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 353 | "dev": true, 354 | "engines": { 355 | "node": ">=0.10.0" 356 | } 357 | }, 358 | "node_modules/path-parse": { 359 | "version": "1.0.7", 360 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 361 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 362 | "dev": true 363 | }, 364 | "node_modules/picomatch": { 365 | "version": "2.3.0", 366 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", 367 | "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", 368 | "dev": true, 369 | "engines": { 370 | "node": ">=8.6" 371 | }, 372 | "funding": { 373 | "url": "https://github.com/sponsors/jonschlinkert" 374 | } 375 | }, 376 | "node_modules/resolve": { 377 | "version": "1.20.0", 378 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 379 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 380 | "dev": true, 381 | "dependencies": { 382 | "is-core-module": "^2.2.0", 383 | "path-parse": "^1.0.6" 384 | }, 385 | "funding": { 386 | "url": "https://github.com/sponsors/ljharb" 387 | } 388 | }, 389 | "node_modules/rollup": { 390 | "version": "2.54.0", 391 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.54.0.tgz", 392 | "integrity": "sha512-RHzvstAVwm9A751NxWIbGPFXs3zL4qe/eYg+N7WwGtIXVLy1cK64MiU37+hXeFm1jqipK6DGgMi6Z2hhPuCC3A==", 393 | "dev": true, 394 | "bin": { 395 | "rollup": "dist/bin/rollup" 396 | }, 397 | "engines": { 398 | "node": ">=10.0.0" 399 | }, 400 | "optionalDependencies": { 401 | "fsevents": "~2.3.2" 402 | } 403 | }, 404 | "node_modules/sourcemap-codec": { 405 | "version": "1.4.8", 406 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 407 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 408 | "dev": true 409 | }, 410 | "node_modules/tslib": { 411 | "version": "2.3.0", 412 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", 413 | "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", 414 | "dev": true 415 | }, 416 | "node_modules/typescript": { 417 | "version": "4.3.5", 418 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", 419 | "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", 420 | "dev": true, 421 | "bin": { 422 | "tsc": "bin/tsc", 423 | "tsserver": "bin/tsserver" 424 | }, 425 | "engines": { 426 | "node": ">=4.2.0" 427 | } 428 | }, 429 | "node_modules/wrappy": { 430 | "version": "1.0.2", 431 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 432 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 433 | "dev": true 434 | } 435 | }, 436 | "dependencies": { 437 | "@rollup/plugin-commonjs": { 438 | "version": "15.1.0", 439 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-15.1.0.tgz", 440 | "integrity": "sha512-xCQqz4z/o0h2syQ7d9LskIMvBSH4PX5PjYdpSSvgS+pQik3WahkQVNWg3D8XJeYjZoVWnIUQYDghuEMRGrmQYQ==", 441 | "dev": true, 442 | "requires": { 443 | "@rollup/pluginutils": "^3.1.0", 444 | "commondir": "^1.0.1", 445 | "estree-walker": "^2.0.1", 446 | "glob": "^7.1.6", 447 | "is-reference": "^1.2.1", 448 | "magic-string": "^0.25.7", 449 | "resolve": "^1.17.0" 450 | } 451 | }, 452 | "@rollup/plugin-node-resolve": { 453 | "version": "9.0.0", 454 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz", 455 | "integrity": "sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==", 456 | "dev": true, 457 | "requires": { 458 | "@rollup/pluginutils": "^3.1.0", 459 | "@types/resolve": "1.17.1", 460 | "builtin-modules": "^3.1.0", 461 | "deepmerge": "^4.2.2", 462 | "is-module": "^1.0.0", 463 | "resolve": "^1.17.0" 464 | } 465 | }, 466 | "@rollup/plugin-typescript": { 467 | "version": "6.1.0", 468 | "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-6.1.0.tgz", 469 | "integrity": "sha512-hJxaiE6WyNOsK+fZpbFh9CUijZYqPQuAOWO5khaGTUkM8DYNNyA2TDlgamecE+qLOG1G1+CwbWMAx3rbqpp6xQ==", 470 | "dev": true, 471 | "requires": { 472 | "@rollup/pluginutils": "^3.1.0", 473 | "resolve": "^1.17.0" 474 | } 475 | }, 476 | "@rollup/pluginutils": { 477 | "version": "3.1.0", 478 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", 479 | "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", 480 | "dev": true, 481 | "requires": { 482 | "@types/estree": "0.0.39", 483 | "estree-walker": "^1.0.1", 484 | "picomatch": "^2.2.2" 485 | }, 486 | "dependencies": { 487 | "estree-walker": { 488 | "version": "1.0.1", 489 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", 490 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", 491 | "dev": true 492 | } 493 | } 494 | }, 495 | "@types/codemirror": { 496 | "version": "0.0.108", 497 | "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.108.tgz", 498 | "integrity": "sha512-3FGFcus0P7C2UOGCNUVENqObEb4SFk+S8Dnxq7K6aIsLVs/vDtlangl3PEO0ykaKXyK56swVF6Nho7VsA44uhw==", 499 | "dev": true, 500 | "requires": { 501 | "@types/tern": "*" 502 | } 503 | }, 504 | "@types/estree": { 505 | "version": "0.0.39", 506 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", 507 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", 508 | "dev": true 509 | }, 510 | "@types/node": { 511 | "version": "14.17.6", 512 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.6.tgz", 513 | "integrity": "sha512-iBxsxU7eswQDGhlr3AiamBxOssaYxbM+NKXVil8jg9yFXvrfEFbDumLD/2dMTB+zYyg7w+Xjt8yuxfdbUHAtcQ==", 514 | "dev": true 515 | }, 516 | "@types/resolve": { 517 | "version": "1.17.1", 518 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", 519 | "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", 520 | "dev": true, 521 | "requires": { 522 | "@types/node": "*" 523 | } 524 | }, 525 | "@types/tern": { 526 | "version": "0.23.4", 527 | "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz", 528 | "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", 529 | "dev": true, 530 | "requires": { 531 | "@types/estree": "*" 532 | } 533 | }, 534 | "balanced-match": { 535 | "version": "1.0.2", 536 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 537 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 538 | "dev": true 539 | }, 540 | "brace-expansion": { 541 | "version": "1.1.11", 542 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 543 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 544 | "dev": true, 545 | "requires": { 546 | "balanced-match": "^1.0.0", 547 | "concat-map": "0.0.1" 548 | } 549 | }, 550 | "builtin-modules": { 551 | "version": "3.2.0", 552 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", 553 | "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", 554 | "dev": true 555 | }, 556 | "commondir": { 557 | "version": "1.0.1", 558 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 559 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 560 | "dev": true 561 | }, 562 | "concat-map": { 563 | "version": "0.0.1", 564 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 565 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 566 | "dev": true 567 | }, 568 | "deepmerge": { 569 | "version": "4.2.2", 570 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", 571 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", 572 | "dev": true 573 | }, 574 | "estree-walker": { 575 | "version": "2.0.2", 576 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 577 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 578 | "dev": true 579 | }, 580 | "fs.realpath": { 581 | "version": "1.0.0", 582 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 583 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 584 | "dev": true 585 | }, 586 | "fsevents": { 587 | "version": "2.3.2", 588 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 589 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 590 | "dev": true, 591 | "optional": true 592 | }, 593 | "function-bind": { 594 | "version": "1.1.1", 595 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 596 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 597 | "dev": true 598 | }, 599 | "glob": { 600 | "version": "7.1.7", 601 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", 602 | "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", 603 | "dev": true, 604 | "requires": { 605 | "fs.realpath": "^1.0.0", 606 | "inflight": "^1.0.4", 607 | "inherits": "2", 608 | "minimatch": "^3.0.4", 609 | "once": "^1.3.0", 610 | "path-is-absolute": "^1.0.0" 611 | } 612 | }, 613 | "has": { 614 | "version": "1.0.3", 615 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 616 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 617 | "dev": true, 618 | "requires": { 619 | "function-bind": "^1.1.1" 620 | } 621 | }, 622 | "inflight": { 623 | "version": "1.0.6", 624 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 625 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 626 | "dev": true, 627 | "requires": { 628 | "once": "^1.3.0", 629 | "wrappy": "1" 630 | } 631 | }, 632 | "inherits": { 633 | "version": "2.0.4", 634 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 635 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 636 | "dev": true 637 | }, 638 | "is-core-module": { 639 | "version": "2.5.0", 640 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz", 641 | "integrity": "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==", 642 | "dev": true, 643 | "requires": { 644 | "has": "^1.0.3" 645 | } 646 | }, 647 | "is-module": { 648 | "version": "1.0.0", 649 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 650 | "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", 651 | "dev": true 652 | }, 653 | "is-reference": { 654 | "version": "1.2.1", 655 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", 656 | "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", 657 | "dev": true, 658 | "requires": { 659 | "@types/estree": "*" 660 | } 661 | }, 662 | "magic-string": { 663 | "version": "0.25.7", 664 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", 665 | "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", 666 | "dev": true, 667 | "requires": { 668 | "sourcemap-codec": "^1.4.4" 669 | } 670 | }, 671 | "minimatch": { 672 | "version": "3.0.4", 673 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 674 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 675 | "dev": true, 676 | "requires": { 677 | "brace-expansion": "^1.1.7" 678 | } 679 | }, 680 | "moment": { 681 | "version": "2.29.1", 682 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", 683 | "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", 684 | "dev": true 685 | }, 686 | "obsidian": { 687 | "version": "https://github.com/obsidianmd/obsidian-api/tarball/master", 688 | "integrity": "sha512-uUVTUpsk+LqhCdPJCxBwOuQ3cXOf63vbman1iOa/X6cjEguzqIsv+nomMZVnrmyXedbP1hM+YJYYh+gVSrKAlg==", 689 | "dev": true, 690 | "requires": { 691 | "@types/codemirror": "0.0.108", 692 | "moment": "2.29.1" 693 | } 694 | }, 695 | "once": { 696 | "version": "1.4.0", 697 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 698 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 699 | "dev": true, 700 | "requires": { 701 | "wrappy": "1" 702 | } 703 | }, 704 | "path-is-absolute": { 705 | "version": "1.0.1", 706 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 707 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 708 | "dev": true 709 | }, 710 | "path-parse": { 711 | "version": "1.0.7", 712 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 713 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 714 | "dev": true 715 | }, 716 | "picomatch": { 717 | "version": "2.3.0", 718 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", 719 | "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", 720 | "dev": true 721 | }, 722 | "resolve": { 723 | "version": "1.20.0", 724 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 725 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 726 | "dev": true, 727 | "requires": { 728 | "is-core-module": "^2.2.0", 729 | "path-parse": "^1.0.6" 730 | } 731 | }, 732 | "rollup": { 733 | "version": "2.54.0", 734 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.54.0.tgz", 735 | "integrity": "sha512-RHzvstAVwm9A751NxWIbGPFXs3zL4qe/eYg+N7WwGtIXVLy1cK64MiU37+hXeFm1jqipK6DGgMi6Z2hhPuCC3A==", 736 | "dev": true, 737 | "requires": { 738 | "fsevents": "~2.3.2" 739 | } 740 | }, 741 | "sourcemap-codec": { 742 | "version": "1.4.8", 743 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 744 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 745 | "dev": true 746 | }, 747 | "tslib": { 748 | "version": "2.3.0", 749 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", 750 | "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", 751 | "dev": true 752 | }, 753 | "typescript": { 754 | "version": "4.3.5", 755 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", 756 | "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", 757 | "dev": true 758 | }, 759 | "wrappy": { 760 | "version": "1.0.2", 761 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 762 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 763 | "dev": true 764 | } 765 | } 766 | } 767 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "logseq-compat", 3 | "version": "0.0.4", 4 | "description": "Render LogSeq-specific markdown.", 5 | "main": "main.js", 6 | "scripts": { 7 | "dev": "rollup --config rollup.config.js -w", 8 | "build": "rollup --config rollup.config.js" 9 | }, 10 | "keywords": [], 11 | "author": "", 12 | "license": "MIT", 13 | "devDependencies": { 14 | "@rollup/plugin-commonjs": "^15.1.0", 15 | "@rollup/plugin-node-resolve": "^9.0.0", 16 | "@rollup/plugin-typescript": "^6.0.0", 17 | "@types/node": "^14.14.2", 18 | "obsidian": "https://github.com/obsidianmd/obsidian-api/tarball/master", 19 | "rollup": "^2.32.1", 20 | "tslib": "^2.0.3", 21 | "typescript": "^4.0.3" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import typescript from '@rollup/plugin-typescript'; 2 | import {nodeResolve} from '@rollup/plugin-node-resolve'; 3 | import commonjs from '@rollup/plugin-commonjs'; 4 | 5 | export default { 6 | input: 'main.ts', 7 | output: { 8 | dir: '.', 9 | sourcemap: 'inline', 10 | format: 'cjs', 11 | exports: 'default' 12 | }, 13 | external: ['obsidian'], 14 | plugins: [ 15 | typescript(), 16 | nodeResolve({browser: true}), 17 | commonjs(), 18 | ] 19 | }; -------------------------------------------------------------------------------- /styles.css: -------------------------------------------------------------------------------- 1 | li.logseq-complete-task:not(ul) { 2 | text-decoration: line-through !important; 3 | opacity: 0.5; 4 | display: inline-block; 5 | } 6 | 7 | li.logseq-incomplete-task { 8 | text-decoration: none !important; 9 | display: inline-block; 10 | opacity: 1.0; 11 | } 12 | 13 | 14 | span.logseq-keyword { 15 | font-weight: bold; 16 | font-size: 0.9rem; 17 | margin-left: 0.5rem; 18 | margin-right: 0.5rem; 19 | color: var(--text-a); 20 | } 21 | 22 | a[href="#A"], 23 | a[href="#B"], 24 | a[href="#C"], 25 | a[href="#D"] { 26 | color: var(--faded-blue) !important; 27 | } 28 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "inlineSourceMap": true, 5 | "inlineSources": true, 6 | "module": "ESNext", 7 | "target": "es5", 8 | "allowJs": true, 9 | "noImplicitAny": true, 10 | "moduleResolution": "node", 11 | "importHelpers": true, 12 | "lib": [ 13 | "dom", 14 | "es5", 15 | "scripthost", 16 | "es2015" 17 | ], 18 | "typeRoots": [ 19 | "node_modules/@types" 20 | ] 21 | }, 22 | "include": [ 23 | "**/*.ts" 24 | ] 25 | } -------------------------------------------------------------------------------- /versions.json: -------------------------------------------------------------------------------- 1 | { 2 | "0.0.1": "0.9.15", 3 | "0.0.2": "0.9.15", 4 | "0.0.3": "0.9.15", 5 | "0.0.4": "0.9.15" 6 | } 7 | --------------------------------------------------------------------------------