From 1e260f638a82bf996767dbec00779221d2752f43 Mon Sep 17 00:00:00 2001 From: Matthew Broberg Date: Sun, 19 May 2024 16:41:00 -0500 Subject: [PATCH 1/6] feature: add Obsidian file path --- src/models/settings.ts | 1 + .../QuartzSyncerSiteManager.ts | 13 +++++++------ src/views/SettingsView/GithubSettings.ts | 16 ++++++++++++++++ 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/models/settings.ts b/src/models/settings.ts index 282e452..8fbb5bc 100644 --- a/src/models/settings.ts +++ b/src/models/settings.ts @@ -16,6 +16,7 @@ export default interface QuartzSyncerSettings { slugifyEnabled: boolean; contentFolder: string; + obsidianRootFolder: string; showCreatedTimestamp: boolean; createdTimestampKey: string; diff --git a/src/repositoryConnection/QuartzSyncerSiteManager.ts b/src/repositoryConnection/QuartzSyncerSiteManager.ts index fc35f89..697777d 100644 --- a/src/repositoryConnection/QuartzSyncerSiteManager.ts +++ b/src/repositoryConnection/QuartzSyncerSiteManager.ts @@ -93,7 +93,7 @@ export default class QuartzSyncerSiteManager { } await this.userSyncerConnection.updateFile({ - path: ".env", + path: ".env".replace(this.settings.obsidianRootFolder, this.settings.contentFolder), content: base64Settings, message: "Update settings", sha: currentFile?.sha, @@ -135,7 +135,7 @@ export default class QuartzSyncerSiteManager { for (const note of notes) { const vaultPath = note.path.replace( this.settings.contentFolder, - "", + this.settings.obsidianRootFolder, ); const actualVaultPath = vaultPath.startsWith("/") @@ -160,15 +160,16 @@ export default class QuartzSyncerSiteManager { ); const hashes: Record = {}; - for (const img of images) { - const vaultPath = decodeURI( - img.path.replace(this.settings.contentFolder, ""), + for (const image of images) { + const vaultPath = image.path.replace( + this.settings.contentFolder, + this.settings.obsidianRootFolder, ); const actualVaultPath = vaultPath.startsWith("/") ? vaultPath.substring(1) : vaultPath; - hashes[actualVaultPath] = img.sha; + hashes[actualVaultPath] = image.sha; } return hashes; diff --git a/src/views/SettingsView/GithubSettings.ts b/src/views/SettingsView/GithubSettings.ts index 274acdf..1b557ac 100644 --- a/src/views/SettingsView/GithubSettings.ts +++ b/src/views/SettingsView/GithubSettings.ts @@ -24,6 +24,7 @@ export class GithubSettings { this.initializeGitHubUserNameSetting(); this.initializeGitHubTokenSetting(); this.initializeGitHubContentFolder(); + this.initializeObsidianRootFolder(); } initializeHeader = () => { @@ -121,6 +122,21 @@ export class GithubSettings { ); } + private initializeObsidianRootFolder() { + new Setting(this.settingsRootElement) + .setName("Obsidian root folder name") + .setDesc('The root folder in your Obsidian structure. For example, "My Garden"') + .addText((text) => + text + .setPlaceholder("My Garden") + .setValue(this.settings.settings.obsidianRootFolder) + .onChange(async (value) => { + this.settings.settings.obsidianRootFolder = value; + await this.checkConnectionAndSaveSettings(); + }), + ); + } + private initializeGitHubUserNameSetting() { new Setting(this.settingsRootElement) .setName("GitHub Username") From 2cacf7e18ee8afd756556824a117f239c2d45423 Mon Sep 17 00:00:00 2001 From: Matthew Broberg Date: Sun, 19 May 2024 16:41:43 -0500 Subject: [PATCH 2/6] bug: remove redundant contents/ path --- src/repositoryConnection/RepositoryConnection.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/repositoryConnection/RepositoryConnection.ts b/src/repositoryConnection/RepositoryConnection.ts index 841c97f..030f848 100644 --- a/src/repositoryConnection/RepositoryConnection.ts +++ b/src/repositoryConnection/RepositoryConnection.ts @@ -84,7 +84,7 @@ export class RepositoryConnection { try { const response = await this.octokit.request( - "GET /repos/{owner}/{repo}/contents/{path}", + "GET /repos/{owner}/{repo}/{path}", { ...this.getBasePayload(), path, @@ -130,7 +130,7 @@ export class RepositoryConnection { }; const result = await this.octokit.request( - "DELETE /repos/{owner}/{repo}/contents/{path}", + "DELETE /repos/{owner}/{repo}/{path}", payload, ); @@ -194,7 +194,7 @@ export class RepositoryConnection { try { return await this.octokit.request( - "PUT /repos/{owner}/{repo}/contents/{path}", + "PUT /repos/{owner}/{repo}/{path}", payload, ); } catch (error) { From 639337702e0786b96a379d1c685c2042cd071720 Mon Sep 17 00:00:00 2001 From: Matthew Broberg Date: Mon, 20 May 2024 21:56:41 -0500 Subject: [PATCH 3/6] Initilize obsidian folder in main --- main.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/main.ts b/main.ts index c697b08..e6f5f87 100644 --- a/main.ts +++ b/main.ts @@ -22,6 +22,7 @@ const DEFAULT_SETTINGS: QuartzSyncerSettings = { siteName: "Quartz", slugifyEnabled: true, contentFolder: "content", + obsidianRootFolder: "", // Timestamp related settings showCreatedTimestamp: false, From 6b56a85054e4398eb743242fa891fe24c029a237 Mon Sep 17 00:00:00 2001 From: Matthew Broberg Date: Thu, 23 May 2024 07:21:54 -0500 Subject: [PATCH 4/6] rollback: add contents/ back to path --- src/repositoryConnection/RepositoryConnection.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/repositoryConnection/RepositoryConnection.ts b/src/repositoryConnection/RepositoryConnection.ts index 030f848..841c97f 100644 --- a/src/repositoryConnection/RepositoryConnection.ts +++ b/src/repositoryConnection/RepositoryConnection.ts @@ -84,7 +84,7 @@ export class RepositoryConnection { try { const response = await this.octokit.request( - "GET /repos/{owner}/{repo}/{path}", + "GET /repos/{owner}/{repo}/contents/{path}", { ...this.getBasePayload(), path, @@ -130,7 +130,7 @@ export class RepositoryConnection { }; const result = await this.octokit.request( - "DELETE /repos/{owner}/{repo}/{path}", + "DELETE /repos/{owner}/{repo}/contents/{path}", payload, ); @@ -194,7 +194,7 @@ export class RepositoryConnection { try { return await this.octokit.request( - "PUT /repos/{owner}/{repo}/{path}", + "PUT /repos/{owner}/{repo}/contents/{path}", payload, ); } catch (error) { From fb9265761a9a68a3b7713a4ef1de24fe1d6620cb Mon Sep 17 00:00:00 2001 From: Matthew Broberg Date: Thu, 23 May 2024 07:25:01 -0500 Subject: [PATCH 5/6] Remove space --- main.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.ts b/main.ts index e6f5f87..a402732 100644 --- a/main.ts +++ b/main.ts @@ -22,7 +22,7 @@ const DEFAULT_SETTINGS: QuartzSyncerSettings = { siteName: "Quartz", slugifyEnabled: true, contentFolder: "content", - obsidianRootFolder: "", + obsidianRootFolder: "", // Timestamp related settings showCreatedTimestamp: false, From bbdd545dcf3af7e16248607492975629c6f79cb8 Mon Sep 17 00:00:00 2001 From: Matthew Broberg Date: Thu, 23 May 2024 16:50:39 -0500 Subject: [PATCH 6/6] Fixes from linting --- package-lock.json | 146 +++++++++++------- package.json | 4 +- .../QuartzSyncerSiteManager.ts | 5 +- .../RepositoryConnection.ts | 2 + src/views/SettingsView/GithubSettings.ts | 24 +-- 5 files changed, 110 insertions(+), 71 deletions(-) diff --git a/package-lock.json b/package-lock.json index f1490d2..678ee79 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,7 +35,7 @@ "dotenv": "^16.3.1", "esbuild": "^0.19.2", "esbuild-svelte": "^0.8.0", - "eslint": "^8.49.0", + "eslint": "^8.57.0", "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-svelte": "^2.33.2", "husky": "^8.0.3", @@ -1166,10 +1166,11 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -1192,13 +1193,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -1214,6 +1217,7 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -1226,6 +1230,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -1234,22 +1239,24 @@ } }, "node_modules/@eslint/js": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz", - "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -1270,10 +1277,11 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", @@ -2260,6 +2268,13 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true, + "license": "ISC" + }, "node_modules/acorn": { "version": "8.10.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", @@ -2297,6 +2312,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3551,18 +3567,20 @@ } }, "node_modules/eslint": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz", - "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.49.0", - "@humanwhocodes/config-array": "^0.11.11", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -3940,7 +3958,8 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-diff": { "version": "1.3.0", @@ -4303,6 +4322,7 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -4319,6 +4339,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -5269,7 +5290,8 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -6077,6 +6099,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -6438,10 +6461,11 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -7439,6 +7463,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -8439,9 +8464,9 @@ "dev": true }, "@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -8462,9 +8487,9 @@ "dev": true }, "globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -8488,19 +8513,19 @@ } }, "@eslint/js": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz", - "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true }, "@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" } }, @@ -8511,9 +8536,9 @@ "dev": true }, "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, "@istanbuljs/load-nyc-config": { @@ -9289,6 +9314,12 @@ "eslint-visitor-keys": "^3.4.1" } }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "acorn": { "version": "8.10.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", @@ -10214,18 +10245,19 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz", - "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.49.0", - "@humanwhocodes/config-array": "^0.11.11", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -12276,9 +12308,9 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true }, "pure-rand": { diff --git a/package.json b/package.json index 1f43ee4..b4bd37b 100644 --- a/package.json +++ b/package.json @@ -33,8 +33,9 @@ "dotenv": "^16.3.1", "esbuild": "^0.19.2", "esbuild-svelte": "^0.8.0", - "eslint": "^8.49.0", + "eslint": "^8.57.0", "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-svelte": "^2.33.2", "husky": "^8.0.3", "jest": "^29.7.0", "lint-staged": "^14.0.1", @@ -45,7 +46,6 @@ "svelte-preprocess": "^5.0.4", "ts-jest": "^29.1.1", "tslib": "^2.6.2", - "eslint-plugin-svelte": "^2.33.2", "typescript": "^5.2.2" }, "dependencies": { diff --git a/src/repositoryConnection/QuartzSyncerSiteManager.ts b/src/repositoryConnection/QuartzSyncerSiteManager.ts index 697777d..1f79be6 100644 --- a/src/repositoryConnection/QuartzSyncerSiteManager.ts +++ b/src/repositoryConnection/QuartzSyncerSiteManager.ts @@ -93,7 +93,10 @@ export default class QuartzSyncerSiteManager { } await this.userSyncerConnection.updateFile({ - path: ".env".replace(this.settings.obsidianRootFolder, this.settings.contentFolder), + path: ".env".replace( + this.settings.obsidianRootFolder, + this.settings.contentFolder, + ), content: base64Settings, message: "Update settings", sha: currentFile?.sha, diff --git a/src/repositoryConnection/RepositoryConnection.ts b/src/repositoryConnection/RepositoryConnection.ts index 841c97f..71f6b3e 100644 --- a/src/repositoryConnection/RepositoryConnection.ts +++ b/src/repositoryConnection/RepositoryConnection.ts @@ -213,6 +213,7 @@ export class RepositoryConnection { const normalizePath = (path: string) => { path = path.replace(/\.\.\//g, ""); + return path.startsWith("/") ? `${this.contentFolder}${path}` : `${this.contentFolder}/${path}`; @@ -316,6 +317,7 @@ export class RepositoryConnection { const normalizePath = (path: string) => { path = path.replace(/\.\.\//g, ""); + return path.startsWith("/") ? `${this.contentFolder}${path}` : `${this.contentFolder}/${path}`; diff --git a/src/views/SettingsView/GithubSettings.ts b/src/views/SettingsView/GithubSettings.ts index 1b557ac..123033e 100644 --- a/src/views/SettingsView/GithubSettings.ts +++ b/src/views/SettingsView/GithubSettings.ts @@ -124,17 +124,19 @@ export class GithubSettings { private initializeObsidianRootFolder() { new Setting(this.settingsRootElement) - .setName("Obsidian root folder name") - .setDesc('The root folder in your Obsidian structure. For example, "My Garden"') - .addText((text) => - text - .setPlaceholder("My Garden") - .setValue(this.settings.settings.obsidianRootFolder) - .onChange(async (value) => { - this.settings.settings.obsidianRootFolder = value; - await this.checkConnectionAndSaveSettings(); - }), - ); + .setName("Obsidian root folder name") + .setDesc( + 'The root folder in your Obsidian structure. For example, "My Garden"', + ) + .addText((text) => + text + .setPlaceholder("My Garden") + .setValue(this.settings.settings.obsidianRootFolder) + .onChange(async (value) => { + this.settings.settings.obsidianRootFolder = value; + await this.checkConnectionAndSaveSettings(); + }), + ); } private initializeGitHubUserNameSetting() {