Move files

This commit is contained in:
Andras Schmelczer 2025-02-19 20:47:52 +00:00
parent 6bb051460e
commit dd6f63f357
No known key found for this signature in database
GPG key ID: FC8F2C3D3D1A718C
50 changed files with 72 additions and 78 deletions

4
.gitignore vendored
View file

@ -7,8 +7,8 @@ node_modules
# Rust build folder # Rust build folder
backend/target backend/target
obsidian-plugin/dist frontend/obsidian-plugin/dist
sync-client/dist frontend/sync-client/dist
backend/db.sqlite3* backend/db.sqlite3*
backend/config.yml backend/config.yml

View file

@ -1,4 +1,7 @@
{ {
"jest.jestCommandLine": "NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" npx jest", "jest.jestCommandLine": "NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" npx jest",
"jest.rootPath": "plugin" "jest.rootPath": "plugin",
"files.exclude": {
"**/node_modules": true
}
} }

View file

@ -56,7 +56,10 @@ export class ObsidianFileOperations implements FileOperations {
} }
await this.createParentDirectories(normalizePath(path)); await this.createParentDirectories(normalizePath(path));
await this.vault.adapter.writeBinary(normalizePath(path), newContent); await this.vault.adapter.writeBinary(
normalizePath(path),
newContent.buffer as ArrayBuffer
);
} }
public async write( public async write(
@ -78,7 +81,7 @@ export class ObsidianFileOperations implements FileOperations {
); );
await this.vault.adapter.writeBinary( await this.vault.adapter.writeBinary(
normalizePath(path), normalizePath(path),
newContent newContent.buffer as ArrayBuffer
); );
return newContent; return newContent;
} }

View file

@ -123,8 +123,7 @@ export default class VaultLinkPlugin extends Plugin {
database.getSettings().fetchChangesUpdateIntervalMs database.getSettings().fetchChangesUpdateIntervalMs
); );
// eslint-disable-next-line @typescript-eslint/no-misused-promises database.addOnSettingsChangeHandlers((settings, oldSettings) => {
database.addOnSettingsChangeHandlers(async (settings, oldSettings) => {
this.registerRemoteEventListener( this.registerRemoteEventListener(
database, database,
syncService, syncService,
@ -133,7 +132,13 @@ export default class VaultLinkPlugin extends Plugin {
); );
if (!oldSettings.isSyncEnabled && settings.isSyncEnabled) { if (!oldSettings.isSyncEnabled && settings.isSyncEnabled) {
await syncer.scheduleSyncForOfflineChanges(); syncer
.scheduleSyncForOfflineChanges()
.catch((_error: unknown) => {
Logger.getInstance().error(
"Failed to schedule sync for offline changes"
);
});
} }
}); });

View file

@ -2,13 +2,8 @@ import type { IconName, WorkspaceLeaf } from "obsidian";
import { ItemView, setIcon } from "obsidian"; import { ItemView, setIcon } from "obsidian";
import { intlFormatDistance } from "date-fns"; import { intlFormatDistance } from "date-fns";
import type { import type { SyncHistory, HistoryEntry, Database } from "sync-client";
SyncHistory, import { SyncType, SyncSource, SyncStatus, Logger } from "sync-client";
HistoryEntry,
Database,
RelativePath
} from "sync-client";
import { SyncType, SyncSource, SyncStatus } from "sync-client";
export class HistoryView extends ItemView { export class HistoryView extends ItemView {
public static readonly TYPE = "history-view"; public static readonly TYPE = "history-view";
@ -23,9 +18,10 @@ export class HistoryView extends ItemView {
super(leaf); super(leaf);
this.icon = HistoryView.ICON; this.icon = HistoryView.ICON;
// eslint-disable-next-line @typescript-eslint/no-misused-promises history.addSyncHistoryUpdateListener(() => {
history.addSyncHistoryUpdateListener(async () => { this.updateView().catch((_error: unknown) => {
await this.updateView(); Logger.getInstance().error("Failed to update history view");
});
}); });
} }
@ -65,6 +61,7 @@ export class HistoryView extends ItemView {
} }
element.createEl("span", { element.createEl("span", {
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
text: entry.relativePath text: entry.relativePath
}); });

View file

@ -0,0 +1,14 @@
{
"compilerOptions": {
"baseUrl": ".",
"module": "ESNext",
"target": "ES2023",
"noImplicitAny": true,
"moduleResolution": "bundler",
"strictNullChecks": true,
"lib": [
"DOM",
"ESNext"
]
}
}

View file

@ -17,12 +17,18 @@
"typescript-eslint": "8.24.1" "typescript-eslint": "8.24.1"
} }
}, },
"backend/sync_lib/pkg": { "../backend/sync_lib/pkg": {
"name": "sync_lib", "name": "sync_lib",
"version": "0.0.30", "version": "0.0.30",
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"backend/sync_lib/pkg": {
"name": "sync_lib",
"version": "0.0.30",
"extraneous": true,
"license": "MIT"
},
"node_modules/@ampproject/remapping": { "node_modules/@ampproject/remapping": {
"version": "2.3.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
@ -6584,7 +6590,7 @@
} }
}, },
"node_modules/sync_lib": { "node_modules/sync_lib": {
"resolved": "backend/sync_lib/pkg", "resolved": "../backend/sync_lib/pkg",
"link": true "link": true
}, },
"node_modules/sync-client": { "node_modules/sync-client": {
@ -7485,7 +7491,7 @@
"openapi-fetch": "0.13.4", "openapi-fetch": "0.13.4",
"openapi-typescript": "7.6.1", "openapi-typescript": "7.6.1",
"p-queue": "^8.1.0", "p-queue": "^8.1.0",
"sync_lib": "file:../backend/sync_lib/pkg", "sync_lib": "file:../../backend/sync_lib/pkg",
"ts-jest": "^29.2.5", "ts-jest": "^29.2.5",
"ts-loader": "^9.5.2", "ts-loader": "^9.5.2",
"tslib": "2.8.1", "tslib": "2.8.1",

View file

@ -15,7 +15,7 @@
"build": "npm run build --workspaces", "build": "npm run build --workspaces",
"dev": "npm run dev --workspaces", "dev": "npm run dev --workspaces",
"test": "npm run test --workspaces", "test": "npm run test --workspaces",
"lint": "eslint --fix sync-client obsidian-plugin; prettier --write \"sync-client/**/*.(ts|scss|json|html)\" \"obsidian-plugin/**/*.(ts|scss|json|html)\"", "lint": "rm -rf **/dist/index.js && eslint --fix sync-client obsidian-plugin; prettier --write \"sync-client/**/*.(ts|scss|json|html)\" \"obsidian-plugin/**/*.(ts|scss|json|html)\"",
"update": "ncu -u -ws" "update": "ncu -u -ws"
}, },
"devDependencies": { "devDependencies": {

View file

@ -2,7 +2,7 @@
"name": "sync-client", "name": "sync-client",
"version": "1.0.0", "version": "1.0.0",
"main": "dist/index.js", "main": "dist/index.js",
"types": "dist/types/src/index.d.ts", "types": "dist/types/index.d.ts",
"scripts": { "scripts": {
"dev": "webpack watch --mode development", "dev": "webpack watch --mode development",
"build": "webpack --mode production", "build": "webpack --mode production",
@ -11,7 +11,7 @@
"devDependencies": { "devDependencies": {
"tslib": "2.8.1", "tslib": "2.8.1",
"typescript": "5.7.3", "typescript": "5.7.3",
"sync_lib": "file:../backend/sync_lib/pkg", "sync_lib": "file:../../backend/sync_lib/pkg",
"@types/jest": "^29.5.14", "@types/jest": "^29.5.14",
"@types/node": "^22.13.4", "@types/node": "^22.13.4",
"jest": "^29.7.0", "jest": "^29.7.0",
@ -25,4 +25,4 @@
"webpack": "^5.98.0", "webpack": "^5.98.0",
"webpack-cli": "^6.0.1" "webpack-cli": "^6.0.1"
} }
} }

View file

@ -1,9 +1,9 @@
import { RelativePath } from "../database/document-metadata";
import { import {
tryLockDocument, tryLockDocument,
waitForDocumentLock, waitForDocumentLock,
unlockDocument unlockDocument
} from "./document-lock"; } from "./document-lock";
import type { RelativePath } from "src/database/document-metadata";
describe("Document Lock Operations", () => { describe("Document Lock Operations", () => {
const testPath: RelativePath = "test/document/path"; const testPath: RelativePath = "test/document/path";

View file

@ -1,4 +1,4 @@
import type { RelativePath } from "src/database/document-metadata"; import { RelativePath } from "../database/document-metadata";
const locked = new Set<RelativePath>(); const locked = new Set<RelativePath>();
const waiters = new Map<RelativePath, (() => void)[]>(); const waiters = new Map<RelativePath, (() => void)[]>();

View file

@ -4,7 +4,7 @@ import fs from "fs";
describe("deserialize", () => { describe("deserialize", () => {
it("should serialize a Uint8Array to a base64 string", async () => { it("should serialize a Uint8Array to a base64 string", async () => {
const wasmBin = fs.readFileSync( const wasmBin = fs.readFileSync(
"../backend/sync_lib/pkg/sync_lib_bg.wasm" "../../backend/sync_lib/pkg/sync_lib_bg.wasm"
); );
await init({ module_or_path: wasmBin }); await init({ module_or_path: wasmBin });

View file

@ -5,7 +5,7 @@ import fs from "fs";
describe("serialize", () => { describe("serialize", () => {
it("should serialize a Uint8Array to a base64 string", async () => { it("should serialize a Uint8Array to a base64 string", async () => {
const wasmBin = fs.readFileSync( const wasmBin = fs.readFileSync(
"../backend/sync_lib/pkg/sync_lib_bg.wasm" "../../backend/sync_lib/pkg/sync_lib_bg.wasm"
); );
await init({ module_or_path: wasmBin }); await init({ module_or_path: wasmBin });

View file

@ -0,0 +1,15 @@
{
"compilerOptions": {
"baseUrl": ".",
"module": "ESNext",
"target": "ESNext",
"noImplicitAny": true,
"moduleResolution": "bundler",
"strictNullChecks": true,
"allowSyntheticDefaultImports": true,
"lib": [
"DOM",
"ESNext"
]
},
}

View file

@ -1,10 +0,0 @@
{
"id": "vault-link",
"name": "VaultLink",
"version": "0.0.30",
"minAppVersion": "0.0.0",
"description": "Self-hosted synchronization and collaboration for your Vault.",
"author": "Andras Schmelczer",
"authorUrl": "https://schmelczer.dev",
"isDesktopOnly": false
}

View file

@ -1,24 +0,0 @@
{
"compilerOptions": {
"baseUrl": ".",
"inlineSourceMap": true,
"inlineSources": true,
"module": "ESNext",
"target": "ES6",
"noImplicitAny": true,
"moduleResolution": "bundler",
"isolatedModules": true,
"strictNullChecks": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"lib": [
"DOM",
"ES5",
"ES6",
"ES7"
]
},
"include": [
"**/*.ts"
]
}

View file

@ -1,15 +0,0 @@
{
"compilerOptions": {
"composite": true,
"baseUrl": ".",
"target": "ES2022",
"noImplicitAny": true,
"moduleResolution": "node",
"strictNullChecks": true,
"esModuleInterop": true,
"lib": [
"DOM",
"ESNext"
]
}
}