diff --git a/README.md b/README.md index ad89beb..9e1c431 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ English | [简体中文](https://github.com/typora-community-plugin/typora-plugin-front-matter/blob/main/README.zh-CN.md) -This a plugin example based on [typora-community-plugin](https://github.com/typora-community-plugin/typora-community-plugin) for [Typora](https://typora.io). +This a plugin based on [typora-community-plugin](https://github.com/typora-community-plugin/typora-community-plugin) for [Typora](https://typora.io). Auto edit front matter: diff --git a/package.json b/package.json index a49cd90..cf16f61 100644 --- a/package.json +++ b/package.json @@ -14,17 +14,13 @@ "author": "", "license": "MIT", "devDependencies": { - "@types/extract-zip": "1.6.2", - "@types/glob": "7.2.0", "@types/jquery": "3.3.1", "@types/lodash": "~4.14.197", "@types/node": "16.18.0", - "@types/typora": "npm:@typora-community-plugin/typora-types@^1.0.2", - "@types/yauzl": "2.10.0", - "@typora-community-plugin/core": "^2.0.0-beta.10", - "archiver": "^5.3.1", + "@types/typora": "npm:@typora-community-plugin/typora-types@^1.0.3", + "@typora-community-plugin/core": "2.0.0-beta.21", + "archiver": "^5.3.2", "esbuild": "^0.18.20", - "esbuild-plugin-typora": "npm:@typora-community-plugin/esbuild-plugin-typora@^1.0.3", - "iconv-lite": "0.6.3" + "esbuild-plugin-typora": "npm:@typora-community-plugin/esbuild-plugin-typora@^1.0.5" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f885bb3..258cedb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,32 +1,24 @@ lockfileVersion: 5.4 specifiers: - '@types/extract-zip': 1.6.2 - '@types/glob': 7.2.0 '@types/jquery': 3.3.1 '@types/lodash': ~4.14.197 '@types/node': 16.18.0 - '@types/typora': npm:@typora-community-plugin/typora-types@^1.0.1 - '@types/yauzl': 2.10.0 - '@typora-community-plugin/core': ^2.0.0-beta.10 - archiver: ^5.3.1 + '@types/typora': npm:@typora-community-plugin/typora-types@^1.0.3 + '@typora-community-plugin/core': 2.0.0-beta.21 + archiver: ^5.3.2 esbuild: ^0.18.20 - esbuild-plugin-typora: npm:@typora-community-plugin/esbuild-plugin-typora@^1.0.3 - iconv-lite: 0.6.3 + esbuild-plugin-typora: npm:@typora-community-plugin/esbuild-plugin-typora@^1.0.5 devDependencies: - '@types/extract-zip': 1.6.2 - '@types/glob': 7.2.0 '@types/jquery': 3.3.1 '@types/lodash': 4.14.197 '@types/node': 16.18.0 - '@types/typora': /@typora-community-plugin/typora-types/1.0.2 - '@types/yauzl': 2.10.0 - '@typora-community-plugin/core': 2.0.0-beta.10 - archiver: 5.3.1 + '@types/typora': /@typora-community-plugin/typora-types/1.0.3 + '@typora-community-plugin/core': 2.0.0-beta.21 + archiver: 5.3.2 esbuild: 0.18.20 - esbuild-plugin-typora: /@typora-community-plugin/esbuild-plugin-typora/1.0.3 - iconv-lite: 0.6.3 + esbuild-plugin-typora: /@typora-community-plugin/esbuild-plugin-typora/1.0.5 packages: @@ -234,17 +226,6 @@ packages: typescript: 5.1.6 dev: true - /@types/extract-zip/1.6.2: - resolution: {integrity: sha512-ZPnENVnXrziwDKO8eaB/+I9SIA6CCFiJxEo4KD2PJ2M6ztWZCQu7u+AA6XNpGIGjqJshak8yeUPnb10V9oF4jg==} - dev: true - - /@types/glob/7.2.0: - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 16.18.0 - dev: true - /@types/jquery/3.3.1: resolution: {integrity: sha512-N3h+rzN518yl2xKrW0o6KKdNmWZ+OwG6SoM5TBEQFF0tTv5wXPEsoOuYQ2Kt3/89XbcSZUJLdjiT/2c3BR/ApQ==} dev: true @@ -253,32 +234,22 @@ packages: resolution: {integrity: sha512-BMVOiWs0uNxHVlHBgzTIqJYmj+PgCo4euloGF+5m4okL3rEYzM2EEv78mw8zWSMM57dM7kVIgJ2QDvwHSoCI5g==} dev: true - /@types/minimatch/5.1.2: - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - dev: true - /@types/node/16.18.0: resolution: {integrity: sha512-LqYqYzYvnbCaQfLAwRt0zboqnsViwhZm+vjaMSqcfN36vulAg7Pt0T83q4WZO2YOBw3XdyHi8cQ88H22zmULOA==} dev: true - /@types/yauzl/2.10.0: - resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} - dependencies: - '@types/node': 16.18.0 - dev: true - - /@typora-community-plugin/core/2.0.0-beta.10: - resolution: {integrity: sha512-SVpiMHcW//13t/F22cfZJwy1MJq9FpQ482DtcimnkIOCuYd1Tdgnss0AbJCVxA6wK36kfTlH6skhfXq01Qv+xA==} + /@typora-community-plugin/core/2.0.0-beta.21: + resolution: {integrity: sha512-Yc9RlkIti590RDz6royKms4yTVRRBTGP/2C1i7WxRNq94bScBc82efAeWQcK6UJzFuWbh9faQmtkmz/leI1L3Q==} dependencies: '@plylrnsdy/decorate.js': 1.0.1 dev: true - /@typora-community-plugin/esbuild-plugin-typora/1.0.3: - resolution: {integrity: sha512-pbZYrNFdGVQZfavwKIqwcwmrWiZLlldn407DPtQ2/UNzDHB9Yq+IoAFP2xoLVJ8eaaW69FweUfkILIlPOq4KTw==} + /@typora-community-plugin/esbuild-plugin-typora/1.0.5: + resolution: {integrity: sha512-rBzFMuZk39FwoNEm1jYnDMt3oT6iyZBLwMlTP7hd0LA44CBz1ZEJtC6xuXhOBCcvuYPDbv9jtywbfq4a7BUBSg==} dev: true - /@typora-community-plugin/typora-types/1.0.2: - resolution: {integrity: sha512-V0DCfdjvE7PKdstE0KGXKOM94/olF+zBIxAl8WO/jwckJgDvcUs9mBCs4NDRKfe8t7DOlAAh+GYkFzRphYM9PQ==} + /@typora-community-plugin/typora-types/1.0.3: + resolution: {integrity: sha512-ZPiGIUToqawZDLduriLBVg2jOFExW3a48URMMjR1v/QgkyUFh9NEUsjat2MXJ1xpDr2hF+UpDM99ZEjMTcxr/g==} dev: true /archiver-utils/2.1.0: @@ -297,8 +268,8 @@ packages: readable-stream: 2.3.8 dev: true - /archiver/5.3.1: - resolution: {integrity: sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==} + /archiver/5.3.2: + resolution: {integrity: sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==} engines: {node: '>= 10'} dependencies: archiver-utils: 2.1.0 @@ -445,13 +416,6 @@ packages: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true - /iconv-lite/0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: true - /ieee754/1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true @@ -566,10 +530,6 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true - /safer-buffer/2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true - /string_decoder/1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: diff --git a/src/main.ts b/src/main.ts index fc8cfd9..36eac74 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,21 +1,21 @@ -import { Plugin } from '@typora-community-plugin/core' +import { Plugin, PluginSettings } from '@typora-community-plugin/core' import { editor, getMarkdown } from 'typora' import { FrontMatterSettingTab } from './setting-tab' import { DEFAULT_SETTINGS, FrontMatterSettings } from './settings' -export default class extends Plugin { - - settings: FrontMatterSettings +export default class extends Plugin { async onload() { const { app } = this - await this.loadSettings() + this.registerSettings( + new PluginSettings(app, this.manifest, { + version: 1, + })) - this.register( - app.vault.on('mounted', () => this.loadSettings())) + this.settings.setDefault(DEFAULT_SETTINGS) this.register( app.workspace.on('file:open', () => { @@ -26,7 +26,7 @@ export default class extends Plugin { editor.stylize.insertMetaBlock() } if (isEmptyDoc) { - docMenu.writeProperty(this.settings.propNameCreated, nowDatetime(this.settings.dateFormat)) + docMenu.writeProperty(this.settings.get('propNameCreated'), nowDatetime(this.settings.get('dateFormat'))) } })) @@ -37,22 +37,11 @@ export default class extends Plugin { if (docMenu.getMetaNode()) { editor.stylize.insertMetaBlock() } - docMenu.writeProperty(this.settings.propNameUpdated, nowDatetime(this.settings.dateFormat)) + docMenu.writeProperty(this.settings.get('propNameUpdated'), nowDatetime(this.settings.get('dateFormat'))) })) this.registerSettingTab(new FrontMatterSettingTab(this)) } - - onunload() { - } - - async loadSettings() { - this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()) - } - - async saveSettings() { - await this.saveData(this.settings) - } } function nowDatetime(format: string) { diff --git a/src/manifest.json b/src/manifest.json index d5387b3..074429c 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -4,7 +4,7 @@ "description": "Auto edit front matter.", "author": "plylrnsdy", "authorUrl": "https://github.com/plylrnsdy", - "version": "1.0.1", + "version": "1.0.2", "minAppVersion": "1.5.0", - "minCoreVersion": "2.0.0-beta.10" + "minCoreVersion": "2.0.0-beta.21" } diff --git a/src/setting-tab.ts b/src/setting-tab.ts index 5fc10cd..53beb5c 100644 --- a/src/setting-tab.ts +++ b/src/setting-tab.ts @@ -34,9 +34,6 @@ export class FrontMatterSettingTab extends SettingTab { super() } - onload() { - } - show() { const { plugin } = this const { t } = this.i18n @@ -47,11 +44,10 @@ export class FrontMatterSettingTab extends SettingTab { setting.addName(t.propCreated) setting.addDescription(t.propCreatedDesc) setting.addText(input => { - input.value = plugin.settings.propNameCreated + input.value = plugin.settings.get('propNameCreated') input.placeholder = DEFAULT_SETTINGS.propNameCreated input.oninput = () => { - plugin.settings.propNameCreated = input.value ?? DEFAULT_SETTINGS.propNameCreated - plugin.saveSettings() + plugin.settings.set('propNameCreated', input.value ?? DEFAULT_SETTINGS.propNameCreated) } }) }) @@ -60,11 +56,10 @@ export class FrontMatterSettingTab extends SettingTab { setting.addName(t.propUpdated) setting.addDescription(t.propUpdatedDesc) setting.addText(input => { - input.value = plugin.settings.propNameUpdated + input.value = plugin.settings.get('propNameUpdated') input.placeholder = DEFAULT_SETTINGS.propNameUpdated input.oninput = () => { - plugin.settings.propNameUpdated = input.value ?? DEFAULT_SETTINGS.propNameUpdated - plugin.saveSettings() + plugin.settings.set('propNameUpdated', input.value ?? DEFAULT_SETTINGS.propNameUpdated) } }) }) @@ -73,11 +68,10 @@ export class FrontMatterSettingTab extends SettingTab { setting.addName(t.dateFormat) setting.addDescription(t.dateFormatDesc) setting.addText(input => { - input.value = plugin.settings.dateFormat + input.value = plugin.settings.get('dateFormat') input.placeholder = DEFAULT_SETTINGS.dateFormat input.oninput = () => { - plugin.settings.dateFormat = input.value ?? DEFAULT_SETTINGS.dateFormat - plugin.saveSettings() + plugin.settings.set('dateFormat', input.value ?? DEFAULT_SETTINGS.dateFormat) } }) }) diff --git a/test/vault/.typora/core.json b/test/vault/.typora/core.json index 4b78a99..ac48b91 100644 --- a/test/vault/.typora/core.json +++ b/test/vault/.typora/core.json @@ -1,8 +1,7 @@ { - "version": "2.0.0-beta.1", + "version": 1, "settings": { - "githubPluginListUri": "jsdelivr", - "githubDownloadUri": "ghproxy", + "githubProxy": "ghproxy", "showRibbon": true, "showFileTabs": true } diff --git a/test/vault/.typora/data/typora-community-plugin.front-matter.json b/test/vault/.typora/data/typora-community-plugin.front-matter.json deleted file mode 100644 index 7fde044..0000000 --- a/test/vault/.typora/data/typora-community-plugin.front-matter.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "propNameCreated": "created", - "propNameUpdated": "updated", - "dateFormat": "yyyy-MM-dd hh:mm:ss" -} diff --git a/test/vault/doc.md b/test/vault/doc.md index c586700..1d7b72a 100644 --- a/test/vault/doc.md +++ b/test/vault/doc.md @@ -1,4 +1,10 @@ +--- +created: 2023-08-21 21:04:43 +updated: 2023-08-21 21:04:47 +--- + # Title Lorem, ipsum dolor sit amet consectetur adipisicing elit. Adipisci nesciunt dolorem, blanditiis ea facilis, omnis dignissimos, eligendi architecto ducimus veniam necessitatibus illum assumenda id culpa officiis explicabo delectus sequi! Quas. +