@hesprs/sync-engine-sdk 3.0.3 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dev.spec.d.ts +23 -1
- package/dist/index-LOl_cerr.spec.d.ts +558 -0
- package/dist/index.js +1 -1
- package/dist/index.spec.d.ts +795 -2
- package/dist/pipe-6bvLNkHj.js +1 -0
- package/dist/plugin/src/components/MigrationModal.js +1 -1
- package/dist/plugin/src/settings/utils.js +1 -0
- package/dist/plugin/src/sync/decision/interface.js +1 -0
- package/dist/plugin/src/sync/tasks/AddRecord.js +1 -0
- package/dist/plugin/src/sync/tasks/CreateLocalDir.js +1 -0
- package/dist/plugin/src/sync/tasks/CreateRemoteDir.js +1 -0
- package/dist/plugin/src/sync/tasks/Download.js +1 -0
- package/dist/plugin/src/sync/tasks/MoveLocal.js +1 -0
- package/dist/plugin/src/sync/tasks/MoveRemote.js +1 -0
- package/dist/plugin/src/sync/tasks/RemoveLocal.js +1 -0
- package/dist/plugin/src/sync/tasks/RemoveRecord.js +1 -0
- package/dist/plugin/src/sync/tasks/RemoveRemote.js +1 -0
- package/dist/plugin/src/sync/tasks/ResolveConflict.js +1 -0
- package/dist/plugin/src/sync/tasks/Upload.js +1 -0
- package/dist/plugin/src/sync/tasks/interface.js +1 -0
- package/dist/plugin/src/utils/move-value.js +1 -0
- package/dist/plugin/test/test-kit.js +1 -1
- package/dist/transform.js +1 -1
- package/package.json +6 -6
- package/dist/index-M1OI9qC7.spec.d.ts +0 -1334
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e){let t=e,n=[t.status,t.res?.status,t.response?.status];for(let e of n)if(typeof e==`number`)return e}const t=2.5*1024**2;async function n({from:e,to:t,stat:n,key:a}){let o=await r(e,a,n);if(o)return i(t,a,o,n)}async function r(e,n,r){try{return r.size>t?await e.readStream(n,r):await e.read(n,r)}catch(e){if(a(e))return;throw e}}function i(e,t,n,r){return n instanceof ReadableStream?e.writeStream(t,n,r):e.write(t,n,r)}function a(t){return e(t)===404||(t.message??String(t)).toLocaleUpperCase().includes(`ENOENT`)}export{r as n,i as r,n as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./render-progress.js";import t from"../utils/round-percent.js";import n from"../utils/to-error-message.js";import{Modal as r,Notice as i,Setting as a}from"obsidian";var o=class extends r{ctx;options;cleanupCallbacks=[];constructor(e,t){super(e.app),this.ctx=e,this.options=t}onOpen(){let{contentEl:e,options:{content:t,apply:n}}=this,{translate:r}=this.ctx;e.empty(),
|
|
1
|
+
import e from"./render-progress.js";import t from"../utils/round-percent.js";import n from"../utils/to-error-message.js";import{Modal as r,Notice as i,Setting as a}from"obsidian";var o=class extends r{ctx;options;cleanupCallbacks=[];constructor(e,t){super(e.app),this.ctx=e,this.options=t,this.contentEl.addClass(`markdown-rendered`),this.setTitle(e.translate(`remoteMigration`))}onOpen(){let{contentEl:e,options:{content:t,apply:n}}=this,{translate:r}=this.ctx;e.empty(),typeof t==`string`?e.createEl(`p`,{cls:`whitespace-pre-wrap`,text:t}):e.append(t),e.createEl(`p`,{cls:`whitespace-pre-wrap`,text:r(`migrationDescription`)}),new a(e).addButton(e=>e.setButtonText(r(`cancel`)).onClick(this.close.bind(this))).addButton(e=>e.setButtonText(r(`toggleWithoutMigration`)).onClick(async()=>{await n(),this.close()})).addButton(e=>e.setButtonText(r(`startMigration`)).setCta().onClick(this.handleMigration))}handleMigration=()=>{let{on:n,translate:r,dispatch:i}=this.ctx;this.contentEl.empty(),this.setTitle(r(`migrationProcess`));let{left:o,right:s,bar:c}=e(this.contentEl,`mb-3`),l,u=e=>{l?.remove(),l=new a(this.contentEl).addButton(t=>t.setButtonText(r(e)).onClick(this.close.bind(this))).settingEl};u(`hide`),this.cleanupCallbacks.push(n(`migrationProgress`,({total:e,completed:n,current:a})=>{n===0&&i(`logGeneral`,`Migration started.`);let l=t(n,e);s.setText(`${n}/${e} ${r(`completed`)}`),a&&o.setText(a),c.setValue(l),l===100&&u(`done`)}),n(`migrationFailed`,()=>{i(`errorGeneral`,`Migration failed.`),o.setText(r(`migrationFailed`)),u(`done`)})),this.migrate()};migrate=async()=>{let{dispatch:e,requestSync:t,initializeSync:r,translate:a,memoryDB:o}=this.ctx;e(`migrationProgress`,{completed:0,current:a(`migrationPhase1Description`),total:3});let s=(await t(`migration`)).result;if(s===`cancelled`||s===`failed`){e(`migrationFailed`,`phase 1 failed`);return}e(`migrationProgress`,{completed:1,current:a(`migrationPhase2Description`),total:3});try{let{record:e,remoteFs:t}=r();await Promise.all([e.clear(),this.options.apply(),...o.getStore(`remoteContext20000`).entries().sort(([e],[t])=>t.length-e.length).map(([e])=>t.delete(e))])}catch(t){let r=n(t);new i(`${a(`migrationFailed`)}: ${r}`),e(`migrationFailed`,r);return}e(`migrationProgress`,{completed:2,current:a(`migrationPhase3Description`),total:3});let c=(await t(`migration`)).result;if(c===`cancelled`||c===`failed`){e(`migrationFailed`,`phase 3 failed`);return}e(`migrationProgress`,{completed:3,current:a(`completed`),total:3})};onClose(){this.cleanupCallbacks.splice(0).forEach(e=>e()),this.contentEl.empty()}};function s(e,{toggle:t,needMigration:n,content:r,apply:i}){let a=!1;t.onChange(s=>{if(a){a=!1;return}let c=async n=>{n?(a=!0,t.setValue(!s),new o(e,{apply:async()=>{await i(s),a=!0,t.setValue(s)},content:r(s)}).open()):await i(s)},l=n?.(s)??!0;l instanceof Promise?l.then(c):c(l)})}export{s as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"obsidian";function e(e,t){return t?Object.assign(e,t):e}export{e as s};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import e from"../tasks/CreateLocalDir.js";import t from"../tasks/CreateRemoteDir.js";import n from"../tasks/Download.js";import r from"../tasks/Upload.js";import i from"../tasks/RemoveLocal.js";import a from"../tasks/RemoveRemote.js";import o from"../tasks/AddRecord.js";import s from"../tasks/RemoveRecord.js";import c from"../tasks/ResolveConflict.js";import l from"../tasks/MoveLocal.js";import u from"../tasks/MoveRemote.js";const d={addRecord:o,createLocalDir:e,createRemoteDir:t,download:n,moveLocal:l,moveRemote:u,removeLocal:i,removeRecord:s,removeRemote:a,resolveConflict:c,upload:r};export{d as taskMap};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BaseTask as e}from"./interface.js";var t=class extends e{async exec(){await this.record.set(this.key,n(this.local,this.remote))}};function n(e,t){return!e.isDir&&!t.isDir?{isDir:!1,local:e.uid,remote:t.uid}:{isDir:!0}}export{t as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BaseTask as e}from"./interface.js";var t=class extends e{async exec(){await this.localFs.mkdir(this.key),await this.record.set(this.key,{isDir:!0})}};export{t as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BaseTask as e}from"./interface.js";var t=class extends e{async exec(){await this.remoteFs.mkdir(this.key),await this.record.set(this.key,{isDir:!0})}};export{t as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BaseTask as e}from"./interface.js";import{pipe as t}from"../../utils/pipe.js";var n=class extends e{async exec(){let{remote:e,record:n,remoteFs:r,localFs:i,key:a}=this,o=await t({from:r,key:a,stat:e,to:i});o&&await n.set(a,{isDir:!1,local:o,remote:e.uid})}};export{n as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BaseTask as e}from"./interface.js";import t from"../../utils/move-value.js";var n=class extends e{async exec(){let{key:e,oldKey:n}=this.options;await this.localFs.move(n,e),await t({newKey:e,oldKey:n,store:this.record})}};export{n as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BaseTask as e}from"./interface.js";import t from"../../utils/move-value.js";var n=class extends e{async exec(){let{key:e,oldKey:n}=this.options;await this.remoteFs.move(n,e),await t({newKey:e,oldKey:n,store:this.record})}};export{n as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BaseTask as e}from"./interface.js";var t=class extends e{async exec(){await this.localFs.delete(this.key),await this.record.delete(this.key)}};export{t as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BaseTask as e}from"./interface.js";var t=class extends e{async exec(){await this.record.delete(this.key)}};export{t as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BaseTask as e}from"./interface.js";var t=class extends e{async exec(){await this.remoteFs.delete(this.key),await this.record.delete(this.key)}};export{t as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BaseTask as e}from"./interface.js";var t=class extends e{exec=()=>this.options.resolver({key:this.key,local:this.local,localFs:this.localFs,record:this.record,remote:this.remote,remoteFs:this.remoteFs})};export{t as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BaseTask as e}from"./interface.js";import{pipe as t}from"../../utils/pipe.js";var n=class extends e{async exec(){let{local:e,record:n,remoteFs:r,localFs:i,key:a}=this,o=await t({from:i,key:a,stat:e,to:r});o&&await n.set(a,{isDir:!1,local:e.uid,remote:o})}};export{n as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=class{options;constructor(e){this.options=e,this.remoteFs=e.remoteFs,this.localFs=e.localFs,this.record=e.record,this.key=e.key,this.local=e.local,this.remote=e.remote}remoteFs;localFs;record;key;local;remote};export{e as BaseTask};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
async function e({store:e,newKey:t,oldKey:n}){let r=await e.get(n);r!==void 0&&await e.batch([{key:t,type:`set`,value:r},{key:n,type:`delete`}])}export{e as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
import{taskMap as e}from"../src/sync/decision/interface.js";const t=new TextEncoder;function n(e){return t.encode(e)}function r(e,t={}){let{mtime:n=1,size:r=5,uid:i=`${e}-uid`}=t;return{isDir:!1,key:e,mtime:n,size:r,uid:i}}function i(e){return{isDir:!0,key:e}}function a(e,t){return{isDir:!1,local:e,remote:t}}function o(){return{isDir:!0}}function s(t,n){let r=n.localStats??new Map,i=n.remoteStats??new Map,a=n.records??new Map,o=[];return t({localStats:r,logger:()=>{},records:a,remoteStats:i,taskFactory:((t,n)=>{let r=e[t],i=new r({...n,localFs:{},record:{},remoteFs:{}});return i.name=t,i.prettyName=t,o.push({key:n.key,name:t,...n.local!==void 0&&{local:n.local},...n.remote!==void 0&&{remote:n.remote}}),i})}),o}function c(e){return e.map(e=>e.name)}function l(e){return e.map(e=>e.key)}function u(e,t){let n=e.filter(e=>e.key===t);if(n.length!==1)throw Error(`Expected one task for ${t}, found ${n.length}.`);return n[0]}function d(e){return e===`/`||e.endsWith(`/`)?i(e):r(e,{mtime:10,size:5,uid:`uid`})}function f(e=[]){return new ReadableStream({start(t){for(let r of e)t.enqueue(typeof r==`string`?n(r):r);t.close()}})}function p(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),reject:t,resolve:e}}async function m(e=4){for(let t=0;t<e;t+=1)await new Promise(e=>{queueMicrotask(e)})}function h(){return{delete:[],exists:[],list:[],mkdir:[],move:[],read:[],readStream:[],stat:[],write:[],writeStream:[]}}function g(e={}){return{delete:()=>{},exists:()=>!1,getUid:()=>`FsControl`,list:e=>[d(e),i(`${e}folder/`),r(`${e}folder/note.md`,{mtime:12,size:7,uid:`note-2`})],mkdir:()=>{},move:()=>{},read:()=>n(``),readStream:()=>f(),stat:e=>d(e),write:()=>`write-uid`,writeStream:()=>`stream-uid`,...e}}function _(e){let t=[];return{calls:t,request:n=>(t.push(n),e(n))}}function v(e={}){let t=h(),n=g(e.control),r=e.uid??`uid`;return{calls:t,control:n,fs:{delete:e=>(t.delete.push(e),n.delete(e)),exists:e=>(t.exists.push(e),n.exists(e)),getUid:()=>r,list:(e,r)=>(t.list.push(e),n.list(e,r)),mkdir:(e,r)=>(t.mkdir.push(e),n.mkdir(e,r)),move:(e,r)=>(t.move.push([e,r]),n.move(e,r)),read:(e,r)=>(t.read.push([e,r]),n.read(e,r)),readStream:(e,r)=>(t.readStream.push([e,r]),n.readStream(e,r)),stat:e=>(t.stat.push(e),n.stat(e)),write:(e,r,i)=>(t.write.push([e,r,i]),n.write(e,r,i)),writeStream:(e,r,i)=>(t.writeStream.push([e,i]),n.writeStream(e,r,i))}}}const y={bytes:n,deferred:p,file:r,fileRecord:a,findTask:u,flush:m,folder:i,folderRecord:o,fs:v,request:_,runDecider:s,stream:f,taskKeys:l,taskNames:c};export{y as default};
|
package/dist/transform.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(){return{name:`sync-engine-transform`,renderChunk(e){let t=e.replaceAll(/^\s*import\s+(?<name>[A-Za-z_$][\w$]*)\s+from\s+(?<quote>['"])obsidian\k<quote>\s*;?\s*$/
|
|
1
|
+
function e(){return{name:`sync-engine-transform`,renderChunk(e){let t=e.replaceAll(/^[ \t]*import\s+['"]obsidian['"]\s*;?[ \t]*$/gmu,``).replaceAll(/^\s*import\s+(?<name>[A-Za-z_$][\w$]*)\s+from\s+(?<quote>['"])obsidian\k<quote>\s*;?\s*$/gmu,(e,t)=>`const ${t} = window.syncEngineApiBridge;`).replaceAll(/^\s*import\s+\*\s+as\s+(?<name>[A-Za-z_$][\w$]*)\s+from\s+(?<quote>['"])obsidian\k<quote>\s*;?\s*$/gmu,(e,t)=>`const ${t} = window.syncEngineApiBridge;`).replaceAll(/^\s*import\s+(?!(?:type\b|\*\s+as\s+))(?<name>.+?)\s+from\s+(?<quote>['"])obsidian\k<quote>\s*;?\s*$/gmu,(e,t)=>`const ${t} = window.syncEngineApiBridge;`);return t===e?void 0:{code:t}},tsdownConfig(e){e.deps??={};let{neverBundle:t}=e.deps;t!==!0&&(typeof t==`function`?e.deps.neverBundle=(e,n,r)=>e===`obsidian`||t(e,n,r):Array.isArray(t)?t.push(`obsidian`):t?e.deps.neverBundle=[t,`obsidian`]:e.deps.neverBundle=[`obsidian`])}}}export{e as default};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hesprs/sync-engine-sdk",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "Official SDK for developing modules targeting Sync Engine, the extensible Obsidian syncing plugin.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"obsidian-plugin",
|
|
@@ -42,10 +42,10 @@
|
|
|
42
42
|
"provenance": true
|
|
43
43
|
},
|
|
44
44
|
"scripts": {
|
|
45
|
-
"dev:plugin": "MODE=dev BUILD=plugin tsdown",
|
|
46
|
-
"build:plugin": "BUILD=plugin tsdown",
|
|
47
|
-
"dev": "MODE=dev PASS=dts tsdown && MODE=dev tsdown",
|
|
48
|
-
"compile": "PASS=dts tsdown && tsdown",
|
|
45
|
+
"dev:plugin": "MODE=dev BUILD=plugin bun --bun tsdown",
|
|
46
|
+
"build:plugin": "BUILD=plugin bun --bun tsdown",
|
|
47
|
+
"dev": "MODE=dev PASS=dts bun --bun tsdown && MODE=dev bun --bun tsdown",
|
|
48
|
+
"compile": "PASS=dts bun --bun tsdown && bun --bun tsdown",
|
|
49
49
|
"fix": "oxlint --silent --fix && oxfmt",
|
|
50
50
|
"check": "tsc && oxlint && oxfmt --check",
|
|
51
51
|
"tests": "bun --preload=./test/mocks test"
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@repo/shared": "workspace:*",
|
|
58
58
|
"@unocss/postcss": "^66.7.5",
|
|
59
|
-
"postcss-merge-rules": "^8.0.
|
|
59
|
+
"postcss-merge-rules": "^8.0.3",
|
|
60
60
|
"solid-js": "^1.9.13",
|
|
61
61
|
"synthkernel": "./synthkernel.tgz",
|
|
62
62
|
"uni-kv": "../../uni-kv.tgz",
|